Author Topic: Scripting Guide  (Read 6534 times)

Online BehemothProgrammer

  • Endtrail
  • ****
  • Posts: 225
  • T:REP 801
    • View Profile
Re: Scripting Guide
« Reply #10 on: April 04, 2017, 04:45:19 PM »
After you unzip the "game.kpf" file use this to view and copy files to your Turok 2 directory. In your Turok 2 directory create a "scripts" folder and a "defs/actors" folder.

If we wanted to display the damage done to an enemy on the screen, the first thing we need to do is create a script for enemies.
So first create a new file and call it "Enemy.txt" and place it in the scripts folder. Edit the file and create a class named Enemy and add the OnDamage callback function like so:

Code: [Select]
class Enemy : ScriptObject
{
kActor@ self;
Enemy(kActor@ actor)
{
@self = actor;
}
void OnDamage(kDamageInfo& in dmgInfo)
{
Hud.AddMessage("Enemy took " + dmgInfo.hits + " damage");
}
}

Now we just have to hook this script up to all the enemies in the game, but for testing let's just hook it up to the Raptoid enemy.
All the definitions of everything in the game is in the folder "defs". enemies are in "defs/actors/enemies.txt"

So first let's copy the "defs/actors/enemies.txt" file that was in the game.kpf that you unzipped before, and paste that into "Turok 2 - Seeds of Evil/defs/actors/enemies.txt"
Edit the file and the first entry is the Raptoid enemy. It's already defined all the properties and components needed by enemies in the game so we are going to add our custom script component class to the enemy by adding:

Code: [Select]
Begin_Component "kexScriptComponent"
scriptClass "Enemy"
End_Component
   
That's all you need to do. Run the game - make sure you're in developer mode by opening the console and typing "developer 1" if you weren't you need to close and reopen the game after setting it. When a Raptoid is damaged it should display that damage text.
« Last Edit: April 04, 2017, 04:48:17 PM by BehemothProgrammer »
Turok 2 Co-Op Mod

QTurok | Turok: Mountain of the Sun | WolfenTurok 3D | and more...

Offline Snake Plissken

  • Endtrail
  • ****
  • Posts: 195
  • T:REP 792
    • View Profile
Re: Scripting Guide
« Reply #11 on: April 06, 2017, 08:57:57 AM »
https://www.dropbox.com/sh/yj01yv4rsl4u6xd/AABbxi7fznHiAB0C-zzHWxlfa?dl=0

This ScriptAPI.txt file contains all the exposed functions to the scripting engine in Turok 2 as of the 2017-03-22 update.

Some small explanations on whatever I know and the rest is question marks or the same as Turok 1. Hope this helps someone. If you want to help fill out the missing parts of these please post here so I can update it. Thanks!

Also since I went and found the enemy actor types that were not defined in the scripts for some reason, heres the remaining defs:
#define kActor_AI_Fireborn 203
#define kActor_AI_FleshSentinel 400
#define kActor_AI_DeathGuard 401
#define kActor_AI_LordoftheFlesh 402
#define kActor_AI_CaveSpider 503
#define kActor_AI_Nala 507
#define kActor_AI_WarClub 600
#define kActor_AI_HiveSoldier 710
#define kActor_AI_LordoftheDead 803
#define kActor_AI_SisterofDespair 804
#define kActor_AI_PrimagenTrooper 900
#define kActor_AI_BioBot 901
#define kActor_AI_PrimagenGuard 902

the Compsognathus is the same as the Leaper with different properties.

And zPlaceholder_67.particle is the annoying Deadman seeking blood projectile.

I extracted all usable functions from the compiled .exe including everything and anything that can be used in the scripts, Defs, and particle files. A few are not used in game yet. I'm going to reply with a epic thank you on this when I get home, I'll also compare it. I'm glad to see this released becuse, I know how much work it takes to a obtain the info and b organize it for placeing on display to others.

Also dang saved me a few by pointing out the particle name for the dead mans blood toss.

Off topic: at the moment I'm looking into hooking into all instances of the kexenemi ai component.
Class kexenemyai :kexenemyai
Selfy@ kexenemiai
~kexenemiai( kenemyai @selfy )
{
}
Void onDamage(void)
{
}
And included at main

 Something or another... not at my computer at the moment.

Offline Snake Plissken

  • Endtrail
  • ****
  • Posts: 195
  • T:REP 792
    • View Profile
Re: Scripting Guide
« Reply #12 on: April 06, 2017, 12:58:25 PM »
After you unzip the "game.kpf" file use this to view and copy files to your Turok 2 directory. In your Turok 2 directory create a "scripts" folder and a "defs/actors" folder.

If we wanted to display the damage done to an enemy on the screen, the first thing we need to do is create a script for enemies.
So first create a new file and call it "Enemy.txt" and place it in the scripts folder. Edit the file and create a class named Enemy and add the OnDamage callback function like so:

Code: [Select]
class Enemy : ScriptObject
{
kActor@ self;
Enemy(kActor@ actor)
{
@self = actor;
}
void OnDamage(kDamageInfo& in dmgInfo)
{
Hud.AddMessage("Enemy took " + dmgInfo.hits + " damage");
}
}

Now we just have to hook this script up to all the enemies in the game, but for testing let's just hook it up to the Raptoid enemy.
All the definitions of everything in the game is in the folder "defs". enemies are in "defs/actors/enemies.txt"

So first let's copy the "defs/actors/enemies.txt" file that was in the game.kpf that you unzipped before, and paste that into "Turok 2 - Seeds of Evil/defs/actors/enemies.txt"
Edit the file and the first entry is the Raptoid enemy. It's already defined all the properties and components needed by enemies in the game so we are going to add our custom script component class to the enemy by adding:

Code: [Select]
Begin_Component "kexScriptComponent"
scriptClass "Enemy"
End_Component
   
That's all you need to do. Run the game - make sure you're in developer mode by opening the console and typing "developer 1" if you weren't you need to close and reopen the game after setting it. When a Raptoid is damaged it should display that damage text.

im still reading the posts so ill delete this if you touched on it after you stated it but in my opnion, it would be a proper way if we were to hook into the script class and not declare a new one? do we then not need to script much more stuff inorder to make things work and this stuff would have nothing to do with are orignal goal, other then it needed to be done inorder to pull it off from this prospective. anyways this is how i looked at it so i been going down this road when tryin to pull it off. testing now

Offline Snake Plissken

  • Endtrail
  • ****
  • Posts: 195
  • T:REP 792
    • View Profile
Re: Scripting Guide
« Reply #13 on: April 06, 2017, 01:11:21 PM »
im so sorry for flooding i just noticed i did that here ill fix it. i also added scriptClass   "BrutalEnemy" to the def index for the raptoid actor, its the first one in the text document def file, not sure why i said that. i added #include "scripts/BrutalTestHook.txt" to main.txt . i created a BrutalTestHook.txt and added what you said but i named the class BrutalEnemy in BrutalTestHook.txt so it would line up with scriptClass. this is what you have said or am i incorrect? sorry thnx for the help im sure you know what im trying to do. lol your the man thnx.
anyways i do all of this and. the game loads but nothing prints to screen or to the hub/cmd/ anywhere. im going to do some further testing. i know scriptclass is a param in this version of the engine for a def file but i also know what className dose. however i fear that without proper hooking i would have to rebuild more then what im out to do. im going to read over your posts again and do some more testing. thnx.


EDITED a hour or so later:
  oh wow ok I got it thanks. hey pretty cool when it phrazes the defs it stores the information to some extent, allowing for us to redfine another's that we can then add to the collection that is a single actor with a bunch of cool stuff now thanks, I have my understanding on how to hook to instances of actors, or an understanding, you helped and that's cool. im gonna get back to work on things, if I have a issue applying using this method under a certain circumstances ill make sure to throw my treble's past you in a post. behemoth your great thanks. ill try to get my api list compared to this one soon I feel I was incorrect about a past one I mentioned however I still see a few missing from whats been collected in this post. but back on topic: thanks again pale for the trobleshooting. even if I did flood this with comments it still really helped. I can delete some of my posts I made a bunch but idk maby someone else will see it from the way I came at it and idk maby something can help.

« Last Edit: April 06, 2017, 02:13:12 PM by Snake Plissken »

Online Dinomite

  • Chronoscepter
  • ******
  • Posts: 2889
  • T:REP 8868
    • View Profile
Re: Scripting Guide
« Reply #14 on: April 07, 2017, 02:57:31 AM »
You aint flooding, Cosby lol

The most hated person on the internet.

Online BehemothProgrammer

  • Endtrail
  • ****
  • Posts: 225
  • T:REP 801
    • View Profile
Re: Scripting Guide
« Reply #15 on: April 08, 2017, 09:41:48 PM »
Updated with important notes on some of the event functions sent to ScriptObject as well as a execution order of the event startup functions.

ParticleFactory - IMPORTANT:
Particles are not guaranteed to spawn and may return null. Even with 100 probability set they may not spawn for unknown reasons (rare).
« Last Edit: April 10, 2017, 03:03:52 PM by BehemothProgrammer »
Turok 2 Co-Op Mod

QTurok | Turok: Mountain of the Sun | WolfenTurok 3D | and more...

Online BehemothProgrammer

  • Endtrail
  • ****
  • Posts: 225
  • T:REP 801
    • View Profile
Re: Scripting Guide
« Reply #16 on: April 10, 2017, 08:35:45 PM »
Update #2 brings a little bit of new scripting functionality mainly the new HitScan method on the WorldComponent. Finally a non hacky way to do a raycast just like Turok 1 scripting.
- new Class: kClipInfo
- new WorldComponent Method: void HitScan(kClipInfo&out, const kVec3&in origin, const kVec3&in targetOrigin, const uint EnumClipFlags, const float=0)



« Last Edit: April 10, 2017, 08:36:19 PM by BehemothProgrammer »
Turok 2 Co-Op Mod

QTurok | Turok: Mountain of the Sun | WolfenTurok 3D | and more...

Offline Duke64

  • Administrator
  • *****
  • Posts: 2080
  • T:REP 7130
  • Sixty Four
    • View Profile
    • Duke64Nukem.com
Re: Scripting Guide
« Reply #17 on: April 10, 2017, 09:46:47 PM »
After you unzip the "game.kpf" file use this to view and copy files to your Turok 2 directory. In your Turok 2 directory create a "scripts" folder and a "defs/actors" folder.

If we wanted to display the damage done to an enemy on the screen, the first thing we need to do is create a script for enemies.
So first create a new file and call it "Enemy.txt" and place it in the scripts folder. Edit the file and create a class named Enemy and add the OnDamage callback function like so:

Code: [Select]
class Enemy : ScriptObject
{
kActor@ self;
Enemy(kActor@ actor)
{
@self = actor;
}
void OnDamage(kDamageInfo& in dmgInfo)
{
Hud.AddMessage("Enemy took " + dmgInfo.hits + " damage");
}
}

Now we just have to hook this script up to all the enemies in the game, but for testing let's just hook it up to the Raptoid enemy.
All the definitions of everything in the game is in the folder "defs". enemies are in "defs/actors/enemies.txt"

So first let's copy the "defs/actors/enemies.txt" file that was in the game.kpf that you unzipped before, and paste that into "Turok 2 - Seeds of Evil/defs/actors/enemies.txt"
Edit the file and the first entry is the Raptoid enemy. It's already defined all the properties and components needed by enemies in the game so we are going to add our custom script component class to the enemy by adding:

Code: [Select]
Begin_Component "kexScriptComponent"
scriptClass "Enemy"
End_Component
   
That's all you need to do. Run the game - make sure you're in developer mode by opening the console and typing "developer 1" if you weren't you need to close and reopen the game after setting it. When a Raptoid is damaged it should display that damage text.

That is really helpful man thanks a lot. Yeah keep up the good work can't wait to see your Turok 2 mod :)
Dinosaur Hunter
"Its time to make tracks"
"You are tiny grasshopper"
"Suck it down"
"Boo, No soup for you"
"Arrrgghhhh"
"I live again"

Offline Doom Dojo

  • Iguana
  • *
  • Posts: 24
  • T:REP 72
    • View Profile
Re: Scripting Guide
« Reply #18 on: April 19, 2017, 01:09:18 PM »
After you unzip the "game.kpf" file use this to view and copy files to your Turok 2 directory. In your Turok 2 directory create a "scripts" folder and a "defs/actors" folder.

If we wanted to display the damage done to an enemy on the screen, the first thing we need to do is create a script for enemies.
So first create a new file and call it "Enemy.txt" and place it in the scripts folder. Edit the file and create a class named Enemy and add the OnDamage callback function like so:

Code: [Select]
class Enemy : ScriptObject
{
kActor@ self;
Enemy(kActor@ actor)
{
@self = actor;
}
void OnDamage(kDamageInfo& in dmgInfo)
{
Hud.AddMessage("Enemy took " + dmgInfo.hits + " damage");
}
}

Now we just have to hook this script up to all the enemies in the game, but for testing let's just hook it up to the Raptoid enemy.
All the definitions of everything in the game is in the folder "defs". enemies are in "defs/actors/enemies.txt"

So first let's copy the "defs/actors/enemies.txt" file that was in the game.kpf that you unzipped before, and paste that into "Turok 2 - Seeds of Evil/defs/actors/enemies.txt"
Edit the file and the first entry is the Raptoid enemy. It's already defined all the properties and components needed by enemies in the game so we are going to add our custom script component class to the enemy by adding:

Code: [Select]
Begin_Component "kexScriptComponent"
scriptClass "Enemy"
End_Component
   
That's all you need to do. Run the game - make sure you're in developer mode by opening the console and typing "developer 1" if you weren't you need to close and reopen the game after setting it. When a Raptoid is damaged it should display that damage text.

Oh wow it worked for me thanks a ton! I wasn't doing anything specific just messing around with the structure. Sixty Four was telling me how he could put some of you guys guides on Turok Sanctum too. And I definitely vote for that. A guide section of posts for that site is a good idea. This one should go there too for sure ;)
« Last Edit: April 19, 2017, 01:11:02 PM by Doom Dojo »

Offline ilgm

  • Iguana
  • *
  • Posts: 34
  • T:REP 109
    • View Profile
Re: Scripting Guide
« Reply #19 on: June 21, 2017, 08:57:41 PM »
Really helpful, thanks.

I added some AI scripts in so I can put them in Raptor Fest. Might add more later

Fireborn, Biobot, Primagen Guard, Primagen Trooper, Nala, Cave Spider, Flesh Sentinal, Death Guard, and Lord of the Flesh

Code: [Select]
Fireborn kActor_AI_Fireborn
{
    className                 "kexActor"
    placeable                 TRUE
    health                    40
    initialScale              "0.5 0.5 0.5"
    Begin_Component "kexRenderMeshComponent"
        mesh                  "char/Fireborn.skinnedmesh"
        anim                  "anims/Fireborn.anim"
    End_Component
    Begin_Component "kexWorldComponent"
        radius                40.959999
        wallRadius            51.199997
        height                122.879997
        deadHeight            20.480000
        heightOffset          0.000000
        bTrackGround          TRUE
    End_Component
    Begin_Component "kexEnemyAIComponent"
        commonFlags           40372
        startHealth           40
        startAnimID           0
        startSoundID          0
        painSoundID           0
        deathItemDropFlags1   0
        deathItemDropFlags2   0
        leashRadius           2048.000000
        aggressionLevel       0
        tranqHealth           2
        flags                 17072176
        attackCombatRadius    163.839996
        attackLeapRadius      245.759995
        attackDartRadius      245.759995
        attackProjectileRadius 1024.000000
        attackWeaponRadius    1228.799927
        groundBehavior        1
        airBehavior           0
        underwaterBehavior    0
        extremeDeathModelIndex 1
        explodeDeathModelIndex 1
        headBlownDeathModelIndex 1
        leftArmBlownDeathModelIndex 2
        rightArmBlownDeathModelIndex 3
        bodyHoleDeathModelIndex -1
        extremeDeathAnimID    7315
        explodeDeathAnimID    7310
        headBlownDeathAnimID  7310
        leftArmBlownDeathAnimID 7345
        rightArmBlownDeathAnimID 7345
        bodyHoleDeathAnimID   0
        idleAnimFlags         33
        moveAnimFlags         8452
        patrolAnimFlags       1057
        evadeAnimFlags        0
        combatAnimFlags       1
        leapAnimFlags         0
        dartAnimFlags         0
        projectileAnimFlags   4
        weaponAnimFlags       0
        comboAnimFlags        0
        normalDeathAnimFlags  8452
        movingDeathAnimFlags  4
        violentDeathAnimFlags 0
        explosiveDeathAnimFlags 1
        alertAnimFlags        1
        takeCoverAnimFlags    0
        leftArmWoundAnimFlags 1
        rightArmWoundAnimFlags 1
        fleeAnimFlags         1
    End_Component
}

CaveSpider kActor_AI_CaveSpider
{
    className                 "kexActor"
    placeable                 TRUE
    health                    150
    initialScale              "0.500000 0.500000 0.500000"
    Begin_Component "kexRenderMeshComponent"
        mesh                  "char/Spider_Adult.skinnedmesh"
        anim                  "anims/Spider_Adult.anim"
    End_Component
    Begin_Component "kexWorldComponent"
        radius                61.4
        wallRadius            92.2
        height                112.6
        deadHeight            61.43
        heightOffset          0.000000
        bTrackGround          TRUE
    End_Component
    Begin_Component "kexEnemyAIComponent"
        commonFlags           6420
        startAnimID           11200
deathItemDropFlags1   0
deathItemDropFlags1   0
leashRadius   2560.0
aggressionLevel   0
tranqHealth   20
startSoundID   0
painSoundID   841
flags   0
attackCombatRadius   204.799988
attackLeapRadius   163.83
attackDartRadius      163.83
attackProjectileRadius 921.59
attackWeaponRadius     1842.19
groundBehavior         1
airBehavior    0
underwaterBehavior     0
extremeDeathModelIndex -1
explodeDeathModelIndex -1
headBlownDeathModelIndex -1
leftArmBlownDeathModelIndex -1
rightArmBlownDeathModelIndex -1
bodyHoleDeathModelIndex -1
extremeDeathAnimID    0
    explodeDeathAnimID    0
        headBlownDeathAnimID  0
        leftArmBlownDeathAnimID 0
        rightArmBlownDeathAnimID 0
        bodyHoleDeathAnimID   0
        idleAnimFlags         1057
        moveAnimFlags         1057
        patrolAnimFlags       1056
        evadeAnimFlags        0
        combatAnimFlags       1
        leapAnimFlags         0
        dartAnimFlags         0
        projectileAnimFlags   0
        weaponAnimFlags       1
        comboAnimFlags        0
        normalDeathAnimFlags  1057
        movingDeathAnimFlags  0
        violentDeathAnimFlags 0
        explosiveDeathAnimFlags 1
        alertAnimFlags        0
        takeCoverAnimFlags    0
        leftArmWoundAnimFlags 0
        rightArmWoundAnimFlags 0
        fleeAnimFlags         0
startHealth   150
pathTID   -1

    End_Component
}

Nala kActor_AI_Nala
{
    className                 "kexActor"
    placeable                 TRUE
    health                    30
    initialScale              "0.5 0.5 0.5"
    Begin_Component "kexRenderMeshComponent"
        mesh                  "char/Nala_normal.skinnedmesh"
        anim                  "anims/Nala_normal.anim"
    End_Component
    Begin_Component "kexWorldComponent"
        radius                10.2
        wallRadius            51.199997
        height                71.68
        deadHeight            20.480000
        heightOffset          0.000000
        bTrackGround          TRUE
    End_Component
    Begin_Component "kexEnemyAIComponent"
        commonFlags           7444
        startAnimID           0
        startSoundID          0
        painSoundID           0
        deathItemDropFlags1   0
        deathItemDropFlags2   0
        leashRadius           2560.000000
        aggressionLevel       0
        tranqHealth           20
        flags                 0
        attackCombatRadius    81.839996
        attackLeapRadius      163.8
        attackDartRadius      163.8
        attackProjectileRadius 1024.000000
        attackWeaponRadius    409.599927
        groundBehavior        1
        airBehavior           0
        underwaterBehavior    0
        extremeDeathModelIndex 1
        explodeDeathModelIndex 1
        headBlownDeathModelIndex 1
        leftArmBlownDeathModelIndex -1
        rightArmBlownDeathModelIndex -1
        bodyHoleDeathModelIndex 1
        extremeDeathAnimID    7300
        explodeDeathAnimID    7300
        headBlownDeathAnimID  7300
        leftArmBlownDeathAnimID 0
        rightArmBlownDeathAnimID 0
        bodyHoleDeathAnimID   7300
        idleAnimFlags         1057
        moveAnimFlags         1059
        patrolAnimFlags       1056
        evadeAnimFlags        0
        combatAnimFlags       0
        leapAnimFlags         0
        dartAnimFlags         0
        projectileAnimFlags   1
        weaponAnimFlags       0
        comboAnimFlags        0
        normalDeathAnimFlags  1057
        movingDeathAnimFlags  0
        violentDeathAnimFlags 0
        explosiveDeathAnimFlags 0
        alertAnimFlags        0
        takeCoverAnimFlags    0
        leftArmWoundAnimFlags 0
        rightArmWoundAnimFlags 0
        fleeAnimFlags         0
startHealth           30
pathTID   -1
    End_Component
}

PrimagenGuard kActor_AI_PrimagenGuard
{
    className                 "kexActor"
    placeable                 TRUE
    health                    100
    initialScale              "0.5 0.5 0.5"
    Begin_Component "kexRenderMeshComponent"
        mesh                  "char/Elite_Guard.skinnedmesh"
        anim                  "anims/Elite_Guard.anim"
    End_Component
    Begin_Component "kexWorldComponent"
        radius                51.959999
        wallRadius            51.199997
        height                174.879997
        deadHeight            51.480000
        heightOffset          -2.500000
        bTrackGround          TRUE
    End_Component
    Begin_Component "kexEnemyAIComponent"
        commonFlags           40324
        startAnimID           0
        deathItemDropFlags1   33554432
        deathItemDropFlags2   0
        leashRadius           1024.000000
        aggressionLevel       0
        tranqHealth           20
        startSoundID          0
        painSoundID           0
        flags                 0
        attackCombatRadius    225.279
        attackLeapRadius      358.759995
        attackDartRadius      163.759995
        attackProjectileRadius 409.000000
        attackWeaponRadius    2048.799927
        groundBehavior        0
        airBehavior           0
        underwaterBehavior    0
        extremeDeathModelIndex 1
        explodeDeathModelIndex 5
        headBlownDeathModelIndex 4
        leftArmBlownDeathModelIndex 2
        rightArmBlownDeathModelIndex 3
        bodyHoleDeathModelIndex -1
        extremeDeathAnimID    7300
        explodeDeathAnimID    7325
        headBlownDeathAnimID  7325
        leftArmBlownDeathAnimID 7100
        rightArmBlownDeathAnimID 7100
        bodyHoleDeathAnimID   0
        idleAnimFlags         1057
        moveAnimFlags         1057
        patrolAnimFlags       1057
        evadeAnimFlags        0
        combatAnimFlags       1
        leapAnimFlags         1
        dartAnimFlags         0
        projectileAnimFlags   0
        weaponAnimFlags       3
        comboAnimFlags        0
        normalDeathAnimFlags  1057
        movingDeathAnimFlags  0
        violentDeathAnimFlags 1
        explosiveDeathAnimFlags 0
        alertAnimFlags        1
        takeCoverAnimFlags    0
        leftArmWoundAnimFlags 0
        rightArmWoundAnimFlags 0
        fleeAnimFlags         0
        startHealth           100
pathTID   5000
    End_Component
}

Biobot kActor_AI_BioBot
{
    className                 "kexActor"
    placeable                 TRUE
    health                    40
    initialScale              "0.5 0.5 0.5"
    Begin_Component "kexRenderMeshComponent"
        mesh                  "char/Bio-bot.skinnedmesh"
        anim                  "anims/Bio-bot.anim"
    End_Component
    Begin_Component "kexWorldComponent"
        radius                71.959999
        wallRadius            40.199997
        height                81.879997
        deadHeight            30.480000
        heightOffset          -17.500000
        bTrackGround          TRUE
    End_Component
    Begin_Component "kexEnemyAIComponent"
        commonFlags           530692
        startAnimID           0
        deathItemDropFlags1   8192
        deathItemDropFlags2   0
        leashRadius           1024.000000
        aggressionLevel       0
        tranqHealth           20
        startSoundID          0
        painSoundID           0
        flags                 0
        attackCombatRadius    307.279
        attackLeapRadius      614.759995
        attackDartRadius      163.759995
        attackProjectileRadius 409.000000
        attackWeaponRadius    2560.799927
        groundBehavior        1
        airBehavior           0
        underwaterBehavior    0
        extremeDeathModelIndex 3
        explodeDeathModelIndex -1
        headBlownDeathModelIndex 3
        leftArmBlownDeathModelIndex 1
        rightArmBlownDeathModelIndex 2
        bodyHoleDeathModelIndex -1
        extremeDeathAnimID    7300
        explodeDeathAnimID    0
        headBlownDeathAnimID  7300
        leftArmBlownDeathAnimID 7345
        rightArmBlownDeathAnimID 7345
        bodyHoleDeathAnimID   0
        idleAnimFlags         1072
        moveAnimFlags         1057
        patrolAnimFlags       1057
        evadeAnimFlags        0
        combatAnimFlags       1
        leapAnimFlags         0
        dartAnimFlags         0
        projectileAnimFlags   0
        weaponAnimFlags       1
        comboAnimFlags        0
        normalDeathAnimFlags  1057
        movingDeathAnimFlags  0
        violentDeathAnimFlags 0
        explosiveDeathAnimFlags 1
        alertAnimFlags        0
        takeCoverAnimFlags    0
        leftArmWoundAnimFlags 0
        rightArmWoundAnimFlags 0
        fleeAnimFlags         0
        startHealth           40
pathTID   -1
    End_Component
}

PrimagenTrooper kActor_AI_PrimagenTrooper
{
    className                 "kexActor"
    placeable                 TRUE
    health                    60
    initialScale              "0.5 0.5 0.5"
    Begin_Component "kexRenderMeshComponent"
        mesh                  "char/Trooper.skinnedmesh"
        anim                  "anims/Trooper.anim"
    End_Component
    Begin_Component "kexWorldComponent"
        radius                40.959999
        wallRadius            40.199997
        height                174.879997
        deadHeight            40.480000
        heightOffset          -2.500000
        bTrackGround          TRUE
    End_Component
    Begin_Component "kexEnemyAIComponent"
        commonFlags           34196
        startAnimID           0
        deathItemDropFlags1   262144
        deathItemDropFlags2   0
        leashRadius           2560.000000
        aggressionLevel       0
        tranqHealth           20
        startSoundID          0
        painSoundID           0
        flags                 0
        attackCombatRadius    225.279
        attackLeapRadius      256.759995
        attackDartRadius      163.759995
        attackProjectileRadius 409.000000
        attackWeaponRadius    3072.799927
        groundBehavior        0
        airBehavior           0
        underwaterBehavior    0
        extremeDeathModelIndex 1
        explodeDeathModelIndex 4
        headBlownDeathModelIndex 5
        leftArmBlownDeathModelIndex 2
        rightArmBlownDeathModelIndex 3
        bodyHoleDeathModelIndex -1
        extremeDeathAnimID    7300
        explodeDeathAnimID    7325
        headBlownDeathAnimID  7335
        leftArmBlownDeathAnimID 7345
        rightArmBlownDeathAnimID 7345
        bodyHoleDeathAnimID   0
        idleAnimFlags         1057
        moveAnimFlags         1057
        patrolAnimFlags       1057
        evadeAnimFlags        1
        combatAnimFlags       1
        leapAnimFlags         0
        dartAnimFlags         0
        projectileAnimFlags   0
        weaponAnimFlags       0
        comboAnimFlags        0
        normalDeathAnimFlags  1057
        movingDeathAnimFlags  0
        violentDeathAnimFlags 1
        explosiveDeathAnimFlags 3
        alertAnimFlags        1
        takeCoverAnimFlags    0
        leftArmWoundAnimFlags 0
        rightArmWoundAnimFlags 0
        fleeAnimFlags         0
        startHealth           60
pathTID   5005
    End_Component
}

LordoftheFlesh kActor_AI_LordoftheFlesh
{
    className                 "kexActor"
    placeable                 TRUE
    health                    80
    initialScale              "0.5 0.5 0.5"
    Begin_Component "kexRenderMeshComponent"
        mesh                  "char/Lord_Of_The_Flesh.skinnedmesh"
        anim                  "anims/Lord_Of_The_Flesh.anim"
    End_Component
    Begin_Component "kexWorldComponent"
        radius                20.959999
        wallRadius            61.199997
        height                122.879997
        deadHeight            20.480000
        heightOffset          0.0
        bTrackGround          TRUE
    End_Component
    Begin_Component "kexEnemyAIComponent"
        commonFlags           40340
        startAnimID           0
        deathItemDropFlags1   0
        deathItemDropFlags2   0
        leashRadius           2560.000000
        aggressionLevel       0
        tranqHealth           5
        startSoundID          0
        painSoundID           0
        flags                 0
        attackCombatRadius    81.91
        attackLeapRadius      163.839
        attackDartRadius      163.839
        attackProjectileRadius 409.59
        attackWeaponRadius    1843.199
        groundBehavior        0
        airBehavior           0
        underwaterBehavior    0
        extremeDeathModelIndex 1
        explodeDeathModelIndex 5
        headBlownDeathModelIndex 4
        leftArmBlownDeathModelIndex 2
        rightArmBlownDeathModelIndex 3
        bodyHoleDeathModelIndex -1
        extremeDeathAnimID    7300
        explodeDeathAnimID    7500
        headBlownDeathAnimID  7000
        leftArmBlownDeathAnimID 7345
        rightArmBlownDeathAnimID 7345
        bodyHoleDeathAnimID   0
        idleAnimFlags         1057
        moveAnimFlags         1057
        patrolAnimFlags       1057
        evadeAnimFlags        0
        combatAnimFlags       1
        leapAnimFlags         0
        dartAnimFlags         0
        projectileAnimFlags   0
        weaponAnimFlags       6
        comboAnimFlags        0
        normalDeathAnimFlags  1057
        movingDeathAnimFlags  1
        violentDeathAnimFlags 1
        explosiveDeathAnimFlags 1
        alertAnimFlags        1
        takeCoverAnimFlags    0
        leftArmWoundAnimFlags 1
        rightArmWoundAnimFlags 1
        fleeAnimFlags         1
        startHealth           80
pathTID   5000
    End_Component
}

DeathGuard kActor_AI_DeathGuard
{
    className                 "kexActor"
    placeable                 TRUE
    health                    50
    initialScale              "0.5 0.5 0.5"
    Begin_Component "kexRenderMeshComponent"
        mesh                  "char/Death_Guard.skinnedmesh"
        anim                  "anims/Death_Guard.anim"
    End_Component
    Begin_Component "kexWorldComponent"
        radius                20.959999
        wallRadius            61.199997
        height                122.879997
        deadHeight            20.480000
        heightOffset          0.0
        bTrackGround          TRUE
    End_Component
    Begin_Component "kexEnemyAIComponent"
        commonFlags           40852
        startAnimID           0
        deathItemDropFlags1   0
        deathItemDropFlags2   0
        leashRadius           2560.000000
        aggressionLevel       0
        tranqHealth           3
        startSoundID          0
        painSoundID           0
        flags                 0
        attackCombatRadius    81.91
        attackLeapRadius      163.839
        attackDartRadius      163.839
        attackProjectileRadius 1024.59
        attackWeaponRadius    1843.199
        groundBehavior        0
        airBehavior           0
        underwaterBehavior    0
        extremeDeathModelIndex 3
        explodeDeathModelIndex 4
        headBlownDeathModelIndex 5
        leftArmBlownDeathModelIndex 1
        rightArmBlownDeathModelIndex 2
        bodyHoleDeathModelIndex -1
        extremeDeathAnimID    7300
        explodeDeathAnimID    7200
        headBlownDeathAnimID  7335
        leftArmBlownDeathAnimID 7345
        rightArmBlownDeathAnimID 7345
        bodyHoleDeathAnimID   0
        idleAnimFlags         1057
        moveAnimFlags         1057
        patrolAnimFlags       1057
        evadeAnimFlags        3
        combatAnimFlags       7
        leapAnimFlags         0
        dartAnimFlags         0
        projectileAnimFlags   1
        weaponAnimFlags       1
        comboAnimFlags        0
        normalDeathAnimFlags  1057
        movingDeathAnimFlags  1
        violentDeathAnimFlags 1
        explosiveDeathAnimFlags 3
        alertAnimFlags        1
        takeCoverAnimFlags    0
        leftArmWoundAnimFlags 1
        rightArmWoundAnimFlags 1
        fleeAnimFlags         1
        startHealth           50
pathTID   5000
    End_Component
}

FleshSentinel kActor_AI_FleshSentinel
{
    className                 "kexActor"
    placeable                 TRUE
    health                    30
    initialScale              "0.5 0.5 0.5"
    Begin_Component "kexRenderMeshComponent"
        mesh                  "char/Sentinel.skinnedmesh"
        anim                  "anims/Sentinel.anim"
    End_Component
    Begin_Component "kexWorldComponent"
        radius                10.959999
        wallRadius            51.199997
        height                117.879997
        deadHeight            20.480000
        heightOffset          0.0
        bTrackGround          TRUE
    End_Component
    Begin_Component "kexEnemyAIComponent"
        commonFlags           8084
        startAnimID           0
        deathItemDropFlags1   0
        deathItemDropFlags2   0
        leashRadius           2560.000000
        aggressionLevel       0
        tranqHealth           2
        startSoundID          0
        painSoundID           0
        flags                 2
        attackCombatRadius    81.91
        attackLeapRadius      163.839
        attackDartRadius      163.839
        attackProjectileRadius 1024.59
        attackWeaponRadius    409.199
        groundBehavior        1
        airBehavior           0
        underwaterBehavior    0
        extremeDeathModelIndex 3
        explodeDeathModelIndex 5
        headBlownDeathModelIndex 4
        leftArmBlownDeathModelIndex 1
        rightArmBlownDeathModelIndex 2
        bodyHoleDeathModelIndex -1
        extremeDeathAnimID    7300
        explodeDeathAnimID    7201
        headBlownDeathAnimID  7335
        leftArmBlownDeathAnimID 7345
        rightArmBlownDeathAnimID 7345
        bodyHoleDeathAnimID   0
        idleAnimFlags         1057
        moveAnimFlags         1057
        patrolAnimFlags       1058
        evadeAnimFlags        3
        combatAnimFlags       3
        leapAnimFlags         0
        dartAnimFlags         0
        projectileAnimFlags   1
        weaponAnimFlags       0
        comboAnimFlags        0
        normalDeathAnimFlags  1057
        movingDeathAnimFlags  1
        violentDeathAnimFlags 1
        explosiveDeathAnimFlags 3
        alertAnimFlags        0
        takeCoverAnimFlags    0
        leftArmWoundAnimFlags 1
        rightArmWoundAnimFlags 1
        fleeAnimFlags         1
        startHealth           30
pathTID   -1
    End_Component
}

« Last Edit: June 23, 2017, 02:11:16 PM by ilgm »