idAI2
idAI2's are the entities which are connected to spawn targets or spawn groups, and defines the specific enemy which will be spawned when called upon. Below is an example of the idAI2 for the Tier 1 Zombie enemy.
}
entity {
layers {
"spawn_target_layer"
}
entityDef zombie_tier_1_1 {
inherit = "ai/fodder/zombie_tier_1";
class = "idAI2";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = true;
disableAIPooling = false;
edit = {
highlightDecl = "glorykill_highlight";
clipModelInfo = {
type = "CLIPMODEL_BOX";
size = {
x = 0.400000006;
y = 0.400000006;
z = 1.5;
}
}
dormancy = {
delay = 30;
distance = 19.5070019;
}
spawn_statIncreases = {
num = 1;
item[0] = {
stat = "STAT_AI_SPAWNED";
increase = 1;
}
}
targetingDecl = "characters/zombie";
actorConstants = {
perception = {
eyeOffset = {
z = 1.63829994;
}
crouchedEyeOffset = {
z = 0.609600008;
}
}
actorSounds = {
sndFootsteps = "footsteps/zombies/zombies_default";
sndPainSmall = "player/pain/small";
sndPainMedium = "player/pain/medium";
sndPainLarge = "player/pain/large";
sndRagdollStart = "play_zombie_death";
}
footstepEffectTable = "impacteffect/footsteps/ai_zombie";
footstepEvents = "footstepevents/default";
painInfo = {
decayDelay = 1000;
bucketMaxValue = 200;
decayRate = 0;
}
bulletPenetrationData = {
energyCostToPenetrate = 10;
damageScaleToPenetrate = 1;
}
footstepEffectTable_Sprint = "impacteffect/footsteps/ai_zombie_sprint";
footstepEffectTable_SlowWalk = "impacteffect/footsteps/ai_zombie";
footstepEffectTable_CrouchWalk = "impacteffect/footsteps/ai_zombie";
footstepEffectTable_Landing = "impacteffect/footsteps/ai_zombie_landing";
footstepEffectTable_HeavyLanding = "impacteffect/footsteps/ai_zombie_landing";
ledgeGrabEffectTable = "impacteffect/footsteps/ai_zombie";
ledgeGrabEffectTable_Heavy = "impacteffect/footsteps/ai_zombie";
ledgeGrabEffectTable_Friendly = "impacteffect/footsteps/ai_zombie";
ledgeGrabEffectTable_FriendlyHeavy = "impacteffect/footsteps/ai_zombie";
}
actorEditable = {
entityDamageComponent = {
entityDamage = "entitydamage/ai/zombie/base";
}
injuredStates = {
num = 1;
item[0] = {
name = "not_injured";
damageGroupMaxGoreLevels = {
num = 1;
item[0] = {
damageGroupName = "left_upper_leg";
maxGoreLevel = "GORELEVEL_LIGHT_DAMAGE";
}
}
allowIK = true;
canUseAllTraversalsWhileInjured = true;
canUseDownTraversalsWhileInjured = true;
}
}
radiusDamageJoints = {
num = 6;
item[0] = "head_part01_md";
item[1] = "spine_part01_md";
item[2] = "arm_hand_lf";
item[3] = "arm_hand_rt";
item[4] = "leg_lower_lf";
item[5] = "leg_lower_rt";
}
}
factionName = "zombie_t1";
mass = 18.1439991;
lootable = false;
lootDropComponent = {
lootDropDataDecl = "ai/default_fodder";
}
pvpLootDropComponent = {
lootDropDataDecl = "ai/default_fodder_pvp";
}
aiConstants = {
components = {
ptr = {
ptr[12] = {
componentDecl = "aicomponent/pathmanager/zombie";
}
ptr[14] = {
componentDecl = "aicomponent/attack/base";
}
}
}
syncMelee = {
msAfterAttackBeforeCanSync = 250;
syncMeleeEntityDefs = {
num = 2;
item[0] = "syncmelee/zombie_tier1";
item[1] = "syncmelee/zombie_tier1_3p";
}
syncGroups = {
num = 1;
item[0] = {
syncGroupName = "";
syncInteractions = {
num = 21;
item[0] = "syncdeath/playervsai/zombie_tier1/front_head";
item[1] = "syncdeath/playervsai/zombie_tier1/back_lower";
item[2] = "syncdeath/playervsai/zombie_tier1/above_back";
item[3] = "syncdeath/playervsai/zombie_tier1/above_front";
item[4] = "syncdeath/playervsai/zombie_tier1/back_head";
item[5] = "syncdeath/playervsai/zombie_tier1/front_chest";
item[6] = "syncdeath/playervsai/zombie_tier1/front_leftarm";
item[7] = "syncdeath/playervsai/zombie_tier1/front_lower";
item[8] = "syncdeath/playervsai/zombie_tier1/front_rightarm";
item[9] = "syncdeath/playervsai/zombie_tier1/left_lower";
item[10] = "syncdeath/playervsai/zombie_tier1/left_upper";
item[11] = "syncdeath/playervsai/zombie_tier1/right_lower";
item[12] = "syncdeath/playervsai/zombie_tier1/right_upper";
item[13] = "syncdeath/playervsai/zombie_tier1/back_upper";
item[14] = "syncdeath/playervsai/zombie_tier1/chainsaw/cut_front";
item[15] = "syncdeath/playervsai/zombie_tier1/chainsaw/cut_back";
item[16] = "syncdeath/playervsai/zombie_tier3/front_rightarm";
item[17] = "syncdeath/playervsai/zombie_tier1/berserk/berserk_front_upper";
item[18] = "syncdeath/playervsai/zombie_tier1/berserk/berserk_above_front";
item[19] = "syncdeath/playervsai/zombie_tier1/crucbile/crucible_front";
item[20] = "syncdeath/playervsai/zombie_tier1/crucbile/crucible_back";
}
}
}
}
aiDeathStat = "STAT_ZOMBIE_KILLED";
aiDeathCodex = "codex/hell/demon_zombie_earth";
}
aiEditable = {
perception = {
actorPerceptionRadius = 14;
obstaclePerceptionRadius = 39;
closePerceptionRadius = 5;
eventPerceptionRadius = 14;
senseUpdatesOnNonEnemies = false;
fieldOfView = {
value = 150;
}
}
useTouchComponent = true;
death = {
ignoreDamageType = "DAMAGETYPE_EMP";
fadeOutAfterDeathDelay_Seconds = {
value = 3;
}
removeAfterFadeOutDelay_Seconds = {
value = 3;
}
canBecomeInjured = true;
explosionDecl = NULL;
declTwitchPain = "twitchpain/zombie_t1";
}
movement = {
wanderRadius = 19.5070019;
useTraversalClassA = true;
preferredCombatWalkState = "WALKSTATE_WALKING";
allowWander = true;
}
cover = {
coverRadius = 0;
}
behaviors = {
decl = "behaviors/zombie/tier_1";
declBehaviorEvents = "behaviorevents/default";
attackGraph = "ai/zombie_tier_1";
}
vsAIDamageMask = "PAIN";
spawnSettings = {
entranceAnimPath = "animweb/characters/monsters/zombie_tier_1/spawn/teleport_entrance";
spawnFXEntityDef = "fx/spawn_in_fodder";
teleportDelayMS = 750;
}
}
aiHealth = {
components = {
components[1] = {
max = 0;
regenInterval = {
value = 0;
}
}
components[0] = {
max = 200;
starting = 200;
}
}
}
goreComponent = {
goreContainer = "ai/fodder/zombie_tier1";
}
afProperties = {
impactEffectTable = "impacteffect/ragdoll/ragdoll_fodder";
articulatedFigure = "characters/monsters/zombie_tier1";
}
renderModelInfo = {
model = "md6def/characters/monsters/zombie_tier1/base/zombie_tier1_hell.md6";
lightRigDecl = "zombie_tier1/zombie_tier1_default";
}
fxDecl = "character/zombie_tier1/zombie_tier1";
walkIKDecl = "walkik/zombie";
killerNames = {
num = 1;
item[0] = "#str_decl_damage_zombie_GHOST81206";
}
spawnPosition = {
x = -1825.60095;
y = 2194.30444;
z = 44.5000305;
}
spawnOrientation = {
mat = {
mat[0] = {
x = 5.36441803e-07;
y = 0.99999994;
}
mat[1] = {
x = -0.99999994;
y = 5.36441803e-07;
}
}
}
}
}
The idAI2's in each level are usually named different, however you can easily find them by searching for the structure used in their inherit parameter.
Ex. "ai/ambient/spirit", ai/fodder/zombie_tier_1", "ai/heavy/arachnotron", "ai/superheavy/marauder"