entityDef atdm:ai_humanoid { "inherit" "atdm:ai_base" "editor_displayFolder" "AI/Internal/Base Class" "editor_usage" "Don't use. Base class for all TDM humanoid AI entities." // This defines how AIs will interact with this entity "AIUse" "AIUSE_PERSON" "personType" "PERSONTYPE_GENERIC" "personGender" "PERSONGENDER_UNKNOWN" "anim" "idle" //animation to play on map start "head_joint" "Head" // humanoids will have their head attached to this joint "anim_rate_run" "0.8" //slows down AI so they are slightly slower than player "anim_rate_run_torch" "0.8" // These defines the chances the AI will notice various visual stimuli "chanceNoticeWeapon" "1.0" "chanceNoticeSuspiciousItem" "1.0" // grayman #1327 "chanceNoticeRope" "1.0" // grayman #2872 "chanceNoticePerson" "1.0" "chanceNoticeMonster" "1.0" // grayman #3331 "chanceNoticeUndead" "1.0" // grayman #3343 "chanceNoticeBlood" "1.0" "chanceNoticeLight" "0.9" // grayman #2603 "chanceNoticeMissingItem" "1.0" "chanceNoticeDoor" "1.0" // These define if the AI can operate various kinds of lights "canLightTorches" "1" "canOperateSwitchLights" "1" "chanceLightTorches" "0.4" // grayman #2603 "chanceOperateSwitchLights" "0.7" // grayman #2603 "canOperateDoors" "1" "canOperateElevators" "1" "canGreet" "1" // Humans need weapons to fight "unarmed_melee" "0" "damage_zone head" "*Neck" "damage_zone chest" "*Spine_Dummy -*Neck" "damage_zone torso_low" "Hips" "damage_zone left_arm" "*LeftArm" "damage_zone right_arm" "*RightArm" "damage_zone legs" "*LeftHips_Dummy *RightHips_Dummy origin" "damage_scale head" "2" "damage_scale chest" "1.5" "damage_scale torso_low" "1.0" "damage_scale left_arm" "0.3" "damage_scale right_arm" "0.3" "damage_scale legs" "0.4" //all humanoid AI will be using the same base skeleton "ik_numLegs" "2" "ik_minWaistAnkleDist" "16" "ik_footSize" "4" "ik_waist" "Hips" "ik_hip1" "LeftUpLeg" "ik_hip2" "RightUpLeg" "ik_knee1" "LeftLeg" "ik_knee2" "RightLeg" "ik_ankle1" "LeftFoot" "ik_ankle2" "RightFoot" //normally a knee joint //"ik_dir1" "LeftFoot" //"ik_dir2" "RightFoot" "ik_foot1" "LeftToeBase" "ik_foot2" "RightToeBase" // We now use AAS32 by default "use_aas" "aas32" "size" "32 32 68" "cylinder" "10" // optional "eye_height" "77" // rates for AI turning their head randomly--these values cause AI to move their shoulders slightly as well "look_min" "-80 -90 0" "look_max" "25 90 0" "look_joint Spine" "0.3 0.3 0" "look_joint Head" "0.7 0.7 0" // Allow vertical aiming at the player during combat "combat_look_joint Spine" "0.1333 0.1333 0" "combat_look_joint Spine2" "0.1333 0.1333 0" "combat_look_joint Head" "0.6 0.6 0" //"combat_look_joint RightArm" "0.6 0 0" // grayman #3473 //"combat_look_joint LeftArm" "0.6 0 0" // grayman #3473 "head_focus_rate" "0.05" //how fast head turns to focus on target // the number of degrees an AI can turn in 1 second "turn_rate" "180" // Attachment Positions (For OLD skeleton, NEW skeleton positions are in tdm_ai_humanoid_newskel) // hand: orientation matches the weapon model convention // (forward in the hand is to the right in the model) "attach_pos_name_handr" "hand_r" "attach_pos_joint_handr" "RightHand" // joint orientation: down sideways forward "attach_pos_origin_handr" "-5 2 0" // joint orientation: roll, pitch, yaw "attach_pos_angles_handr" "180 0 90" "attach_pos_name_handl" "hand_l" "attach_pos_joint_handl" "LeftHand" "attach_pos_origin_handl" "5 -3 0" "attach_pos_angles_handl" "180 0 -90" // Position for sword sheathed at the left hip (still WIP, not quite right) "attach_pos_name_hipsheathl" "hip_sheath_l" "attach_pos_joint_hipsheathl" "Hips" "attach_pos_origin_hipsheathl" "7.5 4.4 6.6" "attach_pos_angles_hipsheathl" "-60 -90 -80" // Positions on the belt (calibrated for builder guard w/ purse) "attach_pos_name_beltb" "belt_back" "attach_pos_joint_beltb" "Hips" // left, up, in/out "attach_pos_origin_beltb" "0 7 -4" "attach_pos_angles_beltb" "-90 0 -90" "attach_pos_name_beltbr" "belt_back_r" "attach_pos_joint_beltbr" "Hips" // left, up, in/out "attach_pos_origin_beltbr" "-5 7 -4" "attach_pos_angles_beltbr" "-90 0 -90" "attach_pos_name_beltbl" "belt_back_l" "attach_pos_joint_beltbl" "Hips" "attach_pos_origin_beltbl" "5 7 -4" "attach_pos_angles_beltbl" "-90 0 -90" "attach_pos_name_beltfr" "belt_front_r" "attach_pos_joint_beltfr" "Hips" // left, up, in/out "attach_pos_origin_beltfr" "-5 7 5.5" "attach_pos_angles_beltfr" "90 0 -90" "attach_pos_name_beltfl" "belt_front_l" "attach_pos_joint_beltfl" "Hips" "attach_pos_origin_beltfl" "5 7 5.5" "attach_pos_angles_beltfl" "90 0 -90" "editor_bool ground_when_dragged" "If set to true, don't let the player pick the ragdoll all the way up off the ground." "ground_when_dragged" "1" "editor_string ground_critical_bodies" "A list of AF bodies, separated by space. These bodies checked to see if they're on the ground when 'ground_when_dragged' is true." // Currently based on /af/guard_base.af "ground_critical_bodies" "waist chest rupleg Lupleg ruparm Luparm" "editor_int ground_min_number" "At least so many AF bodies defined in 'ground_critical_bodies' must remain on the ground, or dragging upwards is not allowed." "ground_min_number" "1" "editor_bool drag_af_damping" "If true, apply AF damping when dragging the ragdoll." "drag_af_damping" "1" // This frob distance is intended for frobbing AI ragdolls // Might have to revise this to have conversations via frobbing, etc. "frob_distance" "60" "editor_int hold_distance_min" "Distance ragdoll is from player when dragged, default is 35. In units." "hold_distance_min" "35" // melee weapon swing sound "snd_swing" "sword_swing" // blade sounds "snd_drawsword" "sword_ai_unsheath" "snd_sheathesword" "sword_ai_sheath" // default footstep, "snd_footstep" "human_stone" // material specific footsteps (DarkMod SFX) "snd_footstep_straw" "human_straw" "snd_footstep_wood" "human_wood" "snd_footstep_puddle" "movement_water" "snd_footstep_wading" "movement_water" "snd_footstep_tile" "human_tile" "snd_footstep_stone" "human_stone" "snd_footstep_snow" "human_snow" "snd_footstep_gravel" "human_gravel" "snd_footstep_metal" "human_metal" "snd_footstep_grass" "human_grass" "snd_footstep_carpet" "human_carpet" "snd_footstep_dirt" "human_dirt" "snd_footstep_foliage" "human_foliage" // SteveL #3634: Adding 8 footstep sounds "snd_footstep_sand" "human_dirt" "snd_footstep_glass" "human_glass" "snd_footstep_ice" "human_ice" "snd_footstep_cloth" "human_carpet" "snd_footstep_armor_leath" "human_carpet" "snd_footstep_flesh" "human_mud" "snd_footstep_moss" "human_carpet" "snd_footstep_liquid" "movement_water" // voice set (test set for now, remove before release!) // greebo: The base humanoid AI is using the base vocal set "def_vocal_set" "atdm:ai_vocal_set_base" "health" "100" // Projectile, for throwing when the enemy is out of reach (make me a rock please) "def_projectile" "atdm:projectile_rock" // Accuracy of projectile-throwing. 0 means perfect accuracy, larger values are worse. "attack_accuracy" "2.3" //This value may not even be needed, but is included here just in case: "attack_cone" "70" // ============== Melee Settings =========== // melee difficulty set to use (default is skilled) "def_melee_set" "atdm:ai_melee_set_skilled" // Range at which an AI thinks it can hit you "melee_range" "40" "melee_predicts_proximity" "1" // most humanoids are smart enough to do this "melee_predicted_attack_time" "750" // works for our sword anims, needs overloading for animals, zombies // ============ End Melee Settings =========== // Set this to 0 to turn off throwing projectiles when enemies are out of reach. // For example, you might use scripts to prevent guards from throwing things in // the antiques room (don't want to break those vases!) "outofreach_projectile_enabled" "1" // This is used to limit the distance which an AI will travel to take cover. // 0 means no limit. As a rough guideline, this is approximately measured in Doom units // divided by 3; however, this can vary. "taking_cover_max_cost" "100" // Set to 0 to disable taking cover. "taking_cover_enabled" "1" // Set to 0 to take cover from all enemies, not just ones that can threaten us from a distance. "taking_cover_only_from_archers" "1" // greebo: Humanoids should be translated upwards a bit when stepping up slopes "step_up_increase" "10" /** * ishtvan: This larger box CM for the head is swapped in * doing collision tests with the blackjack, at all * times the AI is alive, except when in combat state. **/ "blackjack_headbox_mins" "-10 -3 -9" "blackjack_headbox_maxs" "5 3 3.5" "mouth_offset" "0 0 15" // grayman #1488 "eye_offset" "0 0 19" // grayman #3525 "hitByMoveableLookAtTime" "2.0" // grayman #2816 "hitByMoveableLookBackTime" "2.0" // grayman #2816 } // ============ Humanoid Corpse ============ entityDef atdm:env_ragdoll_humanoid_base { "inherit" "atdm:env_ragdoll_base" "spawnclass" "idAFEntity_WithAttachedHead" "editor_usage" "Don't use, base class for all TDM humanoid ragdolls." "head_joint" "head" // This defines how AIs will interact with this entity "AIUse" "AIUSE_PERSON" "personType" "PERSONTYPE_GENERIC" "personGender" "PERSONGENDER_UNKNOWN" // Don't let the player pick the ragdoll all the way up off the ground "ground_when_dragged" "1" // The following are the AF bodies checked to see if they're on the ground // Currently based on /af/guard_base.af "ground_critical_bodies" "waist chest rupleg Lupleg ruparm Luparm" // At least one of these bodies must remain on the ground, or dragging upwards is not allowed "ground_min_number" "1" // Apply AF damping when dragging the ragdoll "drag_af_damping" "1" }