Files
Quake_4_Alpha/q4xbase/def/ai/monster_q4x_tank.def
T
2026-08-06 14:45:27 -07:00

577 lines
16 KiB
Modula-2

/*
===============================================================================
tank
===============================================================================
*/
export tank
{
options -game q4xbase/ -prefix TNK_ -align ALL -scale .6 -keep L_Ankle launcherarm3 head_1 tube4 tube3 tube2 tube1 launcher_door launcher_break laucher L_gunSpinJoint L_muzzle05 L_muzzle04 L_muzzle03 L_muzzle06 L_muzzle01 L_muzzle02 R_gunJoint L_toe L_hoof L_footflap_dummy L_footflap_2 L_footflap1 R_toe R_hoof R_footflap2 R_flootflap1 R_Ankle jaw mid_forhead forhead l_uplid l_lolid r_uplid r_lolid shoulders -parent Rteye_Focus head_1 -parent Lfteye_Focus head_1 -keep muzzle -parent waist hips -sourcedir models/monsters/tank/animations -destdir models/monsters/tank
mesh idle_alert.ma -dest tank
anim idle.ma -dest idle_ambient
anim idle_alert.ma -dest idle
anim af_pose.ma -dest af_pose
anim run.ma -dest run
anim walk.ma -dest walk
anim evade_left.ma -dest evade_left
anim evade_right.ma -dest evade_right
anim walk_left.ma -dest walk_left
anim walk_right.ma -dest walk_right
anim walk_left.ma -dest run_left
anim walk_right.ma -dest run_right
anim turn_left.ma -dest turn_left
anim turn_right.ma -dest turn_right
anim walk_backward.ma -dest walk_backward
anim ranged01.ma -dest machinegun_attack
anim ranged02.ma -dest railgun_attack
anim ranged03.ma -dest rocket_attack
anim melee01.ma -dest kick
anim melee02.ma -dest swipe
anim melee03.ma -dest chop
anim pain01.ma -dest pain_head
anim pain02.ma -dest pain_left
anim pain03.ma -dest pain_right
anim pain01.ma -range 1 10 -dest block_start
anim pain01.ma -range 10 11 -dest block_loop
anim pain01.ma -range 11 21 -dest block_end
anim pain_fire.ma -dest pain_fire
}
/*
===============================================================================
tank Model
===============================================================================
*/
model model_monster_tank
{
mesh models/monsters/tank/tank.md5mesh
channel torso ( *waist )
channel legs ( *hips origin -*waist)
anim af_pose models/monsters/tank/af_pose.md5anim
anim idle models/monsters/tank/idle.md5anim
{
//frame 18 sound snd_clamp
//frame 1,13 sound_voice snd_breathe
}
anim walk models/monsters/tank/walk.md5anim
{
sync_cycle
frame 1,13 footstep
frame 5,16 sound snd_servo
}
anim walk_backwards models/monsters/tank/walk_backward.md5anim
{
frame 1,13 footstep
frame 5,16 sound snd_servo
}
anim walk_right models/monsters/tank/walk_right.md5anim
{
sync_cycle
frame 1,13 footstep
frame 5,16 sound snd_servo
}
anim walk_left models/monsters/tank/walk_left.md5anim
{
sync_cycle
frame 1,13 footstep
frame 5,16 sound snd_servo
}
anim turn_right models/monsters/tank/turn_right.md5anim
{
sync_cycle
frame 1,13 footstep
frame 5,16 sound snd_servo
}
anim turn_left models/monsters/tank/turn_left.md5anim
{
sync_cycle
frame 1,13 footstep
frame 5,16 sound snd_servo
}
anim run models/monsters/tank/run.md5anim
{
sync_cycle
frame 1,13 footstep
frame 5,16 sound snd_servo
}
anim run_right models/monsters/tank/run_right.md5anim
{
sync_cycle
frame 1,13 footstep
frame 5,16 sound snd_servo
}
anim run_left models/monsters/tank/run_left.md5anim
{
sync_cycle
frame 1,13 footstep
frame 5,16 sound snd_servo
}
anim evade_right models/monsters/tank/evade_right.md5anim
{
sync_cycle
frame 11, 21 footstep
frame 5, 16 sound snd_servo
}
anim evade_left models/monsters/tank/evade_left.md5anim
{
sync_cycle
frame 11, 21 footstep
frame 5,16 sound snd_servo
}
anim run_backwards models/monsters/tank/walk_backward.md5anim
{
sync_cycle
frame 1,13 footstep
frame 5,16 sound snd_servo
}
anim railgun_attack models/monsters/tank/railgun_attack.md5anim
{
//frame 20 fx fx_railgun_charge R_gunJoint
frame 11, 58 footstep
frame 6, 53 sound snd_servo
//frame 39 ai_lockEnemyOrigin
frame 36, 38, 44, 47, 49, 52, 55 ai_attack railgun R_gunJoint
//frame 36 fx fx_railgun_flash R_gunJoint
}
anim rocket_attack models/monsters/tank/rocket_attack.md5anim
{
frame 28, 41, 55, 62 footstep
frame 23, 36, 49, 57 sound snd_servo
frame 51 sound snd_grenade_prepare
frame 20 ai_attack rocket tube1
frame 20 fx fx_rocket_flash gunBarrelReal
frame 20 sound snd_missile_launch
frame 55 sound snd_grenade_prepare
frame 27 ai_attack rocket tube1
frame 27 fx fx_rocket_flash gunBarrelReal
frame 27 sound_weapon snd_missile_launch
frame 59 sound snd_grenade_prepare
frame 35 ai_attack rocket tube1
frame 35 fx fx_rocket_flash gunBarrelReal
frame 35 sound_weapon snd_missile_launch
frame 63 sound snd_grenade_prepare
frame 41 ai_attack rocket tube1
frame 41 fx fx_rocket_flash gunBarrelReal
frame 41 sound_weapon snd_missile_launch
}
anim machinegun_attack models/monsters/tank/machinegun_attack.md5anim
{
frame 18 sound snd_tankpowerup
frame 13, 77 sound snd_servo
frame 18, 81 footstep
frame 49, 51, 53, 55 ai_attack blaster L_muzzle02
frame 49, 51, 53, 55 fx fx_machinegun_flash L_muzzle02
frame 43, 45, 47 ai_attack blaster L_muzzle03
frame 43, 45, 47 fx fx_machinegun_flash L_muzzle03
frame 52 ai_attack blaster L_muzzle04
frame 52 fx fx_machinegun_flash L_muzzle04
frame 48, 50, 54, 56 ai_attack blaster L_muzzle05
frame 48, 50, 54, 56 fx fx_machinegun_flash L_muzzle05
frame 42, 44, 46 ai_attack blaster L_muzzle06
frame 42, 44, 46 fx fx_machinegun_flash L_muzzle06
//old compound seq:frame 42, 44, 46, 48, 50, 54, 56, 43, 45, 47, 49, 51, 52, 53, 55 sound_weapon snd_tanknailgun_fire
frame 30 sound_weapon snd_tanknailgun_fire
}
anim melee_attack1 models/monsters/tank/kick.md5anim
{
frame 10 ai_attack_melee melee
frame 1 sound_voice snd_breathe
frame 16, 24 footstep
frame 1, 6, 17 sound snd_servo
}
anim melee_attack2 models/monsters/tank/swipe.md5anim
{
frame 15 ai_attack_melee melee
frame 1 sound_voice snd_breathe
frame 6, 12 sound snd_servo
}
anim melee_attack3 models/monsters/tank/chop.md5anim
{
frame 19 ai_attack_melee melee
frame 1 sound_voice snd_breathe
frame 1, 15 sound snd_servo
}
anim pain1 models/monsters/tank/pain_left.md5anim
{
frame 1 sound_voice snd_pain
frame 1 sound snd_servo
}
anim pain2 models/monsters/tank/pain_right.md5anim
{
frame 1 sound_voice snd_pain
}
anim pain_big models/monsters/tank/pain_head.md5anim
{
frame 1 sound_voice snd_pain
}
anim pain_fire models/monsters/tank/pain_fire.md5anim
{
frame 1 sound_voice snd_pain
}
// ------------------------------------ Scripted Anims --------------------
anim blaster_end models/monsters/tank/block_end.md5anim
{
}
}
/*===============================================================================
tank Attacks
===============================================================================
*/
entityDef damage_tank_rocket_direct
{
"damage" "100"
"knockback" "140"
"push" "140"
"mtr_splat" ""
"gib" "1"
"deathPush" "100"
"deathPushMin" "3000 2000"
"deathPushMax" "5000 3000"
}
entityDef damage_tank_rocket_splash
{
"damage" "20"
"radius" "500"
"knockback" "80"
"push" "80"
"gib" "1"
"deathPush" "100"
"deathPushMin" "3000 2000"
"deathPushMax" "5000 3000"
}
entityDef projectile_tank_rocket
{
"inherit" "projectile_rocket"
"spawnclass" "rvDriftingProjectile"
"driftOffset" "15"
"driftSpeed" "100"
"driftTime" ".35"
"speed" "850"
"def_damage" "damage_tank_rocket_direct"
"def_splash_damage" "damage_tank_rocket_splash"
"fx_fly" "effects/monsters/tank/rocket_fly.fx"
"snd_fly" "tank_missile_loop"
"fx_impact" "effects/monsters/tank/rocket_impact.fx"
}
entityDef hitscan_tank_bullet
{
"inherit" "hitscan_bullet_base"
"def_damage" "damage_tank_bullet"
"attack_spread_horizontal" "10"
"attack_spread_vertical" "7"
"fx_impact" "effects/monsters/tank/machinegun_burst.fx"
"fx_tracer" "effects/monsters/tank/machinegun_fly.fx"
"fx_fly" "effects/monsters/tank/machinegun_fly.fx"
"snd_fly" "weapon_energy_projectile_loop"
}
entityDef damage_tank_bullet
{
"inherit" "damage_bullet_base"
"push" "75"
"knockback" "10"
"damage" "10"
"gib" "1"
"deathPush" "100"
"deathPushMin" "3000 2000"
"deathPushMax" "5000 3000"
}
entityDef damage_tank_railgunSplash
{
"inherit" "damage_nailSplash"
"damage" "20"
"radius" "150"
}
entityDef damage_tank_railgun
{
"inherit" "damage_railgun_base"
"damage" "90"
"kickdir" "1 0 0"
"deathPush" "150"
"deathPushMin" "3000 2000"
"deathPushMax" "5000 3000"
}
entityDef hitscan_tank_railgun
{
"inherit" "hitscan_base"
"push" "40000"
"def_damage" "damage_tank_railgun"
"def_splash_damage" "damage_tank_railgunSplash"
"fx_impact" "effects/monsters/tank/railgun_burst.fx"
"fx_path" "effects/monsters/tank/railgun_trail.fx"
}
entityDef melee_tank
{
"inherit" "melee_monster_base"
"damage" "50"
"knockback" "250"
"push" "250"
"pushdir" "0 10 -10"
"deathPush" "150"
"deathPushMin" "3000 2000"
"deathPushMax" "5000 3000"
"snd_hit" "tank_punch"
"snd_miss" "tank_swing"
}
/*
===============================================================================
tank Entity Definition
===============================================================================
*/
entityDef monster_q4x_tank
{
"inherit" "actor_default"
// ------------------------------- Actions ------------------------------------
//"action_evadeRight" "1"
//"action_evadeLeft" "1"
"action_machinegunAttack" "1"
"action_machinegunAttack_anim" "machinegun_attack"
"action_machinegunAttack_minRange" "25"
"action_machinegunAttack_maxRange" "500"
"action_machinegunAttack_rate" "1.2"
"action_machinegunAttack_chance" "0.35"
"action_meleeAttack" "1"
"action_meleeAttack_maxRange" "100"
"action_meleeAttack_chance" "1"
"action_meleeAttack_rate" "0.1"
"action_meleeAttack_failrate" "0.1"
"action_railgunAttack" "1"
"action_railgunAttack_minRange" "150"
"action_railgunAttack_maxRange" "1500"
"action_railgunAttack_anim" "railgun_attack"
"action_railgunAttack_rate" "2"
//"action_railgunAttack_failrate" "0.1"
"action_railgunAttack_chance" "1"
"action_railgunAttack_nopain" "1"
"actionTimer_rangedAttack_rate" "1.2"
"actionTimer_specialAttack_rate" "2"
"action_rocketAttack" "1"
"action_rocketAttack_minRange" "150"
"action_rocketAttack_maxRange" "800"
"action_rocketAttack_rate" "6"
"action_rocketAttack_anim" "rocket_attack"
// --------------------------------- Body ------------------------------------
"spawnclass" "riMonsterTank"
"model" "model_monster_tank"
"ragdoll" "monster_tank"
"mass" "600"
"size" "48 48 48"
"use_aas" "aas48"
"joint_chestOffset" "chest"
"joint_eyeOffset" "rt_up_lid"
"canBePinned" "0"
//"gravityDir" "0 0 1"
"directionalMovement" "1"
//"af_push_moveables" "1"
"ragdoll_slomoStart" "-5"
"ragdoll_slomoEnd" "5"
"missile_visibility_joint" "head"
// --------------------------------- Combat ----------------------------------
"health" "1700"
"bleed" "0"
"launcherHealth" "200"
"chestHealth" "200"
"painThreshold" "100"
"painThresholdBig" "500"
"melee_range" "80"
"fov" "120"
"tactical_rush" "1"
"tactical_hide" "1"
"tactical_ranged" "1"
"tactical_cover" "0"
"awareRange" "800"
//"ignore_obstacles" "1"
"def_attack_rocket" "projectile_tank_rocket"
"attack_rocket_accuracy" ".5"
"attack_rocket_predict" "1"
"def_attack_melee" "melee_tank"
"def_attack_blaster" "hitscan_tank_bullet"
"attack_blaster_hitscan" "1"
"attack_blaster_accuracy" "1"
"def_attack_railgun" "projectile_hyperblaster"
//"attack_railgun_hitscan" "1"
//"attack_railgun_accuracy" "1"
//"attack_railgun_missFirstShot" "0"
"attack_railgun_predict" "1"
// --------------------------------- Damage Zones -----------------------------
"damage_zone head" "*head_1 R_Atrium L_Atrium R_Ventricle L_Ventricle"
"damage_zone legs" "*hips origin -*head_1 -R_Atrium -L_Atrium -R_Ventricle -L_Ventricle"
"damage_zone left_arm" "*L_clavicle"
//"damage_zone right_arm" "*R_arm"
"damage_zone launcher" "*laucher"
"damage_zone chest" "*chestbreak"
//"damage_zone heart" "R_Atrium L_Atrium R_Ventricle L_Ventricle"
"damage_scale head" "6"
"damage_scale legs" "0.05"
//"damage_scale left_arm" "0.05"
//"damage_scale right_arm" "0.05"
"damage_scale launcher" "0.05"
"damage_scale chest" "0.05"
//"damage_scale heart" "15"
// --------------------------------- Look Joints -----------------------------
"look_joint waist" "0 0.75 0"
"look_joint head_1" "0.2 0.2 0"
"look_joint L_gunFore" "0.4 0.4 0"
"look_joint R_gunFore" "0.4 0.4 0"
"look_chest" "0.75 0.75 0.75"
// --------------------------------- Effects ---------------------------------
"fx_machinegun_flash" "effects/monsters/tank/machinegun_flash.fx"
"fx_railgun_flash" "effects/monsters/tank/railgun_mflash.fx"
"fx_railgun_charge" "effects/monsters/tank/railgun_charge.fx"
"fx_footstomp" "effects/monsters/tank/footstomp.fx"
"fx_railglow" "effects/monsters/tank/railglow.fx"
"fx_gunglow" "effects/monsters/tank/gunglow.fx"
"fx_swipe" "effects/monsters/grunt/swipe_attack.fx" // FX_REPLACE
"fx_railgun_explode" "effects/monsters/light_tank/destroy_arm.fx"
"fx_railgun_burn" "effects/monsters/tank/destroy_part_trail.fx"
"fx_chest_explode" "effects/monsters/tank/destroy_chest.fx"
"fx_launcher_explode" "effects/monsters/tank/destroy_launcher.fx"
"snd_burn_lightning" "effects_sparks02"
"fx_burn_lightning" "effects/monsters/lightning_death.fx"
"fx_burn_particles" "effects/monsters/teleport3.fx"
"fx_burn_particles_chest" "effects/monsters/teleport4.fx"
//"fx_chestbreak" "INSERT FX HERE"
//"fx_launcherbreak" "INSERT FX HERE"
//"fx_launchersmoke" "INSERT FX HERE"
// --------------------------------- Sounds ----------------------------------
"lipsync_sight" "tank_alert"
"snd_footstep" "tank_footsteps"
"snd_footstep_sand" "tank_footsteps_dirt"
"snd_footstep_dirt" "tank_footsteps_dirt"
"snd_footstep_hollowmetal" "tank_footsteps_hollow_metal"
"snd_footstep_rock" "tank_footsteps"
"snd_bounce" "generic_creature_fall_metal"
"snd_swipe" "tank_swing"
"snd_swing" "tank_swing"
"snd_land" "tank_jump_land"
"snd_start" "tank_jump_start"
"snd_death" "tank_die"
"snd_servo" "tank_servo"
"snd_breathe" "tank_breathe"
"snd_clamp" "tank_clamp"
"snd_rip" "tank_rip"
"snd_pain" "tank_pain"
"snd_fence_tear" "grunt_fence_land"
"snd_fence_touch" "grunt_fence_climb"
"snd_fence_break" "grunt_fence_break"
"snd_flesh" "bullet_impact_flesh"
"snd_missile_launch" "tank_missile_launch"
"snd_tanknailgun_fire" "tank_nailgun_fireseq"
"snd_tankpowerup" "tank_powerup"
}