diff --git a/base/def/char_sentry.def b/base/def/char_sentry.def new file mode 100644 index 00000000..ef0c6ddd --- /dev/null +++ b/base/def/char_sentry.def @@ -0,0 +1,553 @@ +/*********************************************************************** + +char_sentry + +***********************************************************************/ + +model char_sentry { + mesh models/md5/monsters/sentry/sentry.md5mesh + skin skins/models/monsters/sentrynobeam.skin + + channel torso ( *Loneck ) + channel legs ( *Hips origin -*Loneck ) + + anim af_pose models/md5/monsters/sentry/initial.md5anim + anim ik_pose models/md5/monsters/sentry/initial.md5anim + anim initial models/md5/monsters/sentry/initial.md5anim + anim stand models/md5/monsters/sentry/idle_stand1.md5anim + anim turn_left models/md5/monsters/sentry/turn_left.md5anim { + frame 8 sound_body snd_step + frame 10 sound_body2 snd_step + } + + anim talk_excuseme models/md5/monsters/sentry/talk_primary.md5anim { + frame 1 sound_voice snd_talk_excuseme + frame 9 sound_body snd_step + frame 16 sound_body snd_step + frame 17 sound_body2 snd_step + frame 23 sound_body snd_step + frame 63 sound_body snd_step + frame 65 sound_body2 snd_step + frame 78 sound_body snd_step + frame 82 sound_body snd_step + } + + anim turn_right models/md5/monsters/sentry/turn_right.md5anim { + frame 8 sound_body snd_step + frame 9 sound_body2 snd_step + } + + anim unlock_door models/md5/monsters/sentry/talk_primary.md5anim { + frame 9 sound_body snd_step + frame 16 sound_body snd_step + frame 17 sound_body2 snd_step + frame 23 sound_body snd_step + frame 63 sound_body snd_step + frame 65 sound_body2 snd_step + frame 78 sound_body snd_step + frame 82 sound_body snd_step + } + + anim fold models/md5/monsters/sentry/fold.md5anim { + frame 1 disableWalkIK + } + anim folded models/md5/monsters/sentry/folded.md5anim { + ai_no_turn + frame 1 disableWalkIK + } + + anim unfold models/md5/monsters/sentry/unfold.md5anim { + frame 1 sound_voice snd_active + frame 1 disableWalkIK + frame 13 sound_body snd_step + frame 14 sound_body2 snd_step + frame 26 sound_body snd_step + frame 27 sound_body2 snd_step + frame 39 sound_body snd_step + frame 46 sound_body snd_step + frame 57 sound_body snd_step + frame 64 sound_body snd_step + frame 70 enableWalkIK + } + + anim walk models/md5/monsters/sentry/walk1.md5anim { + frame 1 sound_body snd_step + frame 3 sound_body2 snd_step + frame 6 sound_body3 snd_step + frame 9 sound_body snd_step + } + + anim range_attack models/md5/monsters/sentry/range_attackstart.md5anim { + frame 4 sound_body snd_step + frame 10 sound_body2 snd_step + frame 15 sound_body3 snd_step + } + + anim range_attack_loop models/md5/monsters/sentry/range_attack1.md5anim { + frame 1 launch_missile barrel + } + anim range_attack_aim models/md5/monsters/sentry/idle_stand1.md5anim + anim range_attack_end models/md5/monsters/sentry/range_attackend.md5anim + + anim run models/md5/monsters/sentry/walk1.md5anim { + frame 1 sound_body snd_step + frame 3 sound_body2 snd_step + frame 6 sound_body3 snd_step + frame 9 sound_body snd_step + } + + anim pain models/md5/monsters/sentry/walk1_pain.md5anim { + frame 4 sound_body snd_step + frame 8 sound_body2 snd_step + frame 12 sound_body3 snd_step + frame 16 sound_body snd_step + } + + anim sight models/md5/monsters/sentry/unfold.md5anim { + frame 1 disableWalkIK + frame 13 sound_body snd_step + frame 14 sound_body2 snd_step + frame 26 sound_body snd_step + frame 27 sound_body2 snd_step + frame 39 sound_body snd_step + frame 46 sound_body snd_step + frame 57 sound_body snd_step + frame 64 sound_body snd_step + frame 79 enableWalkIK + } +} + +entityDef char_sentry { + "editor_var unfolded" "If set, sentry starts out in standing position, otherwise, he starts out in a folded position." + "editor_var lead_player" "If set, sentry leads the player along its path." + + "inherit" "character_default" + "scriptobject" "ai" + "nativeobject" "rvmCharSentry" + "model" "char_sentry" + "ragdoll" "char_sentry" + "talks" "0" + "fov" "120" + "size" "48 48 48" + "use_aas" "aas48" + "team" "0" + "rank" "0" + "health" "300" + "anim" "folded" + "on_activate" "unfold" + "bleed" "0" + "def_projectile" "projectile_sentry_bullet" + "attack_cone" "10" + "attack_accuracy" "1" + "turn_rate" "360" + "bone_focus" "Head" + "head_look" "1" + "smoke_wound_metal" "bulletricochet.prt" + "blockedRadius" "20" + + "look_min" "-90 -125 0" + "look_max" "25 125 0" + "look_joint Loneck" "0.4 0.4 0" + "look_joint Head" "0.6 0.6 0" + + "ik_numLegs" "4" + "ik_footSize" "0" + "ik_minWaistFloorDist" "20" + "ik_waist" "Hips" + "ik_hip1" "L1_upleg" + "ik_hip2" "R1_upleg" + "ik_hip3" "L2_upleg" + "ik_hip4" "R2_upleg" + "ik_knee1" "L1_midleg" + "ik_knee2" "R1_midleg" + "ik_knee3" "L2_midleg" + "ik_knee4" "R2_midleg" + "ik_ankle1" "L1_loleg" + "ik_ankle2" "R1_loleg" + "ik_ankle3" "L2_loleg" + "ik_ankle4" "R2_loleg" + "ik_dir1" "Lelbow" + "ik_dir2" "Relbow" + "ik_dir3" "Lknee" + "ik_dir4" "Rknee" + "ik_foot1" "L1toe" + "ik_foot2" "R1toe" + "ik_foot3" "L2toe" + "ik_foot4" "R2toe" + + "damage_zone head" "*Loneck" + "damage_zone chest" "*Hips -*R1_upleg -*L1_upleg -*R2_upleg -*L2_upleg -*Loneck" + "damage_zone left_arm" "*L1_upleg" + "damage_zone right_arm" "*R1_upleg" + "damage_zone legs" "*L2_upleg *R2_upleg" + + "mtr_flashShader" "muzzleflash" + "flashTime" "0.15" + "flashColor" "1 0.8 0.4" + "flashRadius" "120" + + "snd_fire" "char_sentry_fire" + "snd_active" "char_sentry_active" + "snd_cant_reach_player" "char_sentry_cant_reach_player" + "snd_death" "char_sentry_destroyed" + "snd_sight_enemy" "char_sentry_sight_enemy" + "snd_sight_friendly" "char_sentry_sight_friendly" + "snd_open_door" "char_sentry_open_door" + "snd_pain" "char_sentry_pain" + "snd_shutdown" "char_sentry_shutdown" + "snd_target_lost" "char_sentry_target_lost" + "snd_waiting_for_player" "char_sentry_waiting_for_player" + "snd_step" "char_sentry_step" + "snd_gear" "char_sentry_gears" + "snd_talk_excuseme" "char_sentry_waiting_for_player" +} + +model char_sentry_flashlight { + inherit char_sentry + anim walk models/md5/monsters/sentry/walk1_beam.md5anim { + + frame 1 sound_body snd_step + frame 3 sound_body2 snd_step + frame 6 sound_body3 snd_step + frame 9 sound_body snd_step + } + +} + +entityDef char_sentry_flashlight { + "inherit" "char_sentry" + "editor_var flashlight_on" "Turns flashlight on when sentry activates" + + "flashlight" "2" + "flashlight_distance" "640" + "mtr_flashlight" "lights/sentrylight" + "skin_flashlight_off" "skins/models/monsters/sentrynobeam.skin" + "skin_flashlight_on" "skins/models/monsters/sentrybeam.skin" + "model" "char_sentry_flashlight" +} + +entityDef projectile_sentry_bullet { + "spawnclass" "idProjectile" + "mins" "-1 -1 -1" + "maxs" "1 1 1" + "cone" "2" + "scale" "0.1" + "noshadows" "1" + "tracers" "1" + "model_tracer" "models/particles/tracer/tracer.lwo" + + "snd_ricochet" "bullet_ricochet" + "snd_impact" "" // we need a much smaller impact sound for the chaingun bullet "bullet_impact_metal" + + "decal_scale" "8" + + "def_damage" "damage_sentry_bullet" + + "launchFromBarrel" "1" + "health" "0" + // slowed down for tracers + "velocity" "2000 0 0" // .38 Special 600 fps. Source: Petzal, David E. "How fast is a speeding bullet." Field and Stream. 97 (1992): 23 + "angular_velocity" "0 0 0" + "thrust" "0" + "thrust_start" "0" + "thrust_end" "0" + "linear_friction" "0" + "angular_friction" "0" + "contact_friction" "0" + "bounce" "0.6" + "mass" "2" + "gravity" "0" + "fuse" "4" + + "detonate_on_fuse" "0" + "detonate_on_death" "0" + "detonate_on_world" "1" + "detonate_on_actor" "1" + + "impact_damage_effect" "1" + "impact_gib" "1" + + "mtr_detonate" "textures/decals/bulleth02" + "decal_size" "10" + + "smoke_detonate" "smokeandspark.smoke" + "smoke_residue" "" //particles/chaingun_residue.particle" + "smoke_bounce" "" //particles/chaingun_bounce.particle" + "smoke_fuse" "" + + "mtr_light_shader" "" + "light_color" "0 0 0" + "light_radius" "0" + "light_offset" "0 0 0" + + "mtr_explode_light_shader" "" + "explode_light_color" "0 0 0" + "explode_light_radius" "0" + "explode_light_fadetime" "0" +} + +entityDef damage_sentry_bullet { + "damage" "5" + "kickDir" "1 0 0" + + "mtr_blob" "genericDamage" + "blob_time" "300" + "blob_size" "400" + "blob_offset_x" "400" + + "knockback" "1" + + "smoke_wound_flesh" "bloodwound.smoke" + + "kick_time" "10" + "kick_amplitude" "0" + + "dv_time" "100" +} + +sound char_sentry_fire { + minDistance 3 + maxDistance 30 + volume 0 + + sound/xian/sentry/gun/fire_01.wav + sound/xian/sentry/gun/fire_02.wav + sound/xian/sentry/gun/fire_03.wav + sound/xian/sentry/gun/fire_04.wav + sound/xian/sentry/gun/fire_05.wav + +} + +sound char_sentry_active { + minDistance 1 + maxDistance 15 + volume -2 + sound/xian/sentry/vocals/activate_01.wav +} + +sound char_sentry_cant_reach_player { + minDistance 1 + maxDistance 15 + volume -2 + sound/xian/sentry/vocals/cant_reach_player_01.wav + sound/xian/sentry/vocals/cant_reach_player_02.wav +} + +sound char_sentry_damaged { + minDistance 1 + maxDistance 15 + volume -2 + sound/xian/sentry/vocals/damaged_01.wav +} + +sound char_sentry_destroyed { + minDistance 1 + maxDistance 15 + volume -2 + sound/xian/sentry/vocals/destroyed_01.wav +} + +sound char_sentry_destroyed_damaged { + minDistance 1 + maxDistance 15 + volume -2 + sound/xian/sentry/vocals/damaged_destroyed_01.wav +} + +sound char_sentry_sight_enemy { + minDistance 1 + maxDistance 15 + volume -2 + sound/xian/sentry/vocals/sight_enemy_01.wav + sound/xian/sentry/vocals/sight_enemy_02.wav +} + +sound char_sentry_sight_friendly { + minDistance 1 + maxDistance 15 + volume -2 + sound/xian/sentry/vocals/sight_friendly_01.wav +} + +sound char_sentry_open_door { + minDistance 1 + maxDistance 15 + volume -2 + sound/xian/sentry/vocals/open_door_01.wav +} + +sound char_sentry_pain { + minDistance 2 + maxDistance 25 + volume -2 + no_dups + + sound/xian/sentry/vocals/pain_01.wav + sound/xian/sentry/vocals/pain_02.wav + sound/xian/sentry/vocals/pain_03.wav + sound/xian/sentry/vocals/pain_04.wav +} + +sound char_sentry_shutdown { + minDistance 1 + maxDistance 15 + volume -2 + sound/xian/sentry/vocals/shutdown_01.wav +} + +sound char_sentry_target_lost { + minDistance 1 + maxDistance 15 + volume -2 + + sound/xian/sentry/vocals/lost_target_01.wav +} + +sound char_sentry_waiting_for_player { + minDistance 1 + maxDistance 15 + volume -2 + no_dups + + sound/xian/sentry/vocals/wait_for_player_01.wav + sound/xian/sentry/vocals/wait_for_player_02.wav + sound/xian/sentry/vocals/wait_for_player_03.wav +} + +sound char_sentry_step { + minDistance 1 + maxDistance 16 + volume -8 + + sound/xian/sentry/steps/sstep_01.wav + sound/xian/sentry/steps/sstep_02.wav + sound/xian/sentry/steps/sstep_03.wav + sound/xian/sentry/steps/sstep_04.wav + sound/xian/sentry/steps/sstep_05.wav + sound/xian/sentry/steps/sstep_06.wav + sound/xian/sentry/steps/sstep_07.wav +} + +sound char_sentry_gears { + minDistance 3 + maxDistance 16 + volume -3 + + sound/xian/sentry/gears/walk_01.wav + sound/xian/sentry/gears/walk_02.wav + sound/xian/sentry/gears/walk_03.wav + sound/xian/sentry/gears/walk_04.wav + sound/xian/sentry/gears/walk_05.wav + sound/xian/sentry/gears/walk_06.wav + sound/xian/sentry/gears/walk_07.wav + sound/xian/sentry/gears/walk_08.wav + sound/xian/sentry/gears/walk_09.wav + sound/xian/sentry/gears/walk_10.wav + sound/xian/sentry/gears/walk_11.wav + sound/xian/sentry/gears/walk_12.wav + sound/xian/sentry/gears/walk_13.wav +} + +sound char_sentry_wakeup { + minDistance 3 + maxDistance 16 + volume -3 + + sound/xian/sentry/wakeup_01.wav +} + +sound char_sentry_extend { + minDistance 3 + maxDistance 16 + volume -3 + + sound/xian/sentry/extend_01.wav +} + +sound char_sentry_activation { + minDistance 3 + maxDistance 16 + volume -3 + + sound/xian/sentry/activate_01.wav +} + +entityDef path_sentry_light_on { + "editor_color" ".5 .3 0" + "editor_mins" "-8 -8 -8" + "editor_maxs" "8 8 8" + + "editor_usage" "Tells sentry to turn on his flashlight." + "editor_var target" "next path entity." + "editor_var trigger" "entity to trigger when turn finishes." + + "spawnclass" "idPathCorner" +} + +entityDef path_sentry_light_off { + "editor_color" ".5 .3 0" + "editor_mins" "-8 -8 -8" + "editor_maxs" "8 8 8" + + "editor_usage" "Tells sentry to turn on his flashlight." + "editor_var target" "next path entity." + "editor_var trigger" "entity to trigger when turn finishes." + + "spawnclass" "idPathCorner" +} + +entityDef path_sentry_shutdown { + "editor_color" ".5 .3 0" + "editor_mins" "-8 -8 -8" + "editor_maxs" "8 8 8" + "editor_showangle" "1" + "editor_rotatable" "1" + + "editor_usage" "Tells sentry to shutdown until triggered again." + "editor_var target" "next path entity." + "editor_var trigger" "entity to trigger when turn finishes." + + "spawnclass" "idPathCorner" +} + +entityDef path_sentry_unlock_door { + "editor_color" ".5 .3 0" + "editor_mins" "-8 -8 -8" + "editor_maxs" "8 8 8" + "editor_showangle" "1" + "editor_rotatable" "1" + + "editor_usage" "Sentry walks to this location and plays the unlock door animation. Set 'trigger' to name of target_lock entity that unlocks the door." + "editor_var target" "next path entity." + "editor_var trigger" "entity to trigger when turn finishes." + + "spawnclass" "idPathCorner" +} + +entityDef path_sentry_lead_player { + "editor_color" ".5 .3 0" + "editor_mins" "-8 -8 -8" + "editor_maxs" "8 8 8" + "editor_showangle" "1" + "editor_rotatable" "1" + + "editor_usage" "Tells sentry to start leading the player to his destination. Imediately goes to next path entity." + "editor_var target" "next path entity." + "editor_var trigger" "entity to trigger when turn finishes." + + "spawnclass" "idPathCorner" +} + +entityDef path_sentry_ignore_player { + "editor_color" ".5 .3 0" + "editor_mins" "-8 -8 -8" + "editor_maxs" "8 8 8" + "editor_showangle" "1" + "editor_rotatable" "1" + + "editor_usage" "Tells sentry to stop leading the player to his destination. Imediately goes to next path entity." + "editor_var target" "next path entity." + "editor_var trigger" "entity to trigger when turn finishes." + + "spawnclass" "idPathCorner" +} diff --git a/base/def/characters.def b/base/def/characters.def new file mode 100644 index 00000000..42eb19c6 --- /dev/null +++ b/base/def/characters.def @@ -0,0 +1 @@ +// NO LONGER NEEDED..... AS EVERYTHING NEEDED IS IN NPCS.DEF \ No newline at end of file diff --git a/base/def/characters_eric.def b/base/def/characters_eric.def new file mode 100644 index 00000000..fc63e6cb --- /dev/null +++ b/base/def/characters_eric.def @@ -0,0 +1,208 @@ +export eric { + options -prefix SUIT_ -keep Lknee Rknee Body Body2 Lhand1 Rhand headcontrol neckcontrol loneckcontrol lanternlight SPINNER -parent headcontrol neckcontrol -parent neckcontrol loneckcontrol -parent loneckcontrol Shoulders -parent tabletpc Lhand1 -parent flashlight Rhand1 -parent pda Rhand1 -parent lantern Rhand1 -parent lanternlight lantern -parent rshldrpad Shoulders -parent lshldrpad Shoulders -parent shield Lloarm -parent pistol Rhand1 -parent shotgun Rhand1 -parent machinegun Rhand1 -parent wrench Rhand1 -parent cola Rhand1 -parent foamcup Rhand1 -parent dufflebag Rhand1 -parent Body2 Body -parent Hips Body2 -parent SPINNER Body2 -parent Waist SPINNER + + addoptions -keepmesh labcoatnametagmesh + addoptions -keepmesh jumpsuitnametagmesh + addoptions -keepmesh labcoatmesh + addoptions -keepmesh soldiermesh + addoptions -keepmesh jumpsuitmesh + addoptions -keepmesh suitmesh + addoptions -keepmesh skeletonmesh + addoptions -keepmesh securitybodymesh + addoptions -keepmesh sec_rshldrmesh + addoptions -keepmesh sec_lshldrmesh + addoptions -keepmesh marinebodymesh + addoptions -keepmesh tabletpcmesh + addoptions -keepmesh tabletpcguimesh + addoptions -keepmesh pdaguimodel + addoptions -keepmesh pdamodel + addoptions -keepmesh cola1_layer1 + addoptions -keepmesh foamcup_layer1 + addoptions -keepmesh secsheild_outerglass + addoptions -keepmesh secsheild_innerglass + addoptions -keepmesh secsheild_innermesh + addoptions -keepmesh secsheild_outermesh + addoptions -keepmesh w_shotgunmesh + addoptions -keepmesh w_shotgunloadermesh + addoptions -keepmesh w_machinegunmesh + addoptions -keepmesh w_pistolmesh + addoptions -keepmesh flashlightflaremodel + addoptions -keepmesh flashlightbeammodel + addoptions -keepmesh flashlightlensmodel + addoptions -keepmesh monkeywrench + addoptions -keepmesh flashlightmodel + addoptions -keepmesh metalloungechairframemesh + addoptions -keepmesh metalloungechairmesh + addoptions -keepmesh metalkitchenchairmesh + addoptions -keepmesh bigcushychairmesh + addoptions -keepmesh softdeskchairmesh2 + addoptions -keepmesh softdeskchairmesh1 + addoptions -keepmesh metaldeskchairmesh + addoptions -keepmesh dufflebagmesh + + + //anim maps/fred/monorail/rider_eric.mb -range 1 1 -dest models/md5/cinematics/monorail/rider_hidden + //anim maps/fred/monorail/rider_eric.mb -range 50 150 -dest models/md5/cinematics/monorail/rider_stand + //anim maps/fred/monorail/rider_eric.mb -range 151 680 -dest models/md5/cinematics/monorail/rider_trigger + //anim maps/fred/monorail/rider_eric.mb -range 680 780 -dest models/md5/cinematics/monorail/rider_sit + //anim maps/fred/monorail/rider_eric.mb -range 780 890 -dest models/md5/cinematics/monorail/rider_primary + //anim maps/fred/monorail/rider_eric.mb -range 890 995 -dest models/md5/cinematics/monorail/rider_secondary1 + //anim maps/fred/monorail/rider_eric.mb -range 995 1100 -dest models/md5/cinematics/monorail/rider_secondary2 + //anim maps/fred/monorail/rider_eric_suprise.mb -range 1 60 -dest models/md5/cinematics/monorail/rider_surprise + //anim maps/fred/monorail/rider_eric_notrig.mb -range 150 256 -dest models/md5/cinematics/monorail/rider_notrig + //anim maps/fred/monorail/rider_before_trigger.mb -dest models/md5/cinematics/monorail/before_trigger + + //PLAYER_ Prefix + + + //SUIT2_ Prefix + //anim maps/fred/marscity/sargecin_eric.mb -range 1 1 -dest models/md5/cinematics/marscity/sargecin_sarge_loop -prefix SUIT2_ + //anim maps/fred/marscity/sargecin_eric.mb -range 556 810 -dest models/md5/cinematics/marscity/sargecin_sarge2 -prefix SUIT2_ + + //SOL_ Prefix + ////anim maps/fred/marscity/sargecin_eric.mb -range 221 380 -dest models/md5/cinematics/marscity/sargecin_player2 -prefix SOL_ + //anim maps/fred/marscity/sargecin_eric.mb -range 381 555 -dest models/md5/cinematics/marscity/sargecin_player3 -prefix SOL_ + //anim maps/fred/marscity/sargecin_eric.mb -range 556 700 -dest models/md5/cinematics/marscity/sargecin_player4 -prefix SOL_ + //anim maps/fred/marscity/sargecin_eric.mb -range 701 814 -dest models/md5/cinematics/marscity/sargecin_player5 -prefix SOL_ + //anim maps/fred/marscity/sargecin_eric.mb -range 815 920 -dest models/md5/cinematics/marscity/sargecin_player6 -prefix SOL_ + //anim maps/fred/marscity/sargecin_eric.mb -range 921 960 -dest models/md5/cinematics/marscity/sargecin_player7 -prefix SOL_ + + + // SARGE prefix + //anim maps/fred/marscity/sargecin_eric.mb -range 120 555 -dest models/md5/cinematics/marscity/sargecin_sarge1 -prefix SARGE_ + //anim maps/fred/marscity/sargecin_eric.mb -range 811 960 -dest models/md5/cinematics/marscity/sargecin_sarge3 -prefix SARGE_ + + // MP prefix + //anim maps/fred/marscity/sargecin_eric.mb -range 120 220 -dest sargecin_player1 -sourcedir maps/fred/marscity/ -destdir models/md5/cinematics/marscity/ -prefix MP_ + + + addoptions -align ALL + + //anim models/characters/male_npc/cycles/runs/al2_run_anim_30.mb -rotate 90 -range 79 98 -dest models/md5/characters/npcs/mgrun + //anim models/characters/male_npc/cycles/runs/al2_run_anim_30.mb -rotate 90 -range 99 207 -dest models/md5/characters/npcs/mgrunstoplookback + + anim models/characters/male_npc/cycles/wounded/eric_hurt_loop.mb -range 0 29 -dest models/md5/characters/npcs/npc_stagger + anim models/characters/male_npc/cycles/wounded/eric_hurt_loop_2.mb -range 0 60 -dest models/md5/characters/npcs/npc_stagger_loop + + //anim maps/eric/admin/typing.mb -range 1 60 -rotate 180 -dest models/md5/cinematics/admin/typingswann_loop -prefix SWANN_ + //anim maps/eric/admin/typing.mb -range 1 317 -rotate 180 -dest models/md5/cinematics/admin/typingswann -prefix SWANN_ +} + +/*********** +export zombie security pistol +***********/ + +export eric { + + options -prefix SUIT_ -keep Lknee Rknee eject barrel flash Body Body2 headcontrol neckcontrol loneckcontrol SPINNER Lhand1 Rhand1 Rhand -parent headcontrol neckcontrol -parent neckcontrol loneckcontrol -parent loneckcontrol Shoulders -parent rshldrpad Shoulders -parent lshldrpad Shoulders -parent shield Lloarm -parent pistol Rhand1 -parent Body2 Body -parent Hips Body2 -parent SPINNER Body2 -parent Waist SPINNER -rename peject eject -rename pbarrel barrel -rename pflash flash -parent eject pistol -parent flash pistol -parent barrel pistol + + addoptions -keepmesh securitybodymesh + addoptions -keepmesh sec_rshldrmesh + addoptions -keepmesh sec_lshldrmesh + addoptions -keepmesh w_pistolmesh + addoptions -keepmesh pflash1 + addoptions -keepmesh pflash2 + addoptions -keepmesh secsheild_outerglass + addoptions -keepmesh secsheild_innerglass + addoptions -keepmesh secsheild_innermesh + addoptions -keepmesh secsheild_outermesh + addoptions -keepmesh skeletonmesh + + addoptions -align ALL + + anim models/characters/male_npc/cycles/idles/af_pose.mb -dest models/md5/monsters/zombies/zsec_pistol/af_pose + anim models/characters/male_npc/cycles/fsecattacks/wall_step_right_pistol.mb -rotate 90 -range 28 28 -dest models/md5/monsters/zombies/zsec_pistol/wallsteprightpistol_A + anim models/characters/male_npc/cycles/fsecattacks/wall_step_right_pistol.mb -rotate 90 -range 31 49 -dest models/md5/monsters/zombies/zsec_pistol/wallsteprightpistol_B + anim models/characters/male_npc/cycles/fsecattacks/wall_step_right_pistol.mb -rotate 90 -range 50 59 -dest models/md5/monsters/zombies/zsec_pistol/wallsteprightpistol_C + anim models/characters/male_npc/cycles/fsecattacks/wall_step_right_pistol.mb -rotate 90 -range 68 84 -dest models/md5/monsters/zombies/zsec_pistol/wallsteprightpistol_D + + anim models/characters/male_npc/cycles/fsecattacks/wall_rotate_left_pistol_2.mb -rotate 90 -range 40 40 -dest models/md5/monsters/zombies/zsec_pistol/wallrotleftpistol2_A + anim models/characters/male_npc/cycles/fsecattacks/wall_rotate_left_pistol_2.mb -rotate 90 -range 46 64 -dest models/md5/monsters/zombies/zsec_pistol/wallrotleftpistol2_B + anim models/characters/male_npc/cycles/fsecattacks/wall_rotate_left_pistol_2.mb -rotate 90 -range 75 84 -dest models/md5/monsters/zombies/zsec_pistol/wallrotleftpistol2_C + anim models/characters/male_npc/cycles/fsecattacks/wall_rotate_left_pistol_2.mb -rotate 90 -range 91 107 -dest models/md5/monsters/zombies/zsec_pistol/wallrotleftpistol2_D + + anim models/characters/male_npc/cycles/fsecattacks/wall_step_left_pistol.mb -rotate 90 -range 1 1 -dest models/md5/monsters/zombies/zsec_pistol/wallstepleftpistol_A + anim models/characters/male_npc/cycles/fsecattacks/wall_step_left_pistol.mb -rotate 90 -range 2 20 -dest models/md5/monsters/zombies/zsec_pistol/wallstepleftpistol_B + anim models/characters/male_npc/cycles/fsecattacks/wall_step_left_pistol.mb -rotate 90 -range 21 29 -dest models/md5/monsters/zombies/zsec_pistol/wallstepleftpistol_C + anim models/characters/male_npc/cycles/fsecattacks/wall_step_left_pistol.mb -rotate 90 -range 36 55 -dest models/md5/monsters/zombies/zsec_pistol/wallstepleftpistol_D + + anim models/characters/male_npc/cycles/fsecattacks/wall_rotate_left_pistol.mb -rotate 90 -range 39 39 -dest models/md5/monsters/zombies/zsec_pistol/wallrotleftpistol_A + anim models/characters/male_npc/cycles/fsecattacks/wall_rotate_left_pistol.mb -rotate 90 -range 43 65 -dest models/md5/monsters/zombies/zsec_pistol/wallrotleftpistol_B + anim models/characters/male_npc/cycles/fsecattacks/wall_rotate_left_pistol.mb -rotate 90 -range 66 74 -dest models/md5/monsters/zombies/zsec_pistol/wallrotleftpistol_C + anim models/characters/male_npc/cycles/fsecattacks/wall_rotate_left_pistol.mb -rotate 90 -range 81 98 -dest models/md5/monsters/zombies/zsec_pistol/wallrotleftpistol_D + + anim models/characters/male_npc/cycles/fsecattacks/wall_rotate_right_pistol_2.mb -rotate 90 -range 43 43 -dest models/md5/monsters/zombies/zsec_pistol/wallrotrightpistol2_A + anim models/characters/male_npc/cycles/fsecattacks/wall_rotate_right_pistol_2.mb -rotate 90 -range 49 66 -dest models/md5/monsters/zombies/zsec_pistol/wallrotrightpistol2_B + anim models/characters/male_npc/cycles/fsecattacks/wall_rotate_right_pistol_2.mb -rotate 90 -range 76 85 -dest models/md5/monsters/zombies/zsec_pistol/wallrotrightpistol2_C + anim models/characters/male_npc/cycles/fsecattacks/wall_rotate_right_pistol_2.mb -rotate 90 -range 100 118 -dest models/md5/monsters/zombies/zsec_pistol/wallrotrightpistol2_D + + anim models/characters/male_npc/cycles/fsecattacks/wall_rotate_right_pistol.mb -rotate 90 -range 36 36 -dest models/md5/monsters/zombies/zsec_pistol/wallrotrightpistol_A + anim models/characters/male_npc/cycles/fsecattacks/wall_rotate_right_pistol.mb -rotate 90 -range 50 69 -dest models/md5/monsters/zombies/zsec_pistol/wallrotrightpistol_B + anim models/characters/male_npc/cycles/fsecattacks/wall_rotate_right_pistol.mb -rotate 90 -range 75 84 -dest models/md5/monsters/zombies/zsec_pistol/wallrotrightpistol_C + anim models/characters/male_npc/cycles/fsecattacks/wall_rotate_right_pistol.mb -rotate 90 -range 107 129 -dest models/md5/monsters/zombies/zsec_pistol/wallrotrightpistol_D + + anim models/characters/male_npc/cycles/fsecattacks/crate_pistol_rotate_right.mb -rotate 90 -range 35 35 -dest models/md5/monsters/zombies/zsec_pistol/craterotrightpistol_A + anim models/characters/male_npc/cycles/fsecattacks/crate_pistol_rotate_right.mb -rotate 90 -range 36 62 -dest models/md5/monsters/zombies/zsec_pistol/craterotrightpistol_B + anim models/characters/male_npc/cycles/fsecattacks/crate_pistol_rotate_right.mb -rotate 90 -range 64 73 -dest models/md5/monsters/zombies/zsec_pistol/craterotrightpistol_C + anim models/characters/male_npc/cycles/fsecattacks/crate_pistol_rotate_right.mb -rotate 90 -range 79 102 -dest models/md5/monsters/zombies/zsec_pistol/craterotrightpistol_D + + anim models/characters/male_npc/cycles/fsecattacks/crate_pistol_stand.mb -rotate 90 -range 49 49 -dest models/md5/monsters/zombies/zsec_pistol/cratestandpistol_A + anim models/characters/male_npc/cycles/fsecattacks/crate_pistol_stand.mb -rotate 90 -range 53 68 -dest models/md5/monsters/zombies/zsec_pistol/cratestandpistol_B + anim models/characters/male_npc/cycles/fsecattacks/crate_pistol_stand.mb -rotate 90 -range 72 80 -dest models/md5/monsters/zombies/zsec_pistol/cratestandpistol_C + anim models/characters/male_npc/cycles/fsecattacks/crate_pistol_stand.mb -rotate 90 -range 85 98 -dest models/md5/monsters/zombies/zsec_pistol/cratestandpistol_D +} + +/*********** +HK screenshot for gamepro +***********/ + +export eric { + options -prefix HK_ -keep lknee1 rknee1 SPINNER rmissile lmissile target forehead1 -parent rmissile rhand -parent lmissile lhand -parent waist SPINNER -parent SPINNER body2 -parent drool jaw -parent backtongue jaw -parent upsaliva head -parent losaliva jaw + + mesh maps/eric/hk_pose_002.mb -dest models/md5/screenshots/hk_gp_pose1 + anim maps/eric/hk_pose_002.mb -dest models/md5/screenshots/hk_gp_pose1 +} + +model ss_hk_gamepro { + mesh models/md5/monsters/hellknight/hellknight.md5mesh + anim hk_gp_pose1 models/md5/screenshots/hk_gp_pose1.md5anim +} + +entityDef ss_hk_gamepro { + "inherit" "cin_base" + "model" "ss_hk_gamepro" + "anim" "hk_gp_pose1" +} + +/*********** +IMP screenshot for gamepro +***********/ + +export eric { + camera models/monsters/imp/fred/eric/imp_for_ss.mb -dest models/md5/screenshots/gameprocamera1 + + options -prefix IMP_ -keep Lknee Rknee Lelbow Relbow camera Body -keep Rmissile Lmissile -parent Rmissile Rhand -parent Lmissile Lhand -parent Rwing Chest -parent Lwing Chest -parent Hips Body -parent Waist Body -parent camera Head + + mesh models/monsters/imp/fred/eric/imp_for_ss.mb -dest models/md5/screenshots/gamepropose1 + anim models/monsters/imp/fred/eric/imp_for_ss.mb -dest models/md5/screenshots/gamepropose1 +} + +entityDef ss_gameprocamera { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + + "spawnclass" "idCameraAnim" + "anim cam1" "models/md5/screenshots/gameprocamera1.md5camera" +} + +model ss_imp_gamepro { + mesh models/md5/monsters/imp/imp.md5mesh + anim pose1 models/md5/screenshots/gamepropose1.md5anim +} + +entityDef ss_imp_gamepro { + "inherit" "cin_base" + "model" "ss_imp_gamepro" + "anim" "pose1" +} diff --git a/base/def/characters_james.def b/base/def/characters_james.def new file mode 100644 index 00000000..eb687439 --- /dev/null +++ b/base/def/characters_james.def @@ -0,0 +1,288 @@ +/*********************************************************************** + + james human stuff + +***********************************************************************/ + + +/*********************************************************************** + +-----------------HUMANS ------------------ +BODIES ----> (maintenence, labcoat, t-shirt marine, suit, skeleton, security) +HEADS------> (young, old, asian, bald, black, swann, betruger, skull, sarge, security(goggles), security(helmet), player, zombie1) + +***********************************************************************/ + +export james { + + options -prefix SUIT_ -keep Lknee Rknee Body Body2 Lhand1 Rhand headcontrol neckcontrol loneckcontrol lanternlight SPINNER -parent headcontrol neckcontrol -parent neckcontrol loneckcontrol -parent loneckcontrol Shoulders -parent tabletpc Lhand1 -parent flashlight Rhand1 -parent pda Rhand1 -parent lantern Rhand1 -parent lanternlight lantern -parent rshldrpad Shoulders -parent lshldrpad Shoulders -parent shield Lloarm -parent pistol Rhand1 -parent shotgun Rhand1 -parent machinegun Rhand1 -parent wrench Rhand1 -parent cola Rhand1 -parent foamcup Rhand1 -parent dufflebag Rhand1 -parent Body2 Body -parent Hips Body2 -parent SPINNER Body2 -parent Waist SPINNER + + addoptions -keepmesh labcoatnametagmesh + addoptions -keepmesh jumpsuitnametagmesh + addoptions -keepmesh labcoatmesh + addoptions -keepmesh soldiermesh + addoptions -keepmesh jumpsuitmesh + addoptions -keepmesh suitmesh + addoptions -keepmesh skeletonmesh + addoptions -keepmesh securitybodymesh + addoptions -keepmesh sec_rshldrmesh + addoptions -keepmesh sec_lshldrmesh + addoptions -keepmesh marinebodymesh + addoptions -keepmesh tabletpcmesh + addoptions -keepmesh tabletpcguimesh + addoptions -keepmesh pdaguimodel + addoptions -keepmesh pdamodel + addoptions -keepmesh cola1_layer1 + addoptions -keepmesh foamcup_layer1 + addoptions -keepmesh secsheild_outerglass + addoptions -keepmesh secsheild_innerglass + addoptions -keepmesh secsheild_innermesh + addoptions -keepmesh secsheild_outermesh + addoptions -keepmesh w_shotgunmesh + addoptions -keepmesh w_shotgunloadermesh + addoptions -keepmesh w_machinegunmesh + addoptions -keepmesh w_pistolmesh + addoptions -keepmesh flashlightflaremodel + addoptions -keepmesh flashlightbeammodel + addoptions -keepmesh flashlightlensmodel + addoptions -keepmesh monkeywrench + addoptions -keepmesh flashlightmodel + addoptions -keepmesh metalloungechairframemesh + addoptions -keepmesh metalloungechairmesh + addoptions -keepmesh metalkitchenchairmesh + addoptions -keepmesh bigcushychairmesh + addoptions -keepmesh softdeskchairmesh2 + addoptions -keepmesh softdeskchairmesh1 + addoptions -keepmesh metaldeskchairmesh + addoptions -keepmesh dufflebagmesh + +//EXPORT CINEMATICS + + +//EXPORT NPCS + + addoptions -align ALL + + //anim models/characters/male_npc/cycles/idles/startle.mb -rotate 90 -dest models/md5/characters/npcs/startle + + + anim models/characters/male_npc/cycles/idles/stand.mb -dest models/md5/characters/npcs/stand + + + anim models/characters/male_npc/cycles/idles/stand_lean.mb -dest models/md5/characters/npcs/stand_lean + anim models/characters/male_npc/cycles/idles/stand.mb -rotate -90 -dest models/md5/characters/npcs/gui_stand + + + + anim models/characters/male_npc/cycles/working/repair_work.mb -dest models/md5/characters/npcs/repair_work + + anim models/characters/male_npc/cycles/working/kneeling.mb -dest models/md5/characters/npcs/kneeling + anim models/characters/male_npc/cycles/working/kneeling_talking.mb -dest models/md5/characters/npcs/kneeling_talking + anim models/characters/male_npc/cycles/working/kneeling_talking2.mb -dest models/md5/characters/npcs/kneeling_talking2 + + anim models/characters/male_npc/cycles/walks/walk_normal.mb -xyzprecision 0.01 -quatprecision 0.00006 -dest models/md5/characters/npcs/walk_normal + + //anim models/characters/male_npc/cycles/walks/walk_thankyou.mb -xyzprecision 0.01 -quatprecision 0.00006 -dest models/md5/characters/npcs/walk_thankyou + + anim models/characters/male_npc/cycles/working/doorgui.mb -dest models/md5/characters/npcs/doorgui + + //anim models/characters/male_npc/cycles/fragchamber_scientist/fragchamber_scientist1.mb -dest models/md5/characters/npcs/fragchamber_scientist1 + //anim models/characters/male_npc/cycles/fragchamber_scientist/fragchamber_scientist2.mb -dest models/md5/characters/npcs/fragchamber_scientist2 + //anim models/characters/male_npc/cycles/fragchamber_scientist/fragchamber_scientist3.mb -dest models/md5/characters/npcs/fragchamber_scientist3 + //anim models/characters/male_npc/cycles/fragchamber_scientist/fragchamber_scientist4.mb -dest models/md5/characters/npcs/fragchamber_scientist4 + //anim models/characters/male_npc/cycles/fragchamber_scientist/freaked_out.mb -dest models/md5/characters/npcs/freaked_out + //anim models/characters/male_npc/cycles/fragchamber_scientist/thank_you.mb -dest models/md5/characters/npcs/thank_you + anim models/characters/male_npc/cycles/fragchamber_scientist/hey_you.mb -dest models/md5/characters/npcs/hey_you + anim models/characters/male_npc/cycles/fragchamber_scientist/wave_hand.mb -dest models/md5/characters/npcs/wave_hand + + //anim models/characters/male_npc/cycles/working/PDA_idle_look_hydrocon.mb -rotate 90 -dest models/md5/characters/npcs/PDA_idle_look_hydrocon + //anim models/characters/male_npc/cycles/working/PDA_idle_look_hydrocon_talk.mb -rotate 90 -dest models/md5/characters/npcs/PDA_idle_look_hydrocon_talk + anim models/characters/male_npc/cycles/working/operate_computer.mb -dest models/md5/characters/npcs/operate_computer + anim models/characters/male_npc/cycles/working/operate_computer_eric.mb -dest models/md5/characters/npcs/operate_computer_loop + anim models/characters/male_npc/cycles/working/operate_computer_james.mb -dest models/md5/characters/npcs/operate_computer_loop2 + + anim models/characters/male_npc/cycles/working/operate_computer_look.mb -dest models/md5/characters/npcs/operate_computer_look + + anim models/characters/male_npc/cycles/working/repair_work.mb -dest models/md5/characters/npcs/repair_work + + anim models/characters/male_npc/cycles/working/walking_to_sit_002.mb -dest models/md5/characters/npcs/walking_to_sit_002 + + anim models/characters/male_npc/cycles/walks/people_pain_walk_loop.mb -rotate 90 -dest models/md5/characters/npcs/pain_walk1 + anim models/characters/male_npc/cycles/walks/people_pickup_walk_loop.mb -rotate 90 -dest models/md5/characters/npcs/pickup_walk1 + anim models/characters/male_npc/cycles/walks/Z_dead_walks.mb -rotate 90 -dest models/md5/characters/npcs/zdead_walk1 + + anim models/characters/male_npc/cycles/freaked_out/freaked_walk.mb -dest models/md5/characters/npcs/freaked_walk + anim models/characters/male_npc/cycles/freaked_out/freaked_deadwalk.mb -dest models/md5/characters/npcs/freaked_deadwalk + anim models/characters/male_npc/cycles/freaked_out/freaked_run.mb -dest models/md5/characters/npcs/freaked_run + anim models/characters/male_npc/cycles/freaked_out/freaked_idle.mb -dest models/md5/characters/npcs/freaked_idle + anim models/characters/male_npc/cycles/freaked_out/freaked_reaction.mb -dest models/md5/characters/npcs/freaked_reaction + anim models/characters/male_npc/cycles/freaked_out/freaked_GUI.mb -dest models/md5/characters/npcs/freaked_GUI + anim models/characters/male_npc/cycles/freaked_out/freaked_headache.mb -dest models/md5/characters/npcs/freaked_headache + anim models/characters/male_npc/cycles/freaked_out/freaked_possessed.mb -dest models/md5/characters/npcs/freaked_possessed + anim models/characters/male_npc/cycles/freaked_out/freaked_throwup.mb -dest models/md5/characters/npcs/freaked_throwup + anim models/characters/male_npc/cycles/freaked_out/freaked_pound1.mb -dest models/md5/characters/npcs/freaked_pound1 + anim models/characters/male_npc/cycles/freaked_out/freaked_pound2.mb -dest models/md5/characters/npcs/freaked_pound2 + anim models/characters/male_npc/cycles/freaked_out/freaked_wrench.mb -dest models/md5/characters/npcs/freaked_wrench + anim models/characters/male_npc/cycles/freaked_out/freaked_drinkfoamcup.mb -dest models/md5/characters/npcs/freaked_drinkfoamcup + anim models/characters/male_npc/cycles/freaked_out/freaked_cower.mb -dest models/md5/characters/npcs/freaked_cower + + anim models/characters/male_npc/cycles/vo/hydrocon_dude_primary.mb -dest models/md5/characters/npcs/hydrocon_dude_primary + anim models/characters/male_npc/cycles/vo/hydrocon_dude_secondary2.mb -dest models/md5/characters/npcs/hydrocon_dude_secondary2 + anim models/characters/male_npc/cycles/vo/hydrocon_dude_secondary.mb -dest models/md5/characters/npcs/hydrocon_dude_secondary + anim models/characters/male_npc/cycles/vo/hydrocon_dude_trigger2.mb -dest models/md5/characters/npcs/hydrocon_dude_trigger2 + anim models/characters/male_npc/cycles/vo/hydrocon_dude_trigger.mb -dest models/md5/characters/npcs/hydrocon_dude_trigger + + anim models/characters/male_npc/cycles/sitting/marscity_marine1_stand.mb -dest models/md5/characters/npcs/marscity_marine1_stand + anim models/characters/male_npc/cycles/sitting/marscity_marine1_talk.mb -dest models/md5/characters/npcs/marscity_marine1_talk + anim models/characters/male_npc/cycles/sitting/marscity_marine1_idle1.mb -dest models/md5/characters/npcs/marscity_marine1_idle1 + anim models/characters/male_npc/cycles/sitting/marscity_marine1_idle2.mb -dest models/md5/characters/npcs/marscity_marine1_idle2 + anim models/characters/male_npc/cycles/sitting/marscity_marine1_idle3.mb -dest models/md5/characters/npcs/marscity_marine1_idle3 + + anim models/characters/male_npc/cycles/sitting/marscity_marine2_stand.mb -dest models/md5/characters/npcs/marscity_marine2_stand + anim models/characters/male_npc/cycles/sitting/marscity_marine2_talk.mb -dest models/md5/characters/npcs/marscity_marine2_talk + anim models/characters/male_npc/cycles/sitting/marscity_marine2_idle1.mb -dest models/md5/characters/npcs/marscity_marine2_idle1 + anim models/characters/male_npc/cycles/sitting/marscity_marine2_idle2.mb -dest models/md5/characters/npcs/marscity_marine2_idle2 + anim models/characters/male_npc/cycles/sitting/marscity_marine2_idle3.mb -dest models/md5/characters/npcs/marscity_marine1_idle3 + + + // CONVERTED BY FRED + + // anim models/characters/male_npc/cycles/working/operate_computer_eric_thankyou.mb -dest models/md5/characters/npcs/operate_computer_eric_thankyou + // anim models/characters/male_npc/cycles/working/operate_computer_eric_worktalk1.mb -dest models/md5/characters/npcs/operate_computer_eric_worktalk1 + // anim models/characters/male_npc/cycles/working/operate_computer_eric_worktalk2.mb -dest models/md5/characters/npcs/operate_computer_eric_worktalk2 + // anim models/characters/male_npc/cycles/working/look_in_hole_scratch_head.mb -dest models/md5/characters/npcs/look_in_hole_scratch_head + // anim models/characters/male_npc/cycles/working/PDA_idle_look.mb -dest models/md5/characters/npcs/PDA_idle_look + // anim models/characters/male_npc/cycles/working/gui_operate_daniel.mb -dest models/md5/characters/npcs/gui_operate_daniel + // anim models/characters/male_npc/cycles/working/look_in_hole.mb -dest models/md5/characters/npcs/look_in_hole + // anim models/characters/male_npc/cycles/working/gui_operate.mb -dest models/md5/characters/npcs/gui_operate_eric + // anim models/characters/male_npc/cycles/working/gui_look.mb -dest models/md5/characters/npcs/gui_look + // anim models/characters/male_npc/cycles/working/box_look.mb -dest models/md5/characters/npcs/box_look + // anim models/characters/male_npc/cycles/idles/stand_point_forward.mb -dest models/md5/characters/npcs/stand_point_forward + // anim models/characters/male_npc/cycles/idles/stand_point_forward_charles.mb -dest models/md5/characters/npcs/stand_point_forward_charles + // anim models/characters/male_npc/cycles/talking/stand_talk.mb -dest models/md5/characters/npcs/stand_talk + // anim models/characters/male_npc/cycles/working/gui_operate_iansecondary.mb -rotate -90 -dest models/md5/characters/npcs/gui_operate_iansecondary + // anim models/characters/male_npc/cycles/idles/cower4.mb -rotate -90 -dest models/md5/characters/npcs/cower4_ian + // anim models/characters/male_npc/cycles/working/gui_operate.mb -rotate -90 -dest models/md5/characters/npcs/gui_operate + // anim models/characters/male_npc/cycles/working/gui_look_right.mb -rotate -90 -dest models/md5/characters/npcs/gui_look_right + // anim models/characters/male_npc/cycles/idles/point_forward.mb -rotate -90 -dest models/md5/characters/npcs/point_forward + // anim models/characters/male_npc/cycles/idles/startle_left.mb -rotate -90 -dest models/md5/characters/npcs/startle_left + // anim models/characters/male_npc/cycles/working/operate_computer_james3.mb -dest models/md5/characters/npcs/operate_computer_loop3 + // anim models/characters/male_npc/cycles/idles/stand_sitting.mb -dest models/md5/characters/npcs/stand_sitting + // anim models/characters/male_npc/cycles/idles/stand_sitting_PDAidle.mb -dest models/md5/characters/npcs/stand_sitting_idle + // anim models/characters/male_npc/cycles/idles/mcu_thanku.mb -dest models/md5/characters/npcs/mcu_thanku + // anim models/characters/male_npc/cycles/talking/PDA_talk_security_guard.mb -dest models/md5/characters/npcs/PDA_talk_security_guard + // anim models/characters/male_npc/cycles/talking/PDA_talk.mb -dest models/md5/characters/npcs/PDA_talk + // anim models/characters/male_npc/cycles/working/PDA_idle.mb -dest models/md5/characters/npcs/PDA_idle + // anim models/characters/male_npc/cycles/working/operate_computer_sitting.mb -dest models/md5/characters/npcs/operate_computer_sitting + // anim models/characters/male_npc/cycles/walks/walk_machinegun.mb -xyzprecision 0.01 -quatprecision 0.00006 -dest models/md5/characters/npcs/walk_machinegun + // anim models/characters/male_npc/cycles/idles/drink_idle.mb -dest models/md5/characters/npcs/drink_idle // anim models/characters/male_npc/cycles/working/gui_operate_main_worker.mb -dest models/md5/characters/npcs/gui_operate_main_worker + // anim models/characters/male_npc/cycles/talking/talk_primary_todd.mb -dest models/md5/characters/npcs/talk_primary_todd + // anim models/characters/male_npc/cycles/talking/talk_secondary2_todd.mb -dest models/md5/characters/npcs/talk_secondary2_todd + // anim models/characters/male_npc/cycles/working/operate_computer_talk.mb -dest models/md5/characters/npcs/operate_computer_talk + // anim models/characters/male_npc/cycles/idles/stand_hands_at_waist.mb -dest models/md5/characters/npcs/stand_hands_at_waist + // anim models/characters/male_npc/cycles/idles/af_pose.mb -dest models/md5/characters/npcs/woundedmarine_af_pose + // anim models/characters/male_npc/cycles/wounded/wounded_marine_trigger.mb -dest models/md5/characters/npcs/wounded_marine_trigger + // anim models/characters/male_npc/cycles/wounded/wounded_marine_primary.mb -dest models/md5/characters/npcs/wounded_marine_primary + // anim models/characters/male_npc/cycles/wounded/wounded_marine_secondary.mb -dest models/md5/characters/npcs/wounded_marine_secondary + // anim models/characters/male_npc/cycles/wounded/wounded_marine_idle.mb -dest models/md5/characters/npcs/wounded_marine_idle + + + + + + +} + + +/**** +export security machinegun guy +****/ + +export james { + + options -prefix SUIT_ -keep Lknee Rknee eject barrel flash Body2 headcontrol neckcontrol loneckcontrol SPINNER -parent headcontrol neckcontrol -parent neckcontrol loneckcontrol -parent loneckcontrol Shoulders -parent rshldrpad Shoulders -parent lshldrpad Shoulders -parent machinegun Rhand1 -parent Body2 Body -parent Hips Body2 -parent SPINNER Body2 -parent Waist SPINNER -rename mgeject eject -rename mgbarrel barrel -rename mgflash flash -parent eject machinegun -parent flash machinegun -parent barrel machinegun + + + addoptions -keepmesh securitybodymesh + addoptions -keepmesh sec_rshldrmesh + addoptions -keepmesh sec_lshldrmesh + addoptions -keepmesh mgmflash1 + addoptions -keepmesh mgmflash2 + addoptions -keepmesh mgmflash3 + addoptions -keepmesh mgmflash4 + addoptions -keepmesh w_machinegunmesh + addoptions -keepmesh skeletonmesh + addoptions -align ALL + + anim models/characters/male_npc/cycles/idles/af_pose.mb -dest models/md5/monsters/zombies/zsec_machinegun/af_pose + anim models/monsters/zombie/cycles/runs/machinegun_evade_left.mb -dest models/md5/monsters/zombies/zsec_machinegun/machinegun_evade_left + anim models/monsters/zombie/cycles/runs/machinegun_evade_right.mb -dest models/md5/monsters/zombies/zsec_machinegun/machinegun_evade_right +} + + +/*** +export security shotgun guy +***/ + +export james { + + options -prefix SUIT_ -keep Body Rhand Lhand Lhand1 Lknee Rknee eject barrel flash Body2 headcontrol neckcontrol loneckcontrol SPINNER -parent headcontrol neckcontrol -parent neckcontrol loneckcontrol -parent loneckcontrol Shoulders -parent rshldrpad Shoulders -parent lshldrpad Shoulders -parent shield Lloarm -parent shotgun Rhand1 -parent Body2 Body -parent Hips Body2 -parent SPINNER Body2 -parent Waist SPINNER -rename sgeject eject -rename sgbarrel barrel -rename sgflash flash -parent eject shotgun -parent flash shotgun -parent barrel shotgun + + addoptions -keepmesh securitybodymesh + addoptions -keepmesh sec_rshldrmesh + addoptions -keepmesh sec_lshldrmesh + addoptions -keepmesh sgmflash1 + addoptions -keepmesh sgmflash2 + addoptions -keepmesh sgmflash3 + addoptions -keepmesh w_shotgunmesh + addoptions -keepmesh w_shotgunloadermesh + addoptions -keepmesh skeletonmesh + + + addoptions -align ALL + + anim models/characters/male_npc/cycles/idles/af_pose.mb -dest models/md5/monsters/zombies/zsec_shotgun/af_pose + anim models/monsters/zombie/cycles/attacks/shotgun_wall_rotate_left.mb -range 45 45 -dest models/md5/monsters/zombies/zsec_shotgun/wallrotleftshotgun_A + anim models/monsters/zombie/cycles/attacks/shotgun_wall_rotate_left.mb -range 46 64 -dest models/md5/monsters/zombies/zsec_shotgun/wallrotleftshotgun_B + anim models/monsters/zombie/cycles/attacks/shotgun_wall_rotate_left.mb -range 65 78 -dest models/md5/monsters/zombies/zsec_shotgun/wallrotleftshotgun_C + anim models/monsters/zombie/cycles/attacks/shotgun_wall_rotate_left.mb -range 79 100 -dest models/md5/monsters/zombies/zsec_shotgun/wallrotleftshotgun_D + + anim models/monsters/zombie/cycles/attacks/shotgun_wall_rotate_right.mb -range 12 12 -dest models/md5/monsters/zombies/zsec_shotgun/wallrotrightshotgun_A + anim models/monsters/zombie/cycles/attacks/shotgun_wall_rotate_right.mb -range 13 36 -dest models/md5/monsters/zombies/zsec_shotgun/wallrotrightshotgun_B + anim models/monsters/zombie/cycles/attacks/shotgun_wall_rotate_right.mb -range 37 47 -dest models/md5/monsters/zombies/zsec_shotgun/wallrotrightshotgun_C + anim models/monsters/zombie/cycles/attacks/shotgun_wall_rotate_right.mb -range 48 80 -dest models/md5/monsters/zombies/zsec_shotgun/wallrotrightshotgun_D + + anim models/monsters/zombie/cycles/runs/shotgun_activate_step_right.mb -dest models/md5/monsters/zombies/zsec_shotgun/shotgun_activate_step_right + + anim models/monsters/zombie/cycles/attacks/shotgun_wall_rotate_left.mb -range 37 47 -dest models/md5/monsters/zombies/zsec_shotgun/fire1 + anim models/monsters/zombie/cycles/attacks/shotgun_wall_rotate_right.mb -range 65 78 -dest models/md5/monsters/zombies/zsec_shotgun/fire2 + anim models/monsters/zombie/cycles/runs/shotgun_evade_left.mb -dest models/md5/monsters/zombies/zsec_shotgun/evade_left + anim models/monsters/zombie/cycles/runs/shotgun_evade_right.mb -dest models/md5/monsters/zombies/zsec_shotgun/evade_right + anim models/monsters/zombie/cycles/attacks/shotgun_raise.mb -dest models/md5/monsters/zombies/zsec_shotgun/raise + anim models/monsters/zombie/cycles/attacks/shotgun_lower.mb -dest models/md5/monsters/zombies/zsec_shotgun/lower + anim models/monsters/zombie/cycles/attacks/shotgun_stand_fire.mb -dest models/md5/monsters/zombies/zsec_shotgun/stand_fire + + anim models/monsters/zombie/cycles/attacks/shotgun_stand_crate.mb -range 52 52 -rotate 90 -dest models/md5/monsters/zombies/zsec_shotgun/crate_up_A + anim models/monsters/zombie/cycles/attacks/shotgun_stand_crate.mb -range 53 61 -rotate 90 -dest models/md5/monsters/zombies/zsec_shotgun/crate_up_B + anim models/monsters/zombie/cycles/attacks/shotgun_stand_crate.mb -range 61 82 -rotate 90 -dest models/md5/monsters/zombies/zsec_shotgun/crate_up_C + anim models/monsters/zombie/cycles/attacks/shotgun_stand_crate.mb -range 82 90 -rotate 90 -dest models/md5/monsters/zombies/zsec_shotgun/crate_up_D + + anim models/monsters/zombie/cycles/attacks/shotgun_wall_lean_left.mb -range 1 1 -rotate 90 -dest models/md5/monsters/zombies/zsec_shotgun/wallleanleftshotgun_A + anim models/monsters/zombie/cycles/attacks/shotgun_wall_lean_left.mb -range 1 17 -rotate 90 -dest models/md5/monsters/zombies/zsec_shotgun/wallleanleftshotgun_B + anim models/monsters/zombie/cycles/attacks/shotgun_wall_lean_left.mb -range 18 35 -rotate 90 -dest models/md5/monsters/zombies/zsec_shotgun/wallleanleftshotgun_C + anim models/monsters/zombie/cycles/attacks/shotgun_wall_lean_left.mb -range 36 50 -rotate 90 -dest models/md5/monsters/zombies/zsec_shotgun/wallleanleftshotgun_D + + anim models/monsters/zombie/cycles/attacks/shotgun_wall_lean_right.mb -range 1 1 -rotate 90 -dest models/md5/monsters/zombies/zsec_shotgun/wallleanrightshotgun_A + anim models/monsters/zombie/cycles/attacks/shotgun_wall_lean_right.mb -range 1 17 -rotate 90 -dest models/md5/monsters/zombies/zsec_shotgun/wallleanrightshotgun_B + anim models/monsters/zombie/cycles/attacks/shotgun_wall_lean_right.mb -range 18 35 -rotate 90 -dest models/md5/monsters/zombies/zsec_shotgun/wallleanrightshotgun_C + anim models/monsters/zombie/cycles/attacks/shotgun_wall_lean_right.mb -range 36 50 -rotate 90 -dest models/md5/monsters/zombies/zsec_shotgun/wallleanrightshotgun_D + anim models/monsters/zombie/cycles/walks/shotgun_step_left.mb -dest models/md5/monsters/zombies/zsec_shotgun/shotgun_step_left + anim models/monsters/zombie/cycles/walks/shotgun_step_right.mb -dest models/md5/monsters/zombies/zsec_shotgun/shotgun_step_right + anim models/monsters/zombie/cycles/attacks/shotgun_crouch_range_attack.mb -dest models/md5/monsters/zombies/zsec_shotgun/crouch_range_attack + anim models/monsters/zombie/cycles/attacks/shotgun_crouch_range_attack_loop.mb -dest models/md5/monsters/zombies/zsec_shotgun/crouch_range_attack_loop + anim models/monsters/zombie/cycles/attacks/shotgun_crouch_range_attack_end.mb -dest models/md5/monsters/zombies/zsec_shotgun/crouch_range_attack_end + anim models/monsters/zombie/cycles/attacks/shotgun_crouch_range_attack_aim.mb -dest models/md5/monsters/zombies/zsec_shotgun/crouch_range_attack_aim + anim models/monsters/zombie/cycles/attacks/shotgun_stand_aim.mb -dest models/md5/monsters/zombies/zsec_shotgun/stand_aim + anim models/monsters/zombie/cycles/pains/shotgun_crouch_left_pain.mb -dest models/md5/monsters/zombies/zsec_shotgun/shotgun_crouch_left_pain + anim models/monsters/zombie/cycles/pains/shotgun_crouch_right_pain.mb -dest models/md5/monsters/zombies/zsec_shotgun/shotgun_crouch_right_pain +} diff --git a/base/def/map_admin.def b/base/def/map_admin.def new file mode 100644 index 00000000..d131ca89 --- /dev/null +++ b/base/def/map_admin.def @@ -0,0 +1,598 @@ +//CINEMATICS + +export fred { + //camera maps/fred/admin/swann_campbell_overhear.mb -dest models/md5/cinematics/admin/overhear_cam + + camera maps/fred/admin/campbell_overhear_1_n_2_n_3.mb -range 1 313 -dest models/md5/cinematics/admin/overhear_cam1 + camera maps/fred/admin/campbell_overhear_4.mb -range 432 736 -dest models/md5/cinematics/admin/overhear_cam2 + camera maps/fred/admin/swann_campbell_overhear.mb -range 737 1033 -dest models/md5/cinematics/admin/overhear_cam3 + + options -prefix ZOMBIE_CASE_ -keep ATTACHER -rename ATTACHER origin -clearorigin + anim maps/fred/admin/campbell_overhear_1_n_2_n_3.mb -range 1 313 -dest models/md5/cinematics/admin/overhearcampbellcase1 + anim maps/fred/admin/campbell_overhear_4.mb -range 432 736 -dest models/md5/cinematics/admin/overhearcampbellcase2 + + options -prefix CAMPBELL_CASE_ + mesh maps/fred/admin/swann_campbell_overhear.mb -range 737 737 -dest models/md5/cinematics/admin/overhearcaseontable + anim maps/fred/admin/swann_campbell_overhear.mb -range 737 1033 -dest models/md5/cinematics/admin/overhearcampbellcase3 + +} + +model admin_bfgcase { + mesh models/md5/cinematics/admin/overhearcaseontable.md5mesh + anim overhear3 models/md5/cinematics/admin/overhearcampbellcase3.md5anim +} + +entityDef admin_bfgcase { + "inherit" "cin_base" + "model" "admin_bfgcase" + "anim" "overhear3" + "cinematic" "1" +} + +entityDef admin_overhear_cam { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + "cinematic" "1" + + "spawnclass" "idCameraAnim" + + "anim overhear1" "models/md5/cinematics/admin/overhear_cam1.md5camera" + "anim overhear2" "models/md5/cinematics/admin/overhear_cam2.md5camera" + "anim overhear3" "models/md5/cinematics/admin/overhear_cam3.md5camera" +} + +model admin_overhear_camphead { + inherit head_campbell + anim overhear3 models/md5/heads/campbell/admin/camphead_overhear_end.md5anim +} + +model admin_overhear_campbell { + inherit char_campbell_bfgcase + + anim overhear models/md5/chars/campbell/admin/overhearcampbell1.md5anim + + anim overhear1 models/md5/chars/campbell/admin/overhearcampbell1.md5anim { + frame 1 skin skins/characters/npcs/marine_campbell.skin + } + anim overhear2 models/md5/chars/campbell/admin/overhearcampbell2.md5anim { + frame 1 skin skins/characters/npcs/marine_campbell.skin + } +} + +entityDef admin_overhear_campbell { + "inherit" "char_campbell_bfgcase" + "model" "admin_overhear_campbell" + "cinematic" "1" + + "sound_bone" "Chest" +} + +model admin_overhear_campbell2 { + inherit char_campbell_bfg + + anim overhear3 models/md5/chars/campbell/admin/overhearcampbell3.md5anim { + frame 1 event disableEyeFocus + frame 1 skin skins/characters/npcs/marine_campbell.skin + frame 104 sound_voice2 bfgcase_unlock + frame 121 trigger caselight + frame 163 sound_voice admin_campbell_planb + frame 203 sound_weapon player_bfg_raise + frame 218 sound_body player_bfg_idle + frame 235 trigger caselight + } +} + +entityDef admin_overhear_campbell2 { + "inherit" "char_campbell_bfg" + "model" "admin_overhear_campbell2" + "sound_bone" "Chest" + "def_head" "admin_overhear_camphead" + "head_joint" "Shoulders" + "cinematic" "1" +} + +model admin_overhear_campbell_bfg { + inherit char_campbell_bfg + + anim typing_loop models/md5/chars/campbell/admin/typingcampbell_loop.md5anim + anim typing models/md5/chars/campbell/admin/typingcampbell.md5anim { + frame 270 sound_voice admin_campbell_then_i_suggest + } +} + +entityDef admin_overhear_campbell_bfg { + "inherit" "char_campbell_bfg" + "model" "admin_overhear_campbell_bfg" + + "sound_bone" "Chest" + "cinematic" "1" +} + +model admin_overhear_swannhead { + inherit head_swann + anim overhear_a models/md5/heads/swann/admin/swannhead_overhear_1_2_3.md5anim + anim overhear_b models/md5/heads/swann/admin/swannhead_overhear_4.md5anim + anim overhear_c models/md5/heads/swann/admin/swannhead_overhear_end.md5anim +} + +model admin_vent_swann { + mesh models/md5/chars/suit.md5mesh + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER eyecontrol chair) + + anim af_pose models/md5/chars/af_pose.md5anim + anim overhear_a models/md5/cinematics/admin/overhearswann1.md5anim { + frame 1 event disableEyeFocus + frame 132 sound_voice admin_swann_im_telling_you + frame 232 trigger tim_func_static_2222 + frame 237 sound_voice admin_betruger_operation_is_that + } + anim overhear_b models/md5/cinematics/admin/overhearswann2.md5anim { + frame 1 event disableEyeFocus + frame 9 sound_voice admin_swann_the_situation + frame 73 sound_voice admin_betruger_its_not_out_of_control + } + + anim overhear_c models/md5/cinematics/admin/overhearswann3.md5anim { + frame 1 event disableEyeFocus + frame 4 sound_voice admin_swann_yes_bertruger + frame 43 trigger fredmonlight + frame 43 sound_voice2 swann_screen_off + frame 59 sound_voice admin_swann_i_understand + } +} + +entityDef admin_vent_swann { + "inherit" "npc_base" + "model" "admin_vent_swann" + "anim" "overhear_a" + "sound_bone" "Chest" + "def_head" "admin_overhear_swannhead" + "head_joint" "Shoulders" + "eye_verticle_offset" "10" + "eye_horizontal_offset" "5" + "ik_numlegs" "0" + + "num_cinematics" "3" + "anim1" "overhear_a" + "anim2" "overhear_b" + "anim3" "overhear_c" + + "cinematic" "1" +} + +model admin_overhear_swann { + inherit npc_suit + + anim typing_loop models/md5/cinematics/admin/typingswann_loop.md5anim + anim typing models/md5/cinematics/admin/typingswann.md5anim { + frame 1 sound admin_swann_it_isnt_working + } +} + +entityDef admin_overhear_swann { + "inherit" "npc_base" + "model" "admin_overhear_swann" + "anim" "overhear" + "sound_bone" "Chest" + "def_head" "admin_overhear_swannhead" + "head_joint" "Shoulders" + "cinematic" "1" + "eye_verticle_offset" "10" + "eye_horizontal_offset" "5" +} + +model admin_overhear_player { + mesh models/md5/characters/player/mocap/player.md5mesh + skin skins/player/noweapon.skin + + anim overhear1 models/md5/cinematics/admin/overhearplayer1.md5anim + anim overhear2 models/md5/cinematics/admin/overhearplayer2.md5anim + anim railing models/md5/cinematics/admin/railingplayer.md5anim +} + +entityDef admin_overhear_player { + "inherit" "cin_base" + "anim" "overhear" + "model" "admin_overhear_player" + "cinematic" "1" +} + +//Imps break door... + +export fred { + options -prefix DOOR_ + mesh maps/fred/impdoorbreak/impdoorbreak.mb -dest models/md5/environments/impdoorbreak + anim maps/fred/impdoorbreak/impdoorbreak.mb -range 1 1 -dest models/md5/environments/impdoorbreakidle + anim maps/fred/impdoorbreak/impdoorbreak.mb -dest models/md5/environments/impdoorbreak +} + +model admin_impdoors { + mesh models/md5/environments/impdoorbreak.md5mesh + anim doorsidle models/md5/environments/impdoorbreakidle.md5anim + anim doors models/md5/environments/impdoorbreak.md5anim { + frame 2 sound admin_impdoor_impact + frame 8 sound admin_impdoor_impact + frame 17 sound admin_impdoor_impact2 + frame 22 sound admin_impdoor_creak + frame 42 sound admin_impdoor_doorfallimpact + frame 53 sound admin_impdoor_doorfallimpact + } +} + +entityDef admin_impdoors { + "inherit" "cin_base" + "anim" "doors" + "model" "admin_impdoors" +} + +/*********************************************************************** + +admin_imps + +***********************************************************************/ + +model admin_imp1 { + inherit monster_demon_imp + anim impdoors models/md5/monsters/imp/imp1doorbreak.md5anim { + ai_no_turn + frame 1 call overrideLegs + frame 1 disableWalkIK + frame 1 disableGravity + frame 64 enableGravity + frame 64 enableWalkIK + } + + anim impcrawl models/md5/monsters/imp/imp1wallcrawl.md5anim { + ai_no_turn + frame 1 call overrideLegs + frame 1 disableGravity + frame 1 disableWalkIK + frame 2 sound_body snd_sight + frame 40 enableGravity + frame 40 enableWalkIK + } +} + +entityDef admin_imp1 { + "inherit" "monster_demon_imp" + "model" "admin_imp1" + "anim" "impdoorsidle" + "on_activate" "impdoors" +} + +model admin_imp2 { + inherit monster_demon_imp + + anim impdoors models/md5/monsters/imp/imp2doorbreak.md5anim { + ai_no_turn + frame 1 call overrideLegs + frame 1 disableGravity + frame 1 disableWalkIK + frame 89 enableGravity + frame 89 enableWalkIK + } + anim impcrawl models/md5/monsters/imp/imp2wallcrawl.md5anim { + ai_no_turn + frame 1 call overrideLegs + frame 1 disableGravity + frame 1 disableWalkIK + frame 2 sound_body snd_sight + frame 15 enableGravity + frame 15 enableWalkIK + } +} + +entityDef admin_imp2 { + "inherit" "monster_demon_imp" + "model" "admin_imp2" + "anim" "impdoorsidle" + "on_activate" "impdoors" +} + +//Pinky Attack... + +export fred { + camera maps/fred/admin/railing.mb -dest models/md5/cinematics/admin/cin_pinkyattack_cam +} + +export fred { + options -prefix PINKY_ -align ALL -rename Waist Waist1 -rename LoNeck Waist -parent drool Mouth_Piece + anim maps/fred/admin/railing.mb -range 70 70 -dest models/md5/cinematics/admin/pinkyrailing_idle + anim maps/fred/admin/railing.mb -dest models/md5/cinematics/admin/pinkyrailing + //anim models/monsters/pinky/animation/cinematics/glassbreak.mb -range 1 67 -dest models/md5/cinematics/admin/pinkyuptoglass + + } + +entityDef admin_pinkyattack_cam { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + + "spawnclass" "idCameraAnim" + "cinematic" "1" + + "anim pinkyattack" "models/md5/cinematics/admin/cin_pinkyattack_cam.md5camera" +} + +model admin_pinkyattack_pinky { + mesh models/md5/monsters/pinky/pinky.md5mesh + anim railing models/md5/cinematics/admin/pinkyrailing.md5anim +// anim uptoglass models/md5/cinematics/admin/pinkyuptoglass.md5anim +} + +entityDef admin_pinkyattack_pinky { + "inherit" "cin_base" + "anim" "railing" + "model" "admin_pinkyattack_pinky" + "cinematic" "1" +} + +model admin_pinkyattack_shards { + mesh models/md5/environments/glass_shards.md5mesh + anim shatter models/md5/environments/shatter.md5anim +} + +entityDef admin_pinkyattack_shards { + "inherit" "cin_base" + "anim" "shatter" + "model" "admin_pinkyattack_shards" + "cinematic" "1" +} + +model admin_pinky_glassbreak { + inherit monster_demon_pinky + + anim glassbreak models/md5/monsters/pinky/glassbreak.md5anim { + frame 1 disableGravity + frame 7 sound_body snd_admin_footstep + frame 10 sound_body snd_admin_handstep + frame 13 sound_voice snd_admin_sight2 + frame 14 sound_body snd_admin_footstep + frame 22 sound_body2 snd_admin_footstep + frame 22 sound_body snd_admin_handstep + frame 29 sound_body snd_admin_footstep + frame 31 sound_body2 snd_admin_handstep + frame 34 sound_body snd_admin_footstep + frame 41 sound_body snd_admin_footstep + frame 41 sound_body2 snd_admin_handstep + frame 47 sound_body snd_admin_handstep + frame 52 sound_voice snd_admin_sight2 + frame 53 sound_body snd_admin_footstep + frame 53 sound_body2 snd_admin_handstep + frame 70 sound_body snd_admin_handstep + frame 71 sound_body2 snd_admin_handstep + frame 72 sound_voice snd_sight1 + frame 74 sound_body snd_admin_footstep + frame 76 sound_body2 snd_admin_footstep + frame 79 sound_body snd_admin_handstep + frame 84 enableGravity + } +} + +entityDef admin_pinky_glassbreak { + "inherit" "monster_demon_pinky" + "model" "admin_pinky_glassbreak" + "anim" "glassbreak" + + "snd_admin_footstep" "admin_monster_demon_pinky_foot" + "snd_admin_sight2" "admin_monster_demon_pinky_sight2" + +} + +/*************************************************** +railing_for_pinky +***************************************************/ + +export fred { + options -prefix ENV_ + mesh maps/fred/admin/railing.mb -dest models/md5/environments/railing + anim maps/fred/admin/railing.mb -dest models/md5/environments/railing +} + +model admin_railing_pinkyattack { + mesh models/md5/environments/railing.md5mesh + anim railing models/md5/environments/railing.md5anim { + + frame 29 sound admin_monster_demon_pinky_foot + frame 30 sound_global admin_monster_demon_pinky_sight2 + frame 35 sound admin_monster_demon_pinky_hand + frame 79 sound admin_monster_demon_pinky_foot + frame 79.1 sound admin_monster_demon_pinky_hand + frame 92 sound admin_monster_demon_pinky_foot + frame 101 sound admin_monster_demon_pinky_hand + frame 106 sound admin_monster_demon_pinky_foot + frame 120 sound_global admin_monster_demon_pinky_sight2 + frame 124 sound admin_monster_demon_pinky_foot + frame 133 sound admin_monster_demon_pinky_foot + frame 139 sound admin_monster_demon_pinky_creak_small + frame 156 sound admin_monster_demon_pinky_creak_big + frame 190 sound admin_monster_demon_pinky_foot + frame 197 sound admin_monster_demon_pinky_hand + frame 206 sound admin_monster_demon_pinky_hand + frame 210 sound_global admin_monster_demon_pinky_sight2 + frame 248 sound admin_light_break + frame 256 sound admin_monster_demon_pinky_thud + frame 257 sound admin_monster_demon_pinky_hand + frame 260 sound admin_monster_demon_pinky_hand + frame 261 sound admin_monster_demon_pinky_foot + frame 262 sound admin_monster_demon_pinky_foot + frame 272 sound admin_monster_demon_pinky_foot + frame 274 sound admin_monster_demon_pinky_foot + frame 275 sound admin_monster_demon_pinky_hand + frame 285 sound admin_monster_demon_pinky_foot + frame 289 sound admin_monster_demon_pinky_hand + frame 298 sound admin_monster_demon_pinky_foot + frame 300 sound admin_monster_demon_pinky_hand + frame 301 sound admin_monster_demon_pinky_foot + frame 307 sound admin_monster_demon_pinky_hand + frame 318 sound_global admin_monster_demon_pinky_sight1 + frame 322 sound admin_monster_demon_pinky_foot + frame 334 sound admin_monster_demon_pinky_hand + frame 352 sound admin_monster_demon_pinky_foot + frame 360 sound_global admin_monster_demon_pinky_sight2 + frame 394 sound admin_monster_demon_pinky_hand + frame 397 sound admin_monster_demon_pinky_foot + } +} + +entityDef admin_railing_pinkyattack { + "inherit" "cin_base" + "model" "admin_railing_pinkyattack" + "anim" "railing" + "cinematic" "1" +} + +/*************************************************** +doorframe_for_pinky +***************************************************/ + +export fred { + options -prefix ENV_ + mesh maps/fred/admin/doorframe.mb -dest models/md5/environments/doorframe + anim maps/fred/admin/doorframe.mb -dest models/md5/environments/doorframe +} + +model admin_doorframe_pinkyattack { + mesh models/md5/environments/doorframe.md5mesh + anim doorframe models/md5/environments/doorframe.md5anim { + frame 42 trigger trigger_relay_4 + frame 42 sound admin_impdoor_impact0 + frame 79 sound admin_monster_demon_pinky_sight2 + frame 123 trigger trigger_relay_7 + frame 123 sound admin_impdoor_impact0 + frame 142 sound admin_monster_demon_pinky_sight1 + frame 175 trigger trigger_relay_6 + frame 175 sound admin_impdoor_impact0 + frame 232 trigger trigger_relay_8 + frame 232 sound admin_impdoor_impact0 + frame 242 sound admin_monster_demon_pinky_sight2 + } +} + +entityDef admin_doorframe_pinkyattack { + "inherit" "cin_base" + "model" "admin_doorframe_pinkyattack" + "anim" "doorframe" + "cinematic" "1" +} + +/*********************************************************************** + +Wounded_Marine + +***********************************************************************/ + +model admin_wounded_marine_head { + skin skins/characters/npcs/head_bald_bloody.skin + + mesh models/md5/characters/npcs/heads/h3.md5mesh + anim idle models/md5/characters/npcs/heads/h3idle.md5anim + anim talk_trigger models/md5/characters/npcs/heads/h3trigger.md5anim + anim talk_secondary1 models/md5/characters/npcs/heads/h3secondary.md5anim + anim talk_primary models/md5/characters/npcs/heads/h3primary.md5anim + anim dead models/md5/characters/npcs/heads/h3dead.md5anim + anim pain models/md5/characters/npcs/heads/h3secondary.md5anim +} + +model admin_wounded_marine { + mesh models/md5/chars/marine.md5mesh + channel torso ( *origin ) + + skin skins/characters/npcs/body_marine_bloody.skin + anim af_pose models/md5/chars/af_pose.md5anim + anim stand models/md5/chars/wounded_marine_idle.md5anim + anim idle models/md5/chars/wounded_marine_idle.md5anim + anim talk_trigger models/md5/chars/wounded_marine_trigger.md5anim { + frame 1 sound_voice admin_marine_dont_stop + } + anim talk_primary models/md5/chars/wounded_marine_primary.md5anim { + frame 1 sound_voice admin_marine_there_are + } + anim talk_secondary1 models/md5/chars/wounded_marine_secondary.md5anim { + frame 1 sound_voice admin_marine_death + frame 1 call headlook_off + } + anim pain models/md5/chars/wounded_marine_secondary.md5anim { + frame 1 sound_voice admin_marine_death + } +} + +entityDef admin_wounded_marine { + "inherit" "character_default" + "scriptobject" "ai" + "nativeobject" "rvmAICharacterProne" + "model" "admin_wounded_marine" + "anim" "idle" + "size" "64 20 32" + "use_aas" "" + "turn_rate" "0" + "eye_height" "28" + "die_after_speaking" "1" + "copy_joint_world eyecontrol" "" + "gib" "1" + "model_gib" "models/md5/chars/skeleton.md5mesh" + "snd_gibbed" "sound_giblets" + + "def_dropGibItem1" "moveable_item_head_pork" + "dropGibItem1Joint" "headcontrol" + + "def_dropGibItem2" "moveable_item_torso_pork" + "dropGibItem2Joint" "Chest" + + "def_dropGibItem3" "moveable_item_rup_arm_pork" + "dropGibItem3Joint" "Ruparm" + + "def_dropGibItem4" "moveable_item_left_waist_pork" + "dropGibItem4Joint" "Waist" + + "def_dropGibItem5" "moveable_item_lup_leg_pork" + "dropGibItem5Joint" "Lupleg" + + "def_dropGibItem6" "moveable_item_rup_leg_pork" + "dropGibItem6Joint" "Rupleg" + + "def_dropGibItem7" "moveable_item_rup2_leg_pork" + "dropGibItem7Joint" "Rloleg" + + "def_dropGibItem8" "moveable_item_pelvis_pork" + "dropGibItem8Joint" "Hips" + + + "bone_focus" "headcontrol" + "bone_leftEye" "Leyeaim" + "bone_rightEye" "Reyeaim" + + "eye_turn_min" "0 0 0" + "eye_turn_max" "0 0 0" + + "eye_focus_rate" "0" + + "talk0_blendin" "20" + "talk0_blendout" "20" + "talk1_blendin" "20" + "talk1_blendout" "20" + "talk2_blendin" "20" + "talk2_blendout" "20" + + "look_joint Waist" "0 0 0" + "look_joint Chest" "0 0 0" + "look_joint Shoulders" "0 0 0" + "look_joint headcontrol" ".5 .5 0" + "look_joint Ruparm" "0 0 0" + "look_joint Luparm" "0 0 0" + + "head_focus_rate" "0.5" + + "def_head" "admin_wounded_marine_head" + "head_joint" "Shoulders" + + "ragdoll" "char_wounded_marine" + + // no damage zones needed + "damage_zone chest" "" + "damage_zone left_arm" "" + "damage_zone right_arm" "" + "damage_zone legs" "" +} diff --git a/base/def/map_alphalabs1.def b/base/def/map_alphalabs1.def new file mode 100644 index 00000000..de11e3c0 --- /dev/null +++ b/base/def/map_alphalabs1.def @@ -0,0 +1,445 @@ + +//CINEMATICS + +export fred { + + camera maps/fred/alphalabs1/magintro.mb -range 1 342 -dest models/md5/cinematics/alphalabs1/magintro_cam1 + camera maps/fred/alphalabs1/magintro.mb -range 343 432 -dest models/md5/cinematics/alphalabs1/magintro_cam2 + + options -prefix PENT_ + mesh models/mapobjects/pentagram/cycles/idle1.mb -dest models/md5/cinematics/alphalabs1/pentmesh + anim models/mapobjects/pentagram/cycles/idle1.mb -dest models/md5/cinematics/alphalabs1/pentanim_rot + + options -prefix HELLDOLL_ + mesh maps/fred/alphalabs1/magintro.mb -dest models/md5/cinematics/alphalabs1/helldoll + anim maps/fred/alphalabs1/magintro.mb -dest models/md5/cinematics/alphalabs1/helldoll + anim maps/fred/alphalabs1/magintro_idle.mb -range 1 80 -dest models/md5/cinematics/alphalabs1/helldoll_idle + + options -prefix PLAYER_ -keep SPINNER camWaist camHead modelviewconnector camera PISTOL_ATTACHER SHOTGUN_ATTACHER MGATTACHER pgATTACHER NADE_ATTACHER CHAINSAW_ATTACHER RL_ATTACHER FL_ATTACHER BFG_ATTACHER CHAINGUN_ATTACHER Lfteye_Focus Rteye_Focus Neck -parent Waist SPINNER -parent SPINNER Waist2 -parent Neck Shldrs -parent camera camHead -parent Lfteye_Focus Head -parent Rteye_Focus Head -parent Waist2 Hips -parent PISTOL_ATTACHER Rhand -parent SHOTGUN_ATTACHER Rhand -parent MGATTACHER Rhand -parent pgATTACHER Rhand -parent NADE_ATTACHER Rhand -parent CHAINSAW_ATTACHER Rhand -parent RL_ATTACHER Lhand -parent FL_ATTACHER Rhand -parent BFG_ATTACHER Lhand -parent camWaist modelviewconnector -parent CHAINGUN_ATTACHER Rhand + + //addoptions -skipmesh pistolBarrel + //addoptions -skipmesh pistolExtender + //addoptions -skipmesh pistolTrigger + //addoptions -skipmesh pistolBody + //addoptions -skipmesh pistolClip1 + addoptions -skipmesh plasma_innerscopebot_mesh1 + addoptions -skipmesh plasma_outerscopebot_mesh1 + addoptions -skipmesh plasma_innerscopetop_mesh1 + addoptions -skipmesh plasma_outerscopebot_mesh1 + addoptions -skipmesh plasma_outerscopetop_mesh1 + addoptions -skipmesh plasma_innerflap1_mesh1 + addoptions -skipmesh plasma_outerflap1_mesh1 + addoptions -skipmesh plasma_bolt_mesh1 + addoptions -skipmesh plasma_screen_mesh1 + addoptions -skipmesh plasma_body_mesh1 + addoptions -skipmesh plasma_handle_mesh1 + addoptions -skipmesh plasma_outerflap2_mesh4 + addoptions -skipmesh plasma_innerflap2_mesh4 + addoptions -skipmesh plasma_uppermon_mesh4 + addoptions -skipmesh shotgun_body_mesh + addoptions -skipmesh shotgun_handle_mesh + addoptions -skipmesh shotgun_trigger_mesh + addoptions -skipmesh shotgun_loflap_mesh + addoptions -skipmesh shotgun_extender_mesh + addoptions -skipmesh shotgun_upflap1_mesh + addoptions -skipmesh shotgun_upflap2_mesh + //addoptions -skipmesh mgdisplaymesh + //addoptions -skipmesh mgextendermesh + //addoptions -skipmesh mgbodymesh + //addoptions -skipmesh mgclipmesh + //addoptions -skipmesh mgtriggermesh + addoptions -skipmesh nade_cap_mesh + addoptions -skipmesh nade_body_mesh + addoptions -skipmesh chainsawcordmesh + addoptions -skipmesh chainsawstartermesh + addoptions -skipmesh chainsawblademesh + addoptions -skipmesh chainsawhandlemesh + addoptions -skipmesh chainsawbodymesh + + addoptions -skipmesh rshell1 + addoptions -skipmesh rshell2 + addoptions -skipmesh rshell3 + addoptions -skipmesh rshell4 + addoptions -skipmesh reloader1 + addoptions -skipmesh handle + addoptions -skipmesh aimer + addoptions -skipmesh body + + addoptions -skipmesh flashlightmesh1 + addoptions -skipmesh flashlightflaremesh + addoptions -skipmesh flashlightbeammesh + addoptions -skipmesh flashlightflare2mesh + + addoptions -skipmesh bfgmesh + + addoptions -skipmesh w_pistolfire + addoptions -skipmesh w_pistolflash + addoptions -skipmesh w_pistolmesh + //addoptions -skipmesh w_shotgun2barrelmesh + //addoptions -skipmesh w_shotgun2mesh + addoptions -skipmesh w_machinegun_mesh + addoptions -skipmesh w_mgfx1 + addoptions -skipmesh w_mgfx2 + addoptions -skipmesh w_mgfx3 + addoptions -skipmesh w_mgfx4 + addoptions -skipmesh w_plasmagun_mesh + addoptions -skipmesh w_plasmagunfx1 + addoptions -skipmesh w_plasmagunfx2 + addoptions -skipmesh w_chainsaw_mesh + addoptions -skipmesh w_chainsaw_chain_mesh + addoptions -skipmesh w_rocketlauncher_mesh + + addoptions -skipmesh chaingunfx1_model + addoptions -skipmesh chaingunfx2_model + addoptions -skipmesh chaingunnubmodel + addoptions -skipmesh chaingunbodymodel + addoptions -skipmesh chaingunbarrelmodel + + addoptions -skipmesh polySurface1 + addoptions -skipmesh polySurface2 + + mesh models/characters/player/mocap/idle_stand.mb -dest models/md5/characters/player/mocap/wepplayer + anim maps/fred/alphalabs1/magintro.mb -range 343 432 -dest models/md5/cinematics/alphalabs1/magintro_player + anim maps/fred/delta4/hkintro.mb -range 1 251 -dest models/md5/cinematics/delta4/hkintro_player + anim maps/fred/delta4/hkintro.mb -range 252 384 -dest models/md5/cinematics/delta4/hkintro_player_b -prefix PLAYER2_ + anim maps/fred/cyberdemon/cyberintro_shot1.mb -xyzprecision .01 -range 30 104 -dest models/md5/cinematics/hellhole/cyberintro_player1 + anim maps/fred/cyberdemon/cyberintro.mb -xyzprecision .01 -range 105 220 -dest models/md5/cinematics/hellhole/cyberintro_player2 + anim maps/fred/cyberdemon/cyberintro_shot3.mb -xyzprecision .01 -range 221 252 -dest models/md5/cinematics/hellhole/cyberintro_player3 + anim maps/fred/cyberdemon/cyberintro.mb -xyzprecision .01 -range 253 337 -dest models/md5/cinematics/hellhole/cyberintro_player4 + anim maps/fred/cyberdemon/cyberintro.mb -xyzprecision .01 -range 338 492 -dest models/md5/cinematics/hellhole/cyberintro_player5 + anim maps/fred/cyberdemon/cyberintro_shot4.mb -xyzprecision .01 -range 493 542 -dest models/md5/cinematics/hellhole/cyberintro_player6 + anim maps/fred/cyberdemon/cyberintro.mb -xyzprecision .01 -range 543 654 -dest models/md5/cinematics/hellhole/cyberintro_player7 + anim maps/fred/cyberdemon/cyberintro.mb -xyzprecision .01 -range 655 732 -dest models/md5/cinematics/hellhole/cyberintro_player8 + anim maps/fred/cyberdemon/cyberintro.mb -xyzprecision .01 -range 733 765 -dest models/md5/cinematics/hellhole/cyberintro_player9 + + anim maps/fred/alphalabs3/playershot1.mb -dest models/md5/cinematics/alphalabs3/vagintro_player1 + anim maps/fred/alphalabs3/vagaryintro2.mb -dest models/md5/cinematics/alphalabs3/vagintro_player2 + + + //anim maps/fred/cyberdemon/cyberdeath.mb -dest models/md5/cinematics/hellhole/cyberdeath_player + anim maps/fred/cyberdemon/cyberdeath.mb -range 44 89 -dest models/md5/cinematics/hellhole/cyberdeath_player_a + anim maps/fred/cyberdemon/cyberdeath.mb -range 90 199 -dest models/md5/cinematics/hellhole/cyberdeath_player_b + anim maps/fred/cyberdemon/cyberdeath.mb -range 200 220 -dest models/md5/cinematics/hellhole/cyberdeath_player_c + anim maps/fred/cyberdemon/cyberdeath.mb -range 221 275 -dest models/md5/cinematics/hellhole/cyberdeath_player_d + anim maps/fred/cyberdemon/cyberdeath.mb -range 276 340 -dest models/md5/cinematics/hellhole/cyberdeath_player_e + anim maps/fred/cyberdemon/cyberdeath.mb -range 341 372 -dest models/md5/cinematics/hellhole/cyberdeath_player_f + anim maps/fred/cyberdemon/cyberdeath.mb -range 373 428 -dest models/md5/cinematics/hellhole/cyberdeath_player_g + anim maps/fred/cyberdemon/cyberdeath.mb -range 429 548 -dest models/md5/cinematics/hellhole/cyberdeath_player_h + anim maps/fred/cyberdemon/cyberdeath.mb -range 549 800 -dest models/md5/cinematics/hellhole/cyberdeath_player_i + + mesh maps/fred/delta4/hkintro.mb -range 1 1 -dest models/md5/characters/player/mocap/mgplayer + anim maps/fred/delta4/hkintro2.mb -range 617 644 -dest models/md5/cinematics/delta4/hkintro_player2 + + anim maps/fred/monorail/crash.mb -range 1 285 -dest models/md5/cinematics/monorail/crash_player + + anim models/monsters/guardian/cycles/guardian_intro.mb -dest models/md5/cinematics/hell1/guardianintro_teleport_player + + anim maps/fred/enpro/monitor.mb -range 1 200 -dest models/md5/cinematics/enpro/monitor_player + anim maps/fred/enpro/monitor2.mb -range 1 32 -dest models/md5/cinematics/enpro/monitor_player2 + anim maps/fred/enpro/lostsoulintro.mb -range 1 219 -dest models/md5/cinematics/enpro/player_lostintro1 + anim maps/fred/enpro/lostsoulintro.mb -range 284 320 -dest models/md5/cinematics/enpro/player_lostintro2 + + addoptions -align ALL + anim models/characters/player/mocap/mgwalk2stop.mb -range 10 120 -dest models/md5/cinematics/monorail/walk2stopfull + anim maps/fred/alphalabs1/playerwalk2stop.mb -range 63 138 -dest models/md5/characters/player/mocap/cinematics/magintrowalk2stop + + anim maps/fred/delta2a/ian_shot1.mb -range 1 671 -rotate -90 -dest models/md5/cinematics/delta2a/scientistplayer_a + anim maps/fred/delta2a/ian_shot1.mb -range 672 756 -rotate -90 -dest models/md5/cinematics/delta2a/scientistplayer_b + anim maps/fred/delta2a/malteleporterroom.mb -rotate 180 -dest models/md5/cinematics/delta2a/teleporterplayer + +} + +model alphalabs1_labcoat_bald_head { + mesh models/md5/characters/npcs/heads/h3.md5mesh + anim idle models/md5/characters/npcs/heads/h3idle.md5anim + anim stand models/md5/characters/npcs/heads/h3idle.md5anim + anim pda_idle_look models/md5/characters/npcs/heads/h3idle.md5anim + anim talk_trigger models/md5/heads/bald/alphalabs1/maint_hyrdocon_trigger.md5anim { + frame 1 sound_voice alphalabs1_labcoat_trigger + } + anim talk_two models/md5/heads/bald/alphalabs1/maint_hyrdocon_trigger2.md5anim { + frame 1 sound_voice alphalabs1_labcoat_trigger2 + } + anim talk_primary models/md5/heads/bald/alphalabs1/maint_hyrdocon_primary.md5anim { + frame 1 sound_voice alphalabs1_labcoat_primary + } + anim talk_secondary1 models/md5/heads/bald/alphalabs1/maint_hyrdocon_secondary.md5anim { + frame 1 sound_voice alphalabs1_labcoat_secondary + } + anim talk_secondary2 models/md5/heads/bald/alphalabs1/maint_hyrdocon_secondary2.md5anim { + frame 1 sound_voice alphalabs1_labcoat_secondary2 + } +} + +model alphalabs1_labcoat_bald { + inherit npc_base + mesh models/md5/chars/labcoat.md5mesh + + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER chair eyecontrol) + + anim cower models/md5/chars/alphalabs1/cower4_hydrocon.md5anim + anim idle models/md5/chars/alphalabs1/pda_idle_look_hydrocon.md5anim { + frame 1 event disableEyeFocus + frame 1 call headlook_off + } + anim stand models/md5/chars/alphalabs1/pda_idle_look_hydrocon.md5anim { + frame 1 event disableEyeFocus + frame 1 call headlook_off + } + anim talk_trigger models/md5/chars/alphalabs1/startle.md5anim { + frame 1 event disableEyeFocus + frame 1 call headlook_off + frame 30 event enableEyeFocus + frame 30 call headlook_on + frame 340 event disableEyeFocus + frame 340 call headlook_off + } + anim talk_two models/md5/chars/alphalabs1/pda_idle_look_hydrocon.md5anim { + frame 1 event disableEyeFocus + frame 1 call headlook_off + } + anim pda_idle_look models/md5/chars/alphalabs1/pda_idle_look_hydrocon.md5anim { + frame 1 event disableEyeFocus + frame 1 call headlook_off + } + anim talk_primary models/md5/chars/alphalabs1/pda_idle_look_hydrocon_talk.md5anim { + frame 1 event disableEyeFocus + frame 1 call headlook_off + } + anim talk_secondary1 models/md5/chars/alphalabs1/pda_idle_look_hydrocon_talk.md5anim { + frame 1 event disableEyeFocus + frame 1 call headlook_off + } + anim talk_secondary2 models/md5/chars/alphalabs1/pda_idle_look_hydrocon_talk.md5anim { + frame 1 event disableEyeFocus + frame 1 call headlook_off + } +} + +entityDef alphalabs1_labcoat_bald { + "inherit" "npc_base" + "model" "alphalabs1_labcoat_bald" + "def_head" "alphalabs1_labcoat_bald_head" + + "snd_talk_trigger" "alphalabs1_labcoat_trigger" + "snd_talk_two" "alphalabs1_labcoat_trigger2" + "snd_talk_primary" "alphalabs1_labcoat_primary" + "snd_talk_secondary" "alphalabs1_labcoat_secondary" + "snd_talk_secondary2" "alphalabs1_labcoat_secondary2" + + "head_joint" "Shoulders" + "talk_no_turn" "1" + "turn_rate" "0" + + "talktime" "1" + "talk0_blendin" "8" + "talk0_blendout" "8" + "talk1_blendin" "8" + "talk1_blendout" "8" + "talk2_blendin" "8" + "talk2_blendout" "8" + + "team" "0" + "rank" "0" + + "bone_focus" "headcontrol" + "bone_orientation" "Body" + "bone_leftEye" "Leyeaim" + "bone_rightEye" "Reyeaim" + + "look_min" "-90 -125 0" + "look_max" "25 125 0" + "look_joint Waist" "0.1333 0.1333 0" + "look_joint Chest" "0.1333 0.1333 0" + "look_joint Shoulders" "0.1333 0.1333 0" + "look_joint headcontrol" "0.6 0.6 0" + "look_joint Ruparm" "-0.4 0 0" + "look_joint Luparm" "-0.4 0 0" + + "copy_joint_world eyecontrol" "" + + "eye_turn_min" "-20 -30 0" + "eye_turn_max" "20 30 0" + "eye_verticle_offset" "5" + "eye_horizontal_offset" "-8" + "eye_focus_rate" "0.5" + "head_focus_rate" "0.1" + + "def_attach" "pda_alphalabs1_labcoat_bald" + "def_dropDeathItem" "pda_alphalabs1_labcoat_bald" + "dropDeathItemJoint" "RHANDCONNECTOR" + "dropDeathItemRotation" "-90 0 0" +} + +// pentagram + +model alphalabs1_pentagramdood { + mesh models/md5/cinematics/alphalabs1/pentmesh.md5mesh + anim pentagram models/md5/cinematics/alphalabs1/pentanim_rot.md5anim +} + +entityDef alphalabs1_pentagramdood { + "inherit" "cin_base" + "model" "alphalabs1_pentagramdood" + "anim" "pentagram" +} + +// maggot intro + +model alphalabs1_helldoll { + mesh models/md5/cinematics/alphalabs1/helldoll.md5mesh + anim idle models/md5/cinematics/alphalabs1/helldoll_idle.md5anim + anim helldoll models/md5/cinematics/alphalabs1/helldoll.md5anim { + frame 60 sound_voice snd_gasp + frame 180 sound_voice snd_scream + } +} + +entityDef alphalabs1_helldoll { + "editor_color" "1 .5 .3" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 32" + "sound_bone" "Jaw" + "inherit" "cin_base" + "model" "alphalabs1_helldoll" + "anim" "helldoll" + + "snd_gasp" "alphalabs1_magintro_gasp" + "snd_scream" "alphalabs1_magintro_scream" +} + +model alphalabs1_player { + mesh models/md5/characters/player/mocap/wepplayer.md5mesh + skin skins/player/shotgun.skin + + anim magintro models/md5/cinematics/alphalabs1/magintro_player.md5anim + anim walk2stop models/md5/characters/player/mocap/cinematics/magintrowalk2stop.md5anim +} + +entityDef alphalabs1_player { + "editor_color" "1 .5 .3" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 32" + "editor_copy2" "anim" + + "spawnclass" "idAnimated" + + "model" "alphalabs1_player" + "anim" "magintro" +} + +entityDef alphalabs1_cam { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + + + "spawnclass" "idCameraAnim" + + "anim magintro_a" "models/md5/cinematics/alphalabs1/magintro_cam1.md5camera" + "anim magintro_b" "models/md5/cinematics/alphalabs1/magintro_cam2.md5camera" +} + +model alphalabs1_imp { + mesh models/md5/monsters/imp/imp.md5mesh + anim scare models/md5/cinematics/alphalabs1/impscare.md5anim { + frame 6 sound_body monster_demon_imp_footstep + frame 9 sound_weapon monster_demon_imp_footstep + frame 10 sound_voice monster_demon_imp_sight_scare + frame 16 sound_body monster_demon_imp_footstep + frame 52 sound_weapon monster_demon_imp_footstep + frame 64 sound_body monster_demon_imp_footstep + } +} + +entityDef alphalabs1_imp { + "editor_color" "1 .5 .3" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 32" + "sound_bone" "Jaw" + + "inherit" "cin_base" + "model" "alphalabs1_imp" + "anim" "scare" +} + + +model alphalabs1_maggot1 { + mesh models/md5/monsters/maggot3/maggot3.md5mesh + anim helldoll models/md5/cinematics/alphalabs1/maggot1.md5anim { + frame 349 sound_body monster_demon_maggot_footstep + frame 354 sound_body monster_demon_maggot_footstep + frame 360 sound_body monster_demon_maggot_footstep + frame 360 sound_global monster_demon_maggot_sight + frame 366 sound_body monster_demon_maggot_footstep + frame 382 sound_body monster_demon_maggot_footstep + frame 397 sound_body monster_demon_maggot_footstep + frame 398 sound_body monster_demon_maggot_footstep + frame 409 sound_body monster_demon_maggot_footstep + frame 410 sound_body monster_demon_maggot_footstep + frame 415 sound_body monster_demon_maggot_footstep + frame 418 sound_body monster_demon_maggot_footstep + } +} + +entityDef alphalabs1_maggot1 { + "editor_color" "1 .5 .3" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 32" + + "inherit" "cin_base" + "model" "alphalabs1_maggot1" + "anim" "helldoll" + "sound_bone" "Shoulders" + + "snd_sight" "monster_demon_maggot_sight" + "snd_sight2" "monster_demon_maggot_sight" + "snd_footstep" "monster_demon_maggot_footstep" +} + +model alphalabs1_maggot2 { + mesh models/md5/monsters/maggot3/maggot3.md5mesh + anim helldoll models/md5/cinematics/alphalabs1/maggot2.md5anim { + frame 212 sound_body monster_demon_maggot_footstep + frame 218 sound_body monster_demon_maggot_footstep + frame 222 sound_global monster_demon_maggot_sight + frame 230 sound_body monster_demon_maggot_footstep + frame 236 sound_body monster_demon_maggot_footstep + frame 253 sound_body monster_demon_maggot_footstep + frame 284 sound_body monster_demon_maggot_footstep + } +} + +entityDef alphalabs1_maggot2 { + "editor_color" "1 .5 .3" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 32" + + "inherit" "cin_base" + "model" "alphalabs1_maggot2" + "anim" "helldoll" + "sound_bone" "Shoulders" + + "snd_sight" "monster_demon_maggot_sight" + "snd_sight2" "monster_demon_maggot_sight" + "snd_footstep" "monster_demon_maggot_footstep" +} + +model alphalabs1_maggot3 { + inherit monster_demon_maggot + anim hydromag models/md5/cinematics/alphalabs1/hydromag.md5anim { + ai_no_turn + frame 1 disableGravity + frame 1 disableWalkIK + frame 49 enableGravity + frame 49 enableWalkIK + } +} + +entityDef alphalabs1_maggot3 { + "inherit" "monster_demon_maggot" + "model" "alphalabs1_maggot3" + "anim" "hydromag" + "sound_bone" "Shoulders" +} diff --git a/base/def/map_alphalabs2.def b/base/def/map_alphalabs2.def new file mode 100644 index 00000000..53745e6b --- /dev/null +++ b/base/def/map_alphalabs2.def @@ -0,0 +1,774 @@ + +// ELEVATOR ATTACK + +export fred { + options -prefix ENV_ + mesh maps/fred/alphalabs2/elevator_attack.mb -dest models/md5/environments/a2_elevatormesh + anim maps/fred/alphalabs2/elevator_attack.mb -range 1 1 -dest models/md5/environments/a2_elevatoridle + anim maps/fred/alphalabs2/elevator_attack.mb -dest models/md5/environments/a2_elevator +} + +model alphalabs2_maggot { + inherit monster_demon_maggot + + anim elevator models/md5/monsters/maggot3/a2_elevator.md5anim { + ai_no_turn + frame 1 call overrideLegs + frame 1 disableGravity + frame 1 disableWalkIK + frame 6 sound snd_sight + frame 8 sound snd_footstep + frame 12 sound snd_footstep + frame 20 sound snd_footstep + frame 39 sound snd_rattlecage + frame 71 sound snd_bendcage + frame 87 sound snd_sight2 + frame 92 sound snd_footstep + frame 99 sound snd_footstep + frame 103 sound snd_footstep + frame 108 sound snd_footstep + frame 111 sound snd_footstep + frame 116 sound snd_footstep + frame 119 sound snd_footstep + frame 123 sound snd_footstep + frame 130 sound snd_slip + frame 141 sound snd_sight + frame 144 sound snd_footstep + frame 148 sound snd_thud + frame 166 sound snd_footstep + frame 171 sound snd_footstep + frame 177 sound snd_footstep + frame 182 sound snd_footstep + frame 188 sound snd_footstep + frame 190 sound snd_sight2 + frame 194 sound snd_footstep + frame 195 enableGravity + frame 195 enableWalkIK + } +} + +entityDef alphalabs2_maggot { + "inherit" "monster_demon_maggot" + "scriptobject" "ai" + "nativeobject" "rvmMonsterDemonMaggot" + "model" "alphalabs2_maggot" + "anim" "elevator" + "sound_bone" "Shoulders" + + "snd_thud" "monster_demon_imp_thud" + "snd_rattlecage" "al2_maggot_rattlecage" +} + +model alphalabs2_imp { + inherit monster_demon_imp + + anim elevator models/md5/monsters/imp/a2_elevator.md5anim { + ai_no_turn + frame 1 call overrideLegs + frame 1 disableGravity + frame 1 disableWalkIK + frame 15 sound snd_footstep + frame 25 sound snd_footstep + frame 40 sound snd_footstep + frame 50 sound snd_footstep + frame 56 sound snd_footstep + frame 62 sound snd_footstep + frame 66 sound snd_footstep + frame 71 sound snd_footstep + frame 76 sound snd_footstep + frame 85 sound snd_footstep + frame 89 sound snd_footstep + frame 92 sound snd_footstep + frame 106 sound snd_footstep + frame 113 sound snd_footstep + frame 126 sound snd_footstep + frame 136 sound snd_footstep + frame 150 sound snd_footstep + frame 154 sound snd_footstep + frame 158 sound snd_footstep + frame 164 sound snd_footstep + frame 170 sound snd_sight + frame 173 sound snd_footstep + frame 179 sound snd_footstep + frame 185 enableGravity + frame 185 enableWalkIK + } +} + +entityDef alphalabs2_imp { + "inherit" "monster_demon_imp" + "model" "alphalabs2_imp" + "anim" "elevator" +} + +model alphalabs2_elevatorenv { + mesh models/md5/environments/a2_elevatormesh.md5mesh + anim elevatoridle models/md5/environments/a2_elevatoridle.md5anim + anim elevator models/md5/environments/a2_elevator.md5anim +} + +entityDef alphalabs2_elevatorenv { + "inherit" "cin_base" + "anim" "elevator" + "model" "alphalabs2_elevatorenv" +} + +//PINKY AND FATTY BATHROOM CINEMATIC anim 1 + +export fred { +// pinky + options -prefix PINKY_ + mesh maps/fred/bathroom/SCENE1.mb -range 1 2 -dest models/md5/cinematics/alphalabs2/scene1pinkymesh + anim maps/fred/bathroom/SCENE1.mb -range 1 2 -dest models/md5/cinematics/alphalabs2/scene1pinkyidle + anim maps/fred/bathroom/SCENE1.mb -range 1 566 -dest models/md5/cinematics/alphalabs2/scene1pinky + + +// fatty + options -prefix FATTY_ + + mesh maps/fred/bathroom/SCENE1.mb -range 1 2 -dest models/md5/cinematics/alphalabs2/scene1fatmesh + anim maps/fred/bathroom/SCENE1.mb -range 1 2 -dest models/md5/cinematics/alphalabs2/scene1fatidle + anim maps/fred/bathroom/SCENE1.mb -range 1 566 -dest models/md5/cinematics/alphalabs2/scene1fat + + +// uac_helm + options -prefix PLAYER_ -keep camera1 Gun1 MGUN -parent Neck Shldrs -parent MBod MGUN -parent MExt MGUN -parent MTrig MGUN -parent Trig Gun1 -parent Ext Gun1 -parent Bar Gun1 -parent Bod Gun1 -parent Cli Gun1 -parent Gun1 Lhand -parent camera1 Head -parent stump Shldrs + + mesh maps/fred/bathroom/SCENE1.mb -range 1 2 -dest models/md5/cinematics/alphalabs2/scene1uacmesh + anim maps/fred/bathroom/SCENE1.mb -range 1 2 -dest models/md5/cinematics/alphalabs2/scene1uacidle + anim maps/fred/bathroom/SCENE1.mb -range 1 566 -dest models/md5/cinematics/alphalabs2/scene1uacm +} + +model cin_anim1_pinky { + mesh models/md5/cinematics/alphalabs2/scene1pinkymesh.md5mesh + anim scene1pinkyidle models/md5/cinematics/alphalabs2/scene1pinkyidle.md5anim + anim scene1pinky models/md5/cinematics/alphalabs2/scene1pinky.md5anim { + + // PINKY SOUNDS + + // frame 143 sound snd_footstep + // frame 150 sound snd_handstep + // frame 175 sound snd_footstep + // frame 181 sound snd_handstep + // frame 198 sound snd_footstep + // frame 208 sound snd_handstep + // frame 244 sound snd_footstep + // frame 247 sound snd_handstep + // frame 270 sound snd_footstep + // frame 273 sound snd_handstep + // frame 295 sound snd_footstep + // frame 298 sound snd_handstep + // frame 318 sound snd_handstep + // frame 323 sound snd_footstep + // frame 373 sound snd_footstep + // frame 428 sound snd_handstep + // frame 490 sound snd_footstep + // frame 501 sound snd_handstep + // frame 524 sound snd_handstep + + frame 543 trigger func_fx_2 + + // frame 131 sound snd_gear + // frame 163 sound snd_gear + // frame 186 sound snd_gear + // frame 232 sound snd_gear + // frame 258 sound snd_gear + // frame 283 sound snd_gear + // frame 311 sound snd_gear + // frame 361 sound snd_gear + // frame 478 sound snd_gear + + // frame 190 sound snd_growl1 + // frame 330 sound snd_growl2 + // frame 399 sound snd_growl3 + // frame 429 sound snd_growl4 + // frame 444 sound snd_growl5 + + // frame 380 sound snd_nudge + // frame 459 sound snd_contact1 + // frame 460 sound snd_pullclose + // frame 516 sound snd_openforbite + // frame 538 sound snd_bite1 + // frame 551 sound snd_tear1 + } +} + +entityDef cin_anim1_pinky { + "inherit" "cin_base" + "anim" "scene1pinkyidle" + "model" "cin_anim1_pinky" + + //"snd_footstep" "pinkyfoot" + //"snd_handstep" "pinkyhand" + //"snd_gear" "pinkygear" + //"snd_growl1" "growl1" + //"snd_growl2" "growl2" + //"snd_growl3" "growl4" + //"snd_growl4" "growl5" + //"snd_growl5" "growl1" + //"snd_nudge" "pinkysnort1" + //"snd_contact1" "nosound" + //"snd_pullclose" "pinkyscrape1" + //"snd_openforbite" "nosound" + //"snd_bite1" "pinkybite_02" + //"snd_tear1" "pinkytear_05" +} + +model cin_anim1_fatty { + mesh models/md5/cinematics/alphalabs2/scene1fatmesh.md5mesh + anim scene1fatidle models/md5/cinematics/alphalabs2/scene1fatidle.md5anim + anim scene1fat models/md5/cinematics/alphalabs2/scene1fat.md5anim +} + +entityDef cin_anim1_fatty { + "inherit" "cin_base" + "anim" "scene1fatidle" + "model" "cin_anim1_fatty" +} + +model cin_anim1_uacm { + mesh models/md5/cinematics/alphalabs2/scene1uacmesh.md5mesh + skin skins/player/pistol.skin + anim scene1uacmidle models/md5/cinematics/alphalabs2/scene1uacidle.md5anim + anim scene1uacm models/md5/cinematics/alphalabs2/scene1uacm.md5anim { + frame 7 sound player_sounds_footstep + frame 15 sound player_sounds_footstep + frame 25 sound player_sounds_footstep + frame 33 sound player_sounds_footstep + frame 166 sound player_sounds_footstep + frame 209 sound player_sounds_footstep + frame 260 sound player_sounds_footstep + frame 310 sound player_sounds_footstep + } +} + +entityDef cin_anim1_uacm { + "inherit" "cin_base" + "anim" "scene1uacmidle" + "sound_bone" "Body" + "model" "cin_anim1_uacm" +} + +//PINKY AND FATTY BATHROOM CINEMATIC anim 2 + +export fred { + // pinky + + options -prefix PINKY_ + mesh maps/fred/bathroom/SCENE2.mb -dest models/md5/cinematics/alphalabs2/scene6_pinkymesh + anim maps/fred/bathroom/SCENE2.mb -prefix PINKY_ -range 515 552 -dest models/md5/cinematics/alphalabs2/scene6_pinkyanim + + // fatty + + options -prefix FAT_ + mesh maps/fred/bathroom/SCENE2.mb -dest models/md5/cinematics/alphalabs2/scene6_fattymesh + anim maps/fred/bathroom/SCENE2.mb -prefix FAT_ -range 515 552 -dest models/md5/cinematics/alphalabs2/scene6_fattyanim + + // camera + camera maps/fred/bathroom/SCENE1.mb -dest models/md5/cinematics/alphalabs2/scene1cams + camera maps/fred/bathroom/SCENE2.mb -range 515 552 -dest models/md5/cinematics/alphalabs2/scene2cam + camera maps/fred/bathroom/SCENE3.mb -range 553 900 -dest models/md5/cinematics/alphalabs2/scene3cams + camera maps/fred/bathroom/SCENE4.mb -range 50 213 -dest models/md5/cinematics/alphalabs2/cam9a + +/************ +1 = 1-170 +2 = 171-218 +3 = 219-268 +4 = 269-530 +5 = 531-566 +6 = 515-552 +7 = 553-630 +8 = 631-681 +9 = 682-900 + +************/ +} + +model cin_anim2_pinky { + mesh models/md5/cinematics/alphalabs2/scene6_pinkymesh.md5mesh + anim scene6pinky models/md5/cinematics/alphalabs2/scene6_pinkyanim.md5anim { + //frame 37 sound pinkytear_02 + } +} + +entityDef cin_anim2_pinky { + "inherit" "cin_base" + "anim" "scene6pinky" + "model" "cin_anim2_pinky" +} + +model cin_anim2_fatty { + mesh models/md5/cinematics/alphalabs2/scene6_fattymesh.md5mesh + anim scene6fat models/md5/cinematics/alphalabs2/scene6_fattyanim.md5anim +} + +entityDef cin_anim2_fatty { + "inherit" "cin_base" + "anim" "scene6fat" + "model" "cin_anim2_fatty" +} + +entityDef cin_e3bathroom_cam { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + + "spawnclass" "idCameraAnim" + + "anim scene1cams" "models/md5/cinematics/alphalabs2/scene1cams.md5camera" + "anim scene2cam" "models/md5/cinematics/alphalabs2/scene2cam.md5camera" + "anim scene3cams" "models/md5/cinematics/alphalabs2/scene3cams.md5camera" + "anim scene9acam" "models/md5/cinematics/alphalabs2/cam9a.md5camera" +} + +//PINKY AND FATTY BATHROOM CINEMATIC anim 3 + +export fred { + + // pinky + + options -prefix PINKY_ + mesh maps/fred/bathroom/SCENE3.mb -dest models/md5/cinematics/alphalabs2/scene7_pinkymesh + anim maps/fred/bathroom/SCENE3.mb -prefix PINKY_ -range 553 900 -dest models/md5/cinematics/alphalabs2/scene7_pinkyanim + + + + // fatty + + options -prefix FAT_ + mesh maps/fred/bathroom/SCENE3.mb -dest models/md5/cinematics/alphalabs2/scene7_fattymesh + anim maps/fred/bathroom/SCENE3.mb -prefix FAT_ -range 553 900 -dest models/md5/cinematics/alphalabs2/scene7_fattyanim + + } + +model cin_anim3_pinky { + mesh models/md5/cinematics/alphalabs2/scene7_pinkymesh.md5mesh + anim scene7pinky models/md5/cinematics/alphalabs2/scene7_pinkyanim.md5anim { + + // frame 6 sound snd_swingflesh1 + // frame 31 sound snd_swingflesh2 + // frame 80 sound snd_swingflesh3 + // frame 92 sound snd_fleshtoss + // frame 108 sound snd_fleshgulp + // frame 110 sound snd_chomp + // frame 132 sound snd_chew1 + // frame 154 sound snd_chew2 + // frame 175 sound snd_swallow + // frame 188 sound snd_bite2 + // frame 199 sound snd_contact2 + // frame 207 sound snd_tear2 + // frame 234 sound snd_chew3 + // frame 240 sound snd_contact3 + // frame 258 sound snd_bite3 + // frame 276 sound snd_chew4 + // frame 294 sound snd_chew5 + + frame 1 trigger func_fx_1 + frame 2 fx fx/blooddrip1.fx + + frame 190 trigger func_fx_1 + frame 191 trigger func_fx_2 + + frame 280 trigger func_fx_1 + } +} + +entityDef cin_anim3_pinky { + "inherit" "cin_base" + "anim" "scene7pinky" + "model" "cin_anim3_pinky" + + //"snd_swingflesh1" "nosound" + //"snd_swingflesh2" "nosound" + //"snd_swingflesh3" "nosound" + //"snd_fleshtoss" "nosound" + //"snd_fleshgulp" "pinkyswallow_01" + //"snd_chomp" "pinkybite_02" + //"snd_chew1" "pinkybite_03" + //"snd_chew2" "pinkybite_04" + //"snd_swallow" "pinkyswallow_02" + //"snd_bite2" "pinkybite_03" + //"snd_contact2" "nosound" + //"snd_tear2" "pinkytear_02" + //"snd_chew3" "pinkybite_01" + //"snd_contact3" "nosound" + //"snd_bite3" "pinkybite_02" + //"snd_chew4" "pinkybite_04" + //"snd_chew5" "pinkybite_03" +} + +model cin_anim3_fatty { + mesh models/md5/cinematics/alphalabs2/scene7_fattymesh.md5mesh + anim scene7fat models/md5/cinematics/alphalabs2/scene7_fattyanim.md5anim { + +// FATTY SOUNDS + + // frame 5 sound snd_fatbounce1 + // frame 13 sound snd_fatbounce2 + // frame 18 sound snd_fleshsettle + // frame 22 sound snd_fatbounce3 + } +} + +entityDef cin_anim3_fatty { + "inherit" "cin_base" + "anim" "scene7fat" + "model" "cin_anim3_fatty" + +// FATTY SOUNDS + //"snd_fatbounce1" "flesh_01" + //"snd_fatbounce2" "flesh_02" + //"snd_fleshsettle" "flesh_03" + //"snd_fatbounce3" "flesh_01" +} + +//PINKY AND FATTY BATHROOM CINEMATIC anim 4 + +export fred { + // pinky + + options -prefix PINKY_ + + mesh maps/fred/bathroom/SCENE4.mb -range 50 213 -dest models/md5/cinematics/alphalabs2/scene9a_pinky + + anim maps/fred/bathroom/SCENE4.mb -range 50 213 -dest models/md5/cinematics/alphalabs2/scene9a_pinky + + // fatty + + options -prefix FAT_ + mesh maps/fred/bathroom/SCENE4.mb -range 50 213 -dest models/md5/cinematics/alphalabs2/scene9a_fatty + anim maps/fred/bathroom/SCENE4.mb -range 50 213 -dest models/md5/cinematics/alphalabs2/scene9a_fatty + + // uac_helm + + //options -prefix PLAYER_ + + options -prefix PLAYER_ -keep camera1 Gun1 MGUN -parent Neck Shldrs -parent MBod MGUN -parent MExt MGUN -parent MTrig MGUN -parent Trig Gun1 -parent Ext Gun1 -parent Bar Gun1 -parent Bod Gun1 -parent Cli Gun1 -parent Gun1 Lhand -parent camera1 Head -parent stump Shldrs + anim maps/fred/bathroom/SCENE4.mb -range 50 213 -dest models/md5/cinematics/alphalabs2/scene9a_uacm +} + +model cin_anim9a_pinky { + mesh models/md5/cinematics/alphalabs2/scene9a_pinky.md5mesh + anim scene9apinky models/md5/cinematics/alphalabs2/scene9a_pinky.md5anim { + // frame 32 sound snd_slurp + // frame 39 sound snd_swingflesh4 + // frame 40 sound snd_growl6 + // frame 68 sound snd_handstep + // frame 69 sound snd_footstep + // frame 74 sound snd_growl7 + // frame 77 sound snd_handstep + // frame 86 sound snd_handstep + // frame 91 sound snd_footstep + // frame 105 sound snd_footstep + // frame 122 sound snd_growl8 + // frame 131 sound snd_footstep + // frame 138 sound snd_growl9 + // frame 144 sound snd_handstep + // frame 154 sound snd_footstep + // frame 160 sound snd_handstep + } +} + +entityDef cin_anim9a_pinky { + "inherit" "cin_base" + "anim" "scene9apinky" + "model" "cin_anim9a_pinky" + + //"snd_swingflesh4" "flesh_01" + //"snd_handstep" "pinkyhand" + //"snd_footstep" "pinkyfoot" + //"snd_slurp" "pinkyswallow_03" + //"snd_growl6" "nosound" + //"snd_growl7" "nosound" + //"snd_growl8" "nosound" + //"snd_growl9" "nosound" +} + +model cin_anim9a_fatty { + mesh models/md5/cinematics/alphalabs2/scene9a_fatty.md5mesh + anim scene9afat models/md5/cinematics/alphalabs2/scene9a_fatty.md5anim { + // frame 5 sound snd_fatbounce1 + // frame 18 sound snd_fatbounce2 + } +} + +entityDef cin_anim9a_fatty { + "inherit" "cin_base" + "anim" "scene9afat" + "model" "cin_anim9a_fatty" + //"snd_fatbounce1" "flesh_02" + //"snd_fatbounce2" "flesh_03" +} + +model cin_anim9a_uacm { + mesh models/md5/cinematics/alphalabs2/scene1uacmesh.md5mesh + skin skins/player/pistol.skin + anim scene9auacm models/md5/cinematics/alphalabs2/scene9a_uacm.md5anim { + frame 99 sound player_sounds_footstep + frame 132 sound player_sounds_footstep + frame 140 sound player_sounds_footstep + frame 158 sound player_sounds_footstep + } +} + +entityDef cin_anim9a_uacm { + "inherit" "cin_base" + "anim" "scene9auacm" + "sound_bone" "Body" + "model" "cin_anim9a_uacm" +} + +//PINKY AND FATTY BATHROOM CINEMATIC anim 5 + +export fred { + + // pinky + + options -prefix PINKY_ + mesh maps/fred/bathroom/SCENE5.mb -prefix PINKY_ -dest models/md5/cinematics/alphalabs2/scene10_pinkymesh + anim maps/fred/bathroom/SCENE5.mb -prefix PINKY_ -dest models/md5/cinematics/alphalabs2/scene10_pinkyanim + + // fatty + + options -prefix FAT_ + mesh maps/fred/bathroom/SCENE5.mb -prefix FAT_ -dest models/md5/cinematics/alphalabs2/scene10_fattymesh + anim maps/fred/bathroom/SCENE5.mb -prefix FAT_ -dest models/md5/cinematics/alphalabs2/scene10_fattyanim + + } + +model cin_anim5_pinky { + mesh models/md5/cinematics/alphalabs2/scene10_pinkymesh.md5mesh + anim scene10pinky models/md5/cinematics/alphalabs2/scene10_pinkyanim.md5anim +} + +entityDef cin_anim5_pinky { + "inherit" "cin_base" + "anim" "scene10pinky" + "model" "cin_anim5_pinky" +} + +model cin_anim5_fatty { + mesh models/md5/cinematics/alphalabs2/scene10_fattymesh.md5mesh + anim scene10fat models/md5/cinematics/alphalabs2/scene10_fattyanim.md5anim +} + +entityDef cin_anim5_fatty { + "inherit" "cin_base" + "anim" "scene10fat" + "model" "cin_anim5_fatty" +} + +/********** +Ed Killer +**********/ + + +model alphalabs2_cin_imp { + mesh models/md5/monsters/imp/imp.md5mesh + anim edkiller models/md5/cinematics/alphalabs2/edkiller.md5anim + +} + +entityDef alphalabs2_cin_imp { + "inherit" "cin_base" + "anim" "edkiller" + "model" "alphalabs2_cin_imp" +} + + +model alphalabs2_scientist1_head { + mesh models/md5/characters/npcs/heads/h1.md5mesh + channel eyelids ( Ruplid Rlolid Luplid Llolid ) + + anim blink models/md5/characters/npcs/heads/h1blink.md5anim + anim stand models/md5/characters/npcs/heads/h1idle.md5anim + anim dead models/md5/characters/npcs/heads/h1death.md5anim + + anim lips_dontshoot models/md5/heads/old/alphalabs2/scientist_trigger_1.md5anim { + frame 1 sound_voice alpha_labs2_scientist_trigger_1 + } + anim lips_canhelp models/md5/heads/old/alphalabs2/scientist_trigger_2.md5anim { + frame 1 sound_voice alpha_labs2_scientist_trigger_2 + } + anim lips_lightsout models/md5/heads/old/alphalabs2/scientist_trigger_3.md5anim { + frame 1 sound_voice alpha_labs2_scientist_trigger_3 + } + anim lips_stayclose models/md5/heads/old/alphalabs2/scientist_trigger_4.md5anim { + frame 1 sound_voice alpha_labs2_scientist_trigger_4 + } + anim lips_electro models/md5/heads/old/alphalabs2/scientist_trigger_5.md5anim { + frame 1 sound_voice alpha_labs2_scientist_trigger_5 + } + anim lips_theresone models/md5/heads/old/alphalabs2/scientist_trigger_6.md5anim { + frame 1 sound_voice alpha_labs2_scientist_trigger_6 + } + anim lips_hangon models/md5/heads/old/alphalabs2/scientist_trigger_7.md5anim { + frame 1 sound_voice alpha_labs2_scientist_trigger_7 + } + anim lips_watchit models/md5/heads/old/alphalabs2/scientist_trigger_8.md5anim { + frame 1 sound_voice alpha_labs2_scientist_trigger_8 + } + anim lips_whatwasthat models/md5/heads/old/alphalabs2/scientist_trigger_9.md5anim { + frame 1 sound_voice alpha_labs2_scientist_trigger_9 + } + anim lips_theexit models/md5/heads/old/alphalabs2/scientist_trigger_11.md5anim { + frame 1 sound_voice alpha_labs2_scientist_trigger_11 + } + anim lips_canttalknow models/md5/heads/old/alphalabs2/scientist_secondary_1.md5anim { + frame 1 sound_voice alpha_labs2_scientist_secondary1 + } + anim lips_itisntfar models/md5/heads/old/alphalabs2/scientist_secondary_2.md5anim { + frame 1 sound_voice alpha_labs2_scientist_secondary2 + } + anim lips_hurry1 models/md5/heads/old/alphalabs2/scientist_secondary_3.md5anim { + frame 1 sound_voice alpha_labs2_scientist_hurry1 + } + anim lips_hurry2 models/md5/heads/old/alphalabs2/scientist_secondary_4.md5anim { + frame 1 sound_voice alpha_labs2_scientist_hurry2 + } + anim lips_ohgod models/md5/heads/old/alphalabs2/scientist_attacked_1.md5anim { + frame 1 sound_voice alpha_labs2_scientist_attacked1 + } + anim lips_killit models/md5/heads/old/alphalabs2/scientist_attacked_2.md5anim { + frame 1 sound_voice alpha_labs2_scientist_attacked2 + } + anim lips_wecantstop models/md5/heads/old/alphalabs2/scientist_primary_1.md5anim { + frame 1 sound_voice alpha_labs2_scientist_primary + } + anim lips_ohthankgod models/md5/heads/old/alphalabs2/scientist_saved_1.md5anim { + frame 1 sound_voice alpha_labs2_scientist_saved1 + } + anim lips_thatwasclose models/md5/heads/old/alphalabs2/scientist_saved_2.md5anim { + frame 1 sound_voice alpha_labs2_scientist_saved2 + } + anim killme models/md5/heads/old/alphalabs2/scientist_trigger_10.md5anim { + frame 1 sound_voice alpha_labs2_scientist_trigger_10 + frame 11 call map_mc_underground::sci_switch_head_to_stump + } +} + +export james { + options -prefix SUIT_ -keep Lknee Rknee Body2 headcontrol neckcontrol loneckcontrol lanternlight SPINNER -parent headcontrol neckcontrol -parent neckcontrol loneckcontrol -parent loneckcontrol Shoulders -parent tabletpc Lhand1 -parent flashlight Rhand1 -parent pda Rhand1 -parent lantern Rhand1 -parent lanternlight lantern -parent rshldrpad Shoulders -parent lshldrpad Shoulders -parent shield Lloarm -parent pistol Rhand1 -parent shotgun Rhand1 -parent machinegun Rhand1 -parent wrench Rhand1 -parent cola Rhand1 -parent foamcup Rhand1 -parent dufflebag Rhand1 -parent Body2 Body -parent Hips Body2 -parent SPINNER Body2 -parent Waist SPINNER + + addoptions -align ALL + + mesh models/characters/male_npc/cycles/idles/makemesh.mb -dest models/md5/characters/npcs/lanternskeleton -keepmesh skeletonmesh -keep Lball_r Ltoe_r Rball_r Rtoe_r Belly Lrib Rrib lantern Ruparm_orbit Luparm_orbit + + addoptions -keepmesh labcoatmesh + addoptions -keepmesh lanternmesh + addoptions -keepmesh lanternlampmesh + addoptions -keepmesh lanternflare1mesh + addoptions -keepmesh lanternflare2mesh + + mesh models/characters/male_npc/cycles/idles/makemesh.mb -dest models/md5/characters/npcs/lanternlabcoatbody + anim models/characters/male_npc/cycles/idles/af_pose.mb -dest models/md5/characters/npcs/lanternaf_pose + anim models/characters/male_npc/cycles/idles/lantern_stand.mb -dest models/md5/characters/npcs/lantern_stand + anim models/characters/male_npc/cycles/idles/lantern_cower_center.mb -dest models/md5/characters/npcs/lantern_cower_center + anim models/characters/male_npc/cycles/idles/lantern_cower_right.mb -dest models/md5/characters/npcs/lantern_cower_right + anim models/characters/male_npc/cycles/idles/lantern_cower_left.mb -dest models/md5/characters/npcs/lantern_cower_left + anim models/characters/male_npc/cycles/walks/lantern_walk.mb -dest models/md5/characters/npcs/lantern_walk + anim models/characters/male_npc/cycles/wounded/lantern_pain.mb -dest models/md5/characters/npcs/lantern_pain + anim models/characters/male_npc/cycles/idles/lantern_turn_right.mb -dest models/md5/characters/npcs/lantern_turn_right + anim models/characters/male_npc/cycles/idles/lantern_turn_left.mb -dest models/md5/characters/npcs/lantern_turn_left + anim models/characters/male_npc/cycles/idles/lantern_turn_right_rotation180.mb -dest models/md5/characters/npcs/lantern_turn_right_rotation180 + anim models/characters/male_npc/cycles/idles/lantern_turn_left_rotation180.mb -dest models/md5/characters/npcs/lantern_turn_left_rotation180 + anim models/characters/male_npc/cycles/working/look_in_hole_scratch_head.mb -dest models/md5/characters/npcs/lantern_look_in_hole_scratch_head + anim models/characters/male_npc/cycles/working/look_in_hole.mb -dest models/md5/characters/npcs/lantern_look_in_hole + anim maps/fred/alphalabs2/ed_death.mb -dest models/md5/characters/npcs/lantern_death +} + +model alphalabs2_scientist1 { + mesh models/md5/characters/npcs/lanternlabcoatbody.md5mesh + channel torso ( *Waist ) + channel legs ( *origin Body2 *Hips -*Waist ) + + anim af_pose models/md5/characters/npcs/lanternaf_pose.md5anim + anim ik_pose models/md5/characters/npcs/lanternaf_pose.md5anim + + anim stand models/md5/characters/npcs/lantern_stand.md5anim + anim cower models/md5/characters/npcs/lantern_cower_center.md5anim,models/md5/characters/npcs/lantern_cower_left.md5anim,models/md5/characters/npcs/lantern_cower_right.md5anim + anim working1 models/md5/characters/npcs/lantern_look_in_hole.md5anim { + ai_no_turn + } + anim working2 models/md5/characters/npcs/lantern_look_in_hole.md5anim { + ai_no_turn + } + anim walk models/md5/characters/npcs/lantern_walk.md5anim { + frame 3 sound_body snd_footstep + frame 17 sound_body snd_footstep + frame 32 sound_body snd_footstep + frame 46 sound_body snd_footstep + } + anim pain models/md5/characters/npcs/lantern_pain.md5anim + anim pain_head models/md5/characters/npcs/lantern_pain.md5anim + anim pain_chest models/md5/characters/npcs/lantern_pain.md5anim + anim pain_left_arm models/md5/characters/npcs/lantern_pain.md5anim + anim pain_right_arm models/md5/characters/npcs/lantern_pain.md5anim + anim turn_left models/md5/characters/npcs/lantern_turn_left.md5anim, models/md5/characters/npcs/lantern_turn_left_rotation180.md5anim { + anim_turn + } + + anim turn_right models/md5/characters/npcs/lantern_turn_right.md5anim, models/md5/characters/npcs/lantern_turn_right_rotation180.md5anim { + anim_turn + } + anim killme models/md5/characters/npcs/lantern_death.md5anim { + frame 18 event kill + } +} + +entityDef alphalabs2_scientist1 { + "inherit" "npc_base" + "model" "alphalabs2_scientist1" + "skin" "skins/characters/npcs/body_labcoat_lantern.skin" + "ragdoll" "char_lanternguy" + "scriptobject" "ai" + "nativeobject" "rvmAIAlphaLabs2Scientist1" + "size" "44 44 74" + "model_gib" "models/md5/characters/npcs/lanternskeleton.md5mesh" + + "turn_rate" "190" + "head_focus_rate" "0.05" + + "look_joint Waist" "0 0 0" + "look_joint Chest" "0.1 0.1 0" + "look_joint Shoulders" "0.2 0.2 0" + "look_joint headcontrol" "0.4 0.4 0" + + "copy_joint_world eyecontrol" "" + + "def_head" "alphalabs2_scientist1_head" + "head_joint" "Shoulders" + + "def_dropDeathItem" "moveable_item_lantern" + "dropDeathItemJoint" "lantern" + "dropDeathItemRotation" "0 0 0" + "skin_dropDeath" "skins/characters/npcs/body_labcoat_no_lantern.skin" + + "snd_death" "" + "snd_deathscene" "alpha_labs2_scientist_trigger_10" // Death screams, flesh ripping sounds + "snd_talk_primary" "" + "snd_talk_secondary" "" + "snd_talk_trigger" "" +} + +model alphalabs2_marine_helmet_p90 { + inherit npc_marine_w_mgun + anim run1 models/md5/chars/mgrun.md5anim + anim run2 models/md5/chars/mgrun.md5anim + anim runstoplookback models/md5/chars/mgrunstoplookback.md5anim +} + +entityDef alphalabs2_marine_helmet_p90 { + "inherit" "npc_base" + "model" "alphalabs2_marine_helmet_p90" + "def_head" "head_marine_helmet" + "head_joint" "Shoulders" + "ik_numlegs" "0" + "no_cower" "1" + "copy_joint_world eyecontrol" "" + "model_gib" "" + + "def_dropDeathItem" "moveable_item_machinegun" + "dropDeathItemJoint" "machinegun" + "skin_dropDeath" "skins/characters/npcs/marine_helmet.skin" +} \ No newline at end of file diff --git a/base/def/map_alphalabs3.def b/base/def/map_alphalabs3.def new file mode 100644 index 00000000..d8799d03 --- /dev/null +++ b/base/def/map_alphalabs3.def @@ -0,0 +1,4 @@ + +// ENTITIES MOVED TO ALPHALABS4 + + diff --git a/base/def/map_alphalabs4.def b/base/def/map_alphalabs4.def new file mode 100644 index 00000000..a7f4d07f --- /dev/null +++ b/base/def/map_alphalabs4.def @@ -0,0 +1,320 @@ +/*********************************************************************** + +FRAGCHAMBER_SCIENTIST + +***********************************************************************/ + +model alphalabs3_fragchamber_scientist_head { + inherit head_old + anim panic models/md5/characters/npcs/heads/alphalabs4/frag_scientist_trigger5.md5anim { + frame 1 sound_voice snd_talk_primary + } + anim relief models/md5/characters/npcs/heads/alphalabs4/frag_scientist_trigger4.md5anim { + frame 1 sound_voice snd_talk_secondary + } + anim greeting models/md5/characters/npcs/heads/alphalabs4/frag_scientist_trigger.md5anim { + frame 1 sound_voice snd_talk_trigger + frame 100 sound_voice snd_talk_trigger2 + } + anim thanks models/md5/characters/npcs/heads/alphalabs4/frag_scientist_trigger13.md5anim { + frame 1 sound_voice snd_talk_thanks + } +} + +model alphalabs3_fragchamber_scientist { + inherit npc_labcoat + anim stand models/md5/chars/stand.md5anim + anim greeting models/md5/chars/alphalabs4/hey_you.md5anim + anim panic models/md5/chars/alphalabs4/freaked_out.md5anim + anim relief models/md5/chars/alphalabs4/talk_secondary2.md5anim + anim thanks models/md5/chars/alphalabs4/walk_thankyou.md5anim { + frame 3 sound_body snd_footstep + frame 17 sound_body snd_footstep + frame 32 sound_body snd_footstep + frame 46 sound_body snd_footstep + } + +} + +entityDef alphalabs3_fragchamber_scientist { + "inherit" "npc_base" + "model" "alphalabs3_fragchamber_scientist" + + "no_cower" "1" + "ignore_obstacles" "1" + "def_head" "alphalabs3_fragchamber_scientist_head" + "head_joint" "Shoulders" + + "ik_numLegs" "2" + "ik_footSize" "0" + + //"look_joint headrot" "0 0 0" + "talktime" "0" + + "look_joint Waist" "0 0 0" + "look_joint Chest" ".1 .1 0" + "look_joint Shoulders" ".3 .3 0" + "look_joint headcontrol" ".5 .5 0" + "look_joint Ruparm" "0 0 0" + "look_joint Luparm" "0 0 0" + + "cinematic" "1" + + "copy_joint_world eyecontrol" "" + "eye_turn_min" "-20 -30 0" + "eye_turn_max" "20 30 0" + + "snd_talk_trigger" "frag_scientist_trigger" // "Can someone help me?" + "snd_talk_trigger2" "frag_scientist_trigger2" // "Release the door locks" + "snd_talk_primary" "frag_scientist_trigger5" // "Hey! What are you doing! Are you trying to kill me?" + "snd_talk_secondary" "frag_scientist_trigger4" // "Oh that was close" + "snd_talk_thanks" "frag_scientist_trigger13" // "Thank you!" + + "talk0_blendin" "8" + "talk0_blendout" "8" + "talk1_blendin" "8" + "talk1_blendout" "8" + "talk2_blendin" "8" + "talk2_blendout" "8" +} + +model alphalabs3_fragchamber_skeleton { + inherit npc_skeleton + mesh models/md5/chars/skeleton.md5mesh + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER eyecontrol chair) + + anim die_start models/md5/chars/alphalabs4/die_start.md5anim + anim die models/md5/chars/alphalabs4/die.md5anim + anim die_end models/md5/chars/alphalabs4/die_end.md5anim + +} + +entityDef alphalabs3_fragchamber_skeleton { + "inherit" "npc_base" + "model" "alphalabs3_fragchamber_skeleton" + "sound_bone" "Chest" + "cinematic" "1" + + "def_head" "head_skull" + "head_joint" "Shoulders" + "copy_joint_world eyecontrol" "" +} + + +model alphalabs3_fragchamber_scientist2_head { + inherit head_old + anim talk_primary models/md5/characters/npcs/heads/alphalabs4/frag_scientist_primary.md5anim { + frame 1 sound_voice snd_talk_primary + } + + anim talk_secondary1 models/md5/characters/npcs/heads/alphalabs4/frag_scientist_secondary.md5anim { + frame 1 sound_voice snd_talk_secondary + } + + anim talk_secondary2 models/md5/characters/npcs/heads/alphalabs4/frag_scientist_secondary2.md5anim { + frame 1 sound_voice snd_talk_secondary2 + } + + anim trigger13 models/md5/characters/npcs/heads/alphalabs4/frag_scientist_trigger13.md5anim { + frame 1 sound_voice frag_scientist_trigger13 + } + + anim talk_line1 models/md5/characters/npcs/heads/alphalabs4/frag_scientist_trigger10.md5anim { + frame 1 sound_voice snd_line1 + } + + anim talk_line2 models/md5/characters/npcs/heads/alphalabs4/frag_scientist_trigger11.md5anim { + frame 1 sound_voice snd_line2 + } + + anim talk_line3 models/md5/characters/npcs/heads/alphalabs4/frag_scientist_trigger12.md5anim { + frame 1 sound_voice snd_line3 + } +} + +model alphalabs3_fragchamber_scientist2 { + inherit npc_labcoat + anim pda_idle_look models/md5/chars/PDA_idle.md5anim + anim stand models/md5/chars/PDA_idle.md5anim + anim idle models/md5/chars/PDA_talk.md5anim + anim talk_trigger models/md5/chars/PDA_talk.md5anim + anim talk_primary models/md5/chars/PDA_talk.md5anim + anim talk_secondary1 models/md5/chars/PDA_talk.md5anim + anim talk_secondary2 models/md5/chars/PDA_talk.md5anim + anim talk_line1 models/md5/chars/PDA_talk.md5anim + anim talk_line2 models/md5/chars/PDA_talk.md5anim + anim talk_line3 models/md5/chars/PDA_talk.md5anim +} + +entityDef alphalabs3_fragchamber_scientist2 { + "inherit" "npc_base" + "skin" "skins/characters/npcs/alphalabs3_fragchamber_scientist2.skin" + "model" "alphalabs3_fragchamber_scientist2" + "def_head" "alphalabs3_fragchamber_scientist2_head" + "head_joint" "Shoulders" + + "talk_no_turn" "1" + "talktime" "0" + + "copy_joint_world eyecontrol" "" + + "neverDormant" "1" // FIXME: character is intersecting door in map and goes dormant. this should be removed after we fix that. + + "ik_numLegs" "2" + "ik_footSize" "0" + + "def_attach" "pda_alphalabs3_fragchamber_scientist2" + "def_dropDeathItem" "pda_alphalabs3_fragchamber_scientist2" + "dropDeathItemJoint" "pda" + "dropDeathItemRotation" "0 0 0" + + "cinematic" "1" + + "look_joint Waist" "0 0 0" + "look_joint Chest" ".1 .1 0" + "look_joint Shoulders" ".3 .3 0" + "look_joint headcontrol" ".5 .5 0" + "look_joint Ruparm" "0 0 0" + "look_joint Luparm" "0 0 0" + + "eye_turn_min" "-20 -30 0" + "eye_turn_max" "20 30 0" + + "snd_line1" "frag_scientist_trigger10" + "snd_line2" "frag_scientist_trigger11" + "snd_line3" "frag_scientist_trigger12" + "snd_talk_trigger" "frag_scientist_trigger" + "snd_talk_primary" "frag_scientist_primary" + "snd_talk_secondary" "frag_scientist_secondary" + "snd_talk_secondary2" "frag_scientist_secondary2" + + "talk0_blendin" "8" + "talk0_blendout" "8" + "talk1_blendin" "8" + "talk1_blendout" "8" + "talk2_blendin" "8" + "talk2_blendout" "8" +} + + +// CINEMATICS + +export fred { + camera maps/fred/alphalabs3/playershot1.mb -dest models/md5/cinematics/alphalabs3/vagaryintro_cam1 + camera maps/fred/alphalabs3/vagaryintro2.mb -dest models/md5/cinematics/alphalabs3/vagaryintro_cam2 + +} + +model alphalabs3_vagaryintro_vagary { + mesh models/md5/monsters/vagary/vagary.md5mesh + anim vagaryintro1 models/md5/cinematics/alphalabs3/vagintro_vagary1.md5anim + anim vagaryintro2 models/md5/cinematics/alphalabs3/vagintro_vagary2.md5anim { + frame 21 sound_body monster_demon_vagary_step + frame 25 sound_body monster_demon_vagary_step + frame 26 sound_voice monster_demon_vagary_sigh + frame 31 sound_body monster_demon_vagary_step + frame 38 sound_body monster_demon_vagary_step + frame 44 sound_body monster_demon_vagary_step + frame 50 sound_body monster_demon_vagary_step + frame 55 sound_body monster_demon_vagary_step + frame 77 sound_body monster_demon_vagary_step + frame 80 sound_body monster_demon_vagary_step + frame 84 sound_body monster_demon_vagary_step + frame 90 sound_body monster_demon_vagary_step + frame 102 sound_body monster_demon_vagary_step + frame 124 sound_body monster_demon_vagary_step + frame 134 sound_body monster_demon_vagary_step + frame 137 sound_body monster_demon_vagary_step + frame 145 sound_body monster_demon_vagary_step + frame 151 sound_body monster_demon_vagary_step + frame 159 sound_body monster_demon_vagary_step + frame 166 sound_voice monster_demon_vagary_groan + frame 166 sound_body monster_demon_vagary_step + frame 175 sound_body monster_demon_vagary_step + frame 180 sound_body monster_demon_vagary_step + frame 184 sound_body monster_demon_vagary_step + frame 190 sound_body monster_demon_vagary_step + frame 195 sound_body monster_demon_vagary_step + frame 200 sound_body monster_demon_vagary_step + frame 205 sound_body monster_demon_vagary_step + frame 225 sound_body monster_demon_vagary_step + frame 230 sound_body monster_demon_vagary_step + frame 235 sound_voice monster_demon_vagary_sigh2 + frame 236 sound_body monster_demon_vagary_step + frame 243 sound_body monster_demon_vagary_step + frame 250 sound_body monster_demon_vagary_step + frame 259 sound_body monster_demon_vagary_step + frame 262 sound_body monster_demon_vagary_step + frame 270 sound_body monster_demon_vagary_step + frame 281 sound_body monster_demon_vagary_step + frame 292 sound_body monster_demon_vagary_step + frame 295 sound_voice monster_boss_vagary_chatter_combat + frame 298 sound_body monster_demon_vagary_step + frame 311 sound_body monster_demon_vagary_step + frame 320 sound_body monster_demon_vagary_step + frame 369 sound_body monster_demon_vagary_step + frame 380 sound_body monster_demon_vagary_step + frame 385 sound_body monster_demon_vagary_step + frame 390 sound_body monster_demon_vagary_step + frame 395 sound_body monster_demon_vagary_step + frame 400 sound_body monster_demon_vagary_step + frame 404 sound_body monster_demon_vagary_step + frame 410 sound_body monster_demon_vagary_step + frame 415 sound_body monster_demon_vagary_step + frame 418 sound_body monster_demon_vagary_step + + frame 342 sound_voice monster_boss_vagary_sight + } + + anim retreat models/md5/cinematics/alphalabs3/vagintro_retreat.md5anim +} + +entityDef alphalabs3_vagaryintro_vagary { + "inherit" "cin_base" + "anim" "vagaryintro" + "model" "alphalabs3_vagaryintro_vagary" + "sound_bone" "Chest" + "cinematic" "1" +} + +model alphalabs3_vagaryintro_player { + mesh models/md5/characters/player/mocap/wepplayer.md5mesh + skin skins/player/shotgun.skin + + anim vagaryintro1 models/md5/cinematics/alphalabs3/vagintro_player1.md5anim { + frame 1 sound_global alpha4_vagary_intro_music + frame 4 sound_body player_sounds_footstep + frame 17 sound_body player_sounds_footstep + frame 31 sound_body player_sounds_footstep + frame 46 sound_body player_sounds_footstep + frame 59 sound_body player_sounds_footstep + frame 74 sound_body player_sounds_footstep + frame 87 sound_body player_sounds_footstep + frame 103 sound_body player_sounds_footstep + frame 116 sound_body player_sounds_footstep + } + anim vagaryintro2 models/md5/cinematics/alphalabs3/vagintro_player2.md5anim + +} + +entityDef alphalabs3_vagaryintro_player { + "inherit" "cin_base" + "anim" "vagaryintro" + "model" "alphalabs3_vagaryintro_player" + "sound_bone" "Chest" + "cinematic" "1" +} + +entityDef alphalabs3_vagaryintro_cam { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + + "spawnclass" "idCameraAnim" + "cinematic" "1" + + "anim vagaryintro1" "models/md5/cinematics/alphalabs3/vagaryintro_cam1.md5camera" + "anim vagaryintro2" "models/md5/cinematics/alphalabs3/vagaryintro_cam2.md5camera" + +} \ No newline at end of file diff --git a/base/def/map_caverns2.def b/base/def/map_caverns2.def new file mode 100644 index 00000000..c62aa2a5 --- /dev/null +++ b/base/def/map_caverns2.def @@ -0,0 +1,533 @@ + +export fred { + + options -prefix FRONT_ + + addoptions -skipmesh fast + mesh maps/fred/caverns2/bridge2.mb -dest models/md5/cinematics/caverns2/bridge_front + anim maps/fred/caverns2/bridge2.mb -range 315 490 -dest models/md5/cinematics/caverns2/bridge_front + anim maps/fred/caverns2/bridge2.mb -range 1 1 -dest models/md5/cinematics/caverns2/bridge_front_idle + + options -prefix BRIDGE_ -keep corner4 + addoptions -skipmesh fast + + mesh maps/fred/caverns2/bridge2.mb -dest models/md5/cinematics/caverns2/bridge + anim maps/fred/caverns2/bridge2.mb -range 315 490 -dest models/md5/cinematics/caverns2/bridge + anim maps/fred/caverns2/bridge2.mb -range 1 1 -dest models/md5/cinematics/caverns2/bridge_idle + + options -prefix BACK_ + addoptions -skipmesh fast + + mesh maps/fred/caverns2/bridge2.mb -dest models/md5/cinematics/caverns2/bridge_back + anim maps/fred/caverns2/bridge2.mb -range 315 490 -dest models/md5/cinematics/caverns2/bridge_back + anim maps/fred/caverns2/bridge2.mb -range 1 1 -dest models/md5/cinematics/caverns2/bridge_back_idle + + options -prefix CRN_ + + mesh maps/fred/caverns2/bridge2.mb -dest models/md5/cinematics/caverns2/bridge_crane + anim maps/fred/caverns2/bridge2.mb -range 315 490 -dest models/md5/cinematics/caverns2/bridge_crane + anim maps/fred/caverns2/bridge2.mb -range 1 1 -dest models/md5/cinematics/caverns2/bridge_crane_idle + + options -prefix ENV_ + + mesh maps/fred/caverns2/vags2.mb -dest models/md5/cinematics/caverns2/vag_rocks + anim maps/fred/caverns2/vags2.mb -dest models/md5/cinematics/caverns2/vag_rocks + +} + +export james { + +options -prefix BB_ + + mesh maps/james/caverns2/bb.mb -range 100 100 -dest models/md5/cinematics/caverns2/boulder_bridge + anim maps/james/caverns2/bb.mb -dest models/md5/cinematics/caverns2/boulder_bridge + anim maps/james/caverns2/bb.mb -range 1 1 -dest models/md5/cinematics/caverns2/boulder_bridge_start + +} + + +model caverns_boulderbridge { + mesh models/md5/cinematics/caverns2/boulder_bridge.md5mesh + anim start models/md5/cinematics/caverns2/boulder_bridge_start.md5anim + anim boulder models/md5/cinematics/caverns2/boulder_bridge.md5anim { + frame 15 sound_body snd_boulderthud + frame 30 sound_body snd_boulderthud + frame 43 sound_body snd_boulderthud + frame 59 sound_body snd_boulderthud + frame 63 sound_body snd_boulderthud + frame 75 sound_body snd_boulderthud + } +} + +entityDef caverns_boulderbridge { + "editor_color" "1 .5 .3" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 32" + "editor_copy2" "anim" + + "sound_bone" "front_3" + + + "spawnclass" "idAnimated" + + "anim" "boulder" + "model" "caverns_boulderbridge" + "snd_boulderthud" "caverns2_boulder" +} + +model caverns_vagrocks { + mesh models/md5/cinematics/caverns2/vag_rocks.md5mesh + anim rocks models/md5/cinematics/caverns2/vag_rocks.md5anim +} + +entityDef caverns_vagrocks { + "editor_color" "1 .5 .3" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 32" + "editor_copy2" "anim" + + "spawnclass" "idAnimated" + "anim" "rocks" + "model" "caverns_vagrocks" +} + +model caverns_bridgecrane { + mesh models/md5/cinematics/caverns2/bridge_crane.md5mesh + anim bridge models/md5/cinematics/caverns2/bridge_crane.md5anim + anim bridgeidle models/md5/cinematics/caverns2/bridge_crane_idle.md5anim +} + +entityDef caverns_bridgecrane { + "editor_color" "1 .5 .3" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 32" + "editor_copy2" "anim" + + "spawnclass" "idAnimated" + + "anim" "bridge" + "model" "caverns_bridgecrane" +} + +model caverns_bridgefront { + mesh models/md5/cinematics/caverns2/bridge_front.md5mesh + anim bridge models/md5/cinematics/caverns2/bridge_front.md5anim + anim bridgeidle models/md5/cinematics/caverns2/bridge_front_idle.md5anim +} + +entityDef caverns_bridgefront { + "editor_color" "1 .5 .3" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 32" + "editor_copy2" "anim" + + "spawnclass" "idAnimated" + + "anim" "bridge" + "model" "caverns_bridgefront" +} + +model caverns_bridge { + mesh models/md5/cinematics/caverns2/bridge.md5mesh + anim bridge models/md5/cinematics/caverns2/bridge.md5anim + anim bridgeidle models/md5/cinematics/caverns2/bridge_idle.md5anim +} + +entityDef caverns_bridge { + "editor_color" "1 .5 .3" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 32" + "editor_copy2" "anim" + + "spawnclass" "idAnimated" + + "anim" "bridge" + "model" "caverns_bridge" +} + +model caverns_bridgeback { + mesh models/md5/cinematics/caverns2/bridge_back.md5mesh + anim bridge models/md5/cinematics/caverns2/bridge_back.md5anim + anim bridgeidle models/md5/cinematics/caverns2/bridge_back_idle.md5anim +} + +entityDef caverns_bridgeback { + "editor_color" "1 .5 .3" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 32" + "editor_copy2" "anim" + + "spawnclass" "idAnimated" + + "anim" "bridge" + "model" "caverns_bridgeback" +} + +model caverns_pinky { + mesh models/md5/monsters/vagary/vagary.md5mesh + anim af_pose models/md5/monsters/vagary/af_pose.md5anim + anim bridge models/md5/cinematics/caverns2/bridge_pinky.md5anim { + frame 1 sound_voice snd_sight + frame 4 sound_weapon snd_step + frame 8 sound_weapon snd_step + frame 17 sound_weapon snd_step + frame 22 sound_weapon snd_step + frame 30 sound_body snd_pain + frame 58 sound_weapon snd_step + frame 66 sound_weapon snd_step + frame 71 sound_weapon snd_step + frame 82 sound_weapon snd_step + frame 84 sound_weapon snd_step + frame 95 sound_body snd_death + frame 100 event startRagdoll + } +} + +entityDef caverns_pinky { + "editor_color" "1 .5 .3" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 32" + "editor_copy2" "anim" + + "sound_bone" "Chest" + + "spawnclass" "idAnimated" + + "ragdoll" "monster_demon_vagary" + "model" "caverns_pinky" + "anim" "bridge" + + "velocityTime" "200" + + "snd_sight" "monster_demon_vagary_sight" + "snd_pain" "monster_demon_vagary_pain" + "snd_death" "monster_demon_vagary_die" + "snd_step" "monster_demon_vagary_step" +} + +model caverns_hellknight { + mesh models/md5/monsters/hellknight/hellknight.md5mesh + + anim af_pose models/md5/monsters/hellknight/initial.md5anim + + anim bridge models/md5/cinematics/caverns2/bridge_hellknight.md5anim { + frame 1 sound_voice snd_sight + frame 15 sound_voice snd_attackmissile + frame 21 call hk_fireball + frame 73 sound_voice snd_pain + frame 88 sound_voice snd_footstep + frame 89 sound_body snd_thud + frame 103 sound_voice snd_die + frame 105 event startRagdoll + } +} + +entityDef caverns_hellknight { + "spawnclass" "idAnimated" + "editor_color" "1 .5 .3" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 32" + "editor_copy2" "anim" + + "sound_bone" "Chest" + + "ragdoll" "monster_demon_hellknight" + "model" "caverns_hellknight" + "anim" "bridge" + + "velocityTime" "200" + + //For Ed.. The 1st sound below.. snd_thud can be the breaking bridge sounds.. with shaking screen... currently just set as his pain. + + "snd_thud" "cavcin_hk_bridgebreak" + "snd_sight" "cavcin_hk_sight" + "snd_chatter" "monster_demon_hellknight_chatter" + "snd_chatter_combat" "monster_demon_hellknight_chatter" + "snd_pain" "cavcin_hk_pain" + "snd_attackmissile" "monster_demon_hellknight_attackmissile" + "snd_die" "cavcin_hk_die" + "snd_footstep" "monster_demon_hellknight_footstep" + "snd_melee1" "monster_zombie_commando_melee_miss" + "snd_melee2" "monster_demon_cacodemon_melee" +} + +model caverns_vagary1 { + inherit monster_boss_vagary + + anim vag models/md5/cinematics/caverns2/vag1.md5anim { + ai_no_turn + frame 1 call overrideLegs + frame 1 disableGravity + frame 1 disableWalkIK + frame 60 sound_body snd_step + frame 65 sound_voice cavcin_vag_noise2 + frame 66 sound_body snd_step + frame 70 sound_body snd_step + frame 73 sound_body snd_step + frame 77 sound_body snd_step + frame 84 sound_body snd_step + frame 87 sound_body snd_step + frame 90 sound_body snd_step + frame 93 sound_body snd_step + frame 95 sound_body snd_step + frame 98 sound_body snd_step + frame 100 sound_body snd_step + frame 102 sound_body snd_step + frame 105 sound_body snd_step + frame 106 sound_body snd_step + frame 110 sound_voice2 cavcin_vag_noise1 + frame 112 sound_body snd_step + frame 117 sound_body snd_step + frame 121 sound_body snd_step + frame 123 sound_body snd_step + frame 128 sound_body snd_step + frame 132 sound_body snd_step + frame 134 sound_body snd_step + frame 101 trigger vag_force_5 + frame 135 enableGravity + frame 135 enableWalkIK + } +} + +entityDef caverns_vagary1 { + "inherit" "monster_boss_vagary" + "model" "caverns_vagary1" + "anim" "vag" +} + +model caverns_vagary2 { + inherit monster_boss_vagary + + anim vag models/md5/cinematics/caverns2/vag2.md5anim { + ai_no_turn + frame 1 call overrideLegs + frame 1 disableGravity + frame 1 disableWalkIK + frame 122 sound_body snd_step + frame 125 sound_voice cavcin_vag_noise2 + frame 126 sound_body snd_step + frame 129 sound_body snd_step + frame 133 sound_body snd_step + frame 140 sound_body snd_step + frame 143 sound_body snd_step + frame 146 sound_body snd_step + frame 152 sound_body snd_step + frame 165 sound_body snd_step + frame 166 sound_body snd_step + frame 167 sound_body snd_step + frame 176 sound_body snd_step + frame 180 sound_body snd_step + frame 182 sound_body snd_step + frame 185 sound_body snd_step + frame 187 sound_body snd_step + frame 203 sound_voice2 cavcin_vag_noise1 + frame 215 sound_body snd_step + frame 216 sound_body snd_step + frame 217 sound_body snd_step + frame 220 enableGravity + frame 220 enableWalkIK + } +} + +entityDef caverns_vagary2 { + "inherit" "monster_boss_vagary" + "model" "caverns_vagary2" + "anim" "vag" +} + +model caverns_imp1 { + inherit monster_demon_imp + + anim railing models/md5/cinematics/caverns2/imp1railing.md5anim { + ai_no_turn + frame 1 disableGravity + frame 1 disableWalkIK + frame 6 sound_body snd_footstep + frame 14 sound_voice snd_sight + frame 17 sound_body snd_footstep + frame 27 sound_body snd_footstep + frame 32 sound_body snd_footstep + frame 37 sound_body snd_footstep + frame 55 sound_body snd_footstep + frame 56 sound_body snd_footstep + frame 60 enableGravity + frame 60 enableWalkIK + } +} + +entityDef caverns_imp1 { + "inherit" "monster_demon_imp" + "model" "caverns_imp1" + "anim" "railing" +} + +model caverns_imp2 { + inherit monster_demon_imp + anim railing models/md5/cinematics/caverns2/imp2railing.md5anim { + ai_no_turn + frame 1 disableGravity + frame 1 disableWalkIK + frame 4 sound_body snd_footstep + frame 6 sound_body snd_footstep + frame 7 sound_body snd_footstep + frame 11 sound_body snd_footstep + frame 12 sound_body snd_footstep + frame 17 sound_body snd_footstep + frame 25 sound_body snd_footstep + frame 27 sound_body snd_footstep + frame 30 sound_body snd_footstep + frame 31 sound_body snd_footstep + frame 33 sound_body snd_footstep + frame 35 sound_body snd_footstep + frame 39 sound_body snd_footstep + frame 44 sound_voice snd_sight8 + frame 53 sound_body snd_footstep + frame 56 sound_body snd_footstep + frame 82 sound_body snd_footstep + frame 85 sound_body snd_footstep + frame 90 enableGravity + frame 90 enableWalkIK + } +} + +entityDef caverns_imp2 { + "inherit" "monster_demon_imp" + "model" "caverns_imp2" + "anim" "railing" +} + +model caverns_char_maint_scared_head { + + inherit head_asian_young + + anim talk_trigger models/md5/heads/asian_young/caverns2/maint1_trig.md5anim { + frame 1 sound_voice caverns2_maint1_trig + } + anim talk_primary models/md5/heads/asian_young/caverns2/maint1_1.md5anim { + frame 1 sound_voice caverns2_maint1_primary + } + anim talk_secondary1 models/md5/heads/asian_young/caverns2/maint1_2.md5anim { + frame 1 sound_voice caverns2_maint1_secondary1 + } + anim talk_secondary2 models/md5/heads/asian_young/caverns2/maint1_3.md5anim { + frame 1 sound_voice caverns2_maint1_secondary2 + } +} + +model caverns_char_maint_scared { + mesh models/md5/chars/jumpsuit.md5mesh + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER eyecontrol chair) + + anim af_pose models/md5/chars/af_pose.md5anim + anim stand models/md5/chars/caverns/cav2_IDLE.md5anim + anim idle models/md5/chars/caverns/cav2_IDLE.md5anim + anim talk_trigger models/md5/chars/caverns/cav2_trigger.md5anim + anim talk_primary models/md5/chars/caverns/cav2_primary.md5anim + anim talk_secondary1 models/md5/chars/caverns/cav2_secondary1.md5anim + anim talk_secondary2 models/md5/chars/caverns/cav2_secondary2.md5anim +} + +entityDef caverns_char_maint_scared { + "inherit" "npc_base" + "scriptobject" "ai" + "nativeobject" "rvmCharacter" + "def_head" "caverns_char_maint_scared_head" + "model" "caverns_char_maint_scared" + "anim" "idle" + "size" "64 20 32" + "use_aas" "" + "turn_rate" "0" + "talk_no_turn" "1" + "no_cower" "1" + "talktrigger" "1" + "ragdoll" "char_npc_misc.af" + "head_joint" "Shoulders" + "copy_joint_world eyecontrol" "" + "ik_numlegs" "0" + + "talktime" "0" + "talk0_blendin" "8" + "talk0_blendout" "8" + "talk1_blendin" "8" + "talk1_blendout" "8" + "talk2_blendin" "8" + "talk2_blendout" "8" + + "look_joint Waist" "0 0 0" + "look_joint Chest" "0 0 0" + "look_joint Shoulders" "0 0 0" + "look_joint headcontrol" ".5 .5 0" + "look_joint neckcontrol" ".5 .5 0" + "look_joint Ruparm" "0 0 0" + "look_joint Luparm" "0 0 0" + "look_min" "-40 -120 0" + "look_max" "40 20 0" + + "eye_turn_min" "-20 -30 0" + "eye_turn_max" "20 30 0" + + "damage_zone head" "*loneckcontrol" + "damage_zone chest" "*Waist -*loneckcontrol" + "damage_zone left_arm" "*Luparm" + "damage_zone right_arm" "*Ruparm" + "damage_zone legs" "origin Body2" +} + +// HK WALL + + +export fred { + options -prefix ENV_ + mesh maps/fred/caverns2/hkwall.mb -range 90 90 -dest models/md5/cinematics/caverns2/hkwallmesh + anim maps/fred/caverns2/hkwall.mb -dest models/md5/cinematics/caverns2/hkwallmesh +} + + + +model caverns_hellknight2 { + inherit monster_demon_hellknight + + anim wall models/md5/cinematics/caverns2/breakwall.md5anim { + ai_no_turn + frame 1 disableGravity + frame 1 disableWalkIK + frame 12 sound_body snd_footstep + frame 13 sound_voice snd_sight1 + frame 22 sound_body snd_footstep + frame 35 sound_body snd_footstep + frame 55 sound_body snd_footstep + frame 72 sound_body snd_footstep + frame 82 sound_voice snd_sight2 + frame 94 sound_body snd_footstep + frame 94 enableGravity + frame 94 enableWalkIK + frame 95 sound_body snd_footstep + frame 95 trigger hkhurtme + frame 95 trigger hkwallforce + frame 96 trigger hkhurtme + frame 98 sound_body snd_footstep + } +} + +entityDef caverns_hellknight2 { + "inherit" "monster_demon_hellknight" + "model" "caverns_hellknight2" + "anim" "wall" +} + +model caverns_hkwall { + mesh models/md5/cinematics/caverns2/hkwallmesh.md5mesh + anim wall models/md5/cinematics/caverns2/hkwallmesh.md5anim +} + +entityDef caverns_hkwall { + "editor_color" "1 .5 .3" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 32" + "editor_copy2" "anim" + + "spawnclass" "idAnimated" + "anim" "wall" + "model" "caverns_hkwall" +} \ No newline at end of file diff --git a/base/def/map_comm1.def b/base/def/map_comm1.def new file mode 100644 index 00000000..ca1d0ac6 --- /dev/null +++ b/base/def/map_comm1.def @@ -0,0 +1,154 @@ + + +export fred { + camera maps/fred/comm1/swann_video1.mb -dest models/md5/cinematics/comm1/swann_video_a_cam + camera maps/kevinc/comm1/swann_video2.mb -dest models/md5/cinematics/comm1/swann_video_b_cam + camera maps/kevinc/comm1/swann_video3.mb -dest models/md5/cinematics/comm1/swann_video_c_cam +} + + +entityDef comm1_swann_video_cam { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + + "spawnclass" "idCameraAnim" + + "anim video_a" "models/md5/cinematics/comm1/swann_video_a_cam.md5camera" + "anim video_b" "models/md5/cinematics/comm1/swann_video_b_cam.md5camera" + "anim video_c" "models/md5/cinematics/comm1/swann_video_c_cam.md5camera" +} + +export fred { + options -prefix ENV_ -scale .7 + + mesh models/monsters/sentry/animation/cycles/wall_release_blank.ma -range 150 150 -dest models/md5/cinematics/comm1/sentry_loader + anim models/monsters/sentry/animation/cycles/wall_release_blank.ma -dest models/md5/cinematics/comm1/sentry_loader +} + + +model comm1_sentryloader { + mesh models/md5/cinematics/comm1/sentry_loader.md5mesh + anim load models/md5/cinematics/comm1/sentry_loader.md5anim { + frame 1 sound_voice2 c1_sentry_loader_out + frame 108 sound_voice2 c1_sentry_loader_in + } +} + +entityDef comm1_sentryloader { + "editor_color" "1 .5 .3" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 32" + "editor_copy2" "anim" + + "sound_bone" "joint2" + + + "spawnclass" "idAnimated" + + "anim" "load" + "model" "comm1_sentryloader" +} + +model comm1_sentry_blank { + mesh models/md5/monsters/sentry/sentry.md5mesh + skin skins/models/monsters/sentrynobeam.skin + anim load models/md5/monsters/sentry/wall_release_dummy.md5anim +} + +entityDef comm1_sentry_blank { + "editor_color" "1 .5 .3" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 32" + "editor_copy2" "anim" + + "sound_bone" "Head" + + "spawnclass" "idAnimated" + + "anim" "load" + "model" "comm1_sentry_blank" +} + +model comm1_sentry { + inherit char_sentry + anim releaseidle models/md5/monsters/sentry/wall_release_idle.md5anim + anim load models/md5/monsters/sentry/wall_release.md5anim { + ai_no_turn + frame 1 event ignoreDamage + frame 1 disableGravity + frame 1 disableWalkIK + frame 100 enableGravity + frame 100 enableWalkIK + frame 120 event allowDamage + } +} + +entityDef comm1_sentry { + "inherit" "char_sentry" + "model" "comm1_sentry" + "anim" "load" + "hanging" "2" + "burnaway" "10" +} + +model comm1_video_swannhead { + inherit head_swann + anim video_a models/md5/heads/swann/comm1/swannhead_video1.md5anim + anim video_b models/md5/heads/swann/comm1/swannhead_video2.md5anim + anim video_c models/md5/heads/swann/comm1/swannhead_video3.md5anim + +} + +model comm1_video_swann { + mesh models/md5/chars/suit.md5mesh + + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER eyecontrol) + + anim idle models/md5/chars/stand.md5anim + anim stand models/md5/chars/stand.md5anim + anim video_a models/md5/chars/swann/comm1/swann_vid1.md5anim { + //frame 1 aviGame swannvid1 + frame 1 event disableEyeFocus + //frame 12 sound_voice comm1_swann_video1 + frame 1 sound_voice comm1_swann_video1 + //frame 345 aviGame + } + anim video_b models/md5/chars/swann/comm1/swann_vid2.md5anim { + //frame 1 aviGame swannvid2 + frame 1 event disableEyeFocus + frame 8 sound_voice comm1_swann_video2 + //frame 345 aviGame + } + anim video_c models/md5/chars/swann/comm1/swann_vid3.md5anim { + //frame 1 aviGame swannvid3 + frame 1 event disableEyeFocus + frame 6 sound_voice comm1_swann_video3 + //frame 345 aviGame + } + + +} + + +entityDef comm1_video_swann { + "inherit" "character_default" + "size" "1 1 1" + "model" "comm1_video_swann" + "anim" "video" + "sound_bone" "Chest" + "def_head" "comm1_video_swannhead" + "head_joint" "Shoulders" + "eye_verticle_offset" "10" + "eye_horizontal_offset" "5" + +// "bone_focus" "headcontrol" +// "bone_orientation" "Body" +// "bone_leftEye" "Leyeaim" +// "bone_rightEye" "Reyeaim" + + "copy_joint neckcontrol" "neckcontrol" + "copy_joint headcontrol" "headcontrol" + "copy_joint_world eyecontrol" "eyecontrol" +} diff --git a/base/def/map_commoutside.def b/base/def/map_commoutside.def new file mode 100644 index 00000000..b4986b38 --- /dev/null +++ b/base/def/map_commoutside.def @@ -0,0 +1,202 @@ + +export fred { + camera maps/eric/commoutside/zombiecam_09.mb -dest models/md5/cinematics/commoutside/zombie_with_camera + camera maps/fred/commoutside/shot1.mb -dest models/md5/cinematics/commoutside/sawintro_cam1 + camera maps/fred/commoutside/shot2.mb -dest models/md5/cinematics/commoutside/sawintro_cam2 + camera maps/fred/commoutside/shot3.mb -dest models/md5/cinematics/commoutside/sawintro_cam3 + camera maps/fred/commoutside/shot4.mb -dest models/md5/cinematics/commoutside/sawintro_cam4 + + options -prefix ROV_ + + mesh maps/fred/commoutside/sighting1.mb -range 1 1 -dest models/md5/cinematics/commoutside/rover + anim maps/fred/commoutside/sighting1.mb -range 38 90 -dest models/md5/cinematics/commoutside/roversighting1 + anim maps/fred/commoutside/sighting1.mb -range 100 170 -dest models/md5/cinematics/commoutside/roversighting2 + anim maps/fred/commoutside/sighting1.mb -range 173 245 -dest models/md5/cinematics/commoutside/roversighting3 +} + +model commoutside_player { + mesh models/md5/characters/player/mocap/player.md5mesh + skin skins/player/weapons.skin + anim teleport models/md5/cinematics/delta2a/teleporterplayer.md5anim + anim sawshot1 models/md5/cinematics/commoutside/sawintro_player1.md5anim + anim sawshot2 models/md5/cinematics/commoutside/sawintro_player2.md5anim + anim sawshot4 models/md5/cinematics/commoutside/sawintro_player4.md5anim + +} + +entityDef commoutside_player { + "editor_color" "1 .5 .3" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 32" + "editor_copy2" "anim" + + "spawnclass" "idAnimated" + + "anim" "sawshot1" + "model" "commoutside_player" +} + +model commoutside_cin_sawyer { + mesh models/md5/monsters/zombies/sawyer/sawyer.md5mesh + anim sawshot2 models/md5/cinematics/commoutside/sawintro_sawyer2.md5anim + anim sawshot3 models/md5/cinematics/commoutside/sawintro_sawyer3.md5anim + anim sawshot4 models/md5/cinematics/commoutside/sawintro_sawyer4.md5anim + +} + +entityDef commoutside_cin_sawyer { + "editor_color" "1 .5 .3" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 32" + "editor_copy2" "anim" + + "spawnclass" "idAnimated" + + "anim" "sawshot2" + "model" "commoutside_cin_sawyer" +} + + +entityDef commoutside_sawintro_cam { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + + "spawnclass" "idCameraAnim" + + "anim sawshot1" "models/md5/cinematics/commoutside/sawintro_cam1.md5camera" + "anim sawshot2" "models/md5/cinematics/commoutside/sawintro_cam2.md5camera" + "anim sawshot3" "models/md5/cinematics/commoutside/sawintro_cam3.md5camera" + "anim sawshot4" "models/md5/cinematics/commoutside/sawintro_cam4.md5camera" +} + + +model commoutside_vehicle { + mesh models/md5/cinematics/commoutside/rover.md5mesh + anim sighting1 models/md5/cinematics/commoutside/roversighting1.md5anim { + frame 1 trigger func_door_1688 + frame 38 trigger func_door_1688 + } + + anim sighting2 models/md5/cinematics/commoutside/roversighting2.md5anim { + frame 1 trigger cov_door2 + frame 1 trigger cov_door2_gui + frame 65 trigger cov_door2 + frame 65 trigger cov_door2_gui + } + anim sighting3 models/md5/cinematics/commoutside/roversighting3.md5anim { + frame 1 trigger commoutside_vehicle_3_door + frame 60 trigger commoutside_vehicle_3_door + } +} + +entityDef commoutside_vehicle { + "inherit" "cin_base" + "anim" "sighting1" + "model" "commoutside_vehicle" +} + +entityDef commoutside_camzombie_cam { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + + "spawnclass" "idCameraAnim" + + "anim camzombie" "models/md5/cinematics/commoutside/zombie_with_camera.md5camera" +} + +entityDef commoutside_camzombie_zomb { + "inherit" "zombie_default" + "scriptobject" "ai" + "nativeobject" "rvmCharacter" + "size" "0 0 0" + "use_aas" "aas48" + "team" "1" + "rank" "1" + "health" "30" + "melee_range" "32" + "turn_rate" "360" + + "bone_focus" "headcontrol" + "bone_leftEye" "Leyeaim" + "bone_rightEye" "Reyeaim" + + "look_min" "-90 -125 0" + "look_max" "25 125 0" + "look_joint Waist" "0.1333 0.1333 0" + "look_joint Chest" "0.1333 0.1333 0" + "look_joint Shoulders" "0.1333 0.1333 0" + "look_joint headcontrol" "0.6 0.6 0" + "look_joint Ruparm" "-0.4 0 0" + "look_joint Luparm" "-0.4 0 0" + + "ragdoll" "monster_zombie_misc.af" + + "model" "model_monster_zombie_camzombie" + + "damage_zone head" "*Neck" + "damage_zone chest" "*Waist -*Rshldr -*Lshldr -*Neck" + "damage_zone left_arm" "*Lshldr" + "damage_zone right_arm" "*Rshldr" + "damage_zone legs" "*Hips" + + "damage_scale head" "1.25" + + "def_head" "head_zombie3" + "head_joint" "Shoulders" +} + +model commoutside_fatty { + mesh models/md5/monsters/zfat/zfat.md5mesh + anim office3 models/md5/cinematics/delta2a/zoffice3.md5anim + } + +entityDef commoutside_fatty { + "inherit" "cin_base" + "model" "commoutside_fatty" + "anim" "office3" +} + +model commoutside_swann { + inherit char_swann + anim idle models/md5/chars/stand.md5anim { + frame 1 event disableEyeFocus + } + anim stand models/md5/chars/stand.md5anim { + frame 1 event disableEyeFocus + } +} + + +entityDef commoutside_swann { + "inherit" "char_swann" + "model" "commoutside_swann" + "health" "800" + "mass" "1000" +} + +model commoutside_campbell { + inherit char_campbell_bfg + + anim bfgfire models/md5/chars/campbell/bfg_fire.md5anim { + frame 1 event ignoreDamage + frame 2 trigger comm1_dimlights + frame 28 trigger bfglight + frame 29 trigger bfglight + frame 30 launch_missile BFG + frame 31 trigger bfglight + frame 33 trigger bfglight + frame 35 trigger bfglight + frame 36 trigger bfglight + } +} + +entityDef commoutside_campbell { + "inherit" "char_campbell_bfg" + "health" "800" + "mass" "1000" + "ignore_obstacles" "1" + "model" "commoutside_campbell" + +} diff --git a/base/def/map_cpu1.def b/base/def/map_cpu1.def new file mode 100644 index 00000000..7b5a3b1e --- /dev/null +++ b/base/def/map_cpu1.def @@ -0,0 +1,367 @@ +//CINEMATICS + +export fred { + camera maps/fred/cpu1/camphunt.mb -range 1 70 -dest models/md5/cinematics/cpu1/camphunt_cam_a + camera maps/fred/cpu1/camphunt.mb -range 71 166 -dest models/md5/cinematics/cpu1/camphunt_cam_b + camera maps/fred/cpu1/camphunt.mb -range 167 269 -dest models/md5/cinematics/cpu1/camphunt_cam_c + camera maps/fred/cpu1/camphunt.mb -range 270 368 -dest models/md5/cinematics/cpu1/camphunt_cam_d + + + addoptions -prefix CAMPBELL_ -keep eyecontrol CASE_ATTACHER Lknee Rknee Body2 Body headcontrol neckcontrol loneckcontrol SPINNER Lhand1 Rhand -parent headcontrol neckcontrol -parent neckcontrol loneckcontrol -parent loneckcontrol Shoulders -parent BFG Rhand1 -parent Body2 Body -parent Hips Body2 -parent SPINNER Body2 -parent Waist SPINNER -parent CASE_ATTACHER Rhand1 + + addoptions -keepmesh marinebodymesh + addoptions -keepmesh polySurface5 + + anim maps/fred/cpu1/camphunt.mb -range 1 1 -dest models/md5/chars/campbell/cpu/campbell_start + anim maps/fred/cpu1/camphunt.mb -range 167 269 -dest models/md5/chars/campbell/cpu/campbell_c + anim maps/fred/cpu1/camphunt.mb -range 270 368 -dest models/md5/chars/campbell/cpu/campbell_d + + + anim maps/fred/admin/swann_campbell_overhear.mb -range 737 1033 -dest models/md5/chars/campbell/admin/overhearcampbell3 + + anim maps/eric/admin/typing.mb -range 1 60 -rotate 180 -dest models/md5/chars/campbell/admin/typingcampbell_loop + anim maps/eric/admin/typing.mb -range 1 291 -rotate 180 -dest models/md5/chars/campbell/admin/typingcampbell + + anim models/characters/male_npc/cycles/idles/campbell_af_pose.mb -rotate 90 -dest models/md5/chars/campbell/af_pose + + //anim betrugercin1.mb -dest betrugercin1_campbell -range 1 1699 -sourcedir maps/fred/marscity/ -destdir models/md5/chars/campbell/marscity + anim betrugercin1.mb -dest betrugercin1_campbell_a -range 1 54 -sourcedir maps/fred/marscity/ -destdir models/md5/chars/campbell/marscity + anim betrugercin1.mb -dest betrugercin1_campbell_b -range 55 92 -sourcedir maps/fred/marscity/ -destdir models/md5/chars/campbell/marscity + anim betrugercin1.mb -dest betrugercin1_campbell_c -range 93 137 -sourcedir maps/fred/marscity/ -destdir models/md5/chars/campbell/marscity + anim betrugercin1.mb -dest betrugercin1_campbell_d -range 138 1709 -sourcedir maps/fred/marscity/ -destdir models/md5/chars/campbell/marscity + + + anim hangar_characters.mb -range 360 678 -dest hangar_campbell_a -sourcedir maps/fred/marscity/ -destdir models/md5/chars/campbell/marscity -prefix SUIT2_ + anim hangar_characters.mb -range 679 766 -dest hangar_campbell_b -sourcedir maps/fred/marscity/ -destdir models/md5/chars/campbell/marscity -prefix SUIT2_ + anim hangar_characters.mb -range 767 863 -dest hangar_campbell_c -sourcedir maps/fred/marscity/ -destdir models/md5/chars/campbell/marscity -prefix SUIT2_ + anim hangar_characters.mb -range 864 937 -dest hangar_campbell_d -sourcedir maps/fred/marscity/ -destdir models/md5/chars/campbell/marscity -prefix SUIT2_ + anim hangar_characters.mb -range 938 980 -dest hangar_campbell_e -sourcedir maps/fred/marscity/ -destdir models/md5/chars/campbell/marscity -prefix SUIT2_ + anim hangar_characters.mb -range 981 1160 -dest hangar_campbell_f -sourcedir maps/fred/marscity/ -destdir models/md5/chars/campbell/marscity -prefix SUIT2_ + + // SUIT prefix + + anim maps/fred/enpro/escape_shot1.mb -rotate 180 -range 1 90 -dest models/md5/chars/campbell/enpro/campbell_escape1 -prefix SUIT_ + anim maps/fred/enpro/escape_shot2.mb -rotate 180 -range 91 236 -dest models/md5/chars/campbell/enpro/campbell_escape2 -prefix SUIT_ + + anim models/characters/male_npc/cycles/idles/bfg_aiming.mb -rotate 90 -dest models/md5/chars/campbell/bfg_aim -prefix SUIT_ + + anim maps/fred/cpu1/camphunt_eric_withmocap.mb -range 1 70 -dest models/md5/chars/campbell/cpu/campbell_mocap_a -prefix SUIT_ + anim maps/fred/cpu1/camphunt_eric_withmocap.mb -range 71 166 -dest models/md5/chars/campbell/cpu/campbell_mocap_b -prefix SUIT_ + + + anim maps/fred/admin/sco_new_mocap.mb -range 432 736 -dest models/md5/chars/campbell/admin/overhearcampbell2 -prefix SUIT_ + + + // SUIT2 prefix + anim maps/fred/admin/campbell_overhear_1_n_2_n_3.mb -range 1 313 -dest models/md5/chars/campbell/admin/overhearcampbell1 -prefix SUIT2_ + //anim maps/fred/admin/campbell_overhear_4.mb -range 432 736 -dest models/md5/chars/campbell/admin/overhearcampbell2 -prefix SUIT2_ + + + // ZOMBIE prefix + //anim maps/fred/admin/campbell_overhear_1_n_2_n_3.mb -range 1 300 -dest models/md5/chars/campbell/admin/overhearcampbell1 -prefix ZOMBIE_ + //anim maps/fred/admin/campbell_overhear_4.mb -range 432 736 -dest models/md5/chars/campbell/admin/overhearcampbell2 -prefix ZOMBIE_ + + + + + addoptions -align ALL + + // CAMPBELL prefix + + mesh maps/fred/cpu1/campmesh.mb -dest models/md5/chars/campbell/campbell -prefix CAMPBELL_ + + + // SUIT prefix + + anim models/characters/male_npc/cycles/idles/bfg_idle.mb -dest models/md5/chars/campbell/bfg_idle -prefix SUIT_ + + anim models/characters/male_npc/cycles/idles/bfg_idle_eric.mb -dest models/md5/chars/campbell/bfg_idle_eric -prefix SUIT_ + anim models/characters/male_npc/cycles/walks/bfg_walk.mb -rotate 90 -dest models/md5/chars/campbell/bfg_walk -prefix SUIT_ + anim models/characters/male_npc/cycles/runs/bfg_run.mb -rotate 90 -dest models/md5/chars/campbell/bfg_run -prefix SUIT_ + + anim models/characters/male_npc/cycles/idles/campbell_stand.mb -dest models/md5/chars/campbell/campbell_idle -prefix SUIT_ + + anim models/characters/male_npc/cycles/runs/bfg_runback_fire.mb -rotate 90 -dest models/md5/chars/campbell/bfg_runback_fire -prefix SUIT_ + anim models/characters/male_npc/cycles/runs/bfg_runback_fire2.mb -rotate -90 -dest models/md5/chars/campbell/bfg_runback_fire2 -prefix SUIT_ + anim models/characters/male_npc/cycles/runs/bfg_runback_fire2.mb -range 33 33 -rotate -90 -dest models/md5/chars/campbell/bfg_runback_fire2_start -prefix SUIT_ + anim models/characters/male_npc/cycles/idles/bfg_fire.mb -dest models/md5/chars/campbell/bfg_fire -prefix SUIT_ + + anim models/characters/male_npc/cycles/idles/turn_right.mb -dest models/md5/chars/campbell/campbellturn_right -prefix SUIT_ + anim models/characters/male_npc/cycles/idles/turn_left.mb -dest models/md5/chars/campbell/campbellturn_left -prefix SUIT_ + anim models/characters/male_npc/cycles/idles/turn_right_rotation90.mb -dest models/md5/chars/campbell/campbellturn_right_rotation90 -prefix SUIT_ + anim models/characters/male_npc/cycles/idles/turn_left_rotation90.mb -dest models/md5/chars/campbell/campbellturn_left_rotation90 -prefix SUIT_ + anim models/characters/male_npc/cycles/idles/turn_right_rotation180.mb -dest models/md5/chars/campbell/campbellturn_right_rotation180 -prefix SUIT_ + anim models/characters/male_npc/cycles/idles/turn_left_rotation180.mb -dest models/md5/chars/campbell/campbellturn_left_rotation180 -prefix SUIT_ + + // ZOMBIE prefix + + anim models/characters/male_npc/cycles/walks/bfg_casewalk.mb -rotate 90 -dest models/md5/chars/campbell/bfg_casewalk -prefix ZOMBIE_ + + options -prefix CASE_ -keep ATTACHER -rename ATTACHER origin -clearorigin + mesh models/characters/male_npc/makecasemesh.mb -dest models/md5/items/bfgcase/bfgcase + anim models/characters/male_npc/makecasemesh.mb -dest models/md5/items/bfgcase/bfgcase +} + +model env_bfgcase { + mesh models/md5/items/bfgcase/bfgcase.md5mesh + anim case models/md5/items/bfgcase/bfgcase.md5anim + +} + +entityDef env_bfgcase { + "inherit" "cin_base" + "model" "env_bfgcase" + "anim" "case" + "joint" "CASE_ATTACHER" + "origin" "0 0 0" + "angles" "0 0 0" +} + +entityDef char_campbell_bfgcase { + "inherit" "char_campbell_bfg" + "model" "char_campbell_bfgcase" + "skin" "skins/characters/npcs/marine_campbell.skin" + "eye_verticle_offset" "10" + "eye_horizontal_offset" "5" + + "def_attach" "env_bfgcase" + "cinematic" "1" + + "def_head" "head_campbell" + "head_joint" "Shoulders" +} + +entityDef cpu1_camphunt_cam { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + + "spawnclass" "idCameraAnim" + "cinematic" "1" + + "anim camphunt_a" "models/md5/cinematics/cpu1/camphunt_cam_a.md5camera" + "anim camphunt_b" "models/md5/cinematics/cpu1/camphunt_cam_b.md5camera" + "anim camphunt_c" "models/md5/cinematics/cpu1/camphunt_cam_c.md5camera" + "anim camphunt_d" "models/md5/cinematics/cpu1/camphunt_cam_d.md5camera" + +} + +model cpu1_camphunt_campbell { + mesh models/md5/chars/campbell/campbell.md5mesh + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER eyecontrol) + + anim start models/md5/chars/campbell/cpu/campbell_start.md5anim + anim camphunt_a models/md5/chars/campbell/cpu/campbell_mocap_a.md5anim { + frame 1 event disableEyeFocus + frame 1 sound_global cpu_intro_music + frame 1 sound_body campbell_fs + frame 18 sound_body2 campbell_fs + frame 39 sound_body campbell_fs + frame 59 sound_body2 campbell_fs + } + + anim camphunt_b models/md5/chars/campbell/cpu/campbell_mocap_b.md5anim { + frame 2 sound_body campbell_fs + frame 18 sound_body2 campbell_fs + frame 40 sound_body campbell_fs + frame 58 sound_body2 campbell_fs + frame 78 sound_body campbell_fs + } + + anim camphunt_c models/md5/chars/campbell/cpu/campbell_c.md5anim { + frame 1 event disableEyeFocus + } + + anim camphunt_d models/md5/chars/campbell/cpu/campbell_d.md5anim { + frame 1 event disableEyeFocus + frame 26 sound_voice snd_camphunt + } + +} + +model cpu1_head_campbell { + mesh models/md5/heads/campbell/campbell.md5mesh + skin skins/characters/npcs/campbellbloody.skin + anim dead models/md5/heads/campbell/cpu1/campbellend.md5anim + anim idle models/md5/heads/campbell/cpu1/campbellend.md5anim + + anim camphunt_a models/md5/heads/campbell/cpu1/campbellheadhunt_a.md5anim + anim camphunt_b models/md5/heads/campbell/cpu1/campbellheadhunt_b.md5anim + anim camphunt_c models/md5/heads/campbell/cpu1/campbellheadhunt_c.md5anim + anim camphunt_d models/md5/heads/campbell/cpu1/campbellheadhunt_d.md5anim + + anim talk_secondary1 models/md5/heads/campbell/cpu1/campbelldeath.md5anim +} + +entityDef cpu1_camphunt_campbell { + "inherit" "character_default" + "model" "cpu1_camphunt_campbell" + "anim" "camphunt_a" + "sound_bone" "Chest" + "bone_focus" "headcontrol" + "bone_leftEye" "Leyeaim" + "bone_rightEye" "Reyeaim" + + "look_min" "-90 -125 0" + "look_max" "25 125 0" + "look_joint Waist" "0.1333 0.1333 0" + "look_joint Chest" "0.1333 0.1333 0" + "look_joint Shoulders" "0.1333 0.1333 0" + "look_joint headcontrol" "0.6 0.6 0" + "look_joint Ruparm" "-0.4 0 0" + "look_joint Luparm" "-0.4 0 0" + + "copy_joint neckcontrol" "neckcontrol" + "copy_joint headcontrol" "headcontrol" + "copy_joint_world eyecontrol" "eyecontrol" + + "ik_numLegs" "0" + "ik_maxStepSpeed" "2" + "ik_footSize" "0" + "ik_footShift" "2" + "ik_waistShift" "4" + "ik_liftWaist" "16" + "ik_waist" "body" + "ik_hip1" "Lupleg" + "ik_hip2" "Rupleg" + "ik_knee1" "Lloleg" + "ik_knee2" "Rloleg" + "ik_ankle1" "Lankle_r" + "ik_ankle2" "Rankle_r" + "ik_dir1" "Lknee" + "ik_dir2" "Rknee" + "ik_foot1" "Lball_r" + "ik_foot2" "Rball_r" + + "eye_turn_min" "-20 -30 0" + "eye_turn_max" "20 30 0" + "eye_verticle_offset" "5" + "eye_horizontal_offset" "-8" + "eye_focus_rate" "0.5" + "head_focus_rate" "0.1" + + "head_look" "0" + + "def_head" "cpu1_head_campbell" + "head_joint" "Shoulders" + "ragdoll" "" + "snd_camphunt" "cpu_campbell_hunt" + "cinematic" "1" + + "num_cinematics" "4" + "anim1" "camphunt_a" + "anim2" "camphunt_b" + "anim3" "camphunt_c" + "anim4" "camphunt_d" + +} + + +model cpu1_wounded_campbell { + mesh models/md5/chars/marine.md5mesh + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER eyecontrol chair) + + skin skins\characters\npcs\bloody_marine.skin + anim idle models/md5/chars/campbell/cpu/deathidle.md5anim + anim talk_secondary1 models/md5/chars/campbell/cpu/death.md5anim { + frame 1 event disableEyeFocus + frame 10 sound_voice snd_campdeath + frame 61 event enableEyeFocus + frame 71 event disableEyeFocus + frame 93 event enableEyeFocus + frame 197 event disableEyeFocus + frame 197 call headlook_off + } + anim dead models/md5/chars/campbell/cpu/deathend.md5anim + anim af_pose models/md5/chars/af_pose.md5anim + +} + +entityDef cpu1_wounded_campbell { + "inherit" "npc_base" + "size" "" + "model" "cpu1_wounded_campbell" + "scriptobject" "ai" + "nativeobject" "rvmAICharacterProne" + "anim" "idle" + "sound_bone" "headcontrol" + "ik_numlegs" "0" + "def_head" "cpu1_head_campbell" + "head_joint" "Shoulders" + + "talk_mode" "2" // only play talk secondary + "die_after_speaking" "1" + "animate_z" "1" + "talk_no_turn" "1" + + "eye_turn_min" "-20 -30 0" + "eye_turn_max" "20 30 0" + "eye_verticle_offset" "5" + "eye_horizontal_offset" "-8" + "eye_focus_rate" "0.5" + "head_focus_rate" "0.1" + + "look_min" "-54 -39 0" + "look_max" "9 39 0" + "look_joint Waist" "0 0 0" + "look_joint Chest" "0 0 0" + "look_joint Shoulders" "0 0 0" + "look_joint headcontrol" "1.25 1.5 1" + "look_joint Ruparm" "0 0 0" + "look_joint Luparm" "0 0 0" + + "snd_campdeath" "cpu_campbell_death" + "snd_gibbed" "sound_giblets" + "snd_bounce" "ragdoll_impact" + + "gib" "1" + + "model_gib" "models/md5/chars/skeleton.md5mesh" + + "def_dropGibItem1" "moveable_item_head_pork" + "dropGibItem1Joint" "headcontrol" + + "def_dropGibItem2" "moveable_item_torso_pork" + "dropGibItem2Joint" "Chest" + + "def_dropGibItem3" "moveable_item_rup_arm_pork" + "dropGibItem3Joint" "Ruparm" + + "def_dropGibItem4" "moveable_item_left_waist_pork" + "dropGibItem4Joint" "Waist" + + "def_dropGibItem5" "moveable_item_lup_leg_pork" + "dropGibItem5Joint" "Lupleg" + + "def_dropGibItem6" "moveable_item_rup_leg_pork" + "dropGibItem6Joint" "Rupleg" + + "def_dropGibItem7" "moveable_item_rup2_leg_pork" + "dropGibItem7Joint" "Rloleg" + + "def_dropGibItem8" "moveable_item_pelvis_pork" + "dropGibItem8Joint" "Hips" + +} + +model cpu1_monster_trite { + inherit monster_demon_trite + + anim guitrite models/md5/monsters/trite/guitrite.md5anim { + ai_no_turn + frame 1 disableWalkIK + frame 1 disableGravity + frame 16 sound_body snd_sight + frame 25 melee melee_tritebite1 + frame 45 enableWalkIK + frame 45 enableGravity + } +} + +entityDef cpu1_monster_trite { + "inherit" "monster_demon_trite" + "model" "cpu1_monster_trite" + "size" "20 20 20" +} diff --git a/base/def/map_cpuboss.def b/base/def/map_cpuboss.def new file mode 100644 index 00000000..53de686d --- /dev/null +++ b/base/def/map_cpuboss.def @@ -0,0 +1,61 @@ +//CPU_boss + +export fred { + camera models/monsters/sabaoth/cycles/death.mb -dest models/md5/cinematics/cpu_boss/cpu_boss_cam +} + +entityDef cpuboss_cam { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + + "spawnclass" "idCameraAnim" + "cinematic" "1" + + "anim cpu_boss_cam" "models/md5/cinematics/cpu_boss/cpu_boss_cam.md5camera" +} + + +model cpuboss_cin_player { + mesh models/md5/characters/player/mocap/player.md5mesh + skin skins/player/noweapon.skin + + anim sargedeath models/md5/cinematics/cpu_boss/sabaoth_death_player.md5anim + +} + +entityDef cpuboss_cin_player { + "inherit" "cin_base" + "model" "cpuboss_cin_player" + "cinematic" "1" + + "anim" "sargedeath" + +} + +model cpuboss_cin_sabaoth { + mesh models/md5/monsters/sabaoth/sabaoth.md5mesh + + anim death models/md5/monsters/sabaoth/death.md5anim { + frame 200 skin skins/models/monsters/sabdeath.skin + frame 1 trigger sargeexplosion1 + frame 10 sound_voice sabaoth_death + frame 20 trigger sargeexplosion2 + frame 35 trigger sargeexplosion3 + frame 60 trigger sargeexplosion4 + frame 85 trigger sargeexplosion5 + } + +} + +entityDef cpuboss_cin_sabaoth { + "inherit" "cin_base" + "model" "cpuboss_cin_sabaoth" + "cinematic" "1" + + "anim" "death" + +} + + + diff --git a/base/def/map_delta1.def b/base/def/map_delta1.def new file mode 100644 index 00000000..d15e00c9 --- /dev/null +++ b/base/def/map_delta1.def @@ -0,0 +1,113 @@ + + + +//sarge vcd + +export fred { + camera maps/eric/delta1/sarge_video.mb -dest models/md5/cinematics/delta1/sarge_vcd + + options -prefix LAB_ -keepmesh labcoatmesh -keepmesh oldhead_head02 -keepmesh oldhead_righteyemesh -keepmesh oldhead_lefteyemesh + + mesh maps/fred/delta1/scipull_idle.mb -dest models/md5/cinematics/delta1/scipull_mesh + anim maps/fred/delta1/scipull_idle.mb -dest models/md5/cinematics/delta1/scipull_idle + anim maps/fred/delta1/scipull.mb -dest models/md5/cinematics/delta1/scipull + +} + +entityDef delta1_sargevcd_cam { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + + "spawnclass" "idCameraAnim" + + "anim sarge_vcd" "models/md5/cinematics/delta1/sarge_vcd.md5camera" +} + + + +//Reactor... + +export fred { + + options -prefix REACTOR_ -align ALL //-keep blah -parent disc2 ALL + + mesh models/seneca/reactor/anims/idle.mb -dest models/md5/environments/reactor + anim models/seneca/reactor/anims/idle.mb -dest models/md5/environments/idle // -range 1 100 + anim models/seneca/reactor/anims/startup.mb -dest models/md5/environments/startup +} + +model delta1_reactor { + mesh models/md5/environments/reactor.md5mesh + anim idle models/md5/environments/idle.md5anim + anim startup models/md5/environments/startup.md5anim +} + +entityDef delta1_reactor { + "editor_color" "1 .5 .3" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 32" + "editor_copy2" "anim" + + "spawnclass" "idAnimated" + "model" "delta1_reactor" + "anim" "idle" +} + + +//scipull... + + +model delta1_scipull { + mesh models/md5/cinematics/delta1/scipull_mesh.md5mesh + anim idle models/md5/cinematics/delta1/scipull_idle.md5anim + anim pull models/md5/cinematics/delta1/scipull.md5anim +} + +entityDef delta1_scipull { + "editor_color" "1 .5 .3" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 32" + "editor_copy2" "anim" + + "spawnclass" "idAnimated" + "model" "delta1_scipull" + "anim" "idle" +} + + +//sarge vcd + +model delta1_sarge_video_head { + mesh models/md5/heads/sarge/sarge.md5mesh + anim stand models/md5/heads/sarge/sargeidle.md5anim + + anim sarge_vcd models/md5/heads/sarge/delta1/sarge_vcd.md5anim +} + +model delta1_sarge_video { + inherit npc_marine + + anim sarge_vcd models/md5/chars/sarge/delta1/sarge_vcd.md5anim { + frame 1 event disableEyeFocus +// frame 1 aviGame delta1_sarge_vcd + frame 15 sound_voice delta1_sarge_vcd +// frame 580 aviGame + + } +} + +entityDef delta1_sarge_video { + "inherit" "npc_base" + "model" "delta1_sarge_video" + "size" "12 12 74" + "sound_bone" "headcontrol" + "ik_numlegs" "0" + "eye_horizontal_offset" "0" + + "def_head" "delta1_sarge_video_head" + "head_joint" "Shoulders" +} + + + diff --git a/base/def/map_delta2a.def b/base/def/map_delta2a.def new file mode 100644 index 00000000..67b25045 --- /dev/null +++ b/base/def/map_delta2a.def @@ -0,0 +1,719 @@ +model delta2a_commando { + inherit monster_zombie_commando + + anim columns models/md5/monsters/zct/delta2a_leapdown.md5anim { + ai_no_turn + frame 1 call overrideLegs + frame 1 disableGravity + frame 1 disableWalkIK + + frame 11 sound_body snd_footstep + frame 19 sound_body snd_footstep + frame 24 sound_body snd_footstep + frame 31 sound_body snd_footstep + frame 43 sound_voice monster_zombie_commando_sight1 + frame 64 sound_body snd_tentacle_out + frame 69 sound_body snd_footstep + frame 80 enableGravity + frame 80 enableWalkIK + frame 72 sound_body snd_thud + frame 87 sound_voice monster_zombie_commando_sight7 + frame 91 sound_weapon snd_tentacle_in + } +} + +entityDef delta2a_commando { + "inherit" "monster_zombie_commando" + "scriptobject" "ai" + "nativeobject" "rvmMonsterZombieCommandoTentacle" + "model" "delta2a_commando" +} + +model delta2a_fatty { + inherit monster_zombie_fat + anim bathroomidle models/md5/monsters/zfat/deltabathroomloop.md5anim { + ai_no_turn + } + anim bathroomgetup models/md5/monsters/zfat/deltabathroomgetup.md5anim { + ai_no_turn + frame 1 sound_voice2 monster_zombie_fat_sight1 + } +} + +entityDef delta2a_fatty { + "inherit" "monster_zombie_fat" + "model" "delta2a_fatty" + + "anim" "bathroomidle" + "on_activate" "bathroomgetup" + "walk_on_sight" "0" +} + + +model delta2a_cin_fatty { + mesh models/md5/monsters/zfat/zfat.md5mesh + anim office3 models/md5/cinematics/delta2a/zoffice3.md5anim { + frame 26 sound_voice d2a_fat_hit_glass + } + +} + +entityDef delta2a_cin_fatty { + "inherit" "cin_base" + "anim" "office3" + "model" "delta2a_cin_fatty" + "skin" "skins/monsters/zombies/zfat.skin" + +} + + +entityDef delta2a_zombie_office1 { + "inherit" "monster_zombie_maint_bald" + "scriptobject" "ai" + "nativeobject" "rvmCharacter" + "model" "model_delta2a_zombie_nojaw" + "def_head" "head_bloodybald" + "head_joint" "Shoulders" + + "snd_footstep" "monster_zombie_security_footstep" +} + +entityDef delta2a_zombie_office2 { + "inherit" "monster_zombie_maint_bald" + "scriptobject" "ai" + "nativeobject" "rvmCharacter" + "model" "model_delta2a_zombie_nojaw" + "def_head" "head_zombie2" + "head_joint" "Shoulders" + "size" "" + + "snd_footstep" "monster_zombie_security_footstep" +} + +model model_delta2a_zombie_nojaw { + inherit model_monster_zombie + mesh models/md5/monsters/zombies/jumpsuitzombie.md5mesh + skin skins/monsters/zombies/jumpsuit.skin + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER eyecontrol chair) + + anim stand models/md5/cinematics/delta2a/zoffice2end.md5anim + anim idle models/md5/cinematics/delta2a/zoffice2end.md5anim + anim office2start models/md5/cinematics/delta2a/zoffice2start.md5anim { + ai_no_turn + } + anim office2 models/md5/cinematics/delta2a/zoffice2.md5anim { + frame 1 event ignoreDamage + frame 21 sound_body snd_footstep + frame 51 sound_body snd_footstep + frame 65 sound_body snd_footstep + frame 78 sound_body snd_footstep + frame 89 sound_body snd_footstep + frame 94 sound_body snd_footstep + frame 97 sound_body snd_footstep + ai_no_turn + } + anim office2end models/md5/cinematics/delta2a/zoffice2end.md5anim { + frame 1 event ignoreDamage + } + anim office1 models/md5/cinematics/delta2a/zoffice1.md5anim +} + +/*********************************************************************** + +delta2a_imp + +***********************************************************************/ + +model delta2a_imp { + inherit monster_demon_imp + + anim columnidle models/md5/monsters/imp/idlecolumn.md5anim { + ai_no_turn + frame 1 disableGravity + frame 1 disableWalkIK + } + anim columncrawl models/md5/monsters/imp/leapdowncolumn.md5anim { + ai_no_turn + frame 1 disableGravity + frame 1 disableWalkIK + frame 1 sound_voice snd_crawlersight + frame 13 sound_weapon snd_thud + frame 13 sound_body snd_glassfootstep + frame 14 sound_body snd_glassfootstep + frame 17 sound_body snd_glassfootstep + frame 24 sound_body snd_glassfootstep + frame 29 sound_body snd_glassfootstep + + frame 30 sound_voice snd_crawlergetoff + + frame 33 sound_body snd_glassfootstep + frame 37 sound_body snd_glassfootstep + frame 41 sound_body snd_glassfootstep + frame 42 sound_body snd_glassfootstep + frame 48 sound_body snd_footstep + frame 49 enableGravity + frame 49 enableWalkIK + frame 50 sound snd_thud + } + + anim corneridle models/md5/monsters/imp/d1corneridle.md5anim { + ai_no_turn + } + anim cornercrawl models/md5/monsters/imp/d1corner.md5anim { + ai_no_turn + } + + anim cageidle models/md5/monsters/imp/idlecages.md5anim { + ai_no_turn + frame 1 disableGravity + frame 1 disableWalkIK + } + + anim cageleap models/md5/monsters/imp/leapdowncages.md5anim { + ai_no_turn + frame 1 disableGravity + frame 1 disableWalkIK + frame 35 enableGravity + frame 35 enableWalkIK + } +} + +entityDef delta2a_imp { + "inherit" "monster_demon_imp" + "model" "delta2a_imp" + + "snd_crawlersight" "delta2a_columncrawlersight" + "snd_crawlergetoff" "monster_demon_imp_attackmelee_2" + "snd_glassfootstep" "monster_demon_imp_footstep_glass" +} + +//Ian the Scientist + +export fred { + + camera maps/fred/delta2a/ian_shot1.mb -range 1 756 -dest models/md5/cinematics/delta2a/scientist_cam + +} + +entityDef delta2a_scientist_cam { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + + "spawnclass" "idCameraAnim" + "cinematic" "1" + + "anim scientist" "models/md5/cinematics/delta2a/scientist_cam.md5camera" +} + + +entityDef delta2a_sci_tele_hell_visions_cam { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + + "spawnclass" "idCameraAnim" + "cinematic" "1" + + "anim teleport" "models/md5/cinematics/delta2a/teleporter_cam.md5cameras" +} + +model delta2a_player { + mesh models/md5/characters/player/mocap/wepplayer.md5mesh + skin skins/player/shotgun.skin + + anim teleport models/md5/cinematics/delta2a/teleporterplayer.md5anim { + frame 1 skin skins/player/noguns.skin + frame 1 sound_global delta2a_ending_sfx + } + + anim scientist_a models/md5/cinematics/delta2a/scientistplayer_a.md5anim { + frame 8 sound_body snd_footstep + frame 22 sound_body snd_footstep + frame 37 sound_body snd_footstep + frame 55 sound_body snd_footstep + frame 60 sound_body snd_footstep + frame 88 sound_body snd_footstep + frame 106 sound_body snd_footstep + frame 128 sound_body snd_footstep + frame 146 sound_body snd_footstep + frame 164 sound_body snd_footstep + } + + anim scientist_b models/md5/cinematics/delta2a/scientistplayer_b.md5anim { + frame 4 sound_body snd_footstep + frame 30 sound_body snd_footstep + frame 50 sound_body snd_footstep + frame 70 sound_body snd_footstep + } + +} + +entityDef delta2a_player { + "inherit" "cin_base" + "editor_color" "1 .5 .3" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 32" + "editor_copy2" "anim" + + "spawnclass" "idAnimated" + "anim" "teleport" + "model" "delta2a_player" + "snd_footstep" "player_sounds_footstep" + "cinematic" "1" + +} + +entityDef delta2a_player_scientist { + "inherit" "cin_base" + "editor_color" "1 .5 .3" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 32" + "editor_copy2" "anim" + + "spawnclass" "idAnimated" + "anim" "scientist_a" + "model" "delta2a_player" + "snd_footstep" "player_sounds_footstep" + "cinematic" "1" + + "auto_advance" "1" + "num_anims" "2" + "anim1" "scientist_a" + "anim2" "scientist_b" + +} + +model delta2a_scientist_head { + + mesh models/md5/heads/head02young/h2_cinematic.md5mesh + anim stand models/md5/heads/head02young/h2idle_cinematic.md5anim + anim idle models/md5/heads/head02young/h2idle_cinematic.md5anim + anim dead models/md5/heads/head02young/h2death_cinematic.md5anim + + anim start models/md5/heads/head02young/delta2a/delta2a_01_ian_first.md5anim { + frame 1 sound_voice delta2a_sci_wuh + } + anim shot_one models/md5/heads/head02young/delta2a/delta2a_02_ian_first.md5anim { + frame 1 sound_voice delta2a_sci_thankgod + } + anim shot_two models/md5/heads/head02young/delta2a/delta2a_03_ian_first.md5anim { + frame 1 sound_voice delta2a_sci_iwaspart + } + anim shot_three models/md5/heads/head02young/delta2a/delta2a_04_ian_first.md5anim { + frame 1 sound_voice delta2a_sci_youhaveto + } + anim shot_four models/md5/heads/head02young/delta2a/delta2a_05_ian_first.md5anim { + frame 1 sound_voice delta2a_sci_imgoin + } + anim talk_primary models/md5/heads/head02young/delta2a/delta2a_ian_primary_first.md5anim { + frame 1 sound_voice delta2a_sci_primary1 + } + anim talk_secondary1 models/md5/heads/head02young/delta2a/delta2a_ian_secondary_first.md5anim { + frame 1 sound_voice delta2a_sci_secondary1 + } + anim talk_secondary2 models/md5/heads/head02young/delta2a/delta2a_06_ian_first.md5anim { + frame 1 sound_voice delta2a_sci_imgonnastay + } +} + +model delta2a_scientist { + + mesh models/md5/chars/labcoat.md5mesh + + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER chair eyecontrol) + + anim af_pose models/md5/chars/af_pose.md5anim + anim stand models/md5/chars/ian_d2a/ianpart4_stand.md5anim { + frame 1 event disableEyeFocus + frame 2 sound_body typing + frame 11 sound_body2 typing + frame 18 sound_body typing + frame 28 sound_body2 typing + frame 32 sound_body typing + frame 35 sound_body2 typing + frame 38 sound_body typing + frame 42 sound_body2 typing + frame 45 sound_body typing + frame 73 sound_body2 typing + frame 77 sound_body typing + frame 80 sound_body2 typing + frame 84 sound_body typing + frame 89 sound_body2 typing + frame 94 sound_body typing + frame 97 sound_body2 typing + frame 100 sound_body typing + frame 104 sound_body2 typing + frame 107 sound_body typing + frame 135 sound_body2 typing + frame 138 sound_body typing + frame 145 sound_body2 typing + frame 149 sound_body typing + frame 152 sound_body2 typing + frame 155 sound_body typing + frame 159 sound_body2 typing + frame 162 sound_body typing + frame 168 sound_body2 typing + frame 172 sound_body typing + frame 175 sound_body2 typing + frame 178 sound_body typing + frame 184 sound_body2 typing + frame 195 sound_body typing + frame 202 sound_body2 typing + frame 212 sound_body typing + frame 216 sound_body2 typing + frame 219 sound_body typing + frame 222 sound_body2 typing + frame 226 sound_body typing + frame 229 sound_body2 typing + frame 236 sound_body typing + frame 258 sound_body2 typing + frame 261 sound_body typing + frame 265 sound_body2 typing + frame 268 sound_body typing + frame 274 sound_body2 typing + frame 278 sound_body typing + frame 281 sound_body2 typing + frame 284 sound_body typing + frame 288 sound_body2 typing + frame 291 sound_body typing + } + anim idle models/md5/chars/ian_d2a/ianpart4_stand.md5anim { + frame 1 event disableEyeFocus + frame 2 sound_body typing + frame 11 sound_body2 typing + frame 18 sound_body typing + frame 28 sound_body2 typing + frame 32 sound_body typing + frame 35 sound_body2 typing + frame 38 sound_body typing + frame 42 sound_body2 typing + frame 45 sound_body typing + frame 73 sound_body2 typing + frame 77 sound_body typing + frame 80 sound_body2 typing + frame 84 sound_body typing + frame 89 sound_body2 typing + frame 94 sound_body typing + frame 97 sound_body2 typing + frame 100 sound_body typing + frame 104 sound_body2 typing + frame 107 sound_body typing + frame 135 sound_body2 typing + frame 138 sound_body typing + frame 145 sound_body2 typing + frame 149 sound_body typing + frame 152 sound_body2 typing + frame 155 sound_body typing + frame 159 sound_body2 typing + frame 162 sound_body typing + frame 168 sound_body2 typing + frame 172 sound_body typing + frame 175 sound_body2 typing + frame 178 sound_body typing + frame 184 sound_body2 typing + frame 195 sound_body typing + frame 202 sound_body2 typing + frame 212 sound_body typing + frame 216 sound_body2 typing + frame 219 sound_body typing + frame 222 sound_body2 typing + frame 226 sound_body typing + frame 229 sound_body2 typing + frame 236 sound_body typing + frame 258 sound_body2 typing + frame 261 sound_body typing + frame 265 sound_body2 typing + frame 268 sound_body typing + frame 274 sound_body2 typing + frame 278 sound_body typing + frame 281 sound_body2 typing + frame 284 sound_body typing + frame 288 sound_body2 typing + frame 291 sound_body typing + + + } + anim cower models/md5/chars/ian_d2a/iancower.md5anim { + frame 1 event disableEyeFocus + } + anim start models/md5/chars/ian_d2a/ianstart.md5anim { + frame 1 event disableEyeFocus + } + anim shot_one models/md5/chars/ian_d2a/ianpart1.md5anim { + frame 1 event disableEyeFocus + } + anim shot_two models/md5/chars/ian_d2a/ianpart2.md5anim { + frame 1 event disableEyeFocus + frame 92 sound_body snd_footstep + frame 113 sound_body snd_footstep + frame 131 sound_body snd_footstep + } + anim shot_three models/md5/chars/ian_d2a/ianpart3.md5anim { + frame 1 event disableEyeFocus + } + anim shot_four models/md5/chars/ian_d2a/ianpart4.md5anim { + frame 1 event disableEyeFocus + frame 9 sound_body typing + frame 12 sound_body2 typing + frame 18 sound_body typing + frame 22 sound_body2 typing + frame 25 sound_body typing + frame 28 sound_body2 typing + frame 33 sound_body typing + frame 36 sound_body2 typing + frame 46 sound_body typing + frame 54 sound_body2 typing + frame 57 sound_body typing + frame 63 sound_body2 typing + frame 67 sound_body typing + frame 70 sound_body2 typing + frame 70 event enableEyeFocus + frame 73 sound_body typing + frame 78 sound_body2 typing + frame 81 sound_body typing + frame 88 sound_body2 typing + frame 91 sound_body typing + + frame 220 event enableEyeFocus + frame 390 event disableEyeFocus + frame 391 trigger mal_func_static_3065 + frame 435 event enableEyeFocus + frame 500 event enableEyeFocus + frame 528 event disableEyeFocus + frame 529 event enableEyeFocus + } + anim talk_primary models/md5/chars/ian_d2a/ianpart4_talk.md5anim { + frame 1 event enableEyeFocus + } + anim talk_secondary1 models/md5/chars/ian_d2a/ianpart4_talk.md5anim { + frame 1 event enableEyeFocus + } + anim talk_secondary2 models/md5/chars/ian_d2a/ianpart4_talk.md5anim { + frame 1 event enableEyeFocus + } +} + + +entityDef delta2a_scientist { + "inherit" "npc_base" + "anim" "shot_one" + "model" "delta2a_scientist" + "def_head" "delta2a_scientist_head" + "head_joint" "Shoulders" + "size" "20 20 70" + + "skin" "skins/characters/npcs/labcoat_chair.skin" + "def_dropDeathItem" "moveable_chair2" + "dropDeathItemJoint" "chair" + "dropDeathItemRotation" "0 0 -90" + "dropDeathItemOffset" "0 -10 30" + "skin_dropDeath" "skins/characters/npcs/labcoat_old.skin" + + "look_joint Waist" "-0.2 0 0" + "look_joint Chest" "-0.2 0 0" + "look_joint Shoulders" "-0.2 0 0" + "look_joint headcontrol" "-0.4 0.4 0" + "look_joint neckcontrol" "-0.4 0.4 0" + "look_joint Ruparm" "0.5 0 0" + "look_joint Luparm" "0.5 0 0" + "look_min" "-90 -80 0" + "look_max" "25 80 0" + "turn_rate" "0" + "def_attach" "prop_soft_desk_chair2" + "ik_numlegs" "0" + + "talk_time" "0" + "talkradius" "384" + "cinematic" "1" + + "snd_wuh" "delta2a_sci_wuh" + "snd_thankgod" "delta2a_sci_thankgod" + "snd_iwaspart" "delta2a_sci_iwaspart" + "snd_youhaveto" "delta2a_sci_youhaveto" + "snd_imgoin" "delta2a_sci_imgoin" + "snd_imgonnastay" "delta2a_sci_imgonnastay" + "snd_primary1" "delta2a_sci_primary1" + "snd_secondary1" "delta2a_sci_secondary1" + +} + +model delta2a_scientist_head_return { + + mesh models/md5/heads/head02young/h2_cinematic.md5mesh + anim stand models/md5/heads/head02young/h2idle_cinematic.md5anim + anim idle models/md5/heads/head02young/h2idle_cinematic.md5anim + anim dead models/md5/heads/head02young/h2death_cinematic.md5anim + + anim talk_trigger models/md5/heads/head02young/delta2a/delta2a_01_ian_second.md5anim { + frame 1 sound_voice delta2a_sci_excellent + frame 430 sound_voice delta2a_sci_butbefore + frame 510 sound_voice delta2a_sci_itsajournal + frame 511 trigger vidcd_trigger1 + } + anim talk_primary models/md5/heads/head02young/delta2a/delta2a_ian_primary_second.md5anim { + frame 1 sound_voice delta2a_sci_primary2 + } + anim talk_secondary1 models/md5/heads/head02young/delta2a/delta2a_ian_secondary_second.md5anim { + frame 1 sound_voice delta2a_sci_secondary2 + } + anim talk_secondary2 models/md5/heads/head02young/delta2a/delta2a_ian_primary_second.md5anim { + frame 1 sound_voice delta2a_sci_primary2 + } +} + +model delta2a_scientist_return { + + mesh models/md5/chars/labcoat.md5mesh + skin skins/characters/npcs/labcoat_chair.skin + + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER chair) + + anim af_pose models/md5/chars/af_pose.md5anim + anim stand models/md5/chars/ian_d2a/ianpart4_stand.md5anim { + frame 1 event disableEyeFocus + } + anim idle models/md5/chars/ian_d2a/ianpart4_stand.md5anim { + frame 1 event disableEyeFocus + } + anim cower models/md5/chars/ian_d2a/iancower.md5anim { + frame 1 event disableEyeFocus + } + anim talk_trigger models/md5/chars/ian_d2a/ianpart4_talk_trigger.md5anim { + frame 1 event enableEyeFocus + } + anim talk_primary models/md5/chars/ian_d2a/ianpart4_talk.md5anim { + frame 1 event enableEyeFocus + } + anim talk_secondary1 models/md5/chars/ian_d2a/ianpart4_talk.md5anim { + frame 1 event enableEyeFocus + } + anim talk_secondary2 models/md5/chars/ian_d2a/ianpart4_talk.md5anim { + frame 1 event enableEyeFocus + } +} + + +entityDef delta2a_scientist_return { + "inherit" "npc_base" + "anim" "shot_one" + "model" "delta2a_scientist_return" + "def_head" "delta2a_scientist_head_return" + "head_joint" "Shoulders" + "size" "20 20 70" + + "skin" "skins/characters/npcs/labcoat_chair.skin" + "def_dropDeathItem" "moveable_chair2" + "dropDeathItemJoint" "chair" + "dropDeathItemRotation" "0 0 -90" + "dropDeathItemOffset" "0 -10 30" + "skin_dropDeath" "skins/characters/npcs/labcoat_old.skin" + "ik_numlegs" "0" + + "look_joint Waist" "-0.2 0 0" + "look_joint Chest" "-0.2 0 0" + "look_joint Shoulders" "-0.2 0 0" + "look_joint headcontrol" "-0.4 0.4 0" + "look_joint neckcontrol" "-0.4 0.4 0" + "look_joint Ruparm" "0.5 0 0" + "look_joint Luparm" "0.5 0 0" + "look_min" "-90 -80 0" + "look_max" "25 80 0" + "turn_rate" "0" + + "def_attach" "prop_soft_desk_chair2" + + "talk_time" "0" + "talkradius" "384" + "cinematic" "1" + + "snd_excellent" "delta2a_sci_excellent" + "snd_butbefore" "delta2a_sci_butbefore" + "snd_itsajournal" "delta2a_sci_itsajournal" + + "snd_primary2" "delta2a_sci_primary2" + "snd_secondary2" "delta2a_sci_secondary2" + +} + + + +//TELEPORTATION ROOM... + +export fred { + camera maps/fred/delta2a/malteleporterroom.mb -dest models/md5/cinematics/delta2a/teleporter_cam + + options -prefix TELE_ -keep ALL -parent EARMUFFS ALL + + mesh maps/fred/delta2a/malteleporterroom.mb -dest models/md5/cinematics/delta2a/teleporter + anim maps/fred/delta2a/malteleporterroom.mb -dest models/md5/cinematics/delta2a/teleporter + anim maps/fred/delta2a/tele_arms_return.mb -dest models/md5/cinematics/delta2a/teleporter_return +} + + +entityDef delta2a_teleporter_cam { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + + "spawnclass" "idCameraAnim" + + "cinematic" "1" + "anim teleport" "models/md5/cinematics/delta2a/teleporter_cam.md5camera" +} + +model delta2a_teleporter { + mesh models/md5/cinematics/delta2a/teleporter.md5mesh + anim brace models/md5/cinematics/delta2a/teleporter.md5anim { + frame 1 sound_body d2a_tp_warmup + } + anim return models/md5/cinematics/delta2a/teleporter_return.md5anim +} + +entityDef delta2a_teleporter { + "inherit" "cin_base" + "anim" "brace" + "model" "delta2a_teleporter" + "cinematic" "1" +} + +//Cam Toob... + +export fred { + + camera models/Fred/cam_toob.mb -dest models/md5/cinematics/delta2a/cam_toob + + options -prefix TOOB_ -keep CONNECT + + mesh models/Fred/cam_toob.mb -dest models/md5/cinematics/delta2a/toob + anim models/Fred/cam_toob.mb -dest models/md5/cinematics/delta2a/toob +} + +entityDef cin_toob_cam { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + + "spawnclass" "idCameraAnim" + + "anim" "toobcam" + "cinematic" "1" + + "anim toobcam" "models/md5/cinematics/delta2a/cam_toob.md5camera" +} + +model cin_toob { + mesh models/md5/cinematics/delta2a/toob.md5mesh + anim toob models/md5/cinematics/delta2a/toob.md5anim +} + +entityDef cin_toob { + "inherit" "cin_base" + "anim" "toob" + "model" "cin_toob" + "cinematic" "1" + +} diff --git a/base/def/map_delta2b.def b/base/def/map_delta2b.def new file mode 100644 index 00000000..8b1a1a4a --- /dev/null +++ b/base/def/map_delta2b.def @@ -0,0 +1,276 @@ +//SWAYING HOSES FOR TANK... + +export fred { + + camera maps/patd/delta2b_cam.mb -dest models/md5/cinematics/delta2b/delta2b_roq_camera + camera maps/patd/delta2b_roq2_cam.mb -dest models/md5/cinematics/delta2b/delta2b_roq2_camera + camera maps/patd/delta2b_roq3_cam.mb -dest models/md5/cinematics/delta2b/delta2b_roq3_camera +} + +entityDef delta2b_cam { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + + "spawnclass" "idCameraAnim" + "cinematic" "1" + + "anim delta2b_cam" "models/md5/cinematics/delta2b/delta2b_roq_camera.md5camera " +} + +entityDef delta2b_roq2_cam { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + + "spawnclass" "idCameraAnim" + "cinematic" "1" + + "anim delta2b_roq2_cam" "models/md5/cinematics/delta2b/delta2b_roq2_camera.md5camera " +} + +entityDef delta2b_roq3_cam { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + + "spawnclass" "idCameraAnim" + "cinematic" "1" + + "anim delta2b_roq3_cam" "models/md5/cinematics/delta2b/delta2b_roq3_camera.md5camera " +} + +export fred { + + options -prefix WIRE_ + + mesh maps/fred/delta2b/waterwires.mb -range 1 1 -dest models/md5/cinematics/delta2b/waterwires + anim maps/fred/delta2b/waterwires.mb -xyzprecision .01 -dest models/md5/cinematics/delta2b/waterwires +} + + +model delta2b_waterwires { + mesh models/md5/cinematics/delta2b/waterwires.md5mesh + anim sway models/md5/cinematics/delta2b/waterwires.md5anim +} + +entityDef delta2b_waterwires { + "inherit" "cin_base" + "model" "delta2b_waterwires" + "anim" "sway" +} + +//IMP TANK + +export fred { + + options -prefix IMPWIRE_ + + mesh maps/fred/delta2b/monster_tanks.mb -dest models/md5/cinematics/delta2b/impwires + anim maps/fred/delta2b/monster_tanks.mb -dest models/md5/cinematics/delta2b/impwires + anim maps/fred/delta2b/monster_tanks_twitch.mb -range 23 97 -dest models/md5/cinematics/delta2b/imptwitch +} + + +model delta2b_tankimpwires { + mesh models/md5/cinematics/delta2b/impwires.md5mesh + anim sway models/md5/cinematics/delta2b/impwires.md5anim + anim twitch models/md5/cinematics/delta2b/imptwitch.md5anim +} + +entityDef delta2b_tankimpwires { + "inherit" "cin_base" + "model" "delta2b_tankimpwires" + "anim" "sway" + "auto_advance" "1" + "loop_last_anim" "1" + + "num_anims" "2" + "anim1" "twitch" + "anim2" "sway" + +} + +model delta2b_tankimp { + mesh models/md5/monsters/imp/imp.md5mesh + anim sway models/md5/monsters/imp/imptankidle.md5anim + anim twitch models/md5/monsters/imp/imptanktwitch.md5anim + +} + +entityDef delta2b_tankimp { + "inherit" "cin_base" + "anim" "sway" + "model" "delta2b_tankimp" + + "auto_advance" "1" + "loop_last_anim" "1" + + "num_anims" "2" + "anim1" "twitch" + "anim2" "sway" +} + +//Revenant Tank + + +export fred { + options -prefix REV_ -parent Loneck Shldrs -keep Rmissile Lmissile -parent Rmissile Rgun -parent Lmissile Lgun + + anim maps/fred/delta2b/monster_tanks.mb -dest models/md5/cinematics/delta2b/revenant + + addoptions -align ALL + + mesh models/monsters/revenant/Fred/animation/idle1.ma -dest models/md5/cinematics/delta2b/revenant +} + +//REVENANT TANK + +export fred { + + options -prefix REVWIRE_ + + mesh maps/fred/delta2b/monster_tanks.mb -dest models/md5/cinematics/delta2b/revwires + anim maps/fred/delta2b/monster_tanks.mb -dest models/md5/cinematics/delta2b/revwires +} + + +model delta2b_tankrevwires { + mesh models/md5/cinematics/delta2b/revwires.md5mesh + anim sway models/md5/cinematics/delta2b/revwires.md5anim +} + +entityDef delta2b_tankrevwires { + "inherit" "cin_base" + "anim" "sway" + "model" "delta2b_tankrevwires" +} + +model delta2b_tankrev { + skin skins/models/monsters/revnoeyes.skin + mesh models/md5/cinematics/delta2b/revenant.md5mesh + anim sway models/md5/cinematics/delta2b/revenant.md5anim +} + +entityDef delta2b_tankrev { + "inherit" "cin_base" + "anim" "sway" + "model" "delta2b_tankrev" +} + +model delta2b_keycardzombie { + inherit model_monster_zombie + mesh models/md5/monsters/zombies/labcoatzombie.md5mesh + skin skins/monsters/zombies/labcoat.skin + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER eyecontrol chair) + + anim keycardidle models/md5/monsters/zombies/keycardgetupidle.md5anim + anim keycardgetup models/md5/monsters/zombies/keycardgetup.md5anim { + ai_no_turn + } +} + +entityDef delta2b_keycardzombie { + "inherit" "monster_zombie_base" + "skin" "skins/monsters/zombies/labcoat.skin" + "model" "delta2b_keycardzombie" + "def_head" "head_stump" + "head_joint" "Shoulders" +} + +model delta2b_hazmat { + mesh models/md5/chars/hazmat.md5mesh + + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER chair) + + anim stand models/md5/chars/hazmat_d2b/hazmat_idle.md5anim + + anim af_pose models/md5/chars/af_pose.md5anim + anim ik_pose models/md5/chars/af_pose.md5anim + + anim cower models/md5/chars/cower4.md5anim + + anim talk_trigger models/md5/chars/hazmat_d2b/trigger.md5anim { + frame 1 sound_voice snd_talk_trigger + } + anim talk_primary models/md5/chars/hazmat_d2b/primary.md5anim { + frame 1 sound_voice snd_talk_primary + } + anim talk_secondary1 models/md5/chars/hazmat_d2b/secondary1.md5anim { + frame 1 sound_voice snd_talk_secondary1 + } + anim talk_secondary2 models/md5/chars/hazmat_d2b/secondary2.md5anim { + frame 1 sound_voice snd_talk_secondary2 + } +} + +entityDef delta2b_hazmat { + "inherit" "npc_base" + "model" "delta2b_hazmat" + "ragdoll" "char_hazmat" + + "head_joint" "Shoulders" + + "copy_joint_world eyecontrol" "" + + "talk_no_turn" "1" + "talktime" "0" + + "turn_rate" "0" + + "ik_numLegs" "0" + "ik_footSize" "0" + + + "look_joint Waist" ".1 .1 0" + "look_joint Chest" ".1 .2 0" + "look_joint Shoulders" ".2 .2 0" + "look_joint headcontrol" ".4 .4 0" + "look_joint Ruparm" "0 0 0" + "look_joint Luparm" "0 0 0" + + "head_focus_rate" "0.1" + + "talk0_blendin" "8" + "talk0_blendout" "8" + "talk1_blendin" "8" + "talk1_blendout" "8" + "talk2_blendin" "8" + "talk2_blendout" "8" + + "eye_turn_min" "-20 -30 0" + "eye_turn_max" "20 30 0" + + "snd_talk_trigger" "delta2b_hazmat_trigger" + "snd_talk_primary" "delta2b_hazmat_primary" + "snd_talk_secondary1" "delta2b_hazmat_secondary1" + "snd_talk_secondary2" "delta2b_hazmat_secondary2" +} + +entityDef delta2b_imp { + "inherit" "monster_demon_imp" + "model" "delta2b_imp" + "anim" "cabinet_leap" +} + +model delta2b_imp { + inherit monster_demon_imp + anim cabinet_leap models/md5/monsters/imp/cabinet_leap.md5anim { + ai_no_turn + frame 1 disableGravity + frame 1 disableWalkIK + frame 1 sound_voice snd_sight8 + frame 4 sound_body snd_footstep + frame 15 sound_body snd_footstep + frame 16 attack_begin melee_impLeapAttack + frame 28 attack_end + frame 18 trigger impush + frame 27 enableGravity + frame 27 enableWalkIK + frame 30 sound_body snd_footstep + frame 32 sound_body snd_footstep + frame 38 sound_body snd_footstep + } +} \ No newline at end of file diff --git a/base/def/map_delta3.def b/base/def/map_delta3.def new file mode 100644 index 00000000..760342aa --- /dev/null +++ b/base/def/map_delta3.def @@ -0,0 +1,38 @@ + +//DELTA3 + +model delta3_betruger_head { + mesh models/md5/heads/betruger/betruger.md5mesh + channel eyelids ( Ruplid Rlolid Luplid Llolid ) + + anim idle models/md5/heads/betruger/betrugeridle.md5anim + anim stand models/md5/heads/betruger/betrugeridle.md5anim +} + + +model delta3_betruger { + inherit npc_labcoat + + anim laugh models/md5/chars/betruger/delta4/betrugerlaugh.md5anim { + frame 64 sound_voice snd_escape + frame 112 sound_voice snd_laugh + } + + anim point models/md5/chars/betruger/delta3/betruger_point.md5anim + anim point_down models/md5/chars/betruger/delta3/betruger_point_down.md5anim + +} + +entityDef delta3_betruger { + "inherit" "npc_base" + "model" "delta3_betruger" + "anim" "laugh" + "size" "1 1 1" + "ik_numlegs" "0" + "def_head" "delta3_betruger_head" + "head_joint" "Shoulders" + "cinematic" "1" + + "snd_escape" "delta4_betruger_escape" + "snd_laugh" "delta4_betruger_laugh" +} diff --git a/base/def/map_delta4.def b/base/def/map_delta4.def new file mode 100644 index 00000000..1b6c3757 --- /dev/null +++ b/base/def/map_delta4.def @@ -0,0 +1,238 @@ + +// CINEMATICS + + +export fred { + camera maps/fred/delta4/hkintro.mb -range 1 251 -dest models/md5/cinematics/delta4/hkintro_cam1 + camera maps/fred/delta4/hkintro.mb -range 252 384 -dest models/md5/cinematics/delta4/hkintro_cam1b + camera maps/fred/delta4/hkthrowshaz1.mb -range 182 260 -dest models/md5/cinematics/delta4/hkintro_cam2 + camera maps/fred/delta4/hkthrowshaz1.mb -range 261 409 -dest models/md5/cinematics/delta4/hkintro_cam3 + camera maps/fred/delta4/hkintro2.mb -range 617 644 -dest models/md5/cinematics/delta4/hkintro_cam4 + + addoptions -prefix ENV_ + mesh maps/fred/delta4/hkintro.mb -dest models/md5/cinematics/delta4/hkintro_teleporter + anim maps/fred/delta4/hkintro.mb -range 1 384 -dest models/md5/cinematics/delta4/hkintro_teleporter + + +} + +entityDef delta4_hkintro_cam { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + + "spawnclass" "idCameraAnim" + "cinematic" "1" + + "anim hk1" "models/md5/cinematics/delta4/hkintro_cam1.md5camera" + "anim hk1b" "models/md5/cinematics/delta4/hkintro_cam1b.md5camera" + "anim hk2" "models/md5/cinematics/delta4/hkintro_cam2.md5camera" + "anim hk3" "models/md5/cinematics/delta4/hkintro_cam3.md5camera" + "anim hk4" "models/md5/cinematics/delta4/hkintro_cam4.md5camera" + + +} + +model delta4_cin_teleporter { + mesh models/md5/cinematics/delta4/hkintro_teleporter.md5mesh + anim hk models/md5/cinematics/delta4/hkintro_teleporter.md5anim { + frame 146 sound_body teleport_shoulder_operate + } +} + +entityDef delta4_cin_teleporter { + "inherit" "cin_base" + "anim" "hk" + "model" "delta4_cin_teleporter" + "cinematic" "1" +} + + +model delta4_cin_hk { + mesh models/md5/monsters/hellknight/hellknight.md5mesh + anim out models/md5/cinematics/delta4/hkintro_hk_out.md5anim { + frame 342 sound_global monster_demon_hellknight_chatter_d4 + frame 343 sound_body hk_cin_footstep + frame 365 sound_body hk_cin_footstep + + } + anim hka models/md5/cinematics/delta4/hkintro_hk1.md5anim { + frame 10 sound_body hk_cin_footstep + frame 23 sound_global monster_demon_hellknight_chatter_combat_d4 + + } + anim hkb models/md5/cinematics/delta4/hkintro_hk2.md5anim { + frame 6 sound_body hk_cin_footstep + frame 12 sound_global monster_demon_hellknight_chatter_d4 + } + anim grab models/md5/cinematics/delta4/hkintro_hkgrab.md5anim { + frame 19 sound_body hk_cin_footstep + frame 32 sound_global monster_demon_hellknight_sight1_d4 + frame 37 sound_body hk_cin_footstep + + } + anim throw models/md5/cinematics/delta4/hkintro_hkthrow.md5anim { + + frame 7 sound_voice monster_demon_hellknight_chatter_combat + frame 34 trigger wallsplat + frame 37 sound_body hk_cin_footstep + frame 57 sound_global monster_demon_hellknight_chatter_combat_d4 + frame 88 sound_global monster_demon_hellknight_sight2_d4 + frame 129 sound_body hk_cin_footstep + } + anim back models/md5/cinematics/delta4/hkintro_hkthrow2.md5anim { + frame 105 sound_body hk_cin_footstep + frame 126 sound_body hk_cin_footstep + frame 144 sound_body hk_cin_footstep + } +} + +entityDef delta4_cin_hk1 { + "inherit" "cin_base" + "anim" "hka" + "model" "delta4_cin_hk" + "cinematic" "1" +} + +entityDef delta4_cin_hk2 { + "inherit" "cin_base" + "anim" "hkb" + "model" "delta4_cin_hk" + "cinematic" "1" +} + +model delta4_cin_player { + mesh models/md5/characters/player/mocap/mgplayer.md5mesh + skin skins/player/machinegun.skin + + anim hk models/md5/cinematics/delta4/hkintro_player.md5anim { + frame 1 sound_global delta4_hellknight_intro_music + frame 1 sound_global hk_intro_sfx + frame 13 sound_body player_sounds_footstep + frame 30 sound_body player_sounds_footstep + frame 43 sound_body player_sounds_footstep + frame 45 trigger officelights + frame 59 sound_body player_sounds_footstep + frame 74 sound_body player_sounds_footstep + frame 94 sound_body player_sounds_footstep + frame 113 sound_body player_sounds_footstep + frame 208 sound_body player_sounds_footstep + + } + anim hkb models/md5/cinematics/delta4/hkintro_player_b.md5anim { + frame 2 trigger hk_end + frame 37 sound_body player_sounds_footstep + frame 38 trigger haz + } + + anim hkend models/md5/cinematics/delta4/hkintro_player2.md5anim +} + +entityDef delta4_cin_player { + "inherit" "cin_base" + "anim" "hk" + "model" "delta4_cin_player" + "cinematic" "1" +} + +entityDef delta4_cin_player_start { + "inherit" "cin_base" + "anim" "hk" + "model" "delta4_cin_player" + "auto_advance" "1" + "num_anims" "2" + "anim1" "hk" + "anim2" "hkb" + "cinematic" "1" +} + + +model delta4_hazguy { + "inherit" "char_hazmat" + + anim runoutcough models/md5/cinematics/delta4/hkintro_runoutcough.md5anim { + frame 33 sound_body player_sounds_footstep + frame 35 sound_voice cough + frame 40 sound_body player_sounds_footstep + frame 44 sound_body2 player_sounds_footstep + frame 54 sound_body player_sounds_footstep + frame 58 sound_voice cough + frame 91 sound_body player_sounds_footstep + } + +} + +entityDef delta4_hazguy { + "inherit" "char_hazmat" + "model" "delta4_hazguy" + "anim" "runoutcough" + "size" "1 1 1" + "ik_numlegs" "0" + "cinematic" "1" + "skin" "skins/characters/npcs/d4bloodyhazmat.skin" + + + "snd_chatter" "" + "snd_talk_primary" "" + "snd_talk_secondary" "" + "snd_hit" "" +} + +model delta4_cin_hazguy { + mesh models/md5/chars/hazmat.md5mesh + skin skins/characters/npcs/d4bloodyhazmat.skin + + anim af_pose models/md5/chars/af_pose.md5anim + anim hkgrab models/md5/cinematics/delta4/hkintro_hazgetsgrabbed.md5anim { + frame 17 sound_voice d4_hazmat_what + frame 35 sound_voice d4_hazmat_ohno + } + anim hkthrow models/md5/cinematics/delta4/hkintro_hazgetsthrown.md5anim { + frame 22 sound_voice d4_hazmat_scream + frame 31 event startRagdoll + } +} + +entityDef delta4_cin_hazguy { + "inherit" "cin_base" + "model" "delta4_cin_hazguy" + "anim" "runoutcough" + "ragdoll" "char_hazmat" + "velocityTime" "200" + "cinematic" "1" + +} + +model delta4_betruger_head { + mesh models/md5/heads/betruger/betruger.md5mesh + channel eyelids ( Ruplid Rlolid Luplid Llolid ) + + anim idle models/md5/heads/betruger/betrugeridle.md5anim + anim stand models/md5/heads/betruger/betrugeridle.md5anim + anim laugh models/md5/heads/betruger/delta4/betheadhkintro.md5anim +} + + +model delta4_betruger { + inherit npc_labcoat + + anim laugh models/md5/chars/betruger/delta4/betrugerlaugh.md5anim { + frame 64 sound_voice snd_escape + frame 112 sound_voice snd_laugh + } + +} + +entityDef delta4_betruger { + "inherit" "npc_base" + "model" "delta4_betruger" + "anim" "laugh" + "size" "1 1 1" + "ik_numlegs" "0" + "def_head" "delta4_betruger_head" + "head_joint" "Shoulders" + "cinematic" "1" + + "snd_escape" "delta4_betruger_escape" + "snd_laugh" "delta4_betruger_laugh" +} diff --git a/base/def/map_delta5.def b/base/def/map_delta5.def new file mode 100644 index 00000000..e8cf3f2a --- /dev/null +++ b/base/def/map_delta5.def @@ -0,0 +1,133 @@ + +/*********************************************************************** + +Wounded_Swann + +***********************************************************************/ + +model delta5_swann_head { + skin skins/characters/npcs/swannbloody.skin + mesh models/md5/heads/swann/swann.md5mesh + + anim blink models/md5/heads/swann/swannblink.md5anim + anim idle models/md5/heads/swann/swannidle.md5anim + anim stand models/md5/heads/swann/swannidle.md5anim + anim talk_secondary1 models/md5/heads/swann/delta5/swannhead_wounded_secondary1.md5anim { + frame 1 sound_voice delta5_swann_secondary1 + } + anim talk_secondary2 models/md5/heads/swann/delta5/swannhead_wounded_secondary2.md5anim { + frame 1 sound_voice delta5_swann_secondary2 + } + anim talk_primary models/md5/heads/swann/delta5/swannhead_wounded_primary.md5anim { + frame 1 sound_voice delta5_swann_primary + } + anim talk_trigger models/md5/heads/swann/delta5/swannhead_wounded.md5anim { + frame 1 sound_voice delta5_swann_trigger + } +} + +model delta5_wounded_swann { + mesh models/md5/chars/suit.md5mesh + channel torso ( *origin ) + + skin skins/characters/npcs/bloodysuit.skin + anim af_pose models/md5/chars/af_pose.md5anim + anim stand models/md5/cinematics/delta5/swann_idle.md5anim + anim idle models/md5/cinematics/delta5/swann_idle.md5anim + anim talk_trigger models/md5/cinematics/delta5/swann_trigger.md5anim { + frame 1 enableEyeFocus + frame 36 disableEyeFocus + frame 205 enableEyeFocus + frame 350 disableEyeFocus + frame 505 enableEyeFocus + frame 561 disableEyeFocus + frame 698 enableEyeFocus + frame 837 disableEyeFocus + frame 1110 enableEyeFocus + } + anim talk_primary models/md5/cinematics/delta5/swann_idle.md5anim + anim talk_secondary1 models/md5/cinematics/delta5/swann_idle.md5anim + anim talk_secondary2 models/md5/cinematics/delta5/swann_idle.md5anim +} + +entityDef delta5_wounded_swann { + "inherit" "character_default" + "scriptobject" "ai" + "nativeobject" "rvmCharacter" + "model" "delta5_wounded_swann" + "anim" "idle" + "size" "64 20 32" + "use_aas" "" + "turn_rate" "0" + "eye_height" "28" + "npc_name" "Counselor Swann" + + "animate_z" "1" + "talktrigger" "1" + "no_cower" "1" + "talk_no_turn" "1" + + "bone_focus" "headcontrol" + "bone_orientation" "Body" + "bone_leftEye" "Leyeaim" + "bone_rightEye" "Reyeaim" + + "eye_turn_min" "-20 -30 0" + "eye_turn_max" "20 30 0" + "eye_verticle_offset" "5" + "eye_horizontal_offset" "-0" + "eye_focus_rate" "0.5" + "head_focus_rate" "0.1" + + "look_min" "-54 -39 0" + "look_max" "9 39 0" + "look_joint headcontrol" "1 1 0" + + "copy_joint neckcontrol" "neckcontrol" + "copy_joint headcontrol" "headcontrol" + "copy_joint_world eyecontrol" "eyecontrol" + + //"look_joint headcontrol" "1 1 1" + + "def_head" "delta5_swann_head" + "head_joint" "Shoulders" + + "ragdoll" "char_wounded_marine" + + "damage_zone chest" "*Waist -*loneckcontrol" + "damage_zone left_arm" "*Luparm" + "damage_zone right_arm" "*Ruparm" + "damage_zone legs" "origin Body2" + "gib" "1" + + "model_gib" "models/md5/chars/skeleton.md5mesh" + + "def_dropGibItem1" "moveable_item_head_pork" + "dropGibItem1Joint" "headcontrol" + + "def_dropGibItem2" "moveable_item_torso_pork" + "dropGibItem2Joint" "Chest" + + "def_dropGibItem3" "moveable_item_rup_arm_pork" + "dropGibItem3Joint" "Ruparm" + + "def_dropGibItem4" "moveable_item_left_waist_pork" + "dropGibItem4Joint" "Waist" + + "def_dropGibItem5" "moveable_item_lup_leg_pork" + "dropGibItem5Joint" "Lupleg" + + "def_dropGibItem6" "moveable_item_rup_leg_pork" + "dropGibItem6Joint" "Rupleg" + + "def_dropGibItem7" "moveable_item_rup2_leg_pork" + "dropGibItem7Joint" "Rloleg" + + "def_dropGibItem8" "moveable_item_pelvis_pork" + "dropGibItem8Joint" "Hips" + + "snd_gibbed" "sound_giblets" + "snd_bounce" "ragdoll_impact" + +} + diff --git a/base/def/map_enpro.def b/base/def/map_enpro.def new file mode 100644 index 00000000..11075c2f --- /dev/null +++ b/base/def/map_enpro.def @@ -0,0 +1,1291 @@ + +export fred { + + camera maps/fred/enpro/monitor.mb -range 1 200 -dest models/md5/cinematics/enpro/monitorcam + camera maps/fred/enpro/monitor2.mb -range 1 32 -dest models/md5/cinematics/enpro/monitorcam2 + + camera maps/fred/enpro/escape_shot1.mb -range 1 90 -dest models/md5/cinematics/enpro/escapecam1 + camera maps/fred/enpro/escape_shot2.mb -range 91 236 -dest models/md5/cinematics/enpro/escapecam2 + camera maps/fred/enpro/swann_campbell.mb -range 237 315 -dest models/md5/cinematics/enpro/escapecam3 + camera maps/fred/enpro/escape_shot3.mb -range 316 456 -dest models/md5/cinematics/enpro/escapecam4 + + camera maps/fred/enpro/marine_battle_shot1.mb -range 1 170 -dest models/md5/cinematics/enpro/exitcam_shot1 + camera maps/fred/enpro/marine_battle_shot2.mb -range 171 259 -dest models/md5/cinematics/enpro/exitcam_shot2 + camera maps/fred/enpro/marine_battle_shot3.mb -range 260 321 -dest models/md5/cinematics/enpro/exitcam_shot3 + camera maps/fred/enpro/marine_battle_shot4.mb -range 350 420 -dest models/md5/cinematics/enpro/exitcam_shot4 + camera maps/fred/enpro/marine_battle_shot5.mb -range 452 510 -dest models/md5/cinematics/enpro/exitcam_shot5 + camera maps/fred/enpro/enpro_exit2.mb -range 511 698 -dest models/md5/cinematics/enpro/exitcam_shot6 + camera maps/fred/enpro/enpro_exit2.mb -range 699 740 -dest models/md5/cinematics/enpro/exitcam_shot7 + camera maps/fred/enpro/enpro_exit2.mb -range 741 979 -dest models/md5/cinematics/enpro/exitcam_shot8 + + camera maps/fred/enpro/glassexplosion.mb -dest models/md5/cinematics/enpro/glassexplosioncam + + camera maps/fred/enpro/tuberide.mb -dest models/md5/cinematics/enpro/tuberidecam + + camera maps/fred/enpro/lostsoulintro.mb -range 1 219 -dest models/md5/cinematics/enpro/lostcam1 + camera maps/fred/enpro/lostsoulintro_poppy.mb -range 187 269 -dest models/md5/cinematics/enpro/lostcam2 + camera maps/fred/enpro/lostsoulintro.mb -range 284 320 -dest models/md5/cinematics/enpro/lostcam3 + + + camera maps/eric/enpro/wounded_marine.mb -range 1 92 -dest models/md5/cinematics/enpro/marine_cam1 + camera maps/eric/enpro/wounded_marine.mb -range 93 194 -dest models/md5/cinematics/enpro/marine_cam2 + camera maps/eric/enpro/wounded_marine.mb -range 195 340 -dest models/md5/cinematics/enpro/marine_cam3 + camera maps/eric/enpro/wounded_marine.mb -range 341 476 -dest models/md5/cinematics/enpro/marine_cam4 + camera maps/eric/enpro/wounded_marine.mb -range 477 571 -dest models/md5/cinematics/enpro/marine_cam5 + camera maps/eric/enpro/wounded_marine.mb -range 572 598 -dest models/md5/cinematics/enpro/marine_cam6 + + + addoptions -prefix ENV_ + mesh maps/fred/enpro/enpro_exit2.mb -range 1 1 -dest models/md5/cinematics/enpro/exithelmet + anim maps/fred/enpro/enpro_exit2.mb -range 511 979 -dest models/md5/cinematics/enpro/exithelmet + + mesh maps/fred/enpro/lostsoulintro_poppy.mb -dest models/md5/cinematics/enpro/lostintro_spine + anim maps/fred/enpro/lostsoulintro_poppy.mb -range 187 269 -dest models/md5/cinematics/enpro/lostintro_spine + + addoptions -prefix CHAIR_ + mesh maps/fred/enpro/lostsoulintro.mb -dest models/md5/cinematics/enpro/chair_lostintro + anim maps/fred/enpro/lostsoulintro.mb -dest models/md5/cinematics/enpro/chair_lostintro + + addoptions -prefix LOST_ -keep lost_flame1 -parent lost_flame1 Head + mesh maps/fred/enpro/lostsoulintro.mb -dest models/md5/cinematics/enpro/lostsoul_mesh + anim maps/fred/enpro/lostsoulintro_poppy.mb -range 187 269 -dest models/md5/cinematics/enpro/lostsoul_lostintro1 + anim maps/fred/enpro/lostsoulintro.mb -range 284 320 -dest models/md5/cinematics/enpro/lostsoul_lostintro2 +} + +export fred { + options -prefix w_ -keep Lknee Rknee -keep fireball ROT -parent fireball head_FK -parent spine_1 ROT -parent ROT root + anim maps/eric/enpro/wounded_marine.mb -range 1 595 -dest models/md5/cinematics/enpro/marine_wraith + +} + +export fred { + options -prefix W_ -keep Lknee Rknee -keep fireball ROT -parent fireball head_FK -parent spine_1 ROT -parent ROT root + anim maps/fred/enpro/marine_battle_shot3.mb -range 260 321 -dest models/md5/cinematics/enpro/exit_wraith + +} + +export fred { + options -prefix KEY_ + mesh maps/eric/enpro/wounded_marine.mb -dest models/md5/cinematics/enpro/wounded_keycard + anim maps/eric/enpro/wounded_marine.mb -range 1 92 -dest models/md5/cinematics/enpro/wounded_keycard_a + anim maps/eric/enpro/wounded_marine.mb -range 93 194 -dest models/md5/cinematics/enpro/wounded_keycard_b + anim maps/eric/enpro/wounded_marine.mb -range 195 340 -dest models/md5/cinematics/enpro/wounded_keycard_c + anim maps/eric/enpro/wounded_marine.mb -range 341 476 -dest models/md5/cinematics/enpro/wounded_keycard_d + anim maps/eric/enpro/wounded_marine.mb -range 477 571 -dest models/md5/cinematics/enpro/wounded_keycard_e + anim maps/eric/enpro/wounded_marine.mb -range 572 598 -dest models/md5/cinematics/enpro/wounded_keycard_f +} + + +entityDef enpro_exit_cam { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + + "spawnclass" "idCameraAnim" + "cinematic" "1" + + "anim exitshot_a" "models/md5/cinematics/enpro/exitcam_shot1.md5camera" + "anim exitshot_c" "models/md5/cinematics/enpro/exitcam_shot2.md5camera" + "anim exitshot_b" "models/md5/cinematics/enpro/exitcam_shot3.md5camera" + "anim exitshot_d" "models/md5/cinematics/enpro/exitcam_shot4.md5camera" + "anim exitshot_e" "models/md5/cinematics/enpro/exitcam_shot5.md5camera" + "anim exitshot_f" "models/md5/cinematics/enpro/exitcam_shot6.md5camera" + "anim exitshot_g" "models/md5/cinematics/enpro/exitcam_shot7.md5camera" + "anim exitshot_h" "models/md5/cinematics/enpro/exitcam_shot8.md5camera" + + +} + +model enpro_soldier1 { + inherit npc_marine_w_mgun + + anim shot_a models/md5/cinematics/enpro/exitsoldier2_shot1.md5anim { + frame 1 event ignoreDamage + //frame 1 sound_global enpro_intro_imps + //frame 1 sound_global enpro_intro_guns + frame 6 sound_body player_sounds_footstep + + frame 25 sound_global enpro_intro + frame 17 sound_body player_sounds_footstep + frame 31 sound_body player_sounds_footstep + frame 45 sound_body player_sounds_footstep + frame 59 sound_body player_sounds_footstep + frame 71 sound_body player_sounds_footstep + frame 85 sound_body player_sounds_footstep + frame 96 sound_body player_sounds_footstep + frame 112 sound_body player_sounds_footstep + frame 124 sound_body player_sounds_footstep + frame 136 sound_body player_sounds_footstep + frame 145 sound_body player_sounds_footstep + + } + + anim shot_b models/md5/cinematics/enpro/exitsoldier2_shot2.md5anim { + frame 1 event ignoreDamage + + frame 58 sound_body player_sounds_footstep + frame 66 sound_body player_sounds_footstep + frame 74 sound_voice snd_hallway + frame 75 sound_body player_sounds_footstep + } + anim shot_c models/md5/cinematics/enpro/exitsoldier2_shot3.md5anim { + frame 1 event ignoreDamage + frame 5 sound_body player_sounds_footstep + frame 16 sound_body player_sounds_footstep + frame 30 sound_body player_sounds_footstep + frame 43 sound_body player_sounds_footstep + frame 57 sound_body player_sounds_footstep + + } + + anim shot_d models/md5/cinematics/enpro/exitsoldier1_shot4.md5anim { + frame 30 sound_global enpro_sfx_imps + frame 68 sound_voice snd_what + + } + anim shot_e models/md5/cinematics/enpro/exitsoldier2_shot5.md5anim { + frame 1 event ignoreDamage + frame 9 sound_body player_sounds_footstep + frame 23 sound_body player_sounds_footstep + frame 35 sound_body player_sounds_footstep + frame 50 sound_body player_sounds_footstep + } + + anim shot_f models/md5/cinematics/enpro/exitsoldier2_shot6.md5anim { + frame 1 event ignoreDamage + frame 4 sound_body player_sounds_footstep + frame 9 sound_body player_sounds_footstep + frame 32 sound_body player_sounds_footstep + frame 41 sound_body player_sounds_footstep + frame 52 sound_body player_sounds_footstep + frame 116 sound_body player_sounds_footstep + frame 155 sound_voice snd_what + + } + + anim shot_g models/md5/cinematics/enpro/exitsoldier2_shot7.md5anim { + frame 1 event ignoreDamage + frame 16 launch_missile RHANDCONNECTOR + frame 16 sound_global enpro_intro_guns + frame 18 launch_missile RHANDCONNECTOR + frame 20 launch_missile RHANDCONNECTOR + frame 22 launch_missile RHANDCONNECTOR + frame 24 launch_missile RHANDCONNECTOR + frame 26 launch_missile RHANDCONNECTOR + frame 28 launch_missile RHANDCONNECTOR + frame 32 launch_missile RHANDCONNECTOR + frame 36 launch_missile RHANDCONNECTOR + frame 40 launch_missile RHANDCONNECTOR + + } + + anim shot_h models/md5/cinematics/enpro/exitsoldier2_shot8.md5anim { + frame 1 event ignoreDamage + frame 3 launch_missile RHANDCONNECTOR + frame 7 launch_missile RHANDCONNECTOR + frame 10 launch_missile RHANDCONNECTOR + frame 14 launch_missile RHANDCONNECTOR + frame 18 launch_missile RHANDCONNECTOR + frame 22 launch_missile RHANDCONNECTOR + frame 25 launch_missile RHANDCONNECTOR + frame 28 launch_missile RHANDCONNECTOR + frame 32 launch_missile RHANDCONNECTOR + frame 33 launch_missile RHANDCONNECTOR + frame 36 launch_missile RHANDCONNECTOR + frame 39 launch_missile RHANDCONNECTOR + frame 41 launch_missile RHANDCONNECTOR + frame 43 launch_missile RHANDCONNECTOR + frame 61 sound_body player_sounds_footstep + frame 66 sound_body player_sounds_footstep + frame 71 sound_body player_sounds_footstep + + //test + frame 63 launch_missile RHANDCONNECTOR + frame 65 launch_missile RHANDCONNECTOR + frame 68 launch_missile RHANDCONNECTOR + frame 70 launch_missile RHANDCONNECTOR + frame 73 launch_missile RHANDCONNECTOR + frame 75 launch_missile RHANDCONNECTOR + frame 78 launch_missile RHANDCONNECTOR + frame 80 launch_missile RHANDCONNECTOR + frame 82 launch_missile RHANDCONNECTOR + frame 84 launch_missile RHANDCONNECTOR + frame 86 launch_missile RHANDCONNECTOR + frame 89 launch_missile RHANDCONNECTOR + frame 91 launch_missile RHANDCONNECTOR + frame 93 launch_missile RHANDCONNECTOR + frame 95 launch_missile RHANDCONNECTOR + frame 97 launch_missile RHANDCONNECTOR + frame 100 launch_missile RHANDCONNECTOR + frame 102 launch_missile RHANDCONNECTOR + frame 105 launch_missile RHANDCONNECTOR + frame 107 launch_missile RHANDCONNECTOR + frame 109 launch_missile RHANDCONNECTOR + frame 112 launch_missile RHANDCONNECTOR + frame 114 launch_missile RHANDCONNECTOR + frame 116 launch_missile RHANDCONNECTOR + frame 119 launch_missile RHANDCONNECTOR + frame 121 launch_missile RHANDCONNECTOR + frame 123 launch_missile RHANDCONNECTOR + frame 125 launch_missile RHANDCONNECTOR + + } + + + +} + +entityDef enpro_soldier1 { + "inherit" "npc_base" + "model" "enpro_soldier1" + "sound_bone" "Chest" + "def_projectile" "projectile_bullet_zsec_machinegun" + "projectile_spread" "0" + "num_projectiles" "1" + "smoke_weapon" "cgsmoke.smoke" + "smoke_wound_metal" "bulletricochet.prt" + "smoke_wound_ricochet" "bulletricochet.prt" + "mtr_flashShader" "muzzleflash" + "flashTime" "0.15" + "flashColor" "1 0.8 0.4" + "flashRadius" "120" + "cinematic" "1" + "gib" "0" + "model_gib" "models/md5/chars/skeleton_w_mgun.md5mesh" + "mass" "5000" + "ik_numlegs" "0" + "ragdoll" "" + + "def_head" "head_marine_helmet" + "head_joint" "Shoulders" + "copy_joint_world eyecontrol" "" + + "num_cinematics" "6" + "anim1" "shot_a" + "anim2" "shot_c" + "anim3" "shot_b" + "anim4" "shot_d" + "anim5" "shot_g" + "anim6" "shot_h" + + + + "snd_hallway" "enpro_hallway_clear" + "snd_what" "enpro_what_the_hell" + + + +} + +model enpro_soldier2 { + inherit npc_marine_w_mgun + + anim shot_a models/md5/cinematics/enpro/exitsoldier1_shot1.md5anim { + frame 1 event ignoreDamage + frame 16 sound_body player_sounds_footstep + frame 29 sound_body player_sounds_footstep + frame 41 sound_body player_sounds_footstep + frame 49 sound_body player_sounds_footstep + frame 54 sound_body player_sounds_footstep + frame 60 sound_body player_sounds_footstep + frame 67 sound_body player_sounds_footstep + frame 99 sound_body player_sounds_footstep + frame 104 sound_body player_sounds_footstep + frame 119 sound_body player_sounds_footstep + frame 128 sound_body player_sounds_footstep + frame 133 sound_body player_sounds_footstep + frame 140 sound_body player_sounds_footstep + + frame 50 sound_voice snd_move_in + } + anim shot_b models/md5/cinematics/enpro/exitsoldier1_shot2.md5anim { + frame 1 event ignoreDamage + frame 3 sound_body player_sounds_footstep + frame 11 sound_body player_sounds_footstep + } + + anim shot_c models/md5/cinematics/enpro/exitsoldier1_shot3.md5anim { + frame 1 event ignoreDamage + frame 7 sound_body player_sounds_footstep + frame 16 sound_body player_sounds_footstep + frame 30 sound_body player_sounds_footstep + frame 44 sound_body player_sounds_footstep + frame 58 sound_body player_sounds_footstep + frame 30 sound_voice snd_quiet + } + anim shot_d models/md5/cinematics/enpro/exitsoldier2_shot4.md5anim { + frame 1 event ignoreDamage + frame 12 sound_body player_sounds_footstep + frame 24 sound_body player_sounds_footstep + frame 36 sound_body player_sounds_footstep + frame 48 sound_body player_sounds_footstep + frame 60 sound_body player_sounds_footstep + } + + anim shot_e models/md5/cinematics/enpro/exitsoldier1_shot5.md5anim { + frame 1 event ignoreDamage + frame 1 sound_voice snd_man_down + frame 4 sound_body player_sounds_footstep + frame 14 sound_body player_sounds_footstep + frame 28 sound_body player_sounds_footstep + frame 41 sound_body player_sounds_footstep + frame 55 sound_body player_sounds_footstep + } + anim shot5b models/md5/cinematics/enpro/exitsoldier1_shot5.md5anim { + frame 1 event ignoreDamage + frame 4 sound_body player_sounds_footstep + frame 14 sound_body player_sounds_footstep + frame 28 sound_body player_sounds_footstep + frame 41 sound_body player_sounds_footstep + frame 55 sound_body player_sounds_footstep + } + + anim shot_f models/md5/cinematics/enpro/exitsoldier1_shot6.md5anim { + frame 1 event ignoreDamage + frame 54 sound_voice snd_moving_right + frame 59 sound_body player_sounds_footstep + frame 68 sound_body player_sounds_footstep + frame 77 sound_body player_sounds_footstep + frame 82 sound_body player_sounds_footstep + + } + + anim shot_g models/md5/cinematics/enpro/exitsoldier1_shot7.md5anim { + frame 1 event ignoreDamage + } + + anim shot_h models/md5/cinematics/enpro/exitsoldier1_shot8.md5anim { + frame 1 event ignoreDamage + frame 9 launch_missile RHANDCONNECTOR + frame 11 launch_missile RHANDCONNECTOR + frame 14 launch_missile RHANDCONNECTOR + frame 16 launch_missile RHANDCONNECTOR + frame 18 launch_missile RHANDCONNECTOR + frame 21 launch_missile RHANDCONNECTOR + frame 24 launch_missile RHANDCONNECTOR + frame 28 launch_missile RHANDCONNECTOR + frame 31 launch_missile RHANDCONNECTOR + frame 34 sound_body player_sounds_footstep + frame 34 sound_voice snd_son + frame 41 launch_missile RHANDCONNECTOR + frame 43 launch_missile RHANDCONNECTOR + frame 46 launch_missile RHANDCONNECTOR + frame 48 launch_missile RHANDCONNECTOR + frame 51 launch_missile RHANDCONNECTOR + frame 53 launch_missile RHANDCONNECTOR + frame 56 launch_missile RHANDCONNECTOR + frame 59 launch_missile RHANDCONNECTOR + frame 61 launch_missile RHANDCONNECTOR + frame 64 sound_body player_sounds_footstep + + //test + frame 63 launch_missile RHANDCONNECTOR + frame 65 launch_missile RHANDCONNECTOR + frame 68 launch_missile RHANDCONNECTOR + frame 70 launch_missile RHANDCONNECTOR + frame 73 launch_missile RHANDCONNECTOR + frame 75 launch_missile RHANDCONNECTOR + frame 78 launch_missile RHANDCONNECTOR + frame 80 launch_missile RHANDCONNECTOR + frame 82 launch_missile RHANDCONNECTOR + frame 84 launch_missile RHANDCONNECTOR + frame 86 launch_missile RHANDCONNECTOR + frame 89 launch_missile RHANDCONNECTOR + frame 91 launch_missile RHANDCONNECTOR + frame 93 launch_missile RHANDCONNECTOR + frame 95 launch_missile RHANDCONNECTOR + frame 97 launch_missile RHANDCONNECTOR + frame 100 launch_missile RHANDCONNECTOR + frame 102 launch_missile RHANDCONNECTOR + frame 105 launch_missile RHANDCONNECTOR + frame 107 launch_missile RHANDCONNECTOR + frame 109 launch_missile RHANDCONNECTOR + frame 112 launch_missile RHANDCONNECTOR + frame 114 launch_missile RHANDCONNECTOR + frame 116 launch_missile RHANDCONNECTOR + frame 119 launch_missile RHANDCONNECTOR + frame 121 launch_missile RHANDCONNECTOR + frame 123 launch_missile RHANDCONNECTOR + frame 125 launch_missile RHANDCONNECTOR + + + } + + +} + +entityDef enpro_soldier2 { + "inherit" "npc_base" + "model" "enpro_soldier2" + "sound_bone" "Chest" + "def_projectile" "projectile_bullet_zsec_machinegun" + "projectile_spread" "0" + "num_projectiles" "1" + "smoke_weapon" "cgsmoke.smoke" + "mtr_flashShader" "muzzleflash" + "flashTime" "0.15" + "flashColor" "1 0.8 0.4" + "flashRadius" "120" + "cinematic" "1" + "gib" "0" + "mass" "5000" + "model_gib" "models/md5/chars/skeleton_w_mgun.md5mesh" + + "def_head" "head_marine_helmet" + "head_joint" "Shoulders" + "ik_numlegs" "0" + "ragdoll" "" + + "copy_joint_world eyecontrol" "" + + + //"num_cinematics" "8" + //"anim1" "shot_a" + //"anim2" "shot_c" + //"anim3" "shot_b" + //"anim4" "shot_d" + //"anim5" "shot_e" + //"anim6" "shot_f" + //"anim7" "shot_g" + //"anim8" "shot_h" + + "num_cinematics" "6" + "anim1" "shot_a" + "anim2" "shot_c" + "anim3" "shot_b" + "anim4" "shot_d" + "anim5" "shot_g" + "anim6" "shot_h" + + + + "snd_move_in" "enpro_move_in" + "snd_quiet" "enpro_quiet" + "snd_moving_in" "enpro_moving_in" + "snd_man_down" "enpro_man_down" + "snd_moving_right" "enpro_moving_right" + "snd_son" "enpro_son_of_a" + +} + +model enpro_soldier3 { + inherit npc_marine_w_mgun + + anim shot_a models/md5/cinematics/enpro/exitsoldier3_shot1.md5anim { + frame 1 event ignoreDamage + frame 91 sound_body player_sounds_footstep + frame 103 sound_body player_sounds_footstep + frame 117 sound_body player_sounds_footstep + frame 129 sound_body player_sounds_footstep + frame 144 sound_body player_sounds_footstep + frame 156 sound_body player_sounds_footstep + frame 169 sound_body player_sounds_footstep + } + anim shot_b models/md5/cinematics/enpro/exitsoldier3_shot2.md5anim { + frame 1 event ignoreDamage + frame 6 sound_body player_sounds_footstep + frame 14 sound_body player_sounds_footstep + frame 20 sound_body player_sounds_footstep + frame 28 sound_body player_sounds_footstep + frame 14 sound_voice snd_status + } + anim shot_c models/md5/cinematics/enpro/exitsoldier3_shot3.md5anim { + frame 1 event ignoreDamage + frame 5 sound_body player_sounds_footstep + frame 10 sound_body player_sounds_footstep + frame 18 sound_body player_sounds_footstep + frame 28 sound_body player_sounds_footstep + frame 36 sound_body player_sounds_footstep + frame 45 sound_body player_sounds_footstep + frame 53 sound_body player_sounds_footstep + frame 62 sound_body player_sounds_footstep + } + anim shot_d models/md5/cinematics/enpro/exitsoldier3_shot4.md5anim { + frame 1 event ignoreDamage + frame 21 sound_body player_sounds_footstep + frame 33 sound_body player_sounds_footstep + frame 42 sound_body player_sounds_footstep + frame 52 sound_body player_sounds_footstep + frame 61 sound_body player_sounds_footstep + + frame 15 sound_voice snd_nothing_here + //frame 55 sound_body monster_demon_imp_sight + frame 55 sound_voice snd_pain + } + anim shot_e models/md5/cinematics/enpro/exitsoldier3_shot5.md5anim { + frame 1 event ignoreDamage + } + anim shot_f models/md5/cinematics/enpro/exitsoldier3_shot6.md5anim { + frame 1 event ignoreDamage + } + anim shot_g models/md5/cinematics/enpro/exitsoldier3_shot7.md5anim { + frame 1 event ignoreDamage + } + anim shot_h models/md5/cinematics/enpro/exitsoldier3_shot8.md5anim { + frame 1 event ignoreDamage + } + +} + +entityDef enpro_soldier3 { + "inherit" "npc_base" + "model" "enpro_soldier3" + "sound_bone" "Chest" + "def_projectile" "projectile_bullet_zsec_machinegun" + "projectile_spread" "0" + "num_projectiles" "1" + "smoke_weapon" "cgsmoke.smoke" + "mtr_flashShader" "muzzleflash" + "flashTime" "0.15" + "flashColor" "1 0.8 0.4" + "flashRadius" "120" + "cinematic" "1" + "gib" "0" + "model_gib" "models/md5/chars/skeleton_w_mgun.md5mesh" + "mass" "5000" + "ik_numlegs" "0" + "ragdoll" "" + + "def_head" "head_marine_helmet" + "head_joint" "Shoulders" + + "copy_joint_world eyecontrol" "" + + + //"num_cinematics" "8" + //"anim1" "shot_a" + //"anim2" "shot_c" + //"anim3" "shot_b" + //"anim4" "shot_d" + //"anim5" "shot_e" + //"anim6" "shot_f" + //"anim7" "shot_g" + //"anim8" "shot_h" + + "num_cinematics" "6" + "anim1" "shot_a" + "anim2" "shot_c" + "anim3" "shot_b" + "anim4" "shot_d" + "anim5" "shot_g" + "anim6" "shot_h" + + + + "snd_status" "enpro_give_status" + "snd_nothing_here" "enpro_nothing_here" + "snd_pain" "enpro_pain" + +} + +model enpro_soldier4 { + inherit npc_marine_w_mgun + + anim shot_a models/md5/cinematics/enpro/exitsoldier4_shot6.md5anim { + frame 1 event ignoreDamage + frame 4 sound_voice snd_johnny + frame 6 sound_body player_sounds_footstep + frame 13 sound_body player_sounds_footstep + frame 21 sound_body player_sounds_footstep + frame 89 sound_voice snd_watch + frame 179 sound_voice snd_fire + } + + anim shot_b models/md5/cinematics/enpro/exitsoldier4_shot7.md5anim { + frame 1 event ignoreDamage + frame 19 launch_missile RHANDCONNECTOR + frame 23 launch_missile RHANDCONNECTOR + frame 25 launch_missile RHANDCONNECTOR + frame 27 launch_missile RHANDCONNECTOR + frame 30 launch_missile RHANDCONNECTOR + frame 32 launch_missile RHANDCONNECTOR + frame 35 launch_missile RHANDCONNECTOR + frame 38 launch_missile RHANDCONNECTOR + frame 41 launch_missile RHANDCONNECTOR + } + + anim shot_c models/md5/cinematics/enpro/exitsoldier4_shot8.md5anim { + frame 1 event ignoreDamage + + frame 73 sound_body player_sounds_footstep + frame 92 sound_body player_sounds_footstep + frame 102 sound_body player_sounds_footstep + frame 115 sound_body player_sounds_footstep + frame 128 sound_body player_sounds_footstep + + frame 2 launch_missile RHANDCONNECTOR + frame 5 launch_missile RHANDCONNECTOR + frame 8 launch_missile RHANDCONNECTOR + frame 11 launch_missile RHANDCONNECTOR + frame 14 launch_missile RHANDCONNECTOR + frame 16 launch_missile RHANDCONNECTOR + frame 20 launch_missile RHANDCONNECTOR + + frame 72 sound_voice snd_swing + frame 119 sound_voice snd_down + + frame 139 launch_missile RHANDCONNECTOR + frame 141 launch_missile RHANDCONNECTOR + frame 143 launch_missile RHANDCONNECTOR + frame 146 launch_missile RHANDCONNECTOR + frame 148 launch_missile RHANDCONNECTOR + + frame 150 launch_missile RHANDCONNECTOR + frame 152 launch_missile RHANDCONNECTOR + frame 154 launch_missile RHANDCONNECTOR + frame 156 launch_missile RHANDCONNECTOR + frame 158 launch_missile RHANDCONNECTOR + frame 160 launch_missile RHANDCONNECTOR + frame 164 launch_missile RHANDCONNECTOR + frame 168 launch_missile RHANDCONNECTOR + frame 170 launch_missile RHANDCONNECTOR + frame 172 launch_missile RHANDCONNECTOR + frame 173 launch_missile RHANDCONNECTOR + + frame 155 trigger bulett_sparks_1 + frame 157 trigger bulett_sparks_2 + frame 159 trigger bulett_sparks_3 + frame 161 trigger bulett_sparks_4 + frame 163 trigger bulett_sparks_5 + frame 165 trigger bulett_sparks_6 + frame 167 trigger bulett_sparks_7 +// frame 168 trigger bulett_sparks_8 +// frame 169 trigger bulett_sparks_9 +// frame 170 trigger bulett_sparks_10 +// frame 171 trigger bulett_sparks_11 +// frame 172 trigger bulett_sparks_12 + + + frame 173 trigger pipe_explode1 + frame 174 trigger pipe_explode1 + frame 174 trigger fredminiexplode1 + frame 176 trigger pipe_explode1 + frame 178 trigger pipe_explode1 + frame 210 trigger pipe_explode2 + frame 211 trigger fredminiexplode2 + frame 211 trigger pipe_explode2 + frame 226 trigger pipe_explode3 + frame 227 trigger fredminiexplode3 + frame 228 trigger pipe_explode3 + + + } + +} + +entityDef enpro_soldier4 { + "inherit" "npc_base" + "model" "enpro_soldier4" + "sound_bone" "Chest" + "def_projectile" "projectile_bullet_zsec_machinegun" + "projectile_spread" "0" + "num_projectiles" "1" + "smoke_weapon" "cgsmoke.smoke" + "mtr_flashShader" "muzzleflash" + "flashTime" "0.15" + "flashColor" "1 0.8 0.4" + "flashRadius" "120" + "cinematic" "1" + "gib" "0" + "model_gib" "models/md5/chars/skeleton_w_mgun.md5mesh" + "mass" "5000" + "ik_numlegs" "0" + "ragdoll" "" + + "def_head" "head_marine_helmet" + "head_joint" "Shoulders" + + "copy_joint_world eyecontrol" "" + + + //"num_cinematics" "3" + //"anim1" "shot_a" + //"anim2" "shot_b" + //"anim3" "shot_c" + + "num_cinematics" "2" + "anim1" "shot_b" + "anim2" "shot_c" + + + "snd_johnny" "enpro_johnny" + "snd_watch" "enpro_watch_yourself" + "snd_swing" "enpro_swinging_left" + "snd_down" "enpro_im_down" + "snd_fire" "enpro_fire_fire" + +} + + +model enpro_exit_imp1 { + mesh models/md5/monsters/imp/imp.md5mesh + anim exit1 models/md5/cinematics/enpro/exitimp1.md5anim { + frame 13 trigger implight1 + } +} + +entityDef enpro_exit_imp1 { + "inherit" "cin_base" + "model" "enpro_exit_imp1" + "anim" "exit1" + "cinematic" "1" +} + +model enpro_exit_imp2 { + mesh models/md5/monsters/imp/imp.md5mesh + anim exitstart_a models/md5/cinematics/enpro/exitimp2a.md5anim + anim exitstart_b models/md5/cinematics/enpro/exitimp2b.md5anim + anim exitstart_c models/md5/cinematics/enpro/exitimp2c.md5anim + + anim exit models/md5/cinematics/enpro/exitimp2.md5anim + +} + +entityDef enpro_exit_imp2 { + "inherit" "cin_base" + "model" "enpro_exit_imp2" + "anim" "exit" + "cinematic" "1" +} + +entityDef enpro_exit_imp3 { + "inherit" "cin_base" + "model" "enpro_exit_imp2" + "anim" "exitstart_a" + "cinematic" "1" + "auto_advance" "1" + "num_anims" "3" + "anim1" "exitstart_a" + "anim2" "exitstart_b" + "anim3" "exitstart_c" +} + +model enpro_exit_helmet { + mesh models/md5/cinematics/enpro/exithelmet.md5mesh + anim exit models/md5/cinematics/enpro/exithelmet.md5anim { + frame 147 trigger helmetsplat + } +} + +entityDef enpro_exit_helmet { + "inherit" "cin_base" + "model" "enpro_exit_helmet" + "cinematic" "1" + "anim" "exit" +} + + +entityDef enpro_monitor_cam { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + + "spawnclass" "idCameraAnim" + "cinematic" "1" + + "anim monitor" "models/md5/cinematics/enpro/monitorcam.md5camera" + "anim endmonitor" "models/md5/cinematics/enpro/monitorcam2.md5camera" +} +entityDef enpro_glass_cam { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + + "spawnclass" "idCameraAnim" + "cinematic" "1" + + "anim glassexplosion" "models/md5/cinematics/enpro/glassexplosioncam.md5camera" +} +entityDef enpro_escape_cam { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + + "spawnclass" "idCameraAnim" + "cinematic" "1" + + "anim escape1" "models/md5/cinematics/enpro/escapecam1.md5camera" + "anim escape2" "models/md5/cinematics/enpro/escapecam2.md5camera" + "anim escape3" "models/md5/cinematics/enpro/escapecam3.md5camera" + "anim escape4" "models/md5/cinematics/enpro/escapecam4.md5camera" +} + +entityDef enpro_tuberide_cam { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + "cinematic" "1" + + "spawnclass" "idCameraAnim" + + "anim tuberide" "models/md5/cinematics/enpro/tuberidecam.md5camera" +} + +entityDef enpro_lostintro_cam { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + + "spawnclass" "idCameraAnim" + "cinematic" "1" + + "anim lostintro1" "models/md5/cinematics/enpro/lostcam1.md5camera" + "anim lostintro2" "models/md5/cinematics/enpro/lostcam2.md5camera" + "anim lostintro3" "models/md5/cinematics/enpro/lostcam3.md5camera" +} + +model enpro_lost_spine { + mesh models/md5/cinematics/enpro/lostintro_spine.md5mesh + anim pop models/md5/cinematics/enpro/lostintro_spine.md5anim +} + +entityDef enpro_lost_spine { + "inherit" "cin_base" + "model" "enpro_lost_spine" + "cinematic" "1" + "anim" "pop" +} + + +model enpro_lost_chair { + mesh models/md5/cinematics/enpro/chair_lostintro.md5mesh + anim exit models/md5/cinematics/enpro/chair_lostintro.md5anim + +} + +entityDef enpro_lost_chair { + "inherit" "cin_base" + "model" "enpro_lost_chair" + "cinematic" "1" + "anim" "exit" +} + + +model enpro_cin_female { + skin skins/poppy.skin + mesh models/md5/characters/poppy/poppy.md5mesh + anim af_pose models/md5/characters/poppy/initial.md5anim + anim lostintrostart models/md5/cinematics/enpro/fem_lostintrostart.md5anim + anim lostintro1 models/md5/cinematics/enpro/fem_lostintro1.md5anim { + frame 1 skin skins/poppy.skin + frame 1 sound_global enpro_lostsoul + frame 30 sound_voice2 enpro_chair + frame 65 sound_voice snd_help + frame 120 sound_body2 enpro_slow_whoosh + frame 165 skin skins/poppyfx1 + frame 165 call setShaderTime + frame 167 sound_voice2 snd_leatherface + + } + anim lostintro2 models/md5/cinematics/enpro/fem_lostintro2.md5anim { + frame 1 skin skins/poppyfx2 + frame 1 sound_voice snd_scream + frame 15 trigger popemit + frame 43 trigger lostspurt1 + frame 45 sound_voice2 snd_spinerip + frame 45 trigger func_smoke_1 + frame 46 trigger lostspurt2 + frame 46 sound_global monster_demon_lostsoul_sight + frame 47 event startRagdoll + } + +} + +entityDef enpro_cin_female { + "inherit" "cin_base" + "bleed" "1" + "model" "enpro_cin_female" + "anim" "lostintro" + "sound_bone" "Chest" + "ragdoll" "monster_zombie_zfem" + "velocityTime" "200" + "combatModel" "1" + "takeDamage" "1" + "cinematic" "1" + "skin" "skins/poppy.skin" + "health" "10" + + "gib" "1" + "skin_dropGib" "skins/poppy_gib.skin" + "def_dropGibItem1" "moveable_item_head_pork" + "dropGibItem1Joint" "HEAD_headcontrol" + + "def_dropGibItem2" "moveable_item_torso_pork" + "dropGibItem2Joint" "Chest" + + "def_dropGibItem3" "moveable_item_rup_arm_pork" + "dropGibItem3Joint" "Ruparm" + + "def_dropGibItem4" "moveable_item_left_waist_pork" + "dropGibItem4Joint" "Waist" + + "def_dropGibItem5" "moveable_item_lup_leg_pork" + "dropGibItem5Joint" "Lupleg" + + "def_dropGibItem6" "moveable_item_rup_leg_pork" + "dropGibItem6Joint" "Rupleg" + + "def_dropGibItem7" "moveable_item_rup2_leg_pork" + "dropGibItem7Joint" "Rloleg" + + "def_dropGibItem8" "moveable_item_pelvis_pork" + "dropGibItem8Joint" "Hips" + + + "snd_help" "enpro_help_me" + "snd_scream" "enpro_scream" + "snd_spinerip" "enpro_spinerip" + "snd_leatherface" "enpro_leatherface" + "snd_chair" "enpro_chair" + "snd_gibbed" "sound_giblets" + "snd_bounce" "ragdoll_impact" +} + +model enpro_cin_lostsoul { + mesh models/md5/cinematics/enpro/lostsoul_mesh.md5mesh + anim lostintro1 models/md5/cinematics/enpro/lostsoul_lostintro1.md5anim + anim lostintro2 models/md5/cinematics/enpro/lostsoul_lostintro2.md5anim { + frame 1 sound_voice2 enpro_cin_lsflight + } +} + +entityDef enpro_cin_lostsoul { + "inherit" "cin_base" + "model" "enpro_cin_lostsoul" + "anim" "lostintro1" + "sound_bone" "Head" + "auto_advance" "1" + "num_anims" "2" + "anim1" "lostintro1" + "anim2" "lostintro2" + "cinematic" "1" +} + + +model enpro_cin_player { + mesh models/md5/characters/player/mocap/wepplayer.md5mesh + skin skins/player/shotgun.skin + + anim monitor models/md5/cinematics/enpro/monitor_player.md5anim { + frame 1 sound_global enpro_coolantrod + frame 1 sound_global enpro_coolantrod_music + } + anim endmonitor models/md5/cinematics/enpro/monitor_player2.md5anim + anim lostintro1 models/md5/cinematics/enpro/player_lostintro1.md5anim + anim lostintro2 models/md5/cinematics/enpro/player_lostintro2.md5anim + //anim wounded1 models/md5/cinematics/enpro/marine_player1.md5anim { + // frame 463 trigger wsplat + //} + +} + +entityDef enpro_cin_player { + "inherit" "cin_base" + "model" "enpro_cin_player" + "anim" "monitor" + "sound_bone" "Chest" + "spawnclass" "idAnimated" + "cinematic" "1" + +} + + +model enpro_wounded_player { + + skin skins/player/noweapon.skin + + mesh models/md5/characters/player/mocap/player.md5mesh + + + channel torso ( ) + channel legs ( *origin ) + + + anim idle models/md5/cinematics/enpro/marine_player1.md5anim + anim stand models/md5/cinematics/enpro/marine_player1.md5anim + + anim wounded_a models/md5/cinematics/enpro/marine_player1.md5anim { + frame 1 sound_global enpro_wounded_music + } + anim wounded_b models/md5/cinematics/enpro/marine_player2.md5anim + anim wounded_c models/md5/cinematics/enpro/marine_player3.md5anim + anim wounded_d models/md5/cinematics/enpro/marine_player4.md5anim + anim wounded_e models/md5/cinematics/enpro/marine_player5.md5anim + anim wounded_f models/md5/cinematics/enpro/marine_player6.md5anim + +} + +entityDef enpro_wounded_player { + "inherit" "character_default" + "model" "enpro_wounded_player" + "anim" "wounded1" + "sound_bone" "Chest" + "size" "" + "cinematic" "1" + + "auto_advance" "1" + "num_cinematics" "6" + "anim1" "wounded_a" + "anim2" "wounded_b" + "anim3" "wounded_c" + "anim4" "wounded_d" + "anim5" "wounded_e" + "anim6" "wounded_f" + + "def_attach" "enpro_cin_machinegun" + //"def_attach" "underground_cin_pistol" + +} + +model enpro_cin_machinegun { + mesh models/md5/weapons/machinegun_world/worldmachinegun.md5mesh + anim idle models/md5/weapons/machinegun_world/machinegun_idle.md5anim + +} + +entityDef enpro_cin_machinegun { + "inherit" "cin_base" + "model" "enpro_cin_machinegun" + "anim" "idle" + "joint" "Lhand" + "origin" "0 4 0" + "angles" "270 160 0" + "cinematic" "1" +} + +model enpro_campbellhead { + + inherit head_campbell + + anim escape_a models/md5/heads/campbell/enpro/escape_campheadshot1.md5anim + anim escape_b models/md5/heads/campbell/enpro/escape_campheadshot2.md5anim +} + + +model enpro_campbell { + inherit char_campbell_bfg + + anim escape_a models/md5/chars/campbell/enpro/campbell_escape1.md5anim + anim escape_b models/md5/chars/campbell/enpro/campbell_escape2.md5anim { + frame 10 sound_voice snd_convo1 + frame 140 sound_voice snd_convo2 + } +} + +entityDef enpro_campbell { + "inherit" "char_campbell_bfg" + "model" "enpro_campbell" + "def_head" "enpro_campbellhead" + "head_joint" "Shoulders" + "cinematic" "1" + "ik_numLegs" "0" + + "snd_convo1" "enpro_no_sir" + "snd_convo2" "enpro_yes_sir" + + "num_cinematics" "2" + "anim1" "escape_a" + "anim2" "escape_b" + + +} + +model enpro_swannhead { + + inherit head_swann + + anim escape_a models/md5/heads/swann/enpro/escape_swannheadshot1.md5anim + anim escape_b models/md5/heads/swann/enpro/escape_swannheadshot2.md5anim +} + + +model enpro_swann { + inherit char_swann + + anim escape_a models/md5/cinematics/enpro/swann_escape1.md5anim { + frame 60 sound_voice enpro_do_u_see + } + anim escape_b models/md5/cinematics/enpro/swann_escape2.md5anim { + frame 40 sound_voice enpro_ok_lets_get_to + } +} + +entityDef enpro_swann { + "inherit" "char_swann" + "model" "enpro_swann" + "def_head" "enpro_swannhead" + "head_joint" "Shoulders" + "ik_numLegs" "0" + "cinematic" "1" + + "num_cinematics" "2" + "anim1" "escape_a" + "anim2" "escape_b" + + "snd_convo1" "enpro_do_u_see" + "snd_convo2" "enpro_ok_lets_get_to" +} + +model enpro_wounded_head { + skin skins/characters/npcs/head_asian_young.skin + mesh models/md5/characters/npcs/heads/h5.md5mesh + anim idle models/md5/characters/npcs/heads/h5idle.md5anim + anim stand models/md5/characters/npcs/heads/h5idle.md5anim +} + + +model enpro_wounded_marine { + inherit npc_marine + + anim escape models/md5/cinematics/enpro/marine_escape.md5anim +} + +entityDef enpro_wounded_marine { + "inherit" "npc_base" + "model" "enpro_wounded_marine" + "def_head" "enpro_wounded_head" + "head_joint" "Shoulders" + "sound_bone" "Chest" + "skin" "skins/characters/npcs/body_marine_bloody.skin" + "cinematic" "1" + "copy_joint_world eyecontrol" "" +} + + +model enpro_wounded_head2 { + skin skins/characters/npcs/head_asian_young.skin + mesh models/md5/characters/npcs/heads/h5.md5mesh + anim idle models/md5/characters/npcs/heads/h5idle.md5anim + anim stand models/md5/characters/npcs/heads/h5idle.md5anim + anim wounded_a models/md5/heads/asian_young/enpro/woundedmarine1.md5anim + anim wounded_b models/md5/heads/asian_young/enpro/woundedmarine2.md5anim + anim wounded_c models/md5/heads/asian_young/enpro/woundedmarine3.md5anim + anim wounded_d models/md5/heads/asian_young/enpro/woundedmarine4.md5anim + anim wounded_e models/md5/heads/asian_young/enpro/woundedmarine5.md5anim + anim wounded_f models/md5/heads/asian_young/enpro/woundedmarine6.md5anim + +} + + +model enpro_wounded_marine2 { + inherit npc_marine + + anim wounded_a models/md5/chars/enpro_wounded_marine/marine_wounded1.md5anim { + frame 53 sound_voice snd_wounded1 + } + anim wounded_b models/md5/chars/enpro_wounded_marine/marine_wounded2.md5anim + anim wounded_c models/md5/chars/enpro_wounded_marine/marine_wounded3.md5anim { + frame 90 sound_voice snd_wounded2 + } + anim wounded_d models/md5/chars/enpro_wounded_marine/marine_wounded4.md5anim { + frame 29 sound_voice snd_wounded3 + + } + anim wounded_e models/md5/chars/enpro_wounded_marine/marine_wounded5.md5anim { + frame 1 sound_voice2 enpro_cin_wraithnoise + frame 40 trigger wsplat + } + anim wounded_f models/md5/chars/enpro_wounded_marine/marine_wounded6.md5anim + +} + +entityDef enpro_wounded_marine2 { + "inherit" "npc_base" + "model" "enpro_wounded_marine2" + "def_head" "enpro_wounded_head2" + "head_joint" "Shoulders" + "sound_bone" "Chest" + "skin" "skins/characters/npcs/body_marine_bloody.skin" + "size" "" + "cinematic" "1" + "ik_numLegs" "0" + + + "health" "500" + "num_cinematics" "6" + "anim1" "wounded_a" + "anim2" "wounded_b" + "anim3" "wounded_c" + "anim4" "wounded_d" + "anim5" "wounded_e" + "anim6" "wounded_f" + + "snd_wounded1" "enpro_wounded_marine1" + "snd_wounded2" "enpro_wounded_marine2" + "snd_wounded3" "enpro_wounded_marine3" + + "copy_joint_world eyecontrol" "" +} + + + +entityDef enpro_wounded_cam { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + + "spawnclass" "idCameraAnim" + "cinematic" "1" + + "anim wounded1" "models/md5/cinematics/enpro/marine_cam1.md5camera" + "anim wounded2" "models/md5/cinematics/enpro/marine_cam2.md5camera" + "anim wounded3" "models/md5/cinematics/enpro/marine_cam3.md5camera" + "anim wounded4" "models/md5/cinematics/enpro/marine_cam4.md5camera" + "anim wounded5" "models/md5/cinematics/enpro/marine_cam5.md5camera" + "anim wounded6" "models/md5/cinematics/enpro/marine_cam6.md5camera" +} + +model enpro_cin_wraith { + mesh models/md5/monsters/wraith/wraith.md5mesh + anim marine models/md5/cinematics/enpro/marine_wraith.md5anim + anim exit models/md5/cinematics/enpro/exit_wraith.md5anim { + frame 5 sound_body snd_footstep + frame 10 sound_body snd_footstep + frame 15 sound_body snd_footstep + frame 20 sound_body snd_footstep + } + + +} + +entityDef enpro_cin_wraith { + "inherit" "cin_base" + "model" "enpro_cin_wraith" + "anim" "marine" + "cinematic" "1" + "snd_footstep" "monster_demon_wraith_footstep" + +} + + +model enpro_keycard { + mesh models/md5/cinematics/enpro/wounded_keycard.md5mesh + anim marine_to_player_a models/md5/cinematics/enpro/wounded_keycard_a.md5anim + anim marine_to_player_b models/md5/cinematics/enpro/wounded_keycard_b.md5anim + anim marine_to_player_c models/md5/cinematics/enpro/wounded_keycard_c.md5anim + anim marine_to_player_d models/md5/cinematics/enpro/wounded_keycard_d.md5anim + anim marine_to_player_e models/md5/cinematics/enpro/wounded_keycard_e.md5anim + anim marine_to_player_f models/md5/cinematics/enpro/wounded_keycard_f.md5anim + +} + +entityDef enpro_keycard { + "model" "enpro_keycard" + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + "size" "" + "cinematic" "1" + + "auto_advance" "1" + "num_anims" "6" + "anim1" "marine_to_player_a" + "anim2" "marine_to_player_b" + "anim3" "marine_to_player_c" + "anim4" "marine_to_player_d" + "anim5" "marine_to_player_e" + "anim6" "marine_to_player_f" + + "spawnclass" "idAnimated" + +} diff --git a/base/def/map_fragchamber.def b/base/def/map_fragchamber.def new file mode 100644 index 00000000..8a278174 --- /dev/null +++ b/base/def/map_fragchamber.def @@ -0,0 +1,25 @@ +entityDef damage_fragchamberfog { + "damage" "25" + "kickDir" "0 0 0" + "mtr_blob" "toxinDamage" + "blob_time" "0" + "blob_size" "0" + "blob_offset_x" "0" + "knockback" "0" + "kick_time" "0" + "kick_amplitude" "0" + "dv_time" "100" +} + +entityDef damage_fragchamberpipe { + "damage" "5" + "kickDir" "0 0 0" + "mtr_blob" "toxinDamage" + "blob_time" "0" + "blob_size" "0" + "blob_offset_x" "0" + "knockback" "0" + "kick_time" "0" + "kick_amplitude" "0" + "dv_time" "100" +} diff --git a/base/def/map_hell1.def b/base/def/map_hell1.def new file mode 100644 index 00000000..53a5cc3b --- /dev/null +++ b/base/def/map_hell1.def @@ -0,0 +1,217 @@ + +export james { + + camera models/monsters/guardian/cycles/guardian_intro.mb -dest models/md5/cinematics/hell1/guardianintro_camera + camera models/monsters/guardian/cycles/death.mb -dest models/md5/cinematics/hell1/guardiandeath_camera + + options -prefix SC_ -keep guilight toplftnub toprtnub midnub botlftnub botrtnub + mesh models/monsters/guardian/cycles/guardian_intro.mb -dest models/md5/cinematics/hell1/guardianintro_soulcube + anim models/monsters/guardian/cycles/guardian_intro.mb -dest models/md5/cinematics/hell1/guardianintro_soulcube +} + +// GUARDIAN INTRO + +entityDef hell1_guardianintro_cam { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + "spawnclass" "idCameraAnim" + "anim guardianintro_cam" "models/md5/cinematics/hell1/guardianintro_camera.md5camera" + "cinematic" "1" +} + +entityDef hell1_guardiandeath_cam { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + "spawnclass" "idCameraAnim" + "anim guardiandeath_cam" "models/md5/cinematics/hell1/guardiandeath_camera.md5camera" + "cinematic" "1" +} + + +model hell1_cin_player { + mesh models/md5/characters/player/mocap/wepplayer.md5mesh + skin skins/player/shotgun.skin + anim guardianintro_teleport models/md5/cinematics/hell1/guardianintro_teleport_player.md5anim { + frame 324 fx fx/teleporter.fx + } +} + +entityDef hell1_cin_player { + "inherit" "cin_base" + "model" "hell1_cin_player" + "anim" "teleport" + "cinematic" "1" +} + + +model hell1_soulcube { + mesh models/md5/cinematics/hell1/guardianintro_soulcube.md5mesh + anim guardianintro_soulcube models/md5/cinematics/hell1/guardianintro_soulcube.md5anim +} + +entityDef hell1_soulcube { + "inherit" "cin_base" + "editor_mins" "-32 -32 0" + "editor_maxs" "32 32 64" + "model" "hell1_soulcube" + "anim" "guardianintro_soulcube" + "cinematic" "1" +} + +model hell1_monster_boss_guardian { + mesh models/md5/monsters/guardian/guardian.md5mesh + + channel legs ( *origin ) + + anim death models/md5/monsters/guardian/death.md5anim { + frame 1 sound_global snd_death + frame 61 sound_global snd_kablam + frame 106 sound_global hell_guardian_death_music + frame 110 sound_voice snd_footstep + frame 120 sound_voice snd_footstep + } + anim death_pose models/md5/monsters/guardian/death_pose.md5anim + anim rise_from_lava models/md5/monsters/guardian/guardian_intro.md5anim { + frame 50 sound_global guardian_sight2 + frame 100 sound_body monster_demon_guardian_footstep + frame 125 sound_body monster_demon_guardian_footstep + frame 130 sound_global guardian_fire_flareup + frame 150 sound_body monster_demon_guardian_footstep + frame 175 sound_body monster_demon_guardian_footstep + frame 180 sound_body monster_demon_guardian_footstep + frame 230 sound_global guardian_sight + frame 297 sound_body monster_demon_guardian_rocksmash + } + anim idle models/md5/monsters/guardian/death_pose.md5anim + anim lost_enemy models/md5/monsters/guardian/death_pose.md5anim + anim run_right models/md5/monsters/guardian/death_pose.md5anim + anim run_attack_right models/md5/monsters/guardian/death_pose.md5anim + anim run_left models/md5/monsters/guardian/death_pose.md5anim + anim run_attack_left models/md5/monsters/guardian/death_pose.md5anim + anim walk_right models/md5/monsters/guardian/death_pose.md5anim + anim walk_left models/md5/monsters/guardian/death_pose.md5anim + anim walk_attack_left models/md5/monsters/guardian/death_pose.md5anim + anim walk_attack_right models/md5/monsters/guardian/death_pose.md5anim + anim range_attack1 models/md5/monsters/guardian/death_pose.md5anim + anim range_attack2 models/md5/monsters/guardian/death_pose.md5anim + anim melee_attack models/md5/monsters/guardian/death_pose.md5anim + anim spawn_seeker models/md5/monsters/guardian/death_pose.md5anim + anim pain models/md5/monsters/guardian/death_pose.md5anim + anim sight models/md5/monsters/guardian/death_pose.md5anim + //anim af_pose models/md5/monsters/guardian/death_pose.md5anim + anim ik_pose models/md5/monsters/guardian/death_pose.md5anim + +} + +entityDef hell1_cin_guardian { + "scriptobject" "ai" + "nativeobject" "rvmMonsterZombie" + + "anim" "rise_from_lava" + "model" "hell1_monster_boss_guardian" + "ik_numLegs" "0" + "turn_rate" "0" + "head_look" "0" + "head_focus_rate" "0" + "bone_focus" "neck_2" + "look_min" "0 0 0" + "look_max" "0 0 0" + "look_joint spine_4" "0 0 0" + "look_joint neck_2" "0 0 0" + + "editor_mins" "-100 -100 0" + "editor_maxs" "100 100 200" + "inherit" "monster_default" + "size" "200 200 200" + "use_aas" "aas_guardian" + "no_idle_chatter" "1" + "health" "800" + "noDamage" "1" + "team" "0" + "rank" "0" + "melee_range" "150" + "def_projectile" "projectile_guardian_smash" + + "mass" "1000000" + + "mtr_light_shader" "lights/lanternglow" + "light_radius" "200" + "light_color" "1 0.2 0" + "light_offset_right" "0 32 32" + "light_offset_left" "0 32 -32" + + "smokeParticleSystem" "GflameBack" + "smokeParticleSystem2" "GflameRhand" + "smokeParticleSystem3" "head" + "smokeParticleSystem4" "GflameLHand" + "smokeParticleSystem5" "tail_12" + "smokeParticleSystem6" "GflameReye" + "smokeParticleSystem7" "GflameLeye" + "smokeParticleSystem8" "GflameNose" + "smokeParticleSystem9" "tounge_2" + + "ik_footSize" "0" + "ik_footDownTrace" "64" + "ik_waist" "Body" + "ik_hip1" "lupleg" + "ik_hip2" "rupleg" + "ik_knee1" "lloleg" + "ik_knee2" "rloleg" + "ik_ankle1" "lleg" + "ik_ankle2" "rleg" + "ik_dir1" "Lknee" + "ik_dir2" "Rknee" + "ik_foot1" "ik_foot1" + "ik_foot2" "ik_foot2" + + "snd_sight" "monster_demon_guardian_sight" + "snd_chatter" "monster_demon_guardian_chatter" + "snd_chatter_combat" "monster_demon_guardian_chatter_combat" + "snd_pain" "monster_demon_guardian_pain" + "snd_death" "monster_demon_guardian_die" + "snd_footstep" "monster_demon_guardian_footstep" + "snd_attack" "monster_demon_guardian_attack" + "snd_spawn_seeker" "monster_demon_guardian_spawn" + "snd_kablam" "monster_demon_guardian_death_impact" + + "def_poundgrounddamage" "damage_guardianPoundGround" + "def_poundground" "guardian_poundground_explosion" + "cinematic" "1" +} + +model hell_lstep { + mesh models/md5/cinematics/hell1/lstep.md5mesh + anim open models/md5/cinematics/hell1/lstep.md5anim { + frame 1 sound_voice2 gargoyle_01 + } + anim bind models/md5/cinematics/hell1/lstepbind.md5anim +} + +entityDef hell_lstep { + "inherit" "cin_base" + "editor_mins" "-32 -32 0" + "editor_maxs" "32 32 64" + "model" "hell_lstep" + "anim" "open" + "cinematic" "1" +} + +model hell_rstep { + mesh models/md5/cinematics/hell1/rstep.md5mesh + anim open models/md5/cinematics/hell1/rstep.md5anim { + frame 1 sound_voice2 gargoyle_02 + } + anim bind models/md5/cinematics/hell1/lstepbind.md5anim +} + +entityDef hell_rstep { + "inherit" "cin_base" + "editor_mins" "-32 -32 0" + "editor_maxs" "32 32 64" + "model" "hell_rstep" + "anim" "open" + "cinematic" "1" +} + diff --git a/base/def/map_hellhole.def b/base/def/map_hellhole.def new file mode 100644 index 00000000..56e546b6 --- /dev/null +++ b/base/def/map_hellhole.def @@ -0,0 +1,737 @@ +export seneca { + + options -prefix hellholebricks1_ -sourcedir models/mapobjects/hellhole/ -destdir models/md5/cinematics/hellhole/ + mesh hellhole_coffinbricks.mb -range 78 78 + anim hellhole_coffinbricks.mb + + options -prefix ENV_ + mesh maps/fred/cyberdemon/cyberdeath.mb -dest models/md5/cinematics/hellhole/cyberdeath_rocks + anim maps/fred/cyberdemon/cyberdeath.mb -range 549 800 -dest models/md5/cinematics/hellhole/cyberdeath_rocks + +} + +export fred { + + options -prefix LS_ + mesh maps/fred/hell/hellsteps.mb -dest models/md5/cinematics/hell1/lstep + anim maps/fred/hell/hellsteps.mb -dest models/md5/cinematics/hell1/lstep + anim maps/fred/hell/hellsteps.mb -range 50 50 -dest models/md5/cinematics/hell1/lstepbind + + options -prefix RS_ + mesh maps/fred/hell/hellsteps.mb -dest models/md5/cinematics/hell1/rstep + anim maps/fred/hell/hellsteps.mb -dest models/md5/cinematics/hell1/rstep + anim maps/fred/hell/hellsteps.mb -range 50 50 -dest models/md5/cinematics/hell1/rstepbind + + options -prefix ENV_ + mesh maps/fred/cyberdemon/cyberintro.mb -range 765 765 -dest models/md5/cinematics/hellhole/cyberrocks + anim maps/fred/cyberdemon/cyberintro.mb -range 29 29 -dest models/md5/cinematics/hellhole/cyberrocks1 + anim maps/fred/cyberdemon/cyberintro.mb -range 30 745 -dest models/md5/cinematics/hellhole/cyberrocks2 + anim maps/fred/cyberdemon/cyberintro.mb -range 746 765 -dest models/md5/cinematics/hellhole/cyberrocks3 + + options -prefix SOUL_ -keep neworig guilight toplftnub toprtnub midnub botlftnub botrtnub -rename origin blah -rename neworig origin + mesh maps/fred/cyberdemon/cyberdeath.mb -dest models/md5/cinematics/hellhole/cyberdeath_soulcube + anim maps/fred/cyberdemon/cyberdeath.mb -range 44 89 -dest models/md5/cinematics/hellhole/cyberdeath_soulcube1 + anim maps/fred/cyberdemon/cyberdeath.mb -range 90 199 -dest models/md5/cinematics/hellhole/cyberdeath_soulcube2 + anim maps/fred/cyberdemon/cyberdeath.mb -range 200 220 -dest models/md5/cinematics/hellhole/cyberdeath_soulcube3 + anim maps/fred/cyberdemon/cyberdeath.mb -range 221 275 -dest models/md5/cinematics/hellhole/cyberdeath_soulcube4 -prefix SOUL2_ + anim maps/fred/cyberdemon/cyberdeath.mb -range 276 340 -dest models/md5/cinematics/hellhole/cyberdeath_soulcube5 -prefix SOUL2_ + anim maps/fred/cyberdemon/cyberdeath.mb -range 341 372 -dest models/md5/cinematics/hellhole/cyberdeath_soulcube6 -prefix SOUL2_ + anim maps/fred/cyberdemon/cyberdeath.mb -range 373 399 -dest models/md5/cinematics/hellhole/cyberdeath_soulcube7 -prefix SOUL2_ + anim maps/fred/cyberdemon/cyberdeath.mb -range 400 428 -dest models/md5/cinematics/hellhole/cyberdeath_soulcube8 + anim maps/fred/cyberdemon/cyberdeath.mb -range 429 548 -dest models/md5/cinematics/hellhole/cyberdeath_soulcube9 + anim maps/fred/cyberdemon/cyberdeath.mb -range 549 800 -dest models/md5/cinematics/hellhole/cyberdeath_soulcube10 + + + //anim maps/fred/cyberdemon/cyberdeath.mb -range 400 608 -dest models/md5/cinematics/hellhole/cyberdeath_soulcube3 + //anim maps/fred/cyberdemon/cyberdeath.mb -range 221 399 -dest models/md5/cinematics/hellhole/cyberdeath_soulcube2 -prefix SOUL2_ + + + + camera maps/fred/cyberdemon/cyberintro.mb -range 30 104 -dest models/md5/cinematics/hellhole/cybercam_a + camera maps/fred/cyberdemon/cyberintro.mb -range 105 220 -dest models/md5/cinematics/hellhole/cybercam_b + camera maps/fred/cyberdemon/cyberintro.mb -range 221 252 -dest models/md5/cinematics/hellhole/cybercam_c + camera maps/fred/cyberdemon/cyberintro.mb -range 253 337 -dest models/md5/cinematics/hellhole/cybercam_d + camera maps/fred/cyberdemon/cyberintro.mb -range 338 492 -dest models/md5/cinematics/hellhole/cybercam_e + camera maps/fred/cyberdemon/cyberintro.mb -range 493 542 -dest models/md5/cinematics/hellhole/cybercam_f + camera maps/fred/cyberdemon/cyberintro.mb -range 543 654 -dest models/md5/cinematics/hellhole/cybercam_g + camera maps/fred/cyberdemon/cyberintro.mb -range 655 732 -dest models/md5/cinematics/hellhole/cybercam_h + camera maps/fred/cyberdemon/cyberintro.mb -range 733 765 -dest models/md5/cinematics/hellhole/cybercam_i + +// camera maps/fred/cyberdemon/cyberdeath.mb -dest models/md5/cinematics/hellhole/cyberdeath_camera + camera maps/fred/cyberdemon/cyberdeath.mb -range 44 89 -dest models/md5/cinematics/hellhole/cyberdeath_camera_a + camera maps/fred/cyberdemon/cyberdeath.mb -range 90 199 -dest models/md5/cinematics/hellhole/cyberdeath_camera_b + camera maps/fred/cyberdemon/cyberdeath.mb -range 200 220 -dest models/md5/cinematics/hellhole/cyberdeath_camera_c + camera maps/fred/cyberdemon/cyberdeath.mb -range 221 275 -dest models/md5/cinematics/hellhole/cyberdeath_camera_d + camera maps/fred/cyberdemon/cyberdeath.mb -range 276 340 -dest models/md5/cinematics/hellhole/cyberdeath_camera_e + camera maps/fred/cyberdemon/cyberdeath.mb -range 341 372 -dest models/md5/cinematics/hellhole/cyberdeath_camera_f + camera maps/fred/cyberdemon/cyberdeath.mb -range 373 428 -dest models/md5/cinematics/hellhole/cyberdeath_camera_g + camera maps/fred/cyberdemon/cyberdeath.mb -range 429 548 -dest models/md5/cinematics/hellhole/cyberdeath_camera_h + camera maps/fred/cyberdemon/cyberdeath.mb -range 549 800 -dest models/md5/cinematics/hellhole/cyberdeath_camera_i + + camera maps/fred/cyberdemon/bodyshot1.mb -dest models/md5/cinematics/hellhole/rescue_bodyshot_camera + camera maps/fred/cyberdemon/rescue1.mb -dest models/md5/cinematics/hellhole/rescue_camera + camera maps/fred/cyberdemon/swanndead.mb -dest models/md5/cinematics/hellhole/rescue_swanndead_camera + camera maps/fred/cyberdemon/rescue2.mb -dest models/md5/cinematics/hellhole/rescue_camera2 +} + + +model hellhole_cyberdeathrocks { + mesh models/md5/cinematics/hellhole/cyberdeath_rocks.md5mesh + anim open models/md5/cinematics/hellhole/cyberdeath_rocks.md5anim { + // the huge lava fire 549 + frame 1 trigger soulcubefire + // rocksmoke ON + frame 27 trigger rocksmoke1 + frame 52 trigger rocksmoke3 + frame 63 trigger rocksmoke2 + // rocksmoke OFF + frame 49 trigger rocksmoke1 + frame 71 trigger rocksmoke3 + frame 82 trigger rocksmoke2 + // ROCKS HITTING THE GROUND + frame 39 trigger rock1explode + frame 75 trigger rock2explode + // turn the huge lava fire off + frame 103 trigger soulcubefire + // fade the lava out + frame 120 call "map_hellhole::fade_lava" + // turn off the room's particles + frame 90 trigger func_emitter_1 + frame 90 trigger func_emitter_2 + frame 90 trigger func_emitter_3 + frame 90 trigger func_emitter_4 + frame 90 trigger func_emitter_5 + } +} + +entityDef hellhole_cyberdeathrocks { + "inherit" "cin_base" + "editor_mins" "-32 -32 0" + "editor_maxs" "32 32 64" + "model" "hellhole_cyberdeathrocks" + "cinematic" "1" +} + + +model hellhole_coffinbricks { + mesh models/md5/cinematics/hellhole/hellhole_coffinbricks.md5mesh + anim open models/md5/cinematics/hellhole/hellhole_coffinbricks.md5anim + { + frame 1 trigger hellhole_dust1 + frame 1 sound_voice2 hh_rockslide_01 + frame 10 trigger hellhole_dust2 + frame 11 trigger hellhole_dust3 + frame 18 trigger hellhole_dust4 + frame 36 trigger hellhole_dust5 + frame 40 trigger hellhole_coffinclip + frame 54 trigger hellhole_dust6 + } +} + +entityDef hellhole_coffinbricks { + "inherit" "cin_base" + "editor_mins" "-32 -32 0" + "editor_maxs" "32 32 64" + "model" "hellhole_coffinbricks" + "cinematic" "1" +} + + +// CYBERDEMON INTRO + + +entityDef hellhole_cam { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + + + "spawnclass" "idCameraAnim" + "cinematic" "1" + + //"anim cyberintro" "models/md5/cinematics/hellhole/cybercam.md5camera" + "anim cyberintro_a" "models/md5/cinematics/hellhole/cybercam_a.md5camera" + "anim cyberintro_b" "models/md5/cinematics/hellhole/cybercam_b.md5camera" + "anim cyberintro_c" "models/md5/cinematics/hellhole/cybercam_c.md5camera" + "anim cyberintro_d" "models/md5/cinematics/hellhole/cybercam_d.md5camera" + "anim cyberintro_e" "models/md5/cinematics/hellhole/cybercam_e.md5camera" + "anim cyberintro_f" "models/md5/cinematics/hellhole/cybercam_f.md5camera" + "anim cyberintro_g" "models/md5/cinematics/hellhole/cybercam_g.md5camera" + "anim cyberintro_h" "models/md5/cinematics/hellhole/cybercam_h.md5camera" + "anim cyberintro_i" "models/md5/cinematics/hellhole/cybercam_i.md5camera" + + "anim cyberdeath_a" "models/md5/cinematics/hellhole/cyberdeath_camera_a.md5camera" + "anim cyberdeath_b" "models/md5/cinematics/hellhole/cyberdeath_camera_b.md5camera" + "anim cyberdeath_c" "models/md5/cinematics/hellhole/cyberdeath_camera_c.md5camera" + "anim cyberdeath_d" "models/md5/cinematics/hellhole/cyberdeath_camera_d.md5camera" + "anim cyberdeath_e" "models/md5/cinematics/hellhole/cyberdeath_camera_e.md5camera" + "anim cyberdeath_f" "models/md5/cinematics/hellhole/cyberdeath_camera_f.md5camera" + "anim cyberdeath_g" "models/md5/cinematics/hellhole/cyberdeath_camera_g.md5camera" + "anim cyberdeath_h" "models/md5/cinematics/hellhole/cyberdeath_camera_h.md5camera" + "anim cyberdeath_i" "models/md5/cinematics/hellhole/cyberdeath_camera_i.md5camera" +} + +model hellhole_cyberbricks { + mesh models/md5/cinematics/hellhole/cyberrocks.md5mesh + anim cyberintro1 models/md5/cinematics/hellhole/cyberrocks1.md5anim + // { + // frame 21 trigger func_emitter_67 + //} + anim cyberintro2 models/md5/cinematics/hellhole/cyberrocks2.md5anim { + frame 24 trigger func_emitter_67 + } + + anim cyberintro3 models/md5/cinematics/hellhole/cyberrocks3.md5anim +} + +entityDef hellhole_cyberbricks { + "inherit" "cin_base" + "editor_mins" "-32 -32 0" + "editor_maxs" "32 32 64" + "model" "hellhole_cyberbricks" + "anim" "cyberintro1" + "auto_advance" "0" + "num_anims" "3" + "anim1" "cyberintro1" + "anim2" "cyberintro2" + "anim3" "cyberintro3" + "cinematic" "1" + +} + +model hellhole_cin_player { + mesh models/md5/characters/player/mocap/wepplayer.md5mesh + skin skins/player/shotgun.skin + + anim cyberintro_a models/md5/cinematics/hellhole/cyberintro_player1.md5anim + anim cyberintro_b models/md5/cinematics/hellhole/cyberintro_player2.md5anim + anim cyberintro_c models/md5/cinematics/hellhole/cyberintro_player3.md5anim + anim cyberintro_d models/md5/cinematics/hellhole/cyberintro_player4.md5anim + anim cyberintro_e models/md5/cinematics/hellhole/cyberintro_player5.md5anim + anim cyberintro_f models/md5/cinematics/hellhole/cyberintro_player6.md5anim + anim cyberintro_g models/md5/cinematics/hellhole/cyberintro_player7.md5anim + anim cyberintro_h models/md5/cinematics/hellhole/cyberintro_player8.md5anim { + frame 60 trigger hellhole_cyberbricks_1 + } + anim cyberintro_i models/md5/cinematics/hellhole/cyberintro_player9.md5anim + +} + +entityDef hellhole_cin_player { + "inherit" "cin_base" + "anim" "cyberintro" + "model" "hellhole_cin_player" + "cinematic" "1" + + "auto_advance" "1" + "num_anims" "8" + "anim1" "cyberintro_a" + "anim2" "cyberintro_b" + "anim3" "cyberintro_c" + "anim4" "cyberintro_d" + "anim5" "cyberintro_e" + //"anim6" "cyberintro_f" + "anim6" "cyberintro_g" + "anim7" "cyberintro_h" + "anim8" "cyberintro_i" + +} + +model hellhole_cin_player2 { + mesh models/md5/characters/player/mocap/wepplayer.md5mesh + skin skins/player/shotgun.skin + + anim cyberdeath_a models/md5/cinematics/hellhole/cyberdeath_player_a.md5anim + anim cyberdeath_b models/md5/cinematics/hellhole/cyberdeath_player_b.md5anim + anim cyberdeath_c models/md5/cinematics/hellhole/cyberdeath_player_c.md5anim { + frame 1 trigger func_static_52874 + } + anim cyberdeath_d models/md5/cinematics/hellhole/cyberdeath_player_d.md5anim + anim cyberdeath_e models/md5/cinematics/hellhole/cyberdeath_player_e.md5anim + anim cyberdeath_f models/md5/cinematics/hellhole/cyberdeath_player_f.md5anim + anim cyberdeath_g models/md5/cinematics/hellhole/cyberdeath_player_g.md5anim + anim cyberdeath_h models/md5/cinematics/hellhole/cyberdeath_player_h.md5anim + anim cyberdeath_i models/md5/cinematics/hellhole/cyberdeath_player_i.md5anim +} + +entityDef hellhole_cin_player2 { + "inherit" "cin_base" + "anim" "cyberdeath" + "model" "hellhole_cin_player2" + "cinematic" "1" + + "auto_advance" "1" + "num_anims" "9" + "anim1" "cyberdeath_a" + "anim2" "cyberdeath_b" + "anim3" "cyberdeath_c" + "anim4" "cyberdeath_d" + "anim5" "cyberdeath_e" + "anim6" "cyberdeath_f" + "anim7" "cyberdeath_g" + "anim8" "cyberdeath_h" + "anim9" "cyberdeath_i" + + +} + +model hellhole_cin_player3 { + mesh models/md5/characters/player/mocap/player.md5mesh + skin skins/player/noweapon.skin + + anim rescue models/md5/cinematics/hellhole/rescue_player.md5anim + +} + +entityDef hellhole_cin_player3 { + "inherit" "cin_base" + "model" "hellhole_cin_player3" + "cinematic" "1" + + "anim" "rescue" + +} + +model hellhole_cin_marine { + inherit npc_marine + + anim rescue1 models/md5/cinematics/hellhole/rescue_marine1.md5anim + anim rescue2 models/md5/cinematics/hellhole/rescue_marine2.md5anim + anim rescue2b models/md5/cinematics/hellhole/rescue_marine2b.md5anim +} + +entityDef hellhole_cin_marine { + "inherit" "npc_base" + "size" "" + + "copy_joint_world eyecontrol" "" + + "model" "hellhole_cin_marine" + "anim" "rescue1" + "def_head" "head_marine_helmet" + "head_joint" "Shoulders" + "cinematic" "1" + "ragdoll" "" + "ik_numlegs" "0" +} + +model hellhole_cin_npcplayerhead { + mesh models/md5/heads/player/player.md5mesh + channel eyelids ( Ruplid Rlolid Luplid Llolid ) + + anim blink models/md5/heads/player/blink.md5anim + anim rescue1b models/md5/heads/player/rescue1b.md5anim +} + + +model hellhole_cin_npcplayer { + inherit npc_player + + anim rescue1b models/md5/cinematics/hellhole/rescue_marine1b.md5anim +} + +entityDef hellhole_cin_npcplayer { + "inherit" "npc_base" + "size" "" + + "model" "hellhole_cin_npcplayer" + "anim" "rescue1b" + "def_head" "hellhole_cin_npcplayerhead" + "head_joint" "Shoulders" + "cinematic" "1" +} + +entityDef hellhole_rescue_cam { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + + + "spawnclass" "idCameraAnim" + "cinematic" "1" + + "anim bodyshot" "models/md5/cinematics/hellhole/rescue_bodyshot_camera.md5camera" + "anim rescue" "models/md5/cinematics/hellhole/rescue_camera.md5camera" + "anim swann" "models/md5/cinematics/hellhole/rescue_swanndead_camera.md5camera" + "anim rescueb" "models/md5/cinematics/hellhole/rescue_camera2.md5camera" +} + + +model hellhole_cin_cyberdemon { + mesh models/md5/monsters/cyberdemon/cyberdemon.md5mesh + + channel torso ( ) + channel legs ( *origin ) + + anim stand models/md5/cinematics/hellhole/cyberintro_cyberdemon1.md5anim + + anim idle models/md5/cinematics/hellhole/cyberintro_cyberdemon1.md5anim + + anim cyberintro_a models/md5/cinematics/hellhole/cyberintro_cyberdemon1.md5anim + anim cyberintro_b models/md5/cinematics/hellhole/cyberintro_cyberdemon2.md5anim + anim cyberintro_c models/md5/cinematics/hellhole/cyberintro_cyberdemon3.md5anim + anim cyberintro_d models/md5/cinematics/hellhole/cyberintro_cyberdemon4.md5anim + anim cyberintro_e models/md5/cinematics/hellhole/cyberintro_cyberdemon5.md5anim + anim cyberintro_f models/md5/cinematics/hellhole/cyberintro_cyberdemon6.md5anim + anim cyberintro_g models/md5/cinematics/hellhole/cyberintro_cyberdemon7.md5anim + anim cyberintro_h models/md5/cinematics/hellhole/cyberintro_cyberdemon8.md5anim + anim cyberintro_i models/md5/cinematics/hellhole/cyberintro_cyberdemon9.md5anim + + +} + +entityDef hellhole_cin_cyberdemon { + "inherit" "monster_boss_cyberdemon" + "anim" "cyberintro_a" + "model" "hellhole_cin_cyberdemon" + "team" "0" + "ik_numLegs" "0" + "head_look" "0" + "turn_rate" "0" + "cinematic" "1" + "ragdoll" "" + + "num_cinematics" "8" + "anim1" "cyberintro_a" + "anim2" "cyberintro_b" + "anim3" "cyberintro_c" + "anim4" "cyberintro_d" + "anim5" "cyberintro_e" + //"anim6" "cyberintro_f" + "anim6" "cyberintro_g" + "anim7" "cyberintro_h" + "anim8" "cyberintro_i" +} + +model hellhole_cin_cyberdemon2 { + mesh models/md5/cinematics/hellhole/cyberdeath_cyberdemon.md5mesh + + channel torso ( ) + channel legs ( *origin ) + + anim stand models/md5/cinematics/hellhole/cyberdeath_cyberdemon_a.md5anim + + anim idle models/md5/cinematics/hellhole/cyberdeath_cyberdemon_a.md5anim + + anim bind models/md5/cinematics/hellhole/cyberdeath_cyberdemon_bind.md5anim + anim cyberdeath_a models/md5/cinematics/hellhole/cyberdeath_cyberdemon_a.md5anim { + frame 1 sound_global hh_music_cyberdeath + frame 1 sound_global hh_sfx_cyberdeath + //frame 1 sound_global cyberdemon_death_music + //frame 1 sound_global cyberdemon_death_sfx + frame 33 trigger func_smoke_1 + } + anim cyberdeath_b models/md5/cinematics/hellhole/cyberdeath_cyberdemon_b.md5anim + anim cyberdeath_c models/md5/cinematics/hellhole/cyberdeath_cyberdemon_c.md5anim + anim cyberdeath_d models/md5/cinematics/hellhole/cyberdeath_cyberdemon_d.md5anim { + frame 1 trigger func_smoke_2 + } + anim cyberdeath_e models/md5/cinematics/hellhole/cyberdeath_cyberdemon_e.md5anim { + frame 8 trigger func_emitter_106 + frame 12 trigger func_smoke_2 + frame 12 trigger func_smoke_1 + } + anim cyberdeath_f models/md5/cinematics/hellhole/cyberdeath_cyberdemon_f.md5anim + anim cyberdeath_g models/md5/cinematics/hellhole/cyberdeath_cyberdemon_g.md5anim + anim cyberdeath_h models/md5/cinematics/hellhole/cyberdeath_cyberdemon_h.md5anim + anim cyberdeath_i models/md5/cinematics/hellhole/cyberdeath_cyberdemon_i.md5anim { + frame 226 trigger startrescue + } + + anim af_pose models/md5/cinematics/hellhole/cyberdeath_cyberdemon_a.md5anim + anim ik_pose models/md5/cinematics/hellhole/cyberdeath_cyberdemon_a.md5anim + + anim sight1 models/md5/cinematics/hellhole/cyberdeath_cyberdemon_a.md5anim + anim sight2 models/md5/cinematics/hellhole/cyberdeath_cyberdemon_a.md5anim + anim sight3 models/md5/cinematics/hellhole/cyberdeath_cyberdemon_a.md5anim + anim walk models/md5/cinematics/hellhole/cyberdeath_cyberdemon_a.md5anim + anim pain models/md5/cinematics/hellhole/cyberdeath_cyberdemon_a.md5anim + anim pain_chest models/md5/cinematics/hellhole/cyberdeath_cyberdemon_a.md5anim + anim pain_head models/md5/cinematics/hellhole/cyberdeath_cyberdemon_a.md5anim + anim pain_left_arm models/md5/cinematics/hellhole/cyberdeath_cyberdemon_a.md5anim + anim pain_right_arm models/md5/cinematics/hellhole/cyberdeath_cyberdemon_a.md5anim + anim melee_attack1 models/md5/cinematics/hellhole/cyberdeath_cyberdemon_a.md5anim + anim melee_attack2 models/md5/cinematics/hellhole/cyberdeath_cyberdemon_a.md5anim + anim range_attack models/md5/cinematics/hellhole/cyberdeath_cyberdemon_a.md5anim + + anim death models/md5/cinematics/hellhole/cyberdeath_cyberdemon_a.md5anim + + +} + +entityDef hellhole_cin_cyberdemon2 { + //"inherit" "cin_base" + "inherit" "monster_boss_cyberdemon" + "anim" "cyberdeath_a" + "model" "hellhole_cin_cyberdemon2" + "team" "0" + "ik_numLegs" "0" + "turn_rate" "0" + "head_look" "0" + "head_focus_rate" "0" + "bone_focus" "Barrel" + "look_min" "0 0 0" + "look_max" "0 0 0" + "look_joint Waist" "0 0 0" + "look_joint Chest" "0 0 0" + "look_joint Head" "0 0 0" + "size" "" + "cinematic" "1" + "ragdoll" "" + + "num_cinematics" "9" + "anim1" "cyberdeath_a" + "anim2" "cyberdeath_b" + "anim3" "cyberdeath_c" + "anim4" "cyberdeath_d" + "anim5" "cyberdeath_e" + "anim6" "cyberdeath_f" + "anim7" "cyberdeath_g" + "anim8" "cyberdeath_h" + "anim9" "cyberdeath_i" + +} + + +model hellhole_soulcube { + mesh models/md5/cinematics/hellhole/cyberdeath_soulcube.md5mesh + anim cyberdeath_a models/md5/cinematics/hellhole/cyberdeath_soulcube1.md5anim { + frame 1 trigger soulsmoke + + } + anim cyberdeath_b models/md5/cinematics/hellhole/cyberdeath_soulcube2.md5anim + anim cyberdeath_c models/md5/cinematics/hellhole/cyberdeath_soulcube3.md5anim { + frame 1 trigger soulsmoke + } + + anim cyberdeath_d models/md5/cinematics/hellhole/cyberdeath_soulcube4.md5anim + anim cyberdeath_e models/md5/cinematics/hellhole/cyberdeath_soulcube5.md5anim + anim cyberdeath_f models/md5/cinematics/hellhole/cyberdeath_soulcube6.md5anim + anim cyberdeath_g models/md5/cinematics/hellhole/cyberdeath_soulcube7.md5anim { + frame 15 trigger soulsmoke + } + anim cyberdeath_h models/md5/cinematics/hellhole/cyberdeath_soulcube8.md5anim + anim cyberdeath_i models/md5/cinematics/hellhole/cyberdeath_soulcube9.md5anim + anim cyberdeath_j models/md5/cinematics/hellhole/cyberdeath_soulcube10.md5anim { + frame 20 trigger soulsmoke + } + + + +} + +entityDef hellhole_soulcube { + "inherit" "cin_base" + "editor_mins" "-32 -32 0" + "editor_maxs" "32 32 64" + "model" "hellhole_soulcube" + "cinematic" "1" + + "auto_advance" "1" + "num_anims" "10" + "anim1" "cyberdeath_a" + "anim2" "cyberdeath_b" + "anim3" "cyberdeath_c" + "anim4" "cyberdeath_d" + "anim5" "cyberdeath_e" + "anim6" "cyberdeath_f" + "anim7" "cyberdeath_g" + "anim8" "cyberdeath_h" + "anim9" "cyberdeath_i" + "anim10" "cyberdeath_j" +} + +model hellhole_swann_head { + skin skins/characters/npcs/swannbloody.skin + mesh models/md5/heads/swann/swann.md5mesh + + anim dead models/md5/heads/swann/swanndead.md5anim +} + +model hellhole_swann { + mesh models/md5/chars/suit.md5mesh + channel torso ( *origin ) + + skin skins/characters/npcs/bloodysuit.skin + anim af_pose models/md5/chars/af_pose.md5anim + anim stand models/md5/cinematics/delta5/swann_idle.md5anim + anim idle models/md5/cinematics/delta5/swann_idle.md5anim + anim dead models/md5/cinematics/hellhole/rescue_swanndead.md5anim +} + +entityDef hellhole_swann { + "inherit" "character_default" + "scriptobject" "ai" + "nativeobject" "rvmCharacter" + "model" "hellhole_swann" + "anim" "idle" + "size" "64 20 32" + "use_aas" "" + "turn_rate" "0" + "eye_height" "28" + + "talktrigger" "1" + "no_cower" "1" + "talk_no_turn" "1" + + "bone_focus" "headcontrol" + "bone_orientation" "Body" + "bone_leftEye" "Leyeaim" + "bone_rightEye" "Reyeaim" + + "eye_turn_min" "-20 -30 0" + "eye_turn_max" "20 30 0" + "eye_verticle_offset" "5" + "eye_horizontal_offset" "-0" + "eye_focus_rate" "0.5" + "head_focus_rate" "0" + "head_look" "0" + + "look_min" "0 0 0" + "look_max" "0 0 0" + "look_joint headcontrol" "0 0 0" + + "copy_joint neckcontrol" "neckcontrol" + "copy_joint headcontrol" "headcontrol" + "copy_joint_world eyecontrol" "eyecontrol" + + "def_head" "hellhole_swann_head" + "head_joint" "Shoulders" + + "ragdoll" "char_wounded_marine" + + "damage_zone chest" "*Waist -*loneckcontrol" + "damage_zone left_arm" "*Luparm" + "damage_zone right_arm" "*Ruparm" + "damage_zone legs" "origin Body2" + "cinematic" "1" +} + +model hellhole_imp { + inherit monster_demon_imp + + anim cybercrawl models/md5/monsters/imp/impcyberwakeup.md5anim { + ai_no_turn + frame 1 disableGravity + frame 1 disableWalkIK + frame 40 enableGravity + frame 40 enableWalkIK + } +} + +entityDef hellhole_imp { + "inherit" "monster_demon_imp" + "model" "hellhole_imp" + "anim" "cybercrawl" +} + +model hellhole_maggot { + inherit monster_demon_maggot + + anim cybercrawl models/md5/monsters/maggot3/magcyberwakeup.md5anim { + ai_no_turn + frame 1 disableGravity + frame 1 disableWalkIK + frame 40 enableGravity + frame 40 enableWalkIK + } +} + +entityDef hellhole_maggot { + "inherit" "monster_demon_maggot" + "model" "hellhole_maggot" + "anim" "cybercrawl" +} + +model hellhole_pdamarine { + inherit npc_base + mesh models/md5/chars/marine.md5mesh + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER eyecontrol chair) + + anim pdamarine models/md5/cinematics/hellhole/rescue_pdamarine.md5anim + + +} + +entityDef hellhole_pdamarine { + "inherit" "npc_base" + "model" "hellhole_pdamarine" + "anim" "pdamarine" + "def_attach" "prop_pda" + "def_head" "head_marine_helmet" + "head_joint" "Shoulders" + "cinematic" "1" + "copy_joint_world eyecontrol" "" +} + +model hellhole_lookmarine { + inherit npc_base + mesh models/md5/chars/marine.md5mesh + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER eyecontrol chair) + + anim pdamarine models/md5/cinematics/hellhole/rescue_bodylook.md5anim + anim talk_primary models/md5/cinematics/hellhole/rescue_bodylook.md5anim + + +} + +entityDef hellhole_lookmarine { + "inherit" "npc_base" + "model" "hellhole_lookmarine" + "anim" "pdamarine" + "def_attach" "prop_machinegun" + "def_head" "head_marine_helmet" + "head_joint" "Shoulders" + "cinematic" "1" + "copy_joint_world eyecontrol" "" +} + +model hellhole_walkmarine { + inherit npc_marine_w_mgun + + anim shot1 models/md5/cinematics/hellhole/hellhole_marinewalk.md5anim { + frame 1 event ignoreDamage + frame 6 sound_body player_sounds_footstep + frame 17 sound_body player_sounds_footstep + frame 31 sound_body player_sounds_footstep + frame 45 sound_body player_sounds_footstep + frame 59 sound_body player_sounds_footstep + frame 71 sound_body player_sounds_footstep + frame 85 sound_body player_sounds_footstep + frame 96 sound_body player_sounds_footstep + frame 112 sound_body player_sounds_footstep + frame 124 sound_body player_sounds_footstep + frame 136 sound_body player_sounds_footstep + frame 145 sound_body player_sounds_footstep + } + +} +entityDef hellhole_walkmarine { + "inherit" "npc_base" + "model" "hellhole_walkmarine" + "sound_bone" "Chest" + "def_projectile" "projectile_bullet_zsec_machinegun" + "projectile_spread" "0" + "num_projectiles" "1" + "smoke_weapon" "cgsmoke.smoke" + "smoke_wound_metal" "bulletricochet.prt" + "smoke_wound_ricochet" "bulletricochet.prt" + "mtr_flashShader" "muzzleflash" + "flashTime" "0.15" + "flashColor" "1 0.8 0.4" + "flashRadius" "120" + "cinematic" "1" + "gib" "0" + "model_gib" "models/md5/chars/skeleton_w_mgun.md5mesh" + "mass" "5000" + "copy_joint_world eyecontrol" "" + "ik_numlegs" "0" + "ragdoll" "" + + "def_head" "head_marine_helmet" + "head_joint" "Shoulders" +} + + diff --git a/base/def/map_intro.def b/base/def/map_intro.def new file mode 100644 index 00000000..7594ee6f --- /dev/null +++ b/base/def/map_intro.def @@ -0,0 +1,116 @@ +export fred { + + camera maps/fred/intro/intro_shot1.mb -range 1 121 -dest models/md5/cinematics/intro/intro_camera1 + camera maps/fred/intro/intro_shot2.mb -range 122 174 -dest models/md5/cinematics/intro/intro_camera2 + camera maps/fred/intro/intro_shot3.mb -range 175 1220 -dest models/md5/cinematics/intro/intro_camera3 + + addoptions -prefix ENV_ + mesh maps/fred/intro/intro.mb -dest models/md5/cinematics/intro/intro_panel + anim maps/fred/intro/intro.mb -range 175 1220 -dest models/md5/cinematics/intro/intro_panel + + addoptions -prefix MEAT_ + mesh maps/fred/intro/intro.mb -range 1 1 -dest models/md5/cinematics/intro/intro_meat + anim maps/fred/intro/intro.mb -range 1 1220 -xyzprecision 0.01 -quatprecision 0.00006 -dest models/md5/cinematics/intro/intro_meat + + +} + +entityDef intro_cam { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + + "spawnclass" "idCameraAnim" + "anim intro" "models/md5/cinematics/intro/intro_camera.camera" + "anim intro_shot1" "models/md5/cinematics/intro/intro_camera1.camera" + "anim intro_shot2" "models/md5/cinematics/intro/intro_camera2.camera" + "anim intro_shot3" "models/md5/cinematics/intro/intro_camera3.camera" +} + +model intro_pinky { + mesh models/md5/monsters/pinky/pinky.md5mesh + anim intro models/md5/cinematics/intro/pinky_intro.md5anim { + frame 384 trigger explosion1 + frame 388 trigger explosion1 + frame 400 trigger telelight1 + frame 460 trigger telelight1 + frame 850 trigger whispers + frame 1012 trigger breakglass + } +} + +entityDef intro_pinky { + "inherit" "cin_base" + "anim" "intro" + "model" "intro_pinky" +} + +model intro_scientist { + inherit char_npc + + anim shot1 models/md5/cinematics/intro/intro_charshot1.md5anim + anim shot2 models/md5/cinematics/intro/intro_charshot2.md5anim + anim shot3 models/md5/cinematics/intro/intro_charshot3.md5anim + anim shot4 models/md5/cinematics/intro/intro_charshot4.md5anim + anim shot5 models/md5/cinematics/intro/intro_charshot5.md5anim + anim shot6 models/md5/cinematics/intro/intro_charshot6.md5anim + anim shot7 models/md5/cinematics/intro/intro_charshot7.md5anim + anim shot8 models/md5/cinematics/intro/intro_charshot8.md5anim + + anim knockback models/md5/cinematics/intro/sci_2_knockback.md5anim { + frame 26 sound_body snd_footstep + frame 38 sound_body snd_footstep + frame 61 sound_body snd_footstep + } + anim walktowindow models/md5/cinematics/intro/sci_3_walktowindow.md5anim { + frame 155 sound_body snd_footstep + frame 168 sound_body snd_footstep + frame 179 sound_body snd_footstep + frame 187 sound_body snd_footstep + frame 262 sound_body snd_footstep + frame 275 sound_body snd_footstep + frame 286 sound_body snd_footstep + frame 294 sound_body snd_footstep + } + anim killed models/md5/cinematics/intro/sci_4_killed.md5anim + + anim walk2stoplookaround models/md5/characters/npcs/walk2stoplookaround.md5anim { + frame 10 sound_body snd_footstep + frame 22 sound_body snd_footstep + frame 34 sound_body snd_footstep + frame 42 sound_body snd_footstep + } + +} + +entityDef intro_scientist { + "inherit" "char_labcoat_young" + "size" "12 12 74" + "model" "intro_scientist" + "anim" "intro" + "ik_numLegs" "0" + "skin" "skins/characters/npcs/labcoat_asian_tabletpc.skin" +} + +model intro_panel { + mesh models/md5/cinematics/intro/intro_panel.md5mesh + anim intro models/md5/cinematics/intro/intro_panel.md5anim +} + +entityDef intro_panel { + "inherit" "cin_base" + "model" "intro_panel" + "anim" "intro" +} + +model intro_meat { + mesh models/md5/cinematics/intro/intro_meat.md5mesh + anim intro models/md5/cinematics/intro/intro_meat.md5anim +} + +entityDef intro_meat { + "inherit" "cin_base" + "model" "intro_meat" + "anim" "intro" +} + diff --git a/base/def/map_maledict.def b/base/def/map_maledict.def new file mode 100644 index 00000000..c4743322 --- /dev/null +++ b/base/def/map_maledict.def @@ -0,0 +1,49 @@ +//CINEMATICS + +export fred { + options -prefix ENV_ + mesh maps/fred/maledict/worldfall.mb -dest models/md5/cinematics/maledict/world + anim maps/fred/maledict/worldfall.mb -range 1 1 -dest models/md5/cinematics/maledict/worldfallidle + anim maps/fred/maledict/worldfall.mb -dest models/md5/cinematics/maledict/worldfall + + options -prefix ENV_ + mesh maps/fred/maledict/debris1.mb -dest models/md5/cinematics/maledict/debris1 + anim maps/fred/maledict/debris1.mb -dest models/md5/cinematics/maledict/debris1 + +} + + +model maledict_world { + mesh models/md5/cinematics/maledict/world.md5mesh + anim idle models/md5/cinematics/maledict/worldfallidle.md5anim + anim fall models/md5/cinematics/maledict/worldfall.md5anim +} + +entityDef maledict_world { + "editor_color" "1 .5 .3" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 32" + "editor_copy2" "anim" + + "spawnclass" "idAnimated" + + "anim" "fall" + "model" "maledict_world" +} + +model maledict_debris1 { + mesh models/md5/cinematics/maledict/debris1.md5mesh + anim break models/md5/cinematics/maledict/debris1.md5anim +} + +entityDef maledict_debris1 { + "editor_color" "1 .5 .3" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 32" + "editor_copy2" "anim" + + "spawnclass" "idAnimated" + + "anim" "break" + "model" "maledict_debris1" +} diff --git a/base/def/map_marscity.def b/base/def/map_marscity.def new file mode 100644 index 00000000..9900ba37 --- /dev/null +++ b/base/def/map_marscity.def @@ -0,0 +1,3157 @@ +export fred { + camera maps/fred/marscity/window.mb -dest models/md5/cinematics/marscity/window_camera + camera maps/fred/marscity/hangar.mb -range 30 100 -dest models/md5/cinematics/marscity/hangar_cam_a + camera maps/fred/marscity/hangar.mb -range 101 200 -dest models/md5/cinematics/marscity/hangar_cam_b + camera maps/fred/marscity/hangar.mb -range 201 267 -dest models/md5/cinematics/marscity/hangar_cam_c + camera maps/fred/marscity/hangar.mb -range 268 389 -dest models/md5/cinematics/marscity/hangar_cam_d + camera maps/fred/marscity/hangar_characters.mb -range 360 678 -dest models/md5/cinematics/marscity/hangar_cam_e + camera maps/fred/marscity/hangar_characters.mb -range 679 766 -dest models/md5/cinematics/marscity/hangar_cam_f + camera maps/fred/marscity/hangar_characters.mb -range 767 863 -dest models/md5/cinematics/marscity/hangar_cam_g + camera maps/fred/marscity/hangar_characters.mb -range 864 937 -dest models/md5/cinematics/marscity/hangar_cam_h + camera maps/fred/marscity/hangar_characters.mb -range 938 980 -dest models/md5/cinematics/marscity/hangar_cam_i + camera maps/fred/marscity/hangar_characters.mb -range 981 1050 -dest models/md5/cinematics/marscity/hangar_cam_j + camera maps/fred/marscity/hangar_characters.mb -range 1051 1125 -dest models/md5/cinematics/marscity/hangar_cam_k + camera maps/fred/marscity/hangar_characters.mb -range 1126 1236 -dest models/md5/cinematics/marscity/hangar_cam_l + +// camera maps/fred/marscity/betrugercin1.mb -dest models/md5/cinematics/marscity/betrugercin1_cam + camera maps/fred/marscity/betrugercin1.mb -range 1 54 -dest models/md5/cinematics/marscity/betrugercin1_cam_a + camera maps/fred/marscity/betrugercin1.mb -range 55 92 -dest models/md5/cinematics/marscity/betrugercin1_cam_b + camera maps/fred/marscity/betrugercin1.mb -range 93 137 -dest models/md5/cinematics/marscity/betrugercin1_cam_c + camera maps/fred/marscity/betrugercin1.mb -range 138 1737 -dest models/md5/cinematics/marscity/betrugercin1_cam_d + + camera maps/fred/marscity/reception.mb -range 24 100 -dest models/md5/cinematics/marscity/receptioncin1_camera_a + camera maps/fred/marscity/reception.mb -range 101 145 -dest models/md5/cinematics/marscity/receptioncin1_camera_b + camera maps/fred/marscity/reception.mb -range 146 339 -dest models/md5/cinematics/marscity/receptioncin1_camera_c + camera maps/fred/marscity/reception.mb -range 340 475 -dest models/md5/cinematics/marscity/receptioncin1_camera_d + camera maps/fred/marscity/reception.mb -range 476 803 -dest models/md5/cinematics/marscity/receptioncin1_camera_e + camera maps/fred/marscity/reception.mb -range 804 820 -dest models/md5/cinematics/marscity/receptioncin1_camera_f + + + camera maps/fred/marscity/sargecin_eric.mb -dest models/md5/cinematics/marscity/sargecin_cam + + camera maps/fred/marscity/sargecin_eric.mb -range 120 176 -dest models/md5/cinematics/marscity/sargecin_cam1 + camera maps/fred/marscity/sargecin_eric.mb -range 177 380 -dest models/md5/cinematics/marscity/sargecin_cam2 + camera maps/fred/marscity/sargecin_eric.mb -range 381 555 -dest models/md5/cinematics/marscity/sargecin_cam3 + camera maps/fred/marscity/sargecin_eric.mb -range 556 700 -dest models/md5/cinematics/marscity/sargecin_cam4 + camera maps/fred/marscity/sargecin_eric.mb -range 701 814 -dest models/md5/cinematics/marscity/sargecin_cam5 + camera maps/fred/marscity/sargecin_eric.mb -range 815 920 -dest models/md5/cinematics/marscity/sargecin_cam6 + camera maps/fred/marscity/sargecin_eric.mb -range 921 960 -dest models/md5/cinematics/marscity/sargecin_cam7 + + camera maps/kevinc/marscity/IPN_News_Body.mb -range 0 4500 -dest models/md5/cinematics/marscity/ipn_news_cam + + + camera maps/eric/marscity/sci_team_request.mb -dest models/md5/cinematics/marscity/sci_team_request_cam + + options -prefix CHAIR_ + + mesh maps/fred/marscity/office1.mb -dest models/md5/environments/marscitychair1 + anim maps/fred/marscity/office1.mb -dest models/md5/environments/marscitychair1 + + options -prefix HANGAR_ + + mesh maps/fred/marscity/hangar.mb -range 30 1271 -dest models/md5/cinematics/marscity/marscityhangar + anim maps/fred/marscity/hangar.mb -range 30 1271 -dest models/md5/cinematics/marscity/marscityhangar +} + +entityDef marscity_cinematic_cam { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + + "spawnclass" "idCameraAnim" + + "anim betrugercin1" "models/md5/cinematics/marscity/betrugercin1_cam.camera" + "anim betrugercin1_a" "models/md5/cinematics/marscity/betrugercin1_cam_a.camera" + "anim betrugercin1_b" "models/md5/cinematics/marscity/betrugercin1_cam_b.camera" + "anim betrugercin1_c" "models/md5/cinematics/marscity/betrugercin1_cam_c.camera" + "anim betrugercin1_d" "models/md5/cinematics/marscity/betrugercin1_cam_d.camera" + + + "anim reception_a" "models/md5/cinematics/marscity/receptioncin1_camera_a.camera" + "anim reception_b" "models/md5/cinematics/marscity/receptioncin1_camera_b.camera" + "anim reception_c" "models/md5/cinematics/marscity/receptioncin1_camera_c.camera" + "anim reception_d" "models/md5/cinematics/marscity/receptioncin1_camera_d.camera" + "anim reception_e" "models/md5/cinematics/marscity/receptioncin1_camera_e.camera" + "anim reception_f" "models/md5/cinematics/marscity/receptioncin1_camera_f.camera" + + "anim hangar_a" "models/md5/cinematics/marscity/hangar_cam_a.camera" + "anim hangar_b" "models/md5/cinematics/marscity/hangar_cam_b.camera" + "anim hangar_c" "models/md5/cinematics/marscity/hangar_cam_c.camera" + "anim hangar_d" "models/md5/cinematics/marscity/hangar_cam_d.camera" + "anim hangar_e" "models/md5/cinematics/marscity/hangar_cam_e.camera" + + "anim hangar_f" "models/md5/cinematics/marscity/hangar_cam_f.camera" + "anim hangar_g" "models/md5/cinematics/marscity/hangar_cam_g.camera" + "anim hangar_h" "models/md5/cinematics/marscity/hangar_cam_h.camera" + "anim hangar_i" "models/md5/cinematics/marscity/hangar_cam_i.camera" + "anim hangar_j" "models/md5/cinematics/marscity/hangar_cam_j.camera" + "anim hangar_k" "models/md5/cinematics/marscity/hangar_cam_k.camera" + "anim hangar_l" "models/md5/cinematics/marscity/hangar_cam_l.camera" + + "anim window" "models/md5/cinematics/marscity/window_camera.camera" + "anim sargecin" "models/md5/cinematics/marscity/sargecin_cam.camera" + + + "anim sargecin1" "models/md5/cinematics/marscity/sargecin_cam1.camera" + "anim sargecin2" "models/md5/cinematics/marscity/sargecin_cam2.camera" + "anim sargecin3" "models/md5/cinematics/marscity/sargecin_cam3.camera" + "anim sargecin4" "models/md5/cinematics/marscity/sargecin_cam4.camera" + "anim sargecin5" "models/md5/cinematics/marscity/sargecin_cam5.camera" + "anim sargecin6" "models/md5/cinematics/marscity/sargecin_cam6.camera" + "anim sargecin7" "models/md5/cinematics/marscity/sargecin_cam7.camera" + + "anim ipn_news" "models/md5/cinematics/marscity/ipn_news_cam.camera" +} + +entityDef marscity_sci_team_request_cam { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + + "spawnclass" "idCameraAnim" + + "anim sci_team_request" "models/md5/cinematics/marscity/sci_team_request_cam" +} + +model marscity_ship { + mesh models/md5/cinematics/marscity/spaceship.md5mesh + skin skins/dropship.skin + anim window models/md5/cinematics/marscity/windowship.md5anim { + frame 1 sound_global marscity_music_intro_cutscene + frame 6 sound_global marscity_gui_intro_cutscene + frame 671 sound_global marscity_rocketintro_cutscene2 + frame 675 sound_global marscity_rocketintro_vo + frame 675 sound_global marscity_rocketintro_cutscene + frame 900 trigger tim_func_static_2337 + } + + anim bind models/md5/cinematics/marscity/spaceship_bindme.md5anim +} + +entityDef marscity_ship { + "inherit" "cin_base" + "model" "marscity_ship" + "anim" "window" + "cinematic" "1" +} + +model marscity_ship2 { + mesh models/md5/cinematics/marscity/hangarship.md5mesh + skin skins/dropship.skin + anim hangar_a models/md5/cinematics/marscity/hangarship_a.md5anim { + frame 54 trigger func_emitter_37 + frame 54 trigger func_emitter_38 + frame 54 trigger func_emitter_39 + frame 54 trigger func_emitter_99 + frame 54 trigger func_emitter_101 + frame 54 trigger func_emitter_102 + } + anim hangar_b models/md5/cinematics/marscity/hangarship_b.md5anim { + frame 1 skin skins/dropshipns.skin + } + anim hangar_c models/md5/cinematics/marscity/hangarship_c.md5anim { + frame 1 skin skins/dropshipns.skin + } + anim hangar_d models/md5/cinematics/marscity/hangarship_d.md5anim { + frame 1 call map_marscity1::move_hangar_fog + } + anim bind models/md5/cinematics/marscity/smallbind.md5anim +} + +entityDef marscity_ship2 { + "inherit" "cin_base" + "model" "marscity_ship2" + "anim" "hangar_a" + "num_anims" "4" + "anim1" "hangar_a" + "anim2" "hangar_b" + "anim3" "hangar_c" + "anim4" "hangar_d" + "cinematic" "1" +} + +model marscity_ship3 { + mesh models/md5/cinematics/marscity/spaceship.md5mesh + skin skins/dropship.skin + anim hangarend models/md5/cinematics/marscity/hangarshipbigend.md5anim { + frame 140 trigger shipinnerlight + frame 140 trigger trigger_remove_gui_block + + frame 154 trigger func_emitter_doorleft + frame 154 trigger func_emitter_doorright + frame 120 trigger func_emitter_dropshifloor + + frame 775 trigger shipbot1 + frame 775 trigger shipbot2 + frame 775 trigger shipbot3 + frame 775 trigger shipbot4 + frame 775 trigger shipbot5 + frame 775 trigger shipbot6 + frame 782 trigger shipinnerlight + frame 782 sound_global ship_liftoff + } + anim hangarloop models/md5/cinematics/marscity/hangarshipbigendloop.md5anim + anim bind models/md5/cinematics/marscity/spaceship_bindme.md5anim +} + +entityDef marscity_ship3 { + "inherit" "cin_base" + "model" "marscity_ship3" + "anim" "hangarend" + "loop_last_anim" "1" + "auto_advance" "1" + "num_anims" "2" + "anim1" "hangarend" + "anim2" "hangarloop" + "cinematic" "1" +} + +model marscity_security_goggles_pda_head { + mesh models/md5/characters/npcs/heads/goggles.md5mesh + channel eyelids ( Ruplid Rlolid Luplid Llolid ) + + anim blink models/md5/characters/npcs/heads/gogglesblink.md5anim + anim idle models/md5/characters/npcs/heads/gogglesidle.md5anim + anim stand models/md5/characters/npcs/heads/gogglesidle.md5anim + anim talk_trigger models/md5/heads/security_goggles/marscity/sec_hangar_trigger.md5anim { + frame 1 sound_voice snd_talk_trigger + } + anim talk_primary models/md5/heads/security_goggles/marscity/sec_hangar_primary.md5anim { + frame 1 sound_voice snd_talk_primary + } + anim talk_secondary1 models/md5/heads/security_goggles/marscity/sec_hangar_secondary_1.md5anim { + frame 1 sound_voice snd_talk_secondary + } + anim talk_secondary2 models/md5/heads/security_goggles/marscity/sec_hangar_secondary_2.md5anim { + frame 1 sound_voice snd_talk_secondary2 + } +} + +model marscity_security_goggles_pda { + inherit npc_security + anim stand models/md5/chars/PDA_idle_look.md5anim + anim talk_trigger models/md5/chars/PDA_talk_security_guard.md5anim + anim talk_primary models/md5/chars/PDA_talk.md5anim + anim talk_secondary1 models/md5/chars/PDA_talk.md5anim + anim talk_secondary2 models/md5/chars/PDA_talk.md5anim +} + +entityDef marscity_security_goggles_pda { + "inherit" "npc_base" + "def_head" "marscity_security_goggles_pda_head" + "model" "marscity_security_goggles_pda" + "head_joint" "Shoulders" + "talk_no_turn" "1" + "talktime" "0" + "talkradius" "384" + + "copy_joint_world eyecontrol" "" + + "ik_numLegs" "0" + "ik_footSize" "0" + + "head_focus_rate" "0.1" + + "look_joint Waist" ".1 .1 0" + "look_joint Chest" ".1 .1 0" + "look_joint Shoulders" ".2 .2 0" + "look_joint headcontrol" ".4 .4 0" + "look_joint Ruparm" "0 0 0" + "look_joint Luparm" "0 0 0" + + "talk0_blendin" "8" + "talk0_blendout" "8" + "talk1_blendin" "8" + "talk1_blendout" "8" + "talk2_blendin" "8" + "talk2_blendout" "8" + + "eye_turn_min" "-20 -30 0" + "eye_turn_max" "20 30 0" + + "def_attach" "pda_marscity_security_goggles_pda" + "def_dropDeathItem" "pda_marscity_security_goggles_pda" + "dropDeathItemJoint" "pda" + "dropDeathItemRotation" "0 0 0" + + "snd_talk_trigger" "marscity_sec_hangar_trigger" + "snd_talk_primary" "marscity_sec_hangar_primary" + "snd_talk_secondary" "marscity_sec_hangar_secondary1" + "snd_talk_secondary2" "marscity_sec_hangar_secondary2" +} + +model marscity_civilian1_head { + mesh models/md5/characters/npcs/heads/h1.md5mesh + channel eyelids ( Ruplid Rlolid Luplid Llolid ) + + anim blink models/md5/characters/npcs/heads/h1blink.md5anim + anim idle models/md5/characters/npcs/heads/h1idle.md5anim + anim stand models/md5/characters/npcs/heads/h1idle.md5anim + anim talk_trigger models/md5/heads/old/marscity/civ1_1.md5anim { + frame 1 sound_voice snd_talk_trigger + } + anim talk_primary models/md5/heads/old/marscity/civ1_2.md5anim { + frame 1 sound_voice snd_talk_primary + } + anim talk_secondary1 models/md5/heads/old/marscity/civ1_3.md5anim { + frame 1 sound_voice snd_talk_secondary + } + anim talk_secondary2 models/md5/heads/old/marscity/civ1_4.md5anim { + frame 1 sound_voice snd_talk_secondary2 + } +} + +model marscity_civilian1 { + mesh models/md5/chars/labcoat.md5mesh + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER eyecontrol chair) + + anim af_pose models/md5/chars/af_pose.md5anim + anim ik_pose models/md5/chars/af_pose.md5anim + + anim stand models/md5/chars/mc_civ1_idle.md5anim { + frame 1 event disableEyeFocus + } + anim idle models/md5/chars/mc_civ1_secondary2.md5anim { + frame 1 event disableEyeFocus + } + anim talk_trigger models/md5/chars/mc_civ1_trigger.md5anim { + frame 1 event enableEyeFocus + } + anim talk_primary models/md5/chars/mc_civ1_primary.md5anim { + frame 1 event enableEyeFocus + } + anim talk_secondary1 models/md5/chars/mc_civ1_secondary1.md5anim { + frame 1 event enableEyeFocus + } + anim talk_secondary2 models/md5/chars/mc_civ1_secondary2.md5anim { + frame 1 event disableEyeFocus + } +} + +entityDef marscity_civilian1 { + "inherit" "npc_base" + "model" "marscity_civilian1" + "scriptobject" "ai" + "nativeobject" "rvmCharacter" + + "copy_joint_world eyecontrol" "" + + "size" "32 32 38" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + "ik_numLegs" "0" + "ik_footSize" "0" + + "look_joint Waist" "0 0 0" + "look_joint Chest" "0 0 0" + "look_joint Shoulders" "0 0 0" + "look_joint headcontrol" ".7 .7 0" + "look_joint Ruparm" "0 0 0" + "look_joint Luparm" "0 0 0" + "talk_no_turn" "1" + "no_cower" "1" + "ignore_push" "1" + + "talktime" "0" + "talkradius" "384" + + "head_focus_rate" "0.1" + + "talk0_blendin" "8" + "talk0_blendout" "8" + "talk1_blendin" "8" + "talk1_blendout" "8" + "talk2_blendin" "8" + "talk2_blendout" "8" + + "def_head" "marscity_civilian1_head" + "head_joint" "Shoulders" + + "snd_talk_trigger" "marscity_civilian1_trigger" + "snd_talk_primary" "marscity_civilian1_primary" + "snd_talk_secondary" "marscity_civilian1_secondary1" + "snd_talk_secondary2" "marscity_civilian1_secondary2" +} + +model char_labcoat_black { + inherit npc_labcoat + anim pda_idle_look models/md5/chars/PDA_idle_look.md5anim + anim pda_idle models/md5/chars/PDA_idle.md5anim + anim pda_talk models/md5/chars/PDA_talk.md5anim + anim gui_operate models/md5/chars/gui_operate_daniel.md5anim + anim operate_computer6 models/md5/chars/operate_computer_loop3.md5anim +} + +entityDef char_labcoat_black { + "inherit" "npc_base" + + "copy_joint_world eyecontrol" "" + + "head_focus_rate" "0.1" + + "look_joint Waist" ".1 .1 0" + "look_joint Chest" ".1 .1 0" + "look_joint Shoulders" ".2 .2 0" + "look_joint headcontrol" ".4 .4 0" + "look_joint Ruparm" "0 0 0" + "look_joint Luparm" "0 0 0" + + "model" "char_labcoat_black" + "skin" "skins/characters/npcs/soldier_black" + "eye_verticle_offset" "0" + "def_head" "head_black" + "head_joint" "Shoulders" +} + +model marscity_sec_checkin { + inherit npc_security + + anim idle models/md5/cinematics/marscity/sec_checkin_idle.md5anim { + frame 1 event disableEyeFocus + } + anim idlenorot models/md5/cinematics/marscity/sec_checkin_idle_norot.md5anim { + frame 1 event disableEyeFocus + } + anim stand models/md5/cinematics/marscity/sec_checkin_idle.md5anim { + frame 1 event disableEyeFocus + } + + anim welcome models/md5/cinematics/marscity/sec_checkin_welcome.md5anim { + frame 1 event disableEyeFocus + frame 7 event enableEyeFocus + frame 40 event disableEyeFocus + } + anim need models/md5/cinematics/marscity/sec_checkin_need.md5anim { + frame 1 event disableEyeFocus + frame 3 event enableEyeFocus + frame 17 event disableEyeFocus + frame 35 event enableEyeFocus + frame 48 event disableEyeFocus + frame 110 event enableEyeFocus + frame 125 event disableEyeFocus + + } + anim cleared models/md5/cinematics/marscity/sec_checkin_cleared.md5anim { + frame 1 event disableEyeFocus + frame 55 event enableEyeFocus + frame 76 event disableEyeFocus + } + anim hold models/md5/cinematics/marscity/sec_checkin_holdstill.md5anim { + frame 1 event disableEyeFocus + frame 12 event enableEyeFocus + frame 53 event disableEyeFocus + } + anim waisting models/md5/cinematics/marscity/sec_checkin_waisting.md5anim { + frame 1 event disableEyeFocus + frame 10 event enableEyeFocus + frame 38 event disableEyeFocus + } + anim letmeget models/md5/cinematics/marscity/sec_checkin_letmeget.md5anim { + frame 1 event disableEyeFocus + } +} + +entityDef marscity_sec_checkin { + "inherit" "npc_base" + "model" "marscity_sec_checkin" + "anim" "idle" + "size" "" + "ik_numlegs" "0" + "look_joint Waist" "0 0 0" + "look_joint Chest" "0 0 0" + "look_joint Shoulders" "0 0 0" + "look_joint headcontrol" ".6 .6 0" + "look_joint Ruparm" "0 0 0" + "look_joint Luparm" "0 0 0" + + "def_head" "marscity_sec_checkin_head" + "head_joint" "Shoulders" + "sound_bone" "headcontrol" + + "copy_joint_world eyecontrol" "" + + "def_attach" "prop_soft_desk_chair2" + + "snd_welcome" "marscity_sec_checkin_welcome" + "snd_need" "marscity_sec_checkin_need" + "snd_hold" "marscity_sec_checkin_hold" + "snd_waisting" "marscity_sec_checkin_waisting" + "snd_letmeget" "marscity_sec_checkin_letmeget" + "snd_cleared" "marscity_sec_checkin_cleared" +} + +model marscity_sec_checkin_head { + skin skins/characters/npcs/prettyoldhead.skin + mesh models/md5/characters/npcs/heads/h2.md5mesh + channel eyelids ( Ruplid Rlolid Luplid Llolid ) + + anim idle models/md5/characters/npcs/heads/h2idle.md5anim { + } + anim stand models/md5/characters/npcs/heads/h2idle.md5anim + anim blink models/md5/characters/npcs/heads/h2blink.md5anim + anim cleared models/md5/characters/npcs/heads/marscity/checkin_cleared.md5anim { + frame 1 sound_voice snd_cleared + } + anim need models/md5/characters/npcs/heads/marscity/checkin_gonnaneed.md5anim { + frame 1 sound_voice snd_need + } + anim hold models/md5/characters/npcs/heads/marscity/checkin_holdstill.md5anim { + frame 1 sound_voice snd_hold + } + anim letmeget models/md5/characters/npcs/heads/marscity/checkin_letmeget.md5anim { + frame 1 sound_voice snd_letmeget + } + anim waisting models/md5/characters/npcs/heads/marscity/checkin_waisting.md5anim { + frame 1 sound_voice snd_waisting + } + anim welcome models/md5/characters/npcs/heads/marscity/checkin_welcome.md5anim { + frame 1 sound_voice snd_welcome + } +} + +model char_security_goggles_pistol { + inherit npc_security +} + +entityDef char_security_goggles_pistol { + "inherit" "npc_base" + "model" "char_security_goggles_pistol" + "def_head" "head_security_goggles" + "head_joint" "Shoulders" + + "copy_joint_world eyecontrol" "" + + "def_attach" "prop_pistol" + "def_dropDeathItem" "moveable_item_pistol" + "dropDeathItemJoint" "pistol" +} + +model marscity_suit_young_chair { + inherit npc_suit + + anim stand models/md5/chars/operate_computer_sitting_higher.md5anim + anim idle models/md5/chars/operate_computer_sitting_higher.md5anim + + anim cower models/md5/chars/operate_computer_sitting_higher.md5anim + anim turn_left models/md5/chars/operate_computer_sitting_higher.md5anim + anim turn_right models/md5/chars/operate_computer_sitting_higher.md5anim +} + +entityDef marscity_suit_young_chair { + "inherit" "npc_base" + "model" "marscity_suit_young_chair" + "def_head" "head_young" + "head_joint" "Shoulders" + "ignore_push" "1" + "anim" "idle" + "ik_numLegs" "0" + + "copy_joint_world eyecontrol" "" + + "def_attach" "prop_soft_desk_chair2" + "def_dropDeathItem" "moveable_chair2" + "dropDeathItemJoint" "chair" + + "dropDeathItemRotation" "-90 0 0" + + "talk_no_turn" "1" + "talktime" "0" + + "talk_time" "0" + "talk0_blendin" "8" + "talk0_blendout" "8" + "talk1_blendin" "8" + "talk1_blendout" "8" + "talk2_blendin" "8" + "talk2_blendout" "8" + + "look_joint Waist" "0.2 0 0" + "look_joint Chest" "0.2 0 0" + "look_joint Shoulders" "0.2 0 0" + "look_joint headcontrol" "0.4 0.5 0" + "look_joint neckcontrol" "0.4 0.5 0" + "look_joint Ruparm" "-0.5 0 0" + "look_joint Luparm" "-0.5 0 0" + "look_min" "-90 -80 0" + "look_max" "25 80 0" + + "eye_turn_min" "-20 -30 0" + "eye_turn_max" "20 30 0" + + "eye_verticle_offset" "20" + "eye_horizontal_offset" "-8" + "eye_focus_rate" "0.5" + "head_focus_rate" "0.08" +} + +model marscity_labcoat_black { + inherit npc_labcoat + anim pda_idle_look models/md5/chars/PDA_idle_look.md5anim + anim pda_idle models/md5/chars/PDA_idle.md5anim + anim pda_talk models/md5/chars/PDA_talk.md5anim + anim gui_operate models/md5/chars/gui_operate_daniel.md5anim + anim talk_primary models/md5/chars/PDA_talk.md5anim + anim talk_secondary1 models/md5/chars/PDA_talk.md5anim + anim talk_secondary2 models/md5/chars/PDA_talk.md5anim +} + +entityDef marscity_labcoat_black { + "inherit" "npc_base" + "model" "marscity_labcoat_black" + "skin" "skins/characters/npcs/soldier_black" + "eye_verticle_offset" "0" + "def_head" "head_black" + "head_joint" "Shoulders" + "talk_no_turn" "1" + "talktime" ".5" + "head_focus_rate" "0.1" + + "copy_joint_world eyecontrol" "" + + "def_attach" "pda_marscity_labcoat_black" + "def_dropDeathItem" "pda_marscity_labcoat_black" + "dropDeathItemJoint" "pda" + "dropDeathItemRotation" "0 0 0" + + "ik_numLegs" "0" + "ik_footSize" "0" +} + +model marscity_char_maint_asian_pda_head { + //inherit head_asian_young + + skin skins/characters/npcs/head_asian_young.skin + mesh models/md5/characters/npcs/heads/h5.md5mesh + channel eyelids ( Ruplid Rlolid Luplid Llolid ) + + anim idle models/md5/characters/npcs/heads/h5idle.md5anim + anim stand models/md5/characters/npcs/heads/h5idle.md5anim + //anim blink models/md5/characters/npcs/heads/h5blink.md5anim + anim dead models/md5/characters/npcs/heads/h5death.md5anim + + anim talk_primary models/md5/heads/asian_young/marscity/maint_tech_hallway1.md5anim { + frame 1 sound_voice snd_talk_primary + } + anim talk_secondary1 models/md5/heads/asian_young/marscity/maint_tech_hallway2.md5anim { + frame 1 sound_voice snd_talk_secondary + } + anim talk_secondary2 models/md5/heads/asian_young/marscity/maint_tech_hallway3.md5anim { + frame 1 sound_voice snd_talk_secondary2 + } + anim talk_excuseme models/md5/heads/asian_young/marscity/maint_tech_hallway4.md5anim { + frame 1 sound_voice snd_talk_excuse + } +} + +model marscity_char_maint_asian_pda { + inherit npc_jumpsuit + anim stand models/md5/chars/PDA_idle.md5anim { + frame 1 event disableEyeFocus + } + anim pda_idle_look models/md5/chars/PDA_idle.md5anim { + frame 1 event disableEyeFocus + } + anim talk_excuseme models/md5/chars/PDA_talk.md5anim { + frame 1 event enableEyeFocus + } + anim talk_primary models/md5/chars/PDA_talk.md5anim { + frame 1 event enableEyeFocus + } + anim talk_secondary1 models/md5/chars/PDA_talk.md5anim { + frame 1 event enableEyeFocus + } + anim talk_secondary2 models/md5/chars/PDA_talk.md5anim { + frame 1 event enableEyeFocus + } +} + +entityDef marscity_char_maint_asian_pda { + "inherit" "npc_base" + "def_head" "marscity_char_maint_asian_pda_head" + "head_joint" "Shoulders" + "model" "marscity_char_maint_asian_pda" + "ik_numLegs" "0" + "look_joint Waist" ".1 .1 0" + "look_joint Chest" ".1 .1 0" + "look_joint Shoulders" ".2 .2 0" + "look_joint headcontrol" ".4 .4 0" + "look_joint Ruparm" "0 0 0" + "look_joint Luparm" "0 0 0" + "talk_no_turn" "1" + "talktime" "1" + "talkradius" "384" + + "head_focus_rate" "0.1" + + "copy_joint_world eyecontrol" "" + + "talk0_blendin" "8" + "talk0_blendout" "8" + "talk1_blendin" "8" + "talk1_blendout" "8" + "talk2_blendin" "8" + "talk2_blendout" "8" + + "def_attach" "pda_marscity_char_maint_asian_pda" + "def_dropDeathItem" "pda_marscity_char_maint_asian_pda" + "dropDeathItemJoint" "pda" + "dropDeathItemRotation" "0 0 0" + + "snd_talk_excuse" "marscity_maint_tech_hallway_excuse" + "snd_talk_primary" "marscity_maint_tech_hallway_primary" + "snd_talk_secondary" "marscity_maint_tech_hallway_secondary1" + "snd_talk_secondary2" "marscity_maint_tech_hallway_secondary2" + "snd_talk_idle" "marscity_maint_tech_hallway_idle1" + "snd_talk_idle2" "marscity_maint_tech_hallway_idle2" +} + +model marscity_security_machinegun { + inherit npc_security + + anim walk models/md5/chars/walk_machinegun.md5anim { + frame 3 sound_body snd_footstep + frame 17 sound_body snd_footstep + frame 32 sound_body snd_footstep + frame 46 sound_body snd_footstep + } + anim stand models/md5/chars/p90_stand.md5anim + anim idle models/md5/chars/p90_stand.md5anim + anim talk_trigger models/md5/chars/p90_talk.md5anim { + frame 1 sound_voice snd_talk_trigger + } + anim talk_primary models/md5/chars/p90_talk.md5anim { + frame 1 sound_voice snd_talk_primary + } + anim talk_secondary1 models/md5/chars/p90_talk.md5anim { + frame 1 sound_voice snd_talk_secondary + } + anim talk_secondary2 models/md5/chars/p90_talk.md5anim { + frame 1 sound_voice snd_talk_secondary2 + } +} + +entityDef marscity_security_machinegun { + "inherit" "npc_base" + "model" "marscity_security_machinegun" + "def_head" "head_security_helmet" + "head_joint" "Shoulders" + + "copy_joint_world eyecontrol" "" + + "talktime" ".6" + "talkradius" "420" + + "def_attach" "prop_machinegun" + + "ik_numLegs" "0" + "snd_talk_trigger" "marscity_security_guard_admin_trigger" + "snd_talk_primary" "marscity_security_guard_admin_primary" + "snd_talk_secondary" "marscity_security_guard_admin_secondary1" + "snd_talk_secondary2" "marscity_security_guard_admin_secondary2" +} + +model marscity_civilian_bathroom_head { + inherit head_black + + anim talk_primary models/md5/heads/black/marscity/marine_bathroom_1.md5anim { + frame 1 sound_voice snd_talk_primary + } + anim talk_secondary1 models/md5/heads/black/marscity/marine_bathroom_2.md5anim { + frame 1 sound_voice snd_talk_secondary + } + anim talk_secondary2 models/md5/heads/black/marscity/marine_bathroom_3.md5anim { + frame 1 sound_voice snd_talk_secondary2 + } + anim talk_excuseme models/md5/heads/black/marscity/marine_bathroom_4.md5anim { + frame 1 sound_voice snd_talk_excuseme + } +} + +model marscity_civilian_bathroom { + inherit npc_tshirt + + anim operate_computer5 models/md5/chars/stand.md5anim + anim stand models/md5/chars/stand.md5anim + anim talk_primary models/md5/chars/stand_talk.md5anim + anim talk_secondary1 models/md5/chars/stand_talk.md5anim + anim talk_secondary2 models/md5/chars/stand_talk.md5anim +} + +entityDef marscity_civilian_bathroom { + "inherit" "npc_base" + "model" "marscity_civilian_bathroom" + "def_head" "marscity_civilian_bathroom_head" + "skin" "skins/characters/npcs/soldier_black" + "head_joint" "Shoulders" + "talk_no_turn" "1" + "talktime" ".5" + "talkradius" "384" + + "copy_joint_world eyecontrol" "" + + "head_focus_rate" "0.1" + + "look_joint Waist" ".1 .1 0" + "look_joint Chest" ".1 .1 0" + "look_joint Shoulders" ".2 .2 0" + "look_joint headcontrol" ".4 .4 0" + "look_joint Ruparm" "-0.4 0 0" + "look_joint Luparm" "-0.4 0 0" + + "talk0_blendin" "8" + "talk0_blendout" "8" + "talk1_blendin" "8" + "talk1_blendout" "8" + "talk2_blendin" "8" + "talk2_blendout" "8" + + "snd_talk_primary" "marscity_marine_bathroom_primary" + "snd_talk_secondary" "marscity_marine_bathroom_secondary1" + "snd_talk_secondary2" "marscity_marine_bathroom_secondary2" + "snd_talk_excuseme" "marscity_marine_bathroom_excuseme" +} + +model marscity_sec_window { + inherit npc_tshirt + + anim window models/md5/cinematics/marscity/sec_window.md5anim { + frame 685 sound_voice marscity_cin_marine1_1 + frame 895 sound_voice marscity_cin_marine1_2 + } +} +entityDef marscity_sec_window { + "inherit" "npc_base" + "model" "marscity_sec_window" + "anim" "window" + "size" "12 12 74" + "ik_numlegs" "0" + "def_attach" "prop_soft_desk_chair2" + + "copy_joint_world eyecontrol" "" + + "def_head" "marscity_sec_window2_head" + "head_joint" "Shoulders" + "sound_bone" "headcontrol" + "cinematic" "1" +} + +model marscity_sec_window2_head { + inherit head_young + + anim talk_primary models/md5/heads/young/marscity/marine6_hq_1.md5anim { + frame 1 sound_voice snd_talk_primary + } + anim talk_secondary1 models/md5/heads/young/marscity/marine6_hq_2.md5anim { + frame 1 sound_voice snd_talk_secondary + } + anim talk_secondary2 models/md5/heads/young/marscity/marine6_hq_3.md5anim { + frame 1 sound_voice snd_talk_secondary2 + } + anim window models/md5/characters/npcs/heads/h2mc1window.md5anim +} + +model marscity_sec_window2 { + inherit npc_tshirt + + anim af_pose models/md5/chars/af_pose.md5anim + anim ik_pose models/md5/chars/af_pose.md5anim + anim stand models/md5/chars/operate_computer_sitting.md5anim { + frame 2 sound_body typing + frame 11 sound_body2 typing + frame 18 sound_body typing + frame 28 sound_body2 typing + frame 31 sound_body typing + frame 34 sound_body2 typing + frame 37 sound_body typing + frame 41 sound_body2 typing + frame 44 sound_body typing + frame 75 sound_body2 typing + frame 79 sound_body typing + frame 82 sound_body2 typing + frame 88 sound_body typing + frame 93 sound_body2 typing + frame 95 sound_body typing + frame 98 sound_body2 typing + frame 103 sound_body typing + frame 105 sound_body2 typing + frame 133 sound_body typing + frame 136 sound_body2 typing + frame 143 sound_body typing + frame 146 sound_body2 typing + frame 149 sound_body typing + frame 153 sound_body2 typing + frame 156 sound_body typing + frame 159 sound_body2 typing + frame 169 sound_body typing + frame 173 sound_body2 typing + frame 175 sound_body typing + } + anim idle models/md5/chars/operate_computer_sitting.md5anim { + frame 2 sound_body typing + frame 11 sound_body2 typing + frame 18 sound_body typing + frame 28 sound_body2 typing + frame 31 sound_body typing + frame 34 sound_body2 typing + frame 37 sound_body typing + frame 41 sound_body2 typing + frame 44 sound_body typing + frame 75 sound_body2 typing + frame 79 sound_body typing + frame 82 sound_body2 typing + frame 88 sound_body typing + frame 93 sound_body2 typing + frame 95 sound_body typing + frame 98 sound_body2 typing + frame 103 sound_body typing + frame 105 sound_body2 typing + frame 133 sound_body typing + frame 136 sound_body2 typing + frame 143 sound_body typing + frame 146 sound_body2 typing + frame 149 sound_body typing + frame 153 sound_body2 typing + frame 156 sound_body typing + frame 159 sound_body2 typing + frame 169 sound_body typing + frame 173 sound_body2 typing + frame 175 sound_body typing + } + anim cower models/md5/chars/operate_computer_sitting.md5anim { + frame 2 sound_body typing + frame 11 sound_body2 typing + frame 18 sound_body typing + frame 28 sound_body2 typing + frame 31 sound_body typing + frame 34 sound_body2 typing + frame 37 sound_body typing + frame 41 sound_body2 typing + frame 44 sound_body typing + frame 75 sound_body2 typing + frame 79 sound_body typing + frame 82 sound_body2 typing + frame 88 sound_body typing + frame 93 sound_body2 typing + frame 95 sound_body typing + frame 98 sound_body2 typing + frame 103 sound_body typing + frame 105 sound_body2 typing + frame 133 sound_body typing + frame 136 sound_body2 typing + frame 143 sound_body typing + frame 146 sound_body2 typing + frame 149 sound_body typing + frame 153 sound_body2 typing + frame 156 sound_body typing + frame 159 sound_body2 typing + frame 169 sound_body typing + frame 173 sound_body2 typing + frame 175 sound_body typing + } + anim turn_left models/md5/chars/operate_computer_sitting.md5anim + anim turn_right models/md5/chars/operate_computer_sitting.md5anim + + anim talk_primary models/md5/chars/operate_computer_talk.md5anim + anim talk_secondary1 models/md5/chars/operate_computer_talk.md5anim + anim talk_secondary2 models/md5/chars/operate_computer_talk.md5anim +} + +entityDef marscity_sec_window2 { + "inherit" "npc_base" + "model" "marscity_sec_window2" + "anim" "idle" + + "def_head" "marscity_sec_window2_head" + "head_joint" "Shoulders" + "ignore_push" "1" + "ik_numlegs" "0" + "def_attach" "prop_soft_desk_chair2" + + "copy_joint_world eyecontrol" "" + + "def_dropDeathItem" "moveable_chair2" + "dropDeathItemJoint" "chair" + "dropDeathItemRotation" "-90 0 0" + + "talk_no_turn" "1" + "talktime" "0" + + "talk_time" "0" + "talk0_blendin" "8" + "talk0_blendout" "8" + "talk1_blendin" "8" + "talk1_blendout" "8" + "talk2_blendin" "8" + "talk2_blendout" "8" + + "look_joint Waist" "0 0 0" + "look_joint Chest" "0 0 0" + "look_joint Shoulders" "0.2 0.2 0" + "look_joint headcontrol" "-0.1 -0.1 0" + "look_joint neckcontrol" "0.8 0.8 0" + "look_joint Ruparm" "0 0 0" + "look_joint Luparm" "0 0 0" + "look_min" "-90 -80 0" + "look_max" "25 80 0" + + "eye_turn_min" "-20 -30 0" + "eye_turn_max" "20 30 0" + + "snd_talk_primary" "marscity_marine6_hq_primary" + "snd_talk_secondary" "marscity_marine6_hq_secondary1" + "snd_talk_secondary2" "marscity_marine6_hq_secondary2" +} + +model marscity_betruger_head { + mesh models/md5/heads/betruger/betruger.md5mesh + channel eyelids ( Ruplid Rlolid Luplid Llolid ) + + anim idle models/md5/heads/betruger/betrugeridle.md5anim + anim stand models/md5/heads/betruger/betrugeridle.md5anim + anim betrugercin1 models/md5/heads/betruger/marscity/betspeech.md5anim + anim betrugercin_a models/md5/heads/betruger/marscity/betspeech_a.md5anim + anim betrugercin_b models/md5/heads/betruger/marscity/betspeech_b.md5anim + anim betrugercin_c models/md5/heads/betruger/marscity/betspeech_c.md5anim { + frame 3 sound_voice marscity_speech_bertruger1 + } + anim betrugercin_d models/md5/heads/betruger/marscity/betspeech_d.md5anim { + frame 192 sound_voice marscity_speech_bertruger2 + frame 752 sound_voice marscity_speech_bertruger3 + frame 1292 sound_voice marscity_speech_bertruger4 + } +} + +model marscity_cinematic_betruger { + inherit npc_labcoat + + anim betrugercin_a models/md5/chars/betruger/marscity/meeting_a.md5anim { + frame 1 event disableEyeFocus + } + anim betrugercin_b models/md5/chars/betruger/marscity/meeting_b.md5anim { + frame 1 event disableEyeFocus + } + anim betrugercin_c models/md5/chars/betruger/marscity/meeting_c.md5anim { + frame 1 event disableEyeFocus + } + anim betrugercin_d models/md5/chars/betruger/marscity/meeting_d.md5anim { + frame 1 event disableEyeFocus + } + anim window models/md5/chars/betruger/marscity/window.md5anim { + frame 760 sound_voice marscity_cin_bertruger1_1 + } +} + +entityDef marscity_cinematic_betruger { + "inherit" "npc_base" + "size" "" + "model" "marscity_cinematic_betruger" + "anim" "betrugercin_a" + "sound_bone" "headcontrol" + "ik_numlegs" "0" + "def_head" "marscity_betruger_head" + "head_joint" "Shoulders" + "cinematic" "1" +} + +entityDef marscity_meeting_betruger { + "inherit" "npc_base" + "size" "" + "model" "marscity_cinematic_betruger" + "anim" "betrugercin_a" + "sound_bone" "headcontrol" + "ik_numlegs" "0" + "def_head" "marscity_betruger_head" + "head_joint" "Shoulders" + "num_cinematics" "4" + "anim1" "betrugercin_a" + "anim2" "betrugercin_b" + "anim3" "betrugercin_c" + "anim4" "betrugercin_d" + + "cinematic" "1" +} + +model marscity_head_swann { + skin skins/characters/npcs/swannglasses.skin + mesh models/md5/heads/swann/swann.md5mesh + channel eyelids ( Ruplid Rlolid Luplid Llolid ) + + anim stand models/md5/heads/swann/swannidle.md5anim + anim idle models/md5/heads/swann/swannidle.md5anim + anim betrugercin_a models/md5/heads/swann/marscity/swannhead_speech_a.md5anim + anim betrugercin_b models/md5/heads/swann/marscity/swannhead_speech_b.md5anim + anim betrugercin_c models/md5/heads/swann/marscity/swannhead_speech_c.md5anim + anim betrugercin_d models/md5/heads/swann/marscity/swannhead_speech_d.md5anim + anim hangar_a models/md5/heads/swann/marscity/mc_hangar_a.md5anim + anim hangar_b models/md5/heads/swann/marscity/mc_hangar_b.md5anim + anim hangar_c models/md5/heads/swann/marscity/mc_hangar_c.md5anim + anim hangar_d models/md5/heads/swann/marscity/mc_hangar_d.md5anim + anim hangar_e models/md5/heads/swann/marscity/mc_hangar_e.md5anim + anim hangar_f models/md5/heads/swann/marscity/mc_hangar_f.md5anim +} + +model marscity_cinematic_swann { + inherit npc_suit + + anim betrugercin_a models/md5/chars/swann/marscity/meeting_a.md5anim { + frame 1 event disableEyeFocus + frame 1 sound_voice marscity_speech_swann1 + + } + anim betrugercin_b models/md5/chars/swann/marscity/meeting_b.md5anim { + frame 1 event disableEyeFocus + } + anim betrugercin_c models/md5/chars/swann/marscity/meeting_c.md5anim { + frame 1 event disableEyeFocus + } + anim betrugercin_d models/md5/chars/swann/marscity/meeting_d.md5anim { + frame 1 event disableEyeFocus + frame 79 sound_voice marscity_speech_swann2 + frame 537 sound_voice marscity_speech_swann3 + frame 1042 sound_voice marscity_speech_swann4 + frame 1552 sound_voice marscity_speech_swann5 + } +} + +entityDef marscity_cinematic_swann { + "inherit" "npc_base" + "size" "" + "model" "marscity_cinematic_swann" + "anim" "betrugercin_a" + "sound_bone" "headcontrol" + "ik_numlegs" "0" + "def_head" "marscity_head_swann" + "head_joint" "Shoulders" + "num_cinematics" "4" + "anim1" "betrugercin_a" + "anim2" "betrugercin_b" + "anim3" "betrugercin_c" + "anim4" "betrugercin_d" + + "cinematic" "1" +} + +model marscity_hangar_swann { + inherit npc_suit + + anim hangar_a models/md5/chars/swann/marscity/hangar_a.md5anim { + frame 1 event disableEyeFocus + frame 250 sound_voice marscity_cin_swann1_1 + } + anim hangar_b models/md5/chars/swann/marscity/hangar_b.md5anim { + frame 1 event disableEyeFocus + frame 41 sound_voice marscity_cin_swann1_2 + } + + anim hangar_c models/md5/chars/swann/marscity/hangar_c.md5anim { + frame 1 event disableEyeFocus + } + + anim hangar_d models/md5/chars/swann/marscity/hangar_d.md5anim { + frame 1 event disableEyeFocus + } + + anim hangar_e models/md5/chars/swann/marscity/hangar_e.md5anim { + frame 1 event disableEyeFocus + } + + anim hangar_f models/md5/chars/swann/marscity/hangar_f.md5anim { + frame 1 event disableEyeFocus + frame 1 sound_voice marscity_cin_swann1_3 + } +} + +entityDef marscity_hangar_swann { + "inherit" "npc_base" + "size" "0 0 0" + "model" "marscity_hangar_swann" + "anim" "hangar_a" + "sound_bone" "headcontrol" + "ik_numlegs" "0" + "def_head" "marscity_head_swann" + "head_joint" "Shoulders" + + "num_cinematics" "6" + "anim1" "hangar_a" + "anim2" "hangar_b" + "anim3" "hangar_c" + "anim4" "hangar_d" + "anim5" "hangar_e" + "anim6" "hangar_f" + "cinematic" "1" +} + +model marscity_walking_swann { + inherit npc_suit +} + +entityDef marscity_walking_swann { + "inherit" "npc_base" + "size" "" + "model" "marscity_walking_swann" + "eye_verticle_offset" "0" + "def_head" "head_swann" + "head_joint" "Shoulders" +} + +model marscity_head_campbell { + inherit head_campbell + + anim hangar_a models/md5/heads/campbell/marscity/mc_hangar_a.md5anim + anim hangar_b models/md5/heads/campbell/marscity/mc_hangar_b.md5anim + anim hangar_c models/md5/heads/campbell/marscity/mc_hangar_c.md5anim + anim hangar_d models/md5/heads/campbell/marscity/mc_hangar_d.md5anim + anim hangar_e models/md5/heads/campbell/marscity/mc_hangar_e.md5anim + anim hangar_f models/md5/heads/campbell/marscity/mc_hangar_f.md5anim +} + +model marscity_cinematic_campbell { + inherit char_campbell_bfgcase + + anim betrugercin_a models/md5/chars/campbell/marscity/betrugercin1_campbell_a.md5anim + anim betrugercin_b models/md5/chars/campbell/marscity/betrugercin1_campbell_b.md5anim + anim betrugercin_c models/md5/chars/campbell/marscity/betrugercin1_campbell_c.md5anim + anim betrugercin_d models/md5/chars/campbell/marscity/betrugercin1_campbell_d.md5anim +} + +entityDef marscity_cinematic_campbell { + "inherit" "char_campbell_bfgcase" + "model" "marscity_cinematic_campbell" + "sound_bone" "headcontrol" + "ik_numlegs" "0" + "def_head" "marscity_head_campbell" + "head_joint" "Shoulders" + "size" "" + + "num_cinematics" "4" + "anim1" "betrugercin_a" + "anim2" "betrugercin_b" + "anim3" "betrugercin_c" + "anim4" "betrugercin_d" + + "cinematic" "1" +} + +model marscity_hangar_campbell { + inherit char_campbell_bfgcase + + anim hangar_a models/md5/chars/campbell/marscity/hangar_campbell_a.md5anim { + frame 1 event disableEyeFocus + } + anim hangar_b models/md5/chars/campbell/marscity/hangar_campbell_b.md5anim { + frame 1 event disableEyeFocus + frame 4 sound_voice marscity_cin_campbell1_1 + } + anim hangar_c models/md5/chars/campbell/marscity/hangar_campbell_c.md5anim { + frame 1 event disableEyeFocus + frame 93 sound_voice marscity_cin_campbell1_2 + } + anim hangar_d models/md5/chars/campbell/marscity/hangar_campbell_d.md5anim { + frame 1 event disableEyeFocus + } + anim hangar_e models/md5/chars/campbell/marscity/hangar_campbell_e.md5anim { + frame 1 event disableEyeFocus + } + anim hangar_f models/md5/chars/campbell/marscity/hangar_campbell_f.md5anim { + frame 1 event disableEyeFocus + frame 114 sound_voice marscity_cin_campbell1_3 + } +} + +entityDef marscity_hangar_campbell { + "inherit" "char_campbell_bfgcase" + "model" "marscity_hangar_campbell" + "sound_bone" "headcontrol" + "ik_numlegs" "0" + "def_head" "marscity_head_campbell" + "head_joint" "Shoulders" + "size" "0 0 0" + + "num_cinematics" "6" + "anim1" "hangar_a" + "anim2" "hangar_b" + "anim3" "hangar_c" + "anim4" "hangar_d" + "anim5" "hangar_e" + "anim6" "hangar_f" + "cinematic" "1" +} + +model marscity_head_sarge { + mesh models/md5/heads/sarge/sarge.md5mesh + anim stand models/md5/heads/sarge/sargeidle.md5anim + + anim sargecin1 models/md5/heads/sarge/marscity/sargecin_sargehead1.md5anim + anim sargecin2 models/md5/heads/sarge/marscity/sargecin_sargehead2.md5anim + anim sargecin3 models/md5/heads/sarge/marscity/sargecin_sargehead3.md5anim + anim sargecin4 models/md5/heads/sarge/marscity/sargecin_sargehead4.md5anim + anim sargecin5 models/md5/heads/sarge/marscity/sargecin_sargehead5.md5anim + anim sargecin6 models/md5/heads/sarge/marscity/sargecin_sargehead6.md5anim + anim sargecin7 models/md5/heads/sarge/marscity/sargecin_sargehead7.md5anim +} + +model marscity_cinematic_sarge { + inherit npc_marine + + anim sargecin1 models/md5/chars/sarge/marscity/mission1.md5anim { + //frame 1 aviGame sargecin + frame 1 event disableEyeFocus + frame 1 sound_global marscity_cin_sarge_gui + frame 7 sound_voice snd_sargecin1 + } + anim sargecin2 models/md5/chars/sarge/marscity/mission2.md5anim { + frame 1 event disableEyeFocus + frame 63 sound_voice snd_sargecin2 + frame 197 sound_voice snd_sargecin3 + } + anim sargecin3 models/md5/chars/sarge/marscity/mission3.md5anim { + frame 1 event disableEyeFocus + frame 94 sound_voice snd_sargecin4 + frame 174 sound_voice snd_sargecin5 + } + anim sargecin4 models/md5/chars/sarge/marscity/mission4.md5anim { + frame 1 event disableEyeFocus + } + anim sargecin5 models/md5/chars/sarge/marscity/mission5.md5anim { + frame 1 event disableEyeFocus + frame 1 trigger sentrytrig + frame 1 trigger trigger_relay_sarge_light + frame 8 sound_voice snd_sargecin6 + frame 111 sound_voice snd_sargecin7 + } + anim sargecin6 models/md5/chars/sarge/marscity/mission6.md5anim { + frame 1 event disableEyeFocus + } + anim sargecin7 models/md5/chars/sarge/marscity/mission7.md5anim { + frame 1 event disableEyeFocus + //frame 39 aviGame + } +} + +entityDef marscity_cinematic_sarge { + "inherit" "npc_base" + "model" "marscity_cinematic_sarge" + "size" "12 12 74" + "anim" "sargecin" + "sound_bone" "headcontrol" + "ik_numlegs" "0" + + "def_head" "marscity_head_sarge" + "head_joint" "Shoulders" + + "num_cinematics" "7" + "anim1" "sargecin1" + "anim2" "sargecin2" + "anim3" "sargecin3" + "anim4" "sargecin4" + "anim5" "sargecin5" + "anim6" "sargecin6" + "anim7" "sargecin7" + + "snd_sargecin1" "marscity_cin_sarge1" + "snd_sargecin2" "marscity_cin_sarge2" + "snd_sargecin3" "marscity_cin_sarge3" + "snd_sargecin4" "marscity_cin_sarge4" + "snd_sargecin5" "marscity_cin_sarge5" + "snd_sargecin6" "marscity_cin_sarge6" + "snd_sargecin7" "marscity_cin_sarge7" + + "cinematic" "1" +} + +model marscity_cinematic_head_sarge2 { + mesh models/md5/heads/sarge/sarge.md5mesh + anim stand models/md5/heads/sarge/sargeidle.md5anim + + anim sargecin_start models/md5/heads/sarge/marscity/sargecin_missionloop.md5anim + + anim wait_loop models/md5/heads/sarge/marscity/sargecin_wait_loop.md5anim + + anim talk_primary models/md5/heads/sarge/marscity/mc_sarge_primary.md5anim { + frame 1 sound_voice marscity_sarge_primary + } + anim talk_secondary1 models/md5/heads/sarge/marscity/mc_sarge_secondary.md5anim { + frame 1 sound_voice marscity_sarge_secondary + } + anim talk_secondary2 models/md5/heads/sarge/marscity/mc_sarge_secondary2.md5anim { + frame 1 sound_voice marscity_sarge_secondary2 + } +} + +model marscity_cinematic_sarge2 { + inherit marscity_cinematic_sarge + + anim stand models/md5/chars/sarge/marscity/mc_sarge_wait_loop.md5anim { + frame 1 event disableEyeFocus + frame 500 sound_voice marscity_sarge_cough + } + + anim sargecin_start models/md5/chars/sarge/marscity/missionloop.md5anim + + anim wait models/md5/chars/sarge/marscity/mc_sarge_wait.md5anim + anim wait_loop models/md5/chars/sarge/marscity/mc_sarge_wait_loop.md5anim { + frame 1 event disableEyeFocus + frame 500 sound_voice marscity_sarge_cough + } + + anim talk_primary models/md5/chars/sarge/marscity/mc_sarge_primary.md5anim { + frame 1 event enableEyeFocus + } + anim talk_secondary1 models/md5/chars/sarge/marscity/mc_sarge_secondary.md5anim { + frame 1 event enableEyeFocus + } + anim talk_secondary2 models/md5/chars/sarge/marscity/mc_sarge_secondary2.md5anim { + frame 1 event enableEyeFocus + } +} + +entityDef marscity_cinematic_sarge2 { + "inherit" "npc_base" + "model" "marscity_cinematic_sarge2" + "size" "12 12 74" + + "follow_once" "1" + "def_head" "marscity_cinematic_head_sarge2" + "head_joint" "Shoulders" + "sound_bone" "Chest" + "talktime" "1" + "bone_focus" "headcontrol" + "bone_leftEye" "Leyeaim" + "bone_rightEye" "Reyeaim" + "bone_orientation" "Body2" + "ik_numLegs" "0" + "talk_no_turn" "1" + "blink_min" "2.5" + "blink_max" "8.0" + + "look_min" "-90 -85 0" + "look_max" "25 85 0" + "look_joint Waist" "0 0 0" + "look_joint Chest" ".1 .12 0" + "look_joint Shoulders" ".2 .23 0" + "look_joint headcontrol" ".7 .65 0" + "look_joint Ruparm" "0 0 0" + "look_joint Luparm" "0 0 0" + + "eye_turn_min" "-20 -30 0" + "eye_turn_max" "20 30 0" + "eye_verticle_offset" "0" + "eye_horizontal_offset" "3" + + "eye_focus_rate" "0.005" + "head_focus_rate" "0.07" +} + +model marscity_hangar { + mesh models/md5/cinematics/marscity/marscityhangar.md5mesh + anim hangar models/md5/cinematics/marscity/marscityhangar.md5anim +} + +entityDef marscity_hangar { + "inherit" "cin_base" + "model" "marscity_hangar" + "anim" "hangar" + "cinematic" "1" +} + +model marscity_civilian2 { + inherit npc_suit + + anim talk_primary models/md5/chars/stand_talk.md5anim { + prevent_idle_override + frame 1 event enableEyeFocus + frame 1 sound_voice marscity_maint1_primary + } +} + +entityDef marscity_civilian2 { + "inherit" "npc_base" + "copy_joint_world eyecontrol" "" + "model" "marscity_civilian2" + "snd_blocked" "marscity_maint1_blocked" + "snd_talk_secondary" "marscity_maint1_secondary" +} + +model marscity_receptionist_head { + mesh models/md5/heads/head02young/h2_cinematic.md5mesh + channel eyelids ( Ruplid Rlolid Luplid Llolid ) + + anim idle models/md5/heads/head02young/marscity/reception_idle.md5anim + anim stand models/md5/heads/head02young/marscity/reception_idle.md5anim + anim blink models/md5/heads/head02young/marscity/reception_idle.md5anim + anim typing models/md5/heads/head02young/marscity/reception_idle.md5anim + anim typing_end models/md5/heads/head02young/marscity/reception_idle.md5anim + anim talk_primary models/md5/heads/head02young/marscity/reception_primary.md5anim { + frame 5 sound_voice marscity_receptionist_primary + } + anim talk_secondary1 models/md5/heads/head02young/marscity/reception_secondary1.md5anim { + frame 1 sound_voice marscity_receptionist_secondary1 + } + anim talk_secondary2 models/md5/heads/head02young/marscity/reception_secondary2.md5anim { + frame 1 sound_voice marscity_receptionist_secondary2 + } + + anim reception_a models/md5/heads/head02young/marscity/reception_a.md5anim { + frame 31 sound_voice marscity_receptionist_trigger_1 + frame 60 sound_voice marscity_receptionist_trigger_2 + } + anim reception_b models/md5/heads/head02young/marscity/reception_b.md5anim { + frame 16 sound_voice marscity_receptionist_trigger_3 + } + anim reception_c models/md5/heads/head02young/marscity/reception_c.md5anim { + frame 51 sound_voice marscity_receptionist_trigger_4 + } + anim reception_d models/md5/heads/head02young/marscity/reception_d.md5anim { + frame 75 sound_voice marscity_receptionist_trigger_5 + } + anim reception_e models/md5/heads/head02young/marscity/reception_e.md5anim { + frame 41 sound_voice marscity_receptionist_trigger_6 + frame 134 sound_voice marscity_receptionist_trigger_7 + frame 239 sound_voice marscity_receptionist_trigger_8 + frame 294 sound_voice marscity_receptionist_trigger_9 + } + anim reception_f models/md5/heads/head02young/marscity/reception_f.md5anim +} + +model marscity_receptionist { + inherit npc_suit + + anim idle models/md5/chars/receptionist/marscity/receptioncin1_receptionist_typing.md5anim + anim stand models/md5/chars/receptionist/marscity/receptioncin1_receptionist_typing.md5anim { + frame 1 sound_body2 typing + frame 5 sound_body typing + frame 10 sound_body2 typing + frame 15 sound_body typing + frame 20 sound_body2 typing + frame 25 sound_body typing + frame 30 sound_body2 typing + frame 35 sound_body typing + frame 40 sound_body2 typing + frame 45 sound_body typing + } + anim typing models/md5/chars/receptionist/marscity/receptioncin1_receptionist_typing.md5anim + anim turn_left models/md5/chars/receptionist/marscity/receptioncin1_receptionist_typing.md5anim + anim turn_right models/md5/chars/receptionist/marscity/receptioncin1_receptionist_typing.md5anim + + anim reception_a models/md5/chars/receptionist/marscity/receptioncin1_receptionist_a.md5anim { + frame 1 disableGravity + frame 1 event disableEyeFocus + frame 38 sound_body marscity_reception_chair + } + anim reception_b models/md5/chars/receptionist/marscity/receptioncin1_receptionist_b.md5anim { + frame 1 disableGravity + frame 1 event disableEyeFocus + } + anim reception_c models/md5/chars/receptionist/marscity/receptioncin1_receptionist_c.md5anim { + frame 1 disableGravity + frame 1 event disableEyeFocus + //frame 193 call map_marscity1::show_pda + } + anim reception_d models/md5/chars/receptionist/marscity/receptioncin1_receptionist_d.md5anim { + frame 1 call map_marscity1::show_pda + frame 1 disableGravity + frame 1 event disableEyeFocus + } + anim reception_e models/md5/chars/receptionist/marscity/receptioncin1_receptionist_e.md5anim { + frame 1 disableGravity + frame 1 event disableEyeFocus + frame 86 trigger tim_func_static_2675 + frame 88 sound_body marscity_reception_type + } + anim reception_f models/md5/chars/receptionist/marscity/receptioncin1_receptionist_f.md5anim { + frame 1 disableGravity + frame 1 event disableEyeFocus + } +} + +entityDef marscity_receptionist { + "inherit" "npc_base" + "model" "marscity_receptionist" + "size" "12 12 74" + "def_attach" "prop_soft_desk_chair2" + + "ik_numLegs" "0" + "def_head" "marscity_receptionist_head" + "head_joint" "Shoulders" + + "head_focus_rate" "0.1" + "eye_horizontal_offset" "0" + + "turn_rate" "0" + "talktime" "0" + "no_cower" "1" + "ignore_push" "1" + + "num_cinematics" "6" + "anim1" "reception_a" + "anim2" "reception_b" + "anim3" "reception_c" + "anim4" "reception_d" + "anim5" "reception_e" + "anim6" "reception_f" + + "sound_bone" "headcontrol" + "cinematic" "1" +} + +entityDef marscity_receptionist_start { + "inherit" "npc_base" + "model" "marscity_receptionist" + "size" "12 12 74" + "def_attach" "prop_soft_desk_chair2" + + "ik_numLegs" "0" + "def_head" "marscity_receptionist_head" + "head_joint" "Shoulders" + + "head_focus_rate" "0.1" + "eye_horizontal_offset" "0" + + "turn_rate" "0" + "talktime" "0" + "no_cower" "1" + "ignore_push" "1" + + "sound_bone" "headcontrol" + "cinematic" "1" +} + +model marscity_receptionist2 { + inherit npc_suit + + anim idle models/md5/chars/receptionist/marscity/receptioncin1_receptionist_typing2.md5anim + anim stand models/md5/chars/receptionist/marscity/receptioncin1_receptionist_typing2.md5anim { + frame 1 sound_body2 typing + frame 4 sound_body typing + frame 10 sound_body2 typing + frame 15 sound_body typing + frame 21 sound_body2 typing + frame 25 sound_body typing + frame 30 sound_body2 typing + frame 35 sound_body typing + frame 40 sound_body2 typing + frame 45 sound_body typing + frame 52 sound_body2 typing + frame 57 sound_body typing + } + anim typing models/md5/chars/receptionist/marscity/receptioncin1_receptionist_typing2.md5anim + anim talk_primary models/md5/chars/receptionist/marscity/receptioncin1_receptionist_primary.md5anim + anim talk_secondary1 models/md5/chars/receptionist/marscity/receptioncin1_receptionist_secondary1.md5anim + anim talk_secondary2 models/md5/chars/receptionist/marscity/receptioncin1_receptionist_secondary2.md5anim + anim turn_left models/md5/chars/receptionist/marscity/receptioncin1_receptionist_typing2.md5anim + anim turn_right models/md5/chars/receptionist/marscity/receptioncin1_receptionist_typing2.md5anim +} + +entityDef marscity_receptionist2 { + "inherit" "npc_base" + "model" "marscity_receptionist2" + "size" "12 12 74" + "def_attach" "prop_soft_desk_chair2" + + "ik_numLegs" "0" + "def_head" "marscity_receptionist_head" + "head_joint" "Shoulders" + + "talk_time" "0" + "talk0_blendin" "8" + "talk0_blendout" "8" + "talk1_blendin" "8" + "talk1_blendout" "8" + "talk2_blendin" "8" + "talk2_blendout" "8" + + "look_joint Waist" "0 0 0" + "look_joint Chest" "0 0 0" + "look_joint Shoulders" "0.2 0 0" + "look_joint headcontrol" "0.4 0.3 0" + "look_joint neckcontrol" "0.4 0.5 0" + "look_joint Ruparm" "-0.5 0 0" + "look_joint Luparm" "-0.5 0 0" + "look_min" "-40 -80 0" + "look_max" "40 45 0" + + "no_cower" "1" + + "turn_rate" "0" + "talktime" "0" + + "sound_bone" "headcontrol" + + "snd_talk_primary" "marscity_receptionist_primary" + "snd_talk_secondary1" "marscity_receptionist_secondary1" + "snd_talk_secondary2" "marscity_receptionist_secondary2" +} + +model marscity_receptionist_head3 { + mesh models/md5/heads/head02young/h2_cinematic.md5mesh + channel eyelids ( Ruplid Rlolid Luplid Llolid ) + + anim idle models/md5/heads/head02young/marscity/reception_idle.md5anim + anim stand models/md5/heads/head02young/marscity/reception_idle.md5anim + anim blink models/md5/heads/head02young/marscity/reception_idle.md5anim + anim typing models/md5/heads/head02young/marscity/reception_idle.md5anim + anim typing_end models/md5/heads/head02young/marscity/reception_idle.md5anim + anim talk_primary models/md5/heads/head02young/marscity/reception_secondary3.md5anim { + frame 5 sound_voice marscity_receptionist_secondary3 + } + anim talk_secondary1 models/md5/heads/head02young/marscity/reception_secondary3.md5anim { + frame 5 sound_voice marscity_receptionist_secondary3 + } + anim talk_secondary2 models/md5/heads/head02young/marscity/reception_secondary3.md5anim { + frame 5 sound_voice marscity_receptionist_secondary3 + } +} + +model marscity_receptionist3 { + inherit npc_suit + + anim idle models/md5/chars/receptionist/marscity/receptioncin1_receptionist_typing2.md5anim + anim stand models/md5/chars/receptionist/marscity/receptioncin1_receptionist_typing2.md5anim + anim typing models/md5/chars/receptionist/marscity/receptioncin1_receptionist_typing2.md5anim + anim talk_primary models/md5/chars/receptionist/marscity/receptioncin1_receptionist_secondary3.md5anim + anim talk_secondary1 models/md5/chars/receptionist/marscity/receptioncin1_receptionist_secondary3.md5anim + anim talk_secondary2 models/md5/chars/receptionist/marscity/receptioncin1_receptionist_secondary3.md5anim + anim turn_left models/md5/chars/receptionist/marscity/receptioncin1_receptionist_typing2.md5anim + anim turn_right models/md5/chars/receptionist/marscity/receptioncin1_receptionist_typing2.md5anim +} + +entityDef marscity_receptionist3 { + "inherit" "marscity_receptionist2" + "model" "marscity_receptionist3" + "def_head" "marscity_receptionist_head3" +} + +model marscity_smallpda { + mesh models/md5/chars/receptionist/marscity/receptioncin1_smallpda.md5mesh + anim recep_a models/md5/chars/receptionist/marscity/receptioncin1_smallpda_a.md5anim + anim recep_b models/md5/chars/receptionist/marscity/receptioncin1_smallpda_b.md5anim + anim recep_c models/md5/chars/receptionist/marscity/receptioncin1_smallpda_c.md5anim + + skin skins/models/props/pdathing.skin +} + +entityDef marscity_smallpda { + "inherit" "cin_base" + "model" "marscity_smallpda" + + "num_anims" "3" + "anim1" "recep_a" + "anim2" "recep_b" + "anim3" "recep_c" + + "auto_advance" "1" + "cinematic" "1" +} + +model marscity_dufflebag { + mesh models/md5/chars/receptionist/marscity/receptioncin1_dufflebag.md5mesh + anim recep models/md5/chars/receptionist/marscity/receptioncin1_dufflebag.md5anim +} + +entityDef marscity_dufflebag { + "inherit" "cin_base" + "model" "marscity_dufflebag" + "cinematic" "1" +} + +model marscity_suit_officeguy1 { + inherit npc_suit + anim office models/md5/chars/office1working.md5anim +} + +entityDef marscity_suit_officeguy1 { + "inherit" "npc_base" + "model" "marscity_suit_officeguy1" + "anim" "office" + "def_head" "head_young" + "head_joint" "Shoulders" + "copy_joint_world eyecontrol" "" +} + +model marscity_civilian_hallway { + inherit npc_jumpsuit + + anim talk_primary models/md5/chars/stand_talk.md5anim { + prevent_idle_override + frame 1 event enableEyeFocus + frame 1 sound_voice marscity_maint_tech_hallway_primary + } +} + +entityDef marscity_civilian_hallway { + "inherit" "npc_base" + "model" "marscity_civilian_hallway" + "snd_talk_secondary" "marscity_maint_tech_hallway_secondary" + "def_head" "head_asian_young" + "head_joint" "Shoulders" + "copy_joint_world eyecontrol" "" +} + +model marscity_labcoat_monitor_head { + inherit head_black + + anim talk_primary models/md5/heads/black/marscity/scientist_monitor_1.md5anim { + frame 1 sound_voice snd_talk_primary + } + anim talk_secondary1 models/md5/heads/black/marscity/scientist_monitor_2.md5anim { + frame 1 sound_voice snd_talk_secondary + } + anim talk_secondary2 models/md5/heads/black/marscity/scientist_monitor_3.md5anim { + frame 1 sound_voice snd_talk_secondary2 + } +} + +model marscity_labcoat_monitor { + inherit npc_labcoat + anim stand models/md5/chars/operate_computer_loop3.md5anim { + frame 1 event disableEyeFocus + } + anim operate_computer6 models/md5/chars/operate_computer_loop3.md5anim { + frame 1 event disableEyeFocus + } + anim talk_primary models/md5/chars/stand_talk.md5anim { + frame 1 event enableEyeFocus + } + anim talk_secondary1 models/md5/chars/stand_talk.md5anim { + frame 1 event enableEyeFocus + } + anim talk_secondary2 models/md5/chars/stand_talk.md5anim { + frame 1 event enableEyeFocus + } +} + +entityDef marscity_labcoat_monitor { + "inherit" "npc_base" + "model" "marscity_labcoat_monitor" + "def_head" "marscity_labcoat_monitor_head" + "head_joint" "Shoulders" + "talk_no_turn" "1" + "turn_rate" "0" + "talktime" "0" + "talkradius" "384" + "ik_numLegs" "0" + "copy_joint_world eyecontrol" "" + + "head_focus_rate" "0.1" + + "eye_turn_min" "-5 -5 0" + "eye_turn_max" "5 5 0" + "eye_verticle_offset" "5" + "eye_horizontal_offset" "-8" + "eye_focus_rate" "0.5" + + "look_joint Waist" ".1 .1 0" + "look_joint Chest" ".1 .1 0" + "look_joint Shoulders" ".2 .2 0" + "look_joint headcontrol" ".4 .4 0" + "look_joint Ruparm" "-0.4 0 0" + "look_joint Luparm" "-0.4 0 0" + + "snd_talk_primary" "marscity_sci_monitor_primary" + "snd_talk_secondary" "marscity_sci_monitor_secondary1" + "snd_talk_secondary2" "marscity_sci_monitor_secondary2" +} + +model marscity_civilian_kitchen_head { + inherit head_asian_old + + anim talk_primary models/md5/heads/asian_old/marscity/maint_kitchen_1.md5anim { + frame 1 sound_voice snd_talk_primary + } + anim talk_secondary1 models/md5/heads/asian_old/marscity/maint_kitchen_2.md5anim { + frame 1 sound_voice snd_talk_secondary + } + anim talk_secondary2 models/md5/heads/asian_old/marscity/maint_kitchen_3.md5anim { + frame 1 sound_voice snd_talk_secondary2 + } +} + +model marscity_civilian_kitchen { + inherit npc_jumpsuit + + anim stand models/md5/chars/drinkfoamcup.md5anim + anim idle models/md5/chars/drinkfoamcup.md5anim + anim drink_idle models/md5/chars/drink_idle.md5anim + + anim talk_primary models/md5/chars/drink_idle.md5anim + anim talk_secondary1 models/md5/chars/drink_idle.md5anim + anim talk_secondary2 models/md5/chars/drink_idle.md5anim +} + +entityDef marscity_civilian_kitchen { + "inherit" "npc_base" + "model" "marscity_civilian_kitchen" + "def_head" "marscity_civilian_kitchen_head" + "head_joint" "Shoulders" + "ik_numLegs" "0" + "def_attach" "prop_foamcup" + "talktime" "0" + "talkradius" "384" + "head_focus_rate" "0.08" + "copy_joint_world eyecontrol" "" + + "snd_talk_primary" "marscity_kitchen_maint_primary" + "snd_talk_secondary" "marscity_kitchen_maint_secondary1" + "snd_talk_secondary2" "marscity_kitchen_maint_secondary2" +} + +model marscity_maint1_hallway_head { + inherit head_bald + + anim talk_primary models/md5/heads/bald/marscity/hallway_maint_1_9.md5anim { + frame 1 sound_voice marscity_hallway_maint_1_primary + } + anim talk_secondary1 models/md5/heads/bald/marscity/hallway_maint_1_10.md5anim { + frame 1 sound_voice marscity_hallway_maint_1_secondary1 + } + anim talk_secondary2 models/md5/heads/bald/marscity/hallway_maint_1_11.md5anim { + frame 1 sound_voice marscity_hallway_maint_1_secondary2 + } + anim convo1 models/md5/heads/bald/marscity/hallway_maint_1_1.md5anim { + frame 1 sound_voice marscity_hallway_maint_1_convo1 + } + anim convo2 models/md5/heads/bald/marscity/hallway_maint_1_2.md5anim { + frame 1 sound_voice marscity_hallway_maint_1_convo2 + } + anim convo3 models/md5/heads/bald/marscity/hallway_maint_1_3.md5anim { + frame 1 sound_voice marscity_hallway_maint_1_convo3 + } + anim convo4 models/md5/heads/bald/marscity/hallway_maint_1_4.md5anim { + frame 1 sound_voice marscity_hallway_maint_1_convo4 + } + anim convo5 models/md5/heads/bald/marscity/hallway_maint_1_5.md5anim { + frame 1 sound_voice marscity_hallway_maint_1_convo5 + } + anim convo6 models/md5/heads/bald/marscity/hallway_maint_1_6.md5anim { + frame 1 sound_voice marscity_hallway_maint_1_convo2_1 + } + anim convo7 models/md5/heads/bald/marscity/hallway_maint_1_7.md5anim { + frame 1 sound_voice marscity_hallway_maint_1_convo2_2 + } + anim convo8 models/md5/heads/bald/marscity/hallway_maint_1_8.md5anim { + frame 1 sound_voice marscity_hallway_maint_1_convo2_3 + } +} + +model marscity_maint1_hallway { + inherit npc_jumpsuit + anim talk_primary models/md5/chars/stand_talk.md5anim { + frame 1 event enableEyeFocus + } + anim talk_secondary1 models/md5/chars/stand_talk.md5anim { + frame 1 event enableEyeFocus + } + anim talk_secondary2 models/md5/chars/stand_talk.md5anim { + frame 1 event enableEyeFocus + } + anim stand models/md5/chars/gui_operate_main_worker.md5anim { + frame 1 event disableEyeFocus + } + anim idle models/md5/chars/gui_operate_main_worker.md5anim { + frame 1 event disableEyeFocus + } + anim convo1 models/md5/chars/gui_operate_main_worker.md5anim + anim convo2 models/md5/chars/gui_operate_main_worker.md5anim + anim convo3 models/md5/chars/gui_operate_main_worker.md5anim + anim convo4 models/md5/chars/gui_operate_main_worker.md5anim + anim convo5 models/md5/chars/gui_operate_main_worker.md5anim + anim convo6 models/md5/chars/gui_operate_main_worker.md5anim + anim convo7 models/md5/chars/gui_operate_main_worker.md5anim + anim convo8 models/md5/chars/gui_operate_main_worker.md5anim +} + +entityDef marscity_maint1_hallway { + "inherit" "npc_base" + "model" "marscity_maint1_hallway" + "def_head" "marscity_maint1_hallway_head" + "head_joint" "Shoulders" + + "copy_joint_world eyecontrol" "" + + "talk_no_turn" "1" + "talktime" "0" + + "ik_numLegs" "0" + "ik_footSize" "0" + + "head_focus_rate" "0.1" + + "look_joint Waist" ".2 .2 0" + "look_joint Chest" ".2 .2 0" + "look_joint Shoulders" ".1 .1 0" + "look_joint headcontrol" ".4 .4 0" + "look_joint Ruparm" "-0.4 0 0" + "look_joint Luparm" "-0.4 0 0" + + "eye_turn_min" "-20 -30 0" + "eye_turn_max" "20 30 0" + + "def_attach" "pda_marscity_maint1_hallway" + "def_dropDeathItem" "pda_marscity_maint1_hallway" + "dropDeathItemJoint" "pda" + "dropDeathItemRotation" "0 0 0" +} + +model marscity_maint2_hallway_head { + inherit head_asian_old + + anim talk_primary models/md5/heads/asian_old/marscity/hallway_maint_2_8.md5anim { + frame 1 sound_voice marscity_hallway_maint_2_primary + } + anim talk_secondary1 models/md5/heads/asian_old/marscity/hallway_maint_2_9.md5anim { + frame 1 sound_voice marscity_hallway_maint_2_secondary1 + } + anim talk_secondary2 models/md5/heads/asian_old/marscity/hallway_maint_2_10.md5anim { + frame 1 sound_voice marscity_hallway_maint_2_secondary2 + } + anim convo1 models/md5/heads/asian_old/marscity/hallway_maint_2_1.md5anim { + frame 1 sound_voice marscity_hallway_maint_2_convo1 + } + anim convo2 models/md5/heads/asian_old/marscity/hallway_maint_2_2.md5anim { + frame 1 sound_voice marscity_hallway_maint_2_convo2 + } + anim convo3 models/md5/heads/asian_old/marscity/hallway_maint_2_3.md5anim { + frame 1 sound_voice marscity_hallway_maint_2_convo3 + } + anim convo4 models/md5/heads/asian_old/marscity/hallway_maint_2_4.md5anim { + frame 1 sound_voice marscity_hallway_maint_2_convo4 + } + anim convo5 models/md5/heads/asian_old/marscity/hallway_maint_2_5.md5anim { + frame 1 sound_voice marscity_hallway_maint_2_convo2_1 + } + anim convo6 models/md5/heads/asian_old/marscity/hallway_maint_2_6.md5anim { + frame 1 sound_voice marscity_hallway_maint_2_convo2_2 + } + anim convo7 models/md5/heads/asian_old/marscity/hallway_maint_2_7.md5anim { + frame 1 sound_voice marscity_hallway_maint_2_convo2_3 + } +} + +model marscity_maint2_hallway { + inherit npc_jumpsuit + + anim stand models/md5/chars/drinkfoamcup.md5anim + anim idle models/md5/chars/drinkfoamcup.md5anim + anim drink_idle models/md5/chars/drink_idle.md5anim + + anim talk_primary models/md5/chars/drink_idle.md5anim + anim talk_secondary1 models/md5/chars/drink_idle.md5anim + anim convo1 models/md5/chars/drink_idle.md5anim + anim convo2 models/md5/chars/drink_idle.md5anim + anim convo3 models/md5/chars/drink_idle.md5anim + anim convo4 models/md5/chars/drink_idle.md5anim + anim convo5 models/md5/chars/drink_idle.md5anim + anim convo6 models/md5/chars/drink_idle.md5anim + anim convo7 models/md5/chars/drink_idle.md5anim +} + +entityDef marscity_maint2_hallway { + "inherit" "npc_base" + "model" "marscity_maint2_hallway" + "def_head" "marscity_maint2_hallway_head" + "head_joint" "Shoulders" + + "copy_joint_world eyecontrol" "" + + "talk_no_turn" "1" + "talktime" "0" + + "ik_numLegs" "0" + "ik_footSize" "0" + + "def_attach" "prop_foamcup" + + "look_joint Waist" ".2 .2 0" + "look_joint Chest" ".2 .2 0" + "look_joint Shoulders" ".1 .1 0" + "look_joint headcontrol" ".4 .4 0" + "look_joint Ruparm" "-0.4 0 0" + "look_joint Luparm" "-0.4 0 0" + + "eye_turn_min" "-20 -30 0" + "eye_turn_max" "20 30 0" +} + +model marscity_suit_asian_chair_head { + inherit head_asian_young + + anim respond models/md5/heads/asian_young/marscity/marine3_hq_yes_sir.md5anim { + frame 1 sound_voice snd_respond + } + anim talk_primary models/md5/heads/asian_young/marscity/marine3_hq_1.md5anim { + frame 1 sound_voice snd_talk_primary + } + anim talk_secondary1 models/md5/heads/asian_young/marscity/marine3_hq_2.md5anim { + frame 1 sound_voice snd_talk_secondary + } + anim talk_secondary2 models/md5/heads/asian_young/marscity/marine3_hq_3.md5anim { + frame 1 sound_voice snd_talk_secondary2 + } +} + +model marscity_suit_asian_chair { + inherit npc_suit + + anim stand models/md5/chars/operate_computer_sitting_higher.md5anim + anim idle models/md5/chars/operate_computer_sitting_higher.md5anim + anim cower models/md5/chars/operate_computer_sitting_higher.md5anim + anim turn_left models/md5/chars/operate_computer_sitting_higher.md5anim + anim turn_right models/md5/chars/operate_computer_sitting_higher.md5anim + + anim respond models/md5/chars/operate_computer_talk.md5anim + anim talk_primary models/md5/chars/operate_computer_talk.md5anim + anim talk_secondary1 models/md5/chars/operate_computer_talk.md5anim + anim talk_secondary2 models/md5/chars/operate_computer_talk.md5anim +} + +entityDef marscity_suit_asian_chair { + "inherit" "npc_base" + "model" "marscity_suit_asian_chair" + "def_head" "marscity_suit_asian_chair_head" + "head_joint" "Shoulders" + "ignore_push" "1" + "anim" "stand" + "ik_numLegs" "0" + + "copy_joint_world eyecontrol" "" + + "def_attach" "prop_soft_desk_chair2" + "def_dropDeathItem" "moveable_chair2" + "dropDeathItemJoint" "chair" + + "dropDeathItemRotation" "-90 0 0" + + "talk_no_turn" "1" + "talktime" "0" + + "talk_time" "0" + "talk0_blendin" "8" + "talk0_blendout" "8" + "talk1_blendin" "8" + "talk1_blendout" "8" + "talk2_blendin" "8" + "talk2_blendout" "8" + + "look_joint Waist" "0 0 0" + "look_joint Chest" "0 0 0" + "look_joint Shoulders" "0.2 0.2 0" + "look_joint headcontrol" "-0.1 -0.1 0" + "look_joint neckcontrol" "0.8 0.8 0" + "look_joint Ruparm" "0 0 0" + "look_joint Luparm" "0 0 0" + "look_min" "-90 -80 0" + "look_max" "25 80 0" + + "eye_turn_min" "-20 -30 0" + "eye_turn_max" "20 30 0" + + "eye_verticle_offset" "20" + "eye_horizontal_offset" "-8" + "eye_focus_rate" "0.5" + "head_focus_rate" "0.08" + + "snd_respond" "marscity_marine3_hq_respond" + "snd_talk_primary" "marscity_marine3_hq_primary" + "snd_talk_secondary" "marscity_marine3_hq_secondary1" + "snd_talk_secondary2" "marscity_marine3_hq_secondary2" +} + +model marscity_suit_asian_chair_head2 { + inherit head_asian_young + + anim respond models/md5/heads/asian_young/marscity/marine3_hq_yes_sir.md5anim { + frame 1 sound_voice snd_respond + } + anim talk_primary models/md5/heads/asian_young/marscity/marine3_hq_1.md5anim { + frame 1 sound_voice snd_talk_primary + } + anim talk_secondary1 models/md5/heads/asian_young/marscity/marine3_hq_2.md5anim { + frame 1 sound_voice snd_talk_secondary + } + anim talk_secondary2 models/md5/heads/asian_young/marscity/marine3_hq_3.md5anim { + frame 1 sound_voice snd_talk_secondary2 + } +} + +model marscity_suit_asian_chair2 { + inherit npc_suit + + anim stand models/md5/chars/operate_computer_sitting.md5anim + anim idle models/md5/chars/operate_computer_sitting.md5anim + anim cower models/md5/chars/operate_computer_sitting.md5anim + anim turn_left models/md5/chars/operate_computer_sitting.md5anim + anim turn_right models/md5/chars/operate_computer_sitting.md5anim + + anim respond models/md5/chars/operate_computer_talk.md5anim + anim talk_primary models/md5/chars/operate_computer_talk.md5anim + anim talk_secondary1 models/md5/chars/operate_computer_talk.md5anim + anim talk_secondary2 models/md5/chars/operate_computer_talk.md5anim +} + +entityDef marscity_suit_asian_chair2 { + "inherit" "npc_base" + "model" "marscity_suit_asian_chair2" + "def_head" "marscity_suit_asian_chair_head2" + "head_joint" "Shoulders" + "ignore_push" "1" + "anim" "stand" + "ik_numLegs" "0" + + "copy_joint_world eyecontrol" "" + + "def_attach" "prop_soft_desk_chair2" + "def_dropDeathItem" "moveable_chair2" + "dropDeathItemJoint" "chair" + + "dropDeathItemRotation" "-90 0 0" + + "talk_no_turn" "1" + "talktime" "0" + + "talk_time" "0" + "talk0_blendin" "8" + "talk0_blendout" "8" + "talk1_blendin" "8" + "talk1_blendout" "8" + "talk2_blendin" "8" + "talk2_blendout" "8" + + "look_joint Waist" "0 0 0" + "look_joint Chest" "0 0 0" + "look_joint Shoulders" "0.2 0.2 0" + "look_joint headcontrol" "-0.1 -0.1 0" + "look_joint neckcontrol" "0.8 0.8 0" + "look_joint Ruparm" "0 0 0" + "look_joint Luparm" "0 0 0" + "look_min" "-90 -80 0" + "look_max" "25 80 0" + + "eye_turn_min" "-20 -30 0" + "eye_turn_max" "20 30 0" + + "eye_verticle_offset" "20" + "eye_horizontal_offset" "-8" + "eye_focus_rate" "0.5" + "head_focus_rate" "0.08" + + "snd_respond" "marscity_marine3_hq_respond" + "snd_talk_primary" "marscity_marine3_hq_primary" + "snd_talk_secondary" "marscity_marine3_hq_secondary1" + "snd_talk_secondary2" "marscity_marine3_hq_secondary2" +} + +model marscity_suit_chair { + mesh models/md5/environments/marscitychair1.md5mesh + anim office models/md5/environments/marscitychair1.md5anim +} + +entityDef marscity_suit_chair { + "inherit" "cin_base" + "model" "marscity_suit_chair" + "anim" "office" +} + +model marscity_cinematic_player { + inherit npc_tshirt + + anim betrugercin_a models/md5/cinematics/marscity/betrugercin1_player_a.md5anim { + frame 1 disableGravity + frame 1 skin skins/characters/npcs/marine_player.skin + } + anim betrugercin_b models/md5/cinematics/marscity/betrugercin1_player_b.md5anim { + frame 1 disableGravity + frame 1 skin skins/characters/npcs/marine_player.skin + } + anim betrugercin_c models/md5/cinematics/marscity/betrugercin1_player_c.md5anim { + frame 1 disableGravity + frame 1 skin skins/characters/npcs/marine_player.skin + } + anim betrugercin_d models/md5/cinematics/marscity/betrugercin1_player_d.md5anim { + frame 1 disableGravity + frame 1 skin skins/characters/npcs/marine_player.skin + } + anim recep_a models/md5/cinematics/marscity/receptioncin1_player_a.md5anim { + frame 1 event disableEyeFocus + frame 26 sound_body player_sounds_footstep + frame 38 sound_body player_sounds_footstep + frame 49 sound_body player_sounds_footstep + frame 58 sound_body player_sounds_footstep + frame 64 sound_body2 marscity_reception_duffle + } + anim recep_b models/md5/cinematics/marscity/receptioncin1_player_b.md5anim { + frame 1 event disableEyeFocus + frame 10 skin skins/characters/npcs/marine_player.skin + } + anim recep_c models/md5/cinematics/marscity/receptioncin1_player_c.md5anim { + frame 1 event disableEyeFocus + } + anim recep_d models/md5/cinematics/marscity/receptioncin1_player_d.md5anim { + frame 1 event disableEyeFocus + } + anim recep_e models/md5/cinematics/marscity/receptioncin1_player_e.md5anim { + frame 1 event disableEyeFocus + } + anim recep_f models/md5/cinematics/marscity/receptioncin1_player_f.md5anim { + frame 1 event disableEyeFocus + } + + anim sargecin1 models/md5/cinematics/marscity/sargecin_player1.md5anim { + frame 1 skin skins/characters/npcs/marine_player.skin + } + anim sargecin2 models/md5/cinematics/marscity/sargecin_player2.md5anim { + frame 1 skin skins/characters/npcs/marine_player.skin + } + anim sargecin3 models/md5/cinematics/marscity/sargecin_player3.md5anim { + frame 1 skin skins/characters/npcs/marine_player.skin + } + anim sargecin4 models/md5/cinematics/marscity/sargecin_player4.md5anim { + frame 1 event disableEyeFocus + frame 1 skin skins/characters/npcs/marine_player.skin + } + anim sargecin5 models/md5/cinematics/marscity/sargecin_player5.md5anim { + frame 1 skin skins/characters/npcs/marine_player.skin + } + anim sargecin6 models/md5/cinematics/marscity/sargecin_player6.md5anim { + frame 1 skin skins/characters/npcs/marine_player.skin + } + anim sargecin7 models/md5/cinematics/marscity/sargecin_player7.md5anim { + frame 1 skin skins/characters/npcs/marine_player.skin + } +} + +entityDef marscity_cinematic_player { + "inherit" "npc_base" + "model" "marscity_cinematic_player" + "anim" "betrugercin_a" + "ik_numlegs" "0" + "def_head" "marscity_head_player" + "head_joint" "Shoulders" + "cinematic" "1" +} + +entityDef marscity_meeting_player { + "inherit" "npc_base" + "model" "marscity_cinematic_player" + "anim" "betrugercin_a" + "ik_numlegs" "0" + "def_head" "marscity_head_player" + "head_joint" "Shoulders" + + "num_cinematics" "4" + "anim1" "betrugercin_a" + "anim2" "betrugercin_b" + "anim3" "betrugercin_c" + "anim4" "betrugercin_d" + + "cinematic" "1" +} + +entityDef marscity_reception_player { + "inherit" "npc_base" + "model" "marscity_cinematic_player" + "anim" "recep_a" + "ik_numlegs" "0" + "def_head" "marscity_head_player" + "head_joint" "Shoulders" + + "num_cinematics" "6" + "anim1" "recep_a" + "anim2" "recep_b" + "anim3" "recep_c" + "anim4" "recep_d" + "anim5" "recep_e" + "anim6" "recep_f" + + "cinematic" "1" +} + +model marscity_hangar_player { + inherit npc_tshirt + + anim hangar_a models/md5/cinematics/marscity/hangar_player_a.md5anim { + frame 1 event disableEyeFocus + } + anim hangar_b models/md5/cinematics/marscity/hangar_player_b.md5anim { + frame 1 event disableEyeFocus + } + anim hangar_c models/md5/cinematics/marscity/hangar_player_c.md5anim { + frame 1 event disableEyeFocus + } + anim hangar_d models/md5/cinematics/marscity/hangar_player_d.md5anim { + frame 1 event disableEyeFocus + } + anim hangar_e models/md5/cinematics/marscity/hangar_player_e.md5anim { + frame 1 event disableEyeFocus + } + anim hangar_f models/md5/cinematics/marscity/hangar_player_f.md5anim { + frame 1 event disableEyeFocus + } + anim hangar_g models/md5/cinematics/marscity/hangar_player_g.md5anim { + frame 1 event disableEyeFocus + } + anim hangar_h models/md5/cinematics/marscity/hangar_player_h.md5anim { + frame 1 event disableEyeFocus + } +} + +entityDef marscity_hangar_player { + "inherit" "npc_base" + "model" "marscity_hangar_player" + "anim" "hangar_a" + "ik_numlegs" "0" + "def_head" "marscity_head_player" + "head_joint" "Shoulders" + + "def_attach" "prop_dufflebag" + + "num_cinematics" "8" + "anim1" "hangar_a" + "anim2" "hangar_b" + "anim3" "hangar_c" + "anim4" "hangar_d" + "anim5" "hangar_e" + "anim6" "hangar_f" + "anim7" "hangar_g" + "anim8" "hangar_h" + + "cinematic" "1" +} + +model marscity_head_player { + inherit head_player + anim recep_a models/md5/heads/player/marscity/reception_a.md5anim + anim recep_b models/md5/heads/player/marscity/reception_b.md5anim + anim recep_c models/md5/heads/player/marscity/reception_c.md5anim + anim recep_d models/md5/heads/player/marscity/reception_d.md5anim + anim recep_e models/md5/heads/player/marscity/reception_e.md5anim + anim recep_f models/md5/heads/player/marscity/reception_f.md5anim + + anim hangar_a models/md5/heads/player/marscity/hangar_a.md5anim + anim hangar_b models/md5/heads/player/marscity/hangar_b.md5anim + anim hangar_c models/md5/heads/player/marscity/hangar_c.md5anim + anim hangar_d models/md5/heads/player/marscity/hangar_d.md5anim + anim hangar_e models/md5/heads/player/marscity/hangar_e.md5anim + anim hangar_f models/md5/heads/player/marscity/hangar_f.md5anim + anim hangar_g models/md5/heads/player/marscity/hangar_g.md5anim + anim hangar_h models/md5/heads/player/marscity/hangar_h.md5anim +} + + +model marscity_cinematic_doctor { + inherit npc_labcoat + anim doctor_start models/md5/cinematics/marscity/patient_doctor_start.md5anim + anim doctor models/md5/cinematics/marscity/patient_doctor.md5anim { + frame 50 sound_voice snd_doc2 + frame 80 sound_voice snd_doc1 + frame 131 sound_voice snd_doc3 + } + + anim doctor_end models/md5/cinematics/marscity/patient_doctor_end.md5anim +} + +entityDef marscity_cinematic_doctor { + "inherit" "npc_base" + "model" "marscity_cinematic_doctor" + "sound_bone" "headcontrol" + "anim" "doctor" + "ik_numlegs" "0" + "def_head" "head_surgeon" + "head_joint" "Shoulders" + "size" "0 0 0" + + "copy_joint_world eyecontrol" "" + + "def_attach" "prop_adrenaline" + + "snd_doc1" "marscity_sci_hospital_1" + "snd_doc2" "marscity_sci_hospital_2" + "snd_doc3" "marscity_sci_hospital_3" +} + +model marscity_cinematic_victim { + inherit npc_tshirt + skin skins/characters/npcs/soldier_bald_bloody.skin + + anim victim_start models/md5/cinematics/marscity/patient_victim_start.md5anim + anim victim models/md5/cinematics/marscity/patient_victim.md5anim { + frame 50 sound_voice snd_injured + } + anim victim_end models/md5/cinematics/marscity/patient_victim_end.md5anim +} + +entityDef marscity_cinematic_victim { + "inherit" "npc_base" + "model" "marscity_cinematic_victim" + "def_head" "head_zombie4" + "head_joint" "Shoulders" + "sound_bone" "headcontrol" + "anim" "victim" + "ik_numlegs" "0" + "size" "0 0 0" + + "copy_joint_world eyecontrol" "" + + "snd_injured" "marscity_injured_hospital_1" +} + +model marscity_cinematic_security { + inherit npc_security + + anim security_loop models/md5/cinematics/marscity/patient_security_start.md5anim + anim security_start models/md5/cinematics/marscity/patient_security_start.md5anim { + frame 1 sound_voice snd_guard1 + } + anim security models/md5/cinematics/marscity/patient_security.md5anim + anim security_end models/md5/cinematics/marscity/patient_security_end.md5anim +} + +entityDef marscity_cinematic_security { + "inherit" "npc_base" + "model" "marscity_cinematic_security" + "sound_bone" "headcontrol" + "anim" "security" + "ik_numlegs" "0" + "def_head" "head_security_goggles" + "head_joint" "Shoulders" + "size" "0 0 0" + + "copy_joint_world eyecontrol" "" + + "snd_guard1" "marscity_guard_hospital_1" + "snd_guard2" "marscity_guard_hospital_2" +} + +model marscity_marine_helmet_p90_directions_ver1 { + inherit npc_marine + anim stand models/md5/chars/p90_stand.md5anim + anim idle models/md5/chars/p90_stand.md5anim + + anim talk_trigger models/md5/chars/p90_point_left.md5anim { + frame 1 sound_voice snd_talk_trigger + } + anim talk_primary models/md5/chars/marscity_marine1_ver1_hq_primary.md5anim { + frame 1 sound_voice snd_talk_primary + } + anim talk_secondary1 models/md5/chars/marscity_marine1_ver1_hq_secondary1.md5anim { + frame 1 sound_voice snd_talk_secondary + } + anim talk_secondary2 models/md5/chars/marscity_marine1_ver1_hq_secondary2.md5anim { + frame 1 sound_voice snd_talk_secondary2 + } +} + +entitydef marscity_marine_helmet_p90_directions_ver1 { + "inherit" "npc_base" + "model" "marscity_marine_helmet_p90_directions_ver1" + "talk_no_turn" "1" + "ignore_push" "1" + "ik_numLegs" "0" + "talktime" ".6" + "talkradius" "384" + "def_head" "head_marine_helmet" + "head_joint" "Shoulders" + + "look_min" "-90 -75 0" + "look_max" "25 75 0" + "look_joint Waist" "0.1333 0.05 0" + "look_joint Chest" "0.1333 0.05 0" + "look_joint Shoulders" "0.1333 0.05 0" + "look_joint headcontrol" "0.6 0.6 0" + "look_joint Ruparm" "-0.4 0 0" + "look_joint Luparm" "-0.4 0 0" + + "copy_joint_world eyecontrol" "" + + "def_attach" "prop_machinegun" + + "snd_talk_trigger" "marscity_marine1_ver1_hq_trigger" + "snd_talk_primary" "marscity_marine1_ver1_hq_primary" + "snd_talk_secondary" "marscity_marine1_ver1_hq_secondary1" + "snd_talk_secondary2" "marscity_marine1_ver1_hq_secondary2" +} + +model marscity_marine_helmet_p90_directions_ver2 { + inherit npc_marine + anim stand models/md5/chars/p90_stand.md5anim + anim idle models/md5/chars/p90_stand.md5anim + + anim talk_primary models/md5/chars/p90_talk.md5anim { + frame 1 sound_voice snd_talk_primary + } + anim talk_secondary1 models/md5/chars/p90_talk.md5anim { + frame 1 sound_voice snd_talk_secondary + } +} + +entitydef marscity_marine_helmet_p90_directions_ver2 { + "inherit" "npc_base" + "model" "marscity_marine_helmet_p90_directions_ver2" + "talk_no_turn" "1" + "talktime" ".6" + "talkradius" "384" + "def_head" "head_marine_helmet" + "head_joint" "Shoulders" + + "copy_joint_world eyecontrol" "" + + "def_attach" "prop_machinegun" + + "snd_talk_primary" "marscity_marine1_ver2_hq_primary" + "snd_talk_secondary" "marscity_marine1_ver2_hq_secondary" +} + +model marscity_marine_helmet_p90_walking { + inherit npc_marine + anim stand models/md5/chars/p90_talk.md5anim + anim walk models/md5/chars/walk_machinegun.md5anim { + frame 3 sound_body player_sounds_footstep + frame 17 sound_body player_sounds_footstep + frame 32 sound_body player_sounds_footstep + frame 46 sound_body player_sounds_footstep + } + + anim talk_primary models/md5/chars/p90_talk.md5anim { + frame 1 sound_voice snd_talk_primary + } + anim talk_secondary1 models/md5/chars/p90_talk.md5anim { + frame 1 sound_voice snd_talk_secondary + } + anim talk_secondary2 models/md5/chars/p90_talk.md5anim { + frame 1 sound_voice snd_talk_secondary2 + } + anim talk_excuseme models/md5/chars/p90_talk.md5anim { + frame 1 sound_voice snd_talk_excuseme + } +} + +entitydef marscity_marine_helmet_p90_walking { + "inherit" "npc_base" + "model" "marscity_marine_helmet_p90_walking" + "talk_no_turn" "1" + "talktime" ".6" + "def_attach" "prop_machinegun" + "def_head" "head_marine_helmet" + "head_joint" "Shoulders" + + "copy_joint_world eyecontrol" "" + + "head_focus_rate" "0.1" + + "look_joint Waist" "0 0 0" + "look_joint Chest" ".1 .1 0" + "look_joint Shoulders" ".3 .3 0" + "look_joint headcontrol" ".6 .6 0" + "look_joint Ruparm" "0 0 0" + "look_joint Luparm" "0 0 0" + + "talk0_blendin" "8" + "talk0_blendout" "8" + "talk1_blendin" "8" + "talk1_blendout" "8" + "talk2_blendin" "8" + "talk2_blendout" "8" + + "snd_talk_primary" "marscity_marine4_hq_primary" + "snd_talk_secondary" "marscity_marine4_hq_secondary1" + "snd_talk_secondary2" "marscity_marine4_hq_secondary2" + "snd_talk_excuseme" "marine_excuseme" +} + +model marscity_soldier_young_pda_head { + inherit head_young + + anim talk_primary models/md5/heads/young/marscity/marine2_hq_1.md5anim { + frame 1 sound_voice snd_talk_primary + } + anim talk_secondary1 models/md5/heads/young/marscity/marine2_hq_2.md5anim { + frame 1 sound_voice snd_talk_secondary + } + anim talk_secondary2 models/md5/heads/young/marscity/marine2_hq_3.md5anim { + frame 1 sound_voice snd_talk_secondary2 + } +} + +model marscity_soldier_young_pda { + inherit npc_base + mesh models/md5/chars/tshirt.md5mesh + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER eyecontrol chair) + + anim stand models/md5/chars/PDA_idle.md5anim { + frame 1 event disableEyeFocus + } + anim pda_idle_look models/md5/chars/PDA_idle.md5anim { + frame 1 event disableEyeFocus + } + anim talk_primary models/md5/chars/PDA_talk.md5anim { + frame 1 event enableEyeFocus + } + anim talk_secondary1 models/md5/chars/PDA_talk.md5anim { + frame 1 event enableEyeFocus + } + anim talk_secondary2 models/md5/chars/PDA_talk.md5anim { + frame 1 event enableEyeFocus + } +} + +entityDef marscity_soldier_young_pda { + "inherit" "npc_base" + "model" "marscity_soldier_young_pda" + "def_head" "marscity_soldier_young_pda_head" + "head_joint" "Shoulders" + + "talk_no_turn" "1" + "talktime" "0" + + "ik_numLegs" "0" + "ik_footSize" "0" + + "head_focus_rate" "0.1" + + "ignore_push" "1" + + "copy_joint_world eyecontrol" "" + + "look_joint Waist" ".1 .1 0" + "look_joint Chest" ".1 .1 0" + "look_joint Shoulders" ".2 .2 0" + "look_joint headcontrol" ".4 .4 0" + "look_joint Ruparm" "0 0 0" + "look_joint Luparm" "0 0 0" + + "eye_turn_min" "-20 -30 0" + "eye_turn_max" "20 30 0" + + "def_attach" "pda_marscity_soldier_young_pda" + "def_dropDeathItem" "pda_marscity_soldier_young_pda" + "dropDeathItemJoint" "pda" + "dropDeathItemRotation" "0 0 0" + + "snd_talk_primary" "marscity_marine2_hq_primary" + "snd_talk_secondary" "marscity_marine2_hq_secondary1" + "snd_talk_secondary2" "marscity_marine2_hq_secondary2" +} + +entityDef marscity_labcoat_young { + "inherit" "npc_base" + + "copy_joint_world eyecontrol" "" + + "def_head" "head_young" + "head_joint" "Shoulders" + "look_joint Waist" "0 0 0" + "look_joint Chest" ".2 .2 0" + "look_joint Shoulders" ".2 .2 0" + "look_joint headcontrol" ".6 .6 0" + "look_joint Ruparm" "0 0 0" + "look_joint Luparm" "0 0 0" + "turn_rate" "0" + "talktime" "0" + "snd_talk_primary" "default_primary" + "snd_talk_secondary" "default_secondary" + "snd_talk_trigger" "default_trigger" +} + +model char_marine_asian_chair1_head { + inherit head_asian_young + + anim talk_primary models/md5/heads/asian_young/marscity/marine2_sitting_1_1.md5anim { + frame 1 sound_voice marscity_marine2_sitting_1_primary + } + anim talk_secondary1 models/md5/heads/asian_young/marscity/marine2_sitting_1_2.md5anim { + frame 1 sound_voice marscity_marine2_sitting_1_secondary1 + } + anim talk_secondary2 models/md5/heads/asian_young/marscity/marine2_sitting_1_3.md5anim { + frame 1 sound_voice marscity_marine2_sitting_1_secondary2 + } + anim convo1 models/md5/heads/asian_young/marscity/marine2_sitting_1_4.md5anim { + frame 1 sound_voice marscity_marine2_sitting_1_convo1 + } + anim convo2 models/md5/heads/asian_young/marscity/marine2_sitting_1_5.md5anim { + frame 1 sound_voice marscity_marine2_sitting_1_convo2 + } + anim convo3 models/md5/heads/asian_young/marscity/marine2_sitting_1_6.md5anim { + frame 1 sound_voice marscity_marine2_sitting_1_convo3 + } +} + +model char_marine_asian_chair1 { + mesh models/md5/chars/tshirt.md5mesh + channel torso ( *Waist ) + channel legs ( chair origin Body Body2 *Hips -*Waist SPINNER ) + + anim af_pose models/md5/chars/af_pose.md5anim + anim ik_pose models/md5/chars/af_pose.md5anim + + anim stand models/md5/chars/marscity/marscity_marine2_stand.md5anim + anim idle1 models/md5/chars/marscity/marscity_marine2_idle1.md5anim + anim idle2 models/md5/chars/marscity/marscity_marine2_idle2.md5anim { + frame 22 sound_voice2 cough + frame 42 sound_voice2 cough + } + anim idle3 models/md5/chars/marscity/marscity_marine2_idle3.md5anim + + anim talk_primary models/md5/chars/marscity/marscity_marine2_talk1.md5anim + anim talk_secondary1 models/md5/chars/marscity/marscity_marine2_talk2.md5anim + anim talk_secondary2 models/md5/chars/marscity/marscity_marine2_talk3.md5anim + + anim convo1 models/md5/chars/marscity/marscity_marine2_convo1.md5anim + anim convo2 models/md5/chars/marscity/marscity_marine2_convo2.md5anim + anim convo3 models/md5/chars/marscity/marscity_marine2_convo3.md5anim +} + +entityDef char_marine_asian_chair1 { + "inherit" "npc_base" + "model" "char_marine_asian_chair1" + "def_head" "char_marine_asian_chair1_head" + "head_joint" "Shoulders" + + "copy_joint_world eyecontrol" "" + + "talk_no_turn" "1" + "talktime" "1" + + "turn_rate" "0" + + "talk0_blendin" "8" + "talk0_blendout" "8" + "talk1_blendin" "8" + "talk1_blendout" "8" + "talk2_blendin" "8" + "talk2_blendout" "8" + + "ik_numLegs" "0" + "ik_footSize" "0" + + "look_joint Waist" "0 0 0" + "look_joint Chest" "0 0 0" + "look_joint Shoulders" "0 0 0" + "look_joint headcontrol" "0.5 0.4 0" + "look_joint neckcontrol" "0.5 0.4 0" + "look_joint Ruparm" "0 0 0" + "look_joint Luparm" "0 0 0" + "look_min" "-40 -80 0" + "look_max" "40 80 0" + + "eye_turn_min" "-20 -30 0" + "eye_turn_max" "20 30 0" + + "def_attach" "prop_metal_lounge_chair" + "def_dropDeathItem" "moveable_kitchenchair" + "dropDeathItemJoint" "chair" + "dropDeathItemRotation" "0 0 -90" + "dropDeathItemOffset" "0 30 30" +} + +model char_marine_young_chair1_head { + inherit head_young + + anim talk_primary models/md5/heads/young/marscity/marine1_sitting_1_1.md5anim { + frame 1 sound_voice marscity_marine1_sitting_1_primary + } + anim talk_secondary1 models/md5/heads/young/marscity/marine1_sitting_1_2.md5anim { + frame 1 sound_voice marscity_marine1_sitting_1_secondary1 + } + anim talk_secondary2 models/md5/heads/young/marscity/marine1_sitting_1_3.md5anim { + frame 1 sound_voice marscity_marine1_sitting_1_secondary2 + } + anim convo1 models/md5/heads/young/marscity/marine1_sitting_1_4.md5anim { + frame 1 sound_voice marscity_marine1_sitting_1_convo1 + } + anim convo2 models/md5/heads/young/marscity/marine1_sitting_1_5.md5anim { + frame 1 sound_voice marscity_marine1_sitting_1_convo2 + } + anim convo3 models/md5/heads/young/marscity/marine1_sitting_1_6.md5anim { + frame 1 sound_voice marscity_marine1_sitting_1_convo3 + } +} + +model char_marine_young_chair1 { + mesh models/md5/chars/tshirt.md5mesh + channel torso ( *Waist ) + channel legs ( chair origin Body Body2 *Hips -*Waist SPINNER ) + + anim af_pose models/md5/chars/af_pose.md5anim + anim ik_pose models/md5/chars/af_pose.md5anim + + anim stand models/md5/chars/marscity/marscity_marine1_stand.md5anim + anim idle1 models/md5/chars/marscity/marscity_marine1_idle1.md5anim + anim idle2 models/md5/chars/marscity/marscity_marine1_idle2.md5anim + anim idle3 models/md5/chars/marscity/marscity_marine1_idle3.md5anim + + anim talk_primary models/md5/chars/marscity/marscity_marine1_talk1.md5anim + anim talk_secondary1 models/md5/chars/marscity/marscity_marine1_talk2.md5anim + anim talk_secondary2 models/md5/chars/marscity/marscity_marine1_talk3.md5anim + + anim convo1 models/md5/chars/marscity/marscity_marine1_convo1.md5anim + anim convo2 models/md5/chars/marscity/marscity_marine1_convo2.md5anim + anim convo3 models/md5/chars/marscity/marscity_marine1_convo3.md5anim +} + +entityDef char_marine_young_chair1 { + "inherit" "npc_base" + "model" "char_marine_young_chair1" + "def_head" "char_marine_young_chair1_head" + "head_joint" "Shoulders" + + "copy_joint_world eyecontrol" "" + + "talk_no_turn" "1" + "talktime" "1" + + "turn_rate" "0" + + "talk0_blendin" "8" + "talk0_blendout" "8" + "talk1_blendin" "8" + "talk1_blendout" "8" + "talk2_blendin" "8" + "talk2_blendout" "8" + + "ik_numLegs" "0" + "ik_footSize" "0" + + "look_joint Waist" "0 0 0" + "look_joint Chest" "0 0 0" + "look_joint Shoulders" "0 0 0" + "look_joint headcontrol" "0.5 0.4 0" + "look_joint neckcontrol" "0.5 0.4 0" + "look_joint Ruparm" "0 0 0" + "look_joint Luparm" "0 0 0" + "look_min" "-40 -80 0" + "look_max" "40 80 0" + + "eye_turn_min" "-20 -30 0" + "eye_turn_max" "20 30 0" + + "def_attach" "prop_metal_lounge_chair" + "def_dropDeathItem" "moveable_kitchenchair" + "dropDeathItemJoint" "chair" + "dropDeathItemRotation" "0 0 -90" + "dropDeathItemOffset" "0 30 30" +} + +model marscity_soldier_black_head { + inherit head_black + + anim talk_primary models/md5/heads/black/marscity/marine5_hq_1.md5anim { + frame 1 sound_voice snd_talk_primary + } + anim talk_secondary1 models/md5/heads/black/marscity/marine5_hq_2.md5anim { + frame 1 sound_voice snd_talk_secondary + } + anim talk_secondary2 models/md5/heads/black/marscity/marine5_hq_3.md5anim { + frame 1 sound_voice snd_talk_secondary2 + } +} + +model marscity_soldier_black { + inherit npc_tshirt + anim stand models/md5/chars/PDA_idle_look.md5anim { + frame 1 event disableEyeFocus + } + anim idle_stand models/md5/chars/PDA_idle_look.md5anim { + frame 1 event disableEyeFocus + } + anim talk_primary models/md5/chars/PDA_talk.md5anim { + frame 1 event enableEyeFocus + } + anim talk_secondary1 models/md5/chars/PDA_talk.md5anim { + frame 1 event enableEyeFocus + } + anim talk_secondary2 models/md5/chars/PDA_talk.md5anim { + frame 1 event enableEyeFocus + } +} + +entityDef marscity_soldier_black { + "inherit" "npc_base" + "model" "marscity_soldier_black" + "def_head" "marscity_soldier_black_head" + "skin" "skins/characters/npcs/soldier_black" + "head_joint" "Shoulders" + + "copy_joint_world eyecontrol" "" + + "talk_no_turn" "1" + "talktime" "0" + "talkradius" "384" + + "ik_numLegs" "0" + "ik_footSize" "0" + + "look_joint Waist" ".1 .1 0" + "look_joint Chest" ".1 .1 0" + "look_joint Shoulders" ".2 .2 0" + "look_joint headcontrol" ".4 .4 0" + "look_joint Ruparm" "0 0 0" + "look_joint Luparm" "0 0 0" + + "head_focus_rate" "0.1" + + "talk0_blendin" "8" + "talk0_blendout" "8" + "talk1_blendin" "8" + "talk1_blendout" "8" + "talk2_blendin" "8" + "talk2_blendout" "8" + + "eye_turn_min" "-20 -30 0" + "eye_turn_max" "20 30 0" + + "def_attach" "pda_marscity_soldier_black" + "def_dropDeathItem" "pda_marscity_soldier_black" + "dropDeathItemJoint" "pda" + "dropDeathItemRotation" "0 0 0" + + "snd_talk_primary" "marscity_marine5_hq_primary" + "snd_talk_secondary" "marscity_marine5_hq_secondary1" + "snd_talk_secondary2" "marscity_marine5_hq_secondary2" +} + +model marscity_soldier_bald_pda_head { + inherit head_bald + + anim talk_primary models/md5/characters/npcs/heads/h3idle.md5anim + anim talk_secondary1 models/md5/characters/npcs/heads/h3idle.md5anim + anim talk_secondary2 models/md5/characters/npcs/heads/h3idle.md5anim +} + +model marscity_soldier_bald_pda { + inherit npc_tshirt + anim stand models/md5/chars/PDA_idle.md5anim { + frame 1 event disableEyeFocus + } + anim idle_stand models/md5/chars/PDA_idle_look.md5anim { + frame 1 event disableEyeFocus + } + anim talk_primary models/md5/chars/PDA_talk.md5anim { + frame 1 event enableEyeFocus + } + anim talk_secondary1 models/md5/chars/PDA_talk.md5anim { + frame 1 event enableEyeFocus + } + anim talk_secondary2 models/md5/chars/PDA_talk.md5anim { + frame 1 event enableEyeFocus + } +} + +entityDef marscity_soldier_bald_pda { + "inherit" "npc_base" + "model" "marscity_soldier_bald_pda" + "def_head" "marscity_soldier_bald_pda_head" + "head_joint" "Shoulders" + + "copy_joint_world eyecontrol" "" + + "talk_no_turn" "1" + "talktime" "0" + + "ik_numLegs" "0" + "ik_footSize" "0" + + "head_focus_rate" "0.1" + + "look_joint Waist" ".1 .1 0" + "look_joint Chest" ".1 .1 0" + "look_joint Shoulders" ".2 .2 0" + "look_joint headcontrol" ".4 .4 0" + "look_joint Ruparm" "0 0 0" + "look_joint Luparm" "0 0 0" + + "eye_turn_min" "-20 -30 0" + "eye_turn_max" "20 30 0" + + "def_attach" "pda_marscity_soldier_bald_pda" + "def_dropDeathItem" "pda_marscity_soldier_bald_pda" + "dropDeathItemJoint" "pda" + "dropDeathItemRotation" "0 0 0" + + "snd_talk_primary" "marscity_marine5_hq_primary" + "snd_talk_secondary" "marscity_marine5_hq_secondary1" + "snd_talk_secondary2" "marscity_marine5_hq_secondary2" +} + +model marscity_sci_team_request_head { + skin skins/characters/npcs/prettyoldhead.skin + mesh models/md5/heads/head02young/h2_cinematic.md5mesh + channel eyelids ( Ruplid Rlolid Luplid Llolid ) + + anim sci_team_request models/md5/heads/head02young/marscity/sci_team_request.md5anim +} + +model marscity_sci_team_request { + inherit npc_labcoat + + anim sci_team_request models/md5/chars/marscity/sci_team_request.md5anim { + frame 1 aviGame sci_team + frame 6 sound_voice marscity_sci_team_request + frame 215 aviGame + } +} + +entityDef marscity_sci_team_request { + "inherit" "npc_base" + "model" "marscity_sci_team_request" + "def_head" "marscity_sci_team_request_head" + "talk_no_turn" "1" + "turn_rate" "0" + + "copy_joint_world eyecontrol" "" + + "ik_numLegs" "0" + "head_joint" "Shoulders" + "sound_bone" "headcontrol" +} + +model marscity_suit_young2 { + inherit npc_suit + anim stand_hands_at_waist models/md5/chars/stand_hands_at_waist.md5anim +} + +entityDef marscity_suit_young2 { + "inherit" "npc_base" + "def_head" "head_young" + "head_joint" "Shoulders" + "model" "marscity_suit_young2" + + "copy_joint_world eyecontrol" "" +} + +//IPN NEWS GUY + +model marscity_ipn_news_head { + mesh models/md5/characters/npcs/heads/h2.md5mesh + skin skins/characters/npcs/prettyoldhead.skin + channel eyelids ( Ruplid Rlolid Luplid Llolid ) + + anim ipn_news models/md5/heads/head02young/marscity/ipn_news_head.md5anim { + //frame 1 aviGame ipn_news + //frame 4500 aviGame + } +} + +model marscity_ipn_news { + inherit npc_suit + + anim ipn_news models/md5/chars/marscity/ipn_news.md5anim { + frame 1 sound_voice marscity_ipn_news_vo + } +} + +entityDef marscity_ipn_news { + "inherit" "npc_base" + "model" "marscity_ipn_news" + "size" "12 12 74" + "def_attach" "prop_soft_desk_chair2" + + "copy_joint_world eyecontrol" "" + + "ik_numLegs" "0" + "def_head" "marscity_ipn_news_head" + "head_joint" "Shoulders" + + "sound_bone" "headcontrol" + "cinematic" "1" +} diff --git a/base/def/map_marscity2.def b/base/def/map_marscity2.def new file mode 100644 index 00000000..dcaee39b --- /dev/null +++ b/base/def/map_marscity2.def @@ -0,0 +1,260 @@ + +// CINEMATICS + +export fred { + camera maps/kevinc/marscity_2/sarge_mc2_video.mb -dest models/md5/cinematics/marscity_2/sarge_brief_cam +} + +entityDef marscity2_sarge_cam { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + + "spawnclass" "idCameraAnim" + + "anim sarge_brief_cam" "models/md5/cinematics/marscity_2/sarge_brief_cam.md5camera" +} + + +model marscity2_ceiling_head { + mesh models/md5/characters/npcs/heads/h2.md5mesh + channel eyelids ( Ruplid Rlolid Luplid Llolid ) + + anim talk_trigger models/md5/heads/young/marscity2/ceiling_trigger.md5anim { + frame 5 sound_voice snd_trigger + } + anim talk_primary models/md5/heads/young/marscity2/ceiling_primary.md5anim { + frame 5 sound_voice snd_primary + } + anim talk_secondary1 models/md5/heads/young/marscity2/ceiling_secondary1.md5anim { + frame 5 sound_voice snd_secondary1 + } + anim talk_secondary2 models/md5/heads/young/marscity2/ceiling_secondary2.md5anim { + frame 5 sound_voice snd_secondary2 + } + + anim stand models/md5/characters/npcs/heads/h2idle.md5anim + anim blink models/md5/characters/npcs/heads/h2blink.md5anim +} + + +model marscity2_maint_ceiling { + inherit npc_jumpsuit + + anim stand models/md5/chars/ceiling_mc2/ceiling_idle.md5anim + anim talk_trigger models/md5/chars/ceiling_mc2/ceiling_trigger.md5anim { + frame 270 event disableEyeFocus + frame 330 event enableEyeFocus + } + + anim talk_primary models/md5/chars/ceiling_mc2/ceiling_primary.md5anim + anim talk_secondary1 models/md5/chars/ceiling_mc2/ceiling_secondary1.md5anim + anim talk_secondary2 models/md5/chars/ceiling_mc2/ceiling_secondary2.md5anim +} + +entityDef marscity2_maint_ceiling { + "inherit" "npc_base" + "model" "marscity2_maint_ceiling" + "anim" "stand" + "sound_bone" "headcontrol" + "ik_numlegs" "0" + "talk_no_turn" "1" + "talktime" ".5" + "ignore_push" "1" + "no_cower" "1" + + "def_head" "marscity2_ceiling_head" + "head_joint" "Shoulders" + "copy_joint_world eyecontrol" "" + + "talk0_blendin" "8" + "talk0_blendout" "8" + "talk1_blendin" "8" + "talk1_blendout" "8" + "talk2_blendin" "8" + "talk2_blendout" "8" + "talk3_blendin" "8" + "talk3_blendout" "8" + + "bone_focus" "headcontrol" + "bone_orientation" "Body" + "bone_leftEye" "Leyeaim" + "bone_rightEye" "Reyeaim" + + "look_min" " -54 -72 0" + "look_max" " 125 72 0" + "look_joint Waist" "0 0 0" + "look_joint Chest" "0 0 0" + "look_joint Shoulders" "0 0 0" + "look_joint headcontrol" "1 1 0" + "look_joint Ruparm" "0 0 0" + "look_joint Luparm" "0 0 0" + + "eye_turn_min" "-20 -30 0" + "eye_turn_max" "20 30 0" + "eye_verticle_offset" "5" + "eye_horizontal_offset" "0" + "eye_focus_rate" "0.5" + "head_focus_rate" "0.1" + + "snd_trigger" "marscity2_ceiling_trigger" + "snd_primary" "marscity2_ceiling_primary" + "snd_secondary1" "marscity2_ceiling_secondary1" + "snd_secondary2" "marscity2_ceiling_secondary2" +} + + +model marscity2_cin_imp { + mesh models/md5/monsters/imp/imp.md5mesh + anim impfeast_loop models/md5/cinematics/marscity_2/impfeast_imp_loop.md5anim { + frame 1 sound_voice monster_demon_imp_chomp + frame 16 sound_body imp_fleshrip + frame 48 sound_voice monster_demon_imp_chomp + frame 58 sound_body imp_fleshrip + frame 85 sound_voice monster_demon_imp_chomp + frame 90 sound_body imp_fleshrip + } + anim impfest models/md5/cinematics/marscity_2/impfeast_imp.md5anim { + + frame 48 sound_voice monster_demon_imp_sight + frame 59 sound_voice2 mc2_imp_hit_glass + frame 71 sound_voice monster_demon_imp_footstep + frame 77 sound_voice monster_demon_imp_footstep + } +} + +entityDef marscity2_cin_imp { + "inherit" "cin_base" + "anim" "impfeast_loop" + "model" "marscity2_cin_imp" + + "snd_bite" "" + "snd_tear" "" + +} + +model marscity2_cin_fatty { + mesh models/md5/monsters/zfat/zfat.md5mesh + anim impfeast_loop models/md5/cinematics/marscity_2/impfeast_fatty_loop.md5anim + anim impfest models/md5/cinematics/marscity_2/impfeast_fatty.md5anim + anim impfest_end models/md5/cinematics/marscity_2/impfeast_fatty_end.md5anim + +} + +entityDef marscity2_cin_fatty { + "inherit" "cin_base" + "anim" "impfeast_loop" + "model" "marscity2_cin_fatty" + "skin" "skins/monsters/zombies/zfatwrench.skin" +} + +model marscity2_zombie_morgue { + inherit model_monster_zombie_morgue + + anim morgue_sleep models/md5/cinematics/marscity_2/morguesleep.md5anim { + ai_no_turn + frame 1 disableWalkIK + } + anim morgue_wakeup models/md5/cinematics/marscity_2/morguewakeup.md5anim { + ai_no_turn + frame 1 disableWalkIK + frame 63 enableWalkIK + } +} + +entityDef marscity2_zombie_morgue { + "inherit" "monster_zombie_morgue" + "anim" "morgue_sleep" + "model" "marscity2_zombie_morgue" +} + +model marscity2_video_head_sarge { + mesh models/md5/heads/sarge/sarge.md5mesh + anim idle models/md5/heads/sarge/sargeidle.md5anim + anim mc2_video models/md5/heads/sarge/marscity2/mission_brief.md5anim +} + + +model marscity2_video_sarge { + inherit npc_marine + + anim mc2_video models/md5/chars/sarge/marscity2/mission_brief.md5anim { + frame 1 event disableEyeFocus + frame 1 sound_voice snd_sargevid +// frame 1 aviGame sarge_mission +// frame 760 aviGame + } + +} + +entityDef marscity2_video_sarge { + "inherit" "npc_base" + "model" "marscity2_video_sarge" + "size" "1 1 1" + "anim" "mc2_video" + "sound_bone" "headcontrol" + "ik_numlegs" "0" + + "def_head" "marscity2_video_head_sarge" + "head_joint" "Shoulders" + + "snd_sargevid" "marscity2_sarge_briefing" +} + +model marscity2_hallway_zombie { + inherit model_monster_zombie + mesh models/md5/monsters/zombies/suitzombie.md5mesh + skin skins/monsters/zombies/suit.skin + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER eyecontrol chair) + + + anim hallway models/md5/cinematics/marscity_2/zkiller_zombie.md5anim +} + +entityDef marscity2_hallway_zombie { + "inherit" "monster_zombie_suit_skinny" + "anim" "hallway" + "model" "marscity2_hallway_zombie" + "bleed" "1" + +} + +model marscity2_hallway_marine { + inherit npc_marine + + anim hallway models/md5/cinematics/marscity_2/zkiller_marine.md5anim { + frame 45 event kill + } +} + +entityDef marscity2_hallway_marine { + "inherit" "npc_base" + "anim" "hallway" + "model" "marscity2_hallway_marine" + "velocityTime" "200" + "def_head" "head_bloodybald" + "head_joint" "Shoulders" + "def_attach" "prop_machinegun" + //"def_dropDeathItem" "moveable_item_machinegun" + "dropDeathItemJoint" "RHANDCONNECTOR" + "bleed" "1" + "copy_joint_world eyecontrol" "" + "size" "0 0 0" + "health" "300" + +} + +model marscity2_imp { + inherit monster_demon_imp + anim marinetossidle models/md5/cinematics/marscity_2/marinethrow_imp_idle.md5anim + anim marinetoss models/md5/cinematics/marscity_2/marinethrow_imp.md5anim { + frame 27 event throwMoveable + } + +} + +entityDef marscity2_imp { + "inherit" "monster_demon_imp" + "model" "marscity2_imp" +} diff --git a/base/def/map_monorail.def b/base/def/map_monorail.def new file mode 100644 index 00000000..1bccfcde --- /dev/null +++ b/base/def/map_monorail.def @@ -0,0 +1,274 @@ + +export fred { + + camera maps/fred/monorail/raisecommando2.mb -dest models/md5/cinematics/monorail/raisecommando_cam + camera maps/fred/monorail/crash.mb -dest models/md5/cinematics/monorail/crash_cam + + addoptions -prefix ENV_ + mesh maps/fred/monorail/crash.mb -dest models/md5/cinematics/monorail/crash_debris + anim maps/fred/monorail/crash.mb -dest models/md5/cinematics/monorail/crash_debris + +} + + +model monorail_riderhead { + mesh models/md5/characters/npcs/heads/h2.md5mesh + channel eyelids ( Ruplid Rlolid Luplid Llolid ) + + anim idle models/md5/characters/npcs/heads/h2idle.md5anim + anim stand models/md5/characters/npcs/heads/h2idle.md5anim + anim blink models/md5/characters/npcs/heads/h2blink.md5anim + + anim notrig models/md5/characters/npcs/heads/monorail/monorail_riderhead9.md5anim + + anim before_trigger models/md5/characters/npcs/heads/monorail/monorail_before_trigger.md5anim + anim hidden models/md5/characters/npcs/heads/monorail/monorail_riderhead1.md5anim + anim surprise models/md5/characters/npcs/heads/monorail/monorail_riderhead2.md5anim { + frame 10 sound_voice monorail_suitguy_surprise + } + anim standing models/md5/characters/npcs/heads/monorail/monorail_riderhead3.md5anim + anim sitdown models/md5/characters/npcs/heads/monorail/monorail_riderhead4.md5anim { + frame 25 sound_voice monorail_suitguy_trigger + } + anim sitting models/md5/characters/npcs/heads/monorail/monorail_riderhead5.md5anim + anim talk_primary models/md5/characters/npcs/heads/monorail/monorail_riderhead6.md5anim { + frame 1 sound_voice monorail_suitguy_primary + } + anim talk_secondary1 models/md5/characters/npcs/heads/monorail/monorail_riderhead7.md5anim { + frame 1 sound_voice snd_talk_secondary1 + } + anim talk_secondary2 models/md5/characters/npcs/heads/monorail/monorail_riderhead8.md5anim { + frame 1 sound_voice snd_talk_secondary2 + } +} + +model monorail_rider { + mesh models/md5/chars/labcoat.md5mesh + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER eyecontrol chair) + + anim af_pose models/md5/chars/af_pose.md5anim + + anim before_trigger models/md5/cinematics/monorail/before_trigger.md5anim + anim hidden models/md5/cinematics/monorail/before_trigger.md5anim + + //anim hidden models/md5/cinematics/monorail/rider_hidden.md5anim + anim surprise models/md5/cinematics/monorail/rider_surprise.md5anim + anim standing models/md5/cinematics/monorail/rider_stand.md5anim + anim sitdown models/md5/cinematics/monorail/rider_trigger.md5anim { +// frame 150 trigger monoplayerclip +// frame 200 enableEyeFocus +// frame 221 disableEyeFocus +// frame 280 enableEyeFocus +// frame 349 disableEyeFocus +// frame 430 enableEyeFocus +// frame 529 disableEyeFocus + + frame 126 trigger monoplayerclip + frame 160 trigger monoclip_relay + frame 176 enableEyeFocus + frame 197 disableEyeFocus + frame 256 enableEyeFocus + frame 325 disableEyeFocus + frame 406 enableEyeFocus + frame 505 disableEyeFocus + + } + anim sitting models/md5/cinematics/monorail/rider_sit.md5anim + anim talk_primary models/md5/cinematics/monorail/rider_primary.md5anim { + frame 1 enableEyeFocus + } + anim talk_secondary1 models/md5/cinematics/monorail/rider_secondary1.md5anim + anim talk_secondary2 models/md5/cinematics/monorail/rider_secondary2.md5anim + + anim notrig models/md5/cinematics/monorail/rider_notrig.md5anim + + anim cower models/md5/cinematics/monorail/rider_sit.md5anim + anim idle models/md5/cinematics/monorail/rider_sit.md5anim + anim stand models/md5/cinematics/monorail/rider_sit.md5anim + anim turn_left models/md5/cinematics/monorail/rider_sit.md5anim + anim turn_right models/md5/cinematics/monorail/rider_sit.md5anim + anim pain models/md5/cinematics/monorail/rider_sit.md5anim +} + +entityDef monorail_rider { + "inherit" "npc_base" + "model" "monorail_rider" + "talkradius" "512" + "turn_rate" "0" + "follow_once" "1" + "def_head" "monorail_riderhead" + "head_joint" "Shoulders" + "sound_bone" "Chest" + "talktime" "1" + "bone_focus" "headcontrol" + "bone_leftEye" "Leyeaim" + "bone_rightEye" "Reyeaim" + "bone_orientation" "Body2" + "ik_numLegs" "0" + "copy_joint_world eyecontrol" "" + + "look_min" "-90 -125 0" + "look_max" "25 125 0" + "look_joint Waist" "0 0 0" + "look_joint Chest" "0 0 0" + "look_joint Shoulders" ".2 .2 0" + "look_joint headcontrol" ".8 .8 0" + "look_joint Ruparm" "0 0 0" + "look_joint Luparm" "0 0 0" + + "eye_turn_min" "-20 -30 0" + "eye_turn_max" "20 30 0" + "eye_verticle_offset" "5" + "eye_horizontal_offset" "-8" + "eye_focus_rate" "0.05" + "head_focus_rate" "0.05" + + "talk0_blendin" "0" + "talk0_blendout" "0" + "talk1_blendin" "0" + "talk1_blendout" "0" + "talk2_blendin" "6" + "talk2_blendout" "6" + + "snd_talk_secondary1" "monorail_suitguy_secondary1" + "snd_talk_secondary2" "monorail_suitguy_secondary2" +} + +entityDef monorail_raisecommando_cam { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + + "spawnclass" "idCameraAnim" + + "anim raise" "models/md5/cinematics/monorail/raisecommando_cam.md5camera" + "cinematic" "1" +} + +model monorail_raisecommando_marine1 { + inherit npc_marine + anim raise models/md5/cinematics/monorail/fallingsoldier.md5anim +} + +entityDef monorail_raisecommando_marine1 { + "inherit" "npc_base" + "model" "monorail_raisecommando_marine1" + "anim" "raise" + "ik_numlegs" "0" + "cinematic" "1" + "def_head" "head_bald" + "head_joint" "Shoulders" + "copy_joint_world eyecontrol" "" + +} + +model monorail_raisecommando_betrugerhead { + mesh models/md5/heads/betruger/betruger.md5mesh + channel eyelids ( Ruplid Rlolid Luplid Llolid ) + + anim idle models/md5/heads/betruger/betrugeridle.md5anim + anim stand models/md5/heads/betruger/betrugeridle.md5anim + anim raise models/md5/heads/betruger/monorail/betruger_raise.md5anim + anim blink models/md5/heads/betruger/betrugerblink.md5anim +} + + +model monorail_raisecommando_betruger { + inherit npc_labcoat + anim raise models/md5/chars/betruger/monorail/raise.md5anim { + frame 1 event disableEyeFocus + frame 1 sound_global monorail_intro_sound + frame 1 sound_global monorail_intro_music + frame 5 sound_voice snd_one + frame 255 sound_voice snd_two + frame 330 trigger fredsplat1 + frame 338 trigger fredsplat2 + frame 390 sound_voice snd_three + } +} + +entityDef monorail_raisecommando_betruger { + "inherit" "npc_base" + "model" "monorail_raisecommando_betruger" + "anim" "raise" + "snd_one" "monorail_betruger_one" + "snd_two" "monorail_betruger_two" + "snd_three" "monorail_betruger_three" + + "def_head" "monorail_raisecommando_betrugerhead" + "head_joint" "Shoulders" + "cinematic" "1" +} + +model monorail_raisecommando_changer { + inherit npc_marine + anim raise models/md5/cinematics/monorail/transforming.md5anim +} + +entityDef monorail_raisecommando_changer { + "inherit" "npc_base" + "model" "monorail_raisecommando_changer" + "anim" "raise" + "cinematic" "1" + "def_head" "head_bald" + "head_joint" "Shoulders" + "copy_joint_world eyecontrol" "" + +} + +model monorail_raisecommando_zct { + mesh models/md5/monsters/zct/zct.md5mesh + anim raise models/md5/cinematics/monorail/zct.md5anim +} + +entityDef monorail_raisecommando_zct { + "inherit" "cin_base" + "model" "monorail_raisecommando_zct" + "anim" "raise" + "cinematic" "1" +} + +model monorail_crashsight_player { + mesh models/md5/characters/player/mocap/mgplayer.md5mesh + skin skins/player/machinegun.skin + + anim crash models/md5/cinematics/monorail/crash_player.md5anim + anim walk2stop models/md5/cinematics/monorail/walk2stopfull.md5anim { + frame 1 skin skins/player/machinegun.skin + } +} + +entityDef monorail_crashsight_player { + "inherit" "cin_base" + "model" "monorail_crashsight_player" + "anim" "crash" + "cinematic" "1" +} + +entityDef monorail_crash_cam { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + + "spawnclass" "idCameraAnim" + + "anim crash" "models/md5/cinematics/monorail/crash_cam.md5camera" + "cinematic" "1" +} + +model monorail_crash_debris { + mesh models/md5/cinematics/monorail/crash_debris.md5mesh + anim raise models/md5/cinematics/monorail/crash_debris.md5anim { + frame 20 sound_voice monorail_metal_01 + frame 60 sound_voice2 monorail_metal_02 + frame 90 sound_voice monorail_metal_03 + } +} + +entityDef monorail_crash_debris { + "inherit" "cin_base" + "model" "monorail_crash_debris" + "anim" "raise" + "cinematic" "1" +} \ No newline at end of file diff --git a/base/def/map_recycling.def b/base/def/map_recycling.def new file mode 100644 index 00000000..1c3f335b --- /dev/null +++ b/base/def/map_recycling.def @@ -0,0 +1,110 @@ +//REVENANT INTRO CINEMATICS + + + +export james { + camera maps/james/revenant/revenant_intro.mb -dest models/md5/cinematics/revenant/revintro_cam + + addoptions -prefix IMPACT_ + mesh maps/james/revenant/revenant_intro.mb -dest models/md5/cinematics/revenant/revintro_impact + anim maps/james/revenant/revenant_intro.mb -dest models/md5/cinematics/revenant/revintro_impact +} + +entityDef recycling1_revintro_cam { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + + "spawnclass" "idCameraAnim" + "anim" "revintro" + "cinematic" "1" + "anim revintro" "models/md5/cinematics/revenant/revintro_cam.md5camera" +} + +model recycling1_revintro_player { + skin skins/player/noweapon.skin + mesh models/md5/characters/player/mocap/player.md5mesh + anim revintro models/md5/cinematics/revenant/revintro_player.md5anim { + frame 27 sound_body snd_footstep + frame 35 sound_body snd_footstep + frame 49 sound_body snd_footstep + frame 55 sound_body snd_footstep + + } +} + +entityDef recycling1_revintro_player { + "inherit" "cin_base" + "model" "recycling1_revintro_player" + "anim" "revintro" + "cinematic" "1" + + "snd_footstep" "monster_demon_revenant_footstep" +} + +model recycling1_revintro_player2 { + //skin skins/player/noweapon.skin + mesh models/md5/cinematics/revenant/revintro_player2.md5mesh + anim revintro models/md5/cinematics/revenant/revintro_player2.md5anim +} + +entityDef recycling1_revintro_player2 { + "inherit" "cin_base" + "model" "recycling1_revintro_player2" + "anim" "revintro" + "cinematic" "1" +} + +model recycling1_revintro_rev { + mesh models/md5/monsters/revenant/james/revenant.md5mesh + anim revintro models/md5/cinematics/revenant/revintro_rev.md5anim { + frame 70 sound_voice2 revcin_yell1 + frame 103 sound_body snd_footstep + frame 109 sound_body snd_footstep + frame 114 sound_body snd_footstep + frame 117 sound_voice2 revcin_fire + frame 117 call rev_rocketa + frame 118 sound_body snd_footstep + frame 150 sound_voice2 revcin_fire + frame 150 call rev_rocketb + frame 270 sound_voice2 revcin_yell2 + //frame 1 trigger trigger_relay_79 + } +} + +entityDef recycling1_revintro_rev { + "inherit" "cin_base" + "model" "recycling1_revintro_rev" + "anim" "revintro" + "cinematic" "1" + + "snd_footstep" "monster_demon_revenant_footstep" +} + +model recycling1_revintro_impact { + mesh models/md5/cinematics/revenant/revintro_impact.md5mesh + anim revintro models/md5/cinematics/revenant/revintro_impact.md5anim { + + frame 149 sound_body2 recycling1_revintro_explo1 + frame 150 sound_body recycling1_revintro_stress + frame 169 sound_body2 recycling_revintro_clang1 + frame 181 sound_body2 recycling1_revintro_explo2 + frame 186 sound_body recycling_revintro_clang2 + frame 192 sound_body2 recycling_revintro_clang3 + frame 239 sound_body recycling_revintro_clang4 + frame 213 trigger trigger_relay_79 + frame 204 trigger rev_fire1 + frame 205 trigger speaker_rev_angryfire + frame 213 trigger rev_steam1 + frame 214 trigger speaker_rev_steam + + } +} + +entityDef recycling1_revintro_impact { + "inherit" "cin_base" + "model" "recycling1_revintro_impact" + "anim" "revintro" + "cinematic" "1" +} + diff --git a/base/def/map_recycling2.def b/base/def/map_recycling2.def new file mode 100644 index 00000000..9cadc057 --- /dev/null +++ b/base/def/map_recycling2.def @@ -0,0 +1,246 @@ +//CINEMATICS + +export fred { + camera maps/fred/recycling/betruger_video1.mb -dest models/md5/cinematics/recycling/betruger_vid_camera + camera maps/fred/recycling/betruger_video2.mb -dest models/md5/cinematics/recycling/betruger_vid_camera2 + +} + +export james { + camera maps/james/recycling2.mb -dest models/md5/cinematics/recycling2/mancintro_cam + + addoptions -prefix PIPE_ -keep steam1 steam2 steam3 steam4 + + mesh maps/james/recycling2.mb -dest models/md5/cinematics/recycling2/mancintro_pipes + anim maps/james/recycling2.mb -dest models/md5/cinematics/recycling2/mancintro_pipes + +} + +entityDef recycling2_mancintro_cam { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + "cinematic" "1" + + "spawnclass" "idCameraAnim" + "anim" "mancintro" + "anim mancintro" "models/md5/cinematics/recycling2/mancintro_cam.md5camera" +} + +model recycling2_mancintro_player { + skin skins/player/noweapon.skin + mesh models/md5/characters/player/mocap/player.md5mesh + anim mancintro models/md5/cinematics/recycling2/mancintro_player.md5anim +} + +entityDef recycling2_mancintro_player { + "inherit" "cin_base" + "model" "recycling2_mancintro_player" + "anim" "mancintro" + "cinematic" "1" +} + +model recycling2_mancintro_manc { + mesh models/md5/monsters/mancubus/james/mancubus.md5mesh + anim mancintro models/md5/cinematics/recycling2/mancintro_manc.md5anim { + + frame 3 sound_global monster_demon_mancubus_sight + frame 25 sound_body monster_demon_mancubus_step + frame 75 sound_body monster_demon_mancubus_step + frame 100 sound_body monster_demon_mancubus_step + frame 100 sound_global monster_demon_mancubus_chatter + frame 125 sound_body monster_demon_mancubus_step + frame 150 sound_body monster_demon_mancubus_step + frame 175 sound_body monster_demon_mancubus_step + frame 185 sound_body monster_demon_mancubus_step + frame 200 sound_body monster_demon_mancubus_step + frame 201 sound_body monster_demon_guardian_death_impact + + frame 208 sound_global monster_demon_mancubus_pain + frame 234 sound_global monster_demon_mancubus_pain + frame 283 sound_global monster_demon_mancubus_sight + frame 307 sound_body monster_demon_mancubus_step + frame 317 sound_body monster_demon_mancubus_step + frame 327 sound_body monster_demon_mancubus_step + frame 338 sound_body monster_demon_mancubus_step + frame 344 sound_body monster_demon_mancubus_step + frame 351 sound_body monster_demon_mancubus_step + frame 356 sound_body monster_demon_mancubus_step + frame 362 sound_body monster_demon_mancubus_step + + } + +} + +entityDef recycling2_mancintro_manc { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + "spawnclass" "idAnimated" + "model" "recycling2_mancintro_manc" + "anim" "mancintro" + "cinematic" "1" +} + +model recycling2_mancintro_pipes { + mesh models/md5/cinematics/recycling2/mancintro_pipes.md5mesh + anim mancintro models/md5/cinematics/recycling2/mancintro_pipes.md5anim { + + frame 208 sound_body recycling_revintro_clang3 + frame 234 sound_body recycling_revintro_clang2 + frame 283 sound_body recycling_revintro_clang1 + frame 284 sound_body2 recycling_revintro_clang3 + frame 208 trigger manc_steam1 + frame 208 trigger manc_steam2 + frame 208 trigger manc_steam3 + frame 208 trigger manc_steam4 + + } + +} + +entityDef recycling2_mancintro_pipes { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + + "spawnclass" "idAnimated" + "model" "recycling2_mancintro_pipes" + "anim" "mancintro" + "cinematic" "1" +} + +//Triple Imps + +export fred { + + options -prefix IMP1_ -keep Lknee Rknee Lelbow Relbow camera Body -keep Rmissile Lmissile -parent Rmissile Rhand -parent Lmissile Lhand -parent Rwing Chest -parent Lwing Chest -parent Hips Body -parent Waist Body -parent camera Head + + + anim maps/fred/recycling/recycling.mb -dest models/md5/cinematics/recycling/imp1 + + options -prefix IMP4_ -keep Lknee Rknee Lelbow Relbow camera Body -keep Rmissile Lmissile -parent Rmissile Rhand -parent Lmissile Lhand -parent Rwing Chest -parent Lwing Chest -parent Hips Body -parent Waist Body -parent camera Head + + anim maps/fred/recycling/recycling.mb -dest models/md5/cinematics/recycling/imp2 + + options -prefix IMP3_ -keep Lknee Rknee Lelbow Relbow camera Body -keep Rmissile Lmissile -parent Rmissile Rhand -parent Lmissile Lhand -parent Rwing Chest -parent Lwing Chest -parent Hips Body -parent Waist Body -parent camera Head + + anim maps/fred/recycling/recycling.mb -dest models/md5/cinematics/recycling/imp3 + +} + +model recycling2_imp1_cin { + mesh models/md5/monsters/imp/imp.md5mesh + anim crawl models/md5/cinematics/recycling/imp1.md5anim +} + +entityDef recycling2_imp1_cin { + "inherit" "cin_base" + "model" "recycling2_imp1_cin" + "anim" "crawl" +} + +model recycling2_imp2_cin { + mesh models/md5/monsters/imp/imp.md5mesh + anim crawl models/md5/cinematics/recycling/imp2.md5anim { + frame 3 sound_body monster_demon_imp_footstep + frame 12 sound_body monster_demon_imp_footstep + frame 16 sound_body2 monster_demon_imp_footstep + frame 20 sound_body monster_demon_imp_footstep + frame 20 sound_body2 monster_demon_imp_footstep + frame 25 sound_body monster_demon_imp_footstep + frame 30 sound_voice monster_demon_imp_chatter + frame 48 sound_body monster_demon_imp_footstep + frame 50 sound_body2 monster_demon_imp_footstep + frame 48 sound_body monster_demon_imp_footstep + frame 53 sound_body2 monster_demon_imp_footstep + frame 55 sound_body monster_demon_imp_footstep + frame 59 sound_body2 monster_demon_imp_footstep + frame 48 sound_body monster_demon_imp_footstep + frame 72 sound_body2 monster_demon_imp_footstep + frame 75 sound_body monster_demon_imp_footstep + frame 83 sound_body2 monster_demon_imp_footstep + frame 94 sound_body monster_demon_imp_footstep + frame 100 sound_body2 monster_demon_imp_footstep + frame 105 sound_body monster_demon_imp_footstep + } +} + +entityDef recycling2_imp2_cin { + "inherit" "cin_base" + "model" "recycling2_imp2_cin" + "anim" "crawl" +} + +model recycling2_imp3_cin { + mesh models/md5/monsters/imp/imp.md5mesh + anim crawl models/md5/cinematics/recycling/imp3.md5anim +} + +entityDef recycling2_imp3_cin { + "inherit" "cin_base" + "model" "recycling2_imp3_cin" + "anim" "crawl" +} + +model recycling2_video_bethead { + inherit head_betruger + anim video_a models/md5/heads/betruger/recycling2/betvideo1.md5anim + anim video_b models/md5/heads/betruger/recycling2/betvideo2.md5anim + +} + +model recycling2_video_betruger { + mesh models/md5/chars/labcoat.md5mesh + + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER eyecontrol) + + anim idle models/md5/chars/betruger/recycling/betruger_vid1.md5anim + anim stand models/md5/chars/betruger/recycling/betruger_vid1.md5anim + anim video_a models/md5/chars/betruger/recycling/betruger_vid1.md5anim { +// frame 1 aviGame betvid1 + frame 1 event disableEyeFocus + frame 1 sound_voice recycling_video_betruger1 +// frame 1120 aviGame + } + anim video_b models/md5/chars/betruger/recycling/betruger_vid2.md5anim { + // frame 1 aviGame betvid2 + frame 1 event disableEyeFocus + frame 1 sound_voice recycling_video_betruger2 + // frame 915 aviGame + } +} + + +entityDef recycling2_video_betruger { + "inherit" "character_default" + "size" "1 1 1" + "model" "recycling2_video_betruger" + "anim" "video" + "sound_bone" "Chest" + "def_head" "recycling2_video_bethead" + "head_joint" "Shoulders" + +// "bone_focus" "headcontrol" +// "bone_orientation" "Body" +// "bone_leftEye" "Leyeaim" +// "bone_rightEye" "Reyeaim" + + "copy_joint neckcontrol" "neckcontrol" + "copy_joint headcontrol" "headcontrol" + "copy_joint_world eyecontrol" "eyecontrol" +} + +entityDef recycling2_video_cam { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + + "spawnclass" "idCameraAnim" + + "anim betruger_cam_a" "models/md5/cinematics/recycling/betruger_vid_camera.md5camera" + "anim betruger_cam_b" "models/md5/cinematics/recycling/betruger_vid_camera2.md5camera" + +} + diff --git a/base/def/map_site3.def b/base/def/map_site3.def new file mode 100644 index 00000000..aa881607 --- /dev/null +++ b/base/def/map_site3.def @@ -0,0 +1,170 @@ +//CINEMATICS + +export fred { + options -prefix floor_ + mesh maps/fred/site3/hkfloor.mb -range 1 1 -dest models/md5/cinematics/site3/floor_floor + anim maps/fred/site3/hkfloor.mb -xyzprecision .01 -range 1 1 -dest models/md5/cinematics/site3/floor_flooridle + anim maps/fred/site3/hkfloor.mb -xyzprecision .01 -range 1 165 -dest models/md5/cinematics/site3/floor_floor +} + +export fred { + + camera maps/steve/site3_artifacts.mb -dest models/md5/cinematics/site3/site3_roq_camera +} + +entityDef site3_roq_cam { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + + "spawnclass" "idCameraAnim" + "cinematic" "1" + + "anim site3_roq_cam" "models/md5/cinematics/site3/site3_roq_camera.md5camera " +} + +model site3_floor { + mesh models/md5/cinematics/site3/floor_floor.md5mesh + anim floor models/md5/cinematics/site3/floor_floor.md5anim { + frame 19 trigger hkforce + frame 45 trigger hkforce + frame 82 trigger hkforce + frame 94 trigger hkforce + frame 115 trigger hkforce + frame 135 trigger hkforce + frame 161 trigger hkhole + } + anim flooridle models/md5/cinematics/site3/floor_flooridle.md5anim +} + +entityDef site3_floor { + "editor_color" "1 .5 .3" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 32" + "editor_copy2" "anim" + + "spawnclass" "idAnimated" + + "anim" "floor" + "model" "site3_floor" +} + +model site3_hellknight { + inherit monster_demon_hellknight + + anim hkidle models/md5/cinematics/site3/floor_hkidle.md5anim { + ai_no_turn + frame 1 disableGravity + frame 1 disableWalkIK + } + anim hk models/md5/cinematics/site3/floor_hk.md5anim { + ai_no_turn + frame 1 disableGravity + frame 1 disableWalkIK + frame 145 enableWalkIK + frame 145 enableGravity + + } +} + +entityDef site3_hellknight { + "inherit" "monster_demon_hellknight" + "anim" "hkidle" + "model" "site3_hellknight" +} + +model site3_sci_head { + inherit head_old + + anim stand models/md5/characters/npcs/heads/h1idle.md5anim + anim talk_trigger models/md5/heads/old/site3/sci_trigger.md5anim { + frame 1 sound_voice snd_trigger + } + anim talk_primary models/md5/heads/old/site3/sci_primary.md5anim { + frame 1 sound_voice snd_primary + } + anim talk_secondary1 models/md5/heads/old/site3/sci_secondary1.md5anim{ + frame 1 sound_voice snd_secondary1 + } + anim talk_secondary2 models/md5/heads/old/site3/sci_secondary2.md5anim { + frame 1 sound_voice snd_secondary2 + } +} + + +model site3_sci { + mesh models/md5/chars/labcoat.md5mesh + + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER chair) + + anim af_pose models/md5/chars/af_pose.md5anim + anim ik_pose models/md5/chars/af_pose.md5anim + + anim pain models/md5/chars/npc_stagger_loop.md5anim + anim stand models/md5/chars/stand.md5anim + anim idle models/md5/chars/stand.md5anim + + anim cower models/md5/chars/cower4.md5anim + + anim walk models/md5/chars/walk_normal.md5anim { + frame 3 sound_body snd_footstep + frame 17 sound_body snd_footstep + frame 32 sound_body snd_footstep + frame 46 sound_body snd_footstep + } + + anim turn_left models/md5/chars/turn_left.md5anim, models/md5/chars/turn_left_rotation180.md5anim { + anim_turn + } + + anim turn_right models/md5/chars/turn_right.md5anim, models/md5/chars/turn_right_rotation180.md5anim { + anim_turn + } + + anim operate_computer_custom models/md5/chars/site3_sci/stand_site3.md5anim + + anim initial_frame models/md5/chars/site3_sci/initial_frame.md5anim + anim talk_trigger models/md5/chars/site3_sci/trigger.md5anim + anim talk_primary models/md5/chars/site3_sci/primary.md5anim + anim talk_secondary1 models/md5/chars/site3_sci/secondary1.md5anim + anim talk_secondary2 models/md5/chars/site3_sci/secondary2.md5anim +} + +entityDef site3_sci { + "inherit" "npc_base" + "model" "site3_sci" + "def_head" "site3_sci_head" + "head_joint" "Shoulders" + "size" "15 14 60" + + "sound_bone" "headcontrol" + "copy_joint_world eyecontrol" "" + + "talk_no_turn" "1" + "talktime" "0" + "talk0_blendin" "0" + "talk0_blendout" "8" + "talk1_blendin" "12" + "talk1_blendout" "12" + "talk2_blendin" "12" + "talk2_blendout" "12" + + "look_joint Waist" "0 0 0" + "look_joint Chest" "0.2 0.2 0" + "look_joint Shoulders" "0.2 0.2 0" + "look_joint headcontrol" "0.6 0.6 0" + "look_joint neckcontrol" "0 0 0" + "look_joint Ruparm" "-0.5 0 0" + "look_joint Luparm" "-0.5 0 0" + "look_min" "-40 -60 0" + "look_max" "40 60 0" + + "eye_turn_min" "-20 -30 0" + "eye_turn_max" "20 30 0" + + "snd_trigger" "site3_sci_trigger" + "snd_primary" "site3_sci_primary" + "snd_secondary1" "site3_sci_secondary1" + "snd_secondary2" "site3_sci_secondary2" +} diff --git a/base/def/map_space.def b/base/def/map_space.def new file mode 100644 index 00000000..61f10eb1 --- /dev/null +++ b/base/def/map_space.def @@ -0,0 +1,141 @@ +export fred { + + camera maps/fred/marscity/ship_in_space.mb -range 1 197 -dest models/md5/cinematics/marscity/spacecam1 + camera maps/fred/marscity/ship_in_space.mb -range 198 326 -dest models/md5/cinematics/marscity/spacecam2 + camera maps/fred/marscity/ship_in_space.mb -range 327 435 -dest models/md5/cinematics/marscity/spacecam3 + camera maps/fred/marscity/monoflyby.mb -dest models/md5/cinematics/marscity/spacemonocam + + mesh maps/fred/marscity/ship_in_space.mb -dest models/md5/cinematics/marscity/spaceplanet -prefix FLARE_ + anim maps/fred/marscity/ship_in_space.mb -range 1 197 -dest models/md5/cinematics/marscity/spaceplanet_a -prefix FLARE_ + anim maps/fred/marscity/ship_in_space.mb -range 198 326 -dest models/md5/cinematics/marscity/spaceplanet_b -prefix FLARE_ + anim maps/fred/marscity/ship_in_space.mb -range 327 435 -dest models/md5/cinematics/marscity/spaceplanet_c -prefix FLARE_ + + mesh maps/fred/marscity/ship_in_space.mb -dest models/md5/cinematics/marscity/spacestars -prefix STARS_ + anim maps/fred/marscity/ship_in_space.mb -range 1 197 -dest models/md5/cinematics/marscity/spacestars_a -prefix STARS_ + anim maps/fred/marscity/ship_in_space.mb -range 198 326 -dest models/md5/cinematics/marscity/spacestars_b -prefix STARS_ + anim maps/fred/marscity/ship_in_space.mb -range 327 435 -dest models/md5/cinematics/marscity/spacestars_c -prefix STARS_ + + options -prefix SHIP_ -keep neworigin ship dropship_LightL dropship3L dropship2L dropship1L dropship_backL dropship_top2L dropship_top1L dropship_LightR dropship3R dropship2R dropship1R dropship_backR dropship_top2R dropship_top1R -rename origin oldorigin -rename neworigin origin + mesh maps/fred/marscity/ship_in_space.mb -dest models/md5/cinematics/marscity/spaceship + anim maps/fred/marscity/spacebind.mb -dest models/md5/cinematics/marscity/spaceship_bindme + anim maps/fred/marscity/ship_in_space.mb -range 1 197 -dest models/md5/cinematics/marscity/spaceship_shot1 + anim maps/fred/marscity/ship_in_space.mb -range 198 326 -dest models/md5/cinematics/marscity/spaceship_shot2 + anim maps/fred/marscity/ship_in_space.mb -range 327 435 -dest models/md5/cinematics/marscity/spaceship_shot3 + anim maps/fred/marscity/monoflyby.mb -dest models/md5/cinematics/marscity/spacemonoship + anim maps/fred/marscity/window.mb -dest models/md5/cinematics/marscity/windowship + anim maps/fred/marscity/hangarshipendingloop.mb -range 360 1420 -dest models/md5/cinematics/marscity/hangarshipbigend + anim maps/fred/marscity/hangarshipendingloop.mb -range 1420 1650 -dest models/md5/cinematics/marscity/hangarshipbigendloop + + + options -prefix SHIP_ -keep neworigin ship dropship_LightL dropship3L dropship2L dropship1L dropship_backL dropship_top2L dropship_top1L dropship_LightR dropship3R dropship2R dropship1R dropship_backR dropship_top2R dropship_top1R -rename origin oldorigin -rename neworigin origin + mesh maps/fred/marscity/hangar.mb -dest models/md5/cinematics/marscity/hangarship + anim maps/fred/marscity/hangar.mb -range 30 100 -dest models/md5/cinematics/marscity/hangarship_a + anim maps/fred/marscity/hangar.mb -range 101 200 -dest models/md5/cinematics/marscity/hangarship_b + anim maps/fred/marscity/hangar.mb -range 201 267 -dest models/md5/cinematics/marscity/hangarship_c + anim maps/fred/marscity/hangar.mb -range 268 389 -dest models/md5/cinematics/marscity/hangarship_d + anim maps/fred/marscity/smallshipbind.mb -dest models/md5/cinematics/marscity/smallbind + + + +} + +entityDef space_cam { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + + "spawnclass" "idCameraAnim" +// "anim space" "models/md5/cinematics/marscity/spacecam.camera" + "anim space1" "models/md5/cinematics/marscity/spacecam1.camera" + "anim space2" "models/md5/cinematics/marscity/spacecam2.camera" + "anim space3" "models/md5/cinematics/marscity/spacecam3.camera" + + "anim mono" "models/md5/cinematics/marscity/spacemonocam.camera" +} + +model space_planet { + mesh models/md5/cinematics/marscity/spaceplanet.md5mesh + anim space models/md5/cinematics/marscity/spaceplanet.md5anim + anim space_a models/md5/cinematics/marscity/spaceplanet_a.md5anim + anim space_b models/md5/cinematics/marscity/spaceplanet_b.md5anim + anim space_c models/md5/cinematics/marscity/spaceplanet_c.md5anim + +} + +entityDef space_planet { + "inherit" "cin_base" + "model" "space_planet" + "anim" "space" + "num_anims" "3" + "anim1" "space_a" + "anim2" "space_b" + "anim3" "space_c" +} + +model space_stars { + mesh models/md5/cinematics/marscity/spacestars.md5mesh + anim space models/md5/cinematics/marscity/spacestars.md5anim + anim space_a models/md5/cinematics/marscity/spacestars_a.md5anim + anim space_b models/md5/cinematics/marscity/spacestars_b.md5anim + anim space_c models/md5/cinematics/marscity/spacestars_c.md5anim +} + +entityDef space_stars { + "inherit" "cin_base" + "model" "space_stars" + "anim" "space" + "num_anims" "3" + "anim1" "space_a" + "anim2" "space_b" + "anim3" "space_c" + +} + +model space_ship { + mesh models/md5/cinematics/marscity/spaceship.md5mesh + skin skins/dropshipnoflare.skin + anim bind models/md5/cinematics/marscity/spaceship_bindme.md5anim + anim space_a models/md5/cinematics/marscity/spaceship_shot1.md5anim { + frame 45 sound_global snd_flyby + } + anim space_b models/md5/cinematics/marscity/spaceship_shot2.md5anim { + frame 1 trigger light_11 + frame 1 sound_global snd_flyby2 + frame 80 trigger func_emitter_48 + } + anim space_c models/md5/cinematics/marscity/spaceship_shot3.md5anim { + frame 1 sound_global snd_entry + } + anim mono models/md5/cinematics/marscity/spacemonoship.md5anim { + // frame 1 recordDemo monoflyby + // frame 70 recordDemo + } + anim window models/md5/cinematics/marscity/windowship.md5anim +} + +entityDef space_ship { + "inherit" "cin_base" + "model" "space_ship" + "anim" "space" + "num_anims" "3" + "anim1" "space_a" + "anim2" "space_b" + "anim3" "space_c" + + + "smokeParticleSystem1" "dropship_top1R" + "smokeParticleSystem2" "dropship_top1L" + "smokeParticleSystem3" "dropship_top2R" + "smokeParticleSystem4" "dropship_top2L" + "smokeParticleSystem5" "dropship1R" + "smokeParticleSystem6" "dropship1L" + "smokeParticleSystem7" "dropship2R" + "smokeParticleSystem8" "dropship2L" + "smokeParticleSystem9" "dropship3R" + "smokeParticleSystem10" "dropship3L" + + "snd_flyby" "mc_ship_flyby" + "snd_flyby2" "mc_ship_flyby2" + "snd_entry" "mc_ship_reentry" +} + diff --git a/base/def/map_underground.def b/base/def/map_underground.def new file mode 100644 index 00000000..1ea32d49 --- /dev/null +++ b/base/def/map_underground.def @@ -0,0 +1,1812 @@ + + +export fred { + options -prefix ENV_ + mesh maps/fred/underground/impstairs.mb -dest models/md5/cinematics/underground/impstairs + anim maps/fred/underground/impstairs.mb -dest models/md5/cinematics/underground/impstairs +} + +export james { + + addoptions -prefix PIPES_ -keep steam1 steam2 steam3 steam4 + + mesh maps/james/mc_underground/mcu_pipes.mb -dest models/md5/cinematics/underground/mcu_pipes + anim maps/james/mc_underground/mcu_pipes.mb -dest models/md5/cinematics/underground/mcu_pipes +} + +//CINEMATICS + +export fred { + + options -sourcedir maps/fred/underground -destdir models/md5/cinematics/underground + camera choke.mb -range 14 45 -dest invasion_choke_cam_a + camera choke.mb -range 46 103 -dest invasion_choke_cam_b + camera choke.mb -range 104 180 -dest invasion_choke_cam_c + camera impintro.mb -dest impintro_cam + camera tele_invasion.mb -dest invasion_teleporter_cam + camera invasion2.mb -dest hallway_invasioncam + camera invasion3.mb -dest hallway_invasion2cam + camera invasion4.mb -dest hallway_invasion3cam + camera invasion5.mb -dest hallway_invasion4cam + camera invasion6a.mb -range 25 85 -dest underground/hallway_invasion5cam + camera newsec.mb -dest hallway_invasion6cam + camera invasion6c.mb -dest hallway_invasion7cam + camera crazysci.mb -range 1 114 -dest crazy_cam1 + camera crazysci.mb -range 115 224 -dest crazy_cam2 + camera crazysci2.mb -range 200 648 -dest crazy_cam3 + camera crazysciend.mb -dest crazy_cam_end + camera pentagram.mb -range 1 45 -dest pentagram_cam_a + camera pentagram.mb -range 46 80 -dest pentagram_cam_b + camera pentagram.mb -range 81 105 -dest pentagram_cam_c + camera pentagram.mb -range 106 120 -dest pentagram_cam_d + camera invasion_bathroom.mb + camera zintro_reversed_new.mb -range 1 120 -dest invasion_zintro_cam1 + camera zintro_reversed_new.mb -range 121 230 -dest invasion_zintro_cam2 + camera headache.mb -dest headache_cam + + addoptions -prefix PENT_ + mesh pentagram.mb + anim pentagram.mb -range 1 45 -dest pentagram_a + anim pentagram.mb -range 46 80 -dest pentagram_b + anim pentagram.mb -range 81 105 -dest pentagram_c + anim pentagram.mb -range 106 120 -dest pentagram_d + + options -prefix DOOR_ -sourcedir maps/james/mc_underground -destdir models/md5/cinematics/underground + mesh impcrawl_armdoor.mb -dest underground_impcrawl_door + anim impcrawl_armdoor.mb -dest underground_impcrawl_door + + options -prefix RAIL_ -sourcedir maps/fred/underground -destdir models/md5/cinematics/underground + mesh james_fall.mb -dest ledge + anim james_fall.mb -dest ledge + + options -prefix LIGHT_ -sourcedir maps/fred/underground -destdir models/md5/cinematics/underground + mesh invasion3.mb -dest lightattacher + anim invasion2.mb -dest lightattacherrun + anim invasion3.mb -dest lightattacher + anim invasion4.mb -dest lightattacherwindow + anim invasion5.mb -dest lightattacher2 + anim invasion6a.mb -range 25 85 -dest lightattacher3 + anim newsec.mb -dest lightattacher4 + anim invasion6c.mb -dest lightattacher5 + anim tele_invasion.mb -dest lightattachertele + + // ghost skulls + options -prefix SKULL_ -sourcedir maps/fred/underground -destdir models/md5/cinematics/underground + anim invasion6c.mb -dest hallway_invasions1g + + // ghost skulls + options -prefix SKULL_ -sourcedir maps/fred/underground -destdir models/md5/cinematics/underground + mesh newsec.mb -dest models/md5/cinematics/underground/chestskull + anim newsec.mb -dest models/md5/cinematics/underground/hallway_invasions1f + + anim newsec.mb -dest hallway_invasions1f + options -prefix SKULL1_ -sourcedir maps/fred/underground -destdir models/md5/cinematics/underground + anim tele_invasion.mb -dest skullone + anim invasion2.mb -dest hallway_invasions1 + anim invasion3.mb -dest hallway_invasions1b + anim invasion4.mb -dest hallway_invasions1c + anim invasion5.mb -dest hallway_invasions1d + anim invasion6a.mb -range 25 85 -dest hallway_invasions1e + + anim skull_encounters.mb -dest garageskull + + options -prefix SKULL2_ -sourcedir maps/fred/underground -destdir models/md5/cinematics/underground + mesh newsec.mb -dest newsecskull + mesh tele_invasion.mb -dest littleskull + anim tele_invasion.mb -dest skulltwo + anim invasion2.mb -dest hallway_invasions2 + anim invasion3.mb -dest hallway_invasions2b + anim invasion4.mb -dest hallway_invasions2c + anim invasion5.mb -dest hallway_invasions2d + anim invasion6a.mb -range 25 85 -dest hallway_invasions2e + + anim newsec.mb -dest hallway_invasions2f + anim invasion6c.mb -dest hallway_invasions2g + + anim skull_encounters.mb -dest boxesskull1 + + options -prefix SKULL3_ -sourcedir maps/fred/underground -destdir models/md5/cinematics/underground + anim tele_invasion.mb -dest skullthree + anim invasion2.mb -dest hallway_invasions3 + anim invasion3.mb -dest hallway_invasions3b + anim invasion4.mb -dest hallway_invasions3c + + anim skull_encounters.mb -dest boxesskull2 + + options -prefix SKULL4_ -sourcedir maps/fred/underground -destdir models/md5/cinematics/underground + anim tele_invasion.mb -dest skullfour + anim skull_encounters.mb -dest flashlightskull1 + + options -prefix SKULL5_ -sourcedir maps/fred/underground -destdir models/md5/cinematics/underground + anim tele_invasion.mb -dest skullfive + anim skull_encounters.mb -dest flashlightskull2 + + options -prefix SKULL6_ -sourcedir maps/fred/underground -destdir models/md5/cinematics/underground + mesh tele_invasion.mb -dest mediumskull + anim tele_invasion.mb -dest skullsix + options -prefix SKULL8_ -sourcedir maps/fred/underground -destdir models/md5/cinematics/underground + anim tele_invasion.mb -dest skulleight + options -prefix SKULL9_ -sourcedir maps/fred/underground -destdir models/md5/cinematics/underground + mesh tele_invasion.mb -dest bigskull + anim tele_invasion.mb -dest skullseven + options -prefix SKULL_ + anim maps/fred/underground/crazy_into_zombie.mb -range 440 550 -dest models/md5/cinematics/underground/transformskull + options -prefix SKULL2_ + anim maps/fred/underground/crazy_into_zombie.mb -range 440 565 -dest models/md5/cinematics/underground/transformskull2 + +} + + +entityDef underground_invasion_cam { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + + "spawnclass" "idCameraAnim" + + "anim crazy1" "models/md5/cinematics/underground/crazy_cam1.md5camera" + "anim crazy2" "models/md5/cinematics/underground/crazy_cam2.md5camera" + "anim crazy3" "models/md5/cinematics/underground/crazy_cam3.md5camera" + + "anim crazy" "models/md5/cinematics/underground/crazy_cam.md5camera" + "anim end" "models/md5/cinematics/underground/crazy_cam_end.md5camera" + "anim teleporter" "models/md5/cinematics/underground/invasion_teleporter_cam.md5camera" + "anim hallway" "models/md5/cinematics/underground/hallway_invasioncam.md5camera" + "anim hallway2" "models/md5/cinematics/underground/hallway_invasion2cam.md5camera" + "anim hallway3" "models/md5/cinematics/underground/hallway_invasion3cam.md5camera" + "anim hallway4" "models/md5/cinematics/underground/hallway_invasion4cam.md5camera" + "anim hallway5" "models/md5/cinematics/underground/hallway_invasion5cam.md5camera" + "anim hallway6" "models/md5/cinematics/underground/hallway_invasion6cam.md5camera" + "anim hallway7" "models/md5/cinematics/underground/hallway_invasion7cam.md5camera" + "anim pentagram_a" "models/md5/cinematics/underground/pentagram_cam_a.md5camera" + "anim pentagram_b" "models/md5/cinematics/underground/pentagram_cam_b.md5camera" + "anim pentagram_c" "models/md5/cinematics/underground/pentagram_cam_c.md5camera" + "anim pentagram_d" "models/md5/cinematics/underground/pentagram_cam_d.md5camera" + "anim bathroom" "models/md5/cinematics/underground/invasion_bathroom.md5camera" + "anim choke_a" "models/md5/cinematics/underground/invasion_choke_cam_a.md5camera" + "anim choke_b" "models/md5/cinematics/underground/invasion_choke_cam_b.md5camera" + "anim choke_c" "models/md5/cinematics/underground/invasion_choke_cam_c.md5camera" + "anim zintro_a" "models/md5/cinematics/underground/invasion_zintro_cam1.md5camera" + "anim zintro_b" "models/md5/cinematics/underground/invasion_zintro_cam2.md5camera" +} + +model underground_invasion_pentagram { + mesh models/md5/cinematics/underground/pentagram.md5mesh + anim pentagram_a models/md5/cinematics/underground/pentagram_a.md5anim + anim pentagram_b models/md5/cinematics/underground/pentagram_b.md5anim + anim pentagram_c models/md5/cinematics/underground/pentagram_c.md5anim + anim pentagram_d models/md5/cinematics/underground/pentagram_d.md5anim +} + +entityDef underground_invasion_pentagram { + "inherit" "cin_base" + "anim" "pentagram_a" + "model" "underground_invasion_pentagram" +} + + + +model underground_invasion_lightattacher { + mesh models/md5/cinematics/underground/lightattacher.md5mesh + anim tele models/md5/cinematics/underground/lightattachertele.md5anim + anim first models/md5/cinematics/underground/lightattacherrun.md5anim + anim movea models/md5/cinematics/underground/lightattacher.md5anim { + frame 50 trigger implight1 + frame 51 trigger impexplosion1 + frame 54 trigger implight1 + } + anim moveb models/md5/cinematics/underground/lightattacher2.md5anim { + frame 15 trigger fredlightthing + frame 17 trigger frexplode1 + frame 18 trigger fredlightthing + frame 18 trigger light_36 + frame 18 trigger fredflare + frame 40 trigger fredlightthing2 + frame 41 trigger frexplode2 + frame 44 trigger fredlightthing2 + } + anim movec models/md5/cinematics/underground/lightattacher3.md5anim { + // frame 7 trigger func_door_248 + } + anim moved models/md5/cinematics/underground/lightattacher4.md5anim + anim movee models/md5/cinematics/underground/lightattacher5.md5anim + anim window models/md5/cinematics/underground/lightattacherwindow.md5anim + +} + +entityDef underground_invasion_lightattacher { + "inherit" "cin_base" + "anim" "move" + "model" "underground_invasion_lightattacher" +} + + +model underground_invasion_ledge { + mesh models/md5/cinematics/underground/ledge.md5mesh + anim fall models/md5/cinematics/underground/ledge.md5anim +} + +entityDef underground_invasion_ledge { + "inherit" "cin_base" + "anim" "fall" + "model" "underground_invasion_ledge" +} + +model underground_invasion_bigskull { + mesh models/md5/cinematics/underground/bigskull.md5mesh + anim teleportskull models/md5/cinematics/underground/skullseven.md5anim { + frame 35 trigger explodelight1 + frame 35 trigger explode1 + frame 38 trigger explodelight1 + + frame 51 trigger explodelight2 + frame 52 trigger explode2 + frame 55 trigger explodelight2 + + frame 83 trigger explodelight3 + frame 84 trigger explode3 + frame 88 trigger explodelight3 + } +} + +entityDef underground_invasion_bigskull { + "inherit" "cin_base" + "anim" "teleportskull" + "model" "underground_invasion_bigskull" +} + +model underground_invasion_littleskulls { + mesh models/md5/cinematics/underground/littleskull.md5mesh + + + anim skullone models/md5/cinematics/underground/skullone.md5anim + anim skulltwo models/md5/cinematics/underground/skulltwo.md5anim + anim skullthree models/md5/cinematics/underground/skullthree.md5anim + anim skullfour models/md5/cinematics/underground/skullfour.md5anim + anim skullfive models/md5/cinematics/underground/skullfive.md5anim + anim skullsix models/md5/cinematics/underground/skullsix.md5anim + anim skullseven models/md5/cinematics/underground/skulleight.md5anim + anim skulleight models/md5/cinematics/underground/skulleight.md5anim + anim hallskull1 models/md5/cinematics/underground/hallway_invasions1.md5anim + anim hallskull1b models/md5/cinematics/underground/hallway_invasions1b.md5anim + anim hallskull1c models/md5/cinematics/underground/hallway_invasions1c.md5anim + anim hallskull1d models/md5/cinematics/underground/hallway_invasions1d.md5anim + anim hallskull1e models/md5/cinematics/underground/hallway_invasions1e.md5anim + anim hallskull1g models/md5/cinematics/underground/hallway_invasions1g.md5anim + anim hallskull2 models/md5/cinematics/underground/hallway_invasions2.md5anim + anim hallskull2b models/md5/cinematics/underground/hallway_invasions2b.md5anim + anim hallskull2c models/md5/cinematics/underground/hallway_invasions2c.md5anim + anim hallskull2d models/md5/cinematics/underground/hallway_invasions2d.md5anim + anim hallskull2e models/md5/cinematics/underground/hallway_invasions2e.md5anim + anim hallskull2g models/md5/cinematics/underground/hallway_invasions2g.md5anim + anim hallskull3 models/md5/cinematics/underground/hallway_invasions3.md5anim + anim hallskull3b models/md5/cinematics/underground/hallway_invasions3b.md5anim + anim hallskull3c models/md5/cinematics/underground/hallway_invasions3c.md5anim + //anim hallskull3f models/md5/cinematics/underground/hallway_invasions3f.md5anim + //anim hallskull4f models/md5/cinematics/underground/hallway_invasions4f.md5anim +} + +entityDef underground_invasion_littleskulls { + "inherit" "cin_base" + "anim" "skullone" + "model" "underground_invasion_littleskulls" +} + +model underground_invasion_smallerskulls { + mesh models/md5/cinematics/underground/newsecskull.md5mesh + + anim newtwo models/md5/cinematics/underground/hallway_invasions2f.md5anim +} + +entityDef underground_invasion_smallerskulls { + "inherit" "cin_base" + "anim" "newtwo" + "model" "underground_invasion_smallerskulls" +} + +model underground_invasion_chestskull { + mesh models/md5/cinematics/underground/chestskull.md5mesh + + anim newone models/md5/cinematics/underground/hallway_invasions1f.md5anim + anim transform models/md5/cinematics/underground/transformskull.md5anim { + frame 50 sound_voice mc_skull_passby + } + anim floorskull models/md5/cinematics/underground/transformskull2.md5anim { + frame 65 sound_voice2 mc_skull_shriek + frame 90 sound_voice mc_skull_passby + frame 95 trigger guisting_speaker + frame 113 trigger roq2_relay + } + anim garage models/md5/cinematics/underground/garageskull.md5anim { + frame 48 trigger garageskull_whine_speaker + frame 73 trigger garageskull_end_speaker + } + anim boxes_a models/md5/cinematics/underground/boxesskull1.md5anim { + frame 67 trigger boxskull_door_speaker + } + anim boxes_b models/md5/cinematics/underground/boxesskull2.md5anim { + frame 60 trigger boxskull1_hole_speaker + } + anim flashlight_a models/md5/cinematics/underground/flashlightskull1.md5anim + anim flashlight_b models/md5/cinematics/underground/flashlightskull2.md5anim { + frame 75 trigger flashlightskull_goaway_speaker + } +} + +entityDef underground_invasion_chestskull { + "inherit" "cin_base" + "anim" "newone" + "model" "underground_invasion_chestskull" + //"smokeParticleSystem" "ghostskull" +} + +entityDef underground_hallway_skulls { + "inherit" "cin_base" + "anim" "newone" + "model" "underground_invasion_chestskull" + //"smokeParticleSystem" "ghostskull" +} + + +model underground_brooks_head { + inherit head_security_goggles + + anim talk_trigger models/md5/heads/security_goggles/underground/brookswelcome.md5anim { + frame 1 sound_voice snd_window1 + } + anim window_b models/md5/heads/security_goggles/underground/brooksgonnaneed.md5anim { + frame 1 sound_voice snd_window2 + } + anim window_c models/md5/heads/security_goggles/underground/brooksgrabyourgear.md5anim { + frame 1 sound_voice snd_window3 + } + anim window_d models/md5/heads/security_goggles/underground/brooksletme.md5anim { + frame 1 sound_voice snd_window4 + } + anim window_i models/md5/heads/security_goggles/underground/brooksyouneedto.md5anim { + frame 1 sound_voice snd_window9 + } + anim window_j models/md5/heads/security_goggles/underground/brooksyourstuff.md5anim { + frame 1 sound_voice snd_window10 + } + anim window_k models/md5/heads/security_goggles/underground/brooksnowyouready.md5anim { + frame 1 sound_voice snd_window11 + } + anim window_l models/md5/heads/security_goggles/underground/brooksyoudont.md5anim { + frame 1 sound_voice snd_window12 + } + anim cower1 models/md5/heads/security_goggles/underground/brookswatchthe.md5anim { + frame 1 sound_voice snd_cower1 + } + anim cower2 models/md5/heads/security_goggles/underground/brooksdontfire.md5anim { + frame 1 sound_voice snd_cower2 + } + anim cower3 models/md5/heads/security_goggles/underground/brookswatchthe.md5anim { + frame 1 sound_voice snd_cower1 + } +} + +model underground_window_security { + inherit npc_base + mesh models/md5/chars/security.md5mesh + skin skins/characters/npcs/regsec.skin + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER eyecontrol chair) + + anim cower1 models/md5/chars/mcu_brooks/brookscowerwatch.md5anim + anim cower2 models/md5/chars/mcu_brooks/brookscowerdontfire.md5anim + anim cower3 models/md5/chars/mcu_brooks/brookscowerwatch.md5anim + + anim brooksidle models/md5/chars/mcu_brooks/brooksidle.md5anim + + anim talk_trigger models/md5/chars/mcu_brooks/brooks01welcome.md5anim + anim window_b models/md5/chars/mcu_brooks/brooks02imgonnaneed.md5anim { + frame 85 event disableEyeFocus + frame 98 trigger secpanel1 + } + anim window_c models/md5/chars/mcu_brooks/brooks03grabyourgear.md5anim { + frame 1 event disableEyeFocus + frame 25 event enableEyeFocus + } + + anim window_d models/md5/chars/mcu_brooks/brooks04letmeradiotest.md5anim + anim window_e models/md5/chars/mcu_brooks/brooks05radiocheck.md5anim { + frame 5 trigger brooks05radiocheck_chatter + frame 5 sound_voice brooks05radiocheck + } + anim window_f models/md5/chars/mcu_brooks/brooks06mission.md5anim { + frame 5 trigger brooks06mission_chatter + frame 5 sound_voice brooks06mission + } + anim window_g models/md5/chars/mcu_brooks/brooks07allset.md5anim { + frame 1 trigger brooks07allset_chatter + frame 1 sound_voice brooks07allset + frame 1 trigger secpanel1 + frame 1 trigger secpanel2 + frame 1 trigger red2green_relay + frame 1 trigger trigger_relay_220 + } + anim window_h models/md5/chars/mcu_brooks/brooks08dontshootcivilians.md5anim { + frame 1 trigger brooks08dontshootcivilians_chatter + frame 1 sound_voice brooks08dontshootcivilians + } + anim window_i models/md5/chars/mcu_brooks/brooks09re_secureyourgear.md5anim + anim window_j models/md5/chars/mcu_brooks/brooks13re_storagecabinet.md5anim + anim window_k models/md5/chars/mcu_brooks/brooks14readyforcombat.md5anim + anim window_l models/md5/chars/mcu_brooks/brooks18re_moveout.md5anim +} + +entityDef underground_window_security { + "inherit" "npc_base" + "model" "underground_window_security" + "size" "" + "talktime" "0.5" + "talk_no_turn" "1" + "copy_joint_world eyecontrol" "" + + "def_head" "underground_brooks_head" + "head_joint" "Shoulders" + + "snd_talk_primary" "" + "snd_talk_secondary" "" + "snd_cower1" "brooks_cowerwatch" + "snd_cower2" "brooks_cowerdontfire" + "snd_hit" "" + "snd_window1" "brooks01welcome" + "snd_window2" "brooks02imgonnaneed" + "snd_window3" "brooks03grabyourgear" + "snd_window4" "brooks04letmeradiotest" + "snd_window9" "brooks09re_secureyourgear" + "snd_window10" "brooks13re_storagecabinet" + "snd_window11" "brooks14readyforcombat" + "snd_window12" "brooks18re_moveout" + +} + +model underground_maint_young_daniel_head { + mesh models/md5/characters/npcs/heads/h2.md5mesh + channel eyelids ( Ruplid Rlolid Luplid Llolid ) + + anim blink models/md5/characters/npcs/heads/h2blink.md5anim + anim idle models/md5/characters/npcs/heads/h2idle.md5anim + anim stand models/md5/characters/npcs/heads/h2idle.md5anim + anim talk_primary models/md5/characters/npcs/heads/underground/daniel_01.md5anim { + frame 1 sound_voice snd_talk_primary + } + anim talk_secondary1 models/md5/characters/npcs/heads/underground/daniel_02.md5anim { + frame 1 sound_voice snd_talk_secondary1 + } + anim talk_secondary2 models/md5/characters/npcs/heads/underground/daniel_03.md5anim { + frame 1 sound_voice snd_talk_secondary2 + } + anim talk_excuseme models/md5/characters/npcs/heads/underground/daniel_excuseme.md5anim { + frame 1 sound_voice snd_talk_excuseme + } + + anim talk_donttouchthat models/md5/characters/npcs/heads/underground/daniel_donttouchthat.md5anim { + frame 1 sound_voice snd_talk_donttouchthat + } +} + +model underground_maint_young_daniel { + inherit npc_jumpsuit + anim idle models/md5/chars/PDA_idle_daniel.md5anim + anim stand models/md5/chars/PDA_idle_daniel.md5anim + anim gui_operate_daniel models/md5/chars/gui_operate_daniel.md5anim + anim talk_primary models/md5/chars/pda_talk.md5anim + anim talk_secondary1 models/md5/chars/pda_talk.md5anim + anim talk_secondary2 models/md5/chars/pda_talk.md5anim + anim talk_excuseme models/md5/chars/pda_talk.md5anim + anim talk_donttouchthat models/md5/chars/pda_talk.md5anim + anim gui_look models/md5/chars/gui_look.md5anim + anim box_look models/md5/chars/box_look.md5anim { + frame 1 event disableEyeFocus + } + anim pda_idle_look models/md5/chars/PDA_idle_look.md5anim +} + +entityDef underground_maint_young_daniel { + "inherit" "npc_base" + "model" "underground_maint_young_daniel" + "def_head" "underground_maint_young_daniel_head" + "head_joint" "Shoulders" + "talk_no_turn" "1" + "talktime" "0" + "talkradius" "384" + "copy_joint_world eyecontrol" "" + + "ik_numLegs" "0" + "ik_footSize" "0" + + "head_focus_rate" "0.08" + + "look_joint Waist" ".1 .1 0" + "look_joint Chest" ".1 .1 0" + "look_joint Shoulders" ".2 .2 0" + "look_joint headcontrol" ".4 .4 0" + "look_joint Ruparm" "0 0 0" + "look_joint Luparm" "0 0 0" + + "talk0_blendin" "8" + "talk0_blendout" "8" + "talk1_blendin" "8" + "talk1_blendout" "8" + "talk2_blendin" "8" + "talk2_blendout" "8" + + "eye_turn_min" "-20 -30 0" + "eye_turn_max" "20 30 0" + + "def_attach" "pda_underground_maint_young_daniel" + "def_dropDeathItem" "pda_underground_maint_young_daniel" + "dropDeathItemJoint" "RHANDCONNECTOR" + "dropDeathItemRotation" "-90 0 0" + + "snd_talk_primary" "daniel_mcu_primary" + "snd_talk_secondary1" "daniel_mcu_secondary1" + "snd_talk_secondary2" "daniel_mcu_secondary2" + "snd_talk_excuseme" "daniel_mcu_excuseme" + "snd_talk_donttouchthat" "daniel_mcu_donttouchthat" +} + +model underground_maint_old_charles_head { + mesh models/md5/characters/npcs/heads/h1.md5mesh + channel eyelids ( Ruplid Rlolid Luplid Llolid ) + + anim dead models/md5/characters/npcs/heads/h1death.md5anim + anim blink models/md5/characters/npcs/heads/h1blink.md5anim + anim idle models/md5/characters/npcs/heads/h1idle.md5anim + anim stand models/md5/characters/npcs/heads/h1idle.md5anim + anim talk_trigger models/md5/characters/npcs/heads/underground/charles_hey.md5anim { + frame 1 sound_voice snd_charleshey + frame 110 sound_voice snd_notsure + } + anim talk_primary models/md5/characters/npcs/heads/underground/charles_dontlisten.md5anim { + frame 1 sound_voice snd_talk_primary + } + anim talk_secondary1 models/md5/characters/npcs/heads/underground/charles_shouldnttalk.md5anim { + frame 1 sound_voice snd_talk_secondary1 + } + anim talk_secondary2 models/md5/characters/npcs/heads/underground/charles_notmybiz.md5anim { + frame 1 sound_voice snd_talk_secondary2 + } +} + +model underground_maint_old_charles { + inherit npc_jumpsuit + anim idle models/md5/chars/idle_charles.md5anim + anim stand models/md5/chars/look_in_hole.md5anim + anim look_in_hole models/md5/chars/look_in_hole.md5anim + anim look_in_hole_scratch_head models/md5/chars/look_in_hole_scratch_head.md5anim + anim talk_trigger models/md5/chars/stand_point_forward_charles.md5anim + anim talk_primary models/md5/chars/stand.md5anim + anim talk_secondary1 models/md5/chars/stand.md5anim + anim talk_secondary2 models/md5/chars/stand.md5anim +} + +entityDef underground_maint_old_charles { + "inherit" "npc_base" + "model" "underground_maint_old_charles" + "def_head" "underground_maint_old_charles_head" + "head_joint" "Shoulders" + "talk_no_turn" "1" + "talktime" "0" + "talkradius" "384" + "copy_joint_world eyecontrol" "" + + "ik_numLegs" "0" + "ik_footSize" "0" + + "eye_verticle_offset" "0" + "eye_horizontal_offset" "-17" + + "head_focus_rate" "0.08" + + "look_joint Waist" "0 0 0" + "look_joint Chest" ".1 .1 0" + "look_joint Shoulders" ".2 .2 0" + "look_joint headcontrol" ".5 .5 0" + "look_joint Ruparm" "0 0 0" + "look_joint Luparm" "0 0 0" + + "talk0_blendin" "8" + "talk0_blendout" "8" + "talk1_blendin" "8" + "talk1_blendout" "8" + "talk2_blendin" "8" + "talk2_blendout" "8" + + //"eye_turn_min" "-20 -30 0" + //"eye_turn_max" "20 30 0" + + + "snd_talk_primary" "charles_mcu_primary" + "snd_talk_secondary1" "charles_mcu_secondary1" + "snd_talk_secondary2" "charles_mcu_secondary2" + "snd_charleshey" "charles_mcu_hey" + "snd_notsure" "charles_mcu_notsure" +} + +model underground_maint_bald_ross_head { + mesh models/md5/characters/npcs/heads/h3.md5mesh + channel eyelids ( Ruplid Rlolid Luplid Llolid ) + + anim blink models/md5/characters/npcs/heads/h3blink.md5anim + anim idle models/md5/characters/npcs/heads/h3idle.md5anim + anim stand models/md5/characters/npcs/heads/h3idle.md5anim + anim talk_primary models/md5/characters/npcs/heads/underground/ross_primary.md5anim { + frame 1 sound_voice snd_talk_primary + } + anim talk_secondary1 models/md5/characters/npcs/heads/underground/ross_secondary1.md5anim { + frame 1 sound_voice snd_talk_secondary1 + } + anim talk_secondary2 models/md5/characters/npcs/heads/underground/ross_secondary2.md5anim { + frame 1 sound_voice snd_talk_secondary2 + } + anim rosstalk1 models/md5/characters/npcs/heads/underground/ross_listenscotty.md5anim { + frame 1 sound_voice snd_rosstalk1 + } + anim rosstalk2 models/md5/characters/npcs/heads/underground/ross_because.md5anim { + frame 1 sound_voice snd_rosstalk2 + } + anim rosstalk3 models/md5/characters/npcs/heads/underground/ross_justfinish.md5anim { + frame 1 sound_voice snd_rosstalk3 + } +} + +model underground_maint_bald_ross { + inherit npc_jumpsuit + + anim stand models/md5/chars/look_in_hole.md5anim + anim look_in_hole models/md5/chars/look_in_hole.md5anim + anim look_in_hole_scratch_head models/md5/chars/look_in_hole_scratch_head.md5anim + anim talk_primary models/md5/chars/talk_primary_ross.md5anim + anim talk_secondary1 models/md5/chars/talk_primary_ross.md5anim + anim talk_secondary2 models/md5/chars/talk_primary_ross.md5anim + anim rosstalk1 models/md5/chars/talk_listen_scotty_ross.md5anim + anim rosstalk2 models/md5/chars/look_in_hole.md5anim + anim rosstalk3 models/md5/chars/talk_listen_scotty_ross.md5anim +} + +entityDef underground_maint_bald_ross { + "inherit" "npc_base" + "model" "underground_maint_bald_ross" + "def_head" "underground_maint_bald_ross_head" + "head_joint" "Shoulders" + "talk_no_turn" "1" + "talktime" "0" + "talkradius" "384" + "copy_joint_world eyecontrol" "" + + "ik_numLegs" "0" + "ik_footSize" "0" + + "head_focus_rate" "0.08" + + "look_joint Waist" "0 0 0" + "look_joint Chest" ".1 .1 0" + "look_joint Shoulders" ".2 .2 0" + "look_joint headcontrol" ".5 .5 0" + "look_joint Ruparm" "0 0 0" + "look_joint Luparm" "0 0 0" + + "talk0_blendin" "8" + "talk0_blendout" "8" + "talk1_blendin" "8" + "talk1_blendout" "8" + "talk2_blendin" "8" + "talk2_blendout" "8" + + "eye_turn_min" "-20 -30 0" + "eye_turn_max" "20 30 0" + + "snd_talk_primary" "ross_mcu_primary" + "snd_talk_secondary1" "ross_mcu_secondary1" + "snd_talk_secondary2" "ross_mcu_secondary2" + "snd_rosstalk1" "ross_mcu_listenscotty" + "snd_rosstalk2" "ross_mcu_because" + "snd_rosstalk3" "ross_mcu_justfinish" +} + + +model underground_labcoat_young_todd { + inherit npc_labcoat + anim toddtalk1 models/md5/chars/talk_primary_todd.md5anim { + frame 1 sound_voice snd_toddtalk1 + } + anim toddtalk2 models/md5/chars/stand_point_forward.md5anim { + frame 1 sound_voice snd_toddtalk2 + } + anim toddtalk3 models/md5/chars/talk_secondary2_todd.md5anim { + frame 1 sound_voice snd_toddtalk3 + } +} + +entityDef underground_labcoat_young_todd { + "inherit" "npc_base" + "def_head" "head_young" + "model" "underground_labcoat_young_todd" + "head_joint" "Shoulders" + "copy_joint_world eyecontrol" "" + + "snd_talk_primary" "" + "snd_talk_secondary" "" + "snd_toddtalk1" "todd_mcu_talk1" + "snd_toddtalk2" "todd_mcu_talk2" + "snd_toddtalk3" "todd_mcu_talk3" +} + +model underground_maint_asian_eric { + inherit npc_jumpsuit + + anim stand models/md5/chars/gui_operate_eric.md5anim + anim operate_computer6 models/md5/chars/gui_operate_eric.md5anim + anim worktalk1 models/md5/chars/operate_computer_eric_worktalk1.md5anim { + frame 1 sound_voice snd_ericworktalk1 + } + anim worktalk2 models/md5/chars/operate_computer_eric_worktalk2.md5anim { + frame 1 sound_voice snd_ericworktalk2 + } +} + +entityDef underground_maint_asian_eric { + "inherit" "npc_base" + "model" "underground_maint_asian_eric" + "def_head" "head_asian_young" + "head_joint" "Shoulders" + + "copy_joint_world eyecontrol" "" + + + + "size" "" + "ik_numlegs" "0" + "talks" "0" + "no_cower" "1" + "snd_talk_primary" "" + "snd_talk_secondary" "" + "snd_ericworktalk1" "eric_mcu_worktalk1" + "snd_ericworktalk2" "eric_mcu_worktalk2" +} + +model underground_maint_asian_eric_head { + skin skins/characters/npcs/head_asian_young.skin + mesh models/md5/characters/npcs/heads/h5.md5mesh + channel eyelids ( Ruplid Rlolid Luplid Llolid ) + + anim talk_primary models/md5/characters/npcs/heads/mcu_thanku.md5anim { + frame 1 sound_voice snd_ericthankyou + } + anim idle models/md5/characters/npcs/heads/h5idle.md5anim + anim stand models/md5/characters/npcs/heads/h5idle.md5anim + anim blink models/md5/characters/npcs/heads/h5blink.md5anim + anim dead models/md5/characters/npcs/heads/h5death.md5anim +} + + +model underground_maint_asian_eric2 { + inherit npc_labcoat + + anim zombieattack models/md5/cinematics/underground/npcbackup.md5anim { + frame 1 sound_voice snd_erichelp + } + anim zombiestart models/md5/cinematics/underground/npcbackup_start.md5anim + anim zombiedeath models/md5/cinematics/underground/npcbackup_death.md5anim { + frame 1 sound_item eric_mcu_die + frame 18 event kill + } + anim zombiecower models/md5/chars/alphalabs4/freaked_out.md5anim + anim talk_primary models/md5/chars/mcu_thanku.md5anim +} + +entityDef underground_maint_asian_eric2 { + "inherit" "npc_base" + "model" "underground_maint_asian_eric2" + "def_head" "underground_maint_asian_eric_head" + "head_joint" "Shoulders" + "size" "8 8 8" + + "copy_joint_world eyecontrol" "" + + "ik_numlegs" "0" + "talks" "0" + "no_cower" "1" + "talktime" "0" + "snd_talk_primary" "eric_mcu_thankyou" + "snd_talk_secondary" "" + "snd_death" "" + "snd_erichelp" "eric_mcu_zombieattack" + "snd_ericthankyou" "eric_mcu_thankyou" + "velocityTime" "10" +} + +model underground_zombie_maint_bald { + inherit monster_zombie_jumpy + + remove melee_attack + anim melee_attack2 models/md5/monsters/zombies/swing2.md5anim { + frame 8 trigger underground_maint_asian_1 + frame 8 sound_weapon monster_zombie_maint_melee_hit + } +} + +entityDef underground_zombie_maint_bald { + "inherit" "monster_zombie_base" + "model" "underground_zombie_maint_bald" + + "def_head" "head_bloodybald" + "head_joint" "Shoulders" +} + +model underground_invasion_labcoat_head { + skin skins/characters/npcs/prettyoldhead.skin + mesh models/md5/characters/npcs/heads/h2.md5mesh + channel eyelids ( Ruplid Rlolid Luplid Llolid ) + + anim blink models/md5/characters/npcs/heads/h2blink.md5anim + anim idle models/md5/characters/npcs/heads/h2idle.md5anim + anim stand models/md5/characters/npcs/heads/h2idle.md5anim + anim talk_trigger models/md5/characters/npcs/heads/underground/ian_trigger.md5anim { + frame 1 sound_voice snd_talk_trigger + } + anim talk_primary models/md5/characters/npcs/heads/underground/ian_primary.md5anim { + frame 1 sound_voice snd_talk_primary + } + anim talk_secondary1 models/md5/characters/npcs/heads/underground/ian_secondary.md5anim { + frame 1 sound_voice snd_talk_secondary + } +} + +model underground_invasion_labcoat { + + inherit npc_labcoat + + anim idle models/md5/chars/gui_operate.md5anim + anim cower models/md5/chars/cower4_ian.md5anim + anim stand models/md5/chars/gui_operate.md5anim { + frame 1 call headlook_off + frame 1 event disableEyeFocus + } + anim gui_look_right models/md5/chars/gui_look_right.md5anim { + frame 1 call headlook_off + frame 1 event disableEyeFocus + } + anim gui_operate models/md5/chars/gui_operate.md5anim + anim talk_trigger models/md5/chars/startle_left.md5anim { + frame 1 call headlook_on + frame 1 event enableEyeFocus + frame 200 call headlook_off + frame 205 event disableEyeFocus + } + anim talk_primary models/md5/chars/point_forward.md5anim { + frame 1 call headlook_on + frame 1 event enableEyeFocus + frame 85 call headlook_off + frame 90 event disableEyeFocus + } + anim talk_secondary1 models/md5/chars/gui_operate_iansecondary.md5anim { + frame 1 call headlook_off + frame 1 event disableEyeFocus + } + + anim rungetcover models/md5/chars/invasion_runcover.md5anim { + frame 1 event ignoreDamage + frame 12 trigger halllight2 + frame 13 trigger hallexplode2 + frame 15 trigger halllight2 + frame 20 trigger halllight1 + frame 22 trigger hallexplode1 + frame 25 trigger halllight1 + frame 35 trigger halllight3 + frame 36 trigger hallexplode3 + frame 38 trigger halllight3 + } + anim operate_computer6 models/md5/chars/operate_computer_loop3.md5anim + anim fall models/md5/chars/invasion_ledgefall.md5anim { + frame 1 event disableEyeFocus + frame 1 event ignoreDamage + } +} + +entityDef underground_invasion_labcoat { + "inherit" "npc_base" + "model" "underground_invasion_labcoat" + "anim" "rungetcover" + "size" "32 32 74" + "talkradius" "400" + "def_head" "underground_invasion_labcoat_head" + "head_joint" "Shoulders" + "turn_rate" "0" + + "copy_joint_world eyecontrol" "" + "talktime" "0" + "team" "0" + "rank" "0" + "bone_focus" "headcontrol" + "bone_leftEye" "Lfteye_Focus" + "bone_rightEye" "Rteye_Focus" + "eye_turn_min" "-20 -30 0" + "eye_turn_max" "20 30 0" + "eye_verticle_offset" "5" + "eye_horizontal_offset" "-8" + "eye_focus_rate" "0.5" + "head_focus_rate" "0.08" + "mass" "500" + "cinematic" "1" + + "look_joint Waist" "0 0 0" + "look_joint Chest" "0 0 0" + "look_joint Shoulders" ".1 .1 0" + "look_joint headcontrol" ".6 .6 0" + "look_joint Ruparm" "0 0 0" + "look_joint Luparm" "0 0 0" + + "snd_talk_trigger" "ian_mcu_trigger" + "snd_talk_primary" "ian_mcu_primary" + "snd_talk_secondary" "ian_mcu_secondary" + //"snd_chatter" "ian_mcu_idle" + "snd_hit" "" +} + +model underground_security_helmet_mark { + inherit npc_security + + anim stand models/md5/chars/PDA_idle.md5anim + anim sitting models/md5/chars/stand_sitting_idle.md5anim + anim talk_trigger models/md5/chars/stand_sitting.md5anim { + frame 1 sound_voice snd_talk_trigger + } + anim talk_primary models/md5/chars/stand_talk_primary_mark.md5anim { + frame 1 sound_voice snd_talk_primary + } + anim talk_secondary1 models/md5/chars/stand_talk_secondary_mark.md5anim { + frame 1 sound_voice snd_talk_secondary1 + } + anim talk_secondary2 models/md5/chars/stand_talk_primary_mark.md5anim { + frame 1 sound_voice snd_talk_secondary2 + } + anim airlockdrag models/md5/chars/airlockzdragged.md5anim { + frame 1 event ignoreDamage + } +} + +entityDef underground_security_helmet_mark { + "inherit" "npc_base" + "model" "underground_security_helmet_mark" + "def_head" "head_security_helmet" + "head_joint" "Shoulders" + "talk_no_turn" "1" + "talktime" "0" + "talkradius" "400" + + "copy_joint_world eyecontrol" "" + + "ik_numLegs" "0" + "ik_footSize" "0" + + "head_focus_rate" "0.08" + + "look_joint Waist" ".1 .1 0" + "look_joint Chest" ".1 .1 0" + "look_joint Shoulders" ".2 .2 0" + "look_joint headcontrol" ".4 .4 0" + "look_joint Ruparm" "0 0 0" + "look_joint Luparm" "0 0 0" + + "talk0_blendin" "8" + "talk0_blendout" "8" + "talk1_blendin" "8" + "talk1_blendout" "8" + "talk2_blendin" "8" + "talk2_blendout" "8" + + "eye_turn_min" "-20 -30 0" + "eye_turn_max" "20 30 0" + + "def_attach" "pda_underground_security_helmet_mark" + "def_dropDeathItem" "pda_underground_security_helmet_mark" + "dropDeathItemJoint" "RHANDCONNECTOR" + "dropDeathItemRotation" "-90 0 0" + + "snd_talk_trigger" "mark_mcu_triggered" + "snd_talk_primary" "mark_mcu_primary" + "snd_talk_secondary1" "mark_mcu_secondary1" + "snd_talk_secondary2" "mark_mcu_secondary2" + +} + + +model underground_invasion_security { + inherit npc_security + + anim runbackshoot models/md5/cinematics/underground/invasion_runshoot.md5anim { + frame 1 event ignoreDamage + frame 11 launch_missile RHANDCONNECTOR + frame 23 launch_missile RHANDCONNECTOR + } + anim runfall models/md5/cinematics/underground/invasion_runfall.md5anim + anim sec2zombiea models/md5/cinematics/underground/hallway_sec2zombie.md5anim { + frame 1 event disableEyeFocus + } + anim sec2zombieb models/md5/cinematics/underground/hallway_sec2zombie2.md5anim +} + +entityDef underground_invasion_security { + "inherit" "npc_base" + "model" "underground_invasion_security" + "anim" "runbackshoot" + "size" "" + "def_head" "underground_invasion_sechead" + "head_joint" "Shoulders" + "def_projectile" "projectile_bullet_zsec_pistol" + "projectile_spread" "0" + "num_projectiles" "1" + "smoke_weapon" "cgsmoke.smoke" + "cinematic" "1" + + "copy_joint_world eyecontrol" "" + + + "snd_chatter" "" + "snd_talk_primary" "" + "snd_talk_secondary" "" + "snd_hit" "" +} + +model underground_invasion_zsechead { + mesh models/md5/characters/npcs/zheads/z5.md5mesh + anim idle models/md5/characters/npcs/zheads/z5idle.md5anim + anim sec2zombiea models/md5/characters/npcs/zheads/gogglesinvasion6b.md5anim + anim sec2zombieb models/md5/characters/npcs/zheads/gogglesinvasion6c.md5anim +} + +model underground_invasion_sechead { + mesh models/md5/characters/npcs/heads/goggles.md5mesh + anim idle models/md5/characters/npcs/heads/gogglesidle.md5anim + anim sec2zombiea models/md5/characters/npcs/heads/gogglesinvasion6b.md5anim { + frame 187 skin skins/characters/npcs/secbloodygogs.skin + frame 241 call map_mc_underground::guard_switch_head_to_zombie + } + anim sec2zombieb models/md5/characters/npcs/heads/gogglesinvasion6c.md5anim + anim runfall models/md5/characters/npcs/heads/gogglesinvasionrunfall.md5anim + +} + +model underground_invasion_labzombie { + inherit monster_zombie_labcoat + + anim stand models/md5/cinematics/underground/invasion_ledgeclimb_stand.md5anim + anim climb models/md5/cinematics/underground/invasion_ledgeclimb.md5anim { + frame 1 sound_body2 mcu_zombiesting + } +} + +entityDef underground_invasion_labzombie { + "inherit" "monster_zombie_base" + "model" "underground_invasion_labzombie" + "skin" "skins/monsters/zombies/labcoat.skin" + + "def_head" "head_zombie4" + "head_joint" "Shoulders" + "ik_numlegs" "0" + + "snd_chatter" "" + "snd_talk_primary" "" + "snd_talk_secondary" "" + "snd_hit" "" +} + +model underground_invasion_maintzombie { + inherit monster_zombie_jumpy + + anim stand models/md5/cinematics/underground/invasion_ledgeclimb_stand.md5anim + anim climb models/md5/cinematics/underground/invasion_ledgeclimb.md5anim { + frame 1 sound_body2 mcu_zombiesting + } +} +entityDef underground_invasion_maintzombie { + "inherit" "monster_zombie_maint_no_jaw" + "model" "underground_invasion_maintzombie" + "skin" "skins/monsters/zombies/jumpsuit.skin" + "size" "" + "def_head" "head_zombie2" + "head_joint" "Shoulders" + "ik_numlegs" "0" + + "snd_chatter" "" + "snd_talk_primary" "" + "snd_talk_secondary" "" + "snd_hit" "" +} + +model underground_invasion_suit { + inherit npc_labcoat + + anim window models/md5/cinematics/underground/invasion_window.md5anim { + frame 1 event ignoreDamage + frame 5 trigger backlight1 + frame 7 trigger backexplode1 + frame 9 trigger backlight1 + frame 10 trigger walllight1 + + frame 25 trigger backlight2 + frame 26 trigger backexplode2 + frame 27 trigger walllight2 + frame 28 trigger backlight2 + + frame 51 trigger windowlight1 + frame 52 trigger windowexplode1 + frame 53 trigger breakglass + frame 55 trigger windowlight1 + } + anim runbackscared models/md5/cinematics/underground/invasion_runbackscared.md5anim +} + +entityDef underground_invasion_suit { + "inherit" "npc_base" + "model" "underground_invasion_suit" + "anim" "window" + "size" "" + "ik_numlegs" "0" + "cinematic" "1" + "def_head" "head_old" + "head_joint" "Shoulders" + + "copy_joint_world eyecontrol" "" + + + "snd_chatter" "" + "snd_talk_primary" "" + "snd_talk_secondary" "" + "snd_hit" "" +} + +entityDef underground_impintro_cam { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + + "spawnclass" "idCameraAnim" + "anim impintro" "models/md5/cinematics/underground/impintro_cam.md5camera" + "anim headache" "models/md5/cinematics/underground/headache_cam.md5camera" + +} + +model underground_cin_pistol { + mesh models/md5/weapons/pistol_world/worldpistol.md5mesh + anim idle models/md5/weapons/pistol_world/pistol_idle.md5anim + +} + +entityDef underground_cin_pistol { + "inherit" "cin_base" + "model" "underground_cin_pistol" + "anim" "idle" + "joint" "PISTOL_ATTACHER" + "origin" "0 0 0" + "angles" "0 0 0" +} + +model underground_cin_player2 { + skin skins/player/noweapon.skin + mesh models/md5/characters/player/mocap/player.md5mesh + anim impintro models/md5/cinematics/underground/impintro_player.md5anim + anim headache models/md5/cinematics/underground/headache_player.md5anim { + frame 1 skin skins/player/noweapon.skin + } + +} + +entityDef underground_cin_player2 { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + + "inherit" "cin_base" + "model" "underground_cin_player2" + "anim" "impintro" +} + +model underground_cin_player { + skin skins/player/noweapon.skin + + mesh models/md5/characters/player/mocap/player.md5mesh + + channel torso ( ) + channel legs ( *origin ) + + anim stand models/md5/cinematics/underground/crazy_player1.md5anim + anim cower models/md5/cinematics/underground/crazy_player1.md5anim + + anim idle models/md5/cinematics/underground/crazy_player1.md5anim + anim crazy_a models/md5/cinematics/underground/crazy_player1.md5anim { + frame 1 event disableEyeFocus + frame 1 event ignoreDamage + } + anim crazy_b models/md5/cinematics/underground/crazy_player2.md5anim { + frame 1 event disableEyeFocus + frame 1 event ignoreDamage + } + anim crazy_c models/md5/cinematics/underground/crazy_player3.md5anim { + frame 1 event disableEyeFocus + frame 1 event ignoreDamage + } + anim end models/md5/cinematics/underground/crazy_player_end.md5anim { + frame 1 event disableEyeFocus + frame 1 event ignoreDamage + } + anim impintro models/md5/cinematics/underground/impintro_player.md5anim { + frame 1 event disableEyeFocus + frame 1 event ignoreDamage + } + +} + +entityDef underground_cin_player { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + "mass" "5000" + "size" "" + "def_attach" "underground_cin_pistol" + + "inherit" "character_default" + "model" "underground_cin_player" + "anim" "impintro" +} + +entityDef underground_cin_player3 { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + "mass" "5000" + "size" "" + "def_attach" "underground_cin_pistol" + + "inherit" "character_default" + "model" "underground_cin_player" + "anim" "impintro" + + "num_cinematics" "3" + "anim1" "crazy_a" + "anim2" "crazy_b" + "anim3" "crazy_c" + + + +} + +model underground_impintro_imp { + mesh models/md5/monsters/imp/imp.md5mesh + anim impintro models/md5/cinematics/underground/impintro_imp.md5anim { + frame 5 sound_body monster_demon_imp_sight + frame 95 sound_body snd_footstep + frame 100 sound_body snd_chatter + frame 105 sound_body snd_footstep + frame 115 sound_body snd_footstep + frame 123 sound_body snd_footstep + frame 125 sound_weapon snd_footstep + frame 128 sound_voice snd_sight + frame 164 sound_body snd_footstep + frame 167 sound_weapon snd_footstep + frame 182 sound_body snd_footstep + frame 185 sound_weapon snd_footstep + frame 188 sound_voice snd_footstep + frame 192 sound_body snd_footstep + frame 212 sound_body snd_thud + } + + anim windowstart models/md5/cinematics/underground/ending_impstart.md5anim + anim window models/md5/cinematics/underground/ending_imp.md5anim { + frame 7 sound_voice2 mcu_imp_stinger + frame 7 sound_voice mc2_imp_hit_glass + frame 18 sound_body2 monster_demon_imp_chatter + } +} + +entityDef underground_impintro_imp { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + "spawnclass" "idAnimated" + "model" "underground_impintro_imp" + "anim" "impintro" + "snd_footstep" "monster_demon_imp_footstep_cin" + "snd_sight" "monster_demon_imp_sight_cin" + "snd_chatter" "monster_demon_imp_chatter_cin" + "snd_thud" "monster_demon_imp_thud_cin" +} + +model underground_crazy_sci { + inherit npc_labcoat + + anim start models/md5/cinematics/underground/crazy_sci_start.md5anim + anim crazy_a models/md5/cinematics/underground/crazy_sci1.md5anim { + frame 1 event disableEyeFocus + frame 1 sound_global guilt + frame 1 event ignoreDamage + frame 16 sound_voice snd_crazy1 + } + anim crazy_b models/md5/cinematics/underground/crazy_sci2.md5anim { + frame 1 event disableEyeFocus + frame 1 event ignoreDamage + } + anim crazy_c models/md5/cinematics/underground/crazy_sci3.md5anim { + frame 1 event disableEyeFocus + frame 1 event ignoreDamage + frame 16 sound_voice snd_crazy2 + frame 136 sound_voice snd_crazy3 + frame 206 sound_voice snd_crazy4 + frame 310 trigger roq1_relay + frame 361 sound_voice snd_crazy5 + } + anim end_a models/md5/cinematics/underground/crazy_sci_end1.md5anim { + frame 1 event disableEyeFocus + frame 1 skin skins/characters/npcs/labcoat_asian_pistol.skin + frame 1 sound_voice snd_crazy6 + frame 132 event kill + } +} + +entityDef underground_crazy_sci { + "inherit" "npc_base" + "model" "underground_crazy_sci" + "size" "" + "mass" "5000" + "ik_numlegs" "0" + "sound_bone" "Chest" + "def_head" "underground_crazy_scihead" + "head_joint" "Shoulders" + //"def_dropDeathItem9" "moveable_item_pistol" + //"dropDeathItem9Joint" "pistol" + //"skin_dropDeath" "skins/characters/npcs/labcoat_asian.skin" + + "copy_joint_world eyecontrol" "" + + "snd_crazy1" "scinuts1a" + "snd_crazy2" "scinuts2a" + "snd_crazy3" "scinuts3a" + "snd_crazy4" "scinuts4a" + "snd_crazy5" "scinuts5a" + "snd_crazy6" "scinutsend" +} + +entityDef underground_crazy_sci_cin { + "inherit" "npc_base" + "model" "underground_crazy_sci" + "size" "" + "mass" "5000" + "ik_numlegs" "0" + "sound_bone" "Chest" + "def_head" "underground_crazy_scihead" + "head_joint" "Shoulders" + + "copy_joint_world eyecontrol" "" + + "snd_crazy1" "scinuts1a" + "snd_crazy2" "scinuts2a" + "snd_crazy3" "scinuts3a" + "snd_crazy4" "scinuts4a" + "snd_crazy5" "scinuts5a" + "snd_crazy6" "scinutsend" + + "num_cinematics" "3" + "anim1" "crazy_a" + "anim2" "crazy_b" + "anim3" "crazy_c" +} + +model underground_crazy_scihead { + mesh models/md5/characters/npcs/heads/h5.md5mesh + anim idle models/md5/characters/npcs/heads/h5idle.md5anim + anim crazy_a models/md5/characters/npcs/heads/underground/sci_crazy_start_a.md5anim + anim crazy_b models/md5/characters/npcs/heads/underground/sci_crazy_start_b.md5anim + anim crazy_c models/md5/characters/npcs/heads/underground/sci_crazy_start_c.md5anim + anim end_a models/md5/characters/npcs/heads/h5_sci_crazyend.md5anim { + frame 129 call map_mc_underground::sci_switch_head_to_stump + frame 129 sound_weapon player_pistol_fire + frame 129 trigger headsplat + } +} + +model underground_crazy_stump { + mesh models/md5/characters/npcs/zheads/z7.md5mesh + anim idle models/md5/characters/npcs/zheads/z7idle.md5anim + +} + +model underground_crazy_zombhead { + mesh models/md5/characters/npcs/heads/h5.md5mesh + anim idle models/md5/characters/npcs/heads/h5idle.md5anim + anim stand models/md5/characters/npcs/heads/h5idle.md5anim + anim transform models/md5/heads/asian_young/underground/crazy_transform.md5anim { + frame 65 sound_voice2 mc_leatherface + frame 65 trigger transformation_facelight + frame 80 call setShaderTime + frame 80 sound_voice zombiesting + frame 80 skin skins\characters\npcs\head_asian_zomb + } +} + +entityDef underground_crazy_zombie { + "inherit" "monster_zombie_maint_bald" + "model" "underground_crazy_zombie" + + "def_head" "underground_crazy_zombhead" + "head_joint" "Shoulders" + + "health" "1" + "normal_health" "80" // amount of health after turning into a zombie + "stay_on_attackpath" "1" // for him to finish his attack path since he's not a zombie until the end of it + + // clear the combat chatter . we reenable the sound after he turns into a zombie by using a + // framecommand to call a script function. + "snd_chatter_combat" "" + + // copied into "snd_chatter_combat" when he turns into a zombie + "snd_chatter_combat_precache" "monster_zombie_fat_chatter_combat" +} + +model underground_crazy_zombie { + inherit model_monster_zombie + mesh models/md5/monsters/zombies/labcoatzombie.md5mesh + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER eyecontrol chair) + + skin skins/monsters/zombies/labcoat.skin + remove idle + anim idle models/md5/monsters/zombies/crazyloop.md5anim + anim backup models/md5/monsters/zombies/crazybackup.md5anim { + frame 1 sound_voice2 jonathan_aya + frame 40 sound_voice2 jonathan_lord_help_us + + } + anim transform models/md5/monsters/zombies/crazytransform.md5anim { + frame 15 sound_voice jonathan_huh + frame 30 sound_voice2 jonathan_no + frame 80 call "map_mc_underground::crazy_sci_becomeZombie" + } +} + +model underground_impcrawl_door { + mesh models/md5/cinematics/underground/underground_impcrawl_door.md5mesh + anim underground_impcrawl_door models/md5/cinematics/underground/underground_impcrawl_door.md5anim { + frame 9 sound_body snd_tear1 + frame 27 sound_body snd_tear2 + frame 38 sound_body snd_tear3 + frame 58 sound_body snd_tear4 + } +} + +entityDef underground_impcrawl_door { + "inherit" "cin_base" + "anim" "underground_impcrawl_door" + "model" "underground_impcrawl_door" + + "snd_tear1" "mcu_impdoor_tear1" + "snd_tear2" "mcu_impdoor_tear2" + "snd_tear3" "mcu_impdoor_tear3" + "snd_tear4" "mcu_impdoor_tear4" +} + +model underground_zintro_victim { + inherit npc_jumpsuit + + anim zbeat_a models/md5/cinematics/underground/zintro_victim1.md5anim { + frame 1 event ignoreDamage + } + + anim zbeat_b models/md5/cinematics/underground/zintro_victim2.md5anim + + anim zintrob models/md5/cinematics/underground/zintro_eaten_loop.md5anim + anim zintro3 models/md5/cinematics/underground/zintro_eaten_end.md5anim + anim zintro3loop models/md5/cinematics/underground/zintro_eaten_end_loop.md5anim + +} + +entityDef underground_zintro_victim { + "inherit" "npc_base" + "model" "underground_zintro_victim" + "size" "32 32 74" + "ik_numlegs" "0" + "sound_bone" "Chest" + "def_head" "underground_zintro_pop" + "head_joint" "Shoulders" + "anim" "zbeat_a" + "skin" "skins/monsters/zombies/jumpsuit.skin" + "cinematic" "1" + + "copy_joint_world eyecontrol" "" + +} + +model underground_zintro_zombie { + inherit npc_marine + + anim zbeat_a models/md5/cinematics/underground/zintro_beater1.md5anim { + frame 1 event ignoreDamage + frame 3 sound_weapon player_machinegun_fire + frame 3 launch_missile RHANDCONNECTOR + frame 6 sound_weapon player_machinegun_fire + frame 6 launch_missile RHANDCONNECTOR + frame 9 sound_weapon player_machinegun_fire + frame 9 launch_missile RHANDCONNECTOR + frame 12 sound_weapon player_machinegun_fire + frame 12 launch_missile RHANDCONNECTOR + frame 16 sound_weapon player_machinegun_fire + frame 16 launch_missile RHANDCONNECTOR + frame 20 sound_weapon player_machinegun_fire + frame 20 launch_missile RHANDCONNECTOR + frame 23 sound_weapon player_machinegun_fire + frame 23 launch_missile RHANDCONNECTOR + frame 26 sound_weapon player_machinegun_fire + frame 26 launch_missile RHANDCONNECTOR + frame 29 sound_weapon player_machinegun_fire + frame 29 launch_missile RHANDCONNECTOR + frame 32 sound_weapon player_machinegun_fire + frame 32 launch_missile RHANDCONNECTOR + frame 35 sound_weapon player_machinegun_fire + frame 35 launch_missile RHANDCONNECTOR + frame 39 sound_weapon player_machinegun_fire + frame 39 launch_missile RHANDCONNECTOR + } + anim zbeat_b models/md5/cinematics/underground/zintro_beater2.md5anim + + anim zintro2 models/md5/cinematics/underground/zintro_eater_loop.md5anim + anim zintro3 models/md5/cinematics/underground/zintro_eater_getup.md5anim + +} + +entityDef underground_zintro_zombie { + + "inherit" "npc_base" + "model" "underground_zintro_zombie" + "size" "" + "ik_numlegs" "0" + "talks" "0" + "sound_bone" "Chest" + "def_head" "head_marine_helmet" + "head_joint" "Shoulders" + "anim" "zbeat_a" + "def_projectile" "projectile_bullet_zsec_machinegun" + "projectile_spread" "0" + "num_projectiles" "1" + "smoke_weapon" "cgsmoke.smoke" + "def_attach" "prop_machinegun" + "cinematic" "1" + +} + +model underground_zintro_pop { + mesh models/md5/characters/npcs/zheads/z4.md5mesh + anim idle models/md5/characters/npcs/zheads/z4idle.md5anim + anim zbeat_a models/md5/characters/npcs/zheads/zbeat2.md5anim { + frame 98 trigger fredsplat2 + frame 101 call map_mc_underground::sci_switch_head_to_stump + } + anim zbeat_b models/md5/characters/npcs/zheads/zbeat3.md5anim +} + + + +model underground_choke_victim { + inherit npc_tshirt + + anim choke_a models/md5/cinematics/underground/invasion_choke_victim_a.md5anim { + frame 1 disableGravity + } + anim choke_b models/md5/cinematics/underground/invasion_choke_victim_b.md5anim { + frame 1 disableGravity + } + + anim choke_c models/md5/cinematics/underground/invasion_choke_victim_c.md5anim { + frame 1 disableGravity + } + + +} + +entityDef underground_choke_victim { + "inherit" "npc_base" + "model" "underground_choke_victim" + "def_head" "head_bald" + "head_joint" "Shoulders" + "size" "" + "ik_numlegs" "0" + "talks" "0" + "sound_bone" "Chest" + "cinematic" "1" + + "copy_joint_world eyecontrol" "" + + "anim" "choke_a" +} + + + +model underground_choke_zsechead { + mesh models/md5/characters/npcs/zheads/z6.md5mesh + anim idle models/md5/characters/npcs/zheads/z6idle.md5anim + anim stand models/md5/characters/npcs/zheads/z6idle.md5anim + anim choke_a models/md5/characters/npcs/zheads/z6choke_a.md5anim + anim choke_b models/md5/characters/npcs/zheads/z6choke_b.md5anim + anim choke_c models/md5/characters/npcs/zheads/z6choke_c.md5anim + +} + + + +model underground_choke_zombie { + inherit npc_security + + anim choke_a models/md5/cinematics/underground/invasion_choke_zombie_a.md5anim { + frame 1 disableGravity + } + + anim choke_b models/md5/cinematics/underground/invasion_choke_zombie_b.md5anim { + frame 1 disableGravity + } + + anim choke_c models/md5/cinematics/underground/invasion_choke_zombie_c.md5anim { + frame 1 disableGravity + } + + +} + +entityDef underground_choke_zombie { + "inherit" "npc_base" + "model" "underground_choke_zombie" + //"skin" "skins/characters/npcs/security_goggles.skin" + "size" "" + "ik_numlegs" "0" + "talks" "0" + "sound_bone" "Chest" + + "def_head" "underground_choke_zsechead" + "head_joint" "Shoulders" + + "anim" "choke_a" + "cinematic" "1" + +} + +model underground_zsecshotgun { + inherit model_monster_zsec_shotgun + + anim windowstart models/md5/cinematics/underground/ending_zsecstart.md5anim { + ai_no_turn + frame 1 disableWalkIK + frame 1 sound_voice monster_zombie_security_melee + } + anim window models/md5/cinematics/underground/ending_zsec.md5anim { + ai_no_turn + frame 1 disableWalkIK + frame 1 sound_voice2 monster_zombie_security_melee + frame 40 enableWalkIK + } +} + +entityDef underground_zsecshotgun { + "inherit" "monster_zsec_shotgun" + "model" "underground_zsecshotgun" + "anim" "windowstart" +} + +model underground_fatty { + inherit model_monster_zombie + mesh models/md5/monsters/zombies/jumpsuitzombie.md5mesh + skin skins/monsters/zombies/jumpsuit.skin + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER eyecontrol chair) + + + anim airlockdrag models/md5/cinematics/underground/airlockfdrag.md5anim { + frame 1 sound_voice mcu_zfat_bodydrag_01 + frame 1 sound_body zombie_attack_1 + //frame 5 sound_body2 monster_zombie_fat_chatter + frame 32 sound_voice2 mcu_zfat_bodydrag_02 + frame 29 sound_voice zombie_attack_4 + frame 61 sound_voice2 zombie_attack_5 + frame 64 sound_voice mcu_zfat_bodydrag_03 + + + } + anim airlockeat models/md5/cinematics/underground/airlockfeatloop.md5anim { + frame 1 sound_body2 mcu_zfat_fleshrip + frame 38 sound_body2 mcu_zfat_fleshrip + + + } + anim airlockgetup models/md5/cinematics/underground/airlockfgetup.md5anim { + frame 1 sound_voice monster_zombie_fat_sight1 + } +} + +entityDef underground_fatty { + "inherit" "monster_zombie_maint_bald" + "model" "underground_fatty" + "def_head" "head_bloodybald" + "head_joint" "Shoulders" + "anim" "airlockdrag" +} + +model underground_tunnel_imp { + inherit monster_demon_imp + + anim tunnel models/md5/cinematics/underground/tunnelscurry.md5anim { + ai_no_turn + frame 1 disableGravity + frame 1 disableWalkIK + frame 6 sound_body snd_footstep + frame 11 sound_voice snd_sight + frame 10 sound_body snd_footstep + frame 13 sound_body snd_footstep + frame 20 sound_body snd_footstep + frame 26 sound_body snd_footstep + frame 30 sound_body snd_footstep + frame 35 sound_body snd_footstep + frame 37 sound_body snd_footstep + frame 41 sound_body snd_footstep + frame 45 trigger impush + frame 51 enableGravity + frame 51 enableWalkIK + frame 54 sound_body snd_footstep + frame 59 sound_body snd_footstep + } + + anim stairs models/md5/cinematics/underground/stairsimpcrawl.md5anim { + ai_no_turn + frame 1 disableGravity + frame 1 disableWalkIK + frame 5 sound_voice snd_sight + frame 5 sound_body snd_footstep + frame 7 sound_body snd_footstep + frame 15 sound_body snd_footstep + frame 18 sound_body snd_footstep + frame 23 sound_body snd_footstep + frame 28 sound_body snd_footstep + frame 28 enableGravity + frame 28 enableWalkIK + } +} + +entityDef underground_tunnel_imp { + "inherit" "monster_demon_imp" + "model" "underground_tunnel_imp" + "anim" "tunnel" +} + +model underground_impstairs { + mesh models/md5/cinematics/underground/impstairs.md5mesh + anim stairs models/md5/cinematics/underground/impstairs.md5anim +} + +entityDef underground_impstairs { + "inherit" "cin_base" + "anim" "stairs" + "model" "underground_impstairs" +} + +model underground_mcu_pipes { + mesh models/md5/cinematics/underground/mcu_pipes.md5mesh + anim mcu_pipes models/md5/cinematics/underground/mcu_pipes.md5anim { + frame 3 trigger PIPES_steam1 + frame 5 trigger PIPES_steam2 + frame 4 trigger PIPES_steam3 + frame 2 trigger PIPES_steam4 + + } +} + +entityDef underground_mcu_pipes { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + + "spawnclass" "idAnimated" + "model" "underground_mcu_pipes" + "anim" "mcu_pipes" + "cinematic" "1" +} + diff --git a/base/def/monster_boss_cyberdemon.def b/base/def/monster_boss_cyberdemon.def new file mode 100644 index 00000000..09a3a826 --- /dev/null +++ b/base/def/monster_boss_cyberdemon.def @@ -0,0 +1,340 @@ +/*********************************************************************** + + monster_boss_cyberdemon.def + +***********************************************************************/ + +export fred { + + options -prefix CB_ -keep Waist Rclavicle Lloleg cyber_barrel_smoke cyber_lfoot_dust cyber_rfoot_dust cyber_mouth_fire cyber_mouth_fire_L cyber_mouth_fire_R Lknee Rknee Barrel ROT fx cyber_backfire1 cyber_backfire2 cyber_backfire3 -parent fx Barrel -parent Barrel Rwrist -parent Lknee Hips -parent Rknee Hips -parent Waist ROT -parent ROT Body -parent cyber_lfoot_dust Ltoe_r -parent cyber_rfoot_dust Rtoe_r -parent cyber_barrel_smoke Rwrist -sourcedir models/monsters/cyberdemon/cycles -destdir models/md5/monsters/cyberdemon + + mesh cyberdeath.mb -dest cyberdeath_cyberdemon -sourcedir maps/fred/cyberdemon -destdir models/md5/cinematics/hellhole -prefix CB_ + anim cyberdeath.mb -range 1 1 -dest cyberdeath_cyberdemon_bind -sourcedir maps/fred/cyberdemon -destdir models/md5/cinematics/hellhole -prefix CB_ + anim cyberdeath.mb -range 44 89 -dest cyberdeath_cyberdemon_a -sourcedir maps/fred/cyberdemon -destdir models/md5/cinematics/hellhole -prefix CB_ + anim cyberdeath.mb -range 90 199 -dest cyberdeath_cyberdemon_b -sourcedir maps/fred/cyberdemon -destdir models/md5/cinematics/hellhole -prefix CB_ + anim cyberdeath.mb -range 200 220 -dest cyberdeath_cyberdemon_c -sourcedir maps/fred/cyberdemon -destdir models/md5/cinematics/hellhole -prefix CB_ + anim cyberdeath.mb -range 221 275 -dest cyberdeath_cyberdemon_d -sourcedir maps/fred/cyberdemon -destdir models/md5/cinematics/hellhole -prefix CB_ + anim cyberdeath.mb -range 276 340 -dest cyberdeath_cyberdemon_e -sourcedir maps/fred/cyberdemon -destdir models/md5/cinematics/hellhole -prefix CB_ + anim cyberdeath.mb -range 341 372 -dest cyberdeath_cyberdemon_f -sourcedir maps/fred/cyberdemon -destdir models/md5/cinematics/hellhole -prefix CB_ + anim cyberdeath.mb -range 373 428 -dest cyberdeath_cyberdemon_g -sourcedir maps/fred/cyberdemon -destdir models/md5/cinematics/hellhole -prefix CB_ + anim cyberdeath.mb -range 429 548 -dest cyberdeath_cyberdemon_h -sourcedir maps/fred/cyberdemon -destdir models/md5/cinematics/hellhole -prefix CB_ + anim cyberdeath.mb -range 549 800 -dest cyberdeath_cyberdemon_i -sourcedir maps/fred/cyberdemon -destdir models/md5/cinematics/hellhole -prefix CB_ + + options -prefix CD_ -keep Rclavicle cyber_barrel_smoke cyber_lfoot_dust cyber_rfoot_dust cyber_mouth_fire cyber_mouth_fire_R cyber_mouth_fire_L Lknee Rknee Barrel ROT fx cyber_backfire1 cyber_backfire2 cyber_backfire3 -parent fx Barrel -parent Barrel Rwrist -parent Lknee Hips -parent Rknee Hips -parent Waist ROT -parent ROT Body -parent cyber_lfoot_dust Ltoe_r -parent cyber_rfoot_dust Rtoe_r -parent cyber_barrel_smoke Rwrist -sourcedir models/monsters/cyberdemon/cycles -destdir models/md5/monsters/cyberdemon + + //anim cyberintro.mb -dest cyberintro_cyberdemon -range 30 765 -sourcedir maps/fred/cyberdemon -destdir models/md5/cinematics/hellhole -prefix CB_ + anim cyberintro.mb -dest cyberintro_cyberdemon1 -range 30 104 -sourcedir maps/fred/cyberdemon -destdir models/md5/cinematics/hellhole -prefix CB_ + anim cyberintro.mb -dest cyberintro_cyberdemon2 -range 105 220 -sourcedir maps/fred/cyberdemon -destdir models/md5/cinematics/hellhole -prefix CB_ + anim cyberintro.mb -dest cyberintro_cyberdemon3 -range 221 252 -sourcedir maps/fred/cyberdemon -destdir models/md5/cinematics/hellhole -prefix CB_ + anim cyberintro.mb -dest cyberintro_cyberdemon4 -range 253 337 -sourcedir maps/fred/cyberdemon -destdir models/md5/cinematics/hellhole -prefix CB_ + anim cyberintro.mb -dest cyberintro_cyberdemon5 -range 338 492 -sourcedir maps/fred/cyberdemon -destdir models/md5/cinematics/hellhole -prefix CB_ + anim cyberintro.mb -dest cyberintro_cyberdemon6 -range 493 542 -sourcedir maps/fred/cyberdemon -destdir models/md5/cinematics/hellhole -prefix CB_ + anim cyberintro.mb -dest cyberintro_cyberdemon7 -range 543 654 -sourcedir maps/fred/cyberdemon -destdir models/md5/cinematics/hellhole -prefix CB_ + anim cyberintro.mb -dest cyberintro_cyberdemon8 -range 655 732 -sourcedir maps/fred/cyberdemon -destdir models/md5/cinematics/hellhole -prefix CB_ + anim cyberintro.mb -dest cyberintro_cyberdemon9 -range 733 765 -sourcedir maps/fred/cyberdemon -destdir models/md5/cinematics/hellhole -prefix CB_ + + + addoptions -align ALL + + mesh cyberdemon.mb + anim idle.mb + anim walk2.mb + anim walk3.mb + anim sight1.mb + anim sight.mb + anim turret.mb + anim turret3.mb + anim oneshot.mb + anim twoshot.mb + anim bite1.mb + anim af_pose.mb + anim ik_pose.mb + anim stomp.mb -xyzprecision .01 -quatprecision 0.00006 + anim walkheadpain.mb + anim walkleftarmpain.mb + anim walkrightarmpain.mb + anim bite1.mb + anim evade_left.mb + anim evade_right.mb + anim death.mb -range 1 1 + anim pain_big1.mb + + +} + +model monster_boss_cyberdemon { + mesh models/md5/monsters/cyberdemon/cyberdemon.md5mesh + channel torso ( *Waist ) + channel legs ( *Hips Body origin ROT -*Waist) + + anim af_pose models/md5/monsters/cyberdemon/af_pose.md5anim + anim ik_pose models/md5/monsters/cyberdemon/ik_pose.md5anim + + anim stand models/md5/monsters/cyberdemon/idle.md5anim + anim idle models/md5/monsters/cyberdemon/idle.md5anim + anim sight1 models/md5/monsters/cyberdemon/sight.md5anim { + + frame 16.5 sound_voice snd_sight1 + + } + anim walk models/md5/monsters/cyberdemon/walk3.md5anim { + frame 17 sound_body snd_footstep + frame 17 triggerSmokeParticle cyber_rfoot_dust + frame 37 sound_body snd_footstep + frame 37 triggerSmokeParticle cyber_lfoot_dust + } + anim pain models/md5/monsters/cyberdemon/pain_big1.md5anim { + frame 1 call overrideLegs + frame 1 sound_voice snd_pain + frame 16 sound_body snd_footstep + frame 49 sound_body snd_footstep + } + + anim pain_chest models/md5/monsters/cyberdemon/pain_big1.md5anim { + frame 1 call overrideLegs + frame 1 sound_voice snd_pain + frame 16 sound_body snd_footstep + frame 49 sound_body snd_footstep + } + + anim pain_head models/md5/monsters/cyberdemon/pain_big1.md5anim { + frame 1 call overrideLegs + frame 1 sound_voice snd_pain + frame 16 sound_body snd_footstep + frame 49 sound_body snd_footstep + } + + anim pain_left_arm models/md5/monsters/cyberdemon/pain_big1.md5anim { + frame 1 call overrideLegs + frame 1 sound_voice snd_pain + frame 16 sound_body snd_footstep + frame 49 sound_body snd_footstep + } + + anim pain_right_arm models/md5/monsters/cyberdemon/pain_big1.md5anim { + frame 1 call overrideLegs + frame 1 sound_voice snd_pain + frame 16 sound_body snd_footstep + frame 49 sound_body snd_footstep + } + + //anim melee_attack1 models/md5/monsters/cyberdemon/stomp.md5anim { + // frame 18 melee melee_cyberdemon_kick + // frame 18 sound_body snd_footstep + // frame 19 sound_voice snd_footstep + //} + anim range_attack1 models/md5/monsters/cyberdemon/turret3.md5anim { + frame 19 sound_weapon snd_attackmissile + frame 19 launch_missile Barrel + frame 42 sound_weapon snd_attackmissile + frame 42 launch_missile Barrel + frame 66 sound_weapon snd_attackmissile + frame 66 launch_missile Barrel + } + anim range_attack2 models/md5/monsters/cyberdemon/oneshot.md5anim { + frame 19 sound_weapon snd_attackmissile + frame 19 launch_missile Barrel + } + anim range_attack3 models/md5/monsters/cyberdemon/twoshot.md5anim { + frame 19 sound_weapon snd_attackmissile + frame 19 launch_missile Barrel + frame 42 sound_weapon snd_attackmissile + frame 42 launch_missile Barrel + } + + anim death models/md5/monsters/cyberdemon/death.md5anim +} + +entityDef monster_boss_cyberdemon { + "inherit" "monster_default" + "editor_mins" "-90 -90 0" + "editor_maxs" "90 90 300" + "scriptobject" "ai" + "nativeobject" "rvmMonsterBossCyberdemon" + "model" "monster_boss_cyberdemon" + "ragdoll" "monster_boss_cyberdemon" + "size" "100 100 300" + "use_aas" "aas_cyberdemon" + "team" "1" + "rank" "3" + "health" "4000" + "mass" "1000" + "def_projectile" "projectile_cyber_rocket" + "fov" "120" + "attack_cone" "120" + "attack_accuracy" "2" + "melee_range" "95" + "combat_chatter_min" "2" + "combat_chatter_max" "4" + "af_push_moveables" "1" + + "def_kickdamage" "melee_cyberdemon_kick" + + "big_monster" "1" // makes his bounding box non-solid to other monsters + + "smokeParticleSystem1" "cyber_barrel_smoke" + "smokeParticleSystem2" "cyber_backfire1" + "smokeParticleSystem3" "cyber_backfire2" + "smokeParticleSystem4" "cyber_backfire3" + "smokeParticleSystem5" "cyber_mouth_fire" + "smokeParticleSystem6" "cyber_mouth_fire_L" + "smokeParticleSystem7" "cyber_mouth_fire_R" + "smokeParticleSystem8" "cyber_rfoot_dust" + "smokeParticleSystem9" "cyber_lfoot_dust" + + + "damage_zone head" "*Neck" + "damage_zone chest" "*Waist -*Rshldr -*Lshldr -*Neck" + "damage_zone left_arm" "*Lshldr" + "damage_zone right_arm" "*Rshldr" + "damage_scale head" "1" + + "pain_threshold" "150" + "finalBoss" "1" + + "focus_align_time" "0" + "head_focus_rate" "0.05" + "head_look" "1" + "bone_focus" "Barrel" + "look_min" "-90 -120 0" + "look_max" "25 120 0" + "look_joint Waist" "0.4 0.4 0.4" + "look_joint Chest" "0.4 0.4 0.4" + "look_joint Head" "0.2 0.2 0.2" + "look_joint Rshldr" "0.1 0.2 0.1" + "look_joint Relbow" "0.1 0.2 0.1" + "turn_rate" "75" + + "ik_numLegs" "2" + "ik_footSize" "20" + "ik_minWaistAnkleDist" "50" + "ik_footUpTrace" "32" + "ik_footDownTrace" "128" + "ik_waist" "Body" + "ik_hip1" "Lupleg" + "ik_hip2" "Rupleg" + "ik_knee1" "Lloleg" + "ik_knee2" "Rloleg" + "ik_ankle1" "Lankle_r" + "ik_ankle2" "Rankle_r" + "ik_dir1" "Lknee" + "ik_dir2" "Rknee" + "ik_foot1" "cyber_lfoot_dust" + "ik_foot2" "cyber_rfoot_dust" + + "snd_sight1" "monster_boss_cyberdemon_sight1" + "snd_chatter" "monster_boss_cyberdemon_chatter" + "snd_chatter_combat" "monster_boss_cyberdemon_chatter_combat" + "snd_pain" "monster_boss_cyberdemon_pain" + "snd_attackmissile" "monster_boss_cyberdemon_attackmissile" + "snd_footstep" "monster_boss_cyberdemon_step" +} + +entityDef melee_cyberdemon_kick { + "damage" "400" + "kickDir" "1 0 1" + "mtr_blob" "leftSmack" + "blob_time" "300" + "gib" "1" + "blob_x" "0" + "blob_y" "-50" + "blob_width" "650" + "blob_height" "650" + "knockback" "100" + "push" "2000" + "kick_time" "400" + "kick_amplitude" "1" + "dv_time" "100" +} + +entityDef projectile_cyber_rocket { + "spawnclass" "idProjectile" + "mins" "-6 -6 -9" + "maxs" "6 6 9" + "cone" "3" + "model" "models/monsters/cyberdemon/cdrocket.lwo" + + "def_damage" "damage_CyberrocketDirect" + "def_splash_damage" "damage_CyberRocketSplash" + + "launchFromBarrel" "1" // launch from barrel + "health" "5" // amount of damage projectile can take if damaged (0 means it can't be destroyed) + "velocity" "900 0 0" // how fast the projectile leaves the gun (or distance if fuse is 0) + "angular_velocity" "0 0 0" // how the projectile is rotating when it leaves the gun + "thrust" "0" // the rate of acceleration (always in the direction of the projectiles model) + "thrust_start" "0" // when to start accelerating + "thrust_end" "4" // when to stop accelerating + "linear_friction" "0" // "air" friction + "angular_friction" "0" + "contact_friction" "0" + "bounce" "0" // how much speed a projectile retains when it bounces off of objects (coefficient of restitution). 0 means no bounce. + "mass" "300" + "gravity" "0" // how much gravity affects the trajectory. gravity direction is same as the entity that fired it. + "fuse" "10" // how long before the projectile is removed or self-detonates. Use 0 for beam weapons (velocity == distance). + + "detonate_on_fuse" "0" // whether projectile should detonate when it's fuse runs out + "detonate_on_death" "1" // whether projectile should detonate when it's "killed" (health runs out) + "detonate_on_world" "1" // whether projectile should detonate when it hits an obstacle + "detonate_on_actor" "1" // whether projectile should detonate when it hits a character in the game + + "impact_damage_effect" "1" // whether projectile causes blood splats from characters that bleed + "impact_gib" "1" // whether projectile can gib a character or not (for example: bullets don't gib, but rockets do) + + "mtr_detonate" "textures/decals/ballburn01" + "decal_size" "75" + + "smoke_fly" "rockettrail.prt" // particle effect while in the air + // parametric particles -- temp + "model_detonate" "rocketExplosion.prt" + "smoke_detonate" "" // particle effect when detonates + "smoke_residue" "" // particle effect while in the air + "smoke_bounce" "" + "smoke_fuse" "" + + "debris_count" "6" + "def_debris" "debris_largeshrapnel" + "def_shrapnel" "debris_shrapnel" + + "mtr_light_shader" "" + "light_color" "1 0.8 0.4" + "light_radius" "160" + "light_offset" "0 0 0" + + "mtr_explode_light_shader" "muzzleflash" + "explode_light_color" "2 1.6 0.8" + "explode_light_radius" "320" + "explode_light_fadetime" "0.5" + + "snd_fly" "rocket_flight" // sound effect while in the air + "snd_explode" "rocket_impact" +} + +entityDef damage_CyberrocketDirect { + "kickDir" "1 0 0" + "damage" "40" + "knockback" "0" + "push" "2000" + "smoke_wound_flesh" "bloodwound.smoke" + "mtr_wound_flesh" "textures/decals/hurt02" + "mtr_splat_flesh" "" + "gib" "1" + + "kick_time" "600" + "kick_amplitude" "4" + + "dv_time" "500" +} + +entityDef damage_CyberRocketSplash { + "damage" "40" + "radius" "40" + "knockback" "0" + "push" "5000" + "gib" "1" + "smoke_wound_flesh" "bloodwound.smoke" + + "kick_time" "600" + "kick_amplitude" "4" + + "dv_time" "500" +} diff --git a/base/def/monster_boss_guardian.def b/base/def/monster_boss_guardian.def new file mode 100644 index 00000000..f127e0df --- /dev/null +++ b/base/def/monster_boss_guardian.def @@ -0,0 +1,351 @@ +/*********************************************************************** + + monster_boss_guardian.def + +***********************************************************************/ + +export James { + + + options -prefix GUARD_ -keep ik_foot1 ik_foot2 Lknee Rknee -keep ROT -keep teleporter_ctrl -parent ik_foot1 lankle -parent ik_foot2 rankle -parent spine_5 ROT -parent ROT spine_4 -sourcedir models/monsters/guardian/cycles -destdir models/md5/monsters/guardian + + anim guardian_intro.mb + + addoptions -align movement + + mesh guardian_mesh.mb -dest guardian + anim af_pose.mb -range 1 1 + anim idle1.mb // used as lost_enemy + anim idle2.mb + anim walk1.mb + anim walk1_R.mb + anim walk1_L.mb + anim attack1.mb + anim attack2.mb + anim attack3.mb + anim walk_attack.mb + anim walk_attack_R.mb + anim walk_attack_L.mb + anim death.mb + anim death.mb -range 200 200 -dest death_pose + anim sight1.mb + anim range_attack1.mb + anim pain_head.mb + anim run.mb + anim run_R.mb + anim run_L.mb + anim run_R_headbutt.mb + anim run_L_headbutt.mb + +} + +model monster_boss_guardian { + mesh models/md5/monsters/guardian/guardian.md5mesh + + channel legs ( *origin ) + + anim idle models/md5/monsters/guardian/idle2.md5anim { + frame 1 sound_voice snd_chatter + } + anim lost_enemy models/md5/monsters/guardian/idle1.md5anim { + frame 1 sound_voice snd_chatter + } + + anim run_right models/md5/monsters/guardian/run_R.md5anim { + frame 2 sound_body snd_footstep + } + + anim run_attack_right models/md5/monsters/guardian/run_R_headbutt.md5anim { + frame 8 sound_body snd_footstep + frame 19 sound_body snd_footstep + } + + anim run_left models/md5/monsters/guardian/run_L.md5anim { + frame 3 sound_body snd_footstep + } + + anim run_attack_left models/md5/monsters/guardian/run_L_headbutt.md5anim { + frame 12 sound_body snd_footstep + frame 20 sound_body snd_footstep + } + + anim walk_right models/md5/monsters/guardian/walk1_R.md5anim { + frame 16 sound_body snd_footstep + } + anim walk_left models/md5/monsters/guardian/walk1_L.md5anim { + frame 16 sound_body snd_footstep + } + anim walk_attack_left models/md5/monsters/guardian/walk_attack_L.md5anim { + frame 5 melee damage_guardianHeadButt + frame 5 sound_voice snd_chatter_combat + frame 14 sound_body snd_footstep + } + anim walk_attack_right models/md5/monsters/guardian/walk_attack_R.md5anim { + frame 5 melee damage_guardianHeadButt + frame 5 sound_voice snd_chatter_combat + frame 13 sound_body snd_footstep + } + anim range_attack1 models/md5/monsters/guardian/attack1.md5anim { + frame 14 sound_body snd_attack + frame 15 sound_voice snd_chatter_combat + frame 16 object_call pound_attack_right + } + anim range_attack2 models/md5/monsters/guardian/attack2.md5anim { + frame 16 object_call pound_attack_left + frame 15 sound_body snd_attack + frame 17 sound_voice snd_chatter_combat + } + anim melee_attack models/md5/monsters/guardian/attack3.md5anim { + frame 15 sound_voice snd_chatter_combat + frame 16 melee damage_guardianHeadButt + } + + anim spawn_seeker models/md5/monsters/guardian/range_attack1.md5anim { + frame 1 sound_item snd_spawn_seeker + frame 9 sound_body snd_pain + frame 11 object_call smash_ground + } + + anim pain models/md5/monsters/guardian/pain_head.md5anim { + frame 1 sound_voice snd_pain + } + + anim sight models/md5/monsters/guardian/sight1.md5anim { + frame 17 sound_voice snd_sight + } + + anim af_pose models/md5/monsters/guardian/af_pose.md5anim + anim ik_pose models/md5/monsters/guardian/af_pose.md5anim +} + +entityDef monster_boss_guardian { + "editor_mins" "-100 -100 0" + "editor_maxs" "100 100 200" + "inherit" "monster_default" + "scriptobject" "ai" + "nativeobject" "rvmMonsterBossGuardian" + "model" "monster_boss_guardian" + //"ragdoll" "monster_boss_guardian" + "size" "200 200 200" + "use_aas" "aas_guardian" + "team" "1" + "rank" "2" + "health" "800" + "melee_range" "150" + "bone_focus" "neck_2" + "def_projectile" "projectile_guardian_smash" + "turn_rate" "120" + + "look_min" "-90 -125 0" + "look_max" "25 125 0" + "look_joint spine_4" "0.4 0.4 0" + "look_joint neck_2" "0.6 0.6 0" + + "mass" "1000000" + + "mtr_light_shader" "lights/lanternglow" + "light_radius" "200" + "light_color" "1 0.2 0" + "light_offset_right" "0 32 32" + "light_offset_left" "0 32 -32" + + "smokeParticleSystem" "GflameBack" + "smokeParticleSystem2" "GflameRhand" + "smokeParticleSystem3" "head" + "smokeParticleSystem4" "GflameLHand" + "smokeParticleSystem5" "tail_12" + "smokeParticleSystem6" "GflameReye" + "smokeParticleSystem7" "GflameLeye" + "smokeParticleSystem8" "GflameNose" + "smokeParticleSystem9" "tounge_2" + + "ik_numLegs" "2" + "ik_footSize" "8" + "ik_footDownTrace" "64" + "ik_waist" "Body" + "ik_hip1" "lupleg" + "ik_hip2" "rupleg" + "ik_knee1" "lloleg" + "ik_knee2" "rloleg" + "ik_ankle1" "lleg" + "ik_ankle2" "rleg" + "ik_dir1" "Lknee" + "ik_dir2" "Rknee" + "ik_foot1" "ik_foot1" + "ik_foot2" "ik_foot2" + + "snd_sight" "monster_demon_guardian_sight" + "snd_chatter" "monster_demon_guardian_chatter" + "snd_chatter_combat" "monster_demon_guardian_chatter_combat" + "snd_pain" "monster_demon_guardian_pain" + "snd_death" "monster_demon_guardian_die" + "snd_footstep" "monster_demon_guardian_footstep" + "snd_attack" "monster_demon_guardian_attack" + "snd_spawn_seeker" "monster_demon_guardian_spawn" + "snd_kablam" "monster_demon_guardian_death_impact" + + "def_poundgrounddamage" "damage_guardianPoundGround" + "def_poundground" "guardian_poundground_explosion" +} + +entityDef guardian_poundground_explosion { + "spawnclass" "idSpawnableEntity" + "model" "guardian_poundground_b.prt" +} + +entityDef damage_guardianHeadButt { + "snd_hit" "monster_demon_imp_melee_hit" + "snd_miss" "monster_demon_imp_melee_miss" + "kickDir" "0 1 0" + + "damage" "30" + + "mtr_blob" "rightSlash" + "blob_time" "300" + "blob_x" "-100" + "blob_y" "-100" + "blob_width" "600" + "blob_height" "600" + + "knockback" "140" + + "kick_time" "400" + "kick_amplitude" "2" + + "dv_time" "100" +} + +entityDef monster_boss_guardian_spawner { + "scriptobject" "ai" + "nativeobject" "rvmMonsterBossGuardianSpawner" + "spawnclass" "idAI" + "model" "models/monsters/spawn/spawn.lwo" + "lightning_model" "models/monsters/spawn/spawnlightning.lwo" + "model_pain" "models/monsters/spawn/redspawn.lwo" + "use_combat_bbox" "1" + "mins" "-32 -32 -32" + "maxs" "32 32 32" + "use_aas" "" + "team" "1" + "rank" "0" + "health" "1360" + + "beam_color" "0.1 0.7 1" + "beam_pain_color" "1 0.0 0.0" + "lightning_color" "0.5 0.5 1" + "lightning_pain_color" "1 0.5 0.2" + "mtr_beam_skin" "textures/sfx/flare" + "mtr_beam_light_shader" "lights/lanternglow" + + "rotate" "0 70 0" + "offset" "0 0 236" + "beam_offset" "0 0 -96" +} + +entityDef projectile_guardian_smash { + "spawnclass" "idProjectile" + "mins" "-16 -16 -16" + "maxs" "16 16 16" + "model" "guardian_fireball_b.prt" + + "noFloorCollision" "1" + + "def_damage" "damage_guardian_smash_direct" + "def_splash_damage" "damage_guardian_smash_splash" + + "health" "10000" + "velocity" "450 0 0" + "angular_velocity" "0 0 0" + "thrust" "0" + "thrust_start" "0" + "thrust_end" "0" + "linear_friction" "0" + "angular_friction" "0" + "contact_friction" "0" + "bounce" "0.9" + "mass" "500" + "gravity" "0" + "fuse" "4" + + "detonate_on_fuse" "0" + "detonate_on_death" "0" + "detonate_on_world" "1" + "detonate_on_actor" "1" + + "impact_damage_effect" "0" + "impact_gib" "1" + + "mtr_detonate" "textures/decals/ballburn01" + "decal_size" "75" + + "smoke_fly" "spark_atom_c.prt" + "smoke_detonate" "" + "smoke_residue" "" + "smoke_bounce" "" + "smoke_fuse" "" + + "model_detonate" "rocketexplosion.prt" + + "debris_count" "3" + "def_debris" "debris_largeshrapnel" + "def_shrapnel" "debris_shrapnel" + + // temp removed while seneca works on it + //"mtr_light_shader" "lights/impflyflash" + //"light_color" "0.9 0.7 0.05" + //"light_radius" "160" + //"light_offset" "0 0 0" + + "mtr_explode_light_shader" "lights/impflash" + "explode_light_color" "3.6 3.0 0.5" + "explode_light_radius" "320" + "explode_light_fadetime" "1.0" + + "snd_explode" "monster_demon_imp_fireball_explode" + "snd_fly" "monster_guardian_fireball_flight" +} + +entityDef damage_guardian_smash_direct { + "damage" "20" + "push" "1000" + "smoke_wound_flesh" "bloodwound.smoke" + "mtr_wound_flesh" "textures/decals/hurt02" + "mtr_splat_flesh" "" +} + +entityDef damage_guardian_smash_splash { + "damage" "20" + "radius" "100" + "knockback" "80" + "push" "5000" + "smoke_wound_flesh" "bloodwound.smoke" +} + +entityDef damage_guardianPoundGround { + "damage" "20" + "radius" "130" + "knockback" "40" + "push" "5000" +} + +entityDef damage_guardianCharge { + "snd_hit" "monster_demon_imp_melee_hit" + "snd_miss" "monster_demon_imp_melee_miss" + "kickDir" "1 0 0" + + "damage" "30" + + "mtr_blob" "rightSlash" + "blob_time" "300" + "blob_x" "-100" + "blob_y" "-100" + "blob_width" "600" + "blob_height" "600" + + "knockback" "200" + + "kick_time" "400" + "kick_amplitude" "2" + + "dv_time" "100" +} diff --git a/base/def/monster_boss_guardian_seeker.def b/base/def/monster_boss_guardian_seeker.def new file mode 100644 index 00000000..d94bd6ab --- /dev/null +++ b/base/def/monster_boss_guardian_seeker.def @@ -0,0 +1,74 @@ +/*********************************************************************** + + monster_boss_guardian_seeker.def + +***********************************************************************/ + +export James { + options -prefix GSE_ -sourcedir models/monsters/gseeker/cycles -destdir models/md5/monsters/gseeker + + mesh gseeker_mesh.mb -rotate 90 -dest gseeker + anim af_pose.mb -rotate 90 + anim idle3.mb -rotate 90 + anim travel3.mb -rotate 90 + anim sight3.mb -rotate 90 + anim teleport3.mb -rotate 90 + anim pain3.mb -rotate 90 +} + +model monster_boss_guardian_seeker { + mesh models/md5/monsters/gseeker/gseeker.md5mesh + channel torso ( *origin ) + offset ( 0 0 -48 ) + + anim idle models/md5/monsters/gseeker/idle3.md5anim + anim fly models/md5/monsters/gseeker/travel3.md5anim + anim charge models/md5/monsters/gseeker/travel3.md5anim + anim sight models/md5/monsters/gseeker/sight3.md5anim + anim teleport models/md5/monsters/gseeker/teleport3.md5anim + anim pain models/md5/monsters/gseeker/pain3.md5anim + anim initial models/md5/monsters/gseeker/af_pose.md5anim +} + +entityDef monster_boss_guardian_seeker { + "inherit" "monster_default" + "scriptobject" "ai" + "nativeobject" "rvmMonsterBossGuardianSeeker" + "model" "monster_boss_guardian_seeker" + "model_lightbeam" "models/monsters/gseeker/gseeker_flare_on_orig.lwo" + "size" "48 48 82" + "on_activate" "" + "use_aas" "aas48" + "team" "1" + "rank" "0" + "health" "70" + "fly_offset" "160" + "turn_rate" "360" + "fly_speed" "500" + "mass" "200" + "burnaway" "0.25" + + "bone_flytilt" "body" + + //"smokeParticleSystem" "brain_1" + + "def_light1" "seeker_light1" + "def_light2" "seeker_light2" + + "snd_sight" "monster_boss_guardian_seeker_sight" + "snd_death" "monster_boss_guardian_seeker_die" + +} + +entityDef seeker_light1 { + "inherit" "light" + "model" "" + "radius" "64" + "texture" "lights/lanternglow" +} + +entityDef seeker_light2 { + "inherit" "light" + "model" "" + "texture" "lights/spot01" +} diff --git a/base/def/monster_boss_maledict.def b/base/def/monster_boss_maledict.def new file mode 100644 index 00000000..f6aae5f7 --- /dev/null +++ b/base/def/monster_boss_maledict.def @@ -0,0 +1,71 @@ +/*********************************************************************** + + monster_boss_maledict.def + +***********************************************************************/ + +export fred { + + + options -prefix MAL_ + + mesh models/monsters/maledict/cycles/maledict.mb -dest models/md5/monsters/maledict/maledict + anim inhell.mb -dest inhell -sourcedir maps/fred/ending/ -destdir models/md5/monsters/maledict + anim inhell.mb -dest inhell2 -range 602 650 -sourcedir maps/fred/ending/ -destdir models/md5/monsters/maledict -prefix MAL2_ + + options -prefix ENV_ + mesh maps/fred/ending/inhell.mb -dest models/md5/monsters/maledict/debris + anim inhell.mb -dest debris -sourcedir maps/fred/ending/ -destdir models/md5/monsters/maledict + + +} + +export fred { + + camera maps/fred/ending/inhell.mb -dest models/md5/monsters/maledict/endingcam -range 1 540 + camera maps/fred/ending/inhell.mb -dest models/md5/monsters/maledict/endingcam2 -range 602 650 +} + +entityDef ending_cam { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + + + "spawnclass" "idCameraAnim" + + "anim ending" "models/md5/monsters/maledict/endingcam.md5camera" + "anim ending_b" "models/md5/monsters/maledict/endingcam2.md5camera" +} + +model monster_boss_maledict_cinematic { + mesh models/md5/monsters/maledict/maledict.md5mesh + skin skins/models/monsters/maledict.skin + anim inhell models/md5/monsters/maledict/inhell.md5anim { + frame 101 skin skins/models/monsters/maledictnohead.skin + } + anim inhell_b models/md5/monsters/maledict/inhell2.md5anim { + frame 1 skin skins/models/monsters/maledictnohead.skin + frame 1 sound_global hh_sfx_dragonscream + frame 35 sound_global hh_music_credits + } + + +} + +entityDef monster_boss_maledict_cinematic { + "inherit" "cin_base" + "anim" "inhell" + "model" "monster_boss_maledict_cinematic" +} + +model ending_debris { + mesh models/md5/monsters/maledict/debris.md5mesh + anim inhell models/md5/monsters/maledict/debris.md5anim +} + +entityDef ending_debris { + "inherit" "cin_base" + "anim" "inhell" + "model" "ending_debris" +} \ No newline at end of file diff --git a/base/def/monster_boss_sabaoth.def b/base/def/monster_boss_sabaoth.def new file mode 100644 index 00000000..2be9696b --- /dev/null +++ b/base/def/monster_boss_sabaoth.def @@ -0,0 +1,137 @@ +/*********************************************************************** + + monster_boss_sabaoth.def + +***********************************************************************/ + +export James { + options -prefix SAB_ -keep ROT -align movement -sourcedir models/monsters/sabaoth/cycles -destdir models/md5/monsters/sabaoth + + mesh sabaoth_mesh.mb -dest sabaoth + anim idle1.mb + anim idle2.mb + anim attack_claw.mb + anim attack_bfg.mb + anim move_backward.mb + anim move_forward.mb + anim move_start.mb + anim move_stop.mb + anim pain_chest.mb + anim pain_head.mb + anim pain_left.mb + anim pain_right.mb + anim sight.mb + anim travel.mb + anim af_pose.mb + anim death.mb +} + +model monster_boss_sabaoth { + mesh models/md5/monsters/sabaoth/sabaoth.md5mesh + channel torso ( *mech_spine_2 ) + channel legs ( *origin -*mech_spine_2 ROT ) + + anim stand models/md5/monsters/sabaoth/idle1.md5anim + anim range_attack models/md5/monsters/sabaoth/attack_bfg.md5anim { + frame 5 object_call fire_bfg + frame 3 sound_weapon sabaoth_bfg_fire + + } + anim move_start models/md5/monsters/sabaoth/move_start.md5anim + anim move_forward models/md5/monsters/sabaoth/travel.md5anim + anim move_stop models/md5/monsters/sabaoth/move_stop.md5anim + anim sight models/md5/monsters/sabaoth/sight.md5anim { + frame 1 sound_voice2 sabaoth_sight + } + anim af_pose models/md5/monsters/sabaoth/af_pose.md5anim + + anim melee_attack models/md5/monsters/sabaoth/attack_claw.md5anim { + frame 1 sound_weapon sabaoth_melee + frame 40 melee melee_sabaoth + } + anim death models/md5/monsters/sabaoth/death.md5anim { + frame 1 sound_voice sabaoth_death + } +} + +entityDef monster_boss_sabaoth { + "editor_mins" "-86 -86 0" + "editor_maxs" "86 86 144" + "inherit" "monster_default" + "scriptobject" "ai" + "nativeobject" "rvmMonsterBossSabaoth" + "ragdoll" "monster_boss_sabaoth" + "size" "172 172 144" + "use_aas" "aas_sabaoth" + "turn_rate" "140" + "team" "1" + "rank" "2" + "health" "1750" + "fov" "360" + "model" "monster_boss_sabaoth" + "fly_speed" "200" + "def_projectile" "projectile_sabaoth_bfg" + "attack_cone" "360" + "attack_accuracy" "1" + "projectile_spread" "0" + "num_projectiles" "1" + "melee_range" "220" + + "head_focus_rate" "0.05" + + "look_min" "0 -180 0" + "look_max" "0 180 0" + "look_joint mech_spine_1" "0 1 0" + + "bone_focus" "organic_head" + + "damage_zone head" "*organic_neck_1" + "damage_zone chest" "*organic_spine_1 -*organic_stub_1 -*organic_clavicle -*organic_neck_1" + "damage_zone left_arm" "*organic_clavicle" + "damage_zone right_arm" "*organic_stub_1" + "damage_zone legs" "*origin -*mech_spine_2 ROT" + "damage_scale legs" "0.75" + "mass" "99999999" + "pain_threshold" "50" + + "mtr_flashShader" "muzzleflash" + "flashTime" "0.15" + "flashColor" "0 0.8 0" + "flashRadius" "120" + + "chatter_combat_min" "5" + "chatter_combat_max" "15" + + "snd_chatter_combat" "sabaoth_taunts" + "snd_death" "sabaoth_death" + "snd_move_start" "sabaoth_move_start" + "snd_move" "sabaoth_move" + "snd_move_stop" "sabaoth_move_stop" +} + +entityDef projectile_sabaoth_bfg { + "inherit" "projectile_bfg" + "no_contents" "0" +} + +entityDef melee_sabaoth { + "snd_hit" "monster_demon_imp_melee_hit" + "snd_miss" "monster_demon_imp_melee_miss" + "kickDir" "0 1 0" + + "damage" "40" + + "mtr_blob" "rightSlash" + "blob_time" "300" + "blob_x" "-100" + "blob_y" "-100" + "blob_width" "600" + "blob_height" "600" + + "knockback" "70" + + "kick_time" "400" + "kick_amplitude" "2" + + "dv_time" "200" +} diff --git a/base/def/monster_boss_vagary.def b/base/def/monster_boss_vagary.def new file mode 100644 index 00000000..aa024cb7 --- /dev/null +++ b/base/def/monster_boss_vagary.def @@ -0,0 +1,256 @@ +/*********************************************************************** + + monster_boss_vagary.def + +***********************************************************************/ + +export fred { + options -prefix VAG_ -keep mouthmissile Lknee1 Lknee2 Lknee3 Rknee1 Rknee2 Rknee3 -parent mouthmissile Head + + anim maps/fred/caverns2/bridge2.mb -range 315 490 -dest models/md5/cinematics/caverns2/bridge_pinky + + addoptions -sourcedir models/monsters/vagary/cycles + addoptions -destdir models/md5/monsters/vagary + + mesh vagary_mesh.mb -rotate 90 -dest vagary + anim af_pose.mb -rotate -90 + anim stand.mb + anim alert_idle.mb + anim wake.mb + anim sight.mb + //anim walk.mb + anim walk3.mb + anim sleep.mb + anim melee1.mb + anim melee2.mb + anim melee3.mb + anim chestpain.mb + anim headpain.mb + anim luparmpain.mb + anim ruparmpain.mb + anim evade_right.mb + anim evade_left.mb -rotate 90 + anim range_attack.mb + anim downwalk.mb + + anim vagretreat.mb -rotate 180 -dest vagintro_retreat -sourcedir maps/fred/alphalabs3 -destdir models/md5/cinematics/alphalabs3 + + addoptions -prefix VAG2_ + + anim vags2.mb -dest vag2 -sourcedir maps/fred/caverns2 -destdir models/md5/cinematics/caverns2 + + addoptions -prefix VAG1_ + + anim vags2.mb -rotate -180 -range 1 135 -dest vag1 -sourcedir maps/fred/caverns2 -destdir models/md5/cinematics/caverns2 + + + anim playershot1.mb -dest vagintro_vagary1 -sourcedir maps/fred/alphalabs3 -destdir models/md5/cinematics/alphalabs3 + anim vagaryintro2.mb -dest vagintro_vagary2 -sourcedir maps/fred/alphalabs3 -destdir models/md5/cinematics/alphalabs3 + + /******** + web fx + *********/ + + options -prefix WEB_ -align Center + mesh models/monsters/trite/cycles/web.mb + anim models/monsters/trite/cycles/web.mb + anim models/monsters/trite/cycles/webflight.mb + anim models/monsters/trite/cycles/webgrowth.mb +} + +model monster_boss_vagary { + mesh models/md5/monsters/vagary/vagary.md5mesh + channel torso ( *Waist ) + channel legs ( *origin -*Waist ) + + anim af_pose models/md5/monsters/vagary/af_pose.md5anim + anim ik_pose models/md5/monsters/vagary/af_pose.md5anim + + anim stand models/md5/monsters/vagary/stand.md5anim + anim idle models/md5/monsters/vagary/alert_idle.md5anim + anim walk models/md5/monsters/vagary/walk3.md5anim { + frame 4 sound_body snd_step + frame 7 sound_body snd_step + frame 12 sound_body snd_step + frame 17 sound_body snd_step + frame 23 sound_body snd_step + frame 27 sound_body snd_step + frame 30 sound_body snd_step + frame 34 sound_body snd_step + frame 41 sound_body snd_step + } + anim evade_right models/md5/monsters/vagary/evade_right.md5anim { + frame 1 sound_body monster_boss_vagary_evade_right + } + anim evade_left models/md5/monsters/vagary/evade_left.md5anim { + frame 1 sound_body monster_boss_vagary_evade_left + } + anim sight models/md5/monsters/vagary/sight.md5anim { + frame 10 sound_voice snd_sight + } + anim melee_attack1 models/md5/monsters/vagary/melee1.md5anim { + frame 1 call overrideLegs + frame 1 sound_voice2 monster_boss_vagary_attack1 + frame 10 melee melee_vagRightClaw + } + anim melee_attack2 models/md5/monsters/vagary/melee2.md5anim { + frame 1 call overrideLegs + frame 1 sound_voice2 monster_boss_vagary_attack2 + frame 18 melee melee_vagLeftClaw + } + anim melee_attack3 models/md5/monsters/vagary/melee3.md5anim { + frame 1 call overrideLegs + frame 1 sound_voice2 monster_boss_vagary_attack3 + frame 16 melee melee_vagRightClaw + frame 35 melee melee_vagLeftClaw + frame 38 melee melee_vagRightClaw + } + + anim pain models/md5/monsters/vagary/chestpain.md5anim { + frame 1 sound_voice monster_boss_vagary_pain + } + anim pain_chest models/md5/monsters/vagary/chestpain.md5anim { + frame 1 sound_voice monster_boss_vagary_pain + } + anim pain_head models/md5/monsters/vagary/headpain.md5anim { + frame 1 sound_voice monster_boss_vagary_pain_head + } + anim pain_right_arm models/md5/monsters/vagary/ruparmpain.md5anim { + frame 1 sound_voice monster_boss_vagary_pain_right_arm + } + anim pain_left_arm models/md5/monsters/vagary/luparmpain.md5anim { + frame 1 sound_voice monster_boss_vagary_pain_left_arm + } +} + +entityDef monster_boss_vagary { + "editor_mins" "-48 -48 0" + "editor_maxs" "48 48 96" + + "inherit" "monster_default" + "spawnclass" "idAI_Vagary" + "scriptobject" "ai" + "nativeobject" "rvmMonsterBossVagary" + "ragdoll" "monster_demon_vagary" + "model" "monster_boss_vagary" + "anim" "idle" + "size" "80 80 96" + "use_aas" "aas96" + "team" "1" + "rank" "2" + "health" "1300" + "melee_range" "64" + "attack_cone" "70" + "attack_accuracy" "0" + "turn_rate" "360" + "mass" "600" + "smoke_burnParticleSystem" "burn_manc.prt-body" + "burnaway" "0.50" + + "look_min" "-90 -125 0" + "look_max" "25 125 0" + "look_joint Torso" "0.1333 0.1333 0" + "look_joint Chest" "0.1333 0.1333 0" + "look_joint Shoulders" "0.1333 0.1333 0" + "look_joint Head" "0.6 0.6 0" + "look_joint Ruparm" "-0.4 0 0" + "look_joint Luparm" "-0.4 0 0" + + "ik_numLegs" "6" + "ik_footSize" "0" + "ik_waist" "Body" + "ik_hip1" "Lclaw3b" + "ik_hip2" "Rclaw3b" + "ik_hip3" "Lclaw3c" + "ik_hip4" "Rclaw3c" + "ik_hip5" "Lclaw3d" + "ik_hip6" "Rclaw3d" + "ik_knee1" "Lclaw4b" + "ik_knee2" "Rclaw4b" + "ik_knee3" "Lclaw4c" + "ik_knee4" "Rclaw4c" + "ik_knee5" "Lclaw4d" + "ik_knee6" "Rclaw4d" + "ik_ankle1" "Lclaw5b" + "ik_ankle2" "Rclaw5b" + "ik_ankle3" "Lclaw5c" + "ik_ankle4" "Rclaw5c" + "ik_ankle5" "Lclaw5d" + "ik_ankle6" "Rclaw5d" + "ik_dir1" "Lknee1" + "ik_dir2" "Rknee1" + "ik_dir3" "Lknee2" + "ik_dir4" "Rknee2" + "ik_dir5" "Lknee3" + "ik_dir6" "Rknee3" + "ik_foot1" "Lclaw7b" + "ik_foot2" "Lclaw7c" + "ik_foot3" "Lclaw7d" + "ik_foot4" "Rclaw7b" + "ik_foot5" "Rclaw7c" + "ik_foot6" "Rclaw7d" + + "damage_zone head" "*Neck" + "damage_zone chest" "*Waist -*Ruparm -*Luparm -*Neck" + "damage_zone left_arm" "*Luparm" + "damage_zone right_arm" "*Ruparm" + "damage_zone legs" "*Tail" + + "damage_scale head" "2" + + "snd_sight" "monster_boss_vagary_sight" + "snd_chatter" "monster_boss_vagary_idle" + "snd_chatter_combat" "monster_boss_vagary_chatter_combat" + "snd_pain" "monster_boss_vagary_pain" + "snd_pickup" "monster_boss_vagary_pickup" + "snd_death" "monster_boss_vagary_death" + "snd_step" "monster_demon_vagary_step" + "snd_melee" "monster_zombie_commando_melee_miss" + "snd_burn" "monster_demon_tick_burn" +} + +entityDef melee_vagLeftClaw { + // melee specific parameters + "snd_hit" "monster_demon_imp_melee_hit" + "snd_miss" "monster_demon_imp_melee_miss" + "kickDir" "0 -1 0" + + // damage parameters + "damage" "12" + + "mtr_blob" "leftSlash" + "blob_time" "300" + "blob_x" "140" + "blob_y" "-100" + "blob_width" "600" + "blob_height" "600" + + "knockback" "40" + + "kick_time" "400" + "kick_amplitude" "2" + + "dv_time" "100" +} + +entityDef melee_vagRightClaw { + "snd_hit" "monster_demon_imp_melee_hit" + "snd_miss" "monster_demon_imp_melee_miss" + "kickDir" "0 1 0" + + "damage" "12" + + "mtr_blob" "rightSlash" + "blob_time" "300" + "blob_x" "-100" + "blob_y" "-100" + "blob_width" "600" + "blob_height" "600" + + "knockback" "30" + + "kick_time" "400" + "kick_amplitude" "2" + + "dv_time" "100" +} diff --git a/base/def/monster_default.def b/base/def/monster_default.def new file mode 100644 index 00000000..21fc49c6 --- /dev/null +++ b/base/def/monster_default.def @@ -0,0 +1,189 @@ +/*********************************************************************** + + monster_default.def + +***********************************************************************/ + +entityDef monster_default { + "editor_color" "1 .5 0" + "editor_mins" "-24 -24 0" + "editor_maxs" "24 24 64" + "editor_showangle" "1" + "editor_copy" "anim" + + "editor_var noDamage" "if set, monster won't take damage." + "editor_var ambush" "if set, monster only wakes up if it sees the player." + "editor_var enemy" "Set to name of character to attack when activated." + "editor_var teleport" "if set, monster teleports in when triggered." + "editor_var wakeup_target" "list of entities to trigger when monster sees the player. can be used like 'target' in that you can have several of these and the monster will activate each one." + "editor_var attack_path" "When activated, either by sight or by trigger, follow a path of path_corners to the end and then attack. Monster will not play sight or 'on_activate' animation. Will exit path if enemy gets too close, unless 'stay_on_attackpath' is set." + "editor_var stay_on_attackpath" "don't exit attack_path when close to enemy." + + "editor_var anim" "Animation to cycle when spawned in." + "editor_var num_cinematics" "When set, character is in cinematic mode. Remains hidden until triggered, then plays each anim in sequence, then triggers targets becomes hidden once more. Anims are specified by setting 'anim1', 'anim2', 'anim3', etc." + "editor_var cinematic_no_hide" "When set, character won't hide after playing cinematics." + "editor_var on_activate" "Animation to play when monster sees player or is triggered. Set to blank to make monster immediately start attacking the player without playing an animation." + "editor_var on_activate_blend" "# of frames to blend out of 'on_activate' animation when it's done playing. Default is 4 frames." + "editor_var trigger_anim" "Monster remains hidden until triggered, plays anim specified and immediately goes after the player." + "editor_var wake_on_attackcone" "Monster will wake up and attack when player enters it's attack cone. Monster will also wake up when triggered or shot." + "editor_var walk_on_trigger" "Monster begins following his path when triggered but doesn't get angry right away. Do not set 'attack_path' or 'trigger' with 'walk_on_trigger'." + "editor_var ignore_flashlight" "Prevents the monster being triggered by the flashlight." + "editor_var trigger" "If set, monster will only become angry when triggered or damaged, and not on sight. Monster will play 'anim' until triggered, or follow his path. If 'attack_path' is set," \ + "monster waits until triggered to follow it. Do not set 'walk_on_trigger' when using 'trigger'." + "editor_var hide" "Causes monster to be hidden and nonsolid until triggered. Set to 2 for single trigger (entity wakes up when unhidden)." + "editor_var spawner" "when set, spawns a monster whenever triggered. # specifies the maximum monsters to have spawned at any one time (forexample, setting 'spawner' to '3' allows up to 3 monsters at once)." + "editor_var spawn_target" "when 'spawner' is set, this specifies the target of the spawner. usefull for having the spawned monster target the spawner." + "editor_var no_idle_chatter" "When set, monster will not make idle sounds" + "editor_var walk_on_sight" "Allows the monster to begin walking towards the player before his sight animation finishes." + "editor_var no_sight" "Monster will not wake up upon seeing player. He'll still wake up to sounds or being triggered." + "editor_var target" "set of path_* entities to visit." + "editor_var wander" "if set to 1, visit path_* targets randomly, otherwise visit them in order." + "editor_var wait" "How long to wait before following path. Monster will be unresponsive until this time has passed." + "editor_var neverdormant" "If set to 1, monsters do not sleep outside your PVS" + "editor_var ignore_obstacles" "If set, monster doesn't avoid obstacles. Generally should only be used for cinematics when you need monster to exactly follow a path." + "editor_var ignore_lostcombat" "If set, monster doesn't try to hide when it can no longer reach the player." + "editor_var alt_path1" "alternate path for monster. use target_aI_followalternatepath1 to cause character to follow." + "editor_var alt_path2" "alternate path for monster. use target_aI_followalternatepath2 to cause character to follow." + "editor_var alt_path3" "alternate path for monster. use target_aI_followalternatepath3 to cause character to follow." + + "editor_var noshadows" "turns off shadows on character." + "editor_var animate_z" "disables gravity on character until he wakes up. used for on_activate anims where the bounding box needs to move up and down." + + "editor_var kick_force" "how much force to apply to blocking obstacles to get them out of the way." + + "editor_var team" "Monsters do not actively attack players or monsters with the same team #." + "editor_var rank" "Monsters only fight back when attacked by members of it's own team when its rank is greater than or equal to the attacker's rank. A rank of 0 will never fight back." + + "editor_var turn_rate" "Maximum # of degrees monster can turn per second" + + "editor_var mass" "character's mass." + "editor_var ragdoll" "Specifies the .af file to use for a ragdoll when the creature dies" + "editor_var ragdoll_slomoStart" "Start time of ragdoll slow motion relative to death time, defaults to -0.2" + "editor_var ragdoll_slomoEnd" "End time of ragdoll slow motion relative to death time, defaults to 1.0" + "editor_var ragdoll_jointFrictionDent" "Joint friction dent on ragdoll." + "editor_var ragdoll_jointFrictionStart" "Start time for joint friction dent" + "editor_var ragdoll_jointFrictionEnd" "End time for joint friction dent" + "editor_var ragdoll_contactFrictionDent" "Contact friction dent on ragdoll." + "editor_var ragdoll_contactFrictionStart" "Start time for contact friction dent" + "editor_var ragdoll_contactFrictionEnd" "End time for contact friction dent" + "editor_var af_push_moveables" "whether the monster's articulated figure pushes obstacles while they're alive." + + "editor_var blink_min" "Minimum time to wait between eye blinks." + "editor_var blink_max" "Maximum time to wait between eye blinks." + + "editor_var fly_offset" "Prefered fly height relative to the player's view" + "editor_var fly_speed" "Speed to fly at" + "editor_var fly_bob_strength" "How far flying creatures should bob." + "editor_var fly_bob_vert" "Rate at which flying creatures bob up and down." + "editor_var fly_bob_horz" "Rate at which flying creatures bob left and right." + + "editor_var def_projectile" "name of entityDef to launch as projectile" + "editor_var num_projectiles" "how many projectiles to launch at a time." + "editor_var projectile_spread" "how much to spread out projectiles when they're fired. Works in conjunction with attack_accuracy. Good for things like shotgun blasts." + "editor_var attack_accuracy" "Maximum angular offset to randomly offset the monster's aim when firing missiles" + "editor_var attack_cone" "Monster can only throw projectile within this cone relative to his direction." + "editor_var attack_target" "Entity to fire missile at when 'fireMissileAtTarget' is called from script or 'fire_missile_at_target' as a framecommand." + + "editor_var melee_range" "do melee attack when within this range" + "editor_var projectile_height_to_distance_ratio" "calculates the maximum height a projectile can be thrown. for example, a projectile thrown 100 units with a projectile_height_to_distance_ratio of 0.5 will only ever be up to 50 units above the target." + "editor_var talks" "whether character can be engaged in conversation" + "editor_var def_drops" "entityDefs to drop when killed. Multiple drop items are defined by adding suffixes: 'def_drops1', 'def_drops2', etc." + + "editor_var smokeParticleSystem" "particle system to attach to entity. To attach to a specific joint, add - and the name of the joint. For example 'fire-firejoint' attaches the 'fire' particle to the joint 'firejoint'." + + "editor_var chatter_min" "minimum amount of time to wait till playing chat sounds when idle" + "editor_var chatter_max" "maximum amount of time to wait till playing chat sounds when idle" + "editor_var snd_chatter" "chat sound to play when idle" + + "editor_var chatter_combat_min" "minimum amount of time to wait till playing chat sounds when in combat" + "editor_var chatter_combat_max" "maximum amount of time to wait till playing chat sounds when in combat" + "editor_var snd_chatter_combat" "chat sound to play when in combat" + + "editor_var pain_delay" "How long to wait between pain animations before triggering another pain animation." + "editor_var pain_threshold" "How much damage monster has to recieve in one blow for it to play a pain animation." + + "editor_var damage_zone X" "List of bones that comprise damage zone 'X'. Pain anims are based on the name of the zone, for example: 'pain_chest', 'pain_rightleg_forward', etc. Directions are categorized as 'forward', 'left', 'right', or 'back'." + "editor_var damage_scale X" "How much to scale damage recieved to zone 'X'. For example 'damage_scale head' '10' would make head shots cause 10 times the normal amount of damage." + + "editor_var bone_leftEye" "Which bone to modify to adjust the left eye" + "editor_var bone_rightEye" "Which bone to modify to adjust the right eye" + "editor_var bone_focus" "Where the character's eyes are in his head" + + "editor_var look_min" "minimum angles for head looks" + "editor_var look_max" "maximum angles for head looks" + "editor_var look_joint jointname" "specifies the scale in 'pitch yaw roll' to modify the joint based on head looking. you can specify any number of joints to be affected by the head look. the scale of the joints that lead up to the head should always add up to 1 on yaw and pitch to ensure that the character looks directly at the player." + + "editor_var eye_turn_min" "min angular offset for eye joint before head has to turn." + "editor_var eye_turn_max" "max angular offset for eye joint before head has to turn." + "editor_var eye_verticle_offset" "verticle offset from the player's view that the character's eyes should focus on." + "editor_var eye_horizontal_offset" "horizontal offset from the player's view that the character's eyes should focus on. negative values bring eyes closer together." + "editor_var eye_focus_rate" "how quickly the eyes focus on a target" + "editor_var head_focus_rate" "how quickly the head focuses on a target" + "editor_var focus_align_time" "how long character should glance at the player before turning his head." + + "editor_var mtr_flashShader" "shader to use for muzzleflash" + "editor_var flashColor" "color of muzzleflash" + "editor_var flashRadius" "radius of muzzleflash" + "editor_var flashTime" "how long muzzleflash lasts" + + "editor_var use_aas" "extension of the aas file to use for navigation." + + "editor_var use_combat_bbox" "Use a bounding box for damage and not per-poly hit detection." + "editor_var offsetModel" "Vector to offset the visual model from the movement bounding box." + "editor_var def_attach" "Name of entityDef to attach to model. Set 'joint' in the attached entity def to the joint to attach to, and use 'origin' and 'angles' to offset it." + "editor_var head" "Name of entityDef to attach as character's head. Copies animation from certain bones into the head model." + + "editor_var eye_height" "The height off the ground of the character's eyes. All sight checks are done from this point. When set, overrides determining the height from the position of the eye joint." + "editor_var fov" "Character's field of view. Characters initially become aware of the player when he enters this cone. Also controls when the character sees the player as shootable. Character's will not use fov for sight checks after their initial wake up." + + "editor_var mtr_splat_flesh" "Material to use for blood splats." + "editor_var mtr_wound_flesh" "Material to use for wounds." + "editor_var smoke_wound_flesh" "Smoke effect to emit from wounds." + + "editor_var gravityDir" "Direction of gravity. Defines the character's concept of 'down'." + + "editor_var blockedRadius" "if monsters doesn't move this distance within blockedMoveTime, then mark monster blocked." + "editor_var blockedMoveTime" "# of milliseconds since last move before monster marked blocked" + "editor_var blockedAttackTime" "# of milliseconds since last attack before monster marked blocked" + + "blockedRadius" "10" + "blockedMoveTime" "750" + "blockedAttackTime" "750" + + "spawnclass" "idAI" + + "ambush" "0" + "wait" "0" + "team" "1" + "rank" "0" + "anim" "idle" + "on_activate" "sight" + "walk_on_sight" "0" + "def_projectile" "" + "attack_cone" "70" + "attack_accuracy" "0" + "melee_range" "0" + "projectile_height_to_distance_ratio" "0.9" + "chatter_min" "5" + "chatter_max" "10" + "chatter_combat_min" "3" + "chatter_combat_max" "7" + "turn_rate" "360" + "bleed" "1" + "pain_threshold" "1" + "blink_min" "2.5" + "blink_max" "8.0" + "talks" "0" + "look_min" "-80 -75 0" + "look_max" "80 75 0" + "eye_verticle_offset" "5" + "eye_horizontal_offset" "-8" + "eye_focus_rate" "0.5" + "head_focus_rate" "0.1" + "fov" "170" + "kick_force" "60" + "fx_teleport" "fx/teleporter.fx" + "fx_teleport1" "fx/teleporter1.fx" + "fx_teleport2" "fx/teleporter2.fx" + "fx_teleport3" "fx/teleporter3.fx" +} diff --git a/base/def/monster_demon_archvile.def b/base/def/monster_demon_archvile.def new file mode 100644 index 00000000..ff0d2846 --- /dev/null +++ b/base/def/monster_demon_archvile.def @@ -0,0 +1,315 @@ +/*********************************************************************** + + monster_demon_archvile.def + +***********************************************************************/ + +export James { + options -prefix ARCH_ -keep Lknee Rknee -keep ROT -keep fireball -align movement -parent Waist ROT -parent ROT Body -parent fireball Rhand -sourcedir models/monsters/archvile/cycles -destdir models/md5/monsters/archvile + + + mesh archvile_mesh.mb -dest archvile + anim idle.mb + anim stand.mb + anim teleport.mb + anim walk.mb + anim attack1.mb + anim attack2.mb + anim attack3.mb + anim range_attack1.mb + anim range_attack2.mb + anim evade_left.mb + anim evade_right.mb + anim pain_evade_left.mb + anim pain_evade_right.mb + anim pain_chest1.mb + anim pain_chest2.mb + anim pain_head1.mb + anim pain_head2.mb + anim pain_luparm1.mb + anim pain_luparm2.mb + anim pain_ruparm1.mb + anim pain_ruparm2.mb + anim sight2.mb + anim resurrection.mb + anim af_pose.mb -range 1 1 +} + +model monster_demon_archvile { + mesh models/md5/monsters/archvile/archvile.md5mesh + channel torso ( *Waist ) + channel legs ( *Hips origin Body ROT ) + + anim idle models/md5/monsters/archvile/idle.md5anim + anim stand models/md5/monsters/archvile/stand.md5anim + anim walk models/md5/monsters/archvile/walk.md5anim { + frame 14 sound_body snd_footstep + frame 27 sound_body snd_footstep + } + anim teleport models/md5/monsters/archvile/teleport.md5anim { + frame 4 sound_body snd_footstep + frame 5 sound_body snd_footstep + frame 15 sound_voice snd_sight + } + anim turret_attack models/md5/monsters/archvile/range_attack2.md5anim { + frame 6 sound_voice snd_sight2 + frame 10 object_call incinerate + } + anim melee_attack1 models/md5/monsters/archvile/attack1.md5anim { + frame 9 sound_body snd_melee + frame 11 sound_body snd_footstep + frame 12 melee melee_archRightClaw + frame 30 sound_body snd_footstep + } + anim melee_attack2 models/md5/monsters/archvile/attack2.md5anim { + frame 7 sound_body snd_footstep + frame 9 sound_body snd_melee + frame 13 melee melee_archLeftClaw + frame 31 sound_body snd_footstep + } + anim melee_attack3 models/md5/monsters/archvile/attack3.md5anim { + frame 8 sound_body snd_melee + frame 11 melee melee_archRightClaw + frame 13 sound_body snd_footstep + frame 31 sound_body snd_footstep + } + // duplicated attack2 so we have an even # of left/right attacks + anim melee_attack4 models/md5/monsters/archvile/attack2.md5anim { + frame 7 sound_body snd_footstep + frame 9 sound_body snd_melee + frame 13 melee melee_archLeftClaw + frame 31 sound_body snd_footstep + } + anim evade_left models/md5/monsters/archvile/evade_left.md5anim { + frame 1 sound_voice snd_pain + frame 5 sound_body snd_footstep + frame 12 sound_body snd_footstep + frame 17 sound_body snd_footstep + } + anim evade_right models/md5/monsters/archvile/evade_right.md5anim { + frame 1 sound_voice snd_pain + frame 6 sound_body snd_footstep + frame 11 sound_body snd_footstep + frame 17 sound_body snd_footstep + } + anim flamewall_attack models/md5/monsters/archvile/range_attack1.md5anim { + frame 7 sound_body snd_attack + frame 8 object_call flame_wall + } + anim incinerate_attack models/md5/monsters/archvile/range_attack2.md5anim { + frame 5 sound_voice snd_sight2 + frame 7 sound_body snd_attack + frame 10 object_call incinerate + } + anim pain models/md5/monsters/archvile/pain_chest1.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_chest1 models/md5/monsters/archvile/pain_chest1.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_chest2 models/md5/monsters/archvile/pain_chest2.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_head1 models/md5/monsters/archvile/pain_head1.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_head2 models/md5/monsters/archvile/pain_head2.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_left_arm1 models/md5/monsters/archvile/pain_luparm1.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_left_arm2 models/md5/monsters/archvile/pain_luparm2.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_right_arm1 models/md5/monsters/archvile/pain_ruparm1.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_right_arm2 models/md5/monsters/archvile/pain_ruparm2.md5anim { + frame 1 sound_voice snd_pain + } + anim sight models/md5/monsters/archvile/sight2.md5anim { + frame 1 sound_voice snd_sight + } + anim af_pose models/md5/monsters/archvile/af_pose.md5anim + + anim ik_pose models/md5/monsters/archvile/af_pose.md5anim + anim resurrection models/md5/monsters/archvile/resurrection.md5anim { + frame 1 sound_body snd_resurrection + frame 9 sound_voice snd_sight + frame 10 object_call resurrection + } +} + +entityDef monster_demon_archvile { + "inherit" "monster_default" + "editor_usage" "Target 1 or more monsters to act as minions. Minions will remain hidden until they are spawned in by the archvile." + "editor_var keep_alive" "Specifies the number of minions the archvile should keep spawned." + "editor_var num_start" "Specifies the number of minions the archvile should initially spawn." + "editor_var target" "Set to name of monster entity to act as a minion. Archvile can have any # of targeted minion. A minion will remain hidden until he is spawned in by the archvile." + "editor_var delay" "How long to wait after minion dies to respawn a new one." + "scriptobject" "ai" + "nativeobject" "rvmMonsterDemonArchvile" + "model" "monster_demon_archvile" + "ragdoll" "monster_demon_archvile" + "size" "48 48 68" + "use_aas" "aas48" + "team" "1" + "rank" "2" + "health" "425" + "attack_cone" "70" + "attack_accuracy" "0" + "melee_range" "48" + "bone_focus" "Head" + "burnaway" "0.50" + "smoke_burnParticleSystem" "burn_imp.prt-chest" + "delay" "2" + + "look_min" "-90 -125 0" + "look_max" "25 125 0" + "look_joint Waist" "0.4 0.4 0" + "look_joint Head" "0.6 0.6 0" + + "damage_zone head" "*Neck" + "damage_zone chest" "*Waist -*Rshldr -*Lshldr -*Neck" + "damage_zone left_arm" "*Lshldr" + "damage_zone right_arm" "*Rshldr" + "damage_scale head" "2" + "mass" "350" + + "ik_numLegs" "2" + "ik_footSize" "4" + "ik_waist" "Body" + "ik_hip1" "Lupleg" + "ik_hip2" "Rupleg" + "ik_knee1" "Lloleg" + "ik_knee2" "Rloleg" + "ik_ankle1" "Lankle_r" + "ik_ankle2" "Rankle_r" + "ik_dir1" "Lknee" + "ik_dir2" "Rknee" + "ik_foot1" "Ltoe_r" + "ik_foot2" "Rtoe_r" + + "snd_sight" "monster_demon_archvile_sight" + "snd_sight2" "monster_demon_archvile_sight2" + "snd_chatter" "monster_demon_archvile_chatter" + "snd_chatter_combat" "monster_demon_archvile_chatter" + "snd_pain" "monster_demon_archvile_pain" + "snd_attack" "monster_demon_archvile_attack" + "snd_death" "monster_demon_archvile_die" + "snd_createmissile" "monster_demon_imp_fireball_create" + "snd_footstep" "monster_demon_archvile_footstep" + "snd_resurrection" "monster_demon_archvile_resurrection" + "snd_melee" "monster_demon_archvile_melee" + "snd_burn" "monster_demon_archvile_burn" + + "smokeParticleSystem" "rarchhand" + "smokeParticleSystem2" "larchhand" + + // these keys aren't actually used, but just for the game to precache the entitydefs + "def_attack1" "archvile_incinerate" + "def_attack2" "archvile_flamewall_2.prt" +} + +entityDef melee_archLeftClaw { + // melee specific parameters + "snd_hit" "monster_demon_imp_melee_hit" + "snd_miss" "monster_demon_imp_melee_miss" + "kickDir" "0 -1 0" + + + // damage parameters + "damage" "12" + + "mtr_blob" "leftSlash" + "blob_time" "300" + "blob_x" "140" + "blob_y" "-100" + "blob_width" "600" + "blob_height" "600" + + "knockback" "40" + + "kick_time" "400" + "kick_amplitude" "2" + + "dv_time" "100" +} + +entityDef melee_archRightClaw { + "snd_hit" "monster_demon_imp_melee_hit" + "snd_miss" "monster_demon_imp_melee_miss" + "kickDir" "0 1 0" + + "damage" "12" + + "mtr_blob" "rightSlash" + "blob_time" "300" + "blob_x" "-100" + "blob_y" "-100" + "blob_width" "600" + "blob_height" "600" + + "knockback" "30" + + "kick_time" "400" + "kick_amplitude" "2" + + "dv_time" "100" +} + +entityDef damage_archvilefirewall { + "damage" "20" + "kickDir" "1 0 0" + + "mtr_blob" "genericDamage" + "blob_time" "300" + "blob_size" "400" + "blob_offset_x" "400" + + "knockback" "10" + + "smoke_wound_flesh" "bloodwound.smoke" + + "kick_time" "400" + "kick_amplitude" "1" + + "dv_time" "100" +} + +entityDef archvile_flamewall { + "spawnclass" "idTrigger_Hurt" + "model" "archvile_flamewall.prt" + "size" "48 48 128" + "cylinder" "6" + "def_damage" "damage_archvilefirewall" + "snd_fly" "archvile_fireloop" +} + +entityDef damage_archvileincinerate { + "damage" "20" + "kickDir" "1 0 0" + + "mtr_blob" "genericDamage" + "blob_time" "300" + "blob_size" "400" + "blob_offset_x" "400" + + "knockback" "10" + + "smoke_wound_flesh" "bloodwound.smoke" + + "kick_time" "400" + "kick_amplitude" "1" + + "dv_time" "100" +} + +entityDef archvile_incinerate { + "spawnclass" "idTrigger_Hurt" + "model" "archvile_flamewall_2b.prt" + "size" "48 48 128" + "cylinder" "6" + "def_damage" "damage_archvileincinerate" +} diff --git a/base/def/monster_demon_cherub.def b/base/def/monster_demon_cherub.def new file mode 100644 index 00000000..43dc7d12 --- /dev/null +++ b/base/def/monster_demon_cherub.def @@ -0,0 +1,236 @@ +/*********************************************************************** + + monster_demon_cherub.def + +***********************************************************************/ + +export fred { + options -prefix CHERUB_ -sourcedir models/monsters/cherub/cycles -destdir models/md5/monsters/cherub + + anim crawl1.mb + anim crawl_pain_chest.mb + anim crawl_pain_left.mb + anim crawl_pain_right.mb + + addoptions -align ALL + + mesh cherub_mesh.mb -dest cherub + anim initial.mb + anim alert_idle.mb + anim sight1.mb + anim sight2.mb + anim walk1.mb + anim run1.mb + anim pain_head.mb + anim pain_chest.mb + anim pain_ruparm.mb + anim pain_luparm.mb + anim pain_tail.mb + anim attack1.mb + anim attack2.mb + anim attack3.mb + anim attack4.mb + anim playdead.mb + anim slowgetup.mb + anim slowgetup2.mb + anim crawl2.mb + anim evade_left.mb + anim evade_right.mb + anim leap_attack.mb -range 1 7 -dest jump_start + anim leap_attack.mb -range 8 22 -dest jump_loop + anim leap_attack.mb -range 27 56 -dest jump_end +} + +model monster_demon_cherub { + + mesh models/md5/monsters/cherub/cherub.md5mesh + channel torso ( *origin ) + + anim af_pose models/md5/monsters/cherub/initial.md5anim + anim initial models/md5/monsters/cherub/initial.md5anim + anim idle models/md5/monsters/cherub/playdead.md5anim + anim stand models/md5/monsters/cherub/playdead.md5anim + anim sight1 models/md5/monsters/cherub/sight1.md5anim { + frame 1 sound_voice snd_sight + frame 23 sound_body2 snd_step + + } + + anim walk models/md5/monsters/cherub/crawl1.md5anim { + + frame 11 sound_body2 snd_step + frame 24 sound_body2 snd_step + frame 37 sound_body2 snd_step + frame 52 sound_body2 snd_step + + } + + anim run models/md5/monsters/cherub/crawl2.md5anim { + + frame 3 sound_body2 snd_step + frame 5 sound_body2 snd_step + frame 22 sound_body2 snd_step + frame 24 sound_body2 snd_step + frame 64 sound_body2 snd_step + + } + + anim melee_attack1 models/md5/monsters/cherub/attack3.md5anim { + frame 1 call overrideLegs + frame 2 sound_item snd_attack + frame 7 sound_body2 snd_step + frame 8 sound_body2 snd_step + frame 15 sound_body2 snd_step + frame 28 melee melee_cherubLeftClaw + frame 33 melee melee_cherubRightClaw + } + + anim evade_left models/md5/monsters/cherub/evade_left.md5anim { + frame 1 sound_voice snd_chatter_combat + } + anim evade_right models/md5/monsters/cherub/evade_right.md5anim { + frame 1 sound_voice snd_chatter_combat + } + + anim pain models/md5/monsters/cherub/crawl_pain_chest.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_head models/md5/monsters/cherub/crawl_pain_chest.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_chest models/md5/monsters/cherub/crawl_pain_chest.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_left_arm models/md5/monsters/cherub/crawl_pain_left.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_right_arm models/md5/monsters/cherub/crawl_pain_right.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_legs models/md5/monsters/cherub/crawl_pain_left.md5anim { + frame 1 sound_voice snd_pain + } + + anim jump_start models/md5/monsters/cherub/jump_start.md5anim { + frame 1 sound_voice2 snd_flutter + frame 2 sound_body snd_attack + + } + anim jump_loop models/md5/monsters/cherub/jump_loop.md5anim { + frame 1 sound_voice snd_chatter_combat + } + anim jump_end models/md5/monsters/cherub/jump_end.md5anim { + frame 1 sound_voice2 snd_flutter + frame 4 sound_body2 snd_step + frame 5 sound_body2 snd_step + } +} + +/*********************************************************************** + +monster_demon_cherub + +***********************************************************************/ + + +entityDef monster_demon_cherub { + + "inherit" "monster_default" + "scriptobject" "ai" + "nativeobject" "rvmMonsterDemonCherub" + "size" "48 48 48" + "use_aas" "aas48" + "team" "1" + "rank" "1" + "health" "50" + "melee_range" "32" + "fly_offset" "-40" + "evade_rate" "5" + "model" "monster_demon_cherub" + "burnaway" "0.50" + "smoke_burnParticleSystem" "burn_imp.prt-chest" + + "chatter_combat_min" "1" + "chatter_combat_max" "3" + + "damage_zone head" "*Neck" + "damage_zone chest" "*Waist -*Neck" + "damage_zone left_arm" "*Luparm" + "damage_zone right_arm" "*Ruparm" + "damage_zone legs" "*Tail1 origin Body2" + "damage_scale head" "1.25" + + "group torso" "*Waist" + "group legs" "*Tail1 origin Body Body2" + "ragdoll" "monster_demon_cherub" + + "snd_sight" "monster_demon_cherub_sight" + "snd_attack" "monster_demon_cherub_attack" + "snd_pain" "monster_demon_cherub_pain" + "snd_death" "monster_demon_cherub_death" + "snd_chatter" "monster_demon_cherub_chatter" + "snd_chatter_combat" "monster_demon_cherub_chatter_combat" + "snd_step" "monster_demon_cherub_step" + "snd_flutter" "monster_demon_cherub_flutter" + "snd_ambient" "monster_demon_cherub_ambient" + "snd_burn" "monster_demon_tick_burn" +} + +entityDef melee_cherubLeftClaw { + // melee specific parameters + "snd_hit" "monster_demon_imp_melee_hit" + "snd_miss" "monster_demon_imp_melee_miss" + "kickDir" "0 -1 0" + + // damage parameters + "damage" "5" + "mtr_blob" "leftSlash" + "blob_time" "300" + "blob_x" "140" + "blob_y" "-100" + "blob_width" "600" + "blob_height" "600" + "knockback" "40" + "kick_time" "400" + "kick_amplitude" "2" + "dv_time" "100" +} + +entityDef melee_cherubRightClaw { + "snd_hit" "monster_demon_imp_melee_hit" + "snd_miss" "monster_demon_imp_melee_miss" + "kickDir" "0 1 0" + "damage" "5" + "mtr_blob" "rightSlash" + "blob_time" "300" + "blob_x" "-100" + "blob_y" "-100" + "blob_width" "600" + "blob_height" "600" + "knockback" "30" + "kick_time" "400" + "kick_amplitude" "2" + "dv_time" "100" +} + +entityDef melee_cherubLeapAttack { + "snd_hit" "monster_demon_imp_melee_hit" + "kickDir" "1 0 0" + + // damage parameters + "damage" "12" + + "mtr_blob" "triteSmack" + "blob_time" "300" + "blob_x" "140" + "blob_y" "-100" + "blob_width" "600" + "blob_height" "600" + + "knockback" "80" + + "kick_time" "500" + "kick_amplitude" "2" + + "dv_time" "350" +} diff --git a/base/def/monster_demon_d3xp_bruiser.def b/base/def/monster_demon_d3xp_bruiser.def new file mode 100644 index 00000000..790bd1ed --- /dev/null +++ b/base/def/monster_demon_d3xp_bruiser.def @@ -0,0 +1,112 @@ +/*********************************************************************** + + monster_demon_d3xp_bruiser.def + +***********************************************************************/ + +export James { + options -prefix B_ -keep Lknee Rknee -keep ROT -align movement -parent spine_1 ROT -parent ROT body -sourcedir models/monsters/d3xp_bruiser/cycles -destdir models/md5/monsters/d3xp_bruiser + + mesh d3xp_bruiser_mesh.mb -dest d3xp_bruiser + anim idle.mb + anim af_pose.mb + anim walk.mb + anim range_attack1.mb + anim pain_left.mb + anim pain_right.mb +} + +model monster_demon_d3xp_bruiser { + mesh models/md5/monsters/d3xp_bruiser/d3xp_bruiser.md5mesh + channel torso ( *spine_1 ) + channel legs ( *Hips origin body ROT ) + + anim af_pose models/md5/monsters/d3xp_bruiser/af_pose.md5anim + anim ik_pose models/md5/monsters/d3xp_bruiser/af_pose.md5anim + anim idle models/md5/monsters/d3xp_bruiser/idle.md5anim + anim stand models/md5/monsters/d3xp_bruiser/idle.md5anim + anim walk models/md5/monsters/d3xp_bruiser/walk.md5anim + anim pain_left_arm models/md5/monsters/d3xp_bruiser/pain_left.md5anim + anim pain_right_arm models/md5/monsters/d3xp_bruiser/pain_right.md5anim + anim range_attack1 models/md5/monsters/d3xp_bruiser/range_attack1.md5anim + + //anim teleport models/md5/monsters/d3xp_bruiser/teleport.md5anim + //anim turret_attack models/md5/monsters/d3xp_bruiser/range_attack2.md5anim + //anim melee_attack1 models/md5/monsters/d3xp_bruiser/attack1.md5anim + //anim melee_attack2 models/md5/monsters/d3xp_bruiser/attack2.md5anim + //anim melee_attack3 models/md5/monsters/d3xp_bruiser/attack3.md5anim + //anim melee_attack4 models/md5/monsters/d3xp_bruiser/attack4.md5anim + //anim evade_left models/md5/monsters/d3xp_bruiser/evade_left.md5anim + //anim evade_right models/md5/monsters/d3xp_bruiser/evade_right.md5anim + //anim pain models/md5/monsters/d3xp_bruiser/pain_chest1.md5anim + //anim pain_chest models/md5/monsters/d3xp_bruiser/pain_chest1.md5anim + //anim pain_head models/md5/monsters/d3xp_bruiser/pain_head1.md5anim + + //anim sight models/md5/monsters/d3xp_bruiser/sight2.md5anim + //anim af_pose models/md5/monsters/d3xp_bruiser/af_pose.md5anim + //anim ik_pose models/md5/monsters/d3xp_bruiser/af_pose.md5anim + +} + +entityDef monster_demon_d3xp_bruiser { + "inherit" "monster_default" + "model" "monster_demon_d3xp_bruiser" + //"scriptobject" "monster_demon_d3xp_bruiser" + //"ragdoll" "monster_demon_d3xp_bruiser" + "size" "48 48 68" + "use_aas" "aas48" + "team" "1" + "rank" "2" + "health" "425" + "attack_cone" "70" + "attack_accuracy" "0" + "melee_range" "48" + "bone_focus" "Head" + "burnaway" "0.50" + "smoke_burnParticleSystem" "burn_imp.prt-chest" + "delay" "2" + + "look_min" "-90 -125 0" + "look_max" "25 125 0" + "look_joint Waist" "0.4 0.4 0" + "look_joint Head" "0.6 0.6 0" + + "damage_zone head" "*neck_2" + "damage_zone chest" "*spine_1 -*r_clav -*l_clav -*neck_2" + "damage_zone left_arm" "*r_clav" + "damage_zone right_arm" "*l_clav" + "damage_scale head" "2" + "mass" "850" + + "ik_numLegs" "2" + "ik_footSize" "8" + "ik_footDownTrace" "64" + "ik_waist" "body" + "ik_hip1" "l_upleg" + "ik_hip2" "r_upleg" + "ik_knee1" "l_loleg" + "ik_knee2" "r_loleg" + "ik_ankle1" "l_leg" + "ik_ankle2" "r_leg" + "ik_dir1" "Lknee" + "ik_dir2" "Rknee" + "ik_foot1" "ik_foot1" + "ik_foot2" "ik_foot2" + + "snd_sight" "monster_demon_archvile_sight" + "snd_sight2" "monster_demon_archvile_sight2" + "snd_chatter" "monster_demon_archvile_chatter" + "snd_chatter_combat" "monster_demon_archvile_chatter" + "snd_pain" "monster_demon_archvile_pain" + "snd_attack" "monster_demon_archvile_attack" + "snd_death" "monster_demon_archvile_die" + "snd_createmissile" "monster_demon_imp_fireball_create" + "snd_footstep" "monster_demon_archvile_footstep" + "snd_resurrection" "monster_demon_archvile_resurrection" + "snd_melee" "monster_demon_archvile_melee" + "snd_burn" "monster_demon_archvile_burn" + + "smokeParticleSystem" "flame_r" + "smokeParticleSystem2" "flame_l" +} + diff --git a/base/def/monster_demon_hellknight.def b/base/def/monster_demon_hellknight.def new file mode 100644 index 00000000..e4207226 --- /dev/null +++ b/base/def/monster_demon_hellknight.def @@ -0,0 +1,392 @@ +/*********************************************************************** + + monster_demon_hellknight.def + +***********************************************************************/ + +export fred { + options -prefix HK2_ -keep lknee1 rknee1 SPINNER rmissile lmissile target forehead1 -parent rmissile rhand -parent lmissile lhand -parent waist SPINNER -parent SPINNER body2 -parent drool jaw -parent backtongue jaw -parent upsaliva head -parent losaliva jaw + + anim maps/fred/delta4/hkintro2.mb -range 617 644 -dest models/md5/cinematics/delta4/hkintro_hk2 + + anim maps/fred/delta4/hkthrowshaz2.mb -range 261 409 -dest models/md5/cinematics/delta4/hkintro_hkthrow2 -keepmesh hellknightmesh -keepmesh salivamesh -keepmesh droolmesh -keepmesh tonguemesh + + anim maps/fred/delta4/pooped.mb -range 182 500 -dest models/md5/cinematics/delta4/hkintro_hkpooped -keepmesh hellknightmesh -keepmesh salivamesh -keepmesh droolmesh -keepmesh tonguemesh -prefix HK_ + + + addoptions -prefix HK_ + + mesh models/monsters/hellknight/cycles/hellknight_mesh.mb -dest models/md5/monsters/hellknight/hellknight + anim models/monsters/combos/hk_throws_chainsawzombie_withcams.mb -dest models/md5/monsters/hellknight/hk_throws_chainsawzombie + anim maps/fred/caverns2/bridge2.mb -range 315 490 -dest models/md5/cinematics/caverns2/bridge_hellknight + anim maps/fred/site3/hkfloor.mb -range 1 1 -dest models/md5/cinematics/site3/floor_hkidle + anim maps/fred/site3/hkfloor.mb -range 1 186 -dest models/md5/cinematics/site3/floor_hk + anim maps/fred/delta4/hkintro.mb -range 1 384 -dest models/md5/cinematics/delta4/hkintro_hk_out + anim maps/fred/delta4/hkintro2.mb -range 617 644 -dest models/md5/cinematics/delta4/hkintro_hk1 + anim maps/fred/delta4/hkthrowshaz1.mb -range 182 260 -dest models/md5/cinematics/delta4/hkintro_hkgrab -keepmesh hellknightmesh -keepmesh salivamesh -keepmesh droolmesh -keepmesh tonguemesh + anim maps/fred/delta4/hkthrowshaz2.mb -range 261 409 -dest models/md5/cinematics/delta4/hkintro_hkthrow -keepmesh hellknightmesh -keepmesh salivamesh -keepmesh droolmesh -keepmesh tonguemesh + anim maps/fred/caverns2/hkwall.mb -range 1 120 -dest models/md5/cinematics/caverns2/breakwall + + addoptions -align All -sourcedir models/monsters/hellknight/cycles -destdir models/md5/monsters/hellknight + + anim initial.mb + anim ik_pose.mb + anim idle2.mb + anim stand.mb + + //anim walk5.mb + anim walk7.mb + anim walk7_left.mb + anim roar1.mb + + anim attack2.mb + anim attack3.mb + anim leftslash.mb + + anim range_attack2.mb + anim headpain.mb + anim chestpain.mb -dest chest + anim pain1.mb + anim pain2.mb + anim ruparmpain.mb -dest pain_ruparm + anim luparmpain.mb -dest pain_luparm + + anim turret_attack.mb + + +} + +model monster_demon_hellknight { + mesh models/md5/monsters/hellknight/hellknight.md5mesh + + channel torso ( *waist ) + channel legs ( *hips body body2 origin SPINNER ) + + anim af_pose models/md5/monsters/hellknight/initial.md5anim + anim ik_pose models/md5/monsters/hellknight/ik_pose.md5anim + + anim initial models/md5/monsters/hellknight/initial.md5anim + anim idle models/md5/monsters/hellknight/idle2.md5anim + anim stand models/md5/monsters/hellknight/stand.md5anim + + anim walk models/md5/monsters/hellknight/walk7.md5anim { + frame 13 sound_body snd_footstep + frame 13 sound_body2 snd_deepfs + frame 31 sound_body snd_footstep + frame 31 sound_body2 snd_deepfs + } + anim walk_left models/md5/monsters/hellknight/walk7_left.md5anim { + frame 13 sound_body snd_footstep + frame 13 sound_body2 snd_deepfs + frame 31 sound_body snd_footstep + frame 31 sound_body2 snd_deepfs + } + anim sight models/md5/monsters/hellknight/roar1.md5anim { + frame 1 sound_voice snd_sight2 + frame 19 sound_body snd_footstep + frame 19 sound_body2 snd_deepfs + frame 41 sound_body snd_footstep + frame 41 sound_body2 snd_deepfs + } + + anim pain models/md5/monsters/hellknight/pain1.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_chest models/md5/monsters/hellknight/chest.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_head models/md5/monsters/hellknight/headpain.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_right_arm models/md5/monsters/hellknight/pain_ruparm.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_left_arm models/md5/monsters/hellknight/pain_luparm.md5anim { + frame 1 sound_voice snd_pain + } + + anim melee_attack1 models/md5/monsters/hellknight/attack2.md5anim { + + frame 11 sound_body snd_footstep + frame 11 sound_body2 snd_deepfs + frame 11 fx fx/hkwalk.fx + frame 14 melee melee_hellknight_bite + } + + anim melee_attack2 models/md5/monsters/hellknight/attack3.md5anim { + frame 17 sound_body snd_footstep + frame 17 sound_body2 snd_deepfs + frame 17 fx fx/hkwalk.fx + frame 17 melee melee_hellknightRightClaw + } + anim melee_attack3 models/md5/monsters/hellknight/leftslash.md5anim { + frame 7 sound_voice snd_chatter_combat + frame 17 melee melee_hellknightLeftClaw + } + anim range_attack1 models/md5/monsters/hellknight/range_attack2.md5anim { + frame 8 sound_body2 monster_demon_hellknight_fireball_create + frame 8 create_missile rmissile + frame 33 sound_body snd_footstep + frame 33 sound_body2 snd_deepfs + frame 33 fx fx/hkwalk.fx + //frame 34 sound_weapon snd_attackmissile + frame 34 launch_missile rmissile + frame 47 sound_body snd_footstep + frame 47 sound_body2 snd_deepfs + frame 47 fx fx/hkwalk.fx + frame 52 sound_voice snd_chatter_combat + } + + anim turret_attack models/md5/monsters/hellknight/turret_attack.md5anim { + frame 8 sound_body2 monster_demon_hellknight_fireball_create + frame 8 create_missile rmissile + frame 20 sound_weapon snd_attackmissile + frame 23 launch_missile rmissile + } + + + +} + +entityDef monster_demon_hellknight { + "editor_mins" "-48 -48 0" + "editor_maxs" "48 48 96" + "inherit" "monster_default" + "scriptobject" "ai" + "nativeobject" "rvmMonsterDemonHellknight" + "model" "monster_demon_hellknight" + "ragdoll" "monster_demon_hellknight" + "size" "94 94 96" + "use_aas" "aas96" + "team" "1" + "rank" "2" + "health" "900" //up from 700 Tim - 6/9/04 + "melee_range" "75" + "turn_rate" "100" + "def_projectile" "projectile_fireball_hellknight" + "attack_cone" "70" + "attack_accuracy" "0" + "mass" "600" + "pain_threshold" "25" + + "burnaway" "0.50" + "smoke_burnParticleSystem" "burn_imp.prt-chest" + + "ik_numLegs" "2" + "ik_footSize" "8" + "ik_minWaistAnkleDist" "30" + "ik_footUpTrace" "32" + "ik_footDownTrace" "64" + "ik_waist" "body" + "ik_hip1" "lupleg" + "ik_hip2" "rupleg" + "ik_knee1" "lloleg" + "ik_knee2" "rloleg" + "ik_ankle1" "lankle" + "ik_ankle2" "rankle" + "ik_dir1" "lknee1" + "ik_dir2" "rknee1" + "ik_foot1" "lfoot" + "ik_foot2" "rfoot" + + "look_min" "-90 -125 0" + "look_max" "25 125 0" + "look_joint Head" "0.4 0.4 0" + "look_joint LoNeck" "0.6 0.6 0" + + + "damage_zone head" "*neck" + "damage_zone chest" "*waist -*ruparm -*luparm -*neck" + "damage_zone left_arm" "*luparm" + "damage_zone right_arm" "*ruparm" + "damage_zone legs" "*hips" + "damage_scale head" "2" + + "anim" "idle" + + "snd_sight1" "monster_demon_hellknight_sight1" + "snd_sight2" "monster_demon_hellknight_sight2" + "snd_sight3" "monster_demon_hellknight_sight3" + "snd_chatter" "monster_demon_hellknight_chatter" + "snd_chatter_combat" "monster_demon_hellknight_chatter_combat" + "snd_pain" "monster_demon_hellknight_pain" + "snd_attackmissile" "monster_demon_hellknight_attackmissile" + "snd_death" "monster_demon_hellknight_die" + "snd_footstep" "monster_demon_hellknight_footstep" + "snd_deepfs" "hellknight_deepfs" + "snd_burn" "monster_demon_hellknight_burn" +} + +model delta1_hellknight { + inherit monster_demon_hellknight + anim throwchainsawzombie models/md5/monsters/hellknight/hk_throws_chainsawzombie.md5anim +} + +entityDef delta1_hellknight { + "inherit" "monster_demon_hellknight" + "model" "delta1_hellknight" + "anim" "throwchainsawzombie" +} + +entityDef damage_fireball_hellknight { + "damage" "30" + "kickDir" "1 0 0" + + "mtr_blob" "genericDamage" + "blob_time" "300" + "blob_size" "400" + "blob_offset_x" "400" + + "knockback" "10" + + "kick_time" "400" + "kick_amplitude" "1" + + "dv_time" "100" + "smoke_wound_flesh" "bloodwound.smoke" +} + + +entityDef damage_fireball_hellknight_splash { + "damage" "45" + "radius" "120" +} + +entityDef projectile_fireball_hellknight { + "spawnclass" "idProjectile" + "mins" "-4 -4 -4" + "maxs" "4 4 4" + "cone" "3" + "model" "hellknight_fireball2.prt" + + "def_damage" "damage_fireball_hellknight" + "def_splash_damage" "damage_fireball_hellknight_splash" + + "launchFromBarrel" "1" + "health" "5" // amount of damage projectile can take if damaged (0 means it can't be destroyed) + "velocity" "475 0 -150" // how fast the projectile leaves the gun (or distance if fuse is 0) + "angular_velocity" "0 0 0" // how the projectile is rotating when it leaves the gun + "thrust" "0" // the rate of acceleration (always in the direction of the projectiles model) + "thrust_start" "0" // when to start accelerating + "thrust_end" "0" // when to stop accelerating + "linear_friction" "0" // "air" friction + "angular_friction" "0" + "contact_friction" "0" + "bounce" "0" // how much speed a projectile retains when it bounces off of objects (coefficient of restitution). 0 means no bounce. + "mass" "5" + "gravity" "250" // how much gravity affects the trajectory. gravity direction is same as the entity that fired it. + "fuse" "20" // how long before the projectile is removed or self-detonates. Use 0 for beam weapons (velocity == distance). + + "detonate_on_fuse" "0" // whether projectile should detonate when it's fuse runs out + "detonate_on_death" "1" // whether projectile should detonate when it's "killed" (health runs out) + "detonate_on_world" "1" // whether projectile should detonate when it hits an obstacle + "detonate_on_actor" "1" // whether projectile should detonate when it hits a character in the game + + "impact_damage_effect" "0" // whether projectile causes blood splats from characters that bleed + "impact_gib" "1" // whether projectile can gib a character or not (for example: bullets don't gib, but rockets do) + + "mtr_detonate" "textures/decals/ballburn_plasma" + "decal_size" "75" + + "smoke_fly" "hellknight_trail.prt" // particle effect while in the air + "smoke_detonate" "" // particle effect when detonates + "smoke_residue" "" // particle effect while in the air + "smoke_bounce" "" // particle effect when bounces + "smoke_fuse" "" // particle effect when removed from fuse expiring + + // parametric particles -- temp + "model_detonate" "hellknight_explosion.prt" + + "debris_count" "3" + "def_debris" "debris_largeshrapnel" + "def_shrapnel" "debris_shrapnel" + + "mtr_light_shader" "lights/impflyflash" + "light_color" "0.1 0.6 0.9" + "light_radius" "160" + "light_offset" "0 0 0" + + "mtr_explode_light_shader" "lights/spawnflash" + "explode_light_color" "0.1 0.6 0.9" + "explode_light_radius" "320" + "explode_light_fadetime" "1" + + "snd_explode" "monster_demon_imp_fireball_explode" + "snd_fly" "monster_demon_imp_fireball_flight" // particle effect while in the air +} + +entityDef melee_hellknightLeftClaw { + // melee specific parameters + "snd_hit" "monster_demon_imp_melee_hit" + "snd_miss" "monster_demon_imp_melee_miss" + "kickDir" "0 -1 0" + + // damage parameters + "damage" "25" + + "mtr_blob" "leftSlash" + "blob_time" "300" + "blob_x" "140" + "blob_y" "-100" + "blob_width" "600" + "blob_height" "600" + + "knockback" "240" + + "kick_time" "400" + "kick_amplitude" "2" + + "dv_time" "100" +} + +entityDef melee_hellknightRightClaw { + "snd_hit" "monster_demon_imp_melee_hit" + "snd_miss" "monster_demon_imp_melee_miss" + "kickDir" "0 1 0" + + + "damage" "25" + + "mtr_blob" "rightSlash" + "blob_time" "300" + "blob_x" "-100" + "blob_y" "-100" + "blob_width" "600" + "blob_height" "600" + + "knockback" "120" + + "kick_time" "400" + "kick_amplitude" "2" + + "dv_time" "100" +} + + + +entityDef melee_hellknight_bite { + "damage" "30" + "kickDir" "1 0 0" + + "snd_hit" "monster_demon_hellknight_melee_2" + "snd_miss" "monster_demon_hellknight_melee_2" + + "mtr_blob" "bite" + "blob_time" "600" + //"blob_size" "600" + //"blob_offset_x" "600" + + "blob_x" "0" + "blob_y" "-125" + "blob_width" "650" + "blob_height" "650" + + "knockback" "100" + + "kick_time" "400" + "kick_amplitude" "1" + + "dv_time" "100" +} + + diff --git a/base/def/monster_demon_imp.def b/base/def/monster_demon_imp.def new file mode 100644 index 00000000..abd317d7 --- /dev/null +++ b/base/def/monster_demon_imp.def @@ -0,0 +1,777 @@ +/*********************************************************************** + + monster_demon_imp.def + +***********************************************************************/ + +export fred { + options -prefix IMP1_ -keep Lknee Rknee Lelbow Relbow camera Body -keep Rmissile Lmissile -parent Rmissile Rhand -parent Lmissile Lhand -parent Rwing Chest -parent Lwing Chest -parent Hips Body -parent Waist Body -parent camera Head + + anim maps/fred/impdoorbreak/impdoorbreak.mb -range 34 100 -dest models/md5/monsters/imp/imp1doorbreak -rotate 180 + anim maps/fred/admin/impcrawl.mb -range 1 52 -rotate -180 -dest models/md5/monsters/imp/imp1wallcrawl + anim maps/fred/underground/impscurry.mb -rotate 90 -dest models/md5/cinematics/underground/tunnelscurry -prefix IMP_ + anim maps/fred/underground/impstairs.mb -rotate 180 -dest models/md5/cinematics/underground/stairsimpcrawl -prefix IMP_ + + addoptions -prefix IMP2_ + + anim maps/fred/impdoorbreak/impdoorbreak.mb -range 34 125 -dest models/md5/monsters/imp/imp2doorbreak -rotate 180 + anim maps/fred/admin/impcrawl.mb -range 1 40 -dest models/md5/monsters/imp/imp2wallcrawl + + + //anim maps/fred/enpro/enpro_exit2.mb -range 1 510 -dest models/md5/cinematics/enpro/exitimp2a + + + //anim maps/fred/enpro/enpro_exit2.mb -range 1 321 -dest models/md5/cinematics/enpro/exitimp2a + anim maps/fred/enpro/enpro_exit2.mb -range 171 259 -dest models/md5/cinematics/enpro/exitimp2a + anim maps/fred/enpro/marine_battle_shot4.mb -range 350 420 -dest models/md5/cinematics/enpro/exitimp2b + anim maps/fred/enpro/enpro_exit2.mb -range 452 510 -dest models/md5/cinematics/enpro/exitimp2c + anim maps/fred/enpro/enpro_exit2.mb -range 741 979 -dest models/md5/cinematics/enpro/exitimp2 + + anim maps/fred/ceiling/ceiling2.mb -range 1 1 -dest models/md5/monsters/imp/ceilingimpidle -align ALL + anim maps/fred/ceiling/ceiling2.mb -dest models/md5/monsters/imp/ceilingimp -align ALL + + addoptions -prefix IMP_ + + anim maps/fred/alphalabs2/ed_death.mb -dest models/md5/cinematics/alphalabs2/edkiller + + anim maps/fred/marscity_2/imp_throws_marine_idle.mb -range 1 40 -rotate 90 -dest models/md5/cinematics/marscity_2/marinethrow_imp_idle + anim maps/fred/marscity_2/imp_throws_marine.mb -range 1 63 -rotate 90 -dest models/md5/cinematics/marscity_2/marinethrow_imp + anim maps/fred/marscity_2/mars_city2.mb -range 1 90 -dest models/md5/cinematics/marscity_2/impfeast_imp_loop + anim maps/fred/marscity_2/mars_city2.mb -range 91 170 -dest models/md5/cinematics/marscity_2/impfeast_imp + + anim maps/fred/alphalabs1/impscare.mb -dest models/md5/cinematics/alphalabs1/impscare + + anim maps/fred/underground/ending.mb -range 1 1 -dest models/md5/cinematics/underground/ending_impstart + anim maps/fred/underground/ending.mb -range 1 48 -dest models/md5/cinematics/underground/ending_imp + + //anim maps/fred/enpro/enpro_exit2.mb -range 741 979 -dest models/md5/cinematics/enpro/exitimp1 + + anim maps/fred/underground/impintro.mb -dest models/md5/cinematics/underground/impintro_imp + + anim maps/fred/delta2a/malimpcolumns.mb -range 1 1 -dest models/md5/monsters/imp/idlecolumn + anim maps/fred/delta2a/malimpcolumns.mb -dest models/md5/monsters/imp/leapdowncolumn + anim maps/fred/delta2a/malcageroom.mb -range 17 17 -dest models/md5/monsters/imp/idlecages + anim maps/fred/delta2a/malcageroom.mb -dest models/md5/monsters/imp/leapdowncages + anim maps/fred/delta2b/monster_tanks.mb -dest models/md5/monsters/imp/imptankidle + anim maps/fred/delta2b/monster_tanks_twitch.mb -range 23 97 -dest models/md5/monsters/imp/imptanktwitch + anim maps/fred/delta1/impdowncorner.mb -range 1 1 -dest models/md5/monsters/imp/d1corneridle + anim maps/fred/delta1/impdowncorner.mb -dest models/md5/monsters/imp/d1corner + + anim maps/fred/alphalabs2/elevator_attack.mb -range 1 195 -dest models/md5/monsters/imp/a2_elevator + anim maps/fred/caverns2/imprailing.mb -range 1 60 -dest models/md5/cinematics/caverns2/imp1railing + anim maps/fred/caverns2/imprailing2.mb -rotate -90 -range 1 90 -dest models/md5/cinematics/caverns2/imp2railing + + anim maps/james/mc_underground/impcrawl_armdoor.mb -dest models/md5/cinematics/underground/underground_impcrawl_arm + anim maps/james/alphalabs2/alphalabs2_impcrawl_armdoor.mb -dest models/md5/cinematics/alphalabs2/alphalabs2_impcrawl_arm + + addoptions -sourcedir models/monsters/imp/animation/cycles + addoptions -destdir models/md5/monsters/imp + anim offwall.ma -range 275 275 -dest offwallidle + anim offwall.ma + + addoptions -align ALL + + mesh imp.mb + + anim initial.ma + anim idle1.ma + anim mocapalert_idle.ma -rotate 90 + anim alert_walk.ma + anim sight.ma + anim sight2.ma + + anim walk1.ma -dest walk1 + anim faster_walk.ma + anim run.ma + anim on4_sight.ma + anim on4_idle.ma + anim on4_melee1.ma -xyzprecision 0.01 -quatprecision 0.00006 + anim on4_melee2.ma -xyzprecision 0.01 -quatprecision 0.00006 + anim evade_right.ma + anim evade_right_on4.ma + anim evade_left.ma + anim evade_left_on4.ma + anim scurry2.ma + anim scurry_leap2.ma -dest scurry_leap.md5anim + anim cabinet_leap.mb + + anim scurry_leap2.ma -range 1 19 -dest jump_start + anim jump_loop.ma + anim jump_loop2.ma + anim jump_loop3.ma + anim scurry_leap2.ma -range 30 48 -dest jump_end + anim scurry_stop.ma + anim pain3.ma + anim pain_head.ma + anim pain_head_on4.ma + anim pain_chest.ma + anim pain_chest_on4.ma + anim pain_luparm.ma + anim pain_luparm_on4.ma + anim pain_ruparm.ma + anim pain_ruparm_on4.ma + anim pain_legs.ma + anim turret_attack1.ma + anim turret_idle.ma + anim range1.ma + anim range2.ma + anim range3.ma + anim fireball_sight.ma -dest range4 + anim crouched_range1.ma + anim slash1.ma + anim slash2.ma + anim slash3.ma + anim teleportin.ma + anim hangonceiling.ma + + anim outofhole.ma -range 1 1 -dest outofholeidle + anim outofhole.ma + + anim kitchen.mb -range 1 1 -dest kitchenimpidle -sourcedir maps/fred/kitchen/ -destdir models/md5/monsters/imp/ + + anim kitchen.mb -dest kitchenimp -sourcedir maps/fred/kitchen/ -destdir models/md5/monsters/imp/ + + anim idle.mb -dest severedidle -rotate 180 -sourcedir models/monsters/zombie/zombie01/severed/ -destdir models/md5/monsters/imp/ + anim wake.mb -dest severedwake -rotate 180 -sourcedir models/monsters/zombie/zombie01/severed/ -destdir models/md5/monsters/imp/ + + anim monster_wakeups.mb -sourcedir maps/fred/cyberdemon -dest impcyberwakeup -prefix IMP1_ + +} + +model monster_demon_imp { + mesh models/md5/monsters/imp/imp.md5mesh + channel torso ( *chest ) + channel legs ( waist *Hips Body origin ) + + anim af_pose models/md5/monsters/imp/initial.md5anim + anim ik_pose models/md5/monsters/imp/initial.md5anim + + anim teleport models/md5/monsters/imp/teleportin.md5anim { + frame 4 sound_body snd_footstep + frame 21 sound_body snd_sight + } + anim initial models/md5/monsters/imp/initial.md5anim + anim crawl models/md5/monsters/imp/scurry2.md5anim { + frame 6 sound_body snd_footstep + frame 10 sound_body snd_footstep + frame 14 sound_body snd_footstep + frame 18 sound_body snd_footstep + } + anim crawl_idle models/md5/monsters/imp/on4_idle.md5anim { + frame 57 sound_chatter snd_alert_idle + frame 140 sound_chatter snd_alert_idle + } + anim stand models/md5/monsters/imp/idle1.md5anim + anim idle models/md5/monsters/imp/idle1.md5anim { + random_cycle_start + } + anim idle1 models/md5/monsters/imp/idle1.md5anim { + random_cycle_start + } + anim sight1 models/md5/monsters/imp/sight.md5anim { + frame 15 sound_body snd_sight + } + anim sight2 models/md5/monsters/imp/sight2.md5anim { + frame 13 sound_body snd_sight2 + } + anim walk models/md5/monsters/imp/walk1.md5anim { + random_cycle_start + frame 2 leftfoot + frame 19 rightfoot + } + anim run models/md5/monsters/imp/faster_walk.md5anim { + random_cycle_start + frame 13 leftfoot + frame 26 rightfoot + } + anim crawl_evade_left models/md5/monsters/imp/evade_left_on4.md5anim { + frame 1 sound_voice snd_pain + frame 14 sound_body snd_footstep + frame 15 sound_body snd_footstep + frame 16 sound_body snd_footstep + } + anim crawl_evade_right models/md5/monsters/imp/evade_right_on4.md5anim { + frame 1 sound_voice snd_pain + frame 13 sound_body snd_footstep + frame 14 sound_body snd_footstep + frame 15 sound_body snd_footstep + frame 16 sound_body snd_footstep + } + anim crawl_evade_left_noturn models/md5/monsters/imp/evade_left_on4.md5anim { + ai_no_turn + frame 1 sound_voice snd_pain + frame 14 sound_body snd_footstep + frame 15 sound_body snd_footstep + frame 16 sound_body snd_footstep + } + anim crawl_evade_right_noturn models/md5/monsters/imp/evade_right_on4.md5anim { + ai_no_turn + frame 1 sound_voice snd_pain + frame 13 sound_body snd_footstep + frame 14 sound_body snd_footstep + frame 15 sound_body snd_footstep + frame 16 sound_body snd_footstep + } + anim evade_left models/md5/monsters/imp/evade_left.md5anim { + frame 1 sound_voice snd_pain + frame 14 sound_body snd_footstep + frame 15 sound_body snd_footstep + } + anim evade_right models/md5/monsters/imp/evade_right.md5anim { + frame 1 sound_voice snd_pain + frame 13 sound_body snd_footstep + frame 14 sound_body snd_footstep + } + anim range_attack1 models/md5/monsters/imp/range1.md5anim { + frame 2 sound_weapon snd_createmissile + frame 2 create_missile RMissile + frame 22 sound_weapon snd_attackmissile + frame 22 launch_missile RMissile + } + anim range_attack2 models/md5/monsters/imp/range3.md5anim { + frame 11 sound_weapon snd_createmissile + frame 11 create_missile RMissile + frame 45 sound_weapon snd_attackmissile + frame 45 launch_missile RMissile + } + anim range_attack3 models/md5/monsters/imp/range4.md5anim { + frame 1 sound_body snd_sight + frame 2 sound_weapon snd_createmissile + frame 2 create_missile RMissile + frame 37 sound_weapon snd_attackmissile + frame 37 launch_missile RMissile + } + anim turret_attack1 models/md5/monsters/imp/turret_attack1.md5anim { + frame 1 sound_body snd_sight + frame 2 sound_weapon snd_createmissile + frame 2 create_missile RMissile + frame 22 sound_weapon snd_attackmissile + frame 22 launch_missile RMissile + } + anim turret_idle models/md5/monsters/imp/turret_idle.md5anim + + anim jump_start models/md5/monsters/imp/jump_start.md5anim { + frame 1 sound_voice snd_attackmelee_1 + } + anim jump_loop1 models/md5/monsters/imp/jump_loop.md5anim + anim jump_end models/md5/monsters/imp/jump_end.md5anim { + frame 1 sound_body snd_footstep + frame 3 sound_body snd_footstep + } + + anim melee_attack1 models/md5/monsters/imp/slash1.md5anim { + frame 1 sound_weapon snd_attackmelee_1 + frame 8 melee melee_impLeftClaw + frame 10 sound_body snd_footstep + frame 17 melee melee_impRightClaw + frame 19 sound_body snd_footstep + } + anim melee_attack2 models/md5/monsters/imp/slash2.md5anim { + frame 1 sound_weapon snd_attackmelee_2 + frame 4 sound_body snd_footstep + frame 9 melee melee_impLeftClaw + frame 11 sound_body snd_footstep + frame 21 sound_body snd_footstep + } + anim melee_attack3 models/md5/monsters/imp/slash3.md5anim { + frame 1 sound_weapon snd_attackmelee_2 + frame 6 melee melee_impRightClaw + frame 10 sound_body snd_footstep + } + anim pain_head models/md5/monsters/imp/pain_head.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_left_arm models/md5/monsters/imp/pain_luparm.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_right_arm models/md5/monsters/imp/pain_ruparm.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_chest models/md5/monsters/imp/pain_chest.md5anim { + frame 1 sound_voice snd_pain + } + anim pain models/md5/monsters/imp/pain3.md5anim { + frame 1 sound_voice snd_pain + } + anim leap_attack models/md5/monsters/imp/scurry_leap.md5anim { + frame 1 sound_voice snd_sight8 + frame 4 sound_body snd_footstep + frame 15 sound_body snd_footstep + frame 16 attack_begin melee_impLeapAttack + frame 28 attack_end + frame 30 sound_body snd_footstep + frame 32 sound_body snd_footstep + frame 38 sound_body snd_footstep + } + + anim roofcrawlidle models/md5/monsters/imp/ceilingimpidle.md5anim { + ai_no_turn + frame 1 disableGravity + frame 1 disableWalkIK + } + anim roofcrawl models/md5/monsters/imp/ceilingimp.md5anim { + ai_no_turn + frame 1 disableGravity + frame 1 disableWalkIK + frame 117 enableGravity + frame 117 enableWalkIK + } + + anim ceilinghang models/md5/monsters/imp/hangonceiling.md5anim { + ai_no_turn + frame 1 disableGravity + frame 1 disableWalkIK + } + + anim zombie_feast models/md5/monsters/imp/severedidle.md5anim { + ai_no_turn + } + anim zombie_feast_wake models/md5/monsters/imp/severedwake.md5anim { + ai_no_turn + frame 6 sound_voice snd_chatter + } + + anim outofholeidle models/md5/monsters/imp/outofholeidle.md5anim { + frame 1 disableWalkIK + ai_no_turn + } + anim outofhole models/md5/monsters/imp/outofhole.md5anim { + ai_no_turn + frame 1 disableWalkIK + frame 12 sound_voice snd_chatter + frame 65 enableWalkIK + } + + anim offwallidle models/md5/monsters/imp/offwallidle.md5anim { + ai_no_turn + frame 1 disableWalkIK + frame 1 disableGravity + } + anim offwall models/md5/monsters/imp/offwall.md5anim { + ai_no_turn + frame 1 disableWalkIK + frame 1 disableGravity + frame 73 enableGravity + frame 73 enableWalkIK + } +} + +entityDef monster_demon_imp { + "inherit" "monster_default" + "scriptobject" "ai" + "nativeobject" "rvmMonsterDemonImp" + "model" "monster_demon_imp" + "ragdoll" "monster_demon_imp" + + "size" "48 48 72" + "use_aas" "aas48" + "team" "1" + "rank" "1" + "health" "130" + "melee_damage" "35" + "melee_range" "40" + "def_projectile" "projectile_impfireball" + "attack_cone" "70" + "attack_accuracy" "0" + "offsetModel" "-8 0 0" + "anim" "idle1" + "mass" "200" + + "burnaway" ".5" + "smoke_burnParticleSystem" "burn_imp.prt-chest" + + "ik_numLegs" "2" + "ik_footSize" "4" + "ik_waist" "Body" + "ik_hip1" "Lupleg" + "ik_hip2" "Rupleg" + "ik_knee1" "Lloleg" + "ik_knee2" "Rloleg" + "ik_ankle1" "Lankle_r" + "ik_ankle2" "Rankle_r" + "ik_dir1" "Lknee" + "ik_dir2" "Rknee" + "ik_foot1" "Lball_r" + "ik_foot2" "Rball_r" + + "ragdoll_slomoStart" "0" + "ragdoll_slomoEnd" "0" + + "damage_zone head" "*Neck" + "damage_zone chest" "*waist -*Rshldr -*Lshldr -*Neck" + "damage_zone left_arm" "*Lshldr" + "damage_zone right_arm" "*Rshldr" + "damage_zone legs" "*Hips" + + "damage_scale head" "2" + + "snd_footstep" "monster_demon_imp_footstep" + "snd_sight" "monster_demon_imp_sight" + "snd_sight2" "monster_demon_imp_sight2" + "snd_sight8" "monster_demon_imp_sight8" + "snd_chatter" "monster_demon_imp_chatter" + "snd_chatter_combat" "monster_demon_imp_chatter_combat" + "snd_pain" "monster_demon_imp_pain" + "snd_attackmelee_1" "monster_demon_imp_attackmelee_1" + "snd_attackmelee_2" "monster_demon_imp_attackmelee_2" + "snd_death" "monster_demon_imp_die" + "snd_thud" "monster_demon_imp_thud" + "snd_createmissile" "monster_demon_imp_fireball_create" + "snd_attackmissile" "monster_demon_imp_fireball_throw" + "snd_alert_idle" "monster_demon_imp_alert_idle" + "snd_burn" "monster_demon_archvile_burn" +} + +model monster_demon_imp_crawler { + mesh models/md5/monsters/imp/imp.md5mesh + channel torso ( *chest ) + channel legs ( waist *Hips Body origin ) + + anim af_pose models/md5/monsters/imp/initial.md5anim + anim ik_pose models/md5/monsters/imp/on4_idle.md5anim + + anim stand models/md5/monsters/imp/on4_idle.md5anim { + frame 57 sound_chatter snd_alert_idle + frame 140 sound_chatter snd_alert_idle + } + anim teleport models/md5/monsters/imp/teleportin.md5anim { + frame 28 sound_body snd_sight + } + anim sight models/md5/monsters/imp/on4_sight.md5anim { + frame 5 sound_body snd_sight + } + anim idle models/md5/monsters/imp/on4_idle.md5anim { + frame 57 sound_chatter snd_alert_idle + frame 140 sound_chatter snd_alert_idle + } + anim run models/md5/monsters/imp/scurry2.md5anim { + frame 6 sound_body snd_footstep + frame 10 sound_body snd_footstep + frame 14 sound_body snd_footstep + frame 18 sound_body snd_footstep + } + anim walk models/md5/monsters/imp/scurry2.md5anim { + frame 6 sound_body snd_footstep + frame 10 sound_body snd_footstep + frame 14 sound_body snd_footstep + frame 18 sound_body snd_footstep + } + anim evade_left models/md5/monsters/imp/evade_left_on4.md5anim { + frame 14 sound_body snd_footstep + frame 15 sound_body snd_footstep + frame 16 sound_body snd_footstep + } + anim evade_right models/md5/monsters/imp/evade_right_on4.md5anim { + frame 13 sound_body snd_footstep + frame 14 sound_body snd_footstep + frame 15 sound_body snd_footstep + frame 16 sound_body snd_footstep + } + anim pain_head models/md5/monsters/imp/pain_head_on4.md5anim { + frame 1 call overrideLegs + frame 1 sound_voice snd_pain + } + anim pain_left_arm models/md5/monsters/imp/pain_luparm_on4.md5anim { + frame 1 call overrideLegs + frame 1 sound_voice snd_pain + } + anim pain_right_arm models/md5/monsters/imp/pain_ruparm_on4.md5anim { + frame 1 call overrideLegs + frame 1 sound_voice snd_pain + } + anim pain_legs models/md5/monsters/imp/pain_chest_on4.md5anim { + frame 1 call overrideLegs + frame 1 sound_voice snd_pain + } + anim pain_chest models/md5/monsters/imp/pain_chest_on4.md5anim { + frame 1 call overrideLegs + frame 1 sound_voice snd_pain + } + anim pain models/md5/monsters/imp/pain_chest_on4.md5anim { + frame 1 call overrideLegs + frame 1 sound_voice snd_pain + } + + anim range_attack models/md5/monsters/imp/crouched_range1.md5anim { + frame 1 call overrideLegs + frame 2 sound_weapon snd_createmissile + frame 2 create_missile RMissile + frame 12 sound_weapon snd_attackmissile + frame 12 launch_missile RMissile + } + + anim jump_start models/md5/monsters/imp/jump_start.md5anim + anim jump_loop1 models/md5/monsters/imp/jump_loop.md5anim + anim jump_loop2 models/md5/monsters/imp/jump_loop2.md5anim + anim jump_loop3 models/md5/monsters/imp/jump_loop3.md5anim + anim jump_end models/md5/monsters/imp/jump_end.md5anim + + anim melee_attack1 models/md5/monsters/imp/on4_melee1.md5anim { + frame 1 call overrideLegs + frame 1 sound_weapon snd_attackmelee_1 + frame 11 melee melee_impRightClaw + } + anim melee_attack2 models/md5/monsters/imp/on4_melee2.md5anim { + frame 1 call overrideLegs + frame 1 sound_weapon snd_attackmelee_2 + frame 7 sound_body snd_footstep + frame 8 melee melee_impRightClaw + frame 14 melee melee_impLeftClaw + frame 17 sound_body snd_footstep + frame 22 sound_body snd_footstep + } +} + +entityDef monster_demon_imp_crawler { + "inherit" "monster_default" + "scriptobject" "ai" + "nativeobject" "rvmMonsterDemonImp" + "model" "monster_demon_imp_crawler" + "ragdoll" "monster_demon_imp" + + "size" "48 48 72" + "use_aas" "aas48" + "team" "1" + "rank" "1" + "health" "130" + "melee_damage" "35" + "melee_range" "40" + "def_projectile" "projectile_impfireball" + "attack_cone" "70" + "attack_accuracy" "0" + "offsetModel" "-8 0 0" + "mass" "150" + + "burnaway" "0.50" + + "ik_numLegs" "2" + "ik_footSize" "4" + "ik_waist" "Body" + "ik_hip1" "Lupleg" + "ik_hip2" "Rupleg" + "ik_hip3" "Luparm" + "ik_hip4" "Ruparm" + "ik_knee1" "Lloleg" + "ik_knee2" "Rloleg" + "ik_knee3" "Lloarm" + "ik_knee4" "Rloarm" + "ik_ankle1" "Lankle_r" + "ik_ankle2" "Rankle_r" + "ik_ankle3" "Lhand" + "ik_ankle4" "Rhand" + "ik_dir1" "Lknee" + "ik_dir2" "Rknee" + "ik_dir3" "Lelbow" + "ik_dir4" "Relbow" + "ik_foot1" "Lball_r" + "ik_foot2" "Rball_r" + "ik_foot3" "Lhand" + "ik_foot4" "Rhand" + + "damage_zone head" "*Neck" + "damage_zone chest" "*waist -*Rshldr -*Lshldr -*Neck" + "damage_zone left_arm" "*Lshldr" + "damage_zone right_arm" "*Rshldr" + "damage_zone legs" "*Hips" + "damage_scale head" "1.25" + + "snd_footstep" "monster_demon_imp_footstep" + "snd_sight" "monster_demon_imp_sight" + "snd_sight2" "monster_demon_imp_sight2" + "snd_sight8" "monster_demon_imp_sight8" + "snd_chatter" "monster_demon_imp_chatter" + "snd_chatter_combat" "monster_demon_imp_chatter_combat" + "snd_pain" "monster_demon_imp_pain" + "snd_attackmelee_1" "monster_demon_imp_attackmelee_1" + "snd_attackmelee_2" "monster_demon_imp_attackmelee_2" + "snd_death" "monster_demon_imp_die" + "snd_thud" "monster_demon_imp_thud" + "snd_createmissile" "monster_demon_imp_fireball_create" + "snd_attackmissile" "monster_demon_imp_fireball_throw" + "snd_alert_idle" "monster_demon_imp_alert_idle" + "snd_burn" "monster_demon_tick_burn" +} + +entityDef damage_impfireball { + "damage" "12" + "kickDir" "1 0 0" + "push" "500" + + "mtr_blob" "genericDamage" + "blob_time" "300" + "blob_size" "400" + "blob_offset_x" "400" + + + "knockback" "10" + + "kick_time" "400" + "kick_amplitude" "1" + + "dv_time" "100" + "smoke_wound_flesh" "bloodwound.smoke" +} + +entityDef damage_impfireball_splash { + "damage" "5" + "radius" "50" + "push" "5000" +} + +entityDef projectile_impfireball { + "spawnclass" "idProjectile" + "mins" "-4 -4 -4" + "maxs" "4 4 4" + "cone" "3" + "model" "impfireball2.prt" + + "def_damage" "damage_impfireball" + "def_splash_damage" "damage_impfireball_splash" + + "launchFromBarrel" "1" + "health" "5" // amount of damage projectile can take if damaged (0 means it can't be destroyed) + "velocity" "475 0 -150" // how fast the projectile leaves the gun (or distance if fuse is 0) + "angular_velocity" "0 0 0" // how the projectile is rotating when it leaves the gun + "thrust" "0" // the rate of acceleration (always in the direction of the projectiles model) + "thrust_start" "0" // when to start accelerating + "thrust_end" "0" // when to stop accelerating + "linear_friction" "0" // "air" friction + "angular_friction" "0" + "contact_friction" "0" + "bounce" "0" // how much speed a projectile retains when it bounces off of objects (coefficient of restitution). 0 means no bounce. + "mass" "5" + "gravity" "250" // how much gravity affects the trajectory. gravity direction is same as the entity that fired it. + "fuse" "20" // how long before the projectile is removed or self-detonates. Use 0 for beam weapons (velocity == distance). + + "detonate_on_fuse" "0" // whether projectile should detonate when it's fuse runs out + "detonate_on_death" "1" // whether projectile should detonate when it's "killed" (health runs out) + "detonate_on_world" "1" // whether projectile should detonate when it hits an obstacle + "detonate_on_actor" "1" // whether projectile should detonate when it hits a character in the game + + "impact_damage_effect" "0" // whether projectile causes blood splats from characters that bleed + "impact_gib" "1" // whether projectile can gib a character or not (for example: bullets don't gib, but rockets do) + + "mtr_detonate" "textures/decals/ballburn01" + "decal_size" "75" + + "smoke_fly" "imp_trail2.prt" // particle effect while in the air + "smoke_detonate" "" // particle effect when detonates + "smoke_residue" "" // particle effect while in the air + "smoke_bounce" "" // particle effect when bounces + "smoke_fuse" "" // particle effect when removed from fuse expiring + + // parametric particles -- temp + "model_detonate" "imp_explosion.prt" + + "debris_count" "3" + "def_debris" "debris_largeshrapnel" + "def_shrapnel" "debris_shrapnel" + + "mtr_light_shader" "lights/impflyflash" + "light_color" "0.9 0.7 0.05" + "light_radius" "160" + "light_offset" "0 0 0" + + + "mtr_explode_light_shader" "lights/impflash" + "explode_light_color" "3.6 3.0 0.5" + "explode_light_radius" "320" + "explode_light_fadetime" "1.0" + + "snd_explode" "monster_demon_imp_fireball_explode" + "snd_fly" "monster_demon_imp_fireball_flight" // particle effect while in the air +} + +entityDef melee_impLeapAttack { + // melee specific parameters + "snd_hit" "monster_demon_imp_melee_hit" + "kickDir" "1 0 0" + + // damage parameters + "damage" "8" + + "mtr_blob" "leftSlash" + "blob_time" "300" + "blob_x" "140" + "blob_y" "-100" + "blob_width" "600" + "blob_height" "600" + + "knockback" "100" + + "kick_time" "800" + "kick_amplitude" "2" + + "dv_time" "400" +} + +entityDef melee_impLeftClaw { + // melee specific parameters + "snd_hit" "monster_demon_imp_melee_hit" + "snd_miss" "monster_demon_imp_melee_miss" + "kickDir" "0 -1 0" + + // damage parameters + "damage" "8" + + "mtr_blob" "leftSlash" + "blob_time" "300" + "blob_x" "140" + "blob_y" "-100" + "blob_width" "600" + "blob_height" "600" + + "knockback" "40" + + "kick_time" "400" + "kick_amplitude" "2" + + "dv_time" "100" +} + +entityDef melee_impRightClaw { + "snd_hit" "monster_demon_imp_melee_hit" + "snd_miss" "monster_demon_imp_melee_miss" + "kickDir" "0 1 0" + + "damage" "8" + + "mtr_blob" "rightSlash" + "blob_time" "300" + "blob_x" "-100" + "blob_y" "-100" + "blob_width" "600" + "blob_height" "600" + + "knockback" "30" + + "kick_time" "400" + "kick_amplitude" "2" + + "dv_time" "100" +} + +model monster_demon_imp_crawl_armdoor { + mesh models/md5/monsters/imp/imp.md5mesh + anim alphalabs2_impcrawl_arm models/md5/cinematics/alphalabs2/alphalabs2_impcrawl_arm.md5anim { + frame 2 sound_body snd_sight5 + } + anim underground_impcrawl_arm models/md5/cinematics/underground/underground_impcrawl_arm.md5anim { + frame 57 sound_body snd_sight + frame 75 sound_body snd_sight2 + frame 110 sound_body snd_sight3 + frame 128 sound_body snd_sight4 + } +} + +entityDef monster_demon_imp_crawl_armdoor { + "inherit" "cin_base" + "model" "monster_demon_imp_crawl_armdoor" + "anim" "underground_impcrawl_arm" + + "snd_sight" "mcu_imp_teh_angar" + "snd_sight2" "mcu_imp_teh_angar2" + "snd_sight3" "mcu_imp_teh_angar3" + "snd_sight4" "mcu_imp_skulkaway" + "snd_sight5" "monster_demon_imp_sight2_loud" +} diff --git a/base/def/monster_demon_maggot.def b/base/def/monster_demon_maggot.def new file mode 100644 index 00000000..79ac880d --- /dev/null +++ b/base/def/monster_demon_maggot.def @@ -0,0 +1,333 @@ +/*********************************************************************** + + monster_demon_maggot.def + +***********************************************************************/ + +export fred { + + options -prefix MAGGOT2_ + + anim magintro.mb -dest maggot1 -sourcedir maps/fred/alphalabs1 -destdir models/md5/cinematics/alphalabs1 + anim hydrocon_n_ceiling_mags.mb -dest hydromag -sourcedir maps/fred/alphalabs1 -destdir models/md5/cinematics/alphalabs1 + + addoptions -prefix MAGGOT3_ + + anim magintro.mb -dest maggot2 -sourcedir maps/fred/alphalabs1 -destdir models/md5/cinematics/alphalabs1 + + anim elevator_attack.mb -dest a2_elevator -sourcedir maps/fred/alphalabs2 -destdir models/md5/monsters/maggot3 + + addoptions -align ALL + + anim hydrocon_n_ceiling_mags.mb -range 1 30 -dest oneninetytwoceiling -sourcedir maps/fred/alphalabs1 -destdir models/md5/monsters/maggot3 + + + addoptions -sourcedir models/monsters/maggot/mag3cycles + addoptions -destdir models/md5/monsters/maggot3 + + + mesh maggot_mesh.mb -dest maggot3 + + anim idle.mb + anim sight.mb + anim walk.mb + anim walk2.mb + anim run.mb + anim run2.mb -range 32 38 -dest jump_start + anim run2.mb -range 39 42 -dest jump_loop + anim run2.mb -range 43 56 -dest jump_end + anim run3.mb + + anim leftclawattack.mb + anim righthandsattack.mb + anim tongueattack.mb + + anim pain_chest.mb + anim pain_leftarm.mb + anim pain_rightarm.mb + + anim pain_chest2.mb + anim pain_leftarm2.mb + anim pain_rightarm2.mb + + anim evade_left.mb + anim evade_right.mb + + anim af_pose.mb + + anim getup.mb + anim range_attack1.mb + anim outofhole.mb + anim outofhole2.mb + anim outofhole3.mb + anim monster_wakeups.mb -sourcedir maps/fred/cyberdemon -dest magcyberwakeup -prefix MAG_ + + anim teleportin.mb -xyzprecision 0.01 -quatprecision 0.00006 + + addoptions -prefix MAGGOT2_ + + anim downwall.mb -range 345 429 -dest maggotdownwall + +} + +model monster_demon_maggot { + mesh models/md5/monsters/maggot3/maggot3.md5mesh + channel torso ( *origin -*Hips -origin -Torso ) + channel legs ( *Hips origin Torso ) + anim af_pose models/md5/monsters/maggot3/af_pose.md5anim + anim idle models/md5/monsters/maggot3/idle.md5anim + anim stand models/md5/monsters/maggot3/idle.md5anim + anim teleport models/md5/monsters/maggot3/teleportin.md5anim + anim sight models/md5/monsters/maggot3/sight.md5anim { + frame 14 sound_voice snd_sight + frame 19 sound_body snd_sight + } + //anim sight2 models/md5/monsters/maggot3/getup.md5anim + anim walk1 models/md5/monsters/maggot3/walk.md5anim { + frame 9 sound_body snd_footstep + frame 12 sound_body snd_footstep + frame 18 sound_body snd_footstep + frame 15 sound_body snd_footstep + frame 27 sound_body snd_footstep + } + anim walk2 models/md5/monsters/maggot3/walk2.md5anim { + frame 11 sound_body snd_footstep + frame 13 sound_body snd_footstep + frame 15 sound_body snd_footstep + frame 19 sound_body snd_footstep + frame 20 sound_body snd_footstep + } + anim run models/md5/monsters/maggot3/run3.md5anim { + frame 9 sound_body snd_footstep + frame 12 sound_body snd_footstep + frame 18 sound_body snd_footstep + frame 15 sound_body snd_footstep + frame 27 sound_body snd_footstep + } + anim melee_attack1 models/md5/monsters/maggot3/leftclawattack.md5anim { + //frame 1 sound_weapon snd_attack_1 + frame 12 sound_weapon snd_attack_1 + //frame 12 sound_weapon snd_attackmelee_2 + //frame 12 sound_voice snd_melee + //frame 12 sound_voice snd_melee2 + frame 19 sound_body snd_footstep + frame 20 melee melee_magLeftClaw + frame 29 sound_body snd_footstep + } + /* + FIXME: missing anim + anim melee_attack2 models/md5/monsters/maggot3/backslash.md5anim { + //frame 12 sound_weapon snd_attackmelee_2 + frame 26 melee melee_magRightClaw + frame 31 sound_voice snd_melee + frame 31 sound_voice snd_melee2 + frame 32 melee melee_magLeftClaw + } + */ + anim melee_attack3 models/md5/monsters/maggot3/righthandsattack.md5anim { + //frame 1 sound_weapon snd_attack_3 + frame 12 sound_weapon snd_attack_3 + //frame 12 sound_weapon snd_attackmelee_2 + frame 17 melee melee_magRightClaw + frame 18 melee melee_magRightClaw + //frame 19 sound_voice snd_melee + //frame 19 sound_voice snd_melee2 + } + anim melee_attack4 models/md5/monsters/maggot3/tongueattack.md5anim { + //frame 1 sound_weapon snd_attackmelee_2 + frame 14 sound_weapon snd_attack_4 + frame 21 attack_begin melee_magRightClaw + frame 31 attack_end + } + anim evade_left models/md5/monsters/maggot3/evade_left.md5anim { + frame 1 call overrideTorso + frame 1 sound_voice snd_evade_left + } + anim evade_right models/md5/monsters/maggot3/evade_right.md5anim { + frame 1 call overrideTorso + frame 1 sound_voice snd_evade_right + } + //anim range_attack models/md5/monsters/maggot3/range_attack1.md5anim + + anim jump_start models/md5/monsters/maggot3/jump_start.md5anim { + frame 1 sound_voice snd_attack_4 + + } + anim jump_loop models/md5/monsters/maggot3/jump_loop.md5anim + anim jump_end models/md5/monsters/maggot3/jump_end.md5anim + + anim pain models/md5/monsters/maggot3/pain_chest2.md5anim { + frame 1 call overrideLegs + frame 1 sound_voice snd_pain + } + anim pain_head models/md5/monsters/maggot3/pain_chest2.md5anim { + frame 1 call overrideLegs + frame 1 sound_voice snd_pain + } + anim pain_chest models/md5/monsters/maggot3/pain_chest2.md5anim { + frame 1 call overrideLegs + frame 1 sound_voice snd_pain + } + anim pain_right_arm models/md5/monsters/maggot3/pain_rightarm2.md5anim { + frame 1 call overrideLegs + frame 1 sound_voice snd_pain + } + anim pain_left_arm models/md5/monsters/maggot3/pain_leftarm2.md5anim { + frame 1 call overrideLegs + frame 1 sound_voice snd_pain + } + anim pain_legs models/md5/monsters/maggot3/pain_chest2.md5anim { + frame 1 call overrideLegs + frame 1 sound_voice snd_pain + } + anim outofhole1 models/md5/monsters/maggot3/outofhole.md5anim { + ai_no_turn + frame 1 sound_voice snd_chatter + frame 35 sound_voice2 snd_sight + } + anim outofhole2 models/md5/monsters/maggot3/outofhole2.md5anim { + ai_no_turn + frame 1 sound_voice snd_chatter + } + anim outofhole3 models/md5/monsters/maggot3/outofhole3.md5anim { + ai_no_turn + frame 1 sound_voice snd_chatter + } + anim downwall models/md5/monsters/maggot3/maggotdownwall.md5anim { + ai_no_turn + frame 1 disableGravity + frame 1 disableWalkIK + frame 82 enableGravity + frame 82 enableWalkIK + } + anim ceiling192 models/md5/monsters/maggot3/oneninetytwoceiling.md5anim { + frame 1 disableGravity + frame 1 disableWalkIK + frame 14 enableGravity + frame 14 enableWalkIK + } + + + +} + +entityDef monster_demon_maggot { + "inherit" "monster_default" + "scriptobject" "ai" + "nativeobject" "rvmMonsterDemonMaggot" + "size" "48 48 68" + "use_aas" "aas48" + "team" "1" + "rank" "1" + "health" "80" + "melee_range" "48" + "turn_rate" "360" + "mass" "200" + + "burnaway" "0.50" + "smoke_burnParticleSystem" "burn_imp.prt-chest" + + "ragdoll" "monster_demon_maggot" + "model" "monster_demon_maggot" + "anim" "idle" + "skin_dropDeath" "skins/models/monsters/magnospikes.skin" + + "bone_focus" "Shoulders" + + "damage_zone head" "*Shoulders" + "damage_zone chest" "*Waist -*Rshldr -*Lshldr -*Shoulders" + "damage_zone left_arm" "*Lshldr" + "damage_zone right_arm" "*Rshldr" + "damage_zone legs" "*Hips" + + "damage_scale head" "1.5" + + "snd_attack_1" "monster_demon_maggot_attack1" + "snd_attack_3" "monster_demon_maggot_attack3" + "snd_attack_4" "monster_demon_maggot_attack4" + "snd_evade_right" "monster_demon_maggot_evade_right" + "snd_evade_left" "monster_demon_maggot_evade_left" + //"snd_idle" "monster_demon_maggot_idle" + "snd_chatter" "monster_demon_maggot_idle" + "snd_chatter_combat" "monster_demon_maggot_idle" + + + + "snd_sight" "monster_demon_maggot_sight" + "snd_sight2" "monster_demon_maggot_sight" + "snd_footstep" "monster_demon_maggot_footstep" + "snd_melee" "monster_demon_maggot_melee" + "snd_melee2" "monster_demon_maggot_melee2" + //"snd_chatter" "monster_demon_maggot_chatter" + //"snd_chatter_combat" "monster_demon_maggot_chatter" + + "snd_pain" "monster_demon_maggot_pain" + "snd_death" "monster_demon_maggot_die" + "snd_burn" "monster_demon_tick_burn" +} + +entityDef melee_magLeftClaw { + // melee specific parameters + "snd_hit" "monster_demon_imp_melee_hit" + "snd_miss" "monster_demon_imp_melee_miss" + "kickDir" "0 -1 0" + + + // damage parameters + "damage" "6" + + "mtr_blob" "leftSlash" + "blob_time" "300" + "blob_x" "140" + "blob_y" "-100" + "blob_width" "600" + "blob_height" "600" + + "knockback" "40" + + "kick_time" "400" + "kick_amplitude" "2" + + "dv_time" "100" +} + +entityDef melee_magRightClaw { + "snd_hit" "monster_demon_imp_melee_hit" + "snd_miss" "monster_demon_imp_melee_miss" + "kickDir" "0 1 0" + + "damage" "6" + + "mtr_blob" "rightSlash" + "blob_time" "300" + "blob_x" "-100" + "blob_y" "-100" + "blob_width" "600" + "blob_height" "600" + + "knockback" "30" + + "kick_time" "400" + "kick_amplitude" "2" + + "dv_time" "100" +} + +entityDef melee_maggotLeapAttack { + // melee specific parameters + "snd_hit" "monster_demon_maggot_melee_hit" + "kickDir" "1 0 0" + + // damage parameters + "damage" "16" + "mtr_blob" "leftSmack" + "blob_time" "300" + "blob_x" "50" + "blob_y" "-100" + "blob_width" "600" + "blob_height" "600" + "knockback" "100" + "kick_time" "800" + "kick_amplitude" "2" + "dv_time" "400" +} diff --git a/base/def/monster_demon_mancubus.def b/base/def/monster_demon_mancubus.def new file mode 100644 index 00000000..fe1b9167 --- /dev/null +++ b/base/def/monster_demon_mancubus.def @@ -0,0 +1,285 @@ +/*********************************************************************** + + monster_demon_mancubus.def + +***********************************************************************/ + +export james { + + options -prefix MANC_ -keep Lknee Rknee -keep ROT Rmissile Lmissile -parent Rmissile Rloarm -parent Lmissile Lloarm -parent Waist ROT -parent ROT Body + + anim maps/james/recycling2.mb -dest models/md5/cinematics/recycling2/mancintro_manc + + + options -prefix MANC_ -keep Lknee Rknee -align movement -keep ROT Rmissile Lmissile -parent Rmissile Rloarm -parent Lmissile Lloarm -parent Waist ROT -parent ROT Body -sourcedir models/monsters/mancubus/cycles -destdir models/md5/monsters/mancubus/james + + + mesh mancubus_mesh.mb -dest mancubus + anim af_pose.mb + anim walk.mb + anim idle.mb + anim teleport.mb + anim pain.mb + anim pain_head.mb + anim pain_chest.mb + anim pain_ruparm.mb + anim pain_luparm.mb + anim sight1.mb + anim multifire1.mb + anim multifire1_start.mb + anim multifire1_end.mb + anim multifire2.mb + anim multifire2.mb -dest multifire3 + anim fire1.mb + anim fire2.mb + anim fire3.mb + anim fire4.mb + anim attack1.mb +} + +model monster_demon_mancubus { + mesh models/md5/monsters/mancubus/james/mancubus.md5mesh + channel torso ( *Waist ) + channel legs ( *origin Body ROT -*Waist ) + + anim af_pose models/md5/monsters/mancubus/james/af_pose.md5anim + anim ik_pose models/md5/monsters/mancubus/james/af_pose.md5anim + + anim idle models/md5/monsters/mancubus/james/idle.md5anim + anim stand models/md5/monsters/mancubus/james/idle.md5anim + anim teleport models/md5/monsters/mancubus/james/teleport.md5anim { + frame 5 sound_body snd_footstep + frame 15 sound_voice snd_sight + } + + anim walk models/md5/monsters/mancubus/james/walk.md5anim { + frame 11 sound_body snd_footstep + frame 26 sound_body snd_footstep + } + + anim pain models/md5/monsters/mancubus/james/pain.md5anim { + frame 1 sound_voice snd_pain + } + + anim pain_head models/md5/monsters/mancubus/james/pain_head.md5anim { + frame 1 sound_voice snd_pain + } + +/* + anim turret_attack1 models/md5/monsters/mancubus/james/fire1.md5anim { + frame 1 call overrideLegs + frame 12 sound_weapon snd_attackmissile + frame 12 launch_missile Lmissile + } + + anim turret_attack2 models/md5/monsters/mancubus/james/fire2.md5anim { + frame 1 call overrideLegs + frame 12 sound_weapon snd_attackmissile + frame 12 launch_missile Rmissile + } + + anim turret_attack3 models/md5/monsters/mancubus/james/multifire2.md5anim { + frame 1 call overrideLegs + frame 12 launch_missile Lmissile + frame 12 sound_weapon snd_attackmissile + frame 23 launch_missile Rmissile + frame 23 sound_weapon snd_attackmissile + frame 38 launch_missile Lmissile + frame 38 sound_weapon snd_attackmissile + } + + anim turret_attack4 models/md5/monsters/mancubus/james/fire3.md5anim { + frame 1 call overrideLegs + frame 12 sound_weapon snd_attackmissile + frame 12 launch_missile Lmissile + } + + anim turret_attack5 models/md5/monsters/mancubus/james/fire4.md5anim { + frame 1 call overrideLegs + frame 12 sound_weapon snd_attackmissile + frame 12 launch_missile Rmissile + } + +*/ + + anim pain_chest models/md5/monsters/mancubus/james/pain_chest.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_right_arm models/md5/monsters/mancubus/james/pain_ruparm.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_left_arm models/md5/monsters/mancubus/james/pain_luparm.md5anim { + frame 1 sound_voice snd_pain + } + anim sight1 models/md5/monsters/mancubus/james/sight1.md5anim { + frame 1 sound_voice snd_sight + } + + anim range_attack_start models/md5/monsters/mancubus/james/multifire1_start.md5anim + anim range_attack_loop models/md5/monsters/mancubus/james/multifire1.md5anim { + frame 3 launch_missile Lmissile + frame 3 sound_weapon snd_attackmissile + frame 19 launch_missile Rmissile + frame 19 sound_weapon snd_attackmissile + } + anim range_attack_end models/md5/monsters/mancubus/james/multifire1_end.md5anim + + anim melee_attack1 models/md5/monsters/mancubus/james/attack1.md5anim { + frame 16 melee melee_mancubus_stomp + frame 16 sound_body snd_footstep + frame 17 sound_body snd_footstep + } + +} + +entityDef monster_demon_mancubus { + "editor_mins" "-61 -61 0" + "editor_maxs" "61 61 96" + "inherit" "monster_default" + "scriptobject" "ai" + "nativeobject" "rvmMonsterDemonMancubus" + "model" "monster_demon_mancubus" + "ragdoll" "monster_demon_mancubus2" + "size" "122 122 96" + "use_aas" "aas_mancubus" + "team" "1" + "rank" "2" + "health" "1000" + "melee_range" "90" + "def_projectile" "projectile_mancubus_rocket" + "smoke_weapon" "cgsmoke.smoke" + "turn_rate" "120" + "chatter_min" "3" + "chatter_max" "3" + "attack_cone" "30" + "attack_accuracy" "0.5" + "pain_threshold" "16" + "on_activate_blend" "2" + + "damage_zone head" "*Loneck" + "damage_zone chest" "*Waist -*Ruparm -*Luparm -*Loneck" + "damage_zone left_arm" "*Luparm" + "damage_zone right_arm" "*Ruparm" + "damage_zone legs" "*Lupleg *Rupleg origin" + "damage_scale head" "1.5" + "mass" "800" + + "smoke_wound_metal" "bulletricochet.prt" + "smoke_wound_ricochet" "bulletricochet.prt" + "burnaway" "0.50" + "smoke_burnParticleSystem" "burn_manc.prt-waist" + + "ik_numLegs" "2" + "ik_footSize" "4" + "ik_waist" "Body" + "ik_hip1" "Lupleg" + "ik_hip2" "Rupleg" + "ik_knee1" "Lloleg" + "ik_knee2" "Rloleg" + "ik_ankle1" "Lfoot" + "ik_ankle2" "Rfoot" + "ik_dir1" "Lknee" + "ik_dir2" "Rknee" + "ik_foot1" "Lfoot" + "ik_foot2" "Rfoot" + + "snd_sight" "monster_demon_mancubus_sight" + "snd_chatter" "monster_demon_mancubus_chatter" + "snd_chatter_combat" "monster_demon_mancubus_chatter_combat" + "snd_pain" "monster_demon_mancubus_pain" + "snd_attackmissile" "monster_demon_mancubus_attackmissle" + "snd_death" "monster_demon_mancubus_die" + "snd_footstep" "monster_demon_mancubus_step" + "snd_burn" "monster_demon_mancubus_burn" +} + +entityDef damage_mancubusblast { + "damage" "20" + "smoke_wound_flesh" "bloodwound.smoke" + "snd_flesh" "bullet_impact_flesh" +} + +entityDef damage_mancubusSplash { + "damage" "20" + "radius" "40" + "knockback" "30" + "push" "200" +} + +entityDef projectile_mancubus_rocket { + "spawnclass" "idProjectile" + "mins" "-8 -8 -8" + "maxs" "8 8 8" + "cone" "3" + "model" "manc_fireball.prt" + + "bindOnImpact" "0" + + "def_damage" "damage_mancubusblast" + "def_splash_damage" "damage_mancubusSplash" + + "launchFromBarrel" "1" + "health" "0" // amount of damage projectile can take if damaged (0 means it can't be destroyed) + "velocity" "700 0 0" // how fast the projectile leaves the gun (or distance if fuse is 0) + "random_shader_spin" "1" // sets shader parm 5 which if appropriate the projectile shader will use this as an alternating spin + "angular_velocity" "0 0 0" // how the projectile is rotating when it leaves the gun + "thrust" "0" // the rate of acceleration (always in the direction of the projectiles model) + "thrust_start" "0" // when to start accelerating + "thrust_end" "0" // when to stop accelerating + "linear_friction" "0" // "air" friction + "angular_friction" "0" + "contact_friction" "0" + "bounce" "0" // how much speed a projectile retains when it bounces off of objects (coefficient of restitution). 0 means no bounce. + "mass" "100" + "gravity" "0" // how much gravity affects the trajectory. gravity direction is same as the entity that fired it. + "fuse" "10" // how long before the projectile is removed or self-detonates. Use 0 for beam weapons (velocity == distance). + + "detonate_on_fuse" "0" // whether projectile should detonate when it's fuse runs out + "detonate_on_death" "1" // whether projectile should detonate when it's "killed" (health runs out) + "detonate_on_world" "1" // whether projectile should detonate when it hits an obstacle + "detonate_on_actor" "1" // whether projectile should detonate when it hits a character in the game + + "impact_damage_effect" "1" // whether projectile causes blood splats from characters that bleed + "impact_gib" "1" // whether projectile can gib a character or not (for example: bullets don't gib, but rockets do) + + "mtr_detonate" "textures/decals/ballburn01" + "decal_size" "70" + + //"smoke_fly" "plasmatrail.smoke" // particle effect while in the air + "smoke_detonate" "" // particle effect when detonates + "smoke_residue" "" // particle effect while in the air + "smoke_bounce" "" // particle effect when bounces + "smoke_fuse" "" // particle effect when removed from fuse expiring + + "model_detonate" "manc_explosion.prt" + +// "mtr_light_shader" "" +// "light_color" "0 0 0.8" +// "light_radius" "160" +// "light_offset" "-8 0 0" + +// "mtr_explode_light_shader" "muzzleflash" +// "explode_light_color" "0 0 1" +// "explode_light_radius" "160" +// "explode_light_fadetime" "0.25" + + "snd_fly" "monster_demon_imp_fireball_flight" // sound effect while in the air + "snd_explode" "monster_demon_imp_fireball_explode" +} + +entityDef melee_mancubus_stomp { + "damage" "40" + "kickDir" "1 0 -1" + "blob_time" "600" + //"blob_size" "600" + //"blob_offset_x" "600" + "mtr_blob" "leftSmack" + "blob_x" "50" + "blob_y" "-100" + "blob_width" "600" + "blob_height" "600" + "knockback" "80" + "kick_time" "400" + "kick_amplitude" "1" + "dv_time" "100" +} diff --git a/base/def/monster_demon_pinky.def b/base/def/monster_demon_pinky.def new file mode 100644 index 00000000..da29d22b --- /dev/null +++ b/base/def/monster_demon_pinky.def @@ -0,0 +1,298 @@ +/*********************************************************************** + + monster_demon_pinky.def + +***********************************************************************/ + +export fred { + + options -prefix PINKY_ -rename Waist Waist1 -rename LoNeck Waist -parent drool Mouth_Piece + + anim maps/fred/caverns2/pinkywake.mb -rotate -90 -range 1 1 -dest models/md5/cinematics/caverns2/pinkywakeidle + anim maps/fred/caverns2/pinkywake.mb -rotate -90 -dest models/md5/cinematics/caverns2/pinkywake + anim maps/fred/intro/intro.mb -range 1 1220 -dest models/md5/cinematics/intro/pinky_intro + + options -prefix PINKY_ -align ALL -rename Waist Waist1 -rename LoNeck Waist -parent drool Mouth_Piece -sourcedir models/monsters/pinky/animation/cycles -destdir models/md5/monsters/pinky + + mesh pinky_mesh.mb -dest pinky + anim teleportin.ma + anim initial.ma + anim idle1.ma + anim roar.ma + anim roar2.ma + anim roar3.ma + anim walk.ma + anim run.ma -cycleStart 26 + anim evade_left.ma + anim evade_right.ma + anim leap_attack.ma + anim attack.ma -range 1 17 + anim attack2.ma -range 1 17 + anim attack3.ma + anim attack4.ma + anim pain_head3.ma + anim pain_luparm3.ma + anim pain_ruparm3.ma + anim misc1.ma -dest delta2a_awake + anim stand.ma + + anim pipes_bust2.mb -range 1 151 -dest pipepinkanim -sourcedir maps/fred/wall + anim pipes_bust2.mb -range 1 3 -dest pipepinkidle -sourcedir maps/fred/wall + + anim glassbreak.mb -rotate 90 -range 1 1 -dest glassbreak_idle -sourcedir models/monsters/pinky/animation/cinematics + anim glassbreak.mb -rotate 90 -range 1 85 -dest glassbreak -sourcedir models/monsters/pinky/animation/cinematics +} + +model monster_demon_pinky { + mesh models/md5/monsters/pinky/pinky.md5mesh + + channel torso ( *Waist ) + channel legs ( *Waist1 *Chest -*Waist Body origin ) + + anim af_pose models/md5/monsters/pinky/initial.md5anim + + anim teleport models/md5/monsters/pinky/teleportin.md5anim { + frame 1 sound_voice snd_sight1 + frame 2 sound_voice snd_admin_handstep + frame 2 sound_voice snd_admin_handstep + frame 15 sound_voice snd_admin_handstep + frame 23 sound_voice snd_admin_handstep + frame 30 sound_voice snd_sight1 + } + anim initial models/md5/monsters/pinky/initial.md5anim + anim stand models/md5/monsters/pinky/stand.md5anim + anim idle models/md5/monsters/pinky/idle1.md5anim { + frame 1 sound_body snd_idle + frame 1 sound_item snd_breath + } + anim sight1 models/md5/monsters/pinky/roar.md5anim { + ai_no_turn + frame 1 call overrideLegs + frame 8 sound_voice snd_sight1 + } + anim walk models/md5/monsters/pinky/run.md5anim { + frame 1 sound_item snd_breath + frame 7 sound_body snd_gear + frame 10 sound_body2 snd_footstep + frame 11 sound_body snd_handstep + frame 17 sound_body snd_gear + frame 20 sound_body2 snd_footstep + frame 21 sound_body snd_handstep + } + anim run models/md5/monsters/pinky/run.md5anim { + frame 1 sound_item snd_breath + frame 7 sound_body snd_gear + frame 10 sound_body2 snd_footstep + frame 11 sound_body snd_handstep + frame 17 sound_body snd_gear + frame 20 sound_body2 snd_footstep + frame 21 sound_body snd_handstep + } + anim evade_left1 models/md5/monsters/pinky/evade_left.md5anim { + frame 1 sound_voice snd_pain + frame 9 sound_weapon snd_melee_4 + frame 10 sound_body snd_handstep + frame 11 sound_body snd_handstep + frame 12 sound_body2 snd_footstep + frame 13 sound_body snd_footstep + frame 22 sound_body2 snd_footstep + } + anim evade_right1 models/md5/monsters/pinky/evade_right.md5anim { + frame 1 sound_voice snd_pain + frame 1 sound_item snd_breath + frame 10 sound_body2 snd_handstep + frame 11 sound_body snd_handstep + frame 14 sound_body snd_footstep + frame 15 sound_body2 snd_footstep + frame 19 sound_body snd_handstep + frame 21 sound_body snd_footstep + } + anim roar1 models/md5/monsters/pinky/roar2.md5anim { + frame 3 sound_voice snd_sight2 + } + anim roar2 models/md5/monsters/pinky/roar3.md5anim { + frame 3 sound_voice snd_sight3 + } + anim melee_attack1 models/md5/monsters/pinky/attack.md5anim { + frame 1 call overrideLegs + frame 1 sound_weapon snd_melee_1 + frame 6 sound_body snd_handstep + frame 7 melee melee_pinky_back + frame 7 sound_body snd_handstep + frame 8 sound_body snd_gear + frame 11 sound_body snd_footstep + frame 15 sound_body2 snd_footstep + } + anim melee_attack2 models/md5/monsters/pinky/attack2.md5anim { + frame 1 sound_weapon snd_melee_1 + frame 6 sound_body snd_handstep + frame 7 melee melee_pinky_back + frame 7 sound_body snd_handstep + frame 8 sound_body snd_gear + frame 11 sound_body snd_footstep + frame 15 sound_body2 snd_footstep + } + anim melee_attack3 models/md5/monsters/pinky/attack3.md5anim { + frame 1 sound_weapon snd_melee_1 + frame 4 melee melee_pinky_right + } + anim melee_attack4 models/md5/monsters/pinky/attack4.md5anim { + frame 1 sound_weapon snd_melee_1 + frame 5 melee melee_pinky_left + } + anim pain models/md5/monsters/pinky/pain_head3.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_head models/md5/monsters/pinky/pain_head3.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_chest models/md5/monsters/pinky/pain_head3.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_right_arm models/md5/monsters/pinky/pain_ruparm3.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_left_arm models/md5/monsters/pinky/pain_luparm3.md5anim { + frame 1 sound_voice snd_pain + } +} + +model monster_demon_pinky_pipes { + inherit monster_demon_pinky + anim pipes_idle models/md5/monsters/pinky/pipepinkidle.md5anim + anim pipes_bust models/md5/monsters/pinky/pipepinkanim.md5anim +} + +entityDef monster_demon_pinky { + "editor_mins" "-48 -48 0" + "editor_maxs" "48 48 96" + "inherit" "monster_default" + "scriptobject" "ai" + "nativeobject" "rvmMonsterDemonPinky" + "model" "monster_demon_pinky" + "ragdoll" "monster_demon_pink" + + "size" "74 74 78" + "use_aas" "aas96" + "team" "1" + "rank" "1" + "health" "220" + "melee_range" "60" + "mass" "300" + + "look_min" "-90 -125 0" + "look_max" "25 125 0" + "look_joint Head" "0.4 0.4 0" + "look_joint Waist" "0.1 0.1 0" + + "bone_focus" "Forehead_Flesh" + + "smoke_wound_metal" "bulletricochet.prt" + "smoke_wound_ricochet" "bulletricochet.prt" + + "smoke_particleSystem" "pinkysmoke.prt" + "smoke_pain" "pinkysmokepain.smoke" + "particleBone" "Waist3" + "burnaway" "0.50" + "smoke_burnParticleSystem" "burn_imp_large.prt-waist" + + "offsetModel" "-20 0 0" + + "damage_zone head" "*Chest" + "damage_zone chest" "*Chest -*Rshldr -*Lshldr -*Waist" + "damage_zone left_arm" "*Lshldr" + "damage_zone right_arm" "*Rshldr" + "damage_zone legs" "*Waist1" + "damage_scale head" "1" + + "snd_footstep" "monster_demon_pinky_foot" + "snd_handstep" "pinky_hand" + "snd_admin_handstep" "admin_monster_demon_pinky_hand" + "snd_melee_1" "monster_demon_pinky_attackmelee_1" + "snd_melee_4" "monster_demon_pinky_attackmelee_4" + "snd_sight1" "monster_demon_pinky_sight1" + "snd_sight2" "monster_demon_pinky_sight2" + "snd_sight3" "monster_demon_pinky_sight3" + "snd_idle" "monster_demon_pinky_idle" + "snd_chatter" "monster_demon_pinky_chatter" + "snd_chatter_combat" "monster_demon_pinky_chatter_combat" + "snd_pain" "monster_demon_pinky_pain" + "snd_death" "monster_demon_pinky_die" + "snd_gear" "pinky_gears" + "snd_breath" "monster_demon_pinky_breath" + "snd_burn" "monster_demon_tick_burn" +} + +entityDef melee_pinky_back { + "snd_hit" "monster_demon_pinky_melee_hit" + "snd_miss" "monster_demon_pinky_melee_miss" + "kickDir" "1 0 0" + "damage" "10" + "mtr_blob" "bite" + "blob_time" "300" + "blob_x" "0" + "blob_y" "-125" + "blob_width" "650" + "blob_height" "650" + "knockback" "100" + "kick_time" "800" + "kick_amplitude" "2" + "dv_time" "400" +} + +entityDef melee_pinky_right { + "snd_hit" "monster_demon_pinky_melee_hit" + "snd_miss" "monster_demon_pinky_melee_miss" + "kickDir" "0 1 0" + "damage" "10" + + "mtr_blob" "rightSmack" + "blob_time" "600" + "blob_x" "-140" + "blob_y" "-100" + "blob_width" "600" + "blob_height" "600" + + "knockback" "60" + "kick_time" "400" + "kick_amplitude" "2" + "dv_time" "150" +} + +entityDef melee_pinky_left { + "snd_hit" "monster_demon_pinky_melee_hit" + "snd_miss" "monster_demon_pinky_melee_miss" + "kickDir" "0 -1 0" + "damage" "10" + + "mtr_blob" "leftSmack" + "blob_time" "600" + "blob_x" "140" + "blob_y" "-100" + "blob_width" "600" + "blob_height" "600" + + "knockback" "60" + "kick_time" "400" + "kick_amplitude" "2" + "dv_time" "150" +} + +sound pinky_gears { + minDistance 1 + maxDistance 16 + volume -6 + no_dups + + sound/xian/sentry/gears/walk_01.wav + sound/xian/sentry/gears/walk_03.wav + sound/xian/sentry/gears/walk_04.wav + sound/xian/sentry/gears/walk_06.wav + sound/xian/sentry/gears/walk_07.wav + sound/xian/sentry/gears/walk_08.wav + sound/xian/sentry/gears/walk_09.wav + sound/xian/sentry/gears/walk_10.wav + sound/xian/sentry/gears/walk_11.wav + sound/xian/sentry/gears/walk_12.wav + sound/xian/sentry/gears/walk_13.wav +} diff --git a/base/def/monster_demon_revenant.def b/base/def/monster_demon_revenant.def new file mode 100644 index 00000000..312c8593 --- /dev/null +++ b/base/def/monster_demon_revenant.def @@ -0,0 +1,517 @@ +/*********************************************************************** + + monster_demon_revenant.def + +***********************************************************************/ + +export james { + + options -prefix REV_ -keep Lknee Rknee -keep ROT Rmissile Lmissile target1 target2 -parent Rmissile r_gun -parent Lmissile l_gun -parent Waist1 ROT -parent ROT Body + + anim maps/james/revenant/revenant_intro.mb -dest models/md5/cinematics/revenant/revintro_rev + + addoptions -align movement -sourcedir models/monsters/revenant/cycles -destdir models/md5/monsters/revenant/james + + mesh revenant_mesh.mb -dest revenant + anim idle1.mb + anim sight1.mb + anim sight2.mb + anim attack1.mb + anim attack2.mb + anim attack3.mb + anim teleport.mb + anim walk1.mb + anim walk2.mb + anim range_attack1.mb + anim range_attack2.mb + anim range_attack3.mb + anim evade_left1.mb + anim evade_left2.mb + anim evade_right1.mb + anim evade_right2.mb + anim pain_chest1.mb + anim pain_chest2.mb + anim pain_head1.mb + anim pain_head2.mb + anim pain_luparm1.mb + anim pain_luparm2.mb + anim pain_ruparm1.mb + anim pain_ruparm2.mb + anim af_pose.mb +} + +model monster_demon_revenant { + mesh models/md5/monsters/revenant/james/revenant.md5mesh + + channel torso ( *Waist1 ) + channel legs ( *Hips origin Body ROT ) + + anim turret_attack models/md5/monsters/revenant/james/range_attack3.md5anim { + frame 1 call overrideLegs + frame 13 sound_weapon snd_attackmissile + frame 14 launch_missile Lmissile + frame 15 launch_missile Rmissile + frame 15 sound_body snd_footstep + } + + anim af_pose models/md5/monsters/revenant/james/af_pose.md5anim + anim ik_pose models/md5/monsters/revenant/james/af_pose.md5anim + + anim idle models/md5/monsters/revenant/james/idle1.md5anim + + anim teleport models/md5/monsters/revenant/james/teleport.md5anim { + + frame 5 sound_body snd_footstep + frame 6 sound_body snd_footstep + frame 11 sound_voice snd_sight + } + + anim sight1 models/md5/monsters/revenant/james/sight1.md5anim { + frame 1 sound_voice snd_sight + } + + anim sight2 models/md5/monsters/revenant/james/sight2.md5anim { + frame 9 sound_voice snd_sight2 + } + + anim walk models/md5/monsters/revenant/james/walk1.md5anim { + frame 11 sound_body snd_footstep + frame 24 sound_body snd_footstep + } + + anim pain models/md5/monsters/revenant/james/pain_chest1.md5anim { + frame 1 sound_voice snd_pain + } + + anim pain_chest2 models/md5/monsters/revenant/james/pain_chest2.md5anim { + frame 1 sound_voice snd_pain + } + + anim pain_head1 models/md5/monsters/revenant/james/pain_head1.md5anim { + frame 1 sound_voice snd_pain + } + + anim pain_head2 models/md5/monsters/revenant/james/pain_head2.md5anim { + frame 1 sound_voice snd_pain + } + + anim pain_left_arm1 models/md5/monsters/revenant/james/pain_luparm1.md5anim { + frame 1 sound_voice snd_pain + } + + anim pain_left_arm2 models/md5/monsters/revenant/james/pain_luparm2.md5anim { + frame 1 sound_voice snd_pain + } + + anim pain_right_arm1 models/md5/monsters/revenant/james/pain_ruparm1.md5anim { + frame 1 sound_voice snd_pain + } + + anim pain_right_arm2 models/md5/monsters/revenant/james/pain_ruparm2.md5anim { + frame 1 sound_voice snd_pain + } + + anim pain_legs models/md5/monsters/revenant/james/pain_chest1.md5anim { + frame 1 sound_voice snd_pain + } + + anim run models/md5/monsters/revenant/james/walk2.md5anim { + frame 11 sound_body snd_footstep + frame 24 sound_body snd_footstep + } + + anim melee_attack1 models/md5/monsters/revenant/james/attack1.md5anim { + frame 1 call overrideLegs + frame 11 melee melee_revRightClaw + frame 11 sound_weapon snd_attackmelee_1 + frame 12 sound_body snd_footstep + frame 13 sound_body snd_footstep + } + + anim melee_attack2 models/md5/monsters/revenant/james/attack2.md5anim { + frame 1 call overrideLegs + frame 11 melee melee_revLeftClaw + frame 12 sound_weapon snd_attackmelee_1 + frame 14 sound_body snd_footstep + } + + anim melee_attack3 models/md5/monsters/revenant/james/attack3.md5anim { + frame 1 call overrideLegs + frame 12 sound_weapon snd_attackmelee_1 + frame 12 melee melee_revenant_right + frame 13 sound_body snd_footstep + frame 22 melee melee_revenant_left + frame 22 sound_weapon snd_attackmelee_1 + frame 22 melee melee_revenant_right + + } + + anim evade_left1 models/md5/monsters/revenant/james/evade_left1.md5anim { + + frame 1 sound_voice snd_pain + frame 6 sound_body snd_footstep + frame 15 sound_body snd_footstep + frame 21 sound_body snd_footstep + frame 18 sound_weapon snd_attackmissile + frame 19 launch_missile Lmissile + } + + anim evade_left2 models/md5/monsters/revenant/james/evade_left2.md5anim { + + frame 1 sound_voice snd_pain + frame 6 sound_body snd_footstep + frame 15 sound_body snd_footstep + frame 21 sound_body snd_footstep + } + + anim evade_right1 models/md5/monsters/revenant/james/evade_right1.md5anim { + + frame 1 sound_voice snd_pain + frame 6 sound_body snd_footstep + frame 15 sound_body snd_footstep + frame 21 sound_body snd_footstep + frame 18 sound_weapon snd_attackmissile + frame 19 launch_missile Rmissile + } + + anim evade_right2 models/md5/monsters/revenant/james/evade_right2.md5anim { + + frame 1 sound_voice snd_pain + frame 6 sound_body snd_footstep + frame 15 sound_body snd_footstep + frame 21 sound_body snd_footstep + } + + anim range_attack1 models/md5/monsters/revenant/james/range_attack1.md5anim { + frame 1 call overrideLegs + frame 12 sound_weapon snd_attackmissile + frame 12 launch_missile Lmissile + } + + anim range_attack2 models/md5/monsters/revenant/james/range_attack2.md5anim { + frame 1 call overrideLegs + frame 13 sound_weapon snd_attackmissile + frame 13 launch_missile Rmissile + } + + anim range_attack3 models/md5/monsters/revenant/james/range_attack3.md5anim { + frame 1 call overrideLegs + frame 13 sound_weapon snd_attackmissile + frame 14 launch_missile Lmissile + frame 15 launch_missile Rmissile + frame 15 sound_body snd_footstep + } +} + +entityDef monster_demon_revenant { + "inherit" "monster_default" + "model" "monster_demon_revenant" + "scriptobject" "ai" + "nativeobject" "rvmMonsterDemonRevenant" + "size" "48 48 82" + "use_aas" "aas48" + "team" "1" + "rank" "2" + "health" "272" + "melee_range" "52" + "def_projectile" "projectile_rev_rocket" + "attack_cone" "70" + "attack_accuracy" "0" + "chatter_min" "6" + "chatter_max" "15" + "chatter_combat_min" "3" + "chatter_combat_max" "7" + "ragdoll" "monster_demon_revenant2" + "bone_focus" "Head" + "mass" "250" + + "burnaway" "0.50" + "smoke_burnParticleSystem" "burn_imp.prt-waist" + + "look_min" "-90 -125 0" + "look_max" "25 125 0" + "look_joint Waist1" "0.4 0.4 0" + "look_joint Head" "0.6 0.6 0" + + "damage_zone head" "*Shldrs" + "damage_zone chest" "*Waist1 -*Rshldr -*Lshldr -*Neck" + "damage_zone left_arm" "*Lshldr" + "damage_zone right_arm" "*Rshldr" + "damage_zone legs" "*Hips origin Body" + "damage_scale head" "2" + + "ik_numLegs" "2" + "ik_footSize" "4" + "ik_waist" "Body" + "ik_hip1" "Lupleg" + "ik_hip2" "Rupleg" + "ik_knee1" "Lloleg" + "ik_knee2" "Rloleg" + "ik_ankle1" "Lankle" + "ik_ankle2" "Rankle" + "ik_dir1" "Lknee" + "ik_dir2" "Rknee" + "ik_foot1" "Ltoe" + "ik_foot2" "Rtoe" + + "snd_footstep" "monster_demon_revenant_footstep" + "snd_attackmelee_1" "monster_demon_revenant_attackmelee" + "snd_sight" "monster_demon_revenant_sight" + "snd_sight2" "monster_demon_revenant_sight2" + "snd_chatter" "monster_demon_revenant_chatter" + "snd_chatter_combat" "monster_demon_revenant_chatter_combat" + "snd_pain" "monster_demon_revenant_pain" + "snd_attackmissile" "monster_demon_revenant_attackmissile" + "snd_death" "monster_demon_revenant_die" + "snd_burn" "monster_demon_revenant_burn" +} + +entityDef damage_RevRocket { + "damage" "10" + "kickDir" "1 0 0" + + "mtr_blob" "genericDamage" + "blob_time" "300" + "blob_size" "400" + "blob_offset_x" "400" + + "knockback" "10" + + //"smoke_wound_flesh" "bloodwound.smoke" + "snd_flesh" "bullet_impact_flesh" + + "kick_time" "400" + "kick_amplitude" "1" + + "dv_time" "100" +} + +entityDef damage_RevRocketSplash { + "damage" "10" + "radius" "30" +} + +entityDef projectile_rev_rocket { + "spawnclass" "idGuidedProjectile" + "mins" "-2 -2 -5" + "maxs" "2 2 5" + "cone" "3" + "model" "models/weapons/rocketlauncher/rocket.lwo" + + "def_damage" "damage_RevRocket" + "def_splash_damage" "damage_RevRocketSplash" + + "random" "15 15 0" // random angular offset + "turn_max" "180" // maximum amount to turn per second + "clamp_dist" "256" // distance to begin clamping off the random direction changes + "launchFromBarrel" "1" + "health" "5" + "velocity" "300 0 0" + "angular_velocity" "0 0 0" + "thrust" "" + "thrust_start" "0" + "thrust_end" "4" + "linear_friction" "0" + "angular_friction" "0" + "contact_friction" "0" + "bounce" "0" + "mass" "10" + "gravity" "0" + "fuse" "7" + "burstMode" "1" + "burstDist" "32" + "burstVelocity" "1.25" + + "detonate_on_fuse" "0" + "detonate_on_death" "1" + "detonate_on_world" "1" + "detonate_on_actor" "1" + + "impact_damage_effect" "0" + "impact_gib" "1" + + //"mtr_detonate" "textures/decals/ballburn_rev" + "decal_size" "75" + + // temp temp + "smoke_fly" "revrockettrail.prt" + "smoke_detonate" "" + "smoke_residue" "" + "smoke_bounce" "" + "smoke_fuse" "" + + "debris_count" "3" + "def_debris" "debris_largeshrapnel" + "def_shrapnel" "debris_shrapnel" + + // parametric particles -- temp + "model_detonate" "rocketExplosion.prt" + + "mtr_light_shader" "" + "light_color" "0.9 0.6 0.05" + "light_radius" "160" + "light_offset" "0 0 -16" + + "mtr_explode_light_shader" "muzzleflash" + "explode_light_color" "1 0.8 0.4" + "explode_light_radius" "160" + "explode_light_fadetime" "0.25" + + "snd_fly" "monster_demon_revenant_rocket_flight" + "snd_explode" "monster_demon_revenant_rocket_explode" + "snd_havetone" "monster_demon_revenant_rocket_tone" +} + +// used for cinematics. flies straight. +entityDef projectile_rev_rocket_cinematic { + "inherit" "projectile_rev_rocket" + "spawnclass" "idProjectile" +} + +entityDef melee_revLeftClaw { + // melee specific parameters + "snd_hit" "monster_demon_imp_melee_hit" + "snd_miss" "monster_demon_imp_melee_miss" + "kickDir" "0 -1 0" + + + // damage parameters + "damage" "16" + + "mtr_blob" "leftSlash" + "blob_time" "300" + "blob_x" "140" + "blob_y" "-100" + "blob_width" "600" + "blob_height" "600" + + "knockback" "40" + + "kick_time" "400" + "kick_amplitude" "2" + + "dv_time" "100" +} + +entityDef melee_revRightClaw { + "snd_hit" "monster_demon_imp_melee_hit" + "snd_miss" "monster_demon_imp_melee_miss" + "kickDir" "0 1 0" + + "damage" "16" + + "mtr_blob" "rightSlash" + "blob_time" "300" + "blob_x" "-100" + "blob_y" "-100" + "blob_width" "600" + "blob_height" "600" + + "knockback" "30" + + "kick_time" "400" + "kick_amplitude" "2" + + "dv_time" "100" +} + +entityDef melee_revenant { + "damage" "16" + "kickDir" ".5 0 0" + "mtr_blob" "genericDamage" + "blob_time" "300" + "blob_size" "400" + "blob_offset_x" "400" + + + "knockback" "40" + "kick_time" "400" + "kick_amplitude" "1" + + "dv_time" "100" + "snd_hit" "fist_impact" + "snd_miss" "fist_whoosh" +} + +entityDef melee_revenant_right { + "damage" "16" + "kickDir" "0 1 0" + + "mtr_blob" "rightSmack" + "blob_time" "600" + "blob_x" "140" + "blob_y" "-100" + "blob_width" "600" + "blob_height" "600" + + "knockback" "60" + "kick_time" "400" + "kick_amplitude" "1" + + "dv_time" "100" + "snd_hit" "fist_impact" + "snd_miss" "fist_whoosh" +} + +entityDef melee_revenant_right_down { + "damage" "16" + "kickDir" ".5 0 -1" + + "mtr_blob" "rightSmack" + "blob_time" "600" + "blob_x" "140" + "blob_y" "-100" + "blob_width" "600" + "blob_height" "600" + + + "knockback" "70" + "kick_time" "400" + "kick_amplitude" "1" + + "dv_time" "100" + "snd_hit" "fist_impact" + "snd_miss" "fist_whoosh" +} + +entityDef melee_revenant_left { + "damage" "16" + "kickDir" "0 -1 0" + + "mtr_blob" "leftSmack" + "blob_time" "600" + "blob_x" "-140" + "blob_y" "-100" + "blob_width" "600" + "blob_height" "600" + + + "knockback" "40" + "kick_time" "400" + "kick_amplitude" "1" + + "dv_time" "100" + "snd_hit" "fist_impact" + "snd_miss" "fist_whoosh" +} + +entityDef melee_revenant_left_down { + "damage" "16" + "kickDir" "0 -1 0" + + "mtr_blob" "leftSmack" + "blob_time" "600" + "blob_x" "-140" + "blob_y" "-100" + "blob_width" "600" + "blob_height" "600" + + + "knockback" "40" + "kick_time" "400" + "kick_amplitude" "1" + + "dv_time" "100" + "snd_hit" "fist_impact" + "snd_miss" "fist_whoosh" +} diff --git a/base/def/monster_demon_sentry.def b/base/def/monster_demon_sentry.def new file mode 100644 index 00000000..201aa827 --- /dev/null +++ b/base/def/monster_demon_sentry.def @@ -0,0 +1,210 @@ +/*********************************************************************** + + monster_demon_sentry.def + +***********************************************************************/ + +export fred { + options -prefix SENTRY1_ -scale .7 -keep L1toe L2toe R1toe R2toe barrel Lelbow Lknee Relbow Rknee eject flash light -parent light Head1 -parent flash Hips -parent eject Hips -parent barrel Hips -parent R1_upleg Hips -parent R2_upleg Hips -parent L1_upleg Hips -parent L2_upleg Hips -parent Loneck Hips -sourcedir models/monsters/sentry/animation/cycles -destdir models/md5/monsters/sentry + + + mesh sentry_mesh.mb -dest sentry + + anim initial.ma + anim alert.ma + anim walk1.ma + anim walk1_beam.ma + anim unfold.ma + anim fold.ma + anim folded.ma + anim walk1_pain.ma + anim stand_death.ma + anim idle_stand1.ma + anim is_2_alert.ma + anim death_getup_on3.ma + anim walk_on3.ma + anim range_attackstart.ma + anim range_attack4.ma -dest range_attack1 + anim range_attackend.ma + anim strafe_lft.ma + anim strafe_rt.ma + anim talk_primary.ma + anim turn_left.ma + anim turn_right.ma + + addoptions -prefix ref_ + + anim wall_release.ma -rotate 90 -range 1 120 + anim wall_release_blank.ma -rotate 90 -range 1 150 -dest wall_release_dummy + anim wall_release.ma -rotate 90 -range 1 1 -dest wall_release_idle +} + +model monster_demon_sentry { + mesh models/md5/monsters/sentry/sentry.md5mesh + skin skins/models/monsters/brownsentry.skin + + channel torso ( *Loneck ) + channel legs ( *Hips origin -*Loneck ) + + anim af_pose models/md5/monsters/sentry/initial.md5anim + anim initial models/md5/monsters/sentry/initial.md5anim + anim folded models/md5/monsters/sentry/folded.md5anim { + ai_no_turn + frame 1 disableWalkIK + } + anim unfold models/md5/monsters/sentry/unfold.md5anim { + ai_no_turn + frame 1 disableWalkIK + frame 79 enableWalkIK + } + + anim idle models/md5/monsters/sentry/idle_stand1.md5anim + anim stand models/md5/monsters/sentry/idle_stand1.md5anim + anim alert_idle models/md5/monsters/sentry/alert.md5anim + anim walk models/md5/monsters/sentry/walk1.md5anim + anim range_attack models/md5/monsters/sentry/range_attackstart.md5anim + anim range_attack_loop1 models/md5/monsters/sentry/range_attack1.md5anim { + frame 1 launch_missile barrel + } + anim range_attack_end models/md5/monsters/sentry/range_attackend.md5anim + anim run models/md5/monsters/sentry/walk1.md5anim + anim pain models/md5/monsters/sentry/walk1_pain.md5anim + anim head_pain models/md5/monsters/sentry/walk1_pain.md5anim + anim getupon3 models/md5/monsters/sentry/death_getup_on3.md5anim + anim walkon3 models/md5/monsters/sentry/walk_on3.md5anim + anim sight models/md5/monsters/sentry/unfold.md5anim { + ai_no_turn + frame 1 disableWalkIK + frame 79 enableWalkIK + } + + anim wall_release models/md5/monsters/sentry/wall_release.md5anim { + ai_no_turn + frame 1 disableWalkIK + frame 129 enableWalkIK + } + + anim strafe_left models/md5/monsters/sentry/strafe_lft.md5anim + anim strafe_right models/md5/monsters/sentry/strafe_rt.md5anim +} + +entityDef monster_demon_sentry { + "inherit" "monster_default" + "scriptobject" "ai" + "nativeobject" "rvmCharSentry" + "model" "monster_demon_sentry" + "ragdoll" "char_sentry" + "size" "48 48 48" + "use_aas" "aas48" + "team" "1" + "rank" "1" + "health" "185" + "anim" "folded" + "on_activate" "unfold" + "bleed" "0" + "def_projectile" "projectile_plasmatracer" + "attack_cone" "70" + "attack_accuracy" "0" + "smoke_weapon" "cgsmoke.smoke" + "mass" "250" + "burnaway" "0.50" + "smoke_burnParticleSystem" "burn_imp.prt-hips" + "smoke_wound_metal" "bulletricochet.prt" + + "ik_numLegs" "4" + "ik_footSize" "0" + "ik_minWaistFloorDist" "20" + "ik_waist" "Hips" + "ik_hip1" "L1_upleg" + "ik_hip2" "R1_upleg" + "ik_hip3" "L2_upleg" + "ik_hip4" "R2_upleg" + "ik_knee1" "L1_midleg" + "ik_knee2" "R1_midleg" + "ik_knee3" "L2_midleg" + "ik_knee4" "R2_midleg" + "ik_ankle1" "L1_loleg" + "ik_ankle2" "R1_loleg" + "ik_ankle3" "L2_loleg" + "ik_ankle4" "R2_loleg" + "ik_dir1" "Lelbow" + "ik_dir2" "Relbow" + "ik_dir3" "Lknee" + "ik_dir4" "Rknee" + "ik_foot1" "L1toe" + "ik_foot2" "R1toe" + "ik_foot3" "L2toe" + "ik_foot4" "R2toe" + + "damage_zone head" "*Loneck" + "damage_zone chest" "*Hips -*R1_upleg -*L1_upleg -*R2_upleg -*L2_upleg -*Loneck" + "damage_zone left_arm" "*L1_upleg" + "damage_zone right_arm" "*R1_upleg" + "damage_zone legs" "*L2_upleg *R2_upleg" + "damage_scale head" "1.25" + + "snd_sight" "monster_sentry1_sight" + "snd_chatter" "monster_sentry1_chatter" + "snd_chatter_combat" "monster_sentry1_chatter" + "snd_pain" "monster_sentry1_pain" + "snd_attackmissile" "monster_sentry1_attackmissile" +} + +entityDef damage_plasmatracer { + "damage" "40" + "smoke_wound_flesh" "bloodwound.smoke" + "snd_flesh" "bullet_impact_flesh" +} + +entityDef projectile_plasmatracer { + "spawnclass" "idProjectile" + "mins" "-3 -3 -3" + "maxs" "3 3 3" + "model" "models/monsters/sentry/plasmatracer.lwo" + + "def_damage" "damage_plasmatracer" + + "health" "0" // amount of damage projectile can take if damaged (0 means it can't be destroyed) + "velocity" "700 0 0" // how fast the projectile leaves the gun (or distance if fuse is 0) + "angular_velocity" "0 0 0" // how the projectile is rotating when it leaves the gun + "thrust" "0" // the rate of acceleration (always in the direction of the projectiles model) + "thrust_start" "0" // when to start accelerating + "thrust_end" "0" // when to stop accelerating + "linear_friction" "0" // "air" friction + "angular_friction" "0" + "contact_friction" "0" + "bounce" "0" // how much speed a projectile retains when it bounces off of objects (coefficient of restitution). 0 means no bounce. + "mass" "5" + "gravity" "0" // how much gravity affects the trajectory. gravity direction is same as the entity that fired it. + "fuse" "10" // how long before the projectile is removed or self-detonates. Use 0 for beam weapons (velocity == distance). + + "detonate_on_fuse" "0" // whether projectile should detonate when it's fuse runs out + "detonate_on_death" "1" // whether projectile should detonate when it's "killed" (health runs out) + "detonate_on_world" "1" // whether projectile should detonate when it hits an obstacle + "detonate_on_actor" "1" // whether projectile should detonate when it hits a character in the game + + "impact_damage_effect" "0" // whether projectile causes blood splats from characters that bleed + "impact_gib" "1" // whether projectile can gib a character or not (for example: bullets don't gib, but rockets do) + + "mtr_detonate" "textures/decals/ballburn01" + "decal_size" "75" + + "smoke_fly" "" // particle effect while in the air + "smoke_detonate" "" // particle effect when detonates + "smoke_residue" "" // particle effect while in the air + "smoke_bounce" "" // particle effect when bounces + "smoke_fuse" "" // particle effect when removed from fuse expiring + +// "mtr_light_shader" "" +// "light_color" "0 0 0.8" +// "light_radius" "160" +// "light_offset" "-8 0 0" + +// "mtr_explode_light_shader" "muzzleflash" +// "explode_light_color" "0 0 1" +// "explode_light_radius" "160" +// "explode_light_fadetime" "0.25" + + "snd_fly" "sound/zaphod/plasmafly.wav" // sound effect while in the air + "snd_explode" "sound/zaphod/plasmaexplode.wav" +} diff --git a/base/def/monster_demon_tick.def b/base/def/monster_demon_tick.def new file mode 100644 index 00000000..a8e12b00 --- /dev/null +++ b/base/def/monster_demon_tick.def @@ -0,0 +1,421 @@ +/*********************************************************************** + + monster_demon_tick.def + +***********************************************************************/ + +export fred { + options -prefix TRITE_ -align ALL -keep Rknee1 Rknee2 Rknee3 Lknee1 Lknee2 Lknee3 -keep strand1 -parent strand1 Spine3 -sourcedir models/monsters/trite/cycles -destdir models/md5/monsters/tick + + addoptions -keepmesh tickbodymesh + addoptions -keepmesh ticklegsmesh + addoptions -keepmesh pPlane3 + addoptions -keepmesh pPlane4 + + mesh trite_mesh.mb -dest tick + anim initial.mb + anim af_pose.mb + anim idle.mb + anim alert_idle.mb + anim walk1.mb + anim pain_head.mb + anim pain_luparm1.mb + anim pain_ruparm1.mb + anim walk2.mb + anim walk3.mbf + anim spit1.mb + anim sight1.mb + anim leap1.mb -range 1 16 -dest leap1start + anim leap1.mb -range 17 22 -dest leap1loop + anim leap1.mb -range 27 40 -dest leap1end + anim melee1.mb + anim melee2.mb + anim evade_right.mb + anim evade_left.mb + anim outofhole.mb + anim crawl196.mb -dest drop196 + anim crawl256.mb -dest drop256 + anim crawl400.mb -dest drop400 + + addoptions -prefix TRITE1_ -sourcedir maps/fred/trites/ -destdir models/md5/monsters/tick + + anim trite_wakeups.mb -range 1 48 -dest downpipe + + addoptions -prefix TRITE2_ + anim trite_wakeups.mb -range 1 24 -dest hole24 + + addoptions -prefix TRITE3_ + anim trite_wakeups.mb -range 1 29 -dest hole16 + + addoptions -prefix TRITE4_ + anim trite_wakeups.mb -range 1 35 -dest doorcrack1 + + addoptions -prefix TRITE5_ + anim trite_wakeups.mb -range 1 30 -dest floorcrack + + + options -prefix TRITE_ -keep Rknee1 Rknee2 Rknee3 Lknee1 Lknee2 Lknee3 -keep strand1 -parent strand1 Spine3 + addoptions -keepmesh tickbodymesh + addoptions -keepmesh ticklegsmesh + addoptions -keepmesh pPlane3 + addoptions -keepmesh pPlane4 + + anim models/monsters/trite/cycles/getoffwall.mb -rotate 90 -dest models/md5/monsters/tick/getoffwall +} + +model monster_demon_tick { + mesh models/md5/monsters/tick/tick.md5mesh + + channel torso ( *origin ) + + anim af_pose models/md5/monsters/tick/initial.md5anim + anim ik_pose models/md5/monsters/tick/af_pose.md5anim + + anim idle models/md5/monsters/tick/alert_idle.md5anim { + frame 21 sound_body snd_footstep + frame 29 sound_body snd_footstep + frame 40 sound_voice snd_chirp + frame 42 sound_body snd_footstep + frame 60 sound_voice snd_chirp + frame 65 sound_body snd_footstep + frame 78 sound_body snd_footstep + frame 85 sound_body snd_footstep + frame 88 sound_voice snd_chirp + } + + anim evade_right models/md5/monsters/tick/evade_right.md5anim { + frame 4 sound_voice snd_evade + frame 9 sound_body snd_footstep + frame 10 sound_body snd_footstep + frame 18 sound_body snd_footstep + frame 20 sound_body snd_footstep + frame 22 sound_body snd_footstep + + } + + anim evade_left models/md5/monsters/tick/evade_left.md5anim { + frame 4 sound_voice snd_evade + frame 9 sound_body snd_footstep + frame 10 sound_body snd_footstep + frame 18 sound_body snd_footstep + frame 20 sound_body snd_footstep + frame 22 sound_body snd_footstep + + } + + anim sight1 models/md5/monsters/tick/sight1.md5anim { + frame 1 call overrideLegs + frame 10 sound_body snd_sight + + } + anim run models/md5/monsters/tick/walk1.md5anim { + frame 5 sound_body snd_footstep + frame 6 sound_body snd_footstep + frame 11 sound_body snd_footstep + frame 13 sound_body snd_footstep + frame 16 sound_body snd_footstep + frame 20 sound_body snd_footstep + frame 21 sound_body snd_footstep + frame 26 sound_body snd_footstep + frame 29 sound_body snd_footstep + frame 31 sound_body snd_footstep + frame 36 sound_body snd_footstep + frame 37 sound_body snd_footstep + frame 39 sound_body snd_footstep + frame 41 sound_body snd_footstep + } + anim walk1 models/md5/monsters/tick/walk2.md5anim { + frame 3 sound_body snd_footstep + frame 4 sound_body snd_footstep + frame 7 sound_body snd_footstep + frame 8 sound_body snd_footstep + frame 11 sound_body snd_footstep + frame 13 sound_body snd_footstep + frame 14 sound_body snd_footstep + frame 28 sound_body snd_footstep + frame 29 sound_body snd_footstep + frame 33 sound_body snd_footstep + frame 39 sound_body snd_footstep + frame 43 sound_body snd_footstep + frame 45 sound_body snd_footstep + frame 50 sound_body snd_footstep + frame 53 sound_body snd_footstep + frame 55 sound_body snd_footstep + } + anim walk2 models/md5/monsters/tick/walk3.md5anim { + frame 2 sound_voice snd_chirp + frame 3 sound_body snd_footstep + frame 4 sound_body snd_footstep + frame 7 sound_body snd_footstep + frame 11 sound_body snd_footstep + frame 14 sound_body snd_footstep + + frame 28 sound_body snd_footstep + frame 29 sound_body snd_footstep + frame 34 sound_body snd_footstep + frame 39 sound_body snd_footstep + frame 41 sound_voice snd_chirp + frame 45 sound_body snd_footstep + frame 50 sound_body snd_footstep + frame 55 sound_body snd_footstep + frame 59 sound_body snd_footstep + + frame 74 sound_body snd_footstep + frame 76 sound_body snd_footstep + frame 81 sound_voice snd_chirp + frame 84 sound_body snd_footstep + frame 85 sound_body snd_footstep + frame 86 sound_body snd_footstep + frame 93 sound_body snd_footstep + frame 94 sound_body snd_footstep + frame 96 sound_body snd_footstep + frame 99 sound_body snd_footstep + frame 100 sound_body snd_footstep + } + + anim melee_attack1 models/md5/monsters/tick/melee1.md5anim { + frame 1 call overrideLegs + frame 3 attack_begin melee_tritebite1 + frame 3 sound_body snd_footstep + frame 11 sound_body snd_footstep + frame 12 sound_body snd_footstep + frame 13 sound_body snd_footstep + frame 15 sound_body snd_footstep + frame 22 sound_body snd_footstep + frame 23 sound_body snd_footstep + frame 23 attack_end + } + anim melee_attack2 models/md5/monsters/tick/melee2.md5anim { + frame 1 call overrideLegs + frame 3 attack_begin melee_tritebite1 + frame 23 attack_end + frame 25 sound_body snd_footstep + frame 26 sound_body snd_footstep + frame 30 sound_body snd_footstep + frame 34 sound_body snd_footstep + } + + anim jump_start models/md5/monsters/tick/leap1start.md5anim { + frame 8 sound_body snd_footstep + } + anim jump_loop1 models/md5/monsters/tick/leap1loop.md5anim + anim jump_end models/md5/monsters/tick/leap1end.md5anim { + frame 1 sound_body snd_footstep + frame 2 sound_body snd_footstep + frame 3 sound_body snd_footstep + frame 14 sound_body snd_footstep + + } + + anim pain models/md5/monsters/tick/pain_head.md5anim { + frame 1 sound_voice snd_pain + + } + anim pain_head models/md5/monsters/tick/pain_head.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_left_arm models/md5/monsters/tick/pain_luparm1.md5anim { + frame 1 sound_voice snd_pain + frame 6 sound_body snd_footstep + } + anim pain_right_arm models/md5/monsters/tick/pain_ruparm1.md5anim { + frame 1 sound_voice snd_pain + frame 6 sound_body snd_footstep + } + anim "196drop" models/md5/monsters/tick/drop196.md5anim { + //ai_no_turn + frame 1 disableGravity + frame 1 disableWalkIK + frame 1 sound_voice snd_startdrop + frame 25 sound_body snd_footstep + frame 27 sound_body snd_footstep + frame 28 sound_voice snd_enddrop + frame 29 enableGravity + frame 29 sound_body snd_footstep + frame 30 sound_body snd_footstep + frame 33 sound_body snd_sight + frame 48 enableWalkIK + } + anim "256drop" models/md5/monsters/tick/drop256.md5anim { + //ai_no_turn + frame 1 disableGravity + frame 1 disableWalkIK + frame 1 sound_voice snd_startdrop + frame 25 sound_body snd_footstep + frame 27 sound_body snd_footstep + frame 28 sound_voice snd_enddrop + frame 29 enableGravity + frame 29 sound_body snd_footstep + frame 30 sound_body snd_footstep + frame 33 sound_body snd_sight + frame 48 enableWalkIK + } + anim "400drop" models/md5/monsters/tick/drop400.md5anim { + //ai_no_turn + frame 1 disableGravity + frame 1 disableWalkIK + frame 1 sound_voice snd_startdrop + frame 33 sound_body snd_footstep + frame 34 sound_body snd_footstep + frame 37 enableGravity + frame 28 sound_voice snd_enddrop + frame 35 sound_body snd_footstep + frame 36 sound_body snd_footstep + frame 38 sound_body snd_footstep + frame 45 sound_voice snd_sight + frame 48 sound_body snd_footstep + frame 55 sound_body snd_footstep + frame 58 enableWalkIK + } + anim offwall models/md5/monsters/tick/getoffwall.md5anim { + ai_no_turn + frame 1 disableWalkIK + frame 63 enableWalkIK + + } + anim outofhole models/md5/monsters/tick/outofhole.md5anim { + ai_no_turn + frame 1 disableWalkIK + frame 1 event ignoreDamage + frame 58 enableWalkIK + frame 58 event allowDamage + + } + anim downpipe models/md5/monsters/tick/downpipe.md5anim { + ai_no_turn + frame 1 disableWalkIK + frame 6 sound_voice snd_sight + frame 46 enableWalkIK + } + anim "24hole" models/md5/monsters/tick/hole24.md5anim { + ai_no_turn + frame 1 disableWalkIK + frame 1 event ignoreDamage + frame 9 sound_voice snd_sight + frame 22 enableWalkIK + frame 22 event allowDamage + } + anim "16hole" models/md5/monsters/tick/hole16.md5anim { + ai_no_turn + frame 1 disableWalkIK + frame 1 event ignoreDamage + frame 18 sound_voice snd_sight + frame 27 enableWalkIK + frame 27 event allowDamage + } + anim doorcrack1 models/md5/monsters/tick/doorcrack1.md5anim { + ai_no_turn + frame 1 disableWalkIK + frame 1 event ignoreDamage + frame 19 sound_voice snd_sight + frame 33 enableWalkIK + frame 33 event allowDamage + } + anim floorcrack models/md5/monsters/tick/floorcrack.md5anim { + ai_no_turn + frame 1 disableWalkIK + frame 1 event ignoreDamage + frame 9 sound_body snd_footstep + frame 13 sound_body snd_footstep + frame 15 sound_body snd_footstep + frame 18 sound_body snd_footstep + frame 19 sound_body snd_footstep + + frame 21 sound_voice snd_sight + frame 28 enableWalkIK + frame 28 event allowDamage + } +} + +entityDef monster_demon_tick { + "inherit" "monster_default" + "scriptobject" "ai" + "nativeobject" "rvmMonsterDemonTrite" + "model" "monster_demon_tick" + "ragdoll" "monster_demon_tick" + + "size" "48 48 40" + "use_aas" "aas48" + "team" "1" + "rank" "1" + "health" "20" + "melee_range" "40" + "chatter_min" "5" + "chatter_max" "10" + "chatter_combat_min" "3" + "chatter_combat_max" "7" + "turn_rate" "360" + "on_activate_blend" "0" + + "blockedRadius" "25" + "blockedMoveTime" "750" + "blockedAttackTime" "750" + + "model_explode" "trite_boomboom.prt" + "def_explode_damage" "damage_tick_explode" + + "burnaway" "0.50" + "smoke_burnParticleSystem" "burn_imp.prt-body2" + + "ik_numLegs" "0" + "ik_footSize" "0" + "ik_waist" "Body2" + "ik_hip1" "Luparm1" + "ik_hip2" "Ruparm1" + "ik_hip3" "Luparm2" + "ik_hip4" "Ruparm2" + "ik_hip5" "Luparm3" + "ik_hip6" "Ruparm3" + "ik_knee1" "Lloarm1" + "ik_knee2" "Rloarm1" + "ik_knee3" "Lloarm2" + "ik_knee4" "Rloarm2" + "ik_knee5" "Lloarm3" + "ik_knee6" "Rloarm3" + "ik_ankle1" "Lwrist1" + "ik_ankle2" "Rwrist1" + "ik_ankle3" "Lwrist2" + "ik_ankle4" "Rwrist2" + "ik_ankle5" "Lwrist3" + "ik_ankle6" "Rwrist3" + "ik_dir1" "Lknee1" + "ik_dir2" "Rknee1" + "ik_dir3" "Lknee2" + "ik_dir4" "Rknee2" + "ik_dir5" "Lknee3" + "ik_dir6" "Rknee3" + "ik_foot1" "Ltip1" + "ik_foot2" "Rtip1" + "ik_foot3" "Ltip2" + "ik_foot4" "Rtip2" + "ik_foot5" "Ltip3" + "ik_foot6" "Rtip3" + + "damage_zone head" "*Body2 -*Ruparm1 -*Ruparm2 -*Ruparm3 -*Luparm1 -*Luparm2 -*Luparm3" + "damage_zone left_arm" "*Luparm1" + "damage_zone right_arm" "*Ruparm1" + "damage_scale head" "1" + + "snd_chatter" "monster_demon_tick_chatter" + "snd_chatter_combat" "monster_demon_tick_chatter_combat" + "snd_chirp" "monster_demon_tick_chirp" + "snd_evade" "monster_demon_tick_evade" + "snd_footstep" "monster_demon_tick_footstep" + "snd_sight" "monster_demon_tick_sight" + "snd_melee" "monster_demon_tick_melee" + "snd_pain" "monster_demon_tick_pain" + "snd_death" "monster_demon_tick_death" + "snd_chomp" "monster_demon_tick_chomp" + "snd_burn" "monster_demon_tick_burn" +} + +entityDef damage_tick_explode { + "damage" "50" + + // adjust in script if this value is changed + "radius" "100" + + "knockback" "80" + "push" "1000" + "gib" "0" +} diff --git a/base/def/monster_demon_trite.def b/base/def/monster_demon_trite.def new file mode 100644 index 00000000..5b92a497 --- /dev/null +++ b/base/def/monster_demon_trite.def @@ -0,0 +1,533 @@ +/*********************************************************************** + + monster_demon_trite.def + +***********************************************************************/ + +export fred { + options -prefix TRITE_ -align ALL -keep Mouth Rknee1 Rknee2 Rknee3 Lknee1 Lknee2 Lknee3 -parent Mouth Head -keep strand1 -parent strand1 Spine3 -sourcedir models/monsters/trite/cycles -destdir models/md5/monsters/trite + + + addoptions -keepmesh tritemesh + addoptions -keepmesh pPlane3 + addoptions -keepmesh pPlane4 + + mesh trite_mesh.mb -dest trite + anim initial.mb + anim af_pose.mb + anim idle.mb + anim alert_idle.mb + anim walk1.mb + anim pain_head.mb + anim pain_luparm1.mb + anim pain_ruparm1.mb + anim walk2.mb + anim walk3.mb + anim spit1.mb + anim sight1.mb + anim leap1.mb -range 1 16 -dest leap1start + anim leap1.mb -range 17 22 -dest leap1loop + anim leap1.mb -range 27 40 -dest leap1end + anim melee1.mb + anim melee2.mb + anim evade_right.mb + anim evade_left.mb + anim outofhole.mb + anim crawl196.mb -dest drop196 + anim crawl256.mb -dest drop256 + anim crawl400.mb -dest drop400 + + anim guitrite.mb + + addoptions -prefix TRITE1_ -sourcedir maps/fred/trites/ -destdir models/md5/monsters/trite + + anim trite_wakeups.mb -range 1 1 -dest downpipe_idle + anim trite_wakeups.mb -range 1 48 -dest downpipe + + addoptions -prefix TRITE2_ + anim trite_wakeups.mb -range 1 24 -dest hole24 + + addoptions -prefix TRITE3_ + anim trite_wakeups.mb -range 1 29 -dest hole16 + + addoptions -prefix TRITE4_ + anim trite_wakeups.mb -range 1 35 -dest doorcrack1 + + addoptions -prefix TRITE5_ + anim trite_wakeups.mb -range 1 30 -dest floorcrack + + + options -prefix TRITE_ -keep Mouth Rknee1 Rknee2 Rknee3 Lknee1 Lknee2 Lknee3 -parent Mouth Head -keep strand1 -parent strand1 Spine3 + + addoptions -keepmesh tritemesh + addoptions -keepmesh pPlane3 + addoptions -keepmesh pPlane4 + + anim models/monsters/trite/cycles/getoffwall.mb -rotate 90 -dest models/md5/monsters/trite/getoffwall +} + +model monster_demon_trite { + mesh models/md5/monsters/trite/trite.md5mesh + + channel torso ( *origin ) + + anim af_pose models/md5/monsters/trite/initial.md5anim + anim ik_pose models/md5/monsters/trite/af_pose.md5anim + + anim idle models/md5/monsters/trite/alert_idle.md5anim { + random_cycle_start + //frame 1 enableWalkIK + //frame 3 sound_voice snd_alert + frame 16 sound_voice snd_chomp + frame 21 sound_body snd_footstep + frame 29 sound_body snd_footstep + frame 42 sound_body snd_footstep + frame 45 sound_voice snd_chomp + //frame 63 sound_voice snd_alert + frame 65 sound_body snd_footstep + frame 78 sound_body snd_footstep + frame 83 sound_voice snd_chomp + frame 85 sound_body snd_footstep + } + + anim evade_right models/md5/monsters/trite/evade_right.md5anim { + + frame 1 sound_voice snd_pain + frame 9 sound_body snd_footstep + frame 10 sound_body snd_footstep + frame 18 sound_body snd_footstep + frame 20 sound_body2 snd_footstep + frame 22 sound_body snd_footstep + + } + + anim evade_left models/md5/monsters/trite/evade_left.md5anim { + + frame 1 sound_voice snd_pain + frame 9 sound_body snd_footstep + frame 10 sound_body snd_footstep + frame 18 sound_body2 snd_footstep + frame 20 sound_body snd_footstep + frame 22 sound_body2 snd_footstep + + } + + anim sight1 models/md5/monsters/trite/sight1.md5anim { + frame 1 enableWalkIK + frame 10 sound_body snd_sight + frame 41 sound_body snd_chomp + } + anim run models/md5/monsters/trite/walk1.md5anim { + frame 1 enableWalkIK + frame 5 sound_body snd_footstep + frame 6 sound_body2 snd_footstep + frame 11 sound_body snd_footstep + frame 13 sound_body2 snd_footstep + frame 16 sound_body snd_footstep + frame 20 sound_body2 snd_footstep + frame 21 sound_body snd_footstep + frame 26 sound_body2 snd_footstep + frame 29 sound_body snd_footstep + frame 31 sound_body2 snd_footstep + frame 36 sound_body snd_footstep + frame 37 sound_body2 snd_footstep + frame 39 sound_body snd_footstep + frame 41 sound_body2 snd_footstep + } + anim walk1 models/md5/monsters/trite/walk2.md5anim { + frame 1 enableWalkIK + frame 3 sound_body snd_footstep + frame 4 sound_body2 snd_footstep + frame 7 sound_body snd_footstep + frame 8 sound_body2 snd_footstep + frame 11 sound_body snd_footstep + frame 13 sound_body2 snd_footstep + frame 14 sound_body snd_footstep + frame 28 sound_body2 snd_footstep + frame 29 sound_body snd_footstep + frame 33 sound_body2 snd_footstep + frame 39 sound_body snd_footstep + frame 43 sound_body2 snd_footstep + frame 45 sound_body snd_footstep + frame 50 sound_body2 snd_footstep + frame 53 sound_body snd_footstep + frame 55 sound_body2 snd_footstep + } + anim walk2 models/md5/monsters/trite/walk3.md5anim { + frame 1 enableWalkIK + frame 2 sound_voice snd_sight + frame 3 sound_body snd_footstep + frame 4 sound_body2 snd_footstep + frame 7 sound_body snd_footstep + frame 11 sound_body2 snd_footstep + frame 14 sound_body snd_footstep + frame 25 sound_voice snd_chomp + frame 28 sound_body2 snd_footstep + frame 29 sound_body snd_footstep + frame 34 sound_body2 snd_footstep + frame 39 sound_body snd_footstep + frame 41 sound_voice snd_sight + frame 45 sound_body2 snd_footstep + frame 50 sound_body snd_footstep + frame 55 sound_body2 snd_footstep + frame 59 sound_body snd_footstep + frame 63 sound_voice snd_chomp + frame 74 sound_body2 snd_footstep + frame 76 sound_body snd_footstep + frame 81 sound_voice snd_sight + frame 84 sound_body2 snd_footstep + frame 85 sound_body snd_footstep + frame 86 sound_body2 snd_footstep + frame 93 sound_body snd_footstep + frame 94 sound_body2 snd_footstep + frame 96 sound_body snd_footstep + frame 99 sound_body2 snd_footstep + frame 100 sound_body snd_footstep + } + + anim melee_attack1 models/md5/monsters/trite/melee1.md5anim { + frame 1 sound_voice snd_melee + frame 3 sound_body snd_footstep + frame 7 sound_body snd_footstep + frame 9 sound_body snd_footstep + frame 9 melee melee_tritebite1 + frame 9 sound_item snd_chomp + frame 11 sound_body snd_footstep + frame 12 sound_body2 snd_footstep + frame 14 sound_body snd_footstep + frame 16 sound_body2 snd_footstep + frame 22 sound_body snd_footstep + } + anim melee_attack2 models/md5/monsters/trite/melee2.md5anim { + frame 1 sound_voice snd_melee + frame 3 sound_body snd_footstep + frame 7 sound_body2 snd_footstep + frame 9 sound_body snd_footstep + frame 9 sound_item snd_chomp + frame 10 sound_body2 snd_footstep + frame 12 sound_body snd_footstep + frame 14 sound_body2 snd_footstep + frame 15 sound_body snd_footstep + frame 21 sound_item snd_chomp + frame 21 melee melee_tritebite1 + frame 22 sound_body snd_footstep + } + + anim jump_start models/md5/monsters/trite/leap1start.md5anim { + frame 8 sound_body snd_footstep + } + anim jump_loop1 models/md5/monsters/trite/leap1loop.md5anim + anim jump_end models/md5/monsters/trite/leap1end.md5anim { + frame 1 sound_body snd_footstep + frame 2 sound_body snd_footstep + } + anim pain models/md5/monsters/trite/pain_head.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_head models/md5/monsters/trite/pain_head.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_left_arm models/md5/monsters/trite/pain_luparm1.md5anim { + frame 1 sound_voice snd_pain + frame 6 sound_body snd_footstep + } + anim pain_right_arm models/md5/monsters/trite/pain_ruparm1.md5anim { + frame 1 sound_voice snd_pain + frame 6 sound_body snd_footstep + } + anim "196drop" models/md5/monsters/trite/drop196.md5anim { + //ai_no_turn + frame 1 disableGravity + frame 1 disableWalkIK + frame 1 sound_voice snd_startdrop + frame 25 sound_body snd_footstep + frame 27 sound_body2 snd_footstep + frame 28 sound_voice snd_enddrop + frame 29 enableGravity + frame 29 sound_body snd_footstep + frame 30 sound_body2 snd_footstep + frame 33 sound_body snd_sight + frame 45 sound_body2 snd_footstep + frame 47 enableWalkIK + } + anim "256drop" models/md5/monsters/trite/drop256.md5anim { + //ai_no_turn + frame 1 disableGravity + frame 1 disableWalkIK + frame 1 sound_voice snd_startdrop + frame 25 sound_body snd_footstep + frame 27 sound_body2 snd_footstep + frame 28 sound_voice snd_enddrop + frame 29 enableGravity + frame 29 sound_body snd_footstep + frame 30 sound_body2 snd_footstep + frame 33 sound_body snd_sight + frame 38 sound_body2 snd_footstep + frame 45 sound_body snd_footstep + frame 47 enableWalkIK + } + anim "400drop" models/md5/monsters/trite/drop400.md5anim { + //ai_no_turn + frame 1 disableGravity + frame 1 disableWalkIK + frame 1 sound_voice snd_startdrop + frame 33 sound_body snd_footstep + frame 34 sound_body2 snd_footstep + frame 37 enableGravity + frame 28 sound_voice snd_enddrop + frame 35 sound_body snd_footstep + frame 36 sound_body2 snd_footstep + frame 38 sound_body snd_footstep + frame 45 sound_voice snd_sight + frame 48 sound_body2 snd_footstep + frame 55 sound_body snd_footstep + frame 57 enableWalkIK + } + anim offwall models/md5/monsters/trite/getoffwall.md5anim { + ai_no_turn + frame 1 disableWalkIK + frame 5 sound_body snd_footstep + frame 6 sound_body2 snd_footstep + frame 11 sound_body snd_footstep + frame 13 sound_body2 snd_footstep + frame 16 sound_body snd_footstep + frame 20 sound_body2 snd_footstep + frame 21 sound_body snd_footstep + frame 26 sound_body2 snd_footstep + frame 29 sound_body snd_footstep + frame 31 sound_body2 snd_footstep + frame 36 sound_body snd_footstep + frame 37 sound_body2 snd_footstep + frame 39 sound_body snd_footstep + frame 41 sound_body2 snd_footstep + frame 51 sound_body snd_footstep + frame 61 sound_body2 snd_footstep + frame 62 sound_body snd_footstep + frame 62 enableWalkIK + } + anim outofhole models/md5/monsters/trite/outofhole.md5anim { + ai_no_turn + frame 1 disableWalkIK + frame 30 sound_body snd_footstep + frame 31 sound_voice snd_sight + frame 35 sound_body2 snd_footstep + frame 48 sound_body snd_footstep + frame 52 sound_body2 snd_footstep + frame 55 enableWalkIK + frame 56 sound_body snd_footstep + + + } + anim downpipe_idle models/md5/monsters/trite/downpipe_idle.md5anim { + ai_no_turn + frame 1 disableWalkIK + } + anim downpipe models/md5/monsters/trite/downpipe.md5anim { + ai_no_turn + frame 1 disableWalkIK + frame 4 sound_body snd_footstep + frame 6 sound_body2 snd_footstep + frame 6 sound_voice snd_sight + frame 8 sound_body snd_footstep + frame 21 sound_body2 snd_footstep + frame 23 sound_body snd_footstep + frame 26 sound_body2 snd_footstep + frame 31 sound_body snd_footstep + frame 34 sound_body2 snd_footstep + frame 35 sound_body snd_footstep + frame 39 sound_body2 snd_footstep + frame 42 sound_body snd_footstep + frame 48 sound_body2 snd_footstep + frame 48 enableWalkIK + } + anim "24hole" models/md5/monsters/trite/hole24.md5anim { + ai_no_turn + frame 1 disableWalkIK + frame 6 sound_body snd_footstep + frame 8 sound_body2 snd_footstep + frame 9 sound_voice snd_sight + frame 12 sound_body snd_footstep + frame 13 sound_body2 snd_footstep + frame 16 sound_body snd_footstep + frame 20 sound_body2 snd_footstep + frame 19 enableWalkIK + frame 22 sound_body snd_footstep + frame 23 sound_body2 snd_footstep + + } + anim "16hole" models/md5/monsters/trite/hole16.md5anim { + ai_no_turn + frame 1 disableWalkIK + frame 7 sound_body snd_footstep + frame 11 sound_body2 snd_footstep + frame 18 sound_voice snd_sight + frame 22 sound_body snd_footstep + frame 24 enableWalkIK + frame 29 sound_body snd_footstep + + } + anim doorcrack1 models/md5/monsters/trite/doorcrack1.md5anim { + ai_no_turn + frame 1 disableWalkIK + frame 3 sound_body snd_footstep + frame 4 sound_body2 snd_footstep + frame 11 sound_body snd_footstep + frame 19 sound_voice snd_sight + frame 22 sound_body snd_footstep + frame 29 enableWalkIK + + } + anim floorcrack models/md5/monsters/trite/floorcrack.md5anim { + ai_no_turn + frame 1 disableWalkIK + frame 6 sound_body snd_footstep + frame 8 sound_body2 snd_footstep + frame 14 sound_body snd_footstep + frame 18 sound_body2 snd_footstep + frame 21 sound_voice snd_sight + frame 28 enableWalkIK + } +} + +entityDef monster_demon_trite { + "inherit" "monster_default" + "editor_var no_explode" "Prevent trites from exploding when they can't reach the player." + "scriptobject" "ai" + "nativeobject" "rvmMonsterDemonTrite" + "model" "monster_demon_trite" + "ragdoll" "monster_demon_trite" + + "size" "48 48 40" + "use_aas" "aas48" + "team" "1" + "rank" "1" + "health" "20" + "melee_range" "48" + "chatter_min" "5" + "chatter_max" "10" + "chatter_combat_min" "3" + "chatter_combat_max" "7" + "turn_rate" "360" + + "blockedRadius" "25" + "blockedMoveTime" "750" + "blockedAttackTime" "750" + + "model_explode" "trite_boomboom.prt" + "def_explode_damage" "damage_trite_explode" + + "burnaway" ".01" + "smoke_burnParticleSystem" "trite_burst.prt-mouth" + + "ik_numLegs" "6" + "ik_footSize" "0" + "ik_minWaistFloorDist" "16" + "ik_waist" "Body2" + "ik_hip1" "Luparm1" + "ik_hip2" "Ruparm1" + "ik_hip3" "Luparm2" + "ik_hip4" "Ruparm2" + "ik_hip5" "Luparm3" + "ik_hip6" "Ruparm3" + "ik_knee1" "Lloarm1" + "ik_knee2" "Rloarm1" + "ik_knee3" "Lloarm2" + "ik_knee4" "Rloarm2" + "ik_knee5" "Lloarm3" + "ik_knee6" "Rloarm3" + "ik_ankle1" "Lwrist1" + "ik_ankle2" "Rwrist1" + "ik_ankle3" "Lwrist2" + "ik_ankle4" "Rwrist2" + "ik_ankle5" "Lwrist3" + "ik_ankle6" "Rwrist3" + "ik_dir1" "Lknee1" + "ik_dir2" "Rknee1" + "ik_dir3" "Lknee2" + "ik_dir4" "Rknee2" + "ik_dir5" "Lknee3" + "ik_dir6" "Rknee3" + "ik_foot1" "Ltip1" + "ik_foot2" "Rtip1" + "ik_foot3" "Ltip2" + "ik_foot4" "Rtip2" + "ik_foot5" "Ltip3" + "ik_foot6" "Rtip3" + + "damage_zone head" "*Body2 -*Ruparm1 -*Ruparm2 -*Ruparm3 -*Luparm1 -*Luparm2 -*Luparm3" + //"damage_zone chest" "*waist -*Rshldr -*Lshldr -*loneck" + "damage_zone left_arm" "*Luparm1" + "damage_zone right_arm" "*Ruparm1" + //"damage_zone legs" "*Hips origin Body Body2" + "damage_scale head" "1" + + "snd_explode" "rocket_impact" + "snd_chatter" "monster_demon_trite_chatter" + "snd_chatter_combat" "monster_demon_trite_chatter_combat" + "snd_footstep" "monster_demon_trite_footstep" + "snd_sight" "monster_demon_trite_sight" + "snd_melee" "monster_demon_trite_melee" + "snd_pain" "monster_demon_trite_pain" + "snd_death" "monster_demon_trite_death" + "snd_chomp" "monster_demon_trite_chomp" + "snd_startdrop" "monster_demon_trite_startdrop" + "snd_enddrop" "monster_demon_trite_enddrop" + "snd_burn" "trite_deathsplat" +} + +entityDef melee_triteLeapAttack { + // melee specific parameters + "snd_hit" "monster_demon_imp_melee_hit" + "kickDir" "1 0 0" + + // damage parameters + "damage" "12" + + "mtr_blob" "bite" + "blob_time" "300" + "blob_x" "100" + "blob_y" "50" + "blob_width" "500" + "blob_height" "500" + + "knockback" "80" + + "kick_time" "500" + "kick_amplitude" "2" + + "dv_time" "350" +} + +entityDef melee_tritebite1 { + // melee specific parameters + "snd_hit" "monster_demon_imp_melee_hit" + "kickDir" "1 0 0" + + // damage parameters + "damage" "8" + + "mtr_blob" "bite" + "blob_time" "300" + "blob_x" "100" + "blob_y" "50" + "blob_width" "500" + "blob_height" "500" + + "knockback" "40" + + "kick_time" "500" + "kick_amplitude" "2" + + "dv_time" "200" +} + +entityDef damage_trite_explode { + "damage" "50" + + // adjust in script if this value is changed + "radius" "100" + + "knockback" "80" + "push" "1000" + "gib" "0" +} \ No newline at end of file diff --git a/base/def/monster_demon_vulgar.def b/base/def/monster_demon_vulgar.def new file mode 100644 index 00000000..4bea0e13 --- /dev/null +++ b/base/def/monster_demon_vulgar.def @@ -0,0 +1,305 @@ +/*********************************************************************** + + monster_demon_vulgar.def + +***********************************************************************/ + +export James { + options -prefix VUL_ -keep Lknee Rknee -keep r_fireball l_fireball ROT -align movement -parent r_fireball Rwrist -parent l_fireball Lwrist -parent spine_1 ROT -parent ROT root -sourcedir models/monsters/vulgar/cycles -destdir models/md5/monsters/vulgar + + mesh vulgar_mesh.mb -dest vulgar + anim idle2.mb + anim walk.mb + anim run.mb + anim attack1.mb + anim attack2.mb + anim attack3.mb + anim idle1.mb + anim af_pose.mb -range 1 1 + anim pain_chest.mb + anim pain_head.mb + anim pain_luparm.mb + anim pain_ruparm.mb + anim teleport.mb + anim evade_left.mb + anim evade_right.mb + anim sight.mb + anim range_attack1.mb + anim range_attack2.mb + anim run_evade_right.mb + anim run_evade_left.mb + anim run_pain_left.mb + anim run_pain_right.mb + anim run_pain_chest.mb + anim run_pain_head.mb + anim leap_attack.mb -range 25 33 -dest jump_start + anim leap_attack.mb -range 34 55 -dest jump_loop + anim attack1.mb -range 8 14 -dest jump_end +} + +model monster_demon_vulgar { + mesh models/md5/monsters/vulgar/vulgar.md5mesh + + channel torso ( *spine_1 ) + channel legs ( *origin ) + anim idle1 models/md5/monsters/vulgar/idle1.md5anim + anim idle2 models/md5/monsters/vulgar/idle2.md5anim + anim walk models/md5/monsters/vulgar/walk.md5anim + + anim run models/md5/monsters/vulgar/run.md5anim + anim run_evade_left models/md5/monsters/vulgar/run_evade_left.md5anim + anim run_evade_right models/md5/monsters/vulgar/run_evade_right.md5anim + anim run_pain_left models/md5/monsters/vulgar/run_pain_left.md5anim + anim run_pain_right models/md5/monsters/vulgar/run_pain_right.md5anim + anim run_pain_chest models/md5/monsters/vulgar/run_pain_chest.md5anim + anim run_pain_head models/md5/monsters/vulgar/run_pain_head.md5anim + + anim melee_attack1 models/md5/monsters/vulgar/attack1.md5anim { + frame 1 call overrideLegs + frame 9 melee melee_vulgarRightClaw + frame 25 melee melee_vulgarLeftClaw + } + anim melee_attack2 models/md5/monsters/vulgar/attack2.md5anim { + frame 1 call overrideLegs + frame 10 melee melee_vulgarRightClaw + } + anim melee_attack3 models/md5/monsters/vulgar/attack3.md5anim { + frame 1 call overrideLegs + frame 10 melee melee_vulgarLeftClaw + } + anim pain models/md5/monsters/vulgar/pain_chest.md5anim + anim pain_chest models/md5/monsters/vulgar/pain_chest.md5anim + anim pain_head models/md5/monsters/vulgar/pain_head.md5anim + anim pain_left_arm models/md5/monsters/vulgar/pain_luparm.md5anim + anim pain_right_arm models/md5/monsters/vulgar/pain_ruparm.md5anim + anim af_pose models/md5/monsters/vulgar/af_pose.md5anim + anim teleport models/md5/monsters/vulgar/teleport.md5anim { + frame 15 sound_voice snd_sight + } + anim evade_left models/md5/monsters/vulgar/evade_left.md5anim + anim evade_right models/md5/monsters/vulgar/evade_right.md5anim + + anim sight models/md5/monsters/vulgar/sight.md5anim + anim range_attack1 models/md5/monsters/vulgar/range_attack1.md5anim { + frame 1 call overrideLegs + frame 2 create_missile r_fireball + frame 11 launch_missile r_fireball + } + anim range_attack2 models/md5/monsters/vulgar/range_attack2.md5anim { + frame 1 call overrideLegs + frame 2 create_missile l_fireball + frame 12 launch_missile l_fireball + } + anim jump_start models/md5/monsters/vulgar/jump_start.md5anim + anim jump_loop models/md5/monsters/vulgar/jump_loop.md5anim + + anim jump_end models/md5/monsters/vulgar/jump_end.md5anim { + frame 1 call overrideLegs + frame 2 melee melee_vulgarRightClaw + } +} + +entityDef monster_demon_vulgar { + "inherit" "monster_default" + "scriptobject" "ai" + "nativeobject" "rvmMonsterDemonVulgar" + "model" "monster_demon_vulgar" + "ragdoll" "monster_demon_vulgar" + "size" "48 48 68" + "use_aas" "aas48" + "team" "1" + "rank" "1" + "health" "400" + "def_projectile" "projectile_vulgar_fireball" + "attack_cone" "70" + "attack_accuracy" "0" + "melee_range" "84" + "bone_focus" "head_FK" + + "burnaway" "0.50" + "smoke_burnParticleSystem" "burn_imp.prt-root" + + "look_min" "-90 -125 0" + "look_max" "25 125 0" + "look_joint spine_1" "0.4 0.4 0" + "look_joint head_FK" "0.6 0.6 0" + + "damage_zone head" "*spine_6" + "damage_zone chest" "*spine_1 -*Rshldr -*Lshldr -*spine_6" + "damage_zone left_arm" "*Lshldr" + "damage_zone right_arm" "*Rshldr" + "damage_zone legs" "*Hips origin root" + "damage_scale head" "2" + "mass" "250" + + "ik_numLegs" "2" + "ik_footSize" "4" + "ik_waist" "root" + "ik_hip1" "Lupleg" + "ik_hip2" "Rupleg" + "ik_knee1" "Lloleg" + "ik_knee2" "Rloleg" + "ik_ankle1" "Lankle" + "ik_ankle2" "Rankle" + "ik_dir1" "Lknee" + "ik_dir2" "Rknee" + "ik_foot1" "Lball" + "ik_foot2" "Rtoe" +} + +entityDef damage_vulgar_fireball { + "damage" "12" + "kickDir" "1 0 0" + + "mtr_blob" "genericDamage" + "blob_time" "300" + "blob_size" "400" + "blob_offset_x" "400" + + "knockback" "10" + + "kick_time" "400" + "kick_amplitude" "1" + + "dv_time" "100" + "smoke_wound_flesh" "bloodwound.smoke" +} + +entityDef damage_vulgar_fireball_splash { + "damage" "5" + "radius" "50" +} + +entityDef projectile_vulgar_fireball { + "spawnclass" "idProjectile" + "mins" "-4 -4 -4" + "maxs" "4 4 4" + "cone" "3" + "model" "models/weapons/impfireball/impfireball2.lwo" + + "def_damage" "damage_vulgar_fireball" + "def_splash_damage" "damage_vulgar_fireball_splash" + + "launchFromBarrel" "1" + "health" "5" // amount of damage projectile can take if damaged (0 means it can't be destroyed) + "velocity" "475 0 -150" // how fast the projectile leaves the gun (or distance if fuse is 0) + "angular_velocity" "0 0 0" // how the projectile is rotating when it leaves the gun + "thrust" "0" // the rate of acceleration (always in the direction of the projectiles model) + "thrust_start" "0" // when to start accelerating + "thrust_end" "0" // when to stop accelerating + "linear_friction" "0" // "air" friction + "angular_friction" "0" + "contact_friction" "0" + "bounce" "0" // how much speed a projectile retains when it bounces off of objects (coefficient of restitution). 0 means no bounce. + "mass" "5" + "gravity" "250" // how much gravity affects the trajectory. gravity direction is same as the entity that fired it. + "fuse" "20" // how long before the projectile is removed or self-detonates. Use 0 for beam weapons (velocity == distance). + + "detonate_on_fuse" "0" // whether projectile should detonate when it's fuse runs out + "detonate_on_death" "1" // whether projectile should detonate when it's "killed" (health runs out) + "detonate_on_world" "1" // whether projectile should detonate when it hits an obstacle + "detonate_on_actor" "1" // whether projectile should detonate when it hits a character in the game + + "impact_damage_effect" "0" // whether projectile causes blood splats from characters that bleed + "impact_gib" "1" // whether projectile can gib a character or not (for example: bullets don't gib, but rockets do) + + "mtr_detonate" "textures/decals/ballburn01" + "decal_size" "75" + + "smoke_fly" "impsparks.smoke" // particle effect while in the air + "smoke_detonate" "" // particle effect when detonates + "smoke_residue" "" // particle effect while in the air + "smoke_bounce" "" // particle effect when bounces + "smoke_fuse" "" // particle effect when removed from fuse expiring + + // parametric particles -- temp + "model_detonate" "bigExplosion.ips" + + "debris_count" "3" + "def_debris" "debris_largeshrapnel" + "def_shrapnel" "debris_shrapnel" + + "mtr_light_shader" "lights/impflyflash" + "light_color" "0.9 0.7 0.05" + "light_radius" "160" + "light_offset" "0 0 0" + + + "mtr_explode_light_shader" "lights/impflash" + "explode_light_color" "3.6 3.0 0.5" + "explode_light_radius" "320" + "explode_light_fadetime" "1" + + "snd_explode" "monster_demon_imp_fireball_explode" + "snd_fly" "monster_demon_imp_fireball_flight" // particle effect while in the air +} + +entityDef melee_vulgarLeapAttack { + // melee specific parameters + "snd_hit" "monster_demon_imp_melee_hit" + "kickDir" "1 0 0" + + // damage parameters + "damage" "20" + + "mtr_blob" "leftSlash" + "blob_time" "300" + "blob_x" "140" + "blob_y" "-100" + "blob_width" "600" + "blob_height" "600" + + "knockback" "100" + + "kick_time" "800" + "kick_amplitude" "2" + + "dv_time" "400" +} + +entityDef melee_vulgarLeftClaw { + // melee specific parameters + "snd_hit" "monster_demon_imp_melee_hit" + "snd_miss" "monster_demon_imp_melee_miss" + "kickDir" "0 -1 0" + + + // damage parameters + "damage" "12" + + "mtr_blob" "leftSlash" + "blob_time" "300" + "blob_x" "140" + "blob_y" "-100" + "blob_width" "600" + "blob_height" "600" + + "knockback" "40" + + "kick_time" "400" + "kick_amplitude" "2" + + "dv_time" "100" +} + +entityDef melee_vulgarRightClaw { + "snd_hit" "monster_demon_imp_melee_hit" + "snd_miss" "monster_demon_imp_melee_miss" + "kickDir" "0 1 0" + + "damage" "12" + + "mtr_blob" "rightSlash" + "blob_time" "300" + "blob_x" "-100" + "blob_y" "-100" + "blob_width" "600" + "blob_height" "600" + + "knockback" "30" + + "kick_time" "400" + "kick_amplitude" "2" + + "dv_time" "100" +} diff --git a/base/def/monster_demon_wraith.def b/base/def/monster_demon_wraith.def new file mode 100644 index 00000000..9112edcd --- /dev/null +++ b/base/def/monster_demon_wraith.def @@ -0,0 +1,265 @@ +/*********************************************************************** + + monster_demon_wraith.def + +***********************************************************************/ + +export James { + options -prefix W_ -keep Lknee Rknee -keep fireball ROT -parent fireball head_FK -parent spine_1 ROT -parent ROT root + + addoptions -sourcedir models/monsters/wraith/cycles + addoptions -destdir models/md5/monsters/wraith + + anim ceiling_idle_128.mb -rotate 90 + anim ceiling_idle_192.mb -rotate 90 + anim ceiling_idle_256.mb -rotate 90 + + anim ceiling_idle_128_attack.mb -rotate 90 -dest ceiling_attack_128 + anim ceiling_idle_192_attack.mb -rotate 90 -dest ceiling_attack_192 + anim ceiling_idle_256_attack.mb -rotate 90 -dest ceiling_attack_256 + + addoptions -align movement + + mesh wraith_mesh.mb -dest wraith + anim idle.mb + anim walk.mb + anim run.mb + anim sight.mb + anim pain_chest.mb + anim pain_head.mb + anim pain_luparm.mb + anim pain_ruparm.mb + anim teleport.mb + anim attack1.mb + anim attack2.mb + anim attack3.mb + anim evade_left.mb + anim evade_right.mb + anim leap_attack.mb -range 12 13 -dest jump_start + anim leap_attack.mb -range 14 27 -dest jump_loop + anim leap_attack.mb -range 27 50 -dest jump_end + anim af_pose.mb -range 1 1 + +} + +model monster_demon_wraith { + mesh models/md5/monsters/wraith/wraith.md5mesh + channel torso ( *spine_1 ) + channel legs ( *Hips origin root ROT ) + + anim idle models/md5/monsters/wraith/idle.md5anim + anim walk models/md5/monsters/wraith/walk.md5anim { + frame 7 sound_body snd_footstep + frame 15 sound_body snd_footstep + frame 24 sound_body snd_footstep + frame 31 sound_body snd_footstep + } + anim run models/md5/monsters/wraith/run.md5anim { + frame 3 sound_body snd_footstep + frame 8 sound_body snd_footstep + frame 12 sound_body snd_footstep + frame 14 sound_body snd_footstep + } + anim sight models/md5/monsters/wraith/sight.md5anim { + frame 5 sound_voice snd_sight + } + anim pain models/md5/monsters/wraith/pain_chest.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_chest models/md5/monsters/wraith/pain_chest.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_head models/md5/monsters/wraith/pain_head.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_left_arm models/md5/monsters/wraith/pain_luparm.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_right_arm models/md5/monsters/wraith/pain_ruparm.md5anim { + frame 1 sound_voice snd_pain + } + anim teleport models/md5/monsters/wraith/teleport.md5anim { + frame 5 sound_voice snd_thud + frame 15 sound_voice snd_sight2 + } + anim melee_attack1 models/md5/monsters/wraith/attack1.md5anim { + frame 1 sound_voice monster_demon_wraith_attackmelee_1 + //frame 11 sound_voice snd_attackmelee_1 + frame 12 melee melee_wraithRightClaw + } + anim melee_attack2 models/md5/monsters/wraith/attack2.md5anim { + frame 1 sound_voice monster_demon_wraith_attackmelee_2 + //frame 11 sound_voice snd_attackmelee_2 + frame 12 melee melee_wraithLeftClaw + } + anim melee_attack3 models/md5/monsters/wraith/attack3.md5anim { + frame 1 sound_voice monster_demon_wraith_attackmelee_3 + //frame 13 sound_voice snd_attackmelee_1 + frame 13 melee melee_wraithCenterAttack + } + anim evade_left models/md5/monsters/wraith/evade_left.md5anim { + frame 1 sound_body monster_demon_wraith_evade_left +// frame 7 sound_body monster_demon_imp_footstep +// frame 8 sound_body monster_demon_imp_footstep +// frame 10 sound_body monster_demon_imp_footstep + } + anim evade_right models/md5/monsters/wraith/evade_right.md5anim { + frame 1 sound_body monster_demon_wraith_evade_right +// frame 8 sound_body monster_demon_imp_footstep +// frame 9 sound_body monster_demon_imp_footstep +// frame 11 sound_body monster_demon_imp_footstep + } + anim af_pose models/md5/monsters/wraith/af_pose.md5anim + +// no longer jumps +// anim jump_start models/md5/monsters/wraith/jump_start.md5anim +// anim jump_loop models/md5/monsters/wraith/jump_loop.md5anim +// anim jump_end models/md5/monsters/wraith/jump_end.md5anim { +// frame 6 sound_body snd_thud +// } + + anim ceiling_idle1 models/md5/monsters/wraith/ceiling_idle_128.md5anim + anim ceiling_idle2 models/md5/monsters/wraith/ceiling_idle_192.md5anim + anim ceiling_idle3 models/md5/monsters/wraith/ceiling_idle_256.md5anim + + anim ceiling_attack1 models/md5/monsters/wraith/ceiling_attack_128.md5anim { + frame 1 sound_voice monster_demon_wraith_ceiling_attack1 +// frame 4 sound_voice snd_thud +// frame 8 sound_voice snd_attackmelee_1 + } + anim ceiling_attack2 models/md5/monsters/wraith/ceiling_attack_192.md5anim { + frame 1 sound_voice monster_demon_wraith_ceiling_attack2 +// frame 8 sound_voice snd_thud +// frame 11 sound_voice snd_attackmelee_2 + } + anim ceiling_attack3 models/md5/monsters/wraith/ceiling_attack_256.md5anim { + frame 1 sound_voice monster_demon_wraith_ceiling_attack3 +// frame 7 sound_voice snd_thud +// frame 12 sound_voice snd_attackmelee_1 + } +} + +entityDef monster_demon_wraith { + "inherit" "monster_default" + "scriptobject" "ai" + "nativeobject" "rvmMonsterDemonWraith" + "model" "monster_demon_wraith" + "ragdoll" "monster_demon_wraith" + "size" "48 48 68" + "use_aas" "aas48" + "team" "1" + "rank" "1" + "health" "130" + "attack_cone" "70" + "attack_accuracy" "0" + "melee_range" "48" + "bone_focus" "head_FK" + + "look_min" "-90 -125 0" + "look_max" "25 125 0" + "look_joint spine_1" "0.4 0.4 0" + "look_joint head_FK" "0.6 0.6 0" + + "damage_zone head" "*spine_7" + "damage_zone chest" "*spine_1 -*Rshldr -*Lshldr -*spine_7" + "damage_zone left_arm" "*Lshldr" + "damage_zone right_arm" "*Rshldr" + "damage_scale head" "2" + "mass" "250" + + "burnaway" "0.50" + "smoke_burnParticleSystem" "burn_imp.prt-root" + + "def_spawneffect_precache" "wraith_spawneffect" + + "snd_footstep" "monster_demon_wraith_footstep" + "snd_sight" "monster_demon_wraith_sight" + "snd_sight2" "monster_demon_wraith_sight2" + "snd_chatter" "monster_demon_wraith_chatter" + "snd_chatter_combat" "monster_demon_wraith_chatter_combat" + "snd_pain" "monster_demon_wraith_pain" + "snd_attackmelee_1" "monster_demon_wraith_attackmelee_1" + "snd_attackmelee_2" "monster_demon_wraith_attackmelee_2" + "snd_death" "monster_demon_wraith_die" + "snd_thud" "monster_demon_imp_thud" + "snd_fade_in" "monster_demon_wraith_fade_in" + "snd_fade_out" "monster_demon_wraith_fade_out" + "snd_burn" "monster_demon_tick_burn" +} + +entityDef wraith_spawneffect { + "spawnclass" "idSpawnableEntity" + "model" "wraithfade.prt" + + // make sure it gets removed in cinematics + "cinematic_remove" "1" +} + + +entityDef melee_wraithLeftClaw { + // melee specific parameters + "snd_hit" "monster_demon_imp_melee_hit" + "snd_miss" "monster_demon_imp_melee_miss" + "kickDir" "0 -1 0" + + // damage parameters + "damage" "8" + + "mtr_blob" "leftSlash" + "blob_time" "300" + "blob_x" "140" + "blob_y" "-100" + "blob_width" "600" + "blob_height" "600" + + "knockback" "40" + + "kick_time" "400" + "kick_amplitude" "2" + + "dv_time" "100" +} + +entityDef melee_wraithRightClaw { + "snd_hit" "monster_demon_imp_melee_hit" + "snd_miss" "monster_demon_imp_melee_miss" + "kickDir" "0 1 0" + + "damage" "8" + + "mtr_blob" "leftSlash" + "blob_time" "300" + "blob_x" "-100" + "blob_y" "-100" + "blob_width" "600" + "blob_height" "600" + + "knockback" "30" + + "kick_time" "400" + "kick_amplitude" "2" + + "dv_time" "100" +} + +entityDef melee_wraithCenterAttack { + "snd_hit" "monster_demon_imp_melee_hit" + "snd_miss" "monster_demon_imp_melee_miss" + "kickDir" "1 0 0" + + "damage" "8" + + "mtr_blob" "leftSlash" + "blob_time" "300" + "blob_x" "-100" + "blob_y" "-100" + "blob_width" "600" + "blob_height" "600" + + "knockback" "30" + + "kick_time" "400" + "kick_amplitude" "2" + + "dv_time" "100" +} diff --git a/base/def/monster_flying_cacodemon.def b/base/def/monster_flying_cacodemon.def new file mode 100644 index 00000000..11506e89 --- /dev/null +++ b/base/def/monster_flying_cacodemon.def @@ -0,0 +1,238 @@ +/*********************************************************************** + + monster_flying_cacodemon.def + +***********************************************************************/ + +export fred { + options -prefix CACO_ -align ALL -keep caco_launch caco_mouthfire caco_mouthfire2 caco_mouthfire2a -parent caco_launch Head -sourcedir models/monsters/cacodemon/cycles -destdir models/md5/monsters/cacodemon + + mesh cacodemon_mesh.mb -dest cacodemon + anim idle.mb + anim initial.mb + anim walk.mb + anim run.mb + anim sight.mb + anim attack1.mb + anim range_attack1.mb + anim left_pain.mb + anim right_pain.mb + anim tail_pain.mb + anim head_pain.mb + anim death1.mb +} + +model monster_flying_cacodemon { + mesh models/md5/monsters/cacodemon/cacodemon.md5mesh + offset ( 0 0 56 ) + channel torso ( *origin ) + + anim af_pose models/md5/monsters/cacodemon/initial.md5anim + + anim idle models/md5/monsters/cacodemon/idle.md5anim + anim initial models/md5/monsters/cacodemon/initial.md5anim + anim sight1 models/md5/monsters/cacodemon/sight.md5anim { + frame 3 sound_voice monster_demon_cacodemon_sight + } + anim fly models/md5/monsters/cacodemon/walk.md5anim { + //frame 1 sound_body snd_walk + } + anim walk models/md5/monsters/cacodemon/walk.md5anim { + //frame 1 sound_body snd_walk + } + anim run models/md5/monsters/cacodemon/run.md5anim { + //frame 1 sound_body snd_walk + } + anim melee_attack1 models/md5/monsters/cacodemon/attack1.md5anim { + frame 1 sound_weapon monster_demon_cacodemon_melee + frame 14 melee melee_cacodemon + } + anim range_attack1 models/md5/monsters/cacodemon/range_attack1.md5anim { + frame 13 create_missile caco_launch + frame 13 sound_weapon monster_demon_cacodemon_attackmissile + frame 15 launch_missile caco_launch + } + + anim pain_head models/md5/monsters/cacodemon/head_pain.md5anim { + frame 1 sound_voice monster_demon_cacodemon_pain + } + anim pain_left_arm models/md5/monsters/cacodemon/left_pain.md5anim { + frame 1 sound_voice monster_demon_cacodemon_pain + } + anim pain_right_arm models/md5/monsters/cacodemon/right_pain.md5anim { + frame 1 sound_voice monster_demon_cacodemon_pain + } + anim pain_legs models/md5/monsters/cacodemon/tail_pain.md5anim { + frame 1 sound_voice monster_demon_cacodemon_pain + } + anim pain models/md5/monsters/cacodemon/tail_pain.md5anim { + frame 1 sound_voice monster_demon_cacodemon_pain + } +} + +entityDef monster_flying_cacodemon { + "inherit" "monster_default" + "scriptobject" "ai" + "nativeobject" "rvmMonsterFlyingCacodemon" + "model" "monster_flying_cacodemon" + "ragdoll" "monster_demon_cacodemon" + "size" "48 48 80" + + "use_aas" "aas48" + "team" "1" + "rank" "2" + "health" "200" + "melee_range" "48" + "def_projectile" "projectile_cacodemon_fireball" + "attack_cone" "50" + "attack_accuracy" "0" + "turn_rate" "150" + "fly_offset" "-56" + "fly_speed" "175" + "fly_seek_scale" "4" + "fly_roll_max" "60" + "fly_roll_scale" "100" + "fly_pitch_scale" "45" + "fly_pitch_max" "15" + "mass" "200" + + "bone_flytilt" "Body2" + + //"smokeParticleSystem" "barrel-caco_launch" //this was going to be the particle spawned out the sides of his mouth when he shoots, but no. + "smokeParticleSystem2" "caco_mouthfire" + "smokeParticleSystem3" "caco_mouthfire2" + "smokeParticleSystem4" "caco_mouthfire2a" + + "useBoneAxis" "1" + + "burnaway" "0.25" + "smoke_burnParticleSystem" "burn_imp.prt-Head" + + "damage_zone head" "*Head -*LeftSide -*RightSide" + //"damage_zone chest" "*Waist -*Rshldr -*Lshldr -*Neck" + "damage_zone left_arm" "*LeftSide" + "damage_zone right_arm" "*RightSide" + "damage_zone legs" "*Tail1" + + "snd_ambient" "monster_demon_cacodemon_walk" + "snd_sight" "monster_demon_cacodemon_sight" + "snd_sight2" "monster_demon_cacodemon_sight2" + "snd_chatter" "monster_demon_cacodemon_chatter" + "snd_chatter_combat" "monster_demon_cacodemon_chatter" + "snd_melee" "monster_demon_cacodemon_melee" + "snd_pain" "monster_demon_cacodemon_pain" + "snd_attackmissile" "monster_demon_cacodemon_attackmissile" + "snd_death" "monster_demon_cacodemon_die" + "snd_burn" "monster_demon_cacodemon_burn" + + "fx_teleport" "fx/teleporter_fly.fx" + "fx_teleport1" "fx/teleporter1_fly.fx" + "fx_teleport2" "fx/teleporter2_fly.fx" + "fx_teleport3" "fx/teleporter3_fly.fx" +} + +entityDef damage_cacodemon_fireball { + "damage" "12" + "kickDir" "1 0 0" + + "mtr_blob" "genericDamage" + "blob_time" "300" + "blob_size" "400" + "blob_offset_x" "400" + + "knockback" "10" + + "kick_time" "400" + "kick_amplitude" "1" + + "dv_time" "100" + "smoke_wound_flesh" "bloodwound.smoke" +} + +entityDef damage_cacodemon_fireball_splash { + "damage" "5" + "radius" "48" +} + +entityDef projectile_cacodemon_fireball { + "spawnclass" "idProjectile" + "mins" "-6 -6 -6" + "maxs" "6 6 6" + "model" "caco_lightningball.prt" + + "def_damage" "damage_cacodemon_fireball" + "def_splash_damage" "damage_cacodemon_fireball_splash" + + "launchFromBarrel" "1" + "health" "5" // amount of damage projectile can take if damaged (0 means it can't be destroyed) + "velocity" "325 0 -350" // how fast the projectile leaves the gun (or distance if fuse is 0) + "angular_velocity" "0 0 0" // how the projectile is rotating when it leaves the gun + "thrust" "0" // the rate of acceleration (always in the direction of the projectiles model) + "thrust_start" "0" // when to start accelerating + "thrust_end" "0" // when to stop accelerating + "linear_friction" "0" // "air" friction + "angular_friction" "0" + "contact_friction" "0" + "bounce" "0" // how much speed a projectile retains when it bounces off of objects (coefficient of restitution). 0 means no bounce. + "mass" "500" + "gravity" "0" // how much gravity affects the trajectory. gravity direction is same as the entity that fired it. + "fuse" "20" // how long before the projectile is removed or self-detonates. Use 0 for beam weapons (velocity == distance). + + "detonate_on_fuse" "0" // whether projectile should detonate when it's fuse runs out + "detonate_on_death" "1" // whether projectile should detonate when it's "killed" (health runs out) + "detonate_on_world" "1" // whether projectile should detonate when it hits an obstacle + "detonate_on_actor" "1" // whether projectile should detonate when it hits a character in the game + + "impact_damage_effect" "0" // whether projectile causes blood splats from characters that bleed + "impact_gib" "1" // whether projectile can gib a character or not (for example: bullets don't gib, but rockets do) + + "mtr_detonate" "textures/decals/ballburn01" + "decal_size" "75" + + //"smoke_fly" "caco_lightningball.prt" // particle effect while in the air + "smoke_detonate" "" // particle effect when detonates + "smoke_residue" "" // particle effect while in the air + "smoke_bounce" "" // particle effect when bounces + "smoke_fuse" "" // particle effect when removed from fuse expiring + + "model_detonate" "caco_lightninghit.prt" + + "debris_count" "3" + "def_debris" "debris_largeshrapnel" + "def_shrapnel" "debris_shrapnel" + + "mtr_light_shader" "lights/impflyflash" + "light_color" "0.9 0.7 0.05" + "light_radius" "160" + "light_offset" "0 0 0" + + + "mtr_explode_light_shader" "lights/impflash" + "explode_light_color" "3.6 3.0 0.5" + "explode_light_radius" "320" + "explode_light_fadetime" "1" + + "snd_explode" "caco_projectile_impact" + "snd_fly" "caco_projectile" // particle effect while in the air +} + +entityDef melee_cacodemon { + "damage" "20" + "kickDir" "1 0 0" + //"snd_hit" "monster_flying_cacodemon_hit" + //"snd_miss" "monster_flying_cacodemon_miss" + "snd_hit" "monster_demon_pinky_melee_hit" + "snd_miss" "monster_demon_pinky_melee_miss" + + "mtr_blob" "bite" + "blob_time" "300" + "blob_x" "0" + "blob_y" "-90" + "blob_width" "650" + "blob_height" "650" + + "knockback" "100" + "kick_time" "400" + "kick_amplitude" "1" + "dv_time" "100" +} diff --git a/base/def/monster_flying_lostsoul.def b/base/def/monster_flying_lostsoul.def new file mode 100644 index 00000000..116e9670 --- /dev/null +++ b/base/def/monster_flying_lostsoul.def @@ -0,0 +1,139 @@ +/*********************************************************************** + + monster_flying_lostsoul.def + +***********************************************************************/ + +export fred { + options -prefix LOST_ -keep lost_flame1 -parent lost_flame1 Head -sourcedir models/monsters/lost/animation/cycles -destdir models/md5/monsters/lostsoul + + mesh idle1.mb -dest lostsoul + + anim initial.mb + anim idle1.mb + anim walk1.mb + anim run1.mb + anim sight.mb + anim attack1.mb + anim attack2.mb + anim pain1.mb + anim pain2.mb + anim death1.mb + anim charge.mb + +} + +model monster_flying_lostsoul { + mesh models/md5/monsters/lostsoul/lostsoul.md5mesh + channel torso ( *origin ) + + anim af_pose models/md5/monsters/lostsoul/initial.md5anim + + anim initial models/md5/monsters/lostsoul/initial.md5anim + anim idle models/md5/monsters/lostsoul/walk1.md5anim //models/md5/monsters/lostsoul/idle1.md5anim + anim fly models/md5/monsters/lostsoul/walk1.md5anim //models/md5/monsters/lostsoul/run1.md5anim + anim sight models/md5/monsters/lostsoul/sight.md5anim { + frame 23 sound_voice snd_sight + } + anim melee_attack1 models/md5/monsters/lostsoul/attack1.md5anim { + frame 9 melee melee_lostsoul + } + anim melee_attack2 models/md5/monsters/lostsoul/attack2.md5anim { + frame 19 melee melee_lostsoul + } + anim pain1 models/md5/monsters/lostsoul/pain1.md5anim { + frame 1 sound_voice snd_pain + } + anim pain2 models/md5/monsters/lostsoul/pain2.md5anim { + frame 1 sound_voice snd_pain + } + anim charge models/md5/monsters/lostsoul/charge.md5anim +} + +entityDef monster_flying_lostsoul { + "inherit" "monster_default" + "scriptobject" "ai" + "nativeobject" "rvmMonsterFlyingLostsoul" + "model" "monster_flying_lostsoul" + "model_death" "lostsoul_pop.prt" + //"ragdoll" "monster_demon_lost" + "size" "24 24 24" + "use_aas" "aas48" + "team" "1" + "rank" "0" + "health" "20" + "melee_range" "20" + "fly_offset" "-20" + "turn_rate" "360" + "fly_speed" "140" + "offsetModel" "0 0 16" + "fly_seek_scale" "4" + "fly_roll_max" "45" + "fly_roll_scale" "90" + "fly_pitch_scale" "45" + "fly_pitch_max" "30" + + "bone_flytilt" "Head" + + "damage_zone head" "*Head" + + "smokeparticleSystem" "lost_flame1" + "smokeparticleSystem2" "lost_flame2-lost_flame1" + "smoke_pain" "lostsoulpain.smoke" + "smoke_death" "lostsouldeath.smoke" + + "snd_sight" "monster_demon_lostsoul_sight" + "snd_chatter" "monster_demon_lostsoul_chatter" + "snd_chatter_combat" "monster_demon_lostsoul_chatter" + "snd_pain" "monster_demon_lostsoul_pain" + "snd_charge" "monster_demon_lostsoul_charge" + "snd_chomp" "monster_demon_lostsoul_chomp" + "snd_death" "monster_demon_lostsoul_death" + "snd_ambient" "monster_demon_lostsoul_ambient" + + "fx_teleport" "fx/teleporter_fly.fx" + "fx_teleport1" "fx/teleporter1_fly.fx" + "fx_teleport2" "fx/teleporter2_fly.fx" + "fx_teleport3" "fx/teleporter3_fly.fx" + +} + +entityDef melee_lostsoul { + // melee specific parameters + "snd_hit" "monster_demon_lostsoul_chomp" + "snd_miss" "monster_demon_lostsoul_chomp" + "kickDir" "1 0 0" + + // damage parameters + "damage" "12" + "mtr_blob" "bite" + "blob_time" "300" + "blob_x" "0" + "blob_y" "-100" + "blob_width" "600" + "blob_height" "600" + "knockback" "30" + "kick_time" "500" + "kick_amplitude" "2" + "dv_time" "200" +} + +entityDef melee_lostsoul_charge { + // melee specific parameters + "snd_hit" "monster_demon_lostsoul_chomp" + "snd_miss" "monster_demon_lostsoul_chomp" + "kickDir" "1 0 0" + + // damage parameters + "damage" "12" + "mtr_blob" "leftSmack" + "blob_time" "300" + "blob_x" "0" + "blob_y" "-100" + "blob_width" "600" + "blob_height" "600" + "knockback" "80" + "kick_time" "500" + "kick_amplitude" "4" + "dv_time" "200" +} diff --git a/base/def/monster_turret.def b/base/def/monster_turret.def new file mode 100644 index 00000000..b6d7aa3f --- /dev/null +++ b/base/def/monster_turret.def @@ -0,0 +1,154 @@ +/*********************************************************************** + + monster_turret.def + +***********************************************************************/ + +export fred { + options -prefix TURRET_ -keep flash barrel-sourcedir models/mapobjects/turrets/cycles -destdir models/md5/items/turret1 + mesh idle.mb -dest turret + anim idle.mb +} + +entityDef monster_turret { + "inherit" "monster_default" + "scriptobject" "ai" + "nativeobject" "rvmMonsterTurret" + "model" "monster_turret" + "mins" "-12 -12 -24" + "maxs" "12 12 0" + "team" "1" + "rank" "0" + "health" "100" + "turn_rate" "0" + "bleed" "0" + "on_activate" "" + "fov" "360" + "aas" "" + + "def_projectile" "projectile_bullet_turret" + "projectile_spread" "0" + "num_projectiles" "1" + "attack_cone" "360" + "attack_accuracy" "1" + "smoke_weapon" "cgsmoke.smoke" + + "head_focus_rate" "0.15" + + "bone_focus" "barrel" + "bone_leftEye" "" + "bone_rightEye" "" + + "look_min" "-12 -180 0" + "look_max" "90 180 0" + "look_joint aim" "1 1 0" + + "mtr_flashShader" "muzzleflash" + "flashTime" "0.15" + "flashColor" "1 0.8 0.4" + "flashRadius" "120" + + "snd_wakeup" "char_sentry_active" //TEMP + "snd_shutdown" "char_sentry_destroyed" //TEMP + "snd_windup" "monster_zombie_commando_windup" + "snd_winddown" "monster_zombie_commando_winddown" + //"snd_fire" "player_chaingun_fire" + "snd_fire" "monster_turret_fire" +} + +entityDef monster_turret_light { + "inherit" "monster_turret" + + "light" "1" + "light_distance" "640" + "mtr_light" "lights/flashlight5" + "skin_light_off" "" + "skin_light_on" "" +} + +model monster_turret { + mesh models/md5/items/turret1/turret.md5mesh + anim idle models/md5/items/turret1/idle.md5anim +} + +entityDef damage_bullet_turret { + "damage" "6" + "kickDir" "1 0 0" + + "mtr_blob" "genericDamage" + "blob_time" "300" + "blob_size" "400" + "blob_offset_x" "400" + + "knockback" "1" + + "smoke_wound_flesh" "bloodwound.smoke" + "mtr_wound_flesh" "textures/decals/hurt02" + "mtr_splat_flesh" "textures/decals/dsplat2" + "mtr_splat_flesh2" "textures/decals/dsplat5" + "mtr_splat_flesh3" "textures/decals/dsplat7" + "mtr_splat_flesh4" "textures/decals/dsplat11" + "snd_flesh" "bullet_impact_flesh" + + "kick_time" "400" + "kick_amplitude" "1" + + "dv_time" "100" +} + +entityDef projectile_bullet_turret { + "spawnclass" "idProjectile" + "mins" "-1 -1 -1" + "maxs" "1 1 1" + "cone" "3" + "scale" "0.1" + "noshadows" "1" + "tracers" "1" + "model_tracer" "models/particles/tracer/tracer.lwo" + "snd_tracer" "bullet_flight" + "snd_ricochet" "bullet_ricochet" + "snd_impact" "bullet_impact_metal" + + "def_damage" "damage_bullet_turret" + + "launchFromBarrel" "1" + "health" "0" + "velocity" "2000 0 0" // slowed down for tracer effect + "angular_velocity" "0 0 0" + "thrust" "0" + "thrust_start" "0" + "thrust_end" "0" + "linear_friction" "0" + "angular_friction" "0" + "contact_friction" "0" + "bounce" "0.6" + "mass" "2" + "gravity" "0" + "fuse" "4" + + "detonate_on_fuse" "0" + "detonate_on_death" "0" + "detonate_on_world" "1" + "detonate_on_actor" "1" + + "impact_damage_effect" "1" + "impact_gib" "1" + + "mtr_detonate" "textures/decals/bulleth02" + "decal_size" "10" + + "smoke_fly" "" + "smoke_detonate" "smokeandspark.smoke" + "smoke_bounce" "" //particles/bullet_sparks.particle" + "smoke_fuse" "" + + "mtr_light_shader" "" + "light_color" "0 0 0" + "light_radius" "0" + "light_offset" "0 0 0" + + "mtr_explode_light_shader" "" + "explode_light_color" "0 0 0" + "explode_light_radius" "0" + "explode_light_fadetime" "0" +} diff --git a/base/def/monster_zombie_base.def b/base/def/monster_zombie_base.def new file mode 100644 index 00000000..d021cece --- /dev/null +++ b/base/def/monster_zombie_base.def @@ -0,0 +1,170 @@ +/*********************************************************************** + + Zombies + + This should eventually go away + +***********************************************************************/ + +entityDef zombie_default { + "inherit" "monster_default" + "blink_min" "2.0s" + "blink_max" "8.0" + + "head_look" "1" + + "copy_joint neckcontrol" "neckcontrol" + "copy_joint headcontrol" "headcontrol" + + "eye_turn_min" "-20 -30 0" + "eye_turn_max" "20 30 0" + "eye_verticle_offset" "5" + "eye_horizontal_offset" "-8" + "eye_focus_rate" "0.5" + "head_focus_rate" "0.1" + + // gibs common to all zombies + "gib" "1" + + "snd_gibbed" "sound_giblets" + "snd_bounce" "ragdoll_impact" + + "def_dropGibItem1" "moveable_item_head_pork" + "dropGibItem1Joint" "Chest" + "dropGibItem1Offset" "0 0 16" + + "def_dropGibItem2" "moveable_item_torso_pork" + "dropGibItem2Joint" "Chest" + + "def_dropGibItem3" "moveable_item_rup_arm_pork" + "dropGibItem3Joint" "Ruparm" + + "def_dropGibItem4" "moveable_item_left_waist_pork" + "dropGibItem4Joint" "Waist" + + "def_dropGibItem5" "moveable_item_lup_leg_pork" + "dropGibItem5Joint" "Lupleg" + + "def_dropGibItem6" "moveable_item_rup_leg_pork" + "dropGibItem6Joint" "Rupleg" + + "def_dropGibItem7" "moveable_item_rup2_leg_pork" + "dropGibItem7Joint" "Rloleg" + + "def_dropGibItem8" "moveable_item_pelvis_pork" + "dropGibItem8Joint" "Hips" + + "def_dropGibItem9" "moveable_item_skull_pork" + "dropGibItem9Joint" "Headcontrol" + "dropGibItem9Offset" "0 0 16" + +} + +export fred { + options -prefix ZOMBIE_ -keep eyecontrol rshldrpad lshldrpad Lknee Rknee Body Body2 Lhand Lhand1 Rhand Rhand1 headcontrol neckcontrol loneckcontrol SPINNER Rball_r Rtoe_r Lball_r Ltoe_r Chest Shoulders Luparm_orbit Ruparm_orbit Belly Lrib Rrib chair RHANDCONNECTOR LHANDCONNECTOR -parent RHANDCONNECTOR Rhand1 -parent LHANDCONNECTOR Lhand1 -parent headcontrol neckcontrol -parent neckcontrol loneckcontrol -parent loneckcontrol Shoulders -parent rshldrpad Shoulders -parent lshldrpad Shoulders -parent Body2 Body -parent Hips Body2 -parent SPINNER Body2 -parent Waist SPINNER -sourcedir models/monsters/zombie/cycles/idles -destdir models/md5/monsters/zombies + + addoptions -align ALL + + mesh npcs_mesh2.mb -range 1 1 -dest labcoatzombie -keepmesh labcoatmesh + mesh npcs_mesh2.mb -range 1 1 -dest suitzombie -keepmesh suitmesh + mesh npcs_mesh2.mb -range 1 1 -dest jumpsuitzombie -keepmesh jumpsuitmesh + mesh npcs_mesh2.mb -range 1 1 -dest tshirtzombie -keepmesh soldiermesh + mesh npcs_mesh2.mb -range 1 1 -dest marinezombie -keepmesh marinebodymesh + //mesh npcs_mesh2.mb -range 1 1 -dest skeletonzombie -keepmesh skeletonmesh +} + + + +export fred { + options -prefix ZOMBIE_ -keep eyecontrol rshldrpad lshldrpad Lknee Rknee Body Body2 Lhand Lhand1 Rhand Rhand1 headcontrol neckcontrol loneckcontrol SPINNER Rball_r Rtoe_r Lball_r Ltoe_r Chest Shoulders Luparm_orbit Ruparm_orbit Belly Lrib Rrib chair RHANDCONNECTOR LHANDCONNECTOR -parent RHANDCONNECTOR Rhand1 -parent LHANDCONNECTOR Lhand1 -parent headcontrol neckcontrol -parent neckcontrol loneckcontrol -parent loneckcontrol Shoulders -parent rshldrpad Shoulders -parent lshldrpad Shoulders -parent Body2 Body -parent Hips Body2 -parent SPINNER Body2 -parent Waist SPINNER + + addoptions -keepmesh skeletonmesh + + anim maps/fred/marscity_2/zombie_eats_marine.mb -range 35 99 -rotate 180 -dest models/md5/cinematics/marscity_2/zkiller_zombie + + anim maps/eric/commoutside/zombiecam_09.mb -dest models/md5/cinematics/commoutside/zombie_with_camera + + anim maps/fred/delta2a/zoffice1.mb -xyzprecision 0.01 -quatprecision 0.00006 -rotate 90 -dest models/md5/cinematics/delta2a/zoffice1 + anim maps/fred/delta2a/zoffice2.mb -rotate 90 -range 1 80 -dest models/md5/cinematics/delta2a/zoffice2start + anim maps/fred/delta2a/zoffice2.mb -rotate 90 -range 81 200 -dest models/md5/cinematics/delta2a/zoffice2 + anim maps/fred/delta2a/zoffice2_end.mb -rotate 90 -range 201 290 -dest models/md5/cinematics/delta2a/zoffice2end + + anim maps/fred/delta2b/keycardzombie.mb -range 1 1 -rotate 130 -dest models/md5/monsters/zombies/keycardgetupidle + anim maps/fred/delta2b/keycardzombie.mb -range 1 50 -rotate 130 -dest models/md5/monsters/zombies/keycardgetup + + mesh models/monsters/zombie/cycles/idles/pistol_stand.mb -rotate 90 -dest models/md5/monsters/zombies/zombies + + anim models/monsters/zombie/cycles/heads/sechead.mb -rotate 90 -dest models/md5/monsters/zombies/sechead + anim models/monsters/zombie/cycles/heads/zbludhead.mb -rotate 90 -dest models/md5/monsters/zombies/zbludhead + anim models/monsters/zombie/cycles/heads/zsgogshead.mb -rotate 90 -dest models/md5/monsters/zombies/zsgogshead + anim models/monsters/zombie/cycles/heads/zsreghead.mb -rotate 90 -dest models/md5/monsters/zombies/zsreghead + + anim models/monsters/zombie/cycles/heads/blink.mb -rotate 90 -dest models/md5/monsters/zombies/blink + + anim models/monsters/zombie/cycles/attacks/zombie_swing_attacks.mb -rotate 90 -range 231 256 -dest models/md5/monsters/zombies/swing1 + anim models/monsters/zombie/cycles/attacks/zombie_swing_attacks.mb -rotate 90 -range 257 288 -dest models/md5/monsters/zombies/swing2 + anim models/monsters/zombie/cycles/attacks/zombie_swing_attacks.mb -rotate 90 -range 295 332 -dest models/md5/monsters/zombies/swing3 + + anim models/monsters/zombie/cycles/attacks/zombie_swing_attacks.mb -rotate 90 -range 480 513 -dest models/md5/monsters/zombies/flashlightswing1 + anim models/monsters/zombie/cycles/attacks/zombie_swing_attacks.mb -rotate 90 -range 530 563 -dest models/md5/monsters/zombies/flashlightswing2 + anim models/monsters/zombie/cycles/attacks/zombie_swing_attacks.mb -rotate 90 -range 640 704 -dest models/md5/monsters/zombies/flashlightswing3 + + anim models/monsters/zombie/cycles/attacks/zombie_swing_attacks2.mb -rotate 180 -range 50 120 -dest models/md5/monsters/zombies/swing4 + anim models/monsters/zombie/cycles/attacks/zombie_swing_attacks2.mb -rotate 180 -range 124 176 -dest models/md5/monsters/zombies/swing5 + anim models/monsters/zombie/cycles/attacks/zombie_swing_attacks2.mb -rotate 180 -range 208 248 -dest models/md5/monsters/zombies/zsight2 + + anim models/monsters/zombie/cycles/idles/crawl_n_getup.mb -rotate 90 -dest models/md5/monsters/zombies/zcrawl_n_getup + anim models/monsters/zombie/cycles/idles/crawl_n_getup.mb -range 1 1 -rotate 90 -dest models/md5/monsters/zombies/zcrawl_n_getup_idle + anim models/monsters/zombie/cycles/idles/flashlight_idle.mb -rotate 90 -dest models/md5/monsters/zombies/zflashidle + anim models/monsters/zombie/cycles/idles/flashlight_sight.mb -rotate 90 -dest models/md5/monsters/zombies/zflashsight + + anim models/monsters/zombie/cycles/idles/zombie_idle.mb -rotate 90 -dest models/md5/monsters/zombies/zidle1 + anim models/monsters/zombie/cycles/idles/zombie_sight1.mb -rotate 90 -dest models/md5/monsters/zombies/zsight1 + + anim models/monsters/zombie/cycles/walks/zombiewalk1.mb -cycleStart 60 -rotate 180 -dest models/md5/monsters/zombies/zwalk1 + anim models/monsters/zombie/cycles/walks/flashlightwalk.mb -rotate 180 -dest models/md5/monsters/zombies/flashlightwalk + anim models/monsters/zombie/cycles/walks/getup_from_bench.mb -rotate -90 -dest models/md5/monsters/zombies/getup_from_bench + anim models/monsters/zombie/cycles/walks/getup_from_bench.mb -rotate -90 -range 1 1 -dest models/md5/monsters/zombies/getup_from_bench_idle + + anim models/monsters/zombie/cycles/walks/zombie_eats_zombie_on_desk.mb -range 1 80 -dest models/md5/monsters/zombies/deskeatloop + anim models/monsters/zombie/cycles/walks/zombie_eats_zombie_on_desk.mb -range 81 105 -dest models/md5/monsters/zombies/deskeatgetup + + anim models/monsters/zombie/cycles/walks/zombie_eats_fatty_on_floor.mb -rotate 90 -range 1 60 -dest models/md5/monsters/zombies/flooreatloop + anim models/monsters/zombie/cycles/walks/zombie_getsup_aftereating_fatty_on_floor.mb -rotate 90 -range 61 150 -dest models/md5/monsters/zombies/flooreatgetup + + + anim models/monsters/zombie/cycles/pains/zsec_pistol_pains.mb -range 44 63 -rotate 90 -dest models/md5/monsters/zombies/chestpain1 + anim models/monsters/zombie/cycles/pains/zsec_pistol_pains.mb -range 65 83 -rotate 90 -dest models/md5/monsters/zombies/leftarmpain1 + anim models/monsters/zombie/cycles/pains/zsec_pistol_pains.mb -range 85 105 -rotate 90 -dest models/md5/monsters/zombies/rightarmpain1 + anim models/monsters/zombie/cycles/pains/zsec_pistol_pains.mb -range 108 125 -rotate 90 -dest models/md5/monsters/zombies/chestpain2 + anim models/monsters/zombie/cycles/pains/zsec_pistol_pains.mb -range 133 155 -rotate 90 -dest models/md5/monsters/zombies/headpain1 + anim models/monsters/zombie/cycles/pains/zsec_pistol_pains.mb -range 163 185 -rotate 90 -dest models/md5/monsters/zombies/leftarmpain2 + anim models/monsters/zombie/cycles/pains/zsec_pistol_pains.mb -range 187 215 -rotate 90 -dest models/md5/monsters/zombies/leftarmpain3 + anim models/monsters/zombie/cycles/pains/zsec_pistol_pains.mb -range 248 274 -rotate 90 -dest models/md5/monsters/zombies/headpain2 + anim models/monsters/zombie/cycles/pains/zsec_pistol_pains.mb -range 308 338 -rotate 90 -dest models/md5/monsters/zombies/rightarmpain2 + + anim maps/fred/underground/crazy_into_zombie.mb -rotate -90 -range 440 550 -dest models/md5/monsters/zombies/crazytransform + + anim maps/fred/underground/airlockencounter.mb -rotate 180 -range 1 80 -dest models/md5/cinematics/underground/airlockfdrag -prefix ZOMBIE2_ + anim maps/fred/underground/airlockencounter.mb -rotate 180 -range 81 150 -dest models/md5/cinematics/underground/airlockfeatloop -prefix ZOMBIE2_ + anim maps/fred/underground/airlockencounter.mb -rotate 180 -range 150 186 -dest models/md5/cinematics/underground/airlockfgetup -prefix ZOMBIE2_ + + + +addoptions -prefix SUIT_ + anim models/monsters/zombie/cycles/idles/zombie_getup2.mb -range 0 0 -rotate 90 -dest models/md5/monsters/zombies/zombie_getup2_pose + anim models/monsters/zombie/cycles/idles/zombie_getup2.mb -rotate 90 -dest models/md5/monsters/zombies/zombie_getup2 + anim models/monsters/zombie/cycles/idles/zombie_getup3.mb -range 0 0 -rotate 90 -dest models/md5/monsters/zombies/zombie_getup3_pose + anim models/monsters/zombie/cycles/idles/zombie_getup3.mb -rotate 90 -dest models/md5/monsters/zombies/zombie_getup3 + anim models/monsters/zombie/cycles/idles/zombie_idle1.mb -rotate 90 -dest models/md5/monsters/zombies/zombie_idle1 + anim models/monsters/zombie/cycles/idles/zombie_idle2.mb -rotate 90 -dest models/md5/monsters/zombies/zombie_idle2 + + anim models/monsters/zombie/cycles/idles/influence_hanging.mb -rotate 90 -dest models/md5/monsters/zombies/influence_hanging + + anim maps/fred/underground/crazy_into_zombie.mb -rotate -90 -range 1 110 -dest models/md5/monsters/zombies/crazybackup + anim maps/fred/underground/crazy_into_zombie_b.mb -rotate -90 -range 112 440 -dest models/md5/monsters/zombies/crazyloop + + anim maps/fred/underground/jamesclimbupledge_stand.mb -range 1 1 -rotate 180 -dest models/md5/cinematics/underground/invasion_ledgeclimb_stand + anim maps/fred/underground/jamesclimbupledge.mb -rotate 180 -dest models/md5/cinematics/underground/invasion_ledgeclimb + +} \ No newline at end of file diff --git a/base/def/monster_zombie_bernie.def b/base/def/monster_zombie_bernie.def new file mode 100644 index 00000000..c6e65318 --- /dev/null +++ b/base/def/monster_zombie_bernie.def @@ -0,0 +1,184 @@ +/*********************************************************************** + +monster_zombie_bernie.def + +***********************************************************************/ + +export fred { + options -prefix BERNIE_ -scale 1.1 -keep Lknee Rknee -align ALL -keep Neck SPINNER Flamewrist Flametrap Flamehips Flamebutt Flamehead Flamepelvis -parent SPINNER Body2 -parent Waist SPINNER -sourcedir models/monsters/zombie/bernie/cycles -destdir models/md5/monsters/zombies/bernie + mesh bernie_mesh.mb -dest bernie + anim af_pose.mb -range 1 1 + anim stand2.mb -dest stand + anim sight1.mb + anim walk1.mb -rotate 90 + anim swings.mb -rotate 90 -range 381 416 -dest swing1 + anim swings.mb -rotate 90 -range 417 470 -dest swing2 + anim swings.mb -rotate 90 -range 477 512 -dest swing3 + anim swings.mb -rotate 90 -range 642 705 -dest swing4 + anim swings2.mb -dest swing5 + anim pain_head.mb -range 287 318 -dest head_pain1 + anim pain_head.mb -range 124 157 -dest head_pain2 + anim pain_head.mb -range 159 186 -dest head_pain3 + anim pain_chest.mb -range 47 73 -dest chest_pain1 + anim pain_chest.mb -range 100 121 -dest chest_pain2 + anim pain_leftarm.mb -range 64 100 -dest leftarm_pain1 + anim pain_leftarm.mb -range 202 233 -dest leftarm_pain2 + anim pain_rightarm.mb -range 36 65 -dest rightarm_pain1 + anim pain_rightarm.mb -range 159 186 -dest rightarm_pain2 + anim spit_attack1.mb + anim fastwalk.mb -rotate -90 -range 97 140 +} + +model monster_zombie_bernie { + mesh models/md5/monsters/zombies/bernie/bernie.md5mesh + + channel torso ( *Waist ) + channel legs ( *origin -*Waist SPINNER ) + + anim af_pose models/md5/monsters/zombies/bernie/af_pose.md5anim + anim ik_pose models/md5/monsters/zombies/bernie/af_pose.md5anim + + anim stand models/md5/monsters/zombies/bernie/stand.md5anim + anim sight models/md5/monsters/zombies/bernie/sight1.md5anim { + frame 1 sound_voice snd_sight + } + anim idle models/md5/monsters/zombies/bernie/stand.md5anim + anim walk models/md5/monsters/zombies/bernie/fastwalk.md5anim { + frame 10 sound_body3 snd_footdrag + frame 6 sound_body2 snd_footstep + frame 29 sound_body2 snd_footstep + frame 37 sound_body snd_footdrag + } + anim melee_attack1 models/md5/monsters/zombies/bernie/swing1.md5anim { + frame 1 sound_voice snd_chatter_combat + frame 11 melee melee_zombie_maint_Right + } + anim melee_attack2 models/md5/monsters/zombies/bernie/swing2.md5anim { + frame 1 sound_voice snd_chatter_combat + frame 26 melee melee_zombie_maint_Right + } + anim melee_attack3 models/md5/monsters/zombies/bernie/swing3.md5anim { + frame 1 sound_voice snd_chatter_combat + frame 14 melee melee_zombie_maint_Left + } + anim melee_attack4 models/md5/monsters/zombies/bernie/swing4.md5anim { + frame 1 sound_voice snd_chatter_combat + frame 11 melee melee_zombie_maint_Right + frame 36 melee melee_zombie_maint_Left + } + anim melee_attack5 models/md5/monsters/zombies/bernie/swing5.md5anim { + frame 1 sound_voice snd_chatter_combat + frame 22 melee melee_zombie_maint_Right + } + anim range_attack1 models/md5/monsters/zombies/bernie/spit_attack1.md5anim { + frame 10 create_missile Jaw + frame 24 launch_missile Jaw + } + + anim pain models/md5/monsters/zombies/bernie/head_pain1.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_head1 models/md5/monsters/zombies/bernie/head_pain1.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_head2 models/md5/monsters/zombies/bernie/head_pain2.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_head3 models/md5/monsters/zombies/bernie/head_pain3.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_chest1 models/md5/monsters/zombies/bernie/chest_pain1.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_chest2 models/md5/monsters/zombies/bernie/chest_pain2.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_left_arm1 models/md5/monsters/zombies/bernie/leftarm_pain1.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_left_arm2 models/md5/monsters/zombies/bernie/leftarm_pain2.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_right_arm1 models/md5/monsters/zombies/bernie/rightarm_pain1.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_right_arm2 models/md5/monsters/zombies/bernie/rightarm_pain2.md5anim { + frame 1 sound_voice snd_pain + } +} + +entityDef monster_zombie_bernie { + "inherit" "zombie_default" + "scriptobject" "ai" + "nativeobject" "rvmMonsterZombieBernie" + "ragdoll" "monster_zombie_bernie" + "model" "monster_zombie_bernie" + "size" "48 48 68" + "use_aas" "aas48" + "team" "1" + "rank" "0" + "health" "150" + "melee_range" "32" + "anim" "idle" + "attack_cone" "70" + "attack_accuracy" "0" + "mass" "200" + + "look_min" "-90 -125 0" + "look_max" "25 125 0" + "look_joint Waist" "0.4 0.4 0" + "look_joint Head" "0.6 0.6 0" + + "dropGibItem9Joint" "Head" + + "chatter_min" "3" + "chatter_max" "4" + "chatter_combat_min" "2" + "chatter_combat_max" "2" + + "skin" "skins/monsters/zombies/bernie.skin" + "skin_dropGib" "skins/monsters/zombies/berniegib.skin" + + "ik_numLegs" "2" + "ik_footSize" "4" + "ik_waist" "Body" + "ik_hip1" "Lupleg" + "ik_hip2" "Rupleg" + "ik_knee1" "Lloleg" + "ik_knee2" "Rloleg" + "ik_ankle1" "Lankle_r" + "ik_ankle2" "Rankle_r" + "ik_dir1" "Lknee" + "ik_dir2" "Rknee" + "ik_foot1" "Lball_r" + "ik_foot2" "Rball_r" + + "damage_zone head" "*Neck" + "damage_zone chest" "*Waist -*Neck" + "damage_zone left_arm" "*Luparm" + "damage_zone right_arm" "*Ruparm" + "damage_zone legs" "*Hips origin Body2" + "damage_scale head" "2" + + //"smokeParticleSystem" "Flamebutt" + "smokeParticleSystem2" "Flametrap" + "smokeParticleSystem3" "Flamehead" + "smokeParticleSystem4" "Flamewrist" + //"smokeParticleSystem5" "Flamehips" + //"smokeParticleSystem6" "Flamepelvis" + + "snd_sight" "bernie_sight" + "snd_footstep" "monster_zombie_commando_footstep" + "snd_footdrag" "bernie_footdrag" + "snd_melee_attack_1" "bernie_attack" + "snd_melee_attack_2" "bernie_attack" + "snd_melee_attack_3" "bernie_attack" + "snd_chatter" "bernie_chatter" + "snd_chatter_combat" "bernie_chatter_combat" + "snd_pain" "bernie_pain" + "snd_death" "bernie_death" + "snd_thud" "monster_zombie_maint_thud" + "snd_swipe" "monster_zombie_maint_swipe" + "snd_ambient" "monster_zombie_ambient_burn" + +} diff --git a/base/def/monster_zombie_boney.def b/base/def/monster_zombie_boney.def new file mode 100644 index 00000000..cf416aba --- /dev/null +++ b/base/def/monster_zombie_boney.def @@ -0,0 +1,169 @@ +/*********************************************************************** + +monster_zombie_boney.def + +***********************************************************************/ + +export james { + options -prefix BERNIE_ -scale 1.1 -keep Lknee Rknee -align ALL -keep Neck SPINNER -parent SPINNER Body2 -parent Waist SPINNER -sourcedir models/monsters/zombie/boney/cycles -destdir models/md5/monsters/zombies/boney + mesh boney_mesh.mb -dest boney + anim af_pose.mb -range 1 1 + anim stand2.mb -dest stand + anim sight1.mb + anim walk1.mb -rotate 90 + anim swings.mb -rotate 90 -range 381 416 -dest swing1 + anim swings.mb -rotate 90 -range 417 470 -dest swing2 + anim swings.mb -rotate 90 -range 477 512 -dest swing3 + anim swings.mb -rotate 90 -range 642 705 -dest swing4 + anim swings2.mb -dest swing5 + anim pain_head.mb -range 287 318 -dest head_pain1 + anim pain_head.mb -range 124 157 -dest head_pain2 + anim pain_head.mb -range 159 186 -dest head_pain3 + anim pain_chest.mb -range 47 73 -dest chest_pain1 + anim pain_chest.mb -range 100 121 -dest chest_pain2 + anim pain_leftarm.mb -range 64 100 -dest leftarm_pain1 + anim pain_leftarm.mb -range 202 233 -dest leftarm_pain2 + anim pain_rightarm.mb -range 36 65 -dest rightarm_pain1 + anim pain_rightarm.mb -range 159 186 -dest rightarm_pain2 + //anim spit_attack1_boney.mb +} + +model monster_zombie_boney { + mesh models/md5/monsters/zombies/boney/boney.md5mesh + channel torso ( *Waist ) + channel legs ( *origin -*Waist SPINNER ) + + anim af_pose models/md5/monsters/zombies/boney/af_pose.md5anim + anim ik_pose models/md5/monsters/zombies/boney/af_pose.md5anim + + anim stand models/md5/monsters/zombies/boney/stand.md5anim + anim sight models/md5/monsters/zombies/boney/sight1.md5anim { + frame 1 sound_voice snd_sight + } + anim idle models/md5/monsters/zombies/boney/stand.md5anim + anim walk models/md5/monsters/zombies/boney/walk1.md5anim { + frame 1 sound_body snd_footdrag + frame 13 sound_body2 snd_footstep + frame 19 sound_body snd_footdrag + frame 33 sound_body2 snd_footstep + frame 37 sound_body snd_footdrag + frame 53 sound_body2 snd_footstep + frame 58 sound_body snd_footdrag + frame 72 sound_body2 snd_footstep + frame 77 sound_body snd_footdrag + frame 92 sound_body2 snd_footstep + } + + anim melee_attack1 models/md5/monsters/zombies/boney/swing1.md5anim { + frame 1 sound_voice snd_melee_attack + frame 11 melee melee_zombie_maint_Right + } + anim melee_attack2 models/md5/monsters/zombies/boney/swing2.md5anim { + frame 1 sound_voice snd_melee_attack + frame 26 melee melee_zombie_maint_Right + } + anim melee_attack3 models/md5/monsters/zombies/boney/swing3.md5anim { + frame 1 sound_voice snd_melee_attack + frame 14 melee melee_zombie_maint_Left + } + anim melee_attack4 models/md5/monsters/zombies/boney/swing4.md5anim { + frame 1 sound_voice snd_melee_attack + frame 11 melee melee_zombie_maint_Right + frame 36 melee melee_zombie_maint_Left + } + anim melee_attack5 models/md5/monsters/zombies/boney/swing5.md5anim { + frame 1 sound_voice snd_melee_attack + frame 22 melee melee_zombie_maint_Right + } + //anim range_attack1 models/md5/monsters/zombies/boney/spit_attack1_boney.md5anim { + // frame 10 create_missile Jaw2 + // frame 24 launch_missile Jaw2 + //} + + anim pain models/md5/monsters/zombies/boney/head_pain1.md5anim { + frame 1 sound_voice2 snd_pain + } + anim pain_head1 models/md5/monsters/zombies/boney/head_pain1.md5anim { + frame 1 sound_voice2 snd_pain + } + anim pain_head2 models/md5/monsters/zombies/boney/head_pain2.md5anim { + frame 1 sound_voice2 snd_pain + } + anim pain_head3 models/md5/monsters/zombies/boney/head_pain3.md5anim { + frame 1 sound_voice2 snd_pain + } + anim pain_chest1 models/md5/monsters/zombies/boney/chest_pain1.md5anim { + frame 1 sound_voice2 snd_pain + } + anim pain_chest2 models/md5/monsters/zombies/boney/chest_pain2.md5anim { + frame 1 sound_voice2 snd_pain + } + anim pain_left_arm1 models/md5/monsters/zombies/boney/leftarm_pain1.md5anim { + frame 1 sound_voice2 snd_pain + } + anim pain_left_arm2 models/md5/monsters/zombies/boney/leftarm_pain2.md5anim { + frame 1 sound_voice2 snd_pain + } + anim pain_right_arm1 models/md5/monsters/zombies/boney/rightarm_pain1.md5anim { + frame 1 sound_voice2 snd_pain + } + anim pain_right_arm2 models/md5/monsters/zombies/boney/rightarm_pain2.md5anim { + frame 1 sound_voice2 snd_pain + } +} + +entityDef monster_zombie_boney { + "inherit" "zombie_default" + "scriptobject" "ai" + "nativeobject" "rvmMonsterZombie" + "ragdoll" "monster_zombie_bernie" + "model" "monster_zombie_boney" + "size" "48 48 68" + "use_aas" "aas48" + "team" "1" + "rank" "0" + "health" "150" + "melee_range" "32" + "anim" "idle" + //"def_projectile" "projectile_berniefire" + "attack_cone" "70" + "attack_accuracy" "0" + "mass" "200" + + "skin" "skins/monsters/zombies/boney.skin" + "skin_dropGib" "skins/monsters/zombies/boneygib.skin" + + "dropGibItem9Joint" "Head" + + "ik_numLegs" "2" + "ik_footSize" "4" + "ik_waist" "Body2" + "ik_hip1" "Lupleg" + "ik_hip2" "Rupleg" + "ik_knee1" "Lloleg" + "ik_knee2" "Rloleg" + "ik_ankle1" "Lankle_r" + "ik_ankle2" "Rankle_r" + "ik_dir1" "Lknee" + "ik_dir2" "Rknee" + "ik_foot1" "Lball_r" + "ik_foot2" "Rball_r" + + "damage_zone head" "*Neck" + "damage_zone chest" "*Waist -*Neck" + "damage_zone left_arm" "*Luparm" + "damage_zone right_arm" "*Ruparm" + "damage_zone legs" "*Hips origin Body2" + "damage_scale head" "2" + + "snd_sight" "monster_zombie_boney_sight" + "snd_footstep" "monster_zombie_maint_footstep" + "snd_melee_attack" "monster_zombie_boney_attackmelee" + "snd_chatter" "monster_zombie_boney_chatter" + "snd_chatter_combat" "monster_zombie_boney_chatter_combat" + "snd_pain" "monster_zombie_boney_pain" + "snd_death" "monster_zombie_boney_die" + "snd_thud" "monster_zombie_maint_thud" + "snd_swipe" "monster_zombie_maint_swipe" + "snd_footdrag" "bernie_footdrag" +} diff --git a/base/def/monster_zombie_chainsaw.def b/base/def/monster_zombie_chainsaw.def new file mode 100644 index 00000000..1867b968 --- /dev/null +++ b/base/def/monster_zombie_chainsaw.def @@ -0,0 +1,191 @@ +/*********************************************************************** + +monster_zombie_chainsaw.def + +***********************************************************************/ + +export fred { + options -prefix ZJUMP_ -align ALL -parent Loneck Shoulders -parent chainsaw Rhand -sourcedir models/monsters/zombie/jumpsuit/cycles -destdir models/md5/monsters/zjump + + mesh zjump_mesh.mb -dest zjump + anim af_pose.mb + anim sight1.mb + anim sight2.mb + anim sight3.mb + anim idle1.mb + anim idle1cs.mb + anim idle2cs.mb + anim walk1.mb + anim walk1cs.mb + anim walk2cs.mb + anim melee1.mb + anim melee2.mb + anim melee3.mb + anim pain1_head.mb + anim pain1_chest.mb + anim pain1_luparm.mb + anim pain1_ruparm.mb + anim pain1_legs.mb + anim death1.mb + anim death1_getup_attempt1.mb + anim death1_getup1.mb + anim death1_twitch.mb + + anim maps/fred/chainsaw/chainsaw.mb -dest models/md5/cinematics/delta2a/chainsaw + + options -prefix ZJUMP_ -parent Loneck Shoulders -parent chainsaw Rhand + anim models/monsters/combos/hk_throws_chainsawzombie_withcams.mb -dest models/md5/monsters/zjump/thrownbyhk + anim models/monsters/zombie/jumpsuit/mocap/start_chainsaw.mb -range 60 115 -dest models/md5/monsters/zjump/startchainsaw1 + anim models/monsters/zombie/jumpsuit/mocap/start_chainsaw.mb -range 60 144 -dest models/md5/monsters/zjump/startchainsaw2 + anim models/monsters/zombie/jumpsuit/mocap/start_chainsaw.mb -range 60 180 -dest models/md5/monsters/zjump/startchainsaw3 + anim models/monsters/zombie/jumpsuit/mocap/draglegrun.mb -dest models/md5/monsters/zjump/draglegrun + anim models/monsters/zombie/jumpsuit/mocap/draglegrun2.mb -dest models/md5/monsters/zjump/draglegrun2 + anim models/monsters/zombie/jumpsuit/mocap/draglegrun3.mb -rotate 90 -dest models/md5/monsters/zjump/draglegrun3 + //anim maps/fred/delta1/d1e3.mb -range 1 241 -dest models/md5/monsters/zjump/standandcharge + mesh models/characters/player/mocap/nadedrope3ending.mb -dest models/md5/monsters/zjump/d1mesh + anim models/characters/player/mocap/nadedrope3ending.mb -range 1 370 -dest models/md5/monsters/zjump/standandcharge1 +} + +model monster_zombie_chainsaw { + mesh models/md5/monsters/zjump/zjump.md5mesh + skin skins/models/monsters/zjumpcs.skin + + channel torso ( *Waist ) + channel legs ( *Hips origin Body2 ) + + anim af_pose models/md5/monsters/zjump/af_pose.md5anim + anim ik_pose models/md5/monsters/zjump/af_pose.md5anim + anim initial models/md5/monsters/zjump/af_pose.md5anim + + anim sight1 models/md5/monsters/zjump/startchainsaw1.md5anim { + frame 1 sound_voice snd_sight1 + frame 38 sound_weapon snd_pull + frame 41 fx fx/chainsawsmoke.fx + frame 50 sound_voice snd_melee_attack + } + anim "1pull" models/md5/monsters/zjump/startchainsaw1.md5anim { + frame 1 sound_voice snd_sight1 + frame 38 sound_weapon snd_pull + frame 50 sound_voice snd_melee_attack + } + anim sight2 models/md5/monsters/zjump/startchainsaw2.md5anim { + frame 1 sound_voice snd_sight1 + frame 38 sound_weapon snd_pull + frame 41 fx fx/chainsawsmoke.fx + frame 64 sound_weapon snd_pull + frame 69 fx fx/chainsawsmoke.fx + frame 76 sound_voice snd_melee_attack + } + anim sight3 models/md5/monsters/zjump/startchainsaw3.md5anim { + frame 1 sound_voice snd_sight1 + frame 38 sound_weapon snd_pull + frame 41 fx fx/chainsawsmoke.fx + frame 64 sound_weapon snd_pull + frame 69 fx fx/chainsawsmoke.fx + frame 90 sound_weapon snd_pull + frame 102 sound_voice snd_melee_attack + frame 93 fx fx/chainsawsmoke.fx + frame 100 fx fx/chainsawsmoke.fx + frame 110 fx fx/chainsawsmoke.fx + frame 120 fx fx/chainsawsmoke.fx + } + anim idle models/md5/monsters/zjump/idle1cs.md5anim + anim idle1 models/md5/monsters/zjump/idle1cs.md5anim { + frame 1 sound_body snd_idle + } + anim idle2 models/md5/monsters/zjump/idle2cs.md5anim { + frame 1 sound_body snd_idle + } + anim walk1 models/md5/monsters/zjump/draglegrun3.md5anim { + frame 1 sound_body snd_idle + } + anim melee_attack1 models/md5/monsters/zjump/melee1.md5anim { + frame 1 sound_voice snd_melee_attack + frame 16 attack_begin melee_zombie_chainsaw_Right + frame 23 attack_end + } + anim melee_attack2 models/md5/monsters/zjump/melee2.md5anim { + frame 1 sound_voice snd_melee_attack + frame 14 attack_begin melee_zombie_chainsaw_Left + frame 22 attack_end + } + anim pain models/md5/monsters/zjump/pain1_chest.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_head models/md5/monsters/zjump/pain1_head.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_chest models/md5/monsters/zjump/pain1_chest.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_left_arm models/md5/monsters/zjump/pain1_luparm.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_right_arm models/md5/monsters/zjump/pain1_ruparm.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_legs models/md5/monsters/zjump/pain1_legs.md5anim { + frame 1 sound_voice snd_pain + } + anim death1_getup_attempt1 models/md5/monsters/zjump/death1_getup_attempt1.md5anim { + ai_no_turn + frame 1 call overrideLegs + } + anim death1_getup1 models/md5/monsters/zjump/death1_getup1.md5anim { + ai_no_turn + frame 1 call overrideLegs + } + + anim death1_twitch models/md5/monsters/zjump/death1_twitch.md5anim +} + +entityDef monster_zombie_chainsaw { + "inherit" "zombie_default" + "scriptobject" "ai" + "nativeobject" "rvmMonsterZombie" + "model" "monster_zombie_chainsaw" + "ragdoll" "monster_zombie_chainsaw" + "size" "48 48 68" + "use_aas" "aas48" + "team" "1" + "rank" "0" + "health" "125" + "melee_range" "40" + "smoke_particleSystem" "pinkysmoke.smoke" + "smoke_pain" "pinkysmokepain.smoke" + "particleBone" "starter" + "smoke_wound_metal" "bulletricochet.prt" + + "skin_dropGib" "skins/models/monsters/zjumpgib.skin" + + "mass" "150" + + "damage_zone head" "*loneckcontrol" + "damage_zone chest" "*Waist -*loneckcontrol" + "damage_zone left_arm" "*Luparm" + "damage_zone right_arm" "*Ruparm" + "damage_zone legs" "*Hips origin Body2" + + "damage_scale head" "2" + + "snd_sight1" "monster_zombie_fat_sight1" + "snd_sight2" "monster_zombie_fat_sight2" + "snd_sight3" "monster_zombie_fat_sight3" + "snd_sight4" "monster_zombie_fat_sight4" + "snd_sight5" "monster_zombie_fat_sight5" + "snd_sight6" "monster_zombie_fat_sight6" + "snd_sight7" "monster_zombie_fat_sight7" + + "snd_idle" "monster_zombie_chainsaw_idle" + "snd_footstep" "monster_zombie_fat_footstep" + "snd_chatter" "monster_zombie_fat_chatter" + "snd_chatter_combat" "monster_zombie_fat_chatter_combat" + "snd_pain" "monster_zombie_fat_pain" + "snd_melee_attack" "monster_zombie_chainsaw_attack1" + "snd_melee_attack_1" "monster_zombie_fat_attackmelee_1" + "snd_melee_attack_2" "monster_zombie_fat_attackmelee_2" + "snd_melee_attack_3" "monster_zombie_fat_attackmelee_3" + "snd_thud" "monster_zombie_fat_thud" + "snd_pull" "monster_zombie_chainsaw_pull" + "snd_release" "monster_zombie_chainsaw_release" +} diff --git a/base/def/monster_zombie_commando.def b/base/def/monster_zombie_commando.def new file mode 100644 index 00000000..33d2688f --- /dev/null +++ b/base/def/monster_zombie_commando.def @@ -0,0 +1,352 @@ +/*********************************************************************** + +monster_zombie_commando + +***********************************************************************/ + +export fred { + options -prefix ZCT_ -parent Tentacle Rhand -keep Lknee Rknee waist_orientation -parent waist_orientation Body2 -parent waist waist_orientation + + anim maps/fred/delta2a/malzctcolumns.mb -dest models/md5/monsters/zct/delta2a_leapdown + anim maps/fred/monorail/raisecommando2.mb -dest models/md5/cinematics/monorail/zct + + addoptions -align All -sourcedir models/monsters/zombie/zct/cycles -destdir models/md5/monsters/zct + + mesh zct_mesh.mb -dest zct + anim ZC_tent_INITIAL.mb -dest initial + anim ZC_tent_WALK.mb -dest walk1 + anim run5.mb -dest zctrun5 + anim zctleap1.mb -dest zctleap1 + anim alert_idle2.mb -dest zctidle + anim sight1.mb -dest zctsight1 + anim sight4.mb -dest zctsight2 + anim ZC_tent_PAIN_HEAD.mb -dest pain_head + anim ZC_tent_PAIN_CHEST.mb -dest pain_chest + anim ZC_tent_PAIN_RUPARM.mb -dest pain_ruparm + anim ZC_tent_PAIN_LUPARM.mb -dest pain_luparm + anim ZC_tent_ATTACK1.mb -dest range_tentacle + anim ZC_tent_PUNCH2.mb -dest punch2 + anim ZC_tent_PUNCH3.mb -dest punch3 + anim ZC_tent_KICK.mb -dest kick1 + + anim melee_tent.mb -dest melee_tent + anim stab1.mb -dest stab1 + anim teleportin.mb -dest teleportin +} + +model monster_zombie_commando { + mesh models/md5/monsters/zct/zct.md5mesh + + channel torso ( *waist ) + channel legs ( *Hips origin Body2 waist_orientation ) + + anim af_pose models/md5/monsters/zct/initial.md5anim + anim ik_pose models/md5/monsters/zct/initial.md5anim + + anim teleport models/md5/monsters/zct/teleportin.md5anim { + + frame 3 sound_body snd_footstep + frame 4 sound_body snd_footstep + frame 52 sound_voice snd_sight1 + } + anim idle models/md5/monsters/zct/zctidle.md5anim + anim stand models/md5/monsters/zct/zctidle.md5anim + anim walk models/md5/monsters/zct/walk1.md5anim { + frame 12 sound_body snd_footstep + frame 27 sound_body snd_footstep + frame 45 sound_body snd_footstep + frame 60 sound_body snd_footstep + } + anim run models/md5/monsters/zct/zctrun5.md5anim { + frame 3 sound_body snd_footstep + frame 12 sound_body snd_footstep + frame 23 sound_body snd_footstep + frame 32 sound_body snd_footstep + frame 41 sound_body snd_footstep + frame 52 sound_body snd_footstep + } + anim sight1 models/md5/monsters/zct/zctsight1.md5anim { + //frame 1 call overrideLegs + frame 8 sound_voice snd_sight1 + } + anim sight2 models/md5/monsters/zct/zctsight2.md5anim { + //frame 1 call overrideLegs + frame 8 sound_voice snd_sight2 + } + anim pain models/md5/monsters/zct/pain_chest.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_head models/md5/monsters/zct/pain_head.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_left_arm models/md5/monsters/zct/pain_luparm.md5anim { + frame 1 sound_voice snd_pain + frame 15 sound_body snd_footstep + } + anim pain_right_arm models/md5/monsters/zct/pain_ruparm.md5anim { + frame 1 sound_voice snd_pain + frame 14 sound_body snd_footstep + } + anim pain_legs models/md5/monsters/zct/pain_chest.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_chest models/md5/monsters/zct/pain_chest.md5anim { + frame 1 sound_voice snd_pain + } + + anim melee_attack1 models/md5/monsters/zct/punch2.md5anim { + //frame 1 call overrideLegs + frame 9 sound_voice snd_melee_attack_1 + frame 9 sound_body snd_footstep + frame 18 melee melee_commando_right + frame 31 sound_body snd_footstep + } + anim melee_attack2 models/md5/monsters/zct/punch3.md5anim { + //frame 1 call overrideLegs + frame 11 melee melee_commando_left + frame 11 sound_body snd_footstep + frame 12 sound_voice snd_melee_attack_2 + frame 18 sound_body snd_footstep + } + anim melee_attack3 models/md5/monsters/zct/kick1.md5anim { + frame 1 call overrideLegs + frame 4 sound_voice snd_melee_attack_3 + frame 4 melee melee_commando_push + frame 15 sound_body snd_footstep + } + anim melee_attack4 models/md5/monsters/zct/melee_tent.md5anim { + frame 1 call overrideLegs + frame 9 sound_weapon snd_tentacle_out + frame 10 object_call tentacle_attack_start + frame 10 sound_voice snd_melee_attack_5 + frame 10 sound_body snd_footstep + frame 12 object_call tentacle_attack_end + frame 15 sound_body snd_footstep + frame 23 sound_body snd_footstep + //frame 20 sound_body snd_tentacle_in + } + + anim range_attack1 models/md5/monsters/zct/range_tentacle.md5anim { + frame 1 call overrideLegs + frame 15 sound_voice snd_range_attack_1 + frame 16 sound_body snd_footstep + frame 18 sound_weapon snd_tentacle_out + frame 20 object_call tentacle_attack_start + frame 27 object_call tentacle_attack_end + //frame 28 sound_weapon snd_tentacle_in + frame 29 sound_body snd_footstep + frame 36 sound_body snd_footstep + } + anim range_attack2 models/md5/monsters/zct/zctleap1.md5anim { + frame 1 call overrideLegs + frame 3 sound_body snd_footstep + frame 4 sound_voice snd_range_attack_2 + frame 24 sound_body snd_footstep + frame 24 sound_body snd_tentacle_out + frame 26 sound_body snd_footstep + frame 28 object_call tentacle_attack_start + //frame 37 sound_item snd_tentacle_in + frame 38 sound_body snd_footstep + frame 39 sound_body snd_footstep + frame 40 object_call tentacle_attack_end + frame 41 sound_body snd_footstep + } + anim range_attack3 models/md5/monsters/zct/stab1.md5anim { + frame 1 call overrideLegs + frame 7 sound_body snd_footstep + frame 11 sound_body snd_footstep + frame 12 sound_voice snd_range_attack_3 + frame 13 sound_weapon snd_tentacle_out + frame 14 object_call tentacle_attack_start + frame 31 object_call tentacle_attack_end + frame 38 sound_weapon snd_tentacle_in + } +} + +entityDef monster_zombie_commando { + "inherit" "zombie_default" + "model" "monster_zombie_commando" + "ragdoll" "monster_zombie_commando" + "scriptobject" "ai" + "nativeobject" "rvmMonsterZombieCommandoTentacle" + "gib" "0" + //"offsetModel" "-12 0 0" + + + "size" "48 48 80" + "use_aas" "aas48" + "team" "1" + "rank" "1" + "health" "170" + "melee_range" "40" + "turn_rate" "360" + "chatter_min" "3" + "chatter_max" "8" + "chatter_combat_min" "3" + "chatter_combat_max" "6" + "mass" "250" + + "burnaway" "0.50" + "smoke_burnParticleSystem" "burn_imp.prt-chest" + + "blockedRadius" "20" + "blockedMoveTime" "500" + "blockedAttackTime" "500" + + "ik_numLegs" "2" + "ik_footSize" "0" + "ik_waist" "Body2" + "ik_foot1" "Ltoe_r" + "ik_foot2" "Rtoe_r" + "ik_ankle1" "Lankle_r" + "ik_ankle2" "Rankle_r" + "ik_knee1" "Lloleg" + "ik_knee2" "Rloleg" + "ik_hip1" "Lupleg" + "ik_hip2" "Rupleg" + "ik_dir1" "Lknee" + "ik_dir2" "Rknee" + + "damage_zone head" "*loneck" + "damage_zone chest" "*waist -*Rshldr -*Lshldr -*loneck" + "damage_zone left_arm" "*Lshldr" + "damage_zone right_arm" "*Rshldr" + "damage_zone legs" "*Hips origin Body2" + + "damage_scale head" "2" + + "snd_tentacle_out" "monster_zombie_commando_tentacle_out" + "snd_tentacle_in" "monster_zombie_commando_tentacle_in" + "snd_sight1" "monster_zombie_commando_sight1" + "snd_sight2" "monster_zombie_commando_sight2" + "snd_chatter" "monster_zombie_commando_chatter" + "snd_chatter_combat" "monster_zombie_commando_chatter_combat" + "snd_pain" "monster_zombie_commando_pain" + //"snd_attackmissile" "monster_zombie_commando_attackmissile" + "snd_melee_attack_1" "monster_zombie_commando_attackmelee_1" + "snd_melee_attack_2" "monster_zombie_commando_attackmelee_2" + "snd_melee_attack_3" "monster_zombie_commando_attackmelee_3" + "snd_melee_attack_4" "monster_zombie_commando_attackmelee_4" + "snd_melee_attack_5" "monster_zombie_commando_attackmelee_5" + "snd_death" "monster_zombie_commando_death" + "snd_thud" "monster_zombie_commando_thud" + "snd_footstep" "monster_zombie_commando_footstep" + "snd_breath" "monster_zombie_commando_breath" + "snd_inhale" "monster_zombie_commando_breath_inhale" + "snd_exhale" "monster_zombie_commando_breath_exhale" + "snd_bounce" "ragdoll_impact" + "snd_bodyroll" "monster_zombie_commando_body_roll" + "snd_range_attack_1" "monster_zombie_commando_range_attack_1" + "snd_range_attack_2" "monster_zombie_commando_range_attack_2" + "snd_range_attack_3" "monster_zombie_commando_range_attack_3" + "snd_burn" "monster_demon_tick_burn" + + // For Precache, include entitydefs that are referenced in script + "def_tentacle" "melee_commandoTentacle" +} + +entityDef melee_commando_right { + "damage" "12" + "kickDir" "0 1 0" + + //"mtr_blob" "genericDamage" + //"blob_time" "300" + //"blob_size" "400" + //"blob_offset_x" "400" + + "mtr_blob" "rightSmack" + "blob_time" "600" + "blob_x" "-140" + "blob_y" "-100" + "blob_width" "600" + "blob_height" "600" + + "knockback" "55" + "kick_time" "400" + "kick_amplitude" "1" + + "dv_time" "100" + + "snd_hit" "fist_impact_flesh" + "snd_miss" "fist_whoosh" +} + +entityDef melee_commando_left { + "damage" "12" + "kickDir" "0 -1 0" + + //"mtr_blob" "genericDamage" + //"blob_time" "300" + //"blob_size" "400" + //"blob_offset_x" "400" + + "mtr_blob" "leftSmack" + "blob_time" "600" + "blob_x" "140" + "blob_y" "-100" + "blob_width" "600" + "blob_height" "600" + + "knockback" "45" + "kick_time" "400" + "kick_amplitude" "1" + + "dv_time" "100" + + "snd_hit" "fist_impact_flesh" + "snd_miss" "fist_whoosh" +} + +entityDef melee_commando_push { + "damage" "12" + "kickDir" "1 0 1" + + //"mtr_blob" "genericDamage" + //"blob_time" "300" + //"blob_size" "400" + //"blob_offset_x" "400" + + "mtr_blob" "leftSmack" + "blob_time" "300" + "blob_x" "50" + "blob_y" "-100" + "blob_width" "600" + "blob_height" "600" + + "knockback" "65" + "kick_time" "400" + "kick_amplitude" "1" + + "dv_time" "100" + + "snd_hit" "fist_impact_flesh" + "snd_miss" "fist_whoosh" +} + +entityDef melee_commandoTentacle { + "damage" "12" + "melee_bone" "joint13" + + "kickDir" "1 0 0" + + //"mtr_blob" "genericDamage" + //"blob_time" "300" + //"blob_size" "400" + //"blob_offset_x" "400" + + "mtr_blob" "tentacle_smack" + "blob_time" "300" + "blob_x" "50" + "blob_y" "-100" + "blob_width" "600" + "blob_height" "600" + + "knockback" "100" + "kick_time" "400" + "kick_amplitude" "1" + + "dv_time" "100" + + "snd_hit" "monster_zombie_commando_melee_tentacle_hit" + "snd_miss" "monster_zombie_commando_melee_tentacle_miss" +} diff --git a/base/def/monster_zombie_commando_cgun.def b/base/def/monster_zombie_commando_cgun.def new file mode 100644 index 00000000..78cbdf81 --- /dev/null +++ b/base/def/monster_zombie_commando_cgun.def @@ -0,0 +1,921 @@ +/*********************************************************************** + + monster_zombie_commando_cgun.def + +***********************************************************************/ + +export James { + + options -prefix ZCC_ -keep Lknee Rknee eject flash chain_root ROT barrel -align movement -parent barrel chain_root -parent flash barrel -parent eject chain_root -parent spine_1 ROT -parent ROT Body -parent chain_root gun -sourcedir models/monsters/zombie/zcc/cycles -destdir models/md5/monsters/zcc + + + // -xyzprecision 0.01 -quatprecision 0.00006 + + mesh zcc_mesh.mb -dest zcc + anim chaingun_idle.mb + anim chaingun_step_left.mb + anim chaingun_step_right.mb + anim chaingun_walk.mb + anim chaingun_pain_chest.mb + anim chaingun_pain_head.mb + anim chaingun_pain_left.mb + anim chaingun_pain_right.mb + anim chaingun_run.mb + anim chaingun_evade_left.mb + anim chaingun_evade_right.mb + anim chaingun_sight.mb + anim chaingun_on_activate.mb + anim chaingun_reload.mb + + anim chaingun_af_pose.mb + anim chaingun_crouch_range_attack.mb -range 1 12 -dest chaingun_crouch_range_attack + anim chaingun_crouch_range_attack.mb -range 13 52 -dest chaingun_crouch_range_attack_loop + anim chaingun_crouch_range_attack.mb -range 53 65 -dest chaingun_crouch_range_attack_end + + anim chaingun_crouch_range_aim.mb -dest chaingun_crouch_range_attack_aim + anim chaingun_crouch_left_pain.mb + anim chaingun_crouch_right_pain.mb + + anim chaingun_stand_fire.mb -range 1 6 -dest chaingun_raise + anim chaingun_stand_fire.mb -range 7 51 + anim chaingun_stand_fire.mb -range 52 65 -dest chaingun_lower + anim chaingun_stand_aim.mb + + anim chaingun_leanout_right.mb -range 1 1 -dest chaingun_wallleanright_A + anim chaingun_leanout_right.mb -range 1 15 -dest chaingun_wallleanright_B + anim chaingun_leanout_right.mb -range 16 60 -dest chaingun_wallleanright_C + anim chaingun_leanout_right.mb -range 61 100 -dest chaingun_wallleanright_D + + anim chaingun_leanout_left.mb -range 1 1 -dest chaingun_wallleanleft_A + anim chaingun_leanout_left.mb -range 1 15 -dest chaingun_wallleanleft_B + anim chaingun_leanout_left.mb -range 16 60 -dest chaingun_wallleanleft_C + anim chaingun_leanout_left.mb -range 61 100 -dest chaingun_wallleanleft_D + + anim chaingun_wallstep_right.mb -range 1 1 -dest chaingun_wallstepright_A + anim chaingun_wallstep_right.mb -range 1 15 -dest chaingun_wallstepright_B + anim chaingun_wallstep_right.mb -range 16 62 -dest chaingun_wallstepright_C + anim chaingun_wallstep_right.mb -range 63 75 -dest chaingun_wallstepright_D + + anim chaingun_wallstep_left.mb -range 1 1 -dest chaingun_wallstepleft_A + anim chaingun_wallstep_left.mb -range 1 15 -dest chaingun_wallstepleft_B + anim chaingun_wallstep_left.mb -range 16 62 -dest chaingun_wallstepleft_C + anim chaingun_wallstep_left.mb -range 63 75 -dest chaingun_wallstepleft_D + + anim chaingun_crate_range_attack.mb -range 1 1 -dest chaingun_crate_up_A + anim chaingun_crate_range_attack.mb -range 1 18 -dest chaingun_crate_up_B + anim chaingun_crate_range_attack.mb -range 19 65 -dest chaingun_crate_up_C + anim chaingun_crate_range_attack.mb -range 66 85 -dest chaingun_crate_up_D + + anim chaingun_wallrot_right.mb -range 1 1 -dest chaingun_wallrotright_A + anim chaingun_wallrot_right.mb -range 1 15 -dest chaingun_wallrotright_B + anim chaingun_wallrot_right.mb -range 16 60 -dest chaingun_wallrotright_C + anim chaingun_wallrot_right.mb -range 61 100 -dest chaingun_wallrotright_D + + anim chaingun_wallrot_left.mb -range 1 1 -dest chaingun_wallrotleft_A + anim chaingun_wallrot_left.mb -range 1 15 -dest chaingun_wallrotleft_B + anim chaingun_wallrot_left.mb -range 16 60 -dest chaingun_wallrotleft_C + anim chaingun_wallrot_left.mb -range 61 100 -dest chaingun_wallrotleft_D + +} + +model monster_zombie_commando_cgun { + mesh models/md5/monsters/zcc/zcc.md5mesh + channel torso ( *spine_1 ) + channel legs ( *origin -*spine_1 ROT ) + + anim idle models/md5/monsters/zcc/chaingun_idle.md5anim { + frame 1 sound_voice monster_zombie_commando_breath_inhale + frame 150 sound_voice monster_zombie_commando_breath_exhale + } + + + anim reload models/md5/monsters/zcc/chaingun_reload.md5anim { + frame 9 sound_body monster_zombie_commando_cgun_reload + } + + anim stand models/md5/monsters/zcc/chaingun_idle.md5anim { + frame 1 sound_voice monster_zombie_commando_breath_inhale + frame 150 sound_voice monster_zombie_commando_breath_exhale + } + + anim range_attack_loop1 models/md5/monsters/zcc/chaingun_stand_fire.md5anim { + frame 3 sound_weapon monster_zombie_commando_cgun_fire + frame 3 launch_missile barrel + frame 6 sound_weapon monster_zombie_commando_cgun_fire + frame 6 launch_missile barrel + frame 9 sound_weapon monster_zombie_commando_cgun_fire + frame 9 launch_missile barrel + frame 12 sound_weapon monster_zombie_commando_cgun_fire + frame 12 launch_missile barrel + frame 16 sound_weapon monster_zombie_commando_cgun_fire + frame 16 launch_missile barrel + frame 20 sound_weapon monster_zombie_commando_cgun_fire + frame 20 launch_missile barrel + frame 23 sound_weapon monster_zombie_commando_cgun_fire + frame 23 launch_missile barrel + frame 27 sound_weapon monster_zombie_commando_cgun_fire + frame 27 launch_missile barrel + frame 30 sound_weapon monster_zombie_commando_cgun_fire + frame 30 launch_missile barrel + frame 33 sound_weapon monster_zombie_commando_cgun_fire + frame 33 launch_missile barrel + frame 37 sound_weapon monster_zombie_commando_cgun_fire + frame 37 launch_missile barrel + frame 41 sound_weapon monster_zombie_commando_cgun_fire + frame 41 launch_missile barrel + frame 45 sound_weapon monster_zombie_commando_cgun_fire + frame 45 launch_missile barrel + } + + anim range_attack_loop2 models/md5/monsters/zcc/chaingun_stand_fire.md5anim { + frame 3 sound_weapon monster_zombie_commando_cgun_fire + frame 3 launch_missile barrel + frame 6 sound_weapon monster_zombie_commando_cgun_fire + frame 6 launch_missile barrel + frame 9 sound_weapon monster_zombie_commando_cgun_fire + frame 9 launch_missile barrel + frame 12 sound_weapon monster_zombie_commando_cgun_fire + frame 12 launch_missile barrel + frame 16 sound_weapon monster_zombie_commando_cgun_fire + frame 16 launch_missile barrel + frame 20 sound_weapon monster_zombie_commando_cgun_fire + frame 20 launch_missile barrel + frame 23 sound_weapon monster_zombie_commando_cgun_fire + frame 23 launch_missile barrel + frame 27 sound_weapon monster_zombie_commando_cgun_fire + frame 27 launch_missile barrel + frame 30 sound_weapon monster_zombie_commando_cgun_fire + frame 30 launch_missile barrel + frame 33 sound_weapon monster_zombie_commando_cgun_fire + frame 33 launch_missile barrel + frame 37 sound_weapon monster_zombie_commando_cgun_fire + frame 37 launch_missile barrel + frame 41 sound_weapon monster_zombie_commando_cgun_fire + frame 41 launch_missile barrel + frame 45 sound_weapon monster_zombie_commando_cgun_fire + frame 45 launch_missile barrel + } + + anim step_left models/md5/monsters/zcc/chaingun_step_left.md5anim { + frame 6 sound_body monster_zombie_commando_footstep + frame 6 sound_body2 monster_zombie_commando_footstep_clinks + frame 13 sound_body monster_zombie_commando_footstep + frame 13 sound_body2 monster_zombie_commando_footstep_clinks + } + anim step_right models/md5/monsters/zcc/chaingun_step_right.md5anim { + frame 6 sound_body monster_zombie_commando_footstep + frame 6 sound_body2 monster_zombie_commando_footstep_clinks + frame 12 sound_body monster_zombie_commando_footstep + frame 12 sound_body2 monster_zombie_commando_footstep_clinks + } + anim walk models/md5/monsters/zcc/chaingun_walk.md5anim { + frame 11 sound_body monster_zombie_commando_footstep + frame 11 sound_body2 monster_zombie_commando_footstep_clinks + + frame 25 sound_body monster_zombie_commando_footstep + frame 25 sound_body2 monster_zombie_commando_footstep_clinks + + frame 38 sound_body monster_zombie_commando_footstep + frame 38 sound_body2 monster_zombie_commando_footstep_clinks + + frame 52 sound_body monster_zombie_commando_footstep + frame 52 sound_body2 monster_zombie_commando_footstep_clinks + + } + anim run models/md5/monsters/zcc/chaingun_run.md5anim { + frame 8 sound_body monster_zombie_commando_footstep + frame 8 sound_body2 monster_zombie_commando_footstep_clinks + + frame 16 sound_body monster_zombie_commando_footstep + frame 16 sound_body2 monster_zombie_commando_footstep_clinks + } + + anim pain models/md5/monsters/zcc/chaingun_pain_left.md5anim { + frame 1 sound_voice monster_zombie_commando_pain + } + anim pain_chest models/md5/monsters/zcc/chaingun_pain_chest.md5anim { + frame 1 sound_voice monster_zombie_commando_pain + } + anim pain_head models/md5/monsters/zcc/chaingun_pain_head.md5anim { + frame 1 sound_voice monster_zombie_commando_pain + } + anim pain_right_arm models/md5/monsters/zcc/chaingun_pain_right.md5anim { + frame 1 sound_voice monster_zombie_commando_pain + } + anim pain_left_arm models/md5/monsters/zcc/chaingun_pain_left.md5anim { + frame 1 sound_voice monster_zombie_commando_pain + } + anim evade_left models/md5/monsters/zcc/chaingun_evade_left.md5anim { + frame 7 sound_body monster_zombie_commando_footstep + frame 7 sound_body2 monster_zombie_commando_footstep_clinks + + frame 12 sound_body monster_zombie_commando_footstep + frame 12 sound_body2 monster_zombie_commando_footstep_clinks + + } + anim evade_right models/md5/monsters/zcc/chaingun_evade_right.md5anim { + frame 9 sound_body monster_zombie_commando_footstep + frame 9 sound_body2 monster_zombie_commando_footstep_clinks + + frame 13 sound_body monster_zombie_commando_footstep + frame 13 sound_body2 monster_zombie_commando_footstep_clinks + } + anim on_activate models/md5/monsters/zcc/chaingun_on_activate.md5anim { + frame 1 sound_voice monster_zombie_commando_sight1 + frame 9 sound_weapon monster_zombie_commando_windup + frame 17 sound_weapon monster_zombie_commando_cgun_fire + frame 17 launch_missile barrel + frame 20 sound_weapon monster_zombie_commando_cgun_fire + frame 20 launch_missile barrel + frame 23 sound_weapon monster_zombie_commando_cgun_fire + frame 23 launch_missile barrel + frame 26 sound_weapon monster_zombie_commando_cgun_fire + frame 26 launch_missile barrel + frame 29 sound_weapon monster_zombie_commando_cgun_fire + frame 29 launch_missile barrel + frame 32 sound_weapon monster_zombie_commando_cgun_fire + frame 32 launch_missile barrel + frame 35 sound_weapon monster_zombie_commando_cgun_fire + frame 35 launch_missile barrel + frame 40 sound_weapon monster_zombie_commando_winddown + } + + anim sight models/md5/monsters/zcc/chaingun_sight.md5anim { + frame 1 sound_voice monster_zombie_commando_sight1 + } + + anim af_pose models/md5/monsters/zcc/chaingun_af_pose.md5anim + anim ik_pose models/md5/monsters/zcc/chaingun_af_pose.md5anim + anim crouch_range_attack models/md5/monsters/zcc/chaingun_crouch_range_attack.md5anim { + frame 1 sound_weapon monster_zombie_commando_windup + + frame 4 sound_body monster_zombie_commando_footstep + frame 4 sound_body2 monster_zombie_commando_footstep_clinks + + frame 9 sound_body monster_zombie_commando_footstep + frame 9 sound_body2 monster_zombie_commando_footstep_clinks + } + anim crouch_range_attack_loop models/md5/monsters/zcc/chaingun_crouch_range_attack_loop.md5anim { + frame 3 sound_weapon monster_zombie_commando_cgun_fire + frame 3 launch_missile barrel + frame 6 sound_weapon monster_zombie_commando_cgun_fire + frame 6 launch_missile barrel + frame 9 sound_weapon monster_zombie_commando_cgun_fire + frame 9 launch_missile barrel + frame 12 sound_weapon monster_zombie_commando_cgun_fire + frame 12 launch_missile barrel + frame 16 sound_weapon monster_zombie_commando_cgun_fire + frame 16 launch_missile barrel + frame 20 sound_weapon monster_zombie_commando_cgun_fire + frame 20 launch_missile barrel + frame 23 sound_weapon monster_zombie_commando_cgun_fire + frame 23 launch_missile barrel + frame 27 sound_weapon monster_zombie_commando_cgun_fire + frame 27 launch_missile barrel + frame 30 sound_weapon monster_zombie_commando_cgun_fire + frame 30 launch_missile barrel + frame 33 sound_weapon monster_zombie_commando_cgun_fire + frame 33 launch_missile barrel + frame 38 sound_weapon monster_zombie_commando_cgun_fire + frame 38 launch_missile barrel + } + + anim crouch_range_attack_end models/md5/monsters/zcc/chaingun_crouch_range_attack_end.md5anim { + frame 1 sound_weapon monster_zombie_commando_winddown + + frame 6 sound_body monster_zombie_commando_footstep + frame 6 sound_body2 monster_zombie_commando_footstep_clinks + + frame 11 sound_body monster_zombie_commando_footstep + frame 11 sound_body2 monster_zombie_commando_footstep_clinks + } + anim crouch_range_attack_aim models/md5/monsters/zcc/chaingun_crouch_range_attack_aim.md5anim + anim crouch_pain models/md5/monsters/zcc/chaingun_crouch_left_pain.md5anim { + frame 1 sound_voice monster_zombie_commando_pain + } + anim crouch_pain_chest models/md5/monsters/zcc/chaingun_crouch_left_pain.md5anim { + frame 1 sound_voice monster_zombie_commando_pain + } + anim crouch_pain_head models/md5/monsters/zcc/chaingun_crouch_right_pain.md5anim { + frame 1 sound_voice monster_zombie_commando_pain + } + anim crouch_pain_left_arm models/md5/monsters/zcc/chaingun_crouch_left_pain.md5anim { + frame 1 sound_voice monster_zombie_commando_pain + } + anim crouch_pain_right_arm models/md5/monsters/zcc/chaingun_crouch_right_pain.md5anim { + frame 1 sound_voice monster_zombie_commando_pain + } + anim range_attack models/md5/monsters/zcc/chaingun_raise.md5anim { + frame 1 sound_weapon monster_zombie_commando_windup + } + anim range_attack_end models/md5/monsters/zcc/chaingun_lower.md5anim { + frame 1 sound_weapon monster_zombie_commando_winddown + } + anim range_attack_aim models/md5/monsters/zcc/chaingun_stand_aim.md5anim + + anim stepoutright_out models/md5/monsters/zcc/chaingun_wallstepright_B.md5anim { + frame 1 sound_weapon monster_zombie_commando_windup + + frame 5 sound_body monster_zombie_commando_footstep + frame 5 sound_body2 monster_zombie_commando_footstep_clinks + + frame 14 sound_body monster_zombie_commando_footstep + frame 14 sound_body2 monster_zombie_commando_footstep_clinks + } + anim stepoutright_fire models/md5/monsters/zcc/chaingun_wallstepright_C.md5anim { + frame 3 sound_weapon monster_zombie_commando_cgun_fire + frame 3 launch_missile barrel + frame 6 sound_weapon monster_zombie_commando_cgun_fire + frame 6 launch_missile barrel + frame 9 sound_weapon monster_zombie_commando_cgun_fire + frame 9 launch_missile barrel + frame 12 sound_weapon monster_zombie_commando_cgun_fire + frame 12 launch_missile barrel + frame 16 sound_weapon monster_zombie_commando_cgun_fire + frame 16 launch_missile barrel + frame 20 sound_weapon monster_zombie_commando_cgun_fire + frame 20 launch_missile barrel + frame 23 sound_weapon monster_zombie_commando_cgun_fire + frame 23 launch_missile barrel + frame 27 sound_weapon monster_zombie_commando_cgun_fire + frame 27 launch_missile barrel + frame 30 sound_weapon monster_zombie_commando_cgun_fire + frame 30 launch_missile barrel + frame 33 sound_weapon monster_zombie_commando_cgun_fire + frame 33 launch_missile barrel + frame 37 sound_weapon monster_zombie_commando_cgun_fire + frame 37 launch_missile barrel + frame 41 sound_weapon monster_zombie_commando_cgun_fire + frame 41 launch_missile barrel + frame 45 sound_weapon monster_zombie_commando_cgun_fire + frame 45 launch_missile barrel + } + + anim stepoutright_in models/md5/monsters/zcc/chaingun_wallstepright_D.md5anim { + frame 1 sound_weapon monster_zombie_commando_winddown + + frame 5 sound_body monster_zombie_commando_footstep + frame 5 sound_body2 monster_zombie_commando_footstep_clinks + + frame 8 sound_body monster_zombie_commando_footstep + frame 8 sound_body2 monster_zombie_commando_footstep_clinks + } + anim stepoutright_wait models/md5/monsters/zcc/chaingun_wallstepright_A.md5anim + + anim stepoutleft_out models/md5/monsters/zcc/chaingun_wallstepleft_B.md5anim { + frame 1 sound_weapon monster_zombie_commando_windup + + frame 8 sound_body monster_zombie_commando_footstep + frame 8 sound_body2 monster_zombie_commando_footstep_clinks + + frame 15 sound_body monster_zombie_commando_footstep + frame 15 sound_body2 monster_zombie_commando_footstep_clinks + } + anim stepoutleft_fire models/md5/monsters/zcc/chaingun_wallstepleft_C.md5anim { + frame 3 sound_weapon monster_zombie_commando_cgun_fire + frame 3 launch_missile barrel + frame 6 sound_weapon monster_zombie_commando_cgun_fire + frame 6 launch_missile barrel + frame 9 sound_weapon monster_zombie_commando_cgun_fire + frame 9 launch_missile barrel + frame 12 sound_weapon monster_zombie_commando_cgun_fire + frame 12 launch_missile barrel + frame 16 sound_weapon monster_zombie_commando_cgun_fire + frame 16 launch_missile barrel + frame 20 sound_weapon monster_zombie_commando_cgun_fire + frame 20 launch_missile barrel + frame 23 sound_weapon monster_zombie_commando_cgun_fire + frame 23 launch_missile barrel + frame 27 sound_weapon monster_zombie_commando_cgun_fire + frame 27 launch_missile barrel + frame 30 sound_weapon monster_zombie_commando_cgun_fire + frame 30 launch_missile barrel + frame 33 sound_weapon monster_zombie_commando_cgun_fire + frame 33 launch_missile barrel + frame 37 sound_weapon monster_zombie_commando_cgun_fire + frame 37 launch_missile barrel + frame 41 sound_weapon monster_zombie_commando_cgun_fire + frame 41 launch_missile barrel + frame 45 sound_weapon monster_zombie_commando_cgun_fire + frame 45 launch_missile barrel + } + + anim stepoutleft_in models/md5/monsters/zcc/chaingun_wallstepleft_D.md5anim { + frame 1 sound_weapon monster_zombie_commando_winddown + + frame 3 sound_body monster_zombie_commando_footstep + frame 3 sound_body2 monster_zombie_commando_footstep_clinks + + frame 8 sound_body monster_zombie_commando_footstep + frame 8 sound_body2 monster_zombie_commando_footstep_clinks + } + anim stepoutleft_wait models/md5/monsters/zcc/chaingun_wallstepleft_A.md5anim + anim leanoutright_out models/md5/monsters/zcc/chaingun_wallleanright_B.md5anim { + frame 1 sound_weapon monster_zombie_commando_windup + frame 8 sound_body monster_zombie_commando_footstep + frame 8 sound_body2 monster_zombie_commando_footstep_clinks + } + anim leanoutright_fire models/md5/monsters/zcc/chaingun_wallleanright_C.md5anim { + frame 3 sound_weapon monster_zombie_commando_cgun_fire + frame 3 launch_missile barrel + frame 6 sound_weapon monster_zombie_commando_cgun_fire + frame 6 launch_missile barrel + frame 9 sound_weapon monster_zombie_commando_cgun_fire + frame 9 launch_missile barrel + frame 12 sound_weapon monster_zombie_commando_cgun_fire + frame 12 launch_missile barrel + frame 16 sound_weapon monster_zombie_commando_cgun_fire + frame 16 launch_missile barrel + frame 20 sound_weapon monster_zombie_commando_cgun_fire + frame 20 launch_missile barrel + frame 23 sound_weapon monster_zombie_commando_cgun_fire + frame 23 launch_missile barrel + frame 27 sound_weapon monster_zombie_commando_cgun_fire + frame 27 launch_missile barrel + frame 30 sound_weapon monster_zombie_commando_cgun_fire + frame 30 launch_missile barrel + frame 33 sound_weapon monster_zombie_commando_cgun_fire + frame 33 launch_missile barrel + frame 37 sound_weapon monster_zombie_commando_cgun_fire + frame 37 launch_missile barrel + frame 41 sound_weapon monster_zombie_commando_cgun_fire + frame 41 launch_missile barrel + frame 45 sound_weapon monster_zombie_commando_cgun_fire + frame 45 launch_missile barrel + } + + anim leanoutright_in models/md5/monsters/zcc/chaingun_wallleanright_D.md5anim { + frame 1 sound_weapon monster_zombie_commando_winddown + frame 21 sound_body monster_zombie_commando_footstep + frame 21 sound_body2 monster_zombie_commando_footstep_clinks + } + anim leanoutright_wait models/md5/monsters/zcc/chaingun_wallleanright_A.md5anim + anim leanoutleft_out models/md5/monsters/zcc/chaingun_wallleanleft_B.md5anim { + frame 1 sound_weapon monster_zombie_commando_windup + frame 9 sound_body monster_zombie_commando_footstep + frame 9 sound_body2 monster_zombie_commando_footstep_clinks + } + anim leanoutleft_fire models/md5/monsters/zcc/chaingun_wallleanleft_C.md5anim { + frame 3 sound_weapon monster_zombie_commando_cgun_fire + frame 3 launch_missile barrel + frame 6 sound_weapon monster_zombie_commando_cgun_fire + frame 6 launch_missile barrel + frame 9 sound_weapon monster_zombie_commando_cgun_fire + frame 9 launch_missile barrel + frame 12 sound_weapon monster_zombie_commando_cgun_fire + frame 12 launch_missile barrel + frame 16 sound_weapon monster_zombie_commando_cgun_fire + frame 16 launch_missile barrel + frame 20 sound_weapon monster_zombie_commando_cgun_fire + frame 20 launch_missile barrel + frame 23 sound_weapon monster_zombie_commando_cgun_fire + frame 23 launch_missile barrel + frame 27 sound_weapon monster_zombie_commando_cgun_fire + frame 27 launch_missile barrel + frame 30 sound_weapon monster_zombie_commando_cgun_fire + frame 30 launch_missile barrel + frame 33 sound_weapon monster_zombie_commando_cgun_fire + frame 33 launch_missile barrel + frame 37 sound_weapon monster_zombie_commando_cgun_fire + frame 37 launch_missile barrel + frame 41 sound_weapon monster_zombie_commando_cgun_fire + frame 41 launch_missile barrel + frame 45 sound_weapon monster_zombie_commando_cgun_fire + frame 45 launch_missile barrel + } + + anim leanoutleft_in models/md5/monsters/zcc/chaingun_wallleanleft_D.md5anim { + frame 1 sound_weapon monster_zombie_commando_winddown + frame 25 sound_body monster_zombie_commando_footstep + frame 25 sound_body2 monster_zombie_commando_footstep_clinks + } + anim leanoutleft_wait models/md5/monsters/zcc/chaingun_wallleanleft_A.md5anim + anim cratestand_out models/md5/monsters/zcc/chaingun_crate_up_B.md5anim { + frame 1 sound_weapon monster_zombie_commando_windup + frame 12 sound_body monster_zombie_commando_footstep + frame 12 sound_body2 monster_zombie_commando_footstep_clinks + } + anim cratestand_fire models/md5/monsters/zcc/chaingun_crate_up_C.md5anim { + frame 3 sound_weapon monster_zombie_commando_cgun_fire + frame 3 launch_missile barrel + frame 6 sound_weapon monster_zombie_commando_cgun_fire + frame 6 launch_missile barrel + frame 9 sound_weapon monster_zombie_commando_cgun_fire + frame 9 launch_missile barrel + frame 12 sound_weapon monster_zombie_commando_cgun_fire + frame 12 launch_missile barrel + frame 16 sound_weapon monster_zombie_commando_cgun_fire + frame 16 launch_missile barrel + frame 20 sound_weapon monster_zombie_commando_cgun_fire + frame 20 launch_missile barrel + frame 23 sound_weapon monster_zombie_commando_cgun_fire + frame 23 launch_missile barrel + frame 27 sound_weapon monster_zombie_commando_cgun_fire + frame 27 launch_missile barrel + frame 30 sound_weapon monster_zombie_commando_cgun_fire + frame 30 launch_missile barrel + frame 33 sound_weapon monster_zombie_commando_cgun_fire + frame 33 launch_missile barrel + frame 37 sound_weapon monster_zombie_commando_cgun_fire + frame 37 launch_missile barrel + frame 41 sound_weapon monster_zombie_commando_cgun_fire + frame 41 launch_missile barrel + frame 45 sound_weapon monster_zombie_commando_cgun_fire + frame 45 launch_missile barrel + } + + anim cratestand_in models/md5/monsters/zcc/chaingun_crate_up_D.md5anim { + + frame 1 sound_weapon monster_zombie_commando_winddown + frame 10 sound_body monster_zombie_commando_footstep + frame 16 sound_body monster_zombie_commando_footstep + } + anim cratestand_wait models/md5/monsters/zcc/chaingun_crate_up_A.md5anim + + anim crate_up_out models/md5/monsters/zcc/chaingun_crate_up_B.md5anim { + frame 1 sound_weapon monster_zombie_commando_windup + frame 7 sound_body monster_zombie_commando_footstep + frame 12 sound_body monster_zombie_commando_footstep + } + anim crate_up_fire models/md5/monsters/zcc/chaingun_crate_up_C.md5anim { + frame 3 sound_weapon monster_zombie_commando_cgun_fire + frame 3 launch_missile barrel + frame 6 sound_weapon monster_zombie_commando_cgun_fire + frame 6 launch_missile barrel + frame 9 sound_weapon monster_zombie_commando_cgun_fire + frame 9 launch_missile barrel + frame 12 sound_weapon monster_zombie_commando_cgun_fire + frame 12 launch_missile barrel + frame 16 sound_weapon monster_zombie_commando_cgun_fire + frame 16 launch_missile barrel + frame 20 sound_weapon monster_zombie_commando_cgun_fire + frame 20 launch_missile barrel + frame 23 sound_weapon monster_zombie_commando_cgun_fire + frame 23 launch_missile barrel + frame 27 sound_weapon monster_zombie_commando_cgun_fire + frame 27 launch_missile barrel + frame 30 sound_weapon monster_zombie_commando_cgun_fire + frame 30 launch_missile barrel + frame 33 sound_weapon monster_zombie_commando_cgun_fire + frame 33 launch_missile barrel + frame 37 sound_weapon monster_zombie_commando_cgun_fire + frame 37 launch_missile barrel + frame 41 sound_weapon monster_zombie_commando_cgun_fire + frame 41 launch_missile barrel + frame 45 sound_weapon monster_zombie_commando_cgun_fire + frame 45 launch_missile barrel + } + + anim crate_up_in models/md5/monsters/zcc/chaingun_crate_up_D.md5anim { + + frame 1 sound_weapon monster_zombie_commando_winddown + + frame 10 sound_body monster_zombie_commando_footstep + frame 10 sound_body2 monster_zombie_commando_footstep_clinks + + frame 16 sound_body monster_zombie_commando_footstep + frame 16 sound_body2 monster_zombie_commando_footstep_clinks + } + anim crate_up_wait models/md5/monsters/zcc/chaingun_crate_up_A.md5anim + + anim rotoutleft1_out models/md5/monsters/zcc/chaingun_wallrotleft_B.md5anim { + frame 1 sound_weapon monster_zombie_commando_windup + + frame 9 sound_body monster_zombie_commando_footstep + frame 9 sound_body2 monster_zombie_commando_footstep_clinks + } + anim rotoutleft1_fire models/md5/monsters/zcc/chaingun_wallrotleft_C.md5anim { + frame 3 sound_weapon monster_zombie_commando_cgun_fire + frame 3 launch_missile barrel + frame 6 sound_weapon monster_zombie_commando_cgun_fire + frame 6 launch_missile barrel + frame 9 sound_weapon monster_zombie_commando_cgun_fire + frame 9 launch_missile barrel + frame 12 sound_weapon monster_zombie_commando_cgun_fire + frame 12 launch_missile barrel + frame 16 sound_weapon monster_zombie_commando_cgun_fire + frame 16 launch_missile barrel + frame 20 sound_weapon monster_zombie_commando_cgun_fire + frame 20 launch_missile barrel + frame 23 sound_weapon monster_zombie_commando_cgun_fire + frame 23 launch_missile barrel + frame 27 sound_weapon monster_zombie_commando_cgun_fire + frame 27 launch_missile barrel + frame 30 sound_weapon monster_zombie_commando_cgun_fire + frame 30 launch_missile barrel + frame 33 sound_weapon monster_zombie_commando_cgun_fire + frame 33 launch_missile barrel + frame 37 sound_weapon monster_zombie_commando_cgun_fire + frame 37 launch_missile barrel + frame 41 sound_weapon monster_zombie_commando_cgun_fire + frame 41 launch_missile barrel + frame 45 sound_weapon monster_zombie_commando_cgun_fire + frame 45 launch_missile barrel + + } + + anim rotoutleft1_in models/md5/monsters/zcc/chaingun_wallrotleft_D.md5anim { + frame 1 sound_weapon monster_zombie_commando_winddown + frame 25 sound_body monster_zombie_commando_footstep + frame 25 sound_body2 monster_zombie_commando_footstep_clinks + } + anim rotoutleft1_wait models/md5/monsters/zcc/chaingun_wallrotleft_A.md5anim + anim rotoutright1_out models/md5/monsters/zcc/chaingun_wallrotright_B.md5anim { + frame 1 sound_weapon monster_zombie_commando_windup + frame 8 sound_body monster_zombie_commando_footstep + frame 8 sound_body2 monster_zombie_commando_footstep_clinks + } + anim rotoutright1_fire models/md5/monsters/zcc/chaingun_wallrotright_C.md5anim { + frame 3 sound_weapon monster_zombie_commando_cgun_fire + frame 3 launch_missile barrel + frame 6 sound_weapon monster_zombie_commando_cgun_fire + frame 6 launch_missile barrel + frame 9 sound_weapon monster_zombie_commando_cgun_fire + frame 9 launch_missile barrel + frame 12 sound_weapon monster_zombie_commando_cgun_fire + frame 12 launch_missile barrel + frame 16 sound_weapon monster_zombie_commando_cgun_fire + frame 16 launch_missile barrel + frame 20 sound_weapon monster_zombie_commando_cgun_fire + frame 20 launch_missile barrel + frame 23 sound_weapon monster_zombie_commando_cgun_fire + frame 23 launch_missile barrel + frame 27 sound_weapon monster_zombie_commando_cgun_fire + frame 27 launch_missile barrel + frame 30 sound_weapon monster_zombie_commando_cgun_fire + frame 30 launch_missile barrel + frame 33 sound_weapon monster_zombie_commando_cgun_fire + frame 33 launch_missile barrel + frame 37 sound_weapon monster_zombie_commando_cgun_fire + frame 37 launch_missile barrel + frame 41 sound_weapon monster_zombie_commando_cgun_fire + frame 41 launch_missile barrel + frame 45 sound_weapon monster_zombie_commando_cgun_fire + frame 45 launch_missile barrel + + } + + anim rotoutright1_in models/md5/monsters/zcc/chaingun_wallrotright_D.md5anim { + frame 1 sound_weapon monster_zombie_commando_winddown + frame 20 sound_body monster_zombie_commando_footstep + frame 20 sound_body2 monster_zombie_commando_footstep_clinks + } + anim rotoutright1_wait models/md5/monsters/zcc/chaingun_wallrotright_A.md5anim + + anim rotoutleft2_out models/md5/monsters/zcc/chaingun_wallrotleft_B.md5anim { + frame 1 sound_weapon monster_zombie_commando_windup + frame 9 sound_body monster_zombie_commando_footstep + frame 9 sound_body2 monster_zombie_commando_footstep_clinks + + } + anim rotoutleft2_fire models/md5/monsters/zcc/chaingun_wallrotleft_C.md5anim { + frame 3 sound_weapon monster_zombie_commando_cgun_fire + frame 3 launch_missile barrel + frame 6 sound_weapon monster_zombie_commando_cgun_fire + frame 6 launch_missile barrel + frame 9 sound_weapon monster_zombie_commando_cgun_fire + frame 9 launch_missile barrel + frame 12 sound_weapon monster_zombie_commando_cgun_fire + frame 12 launch_missile barrel + frame 16 sound_weapon monster_zombie_commando_cgun_fire + frame 16 launch_missile barrel + frame 20 sound_weapon monster_zombie_commando_cgun_fire + frame 20 launch_missile barrel + frame 23 sound_weapon monster_zombie_commando_cgun_fire + frame 23 launch_missile barrel + frame 27 sound_weapon monster_zombie_commando_cgun_fire + frame 27 launch_missile barrel + frame 30 sound_weapon monster_zombie_commando_cgun_fire + frame 30 launch_missile barrel + frame 33 sound_weapon monster_zombie_commando_cgun_fire + frame 33 launch_missile barrel + frame 37 sound_weapon monster_zombie_commando_cgun_fire + frame 37 launch_missile barrel + frame 41 sound_weapon monster_zombie_commando_cgun_fire + frame 41 launch_missile barrel + frame 45 sound_weapon monster_zombie_commando_cgun_fire + frame 45 launch_missile barrel + } + + anim rotoutleft2_in models/md5/monsters/zcc/chaingun_wallrotleft_D.md5anim { + frame 1 sound_weapon monster_zombie_commando_winddown + frame 25 sound_body monster_zombie_commando_footstep + frame 25 sound_body2 monster_zombie_commando_footstep_clinks + } + anim rotoutleft2_wait models/md5/monsters/zcc/chaingun_wallrotleft_A.md5anim + anim rotoutright2_out models/md5/monsters/zcc/chaingun_wallrotright_B.md5anim { + frame 1 sound_weapon monster_zombie_commando_windup + frame 8 sound_body monster_zombie_commando_footstep + frame 8 sound_body2 monster_zombie_commando_footstep_clinks + } + anim rotoutright2_fire models/md5/monsters/zcc/chaingun_wallrotright_C.md5anim { + frame 3 sound_weapon monster_zombie_commando_cgun_fire + frame 3 launch_missile barrel + frame 6 sound_weapon monster_zombie_commando_cgun_fire + frame 6 launch_missile barrel + frame 9 sound_weapon monster_zombie_commando_cgun_fire + frame 9 launch_missile barrel + frame 12 sound_weapon monster_zombie_commando_cgun_fire + frame 12 launch_missile barrel + frame 16 sound_weapon monster_zombie_commando_cgun_fire + frame 16 launch_missile barrel + frame 20 sound_weapon monster_zombie_commando_cgun_fire + frame 20 launch_missile barrel + frame 23 sound_weapon monster_zombie_commando_cgun_fire + frame 23 launch_missile barrel + frame 27 sound_weapon monster_zombie_commando_cgun_fire + frame 27 launch_missile barrel + frame 30 sound_weapon monster_zombie_commando_cgun_fire + frame 30 launch_missile barrel + frame 33 sound_weapon monster_zombie_commando_cgun_fire + frame 33 launch_missile barrel + frame 37 sound_weapon monster_zombie_commando_cgun_fire + frame 37 launch_missile barrel + frame 41 sound_weapon monster_zombie_commando_cgun_fire + frame 41 launch_missile barrel + frame 45 sound_weapon monster_zombie_commando_cgun_fire + frame 45 launch_missile barrel + } + + anim rotoutright2_in models/md5/monsters/zcc/chaingun_wallrotright_D.md5anim { + frame 1 sound_weapon monster_zombie_commando_winddown + frame 21 sound_body monster_zombie_commando_footstep + frame 21 sound_body2 monster_zombie_commando_footstep_clinks + } + anim rotoutright2_wait models/md5/monsters/zcc/chaingun_wallrotright_A.md5anim +} + +entityDef monster_zombie_commando_cgun { + "inherit" "monster_default" + "scriptobject" "ai" + "nativeobject" "rvmMonsterZombieCommandoCGun" + "ragdoll" "monster_zombie_commando_cgun" + "size" "48 48 68" + "use_aas" "aas48" + "team" "1" + "rank" "1" + "health" "225" + "def_projectile" "projectile_zombie_commando_cgun" + "attack_cone" "70" + "attack_accuracy" "2" + "projectile_spread" "0" + "num_projectiles" "1" + "smoke_weapon" "cgsmoke.smoke" + "model" "monster_zombie_commando_cgun" + "bone_focus" "Head" + "smoke_wound_metal" "bulletricochet.prt" + "smoke_wound_ricochet" "bulletricochet.prt" + "gib" "0" + "bleed" "1" + + "burnaway" "0.50" + "smoke_burnParticleSystem" "burn_imp.prt-spine_1" + + "blockedRadius" "10" + "blockedMoveTime" "500" + "blockedAttackTime" "500" + + "look_min" "-90 -125 0" + "look_max" "25 125 0" + "look_joint spine_1" "0.4 0.4 0" + "look_joint Head" "0.6 0.6 0" + + "damage_zone head" "*neck_1" + "damage_zone chest" "*spine_1 -*Rshldr -*Lshldr -*neck_1" + "damage_zone left_arm" "*Lshldr" + "damage_zone right_arm" "*Rshldr" + "damage_zone legs" "origin lolegs" + "damage_scale head" "2" + + "mass" "450" + + "ik_numLegs" "2" + "ik_footSize" "4" + "ik_waist" "Body" + "ik_hip1" "Lupleg" + "ik_hip2" "Rupleg" + "ik_knee1" "Lloleg" + "ik_knee2" "Rloleg" + "ik_ankle1" "Lankle" + "ik_ankle2" "Rankle" + "ik_dir1" "Lknee" + "ik_dir2" "Rknee" + "ik_foot1" "Lball" + "ik_foot2" "Rball" + + "snd_fire" "monster_zombie_commando_cgun_fire" + "snd_winddown" "monster_zombie_commando_winddown" + "snd_windup" "monster_zombie_commando_windup" + "snd_sight1" "monster_zombie_commando_sight1" + "snd_sight2" "monster_zombie_commando_sight2" + "snd_chatter" "monster_zombie_commando_chatter" + "snd_chatter_combat" "monster_zombie_commando_chatter_combat" + "snd_pain" "monster_zombie_commando_pain" + //"snd_attackmissile" "monster_zombie_commando_attackmissile" + "snd_melee_attack_1" "monster_zombie_commando_attackmelee_1" + "snd_melee_attack_2" "monster_zombie_commando_attackmelee_2" + "snd_melee_attack_3" "monster_zombie_commando_attackmelee_3" + "snd_melee_attack_4" "monster_zombie_commando_attackmelee_4" + "snd_melee_attack_5" "monster_zombie_commando_attackmelee_5" + "snd_death" "monster_zombie_commando_death" + "snd_thud" "monster_zombie_commando_thud" + "snd_footstep" "monster_zombie_commando_footstep" + "snd_breath" "monster_zombie_commando_breath" + "snd_inhale" "monster_zombie_commando_breath_inhale" + "snd_exhale" "monster_zombie_commando_breath_exhale" + "snd_bounce" "ragdoll_impact" + "snd_bodyroll" "monster_zombie_commando_body_roll" + "snd_range_attack_1" "monster_zombie_commando_range_attack_1" + "snd_range_attack_2" "monster_zombie_commando_range_attack_2" + "snd_range_attack_3" "monster_zombie_commando_range_attack_3" + "snd_burn" "monster_demon_tick_burn" + + "def_dropDeathItem" "moveable_item_chaingun" + "dropDeathItemJoint" "chain_root" + "skin_dropDeath" "zcc_dropgun" + + "mtr_flashShader" "muzzleflash" + "flashTime" "0.15" + "flashColor" "1 0.8 0.4" + "flashRadius" "120" +} + +entityDef projectile_zombie_commando_cgun { + "spawnclass" "idProjectile" + "mins" "-1 -1 -1" + "maxs" "1 1 1" + "cone" "3" + "scale" "0.1" + "noshadows" "1" + "tracers" "1" + "model_tracer" "models/particles/tracer/tracer.lwo" + + "snd_tracer" "bullet_flight" + "snd_ricochet" "bullet_ricochet" + "snd_impact" "" // we need a much smaller impact sound for the chaingun bullet "bullet_impact_metal" + + "decal_scale" "8" + + "def_damage" "damage_zombie_commando_cgun" + + "launchFromBarrel" "1" + "health" "0" + // slowed down for tracers + "velocity" "2000 0 0" // .38 Special 600 fps. Source: Petzal, David E. "How fast is a speeding bullet." Field and Stream. 97 (1992): 23 + "angular_velocity" "0 0 0" + "thrust" "0" + "thrust_start" "0" + "thrust_end" "0" + "linear_friction" "0" + "angular_friction" "0" + "contact_friction" "0" + "bounce" "0.6" + "mass" "2" + "gravity" "0" + "fuse" "4" + + "detonate_on_fuse" "0" + "detonate_on_death" "0" + "detonate_on_world" "1" + "detonate_on_actor" "1" + + "impact_damage_effect" "1" + "impact_gib" "1" + + "mtr_detonate" "textures/decals/bulleth02" + "decal_size" "10" + + "smoke_detonate" "smokeandspark.smoke" + "smoke_residue" "" //particles/chaingun_residue.particle" + "smoke_bounce" "" //particles/chaingun_bounce.particle" + "smoke_fuse" "" + + "mtr_light_shader" "" + "light_color" "0 0 0" + "light_radius" "0" + "light_offset" "0 0 0" + + "mtr_explode_light_shader" "" + "explode_light_color" "0 0 0" + "explode_light_radius" "0" + "explode_light_fadetime" "0" +} + +entityDef damage_zombie_commando_cgun { + "damage" "3" + "kickDir" "1 0 0" + + "mtr_blob" "genericDamage" + "blob_time" "300" + "blob_size" "400" + "blob_offset_x" "400" + + "knockback" "1" + + "smoke_wound_flesh" "bloodwound.smoke" + + "kick_time" "10" + "kick_amplitude" "0" + + "dv_time" "100" +} diff --git a/base/def/monster_zombie_fat.def b/base/def/monster_zombie_fat.def new file mode 100644 index 00000000..64111ab0 --- /dev/null +++ b/base/def/monster_zombie_fat.def @@ -0,0 +1,415 @@ +/*********************************************************************** + +monster_zombie_fat + +***********************************************************************/ + +export fred { + + options -prefix FATTY_ -parent pipe Rhand -keep rub Lknee Rknee -parent rub waist -parent Belly rub + + anim maps/fred/delta2a/bathroomzombies.mb -range 1 1 -dest models/md5/monsters/zfat/deltabathroomloop + anim maps/fred/delta2a/bathroomzombies.mb -dest models/md5/monsters/zfat/deltabathroomgetup + anim models/monsters/combos/zjump_eats_zfat_loop.mb -dest models/md5/combos/zfat_eatenby_zjump_loop + anim models/monsters/combos/zjump_eats_zfat_getup.mb -dest models/md5/combos/zfat_eatenby_zjump_getup + anim maps/fred/marscity_2/mars_city2.mb -range 1 90 -dest models/md5/cinematics/marscity_2/impfeast_fatty_loop + anim maps/fred/marscity_2/mars_city2.mb -range 91 170 -dest models/md5/cinematics/marscity_2/impfeast_fatty + anim maps/fred/marscity_2/mars_city2.mb -range 170 170 -dest models/md5/cinematics/marscity_2/impfeast_fatty_end + //anim maps/fred/underground/airlockencounter.mb -rotate 180 -range 1 80 -dest models/md5/cinematics/underground/airlockfdrag + //anim maps/fred/underground/airlockencounter.mb -rotate 180 -range 81 150 -dest models/md5/cinematics/underground/airlockfeatloop + //anim maps/fred/underground/airlockencounter.mb -rotate 180 -range 150 186 -dest models/md5/cinematics/underground/airlockfgetup + + addoptions -prefix FATYY_ + anim maps/fred/delta2a/zoffice3.mb -xyzprecision 0.001 -quatprecision 0.00001 -dest models/md5/cinematics/delta2a/zoffice3 + + addoptions -prefix FAT_ + anim models/monsters/zombie/fatty/animation/cycles/pipeidle.ma -rotate 90 -dest models/md5/monsters/zfat/pipeidle + + addoptions -prefix FATTY_ -sourcedir models/monsters/zombie/fatty/animation/cycles -destdir models/md5/monsters/zfat + + mesh makemesh.ma -dest zfat + mesh influence_zfat.mb -skipmesh monkeywrench_layer1 -skipmesh fattyskel -skipmesh fattydamagemodel + + anim idle1.ma + anim sight3.ma + anim walk1.ma + anim walk2.ma -cycleStart 30 + anim walk3.ma -cycleStart 23 + anim walk4.ma + anim facepain.ma + anim bellypain.ma + anim leftarmpain.ma + anim rightarmpain.ma + anim legpain.ma + anim death1.ma + anim death1_twitch.ma + anim turn_left.ma + anim turn_right.ma + anim death2.ma + anim getup_attempt1.ma + anim getup_attempt2.ma + anim getup1.ma + anim getup1.ma -range 1 1 -dest death1_pose + anim getup2.ma + anim initial.ma + anim attack1.ma + anim attack_leftslap.ma + anim attack2.ma + anim attack3.ma + anim barrel_idle.ma + anim barrel_throw.ma + anim pipeattack1.ma + anim pipewalk4.ma + anim pipesight.ma + anim influence_eating_arm.mb -rotate 90 + +} + +model monster_zombie_fat { + mesh models/md5/monsters/zfat/zfat.md5mesh + channel torso ( *waist ) + channel legs ( *Hips origin Body Body2 ) + + anim af_pose models/md5/monsters/zfat/initial.md5anim + anim ik_pose models/md5/monsters/zfat/initial.md5anim + + anim initial models/md5/monsters/zfat/initial.md5anim + + anim idle models/md5/monsters/zfat/idle1.md5anim + anim sight models/md5/monsters/zfat/sight3.md5anim { + frame 1 sound_voice snd_sight3 + frame 30 leftfoot + } + anim walk models/md5/monsters/zfat/walk1.md5anim { + frame 7 rightfoot + frame 25 leftfoot + } + anim walk2 models/md5/monsters/zfat/walk2.md5anim { + frame 15 leftfoot + frame 37 rightfoot + } + anim walk3 models/md5/monsters/zfat/walk3.md5anim { + frame 5 leftfoot + frame 18 rightfoot + } + anim walk4 models/md5/monsters/zfat/walk4.md5anim { + frame 7 rightfoot + frame 26 leftfoot + } + anim melee_attack1 models/md5/monsters/zfat/attack_leftslap.md5anim { + frame 1 sound_weapon snd_melee_attack_1 + frame 4 rightfoot + frame 13 melee melee_zombie_fat_Left2 + frame 17 leftfoot + frame 25 rightfoot + } + anim melee_attack2 models/md5/monsters/zfat/attack2.md5anim { + frame 1 sound_weapon snd_melee_attack_2 + frame 4 rightfoot + frame 8 melee melee_zombie_fat_Right + frame 17 leftfoot + } + anim melee_attack3 models/md5/monsters/zfat/attack3.md5anim { + frame 1 sound_weapon snd_melee_attack_3 + frame 4 rightfoot + frame 10 melee melee_zombie_fat_Left + frame 17 leftfoot + } + // included twice so that we have an even number of left and right attacks + anim melee_attack4 models/md5/monsters/zfat/attack3.md5anim { + frame 1 sound_weapon snd_melee_attack_3 + frame 4 rightfoot + frame 10 melee melee_zombie_fat_Left + frame 17 leftfoot + } + anim pain models/md5/monsters/zfat/bellypain.md5anim { + frame 1 sound_voice snd_pain + frame 3 leftfoot + frame 18 leftfoot + } + anim pain_head models/md5/monsters/zfat/facepain.md5anim { + frame 1 sound_voice snd_pain + frame 9 leftfoot + } + anim pain_left_arm models/md5/monsters/zfat/leftarmpain.md5anim { + frame 1 sound_voice snd_pain + frame 3 leftfoot + frame 19 leftfoot + } + anim pain_right_arm models/md5/monsters/zfat/rightarmpain.md5anim { + frame 1 sound_voice snd_pain + frame 4 leftfoot + frame 18 leftfoot + } + anim pain_chest models/md5/monsters/zfat/bellypain.md5anim { + frame 1 sound_voice snd_pain + frame 3 leftfoot + frame 18 leftfoot + } + + anim zjump_eats_zfat_loop models/md5/combos/zfat_eatenby_zjump_loop.md5anim { + frame 1 disableWalkIK + ai_no_turn + } + anim zjump_eats_zfat_getup models/md5/combos/zfat_eatenby_zjump_getup.md5anim { + ai_no_turn + + frame 1 call overrideLegs + frame 1 disableWalkIK + frame 80 enableWalkIK + } + + anim death_getup_pose models/md5/monsters/zfat/death1_pose.md5anim { + ai_no_turn + frame 1 disableWalkIK + frame 1 call overrideLegs + } + + anim death1pose models/md5/monsters/zfat/death1_pose.md5anim { + ai_no_turn + frame 1 disableWalkIK + frame 1 call overrideLegs + } + + anim barrel_idle models/md5/monsters/zfat/barrel_Idle.md5anim + anim barrel_throw models/md5/monsters/zfat/barrel_Throw.md5anim { + frame 1 sound_voice snd_sight1 + frame 17 event throwMoveable + } +} + +entityDef monster_zombie_fat { + "inherit" "zombie_default" + "scriptobject" "ai" + "nativeobject" "rvmMonsterZombie" + "size" "48 48 68" + "use_aas" "aas48" + "team" "1" + "rank" "0" + "health" "100" + "melee_range" "32" + "walk_on_sight" "1" + "mass" "200" + + "blockedRadius" "10" + "blockedMoveTime" "1200" + "blockedAttackTime" "1200" + + "ik_numLegs" "2" + "ik_footSize" "4" + "ik_waist" "Body2" + "ik_foot1" "Ltoe_r" + "ik_foot2" "Rtoe_r" + "ik_ankle1" "Lankle_r" + "ik_ankle2" "Rankle_r" + "ik_knee1" "Lloleg" + "ik_knee2" "Rloleg" + "ik_hip1" "Lupleg" + "ik_hip2" "Rupleg" + "ik_dir1" "Lknee" + "ik_dir2" "Rknee" + + "model" "monster_zombie_fat" + "ragdoll" "monster_zombie_fat" + "skin" "skins/monsters/zombies/zfat.skin" + + "damage_zone head" "*loneck" + "damage_zone chest" "*waist -*Rshldr -*Lshldr -*loneck" + "damage_zone left_arm" "*Lshldr" + "damage_zone right_arm" "*Rshldr" + "damage_zone legs" "*Hips origin Body Body2" + + "damage_scale head" "2" + + "dropGibItem9Joint" "head" + + "snd_sight1" "monster_zombie_fat_sight1" + "snd_sight2" "monster_zombie_fat_sight2" + "snd_sight3" "monster_zombie_fat_sight3" + "snd_sight4" "monster_zombie_fat_sight4" + "snd_sight5" "monster_zombie_fat_sight5" + "snd_sight6" "monster_zombie_fat_sight6" + "snd_sight7" "monster_zombie_fat_sight7" + "snd_swipe" "monster_zombie_fat_swipe" + "snd_wrench" "monster_zombie_fat_wrench" + + "snd_footstep" "monster_zombie_fat_footstep" + "snd_chatter" "monster_zombie_fat_chatter" + "snd_chatter_combat" "monster_zombie_fat_chatter_combat" + "snd_pain" "monster_zombie_fat_pain" + "snd_melee_attack_1" "monster_zombie_fat_attackmelee_1" + "snd_melee_attack_2" "monster_zombie_fat_attackmelee_2" + "snd_melee_attack_3" "monster_zombie_fat_attackmelee_3" + "snd_thud" "monster_zombie_fat_thud" + "snd_bounce" "ragdoll_impact" + + "skin_dropGib" "skins/monsters/zombies/zfatgib.skin" +} + + +entityDef monster_zombie_fat2 { + "inherit" "monster_zombie_fat" + "skin" "skins/monsters/zombies/zfat2.skin" + "skin_dropGib" "skins/monsters/zombies/zfatgib2.skin" +} + +/*********************************************************************** + +monster_zombie_fat_wrench + +***********************************************************************/ + +model monster_zombie_fat_wrench { + inherit monster_zombie_fat + + anim idle models/md5/monsters/zfat/pipeidle.md5anim + anim sight models/md5/monsters/zfat/pipesight.md5anim + anim walk models/md5/monsters/zfat/pipewalk4.md5anim { + frame 7 rightfoot + frame 26 leftfoot + } + anim walk2 models/md5/monsters/zfat/pipewalk4.md5anim { + frame 7 rightfoot + frame 26 leftfoot + } + anim walk3 models/md5/monsters/zfat/pipewalk4.md5anim { + frame 7 rightfoot + frame 26 leftfoot + } + anim walk4 models/md5/monsters/zfat/pipewalk4.md5anim { + frame 7 rightfoot + frame 26 leftfoot + } + anim melee_attack1 models/md5/monsters/zfat/pipeattack1.md5anim { + frame 8 melee melee_zombie_fat_right_wrench + } + anim melee_attack2 models/md5/monsters/zfat/pipeattack1.md5anim { + frame 8 melee melee_zombie_fat_right_wrench + } + anim melee_attack3 models/md5/monsters/zfat/pipeattack1.md5anim { + frame 8 melee melee_zombie_fat_right_wrench + } + anim melee_attack4 models/md5/monsters/zfat/pipeattack1.md5anim { + frame 8 melee melee_zombie_fat_right_wrench + } +} + +entityDef monster_zombie_fat_wrench { + "inherit" "monster_zombie_fat" + "model" "monster_zombie_fat_wrench" + "skin" "skins/monsters/zombies/zfatwrench.skin" + + "def_dropDeathItem" "moveable_wrench" + "dropDeathItemJoint" "pipe" + "skin_dropDeath" "skins/monsters/zombies/zfat2.skin" +} + + +entityDef melee_zombie_fat_Left { + // melee specific parameters + "snd_hit" "fist_impact" + "snd_miss" "fist_whoosh" + "kickDir" "0 -1 0" + + // damage parameters + "damage" "20" + + "mtr_blob" "leftSmack" + "blob_time" "600" + "blob_x" "-140" + "blob_y" "-100" + "blob_width" "600" + "blob_height" "600" + + "knockback" "55" + + "kick_time" "350" + "kick_amplitude" "1.1" + + "dv_time" "100" +} + +entityDef melee_zombie_fat_Left2 { + // melee specific parameters + "snd_hit" "fist_impact" + "snd_miss" "fist_whoosh" + "kickDir" "0 -1 0" + + // damage parameters + "damage" "20" + + "mtr_blob" "leftSmack" + "blob_time" "600" + "blob_x" "140" + "blob_y" "-100" + "blob_width" "600" + "blob_height" "600" + + "knockback" "40" + + "kick_time" "350" + "kick_amplitude" "1.1" + + "dv_time" "100" +} + +entityDef melee_zombie_fat_Right { + "snd_hit" "fist_impact" + "snd_miss" "fist_whoosh" + "kickDir" "0 1 0" + + "damage" "20" + + "mtr_blob" "rightSmack" + "blob_time" "600" + "blob_x" "-140" + "blob_y" "-100" + "blob_width" "600" + "blob_height" "600" + + "knockback" "45" + + "kick_time" "350" + "kick_amplitude" "1.1" + + "dv_time" "100" +} + +entityDef melee_zombie_fat_right_wrench { + "snd_hit" "monster_zombie_fat_wrench" + "snd_miss" "fist_whoosh" + "kickDir" "0 1 0" + + "damage" "20" + + "mtr_blob" "rightSmack" + "blob_time" "600" + "blob_x" "-140" + "blob_y" "-100" + "blob_width" "600" + "blob_height" "600" + + "knockback" "45" + + "kick_time" "350" + "kick_amplitude" "1.1" + + "dv_time" "100" +} + +/*********************************************************************** + +monster_zombie_fat_eating + +***********************************************************************/ + +model monster_zombie_fat_eating { + mesh models/md5/monsters/zfat/influence_zfat.md5mesh + anim eating_arm models/md5/monsters/zfat/influence_eating_arm.md5anim +} + +entityDef monster_zombie_fat_eating { + "inherit" "cin_base" + "model" "monster_zombie_fat_eating" + "anim" "eating_arm" +} diff --git a/base/def/monster_zombie_fem.def b/base/def/monster_zombie_fem.def new file mode 100644 index 00000000..109f8458 --- /dev/null +++ b/base/def/monster_zombie_fem.def @@ -0,0 +1,210 @@ +/*********************************************************************** + +monster_zombie_fem.def + +***********************************************************************/ + +export fred { + options -prefix ZFEM_ -align ALL -keep LkneeVector RkneeVector Lball_r Rball_r HEAD_headcontrol HEAD_neckcontrol HEAD_loneckcontrol HEAD_Leyeaim HEAD_Reyeaim -parent HEAD_Head HEAD_headcontrol -parent HEAD_Reyeaim HEAD_Head -parent HEAD_Leyeaim HEAD_Head -parent HEAD_headcontrol HEAD_neckcontrol -parent HEAD_neckcontrol HEAD_loneckcontrol -parent HEAD_Neck HEAD_neckcontrol -parent HEAD_Jaw HEAD_Head -parent HEAD_mouth12 HEAD_Head -parent HEAD_mouth1 HEAD_Head -parent HEAD_mouth2 HEAD_Head -parent HEAD_mouth3 HEAD_Head -parent HEAD_mouth4 HEAD_Jaw -parent HEAD_mouth5 HEAD_Jaw -parent HEAD_mouth6 HEAD_Jaw -parent HEAD_mouth7 HEAD_Jaw -parent HEAD_mouth8 HEAD_Jaw -parent HEAD_mouth9 HEAD_Head -parent HEAD_mouth10 HEAD_Head -parent HEAD_mouth11 HEAD_Head -parent HEAD_tongue1 HEAD_Jaw -parent HEAD_Lcheek HEAD_Head -parent HEAD_Rcheek HEAD_Head -parent HEAD_Rnostril HEAD_Head -parent HEAD_Lnostril HEAD_Head -parent HEAD_Lsmile HEAD_Head -parent HEAD_Rsmile HEAD_Head -parent HEAD_Rcheek HEAD_Head -parent HEAD_Lcheek HEAD_Head -parent HEAD_Lsneer HEAD_Head -parent HEAD_Rsneer HEAD_Head -parent HEAD_Lbrow1 HEAD_Head -parent HEAD_Lbrow2 HEAD_Head -parent HEAD_Lbrow3 HEAD_Head -parent HEAD_Rbrow1 HEAD_Head -parent HEAD_Rbrow2 HEAD_Head -parent HEAD_Rbrow3 HEAD_Head -parent HEAD_Ruplid HEAD_Head -parent HEAD_Rlolid HEAD_Head -parent HEAD_Luplid HEAD_Head -parent HEAD_Llolid HEAD_Head -sourcedir models/monsters/zombie/zfem/cycles -destdir models/md5/monsters/zfem + addoptions -keepmesh ZFEMMESH + addoptions -keepmesh teethmesh + + mesh makemesh.mb -dest zfem + + anim reginitial.mb -dest initial + anim idle.mb -xyzprecision .01 -dest idle + anim walk1.mb + anim nicewalk.mb -dest walk2 + anim run2.mb +} + +export fred { + options -prefix FEM_ -keep LkneeVector RkneeVector Lball_r Rball_r HEAD_headcontrol HEAD_neckcontrol HEAD_loneckcontrol HEAD_Leyeaim HEAD_Reyeaim -parent HEAD_Head HEAD_headcontrol -parent HEAD_Reyeaim HEAD_Head -parent HEAD_Leyeaim HEAD_Head -parent HEAD_headcontrol HEAD_neckcontrol -parent HEAD_neckcontrol HEAD_loneckcontrol -parent HEAD_Neck HEAD_neckcontrol -parent HEAD_Jaw HEAD_Head -parent HEAD_mouth12 HEAD_Head -parent HEAD_mouth1 HEAD_Head -parent HEAD_mouth2 HEAD_Head -parent HEAD_mouth3 HEAD_Head -parent HEAD_mouth4 HEAD_Jaw -parent HEAD_mouth5 HEAD_Jaw -parent HEAD_mouth6 HEAD_Jaw -parent HEAD_mouth7 HEAD_Jaw -parent HEAD_mouth8 HEAD_Jaw -parent HEAD_mouth9 HEAD_Head -parent HEAD_mouth10 HEAD_Head -parent HEAD_mouth11 HEAD_Head -parent HEAD_tongue1 HEAD_Jaw -parent HEAD_Lcheek HEAD_Head -parent HEAD_Rcheek HEAD_Head -parent HEAD_Rnostril HEAD_Head -parent HEAD_Lnostril HEAD_Head -parent HEAD_Lsmile HEAD_Head -parent HEAD_Rsmile HEAD_Head -parent HEAD_Rcheek HEAD_Head -parent HEAD_Lcheek HEAD_Head -parent HEAD_Lsneer HEAD_Head -parent HEAD_Rsneer HEAD_Head -parent HEAD_Lbrow1 HEAD_Head -parent HEAD_Lbrow2 HEAD_Head -parent HEAD_Lbrow3 HEAD_Head -parent HEAD_Rbrow1 HEAD_Head -parent HEAD_Rbrow2 HEAD_Head -parent HEAD_Rbrow3 HEAD_Head -parent HEAD_Ruplid HEAD_Head -parent HEAD_Rlolid HEAD_Head -parent HEAD_Luplid HEAD_Head -parent HEAD_Llolid HEAD_Head -parent HEAD_Lside HEAD_Head -parent HEAD_Rside HEAD_Head + + addoptions -skipmesh ZFEMMESH + + anim maps/fred/enpro/poppyidle.mb -range 1 130 -dest models/md5/cinematics/enpro/fem_lostintrostart + anim maps/fred/enpro/lostsoulintro.mb -range 1 219 -dest models/md5/cinematics/enpro/fem_lostintro1 + addoptions -prefix POPPY_ + anim maps/fred/enpro/lostsoulintro_poppy.mb -range 187 269 -dest models/md5/cinematics/enpro/fem_lostintro2 + + addoptions -align ALL + addoptions -prefix ZFEM_ + addoptions -sourcedir models/monsters/zombie/zfem/cycles + addoptions -destdir models/md5/characters/poppy + + mesh makemesh.mb -dest poppy + + anim initial.mb + anim idle.mb -xyzprecision .01 -dest idle + anim walk1.mb + anim nicewalk.mb -dest walk2 + anim walk2.mb -dest walk3 + anim fastwalk.mb -dest walk4 + anim run2.mb + +} + + +model monster_zombie_zfem { + mesh models/md5/monsters/zfem/zfem.md5mesh + channel torso ( *Waist ) + channel legs ( *Hips origin Body2 ) + + anim af_pose models/md5/monsters/zfem/initial.md5anim + anim ik_pose models/md5/monsters/zfem/initial.md5anim + + anim initial models/md5/monsters/zfem/initial.md5anim + anim idle models/md5/monsters/zfem/idle.md5anim + anim stand models/md5/monsters/zfem/idle.md5anim + anim sight models/md5/monsters/zfem/idle.md5anim + anim run models/md5/monsters/zfem/run2.md5anim + anim walk1 models/md5/monsters/zfem/walk1.md5anim + anim walk2 models/md5/monsters/zfem/walk2.md5anim + + //anim pain_head models/monsters/zombie/fatty/Animation/cycles/facepain.md5anim + //anim pain_left_arm models/monsters/zombie/fatty/Animation/cycles/leftarmpain.md5anim + //anim pain_right_arm models/monsters/zombie/fatty/Animation/cycles/rightarmpain.md5anim + //anim pain_legs models/monsters/zombie/fatty/Animation/cycles/legpain.md5anim + //anim pain_chest models/monsters/zombie/fatty/Animation/cycles/bellypain.md5anim + + //anim death models/monsters/zombie/fatty/Animation/cycles/death1.md5anim + //anim death_getup_attempt models/monsters/zombie/fatty/Animation/cycles/getup_attempt1.md5anim + //anim death_getup models/monsters/zombie/fatty/Animation/cycles/getup1.md5anim + //anim death_twitch models/monsters/zombie/fatty/Animation/cycles/death1_twitch +} + +entityDef monster_zombie_zfem { + "inherit" "zombie_default" + "scriptobject" "ai" + "nativeobject" "rvmMonsterZombie" + "size" "48 48 68" + "use_aas" "aas48" + "team" "1" + "rank" "0" + "health" "100" + "melee_range" "32" + "mass" "125" + + "model" "monster_zombie_zfem" + "ragdoll" "monster_zombie_zfem" + + //"damage_zone head" "*loneck" + //"damage_zone chest" "*waist -*Rshldr -*Lshldr -*loneck" + //"damage_zone left_arm" "*Lshldr" + //"damage_zone right_arm" "*Rshldr" + //"damage_zone legs" "*Hips origin Body Body2" + + //"damage_scale head" "2" +} + + +model char_poppy { + mesh models/md5/characters/poppy/poppy.md5mesh + channel torso ( *Waist ) + channel legs ( *Hips origin Body2 ) + + anim af_pose models/md5/characters/poppy/initial.md5anim + anim ik_pose models/md5/characters/poppy/initial.md5anim + + anim initial models/md5/characters/poppy/initial.md5anim + anim stand models/md5/characters/poppy/idle.md5anim + anim idle models/md5/characters/poppy/idle.md5anim + anim run models/md5/characters/poppy/run2.md5anim + anim walk models/md5/characters/poppy/walk3.md5anim + + //anim pain_head models/monsters/zombie/fatty/Animation/cycles/facepain.md5anim + //anim pain_left_arm models/monsters/zombie/fatty/Animation/cycles/leftarmpain.md5anim + //anim pain_right_arm models/monsters/zombie/fatty/Animation/cycles/rightarmpain.md5anim + //anim pain_legs models/monsters/zombie/fatty/Animation/cycles/legpain.md5anim + //anim pain_chest models/monsters/zombie/fatty/Animation/cycles/bellypain.md5anim + + //anim death models/monsters/zombie/fatty/Animation/cycles/death1.md5anim + //anim death_getup_attempt models/monsters/zombie/fatty/Animation/cycles/getup_attempt1.md5anim + //anim death_getup models/monsters/zombie/fatty/Animation/cycles/getup1.md5anim + //anim death_twitch models/monsters/zombie/fatty/Animation/cycles/death1_twitch +} + +entityDef char_poppy { + "inherit" "character_default" + "scriptobject" "ai" + "nativeobject" "rvmCharacter" + "size" "48 48 68" + "use_aas" "aas48" + "team" "1" + "rank" "0" + "health" "100" + "melee_range" "32" + "mass" "125" + "head_look" "1" + + "skin" "skins/poppy.skin" + + "ik_numLegs" "2" + "ik_footSize" "0" + "ik_waist" "Body2" + "ik_hip1" "Lupleg" + "ik_hip2" "Rupleg" + "ik_knee1" "Lloleg" + "ik_knee2" "Rloleg" + "ik_ankle1" "Lankle_r" + "ik_ankle2" "Rankle_r" + "ik_dir1" "LkneeVector" + "ik_dir2" "RkneeVector" + "ik_foot1" "Lball_r" + "ik_foot2" "Rball_r" + + "bone_focus" "HEAD_headcontrol" + "bone_leftEye" "HEAD_Leyeaim" + "bone_rightEye" "HEAD_Reyeaim" + + "look_min" "-90 -125 0" + "look_max" "25 125 0" + "look_joint Waist" "0.1333 0.1333 0" + "look_joint Chest" "0.1333 0.1333 0" + "look_joint Shoulders" "0.1333 0.1333 0" + "look_joint HEAD_headcontrol" "0.6 0.6 0" + "look_joint Ruparm" "-0.4 0 0" + "look_joint Luparm" "-0.4 0 0" + + "model" "char_poppy" + "ragdoll" "char_poppy" + "gib" "1" + + //"damage_zone head" "*loneck" + //"damage_zone chest" "*waist -*Rshldr -*Lshldr -*loneck" + //"damage_zone left_arm" "*Lshldr" + //"damage_zone right_arm" "*Rshldr" + //"damage_zone legs" "*Hips origin Body Body2" + + //"damage_scale head" "1.25" + + "skin_dropGib" "skins/poppy_gib.skin" + "def_dropGibItem1" "moveable_item_head_pork" + "dropGibItem1Joint" "headcontrol" + + "def_dropGibItem2" "moveable_item_torso_pork" + "dropGibItem2Joint" "Chest" + + "def_dropGibItem3" "moveable_item_rup_arm_pork" + "dropGibItem3Joint" "Ruparm" + + "def_dropGibItem4" "moveable_item_left_waist_pork" + "dropGibItem4Joint" "Waist" + + "def_dropGibItem5" "moveable_item_lup_leg_pork" + "dropGibItem5Joint" "Lupleg" + + "def_dropGibItem6" "moveable_item_rup_leg_pork" + "dropGibItem6Joint" "Rupleg" + + "def_dropGibItem7" "moveable_item_rup2_leg_pork" + "dropGibItem7Joint" "Rloleg" + + "def_dropGibItem8" "moveable_item_pelvis_pork" + "dropGibItem8Joint" "Hips" + +} + + + diff --git a/base/def/monster_zombie_generic.def b/base/def/monster_zombie_generic.def new file mode 100644 index 00000000..91e212a8 --- /dev/null +++ b/base/def/monster_zombie_generic.def @@ -0,0 +1,679 @@ +/*********************************************************************** + +monster_zombie_generic.def + +***********************************************************************/ + +model model_monster_zombie { + mesh models/md5/chars/skeleton.md5mesh + + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER eyecontrol chair) + + anim af_pose models/md5/chars/af_pose.md5anim + anim ik_pose models/md5/chars/af_pose.md5anim + + anim idle1 models/md5/monsters/zombies/zidle1.md5anim + anim idle2 models/md5/monsters/zombies/zombie_idle1.md5anim + anim idle3 models/md5/monsters/zombies/zombie_idle2.md5anim + + anim stand models/md5/monsters/zombies/zidle1.md5anim + + anim sight1 models/md5/monsters/zombies/zsight1.md5anim { + frame 1 sound snd_sight1 + } + anim sight2 models/md5/monsters/zombies/zsight2.md5anim { + frame 1 sound snd_sight1 + frame 15 sound_body snd_footstep + frame 32 sound_body snd_footstep + } + + anim walk models/md5/monsters/zombies/zwalk1.md5anim { + frame 11 sound_body snd_footstep + frame 24 sound_body snd_footstep + frame 40 sound_body snd_footstep + frame 56 sound_body snd_footstep + } + + anim pain models/md5/monsters/zombies/chestpain1.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_head1 models/md5/monsters/zombies/headpain1.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_head2 models/md5/monsters/zombies/headpain2.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_chest1 models/md5/monsters/zombies/chestpain1.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_chest2 models/md5/monsters/zombies/chestpain2.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_left_arm1 models/md5/monsters/zombies/leftarmpain1.md5anim { + frame 5 sound_voice snd_pain + } + anim pain_left_arm2 models/md5/monsters/zombies/leftarmpain2.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_left_arm3 models/md5/monsters/zombies/leftarmpain3.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_right_arm1 models/md5/monsters/zombies/rightarmpain1.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_right_arm2 models/md5/monsters/zombies/rightarmpain2.md5anim { + frame 1 sound_voice snd_pain + } + + anim melee_attack1 models/md5/monsters/zombies/swing1.md5anim { + frame 11 melee melee_zombie_maint_Right + } + anim melee_attack2 models/md5/monsters/zombies/swing2.md5anim { + frame 11 melee melee_zombie_maint_Left + } + anim melee_attack3 models/md5/monsters/zombies/swing3.md5anim { + frame 11 melee melee_zombie_maint_Right + } + anim melee_attack4 models/md5/monsters/zombies/swing4.md5anim { + frame 1 call overrideLegs + frame 17 melee melee_zombie_maint_Right + frame 19 sound_body snd_footstep + frame 35 sound_body snd_footstep + frame 49 sound_body snd_footstep + frame 58 sound_body snd_footstep + } + anim melee_attack5 models/md5/monsters/zombies/swing5.md5anim { + frame 1 call overrideLegs + frame 5 melee melee_zombie_maint_Left + frame 21 sound_body snd_footstep + frame 28 melee melee_zombie_maint_Right + frame 50 sound_body snd_footstep + } + anim crawl_n_getup models/md5/monsters/zombies/zcrawl_n_getup.md5anim { + ai_no_turn + frame 5 sound_voice snd_pain + frame 9 sound_body monster_zombie_fat_footstep + frame 16 sound_body monster_zombie_fat_footstep + frame 22 sound_body monster_zombie_fat_footstep + frame 37 sound_voice snd_pain + frame 53 sound_body snd_footstep + } + anim crawl_n_getup_idle models/md5/monsters/zombies/zcrawl_n_getup_idle.md5anim { + ai_no_turn + } + anim getup1 models/md5/monsters/zombies/zombie_getup2.md5anim { + ai_no_turn + frame 1 sound_voice monster_zombie_maint_sight + } + anim getup1pose models/md5/monsters/zombies/zombie_getup2_pose.md5anim { + ai_no_turn + } + anim getup2 models/md5/monsters/zombies/zombie_getup3.md5anim { + ai_no_turn + frame 1 sound_voice monster_zombie_maint_sight + } + anim getup2pose models/md5/monsters/zombies/zombie_getup3_pose.md5anim { + ai_no_turn + } + anim benchpose models/md5/monsters/zombies/keycardgetupidle.md5anim { + ai_no_turn + } + anim benchgetup models/md5/monsters/zombies/keycardgetup.md5anim { + ai_no_turn + } +} + +entityDef monster_zombie_base { + "inherit" "zombie_default" + "model" "model_monster_zombie" + "scriptobject" "ai" + "nativeobject" "rvmMonsterZombie" + + "size" "40 40 72" + "use_aas" "aas48" + "team" "1" + "rank" "0" + "health" "80" + "melee_range" "32" + + "turn_rate" "360" + "mass" "150" + + "burnaway" "1.5" + + "bone_focus" "headcontrol" + "bone_leftEye" "Leyeaim" + "bone_rightEye" "Reyeaim" + + "look_min" "-90 -125 0" + "look_max" "25 125 0" + "look_joint Waist" "0.1333 0.1333 0" + "look_joint Chest" "0.1333 0.1333 0" + "look_joint Shoulders" "0.1333 0.1333 0" + "look_joint headcontrol" "0.6 0.6 0" + "look_joint Ruparm" "-0.4 0 0" + "look_joint Luparm" "-0.4 0 0" + + "ragdoll" "monster_zombie_base" + + //"model_gib" "models/md5/monsters/zombies/skeletonzombie.md5mesh" + "model_gib" "models/md5/chars/skeleton.md5mesh" + + "ik_numLegs" "2" + "ik_footSize" "4" + "ik_waist" "Body2" + "ik_hip1" "Lupleg" + "ik_hip2" "Rupleg" + "ik_knee1" "Lloleg" + "ik_knee2" "Rloleg" + "ik_ankle1" "Lankle_r" + "ik_ankle2" "Rankle_r" + "ik_dir1" "Lknee" + "ik_dir2" "Rknee" + "ik_foot1" "Lball_r" + "ik_foot2" "Rball_r" + + "damage_zone head" "*loneckcontrol" + "damage_zone chest" "*Waist -*Rshldr -*Lshldr -*loneckcontrol" + "damage_zone left_arm" "*Lshldr" + "damage_zone right_arm" "*Rshldr" + "damage_zone legs" "*Hips" + + "damage_scale head" "2" + + "snd_sight1" "monster_zombie_fat_sight1" + + "snd_idle" "monster_zombie_chainsaw_idle" + "snd_footstep" "monster_zombie_security_footstep" + "snd_chatter" "monster_zombie_fat_chatter" + "snd_chatter_combat" "monster_zombie_fat_chatter_combat" + "snd_pain" "monster_zombie_fat_pain" + "snd_melee_attack" "monster_zombie_fat_attackmelee_1" + "snd_melee_attack_1" "monster_zombie_fat_attackmelee_1" + "snd_melee_attack_2" "monster_zombie_fat_attackmelee_2" + "snd_melee_attack_3" "monster_zombie_fat_attackmelee_3" + "snd_death" "monster_zombie_fat_death_back" + "snd_thud" "monster_zombie_fat_thud" + +} + +model monster_zombie_jumpy { + inherit model_monster_zombie + mesh models/md5/monsters/zombies/jumpsuitzombie.md5mesh + skin skins/monsters/zombies/jumpsuit.skin + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER eyecontrol chair) + +} + +model monster_zombie_jumpsuit { + inherit model_monster_zombie + mesh models/md5/monsters/zombies/jumpsuitzombie.md5mesh + skin skins/monsters/zombies/jumpsuit2.skin + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER eyecontrol chair) + + anim zjump_eats_zsci_loop models/md5/monsters/zombies/deskeatloop.md5anim { + ai_no_turn + frame 1 disableWalkIK + } + anim zjump_eats_zsci_getup models/md5/monsters/zombies/deskeatgetup.md5anim { + ai_no_turn + } + + anim zjump_eats_zfat_loop models/md5/monsters/zombies/flooreatloop.md5anim { + frame 1 disableWalkIK + ai_no_turn + + } + anim zjump_eats_zfat_getup models/md5/monsters/zombies/flooreatgetup.md5anim { + ai_no_turn + frame 1 disableWalkIK + frame 80 enableWalkIK + } + + anim benchgetup models/md5/monsters/zombies/getup_from_bench.md5anim { + ai_no_turn + frame 1 sound_voice snd_sight1 + } + + anim benchidle models/md5/monsters/zombies/getup_from_bench_idle.md5anim { + ai_no_turn + } + +} + +model monster_zombie_wrench { + inherit model_monster_zombie + mesh models/md5/monsters/zombies/jumpsuitzombie.md5mesh + skin skins/monsters/zombies/jumpsuit.skin + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER eyecontrol chair) + + + anim melee_attack1 models/md5/monsters/zombies/swing1.md5anim { + frame 11 melee melee_zombie_fat_right_wrench + } + anim melee_attack2 models/md5/monsters/zombies/swing2.md5anim { + frame 11 melee melee_zombie_maint_Left + } + anim melee_attack3 models/md5/monsters/zombies/swing3.md5anim { + frame 11 melee melee_zombie_fat_right_wrench + } + anim melee_attack4 models/md5/monsters/zombies/swing4.md5anim { + frame 1 call overrideLegs + frame 17 melee melee_zombie_fat_right_wrench + frame 19 sound_body snd_footstep + frame 35 sound_body snd_footstep + frame 49 sound_body snd_footstep + frame 58 sound_body snd_footstep + } + anim melee_attack5 models/md5/monsters/zombies/swing5.md5anim { + frame 1 call overrideLegs + frame 5 melee melee_zombie_maint_Left + frame 21 sound_body snd_footstep + frame 28 melee melee_zombie_fat_right_wrench + frame 50 sound_body snd_footstep + } +} + +model model_monster_zombie_flashlight { + inherit monster_zombie_jumpy + + anim walk models/md5/monsters/zombies/flashlightwalk.md5anim + anim idle1 models/md5/monsters/zombies/zflashidle.md5anim + anim idle2 models/md5/monsters/zombies/zflashidle.md5anim + anim idle3 models/md5/monsters/zombies/zflashidle.md5anim + anim stand models/md5/monsters/zombies/zflashidle.md5anim + anim sight1 models/md5/monsters/zombies/zflashsight.md5anim + anim sight2 models/md5/monsters/zombies/zflashsight.md5anim +} + +model model_monster_zombie_camzombie { + inherit monster_zombie_jumpy + + anim camzombie models/md5/cinematics/commoutside/zombie_with_camera.md5anim { + frame 1 event disableEyeFocus + } +} + +model monster_zombie_suit { + inherit model_monster_zombie + mesh models/md5/monsters/zombies/suitzombie.md5mesh + skin skins/monsters/zombies/suit.skin + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER eyecontrol chair) +} + +model monster_zombie_labcoat { + inherit model_monster_zombie + mesh models/md5/monsters/zombies/labcoatzombie.md5mesh + skin skins/monsters/zombies/labcoat.skin + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER eyecontrol chair) +} + +model monster_zombie_labcoat_hanging { + mesh models/md5/monsters/zombies/labcoatzombie.md5mesh + skin skins/monsters/zombies/labcoat.skin + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER eyecontrol chair) + anim hanging models/md5/monsters/zombies/influence_hanging.md5anim { + ai_no_turn + } +} + +model monster_zombie_soldier { + inherit model_monster_zombie + mesh models/md5/monsters/zombies/tshirtzombie.md5mesh + skin skins/monsters/zombies/soldier.skin + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER eyecontrol chair) +} + +entityDef monster_zombie_jumpsuit { + "inherit" "monster_zombie_base" + "model" "monster_zombie_jumpsuit" + "def_head" "head_zombie3" + "head_joint" "Shoulders" +} + +entityDef monster_zombie_maint_bald { + "inherit" "monster_zombie_base" + "model" "monster_zombie_jumpy" + + "def_head" "head_bloodybald" + "head_joint" "Shoulders" +} + +entityDef monster_zombie_maint_no_jaw { + "inherit" "monster_zombie_base" + "model" "monster_zombie_jumpy" + "skin" "skins/monsters/zombies/jumpsuit.skin" + "def_head" "head_zombie2" + "head_joint" "Shoulders" +} + +entityDef monster_zombie_maint_nojaw { + "inherit" "monster_zombie_base" + "model" "monster_zombie_jumpy" + "skin" "skins/monsters/zombies/jumpsuit.skin" + "def_head" "head_zombie2" + "head_joint" "Shoulders" +} + + +entityDef monster_zombie_maint_wrench { + "inherit" "monster_zombie_base" + "model" "monster_zombie_wrench" + "skin" "skins/monsters/zombies/jumpsuit.skin" + "def_attach" "prop_wrench" + "def_head" "head_zombie2" + "head_joint" "Shoulders" + "smoke_wound_metal" "bulletricochet.prt" + "smoke_wound_ricochet" "bulletricochet.prt" + "def_dropDeathItem" "moveable_wrench" + "dropDeathItemJoint" "Rhand" +} + +entityDef monster_zombie_maint_skinny { + "inherit" "monster_zombie_base" + "model" "monster_zombie_jumpy" + "skin" "skins/monsters/zombies/jumpsuit.skin" + "def_head" "head_zombie1" + "head_joint" "Shoulders" +} + +entityDef monster_zombie_suit_neckstump { + "inherit" "monster_zombie_base" + "model" "monster_zombie_suit" + "skin" "skins/monsters/zombies/suit.skin" + "def_head" "head_stump" + "head_joint" "Shoulders" +} + +entityDef monster_zombie_suit_bloodymouth { + "inherit" "monster_zombie_base" + "model" "monster_zombie_suit" + "skin" "skins/monsters/zombies/suit.skin" + "def_head" "head_zombie3" + "head_joint" "Shoulders" +} + +entityDef monster_zombie_suit_skinny { + "inherit" "monster_zombie_base" + "model" "monster_zombie_suit" + "skin" "skins/monsters/zombies/suit.skin" + "def_head" "head_zombie1" + "head_joint" "Shoulders" +} + +entityDef monster_zombie_labcoat_neckstump { + "inherit" "monster_zombie_base" + "model" "monster_zombie_labcoat" + "skin" "skins/monsters/zombies/labcoat.skin" + "def_head" "head_stump" + "head_joint" "Shoulders" +} + +entityDef monster_zombie_labcoat_limb { + "inherit" "monster_zombie_base" + "model" "monster_zombie_labcoat" + "skin" "skins/monsters/zombies/labcoat.skin" + "def_head" "head_zombie3" + "head_joint" "Shoulders" +} + +entityDef monster_zombie_labcoat_skinny { + "inherit" "monster_zombie_base" + "model" "monster_zombie_labcoat" + "skin" "skins/monsters/zombies/labcoat.skin" + "def_head" "head_zombie1" + "head_joint" "Shoulders" +} + +entityDef monster_zombie_labcoat_pipe { + "inherit" "monster_zombie_base" + "model" "monster_zombie_labcoat" + "skin" "skins/monsters/zombies/labcoat.skin" + "def_head" "head_zombie4" + "head_joint" "Shoulders" +} + +entityDef monster_zombie_labcoat_hanging { + "inherit" "monster_zombie_base" + "model" "monster_zombie_labcoat_hanging" + "skin" "skins/monsters/zombies/labcoat.skin" + "def_head" "head_zombie4" + "turn_rate" "0" + "anim" "hanging" + "head_joint" "Shoulders" + + "look_min" "0 0 0" + "look_max" "0 0 0" + "look_joint Waist" "0 0 0" + "look_joint Chest" "0 0 0" + "look_joint Shoulders" "0 0 0" + "look_joint headcontrol" "0 0 0" + "look_joint Ruparm" "0 0 0" + "look_joint Luparm" "0 0 0" +} + +entityDef monster_zombie_tshirt_bald { + "inherit" "monster_zombie_base" + "model" "monster_zombie_soldier" + "skin" "skins/monsters/zombies/soldier.skin" + "def_head" "head_bloodybald" + "head_joint" "Shoulders" +} + +entityDef monster_zombie_tshirt_blown { + "inherit" "monster_zombie_base" + "model" "monster_zombie_soldier" + "skin" "skins/monsters/zombies/soldier.skin" + "def_head" "head_zombie4" + "head_joint" "Shoulders" +} + +entityDef monster_zombie_maint_flashlight { + "inherit" "zombie_default" + "scriptobject" "ai" + "nativeobject" "rvmMonsterZombie" + "size" "40 40 72" + "use_aas" "aas48" + "team" "1" + "rank" "0" + "health" "80" + "melee_range" "32" + "turn_rate" "360" + "mass" "150" + "smoke_wound_metal" "bulletricochet.prt" + "smoke_wound_ricochet" "bulletricochet.prt" + + "bone_focus" "headcontrol" + "bone_leftEye" "Leyeaim" + "bone_rightEye" "Reyeaim" + + "look_min" "-90 -125 0" + "look_max" "25 125 0" + "look_joint Waist" "0.1333 0.1333 0" + "look_joint Chest" "0.1333 0.1333 0" + "look_joint Shoulders" "0.1333 0.1333 0" + "look_joint headcontrol" "0.6 0.6 0" + "look_joint Ruparm" "-0.4 0 0" + "look_joint Luparm" "-0.4 0 0" + + "ragdoll" "monster_zombie_misc.af" + + "ik_numLegs" "2" + "ik_footSize" "4" + "ik_waist" "Body2" + "ik_foot1" "Lball_r" + "ik_foot2" "Rball_r" + "ik_ankle1" "Lankle_r" + "ik_ankle2" "Rankle_r" + "ik_knee1" "Lloleg" + "ik_knee2" "Rloleg" + "ik_hip1" "Lupleg" + "ik_hip2" "Rupleg" + + "def_attach" "prop_lftflashlight" + "def_dropDeathItem" "moveable_item_flashlight" + "dropDeathItemJoint" "LHANDCONNECTOR" + "dropDeathItemRotation" "0 0 0" + "dropDeathItemOffset" "0 0 0" + + "model" "model_monster_zombie_flashlight" + + "damage_zone head" "*loneckcontrol" + "damage_zone chest" "*Waist -*Rshldr -*Lshldr -*loneckcontrol" + "damage_zone left_arm" "*Lshldr" + "damage_zone right_arm" "*Rshldr" + "damage_zone legs" "*Hips" + + "damage_scale head" "2" + + "def_head" "head_zombie2" + "head_joint" "Shoulders" + + "snd_sight1" "monster_zombie_fat_sight1" + + "snd_idle" "monster_zombie_chainsaw_idle" + "snd_footstep" "monster_zombie_commando_footstep" + "snd_chatter" "monster_zombie_fat_chatter" + "snd_chatter_combat" "monster_zombie_fat_chatter_combat" + "snd_pain" "monster_zombie_fat_pain" + "snd_melee_attack" "monster_zombie_fat_attackmelee_1" + "snd_melee_attack_1" "monster_zombie_fat_attackmelee_1" + "snd_melee_attack_2" "monster_zombie_fat_attackmelee_2" + "snd_melee_attack_3" "monster_zombie_fat_attackmelee_3" + "snd_thud" "monster_zombie_fat_thud" + "model_gib" "models/md5/chars/skeleton.md5mesh" +} + +/*********************************************************************** + +monster_zombie_maint seperate models mesh export + +***********************************************************************/ + +export fred { + options -prefix ZOMBIE2_ + addoptions -parent loneck shoulders + addoptions -parent Jaw head + addoptions -parent waist Hips + addoptions -parent Luparm Lshldr + addoptions -parent Lloarm Luparm + addoptions -parent Ruparm Rshldr + addoptions -parent Rloarm Ruparm + addoptions -keep loneck head R_cheek L_cheek Up_lip Lbrow1 Lbrow2 Rbrow1 Rbrow2 llolid luplid rlolid + addoptions -keep ruplid waist chest shoulders Rshldr Lshldr L_shirt R_shirt Back_shirt Luparm loarm_reg + addoptions loarm_stump lrip2 lrip3 lrip1 lrip4 Lloarm Lhand Lcarp Lindex1 Lindex2 Lthumb0 + addoptions Lthumb1 Lthumb2 Lthumb3 Lfings1 Lfings2 Lfings3 Lcarp1 Lindex1a Lindex2a Lcarp2 + addoptions Lindex1b Lindex2c Ruparm rloarm_reg rloarm_stump rrip1 rrip2 rrip3 rrip4 Rloarm + addoptions Rhand Rcarp Rindex1 Rindex2 Rthumb0 Rthumb1 Rthumb2 Rthumb3 Rfings1 Rfings2 Rfings3 + addoptions Rcarp1 Rindex1a Rindex2a Rcarp2 Rindex1b Rindex2b Hips Lupleg Lloleg Lankle_r Lball_r + addoptions Ltoe_r Rupleg Rloleg Rankle_r Rball_r Rtoe_r Jaw Lo_lip Body Body2 + addoptions -keep Lknee Rknee + + mesh models/monsters/zombie/zombie01/cycles/ref_fullskin_allmeshes.ma -dest models/md5/monsters/zombies/zmaint/zmaint_allmeshes + addoptions -prefix ZOMBIE1_ + anim maps/fred/chainsaw/chainsaw.mb -dest models/md5/cinematics/delta2a/victim +} + +/*********************************************************************** + + damage defs + +***********************************************************************/ + +entityDef melee_zombie_maint_Left { + // melee specific parameters + "snd_hit" "fist_impact" + "snd_miss" "fist_whoosh" + "kickDir" "0 -1 0" + + // damage parameters + "damage" "15" + + "mtr_blob" "leftSmack" + "blob_time" "600" + "blob_x" "-140" + "blob_y" "-100" + "blob_width" "600" + "blob_height" "600" + + "knockback" "25" + + "kick_time" "350" + "kick_amplitude" "1.1" + + "dv_time" "100" +} + +entityDef melee_zombie_maint_Right { + "snd_hit" "fist_impact" + "snd_miss" "fist_whoosh" + "kickDir" "0 1 0" + + "damage" "15" + + "mtr_blob" "rightSmack" + "blob_time" "600" + "blob_x" "140" + "blob_y" "-100" + "blob_width" "600" + "blob_height" "600" + + "knockback" "50" + + "kick_time" "350" + "kick_amplitude" "1.1" + + "dv_time" "100" +} + +entityDef melee_zombie_maint_Push { + "snd_hit" "fist_impact" + "snd_miss" "fist_whoosh" + "kickDir" "1 0 1" + + "damage" "15" + + "mtr_blob" "rightSmack" + "blob_time" "600" + "blob_x" "140" + "blob_y" "-100" + "blob_width" "600" + "blob_height" "600" + + "knockback" "60" + + "kick_time" "350" + "kick_amplitude" "1.1" + + "dv_time" "100" +} + +entityDef melee_zombie_maint_Pull { + "snd_hit" "fist_impact" + "snd_miss" "fist_whoosh" + "kickDir" "1 0 -1" + + "damage" "20" + + "mtr_blob" "rightSmack" + "blob_time" "600" + "blob_x" "140" + "blob_y" "-100" + "blob_width" "600" + "blob_height" "600" + + "knockback" "40" + + "kick_time" "700" + "kick_amplitude" "1.1" + + "dv_time" "100" +} diff --git a/base/def/monster_zombie_jumpsuit.def b/base/def/monster_zombie_jumpsuit.def new file mode 100644 index 00000000..34fa5021 --- /dev/null +++ b/base/def/monster_zombie_jumpsuit.def @@ -0,0 +1,172 @@ +/*********************************************************************** + +monster_zombie_jumpsuit.def + +***********************************************************************/ + +export fred { + options -prefix ZJUMP_ -align ALL -parent Loneck Shoulders -parent chainsaw Rhand + + anim models/monsters/zombie/jumpsuit/cycles/melee3.mb -dest models/md5/monsters/zjump/melee3 + anim models/monsters/zombie/jumpsuit/cycles/sight3.mb -dest models/md5/monsters/zjump/sight3 +// anim models/monsters/zombie/jumpsuit/cycles/getup_from_bench.mb -dest models/md5/monsters/zjump/getup_from_bench +// anim models/monsters/zombie/jumpsuit/cycles/getup_from_bench.mb -range 1 1 -dest models/md5/monsters/zjump/getup_from_bench_idle + + anim models/monsters/zombie/jumpsuit/cycles/influence_eats_arm.mb -dest models/md5/monsters/zjump/influence_eats_arm + anim models/monsters/zombie/jumpsuit/cycles/influence_shake.mb -dest models/md5/monsters/zjump/influence_shake + anim models/monsters/zombie/jumpsuit/cycles/influence_shake_random.mb -dest models/md5/monsters/zjump/influence_shake_random + + options -prefix ZJUMP_ -parent Loneck Shoulders -parent chainsaw Rhand +// anim models/monsters/combos/zjump_eats_zfat_loop.mb -dest models/md5/combos/zjump_eats_zfat_loop +// anim models/monsters/combos/zjump_eats_zfat_getup.mb -dest models/md5/combos/zjump_eats_zfat_getup +// anim models/monsters/combos/zjump_eats_zsci_loop.mb -dest models/md5/combos/zjump_eats_zsci_loop +// anim models/monsters/combos/zjump_eats_zsci_getup.mb -dest models/md5/combos/zjump_eats_zsci_getup +} + +model monster_zombie_jumpsuit_old { + mesh models/md5/monsters/zjump/zjump.md5mesh + channel torso ( *Waist ) + channel legs ( *Hips origin Body2 ) + + anim af_pose models/md5/monsters/zjump/af_pose.md5anim + anim ik_pose models/md5/monsters/zjump/af_pose.md5anim + + anim sight models/md5/monsters/zjump/sight3.md5anim { + frame 1 sound_voice snd_sight1 + } + anim idle1 models/md5/monsters/zjump/idle1.md5anim + anim walk1 models/md5/monsters/zjump/walk1.md5anim { + frame 15 sound_body snd_footstep + frame 31 sound_body snd_footstep + frame 47 sound_body snd_footstep + frame 63 sound_body snd_footstep + } + anim melee_attack1 models/md5/monsters/zjump/melee3.md5anim { + frame 1 call overrideLegs + frame 14 melee melee_zombie_maint_Right + frame 28 melee melee_zombie_maint_Left + } + anim pain models/md5/monsters/zjump/pain1_chest.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_head models/md5/monsters/zjump/pain1_head.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_chest models/md5/monsters/zjump/pain1_chest.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_left_arm models/md5/monsters/zjump/pain1_luparm.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_right_arm models/md5/monsters/zjump/pain1_ruparm.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_legs models/md5/monsters/zjump/pain1_legs.md5anim { + frame 1 sound_voice snd_pain + } + + anim zjump_eats_zsci_loop models/md5/combos/zjump_eats_zsci_loop.md5anim { + ai_no_turn + frame 1 disableWalkIK + } + anim zjump_eats_zsci_getup models/md5/combos/zjump_eats_zsci_getup.md5anim { + ai_no_turn + } + + anim zjump_eats_zfat_loop models/md5/combos/zjump_eats_zfat_loop.md5anim { + frame 1 disableWalkIK + ai_no_turn + + } + anim zjump_eats_zfat_getup models/md5/combos/zjump_eats_zfat_getup.md5anim { + ai_no_turn + frame 1 disableWalkIK + frame 80 enableWalkIK + } + + anim benchgetup models/md5/monsters/zjump/getup_from_bench.md5anim { + ai_no_turn + frame 1 sound_voice snd_sight1 + } + + anim benchidle models/md5/monsters/zjump/getup_from_bench_idle.md5anim { + ai_no_turn + } +} + +entityDef monster_zombie_jumpsuit_old { + "inherit" "zombie_default" + "scriptobject" "ai" + "nativeobject" "rvmMonsterZombie" + "size" "48 48 68" + "use_aas" "aas48" + "team" "1" + "rank" "0" + "health" "100" + "melee_range" "32" + "skin" "skins/models/monsters/zjump.skin" + "anim" "idle1" + "mass" "150" + "bleed" "1" + + "blockedRadius" "15" + "blockedMoveTime" "500" + "blockedAttackTime" "500" + + "dropGibItem9Joint" "Head" + + "ik_numLegs" "2" + "ik_footSize" "4" + "ik_waist" "Body2" + "ik_hip1" "Lupleg" + "ik_hip2" "Rupleg" + "ik_knee1" "Lloleg" + "ik_knee2" "Rloleg" + "ik_ankle1" "Lankle_r" + "ik_ankle2" "Rankle_r" + "ik_dir1" "Lknee" + "ik_dir2" "Rknee" + "ik_foot1" "Lball_r" + "ik_foot2" "Rball_r" + + "ragdoll" "monster_zombie_chainsaw" + "model" "monster_zombie_jumpsuit_old" + + "damage_zone head" "*Neck" + "damage_zone chest" "*Waist -*Neck" + "damage_zone left_arm" "*Luparm" + "damage_zone right_arm" "*Ruparm" + "damage_zone legs" "*Hips origin Body2" + + "damage_scale head" "2" + + "snd_sight1" "monster_zombie_fat_sight1" + + "snd_idle" "monster_zombie_chainsaw_idle" + "snd_footstep" "monster_zombie_commando_footstep" + "snd_chatter" "monster_zombie_fat_chatter" + "snd_chatter_combat" "monster_zombie_fat_chatter_combat" + "snd_pain" "monster_zombie_fat_pain" + "snd_melee_attack" "monster_zombie_fat_attackmelee_1" + "snd_melee_attack_1" "monster_zombie_fat_attackmelee_1" + "snd_melee_attack_2" "monster_zombie_fat_attackmelee_2" + "snd_melee_attack_3" "monster_zombie_fat_attackmelee_3" + "snd_thud" "monster_zombie_fat_thud" + "skin_dropGib" "skins/models/monsters/zjumpgib.skin" +} + + +model monster_zombie_jumpsuit_influence { + mesh models/md5/monsters/zjump/zjump.md5mesh + anim eating_arm models/md5/monsters/zjump/influence_eats_arm.md5anim + anim shake models/md5/monsters/zjump/influence_shake.md5anim + anim shake_random models/md5/monsters/zjump/influence_shake_random.md5anim + +} + +entityDef monster_zombie_jumpsuit_influence { + "inherit" "cin_base" + "model" "monster_zombie_jumpsuit_influence" + "anim" "eating_arm" + "skin" "skins/models/monsters/zjump.skin" +} \ No newline at end of file diff --git a/base/def/monster_zombie_maint.def b/base/def/monster_zombie_maint.def new file mode 100644 index 00000000..97ec84e0 --- /dev/null +++ b/base/def/monster_zombie_maint.def @@ -0,0 +1,224 @@ +/*********************************************************************** + +monster_zombie_maint.def + +***********************************************************************/ + +export fred { + options -prefix ZOMBIE1_ -sourcedir models/monsters/zombie/zombie01/cycles -destdir models/md5/monsters/zombies/zmaint + addoptions -parent loneck shoulders + addoptions -parent Jaw head + addoptions -parent Body2 Body + addoptions -parent waist Body2 + addoptions -parent Hips Body2 + addoptions -parent Luparm Lshldr + addoptions -parent Lloarm Luparm + addoptions -parent Ruparm Rshldr + addoptions -parent Rloarm Ruparm + addoptions -keep loneck head R_cheek L_cheek Up_lip Lbrow1 Lbrow2 Rbrow1 Rbrow2 llolid luplid rlolid + addoptions -keep ruplid waist chest shoulders Rshldr Lshldr L_shirt R_shirt Back_shirt Luparm loarm_reg + addoptions loarm_stump lrip2 lrip3 lrip1 lrip4 Lloarm Lhand Lcarp Lindex1 Lindex2 Lthumb0 + addoptions Lthumb1 Lthumb2 Lthumb3 Lfings1 Lfings2 Lfings3 Lcarp1 Lindex1a Lindex2a Lcarp2 + addoptions Lindex1b Lindex2c Ruparm rloarm_reg rloarm_stump rrip1 rrip2 rrip3 rrip4 Rloarm + addoptions Rhand Rcarp Rindex1 Rindex2 Rthumb0 Rthumb1 Rthumb2 Rthumb3 Rfings1 Rfings2 Rfings3 + addoptions Rcarp1 Rindex1a Rindex2a Rcarp2 Rindex1b Rindex2b Hips Lupleg Lloleg Lankle_r Lball_r + addoptions Ltoe_r Rupleg Rloleg Rankle_r Rball_r Rtoe_r Jaw Lo_lip Body Body2 + addoptions -keep Lknee Rknee + + mesh zombie01_mesh.mb -dest zmaint + anim idle1.ma + anim walk1.ma + anim walk2.ma + anim mocapwalk2.mb -dest walk3 + anim mocapwalk3.mb -dest walk4 + anim mocapswings1.mb -range 139 173 -dest mocapswing1 + anim mocapswings2.mb -range 42 71 -dest mocapswing2 + anim mocapswings3.mb -range 135 166 -dest mocapswing3 + anim pain1.ma + anim pain_legs.ma + anim pain_chest.ma + anim pain_ruparm.ma + anim pain_luparm.ma + anim pain_head.ma + anim death1.ma + anim death1_twitch.ma + anim death1_getup_attempt.ma + anim death1_getup.ma + anim death1_getup.ma -range 1 1 -dest death1_getuppose + anim attack1.ma + anim attack2.ma + anim attack3.ma + anim sight1.ma + anim initial.ma + + addoptions -rename origin old_origin -rename final_origin origin + anim models/monsters/zombie/zombie01/cycles/getup_from_bed.ma -rotate -135 -dest models/md5/monsters/zombies/zmaint/getup_from_bed + anim models/monsters/zombie/zombie01/cycles/laying_on_bed.ma -rotate -135 -dest models/md5/monsters/zombies/zmaint/laying_on_b +} + +model monster_zombie_maint { + mesh models/md5/monsters/zombies/zmaint/zmaint.md5mesh + channel torso ( *waist ) + channel legs ( *Hips origin Body Body2 ) + + anim af_pose models/md5/monsters/zombies/zmaint/initial.md5anim + anim ik_pose models/md5/monsters/zombies/zmaint/initial.md5anim + + anim initial models/md5/monsters/zombies/zmaint/initial.md5anim + anim idle models/md5/monsters/zombies/zmaint/idle1.md5anim + anim sight models/md5/monsters/zombies/zmaint/sight1.md5anim { + frame 1 sound_voice snd_sight + } + anim walk1 models/md5/monsters/zombies/zmaint/walk1.md5anim { + frame 15 leftfoot + frame 30 rightfoot + } + anim walk2 models/md5/monsters/zombies/zmaint/walk2.md5anim { + frame 13 rightfoot + frame 24 leftfoot + frame 35 rightfoot + frame 46 leftfoot + frame 57 rightfoot + frame 68 leftfoot + } + anim walk3 models/md5/monsters/zombies/zmaint/walk3.md5anim + anim walk4 models/md5/monsters/zombies/zmaint/walk4.md5anim + + anim pain models/md5/monsters/zombies/zmaint/pain1.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_head models/md5/monsters/zombies/zmaint/pain_head.md5anim { + frame 1 sound_voice snd_pain + frame 15 rightfoot + } + anim pain_left_arm models/md5/monsters/zombies/zmaint/pain_luparm.md5anim { + frame 1 sound_voice snd_pain + frame 14 rightfoot + } + anim pain_right_arm models/md5/monsters/zombies/zmaint/pain_ruparm.md5anim { + frame 1 sound_voice snd_pain + } + anim pain_legs models/md5/monsters/zombies/zmaint/pain_legs.md5anim { + frame 1 sound_voice snd_pain + frame 4 leftfoot + frame 18 rightfoot + } + anim pain_chest models/md5/monsters/zombies/zmaint/pain_chest.md5anim { + frame 1 sound_voice snd_pain + } + anim melee_attack4 models/md5/monsters/zombies/zmaint/mocapswing1.md5anim { + frame 1 call overrideLegs + frame 12 melee melee_zombie_maint_Right + } + anim melee_attack5 models/md5/monsters/zombies/zmaint/mocapswing2.md5anim { + frame 1 call overrideLegs + frame 10 melee melee_zombie_maint_Right + } + anim melee_attack6 models/md5/monsters/zombies/zmaint/mocapswing3.md5anim { + frame 1 call overrideLegs + frame 7 melee melee_zombie_maint_Left + } +/* + anim death1_getup_attempt models/md5/monsters/zombies/zmaint/death1_getup_attempt.md5anim { + ai_no_turn + frame 1 call overrideLegs + frame 34 sound_body snd_thud + frame 21 sound_voice snd_sight + } + anim death1_getup models/md5/monsters/zombies/zmaint/death1_getup.md5anim { + ai_no_turn + frame 1 call overrideLegs + frame 20 sound_voice snd_sight + frame 31 rightfoot + frame 43 leftfoot + frame 45 sound_voice snd_melee_attack_1 + frame 52 sound_voice snd_sight + frame 54 melee melee_zombie_maint_Right + frame 80 rightfoot + } + anim death1_getuppose models/md5/monsters/zombies/zmaint/death1_getuppose.md5anim { + ai_no_turn + } + + anim death1_twitch models/md5/monsters/zombies/zmaint/death1_twitch.md5anim { + ai_no_turn + } + anim getup_from_bed models/md5/monsters/zombies/zmaint/getup_from_bed.md5anim { + ai_no_turn + } + anim laying_on_bed models/md5/monsters/zombies/zmaint/laying_on_bed.md5anim { + ai_no_turn + } +*/ +} + +entityDef monster_zombie_maint { + "inherit" "zombie_default" + "scriptobject" "ai" + "nativeobject" "rvmMonsterZombie" + "size" "48 48 68" + "use_aas" "aas48" + "team" "1" + "rank" "0" + "health" "50" + "melee_range" "32" + "walk_on_sight" "1" + "mass" "150" + + "model" "monster_zombie_maint" + "ragdoll" "monster_zombie_maint" + "skin" "skins/monsters/zombies/zmaintb.skin" + + "ik_numLegs" "2" + "ik_footSize" "4" + "ik_waist" "body" + "ik_foot1" "Lball_r" + "ik_foot2" "Rball_r" + "ik_ankle1" "Lankle_r" + "ik_ankle2" "Rankle_r" + "ik_knee1" "Lloleg" + "ik_knee2" "Rloleg" + "ik_hip1" "Lupleg" + "ik_hip2" "Rupleg" + "ik_dir1" "Lknee" + "ik_dir2" "Rknee" + + "dropGibItem9Joint" "head" + + "damage_zone head" "*head" + "damage_zone chest" "*waist -*Ruparm -*Luparm -*loneck" + "damage_zone left_arm" "*Luparm" + "damage_zone right_arm" "*Ruparm" + "damage_zone legs" "*Rupleg *Lupleg" + + "damage_scale head" "2" + + "snd_sight" "monster_zombie_maint_sight" + "snd_footstep" "monster_zombie_maint_footstep" + "snd_melee_attack_1" "monster_zombie_maint_attackmelee_1" + "snd_melee_attack_2" "monster_zombie_maint_attackmelee_2" + "snd_melee_attack_3" "monster_zombie_maint_attackmelee_3" + "snd_chatter" "monster_zombie_maint_chatter" + "snd_chatter_combat" "monster_zombie_maint_chatter_combat" + "snd_pain" "monster_zombie_maint_pain" + "snd_thud" "monster_zombie_maint_thud" + "snd_swipe" "monster_zombie_maint_swipe" + + "skin_dropGib" "skins/monsters/zombies/zmaintb_gib" +} + +entityDef monster_zombie_maint2 { + "inherit" "monster_zombie_maint" + "skin" "skins/monsters/zombies/zmaint.skin" +} + +model monster_zombie_maint_fast { + inherit monster_zombie_maint + remove walk + anim walk1 models/md5/monsters/zombies/zmaint/walk4.md5anim +} + +entityDef monster_zombie_maint_fast { + "inherit" "monster_zombie_maint" + "model" "monster_zombie_maint_fast" +} \ No newline at end of file diff --git a/base/def/monster_zombie_morgue.def b/base/def/monster_zombie_morgue.def new file mode 100644 index 00000000..721305b1 --- /dev/null +++ b/base/def/monster_zombie_morgue.def @@ -0,0 +1,134 @@ +/*********************************************************************** + +monster_zombie_morgue.def + +***********************************************************************/ + +model model_monster_zombie_morgue { + mesh models/md5/monsters/zombies/morgue/morgue.md5mesh + + channel torso ( *Waist ) + channel legs ( origin Body *Hips -*Waist ) + + anim stand models/md5/monsters/zombies/morgue/idle.md5anim + anim idle models/md5/monsters/zombies/morgue/idle.md5anim + + anim sight models/md5/monsters/zombies/morgue/sight.md5anim { + frame 1 sound_voice snd_sight + } + + anim run models/md5/monsters/zombies/morgue/run.md5anim { + frame 2 sound_body snd_footstep + frame 10 sound_body snd_footstep + frame 17 sound_body snd_footstep + frame 26 sound_body snd_footstep + } + anim af_pose models/md5/monsters/zombies/morgue/af_pose.md5anim + anim ik_pose models/md5/monsters/zombies/morgue/af_pose.md5anim + anim pain models/md5/monsters/zombies/morgue/pain_left.md5anim { + frame 1 sound_voice2 snd_pain + } + + anim pain_chest models/md5/monsters/zombies/morgue/pain_head.md5anim { + frame 1 sound_voice2 snd_pain + } + + anim pain_head models/md5/monsters/zombies/morgue/pain_right.md5anim { + frame 1 sound_voice2 snd_pain + } + + anim pain_right_arm models/md5/monsters/zombies/morgue/pain_right.md5anim { + frame 1 sound_voice2 snd_pain + } + + anim pain_left_arm models/md5/monsters/zombies/morgue/pain_left.md5anim { + frame 1 sound_voice2 snd_pain + } + + anim melee_attack1 models/md5/monsters/zombies/morgue/melee_left.md5anim { + frame 2 sound_body snd_footstep + frame 10 sound_body snd_footstep + frame 17 sound_body snd_footstep + frame 26 sound_body snd_footstep + frame 13 melee melee_zombie_fat_Left + frame 13 sound_weapon snd_thud + } + + anim melee_attack2 models/md5/monsters/zombies/morgue/melee_right.md5anim { + frame 2 sound_body snd_footstep + frame 10 sound_body snd_footstep + frame 17 sound_body snd_footstep + frame 26 sound_body snd_footstep + frame 13 melee melee_zombie_fat_Left + frame 13 sound_weapon snd_thud + } +} + +entityDef monster_zombie_morgue { + "inherit" "zombie_default" + "scriptobject" "ai" + "nativeobject" "rvmMonsterZombieMorgue" + "size" "48 48 68" + "use_aas" "aas48" + "team" "1" + "rank" "0" + "health" "100" + "melee_range" "40" + "anim" "idle" + "def_projectile" "" + "attack_cone" "70" + "attack_accuracy" "0" + "mass" "200" + + "skin" "skins/monsters/zombies/morgue.skin" + "skin_dropGib" "skins/monsters/zombies/morguegib.skin" + + "dropGibItem9Joint" "Head" + + "model" "model_monster_zombie_morgue" + "ragdoll" "monster_zombie_morgue" + + "burnaway" "0.50" + + "ik_numLegs" "2" + "ik_footSize" "4" + "ik_waist" "Body" + "ik_hip1" "Lupleg" + "ik_hip2" "Rupleg" + "ik_knee1" "Lloleg" + "ik_knee2" "Rloleg" + "ik_ankle1" "Lankle" + "ik_ankle2" "Rankle" + "ik_dir1" "Lknee" + "ik_dir2" "Rknee" + "ik_foot1" "Lball" + "ik_foot2" "Rball" + + "damage_zone head" "*Neck" + "damage_zone chest" "*Waist -*Neck" + "damage_zone left_arm" "*Luparm" + "damage_zone right_arm" "*Ruparm" + "damage_zone legs" "*Hips origin Body" + + "damage_scale head" "1.25" + + "channel torso" "*Waist" + "channel legs" "*origin -*Waist" + + "chatter_min" "3" + "chatter_max" "8" + "chatter_combat_min" "2" + "chatter_combat_max" "2" + + "snd_sight" "zombie_morgue_sight" + "snd_footstep" "zombie_morgue_footstep" + "snd_melee_attack_1" "zombie_morgue_melee" + "snd_melee_attack_2" "zombie_morgue_melee" + "snd_melee_attack_3" "zombie_morgue_melee" + "snd_chatter" "zombie_morgue_chatter" + "snd_chatter_combat" "zombie_morgue_chatter" + "snd_pain" "zombie_morgue_pain" + "snd_death" "zombie_morgue_death" + "snd_thud" "monster_zombie_maint_thud" + "snd_swipe" "monster_zombie_maint_swipe" +} diff --git a/base/def/monster_zombie_sawyer.def b/base/def/monster_zombie_sawyer.def new file mode 100644 index 00000000..67ff7b45 --- /dev/null +++ b/base/def/monster_zombie_sawyer.def @@ -0,0 +1,288 @@ +/*********************************************************************** + +monster_zombie_sawyer.def + +***********************************************************************/ + +export fred { + options -prefix SAW_ -keep gore Lknee Rknee Lbrow2 Lbrow3 Loneck Lfings3 -keep csmoke -parent csmoke Chainsaw -parent Chainsaw Lhand + + addoptions -skipmesh morguemesh + addoptions -skipmesh hipolychain + addoptions -skipmesh hipolychainsaw + addoptions -skipmesh hipolystarter + addoptions -skipmesh hipolycord + + anim maps/fred/commoutside/shot2.mb -dest models/md5/cinematics/commoutside/sawintro_sawyer2 + anim maps/fred/commoutside/shot3.mb -dest models/md5/cinematics/commoutside/sawintro_sawyer3 + anim maps/fred/commoutside/shot4.mb -dest models/md5/cinematics/commoutside/sawintro_sawyer4 + + + addoptions -align ALL + addoptions -sourcedir models/monsters/zombie/sawyer/cycles + addoptions -destdir models/md5/monsters/zombies/sawyer + mesh sawyer_mesh.mb -dest sawyer + anim idle.mb + anim run.mb + anim walk.mb + //anim startchainsaw_mocap.mb -dest startchainsaw + anim startchainsaw.mb + anim af_pose.mb + anim melee1.mb + anim melee2.mb + anim pain_left.mb + anim pain_right.mb + anim pain_head.mb + anim pain_chest.mb + anim melee1_walk.mb + anim melee2_walk.mb + + options -prefix SAW_ -keep gore Lknee Rknee Lbrow2 Lbrow3 Loneck Lfings3 -align ALL -parent Chainsaw Lhand + addoptions -keepmesh morguemesh + addoptions -keepmesh skeletonmesh + + anim af_pose.mb -sourcedir models/monsters/zombie/sawyer/cycles -destdir models/md5/monsters/zombies/morgue + + addoptions -destdir models/md5/monsters/zombies/morgue + + mesh sawyer_mesh.mb -dest morgue -sourcedir models/monsters/zombie/sawyer/cycles + + addoptions -sourcedir models/monsters/zombie/morgue/cycles/ + + anim idle.mb + anim melee_left.mb + anim melee_right.mb + anim pain_chest.mb + anim pain_head.mb + anim pain_left.mb + anim pain_right.mb + anim run.mb + anim sight.mb + anim walk.mb + + anim mars_city2.mb -range 1 1 -dest morguesleep -sourcedir maps/fred/marscity_2/ -destdir models/md5/cinematics/marscity_2/ + anim mars_city2.mb -range 1 64 -dest morguewakeup -sourcedir maps/fred/marscity_2/ -destdir models/md5/cinematics/marscity_2/ + + } + +model model_monster_zombie_sawyer { + mesh models/md5/monsters/zombies/sawyer/sawyer.md5mesh + + channel torso ( *Waist ) + channel legs ( origin Body *Hips -*Waist ) + + anim stand models/md5/monsters/zombies/sawyer/idle.md5anim { + frame 1 sound_weapon monster_zombie_chainsaw_idle + frame 50 sound_weapon monster_zombie_chainsaw_idle + } + anim idle models/md5/monsters/zombies/sawyer/idle.md5anim + anim sight1 models/md5/monsters/zombies/sawyer/startchainsaw.md5anim { + frame 7 sound_body monster_zombie_commando_footstep + frame 10 sound_body2 monster_zombie_commando_footstep_clinks + frame 16 sound_body monster_zombie_commando_footstep + frame 24 sound_weapon monster_zombie_chainsaw_pull + frame 25 object_call start_smoke + frame 29 sound_body2 monster_zombie_commando_footstep_clinks + frame 30 sound_voice monster_zombie_chainsaw_release + frame 32 sound_body monster_zombie_chainsaw_attack3 + } + + anim melee_attack1 models/md5/monsters/zombies/sawyer/melee1_walk.md5anim{ + frame 9 sound_body monster_zombie_commando_footstep + frame 9 sound_body2 monster_zombie_commando_footstep_clinks + frame 14 sound_weapon monster_zombie_chainsaw_attack3 + frame 15 object_call start_attack + frame 18 sound_body monster_zombie_commando_footstep + frame 18 sound_body2 monster_zombie_commando_footstep_clinks + frame 29 sound_body monster_zombie_commando_footstep + frame 29 sound_body2 monster_zombie_commando_footstep_clinks + frame 30 object_call end_attack + frame 37 sound_body monster_zombie_commando_footstep + frame 37 sound_body2 monster_zombie_commando_footstep_clinks + } + + anim melee_attack2 models/md5/monsters/zombies/sawyer/melee2_walk.md5anim{ + frame 5 object_call start_attack + frame 7 object_call end_attack + frame 9 sound_body monster_zombie_commando_footstep + frame 9 sound_body2 monster_zombie_commando_footstep_clinks + frame 14 object_call start_attack + frame 14 sound_weapon monster_zombie_chainsaw_attack3 + frame 18 sound_body monster_zombie_commando_footstep + frame 18 sound_body2 monster_zombie_commando_footstep_clinks + frame 29 sound_body monster_zombie_commando_footstep + frame 29 sound_body2 monster_zombie_commando_footstep_clinks + frame 34 object_call end_attack + frame 37 sound_body monster_zombie_commando_footstep + frame 37 sound_body2 monster_zombie_commando_footstep_clinks + } + + anim run models/md5/monsters/zombies/sawyer/run.md5anim { + frame 1 sound_weapon monster_zombie_chainsaw_idle + frame 9 sound_body monster_zombie_commando_footstep + frame 9 sound_body2 monster_zombie_commando_footstep_clinks + frame 16 sound_body monster_zombie_commando_footstep + frame 16 sound_body2 monster_zombie_commando_footstep_clinks + frame 25 sound_body monster_zombie_commando_footstep + frame 25 sound_body2 monster_zombie_commando_footstep_clinks + frame 29 sound_body monster_zombie_commando_footstep + frame 29 sound_body2 monster_zombie_commando_footstep_clinks + } + + anim af_pose models/md5/monsters/zombies/sawyer/af_pose.md5anim + anim ik_pose models/md5/monsters/zombies/sawyer/af_pose.md5anim + + anim pain models/md5/monsters/zombies/sawyer/pain_left.md5anim { + frame 1 call overrideLegs + frame 1 sound_voice snd_pain + frame 11 sound_body monster_zombie_commando_footstep + frame 11 sound_body2 monster_zombie_commando_footstep_clinks + frame 23 sound_body monster_zombie_commando_footstep + frame 23 sound_body2 monster_zombie_commando_footstep_clinks + } + + anim pain_chest models/md5/monsters/zombies/sawyer/pain_chest.md5anim { + frame 1 call overrideLegs + frame 1 sound_voice snd_pain + frame 11 sound_body monster_zombie_commando_footstep + frame 11 sound_body2 monster_zombie_commando_footstep_clinks + frame 23 sound_body monster_zombie_commando_footstep + frame 23 sound_body2 monster_zombie_commando_footstep_clinks + } + + anim pain_head models/md5/monsters/zombies/sawyer/pain_head.md5anim { + frame 1 call overrideLegs + frame 1 sound_voice snd_pain + frame 11 sound_body monster_zombie_commando_footstep + frame 11 sound_body2 monster_zombie_commando_footstep_clinks + frame 23 sound_body monster_zombie_commando_footstep + frame 23 sound_body2 monster_zombie_commando_footstep_clinks + } + + anim pain_right_arm models/md5/monsters/zombies/sawyer/pain_right.md5anim { + frame 1 call overrideLegs + frame 1 sound_voice snd_pain + frame 11 sound_body monster_zombie_commando_footstep + frame 11 sound_body2 monster_zombie_commando_footstep_clinks + frame 23 sound_body monster_zombie_commando_footstep + frame 23 sound_body2 monster_zombie_commando_footstep_clinks + } + + anim pain_left_arm models/md5/monsters/zombies/sawyer/pain_left.md5anim { + frame 1 call overrideLegs + frame 1 sound_voice snd_pain + frame 11 sound_body monster_zombie_commando_footstep + frame 11 sound_body2 monster_zombie_commando_footstep_clinks + frame 23 sound_body monster_zombie_commando_footstep + frame 23 sound_body2 monster_zombie_commando_footstep_clinks + } +} + +entityDef monster_zombie_sawyer { + "inherit" "zombie_default" + "scriptobject" "ai" + "nativeobject" "rvmMonsterZombieSawyer" + "size" "48 48 68" + "use_aas" "aas48" + "team" "1" + "rank" "0" + "health" "250" + "melee_range" "40" + "anim" "idle" + "def_projectile" "" + "attack_cone" "70" + "attack_accuracy" "0" + "mass" "200" + + "chatter_min" "2" + "chatter_max" "6" + + "chatter_combat_min" "2" + "chatter_combat_max" "4" + + "smoke_wound_metal" "bulletricochet.prt" + "smoke_wound_ricochet" "bulletricochet.prt" + + "skin" "skins/monsters/zombies/sawyer.skin" + "skin_dropGib" "skins/monsters/zombies/sawyergib.skin" + + "dropGibItem9Joint" "Head" + + "model" "model_monster_zombie_sawyer" + "ragdoll" "monster_zombie_sawyer" + + "burnaway" "0.50" + + "ik_numLegs" "2" + "ik_footSize" "4" + "ik_waist" "Body" + "ik_hip1" "Lupleg" + "ik_hip2" "Rupleg" + "ik_knee1" "Lloleg" + "ik_knee2" "Rloleg" + "ik_ankle1" "Lankle" + "ik_ankle2" "Rankle" + "ik_dir1" "Lknee" + "ik_dir2" "Rknee" + "ik_foot1" "Lball" + "ik_foot2" "Rball" + + "damage_zone head" "*Neck" + "damage_zone chest" "*Waist -*Neck" + "damage_zone left_arm" "*Luparm" + "damage_zone right_arm" "*Ruparm" + "damage_zone legs" "*Hips origin Body" + + "damage_scale head" "2" + "smokeParticleSystem0" "csmoke" + "smokeParticleSystem1" "burstysquirt.prt-gore" + + "channel torso" "*Waist" + "channel legs" "*origin -*Waist" + + "def_dropDeathItem" "moveable_item_chainsaw" + "dropDeathItemJoint" "csmoke" + "skin_dropDeath" "skins/monsters/zombies/sawyernocs.skin" + "dropDeathItemRotation" "-90 0 0" + + "snd_sight" "bernie_sight" + "snd_footstep" "monster_zombie_commando_footstep" + "snd_melee_attack_1" "bernie_attack" + "snd_melee_attack_2" "bernie_attack" + "snd_melee_attack_3" "bernie_attack" + "snd_chatter" "bernie_chatter" + "snd_chatter_combat" "bernie_chatter_combat" + "snd_pain" "bernie_pain" + "snd_thud" "monster_zombie_maint_thud" + "snd_swipe" "monster_zombie_maint_swipe" + "snd_cspull" "monster_zombie_chainsaw_pull" + "snd_csrelease" "monster_zombie_chainsaw_release" + "snd_csattack_1" "monster_zombie_chainsaw_attack1" + "snd_csattack_2" "monster_zombie_chainsaw_attack2" + "snd_csattack_3" "monster_zombie_chainsaw_attack3" + "snd_csidle" "monster_zombie_chainsaw_idle" + "snd_death" "bernie_death" +} + +entityDef melee_zombie_chainsaw { + "damage" "1" + "kickDir" "-0.25 0 0" + + "mtr_blob" "genericDamage" + "blob_time" "800" + "blob_size" "400" + "blob_offset_x" "400" + + "knockback" "10" + "push" "20000" + + "smoke_wound_flesh" "bloodwound.smoke" + "mtr_wound_flesh" "textures/decals/hurt02" + + "kick_time" "100" + "kick_amplitude" "1" + + "dv_time" "10" + + "snd_hit" "player_chainsaw_hit_flesh" // TEMP +} diff --git a/base/def/monster_zsec_machinegun.def b/base/def/monster_zsec_machinegun.def new file mode 100644 index 00000000..de19436e --- /dev/null +++ b/base/def/monster_zsec_machinegun.def @@ -0,0 +1,683 @@ + +/*********************************************************************** + +monster_zsec_machinegun.def + +***********************************************************************/ + +/**** +export machinegun security guy +****/ + +export james { + + options -prefix ZOMBIE_ -keep Rhand1 -keep Lknee Rknee eject barrel flash Body2 headcontrol neckcontrol loneckcontrol SPINNER -parent headcontrol neckcontrol -parent neckcontrol loneckcontrol -parent loneckcontrol Shoulders -parent rshldrpad Shoulders -parent lshldrpad Shoulders -parent machinegun Rhand1 -parent Body2 Body -parent Hips Body2 -parent SPINNER Body2 -parent Waist SPINNER -rename mgeject eject -rename mgbarrel barrel -rename mgflash flash -parent eject machinegun -parent flash machinegun -parent barrel machinegun + + addoptions -keepmesh securitybodymesh + addoptions -keepmesh sec_rshldrmesh + addoptions -keepmesh sec_lshldrmesh + addoptions -keepmesh mgflash1 + addoptions -keepmesh mgflash2 + addoptions -keepmesh mgflash3 + addoptions -keepmesh mgflash4 + addoptions -keepmesh w_machinegunmesh + addoptions -keepmesh skeletonmesh + + mesh models/monsters/zombie/cycles/zombie_mesh.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_machinegun/zsecmachinegun + + anim models/monsters/zombie/cycles/idles/machinegun_stand.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_machinegun/machinegun_stand + anim models/monsters/zombie/cycles/idles/machinegun_sight.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_machinegun/machinegun_sight + anim models/monsters/zombie/cycles/pains/machinegun_chest_pain.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_machinegun/machinegun_chest_pain + anim models/monsters/zombie/cycles/pains/machinegun_head_pain.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_machinegun/machinegun_head_pain + anim models/monsters/zombie/cycles/pains/machinegun_left_pain.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_machinegun/machinegun_left_pain + anim models/monsters/zombie/cycles/pains/machinegun_right_pain.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_machinegun/machinegun_right_pain + anim models/monsters/zombie/cycles/runs/machinegun_run.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_machinegun/machinegun_run + anim models/monsters/zombie/cycles/walks/machinegun_step_left.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_machinegun/machinegun_step_left + anim models/monsters/zombie/cycles/walks/machinegun_step_right.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_machinegun/machinegun_step_right + anim models/monsters/zombie/cycles/walks/machinegun_walk.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_machinegun/machinegun_walk + anim models/monsters/zombie/cycles/attacks/machinegun_stand_fire.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_machinegun/machinegun_stand_fire + + anim models/monsters/zombie/cycles/attacks/machinegun_stand_fire.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_machinegun/machinegun_stand_fire + anim models/monsters/zombie/cycles/walks/machinegun_step_left.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_machinegun/machinegun_step_left + anim models/monsters/zombie/cycles/walks/machinegun_step_right.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_machinegun/machinegun_step_right + anim models/monsters/zombie/cycles/attacks/machinegun_crouch_range_attack.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_machinegun/machinegun_crouch_range_attack + anim models/monsters/zombie/cycles/attacks/machinegun_crouch_range_attack_loop.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_machinegun/machinegun_crouch_range_attack_loop + anim models/monsters/zombie/cycles/attacks/machinegun_crouch_range_attack_end.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_machinegun/machinegun_crouch_range_attack_end + anim models/monsters/zombie/cycles/attacks/machinegun_crouch_range_attack_aim.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_machinegun/machinegun_crouch_range_attack_aim + anim models/monsters/zombie/cycles/attacks/machinegun_stand_aim.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_machinegun/machinegun_stand_aim + + anim models/monsters/zombie/cycles/attacks/machinegun_wall_lean_left.mb -range 1 1 -rotate 90 -dest models/md5/monsters/zombies/zsec_machinegun/machinegun_wallleanleft_A + anim models/monsters/zombie/cycles/attacks/machinegun_wall_lean_left.mb -range 1 11 -rotate 90 -dest models/md5/monsters/zombies/zsec_machinegun/machinegun_wallleanleft_B + anim models/monsters/zombie/cycles/attacks/machinegun_wall_lean_left.mb -range 12 47 -rotate 90 -dest models/md5/monsters/zombies/zsec_machinegun/machinegun_wallleanleft_C + anim models/monsters/zombie/cycles/attacks/machinegun_wall_lean_left.mb -range 48 60 -rotate 90 -dest models/md5/monsters/zombies/zsec_machinegun/machinegun_wallleanleft_D + + anim models/monsters/zombie/cycles/attacks/machinegun_wall_lean_right.mb -range 1 1 -rotate 90 -dest models/md5/monsters/zombies/zsec_machinegun/machinegun_wallleanright_A + anim models/monsters/zombie/cycles/attacks/machinegun_wall_lean_right.mb -range 1 11 -rotate 90 -dest models/md5/monsters/zombies/zsec_machinegun/machinegun_wallleanright_B + anim models/monsters/zombie/cycles/attacks/machinegun_wall_lean_right.mb -range 12 47 -rotate 90 -dest models/md5/monsters/zombies/zsec_machinegun/machinegun_wallleanright_C + anim models/monsters/zombie/cycles/attacks/machinegun_wall_lean_right.mb -range 48 60 -rotate 90 -dest models/md5/monsters/zombies/zsec_machinegun/machinegun_wallleanright_D + + anim models/monsters/zombie/cycles/attacks/machinegun_wall_rotate_left.mb -range 1 1 -rotate 90 -dest models/md5/monsters/zombies/zsec_machinegun/machinegun_wallrotleft_A + anim models/monsters/zombie/cycles/attacks/machinegun_wall_rotate_left.mb -range 1 11 -rotate 90 -dest models/md5/monsters/zombies/zsec_machinegun/machinegun_wallrotleft_B + anim models/monsters/zombie/cycles/attacks/machinegun_wall_rotate_left.mb -range 12 47 -rotate 90 -dest models/md5/monsters/zombies/zsec_machinegun/machinegun_wallrotleft_C + anim models/monsters/zombie/cycles/attacks/machinegun_wall_rotate_left.mb -range 48 60 -rotate 90 -dest models/md5/monsters/zombies/zsec_machinegun/machinegun_wallrotleft_D + + anim models/monsters/zombie/cycles/attacks/machinegun_wall_rotate_right.mb -range 1 1 -rotate 90 -dest models/md5/monsters/zombies/zsec_machinegun/machinegun_wallrotright_A + anim models/monsters/zombie/cycles/attacks/machinegun_wall_rotate_right.mb -range 1 11 -rotate 90 -dest models/md5/monsters/zombies/zsec_machinegun/machinegun_wallrotright_B + anim models/monsters/zombie/cycles/attacks/machinegun_wall_rotate_right.mb -range 12 47 -rotate 90 -dest models/md5/monsters/zombies/zsec_machinegun/machinegun_wallrotright_C + anim models/monsters/zombie/cycles/attacks/machinegun_wall_rotate_right.mb -range 48 60 -rotate 90 -dest models/md5/monsters/zombies/zsec_machinegun/machinegun_wallrotright_D + + anim models/monsters/zombie/cycles/attacks/machinegun_stand_crate.mb -range 1 1 -rotate 90 -dest models/md5/monsters/zombies/zsec_machinegun/machinegun_crate_up_A + anim models/monsters/zombie/cycles/attacks/machinegun_stand_crate.mb -range 1 11 -rotate 90 -dest models/md5/monsters/zombies/zsec_machinegun/machinegun_crate_up_B + anim models/monsters/zombie/cycles/attacks/machinegun_stand_crate.mb -range 12 47 -rotate 90 -dest models/md5/monsters/zombies/zsec_machinegun/machinegun_crate_up_C + anim models/monsters/zombie/cycles/attacks/machinegun_stand_crate.mb -range 48 60 -rotate 90 -dest models/md5/monsters/zombies/zsec_machinegun/machinegun_crate_up_D + + anim models/monsters/zombie/cycles/attacks/machinegun_raise.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_machinegun/machinegun_raise + anim models/monsters/zombie/cycles/attacks/machinegun_lower.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_machinegun/machinegun_lower + + anim models/monsters/zombie/cycles/pains/machinegun_crouch_left_pain.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_machinegun/machinegun_crouch_left_pain + anim models/monsters/zombie/cycles/pains/machinegun_crouch_right_pain.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_machinegun/machinegun_crouch_right_pain +} + +model model_monster_zsec_machinegun { + mesh models/md5/monsters/zombies/zsec_machinegun/zsecmachinegun.md5mesh + channel torso ( *Waist ) + channel legs ( origin Body2 *Hips -*Waist SPINNER ) + skin skins/monsters/zombies/zsecurity_machinegun.skin + + anim af_pose models/md5/monsters/zombies/zsec_machinegun/af_pose.md5anim + anim ik_pose models/md5/monsters/zombies/zsec_machinegun/af_pose.md5anim + + anim stand models/md5/monsters/zombies/zsec_machinegun/machinegun_stand.md5anim + anim idle models/md5/monsters/zombies/zsec_machinegun/machinegun_stand.md5anim + + anim sight models/md5/monsters/zombies/zsec_machinegun/machinegun_sight.md5anim { + frame 1 sound_voice monster_zombie_security_sight + frame 14 sound_body monster_zombie_security_footstep + frame 28 sound_body monster_zombie_security_footstep + } + + anim walk models/md5/monsters/zombies/zsec_machinegun/machinegun_walk.md5anim { + frame 1 sound_body monster_zombie_security_footstep + frame 14 sound_body monster_zombie_security_footstep + } + + anim run models/md5/monsters/zombies/zsec_machinegun/machinegun_run.md5anim { + frame 8 sound_body monster_zombie_security_footstep + frame 18 sound_body monster_zombie_security_footstep + } + + anim crouch_range_attack models/md5/monsters/zombies/zsec_machinegun/machinegun_crouch_range_attack.md5anim + anim crouch_range_attack_loop models/md5/monsters/zombies/zsec_machinegun/machinegun_crouch_range_attack_loop.md5anim { + frame 4 sound_weapon monster_machinegun_fire + frame 4 launch_missile barrel + frame 7 sound_weapon monster_machinegun_fire + frame 7 launch_missile barrel + frame 10 sound_weapon monster_machinegun_fire + frame 10 launch_missile barrel + frame 13 sound_weapon monster_machinegun_fire + frame 13 launch_missile barrel + frame 16 sound_weapon monster_machinegun_fire + frame 16 launch_missile barrel + frame 19 sound_weapon monster_machinegun_fire + frame 19 launch_missile barrel + frame 22 sound_weapon monster_machinegun_fire + frame 22 launch_missile barrel + frame 25 sound_weapon monster_machinegun_fire + frame 25 launch_missile barrel + frame 28 sound_weapon monster_machinegun_fire + frame 28 launch_missile barrel + frame 31 sound_weapon monster_machinegun_fire + frame 31 launch_missile barrel + + } + anim crouch_range_attack_end models/md5/monsters/zombies/zsec_machinegun/machinegun_crouch_range_attack_end.md5anim + anim crouch_range_attack_aim models/md5/monsters/zombies/zsec_machinegun/machinegun_crouch_range_attack_aim.md5anim + + anim range_attack_aim models/md5/monsters/zombies/zsec_machinegun/machinegun_stand_aim.md5anim + + anim step_left models/md5/monsters/zombies/zsec_machinegun/machinegun_step_left.md5anim { + frame 9 sound_body monster_zombie_security_footstep + frame 20 sound_body monster_zombie_security_footstep + } + anim step_right models/md5/monsters/zombies/zsec_machinegun/machinegun_step_right.md5anim { + frame 9 sound_body monster_zombie_security_footstep + frame 20 sound_body monster_zombie_security_footstep + } + + anim evade_left models/md5/monsters/zombies/zsec_machinegun/machinegun_evade_left.md5anim { + frame 19 sound_body monster_zombie_security_footstep + frame 24 sound_body monster_zombie_security_footstep + frame 29 sound_body monster_zombie_security_footstep + frame 32 sound_body monster_zombie_security_footstep + } + anim evade_right models/md5/monsters/zombies/zsec_machinegun/machinegun_evade_right.md5anim { + frame 19 sound_body monster_zombie_security_footstep + frame 22 sound_body monster_zombie_security_footstep + frame 29 sound_body monster_zombie_security_footstep + } + anim crouch_pain models/md5/monsters/zombies/zsec_machinegun/machinegun_crouch_left_pain.md5anim { + frame 1 sound_voice monster_zombie_security_pain + } + + anim crouch_pain_chest models/md5/monsters/zombies/zsec_machinegun/machinegun_crouch_left_pain.md5anim { + frame 1 sound_voice monster_zombie_security_pain + } + + anim crouch_pain_head models/md5/monsters/zombies/zsec_machinegun/machinegun_crouch_right_pain.md5anim { + frame 1 sound_voice monster_zombie_security_pain + } + + anim crouch_pain_left_arm models/md5/monsters/zombies/zsec_machinegun/machinegun_crouch_left_pain.md5anim { + frame 1 sound_voice monster_zombie_security_pain + } + + anim crouch_pain_right_arm models/md5/monsters/zombies/zsec_machinegun/machinegun_crouch_right_pain.md5anim { + frame 1 sound_voice monster_zombie_security_pain + } + + + anim pain models/md5/monsters/zombies/zsec_machinegun/machinegun_chest_pain.md5anim { + frame 1 sound_voice monster_zombie_security_pain + } + + anim pain_chest models/md5/monsters/zombies/zsec_machinegun/machinegun_chest_pain.md5anim { + frame 1 sound_voice monster_zombie_security_pain + } + + anim pain_head models/md5/monsters/zombies/zsec_machinegun/machinegun_head_pain.md5anim { + frame 1 sound_voice monster_zombie_security_pain + } + + anim pain_right_arm models/md5/monsters/zombies/zsec_machinegun/machinegun_right_pain.md5anim { + frame 1 sound_voice monster_zombie_security_pain + } + + anim pain_left_arm models/md5/monsters/zombies/zsec_machinegun/machinegun_left_pain.md5anim { + frame 1 sound_voice monster_zombie_security_pain + } + + anim stepoutright_out models/md5/monsters/zombies/zsec_machinegun/machinegun_wallleanright_B.md5anim { + frame 8 sound_body monster_zombie_security_footstep + } + anim stepoutright_fire models/md5/monsters/zombies/zsec_machinegun/machinegun_wallleanright_C.md5anim { + frame 4 sound_weapon monster_machinegun_fire + frame 4 launch_missile barrel + frame 7 sound_weapon monster_machinegun_fire + frame 7 launch_missile barrel + frame 10 sound_weapon monster_machinegun_fire + frame 10 launch_missile barrel + frame 13 sound_weapon monster_machinegun_fire + frame 13 launch_missile barrel + frame 16 sound_weapon monster_machinegun_fire + frame 16 launch_missile barrel + frame 19 sound_weapon monster_machinegun_fire + frame 19 launch_missile barrel + frame 22 sound_weapon monster_machinegun_fire + frame 22 launch_missile barrel + frame 25 sound_weapon monster_machinegun_fire + frame 25 launch_missile barrel + frame 28 sound_weapon monster_machinegun_fire + frame 28 launch_missile barrel + frame 31 sound_weapon monster_machinegun_fire + frame 31 launch_missile barrel + } + anim stepoutright_in models/md5/monsters/zombies/zsec_machinegun/machinegun_wallleanright_D.md5anim { + frame 13 sound_body monster_zombie_security_footstep + + } + anim stepoutright_wait models/md5/monsters/zombies/zsec_machinegun/machinegun_wallleanright_A.md5anim + + anim stepoutleft_out models/md5/monsters/zombies/zsec_machinegun/machinegun_wallleanleft_B.md5anim { + frame 11 sound_body monster_zombie_security_footstep + } + anim stepoutleft_fire models/md5/monsters/zombies/zsec_machinegun/machinegun_wallleanleft_C.md5anim { + frame 4 sound_weapon monster_machinegun_fire + frame 4 launch_missile barrel + frame 7 sound_weapon monster_machinegun_fire + frame 7 launch_missile barrel + frame 10 sound_weapon monster_machinegun_fire + frame 10 launch_missile barrel + frame 13 sound_weapon monster_machinegun_fire + frame 13 launch_missile barrel + frame 16 sound_weapon monster_machinegun_fire + frame 16 launch_missile barrel + frame 19 sound_weapon monster_machinegun_fire + frame 19 launch_missile barrel + frame 22 sound_weapon monster_machinegun_fire + frame 22 launch_missile barrel + frame 25 sound_weapon monster_machinegun_fire + frame 25 launch_missile barrel + frame 28 sound_weapon monster_machinegun_fire + frame 28 launch_missile barrel + frame 31 sound_weapon monster_machinegun_fire + frame 31 launch_missile barrel + } + anim stepoutleft_in models/md5/monsters/zombies/zsec_machinegun/machinegun_wallleanleft_D.md5anim { + frame 13 sound_body monster_zombie_security_footstep + } + anim stepoutleft_wait models/md5/monsters/zombies/zsec_machinegun/machinegun_wallleanleft_A.md5anim + + anim leanoutright_out models/md5/monsters/zombies/zsec_machinegun/machinegun_wallleanright_B.md5anim { + frame 10 sound_body monster_zombie_security_footstep + } + anim leanoutright_fire models/md5/monsters/zombies/zsec_machinegun/machinegun_wallleanright_C.md5anim { + frame 4 sound_weapon monster_machinegun_fire + frame 4 launch_missile barrel + frame 7 sound_weapon monster_machinegun_fire + frame 7 launch_missile barrel + frame 10 sound_weapon monster_machinegun_fire + frame 10 launch_missile barrel + frame 13 sound_weapon monster_machinegun_fire + frame 13 launch_missile barrel + frame 16 sound_weapon monster_machinegun_fire + frame 16 launch_missile barrel + frame 19 sound_weapon monster_machinegun_fire + frame 19 launch_missile barrel + frame 22 sound_weapon monster_machinegun_fire + frame 22 launch_missile barrel + frame 25 sound_weapon monster_machinegun_fire + frame 25 launch_missile barrel + frame 28 sound_weapon monster_machinegun_fire + frame 28 launch_missile barrel + frame 31 sound_weapon monster_machinegun_fire + frame 31 launch_missile barrel + } + anim leanoutright_in models/md5/monsters/zombies/zsec_machinegun/machinegun_wallleanright_D.md5anim { + frame 13 sound_body monster_zombie_security_footstep + } + anim leanoutright_wait models/md5/monsters/zombies/zsec_machinegun/machinegun_wallleanright_A.md5anim + + anim leanoutleft_out models/md5/monsters/zombies/zsec_machinegun/machinegun_wallleanleft_B.md5anim { + frame 10 sound_body monster_zombie_security_footstep + } + anim leanoutleft_fire models/md5/monsters/zombies/zsec_machinegun/machinegun_wallleanleft_C.md5anim { + frame 4 sound_weapon monster_machinegun_fire + frame 4 launch_missile barrel + frame 7 sound_weapon monster_machinegun_fire + frame 7 launch_missile barrel + frame 10 sound_weapon monster_machinegun_fire + frame 10 launch_missile barrel + frame 13 sound_weapon monster_machinegun_fire + frame 13 launch_missile barrel + frame 16 sound_weapon monster_machinegun_fire + frame 16 launch_missile barrel + frame 19 sound_weapon monster_machinegun_fire + frame 19 launch_missile barrel + frame 22 sound_weapon monster_machinegun_fire + frame 22 launch_missile barrel + frame 25 sound_weapon monster_machinegun_fire + frame 25 launch_missile barrel + frame 28 sound_weapon monster_machinegun_fire + frame 28 launch_missile barrel + frame 31 sound_weapon monster_machinegun_fire + frame 31 launch_missile barrel + } + anim leanoutleft_in models/md5/monsters/zombies/zsec_machinegun/machinegun_wallleanleft_D.md5anim { + frame 13 sound_body monster_zombie_security_footstep + } + anim leanoutleft_wait models/md5/monsters/zombies/zsec_machinegun/machinegun_wallleanleft_A.md5anim + + anim cratestand_out models/md5/monsters/zombies/zsec_machinegun/machinegun_crate_up_B.md5anim + anim cratestand_fire models/md5/monsters/zombies/zsec_machinegun/machinegun_crate_up_C.md5anim { + frame 4 sound_weapon monster_machinegun_fire + frame 4 launch_missile barrel + frame 7 sound_weapon monster_machinegun_fire + frame 7 launch_missile barrel + frame 10 sound_weapon monster_machinegun_fire + frame 10 launch_missile barrel + frame 13 sound_weapon monster_machinegun_fire + frame 13 launch_missile barrel + frame 16 sound_weapon monster_machinegun_fire + frame 16 launch_missile barrel + frame 19 sound_weapon monster_machinegun_fire + frame 19 launch_missile barrel + frame 22 sound_weapon monster_machinegun_fire + frame 22 launch_missile barrel + frame 25 sound_weapon monster_machinegun_fire + frame 25 launch_missile barrel + frame 28 sound_weapon monster_machinegun_fire + frame 28 launch_missile barrel + frame 31 sound_weapon monster_machinegun_fire + frame 31 launch_missile barrel + } + anim cratestand_in models/md5/monsters/zombies/zsec_machinegun/machinegun_crate_up_D.md5anim + anim cratestand_wait models/md5/monsters/zombies/zsec_machinegun/machinegun_crate_up_A.md5anim + + anim rotoutleft1_out models/md5/monsters/zombies/zsec_machinegun/machinegun_wallrotleft_B.md5anim { + frame 8 sound_body monster_zombie_security_footstep + } + anim rotoutleft1_fire models/md5/monsters/zombies/zsec_machinegun/machinegun_wallrotleft_C.md5anim { + frame 4 sound_weapon monster_machinegun_fire + frame 4 launch_missile barrel + frame 7 sound_weapon monster_machinegun_fire + frame 7 launch_missile barrel + frame 10 sound_weapon monster_machinegun_fire + frame 10 launch_missile barrel + frame 13 sound_weapon monster_machinegun_fire + frame 13 launch_missile barrel + frame 16 sound_weapon monster_machinegun_fire + frame 16 launch_missile barrel + frame 19 sound_weapon monster_machinegun_fire + frame 19 launch_missile barrel + frame 22 sound_weapon monster_machinegun_fire + frame 22 launch_missile barrel + frame 25 sound_weapon monster_machinegun_fire + frame 25 launch_missile barrel + frame 28 sound_weapon monster_machinegun_fire + frame 28 launch_missile barrel + frame 31 sound_weapon monster_machinegun_fire + frame 31 launch_missile barrel + } + anim rotoutleft1_in models/md5/monsters/zombies/zsec_machinegun/machinegun_wallrotleft_D.md5anim { + frame 9 sound_body monster_zombie_security_footstep + } + anim rotoutleft1_wait models/md5/monsters/zombies/zsec_machinegun/machinegun_wallrotleft_A.md5anim + + anim rotoutright1_out models/md5/monsters/zombies/zsec_machinegun/machinegun_wallrotright_B.md5anim { + frame 6 sound_body monster_zombie_security_footstep + } + anim rotoutright1_fire models/md5/monsters/zombies/zsec_machinegun/machinegun_wallrotright_C.md5anim { + frame 4 sound_weapon monster_machinegun_fire + frame 4 launch_missile barrel + frame 7 sound_weapon monster_machinegun_fire + frame 7 launch_missile barrel + frame 10 sound_weapon monster_machinegun_fire + frame 10 launch_missile barrel + frame 13 sound_weapon monster_machinegun_fire + frame 13 launch_missile barrel + frame 16 sound_weapon monster_machinegun_fire + frame 16 launch_missile barrel + frame 19 sound_weapon monster_machinegun_fire + frame 19 launch_missile barrel + frame 22 sound_weapon monster_machinegun_fire + frame 22 launch_missile barrel + frame 25 sound_weapon monster_machinegun_fire + frame 25 launch_missile barrel + frame 28 sound_weapon monster_machinegun_fire + frame 28 launch_missile barrel + frame 31 sound_weapon monster_machinegun_fire + frame 31 launch_missile barrel + } + anim rotoutright1_in models/md5/monsters/zombies/zsec_machinegun/machinegun_wallrotright_D.md5anim { + frame 10 sound_body monster_zombie_security_footstep + } + anim rotoutright1_wait models/md5/monsters/zombies/zsec_machinegun/machinegun_wallrotright_A.md5anim + + anim rotoutleft2_out models/md5/monsters/zombies/zsec_machinegun/machinegun_wallrotleft_B.md5anim { + frame 8 sound_body monster_zombie_security_footstep + } + anim rotoutleft2_fire models/md5/monsters/zombies/zsec_machinegun/machinegun_wallrotleft_C.md5anim { + frame 4 sound_weapon monster_machinegun_fire + frame 4 launch_missile barrel + frame 7 sound_weapon monster_machinegun_fire + frame 7 launch_missile barrel + frame 10 sound_weapon monster_machinegun_fire + frame 10 launch_missile barrel + frame 13 sound_weapon monster_machinegun_fire + frame 13 launch_missile barrel + frame 16 sound_weapon monster_machinegun_fire + frame 16 launch_missile barrel + frame 19 sound_weapon monster_machinegun_fire + frame 19 launch_missile barrel + frame 22 sound_weapon monster_machinegun_fire + frame 22 launch_missile barrel + frame 25 sound_weapon monster_machinegun_fire + frame 25 launch_missile barrel + frame 28 sound_weapon monster_machinegun_fire + frame 28 launch_missile barrel + frame 31 sound_weapon monster_machinegun_fire + frame 31 launch_missile barrel + } + anim rotoutleft2_in models/md5/monsters/zombies/zsec_machinegun/machinegun_wallrotleft_D.md5anim { + frame 9 sound_body monster_zombie_security_footstep + } + anim rotoutleft2_wait models/md5/monsters/zombies/zsec_machinegun/machinegun_wallrotleft_A.md5anim + + anim rotoutright2_out models/md5/monsters/zombies/zsec_machinegun/machinegun_wallrotright_B.md5anim { + frame 6 sound_body monster_zombie_security_footstep + } + anim rotoutright2_fire models/md5/monsters/zombies/zsec_machinegun/machinegun_wallrotright_C.md5anim { + frame 4 sound_weapon monster_machinegun_fire + frame 4 launch_missile barrel + frame 7 sound_weapon monster_machinegun_fire + frame 7 launch_missile barrel + frame 10 sound_weapon monster_machinegun_fire + frame 10 launch_missile barrel + frame 13 sound_weapon monster_machinegun_fire + frame 13 launch_missile barrel + frame 16 sound_weapon monster_machinegun_fire + frame 16 launch_missile barrel + frame 19 sound_weapon monster_machinegun_fire + frame 19 launch_missile barrel + frame 22 sound_weapon monster_machinegun_fire + frame 22 launch_missile barrel + frame 25 sound_weapon monster_machinegun_fire + frame 25 launch_missile barrel + frame 28 sound_weapon monster_machinegun_fire + frame 28 launch_missile barrel + frame 31 sound_weapon monster_machinegun_fire + frame 31 launch_missile barrel + } + anim rotoutright2_in models/md5/monsters/zombies/zsec_machinegun/machinegun_wallrotright_D.md5anim { + frame 10 sound_body monster_zombie_security_footstep + } + anim rotoutright2_wait models/md5/monsters/zombies/zsec_machinegun/machinegun_wallrotright_A.md5anim + + anim range_attack models/md5/monsters/zombies/zsec_machinegun/machinegun_raise.md5anim + anim range_attack_loop1 models/md5/monsters/zombies/zsec_machinegun/machinegun_stand_fire.md5anim { + frame 4 sound_weapon monster_machinegun_fire + frame 4 launch_missile barrel + frame 7 sound_weapon monster_machinegun_fire + frame 7 launch_missile barrel + frame 10 sound_weapon monster_machinegun_fire + frame 10 launch_missile barrel + frame 13 sound_weapon monster_machinegun_fire + frame 13 launch_missile barrel + frame 16 sound_weapon monster_machinegun_fire + frame 16 launch_missile barrel + frame 19 sound_weapon monster_machinegun_fire + frame 19 launch_missile barrel + frame 22 sound_weapon monster_machinegun_fire + frame 22 launch_missile barrel + frame 25 sound_weapon monster_machinegun_fire + frame 25 launch_missile barrel + frame 28 sound_weapon monster_machinegun_fire + frame 28 launch_missile barrel + frame 31 sound_weapon monster_machinegun_fire + frame 31 launch_missile barrel + } + anim range_attack_loop2 models/md5/monsters/zombies/zsec_machinegun/machinegun_stand_fire.md5anim { + frame 4 sound_weapon monster_machinegun_fire + frame 4 launch_missile barrel + frame 7 sound_weapon monster_machinegun_fire + frame 7 launch_missile barrel + frame 10 sound_weapon monster_machinegun_fire + frame 10 launch_missile barrel + frame 13 sound_weapon monster_machinegun_fire + frame 13 launch_missile barrel + frame 16 sound_weapon monster_machinegun_fire + frame 16 launch_missile barrel + frame 19 sound_weapon monster_machinegun_fire + frame 19 launch_missile barrel + frame 22 sound_weapon monster_machinegun_fire + frame 22 launch_missile barrel + frame 25 sound_weapon monster_machinegun_fire + frame 25 launch_missile barrel + frame 28 sound_weapon monster_machinegun_fire + frame 28 launch_missile barrel + frame 31 sound_weapon monster_machinegun_fire + frame 31 launch_missile barrel + } + anim range_attack_end models/md5/monsters/zombies/zsec_machinegun/machinegun_lower.md5anim + + anim crate_up_out models/md5/monsters/zombies/zsec_machinegun/machinegun_crate_up_B.md5anim + anim crate_up_fire models/md5/monsters/zombies/zsec_machinegun/machinegun_crate_up_C.md5anim { + frame 4 sound_weapon monster_machinegun_fire + frame 4 launch_missile barrel + frame 7 sound_weapon monster_machinegun_fire + frame 7 launch_missile barrel + frame 10 sound_weapon monster_machinegun_fire + frame 10 launch_missile barrel + frame 13 sound_weapon monster_machinegun_fire + frame 13 launch_missile barrel + frame 16 sound_weapon monster_machinegun_fire + frame 16 launch_missile barrel + frame 19 sound_weapon monster_machinegun_fire + frame 19 launch_missile barrel + frame 22 sound_weapon monster_machinegun_fire + frame 22 launch_missile barrel + frame 25 sound_weapon monster_machinegun_fire + frame 25 launch_missile barrel + frame 28 sound_weapon monster_machinegun_fire + frame 28 launch_missile barrel + frame 31 sound_weapon monster_machinegun_fire + frame 31 launch_missile barrel + } + anim crate_up_in models/md5/monsters/zombies/zsec_machinegun/machinegun_crate_up_D.md5anim + anim crate_up_wait models/md5/monsters/zombies/zsec_machinegun/machinegun_crate_up_A.md5anim +} + +entityDef monster_zsec_machinegun { + "inherit" "monster_zsec_shotgun" + "scriptobject" "ai" + "nativeobject" "rvmMonsterZombieSecurityPistol" + "model" "model_monster_zsec_machinegun" + "size" "40 40 72" + "use_aas" "aas48" + "team" "1" + "rank" "1" + "health" "90" + "def_projectile" "projectile_bullet_zsec_machinegun" + "projectile_spread" "2" + "num_projectiles" "1" + "attack_cone" "70" + "attack_accuracy" "3" + "smoke_weapon" "cgsmoke.smoke" + "smoke_wound_metal" "bulletricochet.prt" + "smoke_wound_ricochet" "bulletricochet.prt" + "run_attack" "1" // allow shooting while running + + "ragdoll" "monster_zombie_security_machinegun" + + "def_head" "head_security_dhelmet" + "head_joint" "Shoulders" + + + "def_dropGibItem1" "moveable_item_head_pork" + "dropGibItem1Joint" "headcontrol" + "skin_dropGib" "skins/monsters/zombies/securitygib.skin" + + "def_dropGibItem2" "moveable_item_torso_pork" + "dropGibItem2Joint" "Chest" + + "def_dropGibItem3" "moveable_item_rup_arm_pork" + "dropGibItem3Joint" "Ruparm" + + "def_dropGibItem4" "moveable_item_left_waist_pork" + "dropGibItem4Joint" "Waist" + + "def_dropGibItem5" "moveable_item_lup_leg_pork" + "dropGibItem5Joint" "Lupleg" + + "def_dropGibItem6" "moveable_item_rup_leg_pork" + "dropGibItem6Joint" "Rupleg" + + "def_dropGibItem7" "moveable_item_rup2_leg_pork" + "dropGibItem7Joint" "Rloleg" + + "def_dropGibItem8" "moveable_item_pelvis_pork" + "dropGibItem8Joint" "Hips" + + "def_dropDeathItem9" "moveable_item_machinegun" + "dropDeathItem9Joint" "machinegun" + "skin_dropDeath" "skins/monsters/zombies/zsecurity.skin" + + + "mtr_flashShader" "muzzleflash" + "flashTime" "0.15" + "flashColor" "1 0.8 0.4" + "flashRadius" "120" +} + +entityDef damage_bullet_zsec_machinegun { + "damage" "3" + "kickDir" "1 0 0" + + "mtr_blob" "genericDamage" + "blob_time" "300" + "blob_size" "400" + "blob_offset_x" "400" + + "knockback" "1" + + "smoke_wound_flesh" "bloodwound.smoke" + "mtr_wound_flesh" "textures/decals/hurt02" + "mtr_splat_flesh" "textures/decals/dsplat2" + "mtr_splat_flesh2" "textures/decals/dsplat5" + "mtr_splat_flesh3" "textures/decals/dsplat7" + "mtr_splat_flesh4" "textures/decals/dsplat11" + "snd_flesh" "bullet_impact_flesh" + + "kick_time" "400" + "kick_amplitude" "1" + + "dv_time" "100" +} + +entityDef projectile_bullet_zsec_machinegun { + "spawnclass" "idProjectile" + "mins" "-1 -1 -1" + "maxs" "1 1 1" + "cone" "3" + "scale" "0.1" + "noshadows" "1" + "tracers" "1" + "model_tracer" "models/particles/tracer/tracer.lwo" + + "snd_ricochet" "bullet_ricochet" + "snd_tracer" "bullet_flight" + "snd_impact" "bullet_impact_metal" + + "def_damage" "damage_bullet_zsec_machinegun" + + "launchFromBarrel" "1" + "health" "0" + "velocity" "2000 0 0" // slowed down for tracer effect + "angular_velocity" "0 0 0" + "thrust" "0" + "thrust_start" "0" + "thrust_end" "0" + "linear_friction" "0" + "angular_friction" "0" + "contact_friction" "0" + "bounce" "0.6" + "mass" "2" + "gravity" "0" + "fuse" "4" + + "detonate_on_fuse" "0" + "detonate_on_death" "0" + "detonate_on_world" "1" + "detonate_on_actor" "1" + + "impact_damage_effect" "1" + "impact_gib" "1" + + "mtr_detonate" "textures/decals/bulleth02" + "decal_size" "10" + + "smoke_fly" "" + "smoke_detonate" "smokeandspark.smoke" + "smoke_bounce" "" //particles/bullet_sparks.particle" + "smoke_fuse" "" + + "mtr_light_shader" "" + "light_color" "0 0 0" + "light_radius" "0" + "light_offset" "0 0 0" + + "mtr_explode_light_shader" "" + "explode_light_color" "0 0 0" + "explode_light_radius" "0" + "explode_light_fadetime" "0" +} diff --git a/base/def/monster_zsec_pistol.def b/base/def/monster_zsec_pistol.def new file mode 100644 index 00000000..66ff3c5f --- /dev/null +++ b/base/def/monster_zsec_pistol.def @@ -0,0 +1,550 @@ +/*********************************************************************** + +monster_zsec_pistol.def + +***********************************************************************/ + +export fred { + options -prefix ZOMBIE_ -keep Rhand Lknee Rknee eject barrel flash Body Body2 headcontrol neckcontrol loneckcontrol SPINNER Lhand1 Rhand1 -parent headcontrol neckcontrol -parent neckcontrol loneckcontrol -parent loneckcontrol Shoulders -parent rshldrpad Shoulders -parent lshldrpad Shoulders -parent shield Lloarm -parent pistol Rhand1 -parent Body2 Body -parent Hips Body2 -parent SPINNER Body2 -parent Waist SPINNER -rename peject eject -rename pbarrel barrel -rename pflash flash -parent eject pistol -parent flash pistol -parent barrel pistol + + addoptions -keepmesh securitybodymesh + addoptions -keepmesh sec_rshldrmesh + addoptions -keepmesh sec_lshldrmesh + addoptions -keepmesh w_pistolmesh + addoptions -keepmesh pflash1 + addoptions -keepmesh pflash2 + addoptions -keepmesh secsheild_outerglass + addoptions -keepmesh secsheild_innerglass + addoptions -keepmesh secsheild_innermesh + addoptions -keepmesh secsheild_outermesh + addoptions -keepmesh skeletonmesh + + mesh models/monsters/zombie/cycles/zombie_mesh.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_pistol/zsecpistol + + anim models/monsters/zombie/cycles/attacks/pistol_aim.mb -range 16 16 -rotate 90 -dest models/md5/monsters/zombies/zsec_pistol/aim + anim models/monsters/zombie/cycles/attacks/pistol_raise.mb -range 1 16 -rotate 90 -dest models/md5/monsters/zombies/zsec_pistol/raise + anim models/monsters/zombie/cycles/attacks/pistol_raise.mb -range 16 32 -rotate 90 -dest models/md5/monsters/zombies/zsec_pistol/lower + + anim models/monsters/zombie/cycles/idles/security_afpose.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_pistol/af_pose -prefix SUIT_ + anim models/monsters/zombie/cycles/runs/shield_run.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_shield/shield_run + + anim models/monsters/zombie/cycles/idles/pistol_stand.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_pistol/stand + + anim models/monsters/zombie/cycles/walks/pistol_step_left.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_pistol/step_left + anim models/monsters/zombie/cycles/walks/pistol_step_right.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_pistol/step_right + + anim models/monsters/zombie/cycles/idles/pistol_sight.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_pistol/sight + + anim models/monsters/zombie/cycles/walks/pistol_walk2.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_pistol/walk2 + + anim models/monsters/zombie/cycles/attacks/pistol_crouch_aim.mb -rotate 90 -range 11 11 -dest models/md5/monsters/zombies/zsec_pistol/crouch_aim + + anim models/monsters/zombie/cycles/attacks/pistol_crouch_aim_pain_lft.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_pistol/crouch_aim_pain_left + anim models/monsters/zombie/cycles/attacks/pistol_crouch_aim_pain_center.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_pistol/crouch_pain_center + anim models/monsters/zombie/cycles/attacks/pistol_crouch_aim_pain_rt.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_pistol/crouch_aim_pain_right + + anim models/monsters/zombie/cycles/attacks/pistol_crouch_raise_fire_lower.mb -range 1 11 -rotate 90 -dest models/md5/monsters/zombies/zsec_pistol/crouch_raise + anim models/monsters/zombie/cycles/attacks/pistol_crouch_raise_fire_lower.mb -range 11 37 -rotate 90 -dest models/md5/monsters/zombies/zsec_pistol/crouch_fire + anim models/monsters/zombie/cycles/attacks/pistol_crouch_raise_fire_lower.mb -range 37 50 -rotate 90 -dest models/md5/monsters/zombies/zsec_pistol/crouch_lower + + anim models/monsters/zombie/cycles/attacks/pistol_fire1.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_pistol/fire1 + + anim models/monsters/zombie/cycles/pains/zsec_pistol_pains.mb -range 44 63 -rotate 90 -dest models/md5/monsters/zombies/zsec_pistol/chestpain1 + anim models/monsters/zombie/cycles/pains/zsec_pistol_pains.mb -range 65 83 -rotate 90 -dest models/md5/monsters/zombies/zsec_pistol/leftarmpain1 + anim models/monsters/zombie/cycles/pains/zsec_pistol_pains.mb -range 85 105 -rotate 90 -dest models/md5/monsters/zombies/zsec_pistol/rightarmpain1 + anim models/monsters/zombie/cycles/pains/zsec_pistol_pains.mb -range 108 125 -rotate 90 -dest models/md5/monsters/zombies/zsec_pistol/chestpain2 + anim models/monsters/zombie/cycles/pains/zsec_pistol_pains.mb -range 133 155 -rotate 90 -dest models/md5/monsters/zombies/zsec_pistol/headpain1 + anim models/monsters/zombie/cycles/pains/zsec_pistol_pains.mb -range 163 185 -rotate 90 -dest models/md5/monsters/zombies/zsec_pistol/leftarmpain2 + anim models/monsters/zombie/cycles/pains/zsec_pistol_pains.mb -range 187 215 -rotate 90 -dest models/md5/monsters/zombies/zsec_pistol/leftarmpain3 + anim models/monsters/zombie/cycles/pains/zsec_pistol_pains.mb -range 248 274 -rotate 90 -dest models/md5/monsters/zombies/zsec_pistol/headpain2 + anim models/monsters/zombie/cycles/pains/zsec_pistol_pains.mb -range 308 338 -rotate 90 -dest models/md5/monsters/zombies/zsec_pistol/rightarmpain2 + + anim models/monsters/zombie/cycles/runs/pistol_run1.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_pistol/run1 + anim models/monsters/zombie/cycles/runs/pistol_run2.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_pistol/run2 + + anim models/monsters/zombie/cycles/runs/evade_left.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_pistol/evade_left + anim models/monsters/zombie/cycles/runs/evade_right.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_pistol/evade_right +} + +model model_monster_zsec_pistol { + mesh models/md5/monsters/zombies/zsec_pistol/zsecpistol.md5mesh + + skin skins/monsters/zombies/zsecurity_pistol.skin + + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER ) + + anim af_pose models/md5/monsters/zombies/zsec_pistol/af_pose.md5anim + anim ik_pose models/md5/monsters/zombies/zsec_pistol/af_pose.md5anim + + anim idle models/md5/monsters/zombies/zsec_pistol/stand.md5anim + anim stand models/md5/monsters/zombies/zsec_pistol/stand.md5anim + + anim sight models/md5/monsters/zombies/zsec_pistol/sight.md5anim { + frame 1 sound_voice monster_zombie_security_sight + } + + anim walk models/md5/monsters/zombies/zsec_pistol/walk2.md5anim { + frame 4 sound_body monster_zombie_security_footstep + frame 12 sound_body monster_zombie_security_footstep + frame 22 sound_body monster_zombie_security_footstep + frame 34 sound_body monster_zombie_security_footstep + } + + anim step_left models/md5/monsters/zombies/zsec_pistol/step_left.md5anim { + + frame 7 sound_body monster_zombie_security_footstep + frame 16 sound_body monster_zombie_security_footstep + + } + + anim step_right models/md5/monsters/zombies/zsec_pistol/step_right.md5anim { + + frame 7 sound_body monster_zombie_security_footstep + frame 12 sound_body monster_zombie_security_footstep + + } + + anim run1 models/md5/monsters/zombies/zsec_pistol/run1.md5anim { + frame 9 sound_body monster_zombie_security_footstep + frame 16 sound_body monster_zombie_security_footstep + } + + anim run2 models/md5/monsters/zombies/zsec_pistol/run2.md5anim { + frame 1 sound_body monster_zombie_security_footstep + frame 10 sound_body monster_zombie_security_footstep + frame 19 sound_body monster_zombie_security_footstep + frame 28 sound_body monster_zombie_security_footstep + + } + + anim pain models/md5/monsters/zombies/zsec_pistol/chestpain1.md5anim { + frame 1 sound_voice monster_zombie_security_pain + } + anim pain_head1 models/md5/monsters/zombies/zsec_pistol/headpain1.md5anim { + frame 1 sound_voice monster_zombie_security_pain + } + anim pain_head2 models/md5/monsters/zombies/zsec_pistol/headpain2.md5anim { + frame 1 sound_voice monster_zombie_security_pain + } + anim pain_chest1 models/md5/monsters/zombies/zsec_pistol/chestpain1.md5anim { + frame 1 sound_voice monster_zombie_security_pain + } + anim pain_chest2 models/md5/monsters/zombies/zsec_pistol/chestpain2.md5anim { + frame 1 sound_voice monster_zombie_security_pain + } + anim pain_left_arm1 models/md5/monsters/zombies/zsec_pistol/leftarmpain1.md5anim { + frame 5 sound_voice monster_zombie_security_pain + } + anim pain_left_arm2 models/md5/monsters/zombies/zsec_pistol/leftarmpain2.md5anim { + frame 1 sound_voice monster_zombie_security_pain + } + anim pain_left_arm3 models/md5/monsters/zombies/zsec_pistol/leftarmpain3.md5anim { + frame 1 sound_voice monster_zombie_security_pain + } + anim pain_right_arm1 models/md5/monsters/zombies/zsec_pistol/rightarmpain1.md5anim { + frame 1 sound_voice monster_zombie_security_pain + } + anim pain_right_arm2 models/md5/monsters/zombies/zsec_pistol/rightarmpain2.md5anim { + frame 1 sound_voice monster_zombie_security_pain + } + + anim stepoutleft_out models/md5/monsters/zombies/zsec_pistol/wallstepleftpistol_B.md5anim { + + frame 13 sound_body monster_zombie_security_footstep + + } + anim stepoutleft_fire models/md5/monsters/zombies/zsec_pistol/wallstepleftpistol_C.md5anim { + frame 2 launch_missile pistol + frame 2 sound_weapon monster_pistol_fire + } + anim stepoutleft_in models/md5/monsters/zombies/zsec_pistol/wallstepleftpistol_D.md5anim { + + frame 11 sound_body monster_zombie_security_footstep + frame 18 sound_body monster_zombie_security_footstep + + } + + anim stepoutleft_wait models/md5/monsters/zombies/zsec_pistol/wallstepleftpistol_A.md5anim + + anim stepoutright_out models/md5/monsters/zombies/zsec_pistol/wallsteprightpistol_B.md5anim { + + frame 7 sound_body monster_zombie_security_footstep + frame 13 sound_body monster_zombie_security_footstep + + } + anim stepoutright_fire models/md5/monsters/zombies/zsec_pistol/wallsteprightpistol_C.md5anim { + frame 2 launch_missile pistol + frame 2 sound_weapon monster_pistol_fire + } + anim stepoutright_in models/md5/monsters/zombies/zsec_pistol/wallsteprightpistol_D.md5anim { + + frame 16 sound_body monster_zombie_security_footstep + + } + anim stepoutright_wait models/md5/monsters/zombies/zsec_pistol/wallsteprightpistol_A.md5anim + + anim rotoutleft1_out models/md5/monsters/zombies/zsec_pistol/wallrotleftpistol_B.md5anim { + + frame 11 sound_body monster_zombie_security_footstep + frame 13 sound_body monster_zombie_security_footstep + + } + anim rotoutleft1_fire models/md5/monsters/zombies/zsec_pistol/wallrotleftpistol_C.md5anim { + frame 2 launch_missile pistol + frame 2 sound_weapon monster_pistol_fire + } + anim rotoutleft1_in models/md5/monsters/zombies/zsec_pistol/wallrotleftpistol_D.md5anim { + + frame 12 sound_body monster_zombie_security_footstep + frame 16 sound_body monster_zombie_security_footstep + + } + anim rotoutleft1_wait models/md5/monsters/zombies/zsec_pistol/wallrotleftpistol_A.md5anim + + anim rotoutleft2_out models/md5/monsters/zombies/zsec_pistol/wallrotleftpistol2_B.md5anim { + + frame 12 sound_body monster_zombie_security_footstep + + } + anim rotoutleft2_fire models/md5/monsters/zombies/zsec_pistol/wallrotleftpistol2_C.md5anim { + frame 2 launch_missile pistol + frame 2 sound_weapon monster_pistol_fire + } + anim rotoutleft2_in models/md5/monsters/zombies/zsec_pistol/wallrotleftpistol2_D.md5anim { + + frame 16 sound_body monster_zombie_security_footstep + + } + anim rotoutleft2_wait models/md5/monsters/zombies/zsec_pistol/wallrotleftpistol2_A.md5anim + + anim rotoutright1_out models/md5/monsters/zombies/zsec_pistol/wallrotrightpistol_B.md5anim { + + frame 5 sound_body monster_zombie_security_footstep + frame 14 sound_body monster_zombie_security_footstep + + } + anim rotoutright1_fire models/md5/monsters/zombies/zsec_pistol/wallrotrightpistol_C.md5anim { + frame 2 launch_missile pistol + frame 2 sound_weapon monster_pistol_fire + } + anim rotoutright1_in models/md5/monsters/zombies/zsec_pistol/wallrotrightpistol_D.md5anim { + + frame 13 sound_body monster_zombie_security_footstep + frame 19 sound_body monster_zombie_security_footstep + + } + anim rotoutright1_wait models/md5/monsters/zombies/zsec_pistol/wallrotrightpistol_A.md5anim + + anim rotoutright2_out models/md5/monsters/zombies/zsec_pistol/wallrotrightpistol2_B.md5anim { + + frame 13 sound_body monster_zombie_security_footstep + frame 15 sound_body monster_zombie_security_footstep + + } + anim rotoutright2_fire models/md5/monsters/zombies/zsec_pistol/wallrotrightpistol2_C.md5anim { + frame 2 launch_missile pistol + frame 2 sound_weapon monster_pistol_fire + } + anim rotoutright2_in models/md5/monsters/zombies/zsec_pistol/wallrotrightpistol2_D.md5anim { + + frame 3 sound_body monster_zombie_security_footstep + frame 12 sound_body monster_zombie_security_footstep + frame 15 sound_body monster_zombie_security_footstep + + } + anim rotoutright2_wait models/md5/monsters/zombies/zsec_pistol/wallrotrightpistol2_A.md5anim + + anim craterotright_out models/md5/monsters/zombies/zsec_pistol/craterotrightpistol_B.md5anim { + + frame 17 sound_body monster_zombie_security_footstep + + } + anim craterotright_fire models/md5/monsters/zombies/zsec_pistol/craterotrightpistol_C.md5anim { + frame 1 sound_weapon monster_pistol_fire + frame 1 launch_missile pistol + } + anim craterotright_in models/md5/monsters/zombies/zsec_pistol/craterotrightpistol_D.md5anim { + + frame 22 sound_body monster_zombie_security_footstep + + } + anim craterotright_wait models/md5/monsters/zombies/zsec_pistol/craterotrightpistol_A.md5anim + + anim cratestand_out models/md5/monsters/zombies/zsec_pistol/cratestandpistol_B.md5anim + anim cratestand_fire models/md5/monsters/zombies/zsec_pistol/cratestandpistol_C.md5anim { + frame 1 sound_weapon monster_pistol_fire + frame 1 launch_missile pistol + } + anim cratestand_in models/md5/monsters/zombies/zsec_pistol/cratestandpistol_D.md5anim + anim cratestand_wait models/md5/monsters/zombies/zsec_pistol/cratestandpistol_A.md5anim + + + anim crouch_out models/md5/monsters/zombies/zsec_pistol/crouch_raise.md5anim + anim crouch_fire models/md5/monsters/zombies/zsec_pistol/crouch_fire.md5anim { + frame 1 sound_weapon monster_pistol_fire + frame 1 launch_missile pistol + } + anim crouch_in models/md5/monsters/zombies/zsec_pistol/crouch_lower.md5anim { + + frame 10 sound_body monster_zombie_security_footstep + } + anim crouch_wait models/md5/monsters/zombies/zsec_pistol/crouch_aim.md5anim + + anim range_attack_aim models/md5/monsters/zombies/zsec_pistol/aim.md5anim + anim range_attack models/md5/monsters/zombies/zsec_pistol/raise.md5anim + anim range_attack_loop models/md5/monsters/zombies/zsec_pistol/fire1.md5anim { + frame 1 sound_weapon monster_pistol_fire + frame 1 launch_missile pistol + } + anim range_attack_end models/md5/monsters/zombies/zsec_pistol/lower.md5anim + + anim crouch_range_attack_aim models/md5/monsters/zombies/zsec_pistol/crouch_aim.md5anim + anim crouch_range_attack models/md5/monsters/zombies/zsec_pistol/crouch_raise.md5anim + anim crouch_range_attack_loop models/md5/monsters/zombies/zsec_pistol/crouch_fire.md5anim { + frame 1 sound_weapon monster_pistol_fire + frame 1 launch_missile pistol + } + anim crouch_range_attack_end models/md5/monsters/zombies/zsec_pistol/crouch_lower.md5anim { + + frame 10 sound_body monster_zombie_security_footstep + + } + + anim crouch_pain models/md5/monsters/zombies/zsec_pistol/crouch_pain_center.md5anim { + frame 1 sound_voice monster_zombie_security_pain + } + anim crouch_pain_head models/md5/monsters/zombies/zsec_pistol/crouch_pain_center.md5anim { + frame 1 sound_voice monster_zombie_security_pain + } + anim crouch_pain_chest models/md5/monsters/zombies/zsec_pistol/crouch_pain_center.md5anim { + frame 1 sound_voice monster_zombie_security_pain + } + anim crouch_pain_left_arm models/md5/monsters/zombies/zsec_pistol/crouch_aim_pain_left.md5anim { + frame 1 sound_voice monster_zombie_security_pain + } + anim crouch_pain_right_arm models/md5/monsters/zombies/zsec_pistol/crouch_aim_pain_right.md5anim { + frame 1 sound_voice monster_zombie_security_pain + } + + anim evade_left models/md5/monsters/zombies/zsec_pistol/evade_left.md5anim { + frame 1 sound_voice monster_zombie_security_pain + frame 16 sound_body monster_zombie_security_footstep + frame 18 sound_body monster_zombie_security_footstep + frame 30 sound_body monster_zombie_security_footstep + + } + anim evade_right models/md5/monsters/zombies/zsec_pistol/evade_right.md5anim { + + frame 1 sound_voice monster_zombie_security_pain + frame 13 sound_body monster_zombie_security_footstep + frame 16 sound_body monster_zombie_security_footstep + frame 25 sound_body monster_zombie_security_footstep + + } +} + +entityDef monster_zsec_pistol { + "inherit" "zombie_default" + "scriptobject" "ai" + "nativeobject" "rvmMonsterZombieSecurityPistol" + "size" "40 40 72" + "use_aas" "aas48" + "team" "1" + "rank" "1" + "health" "55" + "def_projectile" "projectile_bullet_zsec_pistol" + "attack_cone" "70" + "attack_accuracy" "3" + "projectile_spread" "2" + "smoke_weapon" "cgsmoke.smoke" + "smoke_wound_metal" "bulletricochet.prt" + "smoke_wound_ricochet" "bulletricochet.prt" + "turn_rate" "360" + "mass" "150" + + "bone_focus" "headcontrol" + "bone_leftEye" "Leyeaim" + "bone_rightEye" "Reyeaim" + + "look_min" "-90 -125 0" + "look_max" "25 125 0" + "look_joint Waist" "0.1333 0.1333 0" + "look_joint Chest" "0.1333 0.1333 0" + "look_joint Shoulders" "0.1333 0.1333 0" + "look_joint headcontrol" "0.6 0.6 0" + "look_joint Ruparm" "-0.4 0 0" + "look_joint Luparm" "-0.4 0 0" + + "ragdoll" "monster_zombie_security_pistol" + + "ik_numLegs" "2" + "ik_footSize" "4" + "ik_waist" "Body2" + "ik_hip1" "Lupleg" + "ik_hip2" "Rupleg" + "ik_knee1" "Lloleg" + "ik_knee2" "Rloleg" + "ik_ankle1" "Lankle_r" + "ik_ankle2" "Rankle_r" + "ik_dir1" "Lknee" + "ik_dir2" "Rknee" + "ik_foot1" "Lball_r" + "ik_foot2" "Rball_r" + + + "model" "model_monster_zsec_pistol" + + "damage_zone head" "*loneckcontrol" + "damage_zone chest" "*Waist -*Rshldr -*Lshldr -*loneckcontrol" + "damage_zone left_arm" "*Lshldr" + "damage_zone right_arm" "*Rshldr" + "damage_zone legs" "*Hips" + + "damage_scale head" "1.25" + + + "def_head" "head_zombie6" + "head_joint" "Shoulders" + + "skin_dropGib" "skins/monsters/zombies/securitygib.skin" + "def_dropGibItem1" "moveable_item_head_pork" + "dropGibItem1Joint" "headcontrol" + + "def_dropGibItem2" "moveable_item_torso_pork" + "dropGibItem2Joint" "Chest" + + "def_dropGibItem3" "moveable_item_rup_arm_pork" + "dropGibItem3Joint" "Ruparm" + + "def_dropGibItem4" "moveable_item_left_waist_pork" + "dropGibItem4Joint" "Waist" + + "def_dropGibItem5" "moveable_item_lup_leg_pork" + "dropGibItem5Joint" "Lupleg" + + "def_dropGibItem6" "moveable_item_rup_leg_pork" + "dropGibItem6Joint" "Rupleg" + + "def_dropGibItem7" "moveable_item_rup2_leg_pork" + "dropGibItem7Joint" "Rloleg" + + "def_dropGibItem8" "moveable_item_pelvis_pork" + "dropGibItem8Joint" "Hips" + + "def_dropDeathItem9" "moveable_item_pistol" + "dropDeathItem9Joint" "pistol" + "skin_dropDeath" "skins/monsters/zombies/zsecurity.skin" + + + "snd_bounce" "ragdoll_impact" + "snd_footstep" "monster_zombie_security_footstep" + "snd_chatter" "monster_zombie_security_chatter" + "snd_chatter_combat" "monster_zombie_security_chatter_combat" + "snd_death" "monster_zombie_security_die" + + "mtr_flashShader" "muzzleflash" + "flashTime" "0.15" + "flashColor" "1 0.8 0.4" + "flashRadius" "120" +} + +model model_monster_zsec_pistol_slowfire { + inherit model_monster_zsec_pistol + anim range_attack_loop models/md5/monsters/zombies/zsec_pistol/fire1.md5anim { + frame 1 sound_weapon monster_pistol_fire + frame 1 launch_missile pistol + } + anim crouch_range_attack_loop models/md5/monsters/zombies/zsec_pistol/crouch_fire.md5anim { + frame 1 sound_weapon monster_pistol_fire + frame 1 launch_missile pistol + } + +} + +entityDef monster_zsec_pistol_slowfire { + "inherit" "monster_zsec_pistol" + "model" "model_monster_zsec_pistol_slowfire" +} + + + +entityDef damage_bullet_zsec_pistol { + "damage" "4" + "kickDir" "1 0 0" + + "mtr_blob" "genericDamage" + "blob_time" "300" + "blob_size" "400" + "blob_offset_x" "400" + + "knockback" "1" + + "smoke_wound_flesh" "bloodwound.smoke" + "mtr_wound_flesh" "textures/decals/hurt02" + "mtr_splat_flesh" "textures/decals/dsplat2" + "mtr_splat_flesh2" "textures/decals/dsplat5" + "mtr_splat_flesh3" "textures/decals/dsplat7" + "mtr_splat_flesh4" "textures/decals/dsplat11" + "snd_flesh" "bullet_impact_flesh" + + "kick_time" "400" + "kick_amplitude" "1" + + "dv_time" "100" +} + +entityDef projectile_bullet_zsec_pistol { + "spawnclass" "idProjectile" + "mins" "-1 -1 -1" + "maxs" "1 1 1" + "cone" "3" + "scale" "0.1" + "noshadows" "1" + + "snd_ricochet" "bullet_ricochet" + "snd_impact" "bullet_impact_metal" + + "def_damage" "damage_bullet_zsec_pistol" + + "launchFromBarrel" "0" + "health" "0" + "velocity" "2000 0 0" // slowed down for tracer effect + "angular_velocity" "0 0 0" + "thrust" "0" + "thrust_start" "0" + "thrust_end" "0" + "linear_friction" "0" + "angular_friction" "0" + "contact_friction" "0" + "bounce" "0.6" + "mass" "2" + "gravity" "0" + "fuse" "4" + + "detonate_on_fuse" "0" + "detonate_on_death" "0" + "detonate_on_world" "1" + "detonate_on_actor" "1" + + "impact_damage_effect" "1" + "impact_gib" "1" + + "mtr_detonate" "textures/decals/bulleth02" + "decal_size" "10" + + "smoke_fly" "" + "smoke_detonate" "smokeandspark.smoke" + "smoke_bounce" "" //particles/bullet_sparks.particle" + "smoke_fuse" "" + + "mtr_light_shader" "" + "light_color" "0 0 0" + "light_radius" "0" + "light_offset" "0 0 0" + + "mtr_explode_light_shader" "" + "explode_light_color" "0 0 0" + "explode_light_radius" "0" + "explode_light_fadetime" "0" +} diff --git a/base/def/monster_zsec_shield.def b/base/def/monster_zsec_shield.def new file mode 100644 index 00000000..df07e24f --- /dev/null +++ b/base/def/monster_zsec_shield.def @@ -0,0 +1,407 @@ +/*********************************************************************** + +monster_zsec_shield.def + +***********************************************************************/ + +/*** +export security shield guy +***/ + +export james { + + options -prefix SUIT_ -keep Lknee Rknee eject barrel flash Body2 headcontrol neckcontrol loneckcontrol SPINNER Lhand1 Rhand1 Body Rhand -parent headcontrol neckcontrol -parent neckcontrol loneckcontrol -parent loneckcontrol Shoulders -parent rshldrpad Shoulders -parent lshldrpad Shoulders -parent shield Lloarm -parent pistol Rhand1 -parent Body2 Body -parent Hips Body2 -parent SPINNER Body2 -parent Waist SPINNER -rename peject eject -rename pbarrel barrel -rename pflash flash -parent eject pistol -parent flash pistol -parent barrel pistol + + addoptions -keepmesh securitybodymesh + addoptions -keepmesh sec_rshldrmesh + addoptions -keepmesh sec_lshldrmesh + addoptions -keepmesh w_pistolmesh + addoptions -keepmesh pflash1 + addoptions -keepmesh pflash2 + addoptions -keepmesh secsheild_outerglass + addoptions -keepmesh secsheild_innerglass + addoptions -keepmesh secsheild_innermesh + addoptions -keepmesh secsheild_outermesh + addoptions -keepmesh skeletonmesh + + addoptions -align ALL + + anim models/characters/male_npc/cycles/idles/af_pose.mb -dest models/md5/monsters/zombies/zsec_shield/af_pose + anim models/monsters/zombie/cycles/walks/shield_walk.mb -dest models/md5/monsters/zombies/zsec_shield/shield_walk + anim models/monsters/zombie/cycles/idles/shield_sight.mb -dest models/md5/monsters/zombies/zsec_shield/shield_sight + anim models/monsters/zombie/cycles/idles/shield_stand.mb -dest models/md5/monsters/zombies/zsec_shield/shield_stand + anim models/monsters/zombie/cycles/pains/shield_head_pain.mb -dest models/md5/monsters/zombies/zsec_shield/shield_head_pain + anim models/monsters/zombie/cycles/pains/shield_chest_pain.mb -dest models/md5/monsters/zombies/zsec_shield/shield_chest_pain + anim models/monsters/zombie/cycles/pains/shield_left_pain.mb -dest models/md5/monsters/zombies/zsec_shield/shield_left_pain + anim models/monsters/zombie/cycles/pains/shield_right_pain.mb -dest models/md5/monsters/zombies/zsec_shield/shield_right_pain + anim models/monsters/zombie/cycles/attacks/shield_stand_crate.mb -range 0 0 -dest models/md5/monsters/zombies/zsec_shield/shield_crate_up_A + anim models/monsters/zombie/cycles/attacks/shield_stand_crate.mb -range 0 10 -dest models/md5/monsters/zombies/zsec_shield/shield_crate_up_B + anim models/monsters/zombie/cycles/attacks/shield_stand_crate.mb -range 11 30 -dest models/md5/monsters/zombies/zsec_shield/shield_crate_up_C + anim models/monsters/zombie/cycles/attacks/shield_stand_crate.mb -range 31 40 -dest models/md5/monsters/zombies/zsec_shield/shield_crate_up_D + anim models/monsters/zombie/cycles/runs/shield_evade_left.mb -dest models/md5/monsters/zombies/zsec_shield/shield_evade_left + anim models/monsters/zombie/cycles/runs/shield_evade_right.mb -dest models/md5/monsters/zombies/zsec_shield/shield_evade_right + anim models/monsters/zombie/cycles/attacks/shield_raise.mb -dest models/md5/monsters/zombies/zsec_shield/shield_raise + anim models/monsters/zombie/cycles/attacks/shield_lower.mb -dest models/md5/monsters/zombies/zsec_shield/shield_lower + anim models/monsters/zombie/cycles/attacks/shield_stand_fire.mb -dest models/md5/monsters/zombies/zsec_shield/shield_stand_fire + + anim models/monsters/zombie/cycles/attacks/shield_wall_rotate_left.mb -range 0 0 -dest models/md5/monsters/zombies/zsec_shield/shield_wallrotleft_A + anim models/monsters/zombie/cycles/attacks/shield_wall_rotate_left.mb -range 1 10 -dest models/md5/monsters/zombies/zsec_shield/shield_wallrotleft_B + anim models/monsters/zombie/cycles/attacks/shield_wall_rotate_left.mb -range 11 30 -dest models/md5/monsters/zombies/zsec_shield/shield_wallrotleft_C + anim models/monsters/zombie/cycles/attacks/shield_wall_rotate_left.mb -range 31 40 -dest models/md5/monsters/zombies/zsec_shield/shield_wallrotleft_D + + anim models/monsters/zombie/cycles/attacks/shield_wall_rotate_right.mb -range 0 0 -dest models/md5/monsters/zombies/zsec_shield/shield_wallrotright_A + anim models/monsters/zombie/cycles/attacks/shield_wall_rotate_right.mb -range 1 10 -dest models/md5/monsters/zombies/zsec_shield/shield_wallrotright_B + anim models/monsters/zombie/cycles/attacks/shield_wall_rotate_right.mb -range 11 30 -dest models/md5/monsters/zombies/zsec_shield/shield_wallrotright_C + anim models/monsters/zombie/cycles/attacks/shield_wall_rotate_right.mb -range 31 40 -dest models/md5/monsters/zombies/zsec_shield/shield_wallrotright_D + + anim models/monsters/zombie/cycles/attacks/shield_wall_lean_left.mb -range 0 0 -dest models/md5/monsters/zombies/zsec_shield/shield_wallleanleft_A + anim models/monsters/zombie/cycles/attacks/shield_wall_lean_left.mb -range 1 10 -dest models/md5/monsters/zombies/zsec_shield/shield_wallleanleft_B + anim models/monsters/zombie/cycles/attacks/shield_wall_lean_left.mb -range 11 30 -dest models/md5/monsters/zombies/zsec_shield/shield_wallleanleft_C + anim models/monsters/zombie/cycles/attacks/shield_wall_lean_left.mb -range 31 40 -dest models/md5/monsters/zombies/zsec_shield/shield_wallleanleft_D + + anim models/monsters/zombie/cycles/attacks/shield_wall_lean_right.mb -range 0 0 -dest models/md5/monsters/zombies/zsec_shield/shield_wallleanright_A + anim models/monsters/zombie/cycles/attacks/shield_wall_lean_right.mb -range 1 10 -dest models/md5/monsters/zombies/zsec_shield/shield_wallleanright_B + anim models/monsters/zombie/cycles/attacks/shield_wall_lean_right.mb -range 11 30 -dest models/md5/monsters/zombies/zsec_shield/shield_wallleanright_C + anim models/monsters/zombie/cycles/attacks/shield_wall_lean_right.mb -range 31 40 -dest models/md5/monsters/zombies/zsec_shield/shield_wallleanright_D + anim models/monsters/zombie/cycles/walks/shield_step_left.mb -dest models/md5/monsters/zombies/zsec_shield/shield_step_left + anim models/monsters/zombie/cycles/walks/shield_step_right.mb -dest models/md5/monsters/zombies/zsec_shield/shield_step_right + anim models/monsters/zombie/cycles/attacks/shield_crouch_range_attack.mb -dest models/md5/monsters/zombies/zsec_shield/shield_crouch_range_attack + anim models/monsters/zombie/cycles/attacks/shield_crouch_range_attack_loop.mb -dest models/md5/monsters/zombies/zsec_shield/shield_crouch_range_attack_loop + anim models/monsters/zombie/cycles/attacks/shield_crouch_range_attack_end.mb -dest models/md5/monsters/zombies/zsec_shield/shield_crouch_range_attack_end + anim models/monsters/zombie/cycles/attacks/shield_crouch_range_attack_aim.mb -dest models/md5/monsters/zombies/zsec_shield/shield_crouch_range_attack_aim + anim models/monsters/zombie/cycles/attacks/shield_stand_aim.mb -dest models/md5/monsters/zombies/zsec_shield/shield_stand_aim + anim models/monsters/zombie/cycles/pains/shield_crouch_left_pain.mb -dest models/md5/monsters/zombies/zsec_shield/shield_crouch_left_pain + anim models/monsters/zombie/cycles/pains/shield_crouch_right_pain.mb -dest models/md5/monsters/zombies/zsec_shield/shield_crouch_right_pain +} + +model model_monster_zsec_shield { + mesh models/md5/monsters/zombies/zsec_pistol/zsecpistol.md5mesh + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER ) + skin skins/monsters/zombies/zsecurity_helmet_pistol_shield.skin + + anim af_pose models/md5/monsters/zombies/zsec_pistol/af_pose.md5anim + anim ik_pose models/md5/monsters/zombies/zsec_pistol/af_pose.md5anim + + anim stand models/md5/monsters/zombies/zsec_shield/shield_stand.md5anim + anim idle models/md5/monsters/zombies/zsec_shield/shield_stand.md5anim + + anim sight models/md5/monsters/zombies/zsec_shield/shield_sight.md5anim { + frame 1 sound_voice monster_zombie_security_sight + } + + anim walk models/md5/monsters/zombies/zsec_shield/shield_walk.md5anim { + frame 9 sound_body monster_zombie_security_footstep + frame 21 sound_body monster_zombie_security_footstep + } + + anim run models/md5/monsters/zombies/zsec_shield/shield_run.md5anim { + frame 8 sound_body monster_zombie_security_footstep + frame 18 sound_body monster_zombie_security_footstep + } + + anim crouch_range_attack models/md5/monsters/zombies/zsec_shield/shield_crouch_range_attack.md5anim + anim crouch_range_attack_loop models/md5/monsters/zombies/zsec_shield/shield_crouch_range_attack_loop.md5anim { + frame 1 sound_weapon player_pistol_fire + frame 1 launch_missile pistol + } + anim crouch_range_attack_end models/md5/monsters/zombies/zsec_shield/shield_crouch_range_attack_end.md5anim + anim crouch_range_attack_aim models/md5/monsters/zombies/zsec_shield/shield_crouch_range_attack_aim.md5anim + + anim range_attack_aim models/md5/monsters/zombies/zsec_shield/shield_stand_aim.md5anim + + + anim step_left models/md5/monsters/zombies/zsec_shield/shield_step_left.md5anim + anim step_right models/md5/monsters/zombies/zsec_shield/shield_step_right.md5anim + + anim evade_left models/md5/monsters/zombies/zsec_shield/shield_evade_left.md5anim + + anim evade_right models/md5/monsters/zombies/zsec_shield/shield_evade_right.md5anim + + anim crouch_pain models/md5/monsters/zombies/zsec_shield/shield_crouch_left_pain.md5anim { + frame 1 sound_voice monster_zombie_security_pain + } + + anim crouch_pain_chest models/md5/monsters/zombies/zsec_shield/shield_crouch_left_pain.md5anim { + frame 1 sound_voice monster_zombie_security_pain + } + anim crouch_pain_head models/md5/monsters/zombies/zsec_shield/shield_crouch_right_pain.md5anim { + frame 1 sound_voice monster_zombie_security_pain + } + anim crouch_pain_left_arm models/md5/monsters/zombies/zsec_shield/shield_crouch_left_pain.md5anim { + frame 1 sound_voice monster_zombie_security_pain + } + anim crouch_pain_right_arm models/md5/monsters/zombies/zsec_shield/shield_crouch_right_pain.md5anim { + frame 1 sound_voice monster_zombie_security_pain + } + + anim pain models/md5/monsters/zombies/zsec_shield/shield_chest_pain.md5anim { + frame 1 sound_voice monster_zombie_security_pain + } + + anim pain_chest models/md5/monsters/zombies/zsec_shield/shield_chest_pain.md5anim { + frame 1 sound_voice monster_zombie_security_pain + } + + anim pain_head models/md5/monsters/zombies/zsec_shield/shield_head_pain.md5anim { + frame 1 sound_voice monster_zombie_security_pain + } + + anim pain_right_arm models/md5/monsters/zombies/zsec_shield/shield_right_pain.md5anim { + frame 1 sound_voice monster_zombie_security_pain + } + + anim pain_left_arm models/md5/monsters/zombies/zsec_shield/shield_left_pain.md5anim { + frame 1 sound_voice monster_zombie_security_pain + } + + anim stepoutright_out models/md5/monsters/zombies/zsec_shield/shield_wallrotright_B.md5anim + anim stepoutright_fire models/md5/monsters/zombies/zsec_shield/shield_wallrotright_C.md5anim { + frame 2 sound_weapon player_pistol_fire + frame 2 launch_missile pistol + } + anim stepoutright_in models/md5/monsters/zombies/zsec_shield/shield_wallrotright_D.md5anim + anim stepoutright_wait models/md5/monsters/zombies/zsec_shield/shield_wallrotright_A.md5anim + + + anim stepoutleft_out models/md5/monsters/zombies/zsec_shield/shield_wallrotleft_B.md5anim + anim stepoutleft_fire models/md5/monsters/zombies/zsec_shield/shield_wallrotleft_C.md5anim { + frame 2 sound_weapon player_pistol_fire + frame 2 launch_missile pistol + } + anim stepoutleft_in models/md5/monsters/zombies/zsec_shield/shield_wallrotleft_D.md5anim + anim stepoutleft_wait models/md5/monsters/zombies/zsec_shield/shield_wallrotleft_A.md5anim + + + anim leanoutright_out models/md5/monsters/zombies/zsec_shield/shield_wallleanright_B.md5anim + anim leanoutright_fire models/md5/monsters/zombies/zsec_shield/shield_wallleanright_C.md5anim { + frame 2 sound_weapon player_pistol_fire + frame 2 launch_missile pistol + } + anim leanoutright_in models/md5/monsters/zombies/zsec_shield/shield_wallleanright_D.md5anim + anim leanoutright_wait models/md5/monsters/zombies/zsec_shield/shield_wallleanright_A.md5anim + + + anim leanoutleft_out models/md5/monsters/zombies/zsec_shield/shield_wallleanleft_B.md5anim + anim leanoutleft_fire models/md5/monsters/zombies/zsec_shield/shield_wallleanleft_C.md5anim { + frame 2 sound_weapon player_pistol_fire + frame 2 launch_missile pistol + } + anim leanoutleft_in models/md5/monsters/zombies/zsec_shield/shield_wallleanleft_D.md5anim + anim leanoutleft_wait models/md5/monsters/zombies/zsec_shield/shield_wallleanleft_A.md5anim + + + anim cratestand_out models/md5/monsters/zombies/zsec_shield/shield_crate_up_B.md5anim + anim cratestand_fire models/md5/monsters/zombies/zsec_shield/shield_crate_up_C.md5anim { + frame 2 sound_weapon player_pistol_fire + frame 2 launch_missile pistol + } + anim cratestand_in models/md5/monsters/zombies/zsec_shield/shield_crate_up_D.md5anim + anim cratestand_wait models/md5/monsters/zombies/zsec_shield/shield_crate_up_A.md5anim + + anim rotoutleft1_out models/md5/monsters/zombies/zsec_shield/shield_wallrotleft_B.md5anim + anim rotoutleft1_fire models/md5/monsters/zombies/zsec_shield/shield_wallrotleft_C.md5anim { + frame 2 sound_weapon player_pistol_fire + frame 2 launch_missile pistol + } + anim rotoutleft1_in models/md5/monsters/zombies/zsec_shield/shield_wallrotleft_D.md5anim + anim rotoutleft1_wait models/md5/monsters/zombies/zsec_shield/shield_wallrotleft_A.md5anim + + + anim rotoutright1_out models/md5/monsters/zombies/zsec_shield/shield_wallrotright_B.md5anim + anim rotoutright1_fire models/md5/monsters/zombies/zsec_shield/shield_wallrotright_C.md5anim { + frame 2 sound_weapon player_pistol_fire + frame 2 launch_missile pistol + } + anim rotoutright1_in models/md5/monsters/zombies/zsec_shield/shield_wallrotright_D.md5anim + anim rotoutright1_wait models/md5/monsters/zombies/zsec_shield/shield_wallrotright_A.md5anim + + anim rotoutleft2_out models/md5/monsters/zombies/zsec_shield/shield_wallrotleft_B.md5anim + anim rotoutleft2_fire models/md5/monsters/zombies/zsec_shield/shield_wallrotleft_C.md5anim { + frame 2 sound_weapon player_pistol_fire + frame 2 launch_missile pistol + } + anim rotoutleft2_in models/md5/monsters/zombies/zsec_shield/shield_wallrotleft_D.md5anim + anim rotoutleft2_wait models/md5/monsters/zombies/zsec_shield/shield_wallrotleft_A.md5anim + + anim rotoutright2_out models/md5/monsters/zombies/zsec_shield/shield_wallrotright_B.md5anim + anim rotoutright2_fire models/md5/monsters/zombies/zsec_shield/shield_wallrotright_C.md5anim { + frame 2 sound_weapon player_pistol_fire + frame 2 launch_missile pistol + } + anim rotoutright2_in models/md5/monsters/zombies/zsec_shield/shield_wallrotright_D.md5anim + anim rotoutright2_wait models/md5/monsters/zombies/zsec_shield/shield_wallrotright_A.md5anim + + + anim range_attack models/md5/monsters/zombies/zsec_shield/shield_raise.md5anim + anim range_attack_loop1 models/md5/monsters/zombies/zsec_shield/shield_stand_fire.md5anim { + frame 1 sound_weapon player_pistol_fire + frame 1 launch_missile pistol + } + anim range_attack_loop2 models/md5/monsters/zombies/zsec_shield/shield_stand_fire.md5anim { + frame 1 sound_weapon player_pistol_fire + frame 1 launch_missile pistol + + } + anim range_attack_end models/md5/monsters/zombies/zsec_shield/shield_lower.md5anim + + anim crate_up_out models/md5/monsters/zombies/zsec_shield/shield_crate_up_B.md5anim + anim crate_up_fire models/md5/monsters/zombies/zsec_shield/shield_crate_up_C.md5anim { + frame 2 sound_weapon player_pistol_fire + frame 2 launch_missile pistol + + } + anim crate_up_in models/md5/monsters/zombies/zsec_shield/shield_crate_up_D.md5anim + anim crate_up_wait models/md5/monsters/zombies/zsec_shield/shield_crate_up_A.md5anim +} + +entityDef monster_zsec_shield { + "inherit" "monster_zsec_shotgun" + "scriptobject" "ai" + "nativeobject" "rvmMonsterZombieSecurityPistol" + "model" "model_monster_zsec_shield" + "size" "40 40 72" + "use_aas" "aas48" + "team" "1" + "rank" "1" + "health" "110" + "def_projectile" "projectile_bullet_zsec_shield" + "num_projectiles" "1" + "attack_cone" "70" + "attack_accuracy" "3" + "projectile_spread" "2" + "smoke_weapon" "cgsmoke.smoke" + "smoke_wound_metal" "bulletricochet.prt" + "smoke_wound_ricochet" "bulletricochet.prt" + + "damage_zone head" "*loneckcontrol" + "damage_zone chest" "*Waist -*Rshldr -*Lshldr -*loneckcontrol -*shield" + "damage_zone left_arm" "*Lshldr -*shield" + "damage_zone right_arm" "*Rshldr" + "damage_zone legs" "*Hips" + "damage_zone shield" "*shield" + "damage_scale shield" "0" + "damage_scale head" "1.25" + + "ragdoll" "monster_zombie_security_pistol" + "def_head" "head_security_dhelmet" + "head_joint" "Shoulders" + + "skin_dropGib" "skins/monsters/zombies/securitygib.skin" + "def_dropGibItem1" "moveable_item_head_pork" + "dropGibItem1Joint" "headcontrol" + + "def_dropGibItem2" "moveable_item_torso_pork" + "dropGibItem2Joint" "Chest" + + "def_dropGibItem3" "moveable_item_rup_arm_pork" + "dropGibItem3Joint" "Ruparm" + + "def_dropGibItem4" "moveable_item_left_waist_pork" + "dropGibItem4Joint" "Waist" + + "def_dropGibItem5" "moveable_item_lup_leg_pork" + "dropGibItem5Joint" "Lupleg" + + "def_dropGibItem6" "moveable_item_rup_leg_pork" + "dropGibItem6Joint" "Rupleg" + + "def_dropGibItem7" "moveable_item_rup2_leg_pork" + "dropGibItem7Joint" "Rloleg" + + "def_dropGibItem8" "moveable_item_pelvis_pork" + "dropGibItem8Joint" "Hips" + + "def_dropDeathItem9" "moveable_item_pistol" + "dropDeathItem9Joint" "pistol" + + "def_dropDeathItem10" "moveable_item_shield" + "dropDeathItem10Joint" "shield" + + "skin_dropDeath" "skins/monsters/zombies/zsecurity.skin" + + "mtr_flashShader" "muzzleflash" + "flashTime" "0.15" + "flashColor" "1 0.8 0.4" + "flashRadius" "120" +} + +entityDef damage_bullet_zsec_shield { + "damage" "6" + "kickDir" "1 0 0" + + "mtr_blob" "genericDamage" + "blob_time" "300" + "blob_size" "400" + "blob_offset_x" "400" + + "knockback" "1" + + "smoke_wound_flesh" "bloodwound.smoke" + "mtr_wound_flesh" "textures/decals/hurt02" + "mtr_splat_flesh" "textures/decals/dsplat2" + "mtr_splat_flesh2" "textures/decals/dsplat5" + "mtr_splat_flesh3" "textures/decals/dsplat7" + "mtr_splat_flesh4" "textures/decals/dsplat11" + "snd_flesh" "bullet_impact_flesh" + + "kick_time" "400" + "kick_amplitude" "1" + + "dv_time" "100" +} + +entityDef projectile_bullet_zsec_shield { + "spawnclass" "idProjectile" + "mins" "-1 -1 -1" + "maxs" "1 1 1" + "cone" "3" + "scale" "0.1" + "noshadows" "1" + + "snd_ricochet" "bullet_ricochet" + "snd_impact" "bullet_impact_metal" + + "def_damage" "damage_bullet_zsec_shield" + + "launchFromBarrel" "0" + "health" "0" + "velocity" "2000 0 0" // slowed down for tracer effect + "angular_velocity" "0 0 0" + "thrust" "0" + "thrust_start" "0" + "thrust_end" "0" + "linear_friction" "0" + "angular_friction" "0" + "contact_friction" "0" + "bounce" "0.6" + "mass" "2" + "gravity" "0" + "fuse" "4" + + "detonate_on_fuse" "0" + "detonate_on_death" "0" + "detonate_on_world" "1" + "detonate_on_actor" "1" + + "impact_damage_effect" "1" + "impact_gib" "1" + + "mtr_detonate" "textures/decals/bulleth02" + "decal_size" "10" + + "smoke_fly" "" + "smoke_detonate" "smokeandspark.smoke" + "smoke_bounce" "" //particles/bullet_sparks.particle" + "smoke_fuse" "" + + "mtr_light_shader" "" + "light_color" "0 0 0" + "light_radius" "0" + "light_offset" "0 0 0" + + "mtr_explode_light_shader" "" + "explode_light_color" "0 0 0" + "explode_light_radius" "0" + "explode_light_fadetime" "0" +} diff --git a/base/def/monster_zsec_shotgun.def b/base/def/monster_zsec_shotgun.def new file mode 100644 index 00000000..c0dedf68 --- /dev/null +++ b/base/def/monster_zsec_shotgun.def @@ -0,0 +1,417 @@ +/*********************************************************************** + +monster_zsec_shotgun.def + +***********************************************************************/ + +/**** +export shotgun security guy +****/ + +export james { + + options -prefix ZOMBIE_ -keep Lknee Rknee Lhand1 Rhand1 eject barrel flash Body Body2 headcontrol neckcontrol loneckcontrol SPINNER -parent headcontrol neckcontrol -parent neckcontrol loneckcontrol -parent loneckcontrol Shoulders -parent rshldrpad Shoulders -parent lshldrpad Shoulders -parent shotgun Rhand1 -parent Body2 Body -parent Hips Body2 -parent SPINNER Body2 -parent Waist SPINNER -rename sgeject eject -rename sgbarrel barrel -rename sgflash flash -parent eject shotgun -parent flash shotgun -parent barrel shotgun + + + addoptions -keepmesh securitybodymesh + addoptions -keepmesh sec_rshldrmesh + addoptions -keepmesh sec_lshldrmesh + addoptions -keepmesh sgmflash1 + addoptions -keepmesh sgmflash2 + addoptions -keepmesh sgmflash3 + addoptions -keepmesh w_shotgunmesh + addoptions -keepmesh w_shotgunloadermesh + addoptions -keepmesh skeletonmesh + + mesh models/monsters/zombie/cycles/zombie_mesh.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_shotgun/zsecshotgun + + anim models/monsters/zombie/cycles/idles/shotgun_stand.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_shotgun/stand + anim models/monsters/zombie/cycles/runs/shotgun_run.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_shotgun/run + anim models/monsters/zombie/cycles/walks/shotgun_walk.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_shotgun/walk + anim models/monsters/zombie/cycles/idles/shotgun_sight.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_shotgun/sight + //anim models/monsters/zombie/cycles/pains/shotgun_head_pain1.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_shotgun/headpain1 + //anim models/monsters/zombie/cycles/pains/shotgun_head_pain2.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_shotgun/headpain2 + anim models/monsters/zombie/cycles/pains/shotgun_chest_pain.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_shotgun/chestpain + anim models/monsters/zombie/cycles/pains/shotgun_left_pain.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_shotgun/leftarmpain + anim models/monsters/zombie/cycles/pains/shotgun_right_pain.mb -rotate 90 -dest models/md5/monsters/zombies/zsec_shotgun/rightarmpain + + addoptions -prefix SUIT_ + + anim maps/fred/underground/ending.mb -range 1 1 -rotate 31 -dest models/md5/cinematics/underground/ending_zsecstart + anim maps/fred/underground/ending.mb -range 1 44 -rotate 31 -dest models/md5/cinematics/underground/ending_zsec + +} + +model model_monster_zsec_shotgun { + mesh models/md5/monsters/zombies/zsec_shotgun/zsecshotgun.md5mesh + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER ) + + skin skins/monsters/zombies/zsecurity_shotgun.skin + + anim af_pose models/md5/monsters/zombies/zsec_shotgun/af_pose.md5anim + anim ik_pose models/md5/monsters/zombies/zsec_shotgun/af_pose.md5anim + + anim stand models/md5/monsters/zombies/zsec_shotgun/stand.md5anim + anim idle models/md5/monsters/zombies/zsec_shotgun/stand.md5anim + + anim surprise models/md5/monsters/zombies/zsec_shotgun/shotgun_activate_step_right.md5anim { + frame 12 sound_body monster_zombie_security_footstep + frame 16 sound_body monster_zombie_security_footstep + frame 20 sound_body monster_zombie_security_footstep + frame 23 launch_missile shotgun + frame 23 sound_weapon monster_shotgun_fire + frame 38 launch_missile shotgun + frame 38 sound_weapon monster_shotgun_fire + frame 54 launch_missile shotgun + frame 54 sound_weapon monster_shotgun_fire + } + + anim sight models/md5/monsters/zombies/zsec_shotgun/sight.md5anim { + frame 1 sound_voice monster_zombie_security_sight + frame 1 sound_body monster_zombie_security_footstep + frame 14 sound_body monster_zombie_security_footstep + } + + anim walk models/md5/monsters/zombies/zsec_shotgun/walk.md5anim { + frame 1 sound_body monster_zombie_security_footstep + frame 14 sound_body monster_zombie_security_footstep + } + + anim run models/md5/monsters/zombies/zsec_shotgun/run.md5anim { + frame 8 sound_body monster_zombie_security_footstep + frame 18 sound_body monster_zombie_security_footstep + } + + anim crouch_range_attack models/md5/monsters/zombies/zsec_shotgun/crouch_range_attack.md5anim + anim crouch_range_attack_loop models/md5/monsters/zombies/zsec_shotgun/crouch_range_attack_loop.md5anim { + frame 1 sound_weapon monster_shotgun_fire + frame 1 launch_missile shotgun + } + anim crouch_range_attack_end models/md5/monsters/zombies/zsec_shotgun/crouch_range_attack_end.md5anim + anim crouch_range_attack_aim models/md5/monsters/zombies/zsec_shotgun/crouch_range_attack_aim.md5anim + + anim range_attack_aim models/md5/monsters/zombies/zsec_shotgun/stand_aim.md5anim + + anim step_left models/md5/monsters/zombies/zsec_shotgun/shotgun_step_left.md5anim { + frame 6 sound_body monster_zombie_security_footstep + frame 13 sound_body monster_zombie_security_footstep + } + anim step_right models/md5/monsters/zombies/zsec_shotgun/shotgun_step_right.md5anim { + frame 5 sound_body monster_zombie_security_footstep + frame 12 sound_body monster_zombie_security_footstep + } + + anim evade_left models/md5/monsters/zombies/zsec_shotgun/evade_left.md5anim { + frame 1 sound_voice monster_zombie_security_pain + frame 10 sound_body monster_zombie_security_footstep + frame 19 sound_body monster_zombie_security_footstep + frame 24 sound_body monster_zombie_security_footstep + frame 30 sound_body monster_zombie_security_footstep + frame 32 sound_body monster_zombie_security_footstep + } + + anim evade_right models/md5/monsters/zombies/zsec_shotgun/evade_right.md5anim { + frame 1 sound_voice monster_zombie_security_pain + frame 17 sound_body monster_zombie_security_footstep + frame 23 sound_body monster_zombie_security_footstep + frame 29 sound_body monster_zombie_security_footstep + } + + anim stepoutright_out models/md5/monsters/zombies/zsec_shotgun/wallleanrightshotgun_B.md5anim { + frame 2 sound_body monster_zombie_security_footstep + } + anim stepoutright_fire models/md5/monsters/zombies/zsec_shotgun/wallleanrightshotgun_C.md5anim { + frame 2 launch_missile shotgun + frame 2 sound_weapon monster_shotgun_fire + } + anim stepoutright_in models/md5/monsters/zombies/zsec_shotgun/wallleanrightshotgun_D.md5anim { + frame 15 sound_body monster_zombie_security_footstep + } + anim stepoutright_wait models/md5/monsters/zombies/zsec_shotgun/wallleanrightshotgun_A.md5anim + + anim stepoutleft_out models/md5/monsters/zombies/zsec_shotgun/wallleanleftshotgun_B.md5anim { + frame 4 sound_body monster_zombie_security_footstep + } + anim stepoutleft_fire models/md5/monsters/zombies/zsec_shotgun/wallleanleftshotgun_C.md5anim { + frame 2 launch_missile shotgun + frame 2 sound_weapon monster_shotgun_fire + } + anim stepoutleft_in models/md5/monsters/zombies/zsec_shotgun/wallleanleftshotgun_D.md5anim { + frame 15 sound_body monster_zombie_security_footstep + } + anim stepoutleft_wait models/md5/monsters/zombies/zsec_shotgun/wallleanleftshotgun_A.md5anim + + anim leanoutright_out models/md5/monsters/zombies/zsec_shotgun/wallleanrightshotgun_B.md5anim { + frame 2 sound_body monster_zombie_security_footstep + } + anim leanoutright_fire models/md5/monsters/zombies/zsec_shotgun/wallleanrightshotgun_C.md5anim { + frame 2 launch_missile shotgun + frame 2 sound_weapon monster_shotgun_fire + } + anim leanoutright_in models/md5/monsters/zombies/zsec_shotgun/wallleanrightshotgun_D.md5anim { + frame 15 sound_body monster_zombie_security_footstep + } + anim leanoutright_wait models/md5/monsters/zombies/zsec_shotgun/wallleanrightshotgun_A.md5anim + + + anim leanoutleft_out models/md5/monsters/zombies/zsec_shotgun/wallleanleftshotgun_B.md5anim { + frame 3 sound_body monster_zombie_security_footstep + } + anim leanoutleft_fire models/md5/monsters/zombies/zsec_shotgun/wallleanleftshotgun_C.md5anim { + frame 2 launch_missile shotgun + frame 2 sound_weapon monster_shotgun_fire + } + anim leanoutleft_in models/md5/monsters/zombies/zsec_shotgun/wallleanleftshotgun_D.md5anim { + frame 15 sound_body monster_zombie_security_footstep + } + anim leanoutleft_wait models/md5/monsters/zombies/zsec_shotgun/wallleanleftshotgun_A.md5anim + + anim cratestand_out models/md5/monsters/zombies/zsec_shotgun/crate_up_B.md5anim + anim cratestand_fire models/md5/monsters/zombies/zsec_shotgun/crate_up_C.md5anim { + frame 2 launch_missile shotgun + frame 2 sound_weapon monster_shotgun_fire + } + anim cratestand_in models/md5/monsters/zombies/zsec_shotgun/crate_up_D.md5anim + anim cratestand_wait models/md5/monsters/zombies/zsec_shotgun/crate_up_A.md5anim + + anim rotoutleft1_out models/md5/monsters/zombies/zsec_shotgun/wallrotleftshotgun_B.md5anim { + frame 15 sound_body monster_zombie_security_footstep + } + anim rotoutleft1_fire models/md5/monsters/zombies/zsec_shotgun/wallrotleftshotgun_C.md5anim { + frame 2 launch_missile shotgun + frame 2 sound_weapon monster_shotgun_fire + } + anim rotoutleft1_in models/md5/monsters/zombies/zsec_shotgun/wallrotleftshotgun_D.md5anim { + frame 13 sound_body monster_zombie_security_footstep + } + anim rotoutleft1_wait models/md5/monsters/zombies/zsec_shotgun/wallrotleftshotgun_A.md5anim + + anim rotoutright1_out models/md5/monsters/zombies/zsec_shotgun/wallrotrightshotgun_B.md5anim { + frame 16 sound_body monster_zombie_security_footstep + } + anim rotoutright1_fire models/md5/monsters/zombies/zsec_shotgun/wallrotrightshotgun_C.md5anim { + frame 2 launch_missile shotgun + frame 2 sound_weapon monster_shotgun_fire + } + anim rotoutright1_in models/md5/monsters/zombies/zsec_shotgun/wallrotrightshotgun_D.md5anim { + frame 14 sound_body monster_zombie_security_footstep + } + anim rotoutright1_wait models/md5/monsters/zombies/zsec_shotgun/wallrotrightshotgun_A.md5anim + + anim rotoutleft2_out models/md5/monsters/zombies/zsec_shotgun/wallrotleftshotgun_B.md5anim { + frame 15 sound_body monster_zombie_security_footstep + } + anim rotoutleft2_fire models/md5/monsters/zombies/zsec_shotgun/wallrotleftshotgun_C.md5anim { + frame 2 launch_missile shotgun + frame 2 sound_weapon monster_shotgun_fire + } + anim rotoutleft2_in models/md5/monsters/zombies/zsec_shotgun/wallrotleftshotgun_D.md5anim { + frame 13 sound_body monster_zombie_security_footstep + } + anim rotoutleft2_wait models/md5/monsters/zombies/zsec_shotgun/wallrotleftshotgun_A.md5anim + + anim rotoutright2_out models/md5/monsters/zombies/zsec_shotgun/wallrotrightshotgun_B.md5anim { + frame 15 sound_body monster_zombie_security_footstep + } + anim rotoutright2_fire models/md5/monsters/zombies/zsec_shotgun/wallrotrightshotgun_C.md5anim { + frame 2 launch_missile shotgun + frame 2 sound_weapon monster_shotgun_fire + } + anim rotoutright2_in models/md5/monsters/zombies/zsec_shotgun/wallrotrightshotgun_D.md5anim { + frame 14 sound_body monster_zombie_security_footstep + } + anim rotoutright2_wait models/md5/monsters/zombies/zsec_shotgun/wallrotrightshotgun_A.md5anim + + anim range_attack models/md5/monsters/zombies/zsec_shotgun/raise.md5anim + anim range_attack_loop1 models/md5/monsters/zombies/zsec_shotgun/stand_fire.md5anim { + frame 1 sound_weapon monster_shotgun_fire + frame 1 launch_missile shotgun + } + anim range_attack_loop2 models/md5/monsters/zombies/zsec_shotgun/stand_fire.md5anim { + frame 1 sound_weapon monster_shotgun_fire + frame 1 launch_missile shotgun + } + anim range_attack_end models/md5/monsters/zombies/zsec_shotgun/lower.md5anim + + anim crate_up_out models/md5/monsters/zombies/zsec_shotgun/crate_up_B.md5anim + anim crate_up_fire models/md5/monsters/zombies/zsec_shotgun/crate_up_C.md5anim { + frame 2 launch_missile shotgun + frame 2 sound_weapon monster_shotgun_fire + } + anim crate_up_in models/md5/monsters/zombies/zsec_shotgun/crate_up_D.md5anim + anim crate_up_wait models/md5/monsters/zombies/zsec_shotgun/crate_up_A.md5anim + + anim crouch_pain models/md5/monsters/zombies/zsec_shotgun/shotgun_crouch_left_pain.md5anim { + frame 1 sound_voice monster_zombie_security_pain + } + + anim crouch_pain_chest models/md5/monsters/zombies/zsec_shotgun/shotgun_crouch_left_pain.md5anim { + frame 1 sound_voice monster_zombie_security_pain + } + anim crouch_pain_head models/md5/monsters/zombies/zsec_shotgun/shotgun_crouch_right_pain.md5anim { + frame 1 sound_voice monster_zombie_security_pain + } + anim crouch_pain_left_arm models/md5/monsters/zombies/zsec_shotgun/shotgun_crouch_left_pain.md5anim { + frame 1 sound_voice monster_zombie_security_pain + } + anim crouch_pain_right_arm models/md5/monsters/zombies/zsec_shotgun/shotgun_crouch_right_pain.md5anim { + frame 1 sound_voice monster_zombie_security_pain + } + anim pain models/md5/monsters/zombies/zsec_shotgun/rightarmpain.md5anim{ + frame 1 sound_voice monster_zombie_security_pain + } + anim pain_head1 models/md5/monsters/zombies/zsec_shotgun/rightarmpain.md5anim{ + frame 1 sound_voice monster_zombie_security_pain + } + anim pain_head2 models/md5/monsters/zombies/zsec_shotgun/rightarmpain.md5anim { + frame 1 sound_voice monster_zombie_security_pain + } + anim pain_right_arm models/md5/monsters/zombies/zsec_shotgun/rightarmpain.md5anim { + frame 1 sound_voice monster_zombie_security_pain + } + anim pain_chest models/md5/monsters/zombies/zsec_shotgun/leftarmpain.md5anim { + frame 1 sound_voice monster_zombie_security_pain + } + anim pain_left_arm models/md5/monsters/zombies/zsec_shotgun/leftarmpain.md5anim { + frame 1 sound_voice monster_zombie_security_pain + } +} + +entityDef monster_zsec_shotgun { + "inherit" "monster_zsec_pistol" + "scriptobject" "ai" + "nativeobject" "rvmMonsterZombieSecurityPistol" + "size" "40 40 72" + "use_aas" "aas48" + "team" "1" + "rank" "1" + "health" "90" + "def_projectile" "projectile_bullet_zsec_shotgun" + "projectile_spread" "5" + "num_projectiles" "7" + "attack_cone" "70" + "attack_accuracy" "2" + "smoke_weapon" "cgsmoke.smoke" + "smoke_wound_metal" "bulletricochet.prt" + "smoke_wound_ricochet" "bulletricochet.prt" + + "skin_dropGib" "skins/monsters/zombies/securitygib.skin" + "def_dropGibItem1" "moveable_item_head_pork" + "dropGibItem1Joint" "headcontrol" + + "def_dropGibItem2" "moveable_item_torso_pork" + "dropGibItem2Joint" "Chest" + + "def_dropGibItem3" "moveable_item_rup_arm_pork" + "dropGibItem3Joint" "Ruparm" + + "def_dropGibItem4" "moveable_item_left_waist_pork" + "dropGibItem4Joint" "Waist" + + "def_dropGibItem5" "moveable_item_lup_leg_pork" + "dropGibItem5Joint" "Lupleg" + + "def_dropGibItem6" "moveable_item_rup_leg_pork" + "dropGibItem6Joint" "Rupleg" + + "def_dropGibItem7" "moveable_item_rup2_leg_pork" + "dropGibItem7Joint" "Rloleg" + + "def_dropGibItem8" "moveable_item_pelvis_pork" + "dropGibItem8Joint" "Hips" + + "def_dropDeathItem9" "moveable_item_shotgun" + "dropDeathItem9Joint" "shotgun" + "skin_dropDeath" "skins/monsters/zombies/zsecurity.skin" + + "ragdoll" "monster_zombie_security_shotgun" + "model" "model_monster_zsec_shotgun" + "def_head" "head_zombie5" + "head_joint" "Shoulders" + + "mtr_flashShader" "muzzleflash" + "flashTime" "0.15" + "flashColor" "1 0.8 0.4" + "flashRadius" "240" +} + +entityDef damage_bullet_zsec_shotgun { + "damage" "3" + "kickDir" "1 0 0" + + "mtr_blob" "genericDamage" + "blob_time" "300" + "blob_size" "400" + "blob_offset_x" "400" + + "knockback" "0.5" + + "smoke_wound_flesh" "bloodwound.smoke" + "mtr_wound_flesh" "textures/decals/hurt02" + "mtr_splat_flesh" "textures/decals/dsplat2" + "mtr_splat_flesh2" "textures/decals/dsplat5" + "mtr_splat_flesh3" "textures/decals/dsplat7" + "mtr_splat_flesh4" "textures/decals/dsplat11" + "snd_flesh" "shotgun_impact_flesh" + + "kick_time" "400" + "kick_amplitude" "1" + + "dv_time" "100" +} + +entityDef projectile_bullet_zsec_shotgun { + "spawnclass" "idProjectile" + "mins" "-1 -1 -1" + "maxs" "1 1 1" + "cone" "2" + "scale" "0.1" + "noshadows" "1" + + "snd_ricochet" "bullet_ricochet" + "snd_impact" "shotgun_impact_metal" + + "def_damage" "damage_bullet_zsec_shotgun" + + "launchFromBarrel" "0" + "health" "0" + "velocity" "7200 0 0" // .38 Special 600 fps. Source: Petzal, David E. "How fast is a speeding bullet." Field and Stream. 97 (1992): 23 + "angular_velocity" "0 0 0" + "thrust" "0" + "thrust_start" "0" + "thrust_end" "0" + "linear_friction" "0" + "angular_friction" "0" + "contact_friction" "0" + "bounce" "0.6" + "mass" "1.0" + "gravity" "0" + "fuse" "4" + + "detonate_on_fuse" "0" + "detonate_on_death" "0" + "detonate_on_world" "1" + "detonate_on_actor" "1" + + "impact_damage_effect" "1" + "impact_gib" "1" + + "mtr_detonate" "textures/decals/bulleth02" + "decal_size" "10" + + "smoke_fly" "" + "smoke_detonate" "smokeandspark.smoke" + "smoke_bounce" "sparkdebris.smoke" + "smoke_fuse" "" + + "mtr_light_shader" "" + "light_color" "0 0 0" + "light_radius" "0" + "light_offset" "0 0 0" + + "mtr_explode_light_shader" "" + "explode_light_color" "0 0 0" + "explode_light_radius" "0" + "explode_light_fadetime" "0" +} diff --git a/base/def/npcs.def b/base/def/npcs.def new file mode 100644 index 00000000..82bf826d --- /dev/null +++ b/base/def/npcs.def @@ -0,0 +1,1417 @@ +/*********************************************************************** + + characters + +***********************************************************************/ + +entityDef character_default { + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 74" + "editor_copy" "anim" + + "editor_var hide" "Causes character to be hfidden and nonsolid until triggered." + "editor_var noDamage" "if set, monster won't take damage." + "editor_var teleport" "if set, character teleports in when triggered." + "editor_var no_idle_chatter" "When set, character will not make idle sounds" + "editor_var target" "set of path_* entities to visit." + "editor_var wander" "if set to 1, visit path_* targets randomly, otherwise visit them in order." + "editor_var ignore_obstacles" "If set, character doesn't avoid obstacles. Generally should only be used for cinematics when you need character to exactly follow a path." + "editor_var dont_push_others" "If set, character doesn't say 'excuse me' when blocked by another character, but only waits for them to get out of the way on their own." + "editor_var wait" "How long to wait before following path. Character will be unresponsive until this time has passed." + "editor_var talkradius" "If the player steps outside this distance from the character, the conversation is over and the character goes back to what he was doing." + "editor_var talktime" "How long the character will wait for the player to press the talk button before returning to what he was doing." + "editor_var talktrigger" "When set, character will wait in an animation until triggered and then talk to the player before following the path." + "editor_var no_cower" "Don't cower when hearing gun fire." + "editor_var anim" "Anim to play when talktrigger is set." + "editor_var num_cinematics" "When set, character is in cinematic mode. Remains hidden until triggered, then plays each anim in sequence, then triggers targets becomes hidden once more. Anims are specified by setting 'anim1', 'anim2', 'anim3', etc." + "editor_var cinematic_no_hide" "When set, character won't hide after playing cinematics." + "editor_var talk_no_turn" "Don't turn body toward player when talking, just his head." + "editor_var talk0_blendin" "# frames to blend into triggered talk anim." + "editor_var talk0_blendout" "# frames to blend out of triggered talk anim." + "editor_var talk1_blendin" "# frames to blend into primary talk anim." + "editor_var talk1_blendout" "# frames to blend out of primary talk anim." + "editor_var talk2_blendin" "# frames to blend into secondary talk anim." + "editor_var talk2_blendout" "# frames to blend out of secondary talk anim." + "editor_var alt_path1" "alternate path for character. use target_aI_followalternatepath1 to cause character to follow." + "editor_var alt_path2" "alternate path for character. use target_aI_followalternatepath2 to cause character to follow." + "editor_var alt_path3" "alternate path for character. use target_aI_followalternatepath3 to cause character to follow." + + "editor_var noshadows" "turns off shadows on character." + "editor_var animate_z" "disables gravity on character until he wakes up. used for on_activate anims where the bounding box needs to move up and down." + + "editor_var kick_force" "how much force to apply to blocking obstacles to get them out of the way." + + "editor_var team" "Monsters do not actively attack players or monsters with the same team #." + "editor_var rank" "Monsters only fight back when attacked by members of it's own team when its rank is greater than or equal to the attacker's rank. A rank of 0 will never fight back." + + "editor_var turn_rate" "Maximum # of degrees character can turn per second" + "editor_var ignore_push" "Set to 1 to prevent character from moving out of the way when player pushes him." + + "editor_var mass" "character's mass." + "editor_var ragdoll" "Specifies the .af file to use for a ragdoll when the creature dies" + "editor_var ragdoll_slomoStart" "Start time of ragdoll slow motion relative to death time, defaults to -0.2" + "editor_var ragdoll_slomoEnd" "End time of ragdoll slow motion relative to death time, defaults to 1.0" + "editor_var ragdoll_jointFrictionDent" "Joint friction dent on ragdoll." + "editor_var ragdoll_jointFrictionStart" "Start time for joint friction dent" + "editor_var ragdoll_jointFrictionEnd" "End time for joint friction dent" + "editor_var ragdoll_contactFrictionDent" "Contact friction dent on ragdoll." + "editor_var ragdoll_contactFrictionStart" "Start time for contact friction dent" + "editor_var ragdoll_contactFrictionEnd" "End time for contact friction dent" + "editor_var af_push_moveables" "whether the character's articulated figure pushes obstacles while they're alive." + + "editor_var blink_min" "Minimum time to wait between eye blinks." + "editor_var blink_max" "Maximum time to wait between eye blinks." + + "editor_var fly_offset" "Prefered fly height relative to the player's view" + "editor_var fly_speed" "Speed to fly at" + "editor_var fly_bob_strength" "How far flying creatures should bob." + "editor_var fly_bob_vert" "Rate at which flying creatures bob up and down." + "editor_var fly_bob_horz" "Rate at which flying creatures bob left and right." + + "editor_var def_projectile" "name of entityDef to launch as projectile" + "editor_var num_projectiles" "how many projectiles to launch at a time." + "editor_var projectile_spread" "how much to spread out projectiles when they're fired. Works in conjunction with attack_accuracy. Good for things like shotgun blasts." + "editor_var attack_accuracy" "Maximum angular offset to randomly offset the character's aim when firing missiles" + "editor_var attack_cone" "Monster can only throw projectile within this cone relative to his direction." + + "editor_var melee_range" "do melee attack when within this range" + "editor_var talks" "whether character can be engaged in conversation" + "editor_var def_drops" "entityDefs to drop when killed. Multiple drop items are defined by adding suffixes: 'def_drops1', 'def_drops2', etc." + + "editor_var smokeParticleSystem" "particle system to attach to entity. To attach to a specific joint, add - and the name of the joint. For example 'fire-firejoint' attaches the 'fire' particle to the joint 'firejoint'." + + "editor_var chatter_min" "minimum amount of time to wait till playing chat sounds when idle" + "editor_var chatter_max" "maximum amount of time to wait till playing chat sounds when idle" + "editor_var snd_chatter" "chat sound to play when idle" + + "editor_var chatter_combat_min" "minimum amount of time to wait till playing chat sounds when in combat" + "editor_var chatter_combat_max" "maximum amount of time to wait till playing chat sounds when in combat" + "editor_var snd_chatter_combat" "chat sound to play when in combat" + + "editor_var pain_delay" "How long to wait between pain animations before triggering another pain animation." + "editor_var pain_threshold" "How much damage character has to recieve in one blow for it to play a pain animation." + + "editor_var damage_zone X" "List of bones that comprise damage zone 'X'. Pain anims are based on the name of the zone, for example: 'pain_chest', 'pain_rightleg_forward', etc. Directions are categorized as 'forward', 'left', 'right', or 'back'." + "editor_var damage_scale X" "How much to scale damage recieved to zone 'X'. For example 'damage_scale head' '10' would make head shots cause 10 times the normal amount of damage." + + "editor_var bone_leftEye" "Which bone to modify to adjust the left eye" + "editor_var bone_rightEye" "Which bone to modify to adjust the right eye" + "editor_var bone_focus" "Where the character's eyes are in his head" + + "editor_var look_min" "minimum angles for head looks" + "editor_var look_max" "maximum angles for head looks" + "editor_var look_joint jointname" "specifies the scale in 'pitch yaw roll' to modify the joint based on head looking. you can specify any number of joints to be affected by the head look. the scale of the joints that lead up to the head should always add up to 1 on yaw and pitch to ensure that the character looks directly at the player." + "editor_var copy_joint jointname" "specifies a joint in the head to copy the specified body joint's animation from" + + "editor_var eye_turn_min" "min angular offset for eye joint before head has to turn." + "editor_var eye_turn_max" "max angular offset for eye joint before head has to turn." + "editor_var eye_verticle_offset" "verticle offset from the player's view that the character's eyes should focus on." + "editor_var eye_horizontal_offset" "horizontal offset from the player's view that the character's eyes should focus on. negative values bring eyes closer together." + "editor_var eye_focus_rate" "how quickly the eyes focus on a target" + "editor_var head_focus_rate" "how quickly the head focuses on a target" + "editor_var focus_align_time" "how long character should glance at the player before turning his head." + + "editor_var mtr_flashShader" "shader to use for muzzleflash" + "editor_var flashColor" "color of muzzleflash" + "editor_var flashRadius" "radius of muzzleflash" + "editor_var flashTime" "how long muzzleflash lasts" + + "editor_var use_aas" "extension of the aas file to use for navigation." + + "editor_var use_combat_bbox" "Use a bounding box for damage and not per-poly hit detection." + "editor_var offsetModel" "Vector to offset the visual model from the movement bounding box." + "editor_var def_attach" "Name of entityDef to attach to model. Set 'joint' in the attached entity def to the joint to attach to, and use 'origin' and 'angles' to offset it." + "editor_var head" "Name of entityDef to attach as character's head. Copies animation from certain bones into the head model." + + "editor_var eye_height" "The height off the ground of the character's eyes. All sight checks are done from this point. When set, overrides determining the height from the position of the eye joint." + "editor_var fov" "Character's field of view. Characters initially become aware of the player when he enters this cone. Also controls when the character sees the player as shootable. Character's will not use fov for sight checks after their initial wake up." + + "editor_var mtr_splat_flesh" "Material to use for blood splats." + "editor_var mtr_wound_flesh" "Material to use for wounds." + "editor_var smoke_wound_flesh" "Smoke effect to emit from wounds." + + "editor_var gravityDir" "Direction of gravity. Defines the character's concept of 'down'." + + "spawnclass" "idAI" + "scriptobject" "ai" + "nativeobject" "rvmCharacter" + "health" "1" + "team" "0" + "rank" "0" + "anim" "idle" + "on_activate" "sight" + "state" "state_Inactive" + "head_look" "1" + "chatter_min" "5" + "chatter_max" "10" + "bleed" "1" + "blink_min" "2.5" + "blink_max" "8.0" + "talks" "1" + "talkradius" "300" // when player exits this radius, go back to idle + "talktime" "10" // how long to pay attention to player after speaking + "turn_rate" "360" + + "talk0_blendin" "8" + "talk0_blendout" "8" + "talk1_blendin" "8" + "talk1_blendout" "8" + "talk2_blendin" "8" + "talk2_blendout" "8" + + "eye_turn_min" "-20 -30 0" + "eye_turn_max" "20 30 0" + "eye_verticle_offset" "5" + "eye_horizontal_offset" "-8" + "eye_focus_rate" "0.5" + "head_focus_rate" "0.1" + "focus_align_time" "0" + + "bone_focus" "head" + "bone_leftEye" "Lfteye_Focus" + "bone_rightEye" "Rteye_Focus" + "kick_force" "60" + + "copy_joint neckcontrol" "neckcontrol" + "copy_joint headcontrol" "headcontrol" + "copy_joint_world eyecontrol" "eyecontrol" + + "snd_cower" "" // set to sound to play when he cowers + "snd_bounce" "ragdoll_impact" +} + + + + + +// NPCS + +export fred { + options -prefix ZOMBIE_ -keep eyecontrol rshldrpad lshldrpad Lknee Rknee Body Body2 Lhand Lhand1 Rhand Rhand1 headcontrol neckcontrol loneckcontrol SPINNER Rball_r Rtoe_r Lball_r Ltoe_r Chest Shoulders Luparm_orbit Ruparm_orbit Belly Lrib Rrib chair RHANDCONNECTOR LHANDCONNECTOR -parent RHANDCONNECTOR Rhand1 -parent LHANDCONNECTOR Lhand1 -parent headcontrol neckcontrol -parent neckcontrol loneckcontrol -parent loneckcontrol Shoulders -parent rshldrpad Shoulders -parent lshldrpad Shoulders -parent Body2 Body -parent Hips Body2 -parent SPINNER Body2 -parent Waist SPINNER -sourcedir models/monsters/zombie/cycles/idles -destdir models/md5/chars + + addoptions -align ALL + + mesh npcs_mesh2.mb -range 1 1 -dest labcoat -keepmesh labcoatmesh + mesh npcs_mesh2.mb -range 1 1 -dest suit -keepmesh suitmesh + mesh npcs_mesh2.mb -range 1 1 -dest jumpsuit -keepmesh jumpsuitmesh + mesh npcs_mesh2.mb -range 1 1 -dest tshirt -keepmesh soldiermesh + mesh npcs_mesh2.mb -range 1 1 -dest marine -keepmesh marinebodymesh + mesh npcs_mesh.mb -range 1 1 -dest player -keepmesh npcplayermesh -keepmesh npcplayerarmmesh + mesh npcs_mesh2.mb -range 1 1 -dest security -keepmesh securitybodymesh -keepmesh sec_rshldrmesh -keepmesh sec_lshldrmesh + mesh npcs_mesh2.mb -range 1 1 -dest skeleton -keepmesh skeletonmesh + mesh npcs_mesh2.mb -range 1 1 -dest skeleton_w_mgun -keepmesh skeletonmesh -keep eject flash barrel machinegun -rename mgeject eject -rename mgflash flash -rename mgbarrel barrel + + + mesh makemesh.mb -range 1 1 -dest hazmat -sourcedir models/characters/male_npc/hazmat/cycles/ -keepmesh hazmatbodymesh -keepmesh hazmatvisormesh -prefix HAZ_ + + options -prefix SUIT_ -keep eyecontrol rshldrpad lshldrpad Lknee Rknee Body Body2 Lhand Lhand1 Rhand Rhand1 headcontrol neckcontrol loneckcontrol SPINNER Rball_r Rtoe_r Lball_r Ltoe_r Chest Shoulders Luparm_orbit Ruparm_orbit Belly Lrib Rrib chair RHANDCONNECTOR LHANDCONNECTOR -parent RHANDCONNECTOR Rhand1 -parent LHANDCONNECTOR Lhand1 -parent headcontrol neckcontrol -parent neckcontrol loneckcontrol -parent loneckcontrol Shoulders -parent rshldrpad Shoulders -parent lshldrpad Shoulders -parent Body2 Body -parent Hips Body2 -parent SPINNER Body2 -parent Waist SPINNER + + addoptions -keepmesh marinebodymesh + + //MARSCITY CINEMATICS + + anim models/characters/male_npc/cycles/working/gui_look_right.mb -rotate 90 -dest models/md5/chars/gui_look_right + anim models/characters/male_npc/cycles/working/gui_operate.mb -rotate 90 -dest models/md5/chars/gui_operate + anim models/characters/male_npc/cycles/idles/cower4.mb -rotate 90 -dest models/md5/chars/cower4_ian + anim models/characters/male_npc/cycles/working/gui_operate_iansecondary.mb -rotate 90 -dest models/md5/chars/gui_operate_iansecondary + anim models/characters/male_npc/cycles/idles/point_forward.mb -rotate 90 -dest models/md5/chars/point_forward + anim models/characters/male_npc/cycles/idles/startle_left.mb -rotate 90 -dest models/md5/chars/startle_left + + anim maps/fred/cyberdemon/rescue1.mb -dest models/md5/cinematics/hellhole/rescue_marine1 + anim maps/fred/cyberdemon/rescue1.mb -dest models/md5/cinematics/hellhole/rescue_marine2 -prefix SUIT2_ + anim maps/fred/cyberdemon/rescue2.mb -dest models/md5/cinematics/hellhole/rescue_marine1b + anim maps/fred/cyberdemon/rescue2.mb -dest models/md5/cinematics/hellhole/rescue_marine2b -prefix SUIT2_ + + anim maps/fred/marscity/window.mb -dest models/md5/chars/betruger/marscity/window + anim maps/fred/marscity/window.mb -dest models/md5/cinematics/marscity/sec_window -prefix SOL_ + + anim maps/fred/marscity/hangar_characters.mb -range 360 678 -dest models/md5/chars/swann/marscity/hangar_a -prefix SUIT_ + anim maps/fred/marscity/hangar_characters.mb -range 679 766 -dest models/md5/chars/swann/marscity/hangar_b -prefix SUIT_ + anim maps/fred/marscity/hangar_characters.mb -range 767 863 -dest models/md5/chars/swann/marscity/hangar_c -prefix SUIT_ + anim maps/fred/marscity/hangar_characters.mb -range 864 937 -dest models/md5/chars/swann/marscity/hangar_d -prefix SUIT_ + anim maps/fred/marscity/hangar_characters.mb -range 938 980 -dest models/md5/chars/swann/marscity/hangar_e -prefix SUIT_ + anim maps/fred/marscity/hangar_characters.mb -range 981 1160 -dest models/md5/chars/swann/marscity/hangar_f -prefix SUIT_ + + anim maps/fred/marscity/hangar_characters.mb -range 360 678 -dest models/md5/cinematics/marscity/hangar_player_a -prefix SUIT3_ + anim maps/fred/marscity/hangar_characters.mb -range 679 766 -dest models/md5/cinematics/marscity/hangar_player_b -prefix SUIT3_ + anim maps/fred/marscity/hangar_characters.mb -range 767 863 -dest models/md5/cinematics/marscity/hangar_player_c -prefix SUIT3_ + anim maps/fred/marscity/hangar_characters.mb -range 864 937 -dest models/md5/cinematics/marscity/hangar_player_d -prefix SUIT3_ + anim maps/fred/marscity/hangar_characters.mb -range 938 980 -dest models/md5/cinematics/marscity/hangar_player_e -prefix SUIT3_ + anim maps/fred/marscity/hangar_characters.mb -range 981 1050 -dest models/md5/cinematics/marscity/hangar_player_f -prefix SUIT3_ + anim maps/fred/marscity/hangar_characters.mb -range 1051 1125 -dest models/md5/cinematics/marscity/hangar_player_g -prefix SUIT3_ + anim maps/fred/marscity/hangar_characters.mb -range 1126 1236 -dest models/md5/cinematics/marscity/hangar_player_h -prefix SUIT3_ + + anim maps/fred/marscity/betrugercin1.mb -range 1 54 -dest models/md5/chars/betruger/marscity/meeting_a -prefix BETRUGER_ + anim maps/fred/marscity/betrugercin1.mb -range 55 92 -dest models/md5/chars/betruger/marscity/meeting_b -prefix BETRUGER_ + anim maps/fred/marscity/betrugercin1.mb -range 93 137 -dest models/md5/chars/betruger/marscity/meeting_c -prefix BETRUGER_ + anim maps/fred/marscity/betrugercin1.mb -range 138 1737 -dest models/md5/chars/betruger/marscity/meeting_d -prefix BETRUGER_ + + anim maps/fred/marscity/betrugercin1.mb -range 1 54 -dest models/md5/chars/swann/marscity/meeting_a -prefix SWANN2_ + anim maps/fred/marscity/betrugercin1.mb -range 55 92 -dest models/md5/chars/swann/marscity/meeting_b -prefix SWANN2_ + anim maps/fred/marscity/betrugercin1.mb -range 93 138 -dest models/md5/chars/swann/marscity/meeting_c -prefix SWANN2_ + anim maps/fred/marscity/betrugercin1.mb -range 139 1709 -dest models/md5/chars/swann/marscity/meeting_d -prefix SWANN_ + + anim maps/fred/marscity/betrugercin1.mb -range 1 54 -dest models/md5/cinematics/marscity/betrugercin1_player_a -prefix PLAYER_ + anim maps/fred/marscity/betrugercin1.mb -range 55 92 -dest models/md5/cinematics/marscity/betrugercin1_player_b -prefix PLAYER_ + anim maps/fred/marscity/betrugercin1.mb -range 93 137 -dest models/md5/cinematics/marscity/betrugercin1_player_c -prefix PLAYER_ + anim maps/fred/marscity/betrugercin1.mb -range 138 1737 -dest models/md5/cinematics/marscity/betrugercin1_player_d -prefix PLAYER_ + + anim maps/fred/marscity/sargecin_eric.mb -range 120 120 -dest models/md5/chars/sarge/marscity/missionloop -prefix SARGE_ + anim maps/fred/marscity/sargecin_eric.mb -range 120 176 -dest models/md5/chars/sarge/marscity/mission1 -prefix SARGE_ + anim maps/fred/marscity/sargecin_eric.mb -range 177 380 -dest models/md5/chars/sarge/marscity/mission2 -prefix SARGE_ + anim maps/fred/marscity/sargecin_eric.mb -range 381 555 -dest models/md5/chars/sarge/marscity/mission3 -prefix SARGE_ + anim maps/fred/marscity/sargecin_eric.mb -range 556 700 -dest models/md5/chars/sarge/marscity/mission4 -prefix SUIT2_ + anim maps/fred/marscity/sargecin_eric.mb -range 701 814 -dest models/md5/chars/sarge/marscity/mission5 -prefix SUIT2_ + anim maps/fred/marscity/sargecin_eric.mb -range 815 920 -dest models/md5/chars/sarge/marscity/mission6 -prefix SARGE_ + anim maps/fred/marscity/sargecin_eric.mb -range 921 960 -dest models/md5/chars/sarge/marscity/mission7 -prefix SARGE_ + + anim maps/fred/marscity/sargecin_eric_idle2.mb -range 0 80 -dest models/md5/chars/sarge/marscity/mc_sarge_primary -prefix SUIT_ -align ALL + anim maps/fred/marscity/sargecin_eric_idle2.mb -range 80 165 -dest models/md5/chars/sarge/marscity/mc_sarge_secondary -prefix SUIT_ -align ALL + anim maps/fred/marscity/sargecin_eric_idle2.mb -range 166 300 -dest models/md5/chars/sarge/marscity/mc_sarge_secondary2 -prefix SUIT_ -align ALL + anim maps/fred/marscity/sargecin_eric.mb -range 221 380 -dest models/md5/cinematics/marscity/sargecin_player2 -prefix SOL_ + anim maps/fred/marscity/sargecin_eric.mb -range 381 555 -dest models/md5/cinematics/marscity/sargecin_player3 -prefix SOL_ + anim maps/fred/marscity/sargecin_eric.mb -range 556 700 -dest models/md5/cinematics/marscity/sargecin_player4 -prefix SOL_ + anim maps/fred/marscity/sargecin_eric.mb -range 701 814 -dest models/md5/cinematics/marscity/sargecin_player5 -prefix SOL_ + anim maps/fred/marscity/sargecin_eric.mb -range 815 920 -dest models/md5/cinematics/marscity/sargecin_player6 -prefix SOL_ + anim maps/fred/marscity/sargecin_eric.mb -range 921 960 -dest models/md5/cinematics/marscity/sargecin_player7 -prefix SOL_ + anim maps/eric/delta1/sarge_video.mb -dest models/md5/chars/sarge/delta1/sarge_vcd -prefix SUIT_ -align ALL + anim maps/fred/marscity/sargecin_eric.mb -range 120 220 -dest sargecin_player1 -sourcedir maps/fred/marscity/ -destdir models/md5/cinematics/marscity/ -prefix MP_ + + anim maps/fred/marscity/sargecin_eric_idle.mb -range 0 24 -dest models/md5/chars/sarge/marscity/mc_sarge_wait -prefix SUIT_ -align ALL + anim maps/fred/marscity/sargecin_eric_idle.mb -range 24 580 -dest models/md5/chars/sarge/marscity/mc_sarge_wait_loop -prefix SUIT_ -align ALL + + + anim maps/fred/marscity/reception_redo.mb -range 24 100 -dest models/md5/chars/receptionist/marscity/receptioncin1_receptionist_a -prefix SUIT_ + anim maps/fred/marscity/reception_redo.mb -range 101 145 -dest models/md5/chars/receptionist/marscity/receptioncin1_receptionist_b -prefix SUIT_ + anim maps/fred/marscity/reception_redo_handlock.mb -range 146 339 -dest models/md5/chars/receptionist/marscity/receptioncin1_receptionist_c -prefix SUIT_ + anim maps/fred/marscity/reception_redo.mb -range 340 475 -dest models/md5/chars/receptionist/marscity/receptioncin1_receptionist_d -prefix SUIT_ + anim maps/fred/marscity/reception_redo.mb -range 476 803 -dest models/md5/chars/receptionist/marscity/receptioncin1_receptionist_e -prefix SUIT_ + anim maps/fred/marscity/reception_redo.mb -range 804 820 -dest models/md5/chars/receptionist/marscity/receptioncin1_receptionist_f -prefix SUIT_ + + anim maps/fred/marscity/marscity_reception_typing1.mb -dest models/md5/chars/receptionist/marscity/receptioncin1_receptionist_typing -prefix SUIT_ + anim maps/fred/marscity/marscity_reception_typing2.mb -dest models/md5/chars/receptionist/marscity/receptioncin1_receptionist_typing2 -prefix SUIT_ + anim maps/fred/marscity/marscity_reception_secondaries_fix.mb -range 0 100 -dest models/md5/chars/receptionist/marscity/receptioncin1_receptionist_primary -prefix SUIT_ + anim maps/fred/marscity/marscity_reception_secondaries_fix.mb -range 100 294 -dest models/md5/chars/receptionist/marscity/receptioncin1_receptionist_secondary1 -prefix SUIT_ + anim maps/fred/marscity/marscity_reception_secondaries_fix.mb -range 294 396 -dest models/md5/chars/receptionist/marscity/receptioncin1_receptionist_secondary2 -prefix SUIT_ + anim maps/fred/marscity/marscity_reception_secondaries2.mb -range 0 35 -dest models/md5/chars/receptionist/marscity/receptioncin1_receptionist_secondary3 -prefix SUIT_ + + anim maps/fred/marscity/reception.mb -range 24 100 -dest models/md5/cinematics/marscity/receptioncin1_player_a -prefix PLAYER_ + anim maps/fred/marscity/reception.mb -range 101 145 -dest models/md5/cinematics/marscity/receptioncin1_player_b -prefix PLAYER_ + anim maps/fred/marscity/reception_redo_handlock.mb -range 146 339 -dest models/md5/cinematics/marscity/receptioncin1_player_c -prefix PLAYER_ + anim maps/fred/marscity/reception.mb -range 340 475 -dest models/md5/cinematics/marscity/receptioncin1_player_d -prefix PLAYER_ + anim maps/fred/marscity/reception.mb -range 476 803 -dest models/md5/cinematics/marscity/receptioncin1_player_e -prefix PLAYER_ + anim maps/fred/marscity/reception.mb -range 804 820 -dest models/md5/cinematics/marscity/receptioncin1_player_f -prefix PLAYER_ + + + + anim maps/fred/marscity/patient.mb -range 1 40 -dest models/md5/cinematics/marscity/patient_victim_start + anim maps/fred/marscity/patient.mb -range 1 160 -dest models/md5/cinematics/marscity/patient_victim + anim maps/fred/marscity/patient.mb -range 161 240 -dest models/md5/cinematics/marscity/patient_victim_end + + anim maps/fred/marscity/patient.mb -range 1 40 -rotate -100 -dest models/md5/cinematics/marscity/patient_security_start -prefix SOL_ + anim maps/fred/marscity/patient.mb -range 1 240 -rotate -100 -dest models/md5/cinematics/marscity/patient_security -prefix SOL_ + anim maps/fred/marscity/patient.mb -range 240 290 -rotate -100 -dest models/md5/cinematics/marscity/patient_security_end -prefix SOL_ + + anim maps/fred/marscity/patient.mb -range 1 40 -rotate 90 -dest models/md5/cinematics/marscity/patient_doctor_start -prefix ZOMBIE_ + anim maps/fred/marscity/patient.mb -range 1 240 -rotate 90 -dest models/md5/cinematics/marscity/patient_doctor -prefix ZOMBIE_ + anim maps/fred/marscity/patient.mb -range 240 290 -rotate 90 -dest models/md5/cinematics/marscity/patient_doctor_end -prefix ZOMBIE_ + + anim maps/eric/marscity/sci_team_request.mb -range 0 215 -rotate -90 -dest models/md5/chars/marscity/sci_team_request -prefix SUIT_ + + anim maps/kevinc/marscity/IPN_News_Body.mb -rotate 90 -dest models/md5/chars/marscity/ipn_news -prefix SUIT_ + + + + //MARSCITY2 CINEMATICS + + anim maps/kevinc/marscity_2/sarge_mc2_video.mb -rotate -90 -dest models/md5/chars/sarge/marscity2/mission_brief -prefix SUIT_ + anim maps/kevinc/marscity_2/ceiling_idle.mb -rotate 135 -dest models/md5/chars/ceiling_mc2/ceiling_idle -prefix SUIT_ + anim maps/kevinc/marscity_2/ceiling_trigger.mb -rotate 135 -dest models/md5/chars/ceiling_mc2/ceiling_trigger -prefix SUIT_ + anim maps/kevinc/marscity_2/ceiling_primary.mb -rotate 135 -dest models/md5/chars/ceiling_mc2/ceiling_primary -prefix SUIT_ + anim maps/kevinc/marscity_2/ceiling_secondary1.mb -rotate 135 -dest models/md5/chars/ceiling_mc2/ceiling_secondary1 -prefix SUIT_ + anim maps/kevinc/marscity_2/ceiling_secondary2.mb -rotate 135 -dest models/md5/chars/ceiling_mc2/ceiling_secondary2 -prefix SUIT_ + + anim maps/fred/marscity_2/zombie_eats_marine.mb -range 35 99 -rotate 180 -dest models/md5/cinematics/marscity_2/zkiller_marine + + + // ADMIN CINEMATICS + + anim maps/fred/admin/campbell_overhear_1_n_2_n_3.mb -range 1 313 -dest models/md5/cinematics/admin/overhearswann1 -prefix SWANN_ + anim maps/fred/admin/campbell_overhear_4.mb -range 432 736 -dest models/md5/cinematics/admin/overhearswann2 -prefix SWANN_ + anim maps/fred/admin/swann_campbell_overhear.mb -range 737 1033 -dest models/md5/cinematics/admin/overhearswann3 -prefix SWANN_ + anim maps/eric/admin/typing.mb -range 1 60 -rotate 180 -dest models/md5/cinematics/admin/typingswann_loop -prefix SWANN_ -align ALL + anim maps/eric/admin/typing.mb -range 1 317 -rotate 180 -dest models/md5/cinematics/admin/typingswann -prefix SWANN_ -align ALL + + anim models/characters/male_npc/cycles/idles/af_pose.mb -dest models/md5/characters/npcs/woundedmarine_af_pose -align ALL + anim models/characters/male_npc/cycles/wounded/wounded_marine_trigger.mb -dest models/md5/chars/wounded_marine_trigger -align ALL + anim models/characters/male_npc/cycles/wounded/wounded_marine_primary.mb -dest models/md5/chars/wounded_marine_primary -align ALL + anim models/characters/male_npc/cycles/wounded/wounded_marine_secondary.mb -dest models/md5/chars/wounded_marine_secondary -align ALL + anim models/characters/male_npc/cycles/wounded/wounded_marine_idle.mb -dest models/md5/chars/wounded_marine_idle -align ALL + anim maps/fred/admin/betruger_operation.mb -rotate 90 -dest models/md5/cinematics/admin/overhearbetruger -prefix SUIT_ + + + // DELTA2A CINEMATICS + + anim maps/fred/delta2a/ian_shot1.mb -range 5 40 -rotate 90 -dest models/md5/chars/ian_d2a/ianstart + anim maps/fred/delta2a/ian_shot1.mb -range 41 165 -rotate 90 -dest models/md5/chars/ian_d2a/ianpart1 + anim maps/fred/delta2a/ian_shot1.mb -range 166 710 -rotate 90 -dest models/md5/chars/ian_d2a/ianpart2 + anim maps/fred/delta2a/ian_shot1.mb -range 711 756 -rotate 90 -dest models/md5/chars/ian_d2a/ianpart3 + anim maps/fred/delta2a/ian_shot4.mb -rotate 90 -dest models/md5/chars/ian_d2a/ianpart4 + anim maps/fred/delta2a/ian_shot4_talk.mb -rotate 90 -dest models/md5/chars/ian_d2a/ianpart4_talk + anim maps/fred/delta2a/ian_shot4_talk_trigger.mb -rotate 90 -dest models/md5/chars/ian_d2a/ianpart4_talk_trigger + anim maps/fred/delta2a/ian_shot4_stand.mb -rotate 90 -dest models/md5/chars/ian_d2a/ianpart4_stand + anim maps/fred/delta2a/ian_talk_one.mb -rotate 90 -dest models/md5/chars/ian_d2a/ian_talk_one + anim maps/fred/delta2a/ian_talk_two.mb -rotate 90 -dest models/md5/chars/ian_d2a/ian_talk_two + anim maps/fred/delta2a/ian_cower.mb -rotate 90 -dest models/md5/chars/ian_d2a/iancower + + // DELTA2B CINEMATICS + + anim maps/kevinc/delta2b/hazmat_trigger.mb -rotate 90 -dest models/md5/chars/hazmat_d2b/trigger + anim maps/kevinc/delta2b/hazmat_idle.mb -rotate 90 -dest models/md5/chars/hazmat_d2b/hazmat_idle + anim maps/kevinc/delta2b/hazmat_primary.mb -rotate 90 -dest models/md5/chars/hazmat_d2b/primary + anim maps/kevinc/delta2b/hazmat_secondary1.mb -rotate 90 -dest models/md5/chars/hazmat_d2b/secondary1 + anim maps/kevinc/delta2b/hazmat_secondary2.mb -rotate 90 -dest models/md5/chars/hazmat_d2b/secondary2 + + // DELTA3 CINEMATICS + + anim models/characters/male_npc/cycles/idles/betruger_point.mb -rotate 90 -dest models/md5/chars/betruger/delta3/betruger_point + anim models/characters/male_npc/cycles/idles/betruger_point_down.mb -rotate 90 -dest models/md5/chars/betruger/delta3/betruger_point_down + + // DELTA4 CINEMATICS + + anim maps/fred/delta4/hkintro.mb -rotate 180 -dest models/md5/chars/betruger/delta4/betrugerlaugh + + anim maps/fred/delta4/hkthrowshaz1.mb -range 182 260 -dest models/md5/cinematics/delta4/hkintro_hazgetsgrabbed -prefix HAZ_ + anim maps/fred/delta4/hkthrowshaz2.mb -range 261 409 -dest models/md5/cinematics/delta4/hkintro_hazgetsthrown -prefix HAZ_ + + anim maps/fred/delta4/pooped.mb -range 182 500 -dest models/md5/cinematics/bloopers/hkintro_hazpooped -prefix HAZ_ + anim maps/fred/bloopers/haz_monsters.mb -range 1 250 -dest models/md5/cinematics/bloopers/haz_monsters -prefix HAZ_ + + anim maps/fred/delta4/hazrunoutcough.mb -dest models/md5/cinematics/delta4/hkintro_runoutcough -prefix SUIT_ + + // DELTA5 CINEMATICS + + anim maps/kevinc/delta5/wounded_swann.mb -rotate -45 -range 0 1260 -dest models/md5/cinematics/delta5/swann_trigger -prefix SWANN_ + anim maps/kevinc/delta5/wounded_swann_idle.mb -rotate -45 -dest models/md5/cinematics/delta5/swann_idle -prefix SWANN_ + + + // MONORAIL CINEMATICS + + anim maps/fred/monorail/raisecommando2.mb -dest models/md5/chars/betruger/monorail/raise -prefix BETRUGER_ + anim maps/fred/monorail/raisecommando2.mb -rotate 180 -dest models/md5/cinematics/monorail/fallingsoldier + anim maps/fred/monorail/raisecommando2.mb -rotate 180 -dest models/md5/cinematics/monorail/transforming -prefix SOL_ + + anim maps/fred/monorail/rider_eric.mb -range 1 1 -dest models/md5/cinematics/monorail/rider_hidden + anim maps/fred/monorail/rider_eric.mb -range 50 150 -dest models/md5/cinematics/monorail/rider_stand + //anim maps/fred/monorail/rider_eric.mb -range 151 680 -dest models/md5/cinematics/monorail/rider_trigger + anim maps/fred/monorail/rider_eric.mb -range 127 680 -dest models/md5/cinematics/monorail/rider_trigger + anim maps/fred/monorail/rider_eric.mb -range 680 780 -dest models/md5/cinematics/monorail/rider_sit + anim maps/fred/monorail/rider_eric.mb -range 780 890 -dest models/md5/cinematics/monorail/rider_primary + anim maps/fred/monorail/rider_eric.mb -range 890 995 -dest models/md5/cinematics/monorail/rider_secondary1 + anim maps/fred/monorail/rider_eric.mb -range 995 1100 -dest models/md5/cinematics/monorail/rider_secondary2 + anim maps/fred/monorail/rider_eric_suprise.mb -range 1 60 -dest models/md5/cinematics/monorail/rider_surprise + anim maps/fred/monorail/rider_eric_notrig.mb -range 150 256 -dest models/md5/cinematics/monorail/rider_notrig + anim maps/fred/monorail/rider_before_trigger.mb -dest models/md5/cinematics/monorail/before_trigger + + + + // CPU CINEMATICS + + anim maps/fred/cpu1/camp_wounded.mb -rotate 180 -range 1 1 -dest models/md5/chars/campbell/cpu/deathidle -prefix CAMPBELL_ + anim maps/fred/cpu1/camp_wounded.mb -rotate 180 -dest models/md5/chars/campbell/cpu/death -prefix CAMPBELL_ + anim maps/fred/cpu1/camp_wounded.mb -rotate 180 -range 300 300 -dest models/md5/chars/campbell/cpu/deathend -prefix CAMPBELL_ + + // RECYCLING CINEMATICS + + anim maps/fred/recycling/betruger_video1.mb -dest models/md5/chars/betruger/recycling/betruger_vid1 -align ALL + anim maps/fred/recycling/betruger_video2.mb -dest models/md5/chars/betruger/recycling/betruger_vid2 -align ALL + + // COMM1 CINEMATICS + + anim maps/fred/comm1/swann_video1.mb -dest models/md5/chars/swann/comm1/swann_vid1 -align ALL + anim maps/kevinc/comm1/swann_video2.mb -dest models/md5/chars/swann/comm1/swann_vid2 -align ALL + anim maps/kevinc/comm1/swann_video3.mb -dest models/md5/chars/swann/comm1/swann_vid3 -align ALL + + //SITE3 CINEMATICS + + anim maps/kevinc/site3/trigger.mb -rotate -90 -dest models/md5/chars/site3_sci/trigger -prefix SUIT_ -align ALL + anim maps/kevinc/site3/trigger.mb -rotate -90 -range 1 1 -dest models/md5/chars/site3_sci/initial_frame -prefix SUIT_ -align ALL + anim maps/kevinc/site3/primary.mb -dest models/md5/chars/site3_sci/primary -prefix SUIT_ -align ALL + + anim maps/kevinc/site3/stand_site3.mb -dest models/md5/chars/site3_sci/stand_site3 -prefix SUIT_ -align ALL + + anim maps/kevinc/site3/secondary1.mb -dest models/md5/chars/site3_sci/secondary1 -prefix SUIT_ -align ALL + anim maps/kevinc/site3/secondary2.mb -dest models/md5/chars/site3_sci/secondary2 -prefix SUIT_ -align ALL + anim maps/kevinc/site3/operate_computer_site3.mb -rotate -180 -dest models/md5/chars/site3_sci/operate_computer_site3 + anim maps/kevinc/site3/turn_left_rotation180_site3.mb -dest models/md5/chars/site3_sci/turn_left_rotation180_site3 -prefix SUIT_ -align ALL + + //ENPRO CINEMATICS + + anim maps/eric/enpro/wounded_marine.mb -range 1 92 -dest models/md5/chars/enpro_wounded_marine/marine_wounded1 -prefix SUIT2_ + anim maps/eric/enpro/wounded_marine.mb -range 93 194 -dest models/md5/chars/enpro_wounded_marine/marine_wounded2 -prefix SUIT4_ + anim maps/eric/enpro/wounded_marine.mb -range 195 340 -dest models/md5/chars/enpro_wounded_marine/marine_wounded3 -prefix SUIT4_ + anim maps/eric/enpro/wounded_marine.mb -range 341 476 -dest models/md5/chars/enpro_wounded_marine/marine_wounded4 -prefix SUIT4_ + anim maps/eric/enpro/wounded_marine.mb -range 477 571 -dest models/md5/chars/enpro_wounded_marine/marine_wounded5 -prefix SUIT4_ + anim maps/eric/enpro/wounded_marine.mb -range 572 598 -dest models/md5/chars/enpro_wounded_marine/marine_wounded6 -prefix SUIT4_ + + anim maps/fred/enpro/escape_shot1.mb -range 1 90 -dest models/md5/cinematics/enpro/swann_escape1 -prefix SUIT2_ + anim maps/fred/enpro/escape_shot2.mb -range 91 236 -dest models/md5/cinematics/enpro/swann_escape2 -prefix SUIT2_ + + anim maps/fred/enpro/escape_shot3.mb -range 316 461 -dest models/md5/cinematics/enpro/marine_escape -prefix SOL_ + + + + + + // HELLHOLE CINEMATICS + + anim maps/fred/cyberdemon/swanndead.mb -dest models/md5/cinematics/hellhole/rescue_swanndead -prefix SWANN_ + anim maps/fred/cyberdemon/pdamarine.mb -dest models/md5/cinematics/hellhole/rescue_pdamarine -prefix MARINE_ + anim maps/fred/cyberdemon/bodylook.mb -dest models/md5/cinematics/hellhole/rescue_bodylook -prefix SUIT_ + + // UNDERGROUND STUFF + + anim maps/fred/underground/brooksidle.mb -rotate 90 -dest models/md5/chars/mcu_brooks/brooksidle + anim maps/fred/underground/brookswelcome.mb -rotate 90 -dest models/md5/chars/mcu_brooks/brooks01welcome + anim maps/fred/underground/brooksimgonnaneed.mb -rotate 90 -dest models/md5/chars/mcu_brooks/brooks02imgonnaneed + anim maps/fred/underground/brooksgrabyourgear.mb -rotate 90 -dest models/md5/chars/mcu_brooks/brooks03grabyourgear + anim maps/fred/underground/brooksletme.mb -rotate 90 -dest models/md5/chars/mcu_brooks/brooks04letmeradiotest + anim maps/fred/underground/brooksradiocheck.mb -rotate -90 -dest models/md5/chars/mcu_brooks/brooks05radiocheck + anim maps/fred/underground/brookslookslike.mb -rotate -90 -dest models/md5/chars/mcu_brooks/brooks06mission + anim maps/fred/underground/brooksallset.mb -rotate -90 -dest models/md5/chars/mcu_brooks/brooks07allset + anim maps/fred/underground/brooksohyeah.mb -rotate -90 -dest models/md5/chars/mcu_brooks/brooks08dontshootcivilians + anim maps/fred/underground/brooksneedtosecure.mb -rotate 90 -dest models/md5/chars/mcu_brooks/brooks09re_secureyourgear + anim maps/fred/underground/brooksyourstuff.mb -rotate 90 -dest models/md5/chars/mcu_brooks/brooks13re_storagecabinet + anim maps/fred/underground/brooksnowyouready.mb -rotate 90 -dest models/md5/chars/mcu_brooks/brooks14readyforcombat + anim maps/fred/underground/brookswatchtheshootin.mb -rotate 90 -dest models/md5/chars/mcu_brooks/brookscowerwatch + anim maps/fred/underground/brooksdontfire.mb -rotate 90 -dest models/md5/chars/mcu_brooks/brookscowerdontfire + anim maps/fred/underground/brooksyoudont.mb -rotate 90 -dest models/md5/chars/mcu_brooks/brooks18re_moveout + + anim maps/fred/underground/airlockencounter.mb -range 1 80 -dest models/md5/chars/airlockzdragged -prefix ZOMBIE_ + anim maps/fred/underground/airlockencounter.mb -range 81 150 -dest models/md5/chars/airlockzeatenloop -prefix ZOMBIE_ + anim maps/fred/underground/airlockencounter.mb -range 150 186 -dest models/md5/chars/airlockzgetup -prefix ZOMBIE_ + anim maps/fred/underground/invasion2b.mb -range 52 99 -dest models/md5/cinematics/underground/invasion_runshoot + anim maps/fred/underground/invasion6a.mb -range 25 80 -dest models/md5/cinematics/underground/invasion_runfall + anim maps/fred/underground/newsec.mb -dest models/md5/cinematics/underground/hallway_sec2zombie + anim maps/fred/underground/invasion6c.mb -dest models/md5/cinematics/underground/hallway_sec2zombie2 + anim maps/fred/underground/invasion4.mb -dest models/md5/cinematics/underground/invasion_window + anim maps/fred/underground/invasion6a.mb -range 25 80 -dest models/md5/cinematics/underground/invasion_runbackscared -prefix SUIT2_ + anim maps/fred/underground/npcbackup.mb -dest models/md5/cinematics/underground/npcbackup + anim maps/fred/underground/npcbackup_start.mb -dest models/md5/cinematics/underground/npcbackup_start + anim maps/fred/underground/npcbackup_death.mb -dest models/md5/cinematics/underground/npcbackup_death + //anim maps/fred/underground/npcbackup_cower.mb -rotate 90 -dest models/md5/cinematics/underground/npcbackup_cower + anim maps/fred/underground/crazysci.mb -range 1 1 -dest models/md5/cinematics/underground/crazy_sci_start + anim maps/fred/underground/crazysci.mb -range 1 114 -dest models/md5/cinematics/underground/crazy_sci1 + anim maps/fred/underground/crazysci.mb -range 115 224 -dest models/md5/cinematics/underground/crazy_sci2 + anim maps/fred/underground/crazysci2.mb -range 200 648 -dest models/md5/cinematics/underground/crazy_sci3 -prefix SUIT2_ + + anim maps/fred/underground/crazysciend.mb -dest models/md5/cinematics/underground/crazy_sci_end1 -prefix SUIT2_ + anim maps/fred/underground/zintro_reversed_new.mb -range 1 120 -dest models/md5/cinematics/underground/zintro_beater1 + anim maps/fred/underground/zintro_reversed_new.mb -range 121 230 -dest models/md5/cinematics/underground/zintro_beater2 + anim maps/fred/underground/zintro_reversed_new.mb -range 1 120 -dest models/md5/cinematics/underground/zintro_victim1 -prefix SUIT2_ + anim maps/fred/underground/zintro_reversed_new.mb -range 121 230 -dest models/md5/cinematics/underground/zintro_victim2 -prefix SUIT2_ + anim maps/fred/underground/zintro_part2.mb -dest models/md5/cinematics/underground/zintro_eater_loop + anim maps/fred/underground/zintro_part2.mb -dest models/md5/cinematics/underground/zintro_eaten_loop -prefix SUIT2_ + anim maps/fred/underground/zintro_part3.mb -dest models/md5/cinematics/underground/zintro_eaten_end -prefix SUIT2_ + anim maps/fred/underground/zintro_part3.mb -range 447 447 -dest models/md5/cinematics/underground/zintro_eaten_end_loop -prefix SUIT2_ + + anim maps/fred/underground/zintro_part3.mb -dest models/md5/cinematics/underground/zintro_eater_getup + anim maps/fred/underground/choke.mb -range 14 45 -dest models/md5/cinematics/underground/invasion_choke_victim_a + anim maps/fred/underground/choke.mb -range 46 103 -dest models/md5/cinematics/underground/invasion_choke_victim_b + anim maps/fred/underground/choke.mb -range 104 180 -dest models/md5/cinematics/underground/invasion_choke_victim_c + anim maps/fred/underground/choke.mb -range 14 45 -dest models/md5/cinematics/underground/invasion_choke_zombie_a -prefix ZOMBIE_ + anim maps/fred/underground/choke.mb -range 46 103 -dest models/md5/cinematics/underground/invasion_choke_zombie_b -prefix ZOMBIE_ + anim maps/fred/underground/choke.mb -range 104 180 -dest models/md5/cinematics/underground/invasion_choke_zombie_c -prefix ZOMBIE_ + + anim maps/kevinc/marscity/checkin_cleared.mb -rotate 90 -dest models/md5/cinematics/marscity/sec_checkin_cleared + anim maps/kevinc/marscity/checkin_gonnaneed.mb -rotate 90 -dest models/md5/cinematics/marscity/sec_checkin_need + anim maps/kevinc/marscity/checkin_holdstill.mb -rotate 90 -dest models/md5/cinematics/marscity/sec_checkin_holdstill + anim maps/kevinc/marscity/checkin_idle.mb -rotate 90 -dest models/md5/cinematics/marscity/sec_checkin_idle + anim maps/kevinc/marscity/checkin_idle2.mb -rotate 90 -dest models/md5/cinematics/marscity/sec_checkin_idle_norot + anim maps/kevinc/marscity/checkin_letmeget.mb -rotate 90 -dest models/md5/cinematics/marscity/sec_checkin_letmeget + anim maps/kevinc/marscity/checkin_waisting.mb -rotate 90 -dest models/md5/cinematics/marscity/sec_checkin_waisting + anim maps/kevinc/marscity/checkin_welcome.mb -rotate 90 -dest models/md5/cinematics/marscity/sec_checkin_welcome + + anim maps/fred/marscity/office1.mb -dest models/md5/chars/office1working + + // ALPHALABS1 STUFF + + anim models/characters/male_npc/cycles/idles/cower4.mb -rotate 180 -dest models/md5/chars/alphalabs1/cower4_hydrocon + anim models/characters/male_npc/cycles/idles/startle.mb -rotate 180 -dest models/md5/chars/alphalabs1/startle + anim models/characters/male_npc/cycles/working/PDA_idle_look_hydrocon.mb -rotate 180 -dest models/md5/chars/alphalabs1/pda_idle_look_hydrocon + anim models/characters/male_npc/cycles/working/PDA_idle_look_hydrocon_talk.mb -rotate 180 -dest models/md5/chars/alphalabs1/pda_idle_look_hydrocon_talk + + // ALPHALABS4 STUFF + + anim models/characters/male_npc/cycles/fragchamber_scientist/freaked_out.mb -rotate 90 -dest models/md5/chars/alphalabs4/freaked_out + anim models/characters/male_npc/cycles/walks/walk_thankyou.mb -rotate 90 -dest models/md5/chars/alphalabs4/walk_thankyou + anim models/characters/male_npc/cycles/fragchamber_scientist/hey_you.mb -rotate 90 -dest models/md5/chars/alphalabs4/hey_you + anim models/characters/male_npc/cycles/talking/talk_secondary2.mb -rotate 90 -dest models/md5/chars/alphalabs4/talk_secondary2 + anim models/characters/male_npc/cycles/fragchamber_scientist/fragchamber_scientist_die.mb -range 0 0 -rotate 90 -dest models/md5/chars/alphalabs4/die_start + anim models/characters/male_npc/cycles/fragchamber_scientist/fragchamber_scientist_die.mb -rotate 90 -dest models/md5/chars/alphalabs4/die + anim models/characters/male_npc/cycles/fragchamber_scientist/fragchamber_scientist_die.mb -range 70 70 -rotate 90 -dest models/md5/chars/alphalabs4/die_end + + + // GENERIC CYCLES + + addoptions -align ALL + addoptions -destdir models/md5/chars + + anim models/characters/male_npc/cycles/idles/af_pose.mb -dest af_pose + anim models/characters/male_npc/cycles/idles/stand.mb -dest stand + anim models/characters/male_npc/cycles/talking/stand_talk.mb -dest stand_talk + anim models/characters/male_npc/cycles/talking/stand_talk_primary_mark.mb -dest stand_talk_primary_mark + anim models/characters/male_npc/cycles/talking/stand_talk_secondary_mark.mb -dest stand_talk_secondary_mark + anim models/characters/male_npc/cycles/talking/talk_primary_ross.mb -dest talk_primary_ross + anim models/characters/male_npc/cycles/walks/walk_normal.mb -dest walk_normal + anim models/characters/male_npc/cycles/pain/painchest.mb -dest painchest + anim models/characters/male_npc/cycles/pain/painhead.mb -dest painhead + anim models/characters/male_npc/cycles/pain/painleft.mb -dest painleft + anim models/characters/male_npc/cycles/pain/painright.mb -dest painright + anim models/characters/male_npc/cycles/idles/cower4.mb -dest cower4 + anim models/characters/male_npc/cycles/idles/turn_right.mb -dest turn_right + anim models/characters/male_npc/cycles/idles/turn_left.mb -dest turn_left + anim models/characters/male_npc/cycles/idles/turn_right_rotation90.mb -dest turn_right_rotation90 + anim models/characters/male_npc/cycles/idles/turn_left_rotation90.mb -dest turn_left_rotation90 + anim models/characters/male_npc/cycles/idles/turn_right_rotation180.mb -dest turn_right_rotation180 + anim models/characters/male_npc/cycles/idles/turn_left_rotation180.mb -dest turn_left_rotation180 + anim models/characters/male_npc/cycles/wounded/eric_hurt_loop_2.mb -range 0 60 -dest models/md5/chars/npc_stagger_loop + anim models/characters/male_npc/cycles/runs/medrun1.mb -rotate 90 -dest models/md5/chars/medrun1 + + anim models/characters/male_npc/cycles/working/PDA_idle_look.mb -dest models/md5/chars/PDA_idle_look + anim models/characters/male_npc/cycles/working/PDA_idle.mb -dest models/md5/chars/PDA_idle + anim models/characters/male_npc/cycles/working/PDA_idle_daniel.mb -dest models/md5/chars/PDA_idle_daniel + + anim models/characters/male_npc/cycles/working/gui_operate_daniel.mb -dest models/md5/chars/gui_operate_daniel + anim models/characters/male_npc/cycles/talking/stand_talk.mb -dest models/md5/chars/stand_talk + anim models/characters/male_npc/cycles/working/gui_look.mb -dest models/md5/chars/gui_look + anim models/characters/male_npc/cycles/working/box_look.mb -dest models/md5/chars/box_look + + anim models/characters/male_npc/cycles/working/look_in_hole_scratch_head.mb -dest models/md5/chars/look_in_hole_scratch_head + anim models/characters/male_npc/cycles/working/look_in_hole.mb -dest models/md5/chars/look_in_hole + anim models/characters/male_npc/cycles/talking/talk_listen_scotty_ross.mb -dest models/md5/chars/talk_listen_scotty_ross + anim models/characters/male_npc/cycles/idles/stand_point_forward.mb -dest models/md5/chars/stand_point_forward + anim models/characters/male_npc/cycles/idles/stand_point_forward_charles.mb -dest models/md5/chars/stand_point_forward_charles + anim models/characters/male_npc/cycles/idles/idle_charles.mb -dest models/md5/chars/idle_charles + + anim models/characters/male_npc/cycles/talking/talk_primary_todd.mb -dest models/md5/chars/talk_primary_todd + anim models/characters/male_npc/cycles/talking/talk_secondary2_todd.mb -dest models/md5/chars/talk_secondary2_todd + + anim models/characters/male_npc/cycles/working/gui_operate.mb -dest models/md5/chars/npcs/gui_operate_eric + anim models/characters/male_npc/cycles/working/operate_computer_eric_thankyou.mb -dest models/md5/chars/operate_computer_eric_thankyou + anim models/characters/male_npc/cycles/working/operate_computer_eric_worktalk1.mb -dest models/md5/chars/operate_computer_eric_worktalk1 + anim models/characters/male_npc/cycles/working/operate_computer_eric_worktalk2.mb -dest models/md5/chars/operate_computer_eric_worktalk2 + anim models/characters/male_npc/cycles/working/operate_computer_talk.mb -dest models/md5/chars/operate_computer_talk + + anim models/characters/male_npc/cycles/working/operate_computer_james3.mb -dest models/md5/chars/operate_computer_loop3 + anim maps/fred/underground/james_fall.mb -dest models/md5/chars/invasion_ledgefall + anim maps/fred/underground/invasion2.mb -range 68 118 -dest models/md5/chars/invasion_runcover + anim models/characters/male_npc/cycles/idles/stand_sitting_PDAidle.mb -dest models/md5/chars/stand_sitting_idle + anim models/characters/male_npc/cycles/idles/stand_sitting.mb -dest models/md5/chars/stand_sitting + anim models/characters/male_npc/cycles/idles/mcu_thanku.mb -dest models/md5/chars/mcu_thanku + + anim models/characters/male_npc/cycles/talking/PDA_talk_security_guard.mb -dest models/md5/chars/PDA_talk_security_guard + anim models/characters/male_npc/cycles/talking/PDA_talk.mb -dest models/md5/chars/PDA_talk + + anim models/characters/male_npc/cycles/sitting/mc_civ1_idle.mb -dest models/md5/chars/mc_civ1_idle + anim models/characters/male_npc/cycles/sitting/mc_civ1_look.mb -dest models/md5/chars/mc_civ1_look + anim models/characters/male_npc/cycles/sitting/mc_civ1_trigger.mb -dest models/md5/chars/mc_civ1_trigger + anim models/characters/male_npc/cycles/sitting/mc_civ1_primary.mb -dest models/md5/chars/mc_civ1_primary + anim models/characters/male_npc/cycles/sitting/mc_civ1_secondary1.mb -dest models/md5/chars/mc_civ1_secondary1 + anim models/characters/male_npc/cycles/sitting/mc_civ1_secondary2.mb -dest models/md5/chars/mc_civ1_secondary2 + + anim models/characters/male_npc/cycles/working/operate_computer_sitting.mb -dest models/md5/chars/operate_computer_sitting + anim models/characters/male_npc/cycles/working/operate_computer_sitting_higher.mb -dest models/md5/chars/operate_computer_sitting_higher + anim models/characters/male_npc/cycles/walks/walk_machinegun.mb -xyzprecision 0.01 -quatprecision 0.00006 -dest models/md5/chars/walk_machinegun + + anim models/characters/male_npc/cycles/idles/p90_stand.mb -rotate 90 -dest models/md5/chars/p90_stand + anim models/characters/male_npc/cycles/idles/p90_idle.mb -rotate 90 -dest models/md5/chars/p90_idle + anim models/characters/male_npc/cycles/idles/p90_point_left.mb -rotate 90 -dest models/md5/chars/p90_point_left + anim models/characters/male_npc/cycles/idles/p90_talk.mb -rotate 90 -dest models/md5/chars/p90_talk + + anim models/characters/male_npc/cycles/talking/marscity_marine1_ver1_hq_primary.mb -rotate 90 -dest models/md5/chars/marscity_marine1_ver1_hq_primary + anim models/characters/male_npc/cycles/talking/marscity_marine1_ver1_hq_secondary1.mb -rotate 90 -dest models/md5/chars/marscity_marine1_ver1_hq_secondary1 + anim models/characters/male_npc/cycles/talking/marscity_marine1_ver1_hq_secondary2.mb -rotate 90 -dest models/md5/chars/marscity_marine1_ver1_hq_secondary2 + + anim models/characters/male_npc/cycles/idles/drinkfoamcup3.mb -dest models/md5/chars/drinkfoamcup + anim models/characters/male_npc/cycles/idles/drink_idle.mb -dest models/md5/chars/drink_idle + + anim models/characters/male_npc/cycles/working/gui_operate_main_worker.mb -dest models/md5/chars/gui_operate_main_worker + anim models/characters/male_npc/cycles/idles/stand_hands_at_waist.mb -dest models/md5/chars/stand_hands_at_waist + + //CAVERNS STUFF + + addoptions -destdir models/md5/chars/caverns + + anim models/characters/male_npc/cycles/talking/scared_maint_guy/cav2_scared_all.mb -range 1 200 -dest models/md5/chars/caverns/cav2_idle + anim models/characters/male_npc/cycles/talking/scared_maint_guy/cav2_scared_all.mb -range 200 290 -dest models/md5/chars/caverns/cav2_primary + anim models/characters/male_npc/cycles/talking/scared_maint_guy/cav2_scared_all.mb -range 290 399 -dest models/md5/chars/caverns/cav2_secondary1 + anim models/characters/male_npc/cycles/talking/scared_maint_guy/cav2_scared_all.mb -range 399 475 -dest models/md5/chars/caverns/cav2_secondary2 + anim models/characters/male_npc/cycles/talking/scared_maint_guy/cav2_scared_all.mb -range 475 710 -dest models/md5/chars/caverns/cav2_trigger + + +// MARINES WITH MACHINEGUN + + + +options -prefix ZOMBIE_ -keep eject flash barrel machinegun eyecontrol rshldrpad lshldrpad Lknee Rknee Body Body2 Lhand Lhand1 Rhand Rhand1 headcontrol neckcontrol loneckcontrol SPINNER Rball_r Rtoe_r Lball_r Ltoe_r Chest Shoulders Luparm_orbit Ruparm_orbit Belly Lrib Rrib chair RHANDCONNECTOR LHANDCONNECTOR -parent RHANDCONNECTOR Rhand1 -parent LHANDCONNECTOR Lhand1 -parent headcontrol neckcontrol -parent neckcontrol loneckcontrol -parent loneckcontrol Shoulders -parent rshldrpad Shoulders -parent lshldrpad Shoulders -parent Body2 Body -parent Hips Body2 -parent SPINNER Body2 -parent Waist SPINNER -rename mgeject eject -rename mgflash flash -rename mgbarrel barrel + + addoptions -keepmesh marinebodymesh + addoptions -keepmesh w_machinegunmesh + addoptions -keepmesh mgflash1 + addoptions -keepmesh mgflash2 + addoptions -keepmesh mgflash3 + addoptions -keepmesh mgflash4 + + + mesh models/monsters/zombie/cycles/idles/npcs_mesh2.mb -align ALL -range 1 1 -dest models/md5/chars/marine_w_mgun + + anim maps/fred/enpro/marine_battle_shot1.mb -range 1 170 -dest models/md5/cinematics/enpro/exitsoldier1_shot1 -prefix SUIT_ + anim maps/fred/enpro/marine_battle_shot2.mb -range 171 259 -dest models/md5/cinematics/enpro/exitsoldier1_shot2 -prefix ASUIT_ + anim maps/fred/enpro/marine_battle_shot3.mb -range 260 321 -dest models/md5/cinematics/enpro/exitsoldier1_shot3 -prefix SUIT_ + anim maps/fred/enpro/marine_battle_shot4.mb -range 350 420 -dest models/md5/cinematics/enpro/exitsoldier1_shot4 -prefix ASUIT_ + anim maps/fred/enpro/marine_battle_shot5.mb -range 452 510 -dest models/md5/cinematics/enpro/exitsoldier1_shot5 -prefix SUIT_ + anim maps/fred/enpro/enpro_exit2.mb -range 511 698 -dest models/md5/cinematics/enpro/exitsoldier1_shot6 -prefix ASUIT_ + anim maps/fred/enpro/enpro_exit2.mb -range 699 740 -dest models/md5/cinematics/enpro/exitsoldier1_shot7 -prefix ASUIT_ + anim maps/fred/enpro/enpro_exit2.mb -range 741 979 -dest models/md5/cinematics/enpro/exitsoldier1_shot8 -prefix ASUIT_ + + anim maps/fred/enpro/marine_battle_shot1.mb -range 1 170 -dest models/md5/cinematics/enpro/exitsoldier2_shot1 -prefix SUIT2_ + anim maps/fred/enpro/marine_battle_shot2.mb -range 171 259 -dest models/md5/cinematics/enpro/exitsoldier2_shot2 -prefix SUIT_ + anim maps/fred/enpro/marine_battle_shot3.mb -range 260 321 -dest models/md5/cinematics/enpro/exitsoldier2_shot3 -prefix SUIT2_ + anim maps/fred/enpro/marine_battle_shot4.mb -range 350 420 -dest models/md5/cinematics/enpro/exitsoldier2_shot4 -prefix SUIT_ + anim maps/fred/enpro/marine_battle_shot5.mb -range 452 510 -dest models/md5/cinematics/enpro/exitsoldier2_shot5 -prefix SUIT2_ + anim maps/fred/enpro/enpro_exit2.mb -range 511 698 -dest models/md5/cinematics/enpro/exitsoldier2_shot6 -prefix SUIT_ + anim maps/fred/enpro/enpro_exit2.mb -range 699 740 -dest models/md5/cinematics/enpro/exitsoldier2_shot7 -prefix SUIT_ + anim maps/fred/enpro/enpro_exit2.mb -range 741 979 -dest models/md5/cinematics/enpro/exitsoldier2_shot8 -prefix SUIT_ + + anim maps/fred/enpro/marine_battle_shot1.mb -range 1 170 -dest models/md5/cinematics/enpro/exitsoldier3_shot1 -prefix SUIT3_ + anim maps/fred/enpro/marine_battle_shot2.mb -range 171 259 -dest models/md5/cinematics/enpro/exitsoldier3_shot2 -prefix SOL_ + anim maps/fred/enpro/marine_battle_shot3.mb -range 260 321 -dest models/md5/cinematics/enpro/exitsoldier3_shot3 -prefix SUIT3_ + anim maps/fred/enpro/marine_battle_shot4.mb -range 350 420 -dest models/md5/cinematics/enpro/exitsoldier3_shot4 -prefix SOL_ + anim maps/fred/enpro/marine_battle_shot5.mb -range 452 510 -dest models/md5/cinematics/enpro/exitsoldier3_shot5 -prefix SUIT3_ + anim maps/fred/enpro/enpro_exit2.mb -range 511 698 -dest models/md5/cinematics/enpro/exitsoldier3_shot6 -prefix SOL_ + anim maps/fred/enpro/enpro_exit2.mb -range 699 740 -dest models/md5/cinematics/enpro/exitsoldier3_shot7 -prefix SOL_ + anim maps/fred/enpro/enpro_exit2.mb -range 741 979 -dest models/md5/cinematics/enpro/exitsoldier3_shot8 -prefix SOL_ + + anim maps/fred/enpro/enpro_exit2.mb -range 511 698 -dest models/md5/cinematics/enpro/exitsoldier4_shot6 -prefix PLAYER_ + anim maps/fred/enpro/enpro_exit2.mb -range 699 740 -dest models/md5/cinematics/enpro/exitsoldier4_shot7 -prefix PLAYER_ + anim maps/fred/enpro/enpro_exit2.mb -range 741 979 -dest models/md5/cinematics/enpro/exitsoldier4_shot8 -prefix PLAYER_ + + addoptions -align ALL + anim models/characters/male_npc/cycles/runs/al2_run_anim_30.mb -rotate 90 -range 79 98 -dest models/md5/chars/mgrun -prefix ZOMBIE_ + anim models/characters/male_npc/cycles/runs/al2_run_anim_30.mb -rotate 90 -range 99 207 -dest models/md5/chars/mgrunstoplookback -prefix ZOMBIE_ + + +} + +model npc_base { + mesh models/md5/chars/skeleton.md5mesh + + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER eyecontrol chair) + + anim af_pose models/md5/chars/af_pose.md5anim + anim ik_pose models/md5/chars/af_pose.md5anim + anim pain models/md5/chars/npc_stagger_loop.md5anim + anim stand models/md5/chars/stand.md5anim + anim talk_excuseme models/md5/chars/stand.md5anim + anim talk_trigger models/md5/chars/stand.md5anim + anim talk_primary models/md5/chars/stand.md5anim + anim talk_secondary1 models/md5/chars/stand.md5anim + anim idle models/md5/chars/stand.md5anim + anim cower models/md5/chars/cower4.md5anim + anim walk models/md5/chars/walk_normal.md5anim { + frame 3 sound_body snd_footstep + frame 17 sound_body snd_footstep + frame 30 sound_body snd_footstep + frame 46 sound_body snd_footstep + } + anim run1 models/md5/chars/medrun1.md5anim + anim turn_left models/md5/chars/turn_left.md5anim, models/md5/chars/turn_left_rotation180.md5anim { + anim_turn + } + + anim turn_right models/md5/chars/turn_right.md5anim, models/md5/chars/turn_right_rotation180.md5anim { + anim_turn + } + +} + + +model npc_labcoat { + inherit npc_base + mesh models/md5/chars/labcoat.md5mesh + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER eyecontrol chair) + +} + +model npc_suit { + inherit npc_base + mesh models/md5/chars/suit.md5mesh + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER eyecontrol chair) + +} + +model npc_suit2 { + inherit npc_base + mesh models/md5/chars/suit.md5mesh + skin skins/characters/npcs/brownsuit.skin + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER eyecontrol chair) + +} + +model npc_jumpsuit { + inherit npc_base + mesh models/md5/chars/jumpsuit.md5mesh + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER eyecontrol chair) + +} + +model npc_tshirt { + inherit npc_base + mesh models/md5/chars/tshirt.md5mesh + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER eyecontrol chair) + +} + +model npc_marine { + inherit npc_base + mesh models/md5/chars/marine.md5mesh + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER eyecontrol chair) + +} + +model npc_marine_w_mgun { + mesh models/md5/chars/marine_w_mgun.md5mesh + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER eyecontrol chair) + +} + +model npc_player { + inherit npc_base + mesh models/md5/chars/player.md5mesh + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER eyecontrol chair) + +} + + +model npc_security { + inherit npc_base + mesh models/md5/chars/security.md5mesh + skin skins/characters/npcs/regsec.skin + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER eyecontrol chair) + +} + +model npc_skeleton { + inherit npc_base + mesh models/md5/chars/skeleton.md5mesh + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER eyecontrol chair) + +} + +model char_betruger { + inherit npc_labcoat + anim operate_computer6 models/md5/chars/operate_computer_loop3.md5anim +} + + +entityDef char_betruger { + "inherit" "npc_base" + "model" "char_betruger" + "def_head" "head_betruger" + "head_joint" "Shoulders" +} + +model char_swann { + inherit npc_suit + anim stand models/md5/chars/stand.md5anim { + frame 1 event disableEyeFocus + } + anim stand models/md5/chars/stand.md5anim { + frame 1 event disableEyeFocus + } + +} + +entityDef char_swann { + "inherit" "npc_base" + "model" "char_swann" + + "eye_verticle_offset" "10" + "eye_horizontal_offset" "5" + + "def_head" "head_swann" + "head_joint" "Shoulders" +} + +model char_campbell { + inherit npc_marine + + anim stand models/md5/chars/stand.md5anim { + frame 1 event disableEyeFocus + } + anim stand models/md5/chars/stand.md5anim { + frame 1 event disableEyeFocus + } +} + +entityDef char_campbell { + "inherit" "npc_base" + "model" "char_campbell" + + "eye_verticle_offset" "10" + "eye_horizontal_offset" "5" + + //"joint_attach Rhand1" "env_bfgcase" + + "def_head" "head_campbell" + "head_joint" "Shoulders" +} + +model char_campbell_bfg { + mesh models/md5/chars/campbell/campbell.md5mesh + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER eyecontrol) + + anim stand models/md5/chars/campbell/bfg_idle.md5anim { + frame 1 event disableEyeFocus + } + anim idle models/md5/chars/campbell/bfg_idle.md5anim { + frame 1 event disableEyeFocus + } + anim idle_for_roq models/md5/chars/campbell/bfg_idle_eric.md5anim { + frame 1 event disableEyeFocus + } + + anim talk_primary models/md5/chars/campbell/bfg_idle.md5anim + anim talk_secondary1 models/md5/chars/campbell/bfg_idle.md5anim + anim walk models/md5/chars/campbell/bfg_walk.md5anim + anim run models/md5/chars/campbell/bfg_run.md5anim + anim af_pose models/md5/chars/campbell/af_pose.md5anim + anim ik_pose models/md5/chars/campbell/af_pose.md5anim + anim runbackfire models/md5/chars/campbell/bfg_runback_fire.md5anim { + frame 1 trigger bfglight1 + frame 4 trigger bfglight1 + frame 6 trigger bfglight1 + frame 9 trigger bfglight1 + frame 53 fire_missile_at_target BFG duffy_target_null_2 + } + anim runbackfire2 models/md5/chars/campbell/bfg_runback_fire2.md5anim { + frame 51 fire_missile_at_target BFG duffy_target_null_2 + } + anim runbackstart models/md5/chars/campbell/bfg_runback_fire2_start.md5anim + + anim bfgaim models/md5/chars/campbell/bfg_aim.md5anim + anim turn_left models/md5/chars/campbell/campbellturn_left.md5anim, models/md5/chars/campbell/campbellturn_left_rotation180.md5anim { + anim_turn + } + anim turn_right models/md5/chars/campbell/campbellturn_right.md5anim, models/md5/chars/campbell/campbellturn_right_rotation180.md5anim { + anim_turn + } + + anim casewalk models/md5/chars/campbell/bfg_casewalk.md5anim +} + +model char_campbell_bfgcase { + inherit char_campbell_bfg + anim walk models/md5/chars/campbell/bfg_casewalk.md5anim + anim stand models/md5/chars/campbell/campbell_idle.md5anim + anim idle models/md5/chars/campbell/campbell_idle.md5anim +} + +entityDef char_campbell_bfg { + "inherit" "character_default" + "scriptobject" "ai" + "nativeobject" "rvmCharacter" + "size" "32 32 74" + "use_aas" "aas48" + "team" "0" + "rank" "0" + "mass" "2000" + + "ik_numLegs" "2" + "ik_footSize" "0" + "ik_waist" "Body2" + "ik_hip1" "Lupleg" + "ik_hip2" "Rupleg" + "ik_knee1" "Lloleg" + "ik_knee2" "Rloleg" + "ik_ankle1" "Lankle_r" + "ik_ankle2" "Rankle_r" + "ik_dir1" "Lknee" + "ik_dir2" "Rknee" + "ik_foot1" "Lball_r" + "ik_foot2" "Rball_r" + + "bone_focus" "headcontrol" + "bone_leftEye" "Leyeaim" + "bone_rightEye" "Reyeaim" + + "eye_turn_min" "-20 -30 0" + "eye_turn_max" "20 30 0" + "eye_verticle_offset" "5" + "eye_horizontal_offset" "-8" + "eye_focus_rate" "0.5" + "head_focus_rate" "0.1" + + "look_min" "-90 -125 0" + "look_max" "25 125 0" + "look_joint Waist" "0.1333 0.1333 0" + "look_joint Chest" "0.1333 0.1333 0" + "look_joint Shoulders" "0.1333 0.1333 0" + "look_joint headcontrol" "0.6 0.6 0" + "look_joint Ruparm" "-0.4 0 0" + "look_joint Luparm" "-0.4 0 0" + + "damage_zone head" "*loneckcontrol" + "damage_zone chest" "*Waist -*loneckcontrol" + "damage_zone left_arm" "*Luparm" + "damage_zone right_arm" "*Ruparm" + "damage_zone legs" "origin Body2" + + "snd_footstep" "npc_sounds_footstep" + + "model" "char_campbell_bfg" + "ragdoll" "char_campbell_bfg" + + "sound_bone" "Chest" + + "def_head" "head_campbell" + "head_joint" "Shoulders" + + "def_projectile" "projectile_bfg_cinematic" + "projectile_spread" "0" + "num_projectiles" "1" + "attack_accuracy" "0" + + "def_dropDeathItem" "moveable_item_bfg" + "dropDeathItemJoint" "BFG" + "skin_dropDeath" "skins/characters/npcs/marine_campbell.skin" + +} + + + +/*********************************************************************** + + Haz. Materials + +***********************************************************************/ + +model npc_hazmat { + inherit npc_base + mesh models/md5/chars/hazmat.md5mesh + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER eyecontrol chair) + +} + +model char_hazmat { + inherit npc_base + mesh models/md5/chars/hazmat.md5mesh + channel torso ( *Waist ) + channel legs ( origin Body Body2 *Hips -*Waist SPINNER eyecontrol chair ) +} + +entityDef char_hazmat { + "inherit" "npc_base" + "model" "char_hazmat" +} + + +entityDef npc_base { + "inherit" "character_default" + "scriptobject" "ai" + "nativeobject" "rvmCharacter" + "model" "npc_base" + "ragdoll" "char_npc_base" + "size" "32 32 74" + "use_aas" "aas48" + "team" "0" + "rank" "0" + + "gib" "1" + "model_gib" "models/md5/chars/skeleton.md5mesh" + "snd_gibbed" "sound_giblets" + + "def_dropGibItem1" "moveable_item_head_pork" + "dropGibItem1Joint" "headcontrol" + + "def_dropGibItem2" "moveable_item_torso_pork" + "dropGibItem2Joint" "Chest" + + "def_dropGibItem3" "moveable_item_rup_arm_pork" + "dropGibItem3Joint" "Ruparm" + + "def_dropGibItem4" "moveable_item_left_waist_pork" + "dropGibItem4Joint" "Waist" + + "def_dropGibItem5" "moveable_item_lup_leg_pork" + "dropGibItem5Joint" "Lupleg" + + "def_dropGibItem6" "moveable_item_rup_leg_pork" + "dropGibItem6Joint" "Rupleg" + + "def_dropGibItem7" "moveable_item_rup2_leg_pork" + "dropGibItem7Joint" "Rloleg" + + "def_dropGibItem8" "moveable_item_pelvis_pork" + "dropGibItem8Joint" "Hips" + + "ik_numLegs" "2" + "ik_footSize" "4" + "ik_waist" "Body2" + "ik_hip1" "Lupleg" + "ik_hip2" "Rupleg" + "ik_knee1" "Lloleg" + "ik_knee2" "Rloleg" + "ik_ankle1" "Lankle_r" + "ik_ankle2" "Rankle_r" + "ik_dir1" "Lknee" + "ik_dir2" "Rknee" + "ik_foot1" "Lball_r" + "ik_foot2" "Rball_r" + + "bone_focus" "headcontrol" + "bone_orientation" "Body" + "bone_leftEye" "Leyeaim" + "bone_rightEye" "Reyeaim" + + "look_min" "-90 -125 0" + "look_max" "25 125 0" + "look_joint Waist" "0.1333 0.1333 0" + "look_joint Chest" "0.1333 0.1333 0" + "look_joint Shoulders" "0.1333 0.1333 0" + "look_joint headcontrol" "0.6 0.6 0" + "look_joint Ruparm" "-0.4 0 0" + "look_joint Luparm" "-0.4 0 0" + + "copy_joint neckcontrol" "neckcontrol" + "copy_joint headcontrol" "headcontrol" + "copy_joint_world eyecontrol" "eyecontrol" + + "eye_turn_min" "-20 -30 0" + "eye_turn_max" "20 30 0" + "eye_verticle_offset" "5" + "eye_horizontal_offset" "-8" + "eye_focus_rate" "0.5" + "head_focus_rate" "0.1" + + "damage_zone head" "*loneckcontrol" + "damage_zone chest" "*Waist -*loneckcontrol" + "damage_zone left_arm" "*Luparm" + "damage_zone right_arm" "*Ruparm" + "damage_zone legs" "origin Body2" + + "snd_death" "generic_npc_death" + "snd_footstep" "player_sounds_footstep" + "snd_talk_primary" "default_primary" + "snd_talk_secondary" "default_secondary" + "snd_talk_trigger" "default_trigger" +} + + + + +//PROPS + +export fred { + + options -prefix ZOMBIE_ -keep RHANDCONNECTOR -rename origin blah -rename RHANDCONNECTOR origin -clearorigin -sourcedir models/monsters/zombie/cycles/idles -destdir models/md5/props + + mesh npcs_mesh.mb -range 1 1 -dest tabletpc -keepmesh tabletpcmesh -keepmesh tabletpcguimesh + mesh npcs_mesh.mb -range 1 1 -dest foamcup -keepmesh foamcup_layer1 + + options -prefix ZOMBIE_ -keep RHANDCONNECTOR -rename origin blah -rename RHANDCONNECTOR origin -clearorigin -sourcedir models/monsters/zombie/cycles/idles -destdir models/md5/props + + mesh npcs_mesh.mb -range 1 1 -dest adrenaline -keepmesh adrenalinemesh -keepmesh adrenalinefxmesh + mesh npcs_mesh.mb -range 1 1 -dest pda -keepmesh pdamodel -keepmesh pdaguimodel + mesh npcs_mesh.mb -range 1 1 -dest cola -keepmesh cola1_layer1 + + mesh npcs_mesh.mb -range 1 1 -dest shotgun -keepmesh w_shotgunmesh -keepmesh w_shotgunloadermesh + mesh npcs_mesh.mb -range 1 1 -keep mgeject -keep mgflash -keep mgbarrel -dest machinegun -keepmesh w_machinegunmesh -keepmesh mgflash1 -keepmesh mgflash2 -keepmesh mgflash3 -keepmesh mgflash4 + mesh npcs_mesh.mb -range 1 1 -dest pistol -keepmesh w_pistolmesh + mesh npcs_mesh.mb -range 1 1 -dest flashlight -keepmesh flashlightflaremodel -keepmesh flashlightbeammodel -keepmesh flashlightlensmodel -keepmesh flashlightmodel + mesh npcs_mesh.mb -range 1 1 -dest wrench -keepmesh monkeywrench + mesh npcs_mesh.mb -range 1 1 -dest dufflebag -keepmesh dufflebagmesh + + options -prefix ZOMBIE_ -keep LHANDCONNECTOR -rename origin blah -rename LHANDCONNECTOR origin -clearorigin -sourcedir models/monsters/zombie/cycles/idles -destdir models/md5/props + mesh npcs_mesh.mb -range 1 1 -dest leftflashlight -keepmesh flashlightflaremodel -keepmesh flashlightbeammodel -keepmesh flashlightlensmodel -keepmesh flashlightmodel + + options -prefix ZOMBIE_ -keep chair -rename origin blah -rename chair origin -clearorigin -sourcedir models/monsters/zombie/cycles/idles -destdir models/md5/props + + mesh npcs_mesh.mb -range 1 1 -dest metal_lounge_chair -keepmesh metalloungechairframemesh -keepmesh metalloungechairmesh + mesh npcs_mesh.mb -range 1 1 -dest metal_kitchen_chair -keepmesh metalkitchenchairmesh + mesh npcs_mesh.mb -range 1 1 -dest big_cushy_chair -keepmesh bigcushychairmesh + mesh npcs_mesh.mb -range 1 1 -dest soft_desk_chair1 -keepmesh softdeskchairmesh1 + mesh npcs_mesh.mb -range 1 1 -dest soft_desk_chair2 -keepmesh softdeskchairmesh2 + +// options -prefix SUIT_ -sourcedir maps/fred/marscity/ -destdir models/md5/chars/receptionist/marscity/ +// mesh reception.mb -dest receptioncin1_smallpda -prefix SUIT_ -keepmesh pdamodel -keepmesh pdaguimodel +// anim reception.mb -range 24 338 -dest receptioncin1_smallpda -prefix SUIT_ -keepmesh pdamodel -keepmesh pdaguimodel + + options -prefix SUIT_ -sourcedir maps/fred/marscity/ -destdir models/md5/chars/receptionist/marscity/ + mesh reception_redo.mb -dest receptioncin1_smallpda -prefix SUIT_ -keepmesh pdamodel -keepmesh pdaguimodel + anim reception_redo.mb -range 24 100 -dest receptioncin1_smallpda_a -prefix SUIT_ -keepmesh pdamodel -keepmesh pdaguimodel + anim reception_redo.mb -range 101 145 -dest receptioncin1_smallpda_b -prefix SUIT_ -keepmesh pdamodel -keepmesh pdaguimodel + anim reception_redo_handlock.mb -range 146 339 -dest receptioncin1_smallpda_c -prefix SUIT_ -keepmesh pdamodel -keepmesh pdaguimodel + + + + options -prefix PLAYER_ -sourcedir maps/fred/marscity/ -destdir models/md5/chars/receptionist/marscity/ + mesh reception.mb -dest receptioncin1_dufflebag -prefix PLAYER_ -keepmesh dufflebagmesh + anim reception.mb -dest receptioncin1_dufflebag -prefix PLAYER_ -keepmesh dufflebagmesh + +} + +model prop_adrenaline { + mesh models/md5/props/adrenaline.md5mesh + +} + +entityDef prop_adrenaline { + "inherit" "cin_base" + "model" "prop_adrenaline" + "joint" "RHANDCONNECTOR" + "origin" "0 0 0" + "angles" "0 0 0" + "remove" "1" +} + +model prop_tabletpc { + mesh models/md5/props/tabletpc.md5mesh + +} + +entityDef prop_tabletpc { + "inherit" "cin_base" + "model" "prop_tabletpc" + "joint" "LHANDCONNECTOR" + "origin" "0 0 0" + "angles" "0 0 0" + "remove" "1" +} + +model prop_pda { + mesh models/md5/props/pda.md5mesh + +} + +entityDef prop_pda { + "inherit" "cin_base" + "model" "prop_pda" + "joint" "RHANDCONNECTOR" + "origin" "0 0 0" + "angles" "0 0 0" + "remove" "1" +} + + + + +model prop_cola { + mesh models/md5/props/cola.md5mesh + +} + +entityDef prop_cola { + "inherit" "cin_base" + "model" "prop_cola" + "joint" "RHANDCONNECTOR" + "origin" "0 0 0" + "angles" "0 0 0" + "remove" "1" +} + +model prop_foamcup { + mesh models/md5/props/foamcup.md5mesh + +} + +entityDef prop_foamcup { + "inherit" "cin_base" + "model" "prop_foamcup" + "joint" "RHANDCONNECTOR" + "origin" "-2 -1 -1" + "angles" "-10 0 -40" + "remove" "1" +} + +model prop_flashlight { + mesh models/md5/props/flashlight.md5mesh + +} + +entityDef prop_flashlight { + "inherit" "cin_base" + "model" "prop_flashlight" + "joint" "RHANDCONNECTOR" + "origin" "0 0 0" + "angles" "0 0 0" + "remove" "1" +} + +model prop_lftflashlight { + mesh models/md5/props/leftflashlight.md5mesh +} + +entityDef prop_lftflashlight { + "inherit" "cin_base" + "model" "prop_lftflashlight" + "joint" "LHANDCONNECTOR" + "origin" "0 0 0" + "angles" "0 0 0" + "remove" "1" +} + +model prop_wrench { + mesh models/md5/props/wrench.md5mesh + +} + +entityDef prop_wrench { + "inherit" "cin_base" + "model" "prop_wrench" + "joint" "RHANDCONNECTOR" + "origin" "0 0 0" + "angles" "0 0 0" + "remove" "1" +} + +model prop_dufflebag { + mesh models/md5/props/dufflebag.md5mesh + +} + +entityDef prop_dufflebag { + "inherit" "cin_base" + "model" "prop_dufflebag" + "joint" "RHANDCONNECTOR" + "origin" "0 0 0" + "angles" "0 0 0" + "remove" "1" +} + +model prop_pistol { + mesh models/md5/props/pistol.md5mesh + +} + +entityDef prop_pistol { + "inherit" "cin_base" + "model" "prop_pistol" + "joint" "RHANDCONNECTOR" + "origin" "0 0 0" + "angles" "0 0 0" + "remove" "1" +} + +model prop_shotgun { + mesh models/md5/props/shotgun.md5mesh + +} + +entityDef prop_shotgun { + "inherit" "cin_base" + "model" "prop_shotgun" + "joint" "RHANDCONNECTOR" + "origin" "0 0 0" + "angles" "0 0 0" + "remove" "1" +} + +model prop_machinegun { + mesh models/md5/props/machinegun.md5mesh + +} + +entityDef prop_machinegun { + "inherit" "cin_base" + "model" "prop_machinegun" + "joint" "RHANDCONNECTOR" + "origin" "0 0 0" + "angles" "0 0 0" + "remove" "1" +} + +model prop_metal_lounge_chair { + mesh models/md5/props/metal_lounge_chair.md5mesh + +} + +entityDef prop_metal_lounge_chair { + "inherit" "cin_base" + "model" "prop_metal_lounge_chair" + "joint" "chair" + "origin" "0 0 0" + "angles" "0 0 0" + "remove" "1" +} + +model prop_metal_kitchen_chair { + mesh models/md5/props/metal_kitchen_chair.md5mesh + +} + +entityDef prop_metal_kitchen_chair { + "inherit" "cin_base" + "model" "prop_metal_kitchen_chair" + "joint" "chair" + "origin" "0 0 0" + "angles" "0 0 0" + "remove" "1" +} + +model prop_big_cushy_chair { + mesh models/md5/props/big_cushy_chair.md5mesh + +} + +entityDef prop_big_cushy_chair { + "inherit" "cin_base" + "model" "prop_big_cushy_chair" + "joint" "chair" + "origin" "0 0 0" + "angles" "0 0 0" + "remove" "1" +} + +model prop_soft_desk_chair1 { + mesh models/md5/props/soft_desk_chair1.md5mesh + +} + +entityDef prop_soft_desk_chair1 { + "inherit" "cin_base" + "model" "prop_soft_desk_chair1" + "joint" "chair" + "origin" "0 0 0" + "angles" "0 0 0" + "remove" "1" +} + +model prop_soft_desk_chair2 { + mesh models/md5/props/soft_desk_chair2.md5mesh + +} + +entityDef prop_soft_desk_chair2 { + "inherit" "cin_base" + "model" "prop_soft_desk_chair2" + "joint" "chair" + "origin" "0 0 0" + "angles" "0 0 0" + "remove" "1" +} diff --git a/base/def/npcs_james.def b/base/def/npcs_james.def new file mode 100644 index 00000000..2f8ddb54 --- /dev/null +++ b/base/def/npcs_james.def @@ -0,0 +1,35 @@ + +// NPCS + +export james { + options -prefix SUIT_ -keep eyecontrol rshldrpad lshldrpad Lknee Rknee Body Body2 Lhand Lhand1 Rhand Rhand1 headcontrol neckcontrol loneckcontrol SPINNER Rball_r Rtoe_r Lball_r Ltoe_r Chest Shoulders Luparm_orbit Ruparm_orbit Belly Lrib Rrib chair RHANDCONNECTOR LHANDCONNECTOR -parent RHANDCONNECTOR Rhand1 -parent LHANDCONNECTOR Lhand1 -parent headcontrol neckcontrol -parent neckcontrol loneckcontrol -parent loneckcontrol Shoulders -parent rshldrpad Shoulders -parent lshldrpad Shoulders -parent Body2 Body -parent Hips Body2 -parent SPINNER Body2 -parent Waist SPINNER + + addoptions -keepmesh marinebodymesh + + //MARSCITY CHARACTERS + + anim models/characters/male_npc/cycles/sitting/marscity_marine1_stand.mb -rotate 90 -dest models/md5/chars/marscity/marscity_marine1_stand + + anim models/characters/male_npc/cycles/sitting/marscity_marine1_idle1.mb -rotate 90 -dest models/md5/chars/marscity/marscity_marine1_idle1 + anim models/characters/male_npc/cycles/sitting/marscity_marine1_idle2.mb -rotate 90 -dest models/md5/chars/marscity/marscity_marine1_idle2 + anim models/characters/male_npc/cycles/sitting/marscity_marine1_idle3.mb -rotate 90 -dest models/md5/chars/marscity/marscity_marine1_idle3 + anim models/characters/male_npc/cycles/sitting/marscity_marine1_talk1.mb -rotate 90 -dest models/md5/chars/marscity/marscity_marine1_talk1 + anim models/characters/male_npc/cycles/sitting/marscity_marine1_talk2.mb -rotate 90 -dest models/md5/chars/marscity/marscity_marine1_talk2 + anim models/characters/male_npc/cycles/sitting/marscity_marine1_talk3.mb -rotate 90 -dest models/md5/chars/marscity/marscity_marine1_talk3 + anim models/characters/male_npc/cycles/sitting/marscity_marine1_convo1.mb -rotate 90 -dest models/md5/chars/marscity/marscity_marine1_convo1 + anim models/characters/male_npc/cycles/sitting/marscity_marine1_convo2.mb -rotate 90 -dest models/md5/chars/marscity/marscity_marine1_convo2 + anim models/characters/male_npc/cycles/sitting/marscity_marine1_convo3.mb -rotate 90 -dest models/md5/chars/marscity/marscity_marine1_convo3 + + anim models/characters/male_npc/cycles/sitting/marscity_marine2_stand.mb -rotate 90 -dest models/md5/chars/marscity/marscity_marine2_stand + anim models/characters/male_npc/cycles/sitting/marscity_marine2_idle1.mb -rotate 90 -dest models/md5/chars/marscity/marscity_marine2_idle1 + anim models/characters/male_npc/cycles/sitting/marscity_marine2_idle2.mb -rotate 90 -dest models/md5/chars/marscity/marscity_marine2_idle2 + anim models/characters/male_npc/cycles/sitting/marscity_marine2_idle3.mb -rotate 90 -dest models/md5/chars/marscity/marscity_marine2_idle3 + anim models/characters/male_npc/cycles/sitting/marscity_marine2_talk1.mb -rotate 90 -dest models/md5/chars/marscity/marscity_marine2_talk1 + anim models/characters/male_npc/cycles/sitting/marscity_marine2_talk2.mb -rotate 90 -dest models/md5/chars/marscity/marscity_marine2_talk2 + anim models/characters/male_npc/cycles/sitting/marscity_marine2_talk3.mb -rotate 90 -dest models/md5/chars/marscity/marscity_marine2_talk3 + anim models/characters/male_npc/cycles/sitting/marscity_marine2_convo1.mb -rotate 90 -dest models/md5/chars/marscity/marscity_marine2_convo1 + anim models/characters/male_npc/cycles/sitting/marscity_marine2_convo2.mb -rotate 90 -dest models/md5/chars/marscity/marscity_marine2_convo2 + anim models/characters/male_npc/cycles/sitting/marscity_marine2_convo3.mb -rotate 90 -dest models/md5/chars/marscity/marscity_marine2_convo3 + +} + \ No newline at end of file diff --git a/base/def/player.def b/base/def/player.def new file mode 100644 index 00000000..66723f64 --- /dev/null +++ b/base/def/player.def @@ -0,0 +1,953 @@ +/*********************************************************************** + + player + +***********************************************************************/ + +export fred { + options -prefix PLAYER_ -keep SPINNER camWaist camHead modelviewconnector camera PISTOL_ATTACHER SHOTGUN_ATTACHER MGATTACHER pgATTACHER NADE_ATTACHER CHAINSAW_ATTACHER RL_ATTACHER FL_ATTACHER BFG_ATTACHER CHAINGUN_ATTACHER Lfteye_Focus Rteye_Focus Neck -parent Waist SPINNER -parent SPINNER Waist2 -parent Neck Shldrs -parent camera camHead -parent Lfteye_Focus Head -parent Rteye_Focus Head -parent Waist2 Hips -parent PISTOL_ATTACHER Rhand -parent SHOTGUN_ATTACHER Rhand -parent MGATTACHER Rhand -parent pgATTACHER Rhand -parent NADE_ATTACHER Rhand -parent CHAINSAW_ATTACHER Rhand -parent RL_ATTACHER Lhand -parent FL_ATTACHER Rhand -parent BFG_ATTACHER Lhand -parent camWaist modelviewconnector -parent CHAINGUN_ATTACHER Rhand + + addoptions -skipmesh pistolBarrel + addoptions -skipmesh pistolExtender + addoptions -skipmesh pistolTrigger + addoptions -skipmesh pistolBody + addoptions -skipmesh pistolClip1 + addoptions -skipmesh plasma_innerscopebot_mesh1 + addoptions -skipmesh plasma_outerscopebot_mesh1 + addoptions -skipmesh plasma_innerscopetop_mesh1 + addoptions -skipmesh plasma_outerscopebot_mesh1 + addoptions -skipmesh plasma_outerscopetop_mesh1 + addoptions -skipmesh plasma_innerflap1_mesh1 + addoptions -skipmesh plasma_outerflap1_mesh1 + addoptions -skipmesh plasma_bolt_mesh1 + addoptions -skipmesh plasma_screen_mesh1 + addoptions -skipmesh plasma_body_mesh1 + addoptions -skipmesh plasma_handle_mesh1 + addoptions -skipmesh plasma_outerflap2_mesh4 + addoptions -skipmesh plasma_innerflap2_mesh4 + addoptions -skipmesh plasma_uppermon_mesh4 + addoptions -skipmesh shotgun_body_mesh + addoptions -skipmesh shotgun_handle_mesh + addoptions -skipmesh shotgun_trigger_mesh + addoptions -skipmesh shotgun_loflap_mesh + addoptions -skipmesh shotgun_extender_mesh + addoptions -skipmesh shotgun_upflap1_mesh + addoptions -skipmesh shotgun_upflap2_mesh + addoptions -skipmesh mgdisplaymesh + addoptions -skipmesh mgextendermesh + addoptions -skipmesh mgbodymesh + addoptions -skipmesh mgclipmesh + addoptions -skipmesh mgtriggermesh + addoptions -skipmesh nade_cap_mesh + addoptions -skipmesh nade_body_mesh + addoptions -skipmesh chainsawcordmesh + addoptions -skipmesh chainsawstartermesh + addoptions -skipmesh chainsawblademesh + addoptions -skipmesh chainsawhandlemesh + addoptions -skipmesh chainsawbodymesh + + addoptions -skipmesh rshell1 + addoptions -skipmesh rshell2 + addoptions -skipmesh rshell3 + addoptions -skipmesh rshell4 + addoptions -skipmesh reloader1 + addoptions -skipmesh handle + addoptions -skipmesh aimer + addoptions -skipmesh body + + addoptions -skipmesh flashlightmesh1 + addoptions -skipmesh flashlightflaremesh + addoptions -skipmesh flashlightbeammesh + addoptions -skipmesh flashlightflare2mesh + + addoptions -skipmesh bfgmesh + + addoptions -skipmesh w_pistolfire + addoptions -skipmesh w_pistolflash + addoptions -skipmesh w_pistolmesh + addoptions -skipmesh w_shotgun2barrelmesh + addoptions -skipmesh w_shotgun2mesh + addoptions -skipmesh w_machinegun_mesh + addoptions -skipmesh w_mgfx1 + addoptions -skipmesh w_mgfx2 + addoptions -skipmesh w_mgfx3 + addoptions -skipmesh w_mgfx4 + addoptions -skipmesh w_plasmagun_mesh + addoptions -skipmesh w_plasmagunfx1 + addoptions -skipmesh w_plasmagunfx2 + addoptions -skipmesh w_chainsaw_mesh + addoptions -skipmesh w_chainsaw_chain_mesh + addoptions -skipmesh w_rocketlauncher_mesh + + addoptions -skipmesh chaingunfx1_model + addoptions -skipmesh chaingunfx2_model + addoptions -skipmesh chaingunnubmodel + addoptions -skipmesh chaingunbodymodel + addoptions -skipmesh chaingunbarrelmodel + + + //non-aligned MOVES + + anim maps/fred/underground/crazy_sci_player_shot1.mb -xyzprecision .01 -quatprecision 0.00006 -range 1 114 -dest models/md5/cinematics/underground/crazy_player1 + anim maps/fred/underground/crazy_sci_player_shot2.mb -xyzprecision .01 -quatprecision 0.00006 -range 115 224 -dest models/md5/cinematics/underground/crazy_player2 + anim maps/fred/underground/crazysci2.mb -range 200 648 -dest models/md5/cinematics/underground/crazy_player3 + anim maps/fred/underground/crazysciend.mb -dest models/md5/cinematics/underground/crazy_player_end + + //non-aligned CINEMATICS + + anim maps/fred/cyberdemon/rescue1.mb -dest models/md5/cinematics/hellhole/rescue_player + anim models/monsters/sabaoth/cycles/death.mb -dest models/md5/cinematics/cpu_boss/sabaoth_death_player + + anim maps/james/recycling2.mb -dest models/md5/cinematics/recycling2/mancintro_player + + anim maps/fred/underground/impintro.mb -dest models/md5/cinematics/underground/impintro_player + + anim maps/fred/underground/headache.mb -dest models/md5/cinematics/underground/headache_player + + + anim maps/fred/admin/railing.mb -dest models/md5/cinematics/admin/railingplayer + anim maps/fred/admin/campbell_overhear_1_n_2_n_3.mb -range 1 313 -dest models/md5/cinematics/admin/overhearplayer1 + + anim maps/eric/enpro/wounded_marine.mb -range 1 92 -dest models/md5/cinematics/enpro/marine_player1 + anim maps/eric/enpro/wounded_marine.mb -range 93 194 -dest models/md5/cinematics/enpro/marine_player2 -prefix PLAYER2_ + anim maps/eric/enpro/wounded_marine.mb -range 195 340 -dest models/md5/cinematics/enpro/marine_player3 -prefix PLAYER2_ + anim maps/eric/enpro/wounded_marine.mb -range 341 476 -dest models/md5/cinematics/enpro/marine_player4 -prefix PLAYER2_ + anim maps/eric/enpro/wounded_marine.mb -range 477 571 -dest models/md5/cinematics/enpro/marine_player5 -prefix PLAYER2_ + anim maps/eric/enpro/wounded_marine.mb -range 572 598 -dest models/md5/cinematics/enpro/marine_player6 -prefix PLAYER2_ + + + + + + //mesh + + mesh models/characters/player/mocap/idle_stand.mb -dest models/md5/characters/player/mocap/player + + anim maps/fred/admin/swann_campbell_overhear.mb -range 432 1033 -dest models/md5/cinematics/admin/overhearplayer2 -prefix PLAYER1_ + + + addoptions -align ALL + +//CINEMATICS + + anim models/characters/player/mocap/react1.mb -dest models/md5/characters/player/mocap/cinematics/react1 + anim models/characters/player/mocap/spinaround1.mb -dest models/md5/characters/player/mocap/cinematics/spinaround1 + anim models/characters/player/mocap/walk2stop.mb -range 17 50 -dest models/md5/characters/player/mocap/cinematics/stop2walk + anim models/characters/player/mocap/walk2stop.mb -range 55 120 -dest models/md5/characters/player/mocap/cinematics/walk2stop + anim models/characters/player/mocap/walk2stop.mb -range 55 93 -dest models/md5/characters/player/mocap/cinematics/walk2stop2 + anim models/characters/player/mocap/walk2stop.mb -range 10 120 -dest models/md5/characters/player/mocap/cinematics/walk2stopfull + + anim models/characters/player/mocap/nadedrope3ending.mb -range 1 370 -dest models/md5/characters/player/mocap/cinematics/nadedrope3ending + anim models/characters/player/mocap/outofammo.mb -dest models/md5/characters/player/mocap/cinematics/outofammo +} + +//NPC PLAYER ANIMS + +export fred { + + options -prefix SUIT_ -keep Lknee Rknee Lhand Lhand1 Rhand Rhand1 Body2 Body SPINNER PISTOL_ATTACHER SHOTGUN_ATTACHER MGATTACHER pgATTACHER NADE_ATTACHER CHAINSAW_ATTACHER RL_ATTACHER FL_ATTACHER BFG_ATTACHER CHAINGUN_ATTACHER PDA_ATTACHER SOUL_ATTACHER loneckadjust headcontrol neckcontrol loneckcontrol eyecontrol jawcontrol jawadjust Jaw -parent Body2 Body -parent Hips Body2 -parent SPINNER Body2 -parent Waist SPINNER -parent PISTOL_ATTACHER Rhand1 -parent SHOTGUN_ATTACHER Rhand1 -parent MGATTACHER Rhand1 -parent pgATTACHER Rhand1 -parent NADE_ATTACHER Rhand1 -parent CHAINSAW_ATTACHER Rhand1 -parent RL_ATTACHER Lhand1 -parent FL_ATTACHER Rhand1 -parent BFG_ATTACHER Rhand1 -parent CHAINGUN_ATTACHER Rhand -parent headcontrol neckcontrol -parent neckcontrol loneckcontrol -parent loneckcontrol Shoulders -parent Rhand1 Rhand -parent Rfings1 Rhand1 -parent Rindex1 Rhand1 -parent Rthumb1 Rhand1 -parent PDA_ATTACHER Rhand -parent SOUL_ATTACHER Rhand + + addoptions -keepmesh soldiermesh + addoptions -keepmesh marinehelmetmesh + addoptions -keepmesh marinebodymesh + addoptions -keepmesh skeletonmesh + + + //anim models/characters/male_npc/cycles/tweakedplayermoves/walk_fast.mb -dest models/md5/characters/npcs/playermoves/walk_forward + anim models/characters/male_npc/cycles/tweakedplayermoves/run2stop.mb -dest models/md5/characters/npcs/playermoves/exit_teleporter +} + + +export fred { + + options -prefix MP_ -keep Loneck Head Lknee Rknee Lhand Lhand1 Rhand Body2 Body SPINNER PISTOL_ATTACHER SHOTGUN_ATTACHER MGATTACHER pgATTACHER NADE_ATTACHER CHAINSAW_ATTACHER RL_ATTACHER FL_ATTACHER BFG_ATTACHER CHAINGUN_ATTACHER PDA_ATTACHER SOUL_ATTACHER loneckadjust headcontrol neckcontrol loneckcontrol eyecontrol jawcontrol jawadjust Jaw -parent Body2 Body -parent Hips Body2 -parent SPINNER Body2 -parent Waist SPINNER -parent PISTOL_ATTACHER Rhand1 -parent SHOTGUN_ATTACHER Rhand1 -parent MGATTACHER Rhand1 -parent pgATTACHER Rhand1 -parent NADE_ATTACHER Rhand1 -parent CHAINSAW_ATTACHER Rhand1 -parent RL_ATTACHER Lhand1 -parent FL_ATTACHER Rhand1 -parent BFG_ATTACHER Rhand1 -parent CHAINGUN_ATTACHER Rhand -parent headcontrol neckcontrol -parent neckcontrol loneckcontrol -parent loneckcontrol Shoulders -parent PDA_ATTACHER Rhand -parent SOUL_ATTACHER Rhand + + + addoptions -keepmesh npcplayerarmmesh + addoptions -keepmesh npcplayermesh + addoptions -keepmesh soldiermesh + + + mesh models/characters/male_npc/cycles/tweakedplayermoves/makemesh.mb -rotate 90 -dest models/md5/characters/npcs/playermoves/spplayer + + options -prefix MP_ -keep Lknee Rknee Lhand Lhand1 Rhand Body2 Body SPINNER PISTOL_ATTACHER SHOTGUN_ATTACHER MGATTACHER pgATTACHER NADE_ATTACHER CHAINSAW_ATTACHER RL_ATTACHER FL_ATTACHER BFG_ATTACHER CHAINGUN_ATTACHER PDA_ATTACHER SOUL_ATTACHER loneckadjust headcontrol neckcontrol loneckcontrol eyecontrol jawcontrol jawadjust Jaw -parent Body2 Body -parent Hips Body2 -parent SPINNER Body2 -parent Waist SPINNER -parent PISTOL_ATTACHER Rhand1 -parent SHOTGUN_ATTACHER Rhand1 -parent MGATTACHER Rhand1 -parent pgATTACHER Rhand1 -parent NADE_ATTACHER Rhand1 -parent CHAINSAW_ATTACHER Rhand1 -parent RL_ATTACHER Lhand1 -parent FL_ATTACHER Rhand1 -parent BFG_ATTACHER Rhand1 -parent CHAINGUN_ATTACHER Rhand -parent headcontrol neckcontrol -parent neckcontrol loneckcontrol -parent loneckcontrol Shoulders -parent PDA_ATTACHER Rhand -parent SOUL_ATTACHER Rhand + + addoptions -keepmesh head_skullmesh + addoptions -keepmesh skeletonmesh + addoptions -keepmesh marinehelmetmesh + addoptions -keepmesh head_uachelmetmesh + addoptions -keepmesh marinebodymesh + addoptions -keepmesh head_bfx1mesh + addoptions -keepmesh head_bfx2mesh + addoptions -keepmesh head_bfx3mesh + addoptions -keepmesh head_bfx4mesh + addoptions -keepmesh head_bfxflamemesh + addoptions -keepmesh head_bfxmodelmesh + addoptions -keepmesh head_stumpmesh + addoptions -keepmesh berserkbodyfxmesh + + mesh models/characters/male_npc/cycles/tweakedplayermoves/makemesh.mb -dest models/md5/characters/npcs/playermoves/mpplayer + +// anim models/characters/male_npc/cycles/tweakedplayermoves/walk_strafe_left_new.mb -rotate 180 -dest models/md5/characters/npcs/playermoves/walk_strafe_left_new + anim models/characters/male_npc/cycles/tweakedplayermoves/jog.mb -rotate 90 -dest models/md5/characters/npcs/playermoves/jog + anim models/characters/male_npc/cycles/tweakedplayermoves/jog_back.mb -rotate 90 -dest models/md5/characters/npcs/playermoves/jog_back + anim models/characters/male_npc/cycles/tweakedplayermoves/crouch_walk.mb -rotate -90 -dest models/md5/characters/npcs/playermoves/crouch_walk + anim models/characters/male_npc/cycles/tweakedplayermoves/crouch_walk_back.mb -cyclestart 23 -rotate -90 -dest models/md5/characters/npcs/playermoves/crouch_walk_back + anim models/characters/male_npc/cycles/tweakedplayermoves/newrun.mb -rotate -90 -dest models/md5/characters/npcs/playermoves/newrun + + + + anim models/characters/male_npc/cycles/tweakedplayermoves/walk_strafe_left4.mb -cycleStart 56 -dest models/md5/characters/npcs/playermoves/walk_strafe_left + anim models/characters/male_npc/cycles/tweakedplayermoves/walk_strafe_right4.mb -cycleStart 56 -dest models/md5/characters/npcs/playermoves/walk_strafe_right + + anim models/characters/male_npc/cycles/tweakedplayermoves/run_strafe_left2.mb -cycleStart 47 -dest models/md5/characters/npcs/playermoves/run_strafe_left + anim models/characters/male_npc/cycles/tweakedplayermoves/run_strafe_right2.mb -cycleStart 47 -dest models/md5/characters/npcs/playermoves/run_strafe_right + + + addoptions -align ALL + + mesh models/characters/male_npc/cycles/tweakedplayermoves/makemesh.mb -dest models/md5/characters/npcs/playermoves/npcplayer + anim models/characters/male_npc/cycles/tweakedplayermoves/initial.mb -dest models/md5/characters/npcs/playermoves/initial + anim models/characters/player/mocap/idle_stand.mb -dest models/md5/characters/npcs/playermoves/idle_stand + + anim models/characters/male_npc/cycles/tweakedplayermoves/walk_100.mb -dest models/md5/characters/npcs/playermoves/walk_forward + + anim models/characters/player/mocap/walk_backwards_100.mb -dest models/md5/characters/npcs/playermoves/walk_backwards_100 + anim models/characters/male_npc/cycles/tweakedplayermoves/walk_jump.mb -range 46 76 -dest models/md5/characters/npcs/playermoves/walkjump1 + //anim models/characters/male_npc/cycles/tweakedplayermoves/walk_jump.mb -range 77 107 -dest models/md5/characters/npcs/playermoves/walkjump2 + anim models/characters/male_npc/cycles/tweakedplayermoves/soft_land.mb -range 109 116 -dest models/md5/characters/npcs/playermoves/soft_land + anim models/characters/male_npc/cycles/tweakedplayermoves/hard_land.mb -range 93 119 -dest models/md5/characters/npcs/playermoves/hard_land + anim models/characters/male_npc/cycles/tweakedplayermoves/fall.mb -dest models/md5/characters/npcs/playermoves/fall + + + anim models/characters/male_npc/cycles/tweakedplayermoves/pda_idle.mb -dest models/md5/characters/npcs/playermoves/pda_idle + + anim models/characters/male_npc/cycles/tweakedplayermoves/upladder.mb -dest models/md5/characters/npcs/playermoves/upladder + + + anim models/characters/male_npc/cycles/tweakedplayermoves/run270.mb -dest models/md5/characters/npcs/playermoves/run_270 + anim models/characters/male_npc/cycles/tweakedplayermoves/run.mb -cycleStart 72 -dest models/md5/characters/npcs/playermoves/run + anim models/characters/male_npc/cycles/tweakedplayermoves/run320.mb -rotate -90 -dest models/md5/characters/npcs/playermoves/run_320 + anim models/characters/male_npc/cycles/tweakedplayermoves/run192.mb -rotate 180 -dest models/md5/characters/npcs/playermoves/run_192 + anim models/characters/male_npc/cycles/tweakedplayermoves/run_backwards.mb -dest models/md5/characters/npcs/playermoves/run_backwards + anim models/characters/male_npc/cycles/tweakedplayermoves/runbackwards_270.mb -dest models/md5/characters/npcs/playermoves/run_backwards_270 + + anim models/characters/male_npc/cycles/tweakedplayermoves/turn_left.mb -dest models/md5/characters/npcs/playermoves/turn_left + anim models/characters/male_npc/cycles/tweakedplayermoves/turn_right.mb -dest models/md5/characters/npcs/playermoves/turn_right + + anim models/characters/male_npc/cycles/tweakedplayermoves/teleportin.mb -range 80 110 -dest models/md5/characters/npcs/playermoves/teleportin + + anim models/characters/male_npc/cycles/tweakedplayermoves/fredpains.mb -range 1 20 -dest models/md5/characters/npcs/playermoves/painhead + anim models/characters/male_npc/cycles/tweakedplayermoves/fredpains.mb -range 21 40 -dest models/md5/characters/npcs/playermoves/painleftarm + anim models/characters/male_npc/cycles/tweakedplayermoves/fredpains.mb -range 41 60 -dest models/md5/characters/npcs/playermoves/painrightarm + anim models/characters/male_npc/cycles/tweakedplayermoves/fredpains.mb -range 61 80 -dest models/md5/characters/npcs/playermoves/painchest + + anim models/characters/male_npc/cycles/tweakedplayermoves/crouch_down.mb -dest models/md5/characters/npcs/playermoves/crouch_down + anim models/characters/male_npc/cycles/tweakedplayermoves/crouch.mb -dest models/md5/characters/npcs/playermoves/crouch + anim models/characters/male_npc/cycles/tweakedplayermoves/crouch_up.mb -dest models/md5/characters/npcs/playermoves/crouch_up + + anim models/characters/player/mocap/crouch_walk_forward.mb -dest models/md5/characters/npcs/playermoves/crouch_walk_forward + anim models/characters/player/mocap/crouch_walk_backward.mb -dest models/md5/characters/npcs/playermoves/crouch_walk_backward + + anim models/characters/male_npc/cycles/tweakedplayermoves/lower_raise.mb -range 1 6 -dest models/md5/characters/npcs/playermoves/lowerwep + anim models/characters/male_npc/cycles/tweakedplayermoves/lower_raise.mb -range 6 20 -dest models/md5/characters/npcs/playermoves/raisewep + + anim models/characters/male_npc/cycles/tweakedplayermoves/lower_raise_left.mb -range 1 6 -dest models/md5/characters/npcs/playermoves/lowerwep_left + anim models/characters/male_npc/cycles/tweakedplayermoves/lower_raise_left.mb -range 6 20 -dest models/md5/characters/npcs/playermoves/raisewep_left + + anim models/characters/male_npc/cycles/tweakedplayermoves/pda_lower.mb -range 1 10 -dest models/md5/characters/npcs/playermoves/lowerpda + anim models/characters/male_npc/cycles/tweakedplayermoves/pda_raise.mb -range 1 20 -dest models/md5/characters/npcs/playermoves/raisepda + + + anim models/characters/male_npc/cycles/tweakedplayermoves/fists_idle_down.mb -dest models/md5/characters/npcs/playermoves/fists_idle_down + anim models/characters/male_npc/cycles/tweakedplayermoves/fists_idle.mb -dest models/md5/characters/npcs/playermoves/fists_idle + anim models/characters/male_npc/cycles/tweakedplayermoves/fists_idle_up.mb -dest models/md5/characters/npcs/playermoves/fists_idle_up + + anim models/characters/male_npc/cycles/tweakedplayermoves/fists_aim_down.mb -dest models/md5/characters/npcs/playermoves/fists_aim_down + anim models/characters/male_npc/cycles/tweakedplayermoves/fists_aim.mb -dest models/md5/characters/npcs/playermoves/fists_aim + anim models/characters/male_npc/cycles/tweakedplayermoves/fists_aim_up.mb -dest models/md5/characters/npcs/playermoves/fists_aim_up + + anim models/characters/male_npc/cycles/tweakedplayermoves/fists_punch_up.mb -range 37 53 -dest models/md5/characters/npcs/playermoves/fists_punch_up1 + anim models/characters/male_npc/cycles/tweakedplayermoves/fists_punch.mb -range 37 53 -dest models/md5/characters/npcs/playermoves/fists_punch1 + anim models/characters/male_npc/cycles/tweakedplayermoves/fists_punch_down.mb -range 37 53 -dest models/md5/characters/npcs/playermoves/fists_punch_down1 + anim models/characters/male_npc/cycles/tweakedplayermoves/fists_punch_up2.mb -range 138 153 -dest models/md5/characters/npcs/playermoves/fists_punch_up2 + anim models/characters/male_npc/cycles/tweakedplayermoves/fists_punch.mb -range 138 153 -dest models/md5/characters/npcs/playermoves/fists_punch2 + anim models/characters/male_npc/cycles/tweakedplayermoves/fists_punch_down.mb -range 138 153 -dest models/md5/characters/npcs/playermoves/fists_punch_down2 + + anim models/characters/male_npc/cycles/tweakedplayermoves/pistol_idle3_down.mb -dest models/md5/characters/npcs/playermoves/pistol_idle_down + anim models/characters/male_npc/cycles/tweakedplayermoves/pistol_idle3.mb -dest models/md5/characters/npcs/playermoves/pistol_idle + anim models/characters/male_npc/cycles/tweakedplayermoves/pistol_idle3_up.mb -dest models/md5/characters/npcs/playermoves/pistol_idle_up + anim models/characters/male_npc/cycles/tweakedplayermoves/pistol_aim_up.mb -dest models/md5/characters/npcs/playermoves/pistol_aim_up + anim models/characters/male_npc/cycles/tweakedplayermoves/pistol_aim.mb -dest models/md5/characters/npcs/playermoves/pistol_aim + anim models/characters/male_npc/cycles/tweakedplayermoves/pistol_aim_down.mb -dest models/md5/characters/npcs/playermoves/pistol_aim_down + anim models/characters/male_npc/cycles/tweakedplayermoves/pistol_fire.mb -range 35 58 -dest models/md5/characters/npcs/playermoves/pistol_fire1 + anim models/characters/male_npc/cycles/tweakedplayermoves/pistol_fire_up.mb -range 35 58 -dest models/md5/characters/npcs/playermoves/pistol_fire_up + anim models/characters/male_npc/cycles/tweakedplayermoves/pistol_fire_down.mb -range 35 58 -dest models/md5/characters/npcs/playermoves/pistol_fire_down + anim models/characters/male_npc/cycles/tweakedplayermoves/pistol_reload.mb -dest models/md5/characters/npcs/playermoves/pistol_reload + + anim models/characters/male_npc/cycles/tweakedplayermoves/shotgun_idle_down.mb -dest models/md5/characters/npcs/playermoves/shotgun_idle_down + anim models/characters/male_npc/cycles/tweakedplayermoves/shotgun_idle.mb -dest models/md5/characters/npcs/playermoves/shotgun_idle + anim models/characters/male_npc/cycles/tweakedplayermoves/shotgun_idle_up.mb -dest models/md5/characters/npcs/playermoves/shotgun_idle_up + + anim models/characters/male_npc/cycles/tweakedplayermoves/shotgun_aim_up.mb -dest models/md5/characters/npcs/playermoves/shotgun_aim_up + anim models/characters/male_npc/cycles/tweakedplayermoves/shotgun_aim.mb -dest models/md5/characters/npcs/playermoves/shotgun_aim + anim models/characters/male_npc/cycles/tweakedplayermoves/shotgun_aim_down.mb -dest models/md5/characters/npcs/playermoves/shotgun_aim_down + + anim models/characters/male_npc/cycles/tweakedplayermoves/shotgun_fire.mb -range 49 75 -dest models/md5/characters/npcs/playermoves/shotgun_fire1 + anim models/characters/male_npc/cycles/tweakedplayermoves/shotgun_fire_up.mb -range 49 75 -dest models/md5/characters/npcs/playermoves/shotgun_fire_up + anim models/characters/male_npc/cycles/tweakedplayermoves/shotgun_fire_down.mb -range 49 75 -dest models/md5/characters/npcs/playermoves/shotgun_fire_down + + anim models/characters/male_npc/cycles/tweakedplayermoves/shotgun_reload2.mb -range 36 46 -dest models/md5/characters/npcs/playermoves/shotgun_reload_start + anim models/characters/male_npc/cycles/tweakedplayermoves/shotgun_reload2_loopfast.mb -range 56 67 -dest models/md5/characters/npcs/playermoves/shotgun_reload_loop1 + anim models/characters/male_npc/cycles/tweakedplayermoves/shotgun_reload2.mb -range 124 148 -dest models/md5/characters/npcs/playermoves/shotgun_reload_end + + anim models/characters/male_npc/cycles/tweakedplayermoves/machinegun_idle_down.mb -dest models/md5/characters/npcs/playermoves/machinegun_idle_down + anim models/characters/male_npc/cycles/tweakedplayermoves/machinegun_idle.mb -dest models/md5/characters/npcs/playermoves/machinegun_idle + anim models/characters/male_npc/cycles/tweakedplayermoves/machinegun_idle_up.mb -dest models/md5/characters/npcs/playermoves/machinegun_idle_up + + anim models/characters/male_npc/cycles/tweakedplayermoves/machinegun_aim_up.mb -dest models/md5/characters/npcs/playermoves/machinegun_aim_up + anim models/characters/male_npc/cycles/tweakedplayermoves/machinegun_aim.mb -dest models/md5/characters/npcs/playermoves/machinegun_aim + anim models/characters/male_npc/cycles/tweakedplayermoves/machinegun_aim_down.mb -dest models/md5/characters/npcs/playermoves/machinegun_aim_down + + anim models/characters/male_npc/cycles/tweakedplayermoves/machinegun_fire_up.mb -range 53 62 -dest models/md5/characters/npcs/playermoves/machinegun_fire_up + anim models/characters/male_npc/cycles/tweakedplayermoves/machinegun_fire.mb -range 53 62 -dest models/md5/characters/npcs/playermoves/machinegun_fire1 + anim models/characters/male_npc/cycles/tweakedplayermoves/machinegun_fire_down.mb -range 53 62 -dest models/md5/characters/npcs/playermoves/machinegun_fire_down + + anim models/characters/male_npc/cycles/tweakedplayermoves/machinegun_reload.mb -dest models/md5/characters/npcs/playermoves/machinegun_reload + + anim models/characters/male_npc/cycles/tweakedplayermoves/grenade_idle_up.mb -dest models/md5/characters/npcs/playermoves/nade_idle_up + anim models/characters/male_npc/cycles/tweakedplayermoves/grenade_idle.mb -dest models/md5/characters/npcs/playermoves/nade_idle + anim models/characters/male_npc/cycles/tweakedplayermoves/grenade_idle_down.mb -dest models/md5/characters/npcs/playermoves/nade_idle_down + anim models/characters/male_npc/cycles/tweakedplayermoves/grenade_quickthrow_up.mb -dest models/md5/characters/npcs/playermoves/nade_quickthrow_up + anim models/characters/male_npc/cycles/tweakedplayermoves/grenade_quickthrow.mb -dest models/md5/characters/npcs/playermoves/nade_quickthrow + anim models/characters/male_npc/cycles/tweakedplayermoves/grenade_quickthrow_down.mb -dest models/md5/characters/npcs/playermoves/nade_quickthrow_down + anim models/characters/male_npc/cycles/tweakedplayermoves/grenade_start_up.mb -dest models/md5/characters/npcs/playermoves/nade_throwstart_up + anim models/characters/male_npc/cycles/tweakedplayermoves/grenade_start.mb -dest models/md5/characters/npcs/playermoves/nade_throwstart + anim models/characters/male_npc/cycles/tweakedplayermoves/grenade_start_down.mb -dest models/md5/characters/npcs/playermoves/nade_throwstart_down + anim models/characters/male_npc/cycles/tweakedplayermoves/grenade_throw_up.mb -dest models/md5/characters/npcs/playermoves/nade_throw_up + anim models/characters/male_npc/cycles/tweakedplayermoves/grenade_throw.mb -dest models/md5/characters/npcs/playermoves/nade_throw + anim models/characters/male_npc/cycles/tweakedplayermoves/grenade_throw_down.mb -dest models/md5/characters/npcs/playermoves/nade_throw_down + + anim models/characters/male_npc/cycles/tweakedplayermoves/flashlight_aim_down.mb -dest models/md5/characters/npcs/playermoves/flashlight_aim_down + anim models/characters/male_npc/cycles/tweakedplayermoves/flashlight_aim_up.mb -dest models/md5/characters/npcs/playermoves/flashlight_aim_up + anim models/characters/male_npc/cycles/tweakedplayermoves/flashlight_idle.mb -dest models/md5/characters/npcs/playermoves/flashlight_idle + anim models/characters/male_npc/cycles/tweakedplayermoves/flashlight_swing1_down.mb -dest models/md5/characters/npcs/playermoves/flashlight_swing1_down + anim models/characters/male_npc/cycles/tweakedplayermoves/flashlight_swing1.mb -dest models/md5/characters/npcs/playermoves/flashlight_swing1 + anim models/characters/male_npc/cycles/tweakedplayermoves/flashlight_swing1_up.mb -dest models/md5/characters/npcs/playermoves/flashlight_swing1_up + anim models/characters/male_npc/cycles/tweakedplayermoves/flashlight_swing2_down.mb -dest models/md5/characters/npcs/playermoves/flashlight_swing2_down + anim models/characters/male_npc/cycles/tweakedplayermoves/flashlight_swing2.mb -dest models/md5/characters/npcs/playermoves/flashlight_swing2 + anim models/characters/male_npc/cycles/tweakedplayermoves/flashlight_swing2_up.mb -dest models/md5/characters/npcs/playermoves/flashlight_swing2_up + + anim models/characters/male_npc/cycles/tweakedplayermoves/chainsaw_raise.mb -dest models/md5/characters/npcs/playermoves/chainsaw_raise + anim models/characters/male_npc/cycles/tweakedplayermoves/chainsaw_idle2_up.mb -dest models/md5/characters/npcs/playermoves/chainsaw_idle_up + anim models/characters/male_npc/cycles/tweakedplayermoves/chainsaw_idle2.mb -dest models/md5/characters/npcs/playermoves/chainsaw_idle + anim models/characters/male_npc/cycles/tweakedplayermoves/chainsaw_idle2_down.mb -dest models/md5/characters/npcs/playermoves/chainsaw_idle_down + anim models/characters/player/mocap/chainsaw_aim.mb -dest models/md5/characters/npcs/playermoves/chainsaw_aim + anim models/characters/male_npc/cycles/tweakedplayermoves/chainsaw_fire1_up.mb -dest models/md5/characters/npcs/playermoves/chainsaw_fire_up + anim models/characters/male_npc/cycles/tweakedplayermoves/chainsaw_fire1.mb -dest models/md5/characters/npcs/playermoves/chainsaw_fire + anim models/characters/male_npc/cycles/tweakedplayermoves/chainsaw_fire1_down.mb -dest models/md5/characters/npcs/playermoves/chainsaw_fire_down + + + anim models/characters/male_npc/cycles/tweakedplayermoves/plasmagun_idle_down.mb -dest models/md5/characters/npcs/playermoves/plasmagun_idle_down + anim models/characters/male_npc/cycles/tweakedplayermoves/plasmagun_idle.mb -dest models/md5/characters/npcs/playermoves/plasmagun_idle + anim models/characters/male_npc/cycles/tweakedplayermoves/plasmagun_idle_up.mb -dest models/md5/characters/npcs/playermoves/plasmagun_idle_up + + anim models/characters/male_npc/cycles/tweakedplayermoves/plasmagun_aim_up.mb -dest models/md5/characters/npcs/playermoves/plasmagun_aim_up + anim models/characters/male_npc/cycles/tweakedplayermoves/plasmagun_aim.mb -dest models/md5/characters/npcs/playermoves/plasmagun_aim + anim models/characters/male_npc/cycles/tweakedplayermoves/plasmagun_aim_down.mb -dest models/md5/characters/npcs/playermoves/plasmagun_aim_down + anim models/characters/male_npc/cycles/tweakedplayermoves/plasmagun_fire_up.mb -range 53 62 -dest models/md5/characters/npcs/playermoves/plasmagun_fire_up + anim models/characters/male_npc/cycles/tweakedplayermoves/plasmagun_fire.mb -range 53 62 -dest models/md5/characters/npcs/playermoves/plasmagun_fire1 + anim models/characters/male_npc/cycles/tweakedplayermoves/plasmagun_fire_down.mb -range 53 62 -dest models/md5/characters/npcs/playermoves/plasmagun_fire_down + + anim models/characters/male_npc/cycles/tweakedplayermoves/plasmagun_fire.mb -range 67 79 -dest models/md5/characters/npcs/playermoves/plasmagun_fire2 + anim models/characters/male_npc/cycles/tweakedplayermoves/plasmagun_fire.mb -range 80 92 -dest models/md5/characters/npcs/playermoves/plasmagun_fire3 + + anim models/characters/male_npc/cycles/tweakedplayermoves/rocketlauncher_idle_down.mb -dest models/md5/characters/npcs/playermoves/rocketlauncher_idle_down + anim models/characters/male_npc/cycles/tweakedplayermoves/rocketlauncher_idle.mb -dest models/md5/characters/npcs/playermoves/rocketlauncher_idle + anim models/characters/male_npc/cycles/tweakedplayermoves/rocketlauncher_idle_up.mb -dest models/md5/characters/npcs/playermoves/rocketlauncher_idle_up + + anim models/characters/male_npc/cycles/tweakedplayermoves/rocketlauncher_aim_up.mb -dest models/md5/characters/npcs/playermoves/rocketlauncher_aim_up + anim models/characters/male_npc/cycles/tweakedplayermoves/rocketlauncher_aim.mb -dest models/md5/characters/npcs/playermoves/rocketlauncher_aim + anim models/characters/male_npc/cycles/tweakedplayermoves/rocketlauncher_aim_down.mb -dest models/md5/characters/npcs/playermoves/rocketlauncher_aim_down + + anim models/characters/male_npc/cycles/tweakedplayermoves/rocketlauncher_fire_up.mb -dest models/md5/characters/npcs/playermoves/rocketlauncher_fire_up + anim models/characters/male_npc/cycles/tweakedplayermoves/rocketlauncher_fire.mb -dest models/md5/characters/npcs/playermoves/rocketlauncher_fire + anim models/characters/male_npc/cycles/tweakedplayermoves/rocketlauncher_fire_down.mb -dest models/md5/characters/npcs/playermoves/rocketlauncher_fire_down + anim models/characters/male_npc/cycles/tweakedplayermoves/rocketlauncher_reload.mb -dest models/md5/characters/npcs/playermoves/rocketlauncher_reload + + anim models/characters/male_npc/cycles/tweakedplayermoves/bfg_idle_up.mb -dest models/md5/characters/npcs/playermoves/bfg_idle_up + anim models/characters/male_npc/cycles/tweakedplayermoves/bfg_idle.mb -dest models/md5/characters/npcs/playermoves/bfg_idle + anim models/characters/male_npc/cycles/tweakedplayermoves/bfg_idle_down.mb -dest models/md5/characters/npcs/playermoves/bfg_idle_down + anim models/characters/male_npc/cycles/tweakedplayermoves/bfg_aim_up.mb -dest models/md5/characters/npcs/playermoves/bfg_aim_up + anim models/characters/male_npc/cycles/tweakedplayermoves/bfg_aim.mb -dest models/md5/characters/npcs/playermoves/bfg_aim + anim models/characters/male_npc/cycles/tweakedplayermoves/bfg_aim_down.mb -dest models/md5/characters/npcs/playermoves/bfg_aim_down + anim models/characters/male_npc/cycles/tweakedplayermoves/bfg_fire_up.mb -range 1 140 -dest models/md5/characters/npcs/playermoves/bfg_startfire_up + anim models/characters/male_npc/cycles/tweakedplayermoves/bfg_fire_up.mb -range 141 167 -dest models/md5/characters/npcs/playermoves/bfg_fire_up + anim models/characters/male_npc/cycles/tweakedplayermoves/bfg_fire.mb -range 1 140 -dest models/md5/characters/npcs/playermoves/bfg_startfire + anim models/characters/male_npc/cycles/tweakedplayermoves/bfg_fire.mb -range 141 167 -dest models/md5/characters/npcs/playermoves/bfg_fire + anim models/characters/male_npc/cycles/tweakedplayermoves/bfg_fire_down.mb -range 1 140 -dest models/md5/characters/npcs/playermoves/bfg_startfire_down + anim models/characters/male_npc/cycles/tweakedplayermoves/bfg_fire_down.mb -range 141 167 -dest models/md5/characters/npcs/playermoves/bfg_fire_down + + anim models/characters/male_npc/cycles/tweakedplayermoves/bfg_reload.mb -dest models/md5/characters/npcs/playermoves/bfg_reload + + anim models/characters/male_npc/cycles/tweakedplayermoves/chaingun_idle_up.mb -dest models/md5/characters/npcs/playermoves/chaingun_idle_up + anim models/characters/male_npc/cycles/tweakedplayermoves/chaingun_idle.mb -dest models/md5/characters/npcs/playermoves/chaingun_idle + anim models/characters/male_npc/cycles/tweakedplayermoves/chaingun_idle_down.mb -dest models/md5/characters/npcs/playermoves/chaingun_idle_down + anim models/characters/male_npc/cycles/tweakedplayermoves/chaingun_aim_up.mb -dest models/md5/characters/npcs/playermoves/chaingun_aim_up + anim models/characters/male_npc/cycles/tweakedplayermoves/chaingun_aim.mb -dest models/md5/characters/npcs/playermoves/chaingun_aim + anim models/characters/male_npc/cycles/tweakedplayermoves/chaingun_aim_down.mb -dest models/md5/characters/npcs/playermoves/chaingun_aim_down + anim models/characters/male_npc/cycles/tweakedplayermoves/chaingun_fire_up.mb -dest models/md5/characters/npcs/playermoves/chaingun_fire_up + anim models/characters/male_npc/cycles/tweakedplayermoves/chaingun_fire.mb -dest models/md5/characters/npcs/playermoves/chaingun_fire + anim models/characters/male_npc/cycles/tweakedplayermoves/chaingun_fire_down.mb-dest models/md5/characters/npcs/playermoves/chaingun_fire_down + anim models/characters/male_npc/cycles/tweakedplayermoves/chaingun_reload.mb -dest models/md5/characters/npcs/playermoves/chaingun_reload + + anim models/characters/male_npc/cycles/tweakedplayermoves/soulcube_idle_up.mb -dest models/md5/characters/npcs/playermoves/soulcube_idle_up + anim models/characters/male_npc/cycles/tweakedplayermoves/soulcube_idle.mb -dest models/md5/characters/npcs/playermoves/soulcube_idle + anim models/characters/male_npc/cycles/tweakedplayermoves/soulcube_idle_down.mb -dest models/md5/characters/npcs/playermoves/soulcube_idle_down + anim models/characters/male_npc/cycles/tweakedplayermoves/soulcube_fire.mb -dest models/md5/characters/npcs/playermoves/soulcube_fire + + +} + +/*********************************************************************** + + single player model + +***********************************************************************/ + +model model_sp_marine { + skin skins/characters/player/greenmarine.skin + + offset ( 0 0 1 ) + + mesh models/md5/characters/npcs/playermoves/spplayer.md5mesh + + channel torso ( *Waist ) + channel legs ( *origin -*Waist SPINNER eyecontrol) + + anim af_pose models/md5/characters/npcs/playermoves/initial.md5anim + anim ik_pose models/md5/characters/npcs/playermoves/initial.md5anim + anim initial models/md5/characters/npcs/playermoves/initial.md5anim + + anim teleport models/md5/characters/npcs/playermoves/teleportin.md5anim + anim exit models/md5/characters/npcs/playermoves/exit_teleporter.md5anim + + anim idle models/md5/characters/npcs/playermoves/fists_idle.md5anim + anim crouch_down models/md5/characters/npcs/playermoves/crouch_down.md5anim + anim crouch models/md5/characters/npcs/playermoves/crouch.md5anim + anim crouch_up models/md5/characters/npcs/playermoves/crouch_up.md5anim + anim crouch_walk models/md5/characters/npcs/playermoves/crouch_walk.md5anim + anim crouch_walk_backwards models/md5/characters/npcs/playermoves/crouch_walk_back.md5anim + + anim walk models/md5/characters/npcs/playermoves/jog.md5anim { + frame 2 leftfoot + frame 11 rightfoot + } + anim walk_backwards models/md5/characters/npcs/playermoves/jog_back.md5anim { + frame 6 rightfoot + frame 15 leftfoot + } + + anim walk_strafe_left models/md5/characters/npcs/playermoves/walk_strafe_left.md5anim { + frame 4 rightfoot + frame 11 leftfoot + frame 17 rightfoot + frame 25 leftfoot + } + + anim walk_strafe_right models/md5/characters/npcs/playermoves/walk_strafe_right.md5anim { + frame 3 rightfoot + frame 10 leftfoot + frame 17 rightfoot + frame 25 leftfoot + } + + + //anim run_forward models/md5/characters/npcs/playermoves/newrun.md5anim + //{ + // frame 10 rightfoot + // frame 19 leftfoot + //} + + anim run_forward models/md5/characters/npcs/playermoves/run.md5anim { + frame 8 leftfoot + frame 17 rightfoot + } + + anim run_backwards models/md5/characters/npcs/playermoves/run_backwards_270.md5anim { + prevent_idle_override + frame 7 rightfoot + frame 14 leftfoot + frame 21 rightfoot + frame 27 leftfoot + } + anim run_strafe_left models/md5/characters/npcs/playermoves/run_strafe_left.md5anim { + prevent_idle_override + frame 4 rightfoot + frame 7 leftfoot + frame 18 rightfoot + frame 21 leftfoot + } + anim run_strafe_right models/md5/characters/npcs/playermoves/run_strafe_right.md5anim { + prevent_idle_override + frame 5 leftfoot + frame 8 rightfoot + frame 18 leftfoot + frame 20 rightfoot + } + anim jump models/md5/characters/npcs/playermoves/walkjump1.md5anim { + prevent_idle_override + frame 1 sound_body player_sounds_jump_small + } + anim run_jump models/md5/characters/npcs/playermoves/walkjump1.md5anim { + prevent_idle_override + frame 1 sound_body player_sounds_jump + } + anim soft_land models/md5/characters/npcs/playermoves/soft_land.md5anim { + prevent_idle_override + frame 1 sound_voice2 snd_land_soft + frame 1 leftfoot + frame 3 rightfoot + } + anim hard_land models/md5/characters/npcs/playermoves/hard_land.md5anim { + prevent_idle_override + frame 1 sound_voice2 snd_land_hard + frame 1 leftfoot + frame 3 rightfoot + } + anim fall models/md5/characters/npcs/playermoves/fall.md5anim { + prevent_idle_override + } + anim turn_left models/md5/characters/npcs/playermoves/turn_left.md5anim { + prevent_idle_override + } + anim turn_right models/md5/characters/npcs/playermoves/turn_right.md5anim { + prevent_idle_override + } + anim pain models/md5/characters/npcs/playermoves/painchest.md5anim { + prevent_idle_override + } + anim pain_head models/md5/characters/npcs/playermoves/painhead.md5anim { + prevent_idle_override + } + + anim pain_right_arm models/md5/characters/npcs/playermoves/painrightarm.md5anim { + prevent_idle_override + } + + anim pain_left_arm models/md5/characters/npcs/playermoves/painleftarm.md5anim { + prevent_idle_override + } + + anim pain_chest models/md5/characters/npcs/playermoves/painchest.md5anim { + prevent_idle_override + } + + anim pda_raise models/md5/characters/npcs/playermoves/raisepda.md5anim + anim pda_idle models/md5/characters/npcs/playermoves/pda_idle.md5anim + anim pda_lower models/md5/characters/npcs/playermoves/lowerpda.md5anim + + anim fists_raise models/md5/characters/npcs/playermoves/raisewep.md5anim + anim fists_idle models/md5/characters/npcs/playermoves/fists_idle_down.md5anim, models/md5/characters/npcs/playermoves/fists_idle.md5anim, models/md5/characters/npcs/playermoves/fists_idle_up.md5anim + anim fists_aim models/md5/characters/npcs/playermoves/fists_aim_down.md5anim, models/md5/characters/npcs/playermoves/fists_aim.md5anim, models/md5/characters/npcs/playermoves/fists_aim_up.md5anim + anim fists_punch_right models/md5/characters/npcs/playermoves/fists_punch_down1.md5anim, models/md5/characters/npcs/playermoves/fists_punch1.md5anim, models/md5/characters/npcs/playermoves/fists_punch_up1.md5anim + anim fists_punch_left models/md5/characters/npcs/playermoves/fists_punch_down2.md5anim, models/md5/characters/npcs/playermoves/fists_punch2.md5anim, models/md5/characters/npcs/playermoves/fists_punch_up2.md5anim + anim fists_lower models/md5/characters/npcs/playermoves/lowerwep.md5anim + + anim pistol_raise models/md5/characters/npcs/playermoves/raisewep.md5anim + anim pistol_idle models/md5/characters/npcs/playermoves/pistol_idle_down.md5anim, models/md5/characters/npcs/playermoves/pistol_idle.md5anim, models/md5/characters/npcs/playermoves/pistol_idle_up.md5anim + anim pistol_aim models/md5/characters/npcs/playermoves/pistol_aim_down.md5anim, models/md5/characters/npcs/playermoves/pistol_aim.md5anim, models/md5/characters/npcs/playermoves/pistol_aim_up.md5anim + anim pistol_fire1 models/md5/characters/npcs/playermoves/pistol_fire_down.md5anim, models/md5/characters/npcs/playermoves/pistol_fire1.md5anim, models/md5/characters/npcs/playermoves/pistol_fire_up.md5anim + anim pistol_reload models/md5/characters/npcs/playermoves/pistol_reload.md5anim + anim pistol_lower models/md5/characters/npcs/playermoves/lowerwep.md5anim + + anim shotgun_raise models/md5/characters/npcs/playermoves/raisewep.md5anim + + anim shotgun_idle models/md5/characters/npcs/playermoves/shotgun_idle_down.md5anim, models/md5/characters/npcs/playermoves/shotgun_idle.md5anim, models/md5/characters/npcs/playermoves/shotgun_idle_up.md5anim + anim shotgun_aim models/md5/characters/npcs/playermoves/shotgun_aim_down.md5anim, models/md5/characters/npcs/playermoves/shotgun_aim.md5anim, models/md5/characters/npcs/playermoves/shotgun_aim_up.md5anim + anim shotgun_fire1 models/md5/characters/npcs/playermoves/shotgun_fire_down.md5anim, models/md5/characters/npcs/playermoves/shotgun_fire1.md5anim, models/md5/characters/npcs/playermoves/shotgun_fire_up.md5anim + anim shotgun_reload_start models/md5/characters/npcs/playermoves/shotgun_reload_start.md5anim + anim shotgun_reload_loop models/md5/characters/npcs/playermoves/shotgun_reload_loop1.md5anim + anim shotgun_reload_end models/md5/characters/npcs/playermoves/shotgun_reload_end.md5anim + anim shotgun_lower models/md5/characters/npcs/playermoves/lowerwep.md5anim + + anim machinegun_raise models/md5/characters/npcs/playermoves/raisewep.md5anim + anim machinegun_idle models/md5/characters/npcs/playermoves/machinegun_idle_down.md5anim, models/md5/characters/npcs/playermoves/machinegun_idle.md5anim, models/md5/characters/npcs/playermoves/machinegun_idle_up.md5anim + anim machinegun_aim models/md5/characters/npcs/playermoves/machinegun_aim_down.md5anim, models/md5/characters/npcs/playermoves/machinegun_aim.md5anim, models/md5/characters/npcs/playermoves/machinegun_aim_up.md5anim + anim machinegun_fire1 models/md5/characters/npcs/playermoves/machinegun_fire_down.md5anim, models/md5/characters/npcs/playermoves/machinegun_fire1.md5anim, models/md5/characters/npcs/playermoves/machinegun_fire_up.md5anim + anim machinegun_reload models/md5/characters/npcs/playermoves/machinegun_reload.md5anim + anim machinegun_lower models/md5/characters/npcs/playermoves/lowerwep.md5anim + + anim chaingun_raise models/md5/characters/npcs/playermoves/raisewep.md5anim + anim chaingun_idle models/md5/characters/npcs/playermoves/chaingun_idle_down.md5anim, models/md5/characters/npcs/playermoves/chaingun_idle.md5anim, models/md5/characters/npcs/playermoves/chaingun_idle_up.md5anim + anim chaingun_aim models/md5/characters/npcs/playermoves/chaingun_idle_down.md5anim, models/md5/characters/npcs/playermoves/chaingun_idle.md5anim, models/md5/characters/npcs/playermoves/chaingun_idle_up.md5anim + anim chaingun_fire models/md5/characters/npcs/playermoves/chaingun_fire_down.md5anim, models/md5/characters/npcs/playermoves/chaingun_fire.md5anim, models/md5/characters/npcs/playermoves/chaingun_fire_up.md5anim + anim chaingun_reload models/md5/characters/npcs/playermoves/chaingun_reload.md5anim + anim chaingun_lower models/md5/characters/npcs/playermoves/lowerwep.md5anim + + + anim plasmagun_raise models/md5/characters/npcs/playermoves/raisewep.md5anim + anim plasmagun_idle models/md5/characters/npcs/playermoves/plasmagun_idle_down.md5anim, models/md5/characters/npcs/playermoves/plasmagun_idle.md5anim, models/md5/characters/npcs/playermoves/plasmagun_idle_up.md5anim + anim plasmagun_aim models/md5/characters/npcs/playermoves/plasmagun_aim_down.md5anim, models/md5/characters/npcs/playermoves/plasmagun_aim.md5anim, models/md5/characters/npcs/playermoves/plasmagun_aim_up.md5anim + anim plasmagun_fire1 models/md5/characters/npcs/playermoves/plasmagun_fire_down.md5anim, models/md5/characters/npcs/playermoves/plasmagun_fire1.md5anim, models/md5/characters/npcs/playermoves/plasmagun_fire_up.md5anim + + anim plasmagun_reload models/md5/characters/npcs/playermoves/machinegun_reload.md5anim + anim plasmagun_lower models/md5/characters/npcs/playermoves/lowerwep.md5anim + + anim handgrenade_raise models/md5/characters/npcs/playermoves/raisewep.md5anim + anim handgrenade_idle models/md5/characters/npcs/playermoves/nade_idle_down.md5anim, models/md5/characters/npcs/playermoves/nade_idle.md5anim, models/md5/characters/npcs/playermoves/nade_idle_up.md5anim + anim handgrenade_aim models/md5/characters/npcs/playermoves/nade_idle_down.md5anim, models/md5/characters/npcs/playermoves/nade_idle.md5anim, models/md5/characters/npcs/playermoves/nade_idle_up.md5anim + anim handgrenade_throw_quick models/md5/characters/npcs/playermoves/nade_quickthrow_down.md5anim, models/md5/characters/npcs/playermoves/nade_quickthrow.md5anim, models/md5/characters/npcs/playermoves/nade_quickthrow_up.md5anim + anim handgrenade_throw_start models/md5/characters/npcs/playermoves/nade_throwstart_down.md5anim, models/md5/characters/npcs/playermoves/nade_throwstart.md5anim, models/md5/characters/npcs/playermoves/nade_throwstart_up.md5anim + anim handgrenade_throw models/md5/characters/npcs/playermoves/nade_throw_down.md5anim, models/md5/characters/npcs/playermoves/nade_throw.md5anim, models/md5/characters/npcs/playermoves/nade_throw_up.md5anim + + anim handgrenade_startfire models/md5/characters/npcs/playermoves/nade_throwstart_down.md5anim, models/md5/characters/npcs/playermoves/nade_throwstart.md5anim, models/md5/characters/npcs/playermoves/nade_throwstart_up.md5anim + anim handgrenade_fire models/md5/characters/npcs/playermoves/nade_throw_down.md5anim, models/md5/characters/npcs/playermoves/nade_throw.md5anim, models/md5/characters/npcs/playermoves/nade_throw_up.md5anim + anim handgrenade_lower models/md5/characters/npcs/playermoves/lowerwep.md5anim + + anim chainsaw_raise models/md5/characters/npcs/playermoves/chainsaw_raise.md5anim + anim chainsaw_idle models/md5/characters/npcs/playermoves/chainsaw_idle_down.md5anim, models/md5/characters/npcs/playermoves/chainsaw_idle.md5anim, models/md5/characters/npcs/playermoves/chainsaw_idle_up.md5anim + anim chainsaw_aim models/md5/characters/npcs/playermoves/chainsaw_idle_down.md5anim, models/md5/characters/npcs/playermoves/chainsaw_idle.md5anim, models/md5/characters/npcs/playermoves/chainsaw_idle_up.md5anim + anim chainsaw_fire models/md5/characters/npcs/playermoves/chainsaw_fire_down.md5anim, models/md5/characters/npcs/playermoves/chainsaw_fire.md5anim, models/md5/characters/npcs/playermoves/chainsaw_fire_up.md5anim + anim chainsaw_lower models/md5/characters/npcs/playermoves/lowerwep.md5anim + + anim rocketlauncher_raise models/md5/characters/npcs/playermoves/raisewep_left.md5anim + anim rocketlauncher_idle models/md5/characters/npcs/playermoves/rocketlauncher_idle_down.md5anim, models/md5/characters/npcs/playermoves/rocketlauncher_idle.md5anim, models/md5/characters/npcs/playermoves/rocketlauncher_idle_up.md5anim + anim rocketlauncher_aim models/md5/characters/npcs/playermoves/rocketlauncher_aim_down.md5anim, models/md5/characters/npcs/playermoves/rocketlauncher_aim.md5anim, models/md5/characters/npcs/playermoves/rocketlauncher_aim_up.md5anim + anim rocketlauncher_fire models/md5/characters/npcs/playermoves/rocketlauncher_fire_down.md5anim, models/md5/characters/npcs/playermoves/rocketlauncher_fire.md5anim, models/md5/characters/npcs/playermoves/rocketlauncher_fire_up.md5anim + anim rocketlauncher_reload models/md5/characters/npcs/playermoves/rocketlauncher_reload.md5anim + anim rocketlauncher_lower models/md5/characters/npcs/playermoves/lowerwep_left.md5anim + + anim flashlight_raise models/md5/characters/npcs/playermoves/raisewep.md5anim + anim flashlight_idle models/md5/characters/npcs/playermoves/flashlight_aim_down.md5anim, models/md5/characters/npcs/playermoves/flashlight_idle.md5anim, models/md5/characters/npcs/playermoves/flashlight_aim_up.md5anim + anim flashlight_lower models/md5/characters/npcs/playermoves/lowerwep.md5anim + anim flashlight_aim models/md5/characters/npcs/playermoves/flashlight_aim_down.md5anim, models/md5/characters/npcs/playermoves/flashlight_idle.md5anim, models/md5/characters/npcs/playermoves/flashlight_aim_up.md5anim + anim flashlight_fire1 models/md5/characters/npcs/playermoves/flashlight_swing1_down.md5anim, models/md5/characters/npcs/playermoves/flashlight_swing1.md5anim, models/md5/characters/npcs/playermoves/flashlight_swing1_up.md5anim + anim flashlight_fire2 models/md5/characters/npcs/playermoves/flashlight_swing2_down.md5anim, models/md5/characters/npcs/playermoves/flashlight_swing2.md5anim, models/md5/characters/npcs/playermoves/flashlight_swing2_up.md5anim + + + anim bfg_raise models/md5/characters/npcs/playermoves/raisewep.md5anim + anim bfg_idle models/md5/characters/npcs/playermoves/bfg_idle_down.md5anim, models/md5/characters/npcs/playermoves/bfg_idle.md5anim, models/md5/characters/npcs/playermoves/bfg_idle_up.md5anim + anim bfg_aim models/md5/characters/npcs/playermoves/bfg_aim_down.md5anim, models/md5/characters/npcs/playermoves/bfg_aim.md5anim, models/md5/characters/npcs/playermoves/bfg_aim_up.md5anim + anim bfg_startfire models/md5/characters/npcs/playermoves/bfg_startfire_down.md5anim, models/md5/characters/npcs/playermoves/bfg_startfire.md5anim, models/md5/characters/npcs/playermoves/bfg_startfire_up.md5anim + anim bfg_fire models/md5/characters/npcs/playermoves/bfg_fire_down.md5anim, models/md5/characters/npcs/playermoves/bfg_fire.md5anim, models/md5/characters/npcs/playermoves/bfg_fire_up.md5anim + anim bfg_reload models/md5/characters/npcs/playermoves/bfg_reload.md5anim + anim bfg_lower models/md5/characters/npcs/playermoves/lowerwep.md5anim + + anim soulcube_raise models/md5/characters/npcs/playermoves/raisewep.md5anim + anim soulcube_idle models/md5/characters/npcs/playermoves/soulcube_idle_down.md5anim, models/md5/characters/npcs/playermoves/soulcube_idle.md5anim, models/md5/characters/npcs/playermoves/soulcube_idle_up.md5anim + anim soulcube_aim models/md5/characters/npcs/playermoves/soulcube_idle_down.md5anim, models/md5/characters/npcs/playermoves/soulcube_idle.md5anim, models/md5/characters/npcs/playermoves/soulcube_idle_up.md5anim + anim soulcube_fire models/md5/characters/npcs/playermoves/soulcube_fire.md5anim, models/md5/characters/npcs/playermoves/soulcube_fire.md5anim, models/md5/characters/npcs/playermoves/soulcube_fire.md5anim + anim soulcube_lower models/md5/characters/npcs/playermoves/lowerwep.md5anim +} + +/*********************************************************************** + + player_base + + shared by player_doommarine and player_doommarine_mp + +***********************************************************************/ + +entityDef player_base { + "spawnclass" "idPlayer" + "scriptobject" "ai" + + "hud" "guis/hud.gui" + "mphud" "guis/mphud.gui" + "cursor" "guis/cursor.gui" + + "blink_min" "2.5" + "blink_max" "8.0" + + // weapon slots + "def_weapon0" "weapon_fists" + "weapon0_best" "0" // whether weapon should be chosen when out of ammo + "weapon0_cycle" "1" // whether weapon should be selected when using next/prev weapon + "weapon0_toggle" "0" // whether selecting weapon twice switches between current and previous weapons + "weapon0_allowempty" "1" // whether you can select the weapon when it's out of ammo + + "def_weapon1" "weapon_pistol" + "weapon1_best" "1" + "weapon1_cycle" "1" + "weapon1_toggle" "0" + "weapon1_allowempty" "1" + + "def_weapon2" "weapon_shotgun" + "weapon2_best" "1" + "weapon2_cycle" "1" + "weapon2_toggle" "0" + "weapon2_allowempty" "1" + + "def_weapon3" "weapon_machinegun" + "weapon3_best" "1" + "weapon3_cycle" "1" + "weapon3_toggle" "0" + "weapon3_allowempty" "1" + + "def_weapon4" "weapon_chaingun" + "weapon4_best" "1" + "weapon4_cycle" "1" + "weapon4_toggle" "0" + "weapon4_allowempty" "1" + + "def_weapon5" "weapon_handgrenade" + "weapon5_best" "0" + "weapon5_cycle" "1" + "weapon5_toggle" "0" + "weapon5_allowempty" "0" + + "def_weapon6" "weapon_plasmagun" + "weapon6_best" "1" + "weapon6_cycle" "1" + "weapon6_toggle" "0" + "weapon6_allowempty" "1" + + "def_weapon7" "weapon_rocketlauncher" + "weapon7_best" "0" + "weapon7_cycle" "1" + "weapon7_toggle" "0" + "weapon7_allowempty" "1" + + "def_weapon8" "weapon_bfg" + "weapon8_best" "0" + "weapon8_cycle" "1" + "weapon8_toggle" "0" + "weapon8_allowempty" "1" + + "def_weapon9" "weapon_soulcube" + "weapon9_best" "0" + "weapon9_cycle" "1" + "weapon9_toggle" "1" + "weapon9_allowempty" "1" + + "def_weapon10" "weapon_chainsaw" + "weapon10_best" "0" + "weapon10_cycle" "1" + "weapon10_toggle" "0" + "weapon10_allowempty" "1" + + "def_weapon11" "weapon_flashlight" + "weapon11_best" "0" + "weapon11_cycle" "1" + "weapon11_toggle" "1" + "weapon11_allowempty" "1" + + "def_weapon12" "weapon_pda" + "weapon12_best" "0" + "weapon12_cycle" "0" + "weapon12_toggle" "0" + "weapon12_allowempty" "1" + + "def_weapon13" "" + "weapon13_best" "0" + "weapon13_cycle" "0" + "weapon13_toggle" "0" + "weapon13_allowempty" "0" + + "def_weapon14" "" + "weapon14_best" "0" + "weapon14_cycle" "0" + "weapon14_toggle" "0" + "weapon14_allowempty" "0" + + "def_weapon15" "" + "weapon15_best" "0" + "weapon15_cycle" "0" + "weapon15_toggle" "0" + "weapon15_allowempty" "0" + + "max_ammo_shells" "320" + "max_ammo_bullets" "360" + "max_ammo_rockets" "96" + "max_ammo_cells" "500" + "max_ammo_grenades" "50" + "max_ammo_souls" "5" // number of kills required to charge the soul cube + "max_ammo_bfg" "32" + "max_ammo_clip" "600" + "max_ammo_belt" "600" + + // default weapons + // seperate multiple weapons with commas (no spaces). + // NOTE: default ammo must be specified explicitly. + "weapon" "weapon_fists,weapon_pistol,weapon_flashlight,weapon_pda" + "weapon_nightmare" "weapon_fists,weapon_pistol,weapon_flashlight,weapon_pda,weapon_soulcube" + "current_weapon" "0" + + "pm_jumpheight" "48" + "pm_stepsize" "16" + "pm_crouchspeed" "80" + "pm_walkspeed" "140" + "pm_runspeed" "220" + "pm_noclipspeed" "200" + "pm_minviewpitch" "-89" // looking up + "pm_maxviewpitch" "89" // looking down + "pm_stamina" "24" + "pm_staminathreshold" "4" + "pm_staminarate" "0.75" + "pm_crouchheight" "38" + "pm_crouchviewheight" "32" + + "pm_normalheight" "74" + "pm_normalviewheight" "68" + "pm_deadheight" "20" + "pm_deadviewheight" "10" + "pm_crouchrate" "0.87" + "pm_bboxwidth" "32" + "pm_crouchbob" "0.5" // ducked characters bob much faster + "pm_walkbob" "0.3" // walking bobs slow + "pm_runbob" "0.4" // faster speeds bob faster + "pm_modelview" "0" // 0 == normal, 1 == view inside model, 2 == view inside model when dead + "pain_delay" "0.5" // how long to wait before playing pain sound + "respawn_delay" "1.7" // minimum delay for respawning after death + + // stats + "health" "100" + "maxhealth" "100" + "stamina" "120" + "armor" "0" + "maxarmor" "125" + + // ammo + "ammo_shells" "0" + "ammo_bullets" "48" + "ammo_rockets" "0" + "ammo_cells" "0" + "ammo_grenades" "0" + "ammo_bfg" "0" + "ammo_clip" "0" + "ammo_belt" "0" + + // inventory items + "key_blue" "0" + "key_red" "0" + "data_linker" "0" + "pda" "0" + "video" "" + + "bleed" "0" + + "bone_focus" "headcontrol" + "bone_leftEye" "Leyeaim" + "bone_rightEye" "Reyeaim" + "bone_hips" "Hips" + "bone_chest" "Shoulders" // AI aim location + "bone_head" "headcontrol" // AI aim location + + "damage_zone head" "*loneckcontrol" + "damage_zone chest" "*Waist -*loneckcontrol" + "damage_zone left_arm" "*Luparm" + "damage_zone right_arm" "*Ruparm" + "damage_zone legs" "origin Body2" + "damage_scale head" "1" + + "ragdoll" "player_npcs" + + "gib" "1" + "def_dropGibItem" "moveable_item_head_pork" + "dropGibItemJoint" "Head" + "skin_dropGib" "skins/characters/player/marine_mp_death.skin" + + "def_dropGibItem2" "moveable_item_torso_pork" + "dropGibItem2Joint" "Chest" + + "def_dropGibItem3" "moveable_item_rup_arm_pork" + "dropGibItem3Joint" "Ruparm" + + "def_dropGibItem4" "moveable_item_left_waist_pork" + "dropGibItem4Joint" "Waist" + + "def_dropGibItem5" "moveable_item_lup_leg_pork" + "dropGibItem5Joint" "Lupleg" + + "def_dropItem6" "moveable_item_rup_leg_pork" + "dropGibItem6Joint" "Rupleg" + + "def_dropGibItem7" "moveable_item_rup2_leg_pork" + "dropGibItem7Joint" "Rloleg" + + "def_dropGibItem8" "moveable_item_pelvis_pork" + "dropGibItem8Joint" "Hips" + + "ik_numLegs" "2" + "ik_footSize" "4" + "ik_minWaistAnkleDist" "16" + "ik_waist" "Body2" + "ik_hip1" "Lupleg" + "ik_hip2" "Rupleg" + "ik_knee1" "Lloleg" + "ik_knee2" "Rloleg" + "ik_ankle1" "Lankle_r" + "ik_ankle2" "Rankle_r" + "ik_dir1" "Lknee" + "ik_dir2" "Rknee" + "ik_foot1" "Lball_r" + "ik_foot2" "Rball_r" + + "ik_numArms" "0" + "ik_shoulder1" "Ruparm" + "ik_shoulder2" "Luparm" + "ik_elbow1" "Rloarm" + "ik_elbow2" "Lloarm" + "ik_hand1" "Rfings2" + "ik_hand2" "Lfings2" + + "snd_stepladder" "player_climb_ladder" + "snd_weapon_switch" "player_sounds_weapon_switch" + "snd_footstep" "player_sounds_footstep" + "snd_death" "player_sounds_death" + "snd_fall" "player_sounds_fall" + "snd_pain_small" "player_sounds_pain_small" + "snd_pain_medium" "player_sounds_pain_medium" + "snd_pain_large" "player_sounds_pain_big" + "snd_pain_huge" "player_sounds_pain_huge" + "snd_land_soft" "player_sounds_fastlanding" + "snd_land_hard" "player_sounds_thud" + "snd_objectiveup" "player_sounds_objectiveup" + "snd_objectivedown" "player_sounds_objectivedown" + "snd_doublevision" "player_sounds_doublevision" + "snd_thud" "player_sounds_thud" + "snd_heartbeat" "player_sounds_heartbeat" + "snd_heartbeat_dying" "player_sounds_heartbeat_dying" + "snd_skipcinematic" "player_sounds_skipcinematic" + "snd_guienter" "player_sounds_guienter" + "snd_guiexit" "player_sounds_guiexit" + "snd_soulcube_ready" "soulcube_energize" + "snd_healthpulse" "soulcube_givehealth" + "snd_hitArmor" "player_sounds_hitArmor" + "snd_hitFlesh" "player_sounds_hitFlesh" + "snd_airGasp" "player_sounds_airGasp" + "snd_noAir" "player_sounds_noAir" + "snd_berserk_third" "player_sounds_berserk" + "snd_teleport_exit" "player_sounds_teleportExit" + "snd_teleport_start" "player_sounds_teleportStart" + "snd_burn" "sizzle" + "snd_invisibility" "invisibility_pickup" + "snd_megahealth" "megasphere_pickup" + "snd_healthtake" "player_takehealth" +} + +/*********************************************************************** + + player_doommarine + + single player model + +***********************************************************************/ + +entityDef player_doommarine { + "inherit" "player_base" + "model" "model_sp_marine" + "snd_decompress" "sound/air_and_vents/decompress.wav" + "snd_recompress" "sound/air_and_vents/recompress.wav" + "snd_airless" "player_sounds_noAir" + "def_head" "head_player" + "head_joint" "Shoulders" + "copy_joint neckcontrol" "neckcontrol" + "copy_joint headcontrol" "headcontrol" + "copy_joint_world eyecontrol" "eyecontrol" + "text_infoTitle" "#str_02908" + "text_noPDA" "#str_02034" + "text_PDANeeded" "#str_02909" + "text_firstPDA" "#str_02035" +} diff --git a/base/maps/game/admin/textures/objective1.tga b/base/maps/game/admin/textures/objective1.tga index eb2e9ba2..af180bdf 100644 Binary files a/base/maps/game/admin/textures/objective1.tga and b/base/maps/game/admin/textures/objective1.tga differ diff --git a/base/maps/game/commoutside/textures/objective2.tga b/base/maps/game/commoutside/textures/objective2.tga index 089c0082..29969aff 100644 Binary files a/base/maps/game/commoutside/textures/objective2.tga and b/base/maps/game/commoutside/textures/objective2.tga differ diff --git a/base/maps/game/enpro/textures/objective1.tga b/base/maps/game/enpro/textures/objective1.tga index a503a40e..97b1f748 100644 Binary files a/base/maps/game/enpro/textures/objective1.tga and b/base/maps/game/enpro/textures/objective1.tga differ diff --git a/base/maps/game/mars_city1/textures/objective1.tga b/base/maps/game/mars_city1/textures/objective1.tga index 349c59a9..ca8eaf96 100644 Binary files a/base/maps/game/mars_city1/textures/objective1.tga and b/base/maps/game/mars_city1/textures/objective1.tga differ diff --git a/base/maps/game/mars_city1/textures/objective2.tga b/base/maps/game/mars_city1/textures/objective2.tga index c66a4405..883872a4 100644 Binary files a/base/maps/game/mars_city1/textures/objective2.tga and b/base/maps/game/mars_city1/textures/objective2.tga differ diff --git a/base/maps/game/mars_city2/textures/objective1.tga b/base/maps/game/mars_city2/textures/objective1.tga index 67897eaa..e27514c6 100644 Binary files a/base/maps/game/mars_city2/textures/objective1.tga and b/base/maps/game/mars_city2/textures/objective1.tga differ diff --git a/base/maps/game/mars_city2/textures/objective2.tga b/base/maps/game/mars_city2/textures/objective2.tga index bc1b8d05..60a8f89f 100644 Binary files a/base/maps/game/mars_city2/textures/objective2.tga and b/base/maps/game/mars_city2/textures/objective2.tga differ diff --git a/base/maps/game/mars_city2/textures/objective3.tga b/base/maps/game/mars_city2/textures/objective3.tga index 23ebd1eb..a9748e97 100644 Binary files a/base/maps/game/mars_city2/textures/objective3.tga and b/base/maps/game/mars_city2/textures/objective3.tga differ diff --git a/base/script/ai_base.script b/base/script/ai_base.script new file mode 100644 index 00000000..97e501e6 --- /dev/null +++ b/base/script/ai_base.script @@ -0,0 +1,73 @@ + + +// +// move types +// +#define MOVETYPE_DEAD 0 // no enemy tracking or steering. just runs physics and script. +#define MOVETYPE_ANIM 1 // movement based on animation deltas +#define MOVETYPE_SLIDE 2 // movement based on velocity. set speed using setFlySpeed. +#define MOVETYPE_FLY 3 // flying monsters. +#define MOVETYPE_STATIC 4 // no movement or gravity. + +// +// move results +// +#define MOVE_STATUS_DONE 0 // move succeeded, or not moving +#define MOVE_STATUS_MOVING 1 // move in progress +#define MOVE_STATUS_WAITING 2 // +#define MOVE_STATUS_DEST_NOT_FOUND 3 // destination doesn't exist +#define MOVE_STATUS_DEST_UNREACHABLE 4 // +#define MOVE_STATUS_BLOCKED_BY_WALL 5 +#define MOVE_STATUS_BLOCKED_BY_OBJECT 6 +#define MOVE_STATUS_BLOCKED_BY_ENEMY 7 +#define MOVE_STATUS_BLOCKED_BY_MONSTER 8 + +// +// talk states +// +#define TALK_NEVER 0 +#define TALK_DEAD 1 +#define TALK_OK 2 +#define TALK_BUSY 3 + +// AI has been moved to native +object ai { + void init(); + + boolean AI_TALK; + boolean AI_DAMAGE; + boolean AI_PAIN; + float AI_SPECIAL_DAMAGE; // value of "special_damage" on projectile + boolean AI_DEAD; + boolean AI_ENEMY_VISIBLE; + boolean AI_ENEMY_IN_FOV; + boolean AI_ENEMY_DEAD; + boolean AI_MOVE_DONE; + boolean AI_ONGROUND; + boolean AI_ACTIVATED; + boolean AI_FORWARD; + boolean AI_BACKWARD; + boolean AI_STRAFE_LEFT; + boolean AI_STRAFE_RIGHT; + boolean AI_ATTACK_HELD; + boolean AI_WEAPON_FIRED; + boolean AI_JUMP; + boolean AI_CROUCH; + boolean AI_ONLADDER; + boolean AI_HARDLANDING; + boolean AI_SOFTLANDING; + boolean AI_RUN; + boolean AI_RELOAD; + boolean AI_TELEPORT; + boolean AI_TURN_LEFT; + boolean AI_TURN_RIGHT; + boolean AI_DEST_UNREACHABLE; + boolean AI_BLOCKED; + boolean AI_HIT_ENEMY; + boolean AI_OBSTACLE_IN_PATH; + boolean AI_PUSHED; +}; + +void ai::init() { + +} \ No newline at end of file diff --git a/base/script/doom_main.script b/base/script/doom_main.script index f9e6d969..b18d0a31 100644 --- a/base/script/doom_main.script +++ b/base/script/doom_main.script @@ -13,42 +13,6 @@ This is the main script that is loaded before any level scripts load. #include "script/weapon_base.script" #include "script/ai_base.script" -// ai -#include "script/ai_monster_base.script" -#include "script/ai_monster_zombie_base.script" -#include "script/ai_monster_demon_archvile.script" -#include "script/ai_monster_demon_cherub.script" -#include "script/ai_monster_demon_hellknight.script" -#include "script/ai_monster_demon_imp.script" -#include "script/ai_monster_demon_maggot.script" -#include "script/ai_monster_demon_mancubus.script" -#include "script/ai_monster_demon_pinky.script" -#include "script/ai_monster_demon_revenant.script" -#include "script/ai_monster_demon_trite.script" -#include "script/ai_monster_demon_wraith.script" -#include "script/ai_monster_flying_lostsoul.script" -#include "script/ai_monster_flying_cacodemon.script" -#include "script/ai_monster_zombie.script" -#include "script/ai_monster_zombie_morgue.script" -#include "script/ai_monster_zombie_sawyer.script" -#include "script/ai_monster_zombie_bernie.script" -#include "script/ai_monster_zombie_commando_cgun.script" -#include "script/ai_monster_zombie_commando_tentacle.script" -#include "script/ai_monster_zombie_security_pistol.script" -#include "script/ai_monster_turret.script" -#include "script/ai_monster_boss_vagary.script" -#include "script/ai_monster_boss_cyberdemon.script" -#include "script/ai_monster_boss_guardian.script" -#include "script/ai_monster_boss_guardian_seeker.script" -#include "script/ai_monster_boss_sabaoth.script" -#include "script/ai_character.script" -#include "script/ai_character_prone.script" -#include "script/ai_character_sentry.script" -#include "script/ai_player.script" - -// map specific character scripts -#include "script/ai_alphalabs2_scientist1.script" - // map scripts #include "script/map_admin1.script" #include "script/map_alphalabs1.script" @@ -78,9 +42,6 @@ This is the main script that is loaded before any level scripts load. #include "script/map_mc_underground.script" #include "script/map_monorail.script" -// test scripts -#include "script/ai_follower.script" - void doom_main() { sys.print( "Entering doom_main()\n"); diff --git a/base/script/doom_util.script b/base/script/doom_util.script new file mode 100644 index 00000000..145d47e1 --- /dev/null +++ b/base/script/doom_util.script @@ -0,0 +1,389 @@ +/*********************************************************************** + +doom_util.script + +This defines utility functions for scripts + +***********************************************************************/ + +/* +================== +setShaderTime + +Frame command for setting the shader time to begin an effect. +================== +*/ +void setShaderTime( entity self ) { + self.setShaderParm( 4, -sys.getTime() ); +} + +/* +================== +clearSmoke + +Clears smoke particles on monsters +================== +*/ +void clearSmoke( entity self ) { + self.setSmokeVisibility( ALL_PARTICLES, 0 ); +} + +/* +================== +headlook_on + +Turns on Bone modification for looking. +================== +*/ +void headlook_on( entity self ) { + self.setBoneMod( true ); +} + +/* +================== +headlook_off + +Turns off Bone modification for looking. + +================== +*/ +void headlook_off( entity self ) { + self.setBoneMod( false ); +} + +/* +================== +overrideLegs + +Used to make monster attack anims use the full body +================== +*/ +void overrideLegs( entity self ) { + self.overrideAnim( ANIMCHANNEL_LEGS ); +} + +/* +================== +overrideTorso + +Used to make monster attack anims use the full body +================== +*/ +void overrideTorso( entity self ) { + self.overrideAnim( ANIMCHANNEL_TORSO ); +} + +/* +================== +waitForButtonPress + +Waits for the user to press a button +================== +*/ +void waitForButtonPress() { + float buttons; + + do { + buttons = $player1.getButtons(); + sys.wait( 0.01 ); + } while( !buttons ); +} + +/* +================== +abs + +Returns the absolute value of a number +================== +*/ +float abs( float value ) { + if ( value < 0 ) { + return value * -1; + } + + return value; +} + +/* +================== +unpause + +Utility function that works with onSignal to unpause a script +================== +*/ +void unpause() { +} + +/* +================== +anglemod360 + +Puts angles into the range of 0 to 360 +================== +*/ +vector anglemod360( vector ang ) { + while( ang_x < 0 ) { + ang_x += 360; + } + while( ang_x >= 360 ) { + ang_x -= 360; + } + while( ang_y < 0 ) { + ang_y += 360; + } + while( ang_y >= 360 ) { + ang_y -= 360; + } + while( ang_z < 0 ) { + ang_z += 360; + } + while( ang_z >= 360 ) { + ang_z -= 360; + } + + return ang; +} + +/* +================== +anglemod180 + +Puts angles into the range of -180 to 180 +================== +*/ +vector anglemod180( vector ang ) { + while( ang_x < -180 ) { + ang_x += 360; + } + while( ang_x >= 180 ) { + ang_x -= 360; + } + while( ang_y < -180 ) { + ang_y += 360; + } + while( ang_y >= 180 ) { + ang_y -= 360; + } + while( ang_z < -180 ) { + ang_z += 360; + } + while( ang_z >= 180 ) { + ang_z -= 360; + } + + return ang; +} + +/* +================== +delayRemoveThread + +Service thread for delayRemove. +================== +*/ +void delayRemoveThread( entity ent, float mytime ) { + sys.wait( mytime ); + ent.remove(); +} + +/* +================== +delayRemove + +Causes an entity to be removed after a specified amount of time. +================== +*/ +void delayRemove( entity ent, float mytime ) { + thread delayRemoveThread( ent, mytime ); +} + + +/* +================== +fadeOutEnt + +Causes a entity to fade to black +================== +*/ +void fadeOutEnt( entity ent, vector color, float totalTime ) { + float i; + vector c; + float frac; + float numTics; + + // convert to the total number of game tics + numTics = totalTime * sys.getTicsPerSecond(); + + for( i = 0; i < numTics; i++ ) { + frac = ( numTics - i ) / numTics; + c = color * frac; + ent.setColor( c_x, c_y, c_z ); + + // wait one game frame + sys.waitFrame(); + } + + // make sure we are set to exactly black + ent.setColor( 0, 0, 0 ); +} + +/* +================== +fadeInEnt + +Causes a entity to from black to color +================== +*/ +void fadeInEnt( entity ent, vector color, float totalTime ) { + float i; + vector c; + float frac; + float numTics; + + // convert to the total number of game tics + numTics = totalTime * sys.getTicsPerSecond(); + + for( i = 0; i < numTics; i++ ) { + frac = i / numTics; + c = color * frac; + ent.setColor( c_x, c_y, c_z ); + + // wait one game frame + sys.waitFrame(); + } + + // make sure we are set to exactly the color + ent.setColor( color_x, color_y, color_z ); +} + +/* +================== +crossFadeEnt + +Causes a entity to from one color to another +================== +*/ +void crossFadeEnt( entity ent, vector source, vector dest, float totalTime ) { + float i; + vector c; + float frac; + float numTics; + + // convert to the total number of game tics + numTics = totalTime * sys.getTicsPerSecond(); + + for( i = 0; i < numTics; i++ ) { + frac = i / numTics; + c = dest * frac + source * ( 1 - frac ); + ent.setColor( c_x, c_y, c_z ); + + // wait one game frame + sys.waitFrame(); + } + + // make sure we are set to exactly the destination color + ent.setColor( dest_x, dest_y, dest_z ); +} + +/* +================== +interpolateShaderParm + +Interpolates a single shader parm on an entity over a specified amount of time +================== +*/ +void interpolateShaderParm( entity ent, float parm, float fromValue, float toValue, float totalTime ) { + float i; + float value; + float frac; + float numTics; + + // convert to the total number of game tics + numTics = totalTime * sys.getTicsPerSecond(); + + for( i = 0; i < numTics; i++ ) { + frac = i / numTics; + value = toValue * frac + fromValue * ( 1 - frac ); + ent.setShaderParm( parm, value ); + ent.setLightParm( parm, value ); + + // wait one game frame + sys.waitFrame(); + } + + // make sure we are set to exactly the destination value + ent.setShaderParm( parm, toValue ); + ent.setLightParm( parm, toValue ); +} + +/* +================== +CalcTimeForRotationAroundEntity + +Calculates the time to perform a rotation of an entity around an entity it is bound to given +the angles to rotate and the desired speed. +================== +*/ +float CalcTimeForRotationAroundEntity( float distanceFromCenter, float angles, float desiredSpeed ) { + float distance; + + if ( desiredSpeed <= 0 ) { + return 0; + } + + distance = DEG2RAD( angles ) * distanceFromCenter; + + return distance / desiredSpeed; +} + +/* +================== +func_clipmodel spawn function +================== +*/ +void func_clipmodel() { + // do nothing +} + +/* +================== +RandomDelay +================== +*/ +float RandomDelay( float min, float max ) { + float t; + + t = sys.getTime(); + t += min + sys.random( max - min ); + + return t; +} + +/* +================== +RandomTime +================== +*/ +float RandomTime( float delay ) { + float t; + + t = sys.getTime(); + t += sys.random( delay ); + + return t; +} + +/* +================== +DelayTime +================== +*/ +float DelayTime( float delay ) { + float t; + + t = sys.getTime(); + t += delay; + t += sys.random( 2 ) - 1; + + return t; +} diff --git a/base/script/map_admin1.script b/base/script/map_admin1.script new file mode 100644 index 00000000..44b4fb7e --- /dev/null +++ b/base/script/map_admin1.script @@ -0,0 +1,449 @@ +namespace map_admin1 +{ + void archiver2_cycle( entity capsule ) + { + capsule.time( 1.0 ); + capsule.decelTime( 0.25 ); + capsule.moveTo( $capsule_staging ); + //staging speaker - 1sec + //capsule slides out to loading position + sys.trigger ($speaker_archiver_staging); + sys.waitFor( capsule ); + + // receive a new capsule + $archiver2_joint.time( 0.5 ); + $archiver2_joint.move( FORWARD, 24 ); + //loading speaker #1 - .5sec + //carrier moves a bit to accept capsule + sys.trigger ($speaker_archiver_loading1); + sys.waitFor( $archiver2_joint ); + + capsule.accelTime( 0.1 ); + capsule.time( 0.5 ); + capsule.decelTime( 0.1 ); + capsule.moveTo( $archiver2_carrier ); + //loading speaker #2 - .5sec + //capsule moves into carrier + sys.trigger ($speaker_archiver_loading2); + sys.waitFor( capsule ); + + capsule.bind( $archiver2_carrier ); + sys.wait( 0.5 ); + + $archiver2_joint.time( 0.5 ); + $archiver2_joint.move( BACK, 24 ); + //loading speaker #1 - .5sec + //carrier moves back after accepting capsule + sys.trigger ($speaker_archiver_loading1); + sys.waitFor( $archiver2_joint ); + +// 3.0s + // rotate over to depository2 + $archiver2_arm.accelTime( 0.25 ); + $archiver2_arm.time( 0.5 ); + $archiver2_arm.decelTime( 0.25 ); + $archiver2_arm.rotateDownTo( Y_AXIS, 315 ); + //Arm2 short speaker - .5sec + //Arm2 moves + sys.trigger ($speaker_archiver_arm2_short); + sys.waitFor( $archiver2_arm ); + + // place the capsule into the archiver + $archiver2_carrier.time( 0.5 ); + $archiver2_carrier.rotateUpTo( X_AXIS, 75 ); + //depository2 speaker #1 - .5sec + //carrier turns + sys.trigger ($speaker_archiver_depository2_1); + sys.waitFor( $archiver2_carrier ); + + $archiver2_carrier.time( 0.5 ); + $archiver2_carrier.move( REL_FORWARD, 16 ); + //depository2 speaker #2 - .5sec + //carrier moves a bit + sys.trigger ($speaker_archiver_depository2_2); + sys.waitFor( $archiver2_carrier ); + + // time = 0.5 + capsule.move( LEFT, 44 ); + //depository2 speaker #3 - .5sec + //capsule moves into/outof depository + sys.trigger ($speaker_archiver_depository2_3); + sys.waitFor( capsule ); + + // trigger GUI to animate + $func_static_2764.setGuiParm( "gui_parm1", 1 ); + sys.wait( 2.5 ); + + $func_static_2764.setGuiParm( "gui_parm1", 0 ); + + // time = 0.5 + capsule.move( RIGHT, 44 ); + //depository2 speaker #3 - .5sec + //capsule moves into/outof depository + sys.trigger ($speaker_archiver_depository2_3); + sys.waitFor( capsule ); + +// 8.0s + $archiver2_carrier.time( 0.5 ); + $archiver2_carrier.move( REL_BACK, 16 ); + //depository2 speaker #2 - .5sec + //carrier moves a bit + sys.trigger ($speaker_archiver_depository2_2); + sys.waitFor( $archiver2_carrier ); + + $archiver2_carrier.time( 0.5 ); + $archiver2_carrier.rotateDownTo( X_AXIS, 0 ); + //depository2 speaker #1 - .5sec + //carrier turns + sys.trigger ($speaker_archiver_depository2_1); + sys.waitFor( $archiver2_carrier ); + + // rotate over to dump2 + $archiver2_arm.time( 1.5 ); + $archiver2_arm.rotateDownTo( Y_AXIS, 180 ); + //Arm2 long speaker - 1.5sec + //Arm2 moves + sys.trigger ($speaker_archiver_arm2_long); + sys.waitFor( $archiver2_arm ); + + // dispose of the capsule + $archiver2_carrier.time( 0.5 ); + $archiver2_carrier.rotateUpTo( X_AXIS, 30 ); + //dump2 speaker #1 - .5sec + //carrier turns + sys.trigger ($speaker_archiver_dump2_1); + sys.waitFor( $archiver2_carrier ); + + $archiver2_carrier.time( 0.5 ); + $archiver2_carrier.move( REL_FORWARD, 16 ); + //dump2 speaker #2 - .5sec + //carrier moves a bit + sys.trigger ($speaker_archiver_dump2_2); + sys.waitFor( $archiver2_carrier ); + +// 11.5s + capsule.unbind(); + + capsule.accelTime( 0.1 ); + capsule.time( 0.5 ); + capsule.decelTime( 0.1 ); + capsule.move( REL_LEFT, 128 ); + //dump1 speaker #3 - .5sec + //capsule moves into dump + sys.trigger ($speaker_archiver_dump2_3); + sys.waitFor( capsule ); + + $archiver2_carrier.time( 0.5 ); + $archiver2_carrier.move( REL_BACK, 16 ); + //dump2 speaker #2 - .5sec + //carrier moves a bit + sys.trigger ($speaker_archiver_dump2_2); + sys.waitFor( $archiver2_carrier ); + + $archiver2_carrier.time( 0.5 ); + $archiver2_carrier.rotateDownTo( X_AXIS, 0 ); + //dump2 speaker #1 - .5sec + //carrier turns + sys.trigger ($speaker_archiver_dump2_1); + sys.waitFor( $archiver2_carrier ); + + // rotate over to incomming capsules + $archiver2_arm.time( 2.0 ); + $archiver2_arm.rotateDownTo( Y_AXIS, 0 ); + //Arm2 longer speaker - 2sec + //Arm2 moves + sys.trigger ($speaker_archiver_arm2_longer); + sys.waitFor( $archiver2_arm ); + +// 15.0s + // reset the capsule + capsule.restorePosition(); + } + + void archiver1_cycle( entity capsule ) + { + while( true ) + { + capsule.time( 1.0 ); + capsule.decelTime( 0.25 ); + capsule.moveTo( $capsule_staging ); + //staging speaker - 1sec + //capsule slides out to loading position + sys.trigger ($speaker_archiver_staging); + sys.waitFor( capsule ); + + // receive a new capsule + $archiver1_joint.time( 0.5 ); + $archiver1_joint.move( FORWARD, 24 ); + //loading speaker #1 - .5sec + //carrier moves a bit to accept capsule + sys.trigger ($speaker_archiver_loading1); + sys.waitFor( $archiver1_joint ); + + capsule.accelTime( 0.1 ); + capsule.time( 0.5 ); + capsule.decelTime( 0.1 ); + capsule.moveTo( $archiver1_carrier ); + //loading speaker #2 - .5sec + //capsule moves into carrier + sys.trigger ($speaker_archiver_loading2); + sys.waitFor( capsule ); + + capsule.bind( $archiver1_carrier ); + sys.wait( 0.5 ); + + $archiver1_joint.time( 0.5 ); + $archiver1_joint.move( BACK, 24 ); + //loading speaker #1 - .5sec + //carrier moves back after accepting capsule + sys.trigger ($speaker_archiver_loading1); + sys.waitFor( $archiver1_joint ); + +// 3.0s + // rotate over to depository1 + $archiver1_arm.accelTime( 0.25 ); + $archiver1_arm.time( 1.5 ); + $archiver1_arm.decelTime( 0.25 ); + $archiver1_arm.rotateDownTo( Y_AXIS, 45 ); + //Arm1 long speaker - 1.5sec + //Arm1 moves + sys.trigger ($speaker_archiver_arm1_long); + sys.waitFor( $archiver1_arm ); + + // place the capsule into the archiver + $archiver1_carrier.time( 0.5 ); + $archiver1_carrier.rotateUpTo( X_AXIS, 75 ); + //depository1 speaker #1 - .5sec + //carrier turns + sys.trigger ($speaker_archiver_depository1_1); + sys.waitFor( $archiver1_carrier ); + + $archiver1_carrier.time( 0.5 ); + $archiver1_carrier.move( REL_FORWARD, 16 ); + //depository1 speaker #2 - .5sec + //carrier moves a bit + sys.trigger ($speaker_archiver_depository1_2); + sys.waitFor( $archiver1_carrier ); + + // time = 0.5 + capsule.move( LEFT, 40 ); + //depository1 speaker #3 - .5sec + //capsule moves into/outof depository + sys.trigger ($speaker_archiver_depository1_3); + sys.waitFor( capsule ); + + //start the second arm mechanism + thread archiver2_cycle( $capsule2 ); + + // trigger GUI to animate + $func_static_2767.setGuiParm( "gui_parm1", 1 ); + sys.wait( 2.5 ); + + $func_static_2767.setGuiParm( "gui_parm1", 0 ); + + // time = 0.5 + capsule.move( RIGHT, 40 ); + //depository1 speaker #3 - .5sec + //capsule moves into/outof depository + sys.trigger ($speaker_archiver_depository1_3); + sys.waitFor( capsule ); +// 9.0s + $archiver1_carrier.time( 0.5 ); + $archiver1_carrier.move( REL_BACK, 16 ); + //depository1 speaker #2 - .5sec + //carrier moves a bit + sys.trigger ($speaker_archiver_depository1_2); + sys.waitFor( $archiver1_carrier ); + + $archiver1_carrier.time( 0.5 ); + $archiver1_carrier.rotateDownTo( X_AXIS, 0 ); + //depository1 speaker #1 - .5sec + //carrier turns + sys.trigger ($speaker_archiver_depository1_1); + sys.waitFor( $archiver1_carrier ); + + // rotate over to dump1 + $archiver1_arm.time( 1.5 ); + $archiver1_arm.rotateDownTo( Y_AXIS, 270 ); + //Arm1 long speaker - 1.5sec + //Arm1 moves + sys.trigger ($speaker_archiver_arm1_long); + sys.waitFor( $archiver1_arm ); + + // dispose of the capsule + $archiver1_carrier.time( 0.5 ); + $archiver1_carrier.rotateUpTo( X_AXIS, 30 ); + //dump1 speaker #1 - .5sec + //carrier turns + sys.trigger ($speaker_archiver_dump1_1); + sys.waitFor( $archiver1_carrier ); + + $archiver1_carrier.time( 0.5 ); + $archiver1_carrier.move( REL_FORWARD, 16 ); + //dump1 speaker #2 - .5sec + //carrier moves a bit + sys.trigger ($speaker_archiver_dump1_2); + sys.waitFor( $archiver1_carrier ); + +// 12.5s + capsule.unbind(); + + capsule.accelTime( 0.1 ); + capsule.time( 0.5 ); + capsule.decelTime( 0.1 ); + capsule.move( REL_LEFT, 128 ); + //dump1 speaker #3 - .5sec + //capsule moves into dump + sys.trigger ($speaker_archiver_dump1_3); + sys.waitFor( capsule ); + + $archiver1_carrier.time( 0.5 ); + $archiver1_carrier.move( REL_BACK, 16 ); + //dump1 speaker #2 - .5sec + //carrier moves a bit + sys.trigger ($speaker_archiver_dump1_2); + sys.waitFor( $archiver1_carrier ); + + $archiver1_carrier.time( 0.5 ); + $archiver1_carrier.rotateDownTo( X_AXIS, 0 ); + //dump1 speaker #1 - .5sec + //carrier turns + sys.trigger ($speaker_archiver_dump1_1); + sys.waitFor( $archiver1_carrier ); + + // rotate over to incomming capsules + $archiver1_arm.time( 1.0 ); + $archiver1_arm.rotateDownTo( Y_AXIS, 180 ); + //Arm1 short speaker - 1sec + //Arm1 moves + sys.trigger ($speaker_archiver_arm1_short); + sys.waitFor( $archiver1_arm ); + +// 15.0s + // reset the capsule + capsule.restorePosition(); + } + } + + + void archivers_setup() + { + // setup archiving unit 1 + $archiver1_carrier.bind( $archiver1_joint ); + + $archiver1_joint.time( 0.1 ); + $archiver1_joint.rotateUpTo( Y_AXIS, 90 ); + sys.waitFor( $archiver1_joint ); + + $archiver1_arm.time( 0.1 ); + $archiver1_arm.rotateUpTo( Y_AXIS, 180 ); + sys.waitFor( $archiver1_arm ); + + $archiver1_joint.bind( $archiver1_arm ); + + // bind the arm so that both arms stop when one is blocked + $archiver1_arm.bind( $func_static_2683 ); + + // setup archiving unit 2 + $archiver2_carrier.bind( $archiver2_joint ); + + $archiver2_joint.time( 0.1 ); + $archiver2_joint.rotateUpTo( Y_AXIS, 90 ); + sys.waitFor( $archiver2_joint ); + + $archiver2_arm.time( 0.1 ); + $archiver2_arm.rotateUpTo( Y_AXIS, 0 ); + sys.waitFor( $archiver2_arm ); + + $archiver2_joint.bind( $archiver2_arm ); + + // bind the arm so that both arms stop when one is blocked + $archiver2_arm.bind( $func_static_2683 ); + + // setup reader tube 1 + $archiver1_reader.bind( $archiver_reader_parent ); + + $archiver_reader_parent.time( 0.1 ); + $archiver_reader_parent.rotateUpTo( Y_AXIS, 45 ); + sys.waitFor( $archiver_reader_parent ); + + $archiver1_reader.time( 0.1 ); + $archiver1_reader.rotateUpTo( X_AXIS, 75 ); + sys.waitFor( $archiver1_reader ); + + $archiver1_reader.move( REL_FORWARD, 64 ); + sys.waitFor( $archiver1_reader ); + + $archiver1_reader.unbind(); + $archiver_reader_parent.restorePosition(); + + // setup reader tube 2 + $archiver2_reader.bind( $archiver_reader_parent ); + + $archiver_reader_parent.time( 0.1 ); + $archiver_reader_parent.rotateDownTo( Y_AXIS, 315 ); + sys.waitFor( $archiver_reader_parent ); + + $archiver2_reader.time( 0.1 ); + $archiver2_reader.rotateUpTo( X_AXIS, 75 ); + sys.waitFor( $archiver2_reader ); + + $archiver2_reader.move( REL_FORWARD, 64 ); + sys.waitFor( $archiver2_reader ); + + $archiver2_reader.unbind(); + $archiver_reader_parent.restorePosition(); + + // setup dump tube 1 + $archiver1_dump.bind( $archiver_reader_parent ); + + $archiver_reader_parent.time( 0.1 ); + $archiver_reader_parent.rotateUpTo( Y_AXIS, 180 ); + sys.waitFor( $archiver_reader_parent ); + + $archiver1_dump.time( 0.1 ); + $archiver1_dump.rotateUpTo( X_AXIS, 30 ); + sys.waitFor( $archiver1_dump ); + + $archiver1_dump.move( REL_FORWARD, 64 ); + sys.waitFor( $archiver1_dump ); + + $archiver1_dump.unbind(); + $archiver_reader_parent.restorePosition(); + + // setup dump tube 2 + $archiver2_dump.bind( $archiver_reader_parent ); + + $archiver_reader_parent.time( 0.1 ); + $archiver_reader_parent.rotateUpTo( Y_AXIS, 270 ); + sys.waitFor( $archiver_reader_parent ); + + $archiver2_dump.time( 0.1 ); + $archiver2_dump.rotateUpTo( X_AXIS, 30 ); + sys.waitFor( $archiver2_dump ); + + $archiver2_dump.move( REL_FORWARD, 64 ); + sys.waitFor( $archiver2_dump ); + + $archiver2_dump.unbind(); + $archiver_reader_parent.remove(); + + // run the loops + thread archiver1_cycle( $capsule1 ); + } + + void kill_wounded_marine() + { + $tim_admin_wounded_marine_1.kill(); + } + + void main() + { + //$swinglight_mover.sway( 2, 0, '40 15 0' ); + $swinglight_mover.sway( 50, 0, '20 0 0' ); + $library_lamp1_swing_anchor.sway( 3, 0, '15 10 0' ); + $library_lamp1_swing_anchor2.sway( 3.5, 0, '7 5 5' ); + + archivers_setup(); + } +} diff --git a/base/script/map_alphalabs1.script b/base/script/map_alphalabs1.script new file mode 100644 index 00000000..7d34b017 --- /dev/null +++ b/base/script/map_alphalabs1.script @@ -0,0 +1,480 @@ +namespace map_alphalabs1 { + +float PLAYMUSIC = TRUE; +float monsterstatus = 1; +float GATE_OPEN = 0; + +void init_world() +{ + $epd_emlight.rotate ('0 -360 0'); + //$epd_light1.setColor (0,0,0); + //$epd_light2.setColor (0,0,0); + //$epd_light3.setColor (0,0,0); + //$epd_light4.setColor (0,0,0); + //$epd_emlight.setColor (0,0,0); +} + +void epd_phantasm_fadeout() { + $speaker_4.fadeSound ( SND_CHANNEL_ANY, -60, 1.5 ); + $speaker_6.fadeSound ( SND_CHANNEL_ANY, -60, 1.5 ); + $epd_alarm.fadeSound ( SND_CHANNEL_ANY, -60, 1.5 ); + $epd_speaker_blast.fadeSound ( SND_CHANNEL_ANY, -60, 1.5 ); + $epd_speaker_warmup.fadeSound ( SND_CHANNEL_ANY, -60, 1.5 ); + + sys.wait (10); + + $speaker_4.fadeSound ( SND_CHANNEL_ANY, -5, 1.5 ); + $speaker_6.fadeSound ( SND_CHANNEL_ANY, -6, 1.5 ); + $epd_alarm.fadeSound ( SND_CHANNEL_ANY, 3, 1.5 ); + $epd_speaker_blast.fadeSound ( SND_CHANNEL_ANY, 0, 1.5 ); + $epd_speaker_warmup.fadeSound ( SND_CHANNEL_ANY, 0, 1.5 ); +} + + + + +void seq_2() { + monsterstatus = 2; +} + +void seq_3() { + monsterstatus = 3; +} + +void seq_end() { + monsterstatus = 4; +} + + +void music_engine() { + return; +} + +void fan_init () +{ + $fan_01.bind ($fan_01_anchor); + $fan_02.bind ($fan_02_anchor); + $fan_03.bind ($fan_03_anchor); + $fan_04.bind ($fan_04_anchor); + + $fan_01_anchor.rotateOnce ('0 0 25'); + $fan_02_anchor.rotateOnce ('0 0 25'); + $fan_03_anchor.rotateOnce ('0 0 25'); + $fan_04_anchor.rotateOnce ('0 0 25'); + + sys.waitFor ($fan_04_anchor); + + $fan_01.rotate ('540 0 0'); + $fan_02.rotate ('360 0 0'); + $fan_03.rotate ('180 0 0'); + $fan_04.rotate ('552 0 0'); +} + +void laser_ambience() +{ + float numRandomWait; + + numRandomWait = sys.random(2) + 1; + sys.wait (numRandomWait); + + while (1) + { + sys.trigger ($e33_laser_rnd); + numRandomWait = sys.random(2) + 1; + sys.wait (numRandomWait); + } +} + + void pumplight1_move() + + { + $pumplight1.time(1.5); + $pumplight1.accelTime(.1); + $pumplight1.decelTime(.1); + while (1){ + $pumplight1.move(DOWN,96); + sys.trigger ($pumplight1_speaker); + sys.waitFor ($pumplight1); + $pumplight1.move(UP,96); + sys.waitFor ($pumplight1); + } + } + + void pumplight2_move() + + { + $pumplight2.time(1.45); + $pumplight2.accelTime(.1); + $pumplight2.decelTime(.1); + while (1){ + $pumplight2.move(DOWN,96); + sys.trigger ($pumplight2_speaker); + sys.waitFor ($pumplight2); + $pumplight2.move(UP,96); + sys.waitFor ($pumplight2); + } + } + +void turkey_klax_on() +{ + thread crossFadeEnt ($epd_light1, '0 0 0', '1 0.2 0', 2); + thread crossFadeEnt ($epd_light2, '0 0 0', '1 0.2 0', 2); + thread crossFadeEnt ($epd_light3, '0 0 0', '1 0.2 0', 2); + thread crossFadeEnt ($epd_light4, '0 0 0', '1 0.2 0', 2); + thread crossFadeEnt ($epd_emlight, '0 0 0', '1 0.2 0', 2); +} + +void turkey_klax_off() +{ + thread crossFadeEnt ($epd_light1, '1 0.2 0', '0 0 0', 2); + thread crossFadeEnt ($epd_light2, '1 0.2 0', '0 0 0', 2); + thread crossFadeEnt ($epd_light3, '1 0.2 0', '0 0 0', 2); + thread crossFadeEnt ($epd_light4, '1 0.2 0', '0 0 0', 2); + thread crossFadeEnt ($epd_emlight, '1 0.2 0', '0 0 0', 2); +} + + // *** + // New and improved UAC Turkey Baster v2.0 + // *** + + void turkey_baster() { + while (1) { + + sys.wait (5); + turkey_klax_on(); + sys.trigger ($epd_alarm); // 8 seconds long + sys.wait (2); + + sys.trigger ($epd_speaker_warmup); + sys.wait (1); + + // Machine is on at this point... + sys.trigger ($epd_speaker_blast); + sys.trigger ($func_beam_1); + sys.trigger ( $ep_endEmitter ); + sys.trigger ( $ep_emitter1 ); + sys.trigger ($turkey_hurt_1); + sys.trigger ($tbbeam); + $tbbeamlight.fadeInLight(.5); + $ep_beam_source.fadeInLight( 0.2 ); + $ep_endlight.fadeInLight(.5); + + sys.wait (4); + + // ... and toggle stuff off.. + + thread map_alphalabs1::turkey_klax_off(); + sys.trigger ($func_beam_1); + sys.trigger ( $ep_endEmitter ); + sys.trigger ( $ep_emitter1 ); + sys.trigger ($turkey_hurt_1); + sys.trigger ($tbbeam); + $tbbeamlight.fadeOutLight(.5); + $ep_beam_source.fadeOutLight( 0.5 ); + $ep_endlight.fadeOutLight(.5); + } + } + +void toggle_gate() { + if (GATE_OPEN == 0) { + $gatedoor_left.open(); + $gatedoor_right.open(); + sys.waitFor ($gatedoor_right); + GATE_OPEN = 1; + } + else { + $gatedoor_left.close(); + $gatedoor_right.close(); + sys.waitFor ($gatedoor_right); + GATE_OPEN = 0; + } +} + +void hc_loop() +{ + //times for the can mover + $hc_can.time (1); + $hc_can.accelTime (.25); + $hc_can.decelTime (.25); + + while (1) { + //can move from start hole into door 176 + $hc_can.move ( NORTH, 176 ); + //sys.trigger ($speaker_hc_bolt); + + sys.waitFor ($hc_can); + sys.wait (.25); + + //door move to down position 128 + $hc_door.time (.5); + $hc_door.accelTime (.5); + $hc_door.decelTime (0); + + $hc_can.bind ($hc_door); + // + sys.trigger ($speaker_hc_down); + + $hc_door.move ( DOWN, 128 ); + sys.waitFor ($hc_door); + sys.wait (.25); + + //can move into final hole 176 + $hc_can.move ( NORTH, 176 ); + sys.trigger ($speaker_hc_bolt); + sys.waitFor ($hc_can); + sys.wait (.25); + + //door move to up position 128 + $hc_door.time (1); + $hc_door.accelTime (.25); + $hc_door.decelTime (.25); + + $hc_door.move ( UP, 128 ); + sys.trigger ($speaker_hc_up); + sys.waitFor ($hc_door); + sys.wait (.25); + + //restore can position + $hc_can.unbind(); + $hc_can.restorePosition(); + sys.wait (.25); + }//end while +} + +//////////////////////////////////////////////////// +// +// Hydrocon1 move +// +//////////////////////////////////////////////////// +void hydrocon1_move() +{ + //bind ring + $hydrocon1_ring.bind ($hydrocon1_main); + + //move hydrocon_main with ring up to top positioin + $hydrocon1_main.time (1.5); + $hydrocon1_main.accelTime (1); + $hydrocon1_main.decelTime (.5); + + $hydrocon1_main.move ( UP, 216 ); + sys.trigger ($hydrocon1_main_speaker_up); + sys.waitFor ($hydrocon1_main); + + + //wait at top for the whole thing to start again + sys.wait (1); + + //move hydrocon_ring down 64 + $hydrocon1_ring.move ( DOWN, 64 ); + sys.trigger ($hydrocon1_ring_speaker_down); + sys.waitFor ($hydrocon1_ring); + sys.wait (.25); + + //move hydrocon_main down with ring extended + $hydrocon1_main.time (1.5); + $hydrocon1_main.accelTime (1.5); + $hydrocon1_main.decelTime (0); + + $hydrocon1_main.move ( DOWN, 216 ); + sys.trigger ($hydrocon1_main_speaker_down); + sys.waitFor ($hydrocon1_main); + + //unbind ring + $hydrocon1_ring.unbind(); + + //move hydrocon_main with ring down the remaining distance to nipple + $hydrocon1_main.time (1.5); + $hydrocon1_main.accelTime (0); + $hydrocon1_main.decelTime (1.5); + + $hydrocon1_main.move ( DOWN, 64 ); + sys.trigger ($hydrocon1_nipplemain_speaker_down); + sys.waitFor ($hydrocon1_main); + sys.wait (.25); + + //bind nipple to hydrocon_main + $hydrocon1_nipple.bind ($hydrocon1_main); + + //move hydrocon_main with nipple up to ring extended position + $hydrocon1_main.move ( UP, 64 ); + sys.trigger ($hydrocon1_nipplemain_speaker_up); + sys.waitFor ($hydrocon1_main); + sys.wait (.25); + + //activate effect + sys.trigger ($hydrocon1_emitter); + sys.trigger ($hydrocon1_emitter_speaker); + sys.trigger ($hydrocon1_light); + sys.wait (1); + + //unbind nipple + $hydrocon1_nipple.unbind(); + + //move nipple back down + $hydrocon1_nipple.time (1); + $hydrocon1_nipple.accelTime (.8); + $hydrocon1_nipple.decelTime (.2); + + $hydrocon1_nipple.move ( DOWN, 64 ); + sys.trigger ($hydrocon1_nipple_speaker_down); + sys.waitFor ($hydrocon1_nipple); + //turn off effect + sys.trigger ($hydrocon1_emitter); + sys.trigger ($hydrocon1_emitter_speaker); + sys.trigger ($hydrocon1_light); + sys.wait (.25); + + //move hydrocon_ring up 64 + $hydrocon1_ring.move ( UP, 64 ); + sys.trigger ($hydrocon1_ring_speaker_up); + sys.waitFor ($hydrocon1_ring); + sys.wait (.25); +} + +//////////////////////////////////////////////////// +// +// Hydrocon2 move +// +//////////////////////////////////////////////////// +void hydrocon2_move() +{ + //bind ring + $hydrocon2_ring.bind ($hydrocon2_main); + + //move hydrocon_main with ring up to top positioin + $hydrocon2_main.time (1.5); + $hydrocon2_main.accelTime (1); + $hydrocon2_main.decelTime (.5); + + $hydrocon2_main.move ( UP, 216 ); + sys.trigger ($hydrocon2_main_speaker_up); + sys.waitFor ($hydrocon2_main); + + + //wait at top for the whole thing to start again + sys.wait (1); + + //move hydrocon_ring down 64 + $hydrocon2_ring.move ( DOWN, 64 ); + sys.trigger ($hydrocon2_ring_speaker_down); + sys.waitFor ($hydrocon2_ring); + sys.wait (.25); + + //move hydrocon_main down with ring extended + $hydrocon2_main.time (1.5); + $hydrocon2_main.accelTime (1.5); + $hydrocon2_main.decelTime (0); + + $hydrocon2_main.move ( DOWN, 216 ); + sys.trigger ($hydrocon2_main_speaker_down); + sys.waitFor ($hydrocon2_main); + + //unbind ring + $hydrocon2_ring.unbind(); + + //move hydrocon_main with ring down the remaining distance to nipple + $hydrocon2_main.time (1.5); + $hydrocon2_main.accelTime (0); + $hydrocon2_main.decelTime (1.5); + + $hydrocon2_main.move ( DOWN, 64 ); + sys.trigger ($hydrocon2_nipplemain_speaker_down); + sys.waitFor ($hydrocon2_main); + sys.wait (.25); + + //bind nipple to hydrocon_main + $hydrocon2_nipple.bind ($hydrocon2_main); + + //move hydrocon_main with nipple up to ring extended position + $hydrocon2_main.move ( UP, 64 ); + sys.trigger ($hydrocon2_nipplemain_speaker_up); + sys.waitFor ($hydrocon2_main); + sys.wait (.25); + + //activate effect + sys.trigger ($hydrocon2_emitter); + sys.trigger ($hydrocon2_emitter_speaker); + sys.trigger ($hydrocon2_light); + sys.wait (1); + + //unbind nipple + $hydrocon2_nipple.unbind(); + + //move nipple back down + $hydrocon2_nipple.time (1); + $hydrocon2_nipple.accelTime (.8); + $hydrocon2_nipple.decelTime (.2); + + $hydrocon2_nipple.move ( DOWN, 64 ); + sys.trigger ($hydrocon2_nipple_speaker_down); + sys.waitFor ($hydrocon2_nipple); + //turn off effect + sys.trigger ($hydrocon2_emitter); + sys.trigger ($hydrocon2_emitter_speaker); + sys.trigger ($hydrocon2_light); + sys.wait (.25); + + //move hydrocon_ring up 64 + $hydrocon2_ring.move ( UP, 64 ); + sys.trigger ($hydrocon2_ring_speaker_up); + sys.waitFor ($hydrocon2_ring); + sys.wait (.25); +} + +//////////////////////////////////////////////////// +// +// Hydrocon Loop +// +//////////////////////////////////////////////////// +void hydrocon_loop() +{ + float hydrocon1_thread, hydrocon2_thread; + + while (1){ + hydrocon1_thread = thread map_alphalabs1::hydrocon1_move(); + hydrocon2_thread = thread map_alphalabs1::hydrocon2_move(); + + sys.waitForThread( hydrocon1_thread ); + sys.waitForThread( hydrocon2_thread ); + }//end while +} + +//////////////////////////////////////////////////// +// +// Kill Hydrocon Loop +// +//////////////////////////////////////////////////// +void kill_hydrocon_loop() +{ + sys.killthread ("map_alphalabs1::hydrocon_loop"); + sys.killthread ("map_alphalabs1::hydrocon1_move"); + sys.killthread ("map_alphalabs1::hydrocon2_move"); +} + +//--- +// Fade out the creepy sounds after the maggots all die +//--- + +void fade_maggot_sounds() { + $maggot_speaker_1.fadeSound (SND_CHANNEL_ANY, -60, 4); + $maggot_speaker_2.fadeSound (SND_CHANNEL_ANY, -60, 4); + $maggot_speaker_3.fadeSound (SND_CHANNEL_ANY, -60, 4); + $maggot_speaker_4.fadeSound (SND_CHANNEL_ANY, -60, 4); +} + +void main () +{ + init_world(); + fan_init(); + //bathroom_init(); + //thread laser_ambience(); + thread pumplight1_move(); + thread pumplight2_move(); + thread hc_loop(); + thread hydrocon_loop(); + thread turkey_baster(); +} + + + +} \ No newline at end of file diff --git a/base/script/map_alphalabs2.script b/base/script/map_alphalabs2.script new file mode 100644 index 00000000..fc977afe --- /dev/null +++ b/base/script/map_alphalabs2.script @@ -0,0 +1,587 @@ +namespace map_alphalabs2 { + #define XMACH_BASE_SPEED 2 + #define XMACH_JOINT_SPEED 2 + //#define DEBUG 1 + //#define VERBOSE 1 + //#define ENABLE_BEAM 1 + + float spawn_start_imp = 0; // Is it ok to spawn in the first imp ? + float surprise_pinky_spawn = 0; // Did we kill the imp, to spawn in the surprise pinky at the CP ? + float surprise_pinky_dead = 0; // Did we kill the surprise pinky ? (Used to prevent retriggers) + float xmach_current = 0; // Current rotation angle it's at + float xmach_value = 0; // What is the current location of the machine ? (1-12) + + void bathroom_init() + { + $bathroom_swinglamp_anchor.sway( 2.5, 1, '0 0 15' ); + } + + void entrance_door() + { + $start_light1.Off(); + $start_light2.Off(); + sys.trigger ($start_light3); + sys.trigger ($start_particle); + sys.wait (1); + $start_light2.On(); + } + + //////////////////////////////////////////////////// + // Setup binds and times and initial movements etc... + //////////////////////////////////////////////////// + void setup_objects() + { + vector beam_dst; + + $mazelight_red_1.fadeOutLight (0.1); + $mazelight_red_2.fadeOutLight (0.1); + $mazelight_red_3.fadeOutLight (0.1); + + //$mfs_redlight1.fadeOutLight (0.1); + //$mfs_redlight2.fadeOutLight (0.1); + //$mfs_redlight3.fadeOutLight (0.1); + + + $claw_arm_lower.time (0.75); + $claw_arm_lower.accelTime (0.25); + $claw_arm_lower.decelTime (0.25); + $claw_arm_upper.time (0.75); + $claw_arm_upper.accelTime (0.25); + $claw_arm_upper.decelTime (0.25); + $claw_arm_wrist.time (0.75); + $claw_arm_wrist.accelTime (0.25); + $claw_arm_wrist.decelTime (0.25); + $claw_revolver.time (2); + $claw_tooth_1.time (0.5); + $claw_tooth_2.time (0.5); + + $claw_arm_upper.rotateOnce ('-40 0 0'); + $claw_arm_lower.rotateOnce ('50 0 0'); + $claw_arm_wrist.rotateOnce ('180 0 0'); + + $ddoor_1_anchor.time (1); + $ddoor_2_anchor.time (1); + $ddoor_1_anchor.accelTime (0.25); + $ddoor_2_anchor.accelTime (0.25); + $ddoor_1_anchor.decelTime (0.25); + $ddoor_2_anchor.decelTime (0.25); + + $lobby1left.disable(); + $lobby1right.disable(); + $mal_func_door_55.disable(); + $mal_func_door_56.disable(); + + sys.wait( 1 ); + + thread entrance_door(); + + //$br_secretdoor.speed (96); + $secret_door2.time (1.5); + $secret_ladder.time (3); + $secret_ladder.move (DOWN, 106); + $exit_ladder.move(DOWN, 126); + + $elight.rotate ('0 -400 0'); + + $deadmarine_mover.speed (128); + $deadmarine_mover.moveTo ($deadmarine_path1); + + //break lights in machine room + sys.trigger($light_4678); + sys.trigger($light_4679); + sys.trigger($light_4683); + sys.trigger($light_4684); + } + + void br_move_secret_door() + { + $br_secretdoor.time(.5); + $br_secretdoor.accelTime(.25); + $br_secretdoor.decelTime(.25); + $br_secretdoor.moveTo ($br_secretdoor_path1); + sys.waitFor ($br_secretdoor); + sys.wait (0.5); + $br_secretdoor.time(1.0); + $br_secretdoor.accelTime(.5); + $br_secretdoor.decelTime(.5); + $br_secretdoor.moveTo ($br_secretdoor_path2); + sys.waitFor ($br_secretdoor); + } + + void emp_blast() + { + float i; + entity emplight, empspeaker; + + for (i=1; i<=10; i++) + { + emplight = sys.getEntity ("emplight_" + i); + emplight.On(); + empspeaker = sys.getEntity ("empspeaker_" + i); + sys.trigger (empspeaker); + sys.wait (0.1); + emplight.Off(); + } + } + + void open_secrethatch() + { + sys.trigger ($mfs_secretdoor_open); + $secret_door2.moveTo ($secret2_path1); + sys.waitFor ($secret_door2); + $secret_door2.moveTo ($secret2_path2); + sys.waitFor ($secret_door2); + $secret_ladder_door.open(); + sys.waitFor ($secret_ladder_door); + sys.trigger ($mfs_speaker_secretladder); + $secret_ladder.move (UP, 106); + } + + /////////////////////// + // Mal's machine + /////////////////////// + void spinner() + { + while (1) + { + $slidearm.bind ($slidearm_anchor); + $can1.bind ($slidearm); + $can2.bind ($maindrum); + $slidearm_anchor.time (2); + $slidearm.time (2); + $can1.time (1); + $can2.time (1); + $maindrum.time (1); + $plunger.time (1); + + //canister1 feed from main drum + sys.trigger ($mfs_roller_speaker_in); + $slidearm_anchor.moveTo ($slidearm_p2); + sys.wait (.1); + $slidearm.rotateOnce (' 0 0 -90 '); + sys.waitFor ($slidearm_anchor); + + //canister1 feed into machine + sys.wait (1.5); + $can1.unbind(); + $can1.bind ($plunger); + sys.trigger ($mfs_plunger_in); + $plunger.move (FORWARD,96); + sys.waitFor ($plunger); // was $can1 + $can1.unbind(); + sys.trigger ($mfs_can1_speaker); + $can1.moveTo ($can_target); + sys.waitFor ($can1); + + //canister1 teleport + $can1.time (.01); + $can1.moveTo ($canspawn); + sys.waitFor ($can1); + $can1.bind ($maindrum); + + //slidearm reset + sys.trigger ($mfs_roller_speaker_out); + $slidearm_anchor.moveTo ($slidearm_p1); + $slidearm.rotateOnce (' 0 0 90 '); + sys.trigger ($mfs_plunger_out); + $plunger.move (BACK,96); + sys.waitFor ($slidearm_anchor); + + //main drum rotation + sys.trigger ($mfs_drum_speaker); + $maindrum.rotateOnce (' 0 0 -90 '); + sys.waitFor ($maindrum); + $can2.unbind(); + sys.wait (.1); + + //canister2 feed from main drum + $can2.bind ($slidearm); + sys.trigger ($mfs_roller_speaker_in); + sys.trigger ($mfs_can2_speaker); + $slidearm_anchor.moveTo ($slidearm_p2); + sys.wait (.1); + $slidearm.rotateOnce (' 0 0 -90 '); + sys.waitFor ($slidearm_anchor); + + //canister2 feed into machine + sys.wait (1.5); + $can2.unbind(); + $can2.bind ($plunger); + //$can2.move (FORWARD,232); + sys.trigger ($mfs_plunger_in); + $plunger.move (FORWARD,96); + sys.waitFor ($plunger); + $can2.unbind(); + sys.trigger ($mfs_can2_speaker); + $can2.moveTo ($can_target); + sys.waitFor ($can2); + + //canister2 teleport + $can2.time (.01); + $can2.moveTo ($canspawn); + sys.waitFor ($can2); + $can2.bind ($maindrum); + + //slidearm reset + sys.trigger ($mfs_roller_speaker_out); + $slidearm_anchor.moveTo ($slidearm_p1); + $slidearm.rotateOnce (' 0 0 90 '); + sys.trigger ($mfs_plunger_out); + $plunger.move (BACK,96); + sys.waitFor ($slidearm_anchor); + + //main drum rotation + sys.trigger ($mfs_drum_speaker); + $maindrum.rotateOnce (' 0 0 -90 '); + sys.waitFor ($maindrum); + $can1.unbind(); + sys.wait (.1); + } + } + + // The other half of the rotating tube-thingy machine... + void mach2() + { + entity ent, ent2; + vector bm_origin, bm_origin2; + bm_origin = $mach2_path1.getOrigin(); + + while (1) + { + $mach2_tube.time (2); + $mach2_tube.setOrigin (bm_origin); + sys.trigger ($mfs_speaker_tube); + $mach2_tube.moveTo ($mach2_path2); + sys.waitFor ($mach2_tube); + sys.wait (1); + + $mach2_flap_left_anchor.time (1); + $mach2_flap_right_anchor.time (1); + + sys.trigger ($mfs_speaker_flap_close); + + $mach2_flap_left_anchor.rotateOnce ('0 0 -90'); + $mach2_flap_right_anchor.rotateOnce ('0 0 90'); + sys.waitFor ($mach2_flap_right_anchor); + sys.trigger ($mfs_speaker_decent); + + $mach2_tube.moveTo ($mach2_path3); + sys.waitFor ($mach2_tube); + sys.trigger ($mfs_speaker_flap_open); + + $mach2_flap_left_anchor.rotateOnce ('0 0 90'); + $mach2_flap_right_anchor.rotateOnce ('0 0 -90'); + sys.waitFor ($mach2_flap_right_anchor); + sys.wait (0.2); + } + } + + /////////////////////// + // Jerry's machine + /////////////////////// + void spawn_canister() + { + vector startlocation; + startlocation = $canister1.getWorldOrigin(); + + $spinner1.time (1.5); + $spinner1.accelTime (.75); + $spinner1.decelTime (.75); + $spinner2.time (1.5); + $spinner2.accelTime (.75); + $spinner2.decelTime (.75); + $pivot_point.time (1.75); + $pivot_point.accelTime (.75); + $pivot_point.decelTime (.75); + $body.time (1); + $body.accelTime (.75); + $body.decelTime (.25); + $middle_arm.time (1.5); + $middle_arm.accelTime (.75); + $middle_arm.decelTime (.75); + $clamp_arm.time (1.5); + $clamp_arm.accelTime (.75); + $clamp_arm.decelTime (.75); + $can_door1.time (1); + $can_door1.accelTime (.75); + $can_door1.decelTime (.25); + $can_door2.time (1); + $can_door2.accelTime (.75); + $can_door2.decelTime (.25); + + while (1) + { + //NOTE - machine starts in lowered position + $canister1.bind ($clamp_arm); + //move arms up + $spinner1.rotateOnce ('0 720 0'); + $spinner2.rotateOnce ('0 720 0'); + $clamp_arm.move (UP, 40 ); + $middle_arm.move (UP, 60); + $pivot_point.moveTo ($p2); + sys.waitFor ($pivot_point); + //close doors + $can_door1.rotateOnce ('0 0 90'); + $can_door2.rotateOnce ('0 0 90'); + //rotate machine + $body.rotateOnce (' 0 0 90 '); + sys.waitFor ($body); + //move arms in + $spinner1.rotateOnce ('0 -720 0'); + $spinner2.rotateOnce ('0 -720 0'); + $middle_arm.move (-90, 60); + $clamp_arm.move (-90, 40 ); + sys.waitFor ($clamp_arm); + //release canister + $canister1.unbind(); + //move arms out + $spinner1.rotateOnce ('0 720 0'); + $spinner2.rotateOnce ('0 720 0'); + $middle_arm.move (90, 60); + $clamp_arm.move (90, 40 ); + sys.waitFor ($clamp_arm); + $body.rotateOnce (' 0 0 -90 '); + sys.waitFor ($body); + //move canister back to start position + $canister1.setWorldOrigin (startlocation); + //move arms down + $can_door1.rotateOnce ('0 0 -90'); + $can_door2.rotateOnce ('0 0 -90'); + $spinner1.rotateOnce ('0 -720 0'); + $spinner2.rotateOnce ('0 -720 0'); + $pivot_point.moveTo ($p1); + $middle_arm.move (DOWN, 60); + $clamp_arm.move (DOWN, 40 ); + sys.waitFor ($clamp_arm); + } + } + + void xmachroom() + { + while (1) + { + thread spawn_canister(); + sys.wait (2); + } + } + + void sci_kill_lights() + { + $mazelight_1.Off(); + $mazelight_2.Off(); + sys.wait (.75); + //sys.trigger ($mazeimp_1); + //sys.trigger ($mazeimp_2); + //sys.trigger ($mazeimp_3); + sys.trigger ($open_impdoors); + sys.trigger ($imp_maze_wakeup); + + //simulate lantern flash + sys.wait ( .40 ); + $lantern_flash.On(); + sys.wait (.15); + $lantern_flash.Off(); + + sys.trigger ($maze_bloodpool); + sys.trigger ($maze_bloodpool_1); + sys.trigger ($maze_bloodpool_2); + sys.trigger ($maze_bloodpool_3); + sys.trigger ($maze_bloodpool_4); + $mazelight_red_1.fadeInLight (4); + $mazelight_red_2.fadeInLight (4); + $mazelight_red_3.fadeInLight (4); + sys.wait (4); + $mazelight_1.fadeInLight (4); + $mazelight_2.fadeInLight (4); + } +/* + void mfs_redlights() + { + $mfs_redlight1.fadeInLight (4); + $mfs_redlight2.fadeInLight (4); + $mfs_redlight3.fadeInLight (4); + } +*/ + // First posessed guy... + void move_soldier() + { + float i; + entity ent; + $wrist_mover.speed (128); + + sys.trigger ($start_fadeout_blue); + sys.trigger ($start_fadeout_white); + //sys.trigger ($start_fadeout_sky); + + for (i=1; i<=7; i++) + { + ent = sys.getEntity ("soldier_path" + i); + $wrist_mover.moveTo (ent); + sys.waitFor ($wrist_mover); + if (i == 1) + { + sys.trigger ($explodinglight_trigger_1); + sys.trigger ($explodinglight_trigger_1a); + sys.trigger ($explodinglight_trigger_1b); + sys.trigger ($explodinglight_trigger_1c); + //$body_spinner.rotate ('-10 20 -25'); + sys.wait (1); + $wrist_mover.speed (200); + } + if (i == 2) + { + sys.trigger ($explodinglight_trigger_2); + sys.trigger ($explodinglight_trigger_2a); + sys.trigger ($explodinglight_trigger_2b); + sys.trigger ($explodinglight_trigger_2c); + } + if (i == 3) + { + sys.trigger ($explodinglight_trigger_3); + sys.trigger ($explodinglight_trigger_3a); + sys.trigger ($explodinglight_trigger_3b); + sys.trigger ($explodinglight_trigger_3c); + $tim_func_door_202.open(); + $tim_func_door_203.open(); + } + if ( i == 4) + { + $tim_func_door_202.close(); + $tim_func_door_203.close(); + $tim_func_door_203.lock(1); + $tim_func_door_202.lock(1); + + //disable player forcefield + $trigger_once_56.disable(); + + $env_ragdoll_marine1_1.unbind(); + sys.trigger ($start_fadein_blue); + sys.trigger ($start_fadein_white); + //sys.trigger ($start_fadein_sky); + spawn_start_imp = 1; + } + } + $wrist_mover.remove(); + $env_ragdoll_marine1_1.remove(); + } + + void spawn_imp_entrance() + { + while (1) + { + if (spawn_start_imp == 1) + { + sys.trigger ($entrance_relay); + sys.trigger ($trigger_relay_45); + sys.trigger ($trigger_relay_47); + sys.trigger ($impstart_influence); + sys.wait (1); + sys.trigger ($start_imp_forcefield); + sys.trigger ($blowout_window); + sys.wait (1); + //sys.trigger ($surprise_imp_1); + return; + } + sys.wait (1); + } + } + + // Called when the first imp dies + void unlock_start_door() + { + $tim_func_door_202.lock(0); + $tim_func_door_203.lock(0); + } + + // Guy getting pulled into the ceiling @ start of the map + void gank_deadsoldier() + { + sys.trigger ($impscream); + sys.wait (1); + $deadmarine_mover.moveTo ($deadmarine_path2); + sys.trigger ($impscream_crunch_speaker); + sys.wait (1.5); + $deadmarine_mover.moveTo ($deadmarine_path3); + sys.wait (1.75); + $xenv_ragdoll_marine1_0.remove(); + //sys.trigger ($imp_scream); + //sys.wait (1); + sys.trigger ($bodypart_1); + sys.wait (1); + sys.trigger ($bodypart_2); + sys.wait (1.25); + sys.trigger ($bodypart_3); + sys.wait (0.75); + sys.trigger ($bodypart_4); + sys.wait (1); + sys.trigger ($bodypart_5); + sys.wait (1.5); + sys.trigger ($bodypart_6); + sys.wait (5); + sys.trigger ($bodypart_7); + } + + // Trap door in ceiling that a dead scientist drops out of + void open_cp_trapdoor() + { + $trapdoor_1_anchor.time (0.5); + $trapdoor_1_anchor.rotateOnce ('0 0 45'); + } + + void exit_ladder_move() + { + $exit_ladder.time(2); + $exit_ladder.accelTime(.5); + $exit_ladder.decelTime(1.5); + sys.trigger ($speaker_up_2seconds); + $exit_ladder.move(UP, 48); + sys.waitFor($exit_ladder); + sys.wait(4); + $exit_ladder.time(2); + $exit_ladder.accelTime(.5); + $exit_ladder.decelTime(1.5); + sys.trigger ($speaker_down_2seconds); + $exit_ladder.move(DOWN, 48); + sys.waitFor($exit_ladder); + sys.wait(5); + $exit_ladder.time(3); + $exit_ladder.accelTime(1); + $exit_ladder.decelTime(2); + sys.trigger ($speaker_up_3seconds); + $exit_ladder.move(UP, 64); + sys.waitFor($exit_ladder); + sys.wait(4); + $exit_ladder.time(2); + $exit_ladder.accelTime(.5); + $exit_ladder.decelTime(1.5); + sys.trigger ($speaker_down_2seconds); + $exit_ladder.move(DOWN, 64); + sys.waitFor($exit_ladder); + sys.wait(20); + $exit_ladder.time(4); + $exit_ladder.accelTime(1); + $exit_ladder.decelTime(3); + sys.trigger ($speaker_up_4seconds); + $exit_ladder.move(UP, 126); + sys.waitFor($exit_ladder); + $exit_ladder_clip.remove(); + //trigger gui + sys.trigger( $func_static_5089); + $func_static_5089.setShaderParm (7, 1); + //turn on ladder lights + sys.trigger( $ladder_lights_relay); + + } + + //////////////////////////////////////////////////// + // Main + //////////////////////////////////////////////////// + void main() + { + setup_objects(); + thread bathroom_init(); + thread spinner(); + thread mach2(); + thread spawn_canister(); + } +} \ No newline at end of file diff --git a/base/script/map_alphalabs3.script b/base/script/map_alphalabs3.script new file mode 100644 index 00000000..65d1c1c8 --- /dev/null +++ b/base/script/map_alphalabs3.script @@ -0,0 +1,119 @@ +#include "script/map_alphalabs3_crane.script" + +namespace map_alphalabs3 { + + + void fade_combat_speaker() { + $xspeaker_1.fadeSound ( SND_CHANNEL_ANY, -60, 10 ); + $speaker_8.fadeSound ( SND_CHANNEL_ANY, -60, 10 ); + + } + + //////////////////////////////////////////////////// + // + // activate waste lift + // + //////////////////////////////////////////////////// + void waste_lift_up() + { + //spawner + sys.trigger ($deathsquad_spawn); + + //raises waste lift + $waste_lift.time (3); + $waste_lift.accelTime (.1); + $waste_lift.decelTime (.1); + $waste_lift.move (UP, 256); + + //opens waste lift doors + sys.wait (1); + sys.trigger ($waste_lift_door_l); + } + + + //////////////////////////////////////////////////// + // + // break the little al3_platform + // + //////////////////////////////////////////////////// + void al3_platform_break() + { + //set the bottom call gui to malfunction + //so it can't be called twice + $func_static_4685.setGuiParm("gui_parm5" , 2); + $func_static_3921.setGuiParm("gui_parm5" , 2); + $func_static_4685.setShaderParm(7 , 0); + $func_static_3921.setShaderParm(7 , 0); + + + //first move down + $al3_platform_break.time ( 2.5 ); + $al3_platform_break.accelTime ( .5 ); + $al3_platform_break.decelTime ( 0 ); + sys.trigger ($lspeaker_1); + + $al3_platform.startSoundShader ("broken_plat_2_5s", SND_CHANNEL_VOICE2 ); + + $al3_platform_break.move ( DOWN, 190 ); + + sys.waitFor ($al3_platform_break); + + //bounce a bit or something + sys.trigger ($broke_spark); + $al3_platform_break.time ( .2 ); + $al3_platform_break.accelTime ( .2 ); + $al3_platform_break.decelTime ( 0 ); + $al3_platform_break.move ( UP, 6 ); + + sys.waitFor ($al3_platform_break); + + $al3_platform_break.time ( .2 ); + $al3_platform_break.accelTime ( 0 ); + $al3_platform_break.decelTime ( .2 ); + $al3_platform_break.move ( DOWN, 8 ); + + //rotate a about 24 degrees + $al3_platform_break.time ( .6 ); + $al3_platform_break.accelTime ( .6 ); + $al3_platform_break.decelTime ( 0 ); + + $al3_platform_break.startSoundShader ("platbreak_01", SND_CHANNEL_VOICE ); + + $al3_platform_break.rotateOnce ( '-24 5 0' ); + + sys.waitFor ($al3_platform_break); + + $al3_platform_break.time ( .1 ); + $al3_platform_break.accelTime ( .1 ); + $al3_platform_break.decelTime ( 0 ); + + $al3_platform_break.startSoundShader ("platbreak_02", SND_CHANNEL_BODY ); + + $al3_platform_break.rotateOnce ( '1 0 0' ); + + sys.waitFor ($al3_platform_break); + + $al3_platform_break.rotateOnce ( '-1 0 0' ); + } + + void cache_sounds() { + sys.cacheSoundShader ("broken_plat_2_5s"); + sys.cacheSoundShader ("platbreak_01"); + sys.cacheSoundShader ("platbreak_02"); + } + + + ////////////////////////////////////////////////////////// + // + // Vent cover opener + // + ////////////////////////////////////////////////////////// + void open_vent_cover() { + $ventcover1.rotateOnce('0 0 -120'); + } + + void main() { + cache_sounds(); + init_crane(); + } +} \ No newline at end of file diff --git a/base/script/map_alphalabs3_crane.script b/base/script/map_alphalabs3_crane.script new file mode 100644 index 00000000..d216c8bc --- /dev/null +++ b/base/script/map_alphalabs3_crane.script @@ -0,0 +1,510 @@ +namespace map_alphalabs3 { + +#define CRANE_NONE 0 +#define CRANE_FORWARD 1 +#define CRANE_BACK 2 +#define CRANE_LEFT 3 +#define CRANE_RIGHT 4 +#define CRANE_UP 5 +#define CRANE_DOWN 6 +#define CRANE_DROP 7 +#define CRANE_PICKUP 8 +#define CRANE_TRANSFER 9 + +vector crane_mins = '2072 -56 -184'; +vector crane_maxs = '2352 296 -48'; +vector crane_pos; + +float command = CRANE_NONE; +float bad_object_count = 0; // How many bad objects have we disposed of so far ? +float crane_have_object = false; // Is the crane currently holding an object ? +float crane_light_state = false; + +entity bindEntity; +entity laserEntity; +entity tracestopEntity; + +/*********************************************************************** + + Sounds + +***********************************************************************/ + +void cache_crane_sounds() { + sys.cacheSoundShader( "al3_crane_fingers_open" ); + sys.cacheSoundShader( "al3_crane_fingers_close" ); + sys.cacheSoundShader( "al3_crane_loop" ); + sys.cacheSoundShader( "al3_crane_end" ); + sys.cacheSoundShader( "al3_crane_updown_loop" ); + sys.cacheSoundShader( "al3_crane_updown_end" ); +} + +void sound_crane_fingers_open() { + $crane.startSoundShader ("al3_crane_fingers_open", SND_CHANNEL_VOICE2 ); +} + +void sound_crane_fingers_close() { + $crane.startSoundShader ("al3_crane_fingers_close", SND_CHANNEL_VOICE2 ); +} + +void sound_crane_loop() { + $crane_carrier.startSoundShader ("al3_crane_loop", SND_CHANNEL_VOICE2 ); +} + +void sound_crane_stop() { + $crane_carrier.startSoundShader ("al3_crane_end", SND_CHANNEL_VOICE2 ); +} + +void sound_crane_updown_loop() { + $crane_carrier.startSoundShader ("al3_crane_updown_loop", SND_CHANNEL_VOICE2 ); +} + +void sound_crane_updown_end() { + $crane_carrier.startSoundShader ("al3_crane_updown_end", SND_CHANNEL_VOICE2 ); +} + +/*********************************************************************** + + Crane + +***********************************************************************/ + +/* +============ +update_laser + +updates laser color and checks if we can pick up an object +============ +*/ +void update_laser() { + vector begin = $crane_trace_start.getWorldOrigin(); + vector send = $crane_stoptrace_end.getWorldOrigin(); + vector lend = $laser_trace_end.getWorldOrigin(); + + sys.trace( begin, send, '0 0 0', '0 0 0', MASK_SOLID|CONTENTS_RENDERMODEL, $crane_hang ); + tracestopEntity = sys.getTraceEntity(); + + sys.trace( begin, lend, '0 0 0', '0 0 0', MASK_SOLID|CONTENTS_RENDERMODEL, $crane_hang ); + laserEntity = sys.getTraceEntity(); + if ( !( !laserEntity ) && ( laserEntity != $world ) ) { + // can't move down further once the laser detects an object + if ( !( !tracestopEntity ) && ( tracestopEntity != $world ) && ( command == CRANE_DOWN ) ) { + command = CRANE_NONE; + } + + if ( !crane_light_state ) { + $crane_light.setColor( .9, .25, .25 ); + $cg_right.setGuiParm ( "gui_parm1" , 1); + $cg_left.setGuiParm ( "gui_parm1" , 1); + + sys.trigger( $crane_speaker ); + crane_light_state = true; + } + + } else if ( crane_light_state ) { + $crane_light.setColor( .2, .8, .9 ); + $cg_right.setGuiParm ( "gui_parm1" , 0); + $cg_left.setGuiParm ( "gui_parm1" , 0); + + sys.trigger( $crane_speaker ); + crane_light_state = false; + } +} + +/* +============ +crane_move +============ +*/ +void crane_move( entity part, float dir, float amount, float stopOnCommand ) { + float cmd; + + if ( amount < 0.01 ) { + return; + } + + if ( ( dir == UP ) || ( dir == DOWN ) ) { + sound_crane_updown_loop(); + } else { + sound_crane_loop(); + } + + part.move( dir, amount ); + + if ( !stopOnCommand ) { + sys.waitFor( part ); + } else { + cmd = command; + while( command == cmd ) { + sys.waitFrame(); + update_laser(); + if ( !part.isMoving() ) { + break; + } + } + part.stopMoving(); + } + + if ( ( dir == UP ) || ( dir == DOWN ) ) { + sound_crane_updown_end(); + } else { + sound_crane_stop(); + } + + crane_pos = $crane_position.getWorldOrigin(); +} + +/* +============ +crane_cmd_drop + +unbind and open the claw +============ +*/ +void crane_cmd_drop() { + sound_crane_fingers_open(); + + $crane.setFingerAngle( -60 ); + + bindEntity.unbind(); + bindEntity = $null_entity; + crane_have_object = false; + + update_laser(); + + $main_control_gui.setGuiParm ( "gui_parm1" , 0); +} + +/* +============ +crane_pickup + +close the claw and bind +============ +*/ +void crane_cmd_pickup() { + vector begin, end; + string bindJoint, bindBody; + + if ( !( !bindEntity ) ) { + return; + } + + crane_have_object = false; + bindJoint = bindBody = ""; + + sound_crane_fingers_close(); + + $crane.setFingerAngle( 20 ); + sys.wait( 2.0f ); + $crane.stopFingers(); + + begin = $crane_trace_start.getWorldOrigin(); + end = $crane_trace_end.getWorldOrigin(); + + sys.trace( begin, end, '0 0 0', '0 0 0', MASK_SOLID|CONTENTS_RENDERMODEL, $crane_hang ); + bindEntity = sys.getTraceEntity(); + if ( !( !bindEntity ) && ( bindEntity != $world ) ) { + bindJoint = sys.getTraceJoint(); + + if ( bindJoint ) { + bindBody = sys.getTraceBody(); + if ( bindBody ) { + bindEntity.setKey( "bindConstraint bind1", "fixed " + bindBody + " " + bindJoint ); + bindEntity.bindToJoint( $crane, "crane", 1 ); + crane_have_object = true; + } + } else { + bindEntity.bindToJoint( $crane, "crane", 1 ); + crane_have_object = true; + } + } + + // automatically move up + crane_move( $crane_hang, UP, crane_maxs_z - crane_pos_z, false ); + + if ( !crane_have_object ) { + sound_crane_fingers_open(); + $crane.setFingerAngle( -60 ); + bindEntity = $null_entity; + } else { + $main_control_gui.setGuiParm ( "gui_parm1" , 1); + } +} + +/* +============ +kill_lastobject +============ +*/ +void kill_lastobject( entity lastobject ) { + $main_control_gui.setGuiParm( "gui_parm1" , 1 ); + + //sys.print( "kill_lastobject: " + lastobject.getName() + "\n" ); + + if ( ( lastobject != $bad_object_1 ) && ( lastobject != $bad_object_2 ) ) { + // deleting the player != smart + if ( lastobject.getKey( "spawnclass" ) != "idPlayer" ) { + lastobject.remove(); + } + return; + } + + lastobject.remove(); + bad_object_count++; + + if ( bad_object_count == 1 ) { + + thread crossFadeEnt ($puke_light, '0 0.52 0.07', '0 0.26 0.035', 5.0); + sys.wait (5); + sys.trigger ($cranewarning_2); + + } else if ( bad_object_count == 2 ) { + + sys.trigger ($crane_fog); + thread crossFadeEnt ($puke_light, '0 0.26 0.035', '0 0 0', 5.0); + sys.wait (5); + sys.trigger ($cranewarning_3); + + // Get rid of the trigger_once for the computer voice, if they + // haven't triggered it yet. + $toxin_trigger.remove(); + + sys.trigger ($disposal_door); + sys.trigger ($disposal_setshaderparm); + sys.trigger ($cgdoors_setshaderparm); + sys.trigger ($clear_colorchange); + + $disposal_outer_gui.setGuiParm( "gui_parm1", 1 ); + $disposal_inner_gui.setGuiParm( "gui_parm1", 1 ); + + $dd_light1.setColor (0.0, 0.5, 0.0); + $dd_light2.setColor (0.0, 0.5, 0.0); + + $dd_green_dec.show (); + $dd_red_dec.hide (); + + sys.trigger ($trigger_relay_262); + sys.wait (5); + sys.trigger ($alpha3_sarge1); + sys.wait (7); + sys.trigger ($trigger_relay_264); + } +} + +/* +============ +crane_cmd_transfer + +move crane to the drop off point +only if it has an object bound +drop the bound object + +eventually this will send the object to the new area +============ +*/ +void crane_cmd_transfer() { + float move_x, move_y, move_z; + float xdir, ydir, zdir; + float xrdir, yrdir, zrdir; + vector drop_point; + + if ( !crane_have_object ) { + return; + } + + $crane_carrier.speed( 40 ); + $crane_top.speed( 40 ); + + // + // How are we going to get to the receptible ? + // + drop_point = $crane_drop.getWorldOrigin(); + + // Calculate X movement + if ( crane_pos_x >= drop_point_x ) { + move_x = crane_pos_x - drop_point_x; + xdir = WEST; + xrdir = EAST; + } else { + move_x = drop_point_x - crane_pos_x; + xdir = EAST; + xrdir = WEST; + } + + // Calculate Y movement + if ( crane_pos_y >= drop_point_y ) { + move_y = crane_pos_y - drop_point_y; + ydir = SOUTH; + yrdir = NORTH; + } else { + move_y = drop_point_y - crane_pos_y; + ydir = NORTH; + yrdir = SOUTH; + } + + sound_crane_loop(); + $crane_carrier.move( ydir, move_y ); + sys.waitFor( $crane_carrier ); + sound_crane_stop(); + + sound_crane_loop(); + $crane_top.move( xdir, move_x ); + sys.waitFor( $crane_top ); + sound_crane_stop(); + + sys.wait( 1 ); + crane_cmd_drop(); + + sys.wait( 0.5 ); + + sound_crane_loop(); + $crane_top.move( xrdir, move_x ); + sys.waitFor( $crane_top ); + sound_crane_stop(); + + sound_crane_loop(); + $crane_carrier.move( yrdir, move_y ); + sys.waitFor( $crane_carrier ); + sound_crane_stop(); + + $crane_top.speed( 30 ); + $crane_carrier.speed( 30 ); +} + +/* +============ +crane_update_loop +============ +*/ +void crane_update_loop() { + while( 1 ) { + command = CRANE_NONE; + while( command == CRANE_NONE ) { + update_laser(); + sys.waitFrame(); + } + + if ( command == CRANE_FORWARD ) { + if ( crane_pos_x > crane_mins_x ) { + crane_move( $crane_top, WEST, crane_pos_x - crane_mins_x, true ); + } + + } else if ( command == CRANE_BACK ) { + if ( crane_pos_x < crane_maxs_x ) { + crane_move( $crane_top, EAST, crane_maxs_x - crane_pos_x, true ); + } + + } else if ( command == CRANE_LEFT ) { + if ( crane_pos_y > crane_mins_y ) { + crane_move( $crane_carrier, SOUTH, crane_pos_y - crane_mins_y, true ); + } + + } else if ( command == CRANE_RIGHT ) { + if ( crane_pos_y < crane_maxs_y ) { + crane_move( $crane_carrier, NORTH, crane_maxs_y - crane_pos_y, true ); + } + } else if ( command == CRANE_UP ) { + if ( crane_pos_z < crane_maxs_y ) { + crane_move( $crane_hang, UP, crane_maxs_z - crane_pos_z, true ); + } + + } else if ( command == CRANE_DOWN ) { + if ( ( crane_pos_z > crane_mins_z ) && !bindEntity && ( !tracestopEntity || ( tracestopEntity == $world ) ) ) { + crane_move( $crane_hang, DOWN, crane_pos_z - crane_mins_z, true ); + } + } else if ( command == CRANE_DROP ) { + crane_cmd_drop(); + + } else if ( command == CRANE_PICKUP ) { + crane_cmd_pickup(); + + } else if ( command == CRANE_TRANSFER ) { + crane_cmd_transfer(); + } + } +} + +/*********************************************************************** + + User interface + +***********************************************************************/ + +void crane_forward() { + command = CRANE_FORWARD; +} + +void crane_back() { + command = CRANE_BACK; +} + +void crane_left() { + command = CRANE_LEFT; +} + +void crane_right() { + command = CRANE_RIGHT; +} + +void crane_up() { + command = CRANE_UP; +} + +void crane_down() { + command = CRANE_DOWN; +} + +void crane_stop() { + command = CRANE_NONE; +} + +void crane_drop() { + command = CRANE_DROP; +} + +void crane_pickup() { + command = CRANE_PICKUP; +} + +void crane_transfer() { + command = CRANE_TRANSFER; +} + +/*********************************************************************** + + initialization + +***********************************************************************/ + +/* +============ +init_crane +============ +*/ +void init_crane() { + cache_crane_sounds(); + + crane_pos = $crane_position.getWorldOrigin(); + + $crane_light.bindToJoint( $crane, "crane", 1 ); + + // crane_position + $crane_trace_start.bindToJoint( $crane, "crane", 1 ); + $crane_trace_end.bindToJoint( $crane, "crane", 1 ); + $crane_stoptrace_end.bindToJoint( $crane, "crane", 1 ); + $laser_trace_end.bindToJoint( $crane, "crane", 1 ); + + $crane_carrier.speed( 30 ); + $crane_top.speed( 30 ); + $crane_hang.speed( 45 ); + $crane_top.bind( $crane_carrier ); + $crane_hang.bind( $crane_top ); + + $crane.bind( $crane_hang ); + $crane.setFingerAngle( -60 ); + + thread crane_update_loop(); +} + +/* namespace map_alphalabs3 */ } diff --git a/base/script/map_alphalabs4.script b/base/script/map_alphalabs4.script new file mode 100644 index 00000000..0b5d75af --- /dev/null +++ b/base/script/map_alphalabs4.script @@ -0,0 +1,2450 @@ +namespace map_alphalabs4 { + + // Start Globals + + // Alphapuzzle + float g_fConveyDoorRefCount = 0.0; + float g_fWeldDoorRefCount = 0.0; + + // End Globals + + /////////////////////////////////////////////// + // blinky eyes + /////////////////////////////////////////////// + + void cache_sounds() { + sys.cacheSoundShader ("al4_openslats_2s"); + sys.cacheSoundShader ("al4_support_05s"); + sys.cacheSoundShader ("small_mover_impact"); + sys.cacheSoundShader ("al4_plat_movement"); + sys.cacheSoundShader ("al4_slide_3s"); + sys.cacheSoundShader ("jacob"); + sys.cacheSoundShader ("al4_plat_start"); + sys.cacheSoundShader ("al4_plat_loop"); + sys.cacheSoundShader ("al4_plat_stop"); + } + + void eKillSound (entity ent, float eTime) { + sys.wait (eTime); + ent.stopSound( SND_CHANNEL_ANY, false ); + } + + void end_vagscene() { + $speaker_vagfight.fadeSound (SND_CHANNEL_ANY, -60, 5); // Fade out after the fight + } + + void start_vagscene() { + sys.wait (22.5); + sys.trigger ($speaker_vagfight); + + } + + /////////////////////////////////////////////// + // blinky eyes + /////////////////////////////////////////////// + + void eyesbegone() + { + $eyes1.time(.5); + $eyes1.accelTime(0.1); + $eyes1.decelTime(0.1); + $eyes1.move(DOWN, 32); + sys.waitFor($eyes1); + sys.trigger($eye1_light); + } + + void bind_objects() { + + $frontroom_door2.bind($frontroom_door1); + $frontroom_door3.bind($frontroom_door2); + $frontroom_door4.bind($frontroom_door3); + + $ambush_door_2.bind($ambush_door_1); + $ambush_door_3.bind($ambush_door_2); + $ambush_door_4.bind($ambush_door_3); + + $scissor_door_2.bind($scissor_door_1); + $scissor_door_3.bind($scissor_door_2); + $scissor_door_4.bind($scissor_door_3); + + $back_scissor_door_2.bind($back_scissor_door_1); + $back_scissor_door_3.bind($back_scissor_door_2); + $back_scissor_door_4.bind($back_scissor_door_3); + + } + + void frontroom_door_open() + { + + $frontroom_door1.startSoundShader ("al4_openslats_2s", SND_CHANNEL_VOICE ); + $frontroom_door1.time(2); + $frontroom_door1.accelTime(.5); + $frontroom_door1.decelTime(.5); + $frontroom_door1.rotateOnce('-90 0 0'); + $frontroom_door2.time(2); + $frontroom_door2.accelTime(.5); + $frontroom_door2.decelTime(.5); + $frontroom_door2.rotateOnce('180 0 0'); + $frontroom_door3.time(2); + $frontroom_door3.accelTime(.5); + $frontroom_door3.decelTime(.5); + $frontroom_door3.rotateOnce('-180 0 0'); + $frontroom_door4.time(2); + $frontroom_door4.accelTime(.5); + $frontroom_door4.decelTime(.5); + $frontroom_door4.rotateOnce('180 0 0'); + } + + void ambush_door_open() + { + + $ambush_door_1.startSoundShader ("al4_openslats_2s", SND_CHANNEL_VOICE ); + $ambush_door_1.time(2); + $ambush_door_1.accelTime(.5); + $ambush_door_1.decelTime(.5); + $ambush_door_1.rotateOnce('0 0 -90'); + $ambush_door_2.time(2); + $ambush_door_2.accelTime(.5); + $ambush_door_2.decelTime(.5); + $ambush_door_2.rotateOnce('0 0 180'); + $ambush_door_3.time(2); + $ambush_door_3.accelTime(.5); + $ambush_door_3.decelTime(.5); + $ambush_door_3.rotateOnce('0 0 -180'); + $ambush_door_4.time(2); + $ambush_door_4.accelTime(.5); + $ambush_door_4.decelTime(.5); + $ambush_door_4.rotateOnce('0 0 180'); + } + + void scissor_door_open() + { + $scissor_door_1.startSoundShader ("al4_openslats_2s", SND_CHANNEL_VOICE ); + $scissor_door_1.time(2); + $scissor_door_1.accelTime(.5); + $scissor_door_1.decelTime(.5); + $scissor_door_1.rotateOnce('0 0 90'); + $scissor_door_2.time(2); + $scissor_door_2.accelTime(.5); + $scissor_door_2.decelTime(.5); + $scissor_door_2.rotateOnce('0 0 -180'); + $scissor_door_3.time(2); + $scissor_door_3.accelTime(.5); + $scissor_door_3.decelTime(.5); + $scissor_door_3.rotateOnce('0 0 180'); + $scissor_door_4.time(2); + $scissor_door_4.accelTime(.5); + $scissor_door_4.decelTime(.5); + $scissor_door_4.rotateOnce('0 0 -180'); + } + + void back_scissor_door1_open() + { + + $back_scissor_door_1.startSoundShader ("al4_openslats_2s", SND_CHANNEL_VOICE ); + $back_scissor_door_1.time(2); + $back_scissor_door_1.accelTime(.5); + $back_scissor_door_1.decelTime(.5); + $back_scissor_door_1.rotateOnce('-90 0 0'); + $back_scissor_door_2.time(2); + $back_scissor_door_2.accelTime(.5); + $back_scissor_door_2.decelTime(.5); + $back_scissor_door_2.rotateOnce('180 0 0'); + $back_scissor_door_3.time(2); + $back_scissor_door_3.accelTime(.5); + $back_scissor_door_3.decelTime(.5); + $back_scissor_door_3.rotateOnce('-180 0 0'); + $back_scissor_door_4.time(2); + $back_scissor_door_4.accelTime(.5); + $back_scissor_door_4.decelTime(.5); + $back_scissor_door_4.rotateOnce('180 0 0'); + } + /* + + A l p h a p u z z l e c o d e s t a r t s h e r e + + */ + + + void ExtendPlatform1() + { + $jump_platform1.time(3); + sys.trigger ($speaker_jump_platform); + $jump_platform1.move( NORTH, 232 ); + sys.waitFor( $jump_platform1 ); + } + + + void SetupRotatingBridge() + { + $rotating_bridge.bind( $rotating_bridge_joint ); + + $bridge_right_bottom_joint.bind( $rotating_bridge ); + $bridge_left_bottom_joint.bind( $rotating_bridge ); + +// $rotating_bridge_railing_right.bind( $rotating_bridge ); +// $rotating_bridge_railing_left.bind( $rotating_bridge ); + + $bridge_right_top_hydro_machine.bind( $rotating_bridge_spinner ); + $bridge_left_top_hydro_machine.bind( $rotating_bridge_spinner ); + + $bridge_right_top_hydro.bind( $bridge_right_top_hydro_machine ); + $bridge_left_top_hydro.bind( $bridge_left_top_hydro_machine ); + + $bridge_right_bottom_hydro.bind( $bridge_right_top_hydro ); + $bridge_left_bottom_hydro.bind( $bridge_left_top_hydro ); + + $rotating_bridge.time( 0.1 ); + $rotating_bridge.rotateOnce( '-60 0 0' ); + sys.waitFor( $rotating_bridge ); + + $bridge_right_top_hydro.time( 0.1 ); + $bridge_left_top_hydro.time( 0.1 ); + $bridge_right_top_hydro.rotateOnce( '-30 0 0' ); + $bridge_left_top_hydro.rotateOnce( '-30 0 0' ); + sys.waitFor( $bridge_left_top_hydro ); + + $bridge_right_bottom_hydro.time( 0.1 ); + $bridge_left_bottom_hydro.time( 0.1 ); + $bridge_right_bottom_hydro.move( REL_UP, 272 ); + $bridge_left_bottom_hydro.move( REL_UP, 272 ); + sys.waitFor( $bridge_left_bottom_hydro ); + + $bridge_right_bottom_joint.time( 0.1 ); + $bridge_left_bottom_joint.time( 0.1 ); + $bridge_right_bottom_joint.move( REL_FORWARD, 16 ); + $bridge_left_bottom_joint.move( REL_FORWARD, 16 ); + sys.waitFor( $bridge_left_bottom_hydro ); + } + + + void RotatingBridgeStart() + { + $bridge_right_bottom_hydro.time( 5.0 ); + $bridge_left_bottom_hydro.time( 5.0 ); + $bridge_right_bottom_joint.time( 5.0 ); + $bridge_left_bottom_joint.time( 5.0 ); + $rotating_bridge.time( 5.0 ); + $bridge_right_bottom_hydro.move( REL_DOWN, 272 ); + $bridge_left_bottom_hydro.move( REL_DOWN, 272 ); + $bridge_right_bottom_joint.move( REL_BACK, 16 ); + $bridge_left_bottom_joint.move( REL_BACK, 16 ); + sys.trigger ($speaker_rotating_bridge); + $rotating_bridge.rotateOnce( '60 0 0' ); + sys.waitFor( $rotating_bridge ); + } + + + void RotatingBridgeLoop() + { + while( true ) + { + $rotating_bridge_spinner.accelTime( 1.0 ); + $rotating_bridge_spinner.time( 5.0 ); + $rotating_bridge_spinner.decelTime( 1.0 ); + $rotating_bridge_joint.accelTime( 1.0 ); + $rotating_bridge_joint.time( 5.0 ); + $rotating_bridge_joint.decelTime( 1.0 ); + sys.trigger ($speaker_rotating_bridge); + $rotating_bridge_spinner.rotateOnce( '0 90 0' ); + sys.trigger ($speaker_rotbridge_tech); + $rotating_bridge_joint.rotateOnce( '0 90 0' ); + sys.waitFor( $rotating_bridge_joint ); + + sys.wait( 2.0 ); + } + } + + + void SectionBridgeGuardSequence( entity eLeftGuard, entity eRightGuard, float nOrient ) + { + if( nOrient == NORTH ) + { + eLeftGuard.time( 0.5 ); + eLeftGuard.decelTime( 0.25 ); + + eRightGuard.time( 0.5 ); + eRightGuard.decelTime( 0.25 ); + + eLeftGuard.startSoundShader ("al4_support_05s", SND_CHANNEL_ANY); + + eLeftGuard.rotateOnce( '-90 0 0' ); + eRightGuard.rotateOnce( '90 0 0' ); + sys.wait( 0.5 ); + return; + } + + if( nOrient == SOUTH ) + { + eLeftGuard.time( 0.5 ); + eLeftGuard.decelTime( 0.25 ); + + eRightGuard.time( 0.5 ); + eRightGuard.decelTime( 0.25 ); + + eLeftGuard.startSoundShader ("al4_support_05s", SND_CHANNEL_ANY); + eLeftGuard.rotateOnce( '-90 0 0' ); + eRightGuard.rotateOnce( '90 0 0' ); + sys.wait( 0.5 ); + return; + } + + if( nOrient == EAST ) + { + eLeftGuard.time( 0.5 ); + eLeftGuard.decelTime( 0.25 ); + + eRightGuard.time( 0.5 ); + eRightGuard.decelTime( 0.25 ); + + eLeftGuard.startSoundShader ("al4_support_05s", SND_CHANNEL_ANY); + eLeftGuard.rotateOnce( '0 0 -90' ); + eRightGuard.rotateOnce( '0 0 90' ); + sys.wait( 0.5 ); + return; + } + + if( nOrient == WEST ) + { + eLeftGuard.time( 0.5 ); + eLeftGuard.decelTime( 0.25 ); + + eRightGuard.time( 0.5 ); + eRightGuard.decelTime( 0.25 ); + + eLeftGuard.startSoundShader ("al4_support_05s", SND_CHANNEL_ANY); + eLeftGuard.rotateOnce( '0 0 90' ); + eRightGuard.rotateOnce( '0 0 -90' ); + sys.wait( 0.5 ); + return; + } + } + + void stop_platsound (entity ent, float fTime) { + sys.wait (fTime); + ent.startSoundShader ("small_mover_impact", SND_CHANNEL_ANY); + } + + void SectionBridgePartsSequence( string strBaseName, float nOrient, float nCount ) + { + string strTemp; + + entity eSection; + entity eLight; + entity eLeftGuard; + entity eRightGuard; + float fTime; + string sTemp; + + float ii; + + for( ii = nCount ; ii > 0; ii-- ) + { + strTemp = strBaseName + "_part" + ii; + eSection = sys.getEntity( strTemp ); + sTemp = strTemp; + + //strTemp = strBaseName + "_guard_left" + ii; + //eLeftGuard = sys.getEntity( strTemp ); + + //strTemp = strBaseName + "_guard_right" + ii; + //eRightGuard = sys.getEntity( strTemp ); + + //eLeftGuard.bind( eSection ); + //eRightGuard.bind( eSection ); + + eSection.accelTime( 0.25 ); + fTime = ( 1.0 + ((ii - 1) / 2) ); + eSection.time( fTime ); + eSection.decelTime( 0.25 ); + + + +// void eKillSound (entity ent, float eTime) { + +// This sounds crappy. Killing the mover sound is enough... +// thread stop_platsound (eSection, fTime); + + eSection.move( nOrient, (128 + ((ii - 1) * 64) ) ); + thread eKillSound (eSection, fTime); + eSection.startSoundShader ("al4_plat_movement", SND_CHANNEL_ANY); + sys.wait( 0.9 ); + + //thread SectionBridgeGuardSequence( eLeftGuard, eRightGuard, nOrient); + + strTemp = strBaseName + "_light" + ii + "_left"; + eLight = sys.getEntity( strTemp ); + + if( eLight ) + { + eLight.On(); + } + + strTemp = strBaseName + "_light" + ii + "_right"; + eLight = sys.getEntity( strTemp ); + + if( eLight ) + { + eLight.On(); + } + } + } + + void SectionBridgeRailsSequence( string strBaseName, float nDirection, float nCount ) + { + string strRightRail; + string strLeftRail; + + entity eRightRail; + entity eLeftRail; + + strRightRail = strBaseName + "_rail_right"; + eRightRail = sys.getEntity( strRightRail ); + + strLeftRail = strBaseName + "_rail_left"; + eLeftRail = sys.getEntity( strLeftRail ); + + eRightRail.time( 3.0 ); + eRightRail.accelTime( 0.5 ); + eRightRail.decelTime( 0.5 ); + eLeftRail.time( 3.0 ); + eLeftRail.accelTime( 0.5 ); + eLeftRail.decelTime( 0.5 ); + + eRightRail.move( nDirection, ((nCount + 1) * 64) ); + + eRightRail.startSoundShader ("al4_slide_3s", SND_CHANNEL_ANY); + + eLeftRail.move( nDirection, ((nCount + 1) * 64) ); + sys.waitFor( eLeftRail ); + } + + + void ExtendSectionBridges() + { + SectionBridgeRailsSequence( "sectionbridge1", WEST, 6 ); + SectionBridgePartsSequence( "sectionbridge1", WEST, 6 ); + sys.trigger($bridge1_aas_block); + + SectionBridgeRailsSequence( "sectionbridge2", NORTH, 6 ); + SectionBridgePartsSequence( "sectionbridge2", NORTH, 6 ); + sys.trigger($bridge2_aas_block); + + SectionBridgeRailsSequence( "sectionbridge3", SOUTH, 6 ); + SectionBridgePartsSequence( "sectionbridge3", SOUTH, 6 ); + sys.trigger($bridge3_aas_block); + + SectionBridgeRailsSequence( "sectionbridge4", SOUTH, 8 ); + SectionBridgePartsSequence( "sectionbridge4", SOUTH, 8 ); + sys.trigger($bridge4_aas_block); + + SectionBridgeRailsSequence( "sectionbridge5", SOUTH, 8 ); + SectionBridgePartsSequence( "sectionbridge5", SOUTH, 8 ); + sys.trigger($bridge5_aas_block); + + SectionBridgeRailsSequence( "sectionbridge6", SOUTH, 6 ); + SectionBridgePartsSequence( "sectionbridge6", SOUTH, 6 ); + sys.trigger($bridge6_aas_block); + } + + + void SectionBridgeRemoveOne( float nBridge ) + { + string strRemove; + entity eRemove; + float ii; + + strRemove = "sectionbridge" + nBridge + "_rail_right"; + eRemove = sys.getEntity( strRemove ); + eRemove.remove(); + + strRemove = "sectionbridge" + nBridge + "_rail_left"; + eRemove = sys.getEntity( strRemove ); + eRemove.remove(); + + for( ii = 1; ii > 0; ii++ ) + { + strRemove = "sectionbridge" + nBridge + "_part" + ii; + eRemove = sys.getEntity( strRemove ); + + if( !eRemove ) + break; + + eRemove.remove(); + + //strRemove = "sectionbridge" + nBridge + "_guard_right" + ii; + //eRemove = sys.getEntity( strRemove ); + //eRemove.remove(); + + //strRemove = "sectionbridge" + nBridge + "_guard_left" + ii; + //eRemove = sys.getEntity( strRemove ); + //eRemove.remove(); + } + } + + + void SectionBridgeRemoveAll() + { + float ii; + + for( ii = 1; ii <= 6; ii++ ) + { + SectionBridgeRemoveOne( ii ); + } + } + + + void SetupRideOfDeathObjects() + { + entity eParent; + entity eChild; + + float ii; + + for( ii = 1; ii < 7; ii++ ) + { + eParent = sys.getEntity( "ride_of_death" + ii + "_parent" ); + eChild = sys.getEntity( "ride_of_death" + ii ); + eChild.bind( eParent ); + + eParent = eChild; + eChild = sys.getEntity( "ride_of_death" + ii + "_front_support" ); + eChild.bind( eParent ); + + eChild = sys.getEntity( "ride_of_death" + ii + "_rear_support" ); + eChild.bind( eParent ); + + eChild.time( 0.1 ); + eChild.move( SOUTH, 64 ); + sys.waitFor( eChild ); + + eChild = sys.getEntity( "ride_of_death" + ii + "_light1" ); + eChild.bind( eParent ); + eChild.Off(); + + eChild = sys.getEntity( "ride_of_death" + ii + "_light2" ); + eChild.bind( eParent ); + eChild.Off(); + } + } + + void ROD_startSound (entity ent) { + ent.startSoundShader ("al4_plat_start", SND_CHANNEL_VOICE); + sys.wait (0.55); + ent.startSoundShader ("al4_plat_loop", SND_CHANNEL_VOICE2); + } + + void ROD_stopSound (entity ent) { + ent.startSoundShader ("al4_plat_stop", SND_CHANNEL_VOICE2); + } + + void ROD_stopSound_time (entity ent, float fTime) { + sys.wait (fTime); + ent.startSoundShader ("al4_plat_stop", SND_CHANNEL_VOICE2); + } + + + void RideOfDeathPath( string strRideName ) + { + entity eRide; + entity eRideBase; + entity eFrontSupport; + entity eRearSupport; + entity eLight1; + entity eLight2; + + eRide = sys.getEntity( strRideName + "_parent" ); + eRideBase = sys.getEntity (strRideName); + + eFrontSupport = sys.getEntity( strRideName + "_front_support" ); + eRearSupport = sys.getEntity( strRideName + "_rear_support" ); + eLight1 = sys.getEntity( strRideName + "_light1" ); + eLight2 = sys.getEntity( strRideName + "_light2" ); + + eLight1.fadeInLight( 2.0 ); + eLight2.fadeInLight( 2.0 ); + + // west 2112 + thread ROD_startSound (eRideBase); + eRide.time( 33.0 ); // 64u/sec + eRide.accelTime( 0.0 ); + eRide.decelTime( 0.5 ); + eRide.move( WEST, 2112 ); + + sys.waitFor( eRide ); + + eRearSupport.time( 1.0 ); + eRearSupport.move( NORTH, 64 ); + + sys.waitFor( eRearSupport ); + + ROD_stopSound (eRideBase); + + sys.wait( 1.0 ); + + eFrontSupport.time( 1.0 ); + eFrontSupport.move( NORTH, 64 ); + sys.waitFor( eFrontSupport ); + + thread ROD_startSound (eRideBase); + + // west 64 + eRide.time( 1.0 ); // 64u/sec + eRide.accelTime( 0.5 ); + eRide.decelTime( 0.0 ); + eRide.move( WEST, 64 ); + sys.waitFor( eRide ); + + // turn C 90deg + eRide.time( 4.0 ); // 22.5deg/sec + eRide.accelTime( 0.0 ); + eRide.decelTime( 0.0 ); + eRide.rotateOnce( '0 -90 0' ); + sys.waitFor( eRide ); + + // 41s + + // north 64 + eRide.time( 1.0 ); + eRide.accelTime( 0.0 ); + eRide.decelTime( 0.5 ); + eRide.move( NORTH, 64 ); + + sys.waitFor( eRide ); + + ROD_stopSound (eRideBase); + + eFrontSupport.time( 1.0 ); + eFrontSupport.move( EAST, 64 ); + + sys.waitFor( eFrontSupport ); + sys.wait( 1.0 ); + + eRearSupport.time( 1.0 ); + eRearSupport.move( EAST, 64 ); + + sys.waitFor( eRearSupport ); + + thread ROD_startSound (eRideBase); + + // north 352 + eRide.time( 5.5 ); + eRide.accelTime( 0.5 ); + eRide.decelTime( 0.5 ); + eRide.move( NORTH, 352 ); + + sys.waitFor( eRide ); + + // down 320 + eRide.time( 5.0 ); + eRide.accelTime( 0.5 ); + eRide.decelTime( 0.5 ); + eRide.move( DOWN, 320 ); + + sys.waitFor( eRide ); + + // north 480 + eRide.time( 7.5 ); + eRide.accelTime( 0.5 ); + eRide.decelTime( 0.0 ); + eRide.move( NORTH, 480 ); + + sys.waitFor( eRide ); + + // 22s + + // bind to origin 1 + eRide.bind( $ride_of_death_origin1 ); + + // turn CC 90deg + $ride_of_death_origin1.time( 4.0 ); + $ride_of_death_origin1.accelTime( 0.0 ); + $ride_of_death_origin1.decelTime( 0.0 ); + $ride_of_death_origin1.rotateOnce( '0 90 0' ); + + sys.waitFor( $ride_of_death_origin1 ); + + // unbind from origin 1 + eRide.unbind(); + $ride_of_death_origin1.restorePosition(); + + // 896 + eRide.time( 14.0 ); + eRide.accelTime( 0.0 ); + eRide.decelTime( 0.0 ); + eRide.move( WEST, 896 ); + + sys.waitFor( eRide ); + + // bind to origin 2 + eRide.bind( $ride_of_death_origin2 ); + + // turn CC 90deg + $ride_of_death_origin2.time( 4.0 ); + $ride_of_death_origin2.accelTime( 0.0 ); + $ride_of_death_origin2.decelTime( 0.0 ); + $ride_of_death_origin2.rotateOnce( '0 90 0' ); + + sys.waitFor( $ride_of_death_origin2 ); + + // unbind from origin 2 + eRide.unbind(); + + $ride_of_death_origin2.restorePosition(); + + // 22s + + // south 480 + eRide.time( 7.5 ); + eRide.accelTime( 0.0 ); + eRide.decelTime( 0.5 ); + eRide.move( SOUTH, 480 ); + + sys.waitFor( eRide ); + + // up 320 + eRide.time( 5.0 ); + eRide.accelTime( 0.5 ); + eRide.decelTime( 0.5 ); + eRide.move( UP, 320 ); + + sys.waitFor( eRide ); + + // south 1182 + thread ROD_stopSound_time (eRideBase, 17); + eRide.time( 18.5 ); + eRide.accelTime( 0.5 ); + eRide.decelTime( 0.0 ); + eRide.move( SOUTH, 1182 ); + + sys.waitFor( eRide ); + //ROD_stopSound (eRideBase); + eRide.restorePosition(); + + // 31s + } + // 116s + + + void RideOfDeathLoop() + { + while( true ) + { + thread RideOfDeathPath( "ride_of_death1" ); + sys.wait( 20.0 ); + + thread RideOfDeathPath( "ride_of_death2" ); + sys.wait( 20.0 ); + + thread RideOfDeathPath( "ride_of_death3" ); + sys.wait( 20.0 ); + + thread RideOfDeathPath( "ride_of_death4" ); + sys.wait( 20.0 ); + + thread RideOfDeathPath( "ride_of_death5" ); + sys.wait( 20.0 ); + + thread RideOfDeathPath( "ride_of_death6" ); + sys.wait( 20.0 ); + } + } + + + void RemoveRideOfDeathObjects() + { + entity eObject; + float ii; + + for( ii = 1; ii < 7; ii++ ) + { + eObject = sys.getEntity( "ride_of_death" + ii + "_parent" ); + eObject.remove(); + + eObject = sys.getEntity( "ride_of_death" + ii ); + eObject.remove(); + + eObject = sys.getEntity( "ride_of_death" + ii + "_front_support" ); + eObject.remove(); + + eObject = sys.getEntity( "ride_of_death" + ii + "_rear_support" ); + eObject.remove(); + + eObject = sys.getEntity( "ride_of_death" + ii + "_light1" ); + eObject.remove(); + + eObject = sys.getEntity( "ride_of_death" + ii + "_light2" ); + eObject.remove(); + } + } + + + void SetupWeldingMachine( string strBaseName ) + { + // the cover object is not bound in this function + entity eParent; + entity eChild; + + eParent = sys.getEntity( strBaseName + "_support" ); + eChild = sys.getEntity( strBaseName + "_right_grip" ); + eChild.bind( eParent ); + + eChild = sys.getEntity( strBaseName + "_left_grip" ); + eChild.bind( eParent ); + + eChild = sys.getEntity( strBaseName + "_base" ); + eChild.bind( eParent ); + + eParent = eChild; + eChild = sys.getEntity( strBaseName + "_arm" ); + eChild.bind( eParent ); + + eParent = eChild; + eChild = sys.getEntity( strBaseName + "_light" ); + eChild.bind( eParent ); + eChild.Off(); + + eChild = sys.getEntity( strBaseName + "_arm" ); + eChild.time( 0.1 ); + eChild.rotateOnce( '135 0 0' ); + sys.waitFor( eChild ); + } + + + void SetupRideOfDeathTrap1() + { + SetupWeldingMachine( "weld1_front" ); + SetupWeldingMachine( "weld1_rear" ); + SetupWeldingMachine( "weld2_front" ); + SetupWeldingMachine( "weld2_rear" ); + + $weld1_rear_support.time( 0.1 ); + $weld2_rear_support.time( 0.1 ); + $weld1_rear_support.rotateOnce( '0 180 0' ); + $weld2_rear_support.rotateOnce( '0 180 0' ); + sys.waitFor( $weld2_rear_support ); + } + + + void WeldingMachineSequence( string strBaseName, string strConveyName ) + { + entity eSupport; + entity eSupport_speaker; + entity eSupport_05s_speaker; + + entity eCover; + entity eLeftGrip; + entity eRightGrip; + + entity eBase; + entity eBase_speaker; + + entity eArm; + entity eArm_speaker; + entity eArm_weld_speaker; + + entity eLight; + entity eSpark; + + eSupport = sys.getEntity( strBaseName + "_support" ); + eSupport_speaker = sys.getEntity( strBaseName + "_support_speaker" ); + eSupport_05s_speaker = sys.getEntity( strBaseName + "_support_05s_speaker" ); + eCover = sys.getEntity( strBaseName + "_cover" ); + + eLeftGrip = sys.getEntity( strBaseName + "_left_grip" ); + + eRightGrip = sys.getEntity( strBaseName + "_right_grip" ); + + eBase = sys.getEntity( strBaseName + "_base" ); + + eArm = sys.getEntity( strBaseName + "_arm" ); + eArm_weld_speaker = sys.getEntity ( strBaseName + "_arm_speaker" ); + eArm_speaker = sys.getEntity ( strBaseName + "_arm_rot_speaker" ); + + eLight = sys.getEntity( strBaseName + "_light" ); + eSpark = sys.getEntity( strBaseName + "_sparks" ); + + eCover.bind( eSupport ); + + eSupport.time( 2.0 ); + eSupport.accelTime( 0.25 ); + eSupport.decelTime( 0.25 ); + sys.trigger (eSupport_speaker); + eSupport.move( DOWN, 192 ); + sys.waitFor( eSupport ); + + eSupport.time( 0.5 ); + eSupport.accelTime( 0.0 ); + eSupport.decelTime( 0.0 ); + sys.trigger (eSupport_05s_speaker); + eSupport.move( REL_BACK, 12 ); + sys.waitFor( eSupport ); + + eBase.time( 1.0 ); + eArm.time( 1.0 ); + eBase.move( UP, 48 ); + sys.trigger (eArm_speaker); + eArm.rotateOnce( '-135 0 0' ); + sys.waitFor( eArm ); + + // turn on sparks + eLight.On(); + sys.trigger (eSpark); + + + eBase.time( 2.0 ); + sys.trigger ( eArm_weld_speaker ); + eBase.move( DOWN, 48 ); + sys.waitFor( eBase ); + + // turn off sparks + eLight.Off(); + sys.trigger (eSpark); + + eCover.unbind(); + eCover.bind( sys.getEntity( strConveyName ) ); + + eArm.time( 1.0 ); + sys.trigger (eArm_speaker); + eArm.rotateOnce( '135 0 0' ); + sys.waitFor( eArm ); + + eLeftGrip.time( 0.25 ); + eRightGrip.time( 0.25 ); + eLeftGrip.rotateOnce( '0 15 0' ); + eRightGrip.rotateOnce( '0 -15 0' ); + sys.waitFor( eRightGrip ); + + eSupport.time( 1.0 ); + eSupport.accelTime( 0.0 ); + eSupport.decelTime( 0.0 ); + sys.trigger (eSupport_05s_speaker); + eSupport.move( REL_FORWARD, 12 ); + sys.waitFor( eSupport ); + + eSupport.time( 2.0 ); + eSupport.accelTime( 0.25 ); + eSupport.decelTime( 0.25 ); + sys.trigger (eSupport_speaker); + eSupport.move( UP, 192 ); + sys.waitFor( eSupport ); + + eLeftGrip.time( 0.25 ); + eRightGrip.time( 0.25 ); + eLeftGrip.rotateOnce( '0 -15 0' ); + eRightGrip.rotateOnce( '0 15 0' ); + sys.waitFor( eRightGrip ); + } + // 10s TOTAL + + + void ConveyDoorsOpen() + { + if( g_fConveyDoorRefCount < 1 ) + { + $convey_left_door.open(); + $convey_right_door.open(); + } + + g_fConveyDoorRefCount++; + } + + + void ConveyDoorsClose() + { + g_fConveyDoorRefCount--; + + if( g_fConveyDoorRefCount < 1 ) + { + $convey_left_door.close(); + $convey_right_door.close(); + } + } + + + void WeldDoorsOpen() + { + if( g_fWeldDoorRefCount < 1 ) + { + $weld_left_door.open(); + $weld_right_door.open(); + } + + g_fWeldDoorRefCount++; + } + + + void WeldDoorsClose() + { + g_fWeldDoorRefCount--; + + if( g_fWeldDoorRefCount < 1 ) + { + $weld_left_door.close(); + $weld_right_door.close(); + } + } + + + void Convey1ShortPathSequence() + { + thread ConveyDoorsOpen(); + + $convey1_base.time( 2.0 ); + $convey1_base.accelTime( 0.25 ); + $convey1_base.decelTime( 0.25 ); + sys.trigger ($speaker_convey_1_2s); + $convey1_base.move( SOUTH, 520 ); + sys.waitFor( $convey1_base ); + + thread ConveyDoorsClose(); + thread WeldDoorsOpen(); + + thread WeldingMachineSequence( "weld1_front", "convey1_base" ); + thread WeldingMachineSequence( "weld1_rear", "convey1_base" ); + sys.wait( 11.0 ); + + thread WeldDoorsClose(); + thread ConveyDoorsOpen(); + + $convey1_base.time( 2.0 ); + $convey1_base.accelTime( 0.25 ); + $convey1_base.decelTime( 0.25 ); + sys.trigger ($speaker_convey_1_2s); + $convey1_base.move( NORTH, 520 ); + sys.waitFor( $convey1_base ); + + thread ConveyDoorsClose(); + } + // 15s + + + void Convey1LongPathSequence() + { + thread ConveyDoorsOpen(); + + $convey1_base.time( 2.5 ); + $convey1_base.accelTime( 0.25 ); + $convey1_base.decelTime( 0.25 ); + sys.trigger ($speaker_convey_1_2p5s); + $convey1_base.move( SOUTH, 632 ); + sys.waitFor( $convey1_base ); + + thread ConveyDoorsClose(); + thread WeldDoorsOpen(); + + thread WeldingMachineSequence( "weld1_front", "convey1_base" ); + thread WeldingMachineSequence( "weld1_rear", "convey1_base" ); + sys.wait( 11.0 ); + + thread WeldDoorsClose(); + thread ConveyDoorsOpen(); + + $convey1_base.time( 2.5 ); + $convey1_base.accelTime( 0.25 ); + $convey1_base.decelTime( 0.25 ); + sys.trigger ($speaker_convey_1_2p5s); + $convey1_base.move( NORTH, 632 ); + sys.waitFor( $convey1_base ); + + thread ConveyDoorsClose(); + } + // 16s + + + void Convey2ShortPathSequence() + { + thread ConveyDoorsOpen(); + + $convey2_base.time( 2.0 ); + $convey2_base.accelTime( 0.25 ); + $convey2_base.decelTime( 0.25 ); + sys.trigger ($speaker_convey_2_2s); + $convey2_base.move( SOUTH, 520 ); + sys.waitFor( $convey2_base ); + + thread ConveyDoorsClose(); + thread WeldDoorsOpen(); + + thread WeldingMachineSequence( "weld2_front", "convey2_base" ); + thread WeldingMachineSequence( "weld2_rear", "convey2_base" ); + sys.wait( 11.0 ); + + thread WeldDoorsClose(); + thread ConveyDoorsOpen(); + + $convey2_base.time( 1.5 ); + $convey2_base.accelTime( 0.25 ); + sys.trigger ($speaker_convey_2_1p5s); + $convey2_base.move( NORTH, 520 ); + sys.waitFor( $convey2_base ); + + thread ConveyDoorsClose(); + } + // 15s + + + void Convey2LongPathSequence() + { + thread ConveyDoorsOpen(); + + $convey2_base.time( 2.5 ); + $convey2_base.accelTime( 0.25 ); + $convey2_base.decelTime( 0.25 ); + sys.trigger ($speaker_convey_2_2p5s); + $convey2_base.move( SOUTH, 632 ); + sys.waitFor( $convey2_base ); + + thread ConveyDoorsClose(); + thread WeldDoorsOpen(); + + thread WeldingMachineSequence( "weld2_front", "convey2_base" ); + thread WeldingMachineSequence( "weld2_rear", "convey2_base" ); + sys.wait( 11.0 ); + + thread WeldDoorsClose(); + thread ConveyDoorsOpen(); + + $convey2_base.time( 2.5 ); + $convey2_base.accelTime( 0.25 ); + $convey2_base.decelTime( 0.25 ); + sys.trigger ($speaker_convey_2_2p5s); + $convey2_base.move( NORTH, 632 ); + sys.waitFor( $convey2_base ); + + thread ConveyDoorsClose(); + } + // 16s + + + void RideOfDeathTrap1Loop() + { + float fTemp; + + sys.wait( 4.0 ); + + while( true ) + { + $weld1_front_cover.unbind(); + $weld1_rear_cover.unbind(); + $weld2_front_cover.unbind(); + $weld2_rear_cover.unbind(); + $weld1_front_cover.restorePosition(); + $weld1_rear_cover.restorePosition(); + $weld2_front_cover.restorePosition(); + $weld2_rear_cover.restorePosition(); + + fTemp = sys.random( 3.0 ); + + if( fTemp < 1 ) + { + // 1 goes long, 2 goes short + $weld1_front_support.time( 0.1 ); + $weld1_front_cover.time( 0.1 ); + $weld1_rear_support.time( 0.1 ); + $weld1_rear_cover.time( 0.1 ); + $weld2_front_support.time( 0.1 ); + $weld2_front_cover.time( 0.1 ); + $weld2_rear_support.time( 0.1 ); + $weld2_rear_cover.time( 0.1 ); + $weld1_front_support.moveTo( $weld1_front_long_origin ); + $weld1_front_cover.moveTo( $weld1_front_long_origin ); + $weld1_rear_support.moveTo( $weld1_rear_long_origin ); + $weld1_rear_cover.moveTo( $weld1_rear_long_origin ); + $weld2_front_support.moveTo( $weld2_front_short_origin ); + $weld2_front_cover.moveTo( $weld2_front_short_origin ); + $weld2_rear_support.moveTo( $weld2_rear_short_origin ); + $weld2_rear_cover.moveTo( $weld2_rear_short_origin ); + sys.waitFor( $weld2_rear_cover ); + + fTemp = sys.random( 3.0 ); + if( fTemp < 1 ) + { + // early/early + thread Convey1LongPathSequence(); + thread Convey2ShortPathSequence(); + sys.wait( 30.0 ); + } + else if( fTemp < 2 ) + { + // late/early + sys.wait( 2.0 ); + + thread Convey2ShortPathSequence(); + sys.wait( 8.0 ); + + thread Convey1LongPathSequence(); + sys.wait( 20.0 ); + } + else + { + // early/late + sys.wait( 10.0 ); + + thread Convey1LongPathSequence(); + sys.wait( 2.0 ); + + thread Convey2ShortPathSequence(); + sys.wait( 18.0 ); + } + } + else if( fTemp < 2 ) + { + // 1 goes short, 2 goes long + $weld1_front_support.time( 0.1 ); + $weld1_front_cover.time( 0.1 ); + $weld1_rear_support.time( 0.1 ); + $weld1_rear_cover.time( 0.1 ); + $weld2_front_support.time( 0.1 ); + $weld2_front_cover.time( 0.1 ); + $weld2_rear_support.time( 0.1 ); + $weld2_rear_cover.time( 0.1 ); + $weld1_front_support.moveTo( $weld1_front_short_origin ); + $weld1_front_cover.moveTo( $weld1_front_short_origin ); + $weld1_rear_support.moveTo( $weld1_rear_short_origin ); + $weld1_rear_cover.moveTo( $weld1_rear_short_origin ); + $weld2_front_support.moveTo( $weld2_front_long_origin ); + $weld2_front_cover.moveTo( $weld2_front_long_origin ); + $weld2_rear_support.moveTo( $weld2_rear_long_origin ); + $weld2_rear_cover.moveTo( $weld2_rear_long_origin ); + sys.waitFor( $weld2_rear_cover ); + + fTemp = sys.random( 3.0 ); + if( fTemp < 1 ) + { + // early/early + thread Convey1ShortPathSequence(); + thread Convey2LongPathSequence(); + sys.wait( 30.0 ); + } + else if( fTemp < 2 ) + { + // late/early + sys.wait( 2.0 ); + + thread Convey2LongPathSequence(); + sys.wait( 8.0 ); + + thread Convey1ShortPathSequence(); + sys.wait( 20.0 ); + } + else + { + // early/late + sys.wait( 10.0 ); + + thread Convey1ShortPathSequence(); + sys.wait( 2.0 ); + + thread Convey2LongPathSequence(); + sys.wait( 18.0 ); + } + } + else + { + $weld1_front_support.time( 0.1 ); + $weld1_front_cover.time( 0.1 ); + $weld1_rear_support.time( 0.1 ); + $weld1_rear_cover.time( 0.1 ); + $weld2_front_support.time( 0.1 ); + $weld2_front_cover.time( 0.1 ); + $weld2_rear_support.time( 0.1 ); + $weld2_rear_cover.time( 0.1 ); + $weld1_front_support.moveTo( $weld1_front_long_origin ); + $weld1_front_cover.moveTo( $weld1_front_long_origin ); + $weld1_rear_support.moveTo( $weld1_rear_long_origin ); + $weld1_rear_cover.moveTo( $weld1_rear_long_origin ); + $weld2_front_support.moveTo( $weld2_front_long_origin ); + $weld2_front_cover.moveTo( $weld2_front_long_origin ); + $weld2_rear_support.moveTo( $weld2_rear_long_origin ); + $weld2_rear_cover.moveTo( $weld2_rear_long_origin ); + sys.waitFor( $weld2_rear_cover ); + + // 1 goes long, 2 goes long + fTemp = sys.random( 3.0 ); + if( fTemp < 1 ) + { + // early/early + thread Convey1LongPathSequence(); + sys.wait( 2.0 ); + + thread Convey2LongPathSequence(); + sys.wait( 28.0 ); + } + else if( fTemp < 2 ) + { + // late/early + sys.wait( 2.0 ); + + thread Convey2LongPathSequence(); + sys.wait( 8.0 ); + + thread Convey1LongPathSequence(); + sys.wait( 20.0 ); + } + else + { + // late/late + sys.wait( 10.0 ); + + thread Convey1LongPathSequence(); + sys.wait( 2.0 ); + + thread Convey2LongPathSequence(); + sys.wait( 18.0 ); + } + } + } + } + + + void SetupRideOfDeathTrap2() + { + $spinner_top.time( 0.1 ); + $spinner_bottom.time( 0.1 ); + $spinner_top.rotateOnce( '0 -45 0' ); + $spinner_bottom.rotateOnce( '0 -45 0' ); + sys.waitFor( $spinner_bottom ); + } + + + void TopSpinnerRotate() + { + $spinner_top.time( 2.0 ); + $spinner_top.accelTime( 0.25 ); + $spinner_top.decelTime( 0.25 ); + sys.trigger ($speaker_spinner_top); + $spinner_top.rotateOnce( '0 -90 0' ); + sys.waitFor( $spinner_top ); + + // do some effects stuff + sys.wait( 3.0 ); + } + + + void BottomSpinnerRotate() + { + $spinner_bottom.time( 2.0 ); + $spinner_bottom.accelTime( 0.25 ); + $spinner_bottom.decelTime( 0.25 ); + $spinner_bottom.rotateOnce( '0 -90 0' ); + sys.trigger ($speaker_spinner_bottom); + sys.waitFor( $spinner_bottom ); + + // do some effects stuff + sys.wait( 3.0 ); + } + + + void RideOfDeathTrap2Loop() + { + while( true ) + { + thread BottomSpinnerRotate(); + sys.wait( 0.5 ); + + thread TopSpinnerRotate(); + sys.wait( 4.5 ); + } + } + + + void SetupRideOfDeathTrap3() + { + } + + + void RideOfDeathTrap3Loop() + { + sys.trigger($trap3_impspawn); + + //bring everything else out 160 + $discharge_arm_1.bind ($discharge_stack_1); + $discharge_arm_2.bind ($discharge_stack_2); + + $spin_pooperplat1.move (WEST, 24); + $spin_pooperplat2.move (EAST, 24); + + sys.trigger ($discharge_stack_1_speaker); + $discharge_stack_1.move (NORTH, 160); + sys.wait (1); + sys.trigger ($discharge_stack_2_speaker); + $discharge_stack_2.move (NORTH, 160); + sys.waitFor ($discharge_stack_2); + + $discharge_arm_1.unbind (); + $discharge_arm_2.unbind (); + + sys.trigger ($discharge_arm_1_speaker); + $discharge_arm_1.move (NORTH, 112); + sys.wait (0.5); + sys.trigger ($discharge_arm_2_speaker); + $discharge_arm_2.move (NORTH, 112); + sys.waitFor ($discharge_arm_2); + + sys.trigger ($discharge_lens_1_speaker); + $discharge_lens_1.rotateOnce ('0 0 90'); + sys.wait (0.33); + sys.trigger ($discharge_lens_2_speaker); + $discharge_lens_2.rotateOnce ('0 0 90'); + //sys.wait(.5); + + //bring to ready position + sys.trigger ($speaker_pooper1); // Who the hell named this "pooper" anyway ? + $spin_pooper1.move (DOWN, 96); // Ahh.. the scatological humor runs rampant... -Xian + sys.wait (1.5); + sys.trigger ($speaker_pooper2); + $spin_pooper2.move (DOWN, 96); + + //bring the nipples up + $discharge_nipple_1.time (2); + $discharge_nipple_2.time (2); + + sys.trigger ($discharge_nipple_1_speaker); + $discharge_nipple_1.move (UP, 176); + sys.wait (0.48); + $discharge_nipple_2.move (UP, 176); + sys.trigger ($discharge_nipple_2_speaker); + sys.waitFor($discharge_nipple_2); + + //initial movement to make sure the particles are on correctly + $spin_paddle1.time( 1.2 ); + $spin_paddle1.accelTime( 0.25 ); + $spin_paddle1.decelTime( 0.25 ); + sys.trigger ($speaker_paddle1); + $spin_paddle1.rotateOnce( '0 180 0' ); + sys.waitFor( $spin_paddle1 ); + + + //trigger the lightning on + + $dbuzz1.startSoundShader ("jacob", SND_CHANNEL_VOICE ); + + sys.trigger ($dbuzz1); + sys.trigger ($dbuzz1_light); + sys.wait( 1.0 ); + + $spin_paddle2.time( 1.2 ); + $spin_paddle2.accelTime( 0.25 ); + $spin_paddle2.decelTime( 0.25 ); + sys.trigger ($speaker_paddle2); + $spin_paddle2.rotateOnce( '0 -180 0' ); + sys.waitFor( $spin_paddle2 ); + + //trigger the lightning on + $dbuzz2.startSoundShader ("jacob", SND_CHANNEL_VOICE ); + sys.trigger ($dbuzz2); + sys.trigger ($dbuzz2_light); + + sys.wait( 1.0 ); + + while( true ) { + //trigger the lightning off + sys.trigger ($dbuzz1); + sys.trigger ($dbuzz1_light); + $spin_paddle1.time( 1.2 ); + $spin_paddle1.accelTime( 0.25 ); + $spin_paddle1.decelTime( 0.25 ); + sys.trigger ($speaker_paddle1); + $spin_paddle1.rotateOnce( '0 180 0' ); + sys.waitFor( $spin_paddle1 ); + //trigger the lightning on + $dbuzz1.startSoundShader ("jacob", SND_CHANNEL_VOICE ); + sys.trigger ($dbuzz1); + sys.trigger ($dbuzz1_light); + sys.wait( 1.0 ); + + //trigger the lightning off + sys.trigger ($dbuzz2); + sys.trigger ($dbuzz2_light); + $spin_paddle2.time( 1.2 ); + $spin_paddle2.accelTime( 0.25 ); + $spin_paddle2.decelTime( 0.25 ); + sys.trigger ($speaker_paddle2); + $spin_paddle2.rotateOnce( '0 -180 0' ); + sys.waitFor( $spin_paddle2 ); + //trigger the lightning on + $dbuzz2.startSoundShader ("jacob", SND_CHANNEL_VOICE ); + sys.trigger ($dbuzz2); + sys.trigger ($dbuzz2_light); + sys.wait( 1.0 ); + } + } + + + + void SetupRideOfDeathTrap5() + { + $pounder1_left_base.time( 0.1 ); + $pounder1_left_cushion.time( 0.1 ); + $pounder1_left_inside.time( 0.1 ); + $pounder1_left_outside.time( 0.1 ); + $pounder2_left_base.time( 0.1 ); + $pounder2_left_cushion.time( 0.1 ); + $pounder2_left_inside.time( 0.1 ); + $pounder2_left_outside.time( 0.1 ); + $pounder1_right_base.time( 0.1 ); + $pounder1_right_cushion.time( 0.1 ); + $pounder1_right_inside.time( 0.1 ); + $pounder1_right_outside.time( 0.1 ); + $pounder2_right_base.time( 0.1 ); + $pounder2_right_cushion.time( 0.1 ); + $pounder2_right_inside.time( 0.1 ); + $pounder2_right_outside.time( 0.1 ); + $pounder1_left_base.rotateOnce( '-30 0 0' ); + $pounder1_left_cushion.rotateOnce( '-30 0 0' ); + $pounder1_left_inside.rotateOnce( '-30 0 0' ); + $pounder1_left_outside.rotateOnce( '-30 0 0' ); + $pounder2_left_base.rotateOnce( '-30 0 0' ); + $pounder2_left_cushion.rotateOnce( '-30 0 0' ); + $pounder2_left_inside.rotateOnce( '-30 0 0' ); + $pounder2_left_outside.rotateOnce( '-30 0 0' ); + $pounder1_right_base.rotateOnce( '30 0 0' ); + $pounder1_right_cushion.rotateOnce( '30 0 0' ); + $pounder1_right_inside.rotateOnce( '30 0 0' ); + $pounder1_right_outside.rotateOnce( '30 0 0' ); + $pounder2_right_base.rotateOnce( '30 0 0' ); + $pounder2_right_cushion.rotateOnce( '30 0 0' ); + $pounder2_right_inside.rotateOnce( '30 0 0' ); + $pounder2_right_outside.rotateOnce( '30 0 0' ); + sys.waitFor( $pounder2_right_outside ); + + $pounder1_left_inside.time( 0.1 ); + $pounder1_left_outside.time( 0.1 ); + $pounder2_left_inside.time( 0.1 ); + $pounder2_left_outside.time( 0.1 ); + $pounder1_right_inside.time( 0.1 ); + $pounder1_right_outside.time( 0.1 ); + $pounder2_right_inside.time( 0.1 ); + $pounder2_right_outside.time( 0.1 ); + $pounder1_left_inside.move( REL_FORWARD, 288 ); + $pounder1_left_outside.move( REL_FORWARD, 256 ); + $pounder2_left_inside.move( REL_FORWARD, 288 ); + $pounder2_left_outside.move( REL_FORWARD, 256 ); + $pounder1_right_inside.move( REL_BACK, 288 ); + $pounder1_right_outside.move( REL_BACK, 256 ); + $pounder2_right_inside.move( REL_BACK, 288 ); + $pounder2_right_outside.move( REL_BACK, 256 ); + sys.waitFor( $pounder2_right_outside ); + } + + + void Pounder1Sequence() + { + float fRandom; + + fRandom = sys.random( 2.0 ); + + if( fRandom < 1.0 ) + { + // extending out + + $pounder1_left_inside.time( 0.5 ); + $pounder1_left_inside.accelTime( 0.0 ); + $pounder1_left_inside.decelTime( 0.0 ); + sys.trigger ($speaker_pounder1_halfsecond); + $pounder1_left_inside.move( REL_BACK, 288 ); + sys.waitFor( $pounder1_left_inside ); + sys.wait( 0.25 ); + + $pounder1_left_outside.time( 0.2 ); + $pounder1_left_outside.accelTime( 0.0 ); + $pounder1_left_outside.decelTime( 0.0 ); + sys.trigger ($speaker_pounder1_left_outside_p2); + $pounder1_left_outside.move( REL_BACK, 256 ); + sys.waitFor( $pounder1_left_outside ); + + $pounder1_left_outside.time( 0.1 ); + $pounder1_left_outside.accelTime( 0.0 ); + $pounder1_left_outside.decelTime( 0.1 ); + $pounder1_left_cushion.time( 0.1 ); + $pounder1_left_cushion.accelTime( 0.0 ); + $pounder1_left_cushion.decelTime( 0.1 ); + $pounder1_left_outside.move( REL_BACK, 16 ); + sys.trigger ($speaker_pounder1_left_cushion); + $pounder1_left_cushion.move( REL_BACK, 16 ); + sys.waitFor( $pounder1_left_cushion ); + + $pounder1_left_outside.time( 0.2 ); + $pounder1_left_outside.accelTime( 0.0 ); + $pounder1_left_outside.decelTime( 0.0 ); + $pounder1_left_cushion.time( 0.2 ); + $pounder1_left_cushion.accelTime( 0.0 ); + $pounder1_left_cushion.decelTime( 0.0 ); + $pounder1_left_outside.move( REL_FORWARD, 16 ); + $pounder1_left_cushion.move( REL_FORWARD, 16 ); + sys.waitFor( $pounder1_left_cushion ); + + sys.wait( 2.0 ); + + // Sucking back in + + $pounder1_left_outside.time( 1.0 ); + $pounder1_left_outside.accelTime( 0.25 ); + $pounder1_left_outside.decelTime( 0.25 ); + $pounder1_left_inside.time( 2.0 ); + $pounder1_left_inside.accelTime( 0.5 ); + $pounder1_left_inside.decelTime( 0.5 ); + sys.trigger ($speaker_pounder1_left_outside_1s); + $pounder1_left_outside.move( REL_FORWARD, 256 ); + sys.trigger ($speaker_pounder1_left_inside); + $pounder1_left_inside.move( REL_FORWARD, 288 ); + sys.waitFor( $pounder1_left_inside ); + } + else + { + $pounder1_right_inside.time( 0.5 ); + $pounder1_right_inside.accelTime( 0.0 ); + $pounder1_right_inside.decelTime( 0.0 ); + sys.trigger ($speaker_pounder1_halfsecond); + $pounder1_right_inside.move( REL_FORWARD, 288 ); + sys.waitFor( $pounder1_right_inside ); + sys.wait( 0.25 ); + + $pounder1_right_outside.time( 0.2 ); + $pounder1_right_outside.accelTime( 0.0 ); + $pounder1_right_outside.decelTime( 0.0 ); + sys.trigger ($speaker_pounder1_right_outside_p2); + $pounder1_right_outside.move( REL_FORWARD, 256 ); + sys.waitFor( $pounder1_right_outside ); + + $pounder1_right_outside.time( 0.1 ); + $pounder1_right_outside.accelTime( 0.0 ); + $pounder1_right_outside.decelTime( 0.1 ); + $pounder1_right_cushion.time( 0.1 ); + $pounder1_right_cushion.accelTime( 0.0 ); + $pounder1_right_cushion.decelTime( 0.1 ); + $pounder1_right_outside.move( REL_FORWARD, 16 ); + sys.trigger ($speaker_pounder1_right_cushion); + $pounder1_right_cushion.move( REL_FORWARD, 16 ); + sys.waitFor( $pounder1_right_cushion ); + + $pounder1_right_outside.time( 0.2 ); + $pounder1_right_outside.accelTime( 0.0 ); + $pounder1_right_outside.decelTime( 0.0 ); + $pounder1_right_cushion.time( 0.2 ); + $pounder1_right_cushion.accelTime( 0.0 ); + $pounder1_right_cushion.decelTime( 0.0 ); + $pounder1_right_outside.move( REL_BACK, 16 ); + $pounder1_right_cushion.move( REL_BACK, 16 ); + sys.waitFor( $pounder1_right_cushion ); + + sys.wait( 2.0 ); + + $pounder1_right_outside.time( 1.0 ); + $pounder1_right_outside.accelTime( 0.25 ); + $pounder1_right_outside.decelTime( 0.25 ); + $pounder1_right_inside.time( 2.0 ); + $pounder1_right_inside.accelTime( 0.5 ); + $pounder1_right_inside.decelTime( 0.5 ); + sys.trigger ($speaker_pounder1_right_outside_1s); + $pounder1_right_outside.move( REL_BACK, 256 ); + sys.trigger ($speaker_pounder1_right_inside); + $pounder1_right_inside.move( REL_BACK, 288 ); + sys.waitFor( $pounder1_left_inside ); + } + } + + + void Pounder2Sequence() + { + float fRandom; + + fRandom = sys.random( 2.0 ); + + if( fRandom < 1.0 ) + { + $pounder2_left_inside.time( 0.5 ); + $pounder2_left_inside.accelTime( 0.0 ); + $pounder2_left_inside.decelTime( 0.0 ); + sys.trigger ($speaker_pounder2_halfsecond); + $pounder2_left_inside.move( REL_BACK, 288 ); + sys.waitFor( $pounder2_left_inside ); + sys.wait( 0.25 ); + + $pounder2_left_outside.time( 0.2 ); + $pounder2_left_outside.accelTime( 0.0 ); + $pounder2_left_outside.decelTime( 0.0 ); + sys.trigger ($speaker_pounder2_left_outside_p2); + $pounder2_left_outside.move( REL_BACK, 256 ); + sys.waitFor( $pounder2_left_outside ); + + $pounder2_left_outside.time( 0.1 ); + $pounder2_left_outside.accelTime( 0.0 ); + $pounder2_left_outside.decelTime( 0.1 ); + $pounder2_left_cushion.time( 0.1 ); + $pounder2_left_cushion.accelTime( 0.0 ); + $pounder2_left_cushion.decelTime( 0.1 ); + $pounder2_left_outside.move( REL_BACK, 16 ); + $pounder2_left_cushion.move( REL_BACK, 16 ); + sys.waitFor( $pounder2_left_cushion ); + + $pounder2_left_outside.time( 0.2 ); + $pounder2_left_outside.accelTime( 0.0 ); + $pounder2_left_outside.decelTime( 0.0 ); + $pounder2_left_cushion.time( 0.2 ); + $pounder2_left_cushion.accelTime( 0.0 ); + $pounder2_left_cushion.decelTime( 0.0 ); + $pounder2_left_outside.move( REL_FORWARD, 16 ); + sys.trigger ($speaker_pounder2_left_cushion); + $pounder2_left_cushion.move( REL_FORWARD, 16 ); + sys.waitFor( $pounder2_left_cushion ); + + sys.wait( 2.0 ); + + $pounder2_left_outside.time( 1.0 ); + $pounder2_left_outside.accelTime( 0.25 ); + $pounder2_left_outside.decelTime( 0.25 ); + $pounder2_left_inside.time( 2.0 ); + $pounder2_left_inside.accelTime( 0.5 ); + $pounder2_left_inside.decelTime( 0.5 ); + sys.trigger ($speaker_pounder2_left_outside_1s); + $pounder2_left_outside.move( REL_FORWARD, 256 ); + sys.trigger ($speaker_pounder2_left_inside); + $pounder2_left_inside.move( REL_FORWARD, 288 ); + sys.waitFor( $pounder2_left_inside ); + } + else + { + $pounder2_right_inside.time( 0.5 ); + $pounder2_right_inside.accelTime( 0.0 ); + $pounder2_right_inside.decelTime( 0.0 ); + sys.trigger ($speaker_pounder2_halfsecond); + $pounder2_right_inside.move( REL_FORWARD, 288 ); + sys.waitFor( $pounder2_right_inside ); + sys.wait( 0.25 ); + + $pounder2_right_outside.time( 0.2 ); + $pounder2_right_outside.accelTime( 0.0 ); + $pounder2_right_outside.decelTime( 0.0 ); + sys.trigger ($speaker_pounder2_right_outside_p2); + $pounder2_right_outside.move( REL_FORWARD, 256 ); + sys.waitFor( $pounder2_right_outside ); + + $pounder2_right_outside.time( 0.1 ); + $pounder2_right_outside.accelTime( 0.0 ); + $pounder2_right_outside.decelTime( 0.1 ); + $pounder2_right_cushion.time( 0.1 ); + $pounder2_right_cushion.accelTime( 0.0 ); + $pounder2_right_cushion.decelTime( 0.1 ); + $pounder2_right_outside.move( REL_FORWARD, 16 ); + sys.trigger ($speaker_pounder2_right_cushion); + $pounder2_right_cushion.move( REL_FORWARD, 16 ); + sys.waitFor( $pounder2_right_cushion ); + + $pounder2_right_outside.time( 0.2 ); + $pounder2_right_outside.accelTime( 0.0 ); + $pounder2_right_outside.decelTime( 0.0 ); + $pounder2_right_cushion.time( 0.2 ); + $pounder2_right_cushion.accelTime( 0.0 ); + $pounder2_right_cushion.decelTime( 0.0 ); + $pounder2_right_outside.move( REL_BACK, 16 ); + $pounder2_right_cushion.move( REL_BACK, 16 ); + sys.waitFor( $pounder2_right_cushion ); + + sys.wait( 2.0 ); + + $pounder2_right_outside.time( 1.0 ); + $pounder2_right_outside.accelTime( 0.25 ); + $pounder2_right_outside.decelTime( 0.25 ); + $pounder2_right_inside.time( 2.0 ); + $pounder2_right_inside.accelTime( 0.5 ); + $pounder2_right_inside.decelTime( 0.5 ); + sys.trigger ($speaker_pounder2_right_outside_1s); + $pounder2_right_outside.move( REL_BACK, 256 ); + sys.trigger ($speaker_pounder2_right_inside); + $pounder2_right_inside.move( REL_BACK, 288 ); + sys.waitFor( $pounder2_left_inside ); + } + } + + + void RideOfDeathTrap5Loop() + { + // FIXME: add a light cue where the rods come out to let the player + // know which one is about to fire + sys.wait( 7.5 ); + + while( true ) + { + thread Pounder1Sequence(); + sys.wait( 2.0 ); + + thread Pounder2Sequence(); + sys.wait( 8.0 ); + } + } + + + + void SetupRideOfDeathTraps() + { + SetupRideOfDeathObjects(); + + SetupRideOfDeathTrap1(); + SetupRideOfDeathTrap2(); + SetupRideOfDeathTrap3(); + SetupRideOfDeathTrap5(); + + thread RideOfDeathTrap1Loop(); + thread RideOfDeathTrap2Loop(); + thread RideOfDeathTrap5Loop(); + } + + + void LightGroup1Sequence() + { + $lightgroup1_swing_light1.accelTime( 0.25 ); + $lightgroup1_swing_light1.time( 1.0 ); + $lightgroup1_swing_light1.decelTime( 0.25 ); + $lightgroup1_swing_light2.accelTime( 0.25 ); + $lightgroup1_swing_light2.time( 1.0 ); + $lightgroup1_swing_light2.decelTime( 0.25 ); + $lightgroup1_swing_light1.rotateOnce( '0 0 135' ); + $lightgroup1_swing_light2.rotateOnce( '0 0 135' ); + sys.waitFor( $lightgroup1_swing_light2 ); + + $lightgroup1_swing_light1_light.On(); + $lightgroup1_swing_light2_light.On(); + + $lightgroup1_lighta.On(); + $lightgroup1_lightb.On(); + $lightgroup1_lightc.On(); + } + + + void GlideLight1Loop() + { + float fTime; + + while( true ) + { + fTime = sys.random( 2.0 ); + + $glide_light1.time( fTime + 1.0 ); + $glide_light1.accelTime( fTime / 4 ); + $glide_light1.decelTime( fTime / 4 ); + $glide_light1.move( NORTH, 448 ); + sys.waitFor( $glide_light1 ); + + fTime = sys.random( 2.0 ); + sys.wait( fTime + 1.0 ); + + fTime = sys.random( 2.0 ); + + $glide_light1.time( fTime + 1.0 ); + $glide_light1.accelTime( fTime / 4 ); + $glide_light1.decelTime( fTime / 4 ); + $glide_light1.move( SOUTH, 448 ); + sys.waitFor( $glide_light1 ); + + fTime = sys.random( 2.0 ); + sys.wait( fTime + 1.0 ); + } + } + + + void GlideLight2Loop() + { + float fTime; + + while( true ) + { + fTime = sys.random( 1.5 ); + + $glide_light2.time( fTime + 0.5 ); + $glide_light2.accelTime( fTime / 4 ); + $glide_light2.decelTime( fTime / 4 ); + $glide_light2.move( WEST, 256 ); + sys.waitFor( $glide_light2 ); + + fTime = sys.random( 1.25 ); + sys.wait( fTime + 0.5 ); + + fTime = sys.random( 1.5 ); + + $glide_light2.time( fTime + 0.5 ); + $glide_light2.accelTime( fTime / 4 ); + $glide_light2.decelTime( fTime / 4 ); + $glide_light2.move( EAST, 256 ); + sys.waitFor( $glide_light2 ); + + fTime = sys.random( 1.25 ); + sys.wait( fTime + 0.5 ); + } + } + + + void CargoObjectLoop( string strObject ) + { + entity eObject; + entity eLight; + + eObject = sys.getEntity( strObject ); + eLight = sys.getEntity( strObject + "_light" ); + + eObject.time( 3.0 ); + eObject.move( SOUTH, 176 ); + sys.waitFor( eObject ); + + eObject.bind( $cargo_object_origin1 ); + + $cargo_object_origin1.time( 1.75 ); + $cargo_object_origin1.rotateOnce( '0 90 0' ); + sys.waitFor( $cargo_object_origin1 ); + + eObject.unbind(); + $cargo_object_origin1.restorePosition(); + + eObject.time( 0.6 ); + eObject.move( EAST, 48 ); + sys.waitFor( eObject ); + + eLight.On(); + + eObject.bind( $cargo_object_origin2 ); + + $cargo_object_origin2.time( 1.75 ); + $cargo_object_origin2.rotateOnce( '0 90 0' ); + sys.waitFor( $cargo_object_origin2 ); + + eObject.unbind(); + $cargo_object_origin2.restorePosition(); + + eObject.time( 4.25 ); + eObject.move( NORTH, 304 ); + sys.waitFor( eObject ); + + eObject.bind( $cargo_object_origin3 ); + + $cargo_object_origin3.time( 6.0 ); + $cargo_object_origin3.rotateOnce( '0 -90 0' ); + sys.waitFor( $cargo_object_origin3 ); + + eObject.unbind(); + $cargo_object_origin3.restorePosition(); + + eObject.time( 14.0 ); + eObject.move( EAST, 896 ); + sys.waitFor( eObject ); + + eObject.bind( $cargo_object_origin4 ); + + $cargo_object_origin4.time( 6.0 ); + $cargo_object_origin4.rotateOnce( '0 -90 0' ); + sys.waitFor( $cargo_object_origin4 ); + + eObject.unbind(); + $cargo_object_origin4.restorePosition(); + + eObject.time( 1.0 ); + eObject.move( SOUTH, 64 ); + sys.waitFor( eObject ); + + eObject.bind( $cargo_object_origin5 ); + + $cargo_object_origin5.time( 4.0 ); + $cargo_object_origin5.rotateOnce( '0 -90 0' ); + sys.waitFor( $cargo_object_origin5 ); + + eObject.unbind(); + $cargo_object_origin5.restorePosition(); + + eLight.Off(); + + eObject.time( 2.0 ); + eObject.move( WEST, 128 ); + sys.waitFor( eObject ); + + eObject.restorePosition(); + } + // 46s + + + void CargoObjectSequence() + { + string strObject; + float ii; + + while( true ) + { + for( ii = 1; ii < 5; ii++ ) + { + strObject = "cargo_object" + ii; + thread CargoObjectLoop( strObject ); + sys.wait( 15.0 ); + } + } + } + + + + void LightsOffThread() + { + sys.trigger($dark_door_open); + sys.trigger($dark_backstab); + sys.trigger($dark_b2); + sys.trigger($dark_triteclimb); + sys.trigger($rod_doortrig); + sys.trigger($lightsoff_lock); + + thread ExtendSectionBridges(); + + SetupRideOfDeathTraps(); + RemoveRideOfDeathObjects(); + } + + + void LightsOnThread() + { + sys.trigger($lights_on_doortrig); + sys.trigger($lightside_lock_1); + thread SectionBridgeRemoveAll(); + + thread ExtendPlatform1(); + thread RotatingBridgeStart(); + + thread LightGroup1Sequence(); + sys.wait( 5.0 ); + + thread RotatingBridgeLoop(); + } + + + void RideOfDeathThread() + { + sys.trigger($rod_doortrig); + SetupRideOfDeathTraps(); + RideOfDeathLoop(); + } + + /*-------------------------------------------------------------------- + + F r a g c h a m b e r scripting START + + --------------------------------------------------------------------*/ + + + // ------------------------------------------------- + // Chamber Core DOWN + // ------------------------------------------------- + void chamber_core_down() + { + $chamber_core.time(5); + $chamber_core.accelTime(1); + $chamber_core.decelTime(1.5); + $chamber_core.moveTo($chamber_core_down); + + sys.trigger ($chamber_core_down_speaker); + sys.wait (4); + //no turning back... remove cancel option + $guicon1.setGuiParm ( "gui_parm9" , 0); + sys.trigger ($speaker_juicer); + sys.waitFor ($chamber_core); + + } + + // ------------------------------------------------- + // Chamber Core UP + // ------------------------------------------------- + void chamber_core_up() + { + $chamber_core.time(3); + $chamber_core.accelTime(2.5); + $chamber_core.decelTime(.5); + $chamber_core.moveTo($chamber_core_up); + + sys.trigger ($chamber_core_up_speaker); + + sys.waitFor ($chamber_core); + } + + // ------------------------------------------------- + // Chamber Rods DOWN + // ------------------------------------------------- + void chamber_rods_down() + { + $chamber_rods.time(4); + $chamber_rods.accelTime(1); + $chamber_rods.decelTime(.5); + $chamber_rods.moveTo($chamber_rod_down); + + sys.trigger ($chamber_rods_down_speaker); + + sys.waitFor ($chamber_rods); + } + + // ------------------------------------------------- + // Chamber Rods UP + // ------------------------------------------------- + void chamber_rods_up() + { + $chamber_rods.time(3); + $chamber_rods.accelTime(1); + $chamber_rods.decelTime(.5); + $chamber_rods.moveTo($chamber_rod_up); + + sys.trigger ($chamber_rods_up_speaker); + + sys.waitFor ($chamber_rods); + } + + + // ------------------------------------------------- + // Chamber Sockets OUT + // ------------------------------------------------- + void chamber_sockets_out() + { + $chamber_socket1.time(2); + $chamber_socket1.moveTo($chamber_socket1_out); + $chamber_socket2.time(2); + $chamber_socket2.moveTo($chamber_socket2_out); + $chamber_socket3.time(2); + $chamber_socket3.moveTo($chamber_socket3_out); + $chamber_socket4.time(2); + $chamber_socket4.moveTo($chamber_socket4_out); + + sys.trigger ($chamber_sockets_out_speaker); + + sys.waitFor ($chamber_socket4); + } + + // ------------------------------------------------- + // Chamber Sockets IN + // ------------------------------------------------- + void chamber_sockets_in() + { + $chamber_socket1.time(2); + $chamber_socket1.moveTo($chamber_socket1_in); + $chamber_socket2.time(2); + $chamber_socket2.moveTo($chamber_socket2_in); + $chamber_socket3.time(2); + $chamber_socket3.moveTo($chamber_socket3_in); + $chamber_socket4.time(2); + $chamber_socket4.moveTo($chamber_socket4_in); + + sys.trigger ($chamber_sockets_in_speaker); + + sys.waitFor ($chamber_socket4); + } + + // ------------------------------------------------- + // Close the chamber doors + // ------------------------------------------------- + void chamber_closedoors() + { + $chamber_door2a.close(); + $chamber_door2b.close(); + $chamber_door4a.close(); + $chamber_door4b.close(); + + $chamber_door2a.lock(1); + $chamber_door2b.lock(1); + $chamber_door4a.lock(1); + $chamber_door4b.lock(1); + + $fragchamber_door1_gui.setGuiParm ("gui_parm3", 0); + $fragchamber_door2_gui.setGuiParm ("gui_parm3", 0); + + $fragchamber_door1_gui.setShaderParm (7, 0); + $fragchamber_door2_gui.setShaderParm (7, 0); + + $fragchamber_door1_blinky_red.show(); + $fragchamber_door1_blinky_green.hide(); + $fragchamber_door2_blinky_red.show(); + $fragchamber_door2_blinky_green.hide(); + + $fragchamber_door1_bl1.setColor (1, 0, 0); + $fragchamber_door1_bl2.setColor (1, 0, 0); + $fragchamber_door2_bl1.setColor (1, 0, 0); + $fragchamber_door2_bl2.setColor (1, 0, 0); + } + + // ------------------------------------------------- + // Trigger the Chamber into action! + // ------------------------------------------------- + void chamber_trigger() + { + float moverthread; + + $guicon1.setGuiParm ("gui_parm9", 1); + + //bridge times + $chamber_bridge1.time(.5); + $chamber_bridge2.time(.5); + $chamber_bridge3.time(.5); + $chamber_bridge4.time(.5); + + //doors CLOSE and LOCK + thread chamber_closedoors(); + + //bridges up + sys.trigger ($bridge_up_speaker); + $chamber_bridge1.rotateOnce( '0 0 -61' ); + $chamber_bridge2.rotateOnce( '100 0 0' ); + $chamber_bridge3.rotateOnce( '0 0 61' ); + $chamber_bridge4.rotateOnce( '-100 0 0' ); + + //core DOWN + + thread chamber_core_down(); + + //trigger the NPC to panic + sys.trigger ($fragchamber_npc_panic); + + //sockets OUT + sys.waitFor($chamber_bridge1); + + moverthread = thread chamber_sockets_out(); + sys.waitForThread ( moverthread ); + + //rods DOWN + + moverthread = thread chamber_rods_down(); + sys.waitForThread ( moverthread ); + sys.wait(1); + + //kill npc + $fragchamber_npc.kill(); + sys.trigger ($skeleton_spawn); + sys.trigger ($punish_lock); + //thread frontroom_door_open(); + + //kill the 2nd scientist standing at the door + $alphalabs3_fragchamber_scientist2_2.remove(); + + sys.trigger ($speaker_warmup); + sys.wait (2.5); + + //...Dramatic pause and doing stuff sound + sys.trigger ($fragchamber_active); + sys.wait (1); + sys.trigger ($punish_relay); + sys.wait (1); + + //rods up and sockets in + thread chamber_rods_up(); + sys.wait (1); + moverthread = thread chamber_sockets_in(); + sys.waitForThread ( moverthread ); + + //bridges DOWN + sys.trigger ($bridge_down_speaker); + $chamber_bridge1.rotateOnce( '0 0 61' ); + $chamber_bridge2.rotateOnce( '-100 0 0' ); + $chamber_bridge3.rotateOnce( '0 0 -61' ); + $chamber_bridge4.rotateOnce( '100 0 0' ); + + //core up + + moverthread = thread chamber_core_up(); + sys.waitForThread ( moverthread ); + + //doors OPEN and unlock + sys.wait(1); + $chamber_door2a.open(); + $chamber_door2b.open(); + $chamber_door4a.open(); + $chamber_door4b.open(); + + $chamber_door2a.lock(0); + $chamber_door2b.lock(0); + $chamber_door4a.lock(0); + $chamber_door4b.lock(0); + + $fragchamber_door1_gui.setGuiParm ("gui_parm3", 1); + $fragchamber_door2_gui.setGuiParm ("gui_parm3", 1); + + $fragchamber_door1_gui.setShaderParm (7, 1); + $fragchamber_door2_gui.setShaderParm (7, 1); + + $fragchamber_door1_blinky_red.hide(); + $fragchamber_door1_blinky_green.show(); + $fragchamber_door2_blinky_red.hide(); + $fragchamber_door2_blinky_green.show(); + + $fragchamber_door1_bl1.setColor (0, 1, 0); + $fragchamber_door1_bl2.setColor (0, 1, 0); + $fragchamber_door2_bl1.setColor (0, 1, 0); + $fragchamber_door2_bl2.setColor (0, 1, 0); + + //trigger control gui to reset it + $guicon1.setGuiParm ("gui_parm8", 1); + $guicon1.setGuiParm ("gui_parm9", 1); + } + + // ------------------------------------------------- + // Cancel the Chamber + // ------------------------------------------------- + void chamber_cancel() + { + float moverthread; + + sys.print ("chamber_cancel\n"); + sys.killthread ("map_alphalabs4::chamber_trigger"); + sys.killthread ("map_alphalabs4::chamber_core_down"); + sys.trigger($npc_backup); + + //rods up and sockets in + thread chamber_rods_up(); + thread chamber_sockets_in(); + + //core up + moverthread = thread chamber_core_up(); + //sys.waitForThread ( moverthread ); + + //trigger the NPC relief + sys.wait( 1 ); + sys.trigger ($fragchamber_npc_relief ); + + //bridges DOWN + sys.trigger ($bridge_down_speaker); + $chamber_bridge1.rotateOnce( '0 0 61' ); + $chamber_bridge2.rotateOnce( '-100 0 0' ); + $chamber_bridge3.rotateOnce( '0 0 -61' ); + $chamber_bridge4.rotateOnce( '100 0 0' ); + sys.waitFor ($chamber_bridge4); + + //doors OPEN and unlock + sys.wait(1); + $chamber_door2a.open(); + $chamber_door2b.open(); + $chamber_door4a.open(); + $chamber_door4b.open(); + + $chamber_door2a.lock(0); + $chamber_door2b.lock(0); + $chamber_door4a.lock(0); + $chamber_door4b.lock(0); + + $fragchamber_door1_gui.setGuiParm ("gui_parm3", 1); + $fragchamber_door2_gui.setGuiParm ("gui_parm3", 1); + + $fragchamber_door1_gui.setShaderParm (7, 1); + $fragchamber_door2_gui.setShaderParm (7, 1); + + $fragchamber_door1_blinky_red.hide(); + $fragchamber_door1_blinky_green.show(); + $fragchamber_door2_blinky_red.hide(); + $fragchamber_door2_blinky_green.show(); + + $fragchamber_door1_bl1.setColor (0, 1, 0); + $fragchamber_door1_bl2.setColor (0, 1, 0); + $fragchamber_door2_bl1.setColor (0, 1, 0); + $fragchamber_door2_bl2.setColor (0, 1, 0); + + sys.wait (1); + + //trigger control gui to reset it + $guicon1.setGuiParm ("gui_parm8", 3); + $guicon1.setGuiParm ("gui_parm9", 1); + + //trigger the NPC to leave + sys.print ("trigger\n"); + sys.trigger ($fragchamber_npc); + + // keep the doors open for a few seconds + float end_time = sys.getTime() + 7; + while( sys.getTime() < end_time ) { + sys.trigger( $chamber_door2a ); + sys.trigger( $chamber_door2b ); + sys.trigger( $chamber_door4a ); + sys.trigger( $chamber_door4b ); + sys.wait( 0.5 ); + } + } + + // ------------------------------------------------- + // Open the chamber doors + // ------------------------------------------------- + void chamber_opendoors() + { + // doors OPEN and unlock + sys.wait(1); + sys.trigger($npc_backup); + $chamber_door2a.open(); + $chamber_door2b.open(); + $chamber_door4a.open(); + $chamber_door4b.open(); + + $chamber_door2a.lock(0); + $chamber_door2b.lock(0); + $chamber_door4a.lock(0); + $chamber_door4b.lock(0); + + $fragchamber_door1_gui.setGuiParm ("gui_parm3", 1); + $fragchamber_door2_gui.setGuiParm ("gui_parm3", 1); + + $fragchamber_door1_gui.setShaderParm (7, 1); + $fragchamber_door2_gui.setShaderParm (7, 1); + + $fragchamber_door1_blinky_red.hide(); + $fragchamber_door1_blinky_green.show(); + $fragchamber_door2_blinky_red.hide(); + $fragchamber_door2_blinky_green.show(); + + $fragchamber_door1_bl1.setColor (0, 1, 0); + $fragchamber_door1_bl2.setColor (0, 1, 0); + $fragchamber_door2_bl1.setColor (0, 1, 0); + $fragchamber_door2_bl2.setColor (0, 1, 0); + + sys.wait (0.5); + + //trigger the NPC to leave + sys.trigger ($fragchamber_npc_leave); + + //trigger control gui to reset it + $guicon1.setGuiParm ("gui_parm8", 2); + $guicon1.setGuiParm ("gui_parm9", 1); + + // keep the doors open for a few seconds + float end_time = sys.getTime() + 7; + while( sys.getTime() < end_time ) { + sys.trigger( $chamber_door2a ); + sys.trigger( $chamber_door2b ); + sys.trigger( $chamber_door4a ); + sys.trigger( $chamber_door4b ); + sys.wait( 0.5 ); + } + } + + /*-------------------------------------------------------------------- + + F r a g c h a m b e r scripting END + + --------------------------------------------------------------------*/ + + +/* *********************************************************************************** + +Please place non-init code and functions above these init functions + +*********************************************************************************** */ + + /* + Pre-init state. Define starting state of key entities + */ + + void setup_objects() { + g_fConveyDoorRefCount = 0; + g_fWeldDoorRefCount = 0; + } + + + void init_world() { + // -- Start Alphapuzzle + thread SetupRotatingBridge(); + + thread GlideLight1Loop(); + thread GlideLight2Loop(); + thread CargoObjectSequence(); + // -- End Alphapuzzle + } + + void main() { + cache_sounds(); + bind_objects(); + setup_objects(); + init_world(); + } +} \ No newline at end of file diff --git a/base/script/map_caves.script b/base/script/map_caves.script new file mode 100644 index 00000000..8552815e --- /dev/null +++ b/base/script/map_caves.script @@ -0,0 +1,203 @@ +namespace map_caves { + void toggle_light(entity ent, vector srcColor, vector dstColor) { + vector tempVector; + + tempVector = ent.getColor(); + + if ( ( tempVector_x == srcColor_x ) && ( tempVector_y == srcColor_y ) && (tempVector_z == srcColor_z) ) + { + ent.setColor ( dstColor_x, dstColor_y, dstColor_z ); + return; + } + + if ( ( tempVector_x == dstColor_x ) && ( tempVector_y == dstColor_y ) && (tempVector_z == dstColor_z) ) + ent.setColor ( srcColor_x, srcColor_y, srcColor_z ); + + } + + + void room1_toggle() { + vector srcRGB; + vector dstRGB; + + srcRGB_x = 1; + srcRGB_y = 0.83; + srcRGB_z = 0.58; + + dstRGB_x = 1; + dstRGB_y = 0; + dstRGB_z = 0; + + toggle_light ($r1l1, srcRGB, dstRGB); + toggle_light ($r1l2, srcRGB, dstRGB); + toggle_light ($r1l3, srcRGB, dstRGB); + toggle_light ($r1l4, srcRGB, dstRGB); + toggle_light ($r1l5, srcRGB, dstRGB); + toggle_light ($r1l6, srcRGB, dstRGB); + toggle_light ($r1l7, srcRGB, dstRGB); + toggle_light ($r1l8, srcRGB, dstRGB); + } + + void room2_toggle () { + vector srcRGB; + vector dstRGB; + + srcRGB_x = 1; + srcRGB_y = 0.83; + srcRGB_z = 0.58; + + dstRGB_x = 1; + dstRGB_y = 0; + dstRGB_z = 0; + toggle_light ($r2l1, srcRGB, dstRGB); + toggle_light ($r2l2, srcRGB, dstRGB); + toggle_light ($r2l3, srcRGB, dstRGB); + toggle_light ($r2l4, srcRGB, dstRGB); + } + + void room3_toggle() { + vector srcRGB; + vector dstRGB; + + srcRGB_x = 1; + srcRGB_y = 0.83; + srcRGB_z = 0.58; + + dstRGB_x = 1; + dstRGB_y = 0; + dstRGB_z = 0; + + toggle_light ($r3l1, srcRGB, dstRGB); + toggle_light ($r3l2, srcRGB, dstRGB); + toggle_light ($r3l3, srcRGB, dstRGB); + toggle_light ($r3l4, srcRGB, dstRGB); + toggle_light ($r3l5, srcRGB, dstRGB); + toggle_light ($r3l6, srcRGB, dstRGB); + } + + void room4_toggle () { + vector srcRGB; + vector dstRGB; + + srcRGB_x = 1; + srcRGB_y = 0.83; + srcRGB_z = 0.58; + + dstRGB_x = 1; + dstRGB_y = 0; + dstRGB_z = 0; + sys.print ("Processing room4_toggle\n"); + toggle_light ($r4l1, srcRGB, dstRGB); + toggle_light ($r4l2, srcRGB, dstRGB); + } + + void lifter1() { + $endlift1.time (5); + $endlift1.moveTo ($endlift_top); + } + + void lifter2() { + $endlift1.time (5); + $endlift1.moveTo ($endlift_bottom); + } + + //////////////////////////////////////////////////// + // + // Light Group1 on - Group2 & Group3 off + // + //////////////////////////////////////////////////// + void light_group_1() + { + float i; + float rate; + + rate = GAME_FRAMETIME * 0.25; + + // start generator + $gen_rot.rotate ('120 0 0'); + + // force all other group lights to 0,0,0 + sys.setShaderParm(1,0); + sys.setShaderParm(2,0); + + for( i = 0; i <= 1; i += rate ) { + sys.setShaderParm(0,i); + sys.wait ( GAME_FRAMETIME ); + } + } + + //////////////////////////////////////////////////// + // + // Light Group2 on - Group1 & Group3 off + // + //////////////////////////////////////////////////// + void light_group_2() + { + float i; + float rate; + + rate = GAME_FRAMETIME * 0.25; + + // force all other group lights to 0,0,0 + sys.setShaderParm(0,0); + sys.setShaderParm(2,0); + + for( i = 0; i <= 1; i += rate ) { + sys.setShaderParm(1,i); + sys.wait (GAME_FRAMETIME); + } + } + + //////////////////////////////////////////////////// + // + // Light Group3 on - Group1 & Group2 off + // + //////////////////////////////////////////////////// + void light_group_3() + { + float i; + float rate; + + rate = GAME_FRAMETIME * 0.25; + + // force all other group lights to 0,0,0 + sys.setShaderParm(0,0); + sys.setShaderParm(1,0); + + for( i = 0; i <= 1; i += rate ) { + sys.setShaderParm(2,i); + sys.wait (GAME_FRAMETIME); + } + } + + //////////////////////////////////////////////////// + // + // Generator Monitor comes out + // + //////////////////////////////////////////////////// + void gen_mon_out() + { + //rotate door up 60degs + $gen_mon_door.rotateOnce (' 60 0 0 '); + sys.wait(.2); + $gen_mon_light.On(); + sys.waitFor ($gen_mon_door); + + //move monitor up and out + $gen_mon.moveTo ($gen_mon_spot1); + sys.waitFor ($gen_mon); + $gen_mon.moveTo ($gen_mon_spot2); + sys.waitFor ($gen_mon); + + } + + //////////////////////////////////////////////////// + // + // Caverns 1 Main + // + //////////////////////////////////////////////////// + void main() + { + sys.setShaderParm(0,1); + } +} diff --git a/base/script/map_caves2.script b/base/script/map_caves2.script new file mode 100644 index 00000000..a698cf34 --- /dev/null +++ b/base/script/map_caves2.script @@ -0,0 +1,740 @@ +namespace map_caves2 { + + // variable to track the open close state of caves2_shutters + float cave2_shutter_state = 0; + float cave2_ladder_state = 0; + + // variables to track crane movement states + float crane_main_state = 15; + float crane_carrier_state = 210; + float crane_carrier_load_state = 0; + float generator_on = FALSE; + + //////////////////////////////////////////////////// + // + // Setup objects + // + //////////////////////////////////////////////////// + void setup_objects() + { + + //move super_ladder down for keycard puzzle + $super_ladder.time(1); + $super_ladder.move ( DOWN, 632 ); + + $crane_carrier.bind ($crane_main); + $crane_carrier_load.bind ($crane_carrier); + $crane_main.setGuiParm ( "gui_parm3" , (crane_carrier_state / 4)); + $crane_main.setGuiParm ( "gui_parm2" , crane_main_state); + $crane_reset_button.setGuiParm ( "gui_parm2" , crane_main_state); + + $crane_main.time (.05); + $crane_carrier.time (.01); + $crane_carrier_load.time (.02); + } + + // Sound stuff for generator startup + void toggle_generator() { + if (generator_on) { + sys.trigger ($speaker_generator_stop); // Play Stop Sound + sys.trigger ($speaker_generator_loop); // Turn the loop off + generator_on = FALSE; + } + else { + sys.trigger ($speaker_generator_start); + sys.wait (1); + sys.trigger ($speaker_generator_loop); + generator_on = TRUE; + } + } + + // This is so that we don't need one long 40 second looping sound for the ride down + void lift_sound_thread() { + sys.trigger ($lift_speaker_start); + sys.wait (4.75); + sys.trigger ($lift_speaker_loop); // Turn on the loop + sys.wait (35); + sys.trigger ($lift_speaker_end); + sys.wait (0.2); + sys.trigger ($lift_speaker_loop); // Turn off the loop + } + //////////////////////////////////////////////////// + // + // Cave2 Small ladder at the lift + // + //////////////////////////////////////////////////// + void lower_smallcave_ladder() + { + sys.wait( .5 ); + sys.trigger( $snd_ladder_move ); + $smallcave_ladder.move( DOWN, 120 ); + } + + void raise_smallcave_ladder() + { + sys.wait( .5 ); + sys.trigger( $snd_ladder_move ); + $smallcave_ladder.move( UP, 120 ); + } + + //////////////////////////////////////////////////// + // + // Cave2 1st Elevator + // + //////////////////////////////////////////////////// + void big_broke_start() + { + // times for big_broke mover + $big_broke.time (40); + $big_broke.accelTime (5); + $big_broke.decelTime (.5); + + $big_broke.setKey ("snd_accel", "cav1_lift_start"); + $big_broke.setKey ("snd_move", "cav1_lift_loop"); + $big_broke.setKey ("snd_decel", "cav1_lift_stop"); + + // move the big_broke + //thread lift_sound_thread(); + $big_broke.moveTo ($big_broke_start); + sys.waitFor ($big_broke); + sys.trigger ($big_broke); + sys.trigger ($func_aas_obstacle_1); + } + +void big_broke_end() + { + // times for big_broke mover + + $big_broke.setKey ("snd_accel", "cav1_lift_start"); + $big_broke.setKey ("snd_move", "cav1_lift_loop"); + $big_broke.setKey ("snd_decel", "cav1_lift_stop"); + + + $big_broke.time (40); + $big_broke.accelTime (5); + $big_broke.decelTime (.2); + + // move the big_broke +// thread lift_sound_thread(); + $big_broke.moveTo ($big_broke_end); + sys.trigger ($func_aas_obstacle_1); + } + + + //////////////////////////////////////////////////// + // Cave2 key card objective call + //////////////////////////////////////////////////// + void callcavekey1() + { + sys.trigger ($caverns2_obj1); + } + + //////////////////////////////////////////////////// + // Caverns2 Piston machine1 sream + //////////////////////////////////////////////////// + + void piston1steam() + { + sys.trigger ($piston_1_steamspeaker); + sys.trigger ($pm1_steam1); + sys.wait (1); + sys.trigger ($pm1_steam1); + } + + //////////////////////////////////////////////////// + // Caverns2 Piston machine2 sream + //////////////////////////////////////////////////// + + void piston2steam() + { + sys.trigger ($piston_2_steamspeaker); + sys.trigger ($pm2_steam1); + sys.wait (1); + sys.trigger ($pm2_steam1); + } + + //////////////////////////////////////////////////// + // Caverns2 Piston machine1 + //////////////////////////////////////////////////// + + void cavepiston1() + { + while(1){ + $cave_piston1.accelTime (.2); + $cave_piston1.decelTime (.2); + + $cave_piston1.time (6); + + sys.trigger ($cave_piston_1_speaker_start); + sys.trigger ($cave_piston_1_speaker_loop); // Turn loop on + + $cave_piston1.move (SOUTH,64); + sys.waitFor ($cave_piston1); + + sys.trigger ($cave_piston_1_speaker_loop); // Turn loop off + sys.trigger ($cave_piston_1_speaker_endclack); + + thread piston1steam(); + + sys.wait (0.75); + + $cave_piston1.time (.5); + sys.trigger ($cave_piston_1_speaker_back); + $cave_piston1.move (NORTH,64); + sys.wait (1.5); + } + } + + //////////////////////////////////////////////////// + // Caverns2 Piston machine2 + //////////////////////////////////////////////////// + + void cavepiston2() + { + while(1){ + $cave_piston2.accelTime (.2); + $cave_piston2.decelTime (.2); + + $cave_piston2.time (5.5); + + sys.trigger ($cave_piston_2_speaker_start); + sys.trigger ($cave_piston_2_speaker_loop); // Turn loop on + + $cave_piston2.move (SOUTH,64); + sys.waitFor ($cave_piston2); + + sys.trigger ($cave_piston_2_speaker_loop); // Turn loop off + sys.trigger ($cave_piston_2_speaker_endclack); + + thread piston2steam(); + + sys.wait (1); + + $cave_piston2.time (.5); + + sys.trigger ($cave_piston_2_speaker_back); + $cave_piston2.move (NORTH,64); + + + sys.wait (1.5); + } + } + //////////////////////////////////////////////////// + // + // Cave2 v81 rumble + // + //////////////////////////////////////////////////// + void cave2_v81_rumble() + { + $c2_v81.time (.1); + + while(1){ + $c2_v81.rotateOnce ( '2 0 0' ); + sys.waitFor ($c2_v81); + $c2_v81.rotateOnce ( '-2 0 0' ); + sys.waitFor ($c2_v81); + + } + } + + //////////////////////////////////////////////////// + // + // Cave2 v82 rumble + // + //////////////////////////////////////////////////// + void cave2_v82_rumble() + { + $c2_v82.time (.1); + + while(1){ + $c2_v82.rotateOnce ( '2 0 0' ); + sys.waitFor ($c2_v82); + $c2_v82.rotateOnce ( '-2 0 0' ); + sys.waitFor ($c2_v82); + + } + } + + //////////////////////////////////////////////////// + // + // Cave2 cave eggs + // + //////////////////////////////////////////////////// +// void cave_egg1_bob() +// { +// $cave_egg1.rotate ( '0 15 0' ); +// +// $cave_egg1.time (.5); +// $cave_egg1.accelTime (.25); +// $cave_egg1.decelTime (.25); +// +// while(1){ +// $cave_egg1.move ( DOWN, 2 ); +// sys.waitFor ($cave_egg1); +// $cave_egg1.move ( UP, 2 ); +// sys.waitFor ($cave_egg1); +// +// } +// } +// +// void cave_egg2_bob() +// { +// $cave_egg2.rotate ( '0 16 0' ); +// +// $cave_egg2.time (.8); +// $cave_egg2.accelTime (.25); +// $cave_egg2.decelTime (.25); +// +// while(1){ +// $cave_egg2.move ( DOWN, 2 ); +// sys.waitFor ($cave_egg2); +// $cave_egg2.move ( UP, 2 ); +// sys.waitFor ($cave_egg2); +// +// } +// } +// +// +// void cave_egg3_bob() +// { +// $cave_egg3.rotate ( '0 15 0' ); +// +// $cave_egg3.time (.6); +// $cave_egg3.accelTime (.25); +// $cave_egg3.decelTime (.25); +// +// while(1){ +// $cave_egg3.move ( DOWN, 2 ); +// sys.waitFor ($cave_egg3); +// $cave_egg3.move ( UP, 2 ); +// sys.waitFor ($cave_egg3); +// +// } +// } + + + + //////////////////////////////////////////////////// + // + // Cave2 shutter open close + // + //////////////////////////////////////////////////// + void cave2_shutter_openclose() + { + if (cave2_shutter_state==0){ + sys.trigger ($shutter_speaker); + sys.trigger ($cave2_shutter_door); + $cave2_shutter1.rotateOnce ( '0 0 -75' ); + $cave2_shutter2.rotateOnce ( '0 0 -75' ); + $cave2_shutter3.rotateOnce ( '0 0 -75' ); + sys.waitFor ($cave2_shutter1); + cave2_shutter_state = 1; + } else { + sys.trigger ($shutter_speaker); + sys.trigger ($cave2_shutter_door); + $cave2_shutter1.rotateOnce ( '0 0 75' ); + $cave2_shutter2.rotateOnce ( '0 0 75' ); + $cave2_shutter3.rotateOnce ( '0 0 75' ); + sys.waitFor ($cave2_shutter1); + cave2_shutter_state = 0; + } + } + + //////////////////////////////////////////////////// + // + // Cave2 ladder open close + // + //////////////////////////////////////////////////// + void cave2_ladder_openclose() + { + if (cave2_ladder_state==0){ + $cave2_dropladder.time (0.5); + sys.trigger ($cave2_ladder_door); + sys.trigger ($ladder_hinge_speaker); + $cave2_dropladder.rotateOnce ( '0 0 -90' ); + sys.waitFor ($cave2_dropladder); + $ladder_rotate_gui.setShaderParm ( 7 , 1 ); + cave2_ladder_state = 1; + } else { + sys.trigger ($cave2_ladder_door); + sys.trigger ($ladder_hinge_speaker); + $cave2_dropladder.time (0.5); + $cave2_dropladder.rotateOnce ( '0 0 90' ); + sys.waitFor ($cave2_dropladder); + $ladder_rotate_gui.setShaderParm ( 7 , 0 ); + cave2_ladder_state = 0; + } + } + + void crane_start_thread() { + sys.trigger ($crane_start_speaker); + sys.wait (1); + $crane_main_speaker.On(); + + } + + //////////////////////////////////////////////////// + // + // Crane Main Move Right + // + //////////////////////////////////////////////////// + void crane_main_right() + { + sys.killthread ( "map_caves2::crane_main_left" ); + sys.killthread ( "map_caves2::crane_carrier_forward" ); + sys.killthread ( "map_caves2::crane_carrier_back" ); + + //start the sound +// sys.trigger ($crane_start_speaker); +// $crane_main_speaker.On(); + + thread crane_start_thread(); + + while ( crane_main_state < 105 ) { + $crane_main.rotateOnce ( '0 -1 0' ); + sys.waitFor ($crane_main); + crane_main_state = crane_main_state + 1; + sys.print ("crane_main_state = " + crane_main_state + " \n"); + $crane_main.setGuiParm ( "gui_parm2" , crane_main_state); + $crane_reset_button.setGuiParm ( "gui_parm2" , crane_main_state); + sys.wait (.01); + } + sys.trigger ($crane_end_speaker); + //stop the sound + $crane_main_speaker.Off(); + } + + //////////////////////////////////////////////////// + // + // Crane Main Move Left + // + //////////////////////////////////////////////////// + void crane_main_left() + { + sys.killthread ( "map_caves2::crane_main_right" ); + sys.killthread ( "map_caves2::crane_carrier_forward" ); + sys.killthread ( "map_caves2::crane_carrier_back" ); + + //start the sound + //sys.trigger ($crane_start_speaker); + //$crane_main_speaker.On(); + + thread crane_start_thread(); + + while ( crane_main_state > 15 ) { + $crane_main.rotateOnce ( '0 1 0' ); + sys.waitFor ($crane_main); + crane_main_state = crane_main_state - 1; + sys.print ("crane_main_state = " + crane_main_state + " \n"); + $crane_main.setGuiParm ( "gui_parm2" , crane_main_state); + $crane_reset_button.setGuiParm ( "gui_parm2" , crane_main_state); + sys.wait (.01); + } + + //stop the sound + $crane_main_speaker.Off(); + sys.trigger ($crane_end_speaker); + } + + //////////////////////////////////////////////////// + // + // Crane Reset + // + //////////////////////////////////////////////////// + void crane_main_reset() + { + sys.killthread ( "map_caves2::crane_main_left" ); + sys.killthread ( "map_caves2::crane_main_right" ); + sys.killthread ( "map_caves2::crane_carrier_forward" ); + sys.killthread ( "map_caves2::crane_carrier_back" ); + + //start the sound + $crane_main_speaker.On(); + + if (crane_main_state > 15) { + while ( crane_main_state > 15 ) { + $crane_main.rotateOnce ( '0 1 0' ); + sys.waitFor ($crane_main); + crane_main_state = crane_main_state - 1; + sys.print ("crane_main_state = " + crane_main_state + " \n"); + $crane_main.setGuiParm ( "gui_parm2" , crane_main_state); + $crane_reset_button.setGuiParm ( "gui_parm2" , crane_main_state); + sys.wait (.01); + } + } else if (crane_main_state < 15) { + while ( crane_main_state < 15 ) { + $crane_main.rotateOnce ( '0 -1 0' ); + sys.waitFor ($crane_main); + crane_main_state = crane_main_state + 1; + sys.print ("crane_main_state = " + crane_main_state + " \n"); + $crane_main.setGuiParm ( "gui_parm2" , crane_main_state); + $crane_reset_button.setGuiParm ( "gui_parm2" , crane_main_state); + sys.wait (.01); + } + } + + //stop the sound + $crane_main_speaker.Off(); + } + + //////////////////////////////////////////////////// + // + // Crane Carrier Move Forward + // + //////////////////////////////////////////////////// + void crane_carrier_forward() + { + sys.killthread ( "map_caves2::crane_main_left" ); + sys.killthread ( "map_caves2::crane_main_right" ); + sys.killthread ( "map_caves2::crane_carrier_back" ); + + //start the sound + $crane_carrier_speaker.On(); + + while ( crane_carrier_state > 0 ) { + $crane_carrier.move ( FORWARD, -1 ); + sys.waitFor ($crane_carrier); + crane_carrier_state = crane_carrier_state - 1; + sys.print ("crane_carrier_state = " + (crane_carrier_state / 4) + " \n"); + $crane_main.setGuiParm ( "gui_parm3" , (crane_carrier_state / 4)); + sys.wait (.01); + } + + //stop the sound + $crane_carrier_speaker.Off(); + } + + //////////////////////////////////////////////////// + // + // Crane Carrier Move Back + // + //////////////////////////////////////////////////// + void crane_carrier_back() + { + sys.killthread ( "map_caves2::crane_main_left" ); + sys.killthread ( "map_caves2::crane_main_right" ); + sys.killthread ( "map_caves2::crane_carrier_foward" ); + + //start the sound + $crane_carrier_speaker.On(); + + while ( crane_carrier_state < 360 ) { + $crane_carrier.move ( FORWARD, 1 ); + sys.waitFor ($crane_carrier); + crane_carrier_state = crane_carrier_state + 1; + sys.print ("crane_carrier_state = " + (crane_carrier_state / 4) + " \n"); + $crane_main.setGuiParm ( "gui_parm3" , (crane_carrier_state / 4)); + sys.wait (.01); + } + + //stop the sound + $crane_carrier_speaker.Off(); + } + + //////////////////////////////////////////////////// + // + // Crane Carrier Load Move UP + // + //////////////////////////////////////////////////// + void crane_carrier_load_up() + { + sys.killthread ( "map_caves2::crane_main_left" ); + sys.killthread ( "map_caves2::crane_main_right" ); + sys.killthread ( "map_caves2::crane_carrier_foward" ); + sys.killthread ( "map_caves2::crane_carrier_back" ); + sys.killthread ( "map_caves2::crane_carrier_load_down" ); + + while ( crane_carrier_load_state < 72 ) { + $crane_carrier_load.move ( UP, 1 ); + sys.waitFor ($crane_carrier_load); + crane_carrier_load_state = crane_carrier_load_state + 1; + sys.print ("crane_carrier_load_state = " + crane_carrier_load_state + " \n"); + sys.wait (.01); + } + } + + //////////////////////////////////////////////////// + // + // Crane Carrier Load Move DOWN + // + //////////////////////////////////////////////////// + void crane_carrier_load_down() + { + sys.killthread ( "map_caves2::crane_main_left" ); + sys.killthread ( "map_caves2::crane_main_right" ); + sys.killthread ( "map_caves2::crane_carrier_foward" ); + sys.killthread ( "map_caves2::crane_carrier_back" ); + sys.killthread ( "map_caves2::crane_carrier_load_up" ); + + while ( crane_carrier_load_state > -176 ) { + $crane_carrier_load.move ( DOWN, 1 ); + sys.waitFor ($crane_carrier_load); + crane_carrier_load_state = crane_carrier_load_state - 1; + sys.print ("crane_carrier_load_state = " + crane_carrier_load_state + " \n"); + sys.wait (.01); + } + } + + //////////////////////////////////////////////////// + // + // stops all crane movement threads + // + //////////////////////////////////////////////////// + void crane_stop() + { + //turn off speakers + $crane_carrier_speaker.Off(); + $crane_main_speaker.Off(); + + sys.killthread ( "map_caves2::crane_main_right" ); + sys.killthread ( "map_caves2::crane_main_left" ); + sys.killthread ( "map_caves2::crane_carrier_forward" ); + sys.killthread ( "map_caves2::crane_carrier_back" ); + sys.killthread ( "map_caves2::crane_carrier_load_up" ); + sys.killthread ( "map_caves2::crane_carrier_load_down" ); + } + + + //////////////////////////////////////////////////// + // + // show crane_carrier_load + // + //////////////////////////////////////////////////// + void crane_load_show() + { + //show crane_load + $crane_carrier_load.show(); + } + + + //////////////////////////////////////////////////// + // + // move super_ladder up + // + //////////////////////////////////////////////////// + void super_ladder_move() + { + //move super_ladder up for keycard puzzle + sys.trigger ($super_ladder_speaker); + $super_ladder.time(6); + $super_ladder.move(UP,632); + } + + void stone_movement (entity ent, float fdirection, float fdistance, float ftime) { + ent.time (ftime); + ent.startSoundShader ("stone_movement_loop", SND_CHANNEL_VOICE); + ent.move (fdirection, fdistance); + + sys.wait (ftime - 0.25); + + ent.startSoundShader ( "stone_movement_end", SND_CHANNEL_VOICE2 ); + ent.stopSound ( SND_CHANNEL_VOICE, false ); + } + + //////////////////////////////////////////////////// + // + // Vag Stairs + // + //////////////////////////////////////////////////// + void raise_vag_stairs() + { + //raises stairs after vag fight + +/* float i; + entity ent; + + for (i=8; i<=128; i+=8) { + ent=sys.getEntity ("step" + i); + + thread stone_movement ( ent, UP, i, (i / 8) ); + } +*/ + thread stone_movement ($step1, UP, 8, 1); + thread stone_movement ($step2, UP, 16, 2); + thread stone_movement ($step3, UP, 24, 3); + thread stone_movement ($step4, UP, 32, 4); + thread stone_movement ($step5, UP, 40, 5); + thread stone_movement ($step6, UP, 48, 6); + thread stone_movement ($step7, UP, 56, 7); + thread stone_movement ($step8, UP, 64, 8); + thread stone_movement ($step9, UP, 72, 9); + thread stone_movement ($step10, UP, 80, 10); + thread stone_movement ($step11, UP, 88, 11); + thread stone_movement ($step12, UP, 96, 12); + thread stone_movement ($step13, UP, 104, 13); + thread stone_movement ($step14, UP, 112, 14); + thread stone_movement ($step15, UP, 120, 15); + thread stone_movement ($step16, UP, 128, 16); + +/* + $step1.time(1); + $step1.move(UP,8); + $step2.time(2); + $step2.move(UP,16); + $step3.time(3); + $step3.move(UP,24); + $step4.time(4); + $step4.move(UP,32); + $step5.time(5); + $step5.move(UP,40); + $step6.time(6); + $step6.move(UP,48); + $step7.time(7); + $step7.move(UP,56); + $step8.time(8); + $step8.move(UP,64); + $step9.time(9); + $step9.move(UP,72); + $step10.time(10); + $step10.move(UP,80); + $step11.time(11); + $step11.move(UP,88); + $step12.time(12); + $step12.move(UP,96); + $step13.time(13); + $step13.move(UP,104); + $step14.time(14); + $step14.move(UP,112); + $step15.time(15); + $step15.move(UP,120); + $step16.time(16); + $step16.move(UP,128); +*/ +} + + void cache_sounds() { + sys.cacheSoundShader ( "stone_movement_loop" ); + sys.cacheSoundShader ( "stone_movement_end" ); + } + + + //////////////////////////////////////////////////// + // + // Caverns 2 Main + // + //////////////////////////////////////////////////// + void main() + { + cache_sounds(); + setup_objects(); + //starts swinging lamp swinging + $swingding.sway( 28, 0, '20 0 0' ); +// thread big_broke(); + thread cavepiston1(); + thread cavepiston2(); + thread cave2_v81_rumble(); + thread cave2_v82_rumble(); +// thread cave_egg1_bob(); +// thread cave_egg2_bob(); +// thread cave_egg3_bob(); + + } + +}// namespace + + +//Fred's Bridge thing +// +//void hk_fireball( entity self ) { +// self.launchMissiles( "projectile_fireball_hellknight", "snd_fire", "rmissile", "target", 1, 0 ); +//} diff --git a/base/script/map_comm1.script b/base/script/map_comm1.script new file mode 100644 index 00000000..40e8596d --- /dev/null +++ b/base/script/map_comm1.script @@ -0,0 +1,1193 @@ +namespace map_comm1 { + float msg_state; + entity pipe1, pipe2, pipe3, pipe4, pipe5, pipe6, pipe0; + vector pipe_origin; + + void mover_startsound (entity ent) { + //ent.startSoundShader ("m1_start", SND_CHANNEL_VOICE); + //sys.wait (0.75); + ent.startSoundShader ("m1_loop", SND_CHANNEL_VOICE2); + } + + void mover_stopsound (entity ent) { + ent.startSoundShader ("m1_stop", SND_CHANNEL_VOICE2); + ent.startSoundShader ("rec1_pump_endclack_01", SND_CHANNEL_ITEM ); + } + + void mover_startsound2 (entity ent) { + //ent.startSoundShader ("m2_start", SND_CHANNEL_VOICE); + //sys.wait (0.75); + ent.startSoundShader ("m2_loop", SND_CHANNEL_VOICE2); + } + + void mover_stopsound2 (entity ent) { + ent.startSoundShader ("m2_stop", SND_CHANNEL_VOICE2); + ent.startSoundShader ("rec1_pump_endclack_01", SND_CHANNEL_ITEM ); + } + + void mover_startsound3 (entity ent) { + //ent.startSoundShader ("m3_start", SND_CHANNEL_VOICE); + //sys.wait (1); + ent.startSoundShader ("m3_loop", SND_CHANNEL_VOICE2); + } + + void mover_stopsound3 (entity ent) { + ent.startSoundShader ("m3_stop", SND_CHANNEL_VOICE2); + ent.startSoundShader ("rec1_pump_endclack_01", SND_CHANNEL_ITEM ); + } + + + + //////////////////////////////////////////////////// + // + // Setup binds and times etc... + // + //////////////////////////////////////////////////// + void setup_objects() + { + //power drill 1 and 2 binds and initial movements + $pwrdrill_1.bind ($pwrdrill_1_anchor); + $pwrdrill_2.bind ($pwrdrill_2_anchor); + + $pwrdrill_1_anchor.rotateOnce ( '0 0 -45' ); + $pwrdrill_2_anchor.rotateOnce ( '0 0 -45' ); + + sys.waitFor ($pwrdrill_1_anchor); + + $pwrdrill_1.time (.20); + $pwrdrill_1.time (.50); + + $pwrdrill_1.rotate ( '360 0 0' ); + $pwrdrill_2.rotate ( '360 0 0' ); + + //oval binds and times/speeds + $oval_spid_1.bind ($oval_main); + $oval_spid_2.bind ($oval_main); + + $oval_main.speed (300); + + $oval_main.decelTime (.5); + $oval_main.accelTime (.25); + + //snail 2 pole 1 binds and initial movements + $snl2_pl1_recep.bind ($snl2_pl1_anc); + $snl2_pl1.bind ($snl2_pl1_anc); + $snl2_pl1_spin_anc.bind ($snl2_pl1_anc); + + $snl2_pl1_spin.bind ($snl2_pl1_spin_anc); + + $snl2_pl1_spin_arm1.bind ($snl2_pl1_spin); + $snl2_pl1_spin_arm2.bind ($snl2_pl1_spin); + $snl2_pl1_spin_arm3.bind ($snl2_pl1_spin); + $snl2_pl1_spin_arm4.bind ($snl2_pl1_spin); + + $snl2_pl1_wire1.bind ($snl2_pl1_spin); + $snl2_pl1_wire2.bind ($snl2_pl1_spin); + $snl2_pl1_wire3.bind ($snl2_pl1_spin); + $snl2_pl1_wire4.bind ($snl2_pl1_spin); + + $snl2_pl1_spin.time (1); + + $snl2_pl1_spin_arm1.time (.6); + $snl2_pl1_spin_arm2.time (.6); + $snl2_pl1_spin_arm3.time (.6); + $snl2_pl1_spin_arm4.time (.6); + + //initial position movements + $snl2_pl1_anc.rotateOnce ( '67.5 0 0'); + sys.waitFor ($snl2_pl1_anc); + + $snl2_pl1.move ( DOWN, 192 ); + + //snail 2 pole 2 binds and initial movements + $snl2_pl2_recep.bind ($snl2_pl2_anc); + $snl2_pl2.bind ($snl2_pl2_anc); + $snl2_pl2_spin_anc.bind ($snl2_pl2_anc); + + $snl2_pl2_spin.bind ($snl2_pl2_spin_anc); + + $snl2_pl2_spin_arm1.bind ($snl2_pl2_spin); + $snl2_pl2_spin_arm2.bind ($snl2_pl2_spin); + $snl2_pl2_spin_arm3.bind ($snl2_pl2_spin); + $snl2_pl2_spin_arm4.bind ($snl2_pl2_spin); + + $snl2_pl2_wire1.bind ($snl2_pl2_spin); + $snl2_pl2_wire2.bind ($snl2_pl2_spin); + $snl2_pl2_wire3.bind ($snl2_pl2_spin); + $snl2_pl2_wire4.bind ($snl2_pl2_spin); + + $snl2_pl2_spin.time (1); + + $snl2_pl2_spin_arm1.time (.6); + $snl2_pl2_spin_arm2.time (.6); + $snl2_pl2_spin_arm3.time (.6); + $snl2_pl2_spin_arm4.time (.6); + + //initial position movements + $snl2_pl2_anc.rotateOnce ( '22.5 0 0'); + sys.waitFor ($snl2_pl2_anc); + + $snl2_pl2.move ( DOWN, 208 ); + + //snail 2 shell times and initial movements + $snl2_shell1.time (.25); + $snl2_shell2.time (.5); + $snl2_shell3.time (.75); + + //misc pipe hall initial movements, rotations etc... + $holder_1.rotateOnce ( '-45 0 0' ); + $holder_2.rotateOnce ( '-45 0 0' ); + $holder_3.rotateOnce ( '-45 0 0' ); + $holder_4.rotateOnce ( '-45 0 0' ); + $holder_5.rotateOnce ( '-45 0 0' ); + $holder_6.rotateOnce ( '-45 0 0' ); + + $mcarrier.rotateOnce ( '-45 0 0' ); + + $lcarrier.rotateOnce ( '-45 0 0' ); + $lcarrier.speed (100); + + //pipe hall pipe initial setups + pipe1 = sys.spawn( "func_mover" ); + pipe1.setModel( "pipe1" ); + pipe_origin = $pipe1pos_1.getOrigin(); + pipe1.setOrigin (pipe_origin); + pipe1.setAngles ( '-45 0 0' ); + + pipe2 = sys.spawn( "func_mover" ); + pipe2.setModel( "pipe2" ); + pipe_origin = $pipe2pos_1.getOrigin(); + pipe2.setOrigin (pipe_origin); + pipe2.setAngles ( '-45 0 0' ); + + pipe3 = sys.spawn( "func_mover" ); + pipe3.setModel( "pipe3" ); + pipe_origin = $pipe3pos_1.getOrigin(); + pipe3.setOrigin (pipe_origin); + pipe3.setAngles ( '-45 0 0' ); + + pipe4 = sys.spawn( "func_mover" ); + pipe4.setModel( "pipe4" ); + pipe_origin = $pipe4pos_1.getOrigin(); + pipe4.setOrigin (pipe_origin); + pipe4.setAngles ( '-45 0 0' ); + + pipe5 = sys.spawn( "func_mover" ); + pipe5.setModel( "pipe5" ); + pipe_origin = $pipe5pos_1.getOrigin(); + pipe5.setOrigin (pipe_origin); + pipe5.setAngles ( '-45 0 0' ); + + pipe6 = sys.spawn( "func_mover" ); + pipe6.setModel( "pipe6" ); + pipe_origin = $pipe6pos_1.getOrigin(); + pipe6.setOrigin (pipe_origin); + pipe6.setAngles ( '-45 0 0' ); + + } + + + + //////////////////////////////////////////////////// + // + // oval movement + // + //////////////////////////////////////////////////// + void oval_movement () + { + float pick, pick_old, oval_dist ; + $oval_main.setKey ("s_minDistance", "5"); + $oval_main.setKey ("s_maxDistance", "30"); + $oval_main.setKey ("s_unclamped", "1"); + $oval_main.setKey ("s_volume", "5"); + $oval_main.setKey ("snd_accel", "m5_start"); + $oval_main.setKey ("snd_move", "m4_loop"); + $oval_main.setKey ("snd_decel", "m4_stop"); + + pick = 1; + pick_old = 1; + + while (1) + { + while ( pick == pick_old ) + { + pick = ( sys.random(4) + 1 ); + + if ( pick < 2 ) + { + pick = 1; + } + else if ( pick < 3 ) + { + pick = 2; + } + else if ( pick < 4 ) + { + pick = 3; + } + else + { + pick = 4; + } + } + + oval_dist = (( pick_old - pick ) * 192 ); + $oval_main.move ( WEST, oval_dist ); + + sys.waitFor ($oval_main); + sys.wait (2); + + pick_old = pick; + } + + } + + void cache_sounds() { + sys.cacheSoundShader ("m1_loop"); + sys.cacheSoundShader ("m1_stop"); + sys.cacheSoundShader ("m2_loop"); + sys.cacheSoundShader ("m2_stop"); + sys.cacheSoundShader ("m3_loop"); + sys.cacheSoundShader ("m3_stop"); + sys.cacheSoundShader ("rec1_pump_endclack_01"); + + sys.cacheSoundShader ("c1_mcarrier"); + sys.cacheSoundShader ("c1_pipeupaway"); + sys.cacheSoundShader ("c1_pipedownbounce"); + sys.cacheSoundShader ("c1_pipeloader"); + sys.cacheSoundShader ("c1_pipeloader2"); + sys.cacheSoundShader ("c1_pipeloader3"); + sys.cacheSoundShader ("c1_mloop1"); + + + } + + //////////////////////////////////////////////////// + // + // move pipe up and away + // + //////////////////////////////////////////////////// + void pipe_upaway (entity pipeupaway) + { + pipeupaway.bind ($mcarrier); + + $mcarrier.startSoundShader ("c1_mcarrier", SND_CHANNEL_VOICE ); + + $mcarrier.moveTo ($mcarrierpos_2); + sys.waitFor ($mcarrier); + + pipeupaway.unbind (); + + $mcarrier.moveTo ($mcarrierpos_1); + pipeupaway.time (2); + pipeupaway.startSoundShader ("c1_pipeupaway", SND_CHANNEL_VOICE2 ); + pipeupaway.move ( UP , 128 ); + sys.waitFor (pipeupaway); + pipeupaway.remove (); + } + + + //////////////////////////////////////////////////// + // + // move pipe to middle + // + //////////////////////////////////////////////////// + void move_pipe (entity pipe, entity holder) + { + holder.speed (100); + + pipe.bind (holder); + holder.startSoundShader ("c1_pipeloader2", SND_CHANNEL_VOICE ); + holder.move ( REL_BACK, 24 ); + sys.waitFor (holder); + + pipe.unbind (); + pipe.bind ($lcarrier); + + holder.move ( REL_FORWARD, 24 ); + holder.startSoundShader ("c1_pipeloader3", SND_CHANNEL_VOICE2 ); + sys.waitFor (holder); + + holder.bind ($holder_rotate); + + $holder_rotate.rotateOnce ( '15 0 0' ); + + $lcarrier.setKey ("snd_move", "c1_mloop1" ); + $lcarrier.moveTo ($lcarrierpos_middle); + sys.waitFor ($lcarrier); + + $lcarrier.startSoundShader ("c1_pipeloader", SND_CHANNEL_VOICE); + $lcarrier.move ( REL_FORWARD, 50 ); + sys.waitFor ($lcarrier); + pipe.unbind (); + sys.wait (.5); + + $lcarrier.startSoundShader ("c1_pipeloader2", SND_CHANNEL_VOICE); + $lcarrier.move ( REL_BACK, 50 ); + sys.waitFor ($lcarrier); + + // thread pipe move up and away + sys.killthread ( "map_comtower::pipe_upaway" ); + thread pipe_upaway ( pipe ); + + } + + + //////////////////////////////////////////////////// + // + // test stuff eventually will be pipe mover loop + // + //////////////////////////////////////////////////// + void move_hallpipes() + { + float rand; + + while (1) + { + sys.killthread ("map_comtower::move_pipe"); + rand = sys.random (5); + + if ( rand < 1 ) + { + $lcarrier.moveTo ($lcarrierpos_1); + sys.waitFor ($lcarrier); + pipe0 = pipe1; + thread move_pipe (pipe0, $holder_1); + + sys.wait (2); + //move new pipe in + pipe1 = sys.spawn( "func_mover" ); + pipe1.setModel( "pipe1" ); + pipe_origin = $pipe1pos_initial.getOrigin(); + pipe1.setOrigin (pipe_origin); + pipe1.setAngles ( '-30 0 0' ); + + pipe1.moveTo ($pipe1pos_1); + sys.waitFor ( pipe1 ); + sys.wait (.5); + $holder_1.bind (pipe1); + $holder_1.startSoundShader ("c1_pipedownbounce", SND_CHANNEL_VOICE2 ); + + + pipe1.time (.5); + pipe1.rotateOnce ( '-15 0 0' ); + sys.waitFor ( pipe1 ); + + //bounce it + pipe1.time( .15 ); + pipe1.accelTime( 0 ); + pipe1.decelTime( .15 ); + pipe1.rotateOnce( '1 0 0' ); + sys.waitFor (pipe1); + + pipe1.time( .15 ); + pipe1.accelTime( .15 ); + pipe1.decelTime( 0 ); + pipe1.rotateOnce( '-1 0 0' ); + sys.waitFor (pipe1); + + $holder_1.unbind (); + + } + else if ( rand < 2 ) + { + $lcarrier.moveTo ($lcarrierpos_2); + sys.waitFor ($lcarrier); + pipe0 = pipe2; + thread move_pipe (pipe0, $holder_2); + + sys.wait (2); + //move new pipe in + pipe2 = sys.spawn( "func_mover" ); + pipe2.setModel( "pipe2" ); + pipe_origin = $pipe2pos_initial.getOrigin(); + pipe2.setOrigin (pipe_origin); + pipe2.setAngles ( '-30 0 0' ); + + pipe2.moveTo ($pipe2pos_1); + sys.waitFor ( pipe2 ); + sys.wait (.5); + $holder_2.bind (pipe2); + $holder_2.startSoundShader ("c1_pipedownbounce", SND_CHANNEL_VOICE2 ); + + pipe2.time (.5); + pipe2.rotateOnce ( '-15 0 0' ); + sys.waitFor ( pipe2 ); + + //bounce it + pipe2.time( .15 ); + pipe2.accelTime( 0 ); + pipe2.decelTime( .15 ); + pipe2.rotateOnce( '1 0 0' ); + sys.waitFor (pipe2); + + pipe2.time( .15 ); + pipe2.accelTime( .15 ); + pipe2.decelTime( 0 ); + pipe2.rotateOnce( '-1 0 0' ); + sys.waitFor (pipe2); + + $holder_2.unbind (); + } + else if ( rand < 3 ) + { + $lcarrier.moveTo ($lcarrierpos_3); + sys.waitFor ($lcarrier); + pipe0 = pipe3; + thread move_pipe (pipe0, $holder_3); + + sys.wait (2); + //move new pipe in + pipe3 = sys.spawn( "func_mover" ); + pipe3.setModel( "pipe3" ); + pipe_origin = $pipe3pos_initial.getOrigin(); + pipe3.setOrigin (pipe_origin); + pipe3.setAngles ( '-30 0 0' ); + + pipe3.moveTo ($pipe3pos_1); + sys.waitFor ( pipe3 ); + sys.wait (.5); + $holder_3.bind (pipe3); + $holder_3.startSoundShader ("c1_pipedownbounce", SND_CHANNEL_VOICE2 ); + + pipe3.time (.5); + pipe3.rotateOnce ( '-15 0 0' ); + sys.waitFor ( pipe3 ); + + //bounce it + pipe3.time( .15 ); + pipe3.accelTime( 0 ); + pipe3.decelTime( .15 ); + pipe3.rotateOnce( '1 0 0' ); + sys.waitFor (pipe3); + + pipe3.time( .15 ); + pipe3.accelTime( .15 ); + pipe3.decelTime( 0 ); + pipe3.rotateOnce( '-1 0 0' ); + sys.waitFor (pipe3); + + $holder_3.unbind (); + } + else if ( rand < 4 ) + { + $lcarrier.moveTo ($lcarrierpos_4); + sys.waitFor ($lcarrier); + pipe0 = pipe4; + thread move_pipe (pipe0, $holder_4); + + sys.wait (2); + //move new pipe in + pipe4 = sys.spawn( "func_mover" ); + pipe4.setModel( "pipe4" ); + pipe_origin = $pipe4pos_initial.getOrigin(); + pipe4.setOrigin (pipe_origin); + pipe4.setAngles ( '-30 0 0' ); + + pipe4.moveTo ($pipe4pos_1); + sys.waitFor ( pipe4 ); + sys.wait (.5); + $holder_4.bind (pipe4); + $holder_4.startSoundShader ("c1_pipedownbounce", SND_CHANNEL_VOICE2 ); + + pipe4.time (.5); + pipe4.rotateOnce ( '-15 0 0' ); + sys.waitFor ( pipe4 ); + + //bounce it + pipe4.time( .15 ); + pipe4.accelTime( 0 ); + pipe4.decelTime( .15 ); + pipe4.rotateOnce( '1 0 0' ); + sys.waitFor (pipe4); + + pipe4.time( .15 ); + pipe4.accelTime( .15 ); + pipe4.decelTime( 0 ); + pipe4.rotateOnce( '-1 0 0' ); + sys.waitFor (pipe4); + + $holder_4.unbind (); + } + else if ( rand < 5 ) + { + $lcarrier.moveTo ($lcarrierpos_5); + sys.waitFor ($lcarrier); + pipe0 = pipe5; + thread move_pipe (pipe0, $holder_5); + + sys.wait (2); + //move new pipe in + pipe5 = sys.spawn( "func_mover" ); + pipe5.setModel( "pipe5" ); + pipe_origin = $pipe5pos_initial.getOrigin(); + pipe5.setOrigin (pipe_origin); + pipe5.setAngles ( '-30 0 0' ); + + pipe5.moveTo ($pipe5pos_1); + sys.waitFor ( pipe5 ); + sys.wait (.5); + $holder_5.bind (pipe5); + $holder_5.startSoundShader ("c1_pipedownbounce", SND_CHANNEL_VOICE2 ); + + pipe5.time (.5); + pipe5.rotateOnce ( '-15 0 0' ); + sys.waitFor ( pipe5 ); + + //bounce it + pipe5.time( .15 ); + pipe5.accelTime( 0 ); + pipe5.decelTime( .15 ); + pipe5.rotateOnce( '1 0 0' ); + sys.waitFor (pipe5); + + pipe5.time( .15 ); + pipe5.accelTime( .15 ); + pipe5.decelTime( 0 ); + pipe5.rotateOnce( '-1 0 0' ); + sys.waitFor (pipe5); + + $holder_5.unbind (); + } + else + { + $lcarrier.moveTo ($lcarrierpos_6); + sys.waitFor ($lcarrier); + pipe0 = pipe6; + thread move_pipe (pipe0, $holder_6); + + sys.wait (2); + //move new pipe in + pipe6 = sys.spawn( "func_mover" ); + pipe6.setModel( "pipe6" ); + pipe_origin = $pipe6pos_initial.getOrigin(); + pipe6.setOrigin (pipe_origin); + pipe6.setAngles ( '-30 0 0' ); + + pipe6.moveTo ($pipe6pos_1); + sys.waitFor ( pipe6 ); + sys.wait (.5); + $holder_6.bind (pipe6); + $holder_6.startSoundShader ("c1_pipedownbounce", SND_CHANNEL_VOICE2 ); + + pipe6.time (.5); + pipe6.rotateOnce ( '-15 0 0' ); + sys.waitFor ( pipe6 ); + + //bounce it + pipe6.time( .15 ); + pipe6.accelTime( 0 ); + pipe6.decelTime( .15 ); + pipe6.rotateOnce( '1 0 0' ); + sys.waitFor (pipe6); + + pipe6.time( .15 ); + pipe6.accelTime( .15 ); + pipe6.decelTime( 0 ); + pipe6.rotateOnce( '-1 0 0' ); + sys.waitFor (pipe6); + + $holder_6.unbind (); + } + }//END WHILE + } + + + //////////////////////////////////////////////////// + // + // move snail 2 pole 1 things up + // + //////////////////////////////////////////////////// + void move_snail2_connect1_up() + { + $snl2_pl1.time (.5); + $snl2_pl1.move ( UP, 192 ); + //pole1 move sound .5sec + sys.trigger ($snail2_pole1_speaker); + sys.waitFor ($snl2_pl1); + + $snl2_pl1_spin_anc.move ( UP, 144 ); + $snl2_pl1_spin.rotateOnce ( '0 540 0' ); + + //pole1 guts moveup sound 1sec + sys.trigger ($snail2_pole1guts_up_speaker); + + sys.wait (.5); + $snl2_pl1_spin_arm1.rotateOnce ( '0 0 -180' ); + $snl2_pl1_spin_arm2.rotateOnce ( '0 0 -180' ); + $snl2_pl1_spin_arm3.rotateOnce ( '0 0 -180' ); + $snl2_pl1_spin_arm4.rotateOnce ( '0 0 -180' ); + + sys.waitFor ($snl2_pl1_spin_arm4); + } + + + //////////////////////////////////////////////////// + // + // move snail 2 pole 1 things down + // + //////////////////////////////////////////////////// + void move_snail2_connect1_down() + { + //pole1 guts movedown sound 1sec + sys.trigger ($snail2_pole1guts_down_speaker); + + $snl2_pl1_spin_anc.move ( DOWN, 144 ); + $snl2_pl1_spin.rotateOnce ( '0 -540 0' ); + + $snl2_pl1_spin_arm1.rotateOnce ( '0 0 180' ); + $snl2_pl1_spin_arm2.rotateOnce ( '0 0 180' ); + $snl2_pl1_spin_arm3.rotateOnce ( '0 0 180' ); + $snl2_pl1_spin_arm4.rotateOnce ( '0 0 180' ); + + sys.waitFor ($snl2_pl1_spin_anc); + + $snl2_pl1.time (.5); + $snl2_pl1.move ( DOWN, 192 ); + //pole1 move sound .5sec + sys.trigger ($snail2_pole1_speaker); + sys.waitFor ($snl2_pl1); + } + + + //////////////////////////////////////////////////// + // + // move snail 2 pole 2 things up + // + //////////////////////////////////////////////////// + void move_snail2_connect2_up() + { + $snl2_pl2.time (.5); + $snl2_pl2.move ( UP, 208 ); + //pole2 move sound .5sec + sys.trigger ($snail2_pole2_speaker); + sys.waitFor ($snl2_pl2); + + $snl2_pl2_spin_anc.move ( UP, 160 ); + $snl2_pl2_spin.rotateOnce ( '0 540 0' ); + + //pole2 guts moveup sound 1sec + sys.trigger ($snail2_pole2guts_up_speaker); + + sys.wait (.5); + $snl2_pl2_spin_arm1.rotateOnce ( '0 0 -180' ); + $snl2_pl2_spin_arm2.rotateOnce ( '0 0 -180' ); + $snl2_pl2_spin_arm3.rotateOnce ( '0 0 -180' ); + $snl2_pl2_spin_arm4.rotateOnce ( '0 0 -180' ); + + sys.waitFor ($snl2_pl2_spin_arm4); + } + + + //////////////////////////////////////////////////// + // + // move snail 2 pole 2 things down + // + //////////////////////////////////////////////////// + void move_snail2_connect2_down() + { + //pole2 guts movedown sound 1sec + sys.trigger ($snail2_pole2guts_down_speaker); + + $snl2_pl2_spin_anc.move ( DOWN, 160 ); + $snl2_pl2_spin.rotateOnce ( '0 -540 0' ); + + $snl2_pl2_spin_arm1.rotateOnce ( '0 0 180' ); + $snl2_pl2_spin_arm2.rotateOnce ( '0 0 180' ); + $snl2_pl2_spin_arm3.rotateOnce ( '0 0 180' ); + $snl2_pl2_spin_arm4.rotateOnce ( '0 0 180' ); + + sys.waitFor ($snl2_pl2_spin_anc); + + $snl2_pl2.time (.5); + $snl2_pl2.move ( DOWN, 208 ); + //pole2 move sound .5sec + sys.trigger ($snail2_pole2_speaker); + sys.waitFor ($snl2_pl2); + } + + + //////////////////////////////////////////////////// + // + // open shells for snail 2 + // + //////////////////////////////////////////////////// + void open_snail2_shells() + { + $snl2_shell3.rotateOnce ( '0 0 -135' ); + + sys.wait (.125); + $snl2_shell2.rotateOnce ( '0 0 -90' ); + + sys.wait (.125); + $snl2_shell1.rotateOnce ( '0 0 -45' ); + + sys.waitFor ($snl2_shell1); + sys.waitFor ($snl2_shell2); + sys.waitFor ($snl2_shell3); + } + + + //////////////////////////////////////////////////// + // + // close shells for snail 2 + // + //////////////////////////////////////////////////// + void close_snail2_shells() + { + $snl2_shell3.rotateOnce ( '0 0 135' ); + + sys.wait (.125); + $snl2_shell2.rotateOnce ( '0 0 90' ); + + sys.wait (.125); + $snl2_shell1.rotateOnce ( '0 0 45' ); + + sys.waitFor ($snl2_shell1); + sys.waitFor ($snl2_shell2); + sys.waitFor ($snl2_shell3); + } + + + + + //////////////////////////////////////////////////// + // + // Snail machine 2 LOOP + // + //////////////////////////////////////////////////// + void go_snail2() + { + float thread3, thread4; + + while (1) + { + thread3 = thread open_snail2_shells (); + //Shells opening sound 1sec + sys.trigger ($snail2_shells_open_speaker); + sys.waitForThread( thread3 ); + + thread3 = thread move_snail2_connect1_up (); + thread4 = thread move_snail2_connect2_up (); + sys.waitForThread( thread3 ); + sys.waitForThread( thread4 ); + + sys.wait(1); + + thread3 = thread move_snail2_connect1_down (); + thread4 = thread move_snail2_connect2_down (); + sys.waitForThread( thread3 ); + sys.waitForThread( thread4 ); + + thread3 = thread close_snail2_shells (); + //Shells closing sound 1sec + sys.trigger ($snail2_shells_close_speaker); + sys.waitForThread( thread3 ); + + sys.wait(1); + } + } + + + //////////////////////////////////////////////////// + // + // send msg + // + //////////////////////////////////////////////////// + void send_message () + { + if (msg_state != 99) + { + sys.trigger ($obj2); + sys.wait (2); + + sys.trigger ($obj3); + sys.wait (2); + + sys.trigger ($obj4); + + } + + else + { + sys.trigger ($obj5); + } + + msg_state = 99; + } + + + + //////////////////////////////////////////////////// + // + // Fluctuate the lobby lights + // + //////////////////////////////////////////////////// + void lobbylights_flux () + { + + } + + + void airlock_door1_close() { + sys.trigger ($speaker_airlock_door1_close); + $airlock_door1_left.rotateOnce ( '0 -45 0' ); + $airlock_door1_right.rotateOnce ( '0 45 0' ); + sys.waitFor ($airlock_door1_left); + + $airlock_door1_top_lock.move ( DOWN, 15 ); + sys.trigger ($speaker_airlock_door1_bottom_lock); + $airlock_door1_bottom_lock.move ( UP, 15 ); + sys.waitFor ($airlock_door1_bottom_lock); + + sys.trigger ($speaker_airlock_door1_left_lock); + $airlock_door1_left_lock.move ( SOUTH, 16 ); + sys.trigger ($speaker_airlock_door1_right_lock); + $airlock_door1_right_lock.move ( SOUTH, 16 ); + sys.waitFor ($airlock_door1_right_lock); + + } + + //////////////////////////////////////////////////// + // + // Open airlock door1 + // + //////////////////////////////////////////////////// + void airlock_door1_open() + { + //airlock door1 times + $airlock_door1_left.time (1.2); + $airlock_door1_right.time (1.2); + $airlock_door1_left.accelTime (.2); + $airlock_door1_left.decelTime (1); + $airlock_door1_right.accelTime (.2); + $airlock_door1_right.decelTime (1); + + $airlock_door1_top_lock.time (.25); + $airlock_door1_bottom_lock.time (.25); + + $airlock_door1_left_lock.time (.75); + $airlock_door1_right_lock.time (.75); + $airlock_door1_left_lock.accelTime (.1); + $airlock_door1_left_lock.decelTime (.65); + $airlock_door1_right_lock.accelTime (.1); + $airlock_door1_right_lock.decelTime (.65); + + //turn door1 and door2 light on + //turn door2 light on + thread crossFadeEnt ($door2_light, '0.37 0.05 0.01', '.84 .84 .9', 1); + + sys.wait(1); + + //move the 4 locks to unlock position + $airlock_door1_top_lock.move ( UP, 15 ); + sys.trigger ($speaker_airlock_door1_bottom_lock); + $airlock_door1_bottom_lock.move ( DOWN, 15 ); + sys.waitFor ($airlock_door1_bottom_lock); + + sys.trigger ($speaker_airlock_door1_left_lock); + $airlock_door1_left_lock.move ( NORTH, -16 ); + sys.trigger ($speaker_airlock_door1_right_lock); + $airlock_door1_right_lock.move ( NORTH, -16 ); + sys.waitFor ($airlock_door1_right_lock); + + //open doors + sys.trigger ($speaker_airlock_door1_open); + $airlock_door1_left.rotateOnce ( '0 45 0' ); + $airlock_door1_right.rotateOnce ( '0 -45 0' ); + + //trigger the portal + //sys.trigger ($airlock_door1_portal); + + sys.waitFor ($airlock_door1_right); + sys.waitFor ($airlock_door1_left); + } + + + //////////////////////////////////////////////////// + // + // rb_tube loop + // + //////////////////////////////////////////////////// + void rb_tube_loop() + { + while (1){ + thread crossFadeEnt ($rb_tube_1_light, '.38 .86 .82', '.85 0 0', 2); + thread crossFadeEnt ($rb_tube_1, '.38 .86 .82', '.85 0 0', 2); + thread crossFadeEnt ($rb_tube_2_light, '.38 .86 .82', '.85 0 0', 2); + thread crossFadeEnt ($rb_tube_2, '.38 .86 .82', '.85 0 0', 2); + + sys.wait (3); + + thread crossFadeEnt ($rb_tube_1_light, '.85 0 0', '.38 .86 .82', 2); + thread crossFadeEnt ($rb_tube_1, '.85 0 0', '.38 .86 .82', 2); + thread crossFadeEnt ($rb_tube_2_light, '.85 0 0', '.38 .86 .82', 2); + thread crossFadeEnt ($rb_tube_2, '.85 0 0', '.38 .86 .82', 2); + + sys.wait (3); + } + } + + + + //////////////////////////////////////////////////// + // + // senpist loops + // + //////////////////////////////////////////////////// + void senpist1_loop() + { + + + while (1){ + $poopist1.time (1.5); + + thread mover_startsound3 ($poopist1); + + $poopist1.move (DOWN, 48); + sys.waitFor ($poopist1); + + mover_stopsound2 ($poopist1); + + $poopist1.time (0.5); + + thread mover_startsound3 ($poopist1); + + $poopist1.move (UP, 48); + sys.waitFor ($poopist1); + + mover_stopsound3 ($poopist1); + } + } + + void senpist2_loop() + { + while (1){ + $peepist.time (1); + + thread mover_startsound ($peepist); + $peepist.move (DOWN, 48); + sys.waitFor ($peepist); + mover_stopsound ($peepist); + + $peepist.time (1.5); + + thread mover_startsound ($peepist); + $peepist.move (UP, 48); + sys.waitFor ($peepist); + mover_stopsound ($peepist); + } + } + + void senpist3_loop() + { + + + while (1){ + + $senpist3.time (1.5); + thread mover_startsound ($senpist3); + + $senpist3.move (DOWN, 48); + sys.waitFor ($senpist3); + + mover_stopsound2 ($senpist3); + + $senpist3.time (1); + + thread mover_startsound2 ($senpist3); + + $senpist3.move (UP, 48); + sys.waitFor ($senpist3); + + mover_stopsound ($senpist3); + } + } + + + + //////////////////////////////////////////////////// + // + // floor2 break + // + //////////////////////////////////////////////////// + void floor2_break() + { + $prebreak_main.hide(); + $prebreak_light1.hide(); + + $postbreak_spark.show(); + $postbreak_main.show(); + $postbreak_light1.show(); + $postbreak_clip.show(); + } + + + //////////////////////////////////////////////////// + // + // Corpse Move - quick move of deadbody + // + //////////////////////////////////////////////////// + void corpse_move() + { + $corpse_mover.time (.5); + $corpse_mover.accelTime (.5); + $corpse_mover.decelTime (0); + + $corpse_mover.move ( UP, 96 ); + sys.waitFor ($corpse_mover); + + $corpse.unbind(); + } + + //////////////////////////////////////////////////// + // + // Corpse Move - quick move of deadbody + // + //////////////////////////////////////////////////// + void corpse_move2() + { + $corpse_mover2.time (.8); + $corpse_mover2.accelTime (.8); + $corpse_mover2.decelTime (0); + + $corpse_mover2.moveTo ( $corpse_mover2_movepoint ); + sys.waitFor ($corpse_mover2); + + $light_5352.fadeOutLight(1.2); + + $corpse2.unbind(); + } + + + //////////////////////////////////////////////////// + // + // make sure the secret panel is open on way back through + // + //////////////////////////////////////////////////// + void open_secretpanel() + { + $skyway_secret_panel.open(); + } + + + //////////////////////////////////////////////////// + // + // door bang + // + //////////////////////////////////////////////////// + void door_bang () + { + $helldoor1_mover.time (.2); + $helldoor2_mover.time (.2); + + $helldoor1_mover.rotateOnce ( '0 2.5 0'); + $helldoor2_mover.rotateOnce ( '0 -2 0'); + sys.waitFor ($helldoor1_mover); + + //trigger speaker + sys.trigger ($helldoor_speaker); + sys.trigger ($door_bang_influence); + + $helldoor1_mover.rotateOnce ( '0 -2.5 0'); + $helldoor2_mover.rotateOnce ( '0 2 0'); + sys.waitFor ($helldoor1_mover); + + //Again + sys.wait (.5); + + $helldoor1_mover.rotateOnce ( '0 2.5 0'); + $helldoor2_mover.rotateOnce ( '0 -2 0'); + sys.waitFor ($helldoor1_mover); + + //trigger speaker + sys.trigger ($helldoor_speaker); + sys.trigger ($door_bang_influence); + + $helldoor1_mover.rotateOnce ( '0 -2.5 0'); + $helldoor2_mover.rotateOnce ( '0 2 0'); + sys.waitFor ($helldoor1_mover); + + //And again + sys.wait (.2); + + $helldoor1_mover.rotateOnce ( '0 2.5 0'); + $helldoor2_mover.rotateOnce ( '0 -2 0'); + sys.waitFor ($helldoor1_mover); + + //trigger speaker + sys.trigger ( $helldoor_speaker ); + sys.trigger ( $door_bang_influence ); + + $helldoor1_mover.rotateOnce ( '0 -2.5 0'); + $helldoor2_mover.rotateOnce ( '0 2 0'); + sys.waitFor ($helldoor1_mover); + + //trigger zsec shield guy + sys.trigger ( $monster_zsec_shield_4 ); + } + + + //////////////////////////////////////////////////// + // + // machine fall over + // + //////////////////////////////////////////////////// + void machine_fall () + { + $machine_fall_mover.time (.8); + $machine_fall_mover.accelTime (.8); + $machine_fall_mover.decelTime (0); + + //trigger sound for falling + sys.trigger ( $speaker_machine_fall_attention ); + //machine falls + $machine_fall_mover.rotateOnce ( '-90 -15 0' ); + sys.waitFor ( $machine_fall_mover ); + + //trigger sound + sys.trigger ( $speaker_machine_fall ); + + //trigger particles + + //wait then trigger sound + sys.wait (.5); + sys.trigger ($speaker_machine_fall_creepy); + sys.trigger ($target_setinfluence_16); + sys.wait (.5); + + //call corpse mover + map_comm1::corpse_move2(); + + } + + + void close_swanncampdoor () + { + $func_door_1670.open (); + } + + + + //////////////////////////////////////////////////// + // + // MAIN + // + //////////////////////////////////////////////////// + void main () + { + + thread cache_sounds(); + + thread rb_tube_loop(); + setup_objects (); + thread oval_movement (); + + sys.wait (2); + thread move_hallpipes (); + thread go_snail2 (); + thread senpist1_loop (); + thread senpist2_loop (); + thread senpist3_loop (); + } +} \ No newline at end of file diff --git a/base/script/map_commoutside.script b/base/script/map_commoutside.script new file mode 100644 index 00000000..3194b25e --- /dev/null +++ b/base/script/map_commoutside.script @@ -0,0 +1,871 @@ +namespace map_commoutside { + + //////////////////////////////////////////////////// + // + // Setup binds and times etc... + // + //////////////////////////////////////////////////// + void setup_objects() + { + //set airlock door guis initial states to 1 + $airlock1_door2_gui.setGuiParm ( "gui_parm1" , 1); + $airlock2_door1_gui.setGuiParm ( "gui_parm1" , 1); + $airlock2_door2_gui.setGuiParm ( "gui_parm1" , 1); + $airlock3_door1_gui.setGuiParm ( "gui_parm1" , 1); + $airlock3_door2_gui.setGuiParm ( "gui_parm1" , 1); + $airlock4_door1_gui.setGuiParm ( "gui_parm1" , 1); + + //airlock1 times + $airlock1_door1_left.time (1.2); + $airlock1_door1_right.time (1.2); + $airlock1_door1_left.accelTime (.2); + $airlock1_door1_left.decelTime (1); + $airlock1_door1_right.accelTime (.2); + $airlock1_door1_right.decelTime (1); + + $airlock1_door1_top_lock.time (.25); + $airlock1_door1_bottom_lock.time (.25); + + $airlock1_door1_left_lock.time (.75); + $airlock1_door1_right_lock.time (.75); + $airlock1_door1_left_lock.accelTime (.1); + $airlock1_door1_left_lock.decelTime (.65); + $airlock1_door1_right_lock.accelTime (.1); + $airlock1_door1_right_lock.decelTime (.65); + + $airlock1_door2_left.time (1.2); + $airlock1_door2_right.time (1.2); + $airlock1_door2_left.accelTime (.2); + $airlock1_door2_left.decelTime (1); + $airlock1_door2_right.accelTime (.2); + $airlock1_door2_right.decelTime (1); + + $airlock1_door2_top_lock.time (.25); + $airlock1_door2_bottom_lock.time (.25); + + $airlock1_door2_left_lock.time (.75); + $airlock1_door2_right_lock.time (.75); + $airlock1_door2_left_lock.accelTime (.1); + $airlock1_door2_left_lock.decelTime (.65); + $airlock1_door2_right_lock.accelTime (.1); + $airlock1_door2_right_lock.decelTime (.65); + + //airlock2 times + $airlock2_door1_left.time (1.2); + $airlock2_door1_right.time (1.2); + $airlock2_door1_left.accelTime (.2); + $airlock2_door1_left.decelTime (1); + $airlock2_door1_right.accelTime (.2); + $airlock2_door1_right.decelTime (1); + + $airlock2_door1_top_lock.time (.25); + $airlock2_door1_bottom_lock.time (.25); + + $airlock2_door1_left_lock.time (.75); + $airlock2_door1_right_lock.time (.75); + $airlock2_door1_left_lock.accelTime (.1); + $airlock2_door1_left_lock.decelTime (.65); + $airlock2_door1_right_lock.accelTime (.1); + $airlock2_door1_right_lock.decelTime (.65); + + $airlock2_door2_left.time (1.2); + $airlock2_door2_right.time (1.2); + $airlock2_door2_left.accelTime (.2); + $airlock2_door2_left.decelTime (1); + $airlock2_door2_right.accelTime (.2); + $airlock2_door2_right.decelTime (1); + + $airlock2_door2_top_lock.time (.25); + $airlock2_door2_bottom_lock.time (.25); + + $airlock2_door2_left_lock.time (.75); + $airlock2_door2_right_lock.time (.75); + $airlock2_door2_left_lock.accelTime (.1); + $airlock2_door2_left_lock.decelTime (.65); + $airlock2_door2_right_lock.accelTime (.1); + $airlock2_door2_right_lock.decelTime (.65); + + //airlock3 times + $airlock3_door1_left.time (1.2); + $airlock3_door1_right.time (1.2); + $airlock3_door1_left.accelTime (.2); + $airlock3_door1_left.decelTime (1); + $airlock3_door1_right.accelTime (.2); + $airlock3_door1_right.decelTime (1); + + $airlock3_door1_top_lock.time (.25); + $airlock3_door1_bottom_lock.time (.25); + + $airlock3_door1_left_lock.time (.75); + $airlock3_door1_right_lock.time (.75); + $airlock3_door1_left_lock.accelTime (.1); + $airlock3_door1_left_lock.decelTime (.65); + $airlock3_door1_right_lock.accelTime (.1); + $airlock3_door1_right_lock.decelTime (.65); + + $airlock3_door2_left.time (1.2); + $airlock3_door2_right.time (1.2); + $airlock3_door2_left.accelTime (.2); + $airlock3_door2_left.decelTime (1); + $airlock3_door2_right.accelTime (.2); + $airlock3_door2_right.decelTime (1); + + $airlock3_door2_top_lock.time (.25); + $airlock3_door2_bottom_lock.time (.25); + + $airlock3_door2_left_lock.time (.75); + $airlock3_door2_right_lock.time (.75); + $airlock3_door2_left_lock.accelTime (.1); + $airlock3_door2_left_lock.decelTime (.65); + $airlock3_door2_right_lock.accelTime (.1); + $airlock3_door2_right_lock.decelTime (.65); + + //airlock4 times + $airlock4_door1_left.time (1.2); + $airlock4_door1_right.time (1.2); + $airlock4_door1_left.accelTime (.2); + $airlock4_door1_left.decelTime (1); + $airlock4_door1_right.accelTime (.2); + $airlock4_door1_right.decelTime (1); + + $airlock4_door1_top_lock.time (.25); + $airlock4_door1_bottom_lock.time (.25); + + $airlock4_door1_left_lock.time (.75); + $airlock4_door1_right_lock.time (.75); + $airlock4_door1_left_lock.accelTime (.1); + $airlock4_door1_left_lock.decelTime (.65); + $airlock4_door1_right_lock.accelTime (.1); + $airlock4_door1_right_lock.decelTime (.65); + + //goofy arm binds + $goofyarm_4.bind ($goofyarm_3); + $goofyarm_3.bind ($goofyarm_2); + $goofyarm_2.bind ($goofyarm_1); + + $goofyarm_1.time (.5); + $goofyarm_2.time (.5); + $goofyarm_3.time (.5); + $goofyarm_4.time (.5); + + $goofy_light_1.setColor( .62, .62, .72); + $goofy_light_2.setColor( .62, .62, .72); + + $goofy_flare_1.setColor( .62, .62, .72); + $goofy_flare_2.setColor( .62, .62, .72); + } + + //////////////////////////////////////////////////// + // + // goofy arm ambient movement + // + //////////////////////////////////////////////////// + void goofyarm_move () + { + while (1){ + $goofyarm_1.startSoundShader ("co_05s_machinery_01", SND_CHANNEL_VOICE ); + $goofyarm_1.rotateOnce ( '0 -35 0' ); + $goofyarm_2.rotateOnce ( '0 20 0' ); + $goofyarm_3.rotateOnce ( '0 15 0' ); + sys.wait (2); + + $goofyarm_1.startSoundShader ("co_goofy_updown", SND_CHANNEL_VOICE ); + $goofyarm_1.move ( DOWN, 32 ); + sys.waitFor ($goofyarm_1); + + $goofyarm_1.startSoundShader ("co_05s_machinery_01", SND_CHANNEL_VOICE ); + $goofyarm_1.rotateOnce ( '0 35 0' ); + $goofyarm_2.rotateOnce ( '0 -20 0' ); + $goofyarm_3.rotateOnce ( '0 -15 0' ); + sys.waitFor ($goofyarm_1); + + $goofy_light_1.startSoundShader ("al4_welding_2s", SND_CHANNEL_VOICE ); + $goofy_light_1.setColor( .86, .86, 1 ); + $goofy_flare_1.setColor( .86, .86, 1 ); + sys.wait (2); + + thread crossFadeEnt ($goofy_light_1, '.86 .86 1', '.3 .3 .5', 2); + thread crossFadeEnt ($goofy_flare_1, '.86 .86 1', '.3 .3 .5', 2); + + $goofyarm_1.startSoundShader ("co_05s_machinery_01", SND_CHANNEL_VOICE ); + $goofyarm_1.rotateOnce ( '0 -35 0' ); + $goofyarm_2.rotateOnce ( '0 20 0' ); + $goofyarm_3.rotateOnce ( '0 15 0' ); + sys.wait (2); + + $goofyarm_1.startSoundShader ("co_goofy_updown", SND_CHANNEL_VOICE ); + $goofyarm_1.move ( UP, 32 ); + sys.waitFor ($goofyarm_1); + + $goofyarm_1.startSoundShader ("co_05s_machinery_01", SND_CHANNEL_VOICE ); + $goofyarm_1.rotateOnce ( '0 35 0' ); + $goofyarm_2.rotateOnce ( '0 -20 0' ); + $goofyarm_3.rotateOnce ( '0 -15 0' ); + sys.waitFor ($goofyarm_1); + + $goofy_light_2.startSoundShader ("al4_welding_2s", SND_CHANNEL_VOICE ); + $goofy_light_2.setColor( .86, .86, 1 ); + $goofy_flare_2.setColor( .86, .86, 1 ); + sys.wait (2); + + thread crossFadeEnt ($goofy_light_2, '.86 .86 1', '.3 .3 .5', 2); + thread crossFadeEnt ($goofy_flare_2, '.86 .86 1', '.3 .3 .5', 2); + + } + } + + + + //////////////////////////////////////////////////// + // + // grate light mover + // + //////////////////////////////////////////////////// + void gratelight_move () + { + $gratelight_mover.time ( 1 ); + $gratelight_mover.accelTime ( .25 ); + $gratelight_mover.decelTime ( .25 ); + + float ran1; + + while (1) //begin main while + { + ran1=sys.random(3); + + if (ran1<1){ + $gratelight_mover.moveTo ($gratelightpoint_1); + sys.waitFor ($gratelight_mover); + } else if (ran1<2) { + $gratelight_mover.moveTo ($gratelightpoint_2); + sys.waitFor ($gratelight_mover); + } else { + $gratelight_mover.moveTo ($gratelightpoint_3); + sys.waitFor ($gratelight_mover); + } + + } //end main while + } + + + + //////////////////////////////////////////////////// + // + // helldoor random movement + // + //////////////////////////////////////////////////// + void helldoor_movement () + { + float ran1, ran2, ran3; + + $helldoor1_mover.time (.2); + $helldoor2_mover.time (.2); + + //shake the scary_door in a loop - TEMP + while (1) { + ran3 = ( sys.random(2.5) + 2 ); + sys.wait (ran3); + + $helldoor1_mover.rotateOnce ( '0 2.5 0'); + $helldoor2_mover.rotateOnce ( '0 -2 0'); + sys.waitFor ($helldoor1_mover); + + //trigger speaker + sys.trigger ($helldoor_speaker); + sys.trigger ($helldoor1_bang_influence); + + $helldoor1_mover.rotateOnce ( '0 -2.5 0'); + $helldoor2_mover.rotateOnce ( '0 2 0'); + sys.waitFor ($helldoor1_mover); + + ran2=sys.random(.12) + .1; + $helldoor1_mover.time (ran2); + $helldoor2_mover.time (ran2); + } + } + + + //////////////////////////////////////////////////// + // + // stop helldoor + // + //////////////////////////////////////////////////// + void stop_helldoor () + { + sys.killthread ("map_commoutside::helldoor_movement"); + sys.trigger ($func_door_14); + sys.trigger ($helldoor_splat1); + sys.trigger ($helldoor_splat2); + sys.trigger ($helldoor_splat3); + sys.trigger ($helldoor_scream); + + sys.wait (2); + sys.trigger ($func_forcefield_2); + sys.trigger ($func_door_14); + } + + + + //////////////////////////////////////////////////// + // + // underlift movedown + // + //////////////////////////////////////////////////// + void underlift_movedown () + { + //move the lift to underlift_pos_mid + $underlift.time ( 3 ); + $underlift.accelTime ( .5 ); + $underlift.decelTime ( .25 ); + + $underlift.startSoundShader ("co_lift_down_3s", SND_CHANNEL_VOICE ); // SOUND + + $underlift.moveTo ($underlift_pos_mid); + sys.waitFor ($underlift); + + //open underlift_doors_bottom + $underlift_doors_bottom.open(); + sys.waitFor ($underlift_doors_bottom); + + //move the lift to underlift_pos_top + $underlift.startSoundShader ("co_lift_down_3s", SND_CHANNEL_VOICE ); // SOUND + $underlift.moveTo ($underlift_pos_bottom); + sys.waitFor ($underlift); + + //close underlift_doors_bottom + $underlift_doors_bottom.close(); + sys.waitFor ($underlift_doors_bottom); + } + + + + //////////////////////////////////////////////////// + // + // underlift moveup + // + //////////////////////////////////////////////////// + void underlift_moveup () + { + //open underlift_doors_bottom + $underlift_doors_bottom.open(); + sys.waitFor ($underlift_doors_bottom); + + //move the lift to underlift_pos_mid + $underlift.time ( 3 ); + $underlift.accelTime ( .5 ); + $underlift.decelTime ( .25 ); + + $underlift.startSoundShader ("co_lift_up_3s", SND_CHANNEL_VOICE ); // SOUND + $underlift.moveTo ($underlift_pos_mid); + sys.waitFor ($underlift); + + //close underlift_doors_bottom + $underlift_doors_bottom.close(); + sys.waitFor ($underlift_doors_bottom); + + //open underlift_doors_top + $underlift_doors_top.open(); + sys.waitFor ($underlift_doors_top); + + //move the lift to underlift_pos_top + $underlift.startSoundShader ("co_lift_up_3s", SND_CHANNEL_VOICE ); // SOUND + $underlift.moveTo ($underlift_pos_top); + sys.waitFor ($underlift); + + //close the underlift_doors_top + $underlift_doors_top.close(); + sys.waitFor ($underlift_doors_top); + + //trigger the gui button + sys.trigger ($airlock_lift_calldown_button); + } + + + + + //////////////////////////////////////////////////// + // + // Open airlock door + // + //////////////////////////////////////////////////// + + void airlock_door_open( float airlock, float doornum ) + { + entity ent; + entity entdoorr, entdoorl; + entity speaker; + string door1; + string door2; + float portalstate; + float movedist; + + if ( doornum == 2 ) { + door1 = "airlock" + airlock + "_door2"; + door2 = "airlock" + airlock + "_door1"; + portalstate = 2; + movedist = -16; + } else { + door1 = "airlock" + airlock + "_door1"; + door2 = "airlock" + airlock + "_door2"; + portalstate = 1; + movedist = 16; + } + + //turn door1 light on and door2 light off + ent=sys.getEntity ( door2 + "_light" ); + thread crossFadeEnt (ent, '.84 .84 .9', '0.37 0.05 0.01', 1); + + sys.wait(1); + + ent=sys.getEntity ( door1 + "_light" ); + thread crossFadeEnt (ent, '0.37 0.05 0.01', '.84 .84 .9', 1); + + //move the 4 locks to unlock position + ent=sys.getEntity ( door1 + "_top_lock" ); + ent.time (0.25); + ent.move ( UP, 15 ); + + speaker=sys.getEntity ("speaker_" + door1 + "_bottom_lock" ); + sys.trigger (speaker); + + ent=sys.getEntity ( door1 + "_bottom_lock" ); + ent.time (0.25); + ent.move ( DOWN, 15 ); + + sys.waitFor (ent); + + speaker=sys.getEntity ("speaker_" + door1 + "_left_lock" ); + sys.trigger (speaker); + + ent=sys.getEntity ( door1 + "_left_lock" ); + ent.time (0.75); + ent.move ( EAST, movedist ); + + speaker=sys.getEntity ("speaker_" + door1 + "_right_lock" ); + sys.trigger (speaker); + + ent=sys.getEntity ( door1 + "_right_lock" ); + ent.time (0.75); + ent.move ( EAST, movedist ); + + sys.waitFor (ent); + + //open doors + speaker=sys.getEntity ( "speaker_" + door1 + "_open"); + sys.trigger (speaker); + + entdoorl=sys.getEntity ( door1 + "_left" ); + entdoorl.time (1.2); + entdoorl.rotateOnce ( '0 45 0' ); + + entdoorr=sys.getEntity ( door1 + "_right" ); + entdoorr.time (1.2); + entdoorr.rotateOnce ( '0 -45 0' ); + + //trigger the portal + ent=sys.getEntity (door1 + "_portal" ); + sys.trigger (ent); + + sys.waitFor (entdoorr); + sys.waitFor (entdoorl); + + //set airlock state + ent=sys.getEntity ("airlock" + airlock + "_door1_portal" ); + ent.setKey ("state", portalstate ); + + } + + + //////////////////////////////////////////////////// + // + // Close airlock door + // + //////////////////////////////////////////////////// + void airlock_door_close(float airlock, float doornum ) + { + entity ent; + entity entdoorr, entdoorl; + entity speaker; + string door; + float movedist; + + if ( doornum == 2 ) { + door = "airlock" + airlock + "_door2"; + movedist = 16; + } else { + door = "airlock" + airlock + "_door1"; + movedist = -16; + } + + //close doors + + speaker= sys.getEntity ("speaker_" + door + "_close"); + sys.trigger (speaker); + + entdoorl=sys.getEntity ( door + "_left" ); + entdoorl.time (1.2); + entdoorl.rotateOnce ( '0 -45 0' ); + + entdoorr=sys.getEntity ( door + "_right" ); + entdoorr.time (1.2); + entdoorr.rotateOnce ( '0 45 0' ); + + sys.waitFor (entdoorr); + sys.waitFor (entdoorl); + + //trigger the portal + ent=sys.getEntity ( door + "_portal" ); + sys.trigger (ent); + + //move the 4 locks to unlock position + ent=sys.getEntity ( door + "_top_lock" ); + ent.time (0.25); + ent.move ( DOWN, 15 ); + + speaker=sys.getEntity ("speaker_" + door + "_bottom_lock"); + sys.trigger (speaker); + + ent=sys.getEntity ( door + "_bottom_lock" ); + ent.time (0.25); + ent.move ( UP, 15 ); + + speaker=sys.getEntity ("speaker_" + door + "_left_lock" ); + sys.trigger (speaker); + + ent=sys.getEntity ( door + "_left_lock" ); + ent.time (0.75); + ent.move ( EAST, movedist ); + + speaker=sys.getEntity ("speaker_" + door + "_right_lock" ); + sys.trigger (speaker); + + ent=sys.getEntity ( door + "_right_lock" ); + ent.time (0.75); + ent.move ( EAST, movedist ); + + sys.waitFor (ent); + +} + + + //////////////////////////////////////////////////// + // + // Main Activate airlock + // conditionally chooses based on entrance + // + //////////////////////////////////////////////////// + void airlock_main_activate(float airlock) + { + entity ent; + + //check to see which way the palyer entered by checking the airlock_state + //if 1 then close 1 and open 2 + + ent=sys.getEntity ("airlock" + airlock + "_door1_portal" ); + + if (ent.getFloatKey ("state")==1) { + airlock_door_close( airlock, 1 ); + airlock_door_open( airlock, 2 ); + + } else { //else close 2 and open 1 + airlock_door_close( airlock, 2 ); + airlock_door_open( airlock, 1 ); + } + } + + + //////////////////////////////////////////////////// + // + // AIRLOCK main activation + // + //////////////////////////////////////////////////// + void airlock2_activate() + { + //disable the guis on the doors + $airlock2_door1_gui.setGuiParm ( "gui_parm1" , 0); + $airlock2_door2_gui.setGuiParm ( "gui_parm1" , 0); + $airlock2_innerguiholder.setGuiParm ( "gui_parm11" , 0); + + airlock_main_activate(2); + + //check the airlock state and enable the guis on the closed door + if ($airlock2_door1_portal.getFloatKey ("state")==1) { + $airlock2_door2_gui.setGuiParm ( "gui_parm1" , 1); + } else { //else close 2 and open 1 + $airlock2_door1_gui.setGuiParm ( "gui_parm1" , 1); + } + + $airlock2_innerguiholder.setGuiParm ( "gui_parm11" , 1); + } + + void airlock3_activate() + { + //disable the guis on the doors + $airlock3_door1_gui.setGuiParm ( "gui_parm1" , 0); + $airlock3_door2_gui.setGuiParm ( "gui_parm1" , 0); + $airlock3_innerguiholder.setGuiParm ( "gui_parm11" , 0); + + airlock_main_activate(3); + + //check the airlock state and enable the guis on the closed door + if ($airlock3_door1_portal.getFloatKey ("state")==1) { + $airlock3_door2_gui.setGuiParm ( "gui_parm1" , 1); + } else { //else close 2 and open 1 + $airlock3_door1_gui.setGuiParm ( "gui_parm1" , 1); + } + + $airlock3_innerguiholder.setGuiParm ( "gui_parm11" , 1); + } + + + //////////////////////////////////////////////////// + // + // AIRLOCK doors opening + // + //////////////////////////////////////////////////// + void airlock2_door1_open() + { + airlock_door_open(2, 1); + } + + void airlock2_door2_open() + { + airlock_door_open(2, 2); + } + + void airlock3_door1_open() + { + airlock_door_open(3, 1); + } + + void airlock3_door2_open() + { + airlock_door_open(3, 2); + } + + void airlock4_door1_open() + { + $airlock4_door1_gui.setGuiParm ( "gui_parm1" , 0); + airlock_door_open(4, 1); + } + + + //exits map + void airlock_exit() + { + sys.trigger ($end_level); + + float thread1; + + thread1 = thread airlock_door_close(4, 1); + sys.waitForThread( thread1 ); + + //turn doora light off + thread crossFadeEnt ($airlock4_door1_light, '.84 .84 .9', '0.37 0.05 0.01', 1); + sys.wait(1); + + sys.trigger ($end_level); + } + + + //////////////////////////////////////////////////// + // + // initial AIRLOCK doors opening + // start of map + // + //////////////////////////////////////////////////// + void initial_airlock_open() + { + //turn door2 light on + thread crossFadeEnt ($airlock1_door2_light, '0.37 0.05 0.01', '.84 .84 .9', 1); + + //move the 4 locks to unlock position + $airlock1_door2_top_lock.move ( UP, 15 ); + $airlock1_door2_bottom_lock.move ( DOWN, 15 ); + + sys.trigger ($speaker_airlock1_door2_bottom_lock); // SOUND + + sys.waitFor ($airlock1_door2_bottom_lock); + + sys.trigger ($speaker_airlock1_door2_left_lock); + $airlock1_door2_left_lock.move ( EAST, -16 ); + + sys.trigger ($speaker_airlock1_door2_right_lock); + $airlock1_door2_right_lock.move ( EAST, -16 ); + sys.waitFor ($airlock1_door2_right_lock); + + //open doors + sys.trigger ($speaker_airlock1_door2_open); // SOUND + + $airlock1_door2_left.rotateOnce ( '0 45 0' ); + $airlock1_door2_right.rotateOnce ( '0 -45 0' ); + + //trigger the portal + sys.trigger ($airlock1_door2_portal); + + sys.waitFor ($airlock1_door2_left); + sys.waitFor ($airlock1_door2_right); + } + + + + //////////////////////////////////////////////////// + // + // co_drop_floor + // + //////////////////////////////////////////////////// + void co_drop_floor_down () + { + $co_drop_floor.time(.5); + $co_drop_floor.accelTime(.5); + //$co_drop_floor.decelTime(0); + + //trigger the weird sound + //sys.trigger($co_drop_floor_weird_speaker); + + sys.trigger ($co_floordrop_01); + sys.trigger ($co_floordrop_02); + + //move drop_floor down + $co_drop_floor.move (DOWN, 128); + } + + void co_drop_floor_end () + { + $co_drop_step_1.time(1); + $co_drop_step_1.accelTime(.2); + $co_drop_step_1.decelTime(.2); + + $co_drop_step_2.time(1); + $co_drop_step_2.accelTime(.2); + $co_drop_step_2.decelTime(.2); + + $co_drop_step_3.time(1); + $co_drop_step_3.accelTime(.2); + $co_drop_step_3.decelTime(.2); + + //move steps out + $co_drop_step_3.startSoundShader ("co_step_out", SND_CHANNEL_VOICE ); + $co_drop_step_3.move (WEST, 112); + sys.waitFor ($co_drop_step_3); + + sys.wait (0.5); + + $co_drop_step_2.startSoundShader ("co_step_out", SND_CHANNEL_VOICE ); + $co_drop_step_2.move (WEST, 80); + sys.waitFor ($co_drop_step_2); + + sys.wait (0.5); + + $co_drop_step_1.startSoundShader ("co_step_out", SND_CHANNEL_VOICE ); + $co_drop_step_1.move (WEST, 48); + } + + + //////////////////////////////////////////////////// + // + // spectrum hallway + // + //////////////////////////////////////////////////// + void spectrum_move() { + sys.wait (2); + while(1){ + $spectrumlight_mover.time( 3 ); + $spectrumlight_mover.accelTime( 0 ); + $spectrumlight_mover.decelTime( 0 ); + $spectrumlight_mover.startSpline( $spectrum_spline ); + + sys.waitFor($spectrumlight_mover); + sys.wait(3); + $spectrumlight_mover.removeInitialSplineAngles(); + } + } + + void spectrum_stop() + { + sys.wait (3); + + sys.trigger ( $trigger_relay_55 ); + sys.killthread( "map_commoutside::spectrum_move" ); + $spectrumlight_mover.remove(); + sys.trigger ( $speaker_136 ); + sys.trigger ( $speaker_137 ); + $speaker_137.remove(); + $light_5229.remove(); + $light_5230.remove(); + } + + void close_func_door_17() + { + $func_door_17.close(); + } + + //close sawyer door + void close_func_door_1675() + { + $func_door_1675.close(); + } + + + //////////////////////////////////////////////////// + // + // Scary Elevator Shake + // + //////////////////////////////////////////////////// + void ele_shake() + { + $ele_mover.time (.25); + $ele_mover.move (DOWN, 8); + sys.waitFor ($ele_mover); + sys.trigger ( $speaker_elebang ); + $ele_mover.move (UP, 8); + } + + //////////////////////////////////////////////////// + // + // sawyer_intro + // + //////////////////////////////////////////////////// + void sawyer_intro () + { + $sawyer_light_1.kill(); + $sawyer_light_2.kill(); + //sys.print ("I just killed those lights\n"); + } + + void cache_sounds() { + sys.cacheSoundShader ("co_step_out"); + sys.cacheSoundShader ("co_lift_up_3s"); + sys.cacheSoundShader ("co_lift_down_3s"); + sys.cacheSoundShader ("al4_welding_2s"); + sys.cacheSoundShader ("co_05s_machinery_01"); + sys.cacheSoundShader ("co_goofy_updown"); + sys.cacheSoundShader ("rec1_steamchuff"); + sys.cacheSoundShader ("co_lift_rotation"); + sys.cacheSoundShader ("co_lift_up_2s"); + sys.cacheSoundShader ("co_lift_down_2s"); + sys.cacheSoundShader ("co_conpanel"); + } + + + //////////////////////////////////////////////////// + // + // MAIN + // + //////////////////////////////////////////////////// + void main () + { + cache_sounds(); + setup_objects (); + thread goofyarm_move (); + thread gratelight_move (); + thread helldoor_movement (); + thread lift_main (); + + //open the airlock doors that need to be open initially + thread airlock3_door2_open(); + thread airlock2_door2_open(); + } + +}// namespace + diff --git a/base/script/map_commoutside_lift.script b/base/script/map_commoutside_lift.script new file mode 100644 index 00000000..1cd95d48 --- /dev/null +++ b/base/script/map_commoutside_lift.script @@ -0,0 +1,875 @@ +namespace map_commoutside { + + #define CMD_LIFT_NONE 0 + #define CMD_LIFT_UP 1 + #define CMD_LIFT_DOWN 2 + #define CMD_LIFT_FORWARD 3 + #define CMD_LIFT_RIGHT 4 + #define CMD_LIFT_LEFT 5 + #define CMD_LIFT_BACK 6 + #define CMD_LIFT_CALL1 7 + #define CMD_LIFT_CALL2 8 + #define CMD_LIFT_CALL3 9 + + #define LIFT_MOVE_SPEED 160 + #define LIFT_TURN_TIME 2 + #define LIFT_UPDOWN_TIME 2 + + // states for the lift + float lift_command; + boolean lift_plat_up; + float lift_dir; + entity lift_station; + + void setup_lift(); + void reset_guis(); + void set_lift_location( entity position ); + float calc_lift_path_r( entity current_pos, entity previous, entity target, float depth ); + float get_lift_turn_dir( entity source, entity target ); + entity check_lift_move_dir( entity current_pos, float dir ); + void turn_lift_to_dir( float dir ); + void move_lift_to( entity target ); + + void cmd_lift_up(); + void cmd_lift_down(); + void cmd_lift_forward(); + void cmd_lift_right(); + void cmd_lift_left(); + void cmd_lift_back(); + void cmd_lift_call_1(); + void cmd_lift_call_2(); + void cmd_lift_call_3(); + void lift_loop(); + + void lift_up(); + void lift_down(); + void lift_forward(); + void lift_right(); + void lift_left(); + void lift_back(); + void lift_call_1(); + void lift_call_2(); + void lift_call_3(); + + void callspot1_panel_up(); + void callspot1_panel_down(); + void callspot2_panel_up(); + void callspot2_panel_down(); + void callspot3_panel_up(); + void callspot3_panel_down(); + + void lift_main(); + + //////////////////////////////////////////////////// + // + // Setup binds and times etc... + // + //////////////////////////////////////////////////// + void setup_lift() { + // initial variable assignments + lift_command = CMD_LIFT_NONE; + lift_plat_up = true; + + lift_station = $lift_bottom.getTarget( 0 ); + if ( !lift_station ) { + sys.warning( "Entity 'lift_bottom' doesn't have a target." ); + } + set_lift_location( lift_station ); + + lift_dir = 2; + + // Lift binds, times, and speeds + $lift_leg_11.bind($lift_bottom); + $lift_light1.bind($lift_bottom); + + $lift_axle1.bind($lift_leg_11); + $lift_axle2.bind($lift_leg_11); + $lift_leg_12.bind($lift_axle2); + $lift_axle4.bind($lift_leg_12); + $lift_axle6.bind($lift_leg_12); + $lift_leg_13.bind($lift_axle6); + $lift_axle7.bind($lift_leg_13); + + $lift_leg_23.bind($lift_axle7); + $lift_axle5.bind($lift_leg_23); + $lift_leg_22.bind($lift_axle5); + $lift_axle3.bind($lift_leg_22); + $lift_leg_21.bind($lift_axle3); + + $lift_connection_top_move.bind($lift_leg_13); + $lift_connection_top_static.bind($lift_leg_23); + $lift_connection_bottom_move.bind($lift_leg_21); + + $lift_cage.bind($lift_connection_top_static); + + $lift_leg_11.time( LIFT_UPDOWN_TIME ); + $lift_leg_12.time( LIFT_UPDOWN_TIME ); + $lift_leg_13.time( LIFT_UPDOWN_TIME ); + $lift_connection_top_move.time( LIFT_UPDOWN_TIME ); + $lift_leg_21.time( LIFT_UPDOWN_TIME ); + $lift_connection_bottom_move.time( LIFT_UPDOWN_TIME ); + $lift_leg_22.time( LIFT_UPDOWN_TIME ); + $lift_leg_23.time( LIFT_UPDOWN_TIME ); + $lift_connection_top_static.time( LIFT_UPDOWN_TIME ); + + $lift_leg_11.accelTime( .25 ); + $lift_leg_12.accelTime( .25 ); + $lift_leg_13.accelTime( .25 ); + $lift_connection_top_move.accelTime( .25 ); + $lift_leg_21.accelTime( .25 ); + $lift_connection_bottom_move.accelTime( .25); + $lift_leg_22.accelTime( .25 ); + $lift_leg_23.accelTime( .25 ); + $lift_connection_top_static.accelTime( .25 ); + + $lift_leg_11.decelTime( .25 ); + $lift_leg_12.decelTime( .25 ); + $lift_leg_13.decelTime( .25 ); + $lift_connection_top_move.decelTime( .25 ); + $lift_leg_21.decelTime( .25 ); + $lift_connection_bottom_move.decelTime( .25 ); + $lift_leg_22.decelTime( .25 ); + $lift_leg_23.decelTime( .25 ); + $lift_connection_top_static.decelTime( .25 ); + + // Call spots panel stuff + $callspot1_conpan_gui.bind($callspot1_conpan); + $callspot1_conpan.time(.25); + $callspot1_conpan.rotateOnce( '63.43 0 0' ); + $callspot1_conpan_trigger_down.disable(); + + $callspot2_conpan_gui.bind($callspot2_conpan); + $callspot2_conpan.time(.25); + $callspot2_conpan.rotateOnce( '0 0 -63.43' ); + $callspot2_conpan_trigger_down.disable(); + + $callspot3_conpan_gui.bind($callspot3_conpan); + $callspot3_conpan.time(.25); + $callspot3_conpan.rotateOnce( '0 0 -63.43' ); + $callspot3_conpan_trigger_down.disable(); + + $lift_light1_mover.rotateOnce( '90 0 0' ); + } + + //////////////////////////////////////////////////// + // + // reset the gui's to an interactive state + // + //////////////////////////////////////////////////// + void reset_guis() { + sys.trigger($callspot1_conpan); + $callspot1_conpan.setGuiParm ( "gui_parm3", 0 ); + sys.trigger($callspot2_conpan); + $callspot2_conpan.setGuiParm ( "gui_parm3", 0 ); + sys.trigger($callspot3_conpan); + $callspot3_conpan.setGuiParm ( "gui_parm3", 0 ); + } + + //////////////////////////////////////////////////// + // + // keep track of the current path entity we're at and update the + // gui's on the call panels with our position. + // + //////////////////////////////////////////////////// + void set_lift_location( entity position ) { + string position_name; + string position_num; + float pos; + + lift_station = position; + position_name = position.getName(); + if ( sys.strLeft( position_name, 10 ) != "lift_spot_" ) { + sys.warning( "Invalid lift target name '" + position_name + "'. Lift targets must be named 'lift_spot_#' (where # is a numeric value)" ); + } + + position_num = sys.strSkip( position_name, 10 ); + pos = sys.strToFloat( position_num ); + + $lift_cage.setGuiParm( "gui_parm2", pos ); + $callspot1_conpan.setGuiParm ( "gui_parm2", pos ); + $callspot2_conpan.setGuiParm ( "gui_parm2", pos ); + $callspot3_conpan.setGuiParm ( "gui_parm2", pos ); + + $callspot1_conpan.setGuiParm ( "gui_parm4", 0 ); + $callspot2_conpan.setGuiParm ( "gui_parm4", 0 ); + $callspot3_conpan.setGuiParm ( "gui_parm4", 0 ); + + //sys.print("position" + pos + "\n"); + + if ( ( pos == 13 ) && ( lift_dir == 0 ) && !lift_plat_up ) { + $callspot1_conpan.setGuiParm ( "gui_parm4", 1 ); + reset_guis(); + } else if ( ( pos == 31 ) && ( lift_dir == 1 ) && !lift_plat_up ) { + $callspot2_conpan.setGuiParm ( "gui_parm4", 1 ); + reset_guis(); + } else if ( ( pos == 83 ) && ( lift_dir == 1 ) && !lift_plat_up ) { + $callspot3_conpan.setGuiParm ( "gui_parm4", 1 ); + reset_guis(); + } + } + + //////////////////////////////////////////////////// + // + // Do a depth-first search of the "track" to find a path to the target entity. + // each path entity targets 1 or more other path entities. Each path entity it + // targets must also target it, so the links are forward and back. There must be + // no circular links and the longest possible path must never be more than the + // script stack can handle (around 62 path entities would be the limit, but possibly + // fewer). This could be modified to handle circular links, and be made non-recursive + // so it's not dependent on the stack size, and possibly with a bit of effort could find + // the shortest path if multiple paths exist, but for our purposes, this does the job. + // + //////////////////////////////////////////////////// + float calc_lift_path_r( entity current_pos, entity previous, entity target, float depth ) { + float num; + float i; + entity next; + float path_length; + + // have we reached the target? + if ( current_pos == target ) { + return depth; + } + + // check each of the targets on this entity + num = current_pos.numTargets(); + for( i = 0; i < num; i++ ) { + next = current_pos.getTarget( i ); + if ( next == previous ) { + // don't go back the way we came + continue; + } + + // check if a path exists through this target + path_length = calc_lift_path_r( next, current_pos, target, depth + 1 ); + if ( path_length ) { + // found the target, so as we recurse backwards, set the name of the next path entity to go to. + // when we're done, going through the "path*" keys in order will give the order of entities + // to follow to get to the target. + $lift_bottom.setKey( "path" + depth, next.getName() ); + return path_length; + } + } + + // no path from this entity + return 0; + } + + //////////////////////////////////////////////////// + // + // calculate the direction to turn to the next target + // + //////////////////////////////////////////////////// + float get_lift_turn_dir( entity source, entity target ) { + float dir; + vector delta; + vector ang; + + delta = target.getOrigin(); + delta = delta - source.getOrigin(); + ang = sys.VecToAngles( delta ); + dir = ( ( ang_y + 45 ) / 90 ) & 3; + + return dir; + } + + //////////////////////////////////////////////////// + // + // movement test + // + //////////////////////////////////////////////////// + entity check_lift_move_dir( entity current_pos, float dir ) { + float num; + float i; + float check_dir; + entity check_ent; + + num = current_pos.numTargets(); + for( i = 0; i < num; i++ ) { + check_ent = current_pos.getTarget( i ); + check_dir = get_lift_turn_dir( current_pos, check_ent ); + if ( check_dir == dir ) { + return check_ent; + } + } + return current_pos; + } + + //////////////////////////////////////////////////// + // + // rotates the lift back into position when blocked + // + //////////////////////////////////////////////////// + void lift_rotate_blocked() { + vector delta; + vector dest_angles; + float rotateTime; + + $lift_bottom.stopRotating(); + sys.wait( 0.1 ); + + // rotate back + dest_angles_y = ( lift_dir & 3 ) * 90 + 180; + if ( dest_angles_y >= 180 ) { + dest_angles_y -= 360; + } + delta = anglemod180( dest_angles - $lift_bottom.getAngles() ); + rotateTime = abs( delta_y / 90 )* LIFT_TURN_TIME + 0.5; + $lift_bottom.time( rotateTime ); + $lift_bottom.accelTime( .5 ); + $lift_bottom.decelTime( .5 ); + $lift_bottom.rotateOnce( delta ); + sys.waitFor( $lift_bottom ); + + reset_guis(); + + // update our location on the guis + set_lift_location( lift_station ); + + lift_loop(); + } + + //////////////////////////////////////////////////// + // + // turns lift + // + //////////////////////////////////////////////////// + void turn_lift_to_dir( float dir ) { + float turn_diff; + vector delta; + vector dest_angles; + float rotateTime; + + turn_diff = ( dir - lift_dir ) & 3; + if ( turn_diff == 0 ) { + return; + } + + dest_angles_y = ( dir & 3 ) * 90 + 180; + if ( dest_angles_y >= 180 ) { + dest_angles_y -= 360; + } + delta = anglemod180( dest_angles - $lift_bottom.getAngles() ); + rotateTime = abs( delta_y / 90 )* LIFT_TURN_TIME + 0.5; + + sys.onSignal( SIG_BLOCKED, $lift_bottom, "map_commoutside::lift_rotate_blocked" ); + $lift_bottom.accelTime( .5 ); + $lift_bottom.decelTime( .5 ); + $lift_bottom.time( rotateTime ); + + $lift_bottom.startSoundShader ("co_lift_rotation", SND_CHANNEL_VOICE ); + + $lift_bottom.rotateOnce( delta ); + sys.waitFor ($lift_bottom); + + sys.clearSignalThread( SIG_BLOCKED, $lift_bottom ); + lift_dir = dir; + + // update our location on the guis + set_lift_location( lift_station ); + } + + //////////////////////////////////////////////////// + // + // move lift to a specific spot + // + //////////////////////////////////////////////////// + void move_lift_to( entity target ) { + float path_length; + float i; + float dir; + float next_dir; + string ent_name; + entity path_ent; + entity next_ent; + + if ( lift_station == target ) { + // lower the platform if necessary + if ( lift_plat_up ) { + cmd_lift_down(); + } + return; + } + + // create a path to the target + path_length = calc_lift_path_r( lift_station, lift_station, target, 0 ); + if ( !path_length ) { + string currentname = lift_station.getName(); + string targetname = target.getName(); + sys.warning( "entity 'lift_bottom' can't find path from '" + currentname + "' to '" + targetname + "'" ); + return; + } + + // lower the platform if necessary + if ( lift_plat_up ) { + cmd_lift_down(); + } + + // get the first point on the path + ent_name = $lift_bottom.getKey( "path0" ); + next_ent = sys.getEntity( ent_name ); + if ( !next_ent ) { + sys.warning( "entity 'lift_bottom' can't find path entity '" + ent_name + "' to get to '" + target.getName() + "'" ); + return; + } + dir = get_lift_turn_dir( lift_station, next_ent ); + + // move to each point on the path + for( i = 0; i < path_length; i++ ) { + path_ent = next_ent; + + // get the next path entity, unless we're at the last one + if ( i < path_length - 1 ) { + ent_name = $lift_bottom.getKey( "path" + ( i + 1 ) ); + next_ent = sys.getEntity( ent_name ); + if ( !next_ent ) { + sys.warning( "entity 'lift_bottom' can't find path entity '" + ent_name + "' to get to '" + target.getName() + "'" ); + return; + } + } + + // turn towards the new direction if it's different and accelerate + if ( dir != lift_dir ) { + turn_lift_to_dir( dir ); + $lift_bottom.accelTime( .5 ); + } else if ( i != 0 ) { + $lift_bottom.accelTime( 0 ); + } else { + // always accelerate on the first path entity + $lift_bottom.accelTime( .5 ); + } + + // decelerate on the last path entity or if we have to turn + if ( i < path_length - 1 ) { + dir = get_lift_turn_dir( path_ent, next_ent ); + if ( dir != lift_dir ) { + $lift_bottom.decelTime( .5 ); + } else { + $lift_bottom.decelTime( 0 ); + } + } else { + $lift_bottom.decelTime( .5 ); + } + + // move to the next path entity + sys.onSignal( SIG_BLOCKED, $lift_bottom, "map_commoutside::lift_move_blocked" ); + $lift_bottom.speed( LIFT_MOVE_SPEED ); + + $lift_bottom.moveTo( path_ent ); + sys.waitFor( $lift_bottom ); + sys.clearSignalThread( SIG_BLOCKED, $lift_bottom ); + + // update our location on the guis + set_lift_location( path_ent ); + } + } + + //////////////////////////////////////////////////// + // + // if blocked when trying to go up, go back down + // + //////////////////////////////////////////////////// + void lift_up_blocked() { + cmd_lift_down(); + lift_loop(); + } + + //////////////////////////////////////////////////// + // + // move lift up + // + //////////////////////////////////////////////////// + void cmd_lift_up() { + if ( lift_plat_up ) { + return; + } + + float rotation = 0; + + // set the amount of movment + // needed for the spots where the lift can't go up fully + if ( lift_station == $lift_spot_31 ) { + rotation = 25; + } else if ( lift_station == $lift_spot_32 ) { + rotation = 20; + } else if ( lift_station == $lift_spot_44 ) { + rotation = 20; + } else if ( lift_station == $lift_spot_73 ) { + rotation = 24; + } + + lift_plat_up = true; + + $lift_leg_11.startSoundShader ("co_lift_up_2s", SND_CHANNEL_VOICE ); + + $lift_leg_11.rotateUpTo ( 0, -rotation ); + $lift_leg_12.rotateDownTo ( 0, 2 * rotation ); + $lift_leg_13.rotateUpTo ( 0, -2 * rotation ); + $lift_connection_top_move.rotateDownTo ( 0, rotation ); + + $lift_leg_21.rotateDownTo ( 0, 2 * rotation ); + $lift_connection_bottom_move.rotateUpTo ( 0, -rotation ); + $lift_leg_22.rotateUpTo ( 0, -2 * rotation ); + $lift_leg_23.rotateDownTo ( 0, 2 * rotation ); + $lift_connection_top_static.rotateUpTo ( 0, -rotation ); + + sys.onSignal( SIG_BLOCKED, $lift_bottom, "map_commoutside::lift_up_blocked" ); + sys.waitFor( $lift_leg_23 ); + sys.clearSignalThread( SIG_BLOCKED, $lift_bottom ); + + // update our location on the guis + set_lift_location( lift_station ); + } + + //////////////////////////////////////////////////// + // + // if blocked when trying to go down, go back up + // + //////////////////////////////////////////////////// + void lift_down_blocked() { + cmd_lift_up(); + reset_guis(); + lift_loop(); + } + + //////////////////////////////////////////////////// + // + // move lift down + // + //////////////////////////////////////////////////// + void cmd_lift_down() { + if ( !lift_plat_up ) { + return; + } + + $lift_cage_control.disable(); + + lift_plat_up = false; + + $lift_leg_11.startSoundShader ("co_lift_down_2s", SND_CHANNEL_VOICE ); + + $lift_leg_11.rotateDownTo ( 0, 320 ); + $lift_leg_12.rotateUpTo ( 0, 80 ); + $lift_leg_13.rotateDownTo ( 0, 280 ); + $lift_connection_top_move.rotateUpTo ( 0, 40 ); + + $lift_leg_21.rotateUpTo ( 0, 80 ); + $lift_connection_bottom_move.rotateDownTo ( 0, 320 ); + $lift_leg_22.rotateDownTo ( 0, 280 ); + $lift_leg_23.rotateUpTo ( 0, 80 ); + $lift_connection_top_static.rotateDownTo ( 0, 320 ); + + sys.onSignal( SIG_BLOCKED, $lift_bottom, "map_commoutside::lift_down_blocked" ); + sys.waitFor ($lift_leg_23); + sys.clearSignalThread( SIG_BLOCKED, $lift_bottom ); + + $lift_cage_control.enable(); + + // update our location on the guis + set_lift_location( lift_station ); + } + + //////////////////////////////////////////////////// + // + // moves the lift back into position when blocked + // + //////////////////////////////////////////////////// + void lift_move_blocked() { + $lift_bottom.stopMoving(); + $lift_bottom.startSound( "snd_decel", SND_CHANNEL_BODY2, false ); + sys.wait( 0.1 ); + + // move back + $lift_bottom.accelTime( .5 ); + $lift_bottom.decelTime( .5 ); + $lift_bottom.speed( LIFT_MOVE_SPEED ); + $lift_bottom.moveTo( lift_station ); + sys.waitFor( $lift_bottom ); + $lift_cage_control.enable(); + + reset_guis(); + + // update our location on the guis + set_lift_location( lift_station ); + + lift_loop(); + } + + //////////////////////////////////////////////////// + // + // move lift forward + // + //////////////////////////////////////////////////// + void cmd_lift_forward() { + entity path_ent; + + path_ent = check_lift_move_dir( lift_station, lift_dir ); + if ( path_ent == lift_station ) { + return; + } + + if ( lift_plat_up ) { + cmd_lift_down(); + } + + $lift_cage_control.disable(); + + sys.onSignal( SIG_BLOCKED, $lift_bottom, "map_commoutside::lift_move_blocked" ); + $lift_bottom.accelTime( .5 ); + $lift_bottom.decelTime( .5 ); + $lift_bottom.speed( LIFT_MOVE_SPEED ); + $lift_bottom.moveTo( path_ent ); + sys.waitFor( $lift_bottom ); + sys.clearSignalThread( SIG_BLOCKED, $lift_bottom ); + set_lift_location( path_ent ); + $lift_cage_control.enable(); + } + + //////////////////////////////////////////////////// + // + // move lift back + // + //////////////////////////////////////////////////// + void cmd_lift_back() { + entity path_ent; + + path_ent = check_lift_move_dir( lift_station, ( lift_dir + 2 ) & 3 ); + if ( path_ent == lift_station ) { + return; + } + + if ( lift_plat_up ) { + cmd_lift_down(); + } + + $lift_cage_control.disable(); + + sys.onSignal( SIG_BLOCKED, $lift_bottom, "map_commoutside::lift_move_blocked" ); + $lift_bottom.accelTime( .5 ); + $lift_bottom.decelTime( .5 ); + $lift_bottom.speed( LIFT_MOVE_SPEED ); + $lift_bottom.moveTo( path_ent ); + sys.waitFor( $lift_bottom ); + set_lift_location( path_ent ); + $lift_cage_control.enable(); + } + + //////////////////////////////////////////////////// + // + // move lift right + // + //////////////////////////////////////////////////// + void cmd_lift_right() { + turn_lift_to_dir( ( lift_dir - 1 ) & 3 ); + } + + //////////////////////////////////////////////////// + // + // move lift left + // + //////////////////////////////////////////////////// + void cmd_lift_left() { + turn_lift_to_dir( ( lift_dir + 1 ) & 3 ); + } + + //////////////////////////////////////////////////// + // + // call lift to call spot #1 + // From anywhere in the grid the lift will find + // it's way to call spot #1 + // + //////////////////////////////////////////////////// + void cmd_lift_call_1() { + move_lift_to( $lift_spot_13 ); + turn_lift_to_dir( 0 ); + } + + //////////////////////////////////////////////////// + // + // call lift to call spot #2 + // From anywhere in the grid the lift will find + // it's way to call spot #2 + // + //////////////////////////////////////////////////// + void cmd_lift_call_2() { + move_lift_to( $lift_spot_31 ); + turn_lift_to_dir( 1 ); + } + + //////////////////////////////////////////////////// + // + // call lift to call spot #3 + // From anywhere in the grid the lift will find + // it's way to call spot #3 + // + //////////////////////////////////////////////////// + void cmd_lift_call_3() { + move_lift_to( $lift_spot_83 ); + turn_lift_to_dir( 1 ); + } + + //////////////////////////////////////////////////// + // + // command processing loop + // + //////////////////////////////////////////////////// + void lift_loop() { + while( 1 ) { + lift_command = CMD_LIFT_NONE; + while( lift_command == CMD_LIFT_NONE ) { + sys.waitFrame(); + } + + if ( lift_command == CMD_LIFT_UP ) { + cmd_lift_up(); + } else if ( lift_command == CMD_LIFT_DOWN ) { + cmd_lift_down(); + } else if ( lift_command == CMD_LIFT_FORWARD ) { + cmd_lift_forward(); + } else if ( lift_command == CMD_LIFT_RIGHT ) { + cmd_lift_right(); + } else if ( lift_command == CMD_LIFT_LEFT ) { + cmd_lift_left(); + } else if ( lift_command == CMD_LIFT_BACK ) { + cmd_lift_back(); + } else if ( lift_command == CMD_LIFT_CALL1 ) { + cmd_lift_call_1(); + } else if ( lift_command == CMD_LIFT_CALL2 ) { + cmd_lift_call_2(); + } else if ( lift_command == CMD_LIFT_CALL3 ) { + cmd_lift_call_3(); + } + } + } + + //////////////////////////////////////////////////// + // + // Gui call back functions + // + //////////////////////////////////////////////////// + void lift_up() { + lift_command = CMD_LIFT_UP; + } + void lift_down() { + lift_command = CMD_LIFT_DOWN; + } + void lift_forward() { + lift_command = CMD_LIFT_FORWARD; + } + void lift_right() { + lift_command = CMD_LIFT_RIGHT; + } + void lift_left() { + lift_command = CMD_LIFT_LEFT; + } + void lift_back() { + lift_command = CMD_LIFT_BACK; + } + void lift_call_1() { + lift_command = CMD_LIFT_CALL1; + } + void lift_call_2() { + lift_command = CMD_LIFT_CALL2; + } + void lift_call_3() { + lift_command = CMD_LIFT_CALL3; + } + + //////////////////////////////////////////////////// + // + // raise panel for call spot #1 + // + //////////////////////////////////////////////////// + void callspot1_panel_up() { + $callspot1_conpan.startSoundShader ("co_conpanel", SND_CHANNEL_VOICE ); + $callspot1_conpan.rotateOnce( '-63.43 0 0' ); + $callspot1_conpan_trigger_up.disable(); + sys.waitFor( $callspot1_conpan ); + + $callspot1_conpan_trigger_down.enable(); + } + + //////////////////////////////////////////////////// + // + // raise panel for call spot #1 + // + //////////////////////////////////////////////////// + void callspot1_panel_down() { + $callspot1_conpan.startSoundShader ("co_conpanel", SND_CHANNEL_VOICE ); + $callspot1_conpan.rotateOnce( '63.43 0 0' ); + $callspot1_conpan_trigger_down.disable(); + sys.waitFor( $callspot1_conpan ); + + $callspot1_conpan_trigger_up.enable(); + } + + //////////////////////////////////////////////////// + // + // raise panel for call spot #2 + // + //////////////////////////////////////////////////// + void callspot2_panel_up() { + $callspot2_conpan.startSoundShader ("co_conpanel", SND_CHANNEL_VOICE ); + $callspot2_conpan.rotateOnce( '0 0 63.43' ); + $callspot2_conpan_trigger_up.disable(); + sys.waitFor( $callspot2_conpan ); + + $callspot2_conpan_trigger_down.enable(); + } + + //////////////////////////////////////////////////// + // + // raise panel for call spot #2 + // + //////////////////////////////////////////////////// + void callspot2_panel_down() { + $callspot2_conpan.startSoundShader ("co_conpanel", SND_CHANNEL_VOICE ); + $callspot2_conpan.rotateOnce( '0 0 -63.43' ); + $callspot2_conpan_trigger_down.disable(); + sys.waitFor( $callspot2_conpan ); + + $callspot2_conpan_trigger_up.enable(); + } + + //////////////////////////////////////////////////// + // + // raise panel for call spot #3 + // + //////////////////////////////////////////////////// + void callspot3_panel_up() { + $callspot3_conpan.startSoundShader ("co_conpanel", SND_CHANNEL_VOICE ); + $callspot3_conpan.rotateOnce( '0 0 63.43' ); + $callspot3_conpan_trigger_up.disable(); + sys.waitFor( $callspot3_conpan ); + + $callspot3_conpan_trigger_down.enable(); + } + + //////////////////////////////////////////////////// + // + // raise panel for call spot #3 + // + //////////////////////////////////////////////////// + void callspot3_panel_down() { + $callspot3_conpan.startSoundShader ("co_conpanel", SND_CHANNEL_VOICE ); + $callspot3_conpan.rotateOnce( '0 0 -63.43' ); + $callspot3_conpan_trigger_down.disable(); + sys.waitFor( $callspot3_conpan ); + + $callspot3_conpan_trigger_up.enable(); + } + + //////////////////////////////////////////////////// + // + // MAIN + // + //////////////////////////////////////////////////// + void lift_main() { + + setup_lift(); + + // turn lift to the left so it can illuminate the 2nd call station area + cmd_lift_left(); + lift_loop(); + } +} // namespace diff --git a/base/script/map_cpu.script b/base/script/map_cpu.script new file mode 100644 index 00000000..ee1c799e --- /dev/null +++ b/base/script/map_cpu.script @@ -0,0 +1,307 @@ +namespace map_cpu { + + float RAISE_HELL_PILLARS = 0; + float PLAYED_TRITE_STINGER = FALSE; + + void init_world() { + $fixed_panel.hide(); + } + + void trite_stinger() { + if ( PLAYED_TRITE_STINGER == FALSE ) { + PLAYED_TRITE_STINGER = TRUE; + sys.trigger ($cpu1_monster_trite_1); + sys.trigger ($trite_stinger_2); + sys.trigger ($trite_stinger_3); + } + } + + void trigger_secmon_exit() { + sys.trigger ($trigger_relay_20); + sys.wait (1.2); + + sys.trigger ($trigger_relay_21); + sys.wait (2); + + sys.trigger ($trigger_relay_22); + sys.wait (0.8); + + sys.trigger ($trigger_relay_23); + } +/* + void haunted_cabinet() { + +// sys.print ("Entering haunted_cabinet...\n"); + + $anchor.time (.3); + $anchor.moveTo ($hcab_p1); + sys.waitFor ($anchor); + + sys.wait (.1); + + $anchor.moveTo ($hcab_p2); + sys.waitFor ($anchor); + + //$fc1.unbind(); + $anchor.moveTo ($hcab_p3); + sys.trigger ($func_forcefield_4); + + sys.wait (0.4); + + //sys.waitFor ($anchor); + $fc1.unbind(); + + } +*/ + + /* + Returns a random vector from 0-maxValue for each axis + */ + + vector getRandomVector(float maxX, float maxY, float maxZ) { + vector vec; + vec_x = int ( sys.random (maxX) ); + vec_y = int ( sys.random (maxY) ); + vec_z = int ( sys.random (maxZ) ); + + return vec; + } + + // Open ceiling hatch area in monitoring room. + void open_cpuhatch() { + $ladder_floor_hatch.time (0.5); + $cpuladder.time (3); + $ladder_ceiling_panel.time (0.5); + + $ladder_floor_hatch.move (DOWN, 8); + $ladder_ceiling_panel.move (UP, 8); + + sys.waitFor ($ladder_floor_hatch); + + $ladder_floor_hatch.move (SOUTH, 72); + $ladder_ceiling_panel.move (SOUTH, 72); + + sys.waitFor ($ladder_floor_hatch); + + $cpuladder.accelTime (1); + $cpuladder.decelTime (2); + $cpuladder.move (UP, 264); + } + + + // HK Lift before Lab A door + void raise_hlift() { + $hlift.speed (32); + $hlift.move (UP, 160); + sys.wait (0.2); + + $mb1.remove(); + $mb2.remove(); + $mb3.remove(); + $mb4.remove(); + + //sys.trigger ($mb1); + //sys.trigger ($mb2); + //sys.trigger ($mb3); + //sys.trigger ($mb4); + + sys.waitFor ($hlift); + sys.print ("stopped moving\n"); + + } + + + void raise_hell_pillars() { + if (RAISE_HELL_PILLARS == 0) { + RAISE_HELL_PILLARS = 1; + $hp_01_anchor.rotateOnce ('0 90 0'); + $hp_01.move (UP, 350); + sys.wait (1.5); + + $hp_02_anchor.rotateOnce ('0 90 0'); + $hp_02.move (UP, 350); + sys.wait (1.5); + + $hp_03_anchor.rotateOnce ('0 90 0'); + $hp_03.move (UP, 350); + sys.wait (1.5); + } + } + + + void fixed_maindoor() { + $fixed_panel.show(); + $broken_panel.hide(); + } + + void sparks_cpubank_01() { + while (1) { + sys.trigger ($cpubank_01_sparks); + sys.wait ( sys.random (4) + 1); + } + } + + void sparks_cpubank_02() { + while (1) { + sys.trigger ($cpubank_02_sparks); + sys.wait ( sys.random (3) + 1); + } + } + + void move_cpubank_01() { + $cpubank_01.speed (64); + thread ( sparks_cpubank_01() ); + $cpubank_01.moveTo ($cpubank_01_target); + } + + void move_cpubank_02() { + $cpubank_02.speed (64); + thread ( sparks_cpubank_02() ); + $cpubank_02.moveTo ($cpubank_02_target); + } + + void cpu_secret_01() { + sys.trigger ($cpu_secret_01_speaker); + sys.print ("You have found a secret area !\n"); + } + + void drop_object(string entityname) { + entity ent, ent_anchor; + vector vec; + + ent = sys.getEntity (entityname); + + ent.time (4); + ent.accelTime (2); + + ent_anchor = sys.getEntity (entityname + "_anchor"); + + //vec = getRandomVector (30, 45, 45); + vec = getRandomVector (10, 10, 10); + + ent_anchor.rotate (vec); + ent.move (DOWN, 356); + + sys.waitFor (ent); + + ent.remove(); + ent_anchor.remove(); + } + + void raise_object(string entityname) { + entity ent, ent_anchor; + vector vec; + + ent = sys.getEntity (entityname); + + ent.time (4); + ent.accelTime (2); + + ent_anchor = sys.getEntity (entityname + "_anchor"); + + ;vec = getRandomVector (30, 45, 45); + vec = getRandomVector (10, 10, 10); + + ent_anchor.rotate (vec); + ent.move (UP, 356); + + sys.waitFor (ent); + + ent.remove(); + ent_anchor.remove(); + } + + void dropscene1() { + float i; + entity ent; + + for (i = 1; i<=2; i++) { + thread drop_object ("hpp_" + i); + sys.wait (0.3); + } + + $hp_3_anchor.time (4); + $hp_5_anchor.time (4); + $hp_8_anchor.time (4); + + + for (i = 1; i<=12; i++) { + if (i == 3) { + //$hp_3_anchor.moveTo ($hp3_dest); + $hp_3.bob (4, 0.2, '0 0 2'); + } + else if (i == 5) { + //$hp_5_anchor.moveTo ($hp5_dest); + $hp_5.bob (4, 0.6, '0 0 4'); + } + else if (i == 8) { + //$hp_8_anchor.moveTo ($hp8_dest); + $hp_8.bob (4, 0.8, '0 0 3'); + } + else { + thread drop_object ("hp_" + i); + } + sys.wait (0.3); + } + $hp_3_anchor.moveTo ($hp3_dest); + $hp_5_anchor.moveTo ($hp5_dest); + $hp_8_anchor.moveTo ($hp8_dest); + } + + void dropscene2() { + float i; + entity ent; + + for (i = 1; i<=10; i++) { + thread raise_object ("hpc_" + i); + sys.wait (0.3); + } + } + + void dropscene3() { + float i; + entity ent; + + for (i = 1; i<=3; i++) { + thread drop_object ("hp_wall_" + i); + sys.wait (0.3); + } + } + + void battle_sounds() { + sys.wait (2); + sys.trigger ($speaker_cherubs); + sys.wait (45); + sys.trigger ($speaker_imps); + } + + void dropscene() { + sys.trigger ($speaker_hallway_fall); + + sys.trigger ($speaker_inf_01); // Shut some stuff off + sys.trigger ($speaker_inf_02); + sys.trigger ($speaker_inf_03); + + thread dropscene1(); + thread dropscene2(); + thread dropscene3(); + sys.wait (7); + + sys.trigger ($speaker_inf_01); // Turn it back on + sys.trigger ($speaker_inf_02); + sys.trigger ($speaker_inf_03); + + + + //$hpillar_01_anchor.rotateOnce ('0 90 0'); + //$hpillar_01.move (UP, 400); + //sys.wait (1.5); + + //$hpillar_02_anchor.rotateOnce ('0 -90 0'); + //$hpillar_02.move (UP, 400); + } + + void main() { + init_world(); + } +} \ No newline at end of file diff --git a/base/script/map_cpuboss.script b/base/script/map_cpuboss.script new file mode 100644 index 00000000..94f7a6ea --- /dev/null +++ b/base/script/map_cpuboss.script @@ -0,0 +1,593 @@ +namespace map_cpuboss { + #define PUMP_DISTANCE 90 + #define EXTEND_MID 64 + #define EXTEND_NUT 64 + #define FLOOR_SPEED 2 // Seconds + + float bridge_down = 0; + float bridge_dir = 0; + float bridge_moving = 0; + float PLAYMUSIC = TRUE; + float monsterstatus = 1; + float started_music = 0; + float bridge_rot_time = 6; // How long will it take the bridge to rotate to it's place ? + + float stop_pumps = FALSE; + float stop_floors = FALSE; + float stop_lights = FALSE; + + float mach1_loc = 2; // Which rung is it on ? starts in middle rung + // 1 == bottom, 2 == middle, 3== top + float mach1_loc_last = 0; // Where were we last ? + + + void mover_startsound3 (entity ent) { + ent.startSoundShader ("cpu_m3_start", SND_CHANNEL_VOICE); + sys.wait (1); + ent.startSoundShader ("cpu_m3_loop", SND_CHANNEL_VOICE2); + } + + void mover_stopsound3 (entity ent) { + ent.startSoundShader ("cpu_m3_stop", SND_CHANNEL_VOICE2); + } + + void mover_startsound4 (entity ent) { + ent.startSoundShader ("cpu_m4_start", SND_CHANNEL_VOICE); + sys.wait (1); + ent.startSoundShader ("cpu_m4_loop", SND_CHANNEL_VOICE2); + } + + void mover_stopsound4 (entity ent) { + ent.startSoundShader ("cpu_m4_stop", SND_CHANNEL_VOICE2); + } + + //Sab room -open and close the pillar shields + + void cpillar1_open() + { + $cpillar1_shield1.startSoundShader ("cpu_shields", SND_CHANNEL_VOICE2 ); + $cpillar1_shield1.moveTo ($cpillar1_shield_s1); + $cpillar1_shield2.startSoundShader ("cpu_shields", SND_CHANNEL_VOICE2 ); + $cpillar1_shield2.moveTo ($cpillar1_shield_s2); + } + + void cpillar2_open() + { + $cpillar2_shield1.startSoundShader ("cpu_shields", SND_CHANNEL_VOICE2 ); + $cpillar2_shield1.moveTo ($cpillar2_shield_s1); + $cpillar2_shield2.startSoundShader ("cpu_shields", SND_CHANNEL_VOICE2 ); + $cpillar2_shield2.moveTo ($cpillar2_shield_s2); + } + + void cpillar3_open() + { + $cpillar3_shield1.startSoundShader ("cpu_shields", SND_CHANNEL_VOICE2 ); + $cpillar3_shield1.moveTo ($cpillar3_shield_s1); + $cpillar3_shield2.startSoundShader ("cpu_shields", SND_CHANNEL_VOICE2 ); + $cpillar3_shield2.moveTo ($cpillar3_shield_s2); + } + + void cpillar4_open() + { + $cpillar4_shield1.startSoundShader ("cpu_shields", SND_CHANNEL_VOICE2 ); + $cpillar4_shield1.moveTo ($cpillar4_shield_s1); + $cpillar4_shield2.startSoundShader ("cpu_shields", SND_CHANNEL_VOICE2 ); + $cpillar4_shield2.moveTo ($cpillar4_shield_s2); + } + + void cpillar1_close() + { + $cpillar1_shield1.startSoundShader ("cpu_shields", SND_CHANNEL_VOICE2 ); + $cpillar1_shield1.moveTo ($cpillar1_shield_s0); + $cpillar1_shield2.startSoundShader ("cpu_shields", SND_CHANNEL_VOICE2 ); + $cpillar1_shield2.moveTo ($cpillar1_shield_s0); + } + + void cpillar2_close() + { + $cpillar2_shield1.startSoundShader ("cpu_shields", SND_CHANNEL_VOICE2 ); + $cpillar2_shield1.moveTo ($cpillar2_shield_s0); + $cpillar2_shield2.startSoundShader ("cpu_shields", SND_CHANNEL_VOICE2 ); + $cpillar2_shield2.moveTo ($cpillar2_shield_s0); + } + + void cpillar3_close() + { + $cpillar3_shield1.startSoundShader ("cpu_shields", SND_CHANNEL_VOICE2 ); + $cpillar3_shield1.moveTo ($cpillar3_shield_s0); + $cpillar3_shield2.startSoundShader ("cpu_shields", SND_CHANNEL_VOICE2 ); + $cpillar3_shield2.moveTo ($cpillar3_shield_s0); + } + + void cpillar4_close() + { + $cpillar4_shield1.startSoundShader ("cpu_shields", SND_CHANNEL_VOICE2 ); + $cpillar4_shield1.moveTo ($cpillar4_shield_s0); + $cpillar4_shield1.startSoundShader ("cpu_shields", SND_CHANNEL_VOICE2 ); + $cpillar4_shield2.moveTo ($cpillar4_shield_s0); + } + + + // + + // --- + // Init base-state of world entities here + // --- + + void init_world() { + + // Sabaoth room electrical pillar shield times + + $cpillar1_shield1.accelTime (.2); + $cpillar1_shield2.accelTime (.2); + $cpillar2_shield1.accelTime (.2); + $cpillar2_shield2.accelTime (.2); + $cpillar3_shield1.accelTime (.2); + $cpillar3_shield2.accelTime (.2); + $cpillar4_shield1.accelTime (.2); + $cpillar4_shield2.accelTime (.2); + $cpillar1_shield1.time (.5); + $cpillar1_shield2.time (.5); + $cpillar2_shield1.time (.5); + $cpillar2_shield2.time (.5); + $cpillar3_shield1.time (.5); + $cpillar3_shield2.time (.5); + $cpillar4_shield1.time (.5); + $cpillar4_shield2.time (.5); + + // old boss room + + $tooth_1.sway (8, 0.2, '0 5 -4'); + $tooth_2.sway (7, 0.4, '0 -4 4'); + $tooth_3.sway (8, 0.6, '0 6 2'); + $tooth_4.sway (6, 0.32, '0 5 3'); + $tooth_5.sway (7, 0.9, '0 -3 2'); + $tooth_6.sway (7, 0.78, '0 2 5'); + $tooth_7.sway (5, 0.5, '0 4 -5'); + $tooth_8.sway (6, 0.6, '0 3 -2'); + + $bm_arm1_anchor.time (3); + $bm_arm1_anchor.accelTime (0.5); + $bm_arm1_anchor.decelTime (1.5); + + $bm_mach1_wheel1_anchor.bind ($bm_mach1_support); + $bm_mach1_wheel2_anchor.bind ($bm_mach1_support); + $bm_mach1_wheel3_anchor.bind ($bm_mach1_support); + $bm_mach1_wheel4_anchor.bind ($bm_mach1_support); + + $mach1_support_anchor.time (3); + + float i; + entity ent, ent2, ent3; + + $pentagram.rotate ('0 20 0'); + + for (i=1; i<=4; i++) { + + // Top pumps + ent = sys.getEntity ("bm_pump" + i + "a"); + ent.time (5); + ent.accelTime (0.75); + ent.decelTime (1.5); + + ent = sys.getEntity ("bm_pump" + i + "a_anchor"); + ent.time (5); + ent.accelTime (0.75); + ent.decelTime (1.5); + + // Bottom pump + + ent = sys.getEntity ("bm_pump" + i + "b"); + ent.time (5); + ent.accelTime (0.75); + ent.decelTime (1.5); + + ent = sys.getEntity ("bm_pump" + i + "b_anchor"); + ent.time (5); + ent.accelTime (0.75); + ent.decelTime (1.5); + } + + // bind sector 1 + for ( i = 1; i <= 3; i++ ) { + ent=sys.getEntity ("s1_" + i); + ent2=sys.getEntity ("s1_" + i + "_anchor"); + ent.time (FLOOR_SPEED); + ent2.time (FLOOR_SPEED); + ent.bind (ent2); + ent2.bind ($sector_1); + } + + // bind sector 2 + for ( i = 1; i <= 3; i++ ) { + ent=sys.getEntity ("s2_" + i); + ent2=sys.getEntity ("s2_" + i + "_anchor"); + ent.time (FLOOR_SPEED); + ent2.time (FLOOR_SPEED); + ent.bind (ent2); + ent2.bind ($sector_2); + } + + // bind sector 3 + for ( i = 1; i <= 9; i++ ) { + ent=sys.getEntity ("s3_" + i); + ent2=sys.getEntity ("s3_" + i + "_anchor"); + ent.time (FLOOR_SPEED); + ent2.time (FLOOR_SPEED); + ent.bind (ent2); + ent2.bind ($sector_3); + } + + $bm_arm1_bolt.time (2); + $bm_arm1_bolt.accelTime (0.25); + $bm_arm1_bolt.decelTime (0.75); + + $bm_arm1_mid.move (RIGHT, 40); + $bm_arm1_nut.move (RIGHT, 40); + + sys.wait (1); + + } + + // --- + // Init base position for the central bridge + // --- + + void init_bridge() { + $bridge_support.time (6); + $bridge_support.accelTime (0.75); + $bridge_support.decelTime (1); + + $cpubridge_anchor.time (6); + $cpubridge_anchor.accelTime (2); + $cpubridge_anchor.decelTime (3); + + $bridge_ramp_right.time (2); + $bridge_ramp_left.time (2); + + $bridge_arm_anchor.time (2); + + $bridge_base.bind ($bridge_support); + $bridge_arm_anchor.bind ($bridge_base); + + $bridge_rail_right.bind ($bridge_ramp_right); + $bridge_rail_left.bind ($bridge_ramp_left); + + $bridge_ramp_right.bind ($bridge_arm_anchor); + $bridge_ramp_left.bind ($bridge_arm_anchor); + $bridge_gui.bind ($bridge_arm_anchor); + + $bridge_ramp_right.time (1); + $bridge_ramp_left.time (1); + + $bridge_ramp_right.rotateOnce ('0 0 -90'); + $bridge_ramp_left.rotateOnce ('0 0 90'); + $bridge_arm_anchor.rotateOnce ('-90 0 0'); + + $bridge_support.move (UP, 1024); + + } + + void test_bridge() { + float i; + + if (bridge_down == 0) { + sys.trigger ($bridge_vo_1); + // Sound of bridge coming down + $speaker_bridge_1.startSoundShader ("cpu_bridge_down_6s", SND_CHANNEL_BODY ); + + $bridge_support.move (DOWN, 1024); + $bridge_support.rotateOnce ('0 -450 0'); + sys.waitFor ($bridge_support); + + + + $bridge_arm_anchor.time (5); + // Sound of Arm rotating down + $speaker_bridge_3.startSoundShader ("cpu_arm_down_5s", SND_CHANNEL_ITEM ); + $bridge_arm_anchor.rotateOnce ('90 0 0'); // Down + sys.waitFor ($bridge_arm_anchor); + + $bridge_arm_anchor.time (2); + + // Bounce the bridge as it comes down + + $bridge_arm_anchor.time (0.3); + $bridge_arm_anchor.rotateOnce ('-2 0 0'); // Up + sys.waitFor ($bridge_arm_anchor); + + $bridge_arm_anchor.time (0.2); + $bridge_arm_anchor.rotateOnce ('2 0 0'); // Down + sys.waitFor ($bridge_arm_anchor); + + $bridge_ramp_right.startSoundShader ("cpu_bridge_rails", SND_CHANNEL_VOICE ); + $bridge_ramp_right.rotateOnce ('0 0 90'); + + $bridge_ramp_left.startSoundShader ("cpu_bridge_rails", SND_CHANNEL_VOICE ); + $bridge_ramp_left.rotateOnce ('0 0 -90'); + sys.waitFor ($bridge_ramp_left); + + // $bridge_support.rotateOnce ('0 -90 0'); + //$bridge_ramp_right.rotateOnce ('-90 0 0'); + //$bridge_ramp_left.rotateOnce ('90 0 0'); + + bridge_down = 1; + bridge_dir = 3; + } + } + + vector bridge_getRotationAngles (float target_dir) + { + vector vec; + + if ( (bridge_dir != 1) && (target_dir == 1) ) { + $cpubridge_anchor.move (DOWN, 256); + } + + else if ( (bridge_dir == 1) && (target_dir != 1) ) { + $cpubridge_anchor.move (UP, 256); + } + + //else { + // sys.print ("not moving up or down\n"); + //} + + if ( (bridge_dir - target_dir) == -3 ) + return '0 90 0'; + if ( (bridge_dir - target_dir) == 3 ) + return '0 -90 0'; + + vec_x = 0; + vec_z = 0; + vec_y = (bridge_dir - target_dir) * 90; + + + if ( ( vec_y == 90 ) || ( vec_y == -90 ) ) { + $bridge_support.time (6); + $cpubridge_anchor.time (6); + bridge_rot_time = 6; + } + if ( ( vec_y == 180 ) || (vec_y == -180) ) { + $bridge_support.time (10); + $cpubridge_anchor.time (10); + bridge_rot_time = 10; + } + if ( ( vec_y == 270 ) || (vec_y == -270) ) { + $bridge_support.time (10); + $cpubridge_anchor.time (10); + bridge_rot_time = 10; + } + return vec; + } + + void bridge_rotation_sound() { + + if (bridge_rot_time == 6) { + $speaker_bridge_2.startSoundShader ("bridge_rotation_6s", SND_CHANNEL_BODY ); + return; + } + else { + $speaker_bridge_2.startSoundShader ("bridge_rotation_10s", SND_CHANNEL_BODY ); + return; + } + + } + + void bridge_rotate_south() + { + + vector vec; + + if ( bridge_dir == 3 ) + return; // Bridge is already at this location + + if (bridge_moving == 0) { + bridge_moving = 1; + $bridge_gui.disable(); + + if (bridge_down == 0) + test_bridge(); + else + { + vec = bridge_getRotationAngles (3); + + thread bridge_rotation_sound(); + + $bridge_support.rotateOnce (vec); + sys.waitFor ($bridge_support); + + bridge_dir = 3; + } + $bridge_gui.enable(); + bridge_moving = 0; + } + } + + void bridge_rotate_east() + { + vector vec; + + if (bridge_dir == 2) + return; // Bridge is already at this location + + if (bridge_moving == 0) { + bridge_moving = 1; + $bridge_gui.disable(); + vec = bridge_getRotationAngles (2); + + thread bridge_rotation_sound(); + + sys.print ("rot time ==" + bridge_rot_time + "\n"); + $bridge_support.rotateOnce (vec); + sys.waitFor ($bridge_support); + + bridge_dir = 2; + $bridge_gui.enable(); + bridge_moving = 0; + } + } + + void bridge_rotate_west() + { + vector vec; + + if (bridge_dir == 4) + return; // Bridge is already at this location + + if (bridge_moving == 0) { + bridge_moving = 1; + $bridge_gui.disable(); + vec = bridge_getRotationAngles (4); + + thread bridge_rotation_sound(); + + sys.print ("rot time ==" + bridge_rot_time + "\n"); + $bridge_support.rotateOnce (vec); + sys.waitFor ($bridge_support); + + bridge_dir = 4; + $bridge_gui.enable(); + bridge_moving = 0; + } + } + + void bridge_rotate_north() + { + vector vec; + + if (bridge_dir == 1) + return; // Bridge is already at this location + + if (bridge_moving == 0) { + bridge_moving = 1; + $bridge_gui.disable(); + vec = bridge_getRotationAngles (1); + + thread bridge_rotation_sound(); + + sys.trigger ($trigger_objectivecomplete); + + sys.print ("rot time ==" + bridge_rot_time + "\n"); + $bridge_support.rotateOnce (vec); + sys.waitFor ($bridge_support); + + + + bridge_dir = 1; + $bridge_gui.enable(); + bridge_moving = 0; + } + } + + void init_running_lights() { + entity l1, l2, l3, l4; + float i; + + for ( i=1; i<=13; i++ ) { + l1 = sys.getEntity ("rrun_" + i); + l2 = sys.getEntity ("lrun_" + i); + l3 = sys.getEntity ("trrun_" + i); + l4 = sys.getEntity ("tlrun_" + i); + + l1.Off(); + l2.Off(); + l3.Off(); + l4.Off(); + } + } + + void running_lights() { + entity l1, l2, l3, l4; + float i; + + for ( i=1; i<=13; i++ ) { + l1 = sys.getEntity ("rrun_" + i); + l2 = sys.getEntity ("lrun_" + i); + l3 = sys.getEntity ("trrun_" + i); + l4 = sys.getEntity ("tlrun_" + i); + + l1.On(); + l1.startSoundShader ("cpu_light_sounds", SND_CHANNEL_VOICE ); + l2.On(); + l2.startSoundShader ("cpu_light_sounds", SND_CHANNEL_VOICE ); + l3.On(); + l3.startSoundShader ("cpu_light_sounds", SND_CHANNEL_VOICE ); + l4.On(); + l4.startSoundShader ("cpu_light_sounds", SND_CHANNEL_VOICE ); + + sys.wait (0.15); + + l1.Off(); + l2.Off(); + l3.Off(); + l4.Off(); + + sys.wait (0.15); + } + + } + + void running_lights_thread() { + while (1) { + thread running_lights(); + sys.wait (2); + } + } + + void cache_sounds() { + sys.cacheSoundShader ("cpu_bridge_down_6s"); + sys.cacheSoundShader ("cpu_arm_down_5s"); + sys.cacheSoundShader ("cpu_bridge_rails"); + sys.cacheSoundShader ("bridge_rotation_6s"); + sys.cacheSoundShader ("bridge_rotation_10s"); + sys.cacheSoundShader ("cpu_light_sounds"); + sys.cacheSoundShader ("cpu_shields"); + sys.cacheSoundShader ("cpu_m3_start"); + sys.cacheSoundShader ("cpu_m3_stop"); + sys.cacheSoundShader ("cpu_m3_loop"); + sys.cacheSoundShader ("cpu_m4_start"); + sys.cacheSoundShader ("cpu_m4_stop"); + sys.cacheSoundShader ("cpu_m4_loop"); + + } + + void fadeout_endroom() { + + $cspeaker_1.remove(); + $cspeaker_2.remove(); + $cspeaker_3.remove(); + $cspeaker_4.remove(); + + $trigger_multiple_1.remove(); + $trigger_multiple_2.remove(); + $trigger_multiple_3.remove(); + $trigger_multiple_4.remove(); + + $ctrigger_hurt_1.remove(); + $ctrigger_hurt_2.remove(); + $ctrigger_hurt_3.remove(); + $ctrigger_hurt_4.remove(); + + //$cspeaker_1.fadeSound ( SND_CHANNEL_ANY, -60, 1 ); + //$cspeaker_2.fadeSound ( SND_CHANNEL_ANY, -60, 1 ); + //$cspeaker_3.fadeSound ( SND_CHANNEL_ANY, -60, 1 ); + //$cspeaker_4.fadeSound ( SND_CHANNEL_ANY, -60, 1 ); + } + + void main() + { + cache_sounds(); + init_world(); + + // Exec all other required threads here + +// thread move_pumps(); +// thread move_arm1(); + + init_bridge(); + init_running_lights(); + thread running_lights_thread(); + } +} + + diff --git a/base/script/map_delta1.script b/base/script/map_delta1.script new file mode 100644 index 00000000..27d49069 --- /dev/null +++ b/base/script/map_delta1.script @@ -0,0 +1,1519 @@ +namespace map_delta1 { + float power = 0 ; + float rgb_modifier = 0; + + // number of security lights(sl) and doors(dl) + float sl_count = 5; + float dl_count = 8; + + + //////////////////////////////////////////////////// + // + // Initial movements etc... + // + //////////////////////////////////////////////////// + void init_world() + { + //////////////////////////////////////////////////// + //SENECA's HOLOGRAM INITS + $hologram.hide(); + $hologram.setColor (.3, .35, .45); //inital medium blue + $hologram.setShaderParm(3,-0.6); //the side textures scroll from bottom to top. + $hologram.setShaderParm(4,100); //the bottom textures scale from the center of the faces out to the edges. + $hologram.setShaderParm(5,0); //the delta 1 ring's RGB defaults to 0 + $hologram.setShaderParm(6,100); //the plane beneath the hologram starts infinitely small + $hologram.setShaderParm(7,0); //rgb of tops of rooms + + //the important rooms + $hologram1.hide(); + $hologram1.bind ($hologram1_1_anchor); + $hologram1.setColor (.6, .7, .9); //inital light blue + $hologram1.setShaderParm(3,-0.6); //the side textures scroll from bottom to top. + $hologram1.setShaderParm(4,100); //the bottom textures scale from the center of the faces out to the edges. + $hologram1.setShaderParm(7,0); //rgb of tops of rooms + + $hologram2.hide(); + $hologram2.bind ($hologram2_1_anchor); + $hologram2.setColor (.6, .7, .9); + $hologram2.setShaderParm(3,-0.6); + $hologram2.setShaderParm(4,100); + $hologram2.setShaderParm(7,0); + + $hologram3.hide(); + $hologram3.bind ($hologram3_1_anchor); + $hologram3.setColor (.6, .7, .9); + $hologram3.setShaderParm(3,-0.6); + $hologram3.setShaderParm(4,100); + $hologram3.setShaderParm(7,0); + + $hologram4.hide(); + $hologram4.bind ($hologram4_1_anchor); + $hologram4.setColor (.6, .7, .9); + $hologram4.setShaderParm(3,-0.6); + $hologram4.setShaderParm(4,100); + $hologram4.setShaderParm(7,0); + + $hologram5.hide(); + $hologram5.bind ($hologram5_1_anchor); + $hologram5.setColor (.6, .7, .9); + $hologram5.setShaderParm(3,-0.6); + $hologram5.setShaderParm(4,100); + $hologram5.setShaderParm(7,0); + + //the important rooms' glows + $hologram1_1.hide(); + $hologram1_1.bind ($hologram1); + $hologram1_1.setShaderParm(3,0); //RGB of the red boxes outside each hologram. starts at 100% transparent. + $hologram1_1.setShaderParm(4,10); //height of the red boxes outside each hologram. starts real small + $hologram1_1.setShaderParm(5,0); //scale of the round disc + $hologram1_1.setShaderParm(6,0); //RGB of the round plate that grows when you select an important area. + $hologram1_1.setShaderParm(7,0); //RGB of the sprite round plate + + $hologram2_1.hide(); + $hologram2_1.bind ($hologram2); + $hologram2_1.setColor (.6, .7, .9); + $hologram2_1.setShaderParm(3,0); + $hologram2_1.setShaderParm(4,10); + $hologram2_1.setShaderParm(5,0); + $hologram2_1.setShaderParm(6,0); + + $hologram3_1.hide(); + $hologram3_1.bind ($hologram3); + $hologram3_1.setColor (.6, .7, .9); + $hologram3_1.setShaderParm(3,0); + $hologram3_1.setShaderParm(4,10); + $hologram3_1.setShaderParm(5,0); + $hologram3_1.setShaderParm(6,0); + + $hologram4_1.hide(); + $hologram4_1.bind ($hologram4); + $hologram4_1.setColor (.6, .7, .9); + $hologram4_1.setShaderParm(3,0); + $hologram4_1.setShaderParm(4,10); + $hologram4_1.setShaderParm(5,0); + $hologram4_1.setShaderParm(6,0); + + $hologram5_1.hide(); + $hologram5_1.bind ($hologram5); + $hologram5_1.setColor (.6, .7, .9); + $hologram5_1.setShaderParm(3,0); + $hologram5_1.setShaderParm(4,10); + $hologram5_1.setShaderParm(5,0); + $hologram5_1.setShaderParm(6,0); + + + //END SENECA's HOLOGRAM INITS + //////////////////////////////////////////////////// + + $lobby_spawn_trigger.disable(); + $lobby_spawn_trigger2.disable(); + + // scipull stuff + $delta1_scipull_1.hide(); + $scipull_panel_end.hide(); + + // sizzor lift binds + $siz_axle_low.bind ($siz_lowlegr); + $siz_axle_left.bind ($siz_lowlegr); + $siz_toplegl.bind ($siz_axle_left); + $siz_axle_top.bind ($siz_toplegl); + $siz_toplegr.bind ($siz_axle_top); + $siz_axle_right.bind ($siz_toplegr); + $siz_lowlegl.bind ($siz_axle_right); + + $siz_topcr.bindPosition ($siz_toplegl); + $siz_topcl.bindPosition ($siz_toplegr); + + $siz_lowcl.bindPosition ($siz_lowlegl); + + $siz_top.bind ($siz_topcr); + $siz_control.bind ($siz_top); + + // sizzor accel and decel times + $siz_toplegl.time ( 1.5 ); + $siz_toplegr.time ( 1.5 ); + $siz_lowlegl.time ( 1.5 ); + $siz_lowlegr.time ( 1.5 ); + + $siz_toplegl.accelTime ( .5 ); + $siz_toplegl.decelTime ( .5 ); + $siz_toplegr.accelTime ( .5 ); + $siz_toplegr.decelTime ( .5 ); + + $siz_lowlegl.accelTime ( .5 ); + $siz_lowlegl.decelTime ( .5 ); + $siz_lowlegr.accelTime ( .5 ); + $siz_lowlegr.decelTime ( .5 ); + + // reactor setup + $outerring_anchor.rotateOnce ('-45 0 0'); + $innerring_anchor.rotateOnce ('-30 0 0'); + } + + + //////////////////////////////////////////////////// + // + // Global parm ramp up or down + // + //////////////////////////////////////////////////// + void light_ramp( float rgb_start, float rgb_end, float time_val ) + { + float i, t, v; + + t = time_val * GAME_FPS; + for ( i = 0; i < t; i++ ) { + v = rgb_start + ( rgb_end - rgb_start ) * ( i / t ); + sys.setShaderParm( 0, v ); + sys.setShaderParm( 1, v ); + sys.setShaderParm( 2, v ); + sys.wait( GAME_FRAMETIME ); + } + sys.setShaderParm( 0, rgb_end ); + sys.setShaderParm( 1, rgb_end ); + sys.setShaderParm( 2, rgb_end ); + } + + + + //////////////////////////////////////////////////// + // + // Power flux + // + //////////////////////////////////////////////////// + void power_flux() + { + float i; + float ran_loop, ran_new, ran_time; + float old; + + old = .2; + ran_loop = (sys.random(10) + 5); + + for (i=1; i<=ran_loop; i++){ + ran_new = sys.random(1.5); + ran_time = sys.random(1); + light_ramp( old, ran_new, ran_time ); + + old = ran_new; + } + + light_ramp( old, .15, .3 ); + } + + + + //////////////////////////////////////////////////// + // + // Low Power Loop + // random power flucuations + // + //////////////////////////////////////////////////// + void low_power_loop() + { + //sys.print ("begin low_power_loop\n"); + //sys.print ("power level =" + power + "\n"); + float ran; + ran = sys.random (3); + sys.wait (ran); + + while (power == 1){ + ran = (sys.random(4) + 12); + //sys.print ("next power surge in " + ran + " seconds\n"); + sys.wait (ran); + + power_flux(); + } + + //sys.print ("made it to the end of low power loop\n"); + if (power==2){ + float ii; + float rate; + + rate = GAME_FRAMETIME * 0.25; + for( ii = rgb_modifier; ii <= 1; ii += rate ) { + sys.setShaderParm(0,(ii*.65)); + sys.setShaderParm(1,(ii*.65)); + sys.setShaderParm(2,(ii*.75)); + + sys.wait (GAME_FRAMETIME); + } + } + } + + + + //////////////////////////////////////////////////// + // + // security lights on + // + //////////////////////////////////////////////////// + void seclights_on() + { + entity sl_ent, ssl_ent1, bsl_ent1, ssl_ent2, bsl_ent2; + float i; + + for (i=1; i<=sl_count; i++){ + sl_ent=sys.getEntity ("sl_" + i); + + ssl_ent1=sys.getEntity ("ssl_" + i + "_a"); + ssl_ent2=sys.getEntity ("ssl_" + i + "_b"); + + bsl_ent1=sys.getEntity ("bsl_" + i + "_a"); + bsl_ent2=sys.getEntity ("bsl_" + i + "_b"); + + sl_ent.setColor( .627, .1, 0 ); + ssl_ent1.On(); + ssl_ent2.On(); + bsl_ent1.On(); + bsl_ent2.On(); + } + } + + + //////////////////////////////////////////////////// + // + // security lights off + // + //////////////////////////////////////////////////// + void seclights_off() + { + entity sl_ent, ssl_ent1, bsl_ent1, ssl_ent2, bsl_ent2; + float i; + + for (i=1; i<=sl_count; i++){ + sl_ent=sys.getEntity ("sl_" + i); + + ssl_ent1=sys.getEntity ("ssl_" + i + "_a"); + ssl_ent2=sys.getEntity ("ssl_" + i + "_b"); + + bsl_ent1=sys.getEntity ("bsl_" + i + "_a"); + bsl_ent2=sys.getEntity ("bsl_" + i + "_b"); + + sl_ent.setColor( 0,0,0 ); + ssl_ent1.Off(); + ssl_ent2.Off(); + bsl_ent1.Off(); + bsl_ent2.Off(); + } + } + + + //////////////////////////////////////////////////// + // + // hologram on + // + //////////////////////////////////////////////////// + void hologram_on() + { + $hologram_light_big.setColor( .75, .8, .85 ); + + // trigger the initial power up sound in control room + // sys.trigger ($warning_speaker_initial); + + // sci stuff + $delta1_scipull_1.show(); + $scipull_panel_end.show(); + + $scidead.remove(); + $scipull_panel_start.remove(); + + $lobby_spawn_trigger.enable(); + $lobby_spawn_trigger2.enable(); + + // data linker show and move down + $datalinker.startSoundShader ("hologram_datalinker", SND_CHANNEL_VOICE ); + $datalinker.time(.75); + $datalinker.show(); + $datalinker.move ( DOWN, 8 ); + } + + + //////////////////////////////////////////////////// + // + // hologram off + // + //////////////////////////////////////////////////// + void hologram_off() + { + $hologram_light_big.setColor( .75, .8, .85 ); + } + + //////////////////////////////////////////////////// + // + // door lights on + // + //////////////////////////////////////////////////// + void doorlights_on() + { + entity dl_ent1, dl_ent2, dl_ent3 ; + float i; + + for (i=1; i<=dl_count; i++){ + dl_ent1=sys.getEntity ("dl_" + i); + dl_ent2=sys.getEntity ("dl_" + i + "_a"); + dl_ent3=sys.getEntity ("dl_" + i + "_b"); + + dl_ent1.setColor( .627, .1, 0 ); + dl_ent2.setColor( .627, .1, 0 ); + dl_ent3.setColor( .627, .1, 0 ); + } + } + + + /////////////////////////////////////////////////// + // + // door lights off + // + //////////////////////////////////////////////////// + void doorlights_off() + { + entity dl_ent1, dl_ent2, dl_ent3 ; + float i; + + for (i=1; i<=dl_count; i++){ + dl_ent1=sys.getEntity ("dl_" + i); + dl_ent2=sys.getEntity ("dl_" + i + "_a"); + dl_ent3=sys.getEntity ("dl_" + i + "_b"); + + dl_ent1.setColor( 1, 1, 1 ); + dl_ent2.setColor( 1, 1, 1 ); + dl_ent3.setColor( 1, 1, 1 ); + } + } + + + //////////////////////////////////////////////////// + // + // Power is offline + // level 0 + // + //////////////////////////////////////////////////// + void power_level_0() + { + float i; + float rate; + + rate = GAME_FRAMETIME * 0.25; + for( i = rgb_modifier; i >= 0; i -= rate ) { + + sys.setShaderParm(0,i); + sys.setShaderParm(1,i); + sys.setShaderParm(2,i); + + sys.wait (GAME_FRAMETIME); + } + + // force all to 0,0,0 just incase there is a fraction left over... + // to make sure the shadows are off + sys.setShaderParm(0,0); + sys.setShaderParm(1,0); + sys.setShaderParm(2,0); + + // turn on the security lights + // turn on door lights to red + // turn the hologram light off + thread seclights_on(); + thread doorlights_on(); + thread hologram_off(); + + // set the rgb modifier tracking variable + rgb_modifier = 0; + + // sys.print ( "power offline\n" ); + power = 0; + } + + + //////////////////////////////////////////////////// + // + // Power to level 1 + // + //////////////////////////////////////////////////// + void power_level_1() + { + // turn security lights off + // doorlights back to white if red + thread seclights_off(); + thread doorlights_off(); + sys.wait (1); + + float i; + float rate; + + if ( power >= 1 ){ + rate = GAME_FRAMETIME * 0.25; + for( i = rgb_modifier; i >= .25; i -= rate ) { + + sys.setShaderParm(0,i); + sys.setShaderParm(1,i); + sys.setShaderParm(2,i); + + sys.wait (GAME_FRAMETIME); + } + } else { + rate = GAME_FRAMETIME * 0.25; + for( i = rgb_modifier; i <= .25; i += rate ) { + + sys.setShaderParm(0,i); + sys.setShaderParm(1,i); + sys.setShaderParm(2,i); + + sys.wait (GAME_FRAMETIME); + } + } + + // set the rgb modifier tracking variable + rgb_modifier = .25; + + // sys.print ( "power 10%\n" ); + power = 1; + + low_power_loop(); + } + + + //////////////////////////////////////////////////// + // + // Power to level 2 + // + //////////////////////////////////////////////////// + void power_level_2() + { + // turn security lights off + // doorlights back to white if red + // turn the hologram on if off + power = 2; + seclights_off(); + doorlights_off(); + hologram_on(); + + float i; + float rate; + + rate = GAME_FRAMETIME * 0.25; + for( i = rgb_modifier; i <= 1; i += rate ) { + + sys.setShaderParm(0,(i*.65)); + sys.setShaderParm(1,(i*.65)); + sys.setShaderParm(2,(i*.75)); + + sys.wait (GAME_FRAMETIME); + } + + // set the rgb modifier tracking variable + rgb_modifier = 1; + + } + + + //////////////////////////////////////////////////// + // + // Computer Voice Loop + // + //////////////////////////////////////////////////// + void computer_voice_loop() + { + sys.killthread ( "map_delta1::pre_computer_voice_loop" ); + + sys.wait (35); + + while (1){ + sys.trigger($speaker_reactor_offline); // 3.110 + sys.wait (3.4); + sys.trigger($speaker_follow_procedure_orage); // 3.165 + sys.wait (3.165); + + sys.wait (35); + } + } + + + //////////////////////////////////////////////////// + // + // Computer Voice Loop + // This is the initial voice loop + // + //////////////////////////////////////////////////// + void pre_computer_voice_loop() + { + while (power==0){ + sys.trigger($speaker_emr_pwr_only); // 2.219 seconds + sys.wait (2.4); + sys.trigger($speaker_operations_suspended); // 2.816 seconds + sys.wait (2.816); + + sys.wait (35); + } + } + + + //////////////////////////////////////////////////// + // + // Zombie falls out of panel and stuff + // + //////////////////////////////////////////////////// + void zombie_fallout() + { + // make the panel bounce back down + + sys.trigger ($zombie_fallout_speaker); + + $rot_panel_1.time (.25); + $rot_panel_1.decelTime (.01); + $rot_panel_1.rotateOnce ( '-10 0 0' ); + sys.waitFor ( $rot_panel_1 ); + + $rot_panel_1.time (.2); + $rot_panel_1.decelTime (.2); + $rot_panel_1.rotateOnce ( '10 0 0' ); + sys.waitFor ( $rot_panel_1 ); + + $rot_panel_1.time (.2); + $rot_panel_1.decelTime (.01); + $rot_panel_1.rotateOnce ( '-5 0 0' ); + sys.waitFor ( $rot_panel_1 ); + + $rot_panel_1.time (.15); + $rot_panel_1.decelTime (.15); + $rot_panel_1.rotateOnce ( '5 0 0' ); + sys.waitFor ( $rot_panel_1 ); + + $rot_panel_1.time (.1); + $rot_panel_1.decelTime (.1); + $rot_panel_1.rotateOnce ( '-2 0 0' ); + sys.waitFor ( $rot_panel_1 ); + + $rot_panel_1.time (.1); + $rot_panel_1.decelTime (.1); + $rot_panel_1.rotateOnce ( '1 0 0' ); + sys.waitFor ( $rot_panel_1 ); + + } + + + //////////////////////////////////////////////////// + // + // reactor move + // + //////////////////////////////////////////////////// + void reactor_move () + { + float i,v,t,blendtime,velmult; + vector rotvector; + + blendtime = 7; + velmult = .5; + + t = blendtime * GAME_FPS; + + for ( i = 10; i < t; i++ ) { + v = (i * velmult); + + rotvector_x=v ;rotvector_y=0 ; rotvector_z=0; + $reactor_innerring.rotate ( rotvector ); + + rotvector_x=-v ;rotvector_y=0 ; rotvector_z=0; + $reactor_outerring.rotate ( rotvector ); + + sys.wait( GAME_FRAMETIME ); + } + } + + //////////////////////////////////////////////////// + // + // reactor startup sequence + // + //////////////////////////////////////////////////// + void reactor_startup () + { + // this will eventually have things like: + // reactor ramping up + // lights doing something + + sys.trigger ($reactor_speaker_startup); + sys.trigger ($speaker_driver); + + $end_control.setGuiParm( "gui_parm5" , 0 ); + + //call reactor start function + thread reactor_move(); + + sys.killthread ( "map_delta1::computer_voice_loop" ); + sys.killthread ( "map_delta1::low_power_loop" ); + sys.killthread ( "map_delta1::power_flux" ); + thread power_level_2(); + + sys.wait(2); + sys.trigger ($reactor_comp_reactoronline); + //sys.print ( "trigger objective complete\n" ); + sys.trigger($reactor_objective_complete_trigger); + sys.wait(4); + //sys.print ( "trigger last objective\n" ); + sys.trigger($elevator_objective_trigger); + + + sys.wait(4); + sys.trigger ($reactor_speaker_loop); + + // trigger the door sign guis and kiosk guis + sys.trigger($doorsigns_gui_relay); + } + + + //////////////////////////////////////////////////// + // + // Sound moving #1 + // Plays a sound on a moving speaker + // + //////////////////////////////////////////////////// + void spooky_sound_1 () + { + $ms1_speaker.bind ($ms1_mover); + $ms1_mover.time (7.2); + + sys.trigger ($ms1_speaker); + $ms1_mover.moveTo ($ms1_movepoint); + + sys.waitFor ($ms1_mover); + $ms1_speaker.Off(); + } + + + //////////////////////////////////////////////////// + // + // Random Spooky sounds #2 + // + //////////////////////////////////////////////////// + void spooky_sound_2 () + { + sys.trigger ($ran_speaker_1_1); + sys.wait (1); + sys.trigger ($ran_speaker_1_2); + } + + + //////////////////////////////////////////////////// + // + // Random Spooky sounds #3 + // + //////////////////////////////////////////////////// + void spooky_sound_3 () + { + float numran; + numran = sys.random(3); + + if (numran>=2){ + sys.trigger ($ran_speaker_2_1); + sys.wait (.5); + sys.trigger ($ran_speaker_2_2); + } else if (numran>=1){ + sys.trigger ($ran_speaker_2_2); + sys.wait (.5); + sys.trigger ($ran_speaker_2_3); + } else { + sys.trigger ($ran_speaker_2_3); + sys.wait (.5); + sys.trigger ($ran_speaker_2_2); + sys.trigger ($ran_speaker_2_1); + } + } + + + //////////////////////////////////////////////////// + // + // Random Spooky sounds #4 + // + //////////////////////////////////////////////////// + void spooky_sound_4 () + { + float numran; + numran = sys.random(3); + + if (numran>=2){ + sys.trigger ($ran_speaker_3_1); + sys.wait (.5); + sys.trigger ($ran_speaker_3_4); + } else if (numran>=1){ + sys.trigger ($ran_speaker_3_2); + sys.wait (.5); + sys.trigger ($ran_speaker_3_3); + } else { + sys.trigger ($ran_speaker_3_3); + sys.wait (.5); + sys.trigger ($ran_speaker_3_2); + sys.trigger ($ran_speaker_3_1); + } + } + + + + //////////////////////////////////////////////////// + // + // Seneca's hologram initial activation (unhiding) + // + //////////////////////////////////////////////////// + + void hologram_start () + { + //temp + $hologram1.setColor (.6, .7, .9); //inital light blue + $hologram1.setShaderParm(3,-0.6); //the side textures scroll from bottom to top. + $hologram1.setShaderParm(4,100); //the bottom textures scale from the center of the faces out to the edges. + $hologram1.setShaderParm(7,0); //rgb of tops of rooms + //temp + //temp + $hologram2.setColor (.6, .7, .9); //inital light blue + $hologram2.setShaderParm(3,-0.6); //the side textures scroll from bottom to top. + $hologram2.setShaderParm(4,100); //the bottom textures scale from the center of the faces out to the edges. + $hologram2.setShaderParm(7,0); //rgb of tops of rooms + //temp + //temp + $hologram3.setColor (.6, .7, .9); //inital light blue + $hologram3.setShaderParm(3,-0.6); //the side textures scroll from bottom to top. + $hologram3.setShaderParm(4,100); //the bottom textures scale from the center of the faces out to the edges. + $hologram3.setShaderParm(7,0); //rgb of tops of rooms + //temp + //temp + $hologram4.setColor (.6, .7, .9); //inital light blue + $hologram4.setShaderParm(3,-0.6); //the side textures scroll from bottom to top. + $hologram4.setShaderParm(4,100); //the bottom textures scale from the center of the faces out to the edges. + $hologram4.setShaderParm(7,0); //rgb of tops of rooms + //temp + //temp + $hologram5.setColor (.6, .7, .9); //inital light blue + $hologram5.setShaderParm(3,-0.6); //the side textures scroll from bottom to top. + $hologram5.setShaderParm(4,100); //the bottom textures scale from the center of the faces out to the edges. + $hologram5.setShaderParm(7,0); //rgb of tops of rooms + //temp + //temp + $hologram.setColor (.3, .45, .45); //inital medium blue + $hologram.setShaderParm(3,-0.6); //the side textures scroll from bottom to top. + $hologram.setShaderParm(4,100); //the bottom textures scale from the center of the faces out to the edges. + $hologram.setShaderParm(5,0); //the delta 1 ring's RGB defaults to 0 + $hologram.setShaderParm(6,100); //the plane beneath the hologram starts infinitely small + $hologram.setShaderParm(7,0); //rgb of tops of rooms + //temp + $hologram.show(); + thread interpolateShaderParm( $hologram, 6, 100, 1, 1 ); //scale in bottom grid + sys.wait (1); + thread interpolateShaderParm( $hologram, 4, 100, 5, .2 ); //bring in bottoms of rooms + sys.wait (0.2); + thread interpolateShaderParm( $hologram, 4, 5, 0.85, 1 ); //scale up bottoms of rooms + thread interpolateShaderParm( $hologram, 5, 0, 1, 5 ); //RGB in delta cylinder + sys.wait (1); + thread interpolateShaderParm( $hologram, 3, -0.6, 0, 1 ); //bring up sides of rooms and cap off. + sys.wait (1); + thread interpolateShaderParm( $hologram, 7, 0, 1, 0.05 ); //RGB of room tops + } + + void hologram1_start () + { + //temp + $hologram1.setColor (.6, .7, .9); //inital light blue + $hologram1.setShaderParm(3,-0.6); //the side textures scroll from bottom to top. + $hologram1.setShaderParm(4,100); //the bottom textures scale from the center of the faces out to the edges. + $hologram1.setShaderParm(7,0); //rgb of tops of rooms + //temp + $hologram1.show(); + thread interpolateShaderParm( $hologram1, 6, 100, 1, 1 ); //scale in bottom grid + sys.wait (1); + thread interpolateShaderParm( $hologram1, 4, 100, 5, .2 ); //bring in bottoms of rooms + sys.wait (0.2); + thread interpolateShaderParm( $hologram1, 4, 5, 0.85, 1 ); //scale up bottoms of rooms + sys.wait (1); + thread interpolateShaderParm( $hologram1, 3, -0.6, 0, 1 ); //bring up sides of rooms and cap off. + sys.wait (1); + thread interpolateShaderParm( $hologram1, 7, 0, 1, 0.05 ); //RGB of room tops + } + + void hologram2_start () + { + //temp + $hologram2.setColor (.6, .7, .9); //inital light blue + $hologram2.setShaderParm(3,-0.6); //the side textures scroll from bottom to top. + $hologram2.setShaderParm(4,100); //the bottom textures scale from the center of the faces out to the edges. + $hologram2.setShaderParm(7,0); //rgb of tops of rooms + //temp + $hologram2.show(); + thread interpolateShaderParm( $hologram2, 6, 100, 1, 1 ); //scale in bottom grid + sys.wait (1); + thread interpolateShaderParm( $hologram2, 4, 100, 5, .2 ); //bring in bottoms of rooms + sys.wait (0.2); + thread interpolateShaderParm( $hologram2, 4, 5, 0.85, 1 ); //scale up bottoms of rooms + sys.wait (1); + thread interpolateShaderParm( $hologram2, 3, -0.6, 0, 1 ); //bring up sides of rooms and cap off. + sys.wait (1); + thread interpolateShaderParm( $hologram2, 7, 0, 1, 0.05 ); //RGB of room tops + } + + void hologram3_start () + { + //temp + $hologram3.setColor (.6, .7, .9); //inital light blue + $hologram3.setShaderParm(3,-0.6); //the side textures scroll from bottom to top. + $hologram3.setShaderParm(4,100); //the bottom textures scale from the center of the faces out to the edges. + $hologram3.setShaderParm(7,0); //rgb of tops of rooms + //temp + $hologram3.show(); + thread interpolateShaderParm( $hologram3, 6, 100, 1, 1 ); //scale in bottom grid + sys.wait (1); + thread interpolateShaderParm( $hologram3, 4, 100, 5, .2 ); //bring in bottoms of rooms + sys.wait (0.2); + thread interpolateShaderParm( $hologram3, 4, 5, 0.85, 1 ); //scale up bottoms of rooms + sys.wait (1); + thread interpolateShaderParm( $hologram3, 3, -0.6, 0, 1 ); //bring up sides of rooms and cap off. + sys.wait (1); + thread interpolateShaderParm( $hologram3, 7, 0, 1, 0.05 ); //RGB of room tops + } + + void hologram4_start () + { + //temp + $hologram4.setColor (.6, .7, .9); //inital light blue + $hologram4.setShaderParm(3,-0.6); //the side textures scroll from bottom to top. + $hologram4.setShaderParm(4,100); //the bottom textures scale from the center of the faces out to the edges. + $hologram4.setShaderParm(7,0); //rgb of tops of rooms + //temp + $hologram4.show(); + thread interpolateShaderParm( $hologram4, 6, 100, 1, 1 ); //scale in bottom grid + sys.wait (1); + thread interpolateShaderParm( $hologram4, 4, 100, 5, .2 ); //bring in bottoms of rooms + sys.wait (0.2); + thread interpolateShaderParm( $hologram4, 4, 5, 0.85, 1 ); //scale up bottoms of rooms + sys.wait (1); + thread interpolateShaderParm( $hologram4, 3, -0.6, 0, 1 ); //bring up sides of rooms and cap off. + sys.wait (1); + thread interpolateShaderParm( $hologram4, 7, 0, 1, 0.05 ); //RGB of room tops + } + + void hologram5_start () + { + //temp + $hologram5.setColor (.6, .7, .9); //inital light blue + $hologram5.setShaderParm(3,-0.6); //the side textures scroll from bottom to top. + $hologram5.setShaderParm(4,100); //the bottom textures scale from the center of the faces out to the edges. + $hologram5.setShaderParm(7,0); //rgb of tops of rooms + //temp + $hologram5.show(); + thread interpolateShaderParm( $hologram5, 6, 100, 1, 1 ); //scale in bottom grid + sys.wait (1); + thread interpolateShaderParm( $hologram5, 4, 100, 5, .2 ); //bring in bottoms of rooms + sys.wait (0.2); + thread interpolateShaderParm( $hologram5, 4, 5, 0.85, 1 ); //scale up bottoms of rooms + sys.wait (1); + thread interpolateShaderParm( $hologram5, 3, -0.6, 0, 1 ); //bring up sides of rooms and cap off. + sys.wait (1); + thread interpolateShaderParm( $hologram5, 7, 0, 1, 0.05 ); //RGB of room tops + } + + void hologram1_1 () //this is the animation that gets played when player clicks on Control Center + { + if ($hologram1_1.getFloatKey ("state")==1){ + + $hologram1_1.startSoundShader ("hologram_spawnout", SND_CHANNEL_VOICE ); + + thread interpolateShaderParm( $hologram1_1, 7, 1, 0, .2 ); //fade out round spinny plane + thread crossFadeEnt( $hologram1, $hologram1.getColor(), '.15 .175 .22', 1); //make the unselected room go back to default colors + + $hologram1_1_anchor.time(.15); + $hologram1_1_anchor.rotateOnce ( '0 0 -30'); + $hologram1_1_anchor.move(WEST,30); + sys.waitFor( $hologram1_1_anchor ); + $hologram1_1_anchor.move(NORTH,16); + sys.waitFor( $hologram1_1_anchor ); + $hologram1_1_anchor.move(DOWN,40); + sys.waitFor( $hologram1_1_anchor ); + $hologram1_1.hide(); + $hologram1_1.setKey ("state", "0"); + } else { + $hologram1_1.show(); + $hologram1_1.setKey ("state", "1"); //sets it so that next time you run the script, it puts the objects back where it was. + $hologram1_1.setShaderParm(7,0); + $hologram1_1.setColor (1, .1, 0); //make little line red + thread crossFadeEnt( $hologram, $hologram.getColor(), '.1 .2 .2', .5); //make the base hologram darken a little. + thread interpolateShaderParm( $hologram, 5, 1, .35, .5 ); //make the base hologram's matrix effect go darker. + thread crossFadeEnt( $hologram1, $hologram1.getColor(), '1 .1 0', .5); //make selected room go red. + thread crossFadeEnt( $hologram2, $hologram2.getColor(), '.15 .175 .22', .5); //make unselected room darken. + thread crossFadeEnt( $hologram3, $hologram3.getColor(), '.15 .175 .22', .5); //make unselected room darken. + thread crossFadeEnt( $hologram4, $hologram4.getColor(), '.15 .175 .22', .5); //make unselected room darken. + thread crossFadeEnt( $hologram5, $hologram5.getColor(), '.15 .175 .22', .5); //make unselected room darken. + + $hologram1_1.startSoundShader ("hologram_spawn", SND_CHANNEL_VOICE ); + + thread interpolateShaderParm( $hologram1_1, 3, 0, 100, .1 ); //RGB in red boxes + thread interpolateShaderParm( $hologram1_1, 4, 10, 1, 1 ); //scale up the sides of red boxes + thread interpolateShaderParm( $hologram1_1, 5, 10, 1, 1 ); //scale up round plane + sys.wait (.7); + thread interpolateShaderParm( $hologram1_1, 6, 1, 0, 2 ); //RGB out round spinny plane + thread interpolateShaderParm( $hologram1_1, 3, 1, 0, 1 ); //RGB out red boxes + sys.wait(1); + + $hologram1_1_anchor.time(1); + $hologram1_1_anchor.accelTime(.4); + $hologram1_1_anchor.decelTime(.4); + + $hologram1_1_anchor.move(UP,40); + $hologram1_1.startSoundShader ("hologram_movement", SND_CHANNEL_VOICE ); + + sys.waitFor( $hologram1_1_anchor ); + + $hologram1_1_anchor.move(SOUTH,16); + $hologram1_1.startSoundShader ("hologram_movement", SND_CHANNEL_VOICE ); + + sys.waitFor( $hologram1_1_anchor ); + + $hologram1_1.startSoundShader ("hologram_movement", SND_CHANNEL_VOICE2 ); + + $hologram1_1_anchor.move(EAST,30); + thread crossFadeEnt( $hologram1, $hologram1.getColor(), '.5 .05 0', .5); + thread interpolateShaderParm( $hologram1_1, 7, 0, 1, 1 ); //RGB in the red sprite round plate + + $hologram1_1.startSoundShader ("hologram_loop", SND_CHANNEL_VOICE ); + + $hologram1_1_anchor.rotateOnce ( '0 0 30'); + } + } + + void hologram2_1 () //this is the animation that gets played when player clicks on lobby/elevators + { + if ($hologram2_1.getFloatKey ("state")==1){ + + $hologram2_1.startSoundShader ("hologram_spawnout", SND_CHANNEL_VOICE ); + + thread interpolateShaderParm( $hologram2_1, 7, 1, 0, .2 ); //fade out round spinny plane + thread crossFadeEnt( $hologram2, $hologram2.getColor(), '.15 .175 .22', 1); //make the unselected room go back to default colors + + $hologram2_1_anchor.time(.15); + $hologram2_1_anchor.rotateOnce ( '0 0 -30'); + $hologram2_1_anchor.move(NORTH,64); + sys.wait(.15); + $hologram2_1_anchor.move(WEST,40); + sys.wait(.15); + $hologram2_1_anchor.move(DOWN,44); + sys.wait(.15); + $hologram2_1.hide(); + $hologram2_1.setKey ("state", "0"); + } else { + $hologram2_1.show(); + $hologram2_1.setKey ("state", "1"); + $hologram2_1.setShaderParm(7,0); + $hologram2_1.setColor (1, .1, 0); //make little line red + thread crossFadeEnt( $hologram, $hologram.getColor(), '.1 .2 .2', .5); //make the base hologram darken a little. + thread interpolateShaderParm( $hologram, 5, 1, .35, .5 ); //make the base hologram's matrix effect go darker. + thread crossFadeEnt( $hologram1, $hologram1.getColor(), '.15 .175 .22', .5); //make unselected room darken. + thread crossFadeEnt( $hologram2, $hologram2.getColor(), '1 .1 0', .5); //make selected room go red. + thread crossFadeEnt( $hologram3, $hologram3.getColor(), '.15 .175 .22', .5); //make unselected room darken. + thread crossFadeEnt( $hologram4, $hologram4.getColor(), '.15 .175 .22', .5); //make unselected room darken. + thread crossFadeEnt( $hologram5, $hologram5.getColor(), '.15 .175 .22', .5); //make unselected room darken. + + $hologram2_1.startSoundShader ("hologram_spawn", SND_CHANNEL_VOICE ); + + thread interpolateShaderParm( $hologram2_1, 3, 0, 100, .1 ); //RGB in red boxes + thread interpolateShaderParm( $hologram2_1, 4, 10, 1, 1 ); //scale up the sides of red boxes + thread interpolateShaderParm( $hologram2_1, 5, 10, 1, 1 ); //scale up round plane + sys.wait (.7); + thread interpolateShaderParm( $hologram2_1, 6, 1, 0, 2 ); //RGB out round spinny plane + thread interpolateShaderParm( $hologram2_1, 3, 1, 0, 1 ); //RGB out red boxes + sys.wait(1); + + $hologram2_1_anchor.time(1); + $hologram2_1_anchor.accelTime(.4); + $hologram2_1_anchor.decelTime(.4); + $hologram2_1_anchor.move(UP,44); + $hologram2_1.startSoundShader ("hologram_movement", SND_CHANNEL_VOICE ); + + sys.wait(1); + $hologram2_1_anchor.move(EAST,40); + $hologram2_1.startSoundShader ("hologram_movement", SND_CHANNEL_VOICE ); + sys.wait(1); + $hologram2_1_anchor.move(SOUTH,64); + $hologram2_1.startSoundShader ("hologram_movement", SND_CHANNEL_VOICE2 ); + thread crossFadeEnt( $hologram2, $hologram2.getColor(), '.5 .05 0', .5); + thread interpolateShaderParm( $hologram2_1, 7, 0, 1, 1 ); //RGB in the red sprite round plate + + $hologram2_1.startSoundShader ("hologram_loop", SND_CHANNEL_VOICE ); + $hologram2_1_anchor.rotateOnce ( '0 0 30'); + } + } + + + void hologram3_1 () //this is the animation that gets played when player clicks on Control Center + { + if ($hologram3_1.getFloatKey ("state")==1){ + + $hologram3_1.startSoundShader ("hologram_spawnout", SND_CHANNEL_VOICE ); + + thread interpolateShaderParm( $hologram3_1, 7, 1, 0, .2 ); //fade out round spinny plane + thread crossFadeEnt( $hologram3, $hologram3.getColor(), '.15 .175 .22', 1); //make the unselected room go back to default colors + + $hologram3_1_anchor.time(.15); + $hologram3_1_anchor.rotateOnce ( '0 0 -30'); + $hologram3_1_anchor.move(NORTH,108); + sys.wait(.15); + $hologram3_1_anchor.move(WEST,36); + sys.wait(.15); + $hologram3_1_anchor.move(DOWN,36); + sys.wait(.15); + $hologram3_1.hide(); + $hologram3_1.setKey ("state", "0"); + } else { + $hologram3_1.show(); + $hologram3_1.setKey ("state", "1"); + $hologram3_1.setShaderParm(7,0); + $hologram3_1.setColor (1, .1, 0); //make little line red + thread crossFadeEnt( $hologram, $hologram.getColor(), '.1 .2 .2', .5); //make the base hologram darken a little. + thread interpolateShaderParm( $hologram, 5, 1, .35, .5 ); //make the base hologram's matrix effect go darker. + thread crossFadeEnt( $hologram1, $hologram1.getColor(), '.15 .175 .22', .5); //make unselected room darken. + thread crossFadeEnt( $hologram2, $hologram2.getColor(), '.15 .175 .22', .5); //make unselected room darken. + thread crossFadeEnt( $hologram3, $hologram3.getColor(), '1 .1 0', .5); //make selected room go red. + thread crossFadeEnt( $hologram4, $hologram4.getColor(), '.15 .175 .22', .5); //make unselected room darken. + thread crossFadeEnt( $hologram5, $hologram5.getColor(), '.15 .175 .22', .5); //make unselected room darken. + + $hologram3_1.startSoundShader ("hologram_spawn", SND_CHANNEL_VOICE ); + + thread interpolateShaderParm( $hologram3_1, 3, 0, 100, .1 ); //RGB in red boxes + thread interpolateShaderParm( $hologram3_1, 4, 10, 1, 1 ); //scale up the sides of red boxes + thread interpolateShaderParm( $hologram3_1, 5, 10, 1, 1 ); //scale up round plane + sys.wait (.7); + thread interpolateShaderParm( $hologram3_1, 6, 1, 0, 2 ); //RGB out round spinny plane + thread interpolateShaderParm( $hologram3_1, 3, 1, 0, 1 ); //RGB out red boxes + sys.wait(1); + + $hologram3_1_anchor.time(1); + $hologram3_1_anchor.accelTime(.4); + $hologram3_1_anchor.decelTime(.4); + $hologram3_1_anchor.move(UP,36); + $hologram3_1.startSoundShader ("hologram_movement", SND_CHANNEL_VOICE ); + sys.wait(1); + $hologram3_1_anchor.move(EAST,36); + $hologram3_1.startSoundShader ("hologram_movement", SND_CHANNEL_VOICE ); + sys.wait(1); + $hologram3_1_anchor.move(SOUTH,108); + $hologram3_1.startSoundShader ("hologram_movement", SND_CHANNEL_VOICE2 ); + thread crossFadeEnt( $hologram3, $hologram3.getColor(), '.5 .05 0', .5); + thread interpolateShaderParm( $hologram3_1, 7, 0, 1, 1 ); //RGB in the red sprite round plate + $hologram3_1.startSoundShader ("hologram_loop", SND_CHANNEL_VOICE ); + $hologram3_1_anchor.rotateOnce ( '0 0 30'); + } + } + + void hologram4_1 () //this is the animation that gets played when player clicks on Control Center + { + if ($hologram4_1.getFloatKey ("state")==1){ + + $hologram4_1.startSoundShader ("hologram_spawnout", SND_CHANNEL_VOICE ); + + thread interpolateShaderParm( $hologram4_1, 7, 1, 0, .2 ); //fade out round spinny plane + thread crossFadeEnt( $hologram4, $hologram4.getColor(), '.15 .175 .22', 1); //make the unselected room go back to default colors + + $hologram4_1_anchor.time(.15); + $hologram4_1_anchor.rotateOnce ( '0 0 -30'); + $hologram4_1_anchor.move(NORTH,200); + sys.wait(.15); + $hologram4_1_anchor.move(WEST,40); + sys.wait(.15); + $hologram4_1_anchor.move(DOWN,40); + sys.wait(.15); + $hologram4_1.hide(); + $hologram4_1.setKey ("state", "0"); + } else { + $hologram4_1.show(); + $hologram4_1.setKey ("state", "1"); + $hologram4_1.setShaderParm(7,0); + $hologram4_1.setColor (1, .1, 0); //make little line red + thread crossFadeEnt( $hologram, $hologram.getColor(), '.1 .2 .2', .5); //make the base hologram darken a little. + thread interpolateShaderParm( $hologram, 5, 1, .35, .5 ); //make the base hologram's matrix effect go darker. + thread crossFadeEnt( $hologram1, $hologram1.getColor(), '.15 .175 .22', .5); //make unselected room darken. + thread crossFadeEnt( $hologram2, $hologram2.getColor(), '.15 .175 .22', .5); //make unselected room darken. + thread crossFadeEnt( $hologram3, $hologram3.getColor(), '.15 .175 .22', .5); //make unselected room darken. + thread crossFadeEnt( $hologram4, $hologram4.getColor(), '1 .1 0', .5); //make selected room go red. + thread crossFadeEnt( $hologram5, $hologram5.getColor(), '.15 .175 .22', .5); //make unselected room darken. + + $hologram4_1.startSoundShader ("hologram_spawn", SND_CHANNEL_VOICE ); + + thread interpolateShaderParm( $hologram4_1, 3, 0, 100, .1 ); //RGB in red boxes + thread interpolateShaderParm( $hologram4_1, 4, 10, 1, 1 ); //scale up the sides of red boxes + thread interpolateShaderParm( $hologram4_1, 5, 10, 1, 1 ); //scale up round plane + sys.wait (.7); + thread interpolateShaderParm( $hologram4_1, 6, 1, 0, 2 ); //RGB out round spinny plane + thread interpolateShaderParm( $hologram4_1, 3, 1, 0, 1 ); //RGB out red boxes + + + sys.wait(1); + + $hologram4_1_anchor.time(1); + $hologram4_1_anchor.accelTime(.4); + $hologram4_1_anchor.decelTime(.4); + $hologram4_1.startSoundShader ("hologram_movement", SND_CHANNEL_VOICE ); + $hologram4_1_anchor.move(UP,40); + sys.wait(1); + $hologram4_1_anchor.move(EAST,40); + $hologram4_1.startSoundShader ("hologram_movement", SND_CHANNEL_VOICE ); + sys.wait(1); + $hologram4_1.startSoundShader ("hologram_movement", SND_CHANNEL_VOICE2 ); + $hologram4_1_anchor.move(SOUTH,200); + thread crossFadeEnt( $hologram4, $hologram4.getColor(), '.5 .05 0', .5); + thread interpolateShaderParm( $hologram4_1, 7, 0, 1, 1 ); //RGB in the red sprite round plate + $hologram4_1.startSoundShader ("hologram_loop", SND_CHANNEL_VOICE ); + $hologram4_1_anchor.rotateOnce ( '0 0 30'); + } + } + + void hologram5_1 () //this is the animation that gets played when player clicks on Control Center + { + if ($hologram5_1.getFloatKey ("state")==1){ + $hologram5_1.startSoundShader ("hologram_spawnout", SND_CHANNEL_VOICE ); + thread interpolateShaderParm( $hologram5_1, 7, 1, 0, .2 ); //fade out round spinny plane + thread crossFadeEnt( $hologram5, $hologram5.getColor(), '.15 .175 .22', 1); //make the unselected room go back to default colors + + $hologram5_1_anchor.time(.15); + $hologram5_1_anchor.rotateOnce ( '0 0 -30'); + $hologram5_1_anchor.move(NORTH,96); + sys.wait(.15); + $hologram5_1_anchor.move(EAST,88); + sys.wait(.15); + $hologram5_1_anchor.move(DOWN,36); + sys.wait(.15); + $hologram5_1.hide(); + $hologram5_1.setKey ("state", "0"); + } else { + $hologram5_1.show(); + $hologram5_1.setKey ("state", "1"); + $hologram5_1.setShaderParm(7,0); + $hologram5_1.setColor (1, .1, 0); //make little line red + thread crossFadeEnt( $hologram, $hologram.getColor(), '.1 .2 .2', .5); //make the base hologram darken a little. + thread interpolateShaderParm( $hologram, 5, 1, .35, .5 ); //make the base hologram's matrix effect go darker. + thread crossFadeEnt( $hologram1, $hologram1.getColor(), '.15 .175 .22', .5); //make unselected room darken. + thread crossFadeEnt( $hologram2, $hologram2.getColor(), '.15 .175 .22', .5); //make unselected room darken. + thread crossFadeEnt( $hologram3, $hologram3.getColor(), '.15 .175 .22', .5); //make unselected room darken. + thread crossFadeEnt( $hologram4, $hologram4.getColor(), '.15 .175 .22', .5); //make unselected room darken. + thread crossFadeEnt( $hologram5, $hologram5.getColor(), '1 .1 0', .5); //make selected room go red. + + $hologram5_1.startSoundShader ("hologram_spawn", SND_CHANNEL_VOICE ); + + thread interpolateShaderParm( $hologram5_1, 3, 0, 100, .1 ); //RGB in red boxes + thread interpolateShaderParm( $hologram5_1, 4, 10, 1, 1 ); //scale up the sides of red boxes + thread interpolateShaderParm( $hologram5_1, 5, 10, 1, 1 ); //scale up round plane + sys.wait (.7); + thread interpolateShaderParm( $hologram5_1, 6, 1, 0, 2 ); //RGB out round spinny plane + thread interpolateShaderParm( $hologram5_1, 3, 1, 0, 1 ); //RGB out red boxes + sys.wait(1); + + $hologram5_1_anchor.time(1); + $hologram5_1_anchor.accelTime(.4); + $hologram5_1_anchor.decelTime(.4); + $hologram4_1.startSoundShader ("hologram_movement", SND_CHANNEL_VOICE ); + $hologram5_1_anchor.move(UP,36); + sys.wait(1); + $hologram5_1_anchor.move(WEST,88); + $hologram4_1.startSoundShader ("hologram_movement", SND_CHANNEL_VOICE ); + sys.wait(1); + $hologram5_1_anchor.move(SOUTH,96); + $hologram4_1.startSoundShader ("hologram_movement", SND_CHANNEL_VOICE2 ); + thread crossFadeEnt( $hologram5, $hologram5.getColor(), '.5 .05 0', .5); + thread interpolateShaderParm( $hologram5_1, 7, 0, 1, 1 ); //RGB in the red sprite round plate + $hologram5_1.startSoundShader ("hologram_loop", SND_CHANNEL_VOICE ); + $hologram5_1_anchor.rotateOnce ( '0 0 30'); + } + } + + void hologram_turnon ()//this is what's called when the hologram projector's turned on, and brings all the rooms in. + { + thread hologram_start (); + sys.wait(1.5); + thread hologram1_start (); + sys.wait(.5); + thread hologram2_start (); + sys.wait(.5); + thread hologram3_start (); + thread hologram4_start (); + thread hologram5_start (); + } + + void hologram_selection_1() + { + if ($hologram1_1.getFloatKey ("state")==1){ + thread hologram1_1(); + } + if ($hologram2_1.getFloatKey ("state")==1){ + thread hologram2_1(); + } + if ($hologram3_1.getFloatKey ("state")==1){ + thread hologram3_1(); + } + if ($hologram4_1.getFloatKey ("state")==1){ + thread hologram4_1(); + } + if ($hologram5_1.getFloatKey ("state")==1){ + thread hologram5_1(); + } + { + thread hologram1_1(); + } + } + + void hologram_selection_2() + { + if ($hologram1_1.getFloatKey ("state")==1){ + thread hologram1_1(); + } + if ($hologram2_1.getFloatKey ("state")==1){ + thread hologram2_1(); + } + if ($hologram3_1.getFloatKey ("state")==1){ + thread hologram3_1(); + } + if ($hologram4_1.getFloatKey ("state")==1){ + thread hologram4_1(); + } + if ($hologram5_1.getFloatKey ("state")==1){ + thread hologram5_1(); + } + { + thread hologram2_1(); + } + } + + void hologram_selection_3() + { + if ($hologram1_1.getFloatKey ("state")==1){ + thread hologram1_1(); + } + if ($hologram2_1.getFloatKey ("state")==1){ + thread hologram2_1(); + } + if ($hologram3_1.getFloatKey ("state")==1){ + thread hologram3_1(); + } + if ($hologram4_1.getFloatKey ("state")==1){ + thread hologram4_1(); + } + if ($hologram5_1.getFloatKey ("state")==1){ + thread hologram5_1(); + } + { + thread hologram3_1(); + } + } + + void hologram_selection_4() + { + if ($hologram1_1.getFloatKey ("state")==1){ + thread hologram1_1(); + } + if ($hologram2_1.getFloatKey ("state")==1){ + thread hologram2_1(); + } + if ($hologram3_1.getFloatKey ("state")==1){ + thread hologram3_1(); + } + if ($hologram4_1.getFloatKey ("state")==1){ + thread hologram4_1(); + } + if ($hologram5_1.getFloatKey ("state")==1){ + thread hologram5_1(); + } + { + thread hologram4_1(); + } + } + + void hologram_selection_5() + { + if ($hologram1_1.getFloatKey ("state")==1){ + thread hologram1_1(); + } + if ($hologram2_1.getFloatKey ("state")==1){ + thread hologram2_1(); + } + if ($hologram3_1.getFloatKey ("state")==1){ + thread hologram3_1(); + } + if ($hologram4_1.getFloatKey ("state")==1){ + thread hologram4_1(); + } + if ($hologram5_1.getFloatKey ("state")==1){ + thread hologram5_1(); + } + { + thread hologram5_1(); + } + } + + + //////////////////////////////////////////////////// + // + // break the platform leading to the reactor + // + //////////////////////////////////////////////////// + void rplatform_break() + { + //first move down + $rplatform.time ( 2.5 ); + $rplatform.accelTime ( .5 ); + $rplatform.decelTime ( 0 ); + sys.trigger ($lspeaker_1); + $rplatform.move ( DOWN, 126 ); + + sys.waitFor ($rplatform); + + //bounce a bit or something + sys.trigger ($broke_spark); + $al3_platform_break.time ( .2 ); + $al3_platform_break.accelTime ( .2 ); + $al3_platform_break.decelTime ( 0 ); + $al3_platform_break.move ( UP, 6 ); + + sys.waitFor ($rplatform); + + $rplatform.time ( .2 ); + $rplatform.accelTime ( 0 ); + $rplatform.decelTime ( .2 ); + $rplatform.move ( DOWN, 8 ); + + //rotate a about 24 degrees + $rplatform.time ( .5 ); + $rplatform.accelTime ( .5 ); + $rplatform.decelTime ( 0 ); + $rplatform.rotateOnce ( '5 5 24' ); + sys.trigger ($broke_spark); + + sys.waitFor ($rplatform); + + $rplatform.time ( .1 ); + $rplatform.accelTime ( .1 ); + $rplatform.decelTime ( 0 ); + $rplatform.rotateOnce ( '1 0 0' ); + sys.trigger ($broke_spark); + + sys.waitFor ($rplatform); + + $rplatform.rotateOnce ( '-1 0 0' ); + } + + + //////////////////////////////////////////////////// + // + // Corpse Move - quick move of deadbody + // + //////////////////////////////////////////////////// + void corpse_move() + { + spooky_sound_3(); + + $corpse_mover2.time (.4); + $corpse_mover2.accelTime (0); + $corpse_mover2.decelTime (0); + + $corpse_mover2.moveTo ( $corpse_mover2_movepoint ); + $corpse_mover2.rotateOnce ( '0 45 0' ); + sys.waitFor ($corpse_mover2); + $corpse2.unbind(); + + sys.trigger ( $breakglass ); + sys.trigger ( $func_fracture_2 ); + + sys.wait (.5); + sys.trigger ( $speaker_glassbreak ); + + sys.wait (2); + sys.trigger ( $speaker_tilefall2 ); + sys.trigger ($spooky_tilefall2); + + } + + + //////////////////////////////////////////////////// + // + // spectrum hallway + // + //////////////////////////////////////////////////// + void spectrum_move() { + sys.trigger ( $spectrum_speaker1 ); + $spectrumlight_mover.time( 3 ); + $spectrumlight_mover.accelTime( 0 ); + $spectrumlight_mover.decelTime( 0 ); + $spectrumlight_mover.startSpline( $spectrum_spline ); + + sys.waitFor($spectrumlight_mover); + //sys.wait(3); + //$spectrumlight_mover.removeInitialSplineAngles(); + + $spectrumlight_mover.remove(); + sys.trigger ( $spectrum_speaker1 ); + $spectrum_speaker1.remove(); + $speclight1.remove(); + $speclight2.remove(); + } + + + //////////////////////////////////////////////////// + // + // bang tile moves + // + // moves the two tiles when the big bang happens + // in the crawlspace before datalinker + // + //////////////////////////////////////////////////// + void bang_tiles() + { + //set moves times for the two tiles + $bang_tile1.time (.5); + $bang_tile1.accelTime (.5); + $bang_tile1.decelTime (0); + + $bang_tile2.time (.5); + $bang_tile2.accelTime (.5); + $bang_tile2.decelTime (0); + + $bang_tile1.rotateOnce ( '1 0 -2' ); + $bang_tile2.rotateOnce ( '2 0 3' ); + } + + + //////////////////////////////////////////////////// + // + // Corpse pullunder + // + //////////////////////////////////////////////////// + void corpse_pullunder() + { + $corpse_mover3.time (1.25); + $corpse_mover3.accelTime (.5); + $corpse_mover3.decelTime (0); + + $corpse_mover3.moveTo ( $corpse_mover3_movepoint ); + sys.waitFor ($corpse_mover3); + + $corpse3.unbind(); + $corpse_mover3.remove (); + $corpse3.remove (); + } + + + void fade_clop_sound () + { + $clop_speaker.fadeSound ( SND_CHANNEL_ANY, -60, 30 ); + } + + + void cache_sounds() { + sys.cacheSoundShader ("hologram_datalinker"); + sys.cacheSoundShader ("hologram_spawnout"); + sys.cacheSoundShader ("hologram_spawn"); + sys.cacheSoundShader ("hologram_movement"); + sys.cacheSoundShader ("hologram_loop"); + } + + //////////////////////////////////////////////////// + // + // Main + // + //////////////////////////////////////////////////// + void main() + { + thread cache_sounds(); + init_world(); + power_level_0(); + } +} diff --git a/base/script/map_delta2a.script b/base/script/map_delta2a.script new file mode 100644 index 00000000..6b3cedea --- /dev/null +++ b/base/script/map_delta2a.script @@ -0,0 +1,1133 @@ +namespace map_delta2a { + #define NEG_ROT '0 -120 0' + #define POS_ROT '0 120 0' + #define HEAD_TIME 3 + #define LIFT_TIME 3 + #define JET_VENT_TIME 1.5 // How long do we want the lock vents to fire ? + + float rotmult; // Matt's lift + float lift_state_updown; + float crate_number; // Stored from identify_crate(slot); + float deconPosition = 0; + //*** + // Given the cranes position in front of a cage slot, find out which crate is in that space + // Returns the cage number. bind "cage_" + value to the hand + //*** + + void set_crate_in_slot( float slot, float crate ) { + $world.setKey( "slot_" + slot, crate ); + } + + float identify_crate (float slot) { + float value; + + value = $world.getFloatKey( "slot_" + slot ); + //sys.print ("IDENTIFY_CRATE:: Found crate #" + value + " @ slot # " + slot + "\n"); + + return value; + } + + void setup_objects() + { + sys.trigger ($speaker_131); // Turn this speaker in the tube off + // Was screwing up the fadeout for teleport_end + + $mister1.bind ($mister1_anchor); + $mister2.bind ($mister2_anchor); + + $tp_leftarm.bind ($tp_shoulder); + $tp_rightarm.bind ($tp_shoulder); + + // name of array, index number, data + set_crate_in_slot( 1, 1 ); // Cage 1 is occupied + set_crate_in_slot( 2, 2 ); + set_crate_in_slot( 3, 3 ); + set_crate_in_slot( 4, 4 ); + set_crate_in_slot( 5, 5 ); + set_crate_in_slot( 6, 0 ); // Cage 6 is empty + set_crate_in_slot( 7, 7 ); + set_crate_in_slot( 8, 0 ); // Cage 8 is empty + set_crate_in_slot( 9, 9 ); + + $crane_control.setGuiParm ("gui_parm11", 1 ); + $crane_control.setGuiParm ("gui_parm12", 1 ); + $crane_control.setGuiParm ("gui_parm13", 1 ); + $crane_control.setGuiParm ("gui_parm14", 1 ); + $crane_control.setGuiParm ("gui_parm15", 1 ); + $crane_control.setGuiParm ("gui_parm16", 0 ); + $crane_control.setGuiParm ("gui_parm17", 1 ); + $crane_control.setGuiParm ("gui_parm18", 0 ); + $crane_control.setGuiParm ("gui_parm19", 1 ); + + $cagecrane_base.time (1); + $crane_base.time (1); + $teeth_anchor.time (1); + $cagecrane_rod.time (1); + $cagecrane_teeth_teeth.time (0.5); + + $teeth_anchor.rotateOnce ('0 0 -90'); + $cagecrane_teeth_teeth.move (LEFT, 64); + + $cagecrane_armsupport.time (1); + } + + void open_fingers() { + sys.trigger ($finger_speaker_1); + $finger_1b_anchor.rotateOnce (POS_ROT); + $finger_1a_anchor.rotateOnce (NEG_ROT); + sys.wait (0.75); + //sys.waitFor ($finger_1a_anchor); + + sys.trigger ($finger_speaker_2); + $finger_2a_anchor.rotateOnce (POS_ROT); + $finger_2b_anchor.rotateOnce (NEG_ROT); + sys.waitFor ($finger_2b_anchor); + } + + void close_fingers() { + sys.trigger ($finger_speaker_2); + $finger_2a_anchor.rotateOnce (NEG_ROT); + $finger_2b_anchor.rotateOnce (POS_ROT); + sys.wait (0.75); + //sys.waitFor ($finger_2b_anchor); + + sys.trigger ($finger_speaker_1); + $finger_1b_anchor.rotateOnce (NEG_ROT); + $finger_1a_anchor.rotateOnce (POS_ROT); + sys.waitFor ($finger_1a_anchor); + } + + void unlock_cage (float cage) { + entity ent; + ent = sys.getEntity ("cagelock_" + cage); + ent.time (0.5); + ent.move (RIGHT, 16); + sys.waitFor (ent); + } + + void lock_cage (float cage) { + entity ent; + ent = sys.getEntity ("cagelock_" + cage); + ent.time (0.5); + ent.move (LEFT, 16); + sys.waitFor (ent); + } + + void disable_crane_control() { + $crane_control.setGuiParm ("gui_parm10", 1); + } + + void enable_crane_control() { + $crane_control.setGuiParm ("gui_parm10", 0); + } + + void crane_alarm_on() { + sys.trigger ($clight_1); + sys.trigger ($clight_2); + $crane_alarm_anchor.rotate ('0 270 0'); + } + + void crane_alarm_off() { + sys.trigger ($clight_1); + sys.trigger ($clight_2); + $crane_alarm_anchor.stopRotating(); + } + + + void init_claw() { + + disable_crane_control(); + + $body.time (3); + $shoulder_anchor.time (1); + // Compress fingers + + $finger_1a_anchor.time (1.5); + $finger_1b_anchor.time (1.5); + $finger_2a_anchor.time (1.5); + $finger_2b_anchor.time (1.5); + + + $finger_1b_anchor.rotateOnce ('0 -180 0'); + $finger_2b_anchor.rotateOnce ('0 180 0'); + + $finger_1a_anchor.rotateOnce ('0 180 0'); + $finger_2a_anchor.rotateOnce ('0 -180 0'); + + // rotate hand up + $hand_anchor.time (1); + sys.trigger ($hand_speaker); + $hand_anchor.rotateOnce ('-80 0 0'); + + // rotate arm in + $arm_anchor.time (1); + sys.trigger ($arm_speaker); + $arm_anchor.rotateOnce ('30 0 0'); + + // Face the proper direction + + $body.rotateOnce ('0 -90 0'); + sys.waitFor ($body); + $head.time (HEAD_TIME); + $head.accelTime (0.5); + $head.decelTime (0.5); + + $body.rotateOnce ('0 180 0'); + sys.trigger ($head_speaker); + $head.move (LEFT, 100); + + crate_number = 0; + + enable_crane_control(); + + } + +/* + + M a t t ' s L i f t f r o m C o m m O u t s i d e + +*/ + + //////////////////////////////////////////////////// + // + // move lift down + // + //////////////////////////////////////////////////// + void lift_down () + { + vector rot11, rot12; + vector rot21, rot22; + + rot11_x = 0; + rot11_y = 0; + rot11_z = rotmult; + + rot12_x = 0; + rot12_y = 0; + rot12_z = (-1 * rotmult); + + rot21_x = 0; + rot21_y = 0; + rot21_z = (2 * rotmult); + + rot22_x = 0; + rot22_y = 0; + rot22_z = (-2 * rotmult); + + if ( lift_state_updown == 0 ){ + sys.trigger ($lift_speaker_down); + $lift_leg_11.rotateOnce ( rot11 ); + $lift_leg_12.rotateOnce ( rot22 ); + $lift_leg_13.rotateOnce ( rot21 ); + $lift_connection_top_move.rotateOnce ( rot12 ); + + $lift_leg_21.rotateOnce ( rot22 ); + $lift_connection_bottom_move.rotateOnce ( rot11 ); + $lift_leg_22.rotateOnce ( rot21 ); + $lift_leg_23.rotateOnce ( rot22 ); + $lift_connection_top_static.rotateOnce ( rot11 ); + + sys.waitFor ($lift_leg_23); + lift_state_updown = 1; + } + // else sys.print ( "lift is already up\n" ); + } + + + //////////////////////////////////////////////////// + // + // move lift up + // + //////////////////////////////////////////////////// + void lift_up () + { + vector rot11, rot12; + vector rot21, rot22; + + rot11_x = 0; + rot11_y = 0; + rot11_z = rotmult; + + rot12_x = 0; + rot12_y = 0; + rot12_z = (-1 * rotmult); + + rot21_x = 0; + rot21_y = 0; + rot21_z = (2 * rotmult); + + rot22_x = 0; + rot22_y = 0; + rot22_z = (-2 * rotmult); + + if ( lift_state_updown == 1 ){ + sys.trigger ($lift_speaker_up); + $lift_leg_11.rotateOnce ( rot12 ); + $lift_leg_12.rotateOnce ( rot21 ); + $lift_leg_13.rotateOnce ( rot22 ); + $lift_connection_top_move.rotateOnce ( rot11 ); + + $lift_leg_21.rotateOnce ( rot21 ); + $lift_connection_bottom_move.rotateOnce ( rot12 ); + $lift_leg_22.rotateOnce ( rot22 ); + $lift_leg_23.rotateOnce ( rot21 ); + $lift_connection_top_static.rotateOnce ( rot12 ); + + sys.waitFor ($lift_leg_23); + lift_state_updown = 0; + } + //else sys.print ( "lift is already down\n" ); + } + + void init_lift() { + lift_state_updown = 0; + rotmult = 40; + + //Lift binds, times, and speeds + //$lift_leg_11.bind ($lift_bottom); + //$lift_light1.bind ($lift_bottom); + + $lift_axle1.bind ($lift_leg_11); + $lift_axle2.bind ($lift_leg_11); + $lift_leg_12.bind ($lift_axle2); + $lift_axle4.bind ($lift_leg_12); + $lift_axle6.bind ($lift_leg_12); + $lift_leg_13.bind ($lift_axle6); + $lift_axle7.bind ($lift_leg_13); + + $lift_leg_23.bind ($lift_axle7); + $lift_axle5.bind ($lift_leg_23); + $lift_leg_22.bind ($lift_axle5); + $lift_axle3.bind ($lift_leg_22); + $lift_leg_21.bind ($lift_axle3); + + $lift_connection_top_move.bind ($lift_leg_13); + $lift_connection_top_static.bind ($lift_leg_23); + $lift_connection_bottom_move.bind ($lift_leg_21); + + $lift_cage.bind ($lift_connection_top_static); + + $lift_bottom.accelTime ( .5 ); + $lift_bottom.decelTime ( .5 ); + + $lift_leg_11.time ( LIFT_TIME ); + $lift_leg_12.time ( LIFT_TIME ); + $lift_leg_13.time ( LIFT_TIME ); + $lift_connection_top_move.time ( LIFT_TIME ); + $lift_leg_21.time ( LIFT_TIME ); + $lift_connection_bottom_move.time ( LIFT_TIME ); + $lift_leg_22.time ( LIFT_TIME ); + $lift_leg_23.time ( LIFT_TIME ); + $lift_connection_top_static.time ( LIFT_TIME ); + + $lift_leg_11.accelTime ( .25 ); + $lift_leg_12.accelTime ( .25 ); + $lift_leg_13.accelTime ( .25 ); + $lift_connection_top_move.accelTime ( .25 ); + $lift_leg_21.accelTime ( .25 ); + $lift_connection_bottom_move.accelTime ( .25); + $lift_leg_22.accelTime ( .25 ); + $lift_leg_23.accelTime ( .25 ); + $lift_connection_top_static.accelTime ( .25 ); + + $lift_leg_11.decelTime ( .25 ); + $lift_leg_12.decelTime ( .25 ); + $lift_leg_13.decelTime ( .25 ); + $lift_connection_top_move.decelTime ( .25 ); + $lift_leg_21.decelTime ( .25 ); + $lift_connection_bottom_move.decelTime ( .25 ); + $lift_leg_22.decelTime ( .25 ); + $lift_leg_23.decelTime ( .25 ); + $lift_connection_top_static.decelTime ( .25 ); + } + +/* + + End CommOutside code. + +*/ + + //*** + // Kinda ugly, need to find the proper jet pair for the accompanying slot + // I'd give my left nut for switch(value) functionality... + //*** + + float trigger_steamjets(float slot) { + entity ent1, ent2; + entity speaker1, speaker2; + float jet1, jet2; + + if ( slot == 1) { + jet1 = 1; + jet2 = 2; + } + if ( slot == 2) { + jet1 = 2; + jet2 = 3; + } + if ( slot == 3) { + jet1 = 3; + jet2 = 4; + } + if ( slot == 4) { + jet1 = 5; + jet2 = 6; + } + if ( slot == 5) { + jet1 = 6; + jet2 = 7; + } + if ( slot == 6) { + jet1 = 7; + jet2 = 8; + } + if ( slot == 7) { + jet1 = 9; + jet2 = 10; + } + if ( slot == 8) { + jet1 = 10; + jet2 = 11; + } + if ( slot == 9) { + jet1 = 11; + jet2 = 12; + } + ent1 = sys.getEntity ("steamjet_" + jet1); + ent2 = sys.getEntity ("steamjet_" + jet2); + speaker1 = sys.getEntity ("steamspeaker_" + jet1); + speaker2 = sys.getEntity ("steamspeaker_" + jet2); + + // Turn 'em on + sys.trigger (ent1); + sys.trigger (ent2); + + sys.trigger (speaker1); + sys.trigger (speaker2); + + sys.wait (JET_VENT_TIME); + + // Turn 'em off + sys.trigger (ent1); + sys.trigger (ent2); + } + + void update_control_gui (float slot, float status) { + //sys.print ("Enterint update_control_gui :: Setting slot " + slot + " to " + status + "\n"); + + if ( slot == 1 ) + $crane_control.setGuiParm ( "gui_parm11", status ); + if ( slot == 2 ) + $crane_control.setGuiParm ( "gui_parm12", status ); + if ( slot == 3 ) + $crane_control.setGuiParm ( "gui_parm13", status ); + if ( slot == 4 ) + $crane_control.setGuiParm ( "gui_parm14", status ); + if ( slot == 5 ) + $crane_control.setGuiParm ( "gui_parm15", status ); + if ( slot == 6 ) + $crane_control.setGuiParm ( "gui_parm16", status ); + if ( slot == 7 ) + $crane_control.setGuiParm ( "gui_parm17", status ); + if ( slot == 8 ) + $crane_control.setGuiParm ( "gui_parm18", status ); + if ( slot == 9 ) + $crane_control.setGuiParm ( "gui_parm19", status ); + + + } + + + //*** + // Find the target vertical rung given a slot position. + // Need for moving the crane vertically + //*** + + float find_rung (float slot) { + if ( slot <= 3 ) + return 1; + if ( slot <= 6 ) + return 2; + if ( slot <= 9 ) + return 3; + } + + //*** + // Workhorse #2 + // Pick up the crate off the platform and move it back into a slot + //*** + + void insert_crate (float slot) { + entity ent; + entity crate; + float thread1, thread2; + vector vec, vec2, diff; + float target_rung; +// sys.print ("*** ENTERING insert_crate (" + slot + ")\n"); + + crane_alarm_on(); + + sys.trigger ($movement_alarm); + sys.wait (2); + + sys.trigger ($shoulder_speaker); + $shoulder_anchor.move (DOWN, 64); + sys.trigger ($hand_speaker); + $hand_anchor.rotateOnce ('110 0 0'); + sys.waitFor ($hand_anchor); + + // Gameplay stuff here... delays so that the player can jump onto the crate + // in time... + + sys.wait (0.5); + + sys.trigger ($arm_speaker); + $arm_anchor.rotateOnce ('-60 0 0'); + sys.waitFor ($arm_anchor); + + sys.wait (0.5); + + lift_up(); + + open_fingers(); + + // **** + // Get the cage on the platform + // Remember, that crate_number is stored as a global still from the removal function... + // **** + +// sys.print ("Trying to bind cage_" + crate_number + " to $hand\n"); + ent = sys.getEntity ( "cage_" + crate_number ); + crate = ent; + ent.bind ($hand); // Bind crate to hand + + thread map_delta2a::lift_down(); + sys.waitFor ($shoulder_anchor); + + // Break here and sync up original rotation values. + + sys.trigger ($hand_speaker); + $hand_anchor.rotateOnce ('-50 0 0'); + sys.trigger ($arm_speaker); + $arm_anchor.rotateOnce ('50 0 0'); + + sys.waitFor ($arm_anchor); + + + sys.trigger ($head_speaker); + $head.move (RIGHT, 100); + sys.trigger ($shoulder_speaker); + $shoulder_anchor.move (UP, 64); + $body.time (5); + sys.trigger ($body_speaker_5); + $body.rotateOnce ('0 180 0'); + sys.waitFor ($body); + $body.time (3); + + // Need to find vertical here... + + target_rung = find_rung (slot); + if ( target_rung == 3 ) { + sys.trigger ($shoulder_speaker); + $shoulder_anchor.move (DOWN, 64); + sys.trigger ($body_vert_speaker); + $body.move (DOWN, 128); + sys.waitFor ($body); + } + if ( target_rung == 2) { + sys.trigger ($shoulder_speaker); + $shoulder_anchor.move (DOWN, 64); + sys.trigger ($body_vert_speaker); + $body.move (DOWN, 32); + sys.waitFor ($body); + } + + // Need lateral movement here. + + ent = sys.getEntity ("pos" + slot); + vec = ent.getWorldOrigin (); + + vec2 = $crane_guide.getWorldOrigin (); + + // --- + // Calculate movement vectors and move accordingly + // --- + + diff_x = ( vec2_x - vec_x ); + if ( diff_x < 0 ) { + diff_x = abs ( diff_x ); + sys.trigger ($head_speaker); + $head.move (FORWARD, diff_x); + } + else { + sys.trigger ($head_speaker); + $head.move (BACK, diff_x); + } + + sys.waitFor ($head); + + sys.trigger ($hand_speaker); + $hand_anchor.rotateOnce ('60 0 0'); + sys.trigger ($arm_speaker); + $arm_anchor.rotateOnce ('-60 0 0'); + + trigger_steamjets(slot); + thread1 = thread map_delta2a::unlock_cage(slot); + sys.waitFor ($arm_anchor); + + trigger_steamjets(slot); + + sys.waitForThread (thread1); + + //thread map_delta2a::lock_cage(slot); + + lock_cage(slot); + + crate.unbind(); // Unbind the crate + + // *** + // Paranoia case to ensure that the crate gets bound to it's absolute starting position + // after it has been manipulated + // *** + + crate.setOrigin (ent.getWorldOrigin () ); +// sys.print ("fixed the crate\n"); + + close_fingers(); + + sys.trigger ($hand_speaker); + $hand_anchor.rotateOnce ('-60 0 0'); + sys.trigger ($arm_speaker); + $arm_anchor.rotateOnce ('60 0 0'); + sys.waitFor ($hand_anchor); + + // *** + // Lateral movement to center + // *** + + ent = sys.getEntity ("pos5"); + vec = ent.getWorldOrigin (); + vec2 = $crane_guide.getWorldOrigin (); + diff_x = ( vec2_x - vec_x ); + if ( diff_x < 0 ) { + diff_x = abs ( diff_x ); + sys.trigger ($head_speaker); + $head.move (FORWARD, diff_x); + } + else { + sys.trigger ($head_speaker); + $head.move (BACK, diff_x); + } + + sys.trigger ($hand_speaker); + $hand_anchor.rotateOnce ('50 0 0'); + sys.trigger ($arm_speaker); + $arm_anchor.rotateOnce ('-50 0 0'); + sys.waitFor ($arm_anchor); + + sys.waitFor ($head); + + // Reset rungs + + if ( target_rung == 3 ) { + sys.trigger ($shoulder_speaker); + $shoulder_anchor.move (UP, 64); + sys.trigger ($body_vert_speaker); + $body.move (UP, 128); + sys.waitFor ($body); + } + if ( target_rung == 2) { + sys.trigger ($shoulder_speaker); + $shoulder_anchor.move (UP, 64); + sys.trigger ($body_vert_speaker); + $body.move (UP, 32); + sys.waitFor ($body); + } + + // Rotate around + sys.trigger ($hand_speaker); + $hand_anchor.rotateOnce ('-110 0 0'); + sys.trigger ($arm_speaker); + $arm_anchor.rotateOnce ('60 0 0'); + sys.trigger ($head_speaker); + $head.move (LEFT, 100); + sys.trigger ($body_speaker_3); + $body.rotateOnce ('0 180 0'); + sys.waitFor ($arm_anchor); + sys.waitFor ($head); + + crane_alarm_off(); + + // Ok, find my way back to the reset point... + + set_crate_in_slot( slot, crate_number ); + crate_number = 0; // All crates accounted for +// sys.print ("*** EXITING insert_crate (" + slot + ")\n"); + update_control_gui (slot, 1); + } + + //*** + // (In his best Ian Astbury voice... Xian bellows...) + // "Talking 'bout crates ! CRATE REMOVAL MACHINE !!!" + // + // Workhorse #1 + // Grabs a crate from the desired slot, and moves it onto the platform. + //*** + + void remove_crate (float slot) { + entity ent; + entity crate; + float thread1, thread2; + vector vec, vec2, diff; + float target_rung; +// sys.print ("*** ENTERING insert_crate (" + slot + ")\n"); + + crane_alarm_on(); + + sys.trigger ($movement_alarm); + sys.wait (2); + + sys.trigger ($hand_speaker); + $hand_anchor.rotateOnce ('110 0 0'); + sys.trigger ($arm_speaker); + $arm_anchor.rotateOnce ('-60 0 0'); + + sys.trigger ($head_speaker); + $head.move (RIGHT, 100); + sys.trigger ($body_speaker_3); + $body.rotateOnce ('0 180 0'); + sys.waitFor ($head); + sys.waitFor ($body); + + sys.trigger ($hand_speaker); + $hand_anchor.rotateOnce ('-50 0 0'); + sys.trigger ($arm_speaker); + $arm_anchor.rotateOnce ('50 0 0'); + + sys.waitFor ($hand_anchor); + + // Need to find vertical here... + + target_rung = find_rung (slot); + if ( target_rung == 3 ) { + sys.trigger ($shoulder_speaker); + $shoulder_anchor.move (DOWN, 64); + sys.trigger ($body_vert_speaker); + $body.move (DOWN, 128); + sys.waitFor ($body); + } + if ( target_rung == 2) { + sys.trigger ($shoulder_speaker); + $shoulder_anchor.move (DOWN, 64); + sys.trigger ($body_vert_speaker); + $body.move (DOWN, 32); + sys.waitFor ($body); + } + + // Need lateral movement here. + + ent = sys.getEntity ("pos" + slot); + vec = ent.getWorldOrigin (); + + vec2 = $crane_guide.getWorldOrigin (); + + // --- + // Calculate movement vectors and move accordingly + // --- + + diff_x = ( vec2_x - vec_x ); + if ( diff_x < 0 ) { + diff_x = abs ( diff_x ); + sys.trigger ($head_speaker); + $head.move (FORWARD, diff_x); + } + else { + sys.trigger ($head_speaker); + $head.move (BACK, diff_x); + } + + sys.waitFor ($head); + + // This should put us in front of the crate we want to snag + + sys.trigger ($hand_speaker); + $hand_anchor.rotateOnce ('60 0 0'); + sys.trigger ($arm_speaker); + $arm_anchor.rotateOnce ('-60 0 0'); + sys.waitFor ($arm_anchor); + open_fingers(); + + thread1 = thread map_delta2a::unlock_cage (slot); + trigger_steamjets(slot); + + // Get the cage on the platform + + crate_number = identify_crate(slot); + +// sys.print ("Trying to bind cage_" + crate_number + " to $hand\n"); + crate = sys.getEntity ( "cage_" + crate_number ); + crate.bind ($hand); // Bind crate to hand + + sys.waitForThread (thread1); + thread map_delta2a::lock_cage(slot); + + // Ok, the crate is now bound to the crane + + sys.wait (0.5); + sys.trigger ($hand_speaker); + $hand_anchor.rotateOnce ('-60 0 0'); + sys.trigger ($arm_speaker); + $arm_anchor.rotateOnce ('60 0 0'); + + sys.waitFor ($arm_anchor); + + // *** + // Lateral movement to center + // *** + + ent = sys.getEntity ("pos5"); + vec = ent.getWorldOrigin (); + vec2 = $crane_guide.getWorldOrigin (); + diff_x = ( vec2_x - vec_x ); + if ( diff_x < 0 ) { + diff_x = abs ( diff_x ); + sys.trigger ($head_speaker); + $head.move (FORWARD, diff_x); + } + else { + sys.trigger ($head_speaker); + $head.move (BACK, diff_x); + } + + sys.waitFor ($head); + + // Crane should be centered and ready to move toward the platform. + + if ( target_rung == 3 ) { + sys.trigger ($shoulder_speaker); + $shoulder_anchor.move (UP, 64); + sys.trigger ($body_vert_speaker); + $body.move (UP, 128); + } + if ( target_rung == 2) { + sys.trigger ($shoulder_speaker); + $shoulder_anchor.move (UP, 64); + sys.trigger ($body_vert_speaker); + $body.move (UP, 32); + } + sys.waitFor ($body); + + // Ok, now it's centered and on the top rung... + // Move toward the platform... for real this time... + + thread lift_up(); + + sys.trigger ($hand_speaker); + $hand_anchor.rotateOnce ('50 0 0'); + sys.trigger ($shoulder_speaker); + $shoulder_anchor.move (DOWN, 64); + sys.trigger ($arm_speaker); + $arm_anchor.rotateOnce ('-50 0 0'); + sys.trigger ($head_speaker); + $head.move (LEFT, 100); + sys.trigger ($body_speaker_3); + $body.rotateOnce ('0 180 0'); + sys.waitFor ($head); + + // woop ! It's on the platform now... + + thread map_delta2a::close_fingers(); + + crate.unbind(); + crate.bind ($lift_cage); + sys.wait (0.5); + + thread map_delta2a::lift_down(); + + sys.trigger ($hand_speaker); + $hand_anchor.rotateOnce ('-110 0 0'); + sys.trigger ($arm_speaker); + $arm_anchor.rotateOnce ('60 0 0'); + sys.trigger ($shoulder_speaker); + $shoulder_anchor.move (UP, 64); + sys.waitFor ($shoulder_anchor); + + crane_alarm_off(); + // + set_crate_in_slot( slot, 0 ); // Set the cage as empty + update_control_gui (slot, 0); + } + + void process_cage (float slot) { + float value; + entity ent, ent2; + vector deb; + vector vec, vec2, diff; + float rod_rotation; + float shoulder_diff; + float body_diff; + float desired_rung; + float rung_thread; + + rotmult = 41; + + disable_crane_control(); + + deb = $hand_anchor.getWorldOrigin (); +// sys.print ("ENTER: process_cage: $hand_anchor @ (" + deb_x + ", " + deb_y + ", "+ deb_z + ")\n"); + + // Load the state of the slot into value + value = identify_crate(slot); + +// sys.print ("Target Slot Value :: " + value + "\n"); + + // --- + // First, check to see if there is anything on the platform. If there is, + // we are going to move it to a slot instead of extracting a slot + // --- + + if ( ( crate_number != 0) ) { // No crate on the platform ? +// sys.print ("Crate #" + crate_number + " is currently on the platform\n"); + if ( value == 0 ) { +// sys.print ("It wants to go to position " + slot + ", which is free\n"); + insert_crate (slot); + } +// else { +// sys.print ("It wants to go to position " + slot + ", which is *NOT* free\n"); +// } + } + // Nope, nothing on the platform, lets go get it... + else { +// sys.print ("Nothing on the platform. lets proceed with possible movement...\n"); + // Is there anything at the slot we are interested in ? + if ( value > 0 ) { + remove_crate (slot); + } +// else if ( value == -1 ) { +// sys.print ("That slot is broken\n"); +// } +// else +// sys.print ("There is nothing at that location to move...\n"); + } + + deb = $hand_anchor.getWorldOrigin (); +// sys.print ("BEFORE: $hand_anchor @ (" + deb_x + ", " + deb_y + ", "+ deb_z + ")\n"); + enable_crane_control(); +// sys.print ("Leaving process_cage()\n"); + + } + + // --- + // Bumper functions for map gui calls + // --- + + void proc_cage1() { + process_cage (1); + } + + void proc_cage2() { + process_cage (2); + } + + void proc_cage3() { + process_cage (3); + } + + void proc_cage4() { + process_cage (4); + } + + void proc_cage5() { + process_cage (5); + } + + void proc_cage6() { + process_cage (6); + } + + void proc_cage7() { + process_cage (7); + } + + void proc_cage8() { + process_cage (8); + } + + void proc_cage9() { + process_cage (9); + } + + // --- + // **** End bumper functions + // --- + + //************************ + // Decon Chamber + //************************ + + void decon_cycle1() + { + $decon_trigger1.enable (); + deconPosition = 1; + } + + void decon_cycle2() + { + $decon_trigger1.enable (); + deconPosition = 0; + } + + void mister_move () + { + $decondoor1.lock (1); + $decondoor2.lock (1); + + //start decon1 computer voice + sys.trigger ($decon1_start_speaker); + sys.wait (1.5); + + thread crossFadeEnt ($misterlight_white, '1 1 1', '1 0 0', 1.0); + thread crossFadeEnt ($decontop_fade, '1 1 1', '1 0 0', 1.0); + thread crossFadeEnt ($decon_toplight_red, '0 0 0', '1 0 0', 1.0); + thread crossFadeEnt ($decondoorframe1, '1 1 1', '1 0 0', 1.0); + thread crossFadeEnt ($decondoorframe1_light, '1 1 1', '1 0 0', 1.0); + thread crossFadeEnt ($decondoorframe2, '1 1 1', '1 0 0', 1.0); + thread crossFadeEnt ($decondoorframe2_light, '1 1 1', '1 0 0', 1.0); + + + sys.trigger ($decon1_mister1start_spkr); + sys.trigger ($decon1_mister2start_spkr); + sys.wait (.15); + sys.trigger ($decon1_mister1loop_spkr); + sys.trigger ($decon1_mister2loop_spkr); + + $mister1_anchor.moveTo ($mister1_spot2); + $mister2_anchor.moveTo ($mister2_spot2); + sys.waitFor ($mister1_anchor); + + $mister1_anchor.rotateOnce ('60 0 0'); + $mister2_anchor.rotateOnce ('-60 0 0'); + sys.waitFor ($mister1_anchor); + + $mister1_anchor.rotateOnce ('-60 0 0'); + $mister2_anchor.rotateOnce ('60 0 0'); + sys.waitFor ($mister1_anchor); + + $mister1_anchor.moveTo ($mister1_spot1); + $mister2_anchor.moveTo ($mister2_spot1); + sys.waitFor ($mister1_anchor); + + sys.trigger ($decon1_mister1stop_spkr); + sys.trigger ($decon1_mister2stop_spkr); + //trigger looping speaker again to turn off + sys.trigger ($decon1_mister1loop_spkr); + sys.trigger ($decon1_mister2loop_spkr); + + //turn off emitter + sys.trigger($mister1_emitter); + sys.trigger($mister2_emitter); + + sys.wait (.5); + thread crossFadeEnt ($misterlight_white, '1 0 0', '1 1 1', 1.0); + thread crossFadeEnt ($decontop_fade, '1 0 0', '1 1 1', 1.0); + thread crossFadeEnt ($decon_toplight_red, '1 0 0', '0 0 0', 1.0); + thread crossFadeEnt ($decondoorframe1, '1 0 0', '1 1 1', 1.0); + thread crossFadeEnt ($decondoorframe1_light, '1 0 0', '1 1 1', 1.0); + thread crossFadeEnt ($decondoorframe2, '1 0 0', '1 1 1', 1.0); + thread crossFadeEnt ($decondoorframe2_light, '1 0 0', '1 1 1', 1.0); + } + + void mister1() + { + $decondoor1.close (); + $decondoor2.close (); + $decon_trigger1.disable (); + + $decondoorframe1.setShaderParm (7, 0); + $decondoorframe2.setShaderParm (7, 0); + + //turn on emitter + sys.trigger($mister1_emitter); + sys.trigger($mister2_emitter); + + float i; + i = thread mister_move(); + sys.waitForThread (i); + + //complete decon1 computer voice + sys.trigger ($decon1_complete_speaker); + + sys.wait (.25); + if (deconPosition == 0) + { + $decondoorframe1.setShaderParm (7, 1); + $decondoor1.lock (0); + } + if (deconPosition == 1) + { + $decondoorframe2.setShaderParm (7, 1); + $decondoor2.lock (0); + } + } + + + void tp_1 () + { + $tp_guard.time (2); + $tp_guard.decelTime (1); + $tp_guard.rotateOnce ('0 0 -67'); + sys.waitFor ($tp_guard); + + $tp_shoulder.time (1.5); + $tp_shoulder.rotateOnce ('0 0 -30'); + sys.waitFor ($tp_shoulder); + + $tp_leftarm.rotateOnce ('0 35 0'); + $tp_rightarm.rotateOnce ('0 -35 0'); + sys.wait(5); + + $tp_shoulder.rotateOnce ('0 0 30'); + $tp_leftarm.rotateOnce ('0 -35 0'); + $tp_rightarm.rotateOnce ('0 35 0'); + sys.waitFor ($tp_shoulder); + + $tp_guard.rotateOnce ('0 0 67'); + } + + void show_chair () + { + $delta2a_chair_2.show(); + $char_scientist_old_sitting_1.setBoneMod( false ); + } + + void set_scientist_skin () + { + $char_scientist_old_sitting_1.setSkin( "skins/models/chars/labcoat/labcoat3nochair.skin"); + } + + void drag_corpse () + { + $corpse_mover.time (6); + $corpse_mover.move (WEST,352); + sys.waitFor ($corpse_mover); + $env_ragdoll_lab1_1.remove (); + } + + void tproom_fadeout() { + $speaker_79.fadeSound ( SND_CHANNEL_ANY, -60, 5 ); + $speaker_130.fadeSound ( SND_CHANNEL_ANY, -60, 5 ); + $speaker_77.fadeSound ( SND_CHANNEL_ANY, -60, 5 ); + $speaker_116.fadeSound ( SND_CHANNEL_ANY, -60, 5 ); + $speaker_115.fadeSound ( SND_CHANNEL_ANY, -60, 5 ); + $speaker_1.fadeSound ( SND_CHANNEL_ANY, -60, 5 ); + } + + void main () + { + setup_objects (); + thread map_delta2a::init_claw(); + init_lift(); + lift_down(); + $delta2a_chair_2.hide(); + } +} diff --git a/base/script/map_delta2b.script b/base/script/map_delta2b.script new file mode 100644 index 00000000..b2d71913 --- /dev/null +++ b/base/script/map_delta2b.script @@ -0,0 +1,785 @@ +namespace map_delta2b +{ + float container2_position = 0; + void monster_container2_run( entity container2 ); + void monster_conveyor_run( entity container ); + + + //****************** + // Telepad Rotating Doors + //****************** + void teleporter_exit_open() + { + $round_door_left.time( 1.5 ); + $round_door_left.accelTime( .1 ); + $round_door_left.decelTime( 1 ); + $round_door_right.time( 1.5 ); + $round_door_right.accelTime( .1 ); + $round_door_right.decelTime( 1 ); + sys.trigger ($rot_left_door); + $round_door_left.rotateOnce( '0 90 0' ); + sys.trigger ($rot_right_door); + $round_door_right.rotateOnce( '0 -90 0' ); + sys.waitFor( $round_door_left ); + } + + void start_conveyor_loop() + { + sys.trigger ($container_speaker_start); + sys.wait (1.8); + sys.trigger ($container_speaker_loop); + } + + void start_conveyor_loop2() + { + sys.trigger ($container2_speaker_start); + sys.wait (1.8); + sys.trigger ($container2_speaker_loop); + } + + void stop_conveyor_loop() + { + sys.trigger ($container_speaker_stop); + sys.trigger ($container_speaker_loop); + } + + void stop_conveyor_loop2() + { + sys.trigger ($container2_speaker_stop); + sys.trigger ($container2_speaker_loop); + } + + //************************************ + // Monster Conveyor System + //************************************ + +/* void turn_beam_on_off() + { + sys.trigger( $top_flare_fx); + sys.trigger( $bottom_flare_fx); + sys.trigger( $top_beam_fxr ); + sys.trigger( $top_beam_fxl ); + sys.trigger( $bottom_beam_fxr ); + sys.trigger( $bottom_beam_fxl ); + sys.trigger( $beam_kill_trigger ); + } + + void start_beam() + { + while ( 1 ) + { + $top_beam_mover.move( DOWN, 92 ); + $bottom_beam_mover.move ( UP, 92 ); + sys.waitFor ($bottom_beam_mover); + $top_beam_mover.move( UP, 92 ); + $bottom_beam_mover.move ( DOWN, 92 ); + sys.waitFor ($bottom_beam_mover); + } + } +*/ + void monster_container2_run( entity container2 ) + { + $container_clamp2.bind( $container2_clamphandle1 ); + $container2_clamphandle1.moveTo( $clamp_position_start ); + sys.waitFor( $container2_clamphandle1); + + $container_clamp2.unbind(); + $container_clamp2.bind($container_clamphandle1); + $container2_clamphandle1.restorePosition(); + + $monster_container2_contactpoint.move( UP, 164 ); + sys.waitFor( $monster_container2_contactpoint ); + //container2_position = 1; + + $container_clamphandle1.speed( 65 ); + $container_clamphandle2.speed( 65 ); + $container_clamphandle3.speed( 65 ); + $container_clamphandle_middle.speed( 65 ); + + //small door operate open + sys.trigger ($smalldoor_open); + $monster_machinedoorsmall_left.move( WEST, 32 ); + $monster_machinedoorsmall_right.move( EAST, 32 ); + sys.waitFor( $monster_machinedoorsmall_right ); + + //move container2 clamp into position while container moves up + $container_clamphandle1.moveTo( $clamp_position_stop1 ); + + //move container up and arms down for pickup + container2.move( UP, 52 ); + sys.trigger ($speaker_liftarms1_down); // SOUND + $monster_container_liftarms1.move( DOWN, 152 ); + sys.waitFor( $monster_container_liftarms1 ); + sys.wait( .5 ); + + //bind container to liftarms and move up + container2.bind( $monster_container_liftarms1 ); + sys.trigger ($speaker_liftarms1_up); // SOUND + $monster_container_liftarms1.move( UP, 120 ); + sys.waitFor( $container_clamphandle1 ); + sys.waitFor( $monster_container_liftarms1 ); + + //small door operate close + sys.trigger ($smalldoor_close); + $monster_machinedoorsmall_left.move( EAST, 32 ); + $monster_machinedoorsmall_right.move( WEST, 32 ); + + //bind container to the clamp + sys.wait( 1 ); //temp wait for clamp to engage + container2.bind( $container_clamp2 ); + sys.trigger ($speaker_liftarms1_up); // SOUND + $monster_container_liftarms1.move( UP, 32 ); + sys.waitFor( $monster_container_liftarms1 ); + + //move container along path + thread start_conveyor_loop2(); // SOUND + + $container_clamphandle1.moveTo( $clamp_position_rotateright1 ); + sys.waitFor( $container_clamphandle1 ); + + $container_clamphandle1.time( 2.5 );//set to time var for corner + $container_clamphandle1.rotateOnce( '0 -90 0' ); + sys.waitFor( $container_clamphandle1 ); + + $container_clamp2.unbind(); + $container_clamp2.bind( $container_clamphandle2 ); + $container_clamphandle1.restorePosition();//reset handle1 to starting position + + $container_clamphandle2.speed( 65 );//reset to speed var + $container_clamphandle2.moveTo( $clamp_position_rotateleft1 ); + sys.waitFor( $container_clamphandle2 ); + + $container_clamphandle2.time( 2.5 ); + $container_clamphandle2.rotateOnce( '0 90 0' ); + sys.waitFor( $container_clamphandle2 ); + + $container_clamphandle2.speed( 65 );//reset to speed var + $container_clamphandle2.moveTo( $clamp_position_rotateleft2 ); + sys.waitFor( $container_clamphandle2 ); + + $container_clamphandle2.time( 2.5 ); + $container_clamphandle2.rotateOnce( '0 90 0' ); + sys.waitFor( $container_clamphandle2 ); + + $container_clamphandle2.speed( 65 );//reset to speed var + $container_clamphandle2.moveTo( $clamp_position_stop2 ); + sys.waitFor( $container_clamphandle2 ); + + thread stop_conveyor_loop2(); // SOUND + + sys.trigger ($speaker_machinedoor1); + $monster_machinedoor1_left.rotateOnce( '0 90 0' ); + $monster_machinedoor1_right.rotateOnce( '0 -90 0' ); + sys.waitFor( $monster_machinedoor1_left ); + + sys.wait( 1 );//container wait to move into position + + thread start_conveyor_loop2(); // SOUND + + $container_clamphandle2.moveTo( $clamp_position_stop3 ); + sys.waitFor( $container_clamphandle2 ); + + $container_clamp2.unbind(); + $container_clamp2.bind( $container_clamphandle_middle ); + $container_clamphandle2.restorePosition();//reset handle2 to starting position + + thread stop_conveyor_loop2(); // SOUND + + sys.trigger ($speaker_machinedoor1); + $monster_machinedoor1_left.rotateOnce( '0 -90 0' ); + $monster_machinedoor1_right.rotateOnce( '0 90 0' ); + sys.waitFor( $monster_machinedoor1_left ); + + //fade container 2 lights OUT, red lights IN + thread crossFadeEnt ($container2_light1, '0.756863 0.976471 1', '0 0 0', 1.0); + thread crossFadeEnt ($container2_light2, '0.756863 0.976471 1', '0 0 0', 1.0); + thread crossFadeEnt ($chamber_redlight1, '0 0 0', '1 0 0', 1.0); + thread crossFadeEnt ($chamber_redlight2, '0 0 0', '1 0 0', 1.0); + + sys.trigger ($chamber_fx1); + sys.trigger ($chamber_fx2); + sys.trigger ($chamber_fx_sound); + sys.wait( 4 );//container wait inside chamber + sys.trigger ($chamber_fx1); + sys.trigger ($chamber_fx2); + + //fade container 2 lights IN, red lights OUT + thread crossFadeEnt ($container2_light1, '0 0 0', '0.756863 0.976471 1', 1.0); + thread crossFadeEnt ($container2_light2, '0 0 0', '0.756863 0.976471 1', 1.0); + thread crossFadeEnt ($chamber_redlight1, '1 0 0', '0 0 0', 1.0); + thread crossFadeEnt ($chamber_redlight2, '1 0 0', '0 0 0', 1.0); + + thread monster_conveyor_run( $monster_container1_contactpoint ); + + thread start_conveyor_loop2(); // SOUND + + $container_clamphandle_middle.moveTo( $clamp_position_stop4 ); + sys.waitFor( $container_clamphandle_middle ); + + thread stop_conveyor_loop2(); // SOUND + + sys.trigger ($speaker_machinedoor2); + $monster_machinedoor2_left.rotateOnce( '0 90 0' ); + $monster_machinedoor2_right.rotateOnce( '0 -90 0' ); + sys.waitFor( $monster_machinedoor2_left ); + sys.wait( 1 );//container wait outside chamber + + thread start_conveyor_loop2(); // SOUND + + $container_clamphandle_middle.moveTo( $clamp_position_rotateleft3 ); + sys.wait( 1.75 ); + sys.trigger ($speaker_machinedoor2); + $monster_machinedoor2_left.rotateOnce( '0 -90 0' ); + $monster_machinedoor2_right.rotateOnce( '0 90 0' ); + sys.waitFor( $container_clamphandle_middle ); + $container_clamphandle_middle.time( 2.5 ); + $container_clamphandle_middle.rotateOnce( '0 90 0' ); + sys.waitFor( $container_clamphandle_middle ); + + $container_clamphandle_middle.speed( 65 );//reset to speed var + + $container_clamphandle_middle.moveTo( $clamp_position_rotateright2 ); + sys.waitFor( $container_clamphandle_middle ); + $container_clamp2.unbind(); + $container_clamp2.bind( $container_clamphandle3 ); + $container_clamphandle_middle.restorePosition();//reset handle_middle to starting position + + $container_clamphandle3.time( 2.5 ); + $container_clamphandle3.rotateOnce( '0 -90 0' ); + sys.waitFor( $container_clamphandle3 ); + + $container_clamphandle3.speed( 65 );//reset to speed var + + $container_clamphandle3.moveTo( $clamp_position_end ); + sys.waitFor( $container_clamphandle3 ); + + thread stop_conveyor_loop2(); // SOUND + + sys.trigger ($speaker_machinedoor3); + + $monster_machinedoor3_left.rotateOnce( '0 90 0' ); + $monster_machinedoor3_right.rotateOnce( '0 -90 0' ); + sys.waitFor( $monster_machinedoor3_right ); + sys.wait( .25 ); + container2.unbind(); + $container_clamp2.unbind(); + $container_clamp2.restorePosition(); + $container_clamphandle3.restorePosition(); + + $monster_container2.hide();//Bug - hide container before restorePos to avoid contact with player + sys.wait(.25); + container2.restorePosition(); + sys.wait(.25); + $monster_container2.show(); + + sys.wait( 1.5 ); + $monster_machinedoor3_left.rotateOnce( '0 -90 0' ); + $monster_machinedoor3_right.rotateOnce( '0 90 0' ); + sys.waitFor( $monster_machinedoor3_right ); + sys.wait( .25 ); + } + + void monster_conveyor_run( entity container ) + { + $container_clamphandle1.speed( 65 ); + $container_clamphandle2.speed( 65 ); + $container_clamphandle3.speed( 65 ); + $container_clamphandle_middle.speed( 65 ); + + //small door operate open + sys.trigger ($smalldoor_open); + $monster_machinedoorsmall_left.move( WEST, 32 ); + $monster_machinedoorsmall_right.move( EAST, 32 ); + sys.waitFor( $monster_machinedoorsmall_right ); + + //move container clamp into position while container moves up + $container_clamphandle1.moveTo( $clamp_position_stop1 ); + + //move container up and arms down for pickup + container.move( UP, 52 ); + sys.trigger ($speaker_liftarms1_down); // SOUND + $monster_container_liftarms1.move( DOWN, 152 ); + sys.waitFor( $monster_container_liftarms1 ); + sys.wait( .5 ); + //bind container to liftarms and move up + container.bind( $monster_container_liftarms1 ); + sys.trigger ($speaker_liftarms1_up); // SOUND + $monster_container_liftarms1.move( UP, 120 ); + sys.waitFor( $container_clamphandle1 ); + sys.waitFor( $monster_container_liftarms1 ); + + //small door close + sys.trigger ($smalldoor_close); + $monster_machinedoorsmall_left.move( EAST, 32 ); + $monster_machinedoorsmall_right.move( WEST, 32 ); + + //bind container to the clamp + sys.wait( 1 ); //temp wait for clamp to engage + container.bind( $container_clamp1 ); + sys.trigger ($speaker_liftarms1_up); // SOUND + $monster_container_liftarms1.move( UP, 32 ); + sys.waitFor( $monster_container_liftarms1 ); + + //move container along path + thread start_conveyor_loop(); // SOUND + + $container_clamphandle1.moveTo( $clamp_position_rotateright1 ); + sys.waitFor( $container_clamphandle1 ); + + $container_clamphandle1.time( 2.5 );//set to time var for corner + $container_clamphandle1.rotateOnce( '0 -90 0' ); + sys.waitFor( $container_clamphandle1 ); + + $container_clamp1.unbind(); + $container_clamp1.bind( $container_clamphandle2 ); + $container_clamphandle1.restorePosition();//reset handle1 to starting position + + $container_clamphandle2.speed( 65 );//reset to speed var + $container_clamphandle2.moveTo( $clamp_position_rotateleft1 ); + sys.waitFor( $container_clamphandle2 ); + + $container_clamphandle2.time( 2.5 ); + $container_clamphandle2.rotateOnce( '0 90 0' ); + sys.waitFor( $container_clamphandle2 ); + + $container_clamphandle2.speed( 65 );//reset to speed var + $container_clamphandle2.moveTo( $clamp_position_rotateleft2 ); + sys.waitFor( $container_clamphandle2 ); + + $container_clamphandle2.time( 2.5 ); + $container_clamphandle2.rotateOnce( '0 90 0' ); + sys.waitFor( $container_clamphandle2 ); + + $container_clamphandle2.speed( 65 );//reset to speed var + $container_clamphandle2.moveTo( $clamp_position_stop2 ); + sys.waitFor( $container_clamphandle2 ); + + stop_conveyor_loop(); // SOUND + + sys.trigger ($speaker_machinedoor1); + $monster_machinedoor1_left.rotateOnce( '0 90 0' ); + $monster_machinedoor1_right.rotateOnce( '0 -90 0' ); + sys.waitFor( $monster_machinedoor1_left ); + + sys.wait( 1 );//container wait to move into position + + thread start_conveyor_loop(); // SOUND + + $container_clamphandle2.moveTo( $clamp_position_stop3 ); + sys.waitFor( $container_clamphandle2 ); + + $container_clamp1.unbind(); + $container_clamp1.bind( $container_clamphandle_middle ); + $container_clamphandle2.restorePosition();//reset handle2 to starting position + + stop_conveyor_loop(); // SOUND + + sys.trigger ($speaker_machinedoor1); + $monster_machinedoor1_left.rotateOnce( '0 -90 0' ); + $monster_machinedoor1_right.rotateOnce( '0 90 0' ); + sys.waitFor( $monster_machinedoor1_left ); + + //fade container 1 lights OUT, red lights IN + thread crossFadeEnt ($container1_light1, '0.756863 0.976471 1', '0 0 0', 1.0); + thread crossFadeEnt ($container1_light2, '0.756863 0.976471 1', '0 0 0', 1.0); + thread crossFadeEnt ($chamber_redlight1, '0 0 0', '1 0 0', 1.0); + thread crossFadeEnt ($chamber_redlight2, '0 0 0', '1 0 0', 1.0); + + sys.trigger ($chamber_fx1); + sys.trigger ($chamber_fx2); + sys.trigger ($chamber_fx_sound); + sys.wait( 4 );//container wait inside chamber + sys.trigger ($chamber_fx1); + sys.trigger ($chamber_fx2); + + //fade container 1 lights IN, red lights OUT + thread crossFadeEnt ($container1_light1, '0 0 0', '0.756863 0.976471 1', 1.0); + thread crossFadeEnt ($container1_light2, '0 0 0', '0.756863 0.976471 1', 1.0); + thread crossFadeEnt ($chamber_redlight1, '1 0 0', '0 0 0', 1.0); + thread crossFadeEnt ($chamber_redlight2, '1 0 0', '0 0 0', 1.0); + + //********************************* + //start second container + // ******************************** + thread monster_container2_run( $monster_container2_contactpoint ); + thread start_conveyor_loop(); // SOUND + + $container_clamphandle_middle.moveTo( $clamp_position_stop4 ); + sys.waitFor( $container_clamphandle_middle ); + thread stop_conveyor_loop(); // SOUND + sys.trigger ($speaker_machinedoor2); + $monster_machinedoor2_left.rotateOnce( '0 90 0' ); + $monster_machinedoor2_right.rotateOnce( '0 -90 0' ); + sys.waitFor( $monster_machinedoor2_left ); + + sys.wait( 1 );//container wait outside chamber + thread start_conveyor_loop(); // SOUND + $container_clamphandle_middle.moveTo( $clamp_position_rotateleft3 ); + sys.wait( 1.75 ); + + sys.trigger ($speaker_machinedoor2); + $monster_machinedoor2_left.rotateOnce( '0 -90 0' ); + $monster_machinedoor2_right.rotateOnce( '0 90 0' ); + sys.waitFor( $container_clamphandle_middle ); + + $container_clamphandle_middle.time( 2.5 ); + $container_clamphandle_middle.rotateOnce( '0 90 0' ); + sys.waitFor( $container_clamphandle_middle ); + + $container_clamphandle_middle.speed( 65 );//reset to speed var + + $container_clamphandle_middle.moveTo( $clamp_position_rotateright2 ); + sys.waitFor( $container_clamphandle_middle ); + $container_clamp1.unbind(); + $container_clamp1.bind( $container_clamphandle3 ); + $container_clamphandle_middle.restorePosition();//reset handle_middle to starting position + + $container_clamphandle3.time( 2.5 ); + $container_clamphandle3.rotateOnce( '0 -90 0' ); + sys.waitFor( $container_clamphandle3 ); + + $container_clamphandle3.speed( 65 );//reset to speed var + + $container_clamphandle3.moveTo( $clamp_position_end ); + sys.waitFor( $container_clamphandle3 ); + stop_conveyor_loop(); // SOUND + + sys.trigger ($speaker_machinedoor3); + + $monster_machinedoor3_left.rotateOnce( '0 90 0' ); + $monster_machinedoor3_right.rotateOnce( '0 -90 0' ); + sys.waitFor( $monster_machinedoor3_right ); + sys.wait( .25 ); + container.unbind(); + $container_clamp1.unbind(); + $container_clamphandle3.restorePosition(); + $container_clamp1.restorePosition(); + + $monster_container1.hide();//Bug - hide container before restorePos to avoid contact with player + sys.wait(.25); + container.restorePosition(); + sys.wait(.25); + $monster_container1.show(); + + sys.wait( 1.5 ); + $monster_machinedoor3_left.rotateOnce( '0 -90 0' ); + $monster_machinedoor3_right.rotateOnce( '0 90 0' ); + sys.waitFor( $monster_machinedoor3_right ); + $container_clamp1.bind( $container_clamphandle1 ); + sys.wait( .25 ); + } + + void monster_conveyor_start() + { + thread monster_conveyor_run( $monster_container1_contactpoint ); + //turn_beam_on_off(); + //start_beam(); + } + +// ---------------------------- +// Analyzer machine starts here +// ---------------------------- + + void analyzer_fwdarms_operate() + { + $speaker_sc_piston_leftfront.startSoundShader ("rec2_pump_1s_01", SND_CHANNEL_VOICE2 ); + + $sc_piston_leftfront.move( DOWN, 84 ); + + $speaker_sc_piston_rightfront.startSoundShader ("rec2_pump_1s_01", SND_CHANNEL_VOICE2 ); + + $sc_piston_rightfront.move( DOWN, 84 ); + sys.waitFor( $sc_piston_rightfront ); + + $speaker_sc_rotater_leftfront.startSoundShader ("dc3_gui_panel_1", SND_CHANNEL_VOICE2 ); + + $sc_rotater_leftfront.rotateOnce( '0 -45 0' ); + + $speaker_sc_rotater_rightfront.startSoundShader ("dc3_gui_panel_1", SND_CHANNEL_VOICE2 ); + + $sc_rotater_rightfront.rotateOnce( '0 45 0' ); + sys.wait( .25 ); + + $speaker_sc_largearm_leftfront.startSoundShader ("mach_1s", SND_CHANNEL_VOICE2 ); + $sc_largearm_leftfront.rotateOnce( '-80 0 0' ); + + $speaker_sc_largearm_rightfront.startSoundShader ("mach_1s", SND_CHANNEL_VOICE2 ); + $sc_largearm_rightfront.rotateOnce( '-80 0 0' ); + sys.wait( .25 ); + + $speaker_sc_smallarm_leftfront.startSoundShader ("mach_1_5s", SND_CHANNEL_VOICE2 ); + $sc_smallarm_leftfront.rotateOnce( '-31.5 0 0' ); + $speaker_sc_rightarm_leftfront.startSoundShader ("mach_1_5s", SND_CHANNEL_VOICE2 ); + $sc_smallarm_rightfront.rotateOnce( '-31.5 0 0' ); + sys.wait( .5 ); + + $sc_4head_leftfront.rotateOnce( '-12 0 0' ); + $sc_4head_rightfront.rotateOnce( '-12 0 0' ); + sys.waitFor( $sc_4head_rightfront ); + + //start analyzer fx + $anal_main_fx.startSoundShader ("u1mach_on", SND_CHANNEL_VOICE ); + sys.trigger( $anal_head_fx1 ); + sys.trigger( $anal_head_fx2 ); + sys.trigger( $anal_head_fx3 ); + sys.trigger( $anal_head_fx4 ); + sys.trigger( $anal_head_fx5 ); + sys.trigger( $anal_head_fx6 ); + sys.wait( 1.4 ); + $anal_main_fx.startSoundShader ("u1mach_loop", SND_CHANNEL_VOICE2 ); + sys.trigger( $anal_main_fx ); + //turn on kill brush + sys.trigger( $analyzeToDeath ); + + sys.trigger( $analyzer_controlpanel); + } + + void analyzer_operate() + { + $speaker_sc_piston_leftrear.startSoundShader ("mach_1_5s", SND_CHANNEL_VOICE2 ); + $sc_piston_leftrear.move( DOWN, 80 ); + $speaker_sc_piston_rightrear.startSoundShader ("mach_1_5s", SND_CHANNEL_VOICE2 ); + $sc_piston_rightrear.move( DOWN, 80 ); + + sys.waitFor( $sc_piston_rightrear ); + thread analyzer_fwdarms_operate(); + + $speaker_sc_rotater_leftrear.startSoundShader ("dc3_gui_panel_1", SND_CHANNEL_VOICE2 ); + $sc_rotater_leftrear.rotateOnce( '0 30 0' ); + $speaker_sc_rotater_rightrear.startSoundShader ("dc3_gui_panel_1", SND_CHANNEL_VOICE2 ); + $sc_rotater_rightrear.rotateOnce( '0 -30 0' ); + sys.wait( .25 ); + + $speaker_sc_largearm_leftrear.startSoundShader ("mcu_support_2s", SND_CHANNEL_VOICE2 ); + + $sc_largearm_leftrear.rotateOnce( '-90 0 0' ); + + $speaker_sc_largearm_righttrear.startSoundShader ("mcu_support_2s", SND_CHANNEL_VOICE2 ); + $sc_largearm_rightrear.rotateOnce( '-90 0 0' ); + sys.wait( .325 ); + + $speaker_sc_smallarm_leftrear.startSoundShader ("mcu_support_2s", SND_CHANNEL_VOICE2 ); + $sc_smallarm_leftrear.rotateOnce( '-50 0 0' ); + $speaker_sc_smallarm_rightrear.startSoundShader ("mcu_support_2s", SND_CHANNEL_VOICE2 ); + $sc_smallarm_rightrear.rotateOnce( '-50 0 0' ); + sys.wait( 1.25 ); + + $sc_3head_leftrear.rotateOnce( '-21.5 0 0' ); + $sc_3head_rightrear.rotateOnce( '-21.5 0 0' ); + } + + void analyzer_reararms_operate_off() + { + $sc_3head_leftrear.rotateOnce( '21.5 0 0' ); + $sc_3head_rightrear.rotateOnce( '21.5 0 0' ); + sys.wait( 1.25 ); + + $speaker_sc_smallarm_leftrear.startSoundShader ("mcu_support_2s", SND_CHANNEL_VOICE2 ); + $sc_smallarm_leftrear.rotateOnce( '50 0 0' ); + $speaker_sc_smallarm_rightrear.startSoundShader ("mcu_support_2s", SND_CHANNEL_VOICE2 ); + $sc_smallarm_rightrear.rotateOnce( '50 0 0' ); + //sys.wait( .325 ); + + $speaker_sc_largearm_leftrear.startSoundShader ("mcu_support_2s", SND_CHANNEL_VOICE2 ); + $sc_largearm_leftrear.rotateOnce( '90 0 0' ); + $speaker_sc_largearm_rightrear.startSoundShader ("mcu_support_2s", SND_CHANNEL_VOICE2 ); + $sc_largearm_rightrear.rotateOnce( '90 0 0' ); + sys.wait( 1.25 ); + + $speaker_sc_rotater_leftrear.startSoundShader ("mach_1s", SND_CHANNEL_VOICE2 ); + $sc_rotater_leftrear.rotateOnce( '0 -30 0' ); + $speaker_sc_rotater_rightrear.startSoundShader ("mach_1s", SND_CHANNEL_VOICE2 ); + $sc_rotater_rightrear.rotateOnce( '0 30 0' ); + sys.waitFor( $sc_rotater_rightrear ); + + $speaker_sc_piston_leftrear.startSoundShader ("rec2_pump_1s_01", SND_CHANNEL_VOICE2 ); + $sc_piston_leftrear.move( UP, 80 ); + + $speaker_sc_piston_rightrear.startSoundShader ("rec2_pump_1s_01", SND_CHANNEL_VOICE2 ); + $sc_piston_rightrear.move( UP, 80 ); + sys.waitFor( $sc_piston_rightrear ); + + sys.trigger( $analyzer_controlpanel); + } + + void analyzer_operate_off() + { + + //stop analyzer fx + $anal_main_fx.startSoundShader ("u1mach_off", SND_CHANNEL_VOICE2 ); + sys.trigger( $anal_main_fx ); + sys.wait( .5 ); + sys.trigger( $anal_head_fx1 ); + sys.trigger( $anal_head_fx2 ); + sys.trigger( $anal_head_fx3 ); + sys.trigger( $anal_head_fx4 ); + sys.trigger( $anal_head_fx5 ); + sys.trigger( $anal_head_fx6 ); + //turn off kill brush + sys.trigger( $analyzeToDeath ); + sys.wait( .5 ); + + + $speaker_sc4head_leftfront.startSoundShader ("al4_conveyor_1_point5s", SND_CHANNEL_VOICE2 ); + $sc_4head_leftfront.rotateOnce( '12 0 0' ); + $speaker_sc4head_rightfront.startSoundShader ("al4_conveyor_1_point5s", SND_CHANNEL_VOICE2 ); + $sc_4head_rightfront.rotateOnce( '12 0 0' ); + sys.wait( .15 ); + + $speaker_sc_largearm_leftfront.startSoundShader ("mcu_support_2s", SND_CHANNEL_VOICE2 ); + $sc_largearm_leftfront.rotateOnce( '80 0 0' ); + $speaker_sc_largearm_rightfront.startSoundShader ("mcu_support_2s", SND_CHANNEL_VOICE2 ); + $sc_largearm_rightfront.rotateOnce( '80 0 0' ); + + $sc_smallarm_leftfront.rotateOnce( '31.5 0 0' ); + $sc_smallarm_rightfront.rotateOnce( '31.5 0 0' ); + sys.wait( .5 ); + + thread analyzer_reararms_operate_off(); + + $speaker_sc_rotater_leftfront.startSoundShader ("dc3_gui_panel_1", SND_CHANNEL_VOICE2 ); + + $sc_rotater_leftfront.rotateOnce( '0 45 0' ); + + $speaker_sc_rotater_rightfront.startSoundShader ("dc3_gui_panel_1", SND_CHANNEL_VOICE2 ); + + $sc_rotater_rightfront.rotateOnce( '0 -45 0' ); + + sys.waitFor( $sc_rotater_rightfront ); + + $speaker_sc_piston_leftfront.startSoundShader ("rec2_pump_1s_01", SND_CHANNEL_VOICE2 ); + $sc_piston_leftfront.move( UP, 84 ); + $speaker_sc_piston_rightfront.startSoundShader ("rec2_pump_1s_01", SND_CHANNEL_VOICE2 ); + $sc_piston_rightfront.move( UP, 84 ); + } + + void cache_sounds() + { + sys.cacheSoundShader ("rec2_pump_1s_01"); + sys.cacheSoundShader ("dc3_gui_panel_1"); + sys.cacheSoundShader ("mach_1s"); + sys.cacheSoundShader ("mach_1_5s"); + sys.cacheSoundShader ("mcu_support_2s"); + sys.cacheSoundShader ("al4_conveyor_1_point5s"); + sys.cacheSoundShader ("u1mach_on"); + sys.cacheSoundShader ("u1mach_off"); + sys.cacheSoundShader ("u1mach_loop"); + } + + void falling_floor_secret() + { + $drop_floor.time( 1 ); + $drop_floor.accelTime( .25 ); + $drop_floor.decelTime( .25 ); + $drop_floor.move( DOWN, 128 ); + } + + void main() + { + cache_sounds(); + //init + $top_beam_mover.hide(); + $bottom_beam_mover.hide(); + + $monster_container_liftarms1.time( 2 ); + $monster_container_liftarms1.accelTime( 0 ); + $monster_container_liftarms1.decelTime( 1 ); + + $monster_machinedoorsmall_left.time( 1.5 ); + $monster_machinedoorsmall_left.accelTime( .5 ); + $monster_machinedoorsmall_left.decelTime( 1 ); + $monster_machinedoorsmall_right.time( 1.5 ); + $monster_machinedoorsmall_right.accelTime( .5 ); + $monster_machinedoorsmall_right.decelTime( 1 ); + + $monster_container1_contactpoint.time( 1.5 ); + $monster_container1_contactpoint.accelTime( .5 ); + $monster_container1_contactpoint.decelTime( 1 ); + $monster_container2_contactpoint.time( 1.5 ); + $monster_container2_contactpoint.accelTime( .5 ); + $monster_container2_contactpoint.decelTime( 1 ); + + $monster_machinedoor1_left.time( 2 ); + $monster_machinedoor1_left.accelTime( .5 ); + $monster_machinedoor1_left.decelTime( 1 ); + $monster_machinedoor1_right.time( 2 ); + $monster_machinedoor1_right.accelTime( .5 ); + $monster_machinedoor1_right.decelTime( 1 ); + $monster_machinedoor2_left.time( 2 ); + $monster_machinedoor2_left.accelTime( .5 ); + $monster_machinedoor2_left.decelTime( 1 ); + $monster_machinedoor2_right.time( 2 ); + $monster_machinedoor2_right.accelTime( .5 ); + $monster_machinedoor2_right.decelTime( 1 ); + + $sc_piston_leftrear.time( 1.5 ); + $sc_piston_leftrear.accelTime( .5 ); + $sc_piston_leftrear.decelTime( 1 ); + $sc_piston_rightrear.time( 1.5 ); + $sc_piston_rightrear.accelTime( .5 ); + $sc_piston_rightrear.decelTime( 1 ); + + $sc_rotater_leftrear.time( 1 ); + $sc_rotater_leftrear.accelTime( .25 ); + $sc_rotater_leftrear.decelTime( .75 ); + $sc_rotater_rightrear.time( 1 ); + $sc_rotater_rightrear.accelTime( .25 ); + $sc_rotater_rightrear.decelTime( .75 ); + + $sc_largearm_leftrear.time( 2 ); + $sc_largearm_leftrear.accelTime( .75 ); + $sc_largearm_leftrear.decelTime( 1 ); + $sc_largearm_rightrear.time( 2 ); + $sc_largearm_rightrear.accelTime( .75 ); + $sc_largearm_rightrear.decelTime( 1 ); + + $sc_smallarm_leftrear.time( 2 ); + $sc_smallarm_leftrear.accelTime( .5 ); + $sc_smallarm_leftrear.decelTime( 1.25 ); + $sc_smallarm_rightrear.time( 2 ); + $sc_smallarm_rightrear.accelTime( .5 ); + $sc_smallarm_rightrear.decelTime( 1.25 ); + + $sc_3head_leftrear.time( 1.5 ); + $sc_3head_leftrear.accelTime( .5 ); + $sc_3head_leftrear.decelTime( 1 ); + $sc_3head_rightrear.time( 1.5 ); + $sc_3head_rightrear.accelTime( .5 ); + $sc_3head_rightrear.decelTime( 1 ); + + $sc_piston_leftfront.time( 1.5 ); + $sc_piston_leftfront.accelTime( .5 ); + $sc_piston_leftfront.decelTime( 1 ); + $sc_piston_rightfront.time( 1.5 ); + $sc_piston_rightfront.accelTime( .5 ); + $sc_piston_rightfront.decelTime( 1 ); + + $sc_rotater_leftfront.time( 1 ); + $sc_rotater_leftfront.accelTime( .25 ); + $sc_rotater_leftfront.decelTime( .75 ); + $sc_rotater_rightfront.time( 1 ); + $sc_rotater_rightfront.accelTime( .25 ); + $sc_rotater_rightfront.decelTime( .75 ); + + $sc_largearm_leftfront.time( 2 ); + $sc_largearm_leftfront.accelTime( .75 ); + $sc_largearm_leftfront.decelTime( 1 ); + $sc_largearm_rightfront.time( 2 ); + $sc_largearm_rightfront.accelTime( .75 ); + $sc_largearm_rightfront.decelTime( 1 ); + + $sc_smallarm_leftfront.time( 1.5 ); + $sc_smallarm_leftfront.accelTime( .5 ); + $sc_smallarm_leftfront.decelTime( 1 ); + $sc_smallarm_rightfront.time( 1.5 ); + $sc_smallarm_rightfront.accelTime( .5 ); + $sc_smallarm_rightfront.decelTime( 1 ); + + $sc_4head_leftfront.time( 1.25 ); + $sc_4head_leftfront.accelTime( .5 ); + $sc_4head_leftfront.decelTime( .75 ); + $sc_4head_rightfront.time( 1.25 ); + $sc_4head_rightfront.accelTime( .5 ); + $sc_4head_rightfront.decelTime( .75 ); + } +} diff --git a/base/script/map_delta3.script b/base/script/map_delta3.script new file mode 100644 index 00000000..bb8353d8 --- /dev/null +++ b/base/script/map_delta3.script @@ -0,0 +1,1095 @@ +namespace map_delta3 +{ + + // Sound precache stuff for script calls. + + void precache() { + //sys.cacheSoundShader ("m5_start"); + //sys.cacheSoundShader ("m5_loop"); + //sys.cacheSoundShader ("m5_stop"); + sys.cacheSoundShader ("dc3_gui_panel_1"); + sys.cacheSoundShader ("dc3_gui_panel_2"); + } + + + void bind_objects() + { + $mister1.bind ($mister1_anchor); + $mister2.bind ($mister2_anchor); + $mister3.bind ($mister3_anchor); + $mister4.bind ($mister4_anchor); + $mister5.bind ($mister5_anchor); + $mister6.bind ($mister6_anchor); +/* + $mister1_anchor.accelTime (0.25); + $mister1_anchor.decelTime (0.25); + $mister2_anchor.accelTime (0.25); + $mister2_anchor.decelTime (0.25); + $mister3_anchor.accelTime (0.25); + $mister3_anchor.decelTime (0.25); + $mister4_anchor.accelTime (0.25); + $mister4_anchor.decelTime (0.25); + $mister5_anchor.accelTime (0.25); + $mister5_anchor.decelTime (0.25); + $mister6_anchor.accelTime (0.25); + $mister6_anchor.decelTime (0.25); +*/ + } + + + void init_world() + { + float i; + entity ent1, ent2; + + for ( i = 1; i <= 9; i++ ) + { + ent1 = sys.getEntity ("lred_0" + i); + ent1.Off(); + } + + for ( i = 1; i <= 6; i++ ) + { + ent1 = sys.getEntity ("lleft_0" + i); + ent2 = sys.getEntity ("lright_0" + i); + ent1.Off(); + ent2.Off(); + } + + $teleporter1_controlpanel_gui.hide(); + $teleporter2_controlpanel_gui.hide(); + + $teleport1_controlpanelarms.time (1.0); + $teleport1_controlpanelarms.accelTime (.5 ); + $teleport1_controlpanelarms.decelTime (.5 ); + $teleport1_controlpanel.time (.75); + $teleport1_controlpanel.accelTime (.25 ); + $teleport1_controlpanel.decelTime (.5 ); + $teleport1_shoulder.time (2.0); + $teleport1_shoulder.accelTime (1.0 ); + $teleport1_shoulder.decelTime (1.0 ); + $teleport1_arm1.time (2.0); + $teleport1_arm1.accelTime (1.25 ); + $teleport1_arm1.decelTime (.75 ); + $teleport1_arm2.time (2.0); + $teleport1_arm2.accelTime (1.25 ); + $teleport1_arm2.decelTime (.75 ); + + $teleport2_controlpanelarms.time (1.0); + $teleport2_controlpanelarms.accelTime (.5 ); + $teleport2_controlpanelarms.decelTime (.5 ); + $teleport2_controlpanel.time (.75); + $teleport2_controlpanel.accelTime (.25 ); + $teleport2_controlpanel.decelTime (.5 ); + $teleport2_shoulder.time (2.0); + $teleport2_shoulder.accelTime (1.0 ); + $teleport2_shoulder.decelTime (1.0 ); + $teleport2_arm1.time (2.0); + $teleport2_arm1.accelTime (1.25 ); + $teleport2_arm1.decelTime (.75 ); + $teleport2_arm2.time (2.0); + $teleport2_arm2.accelTime (1.25 ); + $teleport2_arm2.decelTime (.75 ); + + $teleport3_controlpanelarms.time (1.0); + $teleport3_controlpanelarms.accelTime (.5 ); + $teleport3_controlpanelarms.decelTime (.5 ); + $teleport3_controlpanel.time (.75); + $teleport3_controlpanel.accelTime (.25 ); + $teleport3_controlpanel.decelTime (.5 ); + $teleport3_shoulder.time (2.0); + $teleport3_shoulder.accelTime (1.0 ); + $teleport3_shoulder.decelTime (1.0 ); + $teleport3_arm1.time (2.0); + $teleport3_arm1.accelTime (1.25 ); + $teleport3_arm1.decelTime (.75 ); + $teleport3_arm2.time (2.0); + $teleport3_arm2.accelTime (1.25 ); + $teleport3_arm2.decelTime (.75 ); + + } + + //************************* + // Teleporter 1 + //************************* + void teleport1_machine_ready() + { + sys.wait (.5); + //trigger tp sounds + sys.trigger ($teleport1_machine_poweron); + sys.trigger ($teleport1_machine_idle_delay); + //turn on electrical lightning effect + sys.trigger ($teleport1_lightningfx); + sys.wait (1.95); + $teleport1_shoulder.rotateOnce ('0 0 -35'); + //trigger sound for arms + sys.trigger ($teleport1_shoulder_operate); + sys.wait(.75); + $teleport1_arm1.rotateOnce ('0 -30 0'); + $teleport1_arm2.rotateOnce ('0 30 0'); + sys.waitFor ($teleport1_arm2); + sys.wait (.5); + sys.trigger ($select_speaker); + $klaxxon_speaker1.setKey ("klaxxon1_status", "0"); + } + + void teleport1_klaxxon_on() + { + if ($klaxxon_speaker1.getFloatKey ("klaxxon1_status") == 0) + { + sys.wait (.25); + $klaxxon1_light1.setColor(0.77,0.49,0.00); + $klaxxon1_light2.setColor(0.77,0.49,0.00); + $klaxxon1_light_base.setColor(0.77,0.49,0.00); + $klaxxon1_light_base.rotate ('0 360 0'); + sys.wait ( .5 ); + sys.trigger ($klaxxon_speaker1); + $klaxxon_speaker1.setKey ("klaxxon1_status", "1"); + + //trigger sounds for fx + sys.trigger ($t1_teleporterfx_startup); + sys.wait ( 1.5 ); + sys.trigger ($t1_teleporterfx_loop); + + //turn on blinking blue tp light + sys.trigger ($teleport1_blightblink); + sys.wait (.25 ); + //turn on floor and arm fx + sys.trigger ($teleport1_arm1_fx); + sys.trigger ($teleport1_arm2_fx); + sys.wait ( .5 ); + sys.trigger ($teleport1_warpfx); + sys.trigger ($teleport1_floorfx); + } + } + + void teleport1_klaxxon_off() + { + if ($klaxxon_speaker1.getFloatKey ("klaxxon1_status") == 1) + { + //reset teleport trigger + $teleport_trigger1.setGuiParm ( "gui_parm1" , 0); + //turn off blinking blue tp light + sys.trigger ($teleport1_blightblink); + + //trigger off loop sound for fx + sys.trigger ($t1_teleporterfx_loop); + + //turn off floor and arm fx + sys.trigger ($teleport1_arm1_fx); + sys.trigger ($teleport1_arm2_fx); + sys.trigger ($teleport1_warpfx); + sys.trigger ($teleport1_floorfx); + //turn of klaxxon speaker + sys.trigger ($klaxxon_speaker1); + //fade klaxxon light off; player can see it winding down after tp + thread crossFadeEnt ($klaxxon1_light1, $klaxxon1_light1.getColor(), '0 0 0', 6.0); + thread crossFadeEnt ($klaxxon1_light2, $klaxxon1_light2.getColor(), '0 0 0', 6.0); + thread crossFadeEnt ($klaxxon1_light_base, $klaxxon1_light_base.getColor(), '0 0 0', 6.0); + sys.wait ( 6 ); + //stop klaxxon rotation + $klaxxon1_light_base.rotate ('0 0 0'); + //reset klaxxon1 light and speaker + $klaxxon_speaker1.setKey ("klaxxon1_status", "0"); + //trigger gui to make useable after teleportation + sys.trigger ($teleporter1_controlpanel_gui); + } + } + + // NOTE: All teleport destinations work via a specifically named trigger_relay entity in the gui + void teleport1_destination1() + { + sys.wait (.25); + sys.trigger ($pad1select_speaker); + + thread crossFadeEnt ($destination1_floorlight1, $destination1_floorlight1.getColor(), '1 1 1', 2.0); + thread crossFadeEnt ($destination1_floorlight2, $destination1_floorlight2.getColor(), '1 1 1', 2.0); + sys.trigger ($dest1_fadein_1); + sys.trigger($dest1_redlight_on); + + // turn off pad 2 + $teleport1_pad2_rotate.rotateOnce ('0 0 0'); + thread crossFadeEnt ($teleport1_pad1_light1a, $teleport1_pad1_light1a.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport1_pad1_light1b, $teleport1_pad1_light1b.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport1_pad1_light2a, $teleport1_pad1_light2a.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport1_pad1_light2b, $teleport1_pad1_light2b.getColor(), '0 0 0', 2.0); + + //$destination2_redlight_base.rotateOnce ('0 0 0'); + //$destination2_redlight_flare.setColor (0,0,0); + //$destination2_redlight.setColor (0,0,0); + } + + void teleport1_destination2() + { + sys.wait (.25); + sys.trigger ($pad2select_speaker); + $teleport1_pad2_rotate.rotate ('0 -320 0'); + thread crossFadeEnt ($teleport1_pad1_light1a, $teleport1_pad1_light1a.getColor(), '1 0 0', 2.0); + thread crossFadeEnt ($teleport1_pad1_light1b, $teleport1_pad1_light1b.getColor(), '1 0 0', 2.0); + thread crossFadeEnt ($teleport1_pad1_light2a, $teleport1_pad1_light2a.getColor(), '1 0 0', 2.0); + thread crossFadeEnt ($teleport1_pad1_light2b, $teleport1_pad1_light2b.getColor(), '1 0 0', 2.0); + + //$destination2_redlight_base.rotate ('0 360 0'); + //$destination2_redlight_flare.setColor (1,0,0); + //$destination2_redlight.setColor (1,0,0); + + // turn off pad 1 + sys.trigger($dest1_redlight_off); + sys.trigger ($dest1_fadeout_1); + thread crossFadeEnt ($destination1_floorlight1, $destination1_floorlight1.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($destination1_floorlight2, $destination1_floorlight2.getColor(), '0 0 0', 2.0); + + } + + //************************* + // Teleporter 2 + //************************* + void teleport2_machine_ready() + { + sys.wait (.25); + sys.trigger ($teleport2_machine_poweron); + sys.trigger ($teleport2_machine_idle_delay); + //turn on electrical lightning effect + sys.trigger ($teleport2_lightningfx); + sys.wait (1.95); + $teleport2_shoulder.rotateOnce ('0 0 -35'); + //trigger sound for arms + sys.trigger($teleport2_shoulder_operate); + sys.wait(.75); + $teleport2_arm1.rotateOnce ('0 -30 0'); + $teleport2_arm2.rotateOnce ('0 30 0'); + sys.waitFor ($teleport2_arm2); + sys.wait (.5); + sys.trigger ($select_speaker2); + $klaxxon_speaker2.setKey ("klaxxon2_status", "0"); + } + + void teleport2_klaxxon_on() + { + if ($klaxxon_speaker2.getFloatKey ("klaxxon2_status") == 0) + { + sys.wait (.25); + $klaxxon2_light1.setColor(0.77,0.49,0.00); + $klaxxon2_light2.setColor(0.77,0.49,0.00); + $klaxxon2_light_base.setColor(0.77,0.49,0.00); + $klaxxon2_light_base.rotate ('0 360 0'); + sys.wait ( .5 ); + sys.trigger ($klaxxon_speaker2); + $klaxxon_speaker2.setKey ("klaxxon2_status", "1"); + + //trigger sounds for fx + sys.trigger ($t2_teleporterfx_startup); + sys.wait ( 1.5 ); + sys.trigger ($t2_teleporterfx_loop); + + //turn on blinking blue tp light + sys.trigger ($teleport2_blightblink); + sys.wait ( .25 ); + //turn on floor and arm fx + sys.trigger ($teleport2_arm1_fx); + sys.trigger ($teleport2_arm2_fx); + sys.wait ( .5 ); + sys.trigger ($teleport2_warpfx); + sys.trigger ($teleport2_floorfx); + } + } + + void teleport2_klaxxon_off() + { + if ($klaxxon_speaker2.getFloatKey ("klaxxon2_status") == 1) + { + //reset teleport trigger + $teleport_trigger2.setGuiParm ( "gui_parm1" , 0); + //turn off blinking blue tp light + sys.trigger ($teleport2_blightblink); + + //trigger off loop sound for fx + sys.trigger ($t2_teleporterfx_loop); + + //turn off floor and arm fx + sys.trigger ($teleport2_arm1_fx); + sys.trigger ($teleport2_arm2_fx); + sys.trigger ($teleport2_warpfx); + sys.trigger ($teleport2_floorfx); + + sys.trigger ($klaxxon_speaker2); + //fade klaxxon off; player can see it winding down after tp + thread crossFadeEnt ($klaxxon2_light1, $klaxxon2_light1.getColor(), '0 0 0', 6.0); + thread crossFadeEnt ($klaxxon2_light2, $klaxxon2_light2.getColor(), '0 0 0', 6.0); + thread crossFadeEnt ($klaxxon2_light_base, $klaxxon2_light_base.getColor(), '0 0 0', 6.0); + sys.wait ( 6 ); + //stop klaxxon rotation + $klaxxon2_light_base.rotate ('0 0 0'); + //reset klaxxon light and speaker + $klaxxon_speaker2.setKey ("klaxxon2_status", "0"); + //trigger gui to make useable after teleportation + sys.trigger ($teleporter2_controlpanel_gui); + } + } + + void teleport2_destination1() + { + sys.wait (.25); + sys.trigger ($pad1select_speaker2); + thread crossFadeEnt ($tp2_dest1_floorlight1, $tp2_dest1_floorlight1.getColor(), '1 1 1', 2.0); + thread crossFadeEnt ($tp2_dest1_floorlight2, $tp2_dest1_floorlight2.getColor(), '1 1 1', 2.0); + thread crossFadeEnt ($tp2_dest1_roomlight1, $tp2_dest1_roomlight1.getColor(), '1 1 1', 2.0); + sys.trigger ($tp2_dest1_fadein_1); + sys.trigger($tp2_dest1_redlight_on); + //turn off ambient room light while main light is on; for performance + thread crossFadeEnt ($tp2_dest1_roomlightambient, $tp2_dest1_roomlightambient.getColor(), '0 0 0', 2.0); + + // turn off pad 2 + $teleport2_pad2_rotate.rotate ('0 0 0'); + thread crossFadeEnt ($teleport2_pad2_light1a, $teleport2_pad2_light1a.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport2_pad2_light1b, $teleport2_pad2_light1b.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport2_pad2_light2a, $teleport2_pad2_light2a.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport2_pad2_light2b, $teleport2_pad2_light2b.getColor(), '0 0 0', 2.0); + + // turn off pad 3 + $teleport2_pad3_rotate.rotate ('0 0 0'); + thread crossFadeEnt ($teleport2_pad3_light1a, $teleport2_pad3_light1a.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport2_pad3_light1b, $teleport2_pad3_light1b.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport2_pad3_light2a, $teleport2_pad3_light2a.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport2_pad3_light2b, $teleport2_pad3_light2b.getColor(), '0 0 0', 2.0); + } + + void teleport2_destination2() + { + sys.wait (.25); + sys.trigger ($pad2select_speaker2); + + $teleport2_pad2_rotate.rotate ('0 -320 0'); + thread crossFadeEnt ($teleport2_pad2_light1a, $teleport2_pad2_light1a.getColor(), '1 0 0', 2.0); + thread crossFadeEnt ($teleport2_pad2_light1b, $teleport2_pad2_light1b.getColor(), '1 0 0', 2.0); + thread crossFadeEnt ($teleport2_pad2_light2a, $teleport2_pad2_light2a.getColor(), '1 0 0', 2.0); + thread crossFadeEnt ($teleport2_pad2_light2b, $teleport2_pad2_light2b.getColor(), '1 0 0', 2.0); + + // turn off pad 3 + $teleport2_pad3_rotate.rotate ('0 0 0'); + thread crossFadeEnt ($teleport2_pad3_light1a, $teleport2_pad3_light1a.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport2_pad3_light1b, $teleport2_pad3_light1b.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport2_pad3_light2a, $teleport2_pad3_light2a.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport2_pad3_light2b, $teleport2_pad3_light2b.getColor(), '0 0 0', 2.0); + + // turn off pad 1 + sys.trigger($tp2_dest1_redlight_off); + sys.trigger ($tp2_dest1_fadeout_1); + thread crossFadeEnt ($tp2_dest1_floorlight1, $tp2_dest1_floorlight1.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($tp2_dest1_floorlight2, $tp2_dest1_floorlight2.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($tp2_dest1_roomlight1, $tp2_dest1_roomlight1.getColor(), '0 0 0', 2.0); + // turn on room ambient light + thread crossFadeEnt ($tp2_dest1_roomlightambient, $tp2_dest1_roomlightambient.getColor(), '.39 .39 .39', 2.0); + } + + void teleport2_destination3() + { + sys.wait (.25); + sys.trigger ($pad3select_speaker2); + + $teleport2_pad3_rotate.rotate ('0 -320 0'); + thread crossFadeEnt ($teleport2_pad3_light1a, $teleport2_pad3_light1a.getColor(), '1 0 0', 2.0); + thread crossFadeEnt ($teleport2_pad3_light1b, $teleport2_pad3_light1b.getColor(), '1 0 0', 2.0); + thread crossFadeEnt ($teleport2_pad3_light2a, $teleport2_pad3_light2a.getColor(), '1 0 0', 2.0); + thread crossFadeEnt ($teleport2_pad3_light2b, $teleport2_pad3_light2b.getColor(), '1 0 0', 2.0); + + // turn off pad 1 + sys.trigger($tp2_dest1_redlight_off); + sys.trigger ($tp2_dest1_fadeout_1); + thread crossFadeEnt ($tp2_dest1_floorlight1, $tp2_dest1_floorlight1.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($tp2_dest1_floorlight2, $tp2_dest1_floorlight2.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($tp2_dest1_roomlight1, $tp2_dest1_roomlight1.getColor(), '0 0 0', 2.0); + // turn on room ambient light + thread crossFadeEnt ($tp2_dest1_roomlightambient, $tp2_dest1_roomlightambient.getColor(), '.39 .39 .39', 2.0); + + // turn off pad 2 + $teleport2_pad2_rotate.rotate ('0 0 0'); + thread crossFadeEnt ($teleport2_pad2_light1a, $teleport2_pad2_light1a.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport2_pad2_light1b, $teleport2_pad2_light1b.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport2_pad2_light2a, $teleport2_pad2_light2a.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport2_pad2_light2b, $teleport2_pad2_light2b.getColor(), '0 0 0', 2.0); + } + + //************************* + // Teleporter 3 + //************************* + void teleport3_machine_ready() + { + sys.wait (.25); + //trigger tp sounds + sys.trigger ($teleport3_machine_poweron); + sys.trigger ($teleport3_machine_idle_delay); + //turn on electrical lightning effect + sys.trigger ($teleport3_lightningfx); + sys.wait (1.95); + $teleport3_shoulder.rotateOnce ('0 0 -35'); + //trigger sound for arms + sys.trigger($teleport3_shoulder_operate); + sys.wait(.75); + $teleport3_arm1.rotateOnce ('0 -30 0'); + $teleport3_arm2.rotateOnce ('0 30 0'); + sys.waitFor ($teleport3_arm2); + sys.wait (.5); + sys.trigger ($select_speaker3); + $klaxxon_speaker3.setKey ("klaxxon3_status", "0"); + } + + void teleport3_klaxxon_on() + { + if ($klaxxon_speaker3.getFloatKey ("klaxxon3_status") == 0) + { + sys.wait (.25); + $klaxxon3_light1.setColor(0.77,0.49,0.00); + $klaxxon3_light2.setColor(0.77,0.49,0.00); + $klaxxon3_light_base.setColor(0.77,0.49,0.00); + $klaxxon3_light_base.rotate ('0 360 0'); + sys.wait ( .5 ); + sys.trigger ($klaxxon_speaker3); + $klaxxon_speaker3.setKey ("klaxxon3_status", "1"); + //turn on blinking blue tp light + sys.trigger ($teleport3_blightblink); + sys.wait ( .25 ); + + //trigger sounds for fx + sys.trigger ($t3_teleporterfx_startup); + sys.wait ( 1.5 ); + sys.trigger ($t3_teleporterfx_loop); + + //turn on floor and arm fx + sys.trigger ($teleport3_arm1_fx); + sys.trigger ($teleport3_arm2_fx); + sys.wait ( .5 ); + sys.trigger ($teleport3_warpfx); + sys.trigger ($teleport3_floorfx); + } + } + + void teleport3_klaxxon_off() + { + if ($klaxxon_speaker3.getFloatKey ("klaxxon3_status") == 1) + { + //reset teleport trigger + $teleport_trigger3.setGuiParm ( "gui_parm1" , 0); + + //turn off blinking blue tp light + sys.trigger ($teleport3_blightblink); + + //trigger off loop sound for fx + sys.trigger ($t3_teleporterfx_loop); + + //turn off floor and arm fx + sys.trigger ($teleport3_arm1_fx); + sys.trigger ($teleport3_arm2_fx); + sys.trigger ($teleport3_warpfx); + sys.trigger ($teleport3_floorfx); + //turn off klaxxon speaker + sys.trigger ($klaxxon_speaker3); + //fade klaxxon off; player can see it winding down after tp + thread crossFadeEnt ($klaxxon3_light1, $klaxxon3_light1.getColor(), '0 0 0', 6.0); + thread crossFadeEnt ($klaxxon3_light2, $klaxxon3_light2.getColor(), '0 0 0', 6.0); + thread crossFadeEnt ($klaxxon3_light_base, $klaxxon3_light_base.getColor(), '0 0 0', 6.0); + sys.wait ( 6 ); + //stop klaxxon rotation + $klaxxon3_light_base.rotate ('0 0 0'); + //reset klaxxon light and speaker + $klaxxon_speaker3.setKey ("klaxxon3_status", "0"); + //trigger gui to make useable after teleportation + sys.trigger ($teleporter3_controlpanel_gui); + } + } + + void betruger_teleport_init() + { + teleport3_machine_ready(); + teleport3_klaxxon_on(); + } + + void betruger_teleport() + { + //trigger engulf warp fx and remove betruger + sys.wait (.75); + sys.trigger ($teleport3_blackholefx); + sys.wait (.75); + sys.trigger ($teleport_betrugar_out); + sys.wait (.5); + sys.trigger ($teleport3_blackholefx); + sys.wait (.25); + + thread teleport3_klaxxon_off(); + } + + void teleport3_destination1() + { + sys.wait (.25); + sys.trigger ($pad1select_speaker3); + $teleport3_pad1_rotate.rotate ('0 -320 0'); + thread crossFadeEnt ($teleport3_pad1_light1a, $teleport3_pad1_light1a.getColor(), '1 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad1_light1b, $teleport3_pad1_light1b.getColor(), '1 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad1_light2a, $teleport3_pad1_light2a.getColor(), '1 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad1_light2b, $teleport3_pad1_light2b.getColor(), '1 0 0', 2.0); + // turn off pad 2 + $teleport3_pad2_rotate.rotate ('0 0 0'); + thread crossFadeEnt ($teleport3_pad2_light1a, $teleport3_pad2_light1a.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad2_light1b, $teleport3_pad2_light1b.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad2_light2a, $teleport3_pad2_light2a.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad2_light2b, $teleport3_pad2_light2b.getColor(), '0 0 0', 2.0); + // turn off pad 3 + $teleport3_pad3_rotate.rotate ('0 0 0'); + thread crossFadeEnt ($teleport3_pad3_light1a, $teleport3_pad3_light1a.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad3_light1b, $teleport3_pad3_light1b.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad3_light2a, $teleport3_pad3_light2a.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad3_light2b, $teleport3_pad3_light2b.getColor(), '0 0 0', 2.0); + // turn off pad 4 + $teleport3_pad4_rotate.rotate ('0 0 0'); + thread crossFadeEnt ($teleport3_pad4_light1a, $teleport3_pad4_light1a.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad4_light1b, $teleport3_pad4_light1b.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad4_light2a, $teleport3_pad4_light2a.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad4_light2b, $teleport3_pad4_light2b.getColor(), '0 0 0', 2.0); + } + + void teleport3_destination2() + { + sys.wait (.25); + sys.trigger ($pad2select_speaker3); + $teleport3_pad2_rotate.rotate ('0 -320 0'); + thread crossFadeEnt ($teleport3_pad2_light1a, $teleport3_pad2_light1a.getColor(), '1 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad2_light1b, $teleport3_pad2_light1b.getColor(), '1 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad2_light2a, $teleport3_pad2_light2a.getColor(), '1 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad2_light2b, $teleport3_pad2_light2b.getColor(), '1 0 0', 2.0); + // turn off pad 1 + $teleport3_pad1_rotate.rotate ('0 0 0'); + thread crossFadeEnt ($teleport3_pad1_light1a, $teleport3_pad1_light1a.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad1_light1b, $teleport3_pad1_light1b.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad1_light2a, $teleport3_pad1_light2a.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad1_light2b, $teleport3_pad1_light2b.getColor(), '0 0 0', 2.0); + // turn off pad 3 + $teleport3_pad3_rotate.rotate ('0 0 0'); + thread crossFadeEnt ($teleport3_pad3_light1a, $teleport3_pad3_light1a.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad3_light1b, $teleport3_pad3_light1b.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad3_light2a, $teleport3_pad3_light2a.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad3_light2b, $teleport3_pad3_light2b.getColor(), '0 0 0', 2.0); + // turn off pad 4 + $teleport3_pad4_rotate.rotate ('0 0 0'); + thread crossFadeEnt ($teleport3_pad4_light1a, $teleport3_pad4_light1a.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad4_light1b, $teleport3_pad4_light1b.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad4_light2a, $teleport3_pad4_light2a.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad4_light2b, $teleport3_pad4_light2b.getColor(), '0 0 0', 2.0); + } + + void teleport3_destination3() + { + sys.wait (.25); + sys.trigger ($pad3select_speaker3); + sys.trigger ($tele3_pad3_swapdoortrigger); + $teleport3_pad3_rotate.rotate ('0 -320 0'); + thread crossFadeEnt ($teleport3_pad3_light1a, $teleport3_pad3_light1a.getColor(), '1 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad3_light1b, $teleport3_pad3_light1b.getColor(), '1 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad3_light2a, $teleport3_pad3_light2a.getColor(), '1 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad3_light2b, $teleport3_pad3_light2b.getColor(), '1 0 0', 2.0); + // turn off pad 1 + $teleport3_pad1_rotate.rotate ('0 0 0'); + thread crossFadeEnt ($teleport3_pad1_light1a, $teleport3_pad1_light1a.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad1_light1b, $teleport3_pad1_light1b.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad1_light2a, $teleport3_pad1_light2a.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad1_light2b, $teleport3_pad1_light2b.getColor(), '0 0 0', 2.0); + // turn off pad 2 + $teleport3_pad2_rotate.rotate ('0 0 0'); + thread crossFadeEnt ($teleport3_pad2_light1a, $teleport3_pad2_light1a.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad2_light1b, $teleport3_pad2_light1b.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad2_light2a, $teleport3_pad2_light2a.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad2_light2b, $teleport3_pad2_light2b.getColor(), '0 0 0', 2.0); + // turn off pad 4 + $teleport3_pad4_rotate.rotate ('0 0 0'); + thread crossFadeEnt ($teleport3_pad4_light1a, $teleport3_pad4_light1a.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad4_light1b, $teleport3_pad4_light1b.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad4_light2a, $teleport3_pad4_light2a.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad4_light2b, $teleport3_pad4_light2b.getColor(), '0 0 0', 2.0); + } + + void teleport3_destination4() + { + sys.wait (.25); + sys.trigger ($pad4select_speaker3); + sys.trigger ($tele3_pad4_swapdoortrigger); + $teleport3_pad4_rotate.rotate ('0 -320 0'); + thread crossFadeEnt ($teleport3_pad4_light1a, $teleport3_pad4_light1a.getColor(), '1 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad4_light1b, $teleport3_pad4_light1b.getColor(), '1 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad4_light2a, $teleport3_pad4_light2a.getColor(), '1 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad4_light2b, $teleport3_pad4_light2b.getColor(), '1 0 0', 2.0); + // turn off pad 1 + $teleport3_pad1_rotate.rotate ('0 0 0'); + thread crossFadeEnt ($teleport3_pad1_light1a, $teleport3_pad1_light1a.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad1_light1b, $teleport3_pad1_light1b.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad1_light2a, $teleport3_pad1_light2a.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad1_light2b, $teleport3_pad1_light2b.getColor(), '0 0 0', 2.0); + // turn off pad 2 + $teleport3_pad2_rotate.rotate ('0 0 0'); + thread crossFadeEnt ($teleport3_pad2_light1a, $teleport3_pad2_light1a.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad2_light1b, $teleport3_pad2_light1b.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad2_light2a, $teleport3_pad2_light2a.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad2_light2b, $teleport3_pad2_light2b.getColor(), '0 0 0', 2.0); + // turn off pad 3 + $teleport3_pad3_rotate.rotate ('0 0 0'); + thread crossFadeEnt ($teleport3_pad3_light1a, $teleport3_pad3_light1a.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad3_light1b, $teleport3_pad3_light1b.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad3_light2a, $teleport3_pad3_light2a.getColor(), '0 0 0', 2.0); + thread crossFadeEnt ($teleport3_pad3_light2b, $teleport3_pad3_light2b.getColor(), '0 0 0', 2.0); + } + + //********************* + // Teleport Control panels + //********************* + void teleport1_control_up() + { + $teleporter1_controlpanel_gui.show(); + $teleport1_controlpanelarms.startSoundShader ("dc3_gui_panel_1", SND_CHANNEL_VOICE ); + $teleporter1_controlpanel_gui.show(); + $teleport1_controlpanelarms.move (UP, 33); + sys.waitFor ($teleport1_controlpanelarms); + $teleport1_controlpanelarms.startSoundShader ("dc3_gui_panel_2", SND_CHANNEL_VOICE2 ); + $teleport1_controlpanel.rotateOnce ('-20 0 0'); + sys.waitFor ($teleport1_controlpanel); + } + + void teleport2_control_up() + { + $teleporter2_controlpanel_gui.show(); + $teleporter2_controlpanel_gui.show(); + $teleport2_controlpanelarms.startSoundShader ("dc3_gui_panel_1", SND_CHANNEL_VOICE ); + $teleport2_controlpanelarms.move (UP, 33); + sys.waitFor ($teleport2_controlpanelarms); + $teleport2_controlpanelarms.startSoundShader ("dc3_gui_panel_2", SND_CHANNEL_VOICE2 ); + $teleport2_controlpanel.rotateOnce ('0 0 -20'); + sys.waitFor ($teleport2_controlpanel); + } + + void teleport3_control_up() + { + //$teleport3_controlpanelarms.move (UP, 33); + //sys.waitFor ($teleport3_controlpanelarms); + //$teleport3_controlpanel.rotateOnce ('20 0 0'); + //sys.waitFor ($teleport3_controlpanel); + sys.wait (.05); + } + + //******************** + // Lock and unlock doors in area after second decon chamber + //******************** + void lock_door1() + { + $func_door_214.close (); + $func_door_214.lock (1); + $func_static_2576.setShaderParm (7, 0); + $func_door_216.lock (1); + $func_static_2577.setShaderParm (7, 0); + } + + void unlock_door1() + { + $func_door_214.lock (0); + $func_static_2576.setShaderParm (7, 1); + $func_door_216.lock (0); + $func_static_2577.setShaderParm (7, 1); + } + + void lock_door2() + { + $door_lock2_playerclip.show(); + $func_door_220.close (); + $func_door_220.lock (1); + $func_static_2604.setShaderParm (7, 0); + } + + void unlock_door2() + { + $door_lock2_playerclip.remove(); + $func_door_220.lock (0); + $func_static_2604.setShaderParm (7, 1); + $func_static_2604.setColor (1.0,1.0,1.0); + $light_1768.setColor (1.0,1.0,1.0); + $light_1752.setColor (1.0,1.0,1.0); + } + + //************************ + // Decon Chamber #1 + //************************ + void decon_cycle_door1() + { + //initiate decon chamber computer voice + sys.trigger ($decon_initiate_speaker); + $decondoor1.lock (0); + $decondoorframe1.setShaderParm (7, 1); + $decondoorframe2.setShaderParm (7, 1); + $decondoorframe4.setShaderParm (7, 1); + sys.trigger($decon1_setcolor_green); + + //reset decon chamber stuff + $decondoor3.lock (0); + $decondoorframe3.setShaderParm (7, 1); + $decondoor2_trigger.enable(); + $decondoor4_trigger.enable(); + } + + void decon_cycle() + { + $decon_trigger1.enable (); + } + + void mister_move () + { + $decondoor1.lock (1); + $decondoor2.lock (1); + + //start decon1 computer voice + sys.trigger ($decon1_start_speaker); + sys.wait (1.5); + + thread crossFadeEnt ($misterlight_white, '1 1 1', '1 0 0', 1.0); + thread crossFadeEnt ($decontop_fade, '1 1 1', '1 0 0', 1.0); + thread crossFadeEnt ($decon_toplight_red, '0 0 0', '1 0 0', 1.0); + thread crossFadeEnt ($decondoorframe1, '1 1 1', '1 0 0', 1.0); + thread crossFadeEnt ($decondoorframe1_light, '1 1 1', '1 0 0', 1.0); + thread crossFadeEnt ($decondoorframe2, '1 1 1', '1 0 0', 1.0); + thread crossFadeEnt ($decondoorframe2_light, '1 1 1', '1 0 0', 1.0); + + sys.trigger ($decon1_mister1start_spkr); + sys.trigger ($decon1_mister2start_spkr); + sys.wait (.15); + sys.trigger ($decon1_mister1loop_spkr); + sys.trigger ($decon1_mister2loop_spkr); + + $mister1_anchor.moveTo ($mister1_spot2); + $mister2_anchor.moveTo ($mister2_spot2); + sys.waitFor ($mister1_anchor); + + $mister1_anchor.rotateOnce ('60 0 0'); + $mister2_anchor.rotateOnce ('-60 0 0'); + sys.waitFor ($mister1_anchor); + + $mister1_anchor.rotateOnce ('-60 0 0'); + $mister2_anchor.rotateOnce ('60 0 0'); + sys.waitFor ($mister1_anchor); + + $mister1_anchor.moveTo ($mister1_spot1); + $mister2_anchor.moveTo ($mister2_spot1); + sys.waitFor ($mister1_anchor); + + sys.trigger ($decon1_mister1stop_spkr); + sys.trigger ($decon1_mister2stop_spkr); + //trigger looping speaker again to turn off + sys.trigger ($decon1_mister1loop_spkr); + sys.trigger ($decon1_mister2loop_spkr); + + //turn off emitter + sys.trigger($mister1_emitter); + sys.trigger($mister2_emitter); + + sys.wait (.5); + thread crossFadeEnt ($misterlight_white, '1 0 0', '1 1 1', 1.0); + thread crossFadeEnt ($decontop_fade, '1 0 0', '1 1 1', 1.0); + thread crossFadeEnt ($decon_toplight_red, '1 0 0', '0 0 0', 1.0); + thread crossFadeEnt ($decondoorframe1, '1 0 0', '1 1 1', 1.0); + thread crossFadeEnt ($decondoorframe1_light, '1 0 0', '1 1 1', 1.0); + thread crossFadeEnt ($decondoorframe2, '1 0 0', '1 1 1', 1.0); + thread crossFadeEnt ($decondoorframe2_light, '1 0 0', '1 1 1', 1.0); + } + + void mister1() + { + $decondoor1.close (); + $decondoor2.close (); + $decon_trigger1.disable (); + + //turn on emitter + sys.trigger($mister1_emitter); + sys.trigger($mister2_emitter); + + $decondoorframe1.setShaderParm (7, 0); + $decondoorframe2.setShaderParm (7, 0); + float i; + i = thread mister_move(); + sys.waitForThread (i); + + //complete decon1 computer voice + sys.trigger ($decon1_complete_speaker); + + sys.wait (.25); + $decondoorframe2.setShaderParm (7, 1); + $decondoor2.lock (0); + + //turn off emitter + //sys.trigger($mister1_emitter); + //sys.trigger($mister2_emitter); + } + + void decon_cycle_door2() + { + $decondoor2_trigger.disable(); + $decondoor2.close(); + $decondoor2.lock(1); + $decondoorframe2.setShaderParm (7, 0); + sys.trigger($decon1_setcolor_red); + + //reset decon chamber trigger + sys.trigger ($func_static_2885); + } + + //*********************** + // Decon Chamber #2 //2nd chamber - not actual chamber # + //*********************** + void decon_cycle2 () + { + $decon_trigger2.enable (); + } + + void mister_move2() + { + $decondoor3.lock (1); + $decondoor4.lock (1); + + //start decon2 computer voice + sys.trigger ($decon2_start_speaker); + sys.wait (1.5); + + thread crossFadeEnt ($misterlight_white2, '1 1 1', '1 0 0', 1.0); + thread crossFadeEnt ($decontop_fade2, '1 1 1', '1 0 0', 1.0); + thread crossFadeEnt ($decon_toplight_red2, '0 0 0', '1 0 0', 1.0); + thread crossFadeEnt ($decondoorframe3, '1 1 1', '1 0 0', 1.0); + thread crossFadeEnt ($decondoorframe3_light, '1 1 1', '1 0 0', 1.0); + thread crossFadeEnt ($decondoorframe4, '1 1 1', '1 0 0', 1.0); + thread crossFadeEnt ($decondoorframe4_light, '1 1 1', '1 0 0', 1.0); + + sys.trigger ($decon2_mister3start_spkr); + sys.trigger ($decon2_mister4start_spkr); + sys.wait (.15); + sys.trigger ($decon2_mister3loop_spkr); + sys.trigger ($decon2_mister4loop_spkr); + + $mister3_anchor.moveTo ($mister3_spot2); + $mister4_anchor.moveTo ($mister4_spot2); + sys.waitFor ($mister4_anchor); + + $mister3_anchor.rotateOnce ('60 0 0'); + $mister4_anchor.rotateOnce ('-60 0 0'); + sys.waitFor ($mister4_anchor); + + $mister3_anchor.rotateOnce ('-60 0 0'); + $mister4_anchor.rotateOnce ('60 0 0'); + sys.waitFor ($mister4_anchor); + + $mister3_anchor.moveTo ($mister3_spot1); + $mister4_anchor.moveTo ($mister4_spot1); + sys.waitFor ($mister4_anchor); + + sys.trigger ($decon2_mister3stop_spkr); + sys.trigger ($decon2_mister4stop_spkr); + //trigger looping speaker again to turn off + sys.trigger ($decon2_mister3loop_spkr); + sys.trigger ($decon2_mister4loop_spkr); + + //turn off emitter + sys.trigger($mister3_emitter); + sys.trigger($mister4_emitter); + + sys.wait (.5); + thread crossFadeEnt ($misterlight_white2, '1 0 0', '1 1 1', 1.0); + thread crossFadeEnt ($decontop_fade2, '1 0 0', '1 1 1', 1.0); + thread crossFadeEnt ($decon_toplight_red2, '1 0 0', '0 0 0', 1.0); + thread crossFadeEnt ($decondoorframe3, '1 0 0', '1 1 1', 1.0); + thread crossFadeEnt ($decondoorframe3_light, '1 0 0', '1 1 1', 1.0); + thread crossFadeEnt ($decondoorframe4, '1 0 0', '1 1 1', 1.0); + thread crossFadeEnt ($decondoorframe4_light, '1 0 0', '1 1 1', 1.0); + } + + void mister2() + { + $decondoor3.close (); + $decondoor4.close (); + $decon_trigger2.disable (); + + //turn on emitter + sys.trigger($mister3_emitter); + sys.trigger($mister4_emitter); + + $decondoorframe3.setShaderParm (7, 0); + $decondoorframe4.setShaderParm (7, 0); + float i; + i = thread mister_move2(); + sys.waitForThread (i); + + //complete decon2 computer voice + sys.trigger ($decon2_complete_speaker); + + sys.wait (.25); + $decondoorframe4.setShaderParm (7, 1); + $decondoor4.lock (0); + } + + void decon_cycle_door4() + { + $decondoor4.close(); + $decondoor4.lock (1); + $decondoorframe4.setShaderParm (7, 0); + $decondoor4_trigger.disable(); + } + + //*********************** + // Decon Chamber #3 + //*********************** + + void decon_cycle_door5() + { + //initiate decon chamber #3 computer voice + sys.trigger ($decon_initiate_speaker3); + $decondoor5.lock (0); + $decondoorframe5.setShaderParm (7, 1); + } + + void mister_move3() + { + //start decon1 computer voice + $decon_trigger3.disable (); + sys.trigger ($decon3_start_speaker); + $decondoor5.lock (1); + $decondoor6.lock (1); + sys.wait (1.5); + + thread crossFadeEnt ($misterlight_white3, '1 1 1', '1 0 0', 1.0); + thread crossFadeEnt ($decontop_fade3, '1 1 1', '1 0 0', 1.0); + thread crossFadeEnt ($decon_toplight_red3, '0 0 0', '1 0 0', 1.0); + + thread crossFadeEnt ($decondoorframe5, '1 1 1', '1 0 0', 1.0); + thread crossFadeEnt ($decondoorframe5_light, '1 1 1', '1 0 0', 1.0); + thread crossFadeEnt ($decondoorframe6, '1 1 1', '1 0 0', 1.0); + thread crossFadeEnt ($decondoorframe6_light, '1 1 1', '1 0 0', 1.0); + + $mister5_anchor.time (1); + $mister5_anchor.accelTime (.5 ); + $mister5_anchor.decelTime (.5); + sys.trigger ($decon3_cycle_speaker); + $mister5_anchor.moveTo ($mister5_spot1_broke); + $mister6_anchor.moveTo ($mister6_spot1_broke); + sys.waitFor ($mister6_anchor); + sys.trigger($mister5_emitter); + sys.trigger($mister6_emitter); + sys.wait (1.5); + sys.trigger ($decon3_malfunction_speaker); + sys.wait (1.85); + sys.trigger ($decon3_shutdown_speaker); + sys.wait (1.75); + sys.trigger ($decon3_backup_speaker); +/* + $mister5_anchor.moveTo ($mister5_spot2); + $mister6_anchor.moveTo ($mister6_spot2); + sys.waitFor ($mister6_anchor); + + $mister5_anchor.rotateOnce ('-60 0 0'); + $mister6_anchor.rotateOnce ('60 0 0'); + sys.waitFor ($mister6_anchor); + + $mister5_anchor.rotateOnce ('60 0 0'); + $mister6_anchor.rotateOnce ('-60 0 0'); + sys.waitFor ($mister6_anchor); + + $mister5_anchor.moveTo ($mister5_spot1); + $mister6_anchor.moveTo ($mister6_spot1); + sys.waitFor ($mister6_anchor); +*/ + sys.wait (1.5); + + thread crossFadeEnt ($misterlight_white3, '1 0 0', '1 1 1', 1.0); + thread crossFadeEnt ($decontop_fade3, '1 0 0', '1 1 1', 1.0); + thread crossFadeEnt ($decon_toplight_red3, '1 0 0', '0 0 0', 1.0); + + thread crossFadeEnt ($decondoorframe5, '1 0 0', '1 1 1', 1.0); + thread crossFadeEnt ($decondoorframe5_light, '1 0 0', '1 1 1', 1.0); + thread crossFadeEnt ($decondoorframe6, '1 0 0', '1 1 1', 1.0); + thread crossFadeEnt ($decondoorframe6_light, '1 0 0', '1 1 1', 1.0); + } + + void mister3() + { + $decondoor5.close (); + $decondoor6.close (); + $decon_trigger3.disable (); + $decondoorframe5.setShaderParm (7, 0); + $decondoorframe6.setShaderParm (7, 0); + float i; + i = thread mister_move3(); + sys.waitForThread (i); + + // complete decon computer voice + //sys.trigger ($decon3_complete_speaker); + sys.wait (.5); + $decondoorframe5.setShaderParm (7, 1); + $decondoor5.lock (0); + $decondoorframe6.setShaderParm (7, 1); + $decondoor6.lock (0); + //sys.trigger($mister5_emitter); + //sys.trigger($mister6_emitter); + } + + void decon_cycle_door6() + { + //$decondoor6.close(); + //$decondoor6.lock(1); + //$decondoorframe6.setShaderParm (7, 0); + //sys.trigger($decon3_setcolor_red); + //thread decon_cycle3(); //trigger enabled; inside chamber + $decondoor6_trigger.disable(); + sys.wait (3); + sys.trigger ($decon3_maint_need_speaker); + } + + void scroll_red_lights() + { + float i; + entity ent; + while (1) + { + for ( i = 1; i <= 9; i++ ) + { + ent = sys.getEntity ("lred_0" + i); + ent.On(); + sys.wait ( 0.10 ); + ent.Off(); + sys.wait ( 0.10 ); + } + } + } + + void scroll_blue_lights() + { + float i; + entity ent1, ent2; + while (1) + { + for ( i = 1; i <= 6; i++ ) + { + ent1 = sys.getEntity ("lleft_0" + i); + ent2 = sys.getEntity ("lright_0" + i); + ent1.On(); + ent2.On(); + sys.wait ( 0.2 ); + ent1.Off(); + ent2.Off(); + sys.wait ( 0.2 ); + } + } + } + + void start_world() + { + thread scroll_red_lights(); + thread scroll_blue_lights(); + thread betruger_teleport_init(); + } + + void main() + { + precache(); + bind_objects(); + init_world(); + start_world(); + } +} diff --git a/base/script/map_delta5.script b/base/script/map_delta5.script new file mode 100644 index 00000000..328b245d --- /dev/null +++ b/base/script/map_delta5.script @@ -0,0 +1,130 @@ +namespace map_delta5 +{ + void init_world() + { + float i; + entity ent1, ent2; + + for ( i = 1; i <= 9; i++ ) + { + ent1 = sys.getEntity ("lred_0" + i); + ent1.Off(); + } + + for ( i = 1; i <= 6; i++ ) + { + ent1 = sys.getEntity ("lleft_0" + i); + ent2 = sys.getEntity ("lright_0" + i); + ent1.Off(); + ent2.Off(); + } + } + + void scroll_red_lights() + { + float i; + entity ent; + while (1) + { + for ( i = 1; i <= 9; i++ ) + { + ent = sys.getEntity ("lred_0" + i); + ent.On(); + sys.wait ( 0.10 ); + ent.Off(); + sys.wait ( 0.10 ); + } + } + } + + void scroll_blue_lights() + { + float i; + entity ent1, ent2; + while (1) + { + for ( i = 1; i <= 6; i++ ) + { + ent1 = sys.getEntity ("lleft_0" + i); + ent2 = sys.getEntity ("lright_0" + i); + ent1.On(); + ent2.On(); + sys.wait ( 0.2 ); + ent1.Off(); + ent2.Off(); + + sys.wait ( 0.2 ); + } + } + } + + void open_vent_ladder() + { + $vent_panel.time (1); + $vent_panel.accelTime (.5); + $vent_panel.decelTime (.5); + $vent_panel.startSoundShader ("dc5_panel_1s", SND_CHANNEL_VOICE); + $vent_panel.moveTo ($vent_panel_pos1); + sys.waitFor ($vent_panel); + sys.wait (.5); + $vent_panel.time (1.5); + $vent_panel.accelTime (.75); + $vent_panel.decelTime (.75); + $vent_panel.startSoundShader ("dc5_panel_1_5s", SND_CHANNEL_VOICE2); + $vent_panel.moveTo ($vent_panel_pos2); + sys.waitFor ($vent_panel); + sys.wait (.5); + $vent_ladder.time (4); + $vent_ladder.accelTime (1.25); + $vent_ladder.decelTime (2.75); + $vent_ladder.startSoundShader ("ladder_4s", SND_CHANNEL_VOICE ); + $vent_ladder.moveTo ($ladder_extended_pos); + } + + void close_vent_ladder() + { + $vent_ladder_brush.remove(); + $vent_ladder.time (2); + $vent_ladder.accelTime (1.25); + $vent_ladder.decelTime (.75); + $vent_ladder.startSoundShader ("ladder_4s", SND_CHANNEL_VOICE ); + $vent_ladder.moveTo ($ladder_retracted_pos); + sys.waitFor ($vent_ladder); + + $vent_panel.time (1); + $vent_panel.accelTime (.5); + $vent_panel.decelTime (.5); + $vent_panel.startSoundShader ("dc5_panel_1_5s", SND_CHANNEL_VOICE); + $vent_panel.moveTo ($vent_panel_pos1); + sys.waitFor ($vent_panel); + + sys.wait (.5); + $vent_panel.time (1.5); + $vent_panel.accelTime (.75); + $vent_panel.decelTime (.75); + $vent_panel.startSoundShader ("dc5_panel_1s", SND_CHANNEL_VOICE2); + $vent_panel.moveTo ($vent_panel_startpos); + sys.waitFor ($vent_panel); + sys.wait (.5); + } + + void start_world() + { + thread scroll_red_lights(); + thread scroll_blue_lights(); + } + + void cache_sounds() { + sys.cacheSoundShader ("dc5_panel_1s"); + sys.cacheSoundShader ("dc5_panel_1_5s"); + sys.cacheSoundShader ("ladder_4s"); + } + + + void main() + { + cache_sounds(); + init_world(); + start_world(); + } +} diff --git a/base/script/map_enpro.script b/base/script/map_enpro.script new file mode 100644 index 00000000..6c68fca3 --- /dev/null +++ b/base/script/map_enpro.script @@ -0,0 +1,995 @@ +namespace map_enpro { + + // Set up exit room sounds for after the battle sequence. Trigger all this stuff when the player + // swaps out the rod. + + void xianstuff() { + sys.trigger ($speaker_burn_1); // flame1 in exit room + sys.trigger ($speaker_burn_2); // flame2 in exit room + sys.trigger ($speaker_alarm_1); // alarm sound in exit room + sys.trigger ($speaker_badgen_1); // Red sound for damaged core :: Turns it off + sys.trigger ($speaker_goodgen_1); // Blue sound for fixed core :: Turns it on + sys.trigger ($rflames); // Turns off flame sounds for fixed rod 2 + sys.trigger ($speaker_fixed_rod); // Turns on good sound for fixed rod 2 + } + + + void setup_objects() + { + // ceiling room + $ceiling_cover.bind ($ceiling_cover_anchor); + $ceilingroom_pipe.bind ($ceilingroom_pipe_anchor); + + $ceiling_cover_anchor.accelTime (.5); + $ceiling_cover_anchor.time (.5); + $ceilingroom_pipe_anchor.accelTime (.3); + $ceilingroom_pipe_anchor.time (.6); + + $ceiling_cover_anchor.rotateOnce ('120 0 0'); + + // bridge setup + $bridge_toprailing_left.bind ($bridge_toprailing_left_anchor); + $bridge_toprailing_left_anchor.bind ($bridge_floor); + $bridge_toprailing_right.bind ($bridge_toprailing_right_anchor); + $bridge_toprailing_right_anchor.bind ($bridge_floor); + $bridge_btmrailing_left.bind ($bridge_btmrailing_left_anchor); + $bridge_btmrailing_left_anchor.bind ($bridge_floor); + $bridge_btmrailing_right.bind ($bridge_btmrailing_right_anchor); + $bridge_btmrailing_right_anchor.bind ($bridge_floor); + + $bridge_toprailing_left_anchor.accelTime (.4); + $bridge_toprailing_left_anchor.decelTime (.4); + $bridge_toprailing_left_anchor.time (1); + $bridge_toprailing_right_anchor.accelTime (.4); + $bridge_toprailing_right_anchor.decelTime (.4); + $bridge_toprailing_right_anchor.time (1); + $bridge_btmrailing_left_anchor.accelTime (.4); + $bridge_btmrailing_left_anchor.decelTime (.4); + $bridge_btmrailing_left_anchor.time (1); + $bridge_btmrailing_right_anchor.accelTime (.4); + $bridge_btmrailing_right_anchor.decelTime (.4); + $bridge_btmrailing_right_anchor.time (1); + + $bridge_toprailing_left_anchor.rotateOnce ('0 0 -88'); + $bridge_btmrailing_left_anchor.rotateOnce ('0 0 -45'); + $bridge_toprailing_right_anchor.rotateOnce ('0 0 88'); + $bridge_btmrailing_right_anchor.rotateOnce ('0 0 45'); + $bridge_floor.moveTo ($bridge_spot1); + + // hall 1 emergency light + $light_tunnel_1.bind ($tunnel_anchor_1); + $light_tunnel_1_spin.bind ($tunnel_anchor_1); + $tunnel_anchor_1.rotate ('0 -300 0'); + + // chamber 2: spinny things + $accelswayL.rotate ('0 -20 0'); + $accelspinL.rotate ('0 45 0'); + $accelspinM.rotate ('0 -35 0'); + $accelspinR.rotate ('0 50 0'); + $c2_spin_2.rotate ('0 -40 0'); + $c2_spin_3.rotate ('0 20 0'); + + // rod replacement setup + $rod_door.bind ($rod_replacer); + $rod_door.time (1); + $rod_door.accelTime (.3); + $rod_door.decelTime (.5); + + $rod_fire_emitter1.bind ($rod); + $rod_fire_emitter2.bind ($rod); + $rod_redlight1.bind ($rod); + $rod_emitter3.bind ($rod); + $rod_emitter4.bind ($rod); + + $rod_emitter1.bind ($rod_2); + $rod_emitter2.bind ($rod_2); + $rod_2_bluelight1.bind ($rod_2); + $rod_2_bluelight2.bind ($rod_2); + $rod_2.hide (); + + $rod_replacer.time (1); + $rod_replacer.decelTime (.5); + $rod.time (.5); + $rod.decelTime (.3); + $rod_2.time (.5); + $rod_2.decelTime (.3); + + // machineroom binds + $machineclaw1_carrier.bind ($machineclaw1_carrier_anchor); + $machineclaw1_upperarm.bind ($machineclaw1_carrier); + $machineclaw1_forearm.bind ($machineclaw1_upperarm); + $machineclaw1_hand.bind ($machineclaw1_forearm); + $machineclaw1_revolver.bind ($machineclaw1_hand); + $machineclaw1_steam1.bind ($machineclaw1_hand); + $machineclaw1_steam2.bind ($machineclaw1_hand); + + $reloader_light.bind ($reloader); + + $chamberpivot2.bind ($chamberpivot1); + $filterchamber.bind ($chamberpivot1); + + $canspot1.bind ($machineclaw1_revolver); + $canspot2.bind ($machineclaw1_revolver); + $canspot3.bind ($machineclaw1_revolver); + $canspot4.bind ($machineclaw1_revolver); + + $can_dirty1.bind ($filterchamber); + $can_dirty2.bind ($filterchamber); + $chamber_filterspot1.bind ($filterchamber); + $chamber_filterspot2.bind ($filterchamber); + + $can_dirty4.bind ($cradle4); + $can_dirty5.bind ($cradle5); + $can_dirty6.bind ($cradle6); + + $cradle4_x.bind ($cradle4); + $cradle5_x.bind ($cradle5); + $cradle6_x.bind ($cradle6); + + // setup mover times for machineroom + + + $machineclaw1_carrier.time (2); + $machineclaw1_upperarm.time (1); + $machineclaw1_forearm.time (1); + $machineclaw1_hand.time (1); + $machineclaw1_revolver.time (1); + + $machineclaw1_carrier.accelTime (.50); + $machineclaw1_upperarm.accelTime (.1); + $machineclaw1_forearm.accelTime (.1); + $machineclaw1_hand.accelTime (.1); + $machineclaw1_revolver.accelTime (.1); + + $machineclaw1_carrier.decelTime (.50); + $machineclaw1_upperarm.decelTime (.1); + $machineclaw1_forearm.decelTime (.1); + $machineclaw1_hand.decelTime (.1); + $machineclaw1_revolver.decelTime (.1); + + $reloader.time (.25); + + //airlock door2 times + $airlock_door2_left.time (1.2); + $airlock_door2_right.time (1.2); + $airlock_door2_left.accelTime (.2); + $airlock_door2_left.decelTime (1); + $airlock_door2_right.accelTime (.2); + $airlock_door2_right.decelTime (1); + + $airlock_door2_top_lock.time (.25); + $airlock_door2_bottom_lock.time (.25); + + $airlock_door2_left_lock.time (.75); + $airlock_door2_right_lock.time (.75); + $airlock_door2_left_lock.accelTime (.1); + $airlock_door2_left_lock.decelTime (.65); + $airlock_door2_right_lock.accelTime (.1); + $airlock_door2_right_lock.decelTime (.65); + + + } + + /////////////////////////////////////////////// + // + // ceilingroom + // + ////////////////////////////////////////////// + + void ceilingroom_start () + { + sys.trigger ($explosion_1); + $ceilingroom_pipe_anchor.rotateOnce ('-15 0 0'); + $ceilingroom_pipe_anchor.move (DOWN ,28); + $ceilingroom_pipe_anchor.startSoundShader ("metalcrash_01", SND_CHANNEL_VOICE); + + sys.waitFor ($ceilingroom_pipe_anchor); + + $ceilingroom_pipe_anchor.accelTime (.1); + $ceilingroom_pipe_anchor.decelTime (.1); + $ceilingroom_pipe_anchor.time (.2); + + $ceilingroom_pipe_anchor.move (UP ,4); + $ceilingroom_pipe_anchor.rotateOnce ('3 0 0'); + + sys.waitFor ($ceilingroom_pipe_anchor); + + $ceilingroom_pipe_anchor.move (DOWN ,2); + $ceilingroom_pipe_anchor.rotateOnce ('-3 0 0'); + + $bloodsplat1.show (); + sys.wait (.1); + $bloodsplat2.show (); + sys.wait (.1); + $bloodsplat3.show (); + sys.wait (.1); + $bloodsplat4.show (); + sys.wait (.05); + $bloodsplat5.show (); + sys.wait (.1); + $bloodsplat6.show (); + sys.wait (.05); + + $ceiling_cover_anchor.rotateOnce ('-120 0 0'); + sys.wait (.3); + + sys.trigger ($func_fracture_6); + sys.trigger ($func_forcefield_6); + $func_forcefield_6.startSoundShader ("glasscrash_01", SND_CHANNEL_VOICE); + sys.wait (.3); + sys.trigger ($func_fracture_9); + sys.trigger ($func_forcefield_12); + $func_forcefield_6.startSoundShader ("glasscrash_01", SND_CHANNEL_VOICE); + sys.wait (.1); + sys.trigger ($breakglass_again); + } + + + /////////////////////////////////////////////// + // + // bridge + // + ////////////////////////////////////////////// + + void bridge_open () + { + $bridge_floor.time (2); + + $bridge_floor.startSoundShader ("enpro_bridge_2s", SND_CHANNEL_VOICE); + + $bridge_floor.moveTo ($bridge_spot2); + sys.waitFor ($bridge_floor); + $bridge_toprailing_left_anchor.rotateOnce ('0 0 88'); + $bridge_toprailing_right_anchor.startSoundShader ("enpro_bridge_rails_1s", SND_CHANNEL_VOICE); + $bridge_toprailing_right_anchor.rotateOnce ('0 0 -88'); + sys.waitFor ($bridge_toprailing_right_anchor); + + $bridge_btmrailing_left_anchor.startSoundShader ("enpro_bridge_rails_2_1s", SND_CHANNEL_VOICE); + $bridge_btmrailing_left_anchor.rotateOnce ('0 0 45'); + $bridge_btmrailing_right_anchor.rotateOnce ('0 0 -45'); + + } + + /////////////////////////////////////////////// + // + // zombie drop + // + ////////////////////////////////////////////// + + void zombie_drop () + { sys.trigger ($zombie_explosion_1); + sys.wait (.5); + sys.trigger ($zombie_explosion_2); + sys.wait (.2); + $zombie1.unbind (); + sys.wait (1); + $zombie_splat.show (); + } + + + ///////////////////////////////////////////////// + // + // coolant rod replacement stuff + // + ///////////////////////////////////////////////// + + void rod_replace () + { + thread xianstuff(); // Swap out sounds during this sequence + + // grab red rod + sys.wait (1); + $rod_replacer.moveTo ($rod_replacer_spot2); + sys.waitFor ($rod_replacer); + sys.wait (1); + $rod.bind ($rod_replacer); + $rod_replacer.moveTo ($rod_replacer_spot1); + sys.waitFor ($rod_replacer); + $rod.unbind (); + + $rod_door.rotateOnce ('0 180 0'); + + sys.wait (.5); + $rod_shimmer.hide (); + $rod_fire_emitter1.hide (); + $rod_fire_emitter2.hide (); + $rod_emitter3.hide (); + $rod_emitter4.hide (); + sys.trigger ($cyl_smoke); + + sys.waitFor ($rod_door); + sys.wait (1); + + $rod.moveTo ($rod_spot1); + sys.waitFor ($rod); + + // switch + $rod.hide (); + $rod_2.show (); + + $rod_fire_emitter1.hide (); + $rod_fire_emitter2.hide (); + $rod_emitter3.hide (); + $rod_emitter4.hide (); + $cyl_smoke.hide (); + + sys.trigger ($rod_redlight1); + sys.trigger ($rod_2_bluelight1); + sys.trigger ($rod_2_bluelight2); + + // blue rod + + $rod_2.moveTo ($rod_spot2); + sys.waitFor ($rod_2); + + $rod_2.bind ($rod_replacer); + $rod_replacer.moveTo ($rod_replacer_spot2); + sys.waitFor ($rod_replacer); + $rod_door.rotateOnce ('0 -180 0'); + sys.waitFor ($rod_door); + $rod_2.unbind (); + sys.wait (1); + + $rod_replacer.moveTo ($rod_replacer_spot1); + sys.waitFor ($rod_replacer); + + // switch out colors by hazarddoor up on level 2 + + sys.trigger ($hazard_redlight); + sys.trigger ($hazard_bluelight); + + $hazard_redemitter1.hide (); + $hazard_redemitter2.hide (); + $hazard_redemitter3.hide (); + $hazard_redemitter4.hide (); + + $hazard_redtube1.hide (); + $hazard_redtube2.hide (); + + $hazard_blueemitter1.show (); + $hazard_blueemitter2.show (); + $hazard_blueemitter3.show (); + $hazard_blueemitter4.show (); + + $hazard_bluetube1.show (); + $hazard_bluetube2.show (); + + sys.trigger ($cyl_lightrelay); + sys.trigger ($cyltop_on); + sys.trigger ($cyltop_off); + sys.trigger ($cylbottom_on); + sys.trigger ($cylbottom_off); + sys.trigger ($func_emitter_68); + sys.trigger ($func_emitter_69); + + sys.trigger ($hazdoortrigger); + + sys.trigger ($obj1complete); + sys.trigger ($obj1complete_trigger); + + } + + //////////////////////////////////////////////////// + // + // Rotate a cradle (machine room thing that - + // accepts dirty filters) around the ends + // + //////////////////////////////////////////////////// + void cradle_rotate( entity ent ) + { + //whole thing (up, around, and down + //takes 1 second like almost all the moves + ent.time ( .33 ); + ent.move ( UP, 16 ); + sys.waitFor (ent); + + ent.rotateOnce ( '0 0 180'); + sys.waitFor (ent); + + ent.move ( DOWN, 16 ); + ent.time (1); + } + + + void cache_sounds() { + sys.cacheSoundShader ("rec1_steamchuff"); + sys.cacheSoundShader ("metalcrash_01"); + sys.cacheSoundShader ("glasscrash_01"); + sys.cacheSoundShader ("enpro_bridge_2s"); + sys.cacheSoundShader ("enpro_bridge_rails_1s"); + sys.cacheSoundShader ("enpro_bridge_rails_2_1s"); + sys.cacheSoundShader ("dc3_gui_panel_1"); + sys.cacheSoundShader ("tb_m3_loop"); + sys.cacheSoundShader ("tb_m4_stop"); + sys.cacheSoundShader ("mach_1s"); + sys.cacheSoundShader ("rotor_1s"); + sys.cacheSoundShader ("tb_m4_stop"); + sys.cacheSoundShader ("tb_arm1"); + sys.cacheSoundShader ("tb_arm2"); + sys.cacheSoundShader ("tb_arm3"); + sys.cacheSoundShader ("tb_whomp"); + sys.cacheSoundShader ("tb_whompout"); + sys.cacheSoundShader ("tb_reloader1"); + sys.cacheSoundShader ("tb_reloader2"); + sys.cacheSoundShader ("al4_welder_armrot_1s"); + } + + //////////////////////////////////////////////////// + // + // Machineclaw movement + // + //////////////////////////////////////////////////// + void machineclaw1_move() + { + + // move machineclaw1 from initial position down and around track to filter pick up spot + //1 + + $sp_m2_carrier.startSoundShader ("dc3_gui_panel_1", SND_CHANNEL_VOICE2 ); + + $sp_m2_carrier.startSoundShader ("tb_m3_loop", SND_CHANNEL_VOICE ); // Start mover + + $machineclaw1_carrier_anchor.rotateOnce ( '0 -90 0' ); + sys.waitFor ($machineclaw1_carrier_anchor); + + //2 + + $machineclaw1_carrier_anchor.moveTo ( $machineclaw1_movepoint2 ); + sys.waitFor ($machineclaw1_carrier_anchor); + + //3 + + $sp_m2_carrier.startSoundShader ("dc3_gui_panel_1", SND_CHANNEL_VOICE2 ); + $machineclaw1_carrier_anchor.rotateOnce ( '0 -90 0' ); + sys.waitFor ($machineclaw1_carrier_anchor); + + //4 + + $machineclaw1_carrier_anchor.moveTo ( $machineclaw1_movepoint1 ); + sys.waitFor ($machineclaw1_carrier_anchor); + + // position machineclaw1 to receive filters + //5 + + $machineclaw1_carrier_anchor.moveTo ( $machineclaw1_movepoint12 ); + + $sp_m2_arm.startSoundShader ("mach_1s", SND_CHANNEL_VOICE2 ); + $machineclaw1_upperarm.rotateOnce ( '-30 0 35' ); + $sp_m2_rev.startSoundShader ("rotor_1s", SND_CHANNEL_VOICE2 ); + $machineclaw1_forearm.rotateOnce ( '80 0 0' ); + sys.waitFor ($machineclaw1_forearm); + + + $sp_m2_carrier.startSoundShader ("tb_m4_stop", SND_CHANNEL_VOICE ); // Stop Mover + + + //6 + + $sp_m2_rev.startSoundShader ("tb_arm3", SND_CHANNEL_BODY ); + + $machineclaw1_hand.rotateOnce ( '142.5 10 -90' ); + sys.waitFor ($machineclaw1_hand); + sys.waitFor ($machineclaw1_upperarm); + + //7 + + $sp_m2_arm.startSoundShader ("tb_arm2", SND_CHANNEL_VOICE2 ); + + $machineclaw1_upperarm.rotateOnce ( '-10 0 -43' ); + sys.wait (1); + + // get 1st new filter + + //8 + + $can_clean1.startSoundShader ("tb_whomp", SND_CHANNEL_VOICE ); + + $can_clean1.moveTo ($canspot1); + sys.waitFor ($can_clean1); + $can_clean1.bind ($machineclaw1_revolver); + + //steam + //9 + + $machineclaw1_steam1.startSoundShader ("rec1_steamchuff", SND_CHANNEL_VOICE2 ); + sys.trigger ( $machineclaw1_steam1 ); + sys.trigger ( $machineclaw1_steam2 ); + + // swing machineclaw1 away from receive position + + //10 + + $sp_m2_arm.startSoundShader ("tb_arm1", SND_CHANNEL_VOICE2 ); + + $machineclaw1_upperarm.rotateOnce ( '0 0 48' ); + + $sp_m2_rev.startSoundShader ("tb_arm2", SND_CHANNEL_VOICE2 ); + + $machineclaw1_forearm.rotateOnce ( '10 0 0' ); + sys.waitFor ($machineclaw1_upperarm); + + // reload 2 + //11 + + $sp_m2_reloader.startSoundShader ("tb_reloader1", SND_CHANNEL_VOICE ); + $reloader.move ( DOWN, 32 ); + sys.waitFor ($reloader); + + //12 + + $sp_m2_reloader.startSoundShader ("tb_reloader2", SND_CHANNEL_VOICE2 ); + $reloader.move ( UP, 32 ); + + $can_clean2.time (.25); + $can_clean3.time (.25); + + //13 + + $can_clean2.move ( UP, 32 ); + $can_clean3.move ( UP, 32 ); + + //14 + $can_clean2.time (1); + $can_clean3.time (1); + + // swing machineclaw1 back into receive position + + $sp_m2_arm.startSoundShader ("tb_arm1", SND_CHANNEL_VOICE2 ); + + $machineclaw1_upperarm.rotateOnce ( '0 0 -48' ); + + $sp_m2_rev.startSoundShader ("tb_arm2", SND_CHANNEL_VOICE2 ); + + $machineclaw1_forearm.rotateOnce ( '-10 0 0' ); + sys.wait (.5); + + // get 2nd new filter + //15 + + $sp_m2_rev.startSoundShader ("rotor_1s", SND_CHANNEL_BODY ); + + $machineclaw1_revolver.rotateOnce ( '0 -450 0'); + sys.waitFor ($machineclaw1_revolver); + + //steam + //16 + + $machineclaw1_steam2.startSoundShader ("rec1_steamchuff", SND_CHANNEL_VOICE2 ); + sys.trigger ( $machineclaw1_steam1 ); + sys.trigger ( $machineclaw1_steam2 ); + + $can_clean2.startSoundShader ("tb_whomp", SND_CHANNEL_VOICE ); + + $can_clean2.moveTo ($canspot2); + sys.waitFor ($can_clean2); + + $can_clean2.bind ($machineclaw1_revolver); + + // machineclaw1 movement out of receive position + + //17 + + $sp_m2_arm.startSoundShader ("tb_arm1", SND_CHANNEL_VOICE2 ); + $machineclaw1_upperarm.rotateOnce ( '0 0 38' ); + sys.waitFor ($machineclaw1_upperarm); + + + //18 + + $sp_m2_rev.startSoundShader ("rotor_1s", SND_CHANNEL_VOICE ); + $machineclaw1_hand.rotateOnce ( '-142.5 -10 90' ); + sys.waitFor ($machineclaw1_hand); + + //19 + + $sp_m2_arm.startSoundShader ("tb_arm1", SND_CHANNEL_VOICE2 ); + $machineclaw1_upperarm.rotateOnce ( '0 0 -20' ); + + $sp_m2_carrier.startSoundShader ("tb_m3_loop", SND_CHANNEL_VOICE ); // Start mover + + $machineclaw1_carrier_anchor.moveTo ( $machineclaw1_movepoint1 ); + sys.waitFor ($machineclaw1_upperarm); + + $sp_m2_carrier.startSoundShader ("tb_m4_stop", SND_CHANNEL_VOICE ); // Stop Mover + + //20 + + $sp_m2_arm.startSoundShader ("tb_arm2", SND_CHANNEL_VOICE ); + $machineclaw1_forearm.rotateOnce ( '25 0 0' ); + sys.wait (.5); + + //21 + + $sp_m2_arm.startSoundShader ("tb_arm1", SND_CHANNEL_VOICE2 ); + $machineclaw1_upperarm.rotateOnce ( '0 0 -10' ); + + // sys.waitFor ($machineclaw1_upperarm); + + // reload 3 + $sp_m2_reloader.startSoundShader ("tb_reloader1", SND_CHANNEL_VOICE ); + $reloader.move ( DOWN, 32 ); + sys.waitFor ($reloader); + + //22 + $sp_m2_reloader.startSoundShader ("tb_reloader2", SND_CHANNEL_VOICE2 ); + $reloader.move ( UP, 32 ); + $can_clean3.time (.25); + $can_clean3.move ( UP, 32 ); + $can_clean3.time (1); + + // move machineclaw1 from filter pick up spot to filterpoint1 + //23 + + $sp_m2_carrier.startSoundShader ("tb_m3_loop", SND_CHANNEL_VOICE ); // Start mover + + $machineclaw1_carrier_anchor.moveTo ( $machineclaw1_movepoint2 ); + sys.waitFor ($machineclaw1_carrier_anchor); + + //24 + + $machineclaw1_carrier_anchor.rotateOnce ( '0 90 0' ); + + $sp_m2_arm.startSoundShader ("tb_arm1", SND_CHANNEL_VOICE2 ); + + $machineclaw1_upperarm.rotateOnce ( '0 -45 0' ); + sys.waitFor ($machineclaw1_carrier_anchor); + + //25 + + $machineclaw1_carrier_anchor.moveTo ( $machineclaw1_filterpoint1 ); + + $sp_m2_arm.startSoundShader ("tb_arm1", SND_CHANNEL_VOICE2 ); + + $machineclaw1_upperarm.rotateOnce ( '-5 -45 -15' ); + + $sp_m2_rev.startSoundShader ("tb_arm2", SND_CHANNEL_VOICE2 ); + + $machineclaw1_forearm.rotateOnce ( '-15 0 0' ); + + sys.waitFor ($machineclaw1_carrier_anchor); + + $sp_m2_carrier.startSoundShader ("tb_m4_stop", SND_CHANNEL_VOICE ); // Stop Mover + + // filterchamber movement up and rotate 45 degrees for filter removal + //26 + + $chamberpivot1.startSoundShader ("tb_arm3", SND_CHANNEL_VOICE2 ); + $chamberpivot1.move ( UP, 42 ); + sys.waitFor ($chamberpivot1); + + //26a + + $filterchamber.startSoundShader ("tb_arm3", SND_CHANNEL_VOICE2 ); + $filterchamber.rotateOnce ( '45 0 0'); + sys.waitFor ($filterchamber); + + // exchange filter 1 + + //27 + + $sp_m2_arm.startSoundShader ("tb_arm1", SND_CHANNEL_VOICE2 ); + + $machineclaw1_upperarm.rotateOnce ( '30 0 0' ); + + $sp_m2_rev.startSoundShader ("tb_arm2", SND_CHANNEL_VOICE2 ); + + $machineclaw1_forearm.rotateOnce ( '-20 0 0' ); + + // $machineclaw1_hand.rotateOnce ( '-5 0 0' ); + $machineclaw1_hand.rotateOnce ( '-12 0 0' ); + + sys.waitFor ($machineclaw1_upperarm); + + //28 + + $sp_m2_arm.startSoundShader ("tb_arm3", SND_CHANNEL_VOICE2 ); + + $machineclaw1_upperarm.rotateOnce ( '0 0 15' ); + + $sp_m2_rev.startSoundShader ("rotor_1s", SND_CHANNEL_VOICE ); + + $machineclaw1_revolver.rotateOnce ( '0 90 0'); + + sys.waitFor ($machineclaw1_upperarm); + + //get old filter + //29 + + $can_dirty1.startSoundShader ("tb_whomp", SND_CHANNEL_VOICE ); + $can_dirty1.moveTo ( $canspot3 ); + + $machineclaw1_steam1.startSoundShader ("rec1_steamchuff", SND_CHANNEL_VOICE2 ); + + sys.trigger ( $machineclaw1_steam1 ); + sys.trigger ( $machineclaw1_steam2 ); + + sys.waitFor ($can_dirty1); + $can_dirty1.unbind (); + $can_dirty1.bind ( $machineclaw1_revolver ); + + + sys.wait (.5); + + //30 + + $sp_m2_rev.startSoundShader ("rotor_1s", SND_CHANNEL_VOICE ); + $machineclaw1_revolver.rotateOnce ( '0 180 0'); + sys.waitFor ($machineclaw1_revolver); + + //steam + sys.trigger ( $machineclaw1_steam1 ); + sys.trigger ( $machineclaw1_steam2 ); + $machineclaw1_steam2.startSoundShader ("rec1_steamchuff", SND_CHANNEL_VOICE2 ); + + + //insert new filter + //31 + + $can_clean1.startSoundShader ("tb_whompout", SND_CHANNEL_VOICE2 ); + + $can_clean1.moveTo ( $chamber_filterspot1 ); + sys.waitFor ($can_clean1); + $can_clean1.unbind (); + + $can_clean1.bind ( $chamber_filterspot1 ); + + // move machineclaw1 from filterpoint1 to filterpoint2 + + //32 + $sp_m2_carrier.startSoundShader ("tb_m3_loop", SND_CHANNEL_VOICE ); // Start mover + + $machineclaw1_carrier_anchor.moveTo ( $machineclaw1_filterpoint2 ); + sys.waitFor ($machineclaw1_carrier_anchor); + + $sp_m2_carrier.startSoundShader ("tb_m4_stop", SND_CHANNEL_VOICE ); // Stop Mover + + // exchange filter 2 + //33 + + $sp_m2_rev.startSoundShader ("rotor_1s", SND_CHANNEL_VOICE2 ); + $machineclaw1_revolver.rotateOnce ( '0 -270 0'); + sys.waitFor ($machineclaw1_revolver); + + //steam + + //34 + + $machineclaw1_steam1.startSoundShader ("rec1_steamchuff", SND_CHANNEL_VOICE2 ); + sys.trigger ( $machineclaw1_steam1 ); + sys.trigger ( $machineclaw1_steam2 ); + + //get old filter + $can_ditry2.startSoundShader ("tb_whomp", SND_CHANNEL_VOICE ); + $can_dirty2.moveTo ( $canspot4 ); + sys.waitFor ($can_dirty2); + $can_dirty2.unbind (); + $can_dirty2.bind ( $machineclaw1_revolver ); + + sys.wait (.5); + + //35 + + $sp_m2_rev.startSoundShader ("rotor_1s", SND_CHANNEL_VOICE ); + $machineclaw1_revolver.rotateOnce ( '0 180 0'); + sys.waitFor ($machineclaw1_revolver); + + //steam + $machineclaw1_steam2.startSoundShader ("rec1_steamchuff", SND_CHANNEL_VOICE2 ); + sys.trigger ( $machineclaw1_steam1 ); + sys.trigger ( $machineclaw1_steam2 ); + + //insert new filter + //36 + + $can_clean2.startSoundShader ("tb_whompout", SND_CHANNEL_VOICE2 ); + + $can_clean2.moveTo ( $chamber_filterspot2 ); + sys.waitFor ($can_clean2); + $can_clean2.unbind (); + $can_clean2.bind ( $chamber_filterspot2 ); + + + sys.wait (1); + + // move machineclaw1 from filterpoint2 to dump spot + //37 + + $sp_m2_carrier.startSoundShader ("tb_m3_loop", SND_CHANNEL_VOICE ); // Start mover + + $machineclaw1_carrier_anchor.moveTo ( $machineclaw1_movepoint3 ); + + $sp_m2_arm.startSoundShader ("tb_arm2", SND_CHANNEL_VOICE ); + + $machineclaw1_forearm.rotateOnce ( '40 0 0' ); + sys.waitFor ($machineclaw1_carrier_anchor); + + //38 + + $machineclaw1_carrier_anchor.rotateOnce ( '0 90 0' ); + sys.waitFor ($machineclaw1_carrier_anchor); + + //39 + + $machineclaw1_carrier.rotateOnce ( '0 -90 0' ); + $machineclaw1_carrier_anchor.moveTo ( $machineclaw1_movepoint4 ); + + $sp_m2_rev.startSoundShader ("tb_arm1", SND_CHANNEL_VOICE2 ); + + $machineclaw1_forearm.rotateOnce ( '-17 0 0' ); + + $sp_m2_arm.startSoundShader ("tb_arm2", SND_CHANNEL_VOICE2 ); + + $machineclaw1_upperarm.rotateOnce ( '-15 0 -18' ); + sys.waitFor ($machineclaw1_carrier_anchor); + + $sp_m2_carrier.startSoundShader ("tb_m4_stop", SND_CHANNEL_VOICE ); // Stop Mover + + //40 + + $sp_m2_rev.startSoundShader ("rotor_1s", SND_CHANNEL_VOICE ); + + $machineclaw1_hand.rotateOnce ( '39 16 0' ); + sys.waitFor ($machineclaw1_hand); + + // dump old filters + //move cradles up,down and around + + //41 + + $cradle4.startSoundShader ("al4_welder_armrot_1s", SND_CHANNEL_VOICE ); + + $cradle4.rotateOnce ( '0 0 180' ); + $cradle5.move ( DOWN, 32 ); + $cradle6.move ( DOWN, 32 ); + thread cradle_rotate ( $cradle1 ); + $cradle2.move ( UP, 32 ); + $cradle3.move ( UP, 32 ); + sys.waitFor ($cradle2); + sys.killthread ( "map_enpro::cradle_rotate" ); + + $can_dirty4.unbind (); + $can_dirty4.remove (); + + //put dirty1 on cradle1 + //42 + + $sp_m2_rev.startSoundShader ("rotor_1s", SND_CHANNEL_VOICE ); + $machineclaw1_revolver.rotateOnce ( '0 -90 0' ); + sys.waitFor ($machineclaw1_revolver); + + //steam + //42a + + $machineclaw1_steam1.startSoundShader ("rec1_steamchuff", SND_CHANNEL_VOICE2 ); + sys.trigger ( $machineclaw1_steam1 ); + sys.trigger ( $machineclaw1_steam2 ); + + $can_dirty1.startSoundShader ("tb_whomp", SND_CHANNEL_VOICE ); + $can_dirty1.moveTo ( $cradlespot ); + + sys.waitFor ($can_dirty1); + $can_dirty1.unbind (); + $can_dirty1.bind ( $cradle1 ); + + + //move cradles around again + //43 + + $cradle5.startSoundShader ("al4_welder_armrot_1s", SND_CHANNEL_VOICE ); + + $cradle5.rotateOnce ( '0 0 180' ); + $cradle6.move ( DOWN, 32 ); + $cradle1.move ( DOWN, 32 ); + thread cradle_rotate ( $cradle2 ); + $cradle3.move ( UP, 32 ); + $cradle4.move ( UP, 32 ); + sys.waitFor ($cradle3); + sys.killthread ( "map_enpro::cradle_rotate" ); + + $can_dirty5.unbind (); + $can_dirty5.remove (); + + //put dirty2 on cradle2 + //44 + + $sp_m2_rev.startSoundShader ("rotor_1s", SND_CHANNEL_VOICE ); + $machineclaw1_revolver.rotateOnce ( '0 630 0' ); + sys.waitFor ($machineclaw1_revolver); + + //steam + //44a + + $machineclaw1_steam2.startSoundShader ("rec1_steamchuff", SND_CHANNEL_VOICE2 ); + sys.trigger ( $machineclaw1_steam1 ); + sys.trigger ( $machineclaw1_steam2 ); + + $can_dirty.startSoundShader ("tb_whomp", SND_CHANNEL_VOICE ); + $can_dirty2.moveTo ( $cradlespot ); + + sys.waitFor ($can_dirty2); + $can_dirty2.unbind (); + $can_dirty2.bind ( $cradle2 ); + + //move cradles around again - last time + + //45 + + $cradle6.startSoundShader ("al4_welder_armrot_1s", SND_CHANNEL_VOICE ); + + $cradle6.rotateOnce ( '0 0 180' ); + $cradle1.move ( DOWN, 32 ); + $cradle2.move ( DOWN, 32 ); + thread cradle_rotate ( $cradle3 ); + $cradle4.move ( UP, 32 ); + $cradle5.move ( UP, 32 ); + sys.waitFor ($cradle4); + sys.killthread ( "map_enpro::cradle_rotate" ); + + $can_dirty6.unbind (); + $can_dirty6.remove (); + + + // filterchamber rotate 45 degrees and movement down back to original position + //46 + + $filterchamber.startSoundShader ("tb_arm3", SND_CHANNEL_VOICE ); + + $filterchamber.rotateOnce ( '-45 0 0'); + sys.waitFor ($filterchamber); + + //47 + + $chamberpivot1.startSoundShader ("tb_arm3", SND_CHANNEL_VOICE ); + + $chamberpivot1.move ( DOWN, 42 ); + sys.waitFor ($chamberpivot1); + + sys.trigger ($tube_particle_3); + sys.trigger ($tube_particle_4); + sys.trigger ($tube_particle_5); + sys.trigger ($tube_particle_6); + sys.trigger ($plasmacontrol_light2); + sys.trigger ($plasmacontrol_light3); + } + +///////////////////////////////////// +/////////// exit airlock door +///////////////////////////////////// + + void exit_open() + + { //disable the gui on door2 + $airlock_door2_gui.setGuiParm ( "gui_parm1" , 0); + + //move the 4 locks to unlock position + $airlock_door2_top_lock.move ( UP, 15 ); + + sys.trigger ($speaker_airlock_door2_bottom_lock); // sound + + $airlock_door2_bottom_lock.move ( DOWN, 15 ); + sys.waitFor ($airlock_door2_bottom_lock); + + sys.trigger ($speaker_airlock_door2_left_lock); + $airlock_door2_left_lock.move ( NORTH, 16 ); + sys.trigger ($speaker_airlock_door2_right_lock); + $airlock_door2_right_lock.move ( NORTH, 16 ); + sys.waitFor ($airlock_door2_right_lock); + + //open doors + sys.trigger ($speaker_airlock_door2_open); + + $airlock_door2_left.rotateOnce ( '0 45 0' ); + $airlock_door2_right.rotateOnce ( '0 -45 0' ); + + sys.waitFor ($airlock_door2_right); + sys.waitFor ($airlock_door2_left); + } + + void main() + { + cache_sounds(); + setup_objects(); + + + } +} diff --git a/base/script/map_hell1.script b/base/script/map_hell1.script new file mode 100644 index 00000000..53bd7150 --- /dev/null +++ b/base/script/map_hell1.script @@ -0,0 +1,1212 @@ +namespace map_hell1 { + + float cage_instance = 0; + + void setup_objects () + { + $brickdoor1.accelTime (.2); + $brickdoor1.decelTime (.3); + $brickdoor1.time (1); + + $alcove1_leftwall.accelTime (.5); + $alcove1_leftwall.decelTime (.5); + $alcove1_leftwall.time (4); + $alcove1_rightwall.accelTime (.5); + $alcove1_rightwall.decelTime (.5); + $alcove1_rightwall.time (4); + $alcove1_backwall.accelTime (.5); + $alcove1_backwall.decelTime (.5); + $alcove1_backwall.time (4); + + $alcove2_leftwall.accelTime (.5); + $alcove2_leftwall.decelTime (.5); + $alcove2_leftwall.time (4); + $alcove2_rightwall.accelTime (.5); + $alcove2_rightwall.decelTime (.5); + $alcove2_rightwall.time (4); + $alcove2_backwall.accelTime (.5); + $alcove2_backwall.decelTime (.5); + $alcove2_backwall.time (4); + + $brick1.time (1.5); + $brick2.time (1); + $brick3.time (1.2); + $brick4.time (1); + $brick5.time (1.5); + $brick6.time (1.3); + $brick7.time (1.4); + $brick8.time (1); + $brick9.time (1.5); + $brick10.time (1); + $brick11.time (1.5); + $bricksleft_anchor.time (1.3); + $bricksright_anchor.time (1.3); + + $bricksleft.bind ($bricksleft_anchor); + $bricksright.bind ($bricksright_anchor); + + $rock1.bind ($rock_rotating1); + $rock2.bind ($rock_rotating2); + $rock3.bind ($rock_rotating3); + $rock4.bind ($rock_rotating4); + $rock5.bind ($rock_rotating5); + $rock6.bind ($rock_rotating6); + $rock7.bind ($rock_rotating7); + $rock8.bind ($rock_rotating8); + $rock9.bind ($rock_rotating9); + $rock10.bind ($rock_rotating10); + $rock11.bind ($rock_rotating11); + $rock12.bind ($rock_rotating12); + + $cageside1.bind ($cageside1_rotate); + $cageside2.bind ($cageside2_rotate); + $cageside3.bind ($cageside3_rotate); + $cageside4.bind ($cageside4_rotate); + $cagebottom.bind ($cagebottom_rotate); + + $cage2side1.bind ($cage2side1_anchor); + $cage2side2.bind ($cage2side2_anchor); + $cage2side3.bind ($cage2side3_anchor); + $cage2side4.bind ($cage2side4_anchor); + + $cageroom_mover.accelTime (.5); + $cageroom_mover.decelTime (.5); + $cageroom_mover.time (9); + + $wall1.bind ($wall1_anchor); + $wall2.bind ($wall2_anchor); + + $step1.time (.5); + $step2.time (.5); + $step3.time (.5); + $step4.time (.5); + $step5.time (.5); + $step6.time (.5); + + $doorblock1.time (.4); + $doorblock1.decelTime (.1); + + } + + void telering_move () + { + while (1) + { + $telering_anchor.accelTime (.4); + $telering_anchor.decelTime (.4); + $telering_anchor.time (1); + $telering_anchor.rotateOnce ('-10 15 5'); + sys.waitFor ($telering_anchor); + $telering_anchor.rotateOnce ('10 -15 -5'); + sys.waitFor ($telering_anchor); + + $telering_anchor.accelTime (.5); + $telering_anchor.decelTime (.5); + $telering_anchor.time (2); + $telering_anchor.rotateOnce ('20 10 0'); + sys.waitFor ($telering_anchor); + $telering_anchor.rotateOnce ('-20 -10 0'); + sys.waitFor ($telering_anchor); + + sys.wait (1); + } + } + + void telering_bob () + { + while (1) + { + $telering_bobbing.accelTime (.5); + $telering_bobbing.decelTime (.5); + $telering_bobbing.time (4); + $telering_bobbing.move (UP,32); + sys.waitFor ($telering_bobbing); + $telering_bobbing.move (DOWN,32); + sys.waitFor ($telering_bobbing); + sys.trigger ($telering_spark); + + $telering_spark.startSoundShader ("tp_electro", SND_CHANNEL_VOICE2 ); + + sys.trigger ($telering_light1); + sys.trigger ($telering_light2); + sys.wait (1); + sys.trigger ($telering_spark); + sys.trigger ($telering_light1); + sys.trigger ($telering_light2); + } + } + + void cage_mover (entity ent, vector vec, float ftime, entity etarget) { + cage_instance++; + ent.time (ftime); + ent.rotateOnce (vec); + ent.moveTo (etarget); + sys.waitFor (ent); + + if (cage_instance == 1 ) + ent.startSoundShader ("gateimpact_01", SND_CHANNEL_VOICE2 ); + if (cage_instance == 2 ) + ent.startSoundShader ("gateimpact_02", SND_CHANNEL_VOICE2 ); + if (cage_instance == 3 ) + ent.startSoundShader ("gateimpact_03", SND_CHANNEL_VOICE2 ); + if (cage_instance == 4 ) + ent.startSoundShader ("gateimpact_04", SND_CHANNEL_VOICE2 ); + if (cage_instance == 5 ) + ent.startSoundShader ("gateimpact_05", SND_CHANNEL_VOICE2 ); + } + + + ////////////////////////// + // fly hazmat + ////////////////////////// + + void StartSplineMover() { + $hazmat_mover.time( 10 ); + $hazmat_mover.accelTime( 2 ); + + sys.trigger ($speaker_corpsemover); // On + + $hazmat_mover.startSpline( $func_splinemover_1 ); + $hazmat_mover.removeInitialSplineAngles(); + + sys.waitFor ($hazmat_mover); + + sys.trigger ($speaker_corpsemover); // Off + + sys.trigger ($hazmat_remove); + sys.trigger ($hazmat_splash); + sys.wait (2); + sys.trigger ($hazmat_splash); + } + + + ////////////////////////// + // cage + ////////////////////////// + + //trap player in cage + + void cage_close () + { + $cageroom_mover.move (UP ,300); + + + $cageside1_rotate.time (4); + $cageside2_rotate.time (4); + $cageside3_rotate.time (4); + $cageside4_rotate.time (4); + $cagebottom_rotate.time (4); + + $cageside1_rotate.rotateOnce ('0 360 0'); + $cageside2_rotate.rotateOnce ('0 360 0'); + $cageside3_rotate.rotateOnce ('0 360 0'); + $cageside4_rotate.rotateOnce ('0 360 0'); + $cagebottom_rotate.rotateOnce ('360 720 360'); + + + sys.waitFor ($cageside1_rotate); + + $cageside1.unbind (); + $cageside2.unbind (); + $cageside3.unbind (); + $cageside4.unbind (); + $cagebottom.unbind (); + + sys.waitFor ($cageside1); + + + thread cage_mover ($cageside1, '0 -360 0', 3, $cageside1_spot1); + sys.wait (1); + thread cage_mover ($cageside2, '0 -360 0', 3, $cageside1_spot1); + sys.wait (1); + thread cage_mover ($cageside3, '0 -360 0', 3, $cageside1_spot1); + sys.wait (1); + thread cage_mover ($cageside4, '0 -360 0', 3, $cageside1_spot1); + sys.wait (1); + cage_mover ($cagebottom, '0 0 0', 3, $cagebottom_spot1); + + sys.wait (0.5); + + +/* + $cageside1.time (3); + $cageside2.time (3); + $cageside3.time (3); + $cageside4.time (3); + $cagebottom.time (3); + + $cageside1.rotateOnce ('0 -360 0'); + $cageside2.rotateOnce ('0 -360 0'); + $cageside3.rotateOnce ('0 -360 0'); + $cageside4.rotateOnce ('0 -360 0'); + + $cageside1.moveTo ($cageside1_spot1); + $cageside2.moveTo ($cageside1_spot1); + $cageside3.moveTo ($cageside1_spot1); + $cageside4.moveTo ($cageside1_spot1); + $cagebottom.moveTo ($cagebottom_spot1); +*/ + + //sys.waitFor ($cageside1); + + sys.trigger ($soul_emitter_1); + + sys.wait (2); + + sys.trigger ($light_trigger1); + + //move room and rocks up fast + + $rock1.unbind (); + $rock2.unbind (); + $rock3.unbind (); + $rock4.unbind (); + $rock5.unbind (); + $rock6.unbind (); + $rock7.unbind (); + $rock8.unbind (); + $rock9.unbind (); + $rock10.unbind (); + $rock11.unbind (); + $rock12.unbind (); + + $rock1.bind ($cageroom_mover); + $rock2.bind ($cageroom_mover); + $rock3.bind ($cageroom_mover); + $rock4.bind ($cageroom_mover); + $rock5.bind ($cageroom_mover); + $rock6.bind ($cageroom_mover); + $rock7.bind ($cageroom_mover); + $rock8.bind ($cageroom_mover); + $rock9.bind ($cageroom_mover); + $rock10.bind ($cageroom_mover); + $rock11.bind ($cageroom_mover); + $rock12.bind ($cageroom_mover); + $rock13.bind ($cageroom_mover); + $rock14.bind ($cageroom_mover); + $rock15.bind ($cageroom_mover); + $rock16.bind ($cageroom_mover); + $rock17.bind ($cageroom_mover); + $rock18.bind ($cageroom_mover); + $rock19.bind ($cageroom_mover); + $rock20.bind ($cageroom_mover); + + $cageroom_tube.bind ($cageroom_mover); + $cageroom_mover.accelTime (2); + $cageroom_mover.time (4); + + $cageroom_mover.startSoundShader ("cage_decent", SND_CHANNEL_VOICE ); + + $cageroom_mover.move (UP ,5000); + + sys.wait (4); + + sys.trigger ($cage_teleport); + $cage2side1_anchor.startSoundShader ("gates_land", SND_CHANNEL_VOICE ); + + } + +void cage_open () + + { + //release player in new area + + $cage2side1_anchor.startSoundShader ("hell_revgate", SND_CHANNEL_VOICE2 ); + + $cage2side1_anchor.time (.2); + $cage2side2_anchor.time (.2); + $cage2side3_anchor.time (.2); + $cage2side4_anchor.time (.2); + + $cage2side1_anchor.rotateOnce ('3 0 0'); + $cage2side2_anchor.rotateOnce ('0 0 2'); + $cage2side3_anchor.rotateOnce ('-3 0 0'); + $cage2side4_anchor.rotateOnce ('0 0 -2'); + + sys.waitFor ($cage2side1_anchor); + + $cage2side1_anchor.decelTime (.5); + $cage2side2_anchor.decelTime (.5); + $cage2side3_anchor.decelTime (.5); + $cage2side4_anchor.decelTime (.5); + + $cage2side1_anchor.time (.6); + $cage2side2_anchor.time (.8); + $cage2side3_anchor.time (.6); + $cage2side4_anchor.time (.8); + + $cage2side1_anchor.rotateOnce ('-40 0 0'); + $cage2side2_anchor.rotateOnce ('0 0 -40'); + $cage2side3_anchor.rotateOnce ('40 0 0'); + $cage2side4_anchor.rotateOnce ('0 0 40'); + + sys.waitFor ($cage2side1_anchor); + + $cage2side1_anchor.accelTime (1); + $cage2side2_anchor.accelTime (1); + $cage2side3_anchor.accelTime (1); + $cage2side4_anchor.accelTime (1); + + $cage2side1_anchor.time (1); + $cage2side2_anchor.time (1); + $cage2side3_anchor.time (1); + $cage2side4_anchor.time (1); + + sys.waitFor ($cage2side1_anchor); + + $cage2side1_anchor.moveTo ($cage2side1_spot1); + $cage2side2_anchor.moveTo ($cage2side2_spot1); + $cage2side3_anchor.moveTo ($cage2side3_spot1); + $cage2side4_anchor.moveTo ($cage2side4_spot1); + + sys.waitFor ($cage2side1_anchor); + + + $cage2side1_anchor.rotateOnce ('-300 0 0'); + $cage2side2_anchor.rotateOnce ('0 0 -300'); + $cage2side3_anchor.rotateOnce ('300 0 0'); + $cage2side4_anchor.rotateOnce ('0 0 300'); + + $cage2side1_anchor.moveTo ($cage2side1_spot2); + $cage2side2_anchor.moveTo ($cage2side2_spot2); + $cage2side3_anchor.moveTo ($cage2side3_spot2); + $cage2side4_anchor.moveTo ($cage2side4_spot2); + + sys.waitFor ($cage2side1_anchor); + + $cage2side1_anchor.time (.8); + $cage2side2_anchor.time (.8); + $cage2side3_anchor.time (.8); + $cage2side4_anchor.time (.8); + + $cage2side1_anchor.rotateOnce ('-800 0 0'); + $cage2side2_anchor.rotateOnce ('0 0 -800'); + $cage2side3_anchor.rotateOnce ('800 0 0'); + $cage2side4_anchor.rotateOnce ('0 0 800'); + + $cage2side1_anchor.moveTo ($cage2side1_spot3); + $cage2side2_anchor.moveTo ($cage2side2_spot3); + $cage2side3_anchor.moveTo ($cage2side3_spot3); + $cage2side4_anchor.moveTo ($cage2side4_spot3); + + + } + + ////////////////////////// + // wall open + ////////////////////////// + + //rearrange blocks + + void wall_open () + { + $wall4_corner.time (.5); + $wall4_corner.accelTime (.5); + $wall1_1.time (.5); + $wall1_1.decelTime (.5); + $wall1_2.time (.5); + $wall1_2.decelTime (.5); + $wall1_3.time (.5); + $wall1_3.decelTime (.5); + $wall1_4.time (.5); + $wall1_4.decelTime (.5); + $wall1_5.time (.5); + $wall1_5.decelTime (.5); + $wall1_6.time (.6); + $wall1_6.decelTime (.5); + + $wall2_1.time (1); + $wall2_1.decelTime (.5); + $wall2_2.time (.5); + $wall2_2.decelTime (.5); + $wall2_3.time (.5); + $wall2_3.decelTime (.5); + $wall2_4.time (.5); + $wall2_4.decelTime (.5); + $wall2_5.time (.6); + $wall2_5.decelTime (.5); + $wall2_6.time (.5); + $wall2_6.decelTime (.5); + + $wall3_1.time (.6); + $wall3_1.decelTime (.5); + $wall3_2.time (.6); + $wall3_2.decelTime (.5); + $wall3_3.time (.6); + $wall3_3.decelTime (.5); + $wall3_4.time (.6); + $wall3_4.decelTime (.5); + $wall3_5.time (.6); + $wall3_5.decelTime (.5); + $wall3_6.time (.6); + $wall3_6.decelTime (.5); + + $wall4_1.time (.8); + $wall4_1.decelTime (.5); + $wall4_2.time (.6); + $wall4_2.decelTime (.5); + $wall4_3.time (2); + $wall4_3.decelTime (.5); + $wall4_4.time (.5); + $wall4_4.decelTime (.5); + $wall4_5.time (1); + $wall4_5.decelTime (.5); + + $wall1_anchor.rotateOnce ('0 -80 0'); + $wall2_anchor.rotateOnce ('0 80 0'); + + $wall1_1.move (SOUTH ,320); + $wall1_1.rotateOnce ('0 -90 0'); + + $wall1_corner.moveTo ($wall1_corner_spot1); + $wall1_2.moveTo ($wall1_2_spot1); + $wall1_3.moveTo ($wall1_3_spot1); + $wall1_4.moveTo ($wall1_4_spot1); + $wall1_5.moveTo ($wall1_5_spot1); + $wall1_6.moveTo ($wall1_6_spot1); + + $wall2_2.moveTo ($wall2_2_spot1); + $wall2_3.moveTo ($wall2_3_spot1); + $wall2_4.moveTo ($wall2_4_spot1); + $wall2_5.moveTo ($wall2_5_spot1); + $wall2_6.moveTo ($wall2_6_spot1); + + sys.waitFor ($wall1_anchor); + + $wall1_corner.move (UP ,128); + + $wall1_2.rotateOnce ('0 180 0'); + $wall1_3.rotateOnce ('0 180 0'); + $wall1_4.rotateOnce ('0 180 0'); + $wall1_5.rotateOnce ('0 180 0'); + $wall1_6.rotateOnce ('0 270 0'); + + $wall2_2.rotateOnce ('0 -180 0'); + $wall2_3.rotateOnce ('0 -90 0'); + $wall2_4.rotateOnce ('0 -180 0'); + $wall2_5.rotateOnce ('0 90 0'); + $wall2_6.rotateOnce ('0 -180 0'); + + $wall1_2.moveTo ($wall1_2_spot2); + $wall1_3.moveTo ($wall1_3_spot2); + $wall1_4.moveTo ($wall1_4_spot2); + $wall1_5.moveTo ($wall1_5_spot2); + $wall1_6.moveTo ($wall1_6_spot2); + + $wall2_2.moveTo ($wall2_2_spot2); + $wall2_3.moveTo ($wall2_3_spot2); + $wall2_4.moveTo ($wall2_4_spot2); + $wall2_5.moveTo ($wall2_5_spot2); + $wall2_6.moveTo ($wall2_6_spot2); + + $wall3_1.move (WEST ,320); + + sys.waitFor ($wall3_1); + + $wall3_2.moveTo ($wall3_2_spot1); + $wall3_2.moveTo ($wall3_2_spot2); + + $wall3_3.moveTo ($wall3_2_spot1); + $wall3_3.moveTo ($wall3_3_spot2); + + $wall3_4.moveTo ($wall3_4_spot1); + $wall3_4.moveTo ($wall3_4_spot2); + + $wall3_5.moveTo ($wall3_5_spot1); + $wall3_5.moveTo ($wall3_5_spot2); + + $wall3_6.moveTo ($wall3_6_spot1); + $wall3_6.rotateOnce ('0 180 0'); + $wall3_6.moveTo ($wall3_6_spot2); + + $wall2_1.moveTo ($wall2_1_spot1); + sys.waitFor ($wall2_1); + $wall2_1.rotateOnce ('0 270 0'); + $wall2_1.moveTo ($wall2_1_spot2); + + $wall4_corner.moveTo ($wall4_corner_spot1); + sys.waitFor ($wall4_corner); + $wall4_corner.move (UP ,128); + + $wall4_1.move (EAST ,256); + + $wall4_2.moveTo ($wall4_2_spot1); + sys.waitFor ($wall4_2); + $wall4_2.moveTo ($wall4_2_spot2); + + $wall4_3.moveTo ($wall4_3_spot1); + sys.waitFor ($wall4_3); + $wall4_3.moveTo ($wall4_3_spot2); + + $wall4_4.moveTo ($wall4_4_spot1); + sys.waitFor ($wall4_4); + $wall4_4.moveTo ($wall4_4_spot2); + + $wall4_5.moveTo ($wall4_5_spot1); + sys.waitFor ($wall4_5); + $wall4_5.rotateOnce ('0 0 360'); + $wall4_5.moveTo ($wall4_5_spot2); + + } + + ////////////////////////// + // form bridge + ////////////////////////// + + //rearrange blocks to make bridge + + void bridge_form () + { + sys.trigger ($bridgequake); + + $wall1_corner.rotateOnce ('0 180 0'); + $wall4_corner.rotateOnce ('0 -180 0'); + $wall1_corner.moveTo ($wall1_corner_spot2); + $wall4_corner.moveTo ($wall4_corner_spot2); + + sys.waitFor ($wall4_corner); + + $wall1_corner.moveTo ($wall1_corner_spot3); + $wall4_corner.moveTo ($wall4_corner_spot3); + + sys.waitFor ($wall4_corner); + + $wall1_1.time (2); + $wall1_1.decelTime (.5); + $wall1_2.time (2.5); + $wall1_2.decelTime (.5); + $wall1_3.time (1.7); + $wall1_3.decelTime (.5); + $wall1_4.time (2.4); + $wall1_4.decelTime (.5); + $wall1_5.time (2.2); + $wall1_5.decelTime (.5); + $wall1_6.time (2.6); + $wall1_6.decelTime (.5); + + $wall2_1.time (2.1); + $wall2_1.decelTime (.5); + $wall2_2.time (2); + $wall2_2.decelTime (.5); + $wall2_3.time (1.8); + $wall2_3.decelTime (.5); + $wall2_4.time (2.3); + $wall2_4.decelTime (.5); + $wall2_5.time (2.6); + $wall2_5.decelTime (.5); + $wall2_6.time (2.1); + $wall2_6.decelTime (.5); + + $wall3_1.time (2.1); + $wall3_1.decelTime (.5); + $wall3_2.time (2.4); + $wall3_2.decelTime (.5); + $wall3_3.time (2.5); + $wall3_3.decelTime (.5); + $wall3_4.time (1.7); + $wall3_4.decelTime (.5); + $wall3_5.time (1.8); + $wall3_5.decelTime (.5); + $wall3_6.time (2); + $wall3_6.decelTime (.5); + + $wall4_1.time (2); + $wall4_1.decelTime (.5); + $wall4_2.time (2.2); + $wall4_2.decelTime (.5); + $wall4_3.time (2.5); + $wall4_3.decelTime (.5); + $wall4_4.time (2.1); + $wall4_4.decelTime (.5); + $wall4_5.time (1.9); + $wall4_5.decelTime (.5); + + $wall1_1.moveTo ($bridge1_1_spot1); + $wall1_2.moveTo ($bridge1_2_spot1); + $wall1_3.moveTo ($bridge1_3_spot1); + $wall1_4.moveTo ($bridge1_4_spot1); + $wall1_5.moveTo ($bridge1_5_spot1); + $wall1_6.moveTo ($bridge1_6_spot1); + + $wall2_1.moveTo ($bridge2_1_spot1); + $wall2_2.moveTo ($bridge2_2_spot1); + $wall2_3.moveTo ($bridge2_3_spot1); + $wall2_4.moveTo ($bridge2_4_spot1); + $wall2_5.moveTo ($bridge2_5_spot1); + $wall2_6.moveTo ($bridge2_6_spot1); + + $wall3_1.moveTo ($bridge3_1_spot1); + $wall3_2.moveTo ($bridge3_2_spot1); + $wall3_3.moveTo ($bridge3_3_spot1); + $wall3_4.moveTo ($bridge3_4_spot1); + $wall3_5.moveTo ($bridge3_5_spot1); + $wall3_6.moveTo ($bridge3_6_spot1); + + $wall4_1.moveTo ($bridge4_1_spot1); + $wall4_2.moveTo ($bridge4_2_spot1); + $wall4_3.moveTo ($bridge4_3_spot1); + $wall4_4.moveTo ($bridge4_4_spot1); + $wall4_5.moveTo ($bridge4_5_spot1); + + sys.waitFor ($wall4_5); + + $wall1_1.moveTo ($bridge1_1_spot2); + $wall1_1.rotateOnce ('0 -180 360'); + $wall1_2.moveTo ($bridge1_2_spot2); + $wall1_2.rotateOnce ('0 180 -360'); + $wall1_3.moveTo ($bridge1_3_spot2); + $wall1_3.rotateOnce ('0 180 360'); + $wall1_4.moveTo ($bridge1_4_spot2); + $wall1_4.rotateOnce ('0 180 -360'); + $wall1_5.moveTo ($bridge1_5_spot2); + $wall1_5.rotateOnce ('0 180 360'); + $wall1_6.moveTo ($bridge1_6_spot2); + $wall1_6.rotateOnce ('0 -180 360'); + + $wall2_1.moveTo ($bridge2_1_spot2); + $wall2_1.rotateOnce ('0 -180 360'); + $wall2_2.moveTo ($bridge2_2_spot2); + $wall2_2.rotateOnce ('0 180 -360'); + $wall2_3.moveTo ($bridge2_3_spot2); + $wall2_3.rotateOnce ('0 180 360'); + $wall2_4.moveTo ($bridge2_4_spot2); + $wall2_4.rotateOnce ('0 -180 360'); + $wall2_5.moveTo ($bridge2_5_spot2); + $wall2_5.rotateOnce ('0 180 -360'); + $wall2_6.moveTo ($bridge2_6_spot2); + $wall2_6.rotateOnce ('0 -180 360'); + + $wall3_1.moveTo ($bridge3_1_spot2); + $wall3_1.rotateOnce ('0 -180 360'); + $wall3_2.moveTo ($bridge3_2_spot2); + $wall3_2.rotateOnce ('0 -180 360'); + $wall3_3.moveTo ($bridge3_3_spot2); + $wall3_3.rotateOnce ('0 180 -360'); + $wall3_4.moveTo ($bridge3_4_spot2); + $wall3_4.rotateOnce ('0 180 360'); + $wall3_5.moveTo ($bridge3_5_spot2); + $wall3_5.rotateOnce ('0 -180 360'); + $wall3_6.moveTo ($bridge3_6_spot2); + $wall3_6.rotateOnce ('0 180 -360'); + + $wall4_1.moveTo ($bridge4_1_spot2); + $wall4_1.rotateOnce ('0 -180 360'); + $wall4_2.moveTo ($bridge4_2_spot2); + $wall4_2.rotateOnce ('0 180 -360'); + $wall4_3.moveTo ($bridge4_3_spot2); + $wall4_3.rotateOnce ('0 -180 360'); + $wall4_4.moveTo ($bridge4_4_spot2); + $wall4_4.rotateOnce ('0 -180 360'); + $wall4_5.moveTo ($bridge4_5_spot2); + $wall4_5.rotateOnce ('0 -180 360'); + + sys.waitFor ($wall4_5); + sys.trigger ($bridgequake); + + } + + ////////////////////////// + // first hall with dust particles + ////////////////////////// + + // turn dust particles on and off + + void start_firstdust () + { + while (1) + { + sys.trigger ($pillardust1); + sys.wait (1); + sys.trigger ($pillardust2); + sys.wait (.8); + sys.trigger ($pillardust3); + sys.wait (3); + sys.trigger ($pillardust1); + sys.wait (1); + sys.trigger ($pillardust2); + sys.wait (.8); + sys.trigger ($pillardust3); + sys.wait (2); + } + } + void firstdust_off () + { + + sys.killthread ( "map_hell1::start_firstdust" ); + + } + + ////////////////////////// + // steps + ////////////////////////// + + //lower steps in first hall + + void step_lower () + { + + $step1.move ( DOWN , 7 ); + sys.waitFor ($step1); + $step2.move ( DOWN , 15 ); + sys.waitFor ($step2); + $step3.move ( DOWN , 23 ); + sys.waitFor ($step3); + $step4.move ( DOWN , 31 ); + sys.waitFor ($step4); + $step5.move ( DOWN , 39 ); + sys.waitFor ($step5); + $step6.move ( DOWN , 47 ); + sys.waitFor ($step6); + $step7.move ( DOWN , 55 ); + sys.waitFor ($step7); + } + + ////////////////////////// + // first room + ////////////////////////// + + //wall in first room opens to let monster through + + void door_open () + { + + sys.trigger ($hk_wallbust_01); + + $bricksleft_anchor.rotateOnce ('0 30 0'); + $bricksright_anchor.rotateOnce ('0 -30 0'); + + $bricksleft_anchor.moveTo ($bricksleft_spot2); + $bricksright_anchor.moveTo ($bricksright_spot2); + + $brick1.moveTo ($brick1_spot2); + $brick2.moveTo ($brick2_spot2); + $brick2.rotateOnce ('0 180 0'); + $brick3.moveTo ($brick3_spot2); + $brick3.rotateOnce ('0 -180 0'); + $brick4.moveTo ($brick4_spot2); + $brick4.rotateOnce ('0 180 0'); + $brick5.moveTo ($brick5_spot2); + $brick6.moveTo ($brick6_spot2); + $brick7.moveTo ($brick7_spot2); + $brick8.moveTo ($brick8_spot2); + $brick8.rotateOnce ('0 0 180'); + $brick9.moveTo ($brick9_spot2); + $brick10.moveTo ($brick10_spot2); + $brick10.rotateOnce ('0 180 0'); + $brick11.moveTo ($brick11_spot2); + + + $brick1.moveTo ($brick1_spot3); + $brick2.moveTo ($brick2_spot3); + $brick3.moveTo ($brick3_spot3); + $brick4.moveTo ($brick4_spot3); + $brick5.moveTo ($brick5_spot3); + $brick6.moveTo ($brick6_spot3); + $brick7.moveTo ($brick7_spot3); + $brick8.moveTo ($brick8_spot3); + $brick9.moveTo ($brick9_spot3); + $brick10.moveTo ($brick10_spot3); + $brick11.moveTo ($brick11_spot3); + + sys.waitFor ($brick11); + } + + //wall in first room closes behind monster + + void door_close () + { + + $hk_wallbust_01.startSoundShader ("hk_revwallbust", SND_CHANNEL_VOICE2 ); + + $brick1.moveTo ($brick1_spot2); + $brick2.moveTo ($brick2_spot2); + $brick2.rotateOnce ('0 180 0'); + $brick3.moveTo ($brick3_spot2); + $brick3.rotateOnce ('0 -180 0'); + $brick4.moveTo ($brick4_spot2); + $brick4.rotateOnce ('0 180 0'); + $brick5.moveTo ($brick5_spot2); + $brick6.moveTo ($brick6_spot2); + $brick7.moveTo ($brick7_spot2); + $brick8.moveTo ($brick8_spot2); + $brick8.rotateOnce ('0 0 180'); + $brick9.moveTo ($brick9_spot2); + $brick10.moveTo ($brick10_spot2); + $brick10.rotateOnce ('0 180 0'); + $brick11.moveTo ($brick11_spot2); + + $brick1.moveTo ($brick1_spot1); + $brick2.moveTo ($brick2_spot1); + $brick3.moveTo ($brick3_spot1); + $brick4.moveTo ($brick4_spot1); + $brick5.moveTo ($brick5_spot1); + $brick6.moveTo ($brick6_spot1); + $brick7.moveTo ($brick7_spot1); + $brick8.moveTo ($brick8_spot1); + $brick9.moveTo ($brick9_spot1); + $brick10.moveTo ($brick10_spot1); + $brick11.moveTo ($brick11_spot1); + + $bricksleft_anchor.moveTo ($bricksleft_spot1); + $bricksright_anchor.moveTo ($bricksright_spot1); + $bricksleft_anchor.rotateOnce ('0 -30 0'); + $bricksright_anchor.rotateOnce ('0 30 0'); + + sys.waitFor ($bricksright_anchor); + + } + + ////////////////////////// + // alcoves + ////////////////////////// + + void alcove1_open () + { + + $alcove1_leftwall.startSoundShader ("wallmover_01", SND_CHANNEL_VOICE2 ); + $alcove1_leftwall.moveTo ($alcove1_leftwall_2); + $alcove1_rightwall.startSoundShader ("wallmover_01", SND_CHANNEL_VOICE2 ); + $alcove1_rightwall.moveTo ($alcove1_rightwall_2); + $alcove1_backwall.startSoundShader ("wallmover_02", SND_CHANNEL_VOICE2 ); + $alcove1_backwall.moveTo ($alcove1_backwall_2); + + sys.waitFor ($alcove1_leftwall); + } + + void alcove1_close () + { + + $alcove1_leftwall.moveTo ($alcove1_leftwall_1); + $alcove1_rightwall.moveTo ($alcove1_rightwall_1); + $alcove1_backwall.moveTo ($alcove1_backwall_1); + + sys.waitFor ($alcove1_leftwall); + } + + void alcove2_open () + { + $alcove2_leftwall.startSoundShader ("wallmover_01", SND_CHANNEL_VOICE2 ); + $alcove2_leftwall.moveTo ($alcove2_leftwall_2); + $alcove2_rightwall.startSoundShader ("wallmover_01", SND_CHANNEL_VOICE2 ); + $alcove2_rightwall.moveTo ($alcove2_rightwall_2); + $alcove2_backwall.startSoundShader ("wallmover_02", SND_CHANNEL_VOICE2 ); + $alcove2_backwall.moveTo ($alcove2_backwall_2); + + sys.waitFor ($alcove2_leftwall); + } + + void alcove2_close () + { + + $alcove2_leftwall.moveTo ($alcove2_leftwall_1); + $alcove2_rightwall.moveTo ($alcove2_rightwall_1); + $alcove2_backwall.moveTo ($alcove2_backwall_1); + + sys.waitFor ($alcove2_leftwall); + } + + ////////////////////////// + // pit + ////////////////////////// + + void pit_descent () + { + sys.wait (1); + $pit_plat1.accelTime (.1); + $pit_plat1.decelTime (.5); + $pit_plat1.time (2); + + $pit_plat1.startSoundShader ("hellride_lower_2s", SND_CHANNEL_VOICE ); + + $pit_plat1.moveTo ( $pit1_spot1); + $pit_plat1.rotateOnce ('0 40 0'); + sys.waitFor ($pit_plat1); + + $pit_plat1.time (7.5); + + $pit_plat1.startSoundShader ("hell_rockride_8s", SND_CHANNEL_VOICE2 ); + + $pit_plat1.moveTo ( $pit1_spot2); + $pit_plat1.rotateOnce ('0 -40 0'); + sys.waitFor ($pit_plat1); + + $pit_plat1.time (2); + + $pit_plat1.startSoundShader ("hellride_lower_2s", SND_CHANNEL_VOICE ); + + $pit_plat1.move ( DOWN , 32 ); + sys.waitFor ($pit_plat1); + + sys.wait (6); + + $pit_plat1.decelTime (.1); + $pit_plat1.time (.8); + + $pit_plat1.startSoundShader ("hellride_platrot", SND_CHANNEL_VOICE2 ); + + $pit_plat1.move ( DOWN , 192 ); + $pit_plat1.rotateOnce ('0 0 -43'); + sys.waitFor ($pit_plat1); + $pit_plat1.time (.2); + $pit_plat1.move ( UP , 4 ); + sys.waitFor ($pit_plat1); + $pit_plat1.move ( DOWN , 4 ); + sys.waitFor ($pit_plat1); + sys.wait (.5); + $pit_plat1.decelTime (.5); + $pit_plat1.time (1.2); + $pit_plat1.move ( DOWN , 32 ); + } + + ////////////////////////// + // basement pillar room + ////////////////////////// + + void bbrick1 () + { + $bbrick1_mover1.time (.1); + $bbrick1_mover2.time (.1); + $bbrick1_mover3.time (.2); + $bbrick1_mover4.time (.1); + $bbrick1_mover5.time (.2); + $bbrick1_mover6.time (.2); + $bbrick1_mover1.rotateOnce ('-30 0 0'); + $bbrick1_mover2.rotateOnce ('0 -75 0'); + $bbrick1_mover3.rotateOnce ('0 -95 0'); + $bbrick1_mover4.rotateOnce ('0 85 0'); + $bbrick1_mover5.rotateOnce ('0 60 0'); + $bbrick1_mover5.move (NORTH , 32); + $bbrick1_mover6.rotateOnce ('0 85 0'); + } + + void bbrick1_down () + { + $bbrick1_moveable1.bind ($bbrick1_lower); + $bbrick1_moveable2.bind ($bbrick1_lower); + $bbrick1_moveable3.bind ($bbrick1_lower); + $bbrick1_moveable4.bind ($bbrick1_lower); + $bbrick1_moveable8.bind ($bbrick1_lower); + + sys.wait (.5); + $bbrick1_lower.accelTime (.5); + $bbrick1_lower.time (2); + $bbrick1_lower.move (DOWN , 64); + $bbrick1_lower.rotateOnce ('0 5 0'); + } + + void bbrick2 () + { + $bbrick2_mover1.time (.1); + $bbrick2_mover2.time (.1); + $bbrick2_mover3.time (.1); + $bbrick2_mover4.time (.1); + $bbrick2_mover5.time (.1); + $bbrick2_mover6.time (.1); + $bbrick2_mover1.rotateOnce ('-35 0 0'); + $bbrick2_mover2.rotateOnce ('0 70 0'); + $bbrick2_mover3.rotateOnce ('0 85 0'); + $bbrick2_mover4.rotateOnce ('0 80 0'); + $bbrick2_mover5.rotateOnce ('0 -80 0'); + $bbrick2_mover6.rotateOnce ('0 -75 0'); + } + + void bbrick3 () + { + $bbrick3_mover1.time (.5); + $bbrick3_mover2.time (.5); + + $bbrick3_mover1.rotateOnce ('0 -70 0'); + $bbrick3_mover2.rotateOnce ('0 75 0'); + } + + ////////////////////////// + // mancubus plat room crusher + ////////////////////////// + + void stomp1 () + { + $stomp1.time (.6); + $stomp1.accelTime (.5); + $stomp1.decelTime (.05); + $stomp1.move (DOWN ,256); + sys.waitFor ($stomp1); + + sys.trigger ($stomp1_particle); + sys.trigger ($stomp1_speaker); + + $stomp1.time (.08); + $stomp1.accelTime (.05); + $stomp1.decelTime (.02); + $stomp1.move (UP ,4); + sys.waitFor ($stomp1); + $stomp1.move (DOWN ,4); + sys.waitFor ($stomp1); + + sys.wait (3); + + $stomp1.time (2); + $stomp1.accelTime (.5); + $stomp1.decelTime (.2); + $stomp1.move (UP ,256); + sys.waitFor ($stomp1); + } + + void start_stomp1 () + { + while(1) { + $stomp1.time (.6); + $stomp1.accelTime (.5); + $stomp1.decelTime (.05); + $stomp1.move (DOWN ,256); + sys.waitFor ($stomp1); + + sys.trigger ($stomp1_particle); + sys.trigger ($stomp1_speaker); + + $stomp1.time (.08); + $stomp1.accelTime (.05); + $stomp1.decelTime (.02); + $stomp1.move (UP ,4); + sys.waitFor ($stomp1); + $stomp1.move (DOWN ,4); + sys.waitFor ($stomp1); + + sys.wait (.8); + + $stomp1.time (2); + $stomp1.accelTime (.5); + $stomp1.decelTime (.2); + $stomp1.move (UP ,256); + sys.waitFor ($stomp1); + sys.wait (1); + } + } + + ////////////////////////// + // misc + ////////////////////////// + + + void close_doorblock1 () + { + sys.trigger ($doorblock1_dust); + sys.trigger ($doorblock1_speaker); + $doorblock1.rotateOnce ('0 90 0'); + sys.waitFor ($doorblock1); + $doorblock1.move ( SOUTH ,224); + sys.waitFor ($doorblock1); + sys.trigger ($doorblock1_obstacle); + sys.wait (1); + sys.trigger ($doorblock1_dust); + } + + void brickdoor1_open () + { + $brickdoor1.rotateOnce ('0 80 0'); + sys.waitFor ($brickdoor1); + } + + void drop_corpse1 () + { + $corpse1.unbind (); + } + + void drop_corpse2 () + { + $corpsedrop2.accelTime (.3); + $corpsedrop2.time (.5); + $corpsedrop2.move ( DOWN,80); + sys.waitFor ($corpsedrop2); + $corpsedrop2.move ( DOWN,8); + } + + void drop_corpse3 () + { + $corpse3.unbind (); + } + void drop_corpse5 () + { + $corpse5.unbind (); + } + + void drop_corpse6 () + { + $corpse6.unbind (); + } + + void cache_sounds() { + sys.cacheSoundShader ("tp_electro"); + sys.cacheSoundShader ("gateimpact_01"); + sys.cacheSoundShader ("gateimpact_02"); + sys.cacheSoundShader ("gateimpact_03"); + sys.cacheSoundShader ("gateimpact_04"); + sys.cacheSoundShader ("gateimpact_05"); + sys.cacheSoundShader ("wallmover_01"); + sys.cacheSoundShader ("wallmover_02"); + sys.cacheSoundShader ("hell_rockride_8s"); + sys.cacheSoundShader ("hellride_lower_2s"); + sys.cacheSoundShader ("hellride_platrot"); + sys.cacheSoundShader ("hk_revwallbust"); + sys.cacheSoundShader ("hell_revgate"); + sys.cacheSoundShader ("cage_decent"); + sys.cacheSoundShader ("gates_land"); + sys.cacheSoundShader ("hell_corpsemover"); + } + + void guardian_room_fadeout() { + $hs_1.fadeSound ( SND_CHANNEL_ANY, -60, 5 ); + $hs_2.fadeSound ( SND_CHANNEL_ANY, -60, 5 ); + $hs_3.fadeSound ( SND_CHANNEL_ANY, -60, 5 ); + $hs_4.fadeSound ( SND_CHANNEL_ANY, -60, 5 ); + $hs_5.fadeSound ( SND_CHANNEL_ANY, -60, 5 ); + $hs_6.fadeSound ( SND_CHANNEL_ANY, -60, 5 ); + $hs_7.fadeSound ( SND_CHANNEL_ANY, -60, 5 ); + $hs_8.fadeSound ( SND_CHANNEL_ANY, -60, 5 ); + $hs_9.fadeSound ( SND_CHANNEL_ANY, -60, 5 ); + $hs_10.fadeSound ( SND_CHANNEL_ANY, -60, 5 ); + $hs_11.fadeSound ( SND_CHANNEL_ANY, -60, 5 ); + $hs_12.fadeSound ( SND_CHANNEL_ANY, -60, 5 ); + } + + void guardian_room_fadein() { + $hs_1.fadeSound ( SND_CHANNEL_ANY, -2, 5 ); + $hs_2.fadeSound ( SND_CHANNEL_ANY, -2, 5 ); + $hs_3.fadeSound ( SND_CHANNEL_ANY, -2, 5 ); + $hs_4.fadeSound ( SND_CHANNEL_ANY, -2, 5 ); + $hs_5.fadeSound ( SND_CHANNEL_ANY, -2, 5 ); + $hs_6.fadeSound ( SND_CHANNEL_ANY, -2, 5 ); + $hs_7.fadeSound ( SND_CHANNEL_ANY, -2, 5 ); + $hs_8.fadeSound ( SND_CHANNEL_ANY, -2, 5 ); + $hs_9.fadeSound ( SND_CHANNEL_ANY, -2, 5 ); + $hs_10.fadeSound ( SND_CHANNEL_ANY, -2, 5 ); + $hs_11.fadeSound ( SND_CHANNEL_ANY, -2, 5 ); + $hs_12.fadeSound ( SND_CHANNEL_ANY, -2, 5 ); + } + + + // They are on by default... + void toggle_guardianroom_sounds() { + sys.trigger ($hs_1); + sys.trigger ($hs_2); + sys.trigger ($hs_3); + sys.trigger ($hs_4); + sys.trigger ($hs_5); + sys.trigger ($hs_6); + sys.trigger ($hs_7); + sys.trigger ($hs_8); + sys.trigger ($hs_9); + sys.trigger ($hs_10); + sys.trigger ($hs_11); + sys.trigger ($hs_12); + } + + + void main () + { + cache_sounds(); + setup_objects(); + guardian_room_fadeout(); // Fade guardian sounds out + thread ( telering_move() ); + thread ( telering_bob() ); + } +} \ No newline at end of file diff --git a/base/script/map_hellhole.script b/base/script/map_hellhole.script new file mode 100644 index 00000000..fb40e9f5 --- /dev/null +++ b/base/script/map_hellhole.script @@ -0,0 +1,369 @@ +namespace map_hellhole { + + void move_entrance_lift() + { + //level load lift + $hellhole_start_lift.time(10); + $hellhole_start_lift.accelTime(.5); + $hellhole_start_lift.decelTime(.5); + + $hellhole_start_lift.move(DOWN, 1280); + } + + void move_first_doors() + { + sys.trigger($hhbrickdoors1_portal); + $hhbrickdoor_1.accelTime(.5); + $hhbrickdoor_1.decelTime(.5); + + $hhbrickdoor_2.accelTime(.5); + $hhbrickdoor_2.decelTime(.5); + + $hhbrickdoor_1.time(1); + + $hhbrickdoor_1.startSoundShader ("hh_door_movement_1", SND_CHANNEL_VOICE2 ); + + $hhbrickdoor_1.move(WEST, 32); + $hhbrickdoor_2.time (1); + $hhbrickdoor_2.move(WEST, 32); + sys.waitFor($hhbrickdoor_1); + + $hhbrickdoor_1.time(2); + $hhbrickdoor_1.startSoundShader ("hh_door_movement_2", SND_CHANNEL_VOICE ); + $hhbrickdoor_1.move(SOUTH, 64); + $hhbrickdoor_2.time (2); + $hhbrickdoor_2.move(NORTH, 64); + sys.waitFor($hhbrickdoor_1); + } + + void move_first_doors_close() + + { + $hhbrickdoor_1.accelTime(.5); + $hhbrickdoor_1.decelTime(.5); + + $hhbrickdoor_2.accelTime(.5); + $hhbrickdoor_2.decelTime(.5); + + $hhbrickdoor_1.time(2); + $hhbrickdoor_1.startSoundShader ("hh_door_movement_2", SND_CHANNEL_VOICE2 ); + $hhbrickdoor_1.move(NORTH, 64); + $hhbrickdoor_2.time (2); + $hhbrickdoor_2.move(SOUTH, 64); + sys.waitFor($hhbrickdoor_1); + + $hhbrickdoor_1.time(1); + $hhbrickdoor_1.startSoundShader ("hh_door_movement_1", SND_CHANNEL_VOICE ); + $hhbrickdoor_1.move(EAST, 32); + $hhbrickdoor_2.time (1); + $hhbrickdoor_2.move(EAST, 32); + sys.waitFor($hhbrickdoor_1); + sys.trigger($hhbrickdoors1_portal); + } + + void hellevator_down() + { + $hellevator.startSoundShader ("hh_rockride_8s", SND_CHANNEL_VOICE ); + + $hellevator.time(8); + $hellevator.accelTime(5); + $hellevator.decelTime(.5); + + $hellevator.move(DOWN, 2020); + } + + void move_next_doors_open() + { + sys.trigger($hhbrickdoors2_portal); + $hhbrickdoor_3.accelTime(.5); + $hhbrickdoor_3.decelTime(.5); + + $hhbrickdoor_4.accelTime(.5); + $hhbrickdoor_4.decelTime(.5); + + $hhbrickdoor_3.startSoundShader ("hh_door_movement_3s", SND_CHANNEL_VOICE); + $hhbrickdoor_3.time(3); + $hhbrickdoor_3.move(NORTH, 32); + $hhbrickdoor_4.time (3); + $hhbrickdoor_4.move(NORTH, 32); + sys.waitFor($hhbrickdoor_3); + + $hhbrickdoor_3.time(5); + $hhbrickdoor_3.startSoundShader ("hh_door_movement_5s", SND_CHANNEL_VOICE2); + $hhbrickdoor_3.move(WEST, 64); + $hhbrickdoor_4.time (5); + $hhbrickdoor_4.move(EAST, 64); + sys.waitFor($hhbrickdoor_3); + + } + + void move_next_doors_close() + { + $hhbrickdoor_3.accelTime(.5); + $hhbrickdoor_3.decelTime(.5); + + $hhbrickdoor_4.accelTime(.5); + $hhbrickdoor_4.decelTime(.5); + + $hhbrickdoor_3.time(5); + $hhbrickdoor_3.startSoundShader ("hh_door_movement_5s", SND_CHANNEL_VOICE); + $hhbrickdoor_3.move(EAST, 64); + $hhbrickdoor_4.time (5); + $hhbrickdoor_4.move(WEST, 64); + sys.waitFor($hhbrickdoor_3); + + $hhbrickdoor_3.time(3); + $hhbrickdoor_3.startSoundShader ("hh_door_movement_3s", SND_CHANNEL_VOICE2); + $hhbrickdoor_3.move(SOUTH, 32); + $hhbrickdoor_4.time (3); + $hhbrickdoor_4.move(SOUTH, 32); + sys.waitFor($hhbrickdoor_3); + sys.trigger($hhbrickdoors2_portal); + + } + + void move_last_doors_open() + { + sys.trigger($hhbrickdoors3_portal); + $hhbrickdoor_5.accelTime(.5); + $hhbrickdoor_5.decelTime(.5); + + $hhbrickdoor_6.accelTime(.5); + $hhbrickdoor_6.decelTime(.5); + + $hhbrickdoor_5.time(3); + + $hhbrickdoor_5.startSoundShader ("hh_door_movement_3s", SND_CHANNEL_VOICE2); + + $hhbrickdoor_5.move(NORTH, 32); + $hhbrickdoor_6.time (3); + $hhbrickdoor_6.move(NORTH, 32); + sys.waitFor($hhbrickdoor_5); + + $hhbrickdoor_5.time(5); + + $hhbrickdoor_5.startSoundShader ("hh_door_movement_5s", SND_CHANNEL_VOICE); + + $hhbrickdoor_5.move(WEST, 64); + $hhbrickdoor_6.time (5); + $hhbrickdoor_6.move(EAST, 64); + sys.waitFor($hhbrickdoor_5); + + } + + void move_last_doors_close() + { + $hhbrickdoor_5.accelTime(.5); + $hhbrickdoor_5.decelTime(.5); + + $hhbrickdoor_6.accelTime(.5); + $hhbrickdoor_6.decelTime(.5); + + $hhbrickdoor_5.time(5); + $hhbrickdoor_5.startSoundShader ("hh_door_movement_5s", SND_CHANNEL_VOICE2); + $hhbrickdoor_5.move(EAST, 64); + $hhbrickdoor_6.time (5); + $hhbrickdoor_6.move(WEST, 64); + sys.waitFor($hhbrickdoor_5); + + $hhbrickdoor_5.time(3); + $hhbrickdoor_5.startSoundShader ("hh_door_movement_3s", SND_CHANNEL_VOICE); + $hhbrickdoor_5.move(SOUTH, 32); + $hhbrickdoor_6.time (3); + $hhbrickdoor_6.move(SOUTH, 32); + sys.waitFor($hhbrickdoor_5); + sys.trigger($hhbrickdoors3_portal); + + } + + void move_id_brick() + { + $id_brick.accelTime(.2); + $id_brick.decelTime(.2); + + $id_brick.time(1.5); + + $id_brick.startSoundShader ("hh_door_movement_3s", SND_CHANNEL_VOICE2); + + $id_brick.move(NORTH, 16); + $id_brick.time (1.5); + sys.waitFor($id_brick); + + } + + void move_id_door() + { + $id_door.accelTime(.5); + $id_door.decelTime(.5); + + $id_door.time(3); + + $id_door.startSoundShader ("hh_door_movement_3s", SND_CHANNEL_VOICE2); + + $id_door.move(WEST, 32); + $id_door.time (3); + sys.waitFor($id_door); + + $id_door.time(5); + + $id_door.startSoundShader ("hh_door_movement_5s", SND_CHANNEL_VOICE); + + $id_door.move(UP, 128); + $id_door.time (5); + sys.waitFor($id_door); + + } + + void spark_mover () + { + //turn on the sparks + sys.trigger ($doorsparks); + + //move the sparkmover down and wait for it to finish + $sparkmover.move (DOWN, 116); + sys.waitFor ($sparkmover); + + //turn off the sparks + sys.trigger ($doorsparks); + } + + void harden_lava( entity ent, float parm, float fromValue, float toValue, float totalTime ) { + float i; + float frac; + float numTics; + + // customized for the shader "textures/hell/hellhole_lavascroll_fade" + + // convert to the total number of game tics + numTics = totalTime * sys.getTicsPerSecond(); + + float parm3 = fromValue; + float parm5 = sys.getTime()*-0.2; + float parm6 = sys.getTime()*-0.1; + float parm7 = -sys.getTime(); + + for( i = 0; i < numTics; i++ ) { + parm5 = (sys.getTime()+parm7)*(-0.2*parm3)+parm5; + parm6 = (sys.getTime()+parm7)*(-0.1*parm3)+parm6; + parm7 = -sys.getTime(); + + frac = i / numTics; + parm3 = toValue * frac + fromValue * ( 1 - frac ); + + ent.setShaderParm( 3, parm3 ); + ent.setShaderParm( 5, parm5 ); + ent.setShaderParm( 6, parm6 ); + ent.setShaderParm( 7, parm7 ); + + // wait one game frame + sys.waitFrame(); + } + + // make sure we are set to exactly the destination value + parm3 = toValue; + parm5 = (sys.getTime()+parm7)*(-0.2*parm3)+parm5; + parm6 = (sys.getTime()+parm7)*(-0.1*parm3)+parm6; + parm7 = -sys.getTime(); + + ent.setShaderParm( 3, parm3 ); + ent.setShaderParm( 5, parm5 ); + ent.setShaderParm( 6, parm6 ); + ent.setShaderParm( 7, parm7 ); + } + + void interpolateRocksShader( entity ent, float parm, float fromValue, float toValue, float totalTime ) { + float i; + float value; + float frac; + float numTics; + + // convert to the total number of game tics + numTics = totalTime * sys.getTicsPerSecond(); + + for( i = 0; i < numTics; i++ ) { + frac = i / numTics; + value = toValue * frac + fromValue * ( 1 - frac ); + ent.setShaderParm( parm, value ); + + // wait one game frame + sys.waitFrame(); + } + + // make sure we are set to exactly the destination value + ent.setShaderParm( parm, toValue ); + } + + void fade_lava_thread() { + harden_lava( $hellhole_cyberdeathrocks_2, 3, 1, 0, 3 ); + thread fadeOutEnt( $func_static_808, '1 1 1', 1 ); + interpolateRocksShader( $hellhole_cyberdeathrocks_2, 0, 1, 0, 1 ); + } + + void fade_lava() { + thread fade_lava_thread(); + } + + void cache_sounds() { + sys.cacheSoundShader ("hh_rockride_8s"); + sys.cacheSoundShader ("hh_door_movement_3s"); + sys.cacheSoundShader ("hh_door_movement_5s"); + sys.cacheSoundShader ("hh_door_movement_1"); + sys.cacheSoundShader ("hh_door_movement_2"); + } + + void fade_final_room_down() { + $hhs_1.fadeSound (SND_CHANNEL_ANY, -60, 5); + $hhs_2.fadeSound (SND_CHANNEL_ANY, -60, 5); + $hhs_3.fadeSound (SND_CHANNEL_ANY, -60, 5); + $hhs_4.fadeSound (SND_CHANNEL_ANY, -60, 5); + $hhs_5.fadeSound (SND_CHANNEL_ANY, -60, 5); + $hhs_6.fadeSound (SND_CHANNEL_ANY, -60, 5); + $hhs_7.fadeSound (SND_CHANNEL_ANY, -60, 5); + $hhs_8.fadeSound (SND_CHANNEL_ANY, -60, 5); + $hhs_9.fadeSound (SND_CHANNEL_ANY, -60, 5); + $hhs_10.fadeSound (SND_CHANNEL_ANY, -60, 5); + $hhs_11.fadeSound (SND_CHANNEL_ANY, -60, 5); + $hhs_12.fadeSound (SND_CHANNEL_ANY, -60, 5); + $hhs_13.fadeSound (SND_CHANNEL_ANY, -60, 5); + $speaker_60.fadeSound (SND_CHANNEL_ANY, -60, 5); + $speaker_64.fadeSound (SND_CHANNEL_ANY, -60, 5); + $speaker_67.fadeSound (SND_CHANNEL_ANY, -60, 5); + $speaker_70.fadeSound (SND_CHANNEL_ANY, -60, 5); + } + + void fade_final_room_up() { + $hhs_1.fadeSound (SND_CHANNEL_ANY, -1, 5); + $hhs_2.fadeSound (SND_CHANNEL_ANY, -1, 5); + $hhs_3.fadeSound (SND_CHANNEL_ANY, -1, 5); + $hhs_4.fadeSound (SND_CHANNEL_ANY, -1, 5); + $hhs_5.fadeSound (SND_CHANNEL_ANY, -1, 5); + $hhs_6.fadeSound (SND_CHANNEL_ANY, -1, 5); + $hhs_7.fadeSound (SND_CHANNEL_ANY, -1, 5); + $hhs_8.fadeSound (SND_CHANNEL_ANY, -1, 5); + $hhs_9.fadeSound (SND_CHANNEL_ANY, -1, 5); + $hhs_10.fadeSound (SND_CHANNEL_ANY, -1, 5); + $hhs_11.fadeSound (SND_CHANNEL_ANY, -1, 5); + $hhs_12.fadeSound (SND_CHANNEL_ANY, -1, 5); + $hhs_13.fadeSound (SND_CHANNEL_ANY, -1, 5); + $speaker_60.fadeSound (SND_CHANNEL_ANY, -1, 5); + $speaker_64.fadeSound (SND_CHANNEL_ANY, -1, 5); + $speaker_67.fadeSound (SND_CHANNEL_ANY, -1, 5); + $speaker_70.fadeSound (SND_CHANNEL_ANY, -1, 5); + } + + void fadeup_thread() { + $speaker_29.fadeSound (SND_CHANNEL_ANY, -60, 5); // Fade this speaker down first... + sys.wait (10); + thread fade_final_room_up(); + } + + void main () + { + //bind_objects(); + //init_world(); + sys.setcvar( "g_nightmare", "1" ); + cache_sounds(); + thread move_entrance_lift(); + thread fade_final_room_down(); + } +} diff --git a/base/script/map_marscity1.script b/base/script/map_marscity1.script new file mode 100644 index 00000000..49cbcd48 --- /dev/null +++ b/base/script/map_marscity1.script @@ -0,0 +1,341 @@ +namespace map_marscity1 { + + void cache_sounds() { + sys.cacheSoundShader ("mc1_scanner_rot1s"); + sys.cacheSoundShader ("mc1_scanner_3s_movement"); + sys.cacheSoundShader ("entrance_scanner_loop"); + sys.trigger ($speaker_mouse); // Turn it off... + } + + void toggle_intro_sounds() { + sys.print ("Toggling speakers\n"); + sys.trigger ($speaker_83); + sys.trigger ($speaker_84); + sys.trigger ($speaker_85); + sys.trigger ($speaker_86); + sys.trigger ($speaker_87); + sys.trigger ($speaker_88); + sys.trigger ($speaker_89); + sys.trigger ($speaker_90); + sys.trigger ($speaker_91); + sys.trigger ($speaker_92); + } + + //turret gun movement + void turret_loop() { + while(1) + { + $security_cannon.time( 3 ); + $security_cannon.accelTime( 0 ); + $security_cannon.decelTime( .25 ); + + $security_cannon.rotateOnce( '0 -30 0' ); + sys.waitFor($security_cannon); + + sys.wait(.5); + + $security_cannon.rotateOnce( '0 30 0' ); + sys.waitFor($security_cannon); + + sys.wait(.5); + } + } + + // mars city mice movers + void Startmouse1() { + while(1) + { + $mc_mouse1.time( 15 ); + $mc_mouse1.accelTime( 0 ); + $mc_mouse1.decelTime( 0 ); + sys.trigger ($speaker_mouse); // Turn it on... + $mc_mouse1.startSpline( $func_splinemover_3 ); + + sys.waitFor($mc_mouse1); + + sys.trigger ($speaker_mouse); // Turn it off... + + sys.wait(60); + $mc_mouse1.removeInitialSplineAngles(); + } + } + + // function for starting shutters1 sound + void sound_shutter1_start() + { + sys.trigger ($speaker_shutters); + } + + // function for stopping shutters1 sound + void sound_shutter1_stop() + { + //sys.trigger ($speaker_shutters); + } + + + void kitchenlightsoff() + { + sys.wait(1); + $kitchen_swinglight_1.fadeOutLight(2); + $kitchen_swinglight_2.fadeOutLight(2); + $kitchen_swinglight_3.fadeOutLight(2); + $kitchen_swinglight_4.fadeOutLight(2); + $kitchen_swinglight_5.fadeOutLight(2); + $kitchen_swinglight_6.fadeOutLight(2); + + } + + void windshutter1_open() + { + //start the kitchen lights fading + thread kitchenlightsoff(); + + /// starting shutter sound + thread sound_shutter1_start(); + + //might need this later + //$windshutter1_gui.setGuiParm( "gui_parm1" , windstatus1); + + //fade in the bounce lightlight + $shutter_bounce_light.fadeInLight(1.5); + + //times for shutters opening + $windshutter1_1.time(1.5); + $windshutter1_1.accelTime(1); + $windshutter1_1.decelTime(.5); + + $windshutter1_2.time(1.5); + $windshutter1_2.accelTime(1); + $windshutter1_2.decelTime(.5); + + // Going up + $windshutter1_1.rotateOnce( '180 0 0' ); + sys.wait(0.5); + $windshutter1_2.rotateOnce( '180 0 0' ); + sys.waitFor($windshutter1_2); + + + // stopping shutter sound + thread sound_shutter1_stop(); + } + + void kitchenlightson() + { + sys.wait(3); + $kitchen_swinglight_1.fadeInLight(2); + $kitchen_swinglight_2.fadeInLight(2); + $kitchen_swinglight_3.fadeInLight(2); + $kitchen_swinglight_4.fadeInLight(2); + $kitchen_swinglight_5.fadeInLight(2); + $kitchen_swinglight_6.fadeInLight(2); + + } + + void windshutter1_close() + { + + //start the kitchen lights fading + thread kitchenlightson(); + + // starting shutter sound + thread sound_shutter1_start(); + + // Fade bounce light + $shutter_bounce_light.fadeOutLight(3); + + + //times for shutters closing + $windshutter1_1.time(3); + $windshutter1_1.accelTime(2); + $windshutter1_1.decelTime(1); + + $windshutter1_2.time(3); + $windshutter1_2.accelTime(2); + $windshutter1_2.decelTime(1); + + // Going down + $windshutter1_1.rotateOnce( '-180 0 0' ); + sys.wait(0.25); + $windshutter1_2.rotateOnce( '-180 0 0' ); + sys.waitFor($windshutter1_2); + + // stopping shutter sound + thread sound_shutter1_stop(); + } + + //////////////////////////////////////////////////// + // + // Mars City Bio Scanners + // + //////////////////////////////////////////////////// + void bioscan_lockdoors () + { + //close both doors + $func_door_1.close(); + $func_door_9.close(); + + //lock both doors + $func_door_1.lock(2); + $func_door_9.lock(2); + + //trigger the relay to remove things in the Hangar + sys.trigger ( $trigger_remove_floods ); + + //change gui and shader parms on doors + $func_static_4456.setShaderParm (7, 0); + $func_static_929.setShaderParm (7, 0); + $func_door_1.setGuiParm ( "gui_parm3" , 0); + $func_door_1.setShaderParm (7, 0); + $func_door_9.setGuiParm ( "gui_parm3" , 0); + $func_door_9.setShaderParm (7, 0); + } + + void bioscan_opendoor () + { + //trigger the lights to fade + sys.trigger($bioscan_fadein); + + //slight delay to make sure the sentry is in motion + //before the doors open + sys.wait(.85); + + //unlock door + $func_door_9.lock(0); + + //open door + $func_door_9.open(); + + //lock the little room door + $func_door_11.lock(2); + + //change gui parms on doors + $func_door_9.setGuiParm ( "gui_parm3" , 1); + $func_door_9.setShaderParm (7, 1); + $func_static_4456.setShaderParm (7, 1); + + toggle_intro_sounds(); // Trigger the start sounds on when the player gets to this point + turret_loop(); // Start the turret looping here... + } + + void bioscan_go () + { + //trigger the particles + $scan_lazmodel_1.startSoundShader ("entrance_scanner_loop", SND_CHANNEL_VOICE ); + $scan_lazmodel_2.startSoundShader ("entrance_scanner_loop", SND_CHANNEL_VOICE ); + sys.trigger($scan_particle_1); + sys.trigger($scan_particle_2); + + //change the gui on bioscanner + sys.trigger($bio_scanner); + + //trigger the lights to fade + sys.trigger($bioscan_fadeout); + + sys.wait(.4); + + //trigger the laser models to unhide them + + sys.trigger($scan_lazmodel_1); + sys.trigger($scan_lazmodel_2); + + //set times + //up 64 scan_anchor + + $scan_anchor.time (1); + $scan_anchor.startSoundShader ("mc1_scanner_3s_movement", SND_CHANNEL_VOICE); + + $scan_anchor.move ( UP, 64 ); + sys.waitFor ($scan_anchor); + + //rotate 90 scan_anchor + $scan_anchor.rotateOnce ( '0 0 -90' ); + sys.waitFor ($scan_anchor); + + //move 24 scan_anchor + $scan_anchor.move ( SOUTH, -24 ); + sys.waitFor ($scan_anchor); + + //rotate 720 scan_thing_1 + $scan_thing_1.startSoundShader ("mc1_scanner_rot1s", SND_CHANNEL_VOICE); + $scan_thing_1.rotateOnce ( '360 0 0' ); + + + //rotate 720 scan_thing_2 + $scan_thing_2.startSoundShader ("mc1_scanner_rot1s", SND_CHANNEL_VOICE); + $scan_thing_2.rotateOnce ( '360 0 0' ); + + //wait for rotating to stop and a bit extra + sys.waitFor ($scan_thing_1); + sys.wait (1); + + //move 24 scan_anchor + $scan_anchor.startSoundShader ("mc1_scanner_3s_movement", SND_CHANNEL_VOICE); + $scan_anchor.move ( SOUTH, 24 ); + sys.waitFor ($scan_anchor); + + //rotate 90 scan_anchor + $scan_anchor.rotateOnce ( '0 0 90' ); + sys.waitFor ($scan_anchor); + + //down 64 scan_anchor + $scan_anchor.move ( DOWN, 64 ); + sys.waitFor ($scan_anchor); + + //trigger the particles + + sys.trigger($scan_particle_1); + + sys.trigger($scan_particle_2); + + sys.wait(2); + + //trigger the laser models to hide them + $scan_lazmodel_1.stopSound (SND_CHANNEL_VOICE, false); + sys.trigger($scan_lazmodel_1); + $scan_lazmodel_2.stopSound (SND_CHANNEL_VOICE, false); + sys.trigger($scan_lazmodel_2); + + } + + void bioscan_noreturn () + { + //close both doors + $func_door_9.close(); + + //lock both doors + $func_door_9.lock(2); + + //change gui parms on doors + $func_door_9.setGuiParm ( "gui_parm3" , 0); + $func_door_9.setShaderParm (7, 0); + $func_static_4456.setShaderParm (7, 0); + } + + void show_pda () + { + $player_pda.show(); + } + + //move fog brush in the hanger + void move_hangar_fog () + { + $hanger_fog_mover.time( 5 ); + $hanger_fog_mover.move( UP, 320 ); + } + + + + + //////////////////////////////////////////////////// + // + // MAIN + // + //////////////////////////////////////////////////// + void main () { + cache_sounds(); + + //setup_objects (); + //init_world(); + + } +} \ No newline at end of file diff --git a/base/script/map_marscity2.script b/base/script/map_marscity2.script new file mode 100644 index 00000000..4ded4cd7 --- /dev/null +++ b/base/script/map_marscity2.script @@ -0,0 +1,61 @@ +namespace map_marscity2 +{ + + float request_speaker = 1; + + + void lower_airlock_ladder() + { + sys.wait( 2 ); + sys.trigger( $snd_ladder_move ); + $airlock_ladder.move( DOWN, 102 ); + } + + void video_request_speaker() + { + float sound_length; + + while (request_speaker == 1) + { + sound_length = $speaker_280.startSoundShader ("marscity2_comp_vidconnect_req", SND_CHANNEL_VOICE2 ); + sys.wait (sound_length); + sys.wait( 1 ); + } + } + + void connect_sarge_speaker() + { + request_speaker = 0; + $speaker_280.stopSound ( SND_CHANNEL_VOICE2, false ); + sys.trigger( $sarge_monitor ); + //sys.wait( 1.5 ); + sys.trigger( $speaker_281 ); + sys.wait( .25); + sys.trigger( $speaker_282 ); + sys.trigger( $sarge_monitor ); + sys.trigger( $trigger_relay_111 ); + } + + void loop_steamblast1() + { + while (1) + { + sys.trigger( $steamblast_1 ); + sys.trigger( $steamblast_1_snd ); + sys.wait( 2 ); + sys.trigger( $steamblast_1 ); + sys.trigger( $steamblast_1_snd ); + sys.wait( 7 ); + } + } + + //********************************* + // MAIN + //********************************* + void main() + { + thread video_request_speaker(); + //setup_objects (); + //init_world(); + } +} diff --git a/base/script/map_mc_underground.script b/base/script/map_mc_underground.script new file mode 100644 index 00000000..53103286 --- /dev/null +++ b/base/script/map_mc_underground.script @@ -0,0 +1,2693 @@ +namespace map_mc_underground { + + // global state variables + float saftey_bridge_state = 1; + float underarm_work_state = 1; + float underarm_fingers_state = -64; + + // variable to track crane movement state + float crane_main_state = 0; + float crane_dir = 0; + + // Start Xian Stuff + + void cache_sounds() { + sys.cacheSoundShader ("mset1_movement"); + sys.cacheSoundShader ("mset1_stop"); + sys.cacheSoundShader ("mset2_movement"); + sys.cacheSoundShader ("mset2_stop"); + + sys.cacheSoundShader ("m1_start"); + sys.cacheSoundShader ("m1_loop"); + sys.cacheSoundShader ("m1_stop"); + + sys.cacheSoundShader ("mcu_support_2s"); + sys.cacheSoundShader ("mcu_safteybridge_02"); + sys.cacheSoundShader ("mcu_safteybridge_01"); + sys.cacheSoundShader ("msmall_pounder"); + sys.cacheSoundShader ("servo_1s_01"); + sys.cacheSoundShader ("servo_1s_02"); + sys.cacheSoundShader ("mech_fingers_1_5s"); + sys.cacheSoundShader ("airwhomp"); + sys.cacheSoundShader ("something_interesting"); + sys.cacheSoundShader ("something_interesting_2"); + sys.cacheSoundShader ("metalbounce_1"); + sys.cacheSoundShader ("metalbounce_2"); + sys.cacheSoundShader ("guisounds_pingup"); + + sys.cacheSoundShader ("steelswing_01"); + sys.cacheSoundShader ("steelswing_02"); + sys.cacheSoundShader ("steelswing_03"); + sys.cacheSoundShader ("steelswing_04"); + sys.cacheSoundShader ("steelswing_05"); + sys.cacheSoundShader ("wiresnap"); + sys.cacheSoundShader ("mc_hellblast_explosion"); + sys.cacheSoundShader ("mc_leatherface"); + sys.cacheSoundShader ("mc_invasion_stuff"); + sys.cacheSoundShader ("mc_substing_01"); + sys.cacheSoundShader ("mc_substing_02"); + } + + // This function triggers sounds to alter the soundscape after the invasion + void post_invasion_sounds() { + sys.trigger ($hspeaker_1); + sys.trigger ($hspeaker_2); + sys.trigger ($hspeaker_3); + sys.trigger ($hspeaker_4); + sys.trigger ($hspeaker_5); + sys.trigger ($hspeaker_6); + sys.trigger ($hspeaker_7); + sys.trigger ($hspeaker_8); + } + + void mover_startsound (entity ent) { + ent.startSoundShader ("m1_start", SND_CHANNEL_VOICE); + sys.wait (0.75); + ent.startSoundShader ("m1_loop", SND_CHANNEL_VOICE2); + } + + void mover_stopsound (entity ent) { + ent.startSoundShader ("m1_stop", SND_CHANNEL_VOICE2); + } + + // End Xian Stuff + + + //////////////////////////////////////////////////// + // + // Setup binds and times etc... + // + //////////////////////////////////////////////////// + void setup_objects() + { + //rotate crane initially + $crane_main.rotateOnce('0 80 0'); + + //set initial crane times + $crane_main.time (6); + $crane_main.accelTime (3); + $crane_main.decelTime (2); + + $crane_carrier.bind ($crane_main); + $crane_carrier_load.bind ($crane_carrier); + $crane_main.setGuiParm ( "gui_parm2" , crane_main_state); + $crane_remote_panel.setGuiParm ( "gui_parm2" , crane_main_state); + $crane_reset_button.setGuiParm ( "gui_parm2" , crane_main_state); + + //rotate the two klaxon lights + $emrredlight1_mover.rotateOnce('0 0 45'); + $emrredlight2_mover.rotateOnce('0 0 45'); + + //set airlock door guis initial states to 1 + $airlock1_door1_gui.setGuiParm ( "gui_parm1" , 1); + $airlock1_door2_gui.setGuiParm ( "gui_parm1" , 1); + + $airlock2_door1_gui.setGuiParm ( "gui_parm1" , 1); + $airlock2_door2_gui.setGuiParm ( "gui_parm1" , 1); + + //underarm setup + $underarm_top.bind ($underarm_carrier); + $underarm_upper.bind ($underarm_top); + $underarm_lower.bind ($underarm_upper); + $underarm_fingers.bind ($underarm_lower); + $underarm_tube.bind ($underarm_lower); + $underarm_tube_light.bind ($underarm_tube); + + $underarm_upper.accelTime (.2); + $underarm_lower.accelTime (.2); + $underarm_upper.decelTime (.2); + $underarm_lower.decelTime (.2); + + $underarm_carrier.speed (150); + $underarm_carrier.accelTime (.25); + $underarm_carrier.decelTime (.25); + + $underarm_fingers.time (.01); + + $underarm_tube.setColor ( 1, 0, 0 ); + $underarm_tube_light.setColor ( 1, 0, 0 ); + $underarm_can_1.setColor ( 1, 0, 0 ); + $underarm_can_1_light.setColor ( 1, 0, 0 ); + $underarm_can_2.setColor ( 1, 0, 0 ); + $underarm_can_2_light.setColor ( 1, 0, 0 ); + + //fingers to up pose + while ( underarm_fingers_state < 0 ){ + $underarm_fingers.move ( UP, 1 ); + sys.waitFor ($underarm_fingers); + underarm_fingers_state += 1; + } + + //arm to storage pose + $underarm_upper.rotateOnce ( '0 0 90' ); + $underarm_lower.rotateOnce ( '0 0 -90' ); + sys.waitFor ($underarm_lower); + + + //howitzer setup + $how1_barrel.bind ($how1_base); + $how1_recep.bind ($how1_base); + $how1_catcher.bind ($how1_base); + $how1_base.rotateOnce ( '0 0 45' ); + + $how2_barrel.bind ($how2_base); + $how2_recep.bind ($how2_base); + $how2_catcher.bind ($how2_base); + $how2_base.rotateOnce ( '0 0 45' ); + + $how3_barrel.bind ($how3_base); + $how3_recep.bind ($how3_base); + $how3_catcher.bind ($how3_base); + $how3_base.rotateOnce ( '0 0 45' ); + + sys.waitFor($how1_base); + + //crankshaft initial bind and rotate + $mc_pistrod1.bind ($mc_assembly_midpoint); + $mc_pistrod2.bind ($mc_assembly_midpoint); + $mc_pistrod3.bind ($mc_assembly_midpoint); + + $mc_piston1.bind ($mc_assembly_midpoint); + $mc_piston2.bind ($mc_assembly_midpoint); + $mc_piston3.bind ($mc_assembly_midpoint); + + $mc_crankshaft.bind ($mc_assembly_midpoint); + + $mc_assembly_midpoint.rotateOnce ( '-135 0 0' ); + sys.waitFor ($mc_assembly_midpoint); + + //crankshaft binds and times + $mc_pistrod1.bind ($mc_piston1); + $mc_pistrod2.bind ($mc_piston2); + $mc_pistrod3.bind ($mc_piston3); + + $mc_piston1.time (.125); + $mc_pistrod1.time (.125); + $mc_piston2.time (.125); + $mc_pistrod2.time (.125); + $mc_piston3.time (.125); + $mc_pistrod3.time (.125); + $mc_crankshaft.time (.125); + + //little piston machine binds and times + $pistrod1.bind ($piston1); + $pistrod2.bind ($piston2); + $pistrod3.bind ($piston3); + + $piston1.time (.125); + $pistrod1.time (.125); + $piston2.time (.125); + $pistrod2.time (.125); + $piston3.time (.125); + $pistrod3.time (.125); + $crankshaft.time (.125); + } + + + void safety_rails_down () + { + //set rail 1 times + $safety_rail_1.time( 1 ); + $safety_rail_1.accelTime( .25 ); + $safety_rail_1.decelTime( .25 ); + + //rails down + $safety_rail_1.move( DOWN, 40 ); + } + + void safety_rails_up () + { + //set rail 1 times + $safety_rail_1.time( 1 ); + $safety_rail_1.accelTime( .25 ); + $safety_rail_1.decelTime( .25 ); + + //rails up + $safety_rail_1.move( UP, 40 ); + } + + + + //////////////////////////////////////////////////// + // + // Saftey Bridge AWAY PAIR + // this will put the bridge piece and it's partner + // in the away position + // + //////////////////////////////////////////////////// + void saftey_bridge_away_pair(float bridge_number) + { + entity bh1, bh2, bf1, bf2; + + bh1=sys.getEntity ("saftey_bridge_holder_" + bridge_number ); + bh2=sys.getEntity ("saftey_bridge_holder_" + (bridge_number+1) ); + + bf1=sys.getEntity ("saftey_bridge_floorpiece_" + bridge_number ); + bf2=sys.getEntity ("saftey_bridge_floorpiece_" + (bridge_number+1) ); + + bf1.bind (bh1); + bf2.bind (bh2); + + bh1.startSoundShader ("mcu_support_2s", SND_CHANNEL_VOICE2); + + bh1.rotateOnce ( '45 0 0' ); + bh2.rotateOnce ( '-45 0 0' ); + sys.waitFor (bh1); + + bf1.unbind (); + bf2.unbind (); + + bf1.startSoundShader ("mcu_safteybridge_02", SND_CHANNEL_VOICE2 ); + + bf1.move ( REL_FORWARD, 256 ); + bf2.move ( REL_BACK, 256 ); + sys.waitFor (bf1); + + bh1.startSoundShader ("mcu_safteybridge_01", SND_CHANNEL_VOICE ); + bh1.rotateOnce ( '-135 0 0' ); + bh2.rotateOnce ( '135 0 0' ); + sys.waitFor (bh1); + + if (bridge_number==7){ + //sys.print( "\nlast bridge is done\n" ); + saftey_bridge_state = 0; + $saftey_bridge_gui.setGuiParm ( "gui_parm1" , 1); + //sys.print( "setting bridge gui parm \n" ); + $underarm_centralight2.fadeInLight (1); + $underarm_centralight1.fadeInLight (1); + } + + } + + + //////////////////////////////////////////////////// + // + // Saftey Bridge FORTH_PAIR + // this will put the bridge piece and it's partner + // in the traversable position + // + //////////////////////////////////////////////////// + void saftey_bridge_forth_pair(float bridge_number) + { + entity bh1, bh2, bf1, bf2; + + bh1=sys.getEntity ("saftey_bridge_holder_" + bridge_number ); + bh2=sys.getEntity ("saftey_bridge_holder_" + (bridge_number+1) ); + + bf1=sys.getEntity ("saftey_bridge_floorpiece_" + bridge_number ); + bf2=sys.getEntity ("saftey_bridge_floorpiece_" + (bridge_number+1) ); + + + + bh1.startSoundShader ("mcu_safteybridge_01", SND_CHANNEL_VOICE ); + bh1.rotateOnce ( '135 0 0' ); + bh2.rotateOnce ( '-135 0 0' ); + sys.waitFor (bh1); + + bf1.unbind (); + bf2.unbind (); + + bf1.startSoundShader ("mcu_safteybridge_02", SND_CHANNEL_VOICE2 ); + bf1.move ( REL_BACK, 256 ); + bf2.move ( REL_FORWARD, 256 ); + + sys.waitFor (bf1); + + bf1.bind (bh1); + bf2.bind (bh2); + bh1.time ( 2 ); + bh2.time ( 2 ); + bh1.accelTime ( 1 ); + bh2.accelTime ( 1 ); + bh1.decelTime ( 0 ); + bh2.decelTime ( 0 ); + + bh1.startSoundShader ("mcu_support_2s", SND_CHANNEL_VOICE2); + + bh1.rotateOnce ( '-45 0 0' ); + bh2.rotateOnce ( '45 0 0' ); + sys.waitFor (bh1); + + //bounce it + bh1.time( .15 ); + bh2.time( .15 ); + bh1.accelTime( 0 ); + bh2.accelTime( 0 ); + bh1.decelTime( .15 ); + bh2.decelTime( .15 ); + bh1.startSoundShader ("metalbounce_1", SND_CHANNEL_VOICE ); + bh1.rotateOnce( '.75 0 0' ); + bh2.rotateOnce( '-.75 0 0' ); + sys.waitFor (bh1); + + bh1.time( .15 ); + bh2.time( .15 ); + bh1.accelTime( .15 ); + bh2.accelTime( .15 ); + bh1.decelTime( 0 ); + bh2.decelTime( 0 ); + //bh1.startSoundShader ("metalbounce_2", SND_CHANNEL_VOICE2 ); + bh1.rotateOnce( '-.75 0 0' ); + bh2.rotateOnce( '.75 0 0' ); + sys.waitFor (bh1); + + bh1.time ( 2 ); + bh2.time ( 2 ); + bh1.accelTime ( .5 ); + bh2.accelTime ( .5 ); + bh1.decelTime ( .5 ); + bh2.decelTime ( .5 ); + bf1.unbind (); + bf2.unbind (); + + if (bridge_number==1){ + saftey_bridge_state = 1; + $saftey_bridge_gui.setGuiParm ( "gui_parm1" , 2); + $underarm_centralight2.fadeOutLight (1); + $underarm_centralight1.fadeOutLight (1); + } + } + + //////////////////////////////////////////////////// + // + // Saftey Bridge AWAY + // this will put the bridge in the away position + // + //////////////////////////////////////////////////// + void saftey_bridge_away() + { + float thread1; + + if (saftey_bridge_state == 1){ + //set the bridge state to prevent reuse + $saftey_bridge_gui.setGuiParm ( "gui_parm1" , 0); + saftey_bridge_state = 9; + + thread saftey_bridge_away_pair(1); + sys.wait (1); + + thread saftey_bridge_away_pair(3); + sys.wait (1); + + thread saftey_bridge_away_pair(5); + sys.wait (1); + + thread1 = thread saftey_bridge_away_pair(7); + sys.waitForThread( thread1); + + //trigger the aas + sys.trigger ($bridge_aas); + + //rails up + safety_rails_up (); + + } else { + //sys.print ("bridge already away\n"); + ; + } + } + + + + //////////////////////////////////////////////////// + // + // Saftey Bridge FORTH + // this will put the bridge in the traversalbe position + // + //////////////////////////////////////////////////// + void saftey_bridge_forth() + { + float thread1; + //sys.print( "saftey_bridge_state = " + saftey_bridge_state + "\n" ); + if (saftey_bridge_state == 0){ + + //rails down + safety_rails_down (); + + //set the bridge state to prevent reuse + $saftey_bridge_gui.setGuiParm ( "gui_parm1" , 0); + saftey_bridge_state = 9; + + thread saftey_bridge_forth_pair(7); + sys.wait (1); + + thread saftey_bridge_forth_pair(5); + sys.wait (1); + + thread saftey_bridge_forth_pair(3); + sys.wait (1); + + thread1 = thread saftey_bridge_forth_pair(1); + sys.waitForThread( thread1); + + //trigger the aas + sys.trigger ($bridge_aas); + //sys.print ("bridge aas should be on\n"); + + } else { + //sys.print ("bridge already out\n"); + ; + } + } + + + //////////////////////////////////////////////////// + // + // Rotary movement - the two big rotating + // light chambers + // + //////////////////////////////////////////////////// + void rotary() + { + $fly_around_light.bind ($fly_around_main); + $fly_around_speaker.bind ($fly_around_main); + $fly_around_end.bind ($fly_around_main); + + $fly_around_main.rotate ( '0 100 0' ); + $fly_around_middle.rotate ( '0 100 0' ); + + $fly_around2_light.bind ($fly_around2_main); + $fly_around2_speaker.bind ($fly_around2_main); + $fly_around2_end.bind ($fly_around2_main); + + $fly_around2_main.rotate ( '0 -100 0' ); + $fly_around2_middle.rotate ( '0 -100 0' ); + } + + + + //////////////////////////////////////////////////// + // + // howitzer #1 movement ... this is the 1st of + // the big piston like rods + // + //////////////////////////////////////////////////// + void howitzer_1() + { + //random numbers to keep howitzers unsynced + float ran1,ran2; + ran1=sys.random(1); + ran2=sys.random(1); + + while (1){ + //move the catcher up 8 for the recoil action + $how1_catcher.time (.4); + $how1_catcher.accelTime (.2); + $how1_catcher.decelTime (.2); + + $how1_barrel.time (.4); + $how1_barrel.accelTime (.2); + $how1_barrel.decelTime (.2); + + $how1_barrel.move ( UP, 10 ); + $how1_catcher.move ( UP, 10 ); + sys.waitFor ($how1_barrel); + sys.wait (ran1+1); + + //move the barrel upwards slowly + $how1_barrel.time (3+ran2); + $how1_barrel.accelTime (0); + $how1_barrel.decelTime (2); + + $how1_barrel.startSoundShader ("mset2_movement", SND_CHANNEL_VOICE); + $how1_barrel.move ( UP, 128 ); + sys.waitFor ($how1_barrel); + $how1_barrel.stopSound ( SND_CHANNEL_VOICE, false ); + $how1_barrel.startSoundShader ("mset2_stop", SND_CHANNEL_VOICE2); + + //fire the barrel backwards quickly + $how1_barrel.time (.25); + $how1_barrel.accelTime (.2); + $how1_barrel.decelTime (0); + + + $how1_barrel.move ( DOWN, 128 ); + sys.waitFor ($how1_barrel); + + $how1_barrel.startSoundShader ("msmall_pounder", SND_CHANNEL_ANY); + + + //catch the barrel in the catcher... down 8 + $how1_catcher.time (.1); + $how1_catcher.accelTime (0); + $how1_catcher.decelTime (.1); + + $how1_barrel.time (.1); + $how1_barrel.accelTime (0); + $how1_barrel.decelTime (.1); + + $how1_barrel.move ( DOWN, 10 ); + $how1_catcher.move ( DOWN, 10 ); + //sys.trigger ($how1_steam_1); + sys.waitFor ($how1_barrel); + } + } + + + //////////////////////////////////////////////////// + // + // howitzer #2 movement ... this is the 2nd of + // the big piston like rods + // + //////////////////////////////////////////////////// + void howitzer_2() + { + //random numbers to keep howitzers unsynced + float ran1,ran2; + ran1=sys.random(1); + ran2=sys.random(1); + + while (1){ + //move the catcher up 8 for the recoil action + $how2_catcher.time (.4); + $how2_catcher.accelTime (.2); + $how2_catcher.decelTime (.2); + + $how2_barrel.time (.4); + $how2_barrel.accelTime (.2); + $how2_barrel.decelTime (.2); + + $how2_barrel.move ( UP, 10 ); + $how2_catcher.move ( UP, 10 ); + sys.waitFor ($how2_barrel); + sys.wait (ran1+1); + + //move the barrel upwards slowly + $how2_barrel.time (3+ran2); + $how2_barrel.accelTime (0); + $how2_barrel.decelTime (2); + + $how2_barrel.startSoundShader ("mset1_movement", SND_CHANNEL_VOICE); + $how2_barrel.move ( UP, 128 ); + sys.waitFor ($how2_barrel); + $how2_barrel.stopSound ( SND_CHANNEL_VOICE, false ); + $how2_barrel.startSoundShader ("mset1_stop", SND_CHANNEL_VOICE2); + + //fire the barrel backwards quickly + $how2_barrel.time (.25); + $how2_barrel.accelTime (.2); + $how2_barrel.decelTime (0); + + $how2_barrel.startSoundShader ("msmall_pounder", SND_CHANNEL_ANY); + $how2_barrel.move ( DOWN, 128 ); + sys.waitFor ($how2_barrel); + + //catch the barrel in the catcher... down 8 + $how2_catcher.time (.1); + $how2_catcher.accelTime (0); + $how2_catcher.decelTime (.1); + + $how2_barrel.time (.1); + $how2_barrel.accelTime (0); + $how2_barrel.decelTime (.1); + + $how2_barrel.move ( DOWN, 10 ); + $how2_catcher.move ( DOWN, 10 ); + //sys.trigger ($how2_steam_1); + sys.waitFor ($how2_barrel); + } + } + + + //////////////////////////////////////////////////// + // + // howitzer #3 movement ... this is the 3rd of + // the big piston like rods + // + //////////////////////////////////////////////////// + void howitzer_3() + { + //random numbers to keep howitzers unsynced + float ran1,ran2; + ran1=sys.random(.5); + ran2=sys.random(.35); + + while (1){ + //move the catcher up 8 for the recoil action + $how3_catcher.time (.4); + $how3_catcher.accelTime (.2); + $how3_catcher.decelTime (.2); + + $how3_barrel.time (.4); + $how3_barrel.accelTime (.2); + $how3_barrel.decelTime (.2); + + $how3_barrel.move ( UP, 10 ); + $how3_catcher.move ( UP, 10 ); + sys.waitFor ($how3_barrel); + sys.wait (ran1+1); + + //move the barrel upwards slowly + $how3_barrel.time (3+ran2); + $how3_barrel.accelTime (0); + $how3_barrel.decelTime (2); + + $how3_barrel.startSoundShader ("mset2_movement", SND_CHANNEL_VOICE); + $how3_barrel.move ( UP, 128 ); + sys.waitFor ($how3_barrel); + $how3_barrel.stopSound ( SND_CHANNEL_VOICE, false ); + $how3_barrel.startSoundShader ("mset2_stop", SND_CHANNEL_VOICE2); + + //fire the barrel backwards quickly + $how3_barrel.time (.25); + $how3_barrel.accelTime (.2); + $how3_barrel.decelTime (0); + + $how3_barrel.startSoundShader ("msmall_pounder", SND_CHANNEL_ANY); + $how3_barrel.move ( DOWN, 128 ); + sys.waitFor ($how3_barrel); + + //catch the barrel in the catcher... down 8 + $how3_catcher.time (.1); + $how3_catcher.accelTime (0); + $how3_catcher.decelTime (.1); + + $how3_barrel.time (.1); + $how3_barrel.accelTime (0); + $how3_barrel.decelTime (.1); + + $how3_barrel.move ( DOWN, 10 ); + $how3_catcher.move ( DOWN, 10 ); + //sys.trigger ($how3_steam_1); + sys.waitFor ($how3_barrel); + } + } + + + + //////////////////////////////////////////////////// + // + // point to point pipe piston movement + // + //////////////////////////////////////////////////// + void pipe_piston_move() + { + //setup + $pipe_piston_p2p.time (.4); + $pipe_piston_p2p.accelTime (.1); + $pipe_piston_p2p.decelTime (.15); + $pipe_piston_p1p.time (.7); + $pipe_piston_p1p.accelTime (.1); + $pipe_piston_p1p.decelTime (.15); + $pipe_piston_p3p.time (.35); + $pipe_piston_p3p.accelTime (.1); + $pipe_piston_p3p.decelTime (.15); + + while (1){ + $pipe_piston_p1p.moveTo ( $p1p1 ); + $pipe_piston_p2p.moveTo ( $p2p2 ); + $pipe_piston_p3p.moveTo ( $p3p1 ); + sys.waitFor($pipe_piston_p2p); + + $pipe_piston_p1p.moveTo ( $p1p2 ); + $pipe_piston_p2p.moveTo ( $p2p1 ); + $pipe_piston_p3p.moveTo ( $p3p2 ); + sys.waitFor($pipe_piston_p2p); + } + } + + + + //////////////////////////////////////////////////// + // + // piston movement + // + //////////////////////////////////////////////////// + void crankshaft_move () + { + while (1) //begin while + { + $mc_piston1.move ( REL_UP, 30 ); + $mc_pistrod1.rotateOnce ( '26.56 0 0' ); + $mc_piston2.move ( REL_DOWN, 30 ); + $mc_pistrod2.rotateOnce ( '-26.56 0 0' ); + $mc_piston3.move ( REL_UP, 30 ); + $mc_pistrod3.rotateOnce ( '26.56 0 0' ); + $mc_crankshaft.rotateOnce ( '90 0 0' ); + sys.waitFor ($mc_piston1); + + $mc_piston1.move ( REL_UP, 30 ); + $mc_pistrod1.rotateOnce ( '-26.56 0 0' ); + $mc_piston2.move ( REL_DOWN, 30 ); + $mc_pistrod2.rotateOnce ( '26.56 0 0' ); + $mc_piston3.move ( REL_UP, 30 ); + $mc_pistrod3.rotateOnce ( '-26.56 0 0' ); + $mc_crankshaft.rotateOnce ( '90 0 0' ); + sys.waitFor ($mc_piston1); + + $mc_piston1.move ( REL_DOWN, 30 ); + $mc_pistrod1.rotateOnce ( '-26.56 0 0' ); + $mc_piston2.move ( REL_UP, 30 ); + $mc_pistrod2.rotateOnce ( '26.56 0 0' ); + $mc_piston3.move ( REL_DOWN, 30 ); + $mc_pistrod3.rotateOnce ( '-26.56 0 0' ); + $mc_crankshaft.rotateOnce ( '90 0 0' ); + sys.waitFor ($mc_piston1); + + $mc_piston1.move ( REL_DOWN, 30 ); + $mc_pistrod1.rotateOnce ( '26.56 0 0' ); + $mc_piston2.move ( REL_UP, 30 ); + $mc_pistrod2.rotateOnce ( '-26.56 0 0' ); + $mc_piston3.move ( REL_DOWN, 30 ); + $mc_pistrod3.rotateOnce ( '26.56 0 0' ); + $mc_crankshaft.rotateOnce ( '90 0 0' ); + sys.waitFor ($mc_pistrod1); + } //end while + } + + + + //////////////////////////////////////////////////// + // + // little first room machine + // + //////////////////////////////////////////////////// + void lilfrm_move () + { + $lilfrm_part1.time (.25); + $lilfrm_part2.time (.4); + $lilfrm_part3.time (.3); + $lilfrm_part4.time (.35); + $lilfrm_part5.time (.4); + + while (1) //begin main while + { + $lilfrm_part1.rotateOnce ( '0 0 2' ); + $lilfrm_part2.rotateOnce ( '0 0 2' ); + $lilfrm_part3.rotateOnce ( '0 0 -2' ); + $lilfrm_part4.rotateOnce ( '0 0 -2' ); + $lilfrm_part5.rotateOnce ( '0 0 -2' ); + sys.waitFor ($lilfrm_part1); + $lilfrm_part1.rotateOnce ( '0 0 -2' ); + $lilfrm_part2.rotateOnce ( '0 0 -2' ); + $lilfrm_part3.rotateOnce ( '0 0 2' ); + $lilfrm_part4.rotateOnce ( '0 0 2' ); + $lilfrm_part5.rotateOnce ( '0 0 2' ); + sys.waitFor ($lilfrm_part1); + } //end main while + } + + + + //////////////////////////////////////////////////// + // + // red light thing + // + //////////////////////////////////////////////////// + void redthing_move () + { + $redthing_mover.time ( 1 ); + $redthing_mover.accelTime ( .25 ); + $redthing_mover.decelTime ( .25 ); + + float ran1; + + while (1) //begin main while + { + ran1=sys.random(3); + + if (ran1<1){ + $redthing_mover.moveTo ($redlightpoint_1); + sys.waitFor ($redthing_mover); + } else if (ran1<2) { + $redthing_mover.moveTo ($redlightpoint_2); + sys.waitFor ($redthing_mover); + } else { + $redthing_mover.moveTo ($redlightpoint_3); + sys.waitFor ($redthing_mover); + } + + } //end main while + } + + + //////////////////////////////////////////////////// + // + // underarm_can_1_manip + // + //////////////////////////////////////////////////// + void underarm_can_1_manip() + { + if (underarm_work_state == 0){ + return; + } + + //move to sopt can 1 + + thread mover_startsound ($underarm_carrier); + + $underarm_carrier.moveTo ($underarm_spot_can1); + sys.waitFor ($underarm_carrier); + mover_stopsound ($underarm_carrier); + + + if (underarm_work_state == 0){ + return; + } + + //arm down + $underarm_upper.startSoundShader ("servo_1s_01", SND_CHANNEL_VOICE ); + $underarm_upper.rotateOnce ( '0 0 -90' ); + $underarm_lower.startSoundShader ("servo_1s_02", SND_CHANNEL_VOICE ); + $underarm_lower.rotateOnce ( '0 0 90' ); + sys.waitFor ($underarm_lower); + + //fingers to down pose + $underarm_fingers.startSoundShader ("mech_fingers_1_5s", SND_CHANNEL_VOICE ); + while ( underarm_fingers_state > -64 ){ + $underarm_fingers.move ( DOWN, 1 ); + sys.waitFor ($underarm_fingers); + underarm_fingers_state -= 1; + } + + //bind can 1 to fingers + $underarm_can_1.bind ($underarm_fingers); + + //fingers to up pose + $underarm_tube.startSoundShader ("airwhomp", SND_CHANNEL_VOICE2 ); + $underarm_fingers.startSoundShader ("mech_fingers_1_5s", SND_CHANNEL_VOICE ); + while ( underarm_fingers_state < 0 ){ + $underarm_fingers.move ( UP, 1 ); + sys.waitFor ($underarm_fingers); + underarm_fingers_state += 1; + } + + //do something interesting + $underarm_tube.startSoundShader ("something_interesting", SND_CHANNEL_VOICE ); + thread crossFadeEnt ($underarm_tube, '1 0 0', '.5 1 1', 1.75); + thread crossFadeEnt ($underarm_tube_light, '1 0 0', '.5 1 1', 1.75); + thread crossFadeEnt ($underarm_can_1, '1 0 0', '.5 1 1', 1.75); + thread crossFadeEnt ($underarm_can_1_light, '1 0 0', '.5 1 1', 1.75); + + sys.wait (2); + + //fingers to down pose + $underarm_fingers.startSoundShader ("mech_fingers_1_5s", SND_CHANNEL_VOICE ); + $underarm_tube.startSoundShader ("something_interesting_2", SND_CHANNEL_VOICE ); + while ( underarm_fingers_state > -64 ){ + $underarm_fingers.move ( DOWN, 1 ); + sys.waitFor ($underarm_fingers); + underarm_fingers_state -= 1; + } + + //unbind can 1 from fingers + $underarm_can_1.unbind (); + + + //fingers to up pose + + + $underarm_fingers.startSoundShader ("mech_fingers_1_5s", SND_CHANNEL_VOICE ); + while ( underarm_fingers_state < 0 ){ + $underarm_fingers.move ( UP, 1 ); + sys.waitFor ($underarm_fingers); + underarm_fingers_state += 1; + } + + //turn tube back to red + + thread crossFadeEnt ($underarm_tube, '.5 1 1', '1 0 0', 1.75); + thread crossFadeEnt ($underarm_tube_light, '.5 1 1', '1 0 0', 1.75); + thread crossFadeEnt ($underarm_can_1, '.5 1 1', '1 0 0', 2); + thread crossFadeEnt ($underarm_can_1_light, '.5 1 1', '1 0 0', 2); + + //arm up + $underarm_upper.startSoundShader ("servo_1s_01", SND_CHANNEL_VOICE ); + $underarm_upper.rotateOnce ( '0 0 90' ); + $underarm_lower.startSoundShader ("servo_1s_02", SND_CHANNEL_VOICE ); + $underarm_lower.rotateOnce ( '0 0 -90' ); + sys.waitFor ($underarm_lower); + } + + + + //////////////////////////////////////////////////// + // + // underarm_can_2_manip + // + //////////////////////////////////////////////////// + void underarm_can_2_manip() + { + if (underarm_work_state == 0){ + return; + } + + //move to sopt can 2 + + thread mover_startsound ($underarm_carrier); + + $underarm_carrier.moveTo ($underarm_spot_can2); + sys.waitFor ($underarm_carrier); + mover_stopsound ($underarm_carrier); + + if (underarm_work_state == 0){ + return; + } + + //arm down + $underarm_upper.startSoundShader ("servo_1s_01", SND_CHANNEL_VOICE ); + $underarm_upper.rotateOnce ( '0 0 -90' ); + $underarm_lower.startSoundShader ("servo_1s_02", SND_CHANNEL_VOICE ); + $underarm_lower.rotateOnce ( '0 0 90' ); + sys.waitFor ($underarm_lower); + + //fingers to down pose + while ( underarm_fingers_state > -64 ){ + $underarm_fingers.move ( DOWN, 1 ); + sys.waitFor ($underarm_fingers); + underarm_fingers_state -= 1; + } + + //bind can 2 to fingers + $underarm_can_2.bind ($underarm_fingers); + + //fingers to up pose + $underarm_tube.startSoundShader ("airwhomp", SND_CHANNEL_VOICE2 ); + $underarm_fingers.startSoundShader ("mech_fingers_1_5s", SND_CHANNEL_VOICE ); + while ( underarm_fingers_state < 0 ){ + $underarm_fingers.move ( UP, 1 ); + sys.waitFor ($underarm_fingers); + underarm_fingers_state += 1; + } + + //do something interesting + $underarm_tube.startSoundShader ("something_interesting", SND_CHANNEL_VOICE ); + thread crossFadeEnt ($underarm_tube, '1 0 0', '.5 1 1', 1.75); + thread crossFadeEnt ($underarm_tube_light, '1 0 0', '.5 1 1', 1.75); + thread crossFadeEnt ($underarm_can_2, '1 0 0', '.5 1 1', 1.75); + thread crossFadeEnt ($underarm_can_2_light, '1 0 0', '.5 1 1', 1.75); + + sys.wait (2); + + //fingers to down pose + $underarm_fingers.startSoundShader ( "mech_fingers_1_5s", SND_CHANNEL_VOICE ); + $underarm_tube.startSoundShader ( "something_interesting_2", SND_CHANNEL_VOICE ); + while ( underarm_fingers_state > -64 ){ + $underarm_fingers.move ( DOWN, 1 ); + sys.waitFor ($underarm_fingers); + underarm_fingers_state -= 1; + } + + //unbind can 2 from fingers + $underarm_can_2.unbind (); + + //fingers to up pose + + + $underarm_fingers.startSoundShader ("mech_fingers_1_5s", SND_CHANNEL_VOICE ); + while ( underarm_fingers_state < 0 ){ + $underarm_fingers.move ( UP, 1 ); + sys.waitFor ($underarm_fingers); + underarm_fingers_state += 1; + } + + //turn tube back to red + + thread crossFadeEnt ($underarm_tube, '.5 1 1', '1 0 0', 1.75); + thread crossFadeEnt ($underarm_tube_light, '.5 1 1', '1 0 0', 1.75); + thread crossFadeEnt ($underarm_can_2, '.5 1 1', '1 0 0', 2); + thread crossFadeEnt ($underarm_can_2_light, '.5 1 1', '1 0 0', 2); + + //arm up + $underarm_upper.startSoundShader ("servo_1s_01", SND_CHANNEL_VOICE ); + $underarm_upper.rotateOnce ( '0 0 90' ); + $underarm_lower.startSoundShader ("servo_1s_02", SND_CHANNEL_VOICE ); + $underarm_lower.rotateOnce ( '0 0 -90' ); + sys.waitFor ($underarm_lower); + } + + //////////////////////////////////////////////////// + // + // underarm_store + // stops underarm from doing it's thing and + // then moves it away to it's store spot + // + //////////////////////////////////////////////////// + void underarm_store () + { + //move to corner spot + $underarm_carrier.moveTo ($underarm_spot_corner); + sys.waitFor ($underarm_carrier); + + //rotate around corner + $underarm_carrier.rotateOnce ( '0 90 0' ); + sys.waitFor ($underarm_carrier); + + //move to storage spot + $underarm_carrier.moveTo ($underarm_spot_store); + sys.waitFor ($underarm_carrier); + } + + + + //////////////////////////////////////////////////// + // + // underarm_work + // arm moves from spot to spot and does it's thing + // + //////////////////////////////////////////////////// + void underarm_work () + { + while ( underarm_work_state == 1 ){ + map_mc_underground::underarm_can_1_manip(); + sys.wait(.1); + map_mc_underground::underarm_can_2_manip(); + sys.wait(.1); + } + //sys.print ("Underarm finishing it's work before storage...\n"); + + map_mc_underground::underarm_store (); + map_mc_underground::saftey_bridge_forth(); + } + + + + //////////////////////////////////////////////////// + // + // underarm_work_state_off + // state that tells underarm to stop working + // + //////////////////////////////////////////////////// + void underarm_work_state_off () + { + sys.wait( 1 ); + underarm_work_state = 0; + + sys.wait( 2 ); + sys.trigger( $computer_bridgeext7sec_speaker ); + } + + //////////////////////////////////////////////////// + // + // underarm_work_state_on + // state that tells underarm to stop working + // + //////////////////////////////////////////////////// + void underarm_work_state_on () + { + //bridge away + map_mc_underground::saftey_bridge_away (); + + //bring arm back around the bend + //move to corner spot + $underarm_carrier.moveTo ($underarm_spot_corner); + sys.waitFor ($underarm_carrier); + + //rotate around corner + $underarm_carrier.rotateOnce ( '0 -90 0' ); + sys.waitFor ($underarm_carrier); + + //underarm back to work + underarm_work_state = 1; + map_mc_underground::underarm_work(); + } + + + //////////////////////////////////////////////////// + // + // Crane load damage off + // + //////////////////////////////////////////////////// + void crane_load_damage_off () + { + //turn the damage off the movers + $crane_box1.enableDamage( 0 ); + $crane_box2.enableDamage( 0 ); + $crane_box3.enableDamage( 0 ); + $crane_box4.enableDamage( 0 ); + $crane_beam1.enableDamage( 0 ); + $crane_beam2.enableDamage( 0 ); + $crane_beam3.enableDamage( 0 ); + $crane_beam4.enableDamage( 0 ); + $crane_beam5.enableDamage( 0 ); + } + + + //////////////////////////////////////////////////// + // + // Crane drop the load + // + //////////////////////////////////////////////////// + void crane_drop () + { + $platform.startSoundShader ("wiresnap", SND_CHANNEL_BODY ); + $breaking_wires.remove(); + + sys.trigger ($speaker_crane_fall); + + $platform.time( 1.0 ); + $platform.accelTime( 0.1 ); + $platform.decelTime( 0.5 ); + + $platform.startSoundShader ("steelswing_01", SND_CHANNEL_VOICE ); + + $platform.rotateOnce( '-150 0 0' ); // Swing Sound + sys.waitFor( $platform ); + + //trigger the rail to break + sys.trigger($pi_cave_rail); + + $wires.time( 1.5 ); + $wires.accelTime( 0.25 ); + $wires.decelTime( 0.25 ); + $platform.time( 1.5 ); + $platform.accelTime( 0.25 ); + $platform.decelTime( 0.25 ); + $wires.rotateOnce( '50 0 0' ); + + $platform.startSoundShader ("steelswing_02", SND_CHANNEL_VOICE2 ); + + $platform.rotateOnce( '105 0 0' ); // Swing Sound + sys.waitFor( $platform ); + + $wires.time( 1.1 ); + $wires.accelTime( 0.2 ); + $wires.decelTime( 0.2 ); + $platform.time( 1.1 ); + $platform.accelTime( 0.2 ); + $platform.decelTime( 0.2 ); + $wires.rotateOnce( '-30 0 0' ); + + $platform.startSoundShader ("steelswing_03", SND_CHANNEL_BODY2 ); + + $platform.rotateOnce( '-75 0 0' ); // Swing sound + + sys.waitFor( $platform ); + + $wires.time( 0.8 ); + $wires.accelTime( 0.15 ); + $wires.decelTime( 0.15 ); + $platform.time( 0.6 ); + $platform.accelTime( 0.1 ); + $platform.decelTime( 0.1 ); + $wires.rotateOnce( '10 0 0' ); + + $platform.startSoundShader ("steelswing_04", SND_CHANNEL_VOICE ); + + $platform.rotateOnce( '30 0 0' ); // Swing sound + sys.waitFor( $platform ); + + //turn the damage off the movers + thread map_mc_underground::crane_load_damage_off(); + + $platform.time( 1.0 ); + $platform.accelTime( 0.2 ); + $platform.decelTime( 0.2 ); + + $platform.startSoundShader ("steelswing_05", SND_CHANNEL_VOICE ); + + $platform.rotateOnce( '-30 0 0' ); // Swing sound + sys.waitFor( $platform ); + + } + + + //////////////////////////////////////////////////// + // + // Open airlock door + // + //////////////////////////////////////////////////// + void airlock_door_open( float airlock, float doornum ) + { + entity ent; + entity entdoorr, entdoorl; + entity speaker; + string door1; + string door2; + float portalstate; + float movedist; + + if ( doornum == 2 ) { + door1 = "airlock" + airlock + "_door2"; + door2 = "airlock" + airlock + "_door1"; + portalstate = 2; + movedist = -16; + } else { + door1 = "airlock" + airlock + "_door1"; + door2 = "airlock" + airlock + "_door2"; + portalstate = 1; + movedist = 16; + } + + //turn door1 light on and door2 light off + ent=sys.getEntity( door2 + "_light" ); + thread crossFadeEnt( ent, '.84 .84 .9', '0.37 0.05 0.01', 1 ); + + sys.wait(1); + + ent=sys.getEntity( door1 + "_light" ); + thread crossFadeEnt( ent, '0.37 0.05 0.01', '.84 .84 .9', 1 ); + + //move the 4 locks to unlock position + ent=sys.getEntity( door1 + "_top_lock" ); + ent.time( 0.25 ); + ent.move( UP, 15 ); + + speaker=sys.getEntity( "speaker_" + door1 + "_bottom_lock" ); + sys.trigger( speaker ); + + ent=sys.getEntity( door1 + "_bottom_lock" ); + ent.time( 0.25 ); + ent.move( DOWN, 15 ); + + sys.waitFor( ent ); + + speaker=sys.getEntity( "speaker_" + door1 + "_left_lock" ); + sys.trigger( speaker ); + + ent=sys.getEntity( door1 + "_left_lock" ); + ent.time( 0.75 ); + ent.move( SOUTH, movedist ); + + speaker=sys.getEntity( "speaker_" + door1 + "_right_lock" ); + sys.trigger( speaker ); + + ent=sys.getEntity( door1 + "_right_lock" ); + ent.time( 0.75 ); + ent.move( SOUTH, movedist ); + + sys.waitFor( ent ); + + //open doors + speaker=sys.getEntity( "speaker_" + door1 + "_open" ); + sys.trigger( speaker ); + + entdoorl=sys.getEntity( door1 + "_left" ); + entdoorl.time( 1.2 ); + entdoorl.rotateOnce( '0 45 0' ); + + entdoorr=sys.getEntity( door1 + "_right" ); + entdoorr.time( 1.2 ); + entdoorr.rotateOnce( '0 -45 0' ); + + //trigger the portal + ent=sys.getEntity( door1 + "_portal" ); + sys.trigger( ent ); + + sys.waitFor( entdoorr ); + sys.waitFor( entdoorl ); + + //set airlock state + ent=sys.getEntity( "airlock" + airlock + "_door1_portal" ); + ent.setKey( "state", portalstate ); + + } + + + //////////////////////////////////////////////////// + // + // Close airlock door + // + //////////////////////////////////////////////////// + void airlock_door_close(float airlock, float doornum ) + { + entity ent; + entity entdoorr, entdoorl; + entity speaker; + string door; + float movedist; + + if ( doornum == 2 ) { + door = "airlock" + airlock + "_door2"; + movedist = 16; + } else { + door = "airlock" + airlock + "_door1"; + movedist = -16; + } + + //close doors + + speaker= sys.getEntity( "speaker_" + door + "_close" ); + sys.trigger (speaker); + + entdoorl=sys.getEntity ( door + "_left" ); + entdoorl.time (1.2); + entdoorl.rotateOnce ( '0 -45 0' ); + + entdoorr=sys.getEntity ( door + "_right" ); + entdoorr.time (1.2); + entdoorr.rotateOnce ( '0 45 0' ); + + sys.waitFor (entdoorr); + sys.waitFor (entdoorl); + + //trigger the portal + ent=sys.getEntity ( door + "_portal" ); + sys.trigger (ent); + + //move the 4 locks to unlock position + ent=sys.getEntity ( door + "_top_lock" ); + ent.time (0.25); + ent.move ( DOWN, 15 ); + + speaker=sys.getEntity ("speaker_" + door + "_bottom_lock"); + sys.trigger (speaker); + + ent=sys.getEntity ( door + "_bottom_lock" ); + ent.time (0.25); + ent.move ( UP, 15 ); + + speaker=sys.getEntity ("speaker_" + door + "_left_lock" ); + sys.trigger (speaker); + + ent=sys.getEntity ( door + "_left_lock" ); + ent.time (0.75); + ent.move ( SOUTH, movedist ); + + speaker=sys.getEntity ("speaker_" + door + "_right_lock" ); + sys.trigger (speaker); + + ent=sys.getEntity ( door + "_right_lock" ); + ent.time (0.75); + ent.move ( SOUTH, movedist ); + + sys.waitFor (ent); + +} + + + //////////////////////////////////////////////////// + // + // Main Activate airlock + // conditionally chooses based on entrance + // + //////////////////////////////////////////////////// + void airlock_main_activate(float airlock) + { + entity ent; + + //check to see which way the palyer entered by checking the airlock_state + //if 1 then close 1 and open 2 + + ent=sys.getEntity ("airlock" + airlock + "_door1_portal" ); + + if (ent.getFloatKey ("state")==1) { + airlock_door_close( airlock, 1 ); + airlock_door_open( airlock, 2 ); + + } else { //else close 2 and open 1 + airlock_door_close( airlock, 2 ); + airlock_door_open( airlock, 1 ); + } + } + + + + //////////////////////////////////////////////////// + // + // AIRLOCK main activation + // + //////////////////////////////////////////////////// + void airlock1_activate() + { + //disable the guis on the doors + $airlock1_door1_gui.setGuiParm ( "gui_parm1" , 0); + $airlock1_door2_gui.setGuiParm ( "gui_parm1" , 0); + $airlock1_innerguiholder.setGuiParm ( "gui_parm11" , 0); + + airlock_main_activate(1); + + //check the airlock state and enable the guis on the closed door + if ($airlock1_door1_portal.getFloatKey ("state")==1) { + $airlock1_door2_gui.setGuiParm ( "gui_parm1" , 1); + } else { //else close 2 and open 1 + $airlock1_door1_gui.setGuiParm ( "gui_parm1" , 1); + } + + $airlock1_innerguiholder.setGuiParm ( "gui_parm11" , 1); + } + + void airlock2_activate() + { + //disable the guis on the doors + $airlock2_door1_gui.setGuiParm ( "gui_parm1" , 0); + $airlock2_door2_gui.setGuiParm ( "gui_parm1" , 0); + $airlock2_innerguiholder.setGuiParm ( "gui_parm11" , 0); + + airlock_main_activate(2); + + //check the airlock state and enable the guis on the closed door + if ($airlock2_door1_portal.getFloatKey ("state")==1) { + $airlock2_door2_gui.setGuiParm ( "gui_parm1" , 1); + } else { //else close 2 and open 1 + $airlock2_door1_gui.setGuiParm ( "gui_parm1" , 1); + } + + $airlock2_innerguiholder.setGuiParm ( "gui_parm11" , 1); + } + + + //////////////////////////////////////////////////// + // + // AIRLOCK doors opening + // + //////////////////////////////////////////////////// + void airlock1_door1_open() + { + airlock_door_open(1, 1); + } + + void airlock1_door2_open() + { + airlock_door_open(1, 2); + } + + void airlock2_door1_open() + { + airlock_door_open(2, 1); + } + + void airlock2_door2_open() + { + airlock_door_open(2, 2); + } + + + + //////////////////////////////////////////////////// + // + // Break Zombie airlock door + // + //////////////////////////////////////////////////// + void airlock1_break() + { + //unhide the clip that will prevent the player from getting outside + //once the gui is pressed + sys.trigger( $airlock_break_clip ); + + airlock_door_close( 1, 2 ); + + //disable the gui on door1 + $airlock1_door1_gui.setGuiParm ( "gui_parm1" , 0); + + //turn door1 light on and door2 light off + thread crossFadeEnt ($airlock1_door2_light, '.84 .84 .9', '0.37 0.05 0.01', 1); + sys.wait(1); + thread crossFadeEnt ($airlock1_door1_light, '0.37 0.05 0.01', '.84 .84 .9', 1); + + //move the 4 locks to unlock position + $airlock1_door1_top_lock.time (0.25); + $airlock1_door1_top_lock.move ( UP, 15 ); + + $airlock1_door1_bottom_lock.time (0.25); + sys.trigger ($speaker_airlock1_door1_bottom_lock); + $airlock1_door1_bottom_lock.move ( DOWN, 15 ); + sys.waitFor ($airlock1_door1_bottom_lock); + + $airlock1_door1_left_lock.time (0.75); + sys.trigger ($speaker_airlock1_door1_left_lock); + + $airlock1_door1_left_lock.move ( SOUTH, 16 ); + $airlock1_door1_right_lock.time (0.75); + + sys.trigger ($speaker_airlock1_door1_right_lock); + $airlock1_door1_right_lock.move ( SOUTH, 16 ); + + sys.waitFor ($airlock1_door1_right_lock); + + //trigger the portal + sys.trigger ($airlock1_door1_portal); + + //lightswitch to sound flicker light + sys.trigger ($airlock1_door1_light); + //sys.trigger ($airlockzombielight); + + //trigger anim shit + sys.trigger ($airlockzombietrigger); + + //spark + sys.trigger ($airlockzombiespark1); + + //doors open a bit then stutter a bit leaving the crack in the door + $airlock1_door1_left.time(.4); + $airlock1_door1_right.time(.4); + sys.trigger ($speaker_malfunction_1); + $airlock1_door1_left.rotateOnce ( '0 4 0' ); + $airlock1_door1_right.rotateOnce ( '0 -4 0' ); + sys.waitFor ($airlock1_door1_right); + + $airlock1_door1_left.time(.3); + $airlock1_door1_right.time(.3); + sys.trigger ($speaker_malfunction_2); + $airlock1_door1_left.rotateOnce ( '0 -3 0' ); + $airlock1_door1_right.rotateOnce ( '0 3 0' ); + sys.waitFor ($airlock1_door1_right); + + $airlock1_door1_left.time(.3); + $airlock1_door1_right.time(.3); + sys.trigger ($speaker_malfunction_2a); + $airlock1_door1_left.rotateOnce ( '0 10 0' ); + $airlock1_door1_right.rotateOnce ( '0 -3 0' ); + sys.waitFor ($airlock1_door1_right); + + $airlock1_door1_left.time(.25); + $airlock1_door1_right.time(.25); + sys.trigger ($speaker_malfunction_3); + $airlock1_door1_left.rotateOnce ( '0 -5 0' ); + $airlock1_door1_right.rotateOnce ( '0 -3 0' ); + sys.waitFor ($airlock1_door1_right); + + //spark + sys.trigger ($airlockzombiespark2); + sys.trigger ($airlockzombiespark1); + + //trigger light to go off completely + //sys.trigger ($airlockzombielight); + + sys.wait( 2 ); + + //trigger garage skull fly through + sys.trigger( $garagelight_break_relay ); + sys.trigger( $garageskulltrigger ); + + //wait + sys.wait( 4 ); + + //spark + sys.trigger( $airlockzombiespark2 ); + sys.trigger( $airlockzombiespark1 ); + + //wait + sys.wait(1); + + //open one door fully to allow the player to exit the airlock + $airlock1_door1_right.time(1.2); + sys.trigger ($speaker_airlock1_door1_open); + + $airlock1_door1_right.rotateOnce ( '0 -38 0' ); + + } + + + //////////////////////////////////////////////////// + // + // piston movement + // + //////////////////////////////////////////////////// + void piston_move () + { + while (1) //begin while + { + + $piston1.move ( DOWN, 6 ); + $pistrod1.rotateOnce ( '0 0 -26.56' ); + $piston2.move ( UP, 6 ); + $pistrod2.rotateOnce ( '0 0 26.56' ); + $piston3.move ( DOWN, 6 ); + $pistrod3.rotateOnce ( '0 0 -26.56' ); + $crankshaft.rotateOnce ( '0 0 90' ); + sys.waitFor ($piston1); + + $piston1.move ( DOWN, 6 ); + $pistrod1.rotateOnce ( '0 0 26.56' ); + $piston2.move ( UP, 6 ); + $pistrod2.rotateOnce ( '0 0 -26.56' ); + $piston3.move ( DOWN, 6 ); + $pistrod3.rotateOnce ( '0 0 26.56' ); + $crankshaft.rotateOnce ( '0 0 90' ); + sys.waitFor ($piston1); + + $piston1.move ( UP, 6 ); + $pistrod1.rotateOnce ( '0 0 26.56' ); + $piston2.move ( DOWN, 6 ); + $pistrod2.rotateOnce ( '0 0 -26.56' ); + $piston3.move ( UP, 6 ); + $pistrod3.rotateOnce ( '0 0 26.56' ); + $crankshaft.rotateOnce ( '0 0 90' ); + sys.waitFor ($piston1); + + $piston1.move ( UP, 6 ); + $pistrod1.rotateOnce ( '0 0 -26.56' ); + $piston2.move ( DOWN, 6 ); + $pistrod2.rotateOnce ( '0 0 26.56' ); + $piston3.move ( UP, 6 ); + $pistrod3.rotateOnce ( '0 0 -26.56' ); + $crankshaft.rotateOnce ( '0 0 90' ); + sys.waitFor ($piston1); + + } //end while + + } + + + + //////////////////////////////////////////////////// + // + // canister mover + // + //////////////////////////////////////////////////// + void canister_mover () + { + sys.wait (2); + $canismover_rdoor.time (1); + $canismover_ldoor.time (1); + + while (1) //begin while + { + //back into recess 192 + sys.trigger ($speaker_can1_move); // SOUND + $canismover_anchor.time (2); + $canismover_anchor.accelTime (2); + $canismover_anchor.decelTime (0); + + $canismover_anchor.move ( WEST, 192 ); + sys.waitFor ($canismover_anchor); + + //close doors (move 24) + sys.trigger ($speaker_candoor1_close); // SOUND + $canismover_rdoor.move (NORTH, -24); + $canismover_ldoor.move (NORTH, 24); + sys.waitFor ($canismover_ldoor); + + //hide it all + $canismover.hide (); + $func_static_5240.hide (); + $func_static_5239.hide (); + $light_5120.Off (); + $func_static_5252.hide (); + $light_5121.Off (); + $func_static_5233.hide (); + $light_5118.Off (); + $light_5116.Off (); + $func_static_5248.hide (); + + //wait after it goes behind the closed doors + sys.wait (3); + + //bring it forward 192 + $canismover_anchor.time (.1); + $canismover_anchor.accelTime (0); + $canismover_anchor.decelTime (0); + + $canismover_anchor.move ( WEST, -192 ); + sys.waitFor ($canismover_anchor); + + //rotate it quickly 90 degs to down position + $canismover_anchor.time (.1); + $canismover_anchor.accelTime (0); + $canismover_anchor.decelTime (0); + + + $canismover_anchor.rotateOnce ( '90 0 0' ); + sys.waitFor ($canismover_anchor); + + //unhide it all + $canismover.show (); + $func_static_5240.show (); + $func_static_5239.show (); + $light_5120.On (); + $func_static_5252.show (); + $light_5121.On (); + $func_static_5233.show (); + $light_5118.On (); + $light_5116.On (); + $func_static_5248.show (); + + //open doors (move 24) + sys.trigger ($speaker_candoor2_open); // SOUND + + $canismover_rdoor.move (NORTH, 24); + $canismover_ldoor.move (NORTH, -24); + sys.waitFor ($canismover_ldoor); + + //rotate it up -90 degs + $canismover_anchor.time (2); + $canismover_anchor.accelTime (2); + $canismover_anchor.decelTime (0); + + sys.trigger ($speaker_can1_updown); // SOUND + + $canismover_anchor.rotateOnce ( '-90 0 0' ); + sys.waitFor ($canismover_anchor); + + //bounce + $canismover_anchor.time (.15); + $canismover_anchor.accelTime (.15); + $canismover_anchor.decelTime (0); + $canismover_anchor.rotateOnce ( '1.5 0 0' ); + sys.waitFor ($canismover_anchor); + + $canismover_anchor.time (.15); + $canismover_anchor.accelTime (0); + $canismover_anchor.decelTime (.15); + $canismover_anchor.rotateOnce ( '-1.5 0 0' ); + sys.waitFor ($canismover_anchor); + + $canismover_anchor.time (.10); + $canismover_anchor.accelTime (.10); + $canismover_anchor.decelTime (0); + $canismover_anchor.rotateOnce ( '.5 0 0' ); + sys.waitFor ($canismover_anchor); + + $canismover_anchor.time (.10); + $canismover_anchor.accelTime (0); + $canismover_anchor.decelTime (.10); + $canismover_anchor.rotateOnce ( '-.5 0 0' ); + sys.waitFor ($canismover_anchor); + + //twist it up + $canismover_anchor.time (4.5); + $canismover_anchor.accelTime (1.5); + $canismover_anchor.decelTime (1); + + sys.trigger ($speaker_can1_rot); // SOUND + $canismover_anchor.rotateOnce ( '0 0 540' ); + sys.waitFor ($canismover_anchor); + + sys.wait (0.5); + + sys.trigger ($speaker_can1_rot); // SOUND + $canismover_anchor.rotateOnce ( '0 0 -540' ); + sys.waitFor ($canismover_anchor); + + } //end while + + } + + + //////////////////////////////////////////////////// + // + // canister2 mover + // + //////////////////////////////////////////////////// + void canister2_mover () + { + sys.wait (6); + $canismover2_rdoor.time (1); + $canismover2_ldoor.time (1); + while (1) //begin while + { + //back into recess 192 + $canismover2_anchor.time (2); + $canismover2_anchor.accelTime (2); + $canismover2_anchor.decelTime (0); + + sys.trigger ($speaker_can2_move); // SOUND + $canismover2_anchor.move ( WEST, 192 ); + sys.waitFor ($canismover2_anchor); + + //close doors (move 24) + sys.trigger ($speaker_candoor2_close); // SOUND + $canismover2_rdoor.move (NORTH, -24); + $canismover2_ldoor.move (NORTH, 24); + sys.waitFor ($canismover2_ldoor); + + //hide it all + $canismover2.hide (); + $func_static_52402.hide (); + $func_static_52392.hide (); + $light_51202.Off (); + $func_static_52522.hide (); + $light_51212.Off (); + $func_static_52332.hide (); + $light_51182.Off (); + $light_51162.Off (); + $func_static_52482.hide (); + + //wait after it goes behind the closed doors + sys.wait (3); + + //bring it forward 192 + $canismover2_anchor.time (.1); + $canismover2_anchor.accelTime (0); + $canismover2_anchor.decelTime (0); + + $canismover2_anchor.move ( WEST, -192 ); + sys.waitFor ($canismover2_anchor); + + //rotate it quickly 90 degs to down position + $canismover2_anchor.time (.1); + $canismover2_anchor.accelTime (0); + $canismover2_anchor.decelTime (0); + + $canismover2_anchor.rotateOnce ( '90 0 0' ); + sys.waitFor ($canismover2_anchor); + + //unhide it all + $canismover2.show (); + $func_static_52402.show (); + $func_static_52392.show (); + $light_51202.On (); + $func_static_52522.show (); + $light_51212.On (); + $func_static_52332.show (); + $light_51182.On (); + $light_51162.On (); + $func_static_52482.show (); + + //open doors (move 24) + $canismover2_rdoor.move (NORTH, 24); + $canismover2_ldoor.move (NORTH, -24); + sys.trigger ($speaker_candoor2_open); // SOUND + + sys.waitFor ($canismover2_ldoor); + + //rotate it up -90 degs + $canismover2_anchor.time (2); + $canismover2_anchor.accelTime (2); + $canismover2_anchor.decelTime (0); + + sys.trigger ($speaker_can2_updown); // SOUND + $canismover2_anchor.rotateOnce ( '-90 0 0' ); + sys.waitFor ($canismover2_anchor); + + //bounce + $canismover2_anchor.time (.15); + $canismover2_anchor.accelTime (.15); + $canismover2_anchor.decelTime (0); + $canismover2_anchor.rotateOnce ( '1.5 0 0' ); + sys.waitFor ($canismover2_anchor); + + $canismover2_anchor.time (.15); + $canismover2_anchor.accelTime (0); + $canismover2_anchor.decelTime (.15); + $canismover2_anchor.rotateOnce ( '-1.5 0 0' ); + sys.waitFor ($canismover2_anchor); + + $canismover2_anchor.time (.10); + $canismover2_anchor.accelTime (.10); + $canismover2_anchor.decelTime (0); + $canismover2_anchor.rotateOnce ( '.5 0 0' ); + sys.waitFor ($canismover2_anchor); + + $canismover2_anchor.time (.10); + $canismover2_anchor.accelTime (0); + $canismover2_anchor.decelTime (.10); + $canismover2_anchor.rotateOnce ( '-.5 0 0' ); + sys.waitFor ($canismover2_anchor); + + //twist it up + + $canismover2_anchor.time (4.5); + $canismover2_anchor.accelTime (1.5); + $canismover2_anchor.decelTime (.3); + + sys.trigger ($speaker_can2_rot); + $canismover2_anchor.rotateOnce ( '0 0 540' ); + sys.waitFor ($canismover2_anchor); + + sys.wait (0.5); + + sys.trigger ($speaker_can2_rot); + $canismover2_anchor.rotateOnce ( '0 0 -540' ); + sys.waitFor ($canismover2_anchor); + + } //end while + } + + + + //////////////////////////////////////////////////// + // + // After invasion + // Things that are triggered after the invasion + // + //////////////////////////////////////////////////// + void after_invasion () + { + //unhide the exit elevator + $light_51518.show(); + + //steps busted by steam + $preinvasion_steps.hide(); + $postinvasion_steps.show(); + + $pi_steps_steamlight1.On(); + $pi_steps_steamlight2.On(); + + sys.trigger ($pi_steps_steam1); + sys.trigger ($pi_steps_steam2); + + sys.trigger($pi_stepsteamsound); + + //turn on the hazard lights + $pi_hazlight_proj1.On(); + $pi_hazlight_proj2.On(); + $pi_hazlight_sml1.On(); + $pi_hazlight_sml2.On(); + + $func_rotating_5.show(); + $func_rotating_6.show(); + + sys.trigger($pi_hazspeaker); + + //impclawdoors + $impclawdoor1.open(); + $impclawdoor2.open(); + $impclawdoor1.remove(); + $impclawdoor2.remove(); + + $underground_impcrawl_door_3.show(); + $impclawdoorclip.show(); + + //restore position of crane + $crane_main.restorePosition(); + + //crane load unbind so it can fall + $crane_box1.unbind(); + $crane_box2.unbind(); + $crane_box3.unbind(); + $crane_box4.unbind(); + $crane_beam1.unbind(); + $crane_beam2.unbind(); + $crane_beam3.unbind(); + $crane_beam4.unbind(); + $crane_beam5.unbind(); + + //unhide the cave railing + $pi_cave_rail.show(); + + //enable the bridge gui + $saftey_bridge_gui.setGuiParm ( "gui_parm1" , 1); + + } + + + + //////////////////////////////////////////////////// + // + // Fred stuff + // + //////////////////////////////////////////////////// + void guard_switch_head_to_zombie( entity self ) { + self.setModel( "underground_invasion_zsechead" ); + //sys.print( "Swapping Head\n"); + } + + void sci_switch_head_to_stump( entity self ) { + self.setModel( "underground_crazy_stump" ); + //sys.print( "Swapping Head\n"); + } + + void killzombie() + { + $monster_zombie_maint_1.kill(); + } + + //////////////////////////////////////////////////// + // + // swing the swinglight + // + //////////////////////////////////////////////////// + void swinglight_move () + { + $swinglight_mover.sway( 120, 0, '0 0 60' ); + } + + //////////////////////////////////////////////////// + // + // drop_floor + // + //////////////////////////////////////////////////// + void drop_floor_down () + { + //trigger the initial speaker + sys.trigger ($speaker_drop_floor); + + $drop_floor.time(1); + $drop_floor.accelTime(1); + $drop_floor.decelTime(.2); + + //move drop_floor down + $drop_floor.move (DOWN, 176); + + //trigger the weird sound + sys.trigger($drop_floor_weird_speaker); + } + + + + //////////////////////////////////////////////////// + // + // close security door + // + //////////////////////////////////////////////////// + void close_secdoor () + { + $func_door_46.close (); + } + + //////////////////////////////////////////////////// + // + // spooky_postinvasion1 + // + // Scenario that happens immediately after invasion + // cinematic. + // + //////////////////////////////////////////////////// + void postinvasion_spooky01_speakers_off () + { + float j; + entity ent; + for (j=1; j<=11; j++) + { + ent = sys.getEntity ( "comm_speaker_" + j ); + ent.fadeSound ( SND_CHANNEL_ANY, -60, 2.5 ); + } + } + + void postinvasion_spooky01_speakers_on () + { + float j; + entity ent; + for (j=1; j<=11; j++) + { + ent = sys.getEntity ( "comm_speaker_" + j ); + ent.fadeSound ( SND_CHANNEL_ANY, 0, 2.5 ); + } + } + + void postinvasion_spooky01_lights_off () + { + float j; + entity ent; + for (j=1; j<=7; j++) + { + ent = sys.getEntity ( "comm_light_" + j ); + ent.fadeOutLight ( 2.5 ); + } + } + + void postinvasion_spooky01_lights_on () + { + float j; + entity ent; + for (j=1; j<=7; j++) + { + ent = sys.getEntity ( "comm_light_" + j ); + ent.fadeInLight ( 2.5 ); + } + } + + void postinvasion_spooky01 () + { + /* stuff I gotta trigger + invasion_spectrum_relay + invasion_floorskull_relay + underground_crazy_zombie + */ + + // XIAN: Inserted speaker function here... + thread post_invasion_sounds(); + + //close and lock the door + $func_door_74.close (); + sys.trigger ($invasion_door_lock_relay); + + //power out + sys.trigger ($comm_speaker_powerout); + thread postinvasion_spooky01_speakers_off(); + thread postinvasion_spooky01_lights_off(); + + //wait for fades + sys.wait (2.5); + + //trigger the suspense trigger + + sys.trigger ($comm_speaker_suspense); + + sys.wait (1); + + sys.trigger ($speaker_airush2); + + sys.wait (0.5); + + sys.trigger ($speaker_substing1); + sys.trigger ($speaker_seq_invasion); // comm chatter stuff from other people + // on the base + sys.wait (1); + + sys.trigger ($speaker_invasion_buildup); // Trigger the 5 second buildup speaker + sys.wait (4.8); + + // 5 second buildup here + + //trigger the skull from the floor + sys.trigger ($invasion_floorskull_relay); + + sys.trigger ($speaker_appear); // White column appearing in middle of room stinger + sys.trigger ($speaker_hellblast_stinger); + + sys.wait (0.5); + + $speaker_appear.startSoundShader ("mc_hellblast_explosion", SND_CHANNEL_VOICE2); + + sys.wait (0.5); + + sys.trigger ($speaker_hellwind); + + //trigger spectrum bang + sys.trigger ($invasion_spectrum_relay); + + sys.wait (2); // Was 18 -Xian + + sys.trigger ($speaker_spookything); + + sys.wait (3); + + sys.trigger ($speaker_betruger_laugh); + + sys.wait (5); + + //trigger transformation + //skull from wall transforms asian guy into zombie + sys.trigger ($crazysci_relay_nextthing); + + sys.trigger ($speaker_leatherface); + + sys.wait (2); + + sys.trigger ($speaker_substing2); + + sys.wait (1); + + sys.trigger ($speaker_stereothing); + + sys.wait (1); + + //trigger the spooky looping sound that remains in the room after the invasion + sys.trigger ($invasionspookyremain_speaker); + + //power back on + sys.trigger ($comm_speaker_poweron); + sys.wait (1); + thread postinvasion_spooky01_lights_on(); + thread postinvasion_spooky01_speakers_on(); + + + //trigger the gui that can be triggered on the middle desk + sys.trigger ($func_static_4730); + + //trigger zombie security banging + sys.trigger ($zsec_bang); + + //trigger first radio chatter + sys.trigger ($rchat_1); + + sys.wait (2); + + $speaker_spookything.startSoundShader ("mc_substing_02", SND_CHANNEL_VOICE2 ); + + sys.wait(2); + sys.trigger ($rchat_7); + sys.wait(3); + + //unlock and open door + sys.trigger ($invasion_door_unlock_relay); + + //trigger zombie to come on in + sys.trigger ($comm_zombie); + + //break light near guis + sys.wait(3); + sys.trigger ($comm_light_6); + } + + void init_howitzer() { + //howitzer setup + $how1_barrel.bind ($how1_base); + $how1_recep.bind ($how1_base); + $how1_catcher.bind ($how1_base); + $how1_base.rotateOnce ( '0 0 45' ); + + $how2_barrel.bind ($how2_base); + $how2_recep.bind ($how2_base); + $how2_catcher.bind ($how2_base); + $how2_base.rotateOnce ( '0 0 45' ); + + $how3_barrel.bind ($how3_base); + $how3_recep.bind ($how3_base); + $how3_catcher.bind ($how3_base); + $how3_base.rotateOnce ( '0 0 45' ); + + sys.waitFor($how1_base); + + thread howitzer_1 (); + thread howitzer_2 (); + thread howitzer_3 (); + + } + + + //////////////////////////////////////////////////// + // + // brooks gui triggers + // + //////////////////////////////////////////////////// + void brooks_guitouch () + { + sys.trigger ($secpanel1); + } + + void brooks_guiopen () + { + $secpanel1.setGuiParm ( "gui_parm1" , 2); + } + + + //////////////////////////////////////////////////// + // + // Crane start sound + // + //////////////////////////////////////////////////// + void crane_start_thread() { + sys.trigger ($crane_start_speaker); + sys.wait (1); + $crane_main_speaker.On(); + } + + //////////////////////////////////////////////////// + // + // Crane Main Move Right + // + //////////////////////////////////////////////////// + void crane_main_right() + { + vector delta,deltatest; + vector deltadif; + + sys.killthread ( "map_mc_underground::crane_main_left" ); + + //set the dir state for correct stopping + crane_dir = 1; + + //set crane times back to normal + $crane_main.time (6); + $crane_main.accelTime (3); + $crane_main.decelTime (2); + + if ( crane_main_state < 90 ) { + //start sound + thread crane_start_thread(); + + //start movement + $crane_main.rotateOnce ( '0 -90 0' ); + + while ( 1 ) { + delta = anglemod360( $crane_main.getAngles() ); + deltatest = $crane_main.getAngles(); + crane_main_state = (270 - (int( delta_y ))); + //sys.print ("crane_main_state = " + crane_main_state + " " + deltatest +" \n"); + $crane_main.setGuiParm ( "gui_parm2" , crane_main_state); + $crane_remote_panel.setGuiParm ( "gui_parm2" , crane_main_state); + $crane_reset_button.setGuiParm ( "gui_parm2" , crane_main_state); + if (crane_main_state >= 89) { + break; + } + sys.waitFrame(); + } + + //***** + //stop movement + //***** + + //stop sound + $crane_main_speaker.Off(); + sys.trigger ($crane_end_speaker); + + //set crane times to accomodate stopping + $crane_main.time (.5); + $crane_main.accelTime (0); + $crane_main.decelTime (.5); + + //the final move + $crane_main.rotateOnce ( '0 -1 0' ); + sys.waitFor ($crane_main); + + //set crane times back to normal + $crane_main.time (6); + $crane_main.accelTime (3); + $crane_main.decelTime (2); + + //set crane status and update guis + crane_main_state = 90; + //sys.print ("crane_main_state = " + crane_main_state + " \n"); + $crane_main.setGuiParm ( "gui_parm2" , crane_main_state); + $crane_remote_panel.setGuiParm ( "gui_parm2" , crane_main_state); + $crane_reset_button.setGuiParm ( "gui_parm2" , crane_main_state); + + } + } + + //////////////////////////////////////////////////// + // + // Crane Main Move Left + // this should be redone for smoother movement + // especially since the player can remotely opperate + // the crane and see the jerky movement easily + // + //////////////////////////////////////////////////// + void crane_main_left() + { + vector delta; + vector deltadif; + + sys.killthread ( "map_mc_underground::crane_main_right" ); + + //set the dir state for correct stopping + crane_dir = -1; + + //set crane times back to normal + $crane_main.time (6); + $crane_main.accelTime (3); + $crane_main.decelTime (2); + + if ( crane_main_state > 0 ) { + //start sound + thread crane_start_thread(); + + //start movement + $crane_main.rotateOnce ( '0 90 0' ); + + while ( 1 ) { + delta = anglemod360( $crane_main.getAngles() ); + crane_main_state = (270 - (int( delta_y ))); + //sys.print ("crane_main_state = " + crane_main_state + " \n"); + $crane_main.setGuiParm ( "gui_parm2" , crane_main_state); + $crane_remote_panel.setGuiParm ( "gui_parm2" , crane_main_state); + $crane_reset_button.setGuiParm ( "gui_parm2" , crane_main_state); + if (crane_main_state <= 1) { + break; + } + sys.waitFrame(); + } + + //***** + //stop movement + //***** + + //stop sound + $crane_main_speaker.Off(); + sys.trigger ($crane_end_speaker); + + //set crane times to accomodate stopping + $crane_main.time (.5); + $crane_main.accelTime (0); + $crane_main.decelTime (.5); + + //the final move + $crane_main.rotateOnce ( '0 1 0' ); + sys.waitFor ($crane_main); + + //set crane times back to normal + $crane_main.time (6); + $crane_main.accelTime (3); + $crane_main.decelTime (2); + + //update guis + crane_main_state = 0; + //sys.print ("crane_main_state = " + crane_main_state + " \n"); + $crane_main.setGuiParm ( "gui_parm2" , crane_main_state); + $crane_remote_panel.setGuiParm ( "gui_parm2" , crane_main_state); + $crane_reset_button.setGuiParm ( "gui_parm2" , crane_main_state); + } + } + + + //////////////////////////////////////////////////// + // + // Crane stop + // + //////////////////////////////////////////////////// + void crane_main_stop() + { + //sys.print ("enter crane_main_stop \n"); + vector delta; + + sys.killthread ( "map_caves2::crane_main_left" ); + sys.killthread ( "map_caves2::crane_main_right" ); + + //set crane times to accomodate stopping + $crane_main.time (.3); + $crane_main.accelTime (0); + $crane_main.decelTime (.3); + + //stop movement + if ( (crane_dir < 0) && (crane_main_state > 0) && (crane_main_state < 90) ) { + $crane_main.rotateOnce ( '0 1 0' ); + sys.waitFor ($crane_main); + delta = anglemod360( $crane_main.getAngles() ); + crane_main_state = (270 - (int( delta_y ))); + //sys.print ("crane_main_state = " + crane_main_state + " \n"); + $crane_main.setGuiParm ( "gui_parm2" , crane_main_state); + $crane_remote_panel.setGuiParm ( "gui_parm2" , crane_main_state); + $crane_reset_button.setGuiParm ( "gui_parm2" , crane_main_state); + } else if ( (crane_main_state > 0) && (crane_main_state < 90) ){ + $crane_main.rotateOnce ( '0 -1 0' ); + sys.waitFor ($crane_main); + delta = anglemod360( $crane_main.getAngles() ); + crane_main_state = (270 - (int( delta_y ))); + //sys.print ("crane_main_state = " + crane_main_state + " \n"); + $crane_main.setGuiParm ( "gui_parm2" , crane_main_state); + $crane_remote_panel.setGuiParm ( "gui_parm2" , crane_main_state); + $crane_reset_button.setGuiParm ( "gui_parm2" , crane_main_state); + } + + //stop sound + $crane_main_speaker.Off(); + sys.trigger ($crane_end_speaker); + + //set crane times back to normal + $crane_main.time (6); + $crane_main.accelTime (3); + $crane_main.decelTime (2); + } + + + //////////////////////////////////////////////////// + // + // return radio chatter 1 + // + //////////////////////////////////////////////////// + void radio_chat_1() + { + float ran1; + + ran1 = (3 + sys.random(3)); + sys.wait (ran1); + + sys.trigger ($rchat_8); + ran1 = (3 + sys.random(5)); + sys.wait (ran1); + + sys.trigger ($rchat_2); + ran1 = (8 + sys.random(6)); + sys.wait (ran1); + + sys.trigger ($rchat_3); + ran1 = (15 + sys.random(6)); + sys.wait (ran1); + + sys.trigger ($rchat_4); + ran1 = (8 + sys.random(3)); + sys.wait (ran1); + + sys.trigger ($rchat_5); + ran1 = (12 + sys.random(6)); + sys.wait (ran1); + + sys.trigger ($rchat_6); + ran1 = (8 + sys.random(8)); + sys.wait (ran1); + + sys.trigger ($rchat_7); + ran1 = (15 + sys.random(3)); + sys.wait (ran1); + } + + void radio_chat_2() + { + float ran1; + + ran1 = (8 + sys.random(3)); + sys.wait (ran1); + + sys.trigger ($rchat_9); + ran1 = (8 + sys.random(3)); + sys.wait (ran1); + + sys.trigger ($rchat_10); + ran1 = (8 + sys.random(6)); + sys.wait (ran1); + + sys.trigger ($rchat_11); + ran1 = (8 + sys.random(8)); + sys.wait (ran1); + + sys.trigger ($rchat_12); + ran1 = (8 + sys.random(3)); + sys.wait (ran1); + + sys.trigger ($rchat_13); + ran1 = (8 + sys.random(5)); + sys.wait (ran1); + } + + void radio_chat_3() + { + float ran1; + + ran1 = (0 + sys.random(3)); + sys.wait (ran1); + + sys.trigger ($rchat_14); + ran1 = (8 + sys.random(3)); + sys.wait (ran1); + + sys.trigger ($rchat_15); + ran1 = (8 + sys.random(5)); + sys.wait (ran1); + + sys.trigger ($rchat_2); + ran1 = (8 + sys.random(8)); + sys.wait (ran1); + } + + void radio_chat_4() + { + float ran1; + + ran1 = (4 + sys.random(3)); + sys.wait (ran1); + + sys.trigger ($rchat_1); + ran1 = (8 + sys.random(9)); + sys.wait (ran1); + + sys.trigger ($rchat_3); + ran1 = (8 + sys.random(9)); + sys.wait (ran1); + + sys.trigger ($rchat_4); + ran1 = (12 + sys.random(9)); + sys.wait (ran1); + + sys.trigger ($rchat_5); + ran1 = (15 + sys.random(9)); + sys.wait (ran1); + + sys.trigger ($rchat_6); + ran1 = (8 + sys.random(9)); + sys.wait (ran1); + } + + void radio_chat_5() + { + float ran1; + + ran1 = (4 + sys.random(3)); + sys.wait (ran1); + + sys.trigger ($rchat_7); + ran1 = (4 + sys.random(3)); + sys.wait (ran1); + + sys.trigger ($rchat_8); + ran1 = (4 + sys.random(4)); + sys.wait (ran1); + + sys.trigger ($rchat_9); + ran1 = (8 + sys.random(5)); + sys.wait (ran1); + + sys.trigger ($rchat_10); + ran1 = (3 + sys.random(9)); + sys.wait (ran1); + + sys.trigger ($rchat_11); + ran1 = (8 + sys.random(3)); + sys.wait (ran1); + + sys.trigger ($rchat_12); + ran1 = (12 + sys.random(5)); + sys.wait (ran1); + + sys.trigger ($rchat_13); + ran1 = (8 + sys.random(9)); + sys.wait (ran1); + + sys.trigger ($rchat_14); + ran1 = (2 + sys.random(9)); + sys.wait (ran1); + + sys.trigger ($rchat_15); + ran1 = (12 + sys.random(5)); + sys.wait (ran1); + + sys.trigger ($rchat_1); + ran1 = (4 + sys.random(9)); + sys.wait (ran1); + + sys.trigger ($rchat_3); + ran1 = (8 + sys.random(4)); + sys.wait (ran1); + + sys.trigger ($rchat_4); + ran1 = (4 + sys.random(9)); + sys.wait (ran1); + } + + void radio_chat_stop() + { + sys.killthread ("map_mc_underground::radio_chat_1"); + sys.killthread ("map_mc_underground::radio_chat_2"); + sys.killthread ("map_mc_underground::radio_chat_3"); + sys.killthread ("map_mc_underground::radio_chat_4"); + sys.killthread ("map_mc_underground::radio_chat_5"); + } + + void fade_blinkypre_sound () + { + $speaker_101.fadeSound ( SND_CHANNEL_ANY, -60, 3 ); + } + + void fade_scotty_sound () + { + $scotty1.fadeSound ( SND_CHANNEL_ANY, -60, .1 ); + } + + void crazy_sci_becomeZombie( entity self ) { + self.setTalkState( TALK_NEVER ); + self.setHealth( self.getFloatKey( "normal_health" ) ); + self.setKey( "snd_chatter_combat", self.getKey( "snd_chatter_combat_precache" ) ); + + // causes the monster to reset his chatter sound. hacky, but it does the job. + self.show(); + } + + //////////////////////////////////////////////////// + // + // MAIN + // + //////////////////////////////////////////////////// + void main () + { + thread cache_sounds(); + thread canister_mover (); + thread canister2_mover (); + + setup_objects (); + thread saftey_bridge_away (); + thread lilfrm_move (); + thread rotary (); + thread howitzer_1 (); + thread howitzer_2 (); + thread howitzer_3 (); + thread pipe_piston_move (); + thread crankshaft_move (); + thread redthing_move (); + thread underarm_work (); + thread piston_move (); + thread swinglight_move(); + + //setup the airlocks in the correct states + thread airlock1_door2_open(); + thread airlock2_door2_open(); + + sys.wait(20); + //disable the bridge gui + $saftey_bridge_gui.setGuiParm ( "gui_parm1" , 0); + + } + +}// namespace \ No newline at end of file diff --git a/base/script/map_monorail.script b/base/script/map_monorail.script new file mode 100644 index 00000000..35ac7e20 --- /dev/null +++ b/base/script/map_monorail.script @@ -0,0 +1,946 @@ +namespace map_monorail +{ + #define TRAIN_SPEED 300 + #define CAGE_SPEED 150 + #define TRAIN_FINAL_SPEED 800 + #define TRAIN_ANCHOR monorail_anchor + #define TRAIN_BLINK 0.1 + #define TRAIN_BLINK2 0.1 + + float TURRETS_ACTIVE = 0; + float TRAIN_MOVING = 0; + float TRAIN_PHASE = 1; // 1 = 1st stretch, 2 = 2nd stretch + float LLIGHT_STATE = 1; // 1 = ON, 2 = OFF + float LIGHT_FADEIN_TIME = 8; + float LIGHT_FADEOUT_TIME = 0.05; + float GO_PATTERN_1 = TRUE; + float GO_PATTERN_3 = TRUE; + float gf_Site2_Warning = TRUE; + float warning_speaker = 1; + + void loop_site2_warning() + { + while (gf_Site2_Warning) + { + sys.wait (60); + if (gf_Site2_Warning == FALSE) + return; + sys.trigger ($speaker_site2_warning); + } + } + + void turret_active_speaker() + { + float sound_length; + + while (warning_speaker == 1) + { + sound_length = $speaker_165.startSoundShader ("monorail_computer_turrets_on", SND_CHANNEL_VOICE2 ); + sys.wait (sound_length); + if ( warning_speaker == 0) + //thread turret_deactivate_speaker(); + return; + sys.wait( 10 ); + } + } + + void turret_deactivate_speaker() + { + $speaker_165.stopSound ( SND_CHANNEL_VOICE2, false ); + sys.wait (0.75); + $speaker_165.startSoundShader("monorail_computer_turrets_off", SND_CHANNEL_VOICE2); + } + + void activate_turret() + { + if (TURRETS_ACTIVE == 1) + return; + + //sys.print (" !!!!! ENTERING ACTIVATE_TURRETS() !!!!!\n"); + $tunnel_anchor_1.rotate ('0 360 0'); + $light_tunnel_1.On(); + $light_tunnel_1_spin.On(); + sys.trigger ($monster_turret_1); + sys.trigger ($turret_speaker); + TURRETS_ACTIVE = 1; + } + + void deactivate_turret() + { + if ( TURRETS_ACTIVE == 1 ) + { + //sys.print (" !!!!! DEACTIVATING TURRETS !!!!!\n"); + GO_PATTERN_1 = FALSE; + GO_PATTERN_3 = FALSE; + $security_light.setColor (0.5,0.5,0.5); + + $tunnel_anchor_1.rotate ('0 0 0'); + $light_tunnel_1.Off(); + $light_tunnel_1_spin.Off(); + sys.trigger ($monster_turret_1); + sys.trigger ($turret_speaker); + sys.trigger ($target_entity_setcolor_1); + warning_speaker = 0; + thread turret_deactivate_speaker(); + //will this remove the scanner beam??? + $bs1_start.remove (); + $bs1_end.remove (); + $bs2_start.remove (); + $bs2_end.remove (); + + } + } + + void pattern1() + { + float x, y, i, tmp; + entity px, py; + entity ox, oy; + vector vec_ox, vec_oy; + + while (GO_PATTERN_1) + { + for (i=1; i<=16; i++) + { + tmp = ( i + 4 ); + y=tmp; + if ( (i+4) > 16 ) + y = (i+4) - 16; + + x=i; + //sys.print ("x=" + x + " :: y=" + y + "\n"); + + ox = sys.getEntity ("fp" + i); + oy = sys.getEntity ("fp" + y); + + vec_ox = ox.getOrigin(); + vec_oy = oy.getOrigin(); + + sys.trigger ($bs1_start); // Turn off + + $bs1_start.setOrigin (vec_ox); + $bs1_end.setOrigin (vec_oy); + + sys.trigger ($bs1_start); // Turn on + sys.wait (TRAIN_BLINK); + sys.trigger ($bs1_start); // Make sure we turn off the last beam + } + } + } + + void pattern3() + { + float x, y, i, tmp; + entity px, py; + entity ox, oy; + vector vec_ox, vec_oy; + + while (GO_PATTERN_3) + { + // -- Horizontal Movement + ox = sys.getEntity ("fp1"); + oy = sys.getEntity ("fp12"); + + vec_ox = ox.getOrigin(); + vec_oy = oy.getOrigin(); + + sys.trigger ($bs2_start); // Turn off + + $bs2_start.setOrigin (vec_ox); + $bs2_end.setOrigin (vec_oy); + + sys.trigger ($bs2_start); // Turn On + + sys.wait (TRAIN_BLINK2); + + ox = sys.getEntity ("fp2"); + oy = sys.getEntity ("fp11"); + + vec_ox = ox.getOrigin(); + vec_oy = oy.getOrigin(); + + sys.trigger ($bs2_start); // Turn off + + $bs2_start.setOrigin (vec_ox); + $bs2_end.setOrigin (vec_oy); + + sys.trigger ($bs2_start); // Turn On + + sys.wait (TRAIN_BLINK2); + + ox = sys.getEntity ("fp3"); + oy = sys.getEntity ("fp10"); + + vec_ox = ox.getOrigin(); + vec_oy = oy.getOrigin(); + + sys.trigger ($bs2_start); // Turn off + + $bs2_start.setOrigin (vec_ox); + $bs2_end.setOrigin (vec_oy); + + sys.trigger ($bs2_start); // Turn On + + sys.wait (TRAIN_BLINK2); + + ox = sys.getEntity ("fp4"); + oy = sys.getEntity ("fp9"); + + vec_ox = ox.getOrigin(); + vec_oy = oy.getOrigin(); + + sys.trigger ($bs2_start); // Turn off + + $bs2_start.setOrigin (vec_ox); + $bs2_end.setOrigin (vec_oy); + + sys.trigger ($bs2_start); // Turn On + + sys.wait (TRAIN_BLINK2); + + // -- Vertical Movement + + ox = sys.getEntity ("fp16"); + oy = sys.getEntity ("fp5"); + + vec_ox = ox.getOrigin(); + vec_oy = oy.getOrigin(); + + sys.trigger ($bs2_start); // Turn off + + $bs2_start.setOrigin (vec_ox); + $bs2_end.setOrigin (vec_oy); + + sys.trigger ($bs2_start); // Turn On + + sys.wait (TRAIN_BLINK2); + + ox = sys.getEntity ("fp15"); + oy = sys.getEntity ("fp6"); + + vec_ox = ox.getOrigin(); + vec_oy = oy.getOrigin(); + + sys.trigger ($bs2_start); // Turn off + + $bs2_start.setOrigin (vec_ox); + $bs2_end.setOrigin (vec_oy); + + sys.trigger ($bs2_start); // Turn On + + sys.wait (TRAIN_BLINK2); + + ox = sys.getEntity ("fp14"); + oy = sys.getEntity ("fp7"); + + vec_ox = ox.getOrigin(); + vec_oy = oy.getOrigin(); + + sys.trigger ($bs2_start); // Turn off + + $bs2_start.setOrigin (vec_ox); + $bs2_end.setOrigin (vec_oy); + + sys.trigger ($bs2_start); // Turn On + + sys.wait (TRAIN_BLINK2); + + ox = sys.getEntity ("fp13"); + oy = sys.getEntity ("fp8"); + + vec_ox = ox.getOrigin(); + vec_oy = oy.getOrigin(); + + sys.trigger ($bs2_start); // Turn off + + $bs2_start.setOrigin (vec_ox); + $bs2_end.setOrigin (vec_oy); + + sys.trigger ($bs2_start); // Turn On + + sys.wait (TRAIN_BLINK2); + } + sys.trigger ($bs2_start); // Turn the last one off + } + + void train_proceed() + { + TRAIN_MOVING = 3; +/* + $TRAIN_ANCHOR.speed (TRAIN_FINAL_SPEED); + $TRAIN_ANCHOR.accelTime (8); + $TRAIN_ANCHOR.decelTime (0); +*/ + $rd_1_1.close(); + $rd_3_1.close(); + + $TRAIN_ANCHOR.time (20); + $TRAIN_ANCHOR.accelTime( 10 ); + $TRAIN_ANCHOR.decelTime( 0 ); + + //$player1.disableWeapon(); + + $TRAIN_ANCHOR.startSpline( $spline2 ); + + sys.trigger ($movement_speaker); // Turn movement speaker on + sys.trigger ($squeal_speaker); + + sys.waitFor ($TRAIN_ANCHOR); + + //$player1.enableWeapon(); + + sys.trigger ($squeal_speaker); + sys.trigger ($movement_speaker); // Turn movement speaker off + + TRAIN_MOVING = 4; + } + + // FIXME: This does not work at all. Cannot hide the monorail rider... + void swap_trainzombie() + { + $monorail_rider.hide(); + $monorail_rider.remove(); + sys.trigger ($monorail_zombie); + } + + void bind_objects() + { + + } + + void init_world() + { + float i; + float j; + entity ent; + + float ftemp; + // Disable all the airlock doors for the monorail tracks + for (i=1; i<=12; i++) + { + for (j=1; j<=3; j++) + { + ent = sys.getEntity ( "d" + i + "_" + j ); + ent.disable(); + } + } + + $d11a_1.disable(); + $d11a_2.disable(); + $d11a_3.disable(); + + $d12a_1.disable(); + $d12a_2.disable(); + $d12a_3.disable(); + + $TRAIN_ANCHOR.speed (TRAIN_SPEED); + + //$rot1.time ( CalcTimeForRotationAroundEntity( 1576, 90, TRAIN_SPEED) ); + //$rot2.time ( CalcTimeForRotationAroundEntity( 1576, 90, TRAIN_SPEED) ); + + $ld_1_1.disable(); + $ld_1_2.disable(); + $ld_2_1.disable(); + $ld_2_2.disable(); + $ld_3_1.disable(); + $ld_3_2.disable(); + $ld_4_1.disable(); + $ld_4_2.disable(); + + $rd_1_1.disable(); + $rd_1_2.disable(); + $rd_2_1.disable(); + $rd_2_2.disable(); + $rd_3_1.disable(); + $rd_3_2.disable(); + $rd_4_1.disable(); + $rd_4_2.disable(); + + $indoor_3.disable(); //Opened up by a script later on... + $indoor_4.disable(); //^---- Yeah, what he said... + + $ld_1_1.open(); + //$ld_3_1.open(); //As per discussion with Tim, lets leave the back doors locked. + + //$light1_green.Off(); + $boomlight.Off(); + $boomlight2.Off(); + $boomlight3.Off(); + + $light_tunnel_1.Off(); + $light_tunnel_1_spin.Off(); + + //hide door clips at start of map + $doorclip_rightFront.hide(); + $doorclip_leftFront.hide(); + $doorclip_rightRear.hide(); + $doorclip_leftRear.hide(); + } + + void fadein_lights() + { + entity ent; + float i; + + for (i=1; i<=10; i++) + { + ent=sys.getEntity ("llight_" + i); + ent.fadeInLight (LIGHT_FADEIN_TIME); + + ent=sys.getEntity ("rlight_" + i); + ent.fadeInLight (LIGHT_FADEIN_TIME); + + ent=sys.getEntity ("alight_" + i); + ent.fadeInLight (LIGHT_FADEIN_TIME); + + ent=sys.getEntity ("tlight_" + i); + ent.fadeInLight (LIGHT_FADEIN_TIME); + } + + $last_extralight.fadeInLight (LIGHT_FADEIN_TIME); + + } + + void toggle_llights() + { + entity ent; + float i; + + for (i=1; i<=10; i++) + { + ent=sys.getEntity ("llight_" + i); + if (LLIGHT_STATE == 1) + ent.Off(); + else + ent.On(); + + ent=sys.getEntity ("rlight_" + i); + if (LLIGHT_STATE == 1 ) + ent.Off(); + else + ent.On(); + + ent=sys.getEntity ("alight_" + i); + if (LLIGHT_STATE == 1) + ent.Off(); + else + ent.On(); + + ent=sys.getEntity ("tlight_" + i); + if (LLIGHT_STATE == 1) + ent.Off(); + else + ent.On(); + } + + if (LLIGHT_STATE == 1) + { + $TRAIN_ANCHOR_flare_0.hide(); + $TRAIN_ANCHOR_flare_2.hide(); + $TRAIN_ANCHOR_flare_3.hide(); + $TRAIN_ANCHOR_flare_4.hide(); + } + else + { + $TRAIN_ANCHOR_flare_0.show(); + $TRAIN_ANCHOR_flare_2.show(); + $TRAIN_ANCHOR_flare_3.show(); + $TRAIN_ANCHOR_flare_4.show(); + } + + if ( LLIGHT_STATE == 1) + { + LLIGHT_STATE = 0; + } + else + LLIGHT_STATE = 1; + } + + void thud_1() + { + sys.trigger ($tspeaker); + //toggle_llights(); + sys.fadeOut ('0 0 0', LIGHT_FADEOUT_TIME); + sys.wait (0.5); + sys.fadeIn ('0 0 0', LIGHT_FADEOUT_TIME); + //toggle_llights(); + } + + void thud_2() + { + sys.trigger ($tspeaker_1); + //toggle_llights(); + sys.fadeOut ('0 0 0', LIGHT_FADEOUT_TIME); + sys.wait (0.5); + sys.fadeIn ('0 0 0', LIGHT_FADEOUT_TIME); + //toggle_llights(); + } + + //After the train crashes, we need to hide stuff and pop in alternate models + void hide_train() + { + sys.trigger ($inside_ambience); // Turn it off + sys.trigger ($xian_speaker_2); // This one too... + + $movement_speaker.remove(); + $squeal_speaker.remove(); + + //sys.trigger ($movement_speaker); // Can't forget this one either... + + sys.trigger ($train_burning); // Turn on flame sounds + sys.trigger ($train_burning2); // Turn on flame sounds + + $bm_monorail.remove(); + + $ld_1_1.hide(); + $ld_1_2.hide(); + $ld_2_1.hide(); + $ld_2_2.hide(); + $ld_3_1.hide(); + $ld_3_2.hide(); + $ld_4_1.hide(); + $ld_4_2.hide(); + + sys.wait (0.05); + + $rd_1_1.hide(); + $rd_1_2.hide(); + $rd_2_1.hide(); + $rd_2_2.hide(); + $rd_3_1.hide(); + $rd_3_2.hide(); + $rd_4_1.hide(); + $rd_4_2.hide(); + + sys.wait (0.05); + + $xtlight_1.remove(); + sys.wait (0.05); + $xtlight_2.remove(); + sys.wait (0.05); + $xtlight_3.remove(); + sys.wait (0.05); + $xtlight_4.remove(); + + sys.wait (0.05); + + $ilight_1.remove(); + sys.wait (0.05); + $ilight_2.remove(); + sys.wait (0.05); + $ilight_3.remove(); + sys.wait (0.05); + $ilight_4.remove(); + + sys.wait (0.05); + + $intlight_1.remove(); + sys.wait (0.05); + $intlight_2.remove(); + sys.wait (0.05); + $intlight_3.remove(); + + sys.wait (0.05); + + $indoor_3.hide(); + sys.wait (0.05); + $indoor_4.hide(); + + $monobox_1.hide(); + $monobox_2.hide(); + $monobox_3.hide(); + + $fire_particle_1.show(); + $fire_particle_2.show(); + $fire_particle_3.show(); + $monorail_debris_1.show(); + $monorail_debris_2.show(); + sys.trigger ($fire1_paintrigger); + } + + void thud_crash() + { + sys.trigger ($crash_speaker); + sys.fadeOut ('0 0 0', 0.05); + //toggle_llights(); + //$last_extralight.Off(); + //$last_extralight_1.Off(); + sys.wait (2); + + //swap out broken airlock door and overhead light + $crashdoor_broken.show(); + $crashdoor_left.hide(); + $crashdoor_middle.hide(); + $crashdoor_right.hide(); + $crashsite_light_on.hide(); + $crashsite_light_damaged.show(); + + sys.trigger ($door_spark1); + sys.trigger ($door_spark2); + sys.trigger ($door_spark3); + sys.trigger ($door_spark4); + sys.trigger ($door_spark5); + + + $track.hide(); + sys.wait (0.1); + $broke_1.show(); + sys.wait (0.1); + //$broke_2.show(); + //sys.wait (0.1); + + sys.trigger ($crash_destination); // Lets get the player out of the train. + + hide_train(); + + $boomtrain.show(); + $boomlight.On(); + $boomlight2.On(); + $boomlight3.On(); + sys.wait(2); + //fadein_lights(); + sys.fadeIn ('0 0 0', LIGHT_FADEIN_TIME); + sys.wait (9); + sys.trigger ($speaker_track_malfunction); + } + + + void open_d1() + { $d1_1.open(); } + + void close_d1() + { $d1_1.close(); } + + void open_d2() + { $d2_1.open(); } + + void close_d2() + { $d2_1.close(); } + + void open_d3() + { $d3_1.open(); } + + void close_d3() + { $d3_1.close(); } + + void open_d4() + { $d4_1.open(); } + + void close_d4() + { $d4_1.close(); } + + void open_d5() + { $d5_1.open(); } + + void close_d5() + { $d5_1.close(); } + + void open_d6() + { $d6_1.open(); } + + void close_d6() + { $d6_1.close(); } + + void open_d7() + { $d7_1.open(); } + + void close_d7() + { $d7_1.close(); } + + void open_d8() + { $d8_1.open(); } + + void close_d8() + { $d8_1.close(); } + + void open_d9() + { $d9_1.open(); } + + void close_d9() + { $d9_1.close(); } + + void open_d10() + { $d10_1.open(); } + + void close_d10() + { $d10_1.close(); } + + void open_d11() + { $d11_1.open(); } + + void close_d11() + { $d11_1.close(); } + + void open_d11a() + { $d11a_1.open(); } + + void close_d11a() + { $d11a_1.close(); } + + void open_d12() + { $d12_1.open(); } + + void close_d12() + { $d12_1.close(); } + + void open_d12a() + { + $d12a_1.open(); + sys.trigger ($speaker_brakesqueal); + } + + void close_d12a() { + $d12a_1.close(); } + + void open_d105() { + $d105_1.open(); + } + + void close_d105() { + $d105_1.close(); + } + + void open_d106() { + $d106_1.open(); + } + + void close_d106() { + $d106_1.close(); + } + + + void reset_door() + { + //$light1_green.setColor (); + //$light1_yellow.setColor () + //$light1_red.setColor(); + + $light1_red.setColor (0.168627, 0.000000, 0.000000); + $light1_yellow.setColor (0.819608, 0.792157, 0.070588); + sys.wait (0.5); + + $light1_yellow.setColor (0.160784, 0.152941, 0.011765); + $light1_green.setColor (0.105882, 0.898039, 0.184314); + + sys.wait (0.5); + + sys.trigger ($speaker_overide); + + sys.trigger ($unlock_objective); + gf_Site2_Warning = FALSE; // Stop playing the warning loop if they have + // been in the area for longer than 60 seconds + sys.trigger ($monorail_gui); // Trigger the gui to resume operation + TRAIN_MOVING = 2; + + $rd_1_1.open(); + $rd_3_1.open(); + + //turn on trigger for tram rider swap with gibs + sys.trigger ($trigger_once_28); + } + + void move_train() + { + /* + State is 0 upon loading the level + State is 1 when it's travelling along the first stretch + State is 2 after the button is pressed to open the two blocked doors + State is 3 after the train resumes the last leg of it's trip + */ + + if (TRAIN_MOVING == 1) return; + + if (TRAIN_MOVING == 2) + { + train_proceed(); + return; + } + + $ld_1_1.close(); + //$ld_3_1.close();//already closed + $rd_3_1.close(); + //turn on door player clips + $doorclip_rightFront.show(); + $doorclip_leftFront.show(); + $doorclip_rightRear.show(); + $doorclip_leftRear.show(); + sys.waitFor ($ld_1_1);//changed from 3_1 to 1_1 + + sys.wait (1); + + $TRAIN_ANCHOR.time (70); + + $TRAIN_ANCHOR.accelTime( 3 ); + $TRAIN_ANCHOR.decelTime( 3 ); + + //$player1.disableWeapon(); //changed to target_enableweapons in radiant + + $TRAIN_ANCHOR.startSpline ( $spline1 ); + $TRAIN_ANCHOR.removeInitialSplineAngles(); + TRAIN_MOVING = 1; + + //trigger sounds + sys.trigger ($movement_speaker); + sys.trigger ($squeal_speaker); + sys.waitFor ($TRAIN_ANCHOR); + //trigger sounds + sys.trigger ($steamchuff); + sys.trigger ($squeal_speaker); + sys.trigger ($movement_speaker); + + //hide door clips after train reaches site2 dock + $doorclip_rightFront.hide(); + $doorclip_leftFront.hide(); + $doorclip_rightRear.hide(); + $doorclip_leftRear.hide(); + + //$player1.enableWeapon(); //changed to target_enableweapons in radiant + $rd_1_1.open(); + sys.wait (3); + sys.trigger ($item_objective_5); // Trigger the objective after the train stops. + } + + void close_tram_doors() + { + $rd_1_1.close(); + $rd_3_1.close(); + } + + //void open_tram_doors() + //{ + // $rd_1_1.open(); + // $rd_3_1.open(); + //} + + void squeal_monorail() + { + sys.trigger ($squeal_stop_speaker); + } + void voc_1() + { + sys.trigger ($speaker_voc1); + } + void voc_2() + { + sys.trigger ($speaker_voc2); + } + void voc_3() + { + sys.trigger ($speaker_voc3); + } + void voc_4() + { + sys.trigger ($speaker_voc4); + } + void voc_5() + { + sys.trigger ($speaker_voc5); + } + void voc_6() + { + sys.trigger ($speaker_voc6); + } + void voc_7() + { + sys.trigger ($speaker_voc7); + } + void voc_8() + { + sys.trigger ($speaker_voc8); + } + void voc_evil() + { + sys.trigger ($speaker_chant); + } + // Simplified version of Matt's E3_2 Machine + void spawn_exit() + { + if ( TRAIN_MOVING == 2 ) + { + sys.trigger ($monster_demon_trite_1); + sys.trigger ($monster_demon_trite_2); + } + } + + void matt_mover() + { + $arm.time (1); + $top.time (0.75); + $bottom.time (0.5); + + while (1) + { + // Should be centered here - Moving right next... + $arm.rotateOnce ('0 90 0'); + $top.rotateOnce ('0 0 90'); + sys.waitFor ($arm); + + $rotator.rotateOnce ('0 360 0'); + $bottom.move (UP, 24); + + sys.waitFor ($bottom); + + sys.wait (0.5); + + $rotator.rotateOnce ('0 -360 0'); + $bottom.move (DOWN, 24); + sys.waitFor ($bottom); + + $arm.rotateOnce ('0 -90 0'); + $top.rotateOnce ('0 0 -90'); + sys.waitFor ($arm); + + // Should be centered here ... about to move left. + + $arm.rotateOnce ('0 -90 0'); + $top.rotateOnce ('0 0 -90'); + sys.waitFor ($arm); + + $rotator.rotateOnce ('0 360 0'); + $bottom.move (UP, 24); + + sys.waitFor ($bottom); + + sys.wait (0.5); + + $rotator.rotateOnce ('0 -360 0'); + $bottom.move (DOWN, 24); + sys.waitFor ($bottom); + + $arm.rotateOnce ('0 90 0'); + $top.rotateOnce ('0 0 90'); + sys.waitFor ($arm); + } + } + + void cage_movement(entity ent) + { + //$rot1.time ( CalcTimeForRotationAroundEntity( 1576, 90, TRAIN_SPEED) ); + vector vec; + entity cagepath; + ent.time (CAGE_SPEED); + } + + void activate_rider() + { + sys.trigger ($monorail_rider_1); + sys.wait(.1); + $indoor_3.open(); // Open the door so we can see the monorail rider. + $indoor_4.open(); + } + + void cache_sounds() { + $speaker_165.cacheSoundShader ("monorail_computer_turrets_on"); + $speaker_165.cacheSoundShader ("monorail_computer_turrets_off"); + } + + void main() + { + cache_sounds(); + bind_objects(); + init_world(); + thread pattern1(); + thread pattern3(); + thread matt_mover(); + } +} diff --git a/base/script/map_recycling1.script b/base/script/map_recycling1.script new file mode 100644 index 00000000..c82d0a72 --- /dev/null +++ b/base/script/map_recycling1.script @@ -0,0 +1,1077 @@ +namespace map_recycling1 { + + //this variable tracks which door is the entrance + float airlock_state = 0; + float airlock2_state = 0; + + void mover_startsound (entity ent) { + ent.startSoundShader ("m1_start", SND_CHANNEL_VOICE); + sys.wait (0.75); + ent.startSoundShader ("m1_loop", SND_CHANNEL_VOICE2); + } + + void mover_stopsound (entity ent) { + ent.startSoundShader ("m1_stop", SND_CHANNEL_VOICE2); + ent.startSoundShader ("rec1_pump_endclack_01", SND_CHANNEL_ITEM ); + } + + void setup_objects () + { + + //set airlock door guis initial states to 1 + $airlock_door1_gui.setGuiParm ( "gui_parm1" , 1); + $airlock2_door1_gui.setGuiParm ( "gui_parm1" , 1); + $airlock2_door2_gui.setGuiParm ( "gui_parm1" , 1); + + //airlock door1 times + $airlock_door1_left.time (1.2); + $airlock_door1_right.time (1.2); + $airlock_door1_left.accelTime (.2); + $airlock_door1_left.decelTime (1); + $airlock_door1_right.accelTime (.2); + $airlock_door1_right.decelTime (1); + + $airlock_door1_top_lock.time (.25); + $airlock_door1_bottom_lock.time (.25); + + $airlock_door1_left_lock.time (.75); + $airlock_door1_right_lock.time (.75); + $airlock_door1_left_lock.accelTime (.1); + $airlock_door1_left_lock.decelTime (.65); + $airlock_door1_right_lock.accelTime (.1); + $airlock_door1_right_lock.decelTime (.65); + + //airlock door2 times + $airlock_door2_left.time (1.2); + $airlock_door2_right.time (1.2); + $airlock_door2_left.accelTime (.2); + $airlock_door2_left.decelTime (1); + $airlock_door2_right.accelTime (.2); + $airlock_door2_right.decelTime (1); + + $airlock_door2_top_lock.time (.25); + $airlock_door2_bottom_lock.time (.25); + + $airlock_door2_left_lock.time (.75); + $airlock_door2_right_lock.time (.75); + $airlock_door2_left_lock.accelTime (.1); + $airlock_door2_left_lock.decelTime (.65); + $airlock_door2_right_lock.accelTime (.1); + $airlock_door2_right_lock.decelTime (.65); + + //airlock2 door1 times + $airlock2_door1_left.time (1.2); + $airlock2_door1_right.time (1.2); + $airlock2_door1_left.accelTime (.2); + $airlock2_door1_left.decelTime (1); + $airlock2_door1_right.accelTime (.2); + $airlock2_door1_right.decelTime (1); + + $airlock2_door1_top_lock.time (.25); + $airlock2_door1_bottom_lock.time (.25); + + $airlock2_door1_left_lock.time (.75); + $airlock2_door1_right_lock.time (.75); + $airlock2_door1_left_lock.accelTime (.1); + $airlock2_door1_left_lock.decelTime (.65); + $airlock2_door1_right_lock.accelTime (.1); + $airlock2_door1_right_lock.decelTime (.65); + + //airlock2 door2 times + $airlock2_door2_left.time (1.2); + $airlock2_door2_right.time (1.2); + $airlock2_door2_left.accelTime (.2); + $airlock2_door2_left.decelTime (1); + $airlock2_door2_right.accelTime (.2); + $airlock2_door2_right.decelTime (1); + + $airlock2_door2_top_lock.time (.25); + $airlock2_door2_bottom_lock.time (.25); + + $airlock2_door2_left_lock.time (.75); + $airlock2_door2_right_lock.time (.75); + $airlock2_door2_left_lock.accelTime (.1); + $airlock2_door2_left_lock.decelTime (.65); + $airlock2_door2_right_lock.accelTime (.1); + $airlock2_door2_right_lock.decelTime (.65); + + //leaking pump room + $bpipes.bind ($bpipes_anchor); + $arm_pivot.bind ($arm_pivot_anchor); + $arm_top.bind ($arm_top_anchor); + $arm_bottom.bind ($arm_bottom_anchor); + $arm_bottom_anchor.bind ($arm_top_anchor); + $arm_top_anchor.bind ($arm_pivot_anchor); + + //revenant room + $walkway1.bind ($walkway1_anchor); + $walkway2.bind ($walkway2_anchor); + $walkway3.bind ($walkway3_anchor); + + $walkway1_anchor.accelTime (1); + //$walkway2_anchor.accelTime (.5); + $walkway3_anchor.accelTime (.5); + + $walkway1_anchor.time (1); + $walkway2_anchor.time (.5); + $walkway3_anchor.time (.8); + + + } + + //////////////// + //misc + //////////////// + + + void walkway2_fall () + { + sys.wait (7.8); + + $walkway1_anchor.rotateOnce ('-80 0 0'); + sys.waitFor ($walkway1_anchor); + + $walkway3_anchor.rotateOnce ('0 0 -45'); + sys.waitFor ($walkway3_anchor); + + sys.wait (4.7); + + //sys.trigger ($walkway2_explosion); + + $walkway2_anchor.rotateOnce ('-56 0 0'); + sys.waitFor ($walkway2_anchor); + + } + + void skcube_fall () + { + $skcube_mover.accelTime (.4); + $skcube_mover.time (.5); + $skcube_mover.rotateOnce ('0 0 90'); + sys.waitFor ($skcube_mover); + + sys.trigger ($skcube_dust); + + $skcube_mover.accelTime (.05); + $skcube_mover.time (.05); + $skcube_mover.rotateOnce ('0 0 -4'); + sys.waitFor ($skcube_mover); + $skcube_mover.rotateOnce ('0 0 4'); + sys.waitFor ($skcube_mover); + + $skcube_mover.time (.05); + $skcube_mover.rotateOnce ('0 0 -2'); + sys.waitFor ($skcube_mover); + $skcube_mover.rotateOnce ('0 0 2'); + + } + + void skcube2_fall () + { + $skcube2_mover.accelTime (.4); + $skcube2_mover.time (.5); + $skcube2_mover.rotateOnce ('0 0 90'); + sys.waitFor ($skcube2_mover); + + sys.trigger ($skcube2_dust); + + $skcube2_mover.accelTime (.05); + $skcube2_mover.time (.05); + $skcube2_mover.rotateOnce ('0 0 -4'); + sys.waitFor ($skcube2_mover); + $skcube2_mover.rotateOnce ('0 0 4'); + sys.waitFor ($skcube2_mover); + + $skcube2_mover.time (.05); + $skcube2_mover.rotateOnce ('0 0 -2'); + sys.waitFor ($skcube2_mover); + $skcube2_mover.rotateOnce ('0 0 2'); + + } + void skcube3_fall () + { + $skcube3_mover.accelTime (.4); + $skcube3_mover.time (.5); + $skcube3_mover.rotateOnce ('0 0 90'); + sys.waitFor ($skcube3_mover); + + sys.trigger ($skcube3_dust); + + $skcube3_mover.accelTime (.05); + $skcube3_mover.time (.05); + $skcube3_mover.rotateOnce ('0 0 -4'); + sys.waitFor ($skcube3_mover); + $skcube3_mover.rotateOnce ('0 0 4'); + sys.waitFor ($skcube3_mover); + + $skcube3_mover.time (.05); + $skcube3_mover.rotateOnce ('0 0 -2'); + sys.waitFor ($skcube3_mover); + $skcube3_mover.rotateOnce ('0 0 2'); + + } + + void ceilingpipe_mover1_rumble() + { + $ceilingpipe_mover1.time (.1); + + while(1){ + $ceilingpipe_mover1.rotateOnce ( '0.5 1 0' ); + sys.waitFor ($ceilingpipe_mover1); + $ceilingpipe_mover1.rotateOnce ( '-0.5 -1 0' ); + sys.waitFor ($ceilingpipe_mover1); + + } + } + + void ladder1_lower() + { + $ladder1.time(2); + sys.trigger ($speaker_ladder1); + $ladder1.moveTo ($ladder_down); + } + + void pipesteam1_cycle () + { + while (1) + { + sys.trigger ($pipesteam1); + sys.trigger ($pipesteam1_speaker); + sys.wait (2); + sys.trigger ($pipesteam1); + sys.wait (3); + } + } + + //////////////// + //break skywalk + //////////////// + + void skywalk_fall () + { + sys.trigger ($recycling1_skybridge); + } + + + + //////////////// + //big tank pump room + //////////////// + + void bigtank_pumps_on1 () + { + while (1) + { + $piston_left.accelTime (.4); + $piston_left.time (1.2); + thread mover_startsound ($piston_left); + $piston_left.move (DOWN,128); + $piston_left.rotateOnce ('0 20 0'); + sys.waitFor ($piston_left); + mover_stopsound ($piston_left); + + sys.wait (0.5); + + $piston_left.time (1.6); + thread mover_startsound ($piston_left); + $piston_left.move (UP,128); + $piston_left.rotateOnce ('0 -20 0'); + sys.waitFor ($piston_left); + mover_stopsound ($piston_left); + + sys.wait (0.5); + + } + } + + void bigtank_pumps_on2 () + { + while (1) + { + $piston_right.accelTime (.4); + thread mover_startsound ($piston_right); + $piston_right.time (1); + $piston_right.move (DOWN,128); + $piston_right.rotateOnce ('0 -20 0'); + sys.waitFor ($piston_right); + mover_stopsound ($piston_right); + + sys.wait (0.5); + + $piston_right.time (1.5); + thread mover_startsound ($piston_right); + $piston_right.move (UP,128); + $piston_right.rotateOnce ('0 20 0'); + sys.waitFor ($piston_right); + mover_stopsound ($piston_right); + + sys.wait (0.5); + } + } + + void bigtank_pumps_on3 () + { + while (1) + { + $piston_center.time (3); + $piston_center.startSoundShader ("rec1_3s_piston", SND_CHANNEL_VOICE ); + $piston_center.move (EAST,96); + $piston_center.rotateOnce ('0 0 360'); + sys.waitFor ($piston_center); + + $bigtank_smoke.startSoundShader ("rec1_steamchuff", SND_CHANNEL_VOICE ); + sys.trigger ($bigtank_smoke); + sys.wait (2); + $bigtank_smoke.startSoundShader ("rec1_steamchuff", SND_CHANNEL_VOICE2 ); + sys.trigger ($bigtank_smoke); + + $piston_center.time (3); + $piston_center.startSoundShader ("rec1_3s_piston", SND_CHANNEL_VOICE ); + $piston_center.move (WEST,96); + $piston_center.rotateOnce ('0 0 -360'); + sys.waitFor ($piston_center); + + $piston_center.startSoundShader ("rec1_2s_rotation", SND_CHANNEL_VOICE2 ); + $piston_center.time (2); + $piston_center.rotateOnce ('0 0 360'); + sys.waitFor ($piston_center); + } + } + + void bigtank_pumps_off () + { + + sys.killthread ( "map_recycling1::bigtank_pumps_on1" ); + sys.killthread ( "map_recycling1::bigtank_pumps_on2" ); + sys.killthread ( "map_recycling1::bigtank_pumps_on3" ); + + } + + //////////////// + //pump1 room + //////////////// + + void pump1apiston_start () + { + while (1) + { + $pump1apiston.accelTime (.3); + $pump1apiston.decelTime (.3); + $pump1apiston.startSoundShader ("rec1_pump_movement_1_5s", SND_CHANNEL_VOICE ); + $pump1apiston.time (1); + $pump1apiston.moveTo ($pump1aspot1); + $pump1apiston.rotateOnce ('0 20 0'); + sys.waitFor ($pump1apiston); + $pump1apiston.startSoundShader ("rec1_pump_endclack_01", SND_CHANNEL_VOICE2 ); + + $pump1apiston_steam.startSoundShader ("rec1_steamchuff", SND_CHANNEL_VOICE ); + sys.trigger ($pump1apiston_steam); + + $pump1apiston.time (.5); + $pump1apiston.startSoundShader ("rec1_pump_movement_0_5s", SND_CHANNEL_VOICE ); + $pump1apiston.moveTo ($pump1aspot2); + $pump1apiston.rotateOnce ('0 -20 0'); + sys.waitFor ($pump1apiston); + $pump1apiston.startSoundShader ("rec1_pump_endclack_01", SND_CHANNEL_VOICE2 ); + + sys.trigger ($pump1apiston_steam); + } + } + + void pump1bpiston_start () + { + while (1) + { + $pump1bpiston.accelTime (.3); + $pump1bpiston.decelTime (.3); + $pump1bpiston.startSoundShader ("rec1_pump_movement_1_5s", SND_CHANNEL_VOICE ); + $pump1bpiston.time (1.2); + $pump1bpiston.moveTo ($pump1bspot1); + $pump1bpiston.rotateOnce ('0 -15 0'); + $pump1bpiston.startSoundShader ("rec1_pump_endclack_01", SND_CHANNEL_VOICE2 ); + sys.waitFor ($pump1bpiston); + + $pump1bpiston_steam.startSoundShader ("rec1_steamchuff", SND_CHANNEL_VOICE ); + sys.trigger ($pump1bpiston_steam); + + $pump1bpiston.time (.4); + $pump1bpiston.startSoundShader ("rec1_pump_movement_0_4s", SND_CHANNEL_VOICE ); + $pump1bpiston.moveTo ($pump1bspot2); + + $pump1bpiston.rotateOnce ('0 15 0'); + sys.waitFor ($pump1bpiston); + $pump1bpiston.startSoundShader ("rec1_pump_endclack_01", SND_CHANNEL_VOICE2 ); + + sys.trigger ($pump1bpiston_steam); + } + } + + /////////////////// + //leaking pump room + /////////////////// + + void bpump_on () + { + while (1) + { + + + $bpipes_anchor.time (.5); + $bpipes_anchor.startSoundShader ("rec1_1_rotation", SND_CHANNEL_VOICE ); + $bpipes_anchor.rotateOnce ('0 0 -120'); + + sys.waitFor ($bpipes_anchor); + + $arm_pivot_anchor.time (1.2); + $arm_pivot_anchor.startSoundShader ("rec1_1_2s_movement", SND_CHANNEL_VOICE ); + $arm_pivot_anchor.moveTo ($arm_spot2); + + $arm_top_anchor.time (.3); + $arm_top_anchor.startSoundShader ("rec1_pivot_0_3s", SND_CHANNEL_VOICE ); + $arm_top_anchor.rotateOnce ('-30 0 0'); + sys.waitFor ($arm_pivot_anchor); + + $arm_pivot_anchor.time (.7); + $arm_pivot_anchor.startSoundShader ("rec1_pivot_0_7s", SND_CHANNEL_VOICE ); + $arm_pivot_anchor.rotateOnce ('0 -180 0'); + $arm_top_anchor.startSoundShader ("rec1_pivot_0_3s", SND_CHANNEL_VOICE ); + $arm_top_anchor.time (.3); + $arm_top_anchor.rotateOnce ('30 0 0'); + sys.waitFor ($arm_pivot_anchor); + + $arm_bottom_anchor.time (.8); + $arm_bottom_anchor.startSoundShader ("rec1_pivot_0_8s", SND_CHANNEL_VOICE ); + $arm_bottom_anchor.rotateOnce ('90 0 0'); + sys.waitFor ($arm_bottom_anchor); + + sys.trigger ($pipefill); + sys.trigger ($speaker_pipefill); + sys.wait (3.5); + + sys.trigger ($pipefill); + + $arm_bottom_anchor.time (.4); + $arm_bottom_anchor.startSoundShader ("rec1_pivot_0_4s", SND_CHANNEL_VOICE ); + $arm_bottom_anchor.rotateOnce ('-90 0 0'); + sys.waitFor ($arm_bottom_anchor); + + $arm_pivot_anchor.time (.7); + $arm_pivot_anchor.startSoundShader ("rec1_pivot_0_7s", SND_CHANNEL_VOICE ); + $arm_pivot_anchor.rotateOnce ('0 180 0'); + sys.waitFor ($arm_pivot_anchor); + + $arm_pivot_anchor.time (1.5); + $arm_pivot_anchor.startSoundShader ("rec1_1_5s_movement", SND_CHANNEL_VOICE ); + $arm_pivot_anchor.moveTo ($arm_spot1); + sys.waitFor ($arm_pivot_anchor); + + sys.wait (.5); + + $bpipes_anchor.time (1); + $bpipes_anchor.startSoundShader ("rec1_2_rotation", SND_CHANNEL_VOICE ); + $bpipes_anchor.rotateOnce ('0 0 240'); + + sys.waitFor ($bpipes_anchor); + + $arm_pivot_anchor.time (1.2); + $arm_pivot_anchor.startSoundShader ("rec1_1_2s_movement", SND_CHANNEL_VOICE ); + $arm_pivot_anchor.moveTo ($arm_spot2); + $arm_top_anchor.time (.3); + $arm_top_anchor.startSoundShader ("rec1_pivot_0_3s", SND_CHANNEL_VOICE ); + $arm_top_anchor.rotateOnce ('-30 0 0'); + sys.waitFor ($arm_pivot_anchor); + + $arm_pivot_anchor.time (.7); + $arm_pivot_anchor.startSoundShader ("rec1_pivot_0_7s", SND_CHANNEL_VOICE ); + $arm_pivot_anchor.rotateOnce ('0 -180 0'); + $arm_top_anchor.startSoundShader ("rec1_pivot_0_3s", SND_CHANNEL_VOICE ); + $arm_top_anchor.time (.3); + $arm_top_anchor.rotateOnce ('30 0 0'); + sys.waitFor ($arm_pivot_anchor); + + $arm_bottom_anchor.time (.8); + $arm_bottom_anchor.startSoundShader ("rec1_pivot_0_8s", SND_CHANNEL_VOICE ); + $arm_bottom_anchor.rotateOnce ('90 0 0'); + sys.waitFor ($arm_bottom_anchor); + + sys.trigger ($speaker_pipefill); + sys.trigger ($pipefill); + + sys.wait (3.5); + + sys.trigger ($pipefill); + + $arm_bottom_anchor.time (.4); + $arm_bottom_anchor.startSoundShader ("rec1_pivot_0_4s", SND_CHANNEL_VOICE ); + $arm_bottom_anchor.rotateOnce ('-90 0 0'); + sys.waitFor ($arm_bottom_anchor); + + $arm_pivot_anchor.time (.7); + $arm_pivot_anchor.startSoundShader ("rec1_pivot_0_7s", SND_CHANNEL_VOICE ); + $arm_pivot_anchor.rotateOnce ('0 180 0'); + sys.waitFor ($arm_pivot_anchor); + + $arm_pivot_anchor.time (1.5); + $arm_pivot_anchor.startSoundShader ("rec1_1_5s_movement", SND_CHANNEL_VOICE ); + $arm_pivot_anchor.moveTo ($arm_spot1); + sys.waitFor ($arm_pivot_anchor); + + sys.wait (.5); + + $bpipes_anchor.time (2); + $bpipes_anchor.startSoundShader ("rec1_3_rotation", SND_CHANNEL_VOICE ); + $bpipes_anchor.rotateOnce ('0 0 -480'); + + sys.waitFor ($bpipes_anchor); + + $arm_pivot_anchor.time (1.2); + $arm_pivot_anchor.startSoundShader ("rec1_1_2s_movement", SND_CHANNEL_VOICE ); + $arm_pivot_anchor.moveTo ($arm_spot2); + $arm_top_anchor.startSoundShader ("rec1_pivot_0_3s", SND_CHANNEL_VOICE ); + $arm_top_anchor.time (.3); + $arm_top_anchor.rotateOnce ('-30 0 0'); + sys.waitFor ($arm_pivot_anchor); + + $arm_pivot_anchor.time (.7); + $arm_pivot_anchor.startSoundShader ("rec1_pivot_0_7s", SND_CHANNEL_VOICE ); + $arm_pivot_anchor.rotateOnce ('0 -180 0'); + $arm_top_anchor.startSoundShader ("rec1_pivot_0_3s", SND_CHANNEL_VOICE ); + $arm_top_anchor.time (.3); + $arm_top_anchor.rotateOnce ('30 0 0'); + sys.waitFor ($arm_pivot_anchor); + + $arm_bottom_anchor.time (.8); + $arm_bottom_anchor.startSoundShader ("rec1_pivot_0_8s", SND_CHANNEL_VOICE ); + $arm_bottom_anchor.rotateOnce ('90 0 0'); + sys.waitFor ($arm_bottom_anchor); + + sys.trigger ($speaker_pipefill); + sys.trigger ($pipefill); + + sys.wait (3.5); + + sys.trigger ($pipefill); + + $arm_bottom_anchor.time (.4); + $arm_bottom_anchor.startSoundShader ("rec1_pivot_0_4s", SND_CHANNEL_VOICE ); + $arm_bottom_anchor.rotateOnce ('-90 0 0'); + sys.waitFor ($arm_bottom_anchor); + + $arm_pivot_anchor.time (.7); + $arm_pivot_anchor.startSoundShader ("rec1_pivot_0_7s", SND_CHANNEL_VOICE ); + $arm_pivot_anchor.rotateOnce ('0 180 0'); + sys.waitFor ($arm_pivot_anchor); + + $arm_pivot_anchor.time (1.5); + $arm_pivot_anchor.startSoundShader ("rec1_1_5s_movement", SND_CHANNEL_VOICE ); + $arm_pivot_anchor.moveTo ($arm_spot1); + sys.waitFor ($arm_pivot_anchor); + + sys.wait (.5); + } + } + + void bpump_off () + { + sys.killthread ( "map_recycling1::bpump_on" ); + sys.trigger ($func_remove_2); + } + + //////////////////////////////////////////////////// + // + // Open airlock door1 + // + //////////////////////////////////////////////////// + void airlock_door1_open() + { + entity ent; + + //disable the gui on door1 + $airlock_door1_gui.setGuiParm ( "gui_parm1" , 0); + + //turn door1 light on and door2 light off + thread crossFadeEnt ($door2_light, '.82 .76 .56', '0.4 0 0', 1); + sys.wait(1); + thread crossFadeEnt ($door1_light, '0.4 0 0', '.82 .76 .56', 1); + + //move the 4 locks to unlock position + + sys.trigger ($speaker_airlock_door1_bottom_lock); // SOUND + + $airlock_door1_top_lock.move ( UP, 15 ); + $airlock_door1_bottom_lock.move ( DOWN, 15 ); + sys.waitFor ($airlock_door1_bottom_lock); + + sys.trigger ($speaker_airlock_door1_right_lock); // SOUND + sys.trigger ($speaker_airlock_door1_left_lock); // SOUND + + $airlock_door1_left_lock.move ( NORTH, -16 ); + $airlock_door1_right_lock.move ( NORTH, -16 ); + sys.waitFor ($airlock_door1_right_lock); + + //open doors + + sys.trigger ($speaker_airlock_door1_open); // SOUND + + $airlock_door1_left.rotateOnce ( '0 45 0' ); + $airlock_door1_right.rotateOnce ( '0 -45 0' ); + + //trigger the portal + sys.trigger ($airlock_door1_portal); + + sys.waitFor ($airlock_door1_right); + sys.waitFor ($airlock_door1_left); + + //set airlock state to door 1 + ent=sys.getEntity( "airlock_door1_portal" ); + ent.setKey( "state", 1 ); + } + + + //////////////////////////////////////////////////// + // + // Open airlock door2 + // + //////////////////////////////////////////////////// + void airlock_door2_open() + { + entity ent; + + //turn door2 light on and door1 light off + thread crossFadeEnt ($door1_light, '.82 .76 .56', '0.4 0 0', 1); + sys.wait(1); + thread crossFadeEnt ($door2_light, '0.4 0 0', '.82 .76 .56', 1); + + //move the 4 locks to unlock position + + sys.trigger ($speaker_airlock_door2_bottom_lock); // SOUND + + $airlock_door2_top_lock.move ( UP, 15 ); + $airlock_door2_bottom_lock.move ( DOWN, 15 ); + sys.waitFor ($airlock_door2_bottom_lock); + + sys.trigger ($speaker_airlock_door2_right_lock); // SOUND + sys.trigger ($speaker_airlock_door2_left_lock); // SOUND + + $airlock_door2_left_lock.move ( NORTH, 16 ); + $airlock_door2_right_lock.move ( NORTH, 16 ); + sys.waitFor ($airlock_door2_right_lock); + + //open doors + + sys.trigger ($speaker_airlock_door2_open); // SOUND + + $airlock_door2_left.rotateOnce ( '0 45 0' ); + $airlock_door2_right.rotateOnce ( '0 -45 0' ); + + //trigger the portal + sys.trigger ($airlock_door2_portal); + + sys.waitFor ($airlock_door2_right); + sys.waitFor ($airlock_door2_left); + + //set airlock state + ent=sys.getEntity( "airlock_door1_portal" ); + ent.setKey( "state", 2 ); + + } + + + //////////////////////////////////////////////////// + // + // Close airlock door1 + // + //////////////////////////////////////////////////// + void airlock_door1_close() + { + //close doors + + sys.trigger ($speaker_airlock_door1_close); // SOUND + + $airlock_door1_left.rotateOnce ( '0 -45 0' ); + $airlock_door1_right.rotateOnce ( '0 45 0' ); + sys.waitFor ($airlock_door1_right); + + //trigger the portal + sys.trigger ($airlock_door1_portal); + + //fire sound trigger + sys.trigger ($airlock_speaker); + + //move the 4 locks to lock position + sys.trigger ($speaker_airlock_door1_right_lock); // SOUND + sys.trigger ($speaker_airlock_door1_left_lock); // SOUND + + $airlock_door1_left_lock.move ( NORTH, 16 ); + $airlock_door1_right_lock.move ( NORTH, 16 ); + sys.waitFor ($airlock_door1_right_lock); + + sys.trigger ($speaker_airlock_door1_bottom_lock); // SOUND + + $airlock_door1_top_lock.move ( DOWN, 15 ); + $airlock_door1_bottom_lock.move ( UP, 15 ); + sys.waitFor ($airlock_door1_top_lock); + } + + + //////////////////////////////////////////////////// + // + // Close airlock door2 + // + //////////////////////////////////////////////////// + void airlock_door2_close() + { + //close doors + + sys.trigger ($speaker_airlock_door2_close); // SOUND + + $airlock_door2_left.rotateOnce ( '0 -45 0' ); + $airlock_door2_right.rotateOnce ( '0 45 0' ); + sys.waitFor ($airlock_door2_right); + + //trigger the portal + sys.trigger ($airlock_door2_portal); + + //fire sound trigger + sys.trigger ($airlock_speaker); + + //move the 4 locks to lock position + sys.trigger ($speaker_airlock_door2_right_lock); // SOUND + sys.trigger ($speaker_airlock_door2_left_lock); // SOUND + + $airlock_door2_left_lock.move ( NORTH, -16 ); + $airlock_door2_right_lock.move ( NORTH, -16 ); + sys.waitFor ($airlock_door2_right_lock); + + sys.trigger ($speaker_airlock_door2_bottom_lock); // SOUND + + $airlock_door2_top_lock.move ( DOWN, 15 ); + $airlock_door2_bottom_lock.move ( UP, 15 ); + sys.waitFor ($airlock_door2_top_lock); + + } + + //////////////////////////////////////////////////// + // + // Main Activate airlock + // conditionally chooses based on entrance + // + //////////////////////////////////////////////////// + void airlock_main_activate() + { + entity ent; + + //check to see which way the player entered by checking the airlock_state + //if 1 then close 1 and open 2 + + ent=sys.getEntity ("airlock_door1_portal" ); + + if (ent.getFloatKey ("state")==1) { + airlock_door1_close(); + airlock_door2_open(); + + } else { //else close 2 and open 1 + airlock_door2_close(); + airlock_door1_open(); + } + } + + + //////////////////////////////////////////////////// + // + // AIRLOCK main activation + // + //////////////////////////////////////////////////// + void airlock1_activate() + { + //disable the guis on the doors + $airlock_door1_gui.setGuiParm ( "gui_parm1" , 0); + $airlock_innerguiholder.setGuiParm ( "gui_parm11" , 0); + + airlock_main_activate(); + + //check the airlock state and enable the guis on the closed door + if ($airlock_door1_portal.getFloatKey ("state")==1) { + $airlock_door2_gui.setGuiParm ( "gui_parm1" , 1); + } else { //else close 2 and open 1 + $airlock_door1_gui.setGuiParm ( "gui_parm1" , 1); + } + + $airlock_innerguiholder.setGuiParm ( "gui_parm11" , 1); + } + + +////////////////////////// +////////////airlock2 +////////////////////////// + + //////////////////////////////////////////////////// + // + // Open airlock2 door1 + // + //////////////////////////////////////////////////// + void airlock2_door1_open() + { + entity ent; + + //disable the gui on door1 + $airlock2_door1_gui.setGuiParm ( "gui_parm1" , 0); + + //turn door1 light on and door2 light off + thread crossFadeEnt ($airlock2_door2_light, '.82 .76 .56', '0.4 0 0', 1); + sys.wait(1); + thread crossFadeEnt ($airlock2_door1_light, '0.4 0 0', '.82 .76 .56', 1); + + //move the 4 locks to unlock position + sys.trigger ($speaker_airlock2_door1_bottom_lock); // SOUND + $airlock2_door1_top_lock.move ( UP, 15 ); + $airlock2_door1_bottom_lock.move ( DOWN, 15 ); + sys.waitFor ($airlock2_door1_bottom_lock); + + sys.trigger ($speaker_airlock2_door1_left_lock); // SOUND + sys.trigger ($speaker_airlock2_door1_right_lock); // SOUND + $airlock2_door1_left_lock.move ( WEST, -16 ); + $airlock2_door1_right_lock.move ( WEST, -16 ); + sys.waitFor ($airlock2_door1_right_lock); + + //open doors + + sys.trigger ($speaker_airlock2_door1_open); + + $airlock2_door1_left.rotateOnce ( '0 45 0' ); + $airlock2_door1_right.rotateOnce ( '0 -45 0' ); + + //trigger the portal + sys.trigger ($airlock2_door1_portal); + + sys.waitFor ($airlock2_door1_right); + sys.waitFor ($airlock2_door1_left); + + //set airlock state + ent=sys.getEntity( "airlock2_door1_portal" ); + ent.setKey( "state", 1 ); + } + + + //////////////////////////////////////////////////// + // + // Open airlock2 door2 + // + //////////////////////////////////////////////////// + void airlock2_door2_open() + { + entity ent; + + //disable the gui on door2 + $airlock2_door2_gui.setGuiParm ( "gui_parm1" , 0); + + //turn door2 light on and door1 light off + thread crossFadeEnt ($airlock2_door1_light, '.82 .76 .56', '0.4 0 0', 1); + sys.wait(1); + thread crossFadeEnt ($airlock2_door2_light, '0.4 0 0', '.82 .76 .56', 1); + + //move the 4 locks to unlock position + + sys.trigger ($speaker_airlock2_door2_bottom_lock); + + $airlock2_door2_top_lock.move ( UP, 15 ); + $airlock2_door2_bottom_lock.move ( DOWN, 15 ); + sys.waitFor ($airlock2_door2_bottom_lock); + + sys.trigger ($speaker_airlock2_door2_left_lock); // SOUND + sys.trigger ($speaker_airlock2_door2_right_lock); // SOUND + + $airlock2_door2_left_lock.move ( WEST, 16 ); + $airlock2_door2_right_lock.move ( WEST, 16 ); + sys.waitFor ($airlock2_door2_right_lock); + + //open doors + + sys.trigger ($speaker_airlock2_door2_open); + + $airlock2_door2_left.rotateOnce ( '0 45 0' ); + $airlock2_door2_right.rotateOnce ( '0 -45 0' ); + + //trigger the portal + sys.trigger ($airlock2_door2_portal); + + sys.waitFor ($airlock2_door2_right); + sys.waitFor ($airlock2_door2_left); + + //set airlock state + ent=sys.getEntity( "airlock2_door1_portal" ); + ent.setKey( "state", 2 ); + + } + + + //////////////////////////////////////////////////// + // + // Close airlock2 door1 + // + //////////////////////////////////////////////////// + void airlock2_door1_close() + { + //close doors + + sys.trigger ($speaker_airlock2_door1_close); // SOUND + + $airlock2_door1_left.rotateOnce ( '0 -45 0' ); + $airlock2_door1_right.rotateOnce ( '0 45 0' ); + sys.waitFor ($airlock2_door1_right); + + //trigger the portal + sys.trigger ($airlock2_door1_portal); + + //fire sound trigger + sys.trigger ($airlock2_speaker); + + sys.trigger ($speaker_airlock2_door1_left_lock); // SOUND + sys.trigger ($speaker_airlock2_door1_right_lock); // SOUND + + //move the 4 locks to lock position + $airlock2_door1_left_lock.move ( WEST, 16 ); + $airlock2_door1_right_lock.move ( WEST, 16 ); + sys.waitFor ($airlock2_door1_right_lock); + + sys.trigger ($speaker_airlock2_door1_bottom_lock); // SOUND + + $airlock2_door1_top_lock.move ( DOWN, 15 ); + $airlock2_door1_bottom_lock.move ( UP, 15 ); + sys.waitFor ($airlock2_door1_top_lock); + } + + + //////////////////////////////////////////////////// + // + // Close airlock2 door2 + // + //////////////////////////////////////////////////// + void airlock2_door2_close() + { + //close doors + + sys.trigger ($speaker_airlock2_door2_close); + + $airlock2_door2_left.rotateOnce ( '0 -45 0' ); + $airlock2_door2_right.rotateOnce ( '0 45 0' ); + sys.waitFor ($airlock2_door2_right); + + //trigger the portal + sys.trigger ($airlock2_door2_portal); + + //fire sound trigger + sys.trigger ($airlock2_speaker); + + //move the 4 locks to lock position + + sys.trigger ($speaker_airlock2_door2_left_lock); + sys.trigger ($speaker_airlock2_door2_right_lock); + + $airlock2_door2_left_lock.move ( WEST, -16 ); + $airlock2_door2_right_lock.move ( WEST, -16 ); + sys.waitFor ($airlock2_door2_right_lock); + + sys.trigger ($speaker_airlock2_door2_bottom_lock); + + $airlock2_door2_top_lock.move ( DOWN, 15 ); + $airlock2_door2_bottom_lock.move ( UP, 15 ); + sys.waitFor ($airlock2_door2_top_lock); + } + + + //////////////////////////////////////////////////// + // + // Main Activate airlock + // conditionally chooses based on entrance + // + //////////////////////////////////////////////////// + void airlock2_main_activate() + { + entity ent; + + //check to see which way the player entered by checking the airlock_state + //if 1 then close 1 and open 2 + + ent=sys.getEntity ("airlock2_door1_portal" ); + + if (ent.getFloatKey ("state")==1) { + airlock2_door1_close(); + airlock2_door2_open(); + + } else { //else close 2 and open 1 + airlock2_door2_close(); + airlock2_door1_open(); + } + } + + + //////////////////////////////////////////////////// + // + // AIRLOCK main activation + // + //////////////////////////////////////////////////// + void airlock2_activate() + { + //disable the guis on the doors + $airlock2_door1_gui.setGuiParm ( "gui_parm1" , 0); + $airlock2_door2_gui.setGuiParm ( "gui_parm1" , 0); + $airlock2_innerguiholder.setGuiParm ( "gui_parm11" , 0); + + airlock2_main_activate(); + + //check the airlock state and enable the guis on the closed door + if ($airlock2_door1_portal.getFloatKey ("state")==1) { + $airlock2_door2_gui.setGuiParm ( "gui_parm1" , 1); + } else { //else close 2 and open 1 + $airlock2_door1_gui.setGuiParm ( "gui_parm1" , 1); + } + + $airlock2_innerguiholder.setGuiParm ( "gui_parm11" , 1); + } + + void cache_sounds() { + sys.cacheSoundShader ("rec1_1_2s_movement"); + sys.cacheSoundShader ("rec1_1_5s_movement"); + sys.cacheSoundShader ("rec1_pivot_0_8s"); + sys.cacheSoundShader ("rec1_pivot_0_7s"); + sys.cacheSoundShader ("rec1_pivot_0_4s"); + sys.cacheSoundShader ("rec1_pivot_0_3s"); + sys.cacheSoundShader ("rec1_3_rotation"); + sys.cacheSoundShader ("rec1_2_rotation"); + sys.cacheSoundShader ("rec1_1_rotation"); + sys.cacheSoundShader ("rec1_pump_endclack_01"); + sys.cacheSoundShader ("rec1_pump_movement_0_4s"); + sys.cacheSoundShader ("rec1_pump_movement_1_5s"); + sys.cacheSoundShader ("rec1_2s_rotation"); + sys.cacheSoundShader ("rec1_steamchuff"); + sys.cacheSoundShader ("rec1_3s_piston"); + sys.cacheSoundShader ("m1_start"); + sys.cacheSoundShader ("m1_stop"); + sys.cacheSoundShader ("m1_loop"); + } + + void main () + { + cache_sounds(); + setup_objects(); + thread map_recycling1::pump1apiston_start(); + thread map_recycling1::pump1bpiston_start(); + + //setup the airlocks in the correct states + thread map_recycling1::airlock_door2_open(); + thread map_recycling1::airlock2_door1_open(); + } +} + + + +//James's Rev Rockets + +void rev_rocketa( entity self ) { + self.launchMissiles( "projectile_rev_rocket_cinematic", "snd_fire", "Lmissile", "target1", 1, 0 ); +} + +void rev_rocketb( entity self ) { + self.launchMissiles( "projectile_rev_rocket_cinematic", "snd_fire", "Rmissile", "target2", 1, 0 ); +} diff --git a/base/script/map_recycling2.script b/base/script/map_recycling2.script new file mode 100644 index 00000000..628bf60b --- /dev/null +++ b/base/script/map_recycling2.script @@ -0,0 +1,452 @@ +void make_player_cough() { + + $player1.startSoundShader ("player_cough", SND_CHANNEL_VOICE); +} + +namespace map_recycling2 { + + void mover_startsound (entity ent) { + ent.startSoundShader ("m1_start", SND_CHANNEL_VOICE); + sys.wait (0.75); + ent.startSoundShader ("m1_loop", SND_CHANNEL_VOICE2); + } + + void mover_stopsound (entity ent) { + ent.startSoundShader ("m1_stop", SND_CHANNEL_VOICE2); + ent.startSoundShader ("rec1_pump_endclack_01", SND_CHANNEL_ITEM ); + } + + void mover_startsound2 (entity ent) { + ent.startSoundShader ("m2_start", SND_CHANNEL_VOICE); + sys.wait (0.75); + ent.startSoundShader ("m2_loop", SND_CHANNEL_VOICE2); + } + + void mover_stopsound2 (entity ent) { + ent.startSoundShader ("m2_stop", SND_CHANNEL_VOICE2); + } + + void mover_startsound3 (entity ent) { + ent.startSoundShader ("m3_start", SND_CHANNEL_VOICE); + sys.wait (1); + ent.startSoundShader ("m3_loop", SND_CHANNEL_VOICE2); + } + + void mover_stopsound3 (entity ent) { + ent.startSoundShader ("m3_stop", SND_CHANNEL_VOICE2); + } + + + void setup_objects () + { + $pump1nozzle1.bind ($pump1axis); + $pump1_tubecap.bind ($pump1_tube); + $pump1_tube.bind ($pump1_tube_anchor); + $cyl_1.bind ($cyl_1_anchor); + $elev2_light.bind ($elev1); + //$elev2_speaker.bind ($elev1); + $walkway.bind ($walkway_anchor); + $light_warning_spin.bind ($light_warning_anchor); + $light_warning_2.bind ($light_warning_anchor); + $light_warning_flare.bind ($light_warning_anchor); + $light_warning_off.bind ($light_warning_anchor); + $light_warning_on.bind ($light_warning_anchor); + + } + + /////////////////// + // first pump room + ////////////////// + + void pump1piston1_start () + { + while (1) + { + $pump1piston1.accelTime (.5); + $pump1piston1.decelTime (.2); + $pump1piston1.time (1); + thread mover_startsound ($pump1piston1); + $pump1piston1.moveTo ($pump1piston1_btm); + sys.waitFor ($pump1piston1); + mover_stopsound ($pump1piston1); + + sys.wait (1); + + $pump1piston1.accelTime (.5); + $pump1piston1.decelTime (.8); + + thread mover_startsound ($pump1piston1); + + $pump1piston1.time (1.6); + $pump1piston1.moveTo ($pump1piston1_top); + sys.waitFor ($pump1piston1); + + mover_stopsound ($pump1piston1); + } + } + + void pump1piston2_start () + { + while (1) + { + $pump1piston2.time (1.5); + thread mover_startsound3 ($pump1piston2); + $pump1piston2.move (DOWN ,96); + sys.waitFor ($pump1piston2); + mover_stopsound2 ($pump1piston2); + + sys.wait (.5); + + $pump1piston2.time (2); + thread mover_startsound3 ($pump1piston2); + $pump1piston2.move (UP ,96); + sys.waitFor ($pump1piston2); + mover_stopsound3 ($pump1piston2); + sys.wait (.5); + } + } + + void pump1machine_start () + { + while (1) + { + $pump1axis.decelTime (.5); + $pump1axis.time (1); + $pump1axis.rotateOnce ('0 180 0'); + sys.waitFor ($pump1axis); + + sys.trigger ($pump1_bubbles); + + $pump1_tube_anchor.time (.5); + $pump1_tube_anchor.rotateOnce ('0 0 90'); + sys.waitFor ($pump1_tube_anchor); + + $pump1_tubecap.unbind (); + $pump1_tubecap.time (.5); + $pump1_tubecap.moveTo ($pump1_tubecap_spot2); + sys.waitFor ($pump1_tubecap); + $pump1_tubecap.bind ($pump1nozzle1); + + $pump1speaker.startSoundShader("sact1_vent_1s", SND_CHANNEL_ANY ); + + $pump1nozzle1.time (.5); + $pump1nozzle1.rotateOnce ('0 0 360'); + sys.waitFor ($pump1nozzle1); + $pump1_tubecap.unbind (); + + sys.trigger ($pump1_bubbles); + + sys.wait (1.5); + + $pump1_tubecap.time (.5); + $pump1_tubecap.moveTo ($pump1_tubecap_spot1); + sys.waitFor ($pump1_tubecap); + $pump1_tubecap.bind ($pump1_tube); + + $pump1_tube_anchor.time (.5); + $pump1_tube_anchor.rotateOnce ('0 0 -90'); + sys.waitFor ($pump1_tube_anchor); + + $pump1axis.decelTime (.5); + $pump1axis.time (1); + $pump1axis.rotateOnce ('0 180 0'); + sys.waitFor ($pump1axis); + + sys.trigger ($pump1_bubbles); + + $pump1_tube_anchor.time (.5); + $pump1_tube_anchor.rotateOnce ('0 0 90'); + sys.waitFor ($pump1_tube_anchor); + + $pump1_tubecap.unbind (); + $pump1_tubecap.time (.5); + $pump1_tubecap.moveTo ($pump1_tubecap_spot2); + sys.waitFor ($pump1_tubecap); + $pump1_tubecap.bind ($pump1nozzle1); + + $pump1speaker.startSoundShader("sact1_vent_1s", SND_CHANNEL_ANY ); + + $pump1nozzle1.time (.5); + $pump1nozzle1.rotateOnce ('0 0 360'); + sys.waitFor ($pump1nozzle1); + $pump1_tubecap.unbind (); + + sys.trigger ($pump1_bubbles); + + sys.wait (1.5); + + $pump1_tubecap.time (.5); + $pump1_tubecap.moveTo ($pump1_tubecap_spot1); + sys.waitFor ($pump1_tubecap); + $pump1_tubecap.bind ($pump1_tube); + + + + $pump1_tube_anchor.time (.5); + $pump1_tube_anchor.rotateOnce ('0 0 -90'); + sys.waitFor ($pump1_tube_anchor); + + } + } + + void block_door () + { + + sys.trigger ($block_door); + + } + + void bust_window () + { + + sys.trigger ($imp_1); + sys.wait (1); + sys.trigger ($bustfield1); + sys.trigger ($bustout1); + + sys.wait (4); + sys.trigger ($imp_2); + sys.wait (1); + sys.trigger ($bustfield2); + sys.trigger ($bustout2); + } + + void light_warning_on () + { + + $light_warning_off.hide (); + $light_warning_on.show (); + $light_warning_flare.show (); + $light_warning_anchor.rotate ('0 200 0'); + sys.trigger ($speaker_alarm1); + } + + void change1 () + { + $btrigger2.remove (); + $firstroom_on2.remove (); + $speaker_290.remove(); + } + void change2 () + { + $btrigger1.remove (); + $firstroom_on1.remove (); + $mainscreen.setGuiParm ( "gui_parm1" , 2); + $screen2.setGuiParm ( "gui_parm1" , 2); + $screen4.setGuiParm ( "gui_parm1" , 2); + $speaker_291.remove(); + } + + + /////////////////// + // first gas room + ////////////////// + + void ventgas_off () + { + sys.trigger ($ventgas1); + sys.trigger ($ventgas2); + sys.wait (.5); + sys.trigger ($ventgas1_in); + sys.trigger ($ventgas2_in); + sys.wait (4); + sys.trigger ($ventgas1_in); + sys.trigger ($ventgas2_in); + } + + /////////////////// + // exit gas room + ////////////////// + + void exitgas1_off () + { + sys.trigger ($exitgas1); + sys.wait (.5); + sys.trigger ($exitgas1_in); + + } + void exitgas2_off () + { + sys.trigger ($exitgas2); + sys.wait (.5); + sys.trigger ($exitgas2_in); + + } + void exitgas3_off () + { + sys.trigger ($exitgas3); + sys.wait (.5); + sys.trigger ($exitgas3_in); + + } + + void exitgas_in () + { + sys.wait (4); + sys.trigger ($exitgas1_in); + sys.trigger ($exitgas2_in); + sys.trigger ($exitgas3_in); + + } + + + ///////////////// + // misc + //////////////// + + + void pump2piston_start () + { + while (1) + { + $pump2piston.startSoundShader ("rec2_pump_1s_01", SND_CHANNEL_VOICE ); + $pump2piston.time (1); + $pump2piston.moveTo ($pump2piston_spot1); + sys.waitFor ($pump2piston); + + $pump2piston.startSoundShader ("rec2_pump_05s_01", SND_CHANNEL_VOICE2 ); + $pump2piston.time (0.5); + $pump2piston.moveTo ($pump2piston_spot2); + sys.waitFor ($pump2piston); + + } + } + + void cyl1_start () + { + while (1) + { + sys.trigger ($cyl1_gas); + + $vent1.time (.5); + $vent1.rotateOnce ('0 -100 0'); + $vent2.time (.5); + $vent2.rotateOnce ('0 -70 0'); + $vent3.time (.5); + $vent3.rotateOnce ('0 -70 0'); + $thingspeaker.startSoundShader("sact1_vent_05s_close", SND_CHANNEL_ANY ); + sys.wait (.5); + + $cyl_1_anchor.time (1); + $cyl_1_anchor.rotateOnce ('0 -150 0'); + $thingspeaker.startSoundShader("sact1_vent_1s", SND_CHANNEL_ANY ); + sys.waitFor ($cyl_1_anchor); + + sys.wait (2); + + $cyl_1_anchor.time (1); + $cyl_1_anchor.rotateOnce ('0 150 0'); + $thingspeaker.startSoundShader("sact1_vent_1s", SND_CHANNEL_ANY ); + sys.waitFor ($cyl_1_anchor); + + sys.wait (.5); + + $vent1.time (.5); + $vent1.rotateOnce ('0 100 0'); + $vent2.time (.5); + $vent2.rotateOnce ('0 70 0'); + $vent3.time (.5); + $vent3.rotateOnce ('0 70 0'); + $thingspeaker.startSoundShader("sact1_vent_05s_open", SND_CHANNEL_ANY ); + + sys.trigger ($cyl1_gas); + + sys.wait (3); + + } + } + + + void lamp_sway1 () + { + + $storageswing_lamp1.sway( 25, 0, '20 10 10' ); + + } + + void wallbox1_turn () + { + + $wallbox1.time (.3); + $wallbox1.rotateOnce ('0 0 -8'); + $wallbox1_speaker.startSoundShader("smallpanel_impact", SND_CHANNEL_ANY ); + + } + + void underhall_lights () + { + while (1) + { + sys.trigger ($underhall_fadein1); + sys.trigger ($underhall_fadein2); + + sys.wait (.7); + + sys.trigger ($underhall_fadeout1); + sys.trigger ($underhall_fadeout2); + + sys.wait (.3); + } + } + + void elev_crash () + { + + $elev1.bind ($elev_mover); + $elev_mover.accelTime (.4); + $elev_mover.time (1.5); + $elev_mover.move (DOWN , 612); + + } + + ///////////////////// + // mancubusroom + //////////////////// + + void walkway_fall () + { + $walkway_anchor.startSoundShader ("rec1_bridge_fall", SND_CHANNEL_VOICE ); + $walkway_anchor.time (.6); + $walkway_anchor.accelTime (.4); + $walkway_anchor.rotateOnce ('18 0 0'); + $walkway_speaker.startSoundShader("smallpanel_impact", SND_CHANNEL_ANY ); + + sys.waitFor ($walkway_anchor); + + $walkway_anchor.time (.2); + $walkway_anchor.decelTime (.1); + $walkway_anchor.rotateOnce ('-5 0 0'); + $walkway_anchor.time (.1); + $walkway_anchor.rotateOnce ('5 0 0'); + + } + + void cache_sounds() { + sys.cacheSoundShader ("player_cough"); + sys.cacheSoundShader ("m1_start"); + sys.cacheSoundShader ("m1_stop"); + sys.cacheSoundShader ("m1_loop"); + sys.cacheSoundShader ("m2_start"); + sys.cacheSoundShader ("m2_stop"); + sys.cacheSoundShader ("m2_loop"); + sys.cacheSoundShader ("m3_start"); + sys.cacheSoundShader ("m3_stop"); + sys.cacheSoundShader ("m3_loop"); + sys.cacheSoundShader ("sact1_vent_1s"); + sys.cacheSoundShader ("sact1_vent_05s_close"); + sys.cacheSoundShader ("sact1_vent_05s_open"); + sys.cacheSoundShader ("rec2_pump_1s_01"); + sys.cacheSoundShader ("rec2_pump_05s_01"); + sys.cacheSoundShader ("smallpanel_impact"); + sys.cacheSoundShader ("rec1_bridge_fall"); + } + + + void main () + { + cache_sounds(); + setup_objects(); + pump2piston_start(); + + } +} diff --git a/base/script/map_site3.script b/base/script/map_site3.script new file mode 100644 index 00000000..b1e35d3c --- /dev/null +++ b/base/script/map_site3.script @@ -0,0 +1,323 @@ +namespace map_site3 { + + void setup_objects () + { + // Cache the sounds... -Xian + + sys.cacheSoundShader ("train_door_close"); + sys.cacheSoundShader ("train_door_open"); + + $transport.accelTime (.5); + $transport.decelTime (.5); + + $transport_door.accelTime (.2); + $transport_door.decelTime (.1); + $transport_door.time (.5); + $transport_door.bind ($transport); + $transport_door_open1.bind ($transport); + $transport_door_close1.bind ($transport); + $transport_door_close2.bind ($transport); + $transport_activator_2.bind ($transport); + + $pistrod1.bind ($piston1); + $pistrod2.bind ($piston2); + $pistrod3.bind ($piston3); + + $piston1.time (.125); + $pistrod1.time (.125); + $piston2.time (.125); + $pistrod2.time (.125); + $piston3.time (.125); + $pistrod3.time (.125); + $crankshaft.time (.125); + + $arm_base.time (1); + $arm_base.accelTime (.5); + $arm_base.decelTime (.1); + + $metaldoor.time (.05); + + $finger1.bind ($hand); + $finger2.bind ($hand); + $hand.bind ($arm); + $arm.bind ($arm_anchor); + $arm_anchor.bind ($arm_base); + + $pipe_crash.bind ($pipe_crash_anchor); + $pipe_crash_anchor.accelTime (.4); + $pipe_crash_anchor.time (1); + $skcube_crash.bind ($skcube_crash_anchor); + $skcube_crash_anchor.accelTime (.4); + $skcube_crash_anchor.time (.8); + + $walkway1_anchor.time (.5); + $walkway1_anchor.accelTime (.5); + $walkway2_anchor.time (.5); + $walkway2_anchor.accelTime (.5); + $walkway1edge_anchor.time (.3); + $walkway1edge_anchor.accelTime (.3); + $walkway2edge_anchor.time (.3); + $walkway2edge_anchor.accelTime (.3); + + $walkway1.bind ($walkway1_anchor); + $walkway1edge.bind ($walkway1edge_anchor); + $walkway1edge_anchor.bind ($walkway1); + $walkway2.bind ($walkway2_anchor); + $walkway2edge.bind ($walkway2edge_anchor); + $walkway2edge_anchor.bind ($walkway2); + } + + //////////////////////////////////////////////////// + // + // transport + // + //////////////////////////////////////////////////// + + void call_transport () + { + sys.trigger ($door_block_trigger); + sys.trigger ($trigger_objectivecomplete_2); + $transport.time (10); + $transport.moveTo ($transport_spot1); + sys.waitFor ($transport); + $transport_activator_2.unbind (); + $transport_activator_1.bind ($transport); + $transport_door.unbind (); + sys.trigger ($trans_trigger); + sys.trigger ($trigger_objective_3); + } + + void move_transport () + { + sys.trigger ($airdoor1_lf); + $transport.time (4); + $transport.moveTo ($transport_spot1a); + sys.waitFor ($transport); + sys.wait (.5); + sys.trigger ($airdoor1_lf); + sys.wait (2); + sys.trigger ($airdoor2_lf); + sys.waitFor ($airdoor2_lf); + sys.trigger ($airdoor2_relay); + sys.trigger ($airdoor3_relay); + $transport.time (7); + $transport.moveTo ($transport_spot2); + sys.waitFor ($transport); + sys.trigger ($airdoor3_lf); + sys.trigger ($trans_trigger2); + } + + void transport_door_close () + { + $transport_door.startSoundShader ("train_door_close", SND_CHANNEL_VOICE); + $transport_door.moveTo ($transport_door_close1); + sys.waitFor ($transport_door); + $transport_door.moveTo ($transport_door_close2); + sys.waitFor ($transport_door); + $transport_door.bind ($transport); + } + + void transport_door_open () + { + $transport_door.unbind (); + $transport_door.startSoundShader ("train_door_open", SND_CHANNEL_VOICE); + $transport_door.moveTo ($transport_door_close1); + sys.waitFor ($transport_door); + $transport_door.moveTo ($transport_door_open1); + sys.waitFor ($transport_door); + } + + void airdoor1_open () + { + sys.trigger ($airdoor1_lf); + } + void airdoor2_open () + { + sys.trigger ($airdoor2_lf); + } + void airdoor3_open () + { + sys.trigger ($airdoor3_lf); + } + void airdoor1_close () + { + sys.trigger ($airdoor1_lf); + } + void airdoor2_close () + { + sys.trigger ($airdoor2_lf); + } + void airdoor3_close () + { + sys.trigger ($airdoor3_lf); + } + + //////////////////////////////////////////////////// + // + // archvile room + // + //////////////////////////////////////////////////// + + + + void archvile_start () + { + sys.trigger ($blight_trigger1); + sys.wait (.7); + sys.trigger ($blight_trigger3); + sys.wait (.2); + sys.trigger ($blight_trigger2); + sys.wait (.6); + sys.trigger ($alight_trigger1); + sys.trigger ($alight_trigger2); + sys.trigger ($alight_trigger3); + sys.trigger ($alight_trigger4); + sys.trigger ($alight_trigger5); + sys.trigger ($alight_trigger6); + + $walkway1_anchor.rotateOnce ('-88 0 0'); + $walkway1edge_anchor.rotateOnce ('84 0 0'); + $walkway2_anchor.rotateOnce ('0 0 -88'); + $walkway2edge_anchor.rotateOnce ('0 0 84'); + sys.waitFor ($walkway1_anchor); + sys.wait (1); + + sys.trigger ($candles_trigger); + sys.wait (.5); + sys.trigger ($archvile_trigger); + sys.wait (.5); + sys.trigger ($fire_trigger); + sys.trigger ($speaker_flames_1); + sys.trigger ($speaker_flames_2); + sys.trigger ($speaker_av_mood); + } + + //////////////////////////////////////////////////// + // + // misc + // + //////////////////////////////////////////////////// + + void pipe_crash_trigger () + { + $pipe_crash_anchor.rotateOnce ('-20 0 25'); + $skcube_crash_anchor.rotateOnce ('0 10 90'); + } + + //////////////////////////////////////////////////// + // + // crane arm movement + // + //////////////////////////////////////////////////// + void crane_move () + { + while (1) { + + $arm_base.startSoundShader ("s3_arm_back", SND_CHANNEL_ANY ); + $arm_base.move ( SOUTH, 256 ); + sys.waitFor ($arm_base); + sys.trigger ($doorbang); + sys.trigger ($doorspark); + $metaldoor.move (SOUTH,1); + + $arm_anchor.time (.1); + $arm_anchor.decelTime (.05); + + $arm_anchor.rotateOnce ('0 0 -4'); + sys.waitFor ($arm_anchor); + $metaldoor.move (NORTH,1); + + $arm_anchor.rotateOnce ('0 0 5'); + sys.waitFor ($arm_anchor); + $arm_anchor.time (.08); + $arm_anchor.rotateOnce ('0 0 -1.5'); + sys.waitFor ($arm_anchor); + $arm_anchor.time (.04); + $arm_anchor.rotateOnce ('0 0 0.5'); + sys.waitFor ($arm_anchor); + + // need sound here + + sys.trigger ($armsound1); + $arm_base.move ( NORTH, 256 ); + sys.waitFor ($arm_base); + + $arm_anchor.time (.2); + $arm_anchor.decelTime (.1); + + $arm_anchor.rotateOnce ('0 0 6'); + sys.waitFor ($arm_anchor); + $arm_anchor.rotateOnce ('0 0 -7'); + sys.waitFor ($arm_anchor); + $arm_anchor.time (.15); + $arm_anchor.rotateOnce ('0 0 2'); + sys.waitFor ($arm_anchor); + $arm_anchor.time (.08); + $arm_anchor.rotateOnce ('0 0 -1'); + sys.waitFor ($arm_anchor); + } + } + + //////////////////////////////////////////////////// + // + // piston movement + // + //////////////////////////////////////////////////// + void piston_move () + { + while (1) + { + + $piston1.move ( DOWN, 6 ); + $pistrod1.rotateOnce ( '0 0 -26.56' ); + $piston2.move ( UP, 6 ); + $pistrod2.rotateOnce ( '0 0 26.56' ); + $piston3.move ( DOWN, 6 ); + $pistrod3.rotateOnce ( '0 0 -26.56' ); + $crankshaft.rotateOnce ( '0 0 90' ); + sys.waitFor ($piston1); + + $piston1.move ( DOWN, 6 ); + $pistrod1.rotateOnce ( '0 0 26.56' ); + $piston2.move ( UP, 6 ); + $pistrod2.rotateOnce ( '0 0 -26.56' ); + $piston3.move ( DOWN, 6 ); + $pistrod3.rotateOnce ( '0 0 26.56' ); + $crankshaft.rotateOnce ( '0 0 90' ); + sys.waitFor ($piston1); + + $piston1.move ( UP, 6 ); + $pistrod1.rotateOnce ( '0 0 26.56' ); + $piston2.move ( DOWN, 6 ); + $pistrod2.rotateOnce ( '0 0 -26.56' ); + $piston3.move ( UP, 6 ); + $pistrod3.rotateOnce ( '0 0 26.56' ); + $crankshaft.rotateOnce ( '0 0 90' ); + sys.waitFor ($piston1); + + $piston1.move ( UP, 6 ); + $pistrod1.rotateOnce ( '0 0 -26.56' ); + $piston2.move ( DOWN, 6 ); + $pistrod2.rotateOnce ( '0 0 26.56' ); + $piston3.move ( UP, 6 ); + $pistrod3.rotateOnce ( '0 0 -26.56' ); + $crankshaft.rotateOnce ( '0 0 90' ); + sys.waitFor ($piston1); + + } + } + + //////////////////////////////////////////////////// + // + // MAIN + // + //////////////////////////////////////////////////// + void main () + { + sys.cacheSoundShader ("s3_arm_back"); + setup_objects (); + piston_move (); + + } +} + diff --git a/neo/doom3/game.vcxproj b/neo/doom3/game.vcxproj index 43ef9308..4cef6a14 100644 --- a/neo/doom3/game.vcxproj +++ b/neo/doom3/game.vcxproj @@ -338,6 +338,40 @@ typeinfo.exe + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -396,6 +430,7 @@ typeinfo.exe + @@ -456,6 +491,40 @@ typeinfo.exe + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -561,4 +630,4 @@ typeinfo.exe - + \ No newline at end of file diff --git a/neo/doom3/game.vcxproj.filters b/neo/doom3/game.vcxproj.filters index 322d3d02..acaaf209 100644 --- a/neo/doom3/game.vcxproj.filters +++ b/neo/doom3/game.vcxproj.filters @@ -282,6 +282,109 @@ AI + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + @@ -494,8 +597,110 @@ AI + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + + + AI + - + \ No newline at end of file diff --git a/neo/doom3/game/Actor.cpp b/neo/doom3/game/Actor.cpp index 3d4c72aa..c7cd2f70 100644 --- a/neo/doom3/game/Actor.cpp +++ b/neo/doom3/game/Actor.cpp @@ -44,12 +44,11 @@ idAnimState::idAnimState ===================== */ idAnimState::idAnimState() { - self = NULL; - animator = NULL; - thread = NULL; - idleAnim = true; - disabled = true; - channel = ANIMCHANNEL_ALL; + self = NULL; + animator = NULL; + idleAnim = true; + disabled = true; + channel = ANIMCHANNEL_ALL; animBlendFrames = 0; lastAnimBlendFrames = 0; } @@ -60,7 +59,6 @@ idAnimState::~idAnimState ===================== */ idAnimState::~idAnimState() { - delete thread; } /* @@ -68,22 +66,24 @@ idAnimState::~idAnimState() { idAnimState::Save ===================== */ -void idAnimState::Save( idSaveGame *savefile ) const { +void idAnimState::Save(idSaveGame* savefile) const { - savefile->WriteObject( self ); + savefile->WriteBool(idleAnim); + savefile->WriteInt(animBlendFrames); + savefile->WriteInt(lastAnimBlendFrames); + + savefile->WriteObject(self); // Save the entity owner of the animator - savefile->WriteObject( animator->GetEntity() ); + savefile->WriteObject(animator->GetEntity()); - savefile->WriteObject( thread ); + savefile->WriteInt(channel); + savefile->WriteBool(disabled); - savefile->WriteString( state ); - - savefile->WriteInt( animBlendFrames ); - savefile->WriteInt( lastAnimBlendFrames ); - savefile->WriteInt( channel ); - savefile->WriteBool( idleAnim ); - savefile->WriteBool( disabled ); + // RAVEN BEGIN + // abahr: + stateThread.Save(savefile); + // RAVEN END } /* @@ -91,24 +91,27 @@ void idAnimState::Save( idSaveGame *savefile ) const { idAnimState::Restore ===================== */ -void idAnimState::Restore( idRestoreGame *savefile ) { - savefile->ReadObject( reinterpret_cast( self ) ); +void idAnimState::Restore(idRestoreGame* savefile) { - idEntity *animowner; - savefile->ReadObject( reinterpret_cast( animowner ) ); - if ( animowner ) { + savefile->ReadBool(idleAnim); + savefile->ReadInt(animBlendFrames); + savefile->ReadInt(lastAnimBlendFrames); + + savefile->ReadObject(reinterpret_cast(self)); + + idEntity* animowner; + savefile->ReadObject(reinterpret_cast(animowner)); + if (animowner) { animator = animowner->GetAnimator(); } - savefile->ReadObject( reinterpret_cast( thread ) ); + savefile->ReadInt(channel); + savefile->ReadBool(disabled); - savefile->ReadString( state ); - - savefile->ReadInt( animBlendFrames ); - savefile->ReadInt( lastAnimBlendFrames ); - savefile->ReadInt( channel ); - savefile->ReadBool( idleAnim ); - savefile->ReadBool( disabled ); + // RAVEN BEGIN + // abahr: + stateThread.Restore(savefile, self); + // RAVEN END } /* @@ -116,19 +119,18 @@ void idAnimState::Restore( idRestoreGame *savefile ) { idAnimState::Init ===================== */ -void idAnimState::Init( idActor *owner, idAnimator *_animator, int animchannel ) { - assert( owner ); - assert( _animator ); +// RAVEN BEGIN +// bdube: converted self to entity ptr so any entity can use it +void idAnimState::Init(idEntity* owner, idAnimator* _animator, int animchannel) { + // RAVEN BEGIN + assert(owner); + assert(_animator); self = owner; animator = _animator; channel = animchannel; - if ( !thread ) { - thread = new idThread(); - thread->ManualDelete(); - } - thread->EndThread(); - thread->ManualControl(); + stateThread.SetName(va("%s_anim_%d", owner->GetName(), animchannel)); + stateThread.SetOwner(owner); } /* @@ -136,9 +138,20 @@ void idAnimState::Init( idActor *owner, idAnimator *_animator, int animchannel ) idAnimState::Shutdown ===================== */ -void idAnimState::Shutdown( void ) { - delete thread; - thread = NULL; +void idAnimState::Shutdown(void) { + stateThread.Clear(true); +} + +/* +===================== +idAnimState::PostState +===================== +*/ +void idAnimState::PostState(const char* statename, int blendFrames, int delay, int flags) { + if (SRESULT_OK != stateThread.PostState(statename, blendFrames, delay, flags)) { + gameLocal.Error("Could not find state function '%s' for entity '%s'", statename, self->GetName()); + } + disabled = false; } /* @@ -146,29 +159,15 @@ void idAnimState::Shutdown( void ) { idAnimState::SetState ===================== */ -void idAnimState::SetState( const char *statename, int blendFrames ) { - const function_t *func; - - func = self->scriptObject.GetFunction( statename ); - if ( !func ) { - assert( 0 ); - gameLocal.Error( "Can't find function '%s' in object '%s'", statename, self->scriptObject.GetTypeName() ); +void idAnimState::SetState(const char* statename, int blendFrames, int flags) { + if (SRESULT_OK != stateThread.SetState(statename, blendFrames, 0, flags)) { + gameLocal.Error("Could not find state function '%s' for entity '%s'", statename, self->GetName()); } - state = statename; - disabled = false; - animBlendFrames = blendFrames; - lastAnimBlendFrames = blendFrames; - thread->CallFunction( self, func, true ); - animBlendFrames = blendFrames; lastAnimBlendFrames = blendFrames; disabled = false; idleAnim = false; - - if ( ai_debugScript.GetInteger() == self->entityNumber ) { - gameLocal.Printf( "%d: %s: Animstate: %s\n", gameLocal.time, self->name.c_str(), state.c_str() ); - } } /* @@ -176,9 +175,9 @@ void idAnimState::SetState( const char *statename, int blendFrames ) { idAnimState::StopAnim ===================== */ -void idAnimState::StopAnim( int frames ) { +void idAnimState::StopAnim(int frames) { animBlendFrames = 0; - animator->Clear( channel, gameLocal.time, FRAME2MS( frames ) ); + animator->Clear(channel, gameLocal.time, FRAME2MS(frames)); } /* @@ -186,9 +185,9 @@ void idAnimState::StopAnim( int frames ) { idAnimState::PlayAnim ===================== */ -void idAnimState::PlayAnim( int anim ) { - if ( anim ) { - animator->PlayAnim( channel, anim, gameLocal.time, FRAME2MS( animBlendFrames ) ); +void idAnimState::PlayAnim(int anim) { + if (anim) { + animator->PlayAnim(channel, anim, gameLocal.time, FRAME2MS(animBlendFrames)); } animBlendFrames = 0; } @@ -198,9 +197,9 @@ void idAnimState::PlayAnim( int anim ) { idAnimState::CycleAnim ===================== */ -void idAnimState::CycleAnim( int anim ) { - if ( anim ) { - animator->CycleAnim( channel, anim, gameLocal.time, FRAME2MS( animBlendFrames ) ); +void idAnimState::CycleAnim(int anim) { + if (anim) { + animator->CycleAnim(channel, anim, gameLocal.time, FRAME2MS(animBlendFrames)); } animBlendFrames = 0; } @@ -210,7 +209,7 @@ void idAnimState::CycleAnim( int anim ) { idAnimState::BecomeIdle ===================== */ -void idAnimState::BecomeIdle( void ) { +void idAnimState::BecomeIdle(void) { idleAnim = true; } @@ -219,7 +218,7 @@ void idAnimState::BecomeIdle( void ) { idAnimState::Disabled ===================== */ -bool idAnimState::Disabled( void ) const { +bool idAnimState::Disabled(void) const { return disabled; } @@ -228,16 +227,18 @@ bool idAnimState::Disabled( void ) const { idAnimState::AnimDone ===================== */ -bool idAnimState::AnimDone( int blendFrames ) const { +bool idAnimState::AnimDone(int blendFrames) const { int animDoneTime; - - animDoneTime = animator->CurrentAnim( channel )->GetEndTime(); - if ( animDoneTime < 0 ) { + + animDoneTime = animator->CurrentAnim(channel)->GetEndTime(); + if (animDoneTime < 0) { // playing a cycle return false; - } else if ( animDoneTime - FRAME2MS( blendFrames ) <= gameLocal.time ) { + } + else if (animDoneTime - FRAME2MS(blendFrames) <= gameLocal.time) { return true; - } else { + } + else { return false; } } @@ -247,7 +248,7 @@ bool idAnimState::AnimDone( int blendFrames ) const { idAnimState::IsIdle ===================== */ -bool idAnimState::IsIdle( void ) const { +bool idAnimState::IsIdle(void) const { return disabled || idleAnim; } @@ -256,12 +257,12 @@ bool idAnimState::IsIdle( void ) const { idAnimState::GetAnimFlags ===================== */ -animFlags_t idAnimState::GetAnimFlags( void ) const { +animFlags_t idAnimState::GetAnimFlags(void) const { animFlags_t flags; - memset( &flags, 0, sizeof( flags ) ); - if ( !disabled && !AnimDone( 0 ) ) { - flags = animator->GetAnimFlags( animator->CurrentAnim( channel )->AnimNum() ); + memset(&flags, 0, sizeof(flags)); + if (!disabled && !AnimDone(0)) { + flags = animator->GetAnimFlags(animator->CurrentAnim(channel)->AnimNum()); } return flags; @@ -272,14 +273,11 @@ animFlags_t idAnimState::GetAnimFlags( void ) const { idAnimState::Enable ===================== */ -void idAnimState::Enable( int blendFrames ) { - if ( disabled ) { +void idAnimState::Enable(int blendFrames) { + if (disabled) { disabled = false; animBlendFrames = blendFrames; lastAnimBlendFrames = blendFrames; - if ( state.Length() ) { - SetState( state.c_str(), blendFrames ); - } } } @@ -288,7 +286,7 @@ void idAnimState::Enable( int blendFrames ) { idAnimState::Disable ===================== */ -void idAnimState::Disable( void ) { +void idAnimState::Disable(void) { disabled = true; idleAnim = false; } @@ -298,18 +296,12 @@ void idAnimState::Disable( void ) { idAnimState::UpdateState ===================== */ -bool idAnimState::UpdateState( void ) { - if ( disabled ) { +bool idAnimState::UpdateState(void) { + if (disabled) { return false; } - if ( ai_debugScript.GetInteger() == self->entityNumber ) { - thread->EnableDebugInfo(); - } else { - thread->DisableDebugInfo(); - } - - thread->Execute(); + stateThread.Execute(); return true; } @@ -377,8 +369,8 @@ CLASS_DECLARATION( idAFEntity_Gibbable, idActor ) EVENT( AI_GetPainAnim, idActor::Event_GetPainAnim ) EVENT( AI_SetAnimPrefix, idActor::Event_SetAnimPrefix ) EVENT( AI_StopAnim, idActor::Event_StopAnim ) - EVENT( AI_PlayAnim, idActor::Event_PlayAnim ) - EVENT( AI_PlayCycle, idActor::Event_PlayCycle ) + EVENT( AI_PlayAnim, idActor::Event_PlayAnimScript ) + EVENT( AI_PlayCycle, idActor::Event_PlayCycleScript) EVENT( AI_IdleAnim, idActor::Event_IdleAnim ) EVENT( AI_SetSyncedAnimWeight, idActor::Event_SetSyncedAnimWeight ) EVENT( AI_SetBlendFrames, idActor::Event_SetBlendFrames ) @@ -1315,6 +1307,12 @@ idActor::SetState void idActor::SetState( const char *statename ) { const function_t *newState; + if (HasNativeFunction(statename)) { + idStr _stateName = statename; + CallNativeEvent(_stateName); + return; + } + newState = GetScriptFunction( statename ); SetState( newState ); } @@ -1886,64 +1884,70 @@ void idActor::GetNAVLocation( idNAV *aas, idVec3 &pos, int &areaNum ) const { idActor::SetAnimState ===================== */ -void idActor::SetAnimState( int channel, const char *statename, int blendFrames ) { - const function_t *func; - - func = scriptObject.GetFunction( statename ); - if ( !func ) { - assert( 0 ); - gameLocal.Error( "Can't find function '%s' in object '%s'", statename, scriptObject.GetTypeName() ); - } - - switch( channel ) { - case ANIMCHANNEL_HEAD : - headAnim.SetState( statename, blendFrames ); - allowEyeFocus = true; - break; - - case ANIMCHANNEL_TORSO : - torsoAnim.SetState( statename, blendFrames ); - legsAnim.Enable( blendFrames ); - allowPain = true; - allowEyeFocus = true; +void idActor::SetAnimState(int channel, const char* statename, int blendFrames, int flags) { + switch (channel) { + case ANIMCHANNEL_HEAD: + headAnim.GetStateThread().Clear(); break; - case ANIMCHANNEL_LEGS : - legsAnim.SetState( statename, blendFrames ); - torsoAnim.Enable( blendFrames ); - allowPain = true; - allowEyeFocus = true; + case ANIMCHANNEL_TORSO: + torsoAnim.GetStateThread().Clear(); + legsAnim.Enable(blendFrames); break; - default: - gameLocal.Error( "idActor::SetAnimState: Unknown anim group" ); + case ANIMCHANNEL_LEGS: + legsAnim.GetStateThread().Clear(); + torsoAnim.Enable(blendFrames); break; } + + //OnStateChange(channel); + + PostAnimState(channel, statename, blendFrames, 0, flags); } + +/* +===================== +idActor::SetAnimState +===================== +*/ +void idActor::SetAnimState( int channel, const char *statename, int blendFrames ) { + switch (channel) { + case ANIMCHANNEL_HEAD: + headAnim.GetStateThread().Clear(); + break; + + case ANIMCHANNEL_TORSO: + torsoAnim.GetStateThread().Clear(); + legsAnim.Enable(blendFrames); + break; + + case ANIMCHANNEL_LEGS: + legsAnim.GetStateThread().Clear(); + torsoAnim.Enable(blendFrames); + break; + } + + //OnStateChange(channel); + + PostAnimState(channel, statename, blendFrames, 0, 0); +} + + /* ===================== idActor::GetAnimState ===================== */ -const char *idActor::GetAnimState( int channel ) const { - switch( channel ) { - case ANIMCHANNEL_HEAD : - return headAnim.state; - break; - - case ANIMCHANNEL_TORSO : - return torsoAnim.state; - break; - - case ANIMCHANNEL_LEGS : - return legsAnim.state; - break; - +idAnimState& idActor::GetAnimState(int channel) { + switch (channel) { + case ANIMCHANNEL_LEGS: return legsAnim; + case ANIMCHANNEL_TORSO: return torsoAnim; + case ANIMCHANNEL_HEAD: return headAnim; default: - gameLocal.Error( "idActor::GetAnimState: Unknown anim group" ); - return NULL; - break; + gameLocal.Error("idActor::GetAnimState: Unknown anim channel"); + return torsoAnim; } } @@ -1953,27 +1957,36 @@ idActor::InAnimState ===================== */ bool idActor::InAnimState( int channel, const char *statename ) const { - switch( channel ) { - case ANIMCHANNEL_HEAD : - if ( headAnim.state == statename ) { + switch (channel) { + case ANIMCHANNEL_HEAD: + { + rvStateThread& stateThread = ((idActor*)this)->headAnim.GetStateThread(); + if (stateThread.CurrentState() == statename) { return true; } - break; + } + break; - case ANIMCHANNEL_TORSO : - if ( torsoAnim.state == statename ) { + case ANIMCHANNEL_TORSO: + { + rvStateThread& stateThread = ((idActor*)this)->torsoAnim.GetStateThread(); + if (stateThread.CurrentState() == statename) { return true; } - break; + } + break; - case ANIMCHANNEL_LEGS : - if ( legsAnim.state == statename ) { + case ANIMCHANNEL_LEGS: + { + rvStateThread& stateThread = ((idActor*)this)->legsAnim.GetStateThread(); + if (stateThread.CurrentState() == statename) { return true; } - break; + } + break; default: - gameLocal.Error( "idActor::InAnimState: Unknown anim group" ); + gameLocal.Error("idActor::InAnimState: Unknown anim group"); break; } @@ -2574,12 +2587,159 @@ void idActor::Event_StopAnim( int channel, int frames ) { } } +bool idActor::HasAnim(int channel, const char* animname, bool forcePrefix) { + return GetAnim(channel, animname) != NULL; +} + +/* +===================== +idActor::PostAnimState +===================== +*/ +void idActor::PostAnimState(int channel, const char* statename, int blendFrames, int delay, int flags) { + GetAnimState(channel).PostState(statename, blendFrames, delay, flags); +} + + +/* +===================== +idActor::GetAnimStateVar +===================== +*/ +idAnimState& idActor::GetAnimStateVar(int channel) +{ + switch (channel) + { + case ANIMCHANNEL_LEGS: + return legsAnim; + case ANIMCHANNEL_TORSO: + return torsoAnim; + case ANIMCHANNEL_HEAD: + return headAnim; + default: + gameLocal.Error("idActor::GetAnimState: Unknown anim channel"); + return torsoAnim; + } +} + +/* +===================== +idActor::GetAnimStateVar +===================== +*/ +const idAnimState& idActor::GetAnimStateVar(int channel) const +{ + switch (channel) + { + case ANIMCHANNEL_LEGS: + return legsAnim; + case ANIMCHANNEL_TORSO: + return torsoAnim; + case ANIMCHANNEL_HEAD: + return headAnim; + default: + gameLocal.Error("idActor::GetAnimState: Unknown anim channel"); + return torsoAnim; + } +} + +/* +================ +idActor::AnimDone +================ +*/ +bool idActor::AnimDone(int channel, int blendFrames) const +{ + return GetAnimStateVar(channel).AnimDone(blendFrames); +} + /* =============== idActor::Event_PlayAnim =============== */ -void idActor::Event_PlayAnim( int channel, const char *animname ) { +void idActor::Event_PlayAnim(int channel, const char* animname, int blendFrames) { + animFlags_t flags; + idEntity* headEnt; + int anim; + + anim = GetAnim(channel, animname); + if (!anim) { + if ((channel == ANIMCHANNEL_HEAD) && head.GetEntity()) { + gameLocal.DPrintf("missing '%s' animation on '%s' (%s)\n", animname, name.c_str(), spawnArgs.GetString("def_head", "")); + } + else { + gameLocal.DPrintf("missing '%s' animation on '%s' (%s)\n", animname, name.c_str(), GetEntityDefName()); + } + idThread::ReturnInt(0); + return; + } + + switch (channel) { + case ANIMCHANNEL_HEAD: + headEnt = head.GetEntity(); + if (headEnt) { + headAnim.idleAnim = false; + headAnim.PlayAnim(anim); + flags = headAnim.GetAnimFlags(); + if (!flags.prevent_idle_override) { + if (torsoAnim.IsIdle()) { + torsoAnim.animBlendFrames = headAnim.lastAnimBlendFrames; + SyncAnimChannels(ANIMCHANNEL_TORSO, ANIMCHANNEL_HEAD, headAnim.lastAnimBlendFrames); + if (legsAnim.IsIdle()) { + legsAnim.animBlendFrames = headAnim.lastAnimBlendFrames; + SyncAnimChannels(ANIMCHANNEL_LEGS, ANIMCHANNEL_HEAD, headAnim.lastAnimBlendFrames); + } + } + } + } + break; + + case ANIMCHANNEL_TORSO: + torsoAnim.idleAnim = false; + torsoAnim.PlayAnim(anim); + flags = torsoAnim.GetAnimFlags(); + if (!flags.prevent_idle_override) { + if (headAnim.IsIdle()) { + headAnim.animBlendFrames = torsoAnim.lastAnimBlendFrames; + SyncAnimChannels(ANIMCHANNEL_HEAD, ANIMCHANNEL_TORSO, torsoAnim.lastAnimBlendFrames); + } + if (legsAnim.IsIdle()) { + legsAnim.animBlendFrames = torsoAnim.lastAnimBlendFrames; + SyncAnimChannels(ANIMCHANNEL_LEGS, ANIMCHANNEL_TORSO, torsoAnim.lastAnimBlendFrames); + } + } + break; + + case ANIMCHANNEL_LEGS: + legsAnim.idleAnim = false; + legsAnim.PlayAnim(anim); + flags = legsAnim.GetAnimFlags(); + if (!flags.prevent_idle_override) { + if (torsoAnim.IsIdle()) { + torsoAnim.animBlendFrames = legsAnim.lastAnimBlendFrames; + SyncAnimChannels(ANIMCHANNEL_TORSO, ANIMCHANNEL_LEGS, legsAnim.lastAnimBlendFrames); + if (headAnim.IsIdle()) { + headAnim.animBlendFrames = legsAnim.lastAnimBlendFrames; + SyncAnimChannels(ANIMCHANNEL_HEAD, ANIMCHANNEL_LEGS, legsAnim.lastAnimBlendFrames); + } + } + } + break; + + default: + gameLocal.Error("Unknown anim group"); + break; + } + idThread::ReturnInt(1); +} + +/* +=============== +idActor::Event_PlayAnim +=============== +*/ +void idActor::Event_PlayAnimScript( int channel, const char *animname ) { animFlags_t flags; idEntity *headEnt; int anim; @@ -2656,10 +2816,10 @@ void idActor::Event_PlayAnim( int channel, const char *animname ) { /* =============== -idActor::Event_PlayCycle +idActor::Event_PlayCycleScript =============== */ -void idActor::Event_PlayCycle( int channel, const char *animname ) { +void idActor::Event_PlayCycleScript( int channel, const char *animname ) { animFlags_t flags; int anim; @@ -2728,6 +2888,82 @@ void idActor::Event_PlayCycle( int channel, const char *animname ) { idThread::ReturnInt( true ); } + +/* +=============== +idActor::Event_PlayCycle +=============== +*/ +void idActor::Event_PlayCycle(int channel, const char* animname, int blendFrames) { + animFlags_t flags; + int anim; + + anim = GetAnim(channel, animname); + if (!anim) { + if ((channel == ANIMCHANNEL_HEAD) && head.GetEntity()) { + gameLocal.DPrintf("missing '%s' animation on '%s' (%s)\n", animname, name.c_str(), spawnArgs.GetString("def_head", "")); + } + else { + gameLocal.DPrintf("missing '%s' animation on '%s' (%s)\n", animname, name.c_str(), GetEntityDefName()); + } + idThread::ReturnInt(false); + return; + } + + switch (channel) { + case ANIMCHANNEL_HEAD: + headAnim.idleAnim = false; + headAnim.CycleAnim(anim); + flags = headAnim.GetAnimFlags(); + if (!flags.prevent_idle_override) { + if (torsoAnim.IsIdle() && legsAnim.IsIdle()) { + torsoAnim.animBlendFrames = headAnim.lastAnimBlendFrames; + SyncAnimChannels(ANIMCHANNEL_TORSO, ANIMCHANNEL_HEAD, headAnim.lastAnimBlendFrames); + legsAnim.animBlendFrames = headAnim.lastAnimBlendFrames; + SyncAnimChannels(ANIMCHANNEL_LEGS, ANIMCHANNEL_HEAD, headAnim.lastAnimBlendFrames); + } + } + break; + + case ANIMCHANNEL_TORSO: + torsoAnim.idleAnim = false; + torsoAnim.CycleAnim(anim); + flags = torsoAnim.GetAnimFlags(); + if (!flags.prevent_idle_override) { + if (headAnim.IsIdle()) { + headAnim.animBlendFrames = torsoAnim.lastAnimBlendFrames; + SyncAnimChannels(ANIMCHANNEL_HEAD, ANIMCHANNEL_TORSO, torsoAnim.lastAnimBlendFrames); + } + if (legsAnim.IsIdle()) { + legsAnim.animBlendFrames = torsoAnim.lastAnimBlendFrames; + SyncAnimChannels(ANIMCHANNEL_LEGS, ANIMCHANNEL_TORSO, torsoAnim.lastAnimBlendFrames); + } + } + break; + + case ANIMCHANNEL_LEGS: + legsAnim.idleAnim = false; + legsAnim.CycleAnim(anim); + flags = legsAnim.GetAnimFlags(); + if (!flags.prevent_idle_override) { + if (torsoAnim.IsIdle()) { + torsoAnim.animBlendFrames = legsAnim.lastAnimBlendFrames; + SyncAnimChannels(ANIMCHANNEL_TORSO, ANIMCHANNEL_LEGS, legsAnim.lastAnimBlendFrames); + if (headAnim.IsIdle()) { + headAnim.animBlendFrames = legsAnim.lastAnimBlendFrames; + SyncAnimChannels(ANIMCHANNEL_HEAD, ANIMCHANNEL_LEGS, legsAnim.lastAnimBlendFrames); + } + } + } + break; + + default: + gameLocal.Error("Unknown anim group"); + } + + idThread::ReturnInt(true); +} + /* =============== idActor::Event_IdleAnim @@ -3014,7 +3250,7 @@ idActor::Event_GetAnimState void idActor::Event_GetAnimState( int channel ) { const char *state; - state = GetAnimState( channel ); + state = GetAnimState(channel).GetStateThread().CurrentState(); idThread::ReturnString( state ); } diff --git a/neo/doom3/game/Actor.h b/neo/doom3/game/Actor.h index d511f2e2..7c824d21 100644 --- a/neo/doom3/game/Actor.h +++ b/neo/doom3/game/Actor.h @@ -57,39 +57,47 @@ class idDeclParticle; class idAnimState { public: + bool idleAnim; - idStr state; int animBlendFrames; int lastAnimBlendFrames; // allows override anims to blend based on the last transition time public: - idAnimState(); - ~idAnimState(); + idAnimState(); + ~idAnimState(); - void Save( idSaveGame *savefile ) const; - void Restore( idRestoreGame *savefile ); + void Save(idSaveGame* savefile) const; + void Restore(idRestoreGame* savefile); - void Init( idActor *owner, idAnimator *_animator, int animchannel ); - void Shutdown( void ); - void SetState( const char *name, int blendFrames ); - void StopAnim( int frames ); - void PlayAnim( int anim ); - void CycleAnim( int anim ); - void BecomeIdle( void ); - bool UpdateState( void ); - bool Disabled( void ) const; - void Enable( int blendFrames ); - void Disable( void ); - bool AnimDone( int blendFrames ) const; - bool IsIdle( void ) const; - animFlags_t GetAnimFlags( void ) const; + void Init(idEntity* owner, idAnimator* _animator, int animchannel); + void Shutdown(void); + void SetState(const char* name, int blendFrames, int flags = 0); + void PostState(const char* name, int blendFrames = 0, int delay = 0, int flags = 0); + void StopAnim(int frames); + void PlayAnim(int anim); + void CycleAnim(int anim); + void BecomeIdle(void); + bool UpdateState(void); + bool Disabled(void) const; + void Enable(int blendFrames); + void Disable(void); + bool AnimDone(int blendFrames) const; + bool IsIdle(void) const; + animFlags_t GetAnimFlags(void) const; + rvStateThread& GetStateThread(void); + + idAnimator* GetAnimator(void) const { return animator; }; private: - idActor * self; - idAnimator * animator; - idThread * thread; + // RAVEN BEGIN + // bdube: converted self to entity ptr so any entity can use it + idEntity* self; + // RAVEN END + idAnimator* animator; int channel; bool disabled; + + rvStateThread stateThread; }; class idAttachInfo { @@ -106,6 +114,8 @@ typedef struct { class idActor : public idAFEntity_Gibbable { public: + friend class rvmAIObject; + CLASS_PROTOTYPE( idActor ); int team; @@ -135,6 +145,10 @@ public: void CheckBlink( void ); + void SetAnimState(int channel, const char* statename, int blendFrames, int flags); + void PostAnimState(int channel, const char* statename, int blendFrames, int delay = 0, int flags = 0); + void StopAnimState(int channel); + virtual bool GetPhysicsToVisualTransform( idVec3 &origin, idMat3 &axis ); virtual bool GetPhysicsToSoundTransform( idVec3 &origin, idMat3 &axis ); @@ -198,7 +212,7 @@ public: int GetAnim( int channel, const char *name ); void UpdateAnimState( void ); void SetAnimState( int channel, const char *name, int blendFrames ); - const char * GetAnimState( int channel ) const; + idAnimState& GetAnimState(int channel); bool InAnimState( int channel, const char *name ) const; const char * WaitState( void ) const; void SetWaitState( const char *_waitstate ); @@ -270,7 +284,10 @@ protected: // copies animation from body to head joints void CopyJointsFromBodyToHead( void ); -private: + void Event_PlayAnim(int channel, const char* animname, int blendFrames); + void Event_PlayCycle(int channel, const char* animname, int blendFrames); + bool HasAnim(int channel, const char* animname, bool forcePrefix); +protected: void SyncAnimChannels( int channel, int syncToChannel, int blendFrames ); void FinishSetup( void ); void SetupHead( void ); @@ -290,8 +307,8 @@ private: void Event_EnablePain( void ); void Event_GetPainAnim( void ); void Event_StopAnim( int channel, int frames ); - void Event_PlayAnim( int channel, const char *name ); - void Event_PlayCycle( int channel, const char *name ); + void Event_PlayAnimScript( int channel, const char *name ); + void Event_PlayCycleScript( int channel, const char *name ); void Event_IdleAnim( int channel, const char *name ); void Event_SetSyncedAnimWeight( int channel, int anim, float weight ); void Event_OverrideAnim( int channel ); @@ -316,6 +333,13 @@ private: void Event_SetState( const char *name ); void Event_GetState( void ); void Event_GetHead( void ); + + idAnimState& GetAnimStateVar(int channel); + const idAnimState& GetAnimStateVar(int channel) const; }; +ID_INLINE rvStateThread& idAnimState::GetStateThread(void) { + return stateThread; +} + #endif /* !__GAME_ACTOR_H__ */ diff --git a/neo/doom3/game/Player.cpp b/neo/doom3/game/Player.cpp index 75166bc1..8bc32c25 100644 --- a/neo/doom3/game/Player.cpp +++ b/neo/doom3/game/Player.cpp @@ -1584,6 +1584,10 @@ void idPlayer::Spawn( void ) { #endif } } + + // Start in idle + SetAnimState(ANIMCHANNEL_TORSO, "Torso_Idle", 0); + SetAnimState(ANIMCHANNEL_LEGS, "Legs_Idle", 0); } /* diff --git a/neo/doom3/game/Player.h b/neo/doom3/game/Player.h index 93615e45..fbbf8ebd 100644 --- a/neo/doom3/game/Player.h +++ b/neo/doom3/game/Player.h @@ -695,6 +695,42 @@ public: void Event_LevelTrigger( void ); void Event_Gibbed( void ); void Event_GetIdealWeapon( void ); + + stateResult_t Wait_Alive(stateParms_t* parms); + stateResult_t Wait_ReloadAnim(stateParms_t* parms); + + stateResult_t Torso_Idle(stateParms_t* parms); + stateResult_t Torso_IdleThink(stateParms_t* parms); + stateResult_t Torso_Teleport(stateParms_t* parms); + stateResult_t Torso_RaiseWeapon(stateParms_t* parms); + stateResult_t Torso_LowerWeapon(stateParms_t* parms); + stateResult_t Torso_Fire(stateParms_t* parms); + stateResult_t Torso_Fire_Windup(stateParms_t* parms); + + stateResult_t Torso_Reload(stateParms_t* parms); + stateResult_t Torso_Pain(stateParms_t* parms); + stateResult_t Torso_Dead(stateParms_t* parms); + stateResult_t Torso_Emote(stateParms_t* parms); + + stateResult_t Legs_Idle(stateParms_t* parms); + stateResult_t Legs_Run_Forward(stateParms_t* parms); + stateResult_t Legs_Run_Backward(stateParms_t* parms); + stateResult_t Legs_Run_Left(stateParms_t* parms); + stateResult_t Legs_Run_Right(stateParms_t* parms); + stateResult_t Legs_Walk_Forward(stateParms_t* parms); + stateResult_t Legs_Walk_Backward(stateParms_t* parms); + stateResult_t Legs_Walk_Left(stateParms_t* parms); + stateResult_t Legs_Walk_Right(stateParms_t* parms); + stateResult_t Legs_Crouch(stateParms_t* parms); + stateResult_t Legs_Uncrouch(stateParms_t* parms); + stateResult_t Legs_Crouch_Idle(stateParms_t* parms); + stateResult_t Legs_Crouch_Forward(stateParms_t* parms); + stateResult_t Legs_Crouch_Backward(stateParms_t* parms); + stateResult_t Legs_Jump(stateParms_t* parms); + stateResult_t Legs_Fall(stateParms_t* parms); + stateResult_t Legs_Land(stateParms_t* parms); + stateResult_t Legs_Dead(stateParms_t* parms); + bool IsLegsIdle(bool crouching) const; }; ID_INLINE bool idPlayer::IsReady( void ) { diff --git a/neo/doom3/game/PlayerAnim.cpp b/neo/doom3/game/PlayerAnim.cpp new file mode 100644 index 00000000..d77590bb --- /dev/null +++ b/neo/doom3/game/PlayerAnim.cpp @@ -0,0 +1,913 @@ +// Player_Anim.cpp +// + +#include "precompiled.h" +#pragma hdrstop + +#include "Game_local.h" + +/* +================ +idPlayer::Torso_Idle +================ +*/ +stateResult_t idPlayer::Torso_Idle(stateParms_t* parms) { + if (SRESULT_WAIT == Torso_IdleThink(parms)) { + Event_PlayCycle(ANIMCHANNEL_TORSO, "idle", /* parms->blendFrames */ 0); + PostAnimState(ANIMCHANNEL_TORSO, "Torso_IdleThink", /* parms->blendFrames */ 0); + } + return SRESULT_DONE; +} + +/* +================ +idPlayer::Torso_IdleThink +================ +*/ +stateResult_t idPlayer::Torso_IdleThink(stateParms_t* parms) { + if (AI_TELEPORT) { + PostAnimState(ANIMCHANNEL_TORSO, "Torso_Teleport", 0); + return SRESULT_DONE; + } + if (AI_WEAPON_FIRED) { + PostAnimState(ANIMCHANNEL_TORSO, "Torso_Fire", 0); + return SRESULT_DONE; + } + + //if (AI_ATTACK_HELD && weapon && weapon->wfl.hasWindupAnim) { + // PostAnimState(ANIMCHANNEL_TORSO, "Torso_Fire_Windup", 0); + // return SRESULT_DONE; + //} + + if (AI_ATTACK_HELD && HasAnim(ANIMCHANNEL_TORSO, "startfire", false)) { + PostAnimState(ANIMCHANNEL_TORSO, "Torso_Fire_StartFire", 2); + return SRESULT_DONE; + } + if (AI_PAIN) { + PostAnimState(ANIMCHANNEL_TORSO, "Torso_Pain", 0); + return SRESULT_DONE; + } + //if (emote != PE_NONE) { + // PostAnimState(ANIMCHANNEL_TORSO, "Torso_Emote", 5); + // return SRESULT_DONE; + //} + + return SRESULT_WAIT; +} + +/* +================ +idPlayer::Torso_Teleport +================ +*/ +stateResult_t idPlayer::Torso_Teleport(stateParms_t* parms) { + enum { + STAGE_INIT, + STAGE_WAIT + }; + switch (parms->stage) { + case STAGE_INIT: + AI_TELEPORT = false; + Event_PlayAnim(ANIMCHANNEL_TORSO, "teleport", /* parms->blendFrames */ 0); + SRESULT_STAGE(STAGE_WAIT); + + case STAGE_WAIT: + if (AnimDone(ANIMCHANNEL_TORSO, 4)) { + PostAnimState(ANIMCHANNEL_TORSO, "Torso_Idle", 4); + return SRESULT_DONE; + } + return SRESULT_WAIT; + } + return SRESULT_ERROR; +} + +/* +================ +idPlayer::Torso_RaiseWeapon +================ +*/ +stateResult_t idPlayer::Torso_RaiseWeapon(stateParms_t* parms) { + Event_PlayAnim(ANIMCHANNEL_TORSO, "raise", /* parms->blendFrames */ 0); + PostAnimState(ANIMCHANNEL_TORSO, "Wait_TorsoAnim", 3); + PostAnimState(ANIMCHANNEL_TORSO, "Torso_Idle", 3); + return SRESULT_DONE; +} + +/* +================ +idPlayer::Torso_LowerWeapon +================ +*/ +stateResult_t idPlayer::Torso_LowerWeapon(stateParms_t* parms) { + Event_PlayAnim(ANIMCHANNEL_TORSO, "lower", /* parms->blendFrames */ 0); + PostAnimState(ANIMCHANNEL_TORSO, "Wait_TorsoAnim", 3); + return SRESULT_DONE; +} + +/* +================ +idPlayer::Torso_Fire +================ +*/ +stateResult_t idPlayer::Torso_Fire(stateParms_t* parms) { + enum { + TORSO_FIRE_INIT, + TORSO_FIRE_WAIT, + TORSO_FIRE_AIM, + TORSO_FIRE_AIMWAIT + }; + + switch (parms->stage) { + // Start the firing sequence + case TORSO_FIRE_INIT: + Event_PlayAnim(ANIMCHANNEL_TORSO, "fire", /* parms->blendFrames */ 0); + AI_WEAPON_FIRED = false; + SRESULT_STAGE(TORSO_FIRE_WAIT); + + // Wait for the firing animation to be finished + case TORSO_FIRE_WAIT: + if (AI_WEAPON_FIRED) { + PostAnimState(ANIMCHANNEL_TORSO, "Torso_Fire", /* parms->blendFrames */ 0); + return SRESULT_DONE; + } + if (AnimDone(ANIMCHANNEL_TORSO, /* parms->blendFrames */ 0)) { + PostAnimState(ANIMCHANNEL_TORSO, "Torso_Idle", /* parms->blendFrames */ 0); + return SRESULT_DONE; + } + return SRESULT_WAIT; + + // Keep the gun aimed but dont shoot + case TORSO_FIRE_AIM: + Event_PlayAnim(ANIMCHANNEL_TORSO, "aim", 3); + SRESULT_STAGE(TORSO_FIRE_AIMWAIT); + + // Keep the gun aimed as long as the attack button is held and nothing is firing + case TORSO_FIRE_AIMWAIT: + if (AI_WEAPON_FIRED) { + PostAnimState(ANIMCHANNEL_TORSO, "Torso_Fire", 3); + return SRESULT_DONE; + } + else if (!AI_ATTACK_HELD) { + PostAnimState(ANIMCHANNEL_TORSO, "Torso_Idle", /* parms->blendFrames */ 0); + return SRESULT_DONE; + } + return SRESULT_WAIT; + } + return SRESULT_DONE; +} + +/* +================ +idPlayer::Torso_Fire_Windup +================ +*/ +stateResult_t idPlayer::Torso_Fire_Windup(stateParms_t* parms) { + enum { + TORSO_FIRE_INIT, + TORSO_WINDUP_WAIT, + TORSO_FIRE_LOOP, + TORSO_FIRE_WAIT, + TORSO_WINDDOWN_START, + TORSO_WINDDOWN_WAIT, + TORSO_FIRE_AIM, + TORSO_FIRE_AIMWAIT + }; + + switch (parms->stage) { + // Start the firing sequence + case TORSO_FIRE_INIT: + //jshepard: HACK for now we're blending here, but we need to support charge up anims here + Event_PlayAnim(ANIMCHANNEL_TORSO, "fire", 4); + AI_WEAPON_FIRED = false; + SRESULT_STAGE(TORSO_WINDUP_WAIT); + + // wait for the windup anim to end, or the attackHeld to be false. + case TORSO_WINDUP_WAIT: + if (!AI_ATTACK_HELD) { + SRESULT_STAGE(TORSO_WINDDOWN_START); + } + if (AnimDone(ANIMCHANNEL_TORSO, /* parms->blendFrames */ 0)) { + SRESULT_STAGE(TORSO_FIRE_LOOP); + } + return SRESULT_WAIT; + + // play the firing loop + case TORSO_FIRE_LOOP: + if (!AI_ATTACK_HELD) { + SRESULT_STAGE(TORSO_WINDDOWN_START); + } + Event_PlayAnim(ANIMCHANNEL_TORSO, "fire", /* parms->blendFrames */ 0); + SRESULT_STAGE(TORSO_FIRE_WAIT); + + // loop the fire anim + case TORSO_FIRE_WAIT: + if (!AI_ATTACK_HELD) { + SRESULT_STAGE(TORSO_WINDDOWN_START); + } + //loop the attack anim + if (AnimDone(ANIMCHANNEL_TORSO, /* parms->blendFrames */ 0)) { + Event_PlayAnim(ANIMCHANNEL_TORSO, "fire", /* parms->blendFrames */ 0); + SRESULT_STAGE(TORSO_FIRE_WAIT); + } + return SRESULT_WAIT; + + //wind down + case TORSO_WINDDOWN_START: + //jshepard: HACK just blend back into idle for now, we could support winddown anims here. + PostAnimState(ANIMCHANNEL_TORSO, "Torso_Idle", 4); + AI_WEAPON_FIRED = false; + return SRESULT_DONE; + + } + return SRESULT_DONE; +} +/* +================ +idPlayer::Torso_Reload +================ +*/ +stateResult_t idPlayer::Torso_Reload(stateParms_t* parms) { + enum { + TORSO_RELOAD_START, + TORSO_RELOAD_STARTWAIT, + TORSO_RELOAD_LOOP, + TORSO_RELOAD_LOOPWAIT, + TORSO_RELOAD_WAIT, + TORSO_RELOAD_END + }; + switch (parms->stage) { + // Start the reload by either playing the reload animation or the reload_start animation + case TORSO_RELOAD_START: + if (HasAnim(ANIMCHANNEL_TORSO, "reload_start", false)) { + Event_PlayAnim(ANIMCHANNEL_TORSO, "reload_start", /* parms->blendFrames */ 0); + SRESULT_STAGE(TORSO_RELOAD_STARTWAIT); + } + + Event_PlayAnim(ANIMCHANNEL_TORSO, "reload", /* parms->blendFrames */ 0); + SRESULT_STAGE(TORSO_RELOAD_WAIT); + + // Wait for the reload_start animation to finish and transition to reload_loop + case TORSO_RELOAD_STARTWAIT: + if (AnimDone(ANIMCHANNEL_TORSO, 0)) { + SRESULT_STAGE(TORSO_RELOAD_LOOP); + } + else if (AI_WEAPON_FIRED) { + PostAnimState(ANIMCHANNEL_TORSO, "Torso_Idle", 3); + return SRESULT_DONE; + } + return SRESULT_WAIT; + + // Play a single reload from the reload loop + case TORSO_RELOAD_LOOP: + if (!AI_RELOAD) { + SRESULT_STAGE(TORSO_RELOAD_END); + } + Event_PlayAnim(ANIMCHANNEL_TORSO, "reload_loop", 0); + SRESULT_STAGE(TORSO_RELOAD_LOOPWAIT); + + // Wait for the looping reload to finish and either start a new one or end the reload + case TORSO_RELOAD_LOOPWAIT: + if (AnimDone(ANIMCHANNEL_TORSO, 0)) { + SRESULT_STAGE(TORSO_RELOAD_LOOP); + } + else if (AI_WEAPON_FIRED) { + PostAnimState(ANIMCHANNEL_TORSO, "Torso_Idle", 3); + return SRESULT_DONE; + } + return SRESULT_WAIT; + + // End the reload + case TORSO_RELOAD_END: + if (AI_WEAPON_FIRED) { + PostAnimState(ANIMCHANNEL_TORSO, "Torso_Idle", 3); + return SRESULT_DONE; + } + + Event_PlayAnim(ANIMCHANNEL_TORSO, "reload_end", 3); + SRESULT_STAGE(TORSO_RELOAD_WAIT); + + // Wait for reload to finish (called by both reload_end and reload) + case TORSO_RELOAD_WAIT: + if (AI_WEAPON_FIRED || AnimDone(ANIMCHANNEL_TORSO, 3)) { + PostAnimState(ANIMCHANNEL_TORSO, "Torso_Idle", 3); + return SRESULT_DONE; + } + return SRESULT_WAIT; + } + + return SRESULT_DONE; +} + +/* +================ +idPlayer::Torso_Pain +================ +*/ +stateResult_t idPlayer::Torso_Pain(stateParms_t* parms) { + Event_PlayAnim(ANIMCHANNEL_TORSO, painAnim.Length() ? painAnim : "pain", /* parms->blendFrames */ 0); + PostAnimState(ANIMCHANNEL_TORSO, "Wait_TorsoAnim", 4); + PostAnimState(ANIMCHANNEL_TORSO, "Torso_Idle", 4); + return SRESULT_DONE; +} + +/* +================ +idPlayer::Torso_Dead +================ +*/ +stateResult_t idPlayer::Torso_Dead(stateParms_t* parms) { + PostAnimState(ANIMCHANNEL_TORSO, "Wait_Alive", 0); + PostAnimState(ANIMCHANNEL_TORSO, "Torso_Idle", 0); + return SRESULT_DONE; +} + +/* +================ +idPlayer::Torso_Emote +================ +*/ +stateResult_t idPlayer::Torso_Emote(stateParms_t* parms) { +#if 0 + enum { + STAGE_INIT, + STAGE_WAIT + }; + switch (parms->stage) { + case STAGE_INIT: + if (emote == PE_GRAB_A) { + Event_PlayAnim(ANIMCHANNEL_TORSO, "grab_a", /* parms->blendFrames */ 0); + } + else if (emote == PE_GRAB_B) { + Event_PlayAnim(ANIMCHANNEL_TORSO, "grab_b", /* parms->blendFrames */ 0); + } + else if (emote == PE_SALUTE) { + Event_PlayAnim(ANIMCHANNEL_TORSO, "salute", /* parms->blendFrames */ 0); + } + else if (emote == PE_CHEER) { + Event_PlayAnim(ANIMCHANNEL_TORSO, "cheer", /* parms->blendFrames */ 0); + } + else if (emote == PE_TAUNT) { + Event_PlayAnim(ANIMCHANNEL_TORSO, "taunt", /* parms->blendFrames */ 0); + } + + emote = PE_NONE; + + SRESULT_STAGE(STAGE_WAIT); + + case STAGE_WAIT: + if (AnimDone(ANIMCHANNEL_TORSO, /* parms->blendFrames */ 0)) { + PostAnimState(ANIMCHANNEL_TORSO, "Torso_Idle", /* parms->blendFrames */ 0); + return SRESULT_DONE; + } + return SRESULT_WAIT; + } + return SRESULT_ERROR; +#else + gameLocal.Error("Not implemented!"); + return SRESULT_ERROR; +#endif +} + +/* +=============================================================================== + + AI Leg States + +=============================================================================== +*/ + +/* +================ +idPlayer::IsLegsIdle +================ +*/ +bool idPlayer::IsLegsIdle(bool crouching) const { + return ((AI_CROUCH == crouching) && AI_ONGROUND && (AI_FORWARD == AI_BACKWARD) && (AI_STRAFE_LEFT == AI_STRAFE_RIGHT)); +} + +/* +================ +idPlayer::Legs_Idle +================ +*/ +stateResult_t idPlayer::Legs_Idle(stateParms_t* parms) { + enum { + STAGE_INIT, + STAGE_WAIT + }; + switch (parms->stage) { + case STAGE_INIT: + if (AI_CROUCH) { + PostAnimState(ANIMCHANNEL_LEGS, "Legs_Crouch", /* parms->blendFrames */ 0); + return SRESULT_DONE; + } + Event_IdleAnim(ANIMCHANNEL_LEGS, "idle"); + SRESULT_STAGE(STAGE_WAIT); + + case STAGE_WAIT: + // If now crouching go back to idle so we can transition to crouch + if (AI_CROUCH) { + PostAnimState(ANIMCHANNEL_LEGS, "Legs_Crouch", 4); + return SRESULT_DONE; + } + else if (AI_JUMP) { + PostAnimState(ANIMCHANNEL_LEGS, "Legs_Jump", 4); + return SRESULT_DONE; + } + else if (!AI_ONGROUND) { + PostAnimState(ANIMCHANNEL_LEGS, "Legs_Fall", 4); + return SRESULT_DONE; + } + else if (AI_FORWARD && !AI_BACKWARD) { + if (usercmd.buttons & BUTTON_RUN) { + Event_PlayCycle(ANIMCHANNEL_LEGS, "run_forward", /* parms->blendFrames */ 0); + PostAnimState(ANIMCHANNEL_LEGS, "Legs_Run_Forward", /* parms->blendFrames */ 0); + } + else { + Event_PlayCycle(ANIMCHANNEL_LEGS, "walk", /* parms->blendFrames */ 0); + PostAnimState(ANIMCHANNEL_LEGS, "Legs_Walk_Forward", /* parms->blendFrames */ 0); + } + + return SRESULT_DONE; + } + else if (AI_BACKWARD && !AI_FORWARD) { + if (usercmd.buttons & BUTTON_RUN) { + Event_PlayCycle(ANIMCHANNEL_LEGS, "run_backwards", /* parms->blendFrames */ 0); + PostAnimState(ANIMCHANNEL_LEGS, "Legs_Run_Backward", /* parms->blendFrames */ 0); + } + else { + Event_PlayCycle(ANIMCHANNEL_LEGS, "walk_backwards", /* parms->blendFrames */ 0); + PostAnimState(ANIMCHANNEL_LEGS, "Legs_Walk_Backward", /* parms->blendFrames */ 0); + } + + return SRESULT_DONE; + } + else if (AI_STRAFE_LEFT && !AI_STRAFE_RIGHT) { + if (usercmd.buttons & BUTTON_RUN) { + Event_PlayCycle(ANIMCHANNEL_LEGS, "run_strafe_left", /* parms->blendFrames */ 0); + PostAnimState(ANIMCHANNEL_LEGS, "Legs_Run_Left", /* parms->blendFrames */ 0); + } + else { + Event_PlayCycle(ANIMCHANNEL_LEGS, "walk_left", /* parms->blendFrames */ 0); + PostAnimState(ANIMCHANNEL_LEGS, "Legs_Walk_Left", /* parms->blendFrames */ 0); + } + + return SRESULT_DONE; + } + else if (AI_STRAFE_RIGHT && !AI_STRAFE_LEFT) { + if (usercmd.buttons & BUTTON_RUN) { + Event_PlayCycle(ANIMCHANNEL_LEGS, "run_strafe_right", /* parms->blendFrames */ 0); + PostAnimState(ANIMCHANNEL_LEGS, "Legs_Run_Right", /* parms->blendFrames */ 0); + } + else { + Event_PlayCycle(ANIMCHANNEL_LEGS, "walk_right", /* parms->blendFrames */ 0); + PostAnimState(ANIMCHANNEL_LEGS, "Legs_Walk_Right", /* parms->blendFrames */ 0); + } + + return SRESULT_DONE; + } + return SRESULT_WAIT; + + } + return SRESULT_ERROR; +} + +/* +================ +idPlayer::Legs_Crouch_Idle +================ +*/ +stateResult_t idPlayer::Legs_Crouch_Idle(stateParms_t* parms) { + enum { + STAGE_INIT, + STAGE_WAIT + }; + switch (parms->stage) { + case STAGE_INIT: + if (!AI_CROUCH) { + PostAnimState(ANIMCHANNEL_LEGS, "Legs_Uncrouch", /* parms->blendFrames */ 0); + return SRESULT_DONE; + } + Event_PlayCycle(ANIMCHANNEL_LEGS, "crouch", /* parms->blendFrames */ 0); + SRESULT_STAGE(STAGE_WAIT); + + case STAGE_WAIT: + if (!AI_CROUCH || AI_JUMP) { + PostAnimState(ANIMCHANNEL_LEGS, "Legs_Uncrouch", 4); + return SRESULT_DONE; + } + else if ((AI_FORWARD && !AI_BACKWARD) || (AI_STRAFE_LEFT != AI_STRAFE_RIGHT)) { + PostAnimState(ANIMCHANNEL_LEGS, "Legs_Crouch_Forward", /* parms->blendFrames */ 0); + return SRESULT_DONE; + } + else if (AI_BACKWARD && !AI_FORWARD) { + PostAnimState(ANIMCHANNEL_LEGS, "Legs_Crouch_Backward", /* parms->blendFrames */ 0); + return SRESULT_DONE; + } + return SRESULT_WAIT; + } + return SRESULT_ERROR; +} + +/* +================ +idPlayer::Legs_Crouch +================ +*/ +stateResult_t idPlayer::Legs_Crouch(stateParms_t* parms) { + enum { + STAGE_INIT, + STAGE_WAIT + }; + switch (parms->stage) { + case STAGE_INIT: + Event_PlayAnim(ANIMCHANNEL_LEGS, "crouch_down", /* parms->blendFrames */ 0); + SRESULT_STAGE(STAGE_WAIT); + + case STAGE_WAIT: + if (!IsLegsIdle(true) || AnimDone(ANIMCHANNEL_LEGS, 4)) { + PostAnimState(ANIMCHANNEL_LEGS, "Legs_Crouch_Idle", /* parms->blendFrames */ 0); + return SRESULT_DONE; + } + return SRESULT_WAIT; + } + return SRESULT_ERROR; +} + +/* +================ +idPlayer::Legs_Uncrouch +================ +*/ +stateResult_t idPlayer::Legs_Uncrouch(stateParms_t* parms) { + enum { + STAGE_INIT, + STAGE_WAIT + }; + switch (parms->stage) { + case STAGE_INIT: + Event_PlayAnim(ANIMCHANNEL_LEGS, "crouch_up", /* parms->blendFrames */ 0); + SRESULT_STAGE(STAGE_WAIT); + + case STAGE_WAIT: + if (!IsLegsIdle(false) || AnimDone(ANIMCHANNEL_LEGS, 4)) { + PostAnimState(ANIMCHANNEL_LEGS, "Legs_Idle", 4); + return SRESULT_DONE; + } + return SRESULT_WAIT; + } + return SRESULT_ERROR; +} + +/* +================ +idPlayer::Legs_Run_Forward +================ +*/ +stateResult_t idPlayer::Legs_Run_Forward(stateParms_t* parms) { + if (!AI_JUMP && AI_ONGROUND && !AI_CROUCH && !AI_BACKWARD && AI_FORWARD) { + if (usercmd.buttons & BUTTON_RUN) { + return SRESULT_WAIT; + } + else { + Event_PlayCycle(ANIMCHANNEL_LEGS, "walk", /* parms->blendFrames */ 0); + PostAnimState(ANIMCHANNEL_LEGS, "Legs_Walk_Forward", /* parms->blendFrames */ 0); + return SRESULT_DONE; + } + } + PostAnimState(ANIMCHANNEL_LEGS, "Legs_Idle", /* parms->blendFrames */ 0); + return SRESULT_DONE; +} + +/* +================ +idPlayer::Legs_Run_Backward +================ +*/ +stateResult_t idPlayer::Legs_Run_Backward(stateParms_t* parms) { + if (!AI_JUMP && AI_ONGROUND && !AI_CROUCH && !AI_FORWARD && AI_BACKWARD) { + if (usercmd.buttons & BUTTON_RUN) { + return SRESULT_WAIT; + } + else { + Event_PlayCycle(ANIMCHANNEL_LEGS, "walk_backwards", /* parms->blendFrames */ 0); + PostAnimState(ANIMCHANNEL_LEGS, "Legs_Walk_Backward", /* parms->blendFrames */ 0); + return SRESULT_DONE; + } + } + PostAnimState(ANIMCHANNEL_LEGS, "Legs_Idle", /* parms->blendFrames */ 0); + return SRESULT_DONE; +} + +/* +================ +idPlayer::Legs_Run_Left +================ +*/ +stateResult_t idPlayer::Legs_Run_Left(stateParms_t* parms) { + if (!AI_JUMP && AI_ONGROUND && !AI_CROUCH && (AI_FORWARD == AI_BACKWARD) && AI_STRAFE_LEFT && !AI_STRAFE_RIGHT) { + if (usercmd.buttons & BUTTON_RUN) { + return SRESULT_WAIT; + } + else { + Event_PlayCycle(ANIMCHANNEL_LEGS, "walk_left", /* parms->blendFrames */ 0); + PostAnimState(ANIMCHANNEL_LEGS, "Legs_Walk_Left", /* parms->blendFrames */ 0); + return SRESULT_DONE; + } + } + PostAnimState(ANIMCHANNEL_LEGS, "Legs_Idle", /* parms->blendFrames */ 0); + return SRESULT_DONE; +} + +/* +================ +idPlayer::Legs_Run_Right +================ +*/ +stateResult_t idPlayer::Legs_Run_Right(stateParms_t* parms) { + if (!AI_JUMP && AI_ONGROUND && !AI_CROUCH && (AI_FORWARD == AI_BACKWARD) && AI_STRAFE_RIGHT && !AI_STRAFE_LEFT) { + if (usercmd.buttons & BUTTON_RUN) { + return SRESULT_WAIT; + } + else { + Event_PlayCycle(ANIMCHANNEL_LEGS, "walk_right", /* parms->blendFrames */ 0); + PostAnimState(ANIMCHANNEL_LEGS, "Legs_Walk_Right", /* parms->blendFrames */ 0); + return SRESULT_DONE; + } + } + PostAnimState(ANIMCHANNEL_LEGS, "Legs_Idle", /* parms->blendFrames */ 0); + return SRESULT_DONE; +} + +/* +================ +idPlayer::Legs_Walk_Forward +================ +*/ +stateResult_t idPlayer::Legs_Walk_Forward(stateParms_t* parms) { + if (!AI_JUMP && AI_ONGROUND && !AI_CROUCH && !AI_BACKWARD && AI_FORWARD) { + if (!(usercmd.buttons & BUTTON_RUN)) { + return SRESULT_WAIT; + } + else { + Event_PlayCycle(ANIMCHANNEL_LEGS, "run_forward", /* parms->blendFrames */ 0); + PostAnimState(ANIMCHANNEL_LEGS, "Legs_Run_Forward", /* parms->blendFrames */ 0); + return SRESULT_DONE; + } + } + PostAnimState(ANIMCHANNEL_LEGS, "Legs_Idle", /* parms->blendFrames */ 0); + return SRESULT_DONE; +} + +/* +================ +idPlayer::Legs_Walk_Backward +================ +*/ +stateResult_t idPlayer::Legs_Walk_Backward(stateParms_t* parms) { + if (!AI_JUMP && AI_ONGROUND && !AI_CROUCH && !AI_FORWARD && AI_BACKWARD) { + if (!(usercmd.buttons & BUTTON_RUN)) { + return SRESULT_WAIT; + } + else { + Event_PlayCycle(ANIMCHANNEL_LEGS, "run_backwards", /* parms->blendFrames */ 0); + PostAnimState(ANIMCHANNEL_LEGS, "Legs_Run_Backward", /* parms->blendFrames */ 0); + return SRESULT_DONE; + } + } + PostAnimState(ANIMCHANNEL_LEGS, "Legs_Idle", /* parms->blendFrames */ 0); + return SRESULT_DONE; +} + +/* +================ +idPlayer::Legs_Walk_Left +================ +*/ +stateResult_t idPlayer::Legs_Walk_Left(stateParms_t* parms) { + if (!AI_JUMP && AI_ONGROUND && !AI_CROUCH && (AI_FORWARD == AI_BACKWARD) && AI_STRAFE_LEFT && !AI_STRAFE_RIGHT) { + if (!(usercmd.buttons & BUTTON_RUN)) { + return SRESULT_WAIT; + } + else { + Event_PlayCycle(ANIMCHANNEL_LEGS, "run_strafe_left", /* parms->blendFrames */ 0); + PostAnimState(ANIMCHANNEL_LEGS, "Legs_Run_Left", /* parms->blendFrames */ 0); + return SRESULT_DONE; + } + } + PostAnimState(ANIMCHANNEL_LEGS, "Legs_Idle", /* parms->blendFrames */ 0); + return SRESULT_DONE; +} + +/* +================ +idPlayer::Legs_Walk_Right +================ +*/ +stateResult_t idPlayer::Legs_Walk_Right(stateParms_t* parms) { + if (!AI_JUMP && AI_ONGROUND && !AI_CROUCH && (AI_FORWARD == AI_BACKWARD) && AI_STRAFE_RIGHT && !AI_STRAFE_LEFT) { + if (!(usercmd.buttons & BUTTON_RUN)) { + return SRESULT_WAIT; + } + else { + Event_PlayCycle(ANIMCHANNEL_LEGS, "run_strafe_right", /* parms->blendFrames */ 0); + PostAnimState(ANIMCHANNEL_LEGS, "Legs_Run_Right", /* parms->blendFrames */ 0); + return SRESULT_DONE; + } + } + PostAnimState(ANIMCHANNEL_LEGS, "Legs_Idle", /* parms->blendFrames */ 0); + return SRESULT_DONE; +} + +/* +================ +idPlayer::Legs_Crouch_Forward +================ +*/ +stateResult_t idPlayer::Legs_Crouch_Forward(stateParms_t* parms) { + enum { + STAGE_INIT, + STAGE_WAIT + }; + switch (parms->stage) { + case STAGE_INIT: + Event_PlayCycle(ANIMCHANNEL_LEGS, "crouch_walk", /* parms->blendFrames */ 0); + SRESULT_STAGE(STAGE_WAIT); + + case STAGE_WAIT: + if (!AI_JUMP && AI_ONGROUND && AI_CROUCH && ((!AI_BACKWARD && AI_FORWARD) || (AI_STRAFE_LEFT != AI_STRAFE_RIGHT))) { + return SRESULT_WAIT; + } + PostAnimState(ANIMCHANNEL_LEGS, "Legs_Crouch_Idle", 2); + return SRESULT_DONE; + } + return SRESULT_DONE; +} + +/* +================ +idPlayer::Legs_Crouch_Backward +================ +*/ +stateResult_t idPlayer::Legs_Crouch_Backward(stateParms_t* parms) { + enum { + STAGE_INIT, + STAGE_WAIT + }; + switch (parms->stage) { + case STAGE_INIT: + Event_PlayCycle(ANIMCHANNEL_LEGS, "crouch_walk_backward", /* parms->blendFrames */ 0); + SRESULT_STAGE(STAGE_WAIT); + + case STAGE_WAIT: + if (!AI_JUMP && AI_ONGROUND && AI_CROUCH && !AI_FORWARD && AI_BACKWARD) { + return SRESULT_WAIT; + } + PostAnimState(ANIMCHANNEL_LEGS, "Legs_Crouch_Idle", /* parms->blendFrames */ 0); + return SRESULT_DONE; + } + return SRESULT_ERROR; +} + +/* +================ +idPlayer::Legs_Jump +================ +*/ +stateResult_t idPlayer::Legs_Jump(stateParms_t* parms) { + enum { + STAGE_INIT, + STAGE_WAIT + }; + switch (parms->stage) { + case STAGE_INIT: + // prevent infinite recursion + AI_JUMP = false; + if (AI_RUN) { + Event_PlayAnim(ANIMCHANNEL_LEGS, "run_jump", /* parms->blendFrames */ 0); + } + else { + Event_PlayAnim(ANIMCHANNEL_LEGS, "jump", /* parms->blendFrames */ 0); + } + SRESULT_STAGE(STAGE_WAIT); + + case STAGE_WAIT: + if (AI_ONGROUND) { + PostAnimState(ANIMCHANNEL_LEGS, "Legs_Land", 4); + return SRESULT_DONE; + } + if (AnimDone(ANIMCHANNEL_LEGS, 4)) { + PostAnimState(ANIMCHANNEL_LEGS, "Legs_Fall", 4); + return SRESULT_DONE; + } + return SRESULT_WAIT; + } + return SRESULT_ERROR; +} + +/* +================ +idPlayer::Legs_Fall +================ +*/ +stateResult_t idPlayer::Legs_Fall(stateParms_t* parms) { + enum { + STAGE_INIT, + STAGE_WAIT + }; + switch (parms->stage) { + case STAGE_INIT: + if (AI_ONGROUND) { + PostAnimState(ANIMCHANNEL_LEGS, "Legs_Land", 2); + return SRESULT_DONE; + } + Event_PlayCycle(ANIMCHANNEL_LEGS, "fall", /* parms->blendFrames */ 0); + SRESULT_STAGE(STAGE_WAIT); + case STAGE_WAIT: + if (AI_ONGROUND) { + PostAnimState(ANIMCHANNEL_LEGS, "Legs_Land", 2); + return SRESULT_DONE; + } + return SRESULT_WAIT; + } + return SRESULT_DONE; +} + +/* +================ +idPlayer::Legs_Land +================ +*/ +stateResult_t idPlayer::Legs_Land(stateParms_t* parms) { + enum { + STAGE_INIT, + STAGE_WAIT + }; + switch (parms->stage) { + case STAGE_INIT: + if (IsLegsIdle(false) && (AI_HARDLANDING || AI_SOFTLANDING)) { + if (AI_HARDLANDING) { + Event_PlayAnim(ANIMCHANNEL_LEGS, "hard_land", /* parms->blendFrames */ 0); + } + else { + Event_PlayAnim(ANIMCHANNEL_LEGS, "soft_land", /* parms->blendFrames */ 0); + } + SRESULT_STAGE(STAGE_WAIT); + } + PostAnimState(ANIMCHANNEL_LEGS, "Legs_Idle", 4); + return SRESULT_DONE; + + case STAGE_WAIT: + if (!IsLegsIdle(false) || AnimDone(ANIMCHANNEL_LEGS, /* parms->blendFrames */ 0)) { + PostAnimState(ANIMCHANNEL_LEGS, "Legs_Idle", /* parms->blendFrames */ 0); + return SRESULT_DONE; + } + return SRESULT_WAIT; + } + return SRESULT_ERROR; +} + +/* +================ +idPlayer::Legs_Dead +================ +*/ +stateResult_t idPlayer::Legs_Dead(stateParms_t* parms) { + PostAnimState(ANIMCHANNEL_LEGS, "Wait_Alive", 0); + PostAnimState(ANIMCHANNEL_LEGS, "Legs_Idle", 0); + return SRESULT_DONE; +} + +/* +================ +idPlayer::Wait_Alive + +Waits until the player is alive again. +================ +*/ +stateResult_t idPlayer::Wait_Alive(stateParms_t* parms) { + if (AI_DEAD) { + return SRESULT_WAIT; + } + return SRESULT_DONE; +} + +/* +================ +idPlayer::Wait_ReloadAnim +================ +*/ +stateResult_t idPlayer::Wait_ReloadAnim(stateParms_t* parms) { + // The gun firing can cancel any of the relod animations + if (AI_WEAPON_FIRED) { + SetAnimState(ANIMCHANNEL_TORSO, "Torso_Idle", /* parms->blendFrames */ 0); + return SRESULT_DONE; + } + + // wait for the animation to finish + if (AnimDone(ANIMCHANNEL_TORSO, /* parms->blendFrames */ 0)) { + return SRESULT_DONE; + } + + return SRESULT_WAIT; +} \ No newline at end of file diff --git a/neo/doom3/game/ai/AI.cpp b/neo/doom3/game/ai/AI.cpp index 01c06799..8c2c6eb5 100644 --- a/neo/doom3/game/ai/AI.cpp +++ b/neo/doom3/game/ai/AI.cpp @@ -138,6 +138,9 @@ idAI::idAI ===================== */ idAI::idAI() { + nativeAIObject = NULL; + nativeAIObjectName.Clear(); + aas = NULL; travelFlags = TFL_WALK | TFL_AIR; @@ -244,6 +247,7 @@ idAI::~idAI ===================== */ idAI::~idAI() { + ShutdownNativeAIObject(); delete projectileClipModel; DeconstructScriptObject(); scriptObject.Free(); @@ -548,6 +552,9 @@ void idAI::Restore(idRestoreGame* savefile) { // Link the script variables back to the scriptobject LinkScriptVariables(); + // Recreate the native state-machine object from the entityDef/spawnArg. + InitNativeAIObject(); + if (restorePhysics) { RestorePhysics(&physicsObj); } @@ -793,6 +800,9 @@ void idAI::Spawn(void) { // init the move variables StopMove(MOVE_STATUS_DONE); + + // create the optional native state-machine object after idAI native fields are ready + InitNativeAIObject(); } /* @@ -1074,12 +1084,165 @@ void idAI::LinkScriptVariables(void) { AI_PUSHED.LinkTo(scriptObject, "AI_PUSHED"); } + +/* +===================== +NativeAIObjectNameMatches +===================== +*/ +static bool NativeAIObjectNameMatches( const char* requestedName, const char* scriptObjectName, const char* cppObjectName ) { + if ( !requestedName || !requestedName[0] ) { + return false; + } + return ( !idStr::Icmp( requestedName, scriptObjectName ) || !idStr::Icmp( requestedName, cppObjectName ) ); +} + +#define CREATE_NATIVE_AI_OBJECT( scriptObjectName, cppObjectType ) \ + if ( NativeAIObjectNameMatches( nativeObjectName, scriptObjectName, #cppObjectType ) ) { return new cppObjectType(); } + +/* +===================== +idAI::CreateNativeAIObject + +Creates the native replacement object named by the entityDef/spawnArg "nativeobject" key. +The key may use either the original DoomScript object name, such as "monster_demon_imp", +or the generated native C++ type name, such as "rvmMonsterDemonImp". +===================== +*/ +rvmAIObject* idAI::CreateNativeAIObject( const char* nativeObjectName ) { + if ( !nativeObjectName || !nativeObjectName[0] ) { + return NULL; + } + + CREATE_NATIVE_AI_OBJECT( "ai", rvmAIObject ); + CREATE_NATIVE_AI_OBJECT( "character", rvmCharacter ); + CREATE_NATIVE_AI_OBJECT( "ai_character_prone", rvmAICharacterProne ); + CREATE_NATIVE_AI_OBJECT( "char_sentry", rvmCharSentry ); + CREATE_NATIVE_AI_OBJECT( "follower", rvmFollower ); + CREATE_NATIVE_AI_OBJECT( "ai_alphalabs2_scientist1", rvmAIAlphaLabs2Scientist1 ); + + CREATE_NATIVE_AI_OBJECT( "monster_base", rvmMonsterBase ); + CREATE_NATIVE_AI_OBJECT( "monster_zombie_base", rvmMonsterZombieBase ); + CREATE_NATIVE_AI_OBJECT( "monster_zombie", rvmMonsterZombie ); + CREATE_NATIVE_AI_OBJECT( "monster_zombie_bernie", rvmMonsterZombieBernie ); + CREATE_NATIVE_AI_OBJECT( "monster_zombie_morgue", rvmMonsterZombieMorgue ); + CREATE_NATIVE_AI_OBJECT( "monster_zombie_sawyer", rvmMonsterZombieSawyer ); + CREATE_NATIVE_AI_OBJECT( "monster_zombie_commando_tentacle", rvmMonsterZombieCommandoTentacle ); + CREATE_NATIVE_AI_OBJECT( "monster_zombie_commando_cgun", rvmMonsterZombieCommandoCGun ); + CREATE_NATIVE_AI_OBJECT( "monster_zombie_security_pistol", rvmMonsterZombieSecurityPistol ); + + CREATE_NATIVE_AI_OBJECT( "monster_demon_pinky", rvmMonsterDemonPinky ); + CREATE_NATIVE_AI_OBJECT( "monster_demon_imp", rvmMonsterDemonImp ); + CREATE_NATIVE_AI_OBJECT( "monster_demon_vulgar", rvmMonsterDemonVulgar ); + CREATE_NATIVE_AI_OBJECT( "monster_demon_revenant", rvmMonsterDemonRevenant ); + CREATE_NATIVE_AI_OBJECT( "monster_demon_hellknight", rvmMonsterDemonHellknight ); + CREATE_NATIVE_AI_OBJECT( "monster_demon_maggot", rvmMonsterDemonMaggot ); + CREATE_NATIVE_AI_OBJECT( "monster_demon_cherub", rvmMonsterDemonCherub ); + CREATE_NATIVE_AI_OBJECT( "monster_demon_trite", rvmMonsterDemonTrite ); + CREATE_NATIVE_AI_OBJECT( "monster_demon_wraith", rvmMonsterDemonWraith ); + CREATE_NATIVE_AI_OBJECT( "monster_demon_mancubus", rvmMonsterDemonMancubus ); + CREATE_NATIVE_AI_OBJECT( "monster_demon_archvile", rvmMonsterDemonArchvile ); + + CREATE_NATIVE_AI_OBJECT( "monster_flying_cacodemon", rvmMonsterFlyingCacodemon ); + CREATE_NATIVE_AI_OBJECT( "monster_flying_lostsoul", rvmMonsterFlyingLostsoul ); + CREATE_NATIVE_AI_OBJECT( "monster_turret", rvmMonsterTurret ); + + CREATE_NATIVE_AI_OBJECT( "monster_boss_cyberdemon", rvmMonsterBossCyberdemon ); + CREATE_NATIVE_AI_OBJECT( "monster_boss_vagary", rvmMonsterBossVagary ); + CREATE_NATIVE_AI_OBJECT( "monster_boss_sabaoth", rvmMonsterBossSabaoth ); + CREATE_NATIVE_AI_OBJECT( "seeker_base", rvmSeekerBase ); + CREATE_NATIVE_AI_OBJECT( "monster_boss_guardian_spawner", rvmMonsterBossGuardianSpawner ); + CREATE_NATIVE_AI_OBJECT( "monster_boss_guardian", rvmMonsterBossGuardian ); + CREATE_NATIVE_AI_OBJECT( "monster_boss_guardian_seeker", rvmMonsterBossGuardianSeeker ); + + return NULL; +} + +#undef CREATE_NATIVE_AI_OBJECT + +/* +===================== +idAI::ShutdownNativeAIObject +===================== +*/ +void idAI::ShutdownNativeAIObject( void ) { + if ( nativeAIObject ) { + nativeAIObject->Destroy(); + delete nativeAIObject; + nativeAIObject = NULL; + } + nativeAIObjectName.Clear(); +} + +/* +===================== +idAI::InitNativeAIObject + +The entityDef owns selection through "nativeobject". Empty, "0", or "false" means +keep the old DoomScript VM path. "1" or "true" means use the existing "scriptobject" +name as the native object selector, which is convenient while converting decls. +===================== +*/ +void idAI::InitNativeAIObject( void ) { + ShutdownNativeAIObject(); + + idStr requestedNativeObject; + spawnArgs.GetString( "nativeobject", "", requestedNativeObject ); + if ( !requestedNativeObject.Length() || !idStr::Icmp( requestedNativeObject.c_str(), "0" ) || !idStr::Icmp( requestedNativeObject.c_str(), "false" ) ) { + return; + } + + if ( !idStr::Icmp( requestedNativeObject.c_str(), "1" ) || !idStr::Icmp( requestedNativeObject.c_str(), "true" ) ) { + spawnArgs.GetString( "scriptobject", "", requestedNativeObject ); + } + + if ( !requestedNativeObject.Length() ) { + gameLocal.Warning( "%s has nativeobject set, but no native object or scriptobject name was provided", name.c_str() ); + return; + } + + nativeAIObject = CreateNativeAIObject( requestedNativeObject.c_str() ); + if ( !nativeAIObject ) { + gameLocal.Warning( "%s has unknown nativeobject '%s'; falling back to DoomScript object '%s'", name.c_str(), requestedNativeObject.c_str(), spawnArgs.GetString( "scriptobject", "" ) ); + return; + } + + nativeAIObjectName = requestedNativeObject; + nativeAIObject->Init( this ); +} + +/* +===================== +idAI::GetNativeAIObject +===================== +*/ +rvmAIObject* idAI::GetNativeAIObject( void ) const { + return nativeAIObject; +} + +/* +===================== +idAI::GetNativeAIObjectName +===================== +*/ +const char* idAI::GetNativeAIObjectName( void ) const { + return nativeAIObjectName.c_str(); +} + /* ===================== idAI::UpdateAIScript ===================== */ void idAI::UpdateAIScript(void) { + if (nativeAIObject) { + nativeAIObject->Update(); + + // clear the hit enemy flag so we catch the next time we hit someone + AI_HIT_ENEMY = false; + return; + } + UpdateScript(); // clear the hit enemy flag so we catch the next time we hit someone @@ -3338,9 +3501,14 @@ void idAI::Killed(idEntity* inflictor, idEntity* attacker, int damage, const idV restartParticles = false; - state = GetScriptFunction("state_Killed"); - SetState(state); - SetWaitState(""); + if (nativeAIObject) { + nativeAIObject->SetState("state_Killed"); + } + else { + state = GetScriptFunction("state_Killed"); + SetState(state); + SetWaitState(""); + } const idKeyValue* kv = spawnArgs.MatchPrefix("def_drops", NULL); while (kv) { diff --git a/neo/doom3/game/ai/AI.h b/neo/doom3/game/ai/AI.h index 47b3aba4..f8f1e7bd 100644 --- a/neo/doom3/game/ai/AI.h +++ b/neo/doom3/game/ai/AI.h @@ -155,6 +155,7 @@ extern const idEventDef AI_TriggerParticles; extern const idEventDef AI_RandomPath; class idPathCorner; +class rvmAIObject; typedef struct particleEmitter_s { particleEmitter_s() { @@ -199,6 +200,8 @@ public: class idAI : public idActor { public: + friend class rvmAIObject; + CLASS_PROTOTYPE(idAI); idAI(); @@ -231,7 +234,7 @@ public: // Finds the best collision free trajectory for a clip model. static bool PredictTrajectory(const idVec3& firePos, const idVec3& target, float projectileSpeed, const idVec3& projGravity, const idClipModel* clip, int clipmask, float max_height, const idEntity* ignore, const idEntity* targetEntity, int drawtime, idVec3& aimDir); -protected: +public: // navigation idNAV* aas; int travelFlags; @@ -374,6 +377,10 @@ protected: idScriptBool AI_HIT_ENEMY; idScriptBool AI_PUSHED; + // native DoomScript replacement object. Created from the entityDef/spawnArg "nativeobject" key. + rvmAIObject* nativeAIObject; + idStr nativeAIObjectName; + // // ai/ai.cpp // @@ -483,6 +490,12 @@ protected: // AI script state management void LinkScriptVariables(void); + + void InitNativeAIObject(void); + void ShutdownNativeAIObject(void); + static rvmAIObject* CreateNativeAIObject(const char* nativeObjectName); + rvmAIObject* GetNativeAIObject(void) const; + const char* GetNativeAIObjectName(void) const; void UpdateAIScript(void); // @@ -770,4 +783,44 @@ private: }; +#include "AI_base.h" +#include "AI_monster_base.h" + +#include "AI_monster_zombie_base.h" +#include "AI_monster_zombie.h" +#include "AI_monster_zombie_bernie.h" +#include "AI_monster_zombie_morgue.h" +#include "AI_monster_zombie_sawyer.h" +#include "AI_monster_zombie_commando_tentacle.h" +#include "AI_monster_zombie_commando_cgun.h" +#include "AI_monster_zombie_security_pistol.h" + +#include "AI_character.h" +#include "AI_character_prone.h" +#include "AI_follower.h" +#include "AI_character_sentry.h" +#include "AI_alphalabs2_scientist1.h" + +#include "AI_monster_demon_pinky.h" +#include "AI_monster_demon_imp.h" +#include "AI_monster_demon_vulgar.h" +#include "AI_monster_demon_revenant.h" +#include "AI_monster_demon_hellknight.h" +#include "AI_monster_demon_maggot.h" +#include "AI_monster_demon_cherub.h" +#include "AI_monster_demon_trite.h" +#include "AI_monster_demon_wraith.h" +#include "AI_monster_demon_mancubus.h" +#include "AI_monster_demon_archvile.h" + +#include "AI_monster_flying_cacodemon.h" +#include "AI_monster_flying_lostsoul.h" +#include "AI_monster_turret.h" + +#include "AI_monster_boss_cyberdemon.h" +#include "AI_monster_boss_vagary.h" +#include "AI_monster_boss_sabaoth.h" +#include "AI_monster_boss_guardian.h" +#include "AI_monster_boss_guardian_seeker.h" + #endif /* !__AI_H__ */ diff --git a/neo/doom3/game/gamesys/GameTypeInfo.cpp b/neo/doom3/game/gamesys/GameTypeInfo.cpp index 6b6c642d..727fd0e7 100644 --- a/neo/doom3/game/gamesys/GameTypeInfo.cpp +++ b/neo/doom3/game/gamesys/GameTypeInfo.cpp @@ -4964,6 +4964,99 @@ intptr_t idPlayer::Invoke(const char *functionName, void *param1) { Event_GetIdealWeapon(); return 0; }; + if(functionNameHash == 123239) { // Wait_Alive + return (intptr_t)Wait_Alive((stateParms_t *)param1); + }; + if(functionNameHash == 187566) { // Wait_ReloadAnim + return (intptr_t)Wait_ReloadAnim((stateParms_t *)param1); + }; + if(functionNameHash == 124942) { // Torso_Idle + return (intptr_t)Torso_Idle((stateParms_t *)param1); + }; + if(functionNameHash == 191804) { // Torso_IdleThink + return (intptr_t)Torso_IdleThink((stateParms_t *)param1); + }; + if(functionNameHash == 185567) { // Torso_Teleport + return (intptr_t)Torso_Teleport((stateParms_t *)param1); + }; + if(functionNameHash == 222094) { // Torso_RaiseWeapon + return (intptr_t)Torso_RaiseWeapon((stateParms_t *)param1); + }; + if(functionNameHash == 224771) { // Torso_LowerWeapon + return (intptr_t)Torso_LowerWeapon((stateParms_t *)param1); + }; + if(functionNameHash == 125959) { // Torso_Fire + return (intptr_t)Torso_Fire((stateParms_t *)param1); + }; + if(functionNameHash == 221897) { // Torso_Fire_Windup + return (intptr_t)Torso_Fire_Windup((stateParms_t *)param1); + }; + if(functionNameHash == 152986) { // Torso_Reload + return (intptr_t)Torso_Reload((stateParms_t *)param1); + }; + if(functionNameHash == 126210) { // Torso_Pain + return (intptr_t)Torso_Pain((stateParms_t *)param1); + }; + if(functionNameHash == 122918) { // Torso_Dead + return (intptr_t)Torso_Dead((stateParms_t *)param1); + }; + if(functionNameHash == 140906) { // Torso_Emote + return (intptr_t)Torso_Emote((stateParms_t *)param1); + }; + if(functionNameHash == 107329) { // Legs_Idle + return (intptr_t)Legs_Idle((stateParms_t *)param1); + }; + if(functionNameHash == 205114) { // Legs_Run_Forward + return (intptr_t)Legs_Run_Forward((stateParms_t *)param1); + }; + if(functionNameHash == 215293) { // Legs_Run_Backward + return (intptr_t)Legs_Run_Backward((stateParms_t *)param1); + }; + if(functionNameHash == 161273) { // Legs_Run_Left + return (intptr_t)Legs_Run_Left((stateParms_t *)param1); + }; + if(functionNameHash == 176427) { // Legs_Run_Right + return (intptr_t)Legs_Run_Right((stateParms_t *)param1); + }; + if(functionNameHash == 217391) { // Legs_Walk_Forward + return (intptr_t)Legs_Walk_Forward((stateParms_t *)param1); + }; + if(functionNameHash == 227644) { // Legs_Walk_Backward + return (intptr_t)Legs_Walk_Backward((stateParms_t *)param1); + }; + if(functionNameHash == 173220) { // Legs_Walk_Left + return (intptr_t)Legs_Walk_Left((stateParms_t *)param1); + }; + if(functionNameHash == 188489) { // Legs_Walk_Right + return (intptr_t)Legs_Walk_Right((stateParms_t *)param1); + }; + if(functionNameHash == 136833) { // Legs_Crouch + return (intptr_t)Legs_Crouch((stateParms_t *)param1); + }; + if(functionNameHash == 166379) { // Legs_Uncrouch + return (intptr_t)Legs_Uncrouch((stateParms_t *)param1); + }; + if(functionNameHash == 199844) { // Legs_Crouch_Idle + return (intptr_t)Legs_Crouch_Idle((stateParms_t *)param1); + }; + if(functionNameHash == 246412) { // Legs_Crouch_Forward + return (intptr_t)Legs_Crouch_Forward((stateParms_t *)param1); + }; + if(functionNameHash == 256813) { // Legs_Crouch_Backward + return (intptr_t)Legs_Crouch_Backward((stateParms_t *)param1); + }; + if(functionNameHash == 111101) { // Legs_Jump + return (intptr_t)Legs_Jump((stateParms_t *)param1); + }; + if(functionNameHash == 107471) { // Legs_Fall + return (intptr_t)Legs_Fall((stateParms_t *)param1); + }; + if(functionNameHash == 107451) { // Legs_Land + return (intptr_t)Legs_Land((stateParms_t *)param1); + }; + if(functionNameHash == 105321) { // Legs_Dead + return (intptr_t)Legs_Dead((stateParms_t *)param1); + }; return __super::Invoke(functionName, param1); }; @@ -5306,6 +5399,99 @@ bool idPlayer::HasNativeFunction(const char *functionName) { if(functionNameHash == 256549) { // Event_GetIdealWeapon return true; }; + if(functionNameHash == 123239) { // Wait_Alive + return true; + }; + if(functionNameHash == 187566) { // Wait_ReloadAnim + return true; + }; + if(functionNameHash == 124942) { // Torso_Idle + return true; + }; + if(functionNameHash == 191804) { // Torso_IdleThink + return true; + }; + if(functionNameHash == 185567) { // Torso_Teleport + return true; + }; + if(functionNameHash == 222094) { // Torso_RaiseWeapon + return true; + }; + if(functionNameHash == 224771) { // Torso_LowerWeapon + return true; + }; + if(functionNameHash == 125959) { // Torso_Fire + return true; + }; + if(functionNameHash == 221897) { // Torso_Fire_Windup + return true; + }; + if(functionNameHash == 152986) { // Torso_Reload + return true; + }; + if(functionNameHash == 126210) { // Torso_Pain + return true; + }; + if(functionNameHash == 122918) { // Torso_Dead + return true; + }; + if(functionNameHash == 140906) { // Torso_Emote + return true; + }; + if(functionNameHash == 107329) { // Legs_Idle + return true; + }; + if(functionNameHash == 205114) { // Legs_Run_Forward + return true; + }; + if(functionNameHash == 215293) { // Legs_Run_Backward + return true; + }; + if(functionNameHash == 161273) { // Legs_Run_Left + return true; + }; + if(functionNameHash == 176427) { // Legs_Run_Right + return true; + }; + if(functionNameHash == 217391) { // Legs_Walk_Forward + return true; + }; + if(functionNameHash == 227644) { // Legs_Walk_Backward + return true; + }; + if(functionNameHash == 173220) { // Legs_Walk_Left + return true; + }; + if(functionNameHash == 188489) { // Legs_Walk_Right + return true; + }; + if(functionNameHash == 136833) { // Legs_Crouch + return true; + }; + if(functionNameHash == 166379) { // Legs_Uncrouch + return true; + }; + if(functionNameHash == 199844) { // Legs_Crouch_Idle + return true; + }; + if(functionNameHash == 246412) { // Legs_Crouch_Forward + return true; + }; + if(functionNameHash == 256813) { // Legs_Crouch_Backward + return true; + }; + if(functionNameHash == 111101) { // Legs_Jump + return true; + }; + if(functionNameHash == 107471) { // Legs_Fall + return true; + }; + if(functionNameHash == 107451) { // Legs_Land + return true; + }; + if(functionNameHash == 105321) { // Legs_Dead + return true; + }; return __super::HasNativeFunction(functionName); }; @@ -7451,6 +7637,20 @@ intptr_t idAI::Invoke(const char *functionName, void *param1) { LinkScriptVariables(); return 0; }; + if(functionNameHash == 223943) { // InitNativeAIObject + InitNativeAIObject(); + return 0; + }; + if(functionNameHash == 286072) { // ShutdownNativeAIObject + ShutdownNativeAIObject(); + return 0; + }; + if(functionNameHash == 208452) { // GetNativeAIObject + return (intptr_t)GetNativeAIObject(); + }; + if(functionNameHash == 261430) { // GetNativeAIObjectName + return (intptr_t)GetNativeAIObjectName(); + }; if(functionNameHash == 173157) { // UpdateAIScript UpdateAIScript(); return 0; @@ -8026,6 +8226,18 @@ bool idAI::HasNativeFunction(const char *functionName) { if(functionNameHash == 249647) { // LinkScriptVariables return true; }; + if(functionNameHash == 223943) { // InitNativeAIObject + return true; + }; + if(functionNameHash == 286072) { // ShutdownNativeAIObject + return true; + }; + if(functionNameHash == 208452) { // GetNativeAIObject + return true; + }; + if(functionNameHash == 261430) { // GetNativeAIObjectName + return true; + }; if(functionNameHash == 173157) { // UpdateAIScript return true; }; @@ -8410,6 +8622,5495 @@ bool idAI_Vagary::HasNativeFunction(const char *functionName) { }; +intptr_t rvmAIObject::Invoke(const char *functionName, void *param1) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 91190) { // Destroy + Destroy(); + return 0; + }; + if(functionNameHash == 74281) { // Update + Update(); + return 0; + }; + if(functionNameHash == 96853) { // InAction + InAction(); + return 0; + }; + if(functionNameHash == 123982) { // ClearParms + ClearParms(*(stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 48107) { // Time + Time(); + return 0; + }; + if(functionNameHash == 109570) { // FrameTime + FrameTime(); + return 0; + }; + if(functionNameHash == 192306) { // InfluenceActive + InfluenceActive(); + return 0; + }; + if(functionNameHash == 75538) { // Player + return (intptr_t)Player(); + }; + if(functionNameHash == 132727) { // GetPainAnim + return (intptr_t)GetPainAnim(); + }; + if(functionNameHash == 108124) { // FaceEnemy + FaceEnemy(); + return 0; + }; + if(functionNameHash == 131961) { // FacingIdeal + FacingIdeal(); + return 0; + }; + if(functionNameHash == 101603) { // StopMove + StopMove(); + return 0; + }; + if(functionNameHash == 138052) { // MoveToEnemy + MoveToEnemy(); + return 0; + }; + if(functionNameHash == 217798) { // MoveToEnemyHeight + MoveToEnemyHeight(); + return 0; + }; + if(functionNameHash == 138160) { // MoveToCover + MoveToCover(); + return 0; + }; + if(functionNameHash == 74062) { // Wander + Wander(); + return 0; + }; + if(functionNameHash == 97687) { // MoveDone + MoveDone(); + return 0; + }; + if(functionNameHash == 129996) { // MoveStatus + MoveStatus(); + return 0; + }; + if(functionNameHash == 293721) { // DestinationUnreachable + DestinationUnreachable(); + return 0; + }; + if(functionNameHash == 97948) { // GetEnemy + return (intptr_t)GetEnemy(); + }; + if(functionNameHash == 123373) { // ClearEnemy + ClearEnemy(); + return 0; + }; + if(functionNameHash == 153033) { // EnemyVisible + EnemyVisible(); + return 0; + }; + if(functionNameHash == 114476) { // EnemyInFOV + EnemyInFOV(); + return 0; + }; + if(functionNameHash == 107792) { // EnemyDead + EnemyDead(); + return 0; + }; + if(functionNameHash == 123975) { // EnemyRange + EnemyRange(); + return 0; + }; + if(functionNameHash == 157832) { // CheckForMelee + CheckForMelee(); + return 0; + }; + if(functionNameHash == 133879) { // CanHitEnemy + CanHitEnemy(); + return 0; + }; + if(functionNameHash == 158750) { // CanReachEnemy + CanReachEnemy(); + return 0; + }; + if(functionNameHash == 137842) { // LocateEnemy + LocateEnemy(); + return 0; + }; + if(functionNameHash == 159686) { // GetCombatNode + return (intptr_t)GetCombatNode(); + }; + if(functionNameHash == 47285) { // Pain + Pain(); + return 0; + }; + if(functionNameHash == 112929) { // Activated + Activated(); + return 0; + }; + if(functionNameHash == 176524) { // ClearActivated + ClearActivated(); + return 0; + }; + if(functionNameHash == 168752) { // MovingForward + MovingForward(); + return 0; + }; + if(functionNameHash == 84508) { // Blocked + Blocked(); + return 0; + }; + if(functionNameHash == 174866) { // ObstacleInPath + ObstacleInPath(); + return 0; + }; + if(functionNameHash == 149923) { // GetTurnDelta + GetTurnDelta(); + return 0; + }; + if(functionNameHash == 129043) { // CurrentYaw + CurrentYaw(); + return 0; + }; + if(functionNameHash == 111360) { // GetOrigin + GetOrigin(); + return 0; + }; + if(functionNameHash == 137151) { // GetEnemyPos + GetEnemyPos(); + return 0; + }; + if(functionNameHash == 221287) { // GetLinearVelocity + GetLinearVelocity(); + return 0; + }; + if(functionNameHash == 108155) { // AttackEnd + AttackEnd(); + return 0; + }; + if(functionNameHash == 202788) { // TestChargeAttack + TestChargeAttack(); + return 0; + }; + if(functionNameHash == 176176) { // ClearFlyOffset + ClearFlyOffset(); + return 0; + }; + if(functionNameHash == 109164) { // GetHealth + GetHealth(); + return 0; + }; + if(functionNameHash == 134765) { // AllowDamage + AllowDamage(); + return 0; + }; + if(functionNameHash == 147843) { // IgnoreDamage + IgnoreDamage(); + return 0; + }; + if(functionNameHash == 135843) { // BecomeSolid + BecomeSolid(); + return 0; + }; + if(functionNameHash == 175070) { // BecomeNonSolid + BecomeNonSolid(); + return 0; + }; + if(functionNameHash == 85750) { // PreBurn + PreBurn(); + return 0; + }; + if(functionNameHash == 49108) { // Burn + Burn(); + return 0; + }; + if(functionNameHash == 110153) { // ClearBurn + ClearBurn(); + return 0; + }; + if(functionNameHash == 111017) { // HideOwner + HideOwner(); + return 0; + }; + if(functionNameHash == 115733) { // ShowOwner + ShowOwner(); + return 0; + }; + if(functionNameHash == 172048) { // CanBecomeSolid + CanBecomeSolid(); + return 0; + }; + if(functionNameHash == 162286) { // BecomeRagdoll + BecomeRagdoll(); + return 0; + }; + if(functionNameHash == 155714) { // StopThinking + StopThinking(); + return 0; + }; + if(functionNameHash == 142120) { // RemoveOwner + RemoveOwner(); + return 0; + }; + return __super::Invoke(functionName, param1); + +}; + +bool rvmAIObject::HasNativeFunction(const char *functionName) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 91190) { // Destroy + return true; + }; + if(functionNameHash == 74281) { // Update + return true; + }; + if(functionNameHash == 96853) { // InAction + return true; + }; + if(functionNameHash == 123982) { // ClearParms + return true; + }; + if(functionNameHash == 48107) { // Time + return true; + }; + if(functionNameHash == 109570) { // FrameTime + return true; + }; + if(functionNameHash == 192306) { // InfluenceActive + return true; + }; + if(functionNameHash == 75538) { // Player + return true; + }; + if(functionNameHash == 132727) { // GetPainAnim + return true; + }; + if(functionNameHash == 108124) { // FaceEnemy + return true; + }; + if(functionNameHash == 131961) { // FacingIdeal + return true; + }; + if(functionNameHash == 101603) { // StopMove + return true; + }; + if(functionNameHash == 138052) { // MoveToEnemy + return true; + }; + if(functionNameHash == 217798) { // MoveToEnemyHeight + return true; + }; + if(functionNameHash == 138160) { // MoveToCover + return true; + }; + if(functionNameHash == 74062) { // Wander + return true; + }; + if(functionNameHash == 97687) { // MoveDone + return true; + }; + if(functionNameHash == 129996) { // MoveStatus + return true; + }; + if(functionNameHash == 293721) { // DestinationUnreachable + return true; + }; + if(functionNameHash == 97948) { // GetEnemy + return true; + }; + if(functionNameHash == 123373) { // ClearEnemy + return true; + }; + if(functionNameHash == 153033) { // EnemyVisible + return true; + }; + if(functionNameHash == 114476) { // EnemyInFOV + return true; + }; + if(functionNameHash == 107792) { // EnemyDead + return true; + }; + if(functionNameHash == 123975) { // EnemyRange + return true; + }; + if(functionNameHash == 157832) { // CheckForMelee + return true; + }; + if(functionNameHash == 133879) { // CanHitEnemy + return true; + }; + if(functionNameHash == 158750) { // CanReachEnemy + return true; + }; + if(functionNameHash == 137842) { // LocateEnemy + return true; + }; + if(functionNameHash == 159686) { // GetCombatNode + return true; + }; + if(functionNameHash == 47285) { // Pain + return true; + }; + if(functionNameHash == 112929) { // Activated + return true; + }; + if(functionNameHash == 176524) { // ClearActivated + return true; + }; + if(functionNameHash == 168752) { // MovingForward + return true; + }; + if(functionNameHash == 84508) { // Blocked + return true; + }; + if(functionNameHash == 174866) { // ObstacleInPath + return true; + }; + if(functionNameHash == 149923) { // GetTurnDelta + return true; + }; + if(functionNameHash == 129043) { // CurrentYaw + return true; + }; + if(functionNameHash == 111360) { // GetOrigin + return true; + }; + if(functionNameHash == 137151) { // GetEnemyPos + return true; + }; + if(functionNameHash == 221287) { // GetLinearVelocity + return true; + }; + if(functionNameHash == 108155) { // AttackEnd + return true; + }; + if(functionNameHash == 202788) { // TestChargeAttack + return true; + }; + if(functionNameHash == 176176) { // ClearFlyOffset + return true; + }; + if(functionNameHash == 109164) { // GetHealth + return true; + }; + if(functionNameHash == 134765) { // AllowDamage + return true; + }; + if(functionNameHash == 147843) { // IgnoreDamage + return true; + }; + if(functionNameHash == 135843) { // BecomeSolid + return true; + }; + if(functionNameHash == 175070) { // BecomeNonSolid + return true; + }; + if(functionNameHash == 85750) { // PreBurn + return true; + }; + if(functionNameHash == 49108) { // Burn + return true; + }; + if(functionNameHash == 110153) { // ClearBurn + return true; + }; + if(functionNameHash == 111017) { // HideOwner + return true; + }; + if(functionNameHash == 115733) { // ShowOwner + return true; + }; + if(functionNameHash == 172048) { // CanBecomeSolid + return true; + }; + if(functionNameHash == 162286) { // BecomeRagdoll + return true; + }; + if(functionNameHash == 155714) { // StopThinking + return true; + }; + if(functionNameHash == 142120) { // RemoveOwner + return true; + }; + return __super::HasNativeFunction(functionName); + +}; + +intptr_t rvmMonsterBase::Invoke(const char *functionName, void *param1) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 223655) { // Torso_CustomCycle + Torso_CustomCycle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 209238) { // Torso_CustomAnim + Torso_CustomAnim((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 141535) { // Torso_Sight + Torso_Sight((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 138382) { // Torso_Death + Torso_Death((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 124942) { // Torso_Idle + Torso_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 107329) { // Legs_Idle + Legs_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 120665) { // Legs_Death + Legs_Death((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 139384) { // state_Begin + state_Begin((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 171989) { // state_Spawner + state_Spawner((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 201507) { // state_Resurrect + state_Resurrect((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 153871) { // state_Killed + state_Killed((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 124042) { // state_Dead + state_Dead((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 154038) { // state_Combat + state_Combat((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 209369) { // state_LostCombat + state_LostCombat((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 339402) { // state_FollowAlternatePath + state_FollowAlternatePath((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 173364) { // monster_begin + monster_begin((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 187794) { // wait_for_enemy + wait_for_enemy((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 146357) { // sight_enemy + sight_enemy((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 201338) { // walk_on_trigger + walk_on_trigger((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 200485) { // wake_on_trigger + wake_on_trigger((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 172196) { // wake_on_enemy + wake_on_enemy((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 240700) { // wake_on_attackcone + wake_on_attackcone((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 312442) { // idle_followPathEntities + idle_followPathEntities((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 145496) { // path_corner + path_corner((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 116228) { // path_anim + path_anim((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 184852) { // path_cycleanim + path_cycleanim((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 120720) { // path_turn + path_turn((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 118220) { // path_wait + path_wait((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 261685) { // path_waitfortrigger + path_waitfortrigger((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 114825) { // path_hide + path_hide((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 119736) { // path_show + path_show((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 143315) { // path_attack + path_attack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 170793) { // combat_wander + combat_wander((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 244815) { // combat_turret_node + combat_turret_node((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 238805) { // combat_attack_cone + combat_attack_cone((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 168623) { // combat_ainode + combat_ainode((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 169136) { // check_attacks + check_attacks(); + return 0; + }; + if(functionNameHash == 223066) { // checkTurretAttack + checkTurretAttack(); + return 0; + }; + if(functionNameHash == 305792) { // trigger_wakeup_targets + trigger_wakeup_targets(); + return 0; + }; + if(functionNameHash == 200549) { // archvile_minion + archvile_minion(); + return 0; + }; + if(functionNameHash == 174149) { // can_resurrect + can_resurrect(); + return 0; + }; + if(functionNameHash == 127746) { // enemy_dead + enemy_dead(); + return 0; + }; + if(functionNameHash == 166161) { // check_blocked + check_blocked(); + return 0; + }; + if(functionNameHash == 154499) { // combat_chase + combat_chase(); + return 0; + }; + if(functionNameHash == 145825) { // combat_lost + combat_lost(); + return 0; + }; + if(functionNameHash == 332825) { // monster_base_lost_combat + monster_base_lost_combat(); + return 0; + }; + if(functionNameHash == 295467) { // follow_alternate_path1 + follow_alternate_path1(); + return 0; + }; + if(functionNameHash == 295607) { // follow_alternate_path2 + follow_alternate_path2(); + return 0; + }; + if(functionNameHash == 295747) { // follow_alternate_path3 + follow_alternate_path3(); + return 0; + }; + return __super::Invoke(functionName, param1); + +}; + +bool rvmMonsterBase::HasNativeFunction(const char *functionName) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 223655) { // Torso_CustomCycle + return true; + }; + if(functionNameHash == 209238) { // Torso_CustomAnim + return true; + }; + if(functionNameHash == 141535) { // Torso_Sight + return true; + }; + if(functionNameHash == 138382) { // Torso_Death + return true; + }; + if(functionNameHash == 124942) { // Torso_Idle + return true; + }; + if(functionNameHash == 107329) { // Legs_Idle + return true; + }; + if(functionNameHash == 120665) { // Legs_Death + return true; + }; + if(functionNameHash == 139384) { // state_Begin + return true; + }; + if(functionNameHash == 171989) { // state_Spawner + return true; + }; + if(functionNameHash == 201507) { // state_Resurrect + return true; + }; + if(functionNameHash == 153871) { // state_Killed + return true; + }; + if(functionNameHash == 124042) { // state_Dead + return true; + }; + if(functionNameHash == 154038) { // state_Combat + return true; + }; + if(functionNameHash == 209369) { // state_LostCombat + return true; + }; + if(functionNameHash == 339402) { // state_FollowAlternatePath + return true; + }; + if(functionNameHash == 173364) { // monster_begin + return true; + }; + if(functionNameHash == 187794) { // wait_for_enemy + return true; + }; + if(functionNameHash == 146357) { // sight_enemy + return true; + }; + if(functionNameHash == 201338) { // walk_on_trigger + return true; + }; + if(functionNameHash == 200485) { // wake_on_trigger + return true; + }; + if(functionNameHash == 172196) { // wake_on_enemy + return true; + }; + if(functionNameHash == 240700) { // wake_on_attackcone + return true; + }; + if(functionNameHash == 312442) { // idle_followPathEntities + return true; + }; + if(functionNameHash == 145496) { // path_corner + return true; + }; + if(functionNameHash == 116228) { // path_anim + return true; + }; + if(functionNameHash == 184852) { // path_cycleanim + return true; + }; + if(functionNameHash == 120720) { // path_turn + return true; + }; + if(functionNameHash == 118220) { // path_wait + return true; + }; + if(functionNameHash == 261685) { // path_waitfortrigger + return true; + }; + if(functionNameHash == 114825) { // path_hide + return true; + }; + if(functionNameHash == 119736) { // path_show + return true; + }; + if(functionNameHash == 143315) { // path_attack + return true; + }; + if(functionNameHash == 170793) { // combat_wander + return true; + }; + if(functionNameHash == 244815) { // combat_turret_node + return true; + }; + if(functionNameHash == 238805) { // combat_attack_cone + return true; + }; + if(functionNameHash == 168623) { // combat_ainode + return true; + }; + if(functionNameHash == 169136) { // check_attacks + return true; + }; + if(functionNameHash == 223066) { // checkTurretAttack + return true; + }; + if(functionNameHash == 305792) { // trigger_wakeup_targets + return true; + }; + if(functionNameHash == 200549) { // archvile_minion + return true; + }; + if(functionNameHash == 174149) { // can_resurrect + return true; + }; + if(functionNameHash == 127746) { // enemy_dead + return true; + }; + if(functionNameHash == 166161) { // check_blocked + return true; + }; + if(functionNameHash == 154499) { // combat_chase + return true; + }; + if(functionNameHash == 145825) { // combat_lost + return true; + }; + if(functionNameHash == 332825) { // monster_base_lost_combat + return true; + }; + if(functionNameHash == 295467) { // follow_alternate_path1 + return true; + }; + if(functionNameHash == 295607) { // follow_alternate_path2 + return true; + }; + if(functionNameHash == 295747) { // follow_alternate_path3 + return true; + }; + return __super::HasNativeFunction(functionName); + +}; + +intptr_t rvmMonsterZombieBase::Invoke(const char *functionName, void *param1) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 200549) { // archvile_minion + archvile_minion(); + return 0; + }; + if(functionNameHash == 174149) { // can_resurrect + can_resurrect(); + return 0; + }; + if(functionNameHash == 153871) { // state_Killed + state_Killed((stateParms_t *)param1); + return 0; + }; + return __super::Invoke(functionName, param1); + +}; + +bool rvmMonsterZombieBase::HasNativeFunction(const char *functionName) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 200549) { // archvile_minion + return true; + }; + if(functionNameHash == 174149) { // can_resurrect + return true; + }; + if(functionNameHash == 153871) { // state_Killed + return true; + }; + return __super::HasNativeFunction(functionName); + +}; + +intptr_t rvmMonsterZombie::Invoke(const char *functionName, void *param1) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + Torso_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126210) { // Torso_Pain + Torso_Pain((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 218167) { // Torso_MeleeAttack + Torso_MeleeAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 107329) { // Legs_Idle + Legs_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 109452) { // Legs_Walk + Legs_Walk((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 97995) { // Legs_Run + Legs_Run((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 139384) { // state_Begin + state_Begin((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126066) { // state_Idle + state_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 154980) { // combat_melee + combat_melee((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 169136) { // check_attacks + check_attacks(); + return 0; + }; + return __super::Invoke(functionName, param1); + +}; + +bool rvmMonsterZombie::HasNativeFunction(const char *functionName) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + return true; + }; + if(functionNameHash == 126210) { // Torso_Pain + return true; + }; + if(functionNameHash == 218167) { // Torso_MeleeAttack + return true; + }; + if(functionNameHash == 107329) { // Legs_Idle + return true; + }; + if(functionNameHash == 109452) { // Legs_Walk + return true; + }; + if(functionNameHash == 97995) { // Legs_Run + return true; + }; + if(functionNameHash == 139384) { // state_Begin + return true; + }; + if(functionNameHash == 126066) { // state_Idle + return true; + }; + if(functionNameHash == 154980) { // combat_melee + return true; + }; + if(functionNameHash == 169136) { // check_attacks + return true; + }; + return __super::HasNativeFunction(functionName); + +}; + +intptr_t rvmMonsterZombieBernie::Invoke(const char *functionName, void *param1) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + Torso_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126210) { // Torso_Pain + Torso_Pain((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 218167) { // Torso_MeleeAttack + Torso_MeleeAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 107329) { // Legs_Idle + Legs_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 109452) { // Legs_Walk + Legs_Walk((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 139384) { // state_Begin + state_Begin((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126066) { // state_Idle + state_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 154980) { // combat_melee + combat_melee((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 169136) { // check_attacks + check_attacks(); + return 0; + }; + return __super::Invoke(functionName, param1); + +}; + +bool rvmMonsterZombieBernie::HasNativeFunction(const char *functionName) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + return true; + }; + if(functionNameHash == 126210) { // Torso_Pain + return true; + }; + if(functionNameHash == 218167) { // Torso_MeleeAttack + return true; + }; + if(functionNameHash == 107329) { // Legs_Idle + return true; + }; + if(functionNameHash == 109452) { // Legs_Walk + return true; + }; + if(functionNameHash == 139384) { // state_Begin + return true; + }; + if(functionNameHash == 126066) { // state_Idle + return true; + }; + if(functionNameHash == 154980) { // combat_melee + return true; + }; + if(functionNameHash == 169136) { // check_attacks + return true; + }; + return __super::HasNativeFunction(functionName); + +}; + +intptr_t rvmMonsterZombieMorgue::Invoke(const char *functionName, void *param1) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + Torso_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126210) { // Torso_Pain + Torso_Pain((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 218167) { // Torso_MeleeAttack + Torso_MeleeAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 107329) { // Legs_Idle + Legs_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 97995) { // Legs_Run + Legs_Run((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 139384) { // state_Begin + state_Begin((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126066) { // state_Idle + state_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 154980) { // combat_melee + combat_melee((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 169136) { // check_attacks + check_attacks(); + return 0; + }; + return __super::Invoke(functionName, param1); + +}; + +bool rvmMonsterZombieMorgue::HasNativeFunction(const char *functionName) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + return true; + }; + if(functionNameHash == 126210) { // Torso_Pain + return true; + }; + if(functionNameHash == 218167) { // Torso_MeleeAttack + return true; + }; + if(functionNameHash == 107329) { // Legs_Idle + return true; + }; + if(functionNameHash == 97995) { // Legs_Run + return true; + }; + if(functionNameHash == 139384) { // state_Begin + return true; + }; + if(functionNameHash == 126066) { // state_Idle + return true; + }; + if(functionNameHash == 154980) { // combat_melee + return true; + }; + if(functionNameHash == 169136) { // check_attacks + return true; + }; + return __super::HasNativeFunction(functionName); + +}; + +intptr_t rvmMonsterZombieSawyer::Invoke(const char *functionName, void *param1) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + Torso_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126210) { // Torso_Pain + Torso_Pain((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 218167) { // Torso_MeleeAttack + Torso_MeleeAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 107329) { // Legs_Idle + Legs_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 97995) { // Legs_Run + Legs_Run((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 139384) { // state_Begin + state_Begin((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126066) { // state_Idle + state_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 154980) { // combat_melee + combat_melee((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 169136) { // check_attacks + check_attacks(); + return 0; + }; + if(functionNameHash == 148229) { // start_smoke + start_smoke(); + return 0; + }; + if(functionNameHash == 159868) { // start_attack + start_attack(); + return 0; + }; + if(functionNameHash == 128215) { // end_attack + end_attack(); + return 0; + }; + return __super::Invoke(functionName, param1); + +}; + +bool rvmMonsterZombieSawyer::HasNativeFunction(const char *functionName) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + return true; + }; + if(functionNameHash == 126210) { // Torso_Pain + return true; + }; + if(functionNameHash == 218167) { // Torso_MeleeAttack + return true; + }; + if(functionNameHash == 107329) { // Legs_Idle + return true; + }; + if(functionNameHash == 97995) { // Legs_Run + return true; + }; + if(functionNameHash == 139384) { // state_Begin + return true; + }; + if(functionNameHash == 126066) { // state_Idle + return true; + }; + if(functionNameHash == 154980) { // combat_melee + return true; + }; + if(functionNameHash == 169136) { // check_attacks + return true; + }; + if(functionNameHash == 148229) { // start_smoke + return true; + }; + if(functionNameHash == 159868) { // start_attack + return true; + }; + if(functionNameHash == 128215) { // end_attack + return true; + }; + return __super::HasNativeFunction(functionName); + +}; + +intptr_t rvmMonsterZombieCommandoTentacle::Invoke(const char *functionName, void *param1) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + Torso_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126210) { // Torso_Pain + Torso_Pain((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 218167) { // Torso_MeleeAttack + Torso_MeleeAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 262850) { // Torso_TentacleAttack + Torso_TentacleAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 107329) { // Legs_Idle + Legs_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 109452) { // Legs_Walk + Legs_Walk((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 97995) { // Legs_Run + Legs_Run((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 139384) { // state_Begin + state_Begin((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126066) { // state_Idle + state_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 198191) { // combat_tentacle + combat_tentacle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 154980) { // combat_melee + combat_melee((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 169136) { // check_attacks + check_attacks(); + return 0; + }; + if(functionNameHash == 287526) { // tentacle_attack_start + tentacle_attack_start(); + return 0; + }; + if(functionNameHash == 253375) { // tentacle_attack_end + tentacle_attack_end(); + return 0; + }; + return __super::Invoke(functionName, param1); + +}; + +bool rvmMonsterZombieCommandoTentacle::HasNativeFunction(const char *functionName) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + return true; + }; + if(functionNameHash == 126210) { // Torso_Pain + return true; + }; + if(functionNameHash == 218167) { // Torso_MeleeAttack + return true; + }; + if(functionNameHash == 262850) { // Torso_TentacleAttack + return true; + }; + if(functionNameHash == 107329) { // Legs_Idle + return true; + }; + if(functionNameHash == 109452) { // Legs_Walk + return true; + }; + if(functionNameHash == 97995) { // Legs_Run + return true; + }; + if(functionNameHash == 139384) { // state_Begin + return true; + }; + if(functionNameHash == 126066) { // state_Idle + return true; + }; + if(functionNameHash == 198191) { // combat_tentacle + return true; + }; + if(functionNameHash == 154980) { // combat_melee + return true; + }; + if(functionNameHash == 169136) { // check_attacks + return true; + }; + if(functionNameHash == 287526) { // tentacle_attack_start + return true; + }; + if(functionNameHash == 253375) { // tentacle_attack_end + return true; + }; + return __super::HasNativeFunction(functionName); + +}; + +intptr_t rvmMonsterZombieCommandoCGun::Invoke(const char *functionName, void *param1) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + Torso_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126210) { // Torso_Pain + Torso_Pain((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 218798) { // Torso_RangeAttack + Torso_RangeAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 239164) { // Torso_TurretAttack + Torso_TurretAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 234846) { // Torso_CrouchAttack + Torso_CrouchAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 107329) { // Legs_Idle + Legs_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 109452) { // Legs_Walk + Legs_Walk((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 97995) { // Legs_Run + Legs_Run((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 171866) { // Legs_DodgeLeft + Legs_DodgeLeft((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 187135) { // Legs_DodgeRight + Legs_DodgeRight((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 162297) { // Legs_StepLeft + Legs_StepLeft((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 177451) { // Legs_StepRight + Legs_StepRight((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 139384) { // state_Begin + state_Begin((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126066) { // state_Idle + state_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 157412) { // stand_attack + stand_attack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 171316) { // crouch_attack + crouch_attack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 223812) { // combat_dodge_left + combat_dodge_left((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 239426) { // combat_dodge_right + combat_dodge_right((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 169136) { // check_attacks + check_attacks(); + return 0; + }; + return __super::Invoke(functionName, param1); + +}; + +bool rvmMonsterZombieCommandoCGun::HasNativeFunction(const char *functionName) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + return true; + }; + if(functionNameHash == 126210) { // Torso_Pain + return true; + }; + if(functionNameHash == 218798) { // Torso_RangeAttack + return true; + }; + if(functionNameHash == 239164) { // Torso_TurretAttack + return true; + }; + if(functionNameHash == 234846) { // Torso_CrouchAttack + return true; + }; + if(functionNameHash == 107329) { // Legs_Idle + return true; + }; + if(functionNameHash == 109452) { // Legs_Walk + return true; + }; + if(functionNameHash == 97995) { // Legs_Run + return true; + }; + if(functionNameHash == 171866) { // Legs_DodgeLeft + return true; + }; + if(functionNameHash == 187135) { // Legs_DodgeRight + return true; + }; + if(functionNameHash == 162297) { // Legs_StepLeft + return true; + }; + if(functionNameHash == 177451) { // Legs_StepRight + return true; + }; + if(functionNameHash == 139384) { // state_Begin + return true; + }; + if(functionNameHash == 126066) { // state_Idle + return true; + }; + if(functionNameHash == 157412) { // stand_attack + return true; + }; + if(functionNameHash == 171316) { // crouch_attack + return true; + }; + if(functionNameHash == 223812) { // combat_dodge_left + return true; + }; + if(functionNameHash == 239426) { // combat_dodge_right + return true; + }; + if(functionNameHash == 169136) { // check_attacks + return true; + }; + return __super::HasNativeFunction(functionName); + +}; + +intptr_t rvmMonsterZombieSecurityPistol::Invoke(const char *functionName, void *param1) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + Torso_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126210) { // Torso_Pain + Torso_Pain((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 218798) { // Torso_RangeAttack + Torso_RangeAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 239164) { // Torso_TurretAttack + Torso_TurretAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 234846) { // Torso_CrouchAttack + Torso_CrouchAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 107329) { // Legs_Idle + Legs_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 109452) { // Legs_Walk + Legs_Walk((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 97995) { // Legs_Run + Legs_Run((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 171866) { // Legs_DodgeLeft + Legs_DodgeLeft((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 187135) { // Legs_DodgeRight + Legs_DodgeRight((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 162297) { // Legs_StepLeft + Legs_StepLeft((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 177451) { // Legs_StepRight + Legs_StepRight((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 139384) { // state_Begin + state_Begin((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126066) { // state_Idle + state_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 157412) { // stand_attack + stand_attack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 171316) { // crouch_attack + crouch_attack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 223812) { // combat_dodge_left + combat_dodge_left((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 239426) { // combat_dodge_right + combat_dodge_right((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 169136) { // check_attacks + check_attacks(); + return 0; + }; + return __super::Invoke(functionName, param1); + +}; + +bool rvmMonsterZombieSecurityPistol::HasNativeFunction(const char *functionName) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + return true; + }; + if(functionNameHash == 126210) { // Torso_Pain + return true; + }; + if(functionNameHash == 218798) { // Torso_RangeAttack + return true; + }; + if(functionNameHash == 239164) { // Torso_TurretAttack + return true; + }; + if(functionNameHash == 234846) { // Torso_CrouchAttack + return true; + }; + if(functionNameHash == 107329) { // Legs_Idle + return true; + }; + if(functionNameHash == 109452) { // Legs_Walk + return true; + }; + if(functionNameHash == 97995) { // Legs_Run + return true; + }; + if(functionNameHash == 171866) { // Legs_DodgeLeft + return true; + }; + if(functionNameHash == 187135) { // Legs_DodgeRight + return true; + }; + if(functionNameHash == 162297) { // Legs_StepLeft + return true; + }; + if(functionNameHash == 177451) { // Legs_StepRight + return true; + }; + if(functionNameHash == 139384) { // state_Begin + return true; + }; + if(functionNameHash == 126066) { // state_Idle + return true; + }; + if(functionNameHash == 157412) { // stand_attack + return true; + }; + if(functionNameHash == 171316) { // crouch_attack + return true; + }; + if(functionNameHash == 223812) { // combat_dodge_left + return true; + }; + if(functionNameHash == 239426) { // combat_dodge_right + return true; + }; + if(functionNameHash == 169136) { // check_attacks + return true; + }; + return __super::HasNativeFunction(functionName); + +}; + +intptr_t rvmCharacter::Invoke(const char *functionName, void *param1) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 91190) { // Destroy + Destroy(); + return 0; + }; + if(functionNameHash == 104297) { // Head_Idle + Head_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 146595) { // Anim_Disable + Anim_Disable((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 102289) { // Head_Dead + Head_Dead((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 209868) { // Head_TalkHeadOnly + Head_TalkHeadOnly((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 120665) { // Legs_Death + Legs_Death((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 107329) { // Legs_Idle + Legs_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 109452) { // Legs_Walk + Legs_Walk((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 214721) { // Legs_Walk_Special + Legs_Walk_Special((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 97995) { // Legs_Run + Legs_Run((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 163930) { // Legs_TurnLeft + Legs_TurnLeft((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 179084) { // Legs_TurnRight + Legs_TurnRight((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 123938) { // Legs_Cower + Legs_Cower((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 205293) { // Legs_CustomCycle + Legs_CustomCycle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 190983) { // Legs_CustomAnim + Legs_CustomAnim((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 171989) { // state_Spawner + state_Spawner((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 142805) { // state_Cower + state_Cower((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 139384) { // state_Begin + state_Begin((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 223461) { // state_TalkTrigger + state_TalkTrigger((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126066) { // state_Idle + state_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 153871) { // state_Killed + state_Killed((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 129322) { // idle_stand + idle_stand((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 312442) { // idle_followPathEntities + idle_followPathEntities((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 115276) { // idle_talk + idle_talk((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 149689) { // checkBlocked + checkBlocked((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 145496) { // path_corner + path_corner((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 116228) { // path_anim + path_anim((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 184852) { // path_cycleanim + path_cycleanim((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 120720) { // path_turn + path_turn((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 118220) { // path_wait + path_wait((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 261685) { // path_waitfortrigger + path_waitfortrigger((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 114825) { // path_hide + path_hide((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 119736) { // path_show + path_show((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 336958) { // path_conversation_listen + path_conversation_listen((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 232666) { // path_conversation + path_conversation((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 168355) { // path_headanim + path_headanim((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 271154) { // path_waitforheadanim + path_waitforheadanim((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 117083) { // path_talk + path_talk((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 256437) { // path_talk_triggered + path_talk_triggered((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 231166) { // path_talk_primary + path_talk_primary((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 258035) { // path_talk_secondary + path_talk_secondary((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 145599) { // path_lookat + path_lookat((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 339402) { // state_FollowAlternatePath + state_FollowAlternatePath((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 146595) { // Anim_Disable + Anim_Disable(); + return 0; + }; + if(functionNameHash == 142609) { // check_cower + check_cower(); + return 0; + }; + if(functionNameHash == 145048) { // target_talk + target_talk(); + return 0; + }; + if(functionNameHash == 173008) { // say_triggered + say_triggered(); + return 0; + }; + if(functionNameHash == 148847) { // say_primary + say_primary(); + return 0; + }; + if(functionNameHash == 174540) { // say_secondary + say_secondary(); + return 0; + }; + if(functionNameHash == 154264) { // inCustomAnim + inCustomAnim(); + return 0; + }; + if(functionNameHash == 166912) { // endCustomAnim + endCustomAnim(); + return 0; + }; + if(functionNameHash == 221046) { // finishPathCommand + finishPathCommand(); + return 0; + }; + if(functionNameHash == 217771) { // cancelPathCommand + cancelPathCommand(); + return 0; + }; + if(functionNameHash == 138627) { // getOutOfWay + getOutOfWay(); + return 0; + }; + if(functionNameHash == 233868) { // skip_conversation + skip_conversation(); + return 0; + }; + if(functionNameHash == 349616) { // break_out_of_conversation + break_out_of_conversation(); + return 0; + }; + if(functionNameHash == 295467) { // follow_alternate_path1 + follow_alternate_path1(); + return 0; + }; + if(functionNameHash == 295607) { // follow_alternate_path2 + follow_alternate_path2(); + return 0; + }; + if(functionNameHash == 295747) { // follow_alternate_path3 + follow_alternate_path3(); + return 0; + }; + if(functionNameHash == 200978) { // disable_turning + disable_turning(); + return 0; + }; + if(functionNameHash == 186508) { // enable_turning + enable_turning(); + return 0; + }; + return __super::Invoke(functionName, param1); + +}; + +bool rvmCharacter::HasNativeFunction(const char *functionName) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 91190) { // Destroy + return true; + }; + if(functionNameHash == 104297) { // Head_Idle + return true; + }; + if(functionNameHash == 146595) { // Anim_Disable + return true; + }; + if(functionNameHash == 102289) { // Head_Dead + return true; + }; + if(functionNameHash == 209868) { // Head_TalkHeadOnly + return true; + }; + if(functionNameHash == 120665) { // Legs_Death + return true; + }; + if(functionNameHash == 107329) { // Legs_Idle + return true; + }; + if(functionNameHash == 109452) { // Legs_Walk + return true; + }; + if(functionNameHash == 214721) { // Legs_Walk_Special + return true; + }; + if(functionNameHash == 97995) { // Legs_Run + return true; + }; + if(functionNameHash == 163930) { // Legs_TurnLeft + return true; + }; + if(functionNameHash == 179084) { // Legs_TurnRight + return true; + }; + if(functionNameHash == 123938) { // Legs_Cower + return true; + }; + if(functionNameHash == 205293) { // Legs_CustomCycle + return true; + }; + if(functionNameHash == 190983) { // Legs_CustomAnim + return true; + }; + if(functionNameHash == 171989) { // state_Spawner + return true; + }; + if(functionNameHash == 142805) { // state_Cower + return true; + }; + if(functionNameHash == 139384) { // state_Begin + return true; + }; + if(functionNameHash == 223461) { // state_TalkTrigger + return true; + }; + if(functionNameHash == 126066) { // state_Idle + return true; + }; + if(functionNameHash == 153871) { // state_Killed + return true; + }; + if(functionNameHash == 129322) { // idle_stand + return true; + }; + if(functionNameHash == 312442) { // idle_followPathEntities + return true; + }; + if(functionNameHash == 115276) { // idle_talk + return true; + }; + if(functionNameHash == 149689) { // checkBlocked + return true; + }; + if(functionNameHash == 145496) { // path_corner + return true; + }; + if(functionNameHash == 116228) { // path_anim + return true; + }; + if(functionNameHash == 184852) { // path_cycleanim + return true; + }; + if(functionNameHash == 120720) { // path_turn + return true; + }; + if(functionNameHash == 118220) { // path_wait + return true; + }; + if(functionNameHash == 261685) { // path_waitfortrigger + return true; + }; + if(functionNameHash == 114825) { // path_hide + return true; + }; + if(functionNameHash == 119736) { // path_show + return true; + }; + if(functionNameHash == 336958) { // path_conversation_listen + return true; + }; + if(functionNameHash == 232666) { // path_conversation + return true; + }; + if(functionNameHash == 168355) { // path_headanim + return true; + }; + if(functionNameHash == 271154) { // path_waitforheadanim + return true; + }; + if(functionNameHash == 117083) { // path_talk + return true; + }; + if(functionNameHash == 256437) { // path_talk_triggered + return true; + }; + if(functionNameHash == 231166) { // path_talk_primary + return true; + }; + if(functionNameHash == 258035) { // path_talk_secondary + return true; + }; + if(functionNameHash == 145599) { // path_lookat + return true; + }; + if(functionNameHash == 339402) { // state_FollowAlternatePath + return true; + }; + if(functionNameHash == 146595) { // Anim_Disable + return true; + }; + if(functionNameHash == 142609) { // check_cower + return true; + }; + if(functionNameHash == 145048) { // target_talk + return true; + }; + if(functionNameHash == 173008) { // say_triggered + return true; + }; + if(functionNameHash == 148847) { // say_primary + return true; + }; + if(functionNameHash == 174540) { // say_secondary + return true; + }; + if(functionNameHash == 154264) { // inCustomAnim + return true; + }; + if(functionNameHash == 166912) { // endCustomAnim + return true; + }; + if(functionNameHash == 221046) { // finishPathCommand + return true; + }; + if(functionNameHash == 217771) { // cancelPathCommand + return true; + }; + if(functionNameHash == 138627) { // getOutOfWay + return true; + }; + if(functionNameHash == 233868) { // skip_conversation + return true; + }; + if(functionNameHash == 349616) { // break_out_of_conversation + return true; + }; + if(functionNameHash == 295467) { // follow_alternate_path1 + return true; + }; + if(functionNameHash == 295607) { // follow_alternate_path2 + return true; + }; + if(functionNameHash == 295747) { // follow_alternate_path3 + return true; + }; + if(functionNameHash == 200978) { // disable_turning + return true; + }; + if(functionNameHash == 186508) { // enable_turning + return true; + }; + return __super::HasNativeFunction(functionName); + +}; + +intptr_t rvmAICharacterProne::Invoke(const char *functionName, void *param1) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 91190) { // Destroy + Destroy(); + return 0; + }; + if(functionNameHash == 122918) { // Torso_Dead + Torso_Dead((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 175797) { // Torso_PlayDead + Torso_PlayDead((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 124942) { // Torso_Idle + Torso_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 224502) { // Torso_TalkPrimary + Torso_TalkPrimary((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 222337) { // Torso_TalkTrigger + Torso_TalkTrigger((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 251371) { // Torso_TalkSecondary + Torso_TalkSecondary((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126210) { // Torso_Pain + Torso_Pain((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126066) { // state_Idle + state_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 127334) { // state_Pain + state_Pain((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 124042) { // state_Dead + state_Dead((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 153871) { // state_Killed + state_Killed((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 115276) { // idle_talk + idle_talk((stateParms_t *)param1); + return 0; + }; + return __super::Invoke(functionName, param1); + +}; + +bool rvmAICharacterProne::HasNativeFunction(const char *functionName) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 91190) { // Destroy + return true; + }; + if(functionNameHash == 122918) { // Torso_Dead + return true; + }; + if(functionNameHash == 175797) { // Torso_PlayDead + return true; + }; + if(functionNameHash == 124942) { // Torso_Idle + return true; + }; + if(functionNameHash == 224502) { // Torso_TalkPrimary + return true; + }; + if(functionNameHash == 222337) { // Torso_TalkTrigger + return true; + }; + if(functionNameHash == 251371) { // Torso_TalkSecondary + return true; + }; + if(functionNameHash == 126210) { // Torso_Pain + return true; + }; + if(functionNameHash == 126066) { // state_Idle + return true; + }; + if(functionNameHash == 127334) { // state_Pain + return true; + }; + if(functionNameHash == 124042) { // state_Dead + return true; + }; + if(functionNameHash == 153871) { // state_Killed + return true; + }; + if(functionNameHash == 115276) { // idle_talk + return true; + }; + return __super::HasNativeFunction(functionName); + +}; + +intptr_t rvmFollower::Invoke(const char *functionName, void *param1) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 91190) { // Destroy + Destroy(); + return 0; + }; + if(functionNameHash == 223655) { // Torso_CustomCycle + Torso_CustomCycle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 209238) { // Torso_CustomAnim + Torso_CustomAnim((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 138382) { // Torso_Death + Torso_Death((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 124942) { // Torso_Idle + Torso_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126210) { // Torso_Pain + Torso_Pain((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 120665) { // Legs_Death + Legs_Death((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 107329) { // Legs_Idle + Legs_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 109452) { // Legs_Walk + Legs_Walk((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 97995) { // Legs_Run + Legs_Run((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 163930) { // Legs_TurnLeft + Legs_TurnLeft((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 179084) { // Legs_TurnRight + Legs_TurnRight((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126066) { // state_Idle + state_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 153871) { // state_Killed + state_Killed((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 157762) { // state_Follow + state_Follow((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 115214) { // getCloser + getCloser((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 218626) { // should_turn_left + should_turn_left(); + return 0; + }; + if(functionNameHash == 234125) { // should_turn_right + should_turn_right(); + return 0; + }; + return __super::Invoke(functionName, param1); + +}; + +bool rvmFollower::HasNativeFunction(const char *functionName) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 91190) { // Destroy + return true; + }; + if(functionNameHash == 223655) { // Torso_CustomCycle + return true; + }; + if(functionNameHash == 209238) { // Torso_CustomAnim + return true; + }; + if(functionNameHash == 138382) { // Torso_Death + return true; + }; + if(functionNameHash == 124942) { // Torso_Idle + return true; + }; + if(functionNameHash == 126210) { // Torso_Pain + return true; + }; + if(functionNameHash == 120665) { // Legs_Death + return true; + }; + if(functionNameHash == 107329) { // Legs_Idle + return true; + }; + if(functionNameHash == 109452) { // Legs_Walk + return true; + }; + if(functionNameHash == 97995) { // Legs_Run + return true; + }; + if(functionNameHash == 163930) { // Legs_TurnLeft + return true; + }; + if(functionNameHash == 179084) { // Legs_TurnRight + return true; + }; + if(functionNameHash == 126066) { // state_Idle + return true; + }; + if(functionNameHash == 153871) { // state_Killed + return true; + }; + if(functionNameHash == 157762) { // state_Follow + return true; + }; + if(functionNameHash == 115214) { // getCloser + return true; + }; + if(functionNameHash == 218626) { // should_turn_left + return true; + }; + if(functionNameHash == 234125) { // should_turn_right + return true; + }; + return __super::HasNativeFunction(functionName); + +}; + +intptr_t rvmCharSentry::Invoke(const char *functionName, void *param1) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 91190) { // Destroy + Destroy(); + return 0; + }; + if(functionNameHash == 138382) { // Torso_Death + Torso_Death((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 124942) { // Torso_Idle + Torso_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126210) { // Torso_Pain + Torso_Pain((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 218798) { // Torso_RangeAttack + Torso_RangeAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 120665) { // Legs_Death + Legs_Death((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 107329) { // Legs_Idle + Legs_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 109452) { // Legs_Walk + Legs_Walk((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 108205) { // Legs_Fold + Legs_Fold((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 134033) { // Legs_Folded + Legs_Folded((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 137305) { // Legs_Unfold + Legs_Unfold((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 148356) { // Legs_Hanging + Legs_Hanging((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 163930) { // Legs_TurnLeft + Legs_TurnLeft((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 179084) { // Legs_TurnRight + Legs_TurnRight((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 139384) { // state_Begin + state_Begin((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 357100) { // updatePlayerPositionThread + updatePlayerPositionThread((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 276015) { // path_sentry_light_on + path_sentry_light_on((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 289089) { // path_sentry_light_off + path_sentry_light_off((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 281382) { // path_sentry_shutdown + path_sentry_shutdown((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 322265) { // path_sentry_unlock_door + path_sentry_unlock_door((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 145496) { // path_corner + path_corner((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 318458) { // path_sentry_lead_player + path_sentry_lead_player((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 352154) { // path_sentry_ignore_player + path_sentry_ignore_player((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 153871) { // state_Killed + state_Killed((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 265173) { // state_WaitForTrigger + state_WaitForTrigger((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126066) { // state_Idle + state_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 210410) { // state_FollowPath + state_FollowPath((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 128977) { // state_Wait + state_Wait((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 194527) { // state_GetCloser + state_GetCloser((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 275280) { // state_CantReachPlayer + state_CantReachPlayer((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 125042) { // state_Lead + state_Lead((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 208195) { // state_FindPlayer + state_FindPlayer((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 154038) { // state_Combat + state_Combat((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 154499) { // combat_chase + combat_chase((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 155616) { // combat_range + combat_range((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 216270) { // spawn_flashlight + spawn_flashlight(); + return 0; + }; + if(functionNameHash == 184719) { // flashlight_off + flashlight_off(); + return 0; + }; + if(functionNameHash == 172303) { // flashlight_on + flashlight_on(); + return 0; + }; + if(functionNameHash == 323206) { // checkDestinationDistance + checkDestinationDistance(); + return 0; + }; + if(functionNameHash == 273237) { // find_attack_position + find_attack_position(); + return 0; + }; + if(functionNameHash == 169136) { // check_attacks + check_attacks(); + return 0; + }; + return __super::Invoke(functionName, param1); + +}; + +bool rvmCharSentry::HasNativeFunction(const char *functionName) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 91190) { // Destroy + return true; + }; + if(functionNameHash == 138382) { // Torso_Death + return true; + }; + if(functionNameHash == 124942) { // Torso_Idle + return true; + }; + if(functionNameHash == 126210) { // Torso_Pain + return true; + }; + if(functionNameHash == 218798) { // Torso_RangeAttack + return true; + }; + if(functionNameHash == 120665) { // Legs_Death + return true; + }; + if(functionNameHash == 107329) { // Legs_Idle + return true; + }; + if(functionNameHash == 109452) { // Legs_Walk + return true; + }; + if(functionNameHash == 108205) { // Legs_Fold + return true; + }; + if(functionNameHash == 134033) { // Legs_Folded + return true; + }; + if(functionNameHash == 137305) { // Legs_Unfold + return true; + }; + if(functionNameHash == 148356) { // Legs_Hanging + return true; + }; + if(functionNameHash == 163930) { // Legs_TurnLeft + return true; + }; + if(functionNameHash == 179084) { // Legs_TurnRight + return true; + }; + if(functionNameHash == 139384) { // state_Begin + return true; + }; + if(functionNameHash == 357100) { // updatePlayerPositionThread + return true; + }; + if(functionNameHash == 276015) { // path_sentry_light_on + return true; + }; + if(functionNameHash == 289089) { // path_sentry_light_off + return true; + }; + if(functionNameHash == 281382) { // path_sentry_shutdown + return true; + }; + if(functionNameHash == 322265) { // path_sentry_unlock_door + return true; + }; + if(functionNameHash == 145496) { // path_corner + return true; + }; + if(functionNameHash == 318458) { // path_sentry_lead_player + return true; + }; + if(functionNameHash == 352154) { // path_sentry_ignore_player + return true; + }; + if(functionNameHash == 153871) { // state_Killed + return true; + }; + if(functionNameHash == 265173) { // state_WaitForTrigger + return true; + }; + if(functionNameHash == 126066) { // state_Idle + return true; + }; + if(functionNameHash == 210410) { // state_FollowPath + return true; + }; + if(functionNameHash == 128977) { // state_Wait + return true; + }; + if(functionNameHash == 194527) { // state_GetCloser + return true; + }; + if(functionNameHash == 275280) { // state_CantReachPlayer + return true; + }; + if(functionNameHash == 125042) { // state_Lead + return true; + }; + if(functionNameHash == 208195) { // state_FindPlayer + return true; + }; + if(functionNameHash == 154038) { // state_Combat + return true; + }; + if(functionNameHash == 154499) { // combat_chase + return true; + }; + if(functionNameHash == 155616) { // combat_range + return true; + }; + if(functionNameHash == 216270) { // spawn_flashlight + return true; + }; + if(functionNameHash == 184719) { // flashlight_off + return true; + }; + if(functionNameHash == 172303) { // flashlight_on + return true; + }; + if(functionNameHash == 323206) { // checkDestinationDistance + return true; + }; + if(functionNameHash == 273237) { // find_attack_position + return true; + }; + if(functionNameHash == 169136) { // check_attacks + return true; + }; + return __super::HasNativeFunction(functionName); + +}; + +intptr_t rvmAIAlphaLabs2Scientist1::Invoke(const char *functionName, void *param1) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 91190) { // Destroy + Destroy(); + return 0; + }; + if(functionNameHash == 104297) { // Head_Idle + Head_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 117633) { // Head_Death + Head_Death((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 182394) { // Head_DeathScene + Head_DeathScene((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 161103) { // Head_Greeting + Head_Greeting((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 132243) { // Head_Speech + Head_Speech((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 124193) { // Head_Hurry + Head_Hurry((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 174026) { // Head_StayClose + Head_StayClose((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 245703) { // Head_Electro_Pulses + Head_Electro_Pulses((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 128317) { // Head_Pulse1 + Head_Pulse1((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 128446) { // Head_Pulse2 + Head_Pulse2((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 144221) { // Head_WatchIt + Head_WatchIt((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 148410) { // Head_Spooked + Head_Spooked((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 107828) { // Head_Exit + Head_Exit((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 161077) { // Head_SayStuff + Head_SayStuff((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 158510) { // Head_Attacked + Head_Attacked((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 183614) { // Head_AttackDone + Head_AttackDone((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 129608) { // Torso_Work + Torso_Work((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 203637) { // Torso_DeathScene + Torso_DeathScene((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 138382) { // Torso_Death + Torso_Death((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 124942) { // Torso_Idle + Torso_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126210) { // Torso_Pain + Torso_Pain((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 120665) { // Legs_Death + Legs_Death((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 107329) { // Legs_Idle + Legs_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 109452) { // Legs_Walk + Legs_Walk((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 163930) { // Legs_TurnLeft + Legs_TurnLeft((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 179084) { // Legs_TurnRight + Legs_TurnRight((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 123938) { // Legs_Cower + Legs_Cower((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 133572) { // light_fade1 + light_fade1((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 133701) { // light_fade2 + light_fade2((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 88528) { // doEvent + doEvent((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 104470) { // sayStuff + sayStuff((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 109518) { // hurry_up + hurry_up((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 357100) { // updatePlayerPositionThread + updatePlayerPositionThread((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 149689) { // checkBlocked + checkBlocked((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 153871) { // state_Killed + state_Killed((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 204761) { // state_DeathScene + state_DeathScene((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 267872) { // state_WorkingOnStuff + state_WorkingOnStuff((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 238496) { // state_NoticePlayer + state_NoticePlayer((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 128977) { // state_Wait + state_Wait((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 194527) { // state_GetCloser + state_GetCloser((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 275280) { // state_CantReachPlayer + state_CantReachPlayer((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 170522) { // state_Spooked + state_Spooked((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 125042) { // state_Lead + state_Lead((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 208195) { // state_FindPlayer + state_FindPlayer((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 142805) { // state_Cower + state_Cower((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 323206) { // checkDestinationDistance + checkDestinationDistance(); + return 0; + }; + return __super::Invoke(functionName, param1); + +}; + +bool rvmAIAlphaLabs2Scientist1::HasNativeFunction(const char *functionName) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 91190) { // Destroy + return true; + }; + if(functionNameHash == 104297) { // Head_Idle + return true; + }; + if(functionNameHash == 117633) { // Head_Death + return true; + }; + if(functionNameHash == 182394) { // Head_DeathScene + return true; + }; + if(functionNameHash == 161103) { // Head_Greeting + return true; + }; + if(functionNameHash == 132243) { // Head_Speech + return true; + }; + if(functionNameHash == 124193) { // Head_Hurry + return true; + }; + if(functionNameHash == 174026) { // Head_StayClose + return true; + }; + if(functionNameHash == 245703) { // Head_Electro_Pulses + return true; + }; + if(functionNameHash == 128317) { // Head_Pulse1 + return true; + }; + if(functionNameHash == 128446) { // Head_Pulse2 + return true; + }; + if(functionNameHash == 144221) { // Head_WatchIt + return true; + }; + if(functionNameHash == 148410) { // Head_Spooked + return true; + }; + if(functionNameHash == 107828) { // Head_Exit + return true; + }; + if(functionNameHash == 161077) { // Head_SayStuff + return true; + }; + if(functionNameHash == 158510) { // Head_Attacked + return true; + }; + if(functionNameHash == 183614) { // Head_AttackDone + return true; + }; + if(functionNameHash == 129608) { // Torso_Work + return true; + }; + if(functionNameHash == 203637) { // Torso_DeathScene + return true; + }; + if(functionNameHash == 138382) { // Torso_Death + return true; + }; + if(functionNameHash == 124942) { // Torso_Idle + return true; + }; + if(functionNameHash == 126210) { // Torso_Pain + return true; + }; + if(functionNameHash == 120665) { // Legs_Death + return true; + }; + if(functionNameHash == 107329) { // Legs_Idle + return true; + }; + if(functionNameHash == 109452) { // Legs_Walk + return true; + }; + if(functionNameHash == 163930) { // Legs_TurnLeft + return true; + }; + if(functionNameHash == 179084) { // Legs_TurnRight + return true; + }; + if(functionNameHash == 123938) { // Legs_Cower + return true; + }; + if(functionNameHash == 133572) { // light_fade1 + return true; + }; + if(functionNameHash == 133701) { // light_fade2 + return true; + }; + if(functionNameHash == 88528) { // doEvent + return true; + }; + if(functionNameHash == 104470) { // sayStuff + return true; + }; + if(functionNameHash == 109518) { // hurry_up + return true; + }; + if(functionNameHash == 357100) { // updatePlayerPositionThread + return true; + }; + if(functionNameHash == 149689) { // checkBlocked + return true; + }; + if(functionNameHash == 153871) { // state_Killed + return true; + }; + if(functionNameHash == 204761) { // state_DeathScene + return true; + }; + if(functionNameHash == 267872) { // state_WorkingOnStuff + return true; + }; + if(functionNameHash == 238496) { // state_NoticePlayer + return true; + }; + if(functionNameHash == 128977) { // state_Wait + return true; + }; + if(functionNameHash == 194527) { // state_GetCloser + return true; + }; + if(functionNameHash == 275280) { // state_CantReachPlayer + return true; + }; + if(functionNameHash == 170522) { // state_Spooked + return true; + }; + if(functionNameHash == 125042) { // state_Lead + return true; + }; + if(functionNameHash == 208195) { // state_FindPlayer + return true; + }; + if(functionNameHash == 142805) { // state_Cower + return true; + }; + if(functionNameHash == 323206) { // checkDestinationDistance + return true; + }; + return __super::HasNativeFunction(functionName); + +}; + +intptr_t rvmMonsterDemonPinky::Invoke(const char *functionName, void *param1) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + Torso_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126210) { // Torso_Pain + Torso_Pain((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 218167) { // Torso_MeleeAttack + Torso_MeleeAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 127720) { // Torso_Roar + Torso_Roar((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 107329) { // Legs_Idle + Legs_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 109452) { // Legs_Walk + Legs_Walk((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 97995) { // Legs_Run + Legs_Run((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 171866) { // Legs_DodgeLeft + Legs_DodgeLeft((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 187135) { // Legs_DodgeRight + Legs_DodgeRight((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 139384) { // state_Begin + state_Begin((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126066) { // state_Idle + state_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 144019) { // combat_roar + combat_roar((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 154980) { // combat_melee + combat_melee((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 223812) { // combat_dodge_left + combat_dodge_left((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 239426) { // combat_dodge_right + combat_dodge_right((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 169136) { // check_attacks + check_attacks(); + return 0; + }; + return __super::Invoke(functionName, param1); + +}; + +bool rvmMonsterDemonPinky::HasNativeFunction(const char *functionName) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + return true; + }; + if(functionNameHash == 126210) { // Torso_Pain + return true; + }; + if(functionNameHash == 218167) { // Torso_MeleeAttack + return true; + }; + if(functionNameHash == 127720) { // Torso_Roar + return true; + }; + if(functionNameHash == 107329) { // Legs_Idle + return true; + }; + if(functionNameHash == 109452) { // Legs_Walk + return true; + }; + if(functionNameHash == 97995) { // Legs_Run + return true; + }; + if(functionNameHash == 171866) { // Legs_DodgeLeft + return true; + }; + if(functionNameHash == 187135) { // Legs_DodgeRight + return true; + }; + if(functionNameHash == 139384) { // state_Begin + return true; + }; + if(functionNameHash == 126066) { // state_Idle + return true; + }; + if(functionNameHash == 144019) { // combat_roar + return true; + }; + if(functionNameHash == 154980) { // combat_melee + return true; + }; + if(functionNameHash == 223812) { // combat_dodge_left + return true; + }; + if(functionNameHash == 239426) { // combat_dodge_right + return true; + }; + if(functionNameHash == 169136) { // check_attacks + return true; + }; + return __super::HasNativeFunction(functionName); + +}; + +intptr_t rvmMonsterDemonImp::Invoke(const char *functionName, void *param1) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + Torso_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126210) { // Torso_Pain + Torso_Pain((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 218167) { // Torso_MeleeAttack + Torso_MeleeAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 218798) { // Torso_RangeAttack + Torso_RangeAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 239164) { // Torso_TurretAttack + Torso_TurretAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 292117) { // Torso_TurretAttackIdle + Torso_TurretAttackIdle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 204424) { // Torso_LeapAttack + Torso_LeapAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 107329) { // Legs_Idle + Legs_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 109452) { // Legs_Walk + Legs_Walk((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 97995) { // Legs_Run + Legs_Run((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 171866) { // Legs_DodgeLeft + Legs_DodgeLeft((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 187135) { // Legs_DodgeRight + Legs_DodgeRight((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 139384) { // state_Begin + state_Begin((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126066) { // state_Idle + state_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 155616) { // combat_range + combat_range((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 154980) { // combat_melee + combat_melee((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 141735) { // combat_leap + combat_leap((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 119104) { // path_jump + path_jump((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 223812) { // combat_dodge_left + combat_dodge_left((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 239426) { // combat_dodge_right + combat_dodge_right((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 169136) { // check_attacks + check_attacks(); + return 0; + }; + return __super::Invoke(functionName, param1); + +}; + +bool rvmMonsterDemonImp::HasNativeFunction(const char *functionName) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + return true; + }; + if(functionNameHash == 126210) { // Torso_Pain + return true; + }; + if(functionNameHash == 218167) { // Torso_MeleeAttack + return true; + }; + if(functionNameHash == 218798) { // Torso_RangeAttack + return true; + }; + if(functionNameHash == 239164) { // Torso_TurretAttack + return true; + }; + if(functionNameHash == 292117) { // Torso_TurretAttackIdle + return true; + }; + if(functionNameHash == 204424) { // Torso_LeapAttack + return true; + }; + if(functionNameHash == 107329) { // Legs_Idle + return true; + }; + if(functionNameHash == 109452) { // Legs_Walk + return true; + }; + if(functionNameHash == 97995) { // Legs_Run + return true; + }; + if(functionNameHash == 171866) { // Legs_DodgeLeft + return true; + }; + if(functionNameHash == 187135) { // Legs_DodgeRight + return true; + }; + if(functionNameHash == 139384) { // state_Begin + return true; + }; + if(functionNameHash == 126066) { // state_Idle + return true; + }; + if(functionNameHash == 155616) { // combat_range + return true; + }; + if(functionNameHash == 154980) { // combat_melee + return true; + }; + if(functionNameHash == 141735) { // combat_leap + return true; + }; + if(functionNameHash == 119104) { // path_jump + return true; + }; + if(functionNameHash == 223812) { // combat_dodge_left + return true; + }; + if(functionNameHash == 239426) { // combat_dodge_right + return true; + }; + if(functionNameHash == 169136) { // check_attacks + return true; + }; + return __super::HasNativeFunction(functionName); + +}; + +intptr_t rvmMonsterDemonVulgar::Invoke(const char *functionName, void *param1) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + Torso_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126210) { // Torso_Pain + Torso_Pain((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 218167) { // Torso_MeleeAttack + Torso_MeleeAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 218798) { // Torso_RangeAttack + Torso_RangeAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 239164) { // Torso_TurretAttack + Torso_TurretAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 204424) { // Torso_LeapAttack + Torso_LeapAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 107329) { // Legs_Idle + Legs_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 109452) { // Legs_Walk + Legs_Walk((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 97995) { // Legs_Run + Legs_Run((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 171866) { // Legs_DodgeLeft + Legs_DodgeLeft((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 187135) { // Legs_DodgeRight + Legs_DodgeRight((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 139384) { // state_Begin + state_Begin((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126066) { // state_Idle + state_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 155616) { // combat_range + combat_range((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 154980) { // combat_melee + combat_melee((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 141735) { // combat_leap + combat_leap((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 119104) { // path_jump + path_jump((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 223812) { // combat_dodge_left + combat_dodge_left((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 239426) { // combat_dodge_right + combat_dodge_right((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 169136) { // check_attacks + check_attacks(); + return 0; + }; + return __super::Invoke(functionName, param1); + +}; + +bool rvmMonsterDemonVulgar::HasNativeFunction(const char *functionName) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + return true; + }; + if(functionNameHash == 126210) { // Torso_Pain + return true; + }; + if(functionNameHash == 218167) { // Torso_MeleeAttack + return true; + }; + if(functionNameHash == 218798) { // Torso_RangeAttack + return true; + }; + if(functionNameHash == 239164) { // Torso_TurretAttack + return true; + }; + if(functionNameHash == 204424) { // Torso_LeapAttack + return true; + }; + if(functionNameHash == 107329) { // Legs_Idle + return true; + }; + if(functionNameHash == 109452) { // Legs_Walk + return true; + }; + if(functionNameHash == 97995) { // Legs_Run + return true; + }; + if(functionNameHash == 171866) { // Legs_DodgeLeft + return true; + }; + if(functionNameHash == 187135) { // Legs_DodgeRight + return true; + }; + if(functionNameHash == 139384) { // state_Begin + return true; + }; + if(functionNameHash == 126066) { // state_Idle + return true; + }; + if(functionNameHash == 155616) { // combat_range + return true; + }; + if(functionNameHash == 154980) { // combat_melee + return true; + }; + if(functionNameHash == 141735) { // combat_leap + return true; + }; + if(functionNameHash == 119104) { // path_jump + return true; + }; + if(functionNameHash == 223812) { // combat_dodge_left + return true; + }; + if(functionNameHash == 239426) { // combat_dodge_right + return true; + }; + if(functionNameHash == 169136) { // check_attacks + return true; + }; + return __super::HasNativeFunction(functionName); + +}; + +intptr_t rvmMonsterDemonRevenant::Invoke(const char *functionName, void *param1) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + Torso_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126210) { // Torso_Pain + Torso_Pain((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 218167) { // Torso_MeleeAttack + Torso_MeleeAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 218798) { // Torso_RangeAttack + Torso_RangeAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 239164) { // Torso_TurretAttack + Torso_TurretAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 107329) { // Legs_Idle + Legs_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 109452) { // Legs_Walk + Legs_Walk((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 171866) { // Legs_DodgeLeft + Legs_DodgeLeft((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 187135) { // Legs_DodgeRight + Legs_DodgeRight((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 139384) { // state_Begin + state_Begin((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126066) { // state_Idle + state_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 155616) { // combat_range + combat_range((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 154980) { // combat_melee + combat_melee((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 223812) { // combat_dodge_left + combat_dodge_left((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 239426) { // combat_dodge_right + combat_dodge_right((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 169136) { // check_attacks + check_attacks(); + return 0; + }; + return __super::Invoke(functionName, param1); + +}; + +bool rvmMonsterDemonRevenant::HasNativeFunction(const char *functionName) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + return true; + }; + if(functionNameHash == 126210) { // Torso_Pain + return true; + }; + if(functionNameHash == 218167) { // Torso_MeleeAttack + return true; + }; + if(functionNameHash == 218798) { // Torso_RangeAttack + return true; + }; + if(functionNameHash == 239164) { // Torso_TurretAttack + return true; + }; + if(functionNameHash == 107329) { // Legs_Idle + return true; + }; + if(functionNameHash == 109452) { // Legs_Walk + return true; + }; + if(functionNameHash == 171866) { // Legs_DodgeLeft + return true; + }; + if(functionNameHash == 187135) { // Legs_DodgeRight + return true; + }; + if(functionNameHash == 139384) { // state_Begin + return true; + }; + if(functionNameHash == 126066) { // state_Idle + return true; + }; + if(functionNameHash == 155616) { // combat_range + return true; + }; + if(functionNameHash == 154980) { // combat_melee + return true; + }; + if(functionNameHash == 223812) { // combat_dodge_left + return true; + }; + if(functionNameHash == 239426) { // combat_dodge_right + return true; + }; + if(functionNameHash == 169136) { // check_attacks + return true; + }; + return __super::HasNativeFunction(functionName); + +}; + +intptr_t rvmMonsterDemonHellknight::Invoke(const char *functionName, void *param1) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + Torso_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126210) { // Torso_Pain + Torso_Pain((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 218167) { // Torso_MeleeAttack + Torso_MeleeAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 218798) { // Torso_RangeAttack + Torso_RangeAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 239164) { // Torso_TurretAttack + Torso_TurretAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 107329) { // Legs_Idle + Legs_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 109452) { // Legs_Walk + Legs_Walk((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 139384) { // state_Begin + state_Begin((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126066) { // state_Idle + state_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 155616) { // combat_range + combat_range((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 154980) { // combat_melee + combat_melee((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 169136) { // check_attacks + check_attacks(); + return 0; + }; + return __super::Invoke(functionName, param1); + +}; + +bool rvmMonsterDemonHellknight::HasNativeFunction(const char *functionName) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + return true; + }; + if(functionNameHash == 126210) { // Torso_Pain + return true; + }; + if(functionNameHash == 218167) { // Torso_MeleeAttack + return true; + }; + if(functionNameHash == 218798) { // Torso_RangeAttack + return true; + }; + if(functionNameHash == 239164) { // Torso_TurretAttack + return true; + }; + if(functionNameHash == 107329) { // Legs_Idle + return true; + }; + if(functionNameHash == 109452) { // Legs_Walk + return true; + }; + if(functionNameHash == 139384) { // state_Begin + return true; + }; + if(functionNameHash == 126066) { // state_Idle + return true; + }; + if(functionNameHash == 155616) { // combat_range + return true; + }; + if(functionNameHash == 154980) { // combat_melee + return true; + }; + if(functionNameHash == 169136) { // check_attacks + return true; + }; + return __super::HasNativeFunction(functionName); + +}; + +intptr_t rvmMonsterDemonMaggot::Invoke(const char *functionName, void *param1) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + Torso_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126210) { // Torso_Pain + Torso_Pain((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 218167) { // Torso_MeleeAttack + Torso_MeleeAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 204424) { // Torso_LeapAttack + Torso_LeapAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 107329) { // Legs_Idle + Legs_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 109452) { // Legs_Walk + Legs_Walk((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 97995) { // Legs_Run + Legs_Run((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 171866) { // Legs_DodgeLeft + Legs_DodgeLeft((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 187135) { // Legs_DodgeRight + Legs_DodgeRight((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 139384) { // state_Begin + state_Begin((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126066) { // state_Idle + state_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 141735) { // combat_leap + combat_leap((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 154980) { // combat_melee + combat_melee((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 223812) { // combat_dodge_left + combat_dodge_left((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 239426) { // combat_dodge_right + combat_dodge_right((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 119104) { // path_jump + path_jump((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 169136) { // check_attacks + check_attacks(); + return 0; + }; + return __super::Invoke(functionName, param1); + +}; + +bool rvmMonsterDemonMaggot::HasNativeFunction(const char *functionName) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + return true; + }; + if(functionNameHash == 126210) { // Torso_Pain + return true; + }; + if(functionNameHash == 218167) { // Torso_MeleeAttack + return true; + }; + if(functionNameHash == 204424) { // Torso_LeapAttack + return true; + }; + if(functionNameHash == 107329) { // Legs_Idle + return true; + }; + if(functionNameHash == 109452) { // Legs_Walk + return true; + }; + if(functionNameHash == 97995) { // Legs_Run + return true; + }; + if(functionNameHash == 171866) { // Legs_DodgeLeft + return true; + }; + if(functionNameHash == 187135) { // Legs_DodgeRight + return true; + }; + if(functionNameHash == 139384) { // state_Begin + return true; + }; + if(functionNameHash == 126066) { // state_Idle + return true; + }; + if(functionNameHash == 141735) { // combat_leap + return true; + }; + if(functionNameHash == 154980) { // combat_melee + return true; + }; + if(functionNameHash == 223812) { // combat_dodge_left + return true; + }; + if(functionNameHash == 239426) { // combat_dodge_right + return true; + }; + if(functionNameHash == 119104) { // path_jump + return true; + }; + if(functionNameHash == 169136) { // check_attacks + return true; + }; + return __super::HasNativeFunction(functionName); + +}; + +intptr_t rvmMonsterDemonCherub::Invoke(const char *functionName, void *param1) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + Torso_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126210) { // Torso_Pain + Torso_Pain((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 218167) { // Torso_MeleeAttack + Torso_MeleeAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 204424) { // Torso_LeapAttack + Torso_LeapAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 127082) { // Torso_Walk + Torso_Walk((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 115535) { // Torso_Run + Torso_Run((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 189975) { // Torso_DodgeLeft + Torso_DodgeLeft((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 205359) { // Torso_DodgeRight + Torso_DodgeRight((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 139384) { // state_Begin + state_Begin((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126066) { // state_Idle + state_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 141735) { // combat_leap + combat_leap((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 154980) { // combat_melee + combat_melee((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 223812) { // combat_dodge_left + combat_dodge_left((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 239426) { // combat_dodge_right + combat_dodge_right((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 119104) { // path_jump + path_jump((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 169136) { // check_attacks + check_attacks(); + return 0; + }; + return __super::Invoke(functionName, param1); + +}; + +bool rvmMonsterDemonCherub::HasNativeFunction(const char *functionName) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + return true; + }; + if(functionNameHash == 126210) { // Torso_Pain + return true; + }; + if(functionNameHash == 218167) { // Torso_MeleeAttack + return true; + }; + if(functionNameHash == 204424) { // Torso_LeapAttack + return true; + }; + if(functionNameHash == 127082) { // Torso_Walk + return true; + }; + if(functionNameHash == 115535) { // Torso_Run + return true; + }; + if(functionNameHash == 189975) { // Torso_DodgeLeft + return true; + }; + if(functionNameHash == 205359) { // Torso_DodgeRight + return true; + }; + if(functionNameHash == 139384) { // state_Begin + return true; + }; + if(functionNameHash == 126066) { // state_Idle + return true; + }; + if(functionNameHash == 141735) { // combat_leap + return true; + }; + if(functionNameHash == 154980) { // combat_melee + return true; + }; + if(functionNameHash == 223812) { // combat_dodge_left + return true; + }; + if(functionNameHash == 239426) { // combat_dodge_right + return true; + }; + if(functionNameHash == 119104) { // path_jump + return true; + }; + if(functionNameHash == 169136) { // check_attacks + return true; + }; + return __super::HasNativeFunction(functionName); + +}; + +intptr_t rvmMonsterDemonTrite::Invoke(const char *functionName, void *param1) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + Torso_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126210) { // Torso_Pain + Torso_Pain((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 218167) { // Torso_MeleeAttack + Torso_MeleeAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 204424) { // Torso_LeapAttack + Torso_LeapAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 127082) { // Torso_Walk + Torso_Walk((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 115535) { // Torso_Run + Torso_Run((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 189975) { // Torso_DodgeLeft + Torso_DodgeLeft((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 205359) { // Torso_DodgeRight + Torso_DodgeRight((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 139384) { // state_Begin + state_Begin((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126066) { // state_Idle + state_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 141735) { // combat_leap + combat_leap((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 154980) { // combat_melee + combat_melee((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 223812) { // combat_dodge_left + combat_dodge_left((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 239426) { // combat_dodge_right + combat_dodge_right((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 119104) { // path_jump + path_jump((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 209369) { // state_LostCombat + state_LostCombat((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 170040) { // state_Explode + state_Explode((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 185532) { // combat_explode + combat_explode((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 153871) { // state_Killed + state_Killed((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 169136) { // check_attacks + check_attacks(); + return 0; + }; + return __super::Invoke(functionName, param1); + +}; + +bool rvmMonsterDemonTrite::HasNativeFunction(const char *functionName) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + return true; + }; + if(functionNameHash == 126210) { // Torso_Pain + return true; + }; + if(functionNameHash == 218167) { // Torso_MeleeAttack + return true; + }; + if(functionNameHash == 204424) { // Torso_LeapAttack + return true; + }; + if(functionNameHash == 127082) { // Torso_Walk + return true; + }; + if(functionNameHash == 115535) { // Torso_Run + return true; + }; + if(functionNameHash == 189975) { // Torso_DodgeLeft + return true; + }; + if(functionNameHash == 205359) { // Torso_DodgeRight + return true; + }; + if(functionNameHash == 139384) { // state_Begin + return true; + }; + if(functionNameHash == 126066) { // state_Idle + return true; + }; + if(functionNameHash == 141735) { // combat_leap + return true; + }; + if(functionNameHash == 154980) { // combat_melee + return true; + }; + if(functionNameHash == 223812) { // combat_dodge_left + return true; + }; + if(functionNameHash == 239426) { // combat_dodge_right + return true; + }; + if(functionNameHash == 119104) { // path_jump + return true; + }; + if(functionNameHash == 209369) { // state_LostCombat + return true; + }; + if(functionNameHash == 170040) { // state_Explode + return true; + }; + if(functionNameHash == 185532) { // combat_explode + return true; + }; + if(functionNameHash == 153871) { // state_Killed + return true; + }; + if(functionNameHash == 169136) { // check_attacks + return true; + }; + return __super::HasNativeFunction(functionName); + +}; + +intptr_t rvmMonsterDemonWraith::Invoke(const char *functionName, void *param1) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + Torso_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126210) { // Torso_Pain + Torso_Pain((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 218167) { // Torso_MeleeAttack + Torso_MeleeAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 107329) { // Legs_Idle + Legs_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 109452) { // Legs_Walk + Legs_Walk((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 97995) { // Legs_Run + Legs_Run((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 171866) { // Legs_DodgeLeft + Legs_DodgeLeft((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 187135) { // Legs_DodgeRight + Legs_DodgeRight((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 139384) { // state_Begin + state_Begin((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126066) { // state_Idle + state_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 209369) { // state_LostCombat + state_LostCombat((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 154980) { // combat_melee + combat_melee((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 223812) { // combat_dodge_left + combat_dodge_left((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 239426) { // combat_dodge_right + combat_dodge_right((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 282481) { // combat_become_visible + combat_become_visible((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 312686) { // combat_become_invisible + combat_become_invisible((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 106560) { // spawn_fx + spawn_fx((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 169136) { // check_attacks + check_attacks(); + return 0; + }; + return __super::Invoke(functionName, param1); + +}; + +bool rvmMonsterDemonWraith::HasNativeFunction(const char *functionName) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + return true; + }; + if(functionNameHash == 126210) { // Torso_Pain + return true; + }; + if(functionNameHash == 218167) { // Torso_MeleeAttack + return true; + }; + if(functionNameHash == 107329) { // Legs_Idle + return true; + }; + if(functionNameHash == 109452) { // Legs_Walk + return true; + }; + if(functionNameHash == 97995) { // Legs_Run + return true; + }; + if(functionNameHash == 171866) { // Legs_DodgeLeft + return true; + }; + if(functionNameHash == 187135) { // Legs_DodgeRight + return true; + }; + if(functionNameHash == 139384) { // state_Begin + return true; + }; + if(functionNameHash == 126066) { // state_Idle + return true; + }; + if(functionNameHash == 209369) { // state_LostCombat + return true; + }; + if(functionNameHash == 154980) { // combat_melee + return true; + }; + if(functionNameHash == 223812) { // combat_dodge_left + return true; + }; + if(functionNameHash == 239426) { // combat_dodge_right + return true; + }; + if(functionNameHash == 282481) { // combat_become_visible + return true; + }; + if(functionNameHash == 312686) { // combat_become_invisible + return true; + }; + if(functionNameHash == 106560) { // spawn_fx + return true; + }; + if(functionNameHash == 169136) { // check_attacks + return true; + }; + return __super::HasNativeFunction(functionName); + +}; + +intptr_t rvmMonsterDemonMancubus::Invoke(const char *functionName, void *param1) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + Torso_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126210) { // Torso_Pain + Torso_Pain((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 218167) { // Torso_MeleeAttack + Torso_MeleeAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 218798) { // Torso_RangeAttack + Torso_RangeAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 239164) { // Torso_TurretAttack + Torso_TurretAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 107329) { // Legs_Idle + Legs_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 109452) { // Legs_Walk + Legs_Walk((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 139384) { // state_Begin + state_Begin((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126066) { // state_Idle + state_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 155616) { // combat_range + combat_range((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 154980) { // combat_melee + combat_melee((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 169136) { // check_attacks + check_attacks(); + return 0; + }; + return __super::Invoke(functionName, param1); + +}; + +bool rvmMonsterDemonMancubus::HasNativeFunction(const char *functionName) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + return true; + }; + if(functionNameHash == 126210) { // Torso_Pain + return true; + }; + if(functionNameHash == 218167) { // Torso_MeleeAttack + return true; + }; + if(functionNameHash == 218798) { // Torso_RangeAttack + return true; + }; + if(functionNameHash == 239164) { // Torso_TurretAttack + return true; + }; + if(functionNameHash == 107329) { // Legs_Idle + return true; + }; + if(functionNameHash == 109452) { // Legs_Walk + return true; + }; + if(functionNameHash == 139384) { // state_Begin + return true; + }; + if(functionNameHash == 126066) { // state_Idle + return true; + }; + if(functionNameHash == 155616) { // combat_range + return true; + }; + if(functionNameHash == 154980) { // combat_melee + return true; + }; + if(functionNameHash == 169136) { // check_attacks + return true; + }; + return __super::HasNativeFunction(functionName); + +}; + +intptr_t rvmMonsterDemonArchvile::Invoke(const char *functionName, void *param1) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + Torso_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126210) { // Torso_Pain + Torso_Pain((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 200383) { // Torso_Resurrect + Torso_Resurrect((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 218167) { // Torso_MeleeAttack + Torso_MeleeAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 272838) { // Torso_FlameWallAttack + Torso_FlameWallAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 292161) { // Torso_IncinerateAttack + Torso_IncinerateAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 239164) { // Torso_TurretAttack + Torso_TurretAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 107329) { // Legs_Idle + Legs_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 109452) { // Legs_Walk + Legs_Walk((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 171866) { // Legs_DodgeLeft + Legs_DodgeLeft((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 187135) { // Legs_DodgeRight + Legs_DodgeRight((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 139384) { // state_Begin + state_Begin((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126066) { // state_Idle + state_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 217237) { // combat_resurrect + combat_resurrect((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 211840) { // combat_flamewall + combat_flamewall((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 226512) { // combat_incinerate + combat_incinerate((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 154980) { // combat_melee + combat_melee((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 223812) { // combat_dodge_left + combat_dodge_left((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 239426) { // combat_dodge_right + combat_dodge_right((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 213927) { // spawn_flame_wall + spawn_flame_wall((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 187020) { // spawn_incerate + spawn_incerate((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 199357) { // flame_wall_loop + flame_wall_loop((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 128973) { // flame_wall + flame_wall((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 130670) { // incinerate + incinerate((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 163923) { // resurrection + resurrection((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 169136) { // check_attacks + check_attacks(); + return 0; + }; + if(functionNameHash == 148328) { // num_minions + num_minions(); + return 0; + }; + return __super::Invoke(functionName, param1); + +}; + +bool rvmMonsterDemonArchvile::HasNativeFunction(const char *functionName) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + return true; + }; + if(functionNameHash == 126210) { // Torso_Pain + return true; + }; + if(functionNameHash == 200383) { // Torso_Resurrect + return true; + }; + if(functionNameHash == 218167) { // Torso_MeleeAttack + return true; + }; + if(functionNameHash == 272838) { // Torso_FlameWallAttack + return true; + }; + if(functionNameHash == 292161) { // Torso_IncinerateAttack + return true; + }; + if(functionNameHash == 239164) { // Torso_TurretAttack + return true; + }; + if(functionNameHash == 107329) { // Legs_Idle + return true; + }; + if(functionNameHash == 109452) { // Legs_Walk + return true; + }; + if(functionNameHash == 171866) { // Legs_DodgeLeft + return true; + }; + if(functionNameHash == 187135) { // Legs_DodgeRight + return true; + }; + if(functionNameHash == 139384) { // state_Begin + return true; + }; + if(functionNameHash == 126066) { // state_Idle + return true; + }; + if(functionNameHash == 217237) { // combat_resurrect + return true; + }; + if(functionNameHash == 211840) { // combat_flamewall + return true; + }; + if(functionNameHash == 226512) { // combat_incinerate + return true; + }; + if(functionNameHash == 154980) { // combat_melee + return true; + }; + if(functionNameHash == 223812) { // combat_dodge_left + return true; + }; + if(functionNameHash == 239426) { // combat_dodge_right + return true; + }; + if(functionNameHash == 213927) { // spawn_flame_wall + return true; + }; + if(functionNameHash == 187020) { // spawn_incerate + return true; + }; + if(functionNameHash == 199357) { // flame_wall_loop + return true; + }; + if(functionNameHash == 128973) { // flame_wall + return true; + }; + if(functionNameHash == 130670) { // incinerate + return true; + }; + if(functionNameHash == 163923) { // resurrection + return true; + }; + if(functionNameHash == 169136) { // check_attacks + return true; + }; + if(functionNameHash == 148328) { // num_minions + return true; + }; + return __super::HasNativeFunction(functionName); + +}; + +intptr_t rvmMonsterFlyingCacodemon::Invoke(const char *functionName, void *param1) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + Torso_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 114298) { // Torso_Fly + Torso_Fly((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126210) { // Torso_Pain + Torso_Pain((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 218167) { // Torso_MeleeAttack + Torso_MeleeAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 218798) { // Torso_RangeAttack + Torso_RangeAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 239164) { // Torso_TurretAttack + Torso_TurretAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 139384) { // state_Begin + state_Begin((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126066) { // state_Idle + state_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 155616) { // combat_range + combat_range((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 154980) { // combat_melee + combat_melee((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 169136) { // check_attacks + check_attacks(); + return 0; + }; + return __super::Invoke(functionName, param1); + +}; + +bool rvmMonsterFlyingCacodemon::HasNativeFunction(const char *functionName) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + return true; + }; + if(functionNameHash == 114298) { // Torso_Fly + return true; + }; + if(functionNameHash == 126210) { // Torso_Pain + return true; + }; + if(functionNameHash == 218167) { // Torso_MeleeAttack + return true; + }; + if(functionNameHash == 218798) { // Torso_RangeAttack + return true; + }; + if(functionNameHash == 239164) { // Torso_TurretAttack + return true; + }; + if(functionNameHash == 139384) { // state_Begin + return true; + }; + if(functionNameHash == 126066) { // state_Idle + return true; + }; + if(functionNameHash == 155616) { // combat_range + return true; + }; + if(functionNameHash == 154980) { // combat_melee + return true; + }; + if(functionNameHash == 169136) { // check_attacks + return true; + }; + return __super::HasNativeFunction(functionName); + +}; + +intptr_t rvmMonsterFlyingLostsoul::Invoke(const char *functionName, void *param1) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + Torso_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 114298) { // Torso_Fly + Torso_Fly((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 151380) { // Torso_Charge + Torso_Charge((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126210) { // Torso_Pain + Torso_Pain((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 218167) { // Torso_MeleeAttack + Torso_MeleeAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 139384) { // state_Begin + state_Begin((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126066) { // state_Idle + state_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 167861) { // combat_charge + combat_charge((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 154980) { // combat_melee + combat_melee((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 186330) { // combat_retreat + combat_retreat((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 169136) { // check_attacks + check_attacks(); + return 0; + }; + return __super::Invoke(functionName, param1); + +}; + +bool rvmMonsterFlyingLostsoul::HasNativeFunction(const char *functionName) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + return true; + }; + if(functionNameHash == 114298) { // Torso_Fly + return true; + }; + if(functionNameHash == 151380) { // Torso_Charge + return true; + }; + if(functionNameHash == 126210) { // Torso_Pain + return true; + }; + if(functionNameHash == 218167) { // Torso_MeleeAttack + return true; + }; + if(functionNameHash == 139384) { // state_Begin + return true; + }; + if(functionNameHash == 126066) { // state_Idle + return true; + }; + if(functionNameHash == 167861) { // combat_charge + return true; + }; + if(functionNameHash == 154980) { // combat_melee + return true; + }; + if(functionNameHash == 186330) { // combat_retreat + return true; + }; + if(functionNameHash == 169136) { // check_attacks + return true; + }; + return __super::HasNativeFunction(functionName); + +}; + +intptr_t rvmMonsterTurret::Invoke(const char *functionName, void *param1) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 138382) { // Torso_Death + Torso_Death((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 124942) { // Torso_Idle + Torso_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 153143) { // Torso_Attack + Torso_Attack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 139384) { // state_Begin + state_Begin((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126066) { // state_Idle + state_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 179561) { // state_Disabled + state_Disabled((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 153871) { // state_Killed + state_Killed((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 154038) { // state_Combat + state_Combat((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 169638) { // combat_attack + combat_attack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 146777) { // spawn_light + spawn_light((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 116332) { // light_off + light_off((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 104386) { // light_on + light_on((stateParms_t *)param1); + return 0; + }; + return __super::Invoke(functionName, param1); + +}; + +bool rvmMonsterTurret::HasNativeFunction(const char *functionName) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 138382) { // Torso_Death + return true; + }; + if(functionNameHash == 124942) { // Torso_Idle + return true; + }; + if(functionNameHash == 153143) { // Torso_Attack + return true; + }; + if(functionNameHash == 139384) { // state_Begin + return true; + }; + if(functionNameHash == 126066) { // state_Idle + return true; + }; + if(functionNameHash == 179561) { // state_Disabled + return true; + }; + if(functionNameHash == 153871) { // state_Killed + return true; + }; + if(functionNameHash == 154038) { // state_Combat + return true; + }; + if(functionNameHash == 169638) { // combat_attack + return true; + }; + if(functionNameHash == 146777) { // spawn_light + return true; + }; + if(functionNameHash == 116332) { // light_off + return true; + }; + if(functionNameHash == 104386) { // light_on + return true; + }; + return __super::HasNativeFunction(functionName); + +}; + +intptr_t rvmMonsterBossCyberdemon::Invoke(const char *functionName, void *param1) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + Torso_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126210) { // Torso_Pain + Torso_Pain((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 218167) { // Torso_MeleeAttack + Torso_MeleeAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 218798) { // Torso_RangeAttack + Torso_RangeAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 107329) { // Legs_Idle + Legs_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 109452) { // Legs_Walk + Legs_Walk((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 139384) { // state_Begin + state_Begin((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126066) { // state_Idle + state_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 155616) { // combat_range + combat_range((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 154980) { // combat_melee + combat_melee((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 169136) { // check_attacks + check_attacks(); + return 0; + }; + return __super::Invoke(functionName, param1); + +}; + +bool rvmMonsterBossCyberdemon::HasNativeFunction(const char *functionName) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + return true; + }; + if(functionNameHash == 126210) { // Torso_Pain + return true; + }; + if(functionNameHash == 218167) { // Torso_MeleeAttack + return true; + }; + if(functionNameHash == 218798) { // Torso_RangeAttack + return true; + }; + if(functionNameHash == 107329) { // Legs_Idle + return true; + }; + if(functionNameHash == 109452) { // Legs_Walk + return true; + }; + if(functionNameHash == 139384) { // state_Begin + return true; + }; + if(functionNameHash == 126066) { // state_Idle + return true; + }; + if(functionNameHash == 155616) { // combat_range + return true; + }; + if(functionNameHash == 154980) { // combat_melee + return true; + }; + if(functionNameHash == 169136) { // check_attacks + return true; + }; + return __super::HasNativeFunction(functionName); + +}; + +intptr_t rvmMonsterBossVagary::Invoke(const char *functionName, void *param1) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + Torso_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126210) { // Torso_Pain + Torso_Pain((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 218167) { // Torso_MeleeAttack + Torso_MeleeAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 218798) { // Torso_RangeAttack + Torso_RangeAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 239164) { // Torso_TurretAttack + Torso_TurretAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 107329) { // Legs_Idle + Legs_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 109452) { // Legs_Walk + Legs_Walk((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 171866) { // Legs_DodgeLeft + Legs_DodgeLeft((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 187135) { // Legs_DodgeRight + Legs_DodgeRight((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 139384) { // state_Begin + state_Begin((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126066) { // state_Idle + state_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 160501) { // throw_object + throw_object((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 155616) { // combat_range + combat_range((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 154980) { // combat_melee + combat_melee((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 223812) { // combat_dodge_left + combat_dodge_left((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 239426) { // combat_dodge_right + combat_dodge_right((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 169136) { // check_attacks + check_attacks(); + return 0; + }; + return __super::Invoke(functionName, param1); + +}; + +bool rvmMonsterBossVagary::HasNativeFunction(const char *functionName) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + return true; + }; + if(functionNameHash == 126210) { // Torso_Pain + return true; + }; + if(functionNameHash == 218167) { // Torso_MeleeAttack + return true; + }; + if(functionNameHash == 218798) { // Torso_RangeAttack + return true; + }; + if(functionNameHash == 239164) { // Torso_TurretAttack + return true; + }; + if(functionNameHash == 107329) { // Legs_Idle + return true; + }; + if(functionNameHash == 109452) { // Legs_Walk + return true; + }; + if(functionNameHash == 171866) { // Legs_DodgeLeft + return true; + }; + if(functionNameHash == 187135) { // Legs_DodgeRight + return true; + }; + if(functionNameHash == 139384) { // state_Begin + return true; + }; + if(functionNameHash == 126066) { // state_Idle + return true; + }; + if(functionNameHash == 160501) { // throw_object + return true; + }; + if(functionNameHash == 155616) { // combat_range + return true; + }; + if(functionNameHash == 154980) { // combat_melee + return true; + }; + if(functionNameHash == 223812) { // combat_dodge_left + return true; + }; + if(functionNameHash == 239426) { // combat_dodge_right + return true; + }; + if(functionNameHash == 169136) { // check_attacks + return true; + }; + return __super::HasNativeFunction(functionName); + +}; + +intptr_t rvmMonsterBossSabaoth::Invoke(const char *functionName, void *param1) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + Torso_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 218167) { // Torso_MeleeAttack + Torso_MeleeAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 218798) { // Torso_RangeAttack + Torso_RangeAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 107329) { // Legs_Idle + Legs_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 109452) { // Legs_Walk + Legs_Walk((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 153871) { // state_Killed + state_Killed((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 139384) { // state_Begin + state_Begin((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126066) { // state_Idle + state_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 188871) { // move_to_corner + move_to_corner((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 191038) { // turn_to_corner + turn_to_corner((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 156807) { // closeSection + closeSection((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 143747) { // openSection + openSection((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 154038) { // state_Combat + state_Combat((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 155616) { // combat_range + combat_range((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 154980) { // combat_melee + combat_melee((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 100419) { // fire_bfg + fire_bfg((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 179038) { // open_section_1 + open_section_1((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 192369) { // close_section_1 + close_section_1((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 179170) { // open_section_2 + open_section_2((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 192502) { // close_section_2 + close_section_2((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 179302) { // open_section_3 + open_section_3((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 192635) { // close_section_3 + close_section_3((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 179434) { // open_section_4 + open_section_4((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 192768) { // close_section_4 + close_section_4((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 179566) { // open_section_5 + open_section_5((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 192901) { // close_section_5 + close_section_5((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 179698) { // open_section_6 + open_section_6((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 193034) { // close_section_6 + close_section_6((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 179830) { // open_section_7 + open_section_7((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 193167) { // close_section_7 + close_section_7((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 179962) { // open_section_8 + open_section_8((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 193300) { // close_section_8 + close_section_8((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 169136) { // check_attacks + check_attacks(); + return 0; + }; + return __super::Invoke(functionName, param1); + +}; + +bool rvmMonsterBossSabaoth::HasNativeFunction(const char *functionName) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + return true; + }; + if(functionNameHash == 218167) { // Torso_MeleeAttack + return true; + }; + if(functionNameHash == 218798) { // Torso_RangeAttack + return true; + }; + if(functionNameHash == 107329) { // Legs_Idle + return true; + }; + if(functionNameHash == 109452) { // Legs_Walk + return true; + }; + if(functionNameHash == 153871) { // state_Killed + return true; + }; + if(functionNameHash == 139384) { // state_Begin + return true; + }; + if(functionNameHash == 126066) { // state_Idle + return true; + }; + if(functionNameHash == 188871) { // move_to_corner + return true; + }; + if(functionNameHash == 191038) { // turn_to_corner + return true; + }; + if(functionNameHash == 156807) { // closeSection + return true; + }; + if(functionNameHash == 143747) { // openSection + return true; + }; + if(functionNameHash == 154038) { // state_Combat + return true; + }; + if(functionNameHash == 155616) { // combat_range + return true; + }; + if(functionNameHash == 154980) { // combat_melee + return true; + }; + if(functionNameHash == 100419) { // fire_bfg + return true; + }; + if(functionNameHash == 179038) { // open_section_1 + return true; + }; + if(functionNameHash == 192369) { // close_section_1 + return true; + }; + if(functionNameHash == 179170) { // open_section_2 + return true; + }; + if(functionNameHash == 192502) { // close_section_2 + return true; + }; + if(functionNameHash == 179302) { // open_section_3 + return true; + }; + if(functionNameHash == 192635) { // close_section_3 + return true; + }; + if(functionNameHash == 179434) { // open_section_4 + return true; + }; + if(functionNameHash == 192768) { // close_section_4 + return true; + }; + if(functionNameHash == 179566) { // open_section_5 + return true; + }; + if(functionNameHash == 192901) { // close_section_5 + return true; + }; + if(functionNameHash == 179698) { // open_section_6 + return true; + }; + if(functionNameHash == 193034) { // close_section_6 + return true; + }; + if(functionNameHash == 179830) { // open_section_7 + return true; + }; + if(functionNameHash == 193167) { // close_section_7 + return true; + }; + if(functionNameHash == 179962) { // open_section_8 + return true; + }; + if(functionNameHash == 193300) { // close_section_8 + return true; + }; + if(functionNameHash == 169136) { // check_attacks + return true; + }; + return __super::HasNativeFunction(functionName); + +}; + +intptr_t rvmSeekerBase::Invoke(const char *functionName, void *param1) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 87508) { // isAlive + isAlive(); + return 0; + }; + if(functionNameHash == 171782) { // respawnSeeker + respawnSeeker((stateParms_t *)param1); + return 0; + }; + return __super::Invoke(functionName, param1); + +}; + +bool rvmSeekerBase::HasNativeFunction(const char *functionName) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 87508) { // isAlive + return true; + }; + if(functionNameHash == 171782) { // respawnSeeker + return true; + }; + return __super::HasNativeFunction(functionName); + +}; + +intptr_t rvmMonsterBossGuardianSpawner::Invoke(const char *functionName, void *param1) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 184975) { // update_effects + update_effects((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 141713) { // setGuardian + setGuardian((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 183077) { // state_Inactive + state_Inactive((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 154820) { // state_Active + state_Active((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 153871) { // state_Killed + state_Killed((stateParms_t *)param1); + return 0; + }; + return __super::Invoke(functionName, param1); + +}; + +bool rvmMonsterBossGuardianSpawner::HasNativeFunction(const char *functionName) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 184975) { // update_effects + return true; + }; + if(functionNameHash == 141713) { // setGuardian + return true; + }; + if(functionNameHash == 183077) { // state_Inactive + return true; + }; + if(functionNameHash == 154820) { // state_Active + return true; + }; + if(functionNameHash == 153871) { // state_Killed + return true; + }; + return __super::HasNativeFunction(functionName); + +}; + +intptr_t rvmMonsterBossGuardian::Invoke(const char *functionName, void *param1) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 123793) { // Legs_Sight + Legs_Sight((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 120665) { // Legs_Death + Legs_Death((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 108587) { // Legs_Pain + Legs_Pain((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 200474) { // Legs_RangeAttack + Legs_RangeAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 199848) { // Legs_MeleeAttack + Legs_MeleeAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 252296) { // Legs_Walk_Melee_Left + Legs_Walk_Melee_Left((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 268255) { // Legs_Walk_Melee_Right + Legs_Walk_Melee_Right((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 109452) { // Legs_Walk + Legs_Walk((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 239766) { // Legs_Run_Melee_Left + Legs_Run_Melee_Left((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 255610) { // Legs_Run_Melee_Right + Legs_Run_Melee_Right((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 133563) { // Legs_Charge + Legs_Charge((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 111863) { // Legs_Lost + Legs_Lost((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 107329) { // Legs_Idle + Legs_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 204950) { // Legs_SpawnSeeker + Legs_SpawnSeeker((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 111295) { // addSeeker + addSeeker((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 130067) { // sightEnemy + sightEnemy((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126066) { // state_Idle + state_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 153871) { // state_Killed + state_Killed((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 154038) { // state_Combat + state_Combat((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 154980) { // combat_melee + combat_melee((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 155616) { // combat_range + combat_range((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 167861) { // combat_charge + combat_charge((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 159655) { // pound_impact + pound_impact((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 158875) { // pound_attack + pound_attack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 228337) { // pound_attack_left + pound_attack_left((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 243951) { // pound_attack_right + pound_attack_right((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 160606) { // smash_ground + smash_ground((stateParms_t *)param1); + return 0; + }; + return __super::Invoke(functionName, param1); + +}; + +bool rvmMonsterBossGuardian::HasNativeFunction(const char *functionName) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 123793) { // Legs_Sight + return true; + }; + if(functionNameHash == 120665) { // Legs_Death + return true; + }; + if(functionNameHash == 108587) { // Legs_Pain + return true; + }; + if(functionNameHash == 200474) { // Legs_RangeAttack + return true; + }; + if(functionNameHash == 199848) { // Legs_MeleeAttack + return true; + }; + if(functionNameHash == 252296) { // Legs_Walk_Melee_Left + return true; + }; + if(functionNameHash == 268255) { // Legs_Walk_Melee_Right + return true; + }; + if(functionNameHash == 109452) { // Legs_Walk + return true; + }; + if(functionNameHash == 239766) { // Legs_Run_Melee_Left + return true; + }; + if(functionNameHash == 255610) { // Legs_Run_Melee_Right + return true; + }; + if(functionNameHash == 133563) { // Legs_Charge + return true; + }; + if(functionNameHash == 111863) { // Legs_Lost + return true; + }; + if(functionNameHash == 107329) { // Legs_Idle + return true; + }; + if(functionNameHash == 204950) { // Legs_SpawnSeeker + return true; + }; + if(functionNameHash == 111295) { // addSeeker + return true; + }; + if(functionNameHash == 130067) { // sightEnemy + return true; + }; + if(functionNameHash == 126066) { // state_Idle + return true; + }; + if(functionNameHash == 153871) { // state_Killed + return true; + }; + if(functionNameHash == 154038) { // state_Combat + return true; + }; + if(functionNameHash == 154980) { // combat_melee + return true; + }; + if(functionNameHash == 155616) { // combat_range + return true; + }; + if(functionNameHash == 167861) { // combat_charge + return true; + }; + if(functionNameHash == 159655) { // pound_impact + return true; + }; + if(functionNameHash == 158875) { // pound_attack + return true; + }; + if(functionNameHash == 228337) { // pound_attack_left + return true; + }; + if(functionNameHash == 243951) { // pound_attack_right + return true; + }; + if(functionNameHash == 160606) { // smash_ground + return true; + }; + return __super::HasNativeFunction(functionName); + +}; + +intptr_t rvmMonsterBossGuardianSeeker::Invoke(const char *functionName, void *param1) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + Torso_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 114298) { // Torso_Fly + Torso_Fly((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126210) { // Torso_Pain + Torso_Pain((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 218167) { // Torso_MeleeAttack + Torso_MeleeAttack((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 138382) { // Torso_Death + Torso_Death((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 117405) { // see_enemy + see_enemy((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 134255) { // lost_enemy + lost_enemy((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 171782) { // respawnSeeker + respawnSeeker((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 172007) { // state_Respawn + state_Respawn((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 183077) { // state_Inactive + state_Inactive((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 126066) { // state_Idle + state_Idle((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 153871) { // state_Killed + state_Killed((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 223983) { // state_WatchPlayer + state_WatchPlayer((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 194527) { // state_GetCloser + state_GetCloser((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 208195) { // state_FindPlayer + state_FindPlayer((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 170832) { // state_Retreat + state_Retreat((stateParms_t *)param1); + return 0; + }; + if(functionNameHash == 168791) { // state_RunAway + state_RunAway((stateParms_t *)param1); + return 0; + }; + return __super::Invoke(functionName, param1); + +}; + +bool rvmMonsterBossGuardianSeeker::HasNativeFunction(const char *functionName) { + int functionNameHash = idStr::Hash(functionName); + if(functionNameHash == 124942) { // Torso_Idle + return true; + }; + if(functionNameHash == 114298) { // Torso_Fly + return true; + }; + if(functionNameHash == 126210) { // Torso_Pain + return true; + }; + if(functionNameHash == 218167) { // Torso_MeleeAttack + return true; + }; + if(functionNameHash == 138382) { // Torso_Death + return true; + }; + if(functionNameHash == 117405) { // see_enemy + return true; + }; + if(functionNameHash == 134255) { // lost_enemy + return true; + }; + if(functionNameHash == 171782) { // respawnSeeker + return true; + }; + if(functionNameHash == 172007) { // state_Respawn + return true; + }; + if(functionNameHash == 183077) { // state_Inactive + return true; + }; + if(functionNameHash == 126066) { // state_Idle + return true; + }; + if(functionNameHash == 153871) { // state_Killed + return true; + }; + if(functionNameHash == 223983) { // state_WatchPlayer + return true; + }; + if(functionNameHash == 194527) { // state_GetCloser + return true; + }; + if(functionNameHash == 208195) { // state_FindPlayer + return true; + }; + if(functionNameHash == 170832) { // state_Retreat + return true; + }; + if(functionNameHash == 168791) { // state_RunAway + return true; + }; + return __super::HasNativeFunction(functionName); + +}; + intptr_t idTestModel::Invoke(const char *functionName, void *param1) { int functionNameHash = idStr::Hash(functionName); if(functionNameHash == 63102) { // Spawn diff --git a/neo/doom3/game/gamesys/GameTypeInfo.h b/neo/doom3/game/gamesys/GameTypeInfo.h index 384b74f6..1d2b5213 100644 --- a/neo/doom3/game/gamesys/GameTypeInfo.h +++ b/neo/doom3/game/gamesys/GameTypeInfo.h @@ -7,9 +7,9 @@ This file has been generated with the Type Info Generator v1.1 (c) 2004 id Software - 1188 constants - 133 enums - 583 classes/structs/unions + 1199 constants + 135 enums + 619 classes/structs/unions 38 templates 7 max inheritance level for 'idAI_Vagary' @@ -1101,6 +1101,17 @@ static constantInfo_t constantInfo[] = { { "int", "SE_ENTER_OBSTACLE", "4" }, { "int", "SE_FALL", "8" }, { "int", "SE_LAND", "16" }, + { ": static const int", "rvmAIObject::AI_NATIVE_MAX_CHANNELS", "4" }, + { "int", "rvmCharacter::CHAR_TALK_TRIGGERED", "0" }, + { "int", "rvmCharacter::CHAR_TALK_PRIMARY", "1" }, + { "int", "rvmCharacter::CHAR_TALK_SECONDARY", "2" }, + { "int", "rvmCharSentry::RETREATING", "-1" }, + { "int", "rvmCharSentry::NOT_MOVING", "0" }, + { "int", "rvmCharSentry::APPROACHING", "1" }, + { "int", "rvmCharSentry::PLAYER_LOST", "0" }, + { "int", "rvmCharSentry::PLAYER_BEHIND_ME", "1" }, + { "int", "rvmCharSentry::PLAYER_OK", "2" }, + { "int", "rvmCharSentry::PLAYER_AHEAD_OF_ME", "3" }, { "const char * const", "RESULT_STRING", "" }, { "int", "OP_RETURN", "0" }, { "int", "OP_UINC_F", "1" }, @@ -2600,7 +2611,25 @@ static enumValueInfo_t stopEvent_t_typeInfo[] = { { NULL, 0 } }; -static enumValueInfo_t enum_130_typeInfo[] = { +static enumValueInfo_t rvmCharacter_enum_130_typeInfo[] = { + { "CHAR_TALK_TRIGGERED", 0 }, + { "CHAR_TALK_PRIMARY", 1 }, + { "CHAR_TALK_SECONDARY", 2 }, + { NULL, 0 } +}; + +static enumValueInfo_t rvmCharSentry_enum_131_typeInfo[] = { + { "RETREATING", -1 }, + { "NOT_MOVING", 0 }, + { "APPROACHING", 1 }, + { "PLAYER_LOST", 0 }, + { "PLAYER_BEHIND_ME", 1 }, + { "PLAYER_OK", 2 }, + { "PLAYER_AHEAD_OF_ME", 3 }, + { NULL, 0 } +}; + +static enumValueInfo_t enum_132_typeInfo[] = { { "OP_RETURN", 0 }, { "OP_UINC_F", 1 }, { "OP_UINCP_F", 2 }, @@ -2876,7 +2905,9 @@ static enumTypeInfo_t enumTypeInfo[] = { { "talkState_t", talkState_t_typeInfo }, { "moveStatus_t", moveStatus_t_typeInfo }, { "stopEvent_t", stopEvent_t_typeInfo }, - { "enum_130", enum_130_typeInfo }, + { "rvmCharacter::enum_130", rvmCharacter_enum_130_typeInfo }, + { "rvmCharSentry::enum_131", rvmCharSentry_enum_131_typeInfo }, + { "enum_132", enum_132_typeInfo }, { "botMoveFlags_t", botMoveFlags_t_typeInfo }, { "botChat_t", botChat_t_typeInfo }, { NULL, NULL } @@ -6726,14 +6757,13 @@ static classVariableInfo_t idPhantomObjects_typeInfo[] = { static classVariableInfo_t idAnimState_typeInfo[] = { { ": bool", "idleAnim", (intptr_t)(&((idAnimState *)0)->idleAnim), sizeof( ((idAnimState *)0)->idleAnim ) }, - { "idStr", "state", (intptr_t)(&((idAnimState *)0)->state), sizeof( ((idAnimState *)0)->state ) }, { "int", "animBlendFrames", (intptr_t)(&((idAnimState *)0)->animBlendFrames), sizeof( ((idAnimState *)0)->animBlendFrames ) }, { "int", "lastAnimBlendFrames", (intptr_t)(&((idAnimState *)0)->lastAnimBlendFrames), sizeof( ((idAnimState *)0)->lastAnimBlendFrames ) }, - { ": idActor *", "self", (intptr_t)(&((idAnimState *)0)->self), sizeof( ((idAnimState *)0)->self ) }, + { ": idEntity *", "self", (intptr_t)(&((idAnimState *)0)->self), sizeof( ((idAnimState *)0)->self ) }, { "idAnimator *", "animator", (intptr_t)(&((idAnimState *)0)->animator), sizeof( ((idAnimState *)0)->animator ) }, - { "idThread *", "thread", (intptr_t)(&((idAnimState *)0)->thread), sizeof( ((idAnimState *)0)->thread ) }, { "int", "channel", (intptr_t)(&((idAnimState *)0)->channel), sizeof( ((idAnimState *)0)->channel ) }, { "bool", "disabled", (intptr_t)(&((idAnimState *)0)->disabled), sizeof( ((idAnimState *)0)->disabled ) }, + { "rvStateThread", "stateThread", (intptr_t)(&((idAnimState *)0)->stateThread), sizeof( ((idAnimState *)0)->stateThread ) }, { NULL, 0 } }; @@ -8065,6 +8095,8 @@ static classVariableInfo_t idAI_typeInfo[] = { { "idScriptBool", "AI_DEST_UNREACHABLE", (intptr_t)(&((idAI *)0)->AI_DEST_UNREACHABLE), sizeof( ((idAI *)0)->AI_DEST_UNREACHABLE ) }, { "idScriptBool", "AI_HIT_ENEMY", (intptr_t)(&((idAI *)0)->AI_HIT_ENEMY), sizeof( ((idAI *)0)->AI_HIT_ENEMY ) }, { "idScriptBool", "AI_PUSHED", (intptr_t)(&((idAI *)0)->AI_PUSHED), sizeof( ((idAI *)0)->AI_PUSHED ) }, + { "rvmAIObject *", "nativeAIObject", (intptr_t)(&((idAI *)0)->nativeAIObject), sizeof( ((idAI *)0)->nativeAIObject ) }, + { "idStr", "nativeAIObjectName", (intptr_t)(&((idAI *)0)->nativeAIObjectName), sizeof( ((idAI *)0)->nativeAIObjectName ) }, { NULL, 0 } }; @@ -8085,6 +8117,388 @@ static classVariableInfo_t idAI_Vagary_typeInfo[] = { { NULL, 0 } }; +static classVariableInfo_t rvmAIObject_typeInfo[] = { + { "idAI *", "owner", (intptr_t)(&((rvmAIObject *)0)->owner), sizeof( ((rvmAIObject *)0)->owner ) }, + { "idStr", "currentState", (intptr_t)(&((rvmAIObject *)0)->currentState), sizeof( ((rvmAIObject *)0)->currentState ) }, + { "idStr", "currentAction", (intptr_t)(&((rvmAIObject *)0)->currentAction), sizeof( ((rvmAIObject *)0)->currentAction ) }, + { "idStr[4]", "currentAnimState", (intptr_t)(&((rvmAIObject *)0)->currentAnimState), sizeof( ((rvmAIObject *)0)->currentAnimState ) }, + { "idStr", "waitActionName", (intptr_t)(&((rvmAIObject *)0)->waitActionName), sizeof( ((rvmAIObject *)0)->waitActionName ) }, + { "stateParms_t", "stateParms", (intptr_t)(&((rvmAIObject *)0)->stateParms), sizeof( ((rvmAIObject *)0)->stateParms ) }, + { "stateParms_t", "actionParms", (intptr_t)(&((rvmAIObject *)0)->actionParms), sizeof( ((rvmAIObject *)0)->actionParms ) }, + { "stateParms_t[4]", "animParms", (intptr_t)(&((rvmAIObject *)0)->animParms), sizeof( ((rvmAIObject *)0)->animParms ) }, + { "float", "scratchEndTime", (intptr_t)(&((rvmAIObject *)0)->scratchEndTime), sizeof( ((rvmAIObject *)0)->scratchEndTime ) }, + { "float", "scratchMinTime", (intptr_t)(&((rvmAIObject *)0)->scratchMinTime), sizeof( ((rvmAIObject *)0)->scratchMinTime ) }, + { "float", "scratchNextTime", (intptr_t)(&((rvmAIObject *)0)->scratchNextTime), sizeof( ((rvmAIObject *)0)->scratchNextTime ) }, + { "float", "scratchCount", (intptr_t)(&((rvmAIObject *)0)->scratchCount), sizeof( ((rvmAIObject *)0)->scratchCount ) }, + { "float", "scratchFlags", (intptr_t)(&((rvmAIObject *)0)->scratchFlags), sizeof( ((rvmAIObject *)0)->scratchFlags ) }, + { "bool", "scratchBool", (intptr_t)(&((rvmAIObject *)0)->scratchBool), sizeof( ((rvmAIObject *)0)->scratchBool ) }, + { "idEntityPtr < idEntity >", "scratchEntity", (intptr_t)(&((rvmAIObject *)0)->scratchEntity), sizeof( ((rvmAIObject *)0)->scratchEntity ) }, + { "idStr", "scratchString", (intptr_t)(&((rvmAIObject *)0)->scratchString), sizeof( ((rvmAIObject *)0)->scratchString ) }, + { NULL, 0 } +}; + +static classVariableInfo_t rvmMonsterBase_typeInfo[] = { + { ": float", "run_distance", (intptr_t)(&((rvmMonsterBase *)0)->run_distance), sizeof( ((rvmMonsterBase *)0)->run_distance ) }, + { "float", "walk_turn", (intptr_t)(&((rvmMonsterBase *)0)->walk_turn), sizeof( ((rvmMonsterBase *)0)->walk_turn ) }, + { "bool", "run", (intptr_t)(&((rvmMonsterBase *)0)->run), sizeof( ((rvmMonsterBase *)0)->run ) }, + { "bool", "ambush", (intptr_t)(&((rvmMonsterBase *)0)->ambush), sizeof( ((rvmMonsterBase *)0)->ambush ) }, + { "bool", "ignoreEnemies", (intptr_t)(&((rvmMonsterBase *)0)->ignoreEnemies), sizeof( ((rvmMonsterBase *)0)->ignoreEnemies ) }, + { "bool", "stay_on_attackpath", (intptr_t)(&((rvmMonsterBase *)0)->stay_on_attackpath), sizeof( ((rvmMonsterBase *)0)->stay_on_attackpath ) }, + { "bool", "idle_sight_fov", (intptr_t)(&((rvmMonsterBase *)0)->idle_sight_fov), sizeof( ((rvmMonsterBase *)0)->idle_sight_fov ) }, + { "float", "customBlendOut", (intptr_t)(&((rvmMonsterBase *)0)->customBlendOut), sizeof( ((rvmMonsterBase *)0)->customBlendOut ) }, + { "idEntityPtr < idEntity >", "current_path", (intptr_t)(&((rvmMonsterBase *)0)->current_path), sizeof( ((rvmMonsterBase *)0)->current_path ) }, + { "idEntityPtr < idEntity >", "next_path", (intptr_t)(&((rvmMonsterBase *)0)->next_path), sizeof( ((rvmMonsterBase *)0)->next_path ) }, + { "bool", "resurrect", (intptr_t)(&((rvmMonsterBase *)0)->resurrect), sizeof( ((rvmMonsterBase *)0)->resurrect ) }, + { "bool", "ignore_lostcombat", (intptr_t)(&((rvmMonsterBase *)0)->ignore_lostcombat), sizeof( ((rvmMonsterBase *)0)->ignore_lostcombat ) }, + { "bool", "blocked", (intptr_t)(&((rvmMonsterBase *)0)->blocked), sizeof( ((rvmMonsterBase *)0)->blocked ) }, + { "bool", "ignore_sight", (intptr_t)(&((rvmMonsterBase *)0)->ignore_sight), sizeof( ((rvmMonsterBase *)0)->ignore_sight ) }, + { NULL, 0 } +}; + +static classVariableInfo_t rvmMonsterZombieBase_typeInfo[] = { + { NULL, 0 } +}; + +static classVariableInfo_t rvmMonsterZombie_typeInfo[] = { + { ": float", "painNextTime", (intptr_t)(&((rvmMonsterZombie *)0)->painNextTime), sizeof( ((rvmMonsterZombie *)0)->painNextTime ) }, + { "bool", "can_run", (intptr_t)(&((rvmMonsterZombie *)0)->can_run), sizeof( ((rvmMonsterZombie *)0)->can_run ) }, + { NULL, 0 } +}; + +static classVariableInfo_t rvmMonsterZombieBernie_typeInfo[] = { + { ": float", "painNextTime", (intptr_t)(&((rvmMonsterZombieBernie *)0)->painNextTime), sizeof( ((rvmMonsterZombieBernie *)0)->painNextTime ) }, + { NULL, 0 } +}; + +static classVariableInfo_t rvmMonsterZombieMorgue_typeInfo[] = { + { ": float", "painNextTime", (intptr_t)(&((rvmMonsterZombieMorgue *)0)->painNextTime), sizeof( ((rvmMonsterZombieMorgue *)0)->painNextTime ) }, + { NULL, 0 } +}; + +static classVariableInfo_t rvmMonsterZombieSawyer_typeInfo[] = { + { ": bool", "attack", (intptr_t)(&((rvmMonsterZombieSawyer *)0)->attack), sizeof( ((rvmMonsterZombieSawyer *)0)->attack ) }, + { "float", "painNextTime", (intptr_t)(&((rvmMonsterZombieSawyer *)0)->painNextTime), sizeof( ((rvmMonsterZombieSawyer *)0)->painNextTime ) }, + { "float", "nextHitTime", (intptr_t)(&((rvmMonsterZombieSawyer *)0)->nextHitTime), sizeof( ((rvmMonsterZombieSawyer *)0)->nextHitTime ) }, + { "int", "bloodSmokeFrames", (intptr_t)(&((rvmMonsterZombieSawyer *)0)->bloodSmokeFrames), sizeof( ((rvmMonsterZombieSawyer *)0)->bloodSmokeFrames ) }, + { NULL, 0 } +}; + +static classVariableInfo_t rvmMonsterZombieCommandoTentacle_typeInfo[] = { + { ": float", "nextAttack", (intptr_t)(&((rvmMonsterZombieCommandoTentacle *)0)->nextAttack), sizeof( ((rvmMonsterZombieCommandoTentacle *)0)->nextAttack ) }, + { "float", "nextNoFOVAttack", (intptr_t)(&((rvmMonsterZombieCommandoTentacle *)0)->nextNoFOVAttack), sizeof( ((rvmMonsterZombieCommandoTentacle *)0)->nextNoFOVAttack ) }, + { "bool", "tentacleDamage", (intptr_t)(&((rvmMonsterZombieCommandoTentacle *)0)->tentacleDamage), sizeof( ((rvmMonsterZombieCommandoTentacle *)0)->tentacleDamage ) }, + { "float", "painNextTime", (intptr_t)(&((rvmMonsterZombieCommandoTentacle *)0)->painNextTime), sizeof( ((rvmMonsterZombieCommandoTentacle *)0)->painNextTime ) }, + { NULL, 0 } +}; + +static classVariableInfo_t rvmMonsterZombieCommandoCGun_typeInfo[] = { + { ": bool", "fire", (intptr_t)(&((rvmMonsterZombieCommandoCGun *)0)->fire), sizeof( ((rvmMonsterZombieCommandoCGun *)0)->fire ) }, + { "bool", "crouch_fire", (intptr_t)(&((rvmMonsterZombieCommandoCGun *)0)->crouch_fire), sizeof( ((rvmMonsterZombieCommandoCGun *)0)->crouch_fire ) }, + { "bool", "step_left", (intptr_t)(&((rvmMonsterZombieCommandoCGun *)0)->step_left), sizeof( ((rvmMonsterZombieCommandoCGun *)0)->step_left ) }, + { "bool", "step_right", (intptr_t)(&((rvmMonsterZombieCommandoCGun *)0)->step_right), sizeof( ((rvmMonsterZombieCommandoCGun *)0)->step_right ) }, + { "bool", "run_attack", (intptr_t)(&((rvmMonsterZombieCommandoCGun *)0)->run_attack), sizeof( ((rvmMonsterZombieCommandoCGun *)0)->run_attack ) }, + { "float", "nextDodge", (intptr_t)(&((rvmMonsterZombieCommandoCGun *)0)->nextDodge), sizeof( ((rvmMonsterZombieCommandoCGun *)0)->nextDodge ) }, + { "float", "nextAttack", (intptr_t)(&((rvmMonsterZombieCommandoCGun *)0)->nextAttack), sizeof( ((rvmMonsterZombieCommandoCGun *)0)->nextAttack ) }, + { "float", "nextNoFOVAttack", (intptr_t)(&((rvmMonsterZombieCommandoCGun *)0)->nextNoFOVAttack), sizeof( ((rvmMonsterZombieCommandoCGun *)0)->nextNoFOVAttack ) }, + { "idEntityPtr < idEntity >", "combat_node", (intptr_t)(&((rvmMonsterZombieCommandoCGun *)0)->combat_node), sizeof( ((rvmMonsterZombieCommandoCGun *)0)->combat_node ) }, + { "float", "painNextTime", (intptr_t)(&((rvmMonsterZombieCommandoCGun *)0)->painNextTime), sizeof( ((rvmMonsterZombieCommandoCGun *)0)->painNextTime ) }, + { "float", "attackEndTime", (intptr_t)(&((rvmMonsterZombieCommandoCGun *)0)->attackEndTime), sizeof( ((rvmMonsterZombieCommandoCGun *)0)->attackEndTime ) }, + { "float", "loopEndTime", (intptr_t)(&((rvmMonsterZombieCommandoCGun *)0)->loopEndTime), sizeof( ((rvmMonsterZombieCommandoCGun *)0)->loopEndTime ) }, + { "float", "minShootTime", (intptr_t)(&((rvmMonsterZombieCommandoCGun *)0)->minShootTime), sizeof( ((rvmMonsterZombieCommandoCGun *)0)->minShootTime ) }, + { "bool", "firstShot", (intptr_t)(&((rvmMonsterZombieCommandoCGun *)0)->firstShot), sizeof( ((rvmMonsterZombieCommandoCGun *)0)->firstShot ) }, + { NULL, 0 } +}; + +static classVariableInfo_t rvmMonsterZombieSecurityPistol_typeInfo[] = { + { ": bool", "fire", (intptr_t)(&((rvmMonsterZombieSecurityPistol *)0)->fire), sizeof( ((rvmMonsterZombieSecurityPistol *)0)->fire ) }, + { "bool", "crouch_fire", (intptr_t)(&((rvmMonsterZombieSecurityPistol *)0)->crouch_fire), sizeof( ((rvmMonsterZombieSecurityPistol *)0)->crouch_fire ) }, + { "bool", "step_left", (intptr_t)(&((rvmMonsterZombieSecurityPistol *)0)->step_left), sizeof( ((rvmMonsterZombieSecurityPistol *)0)->step_left ) }, + { "bool", "step_right", (intptr_t)(&((rvmMonsterZombieSecurityPistol *)0)->step_right), sizeof( ((rvmMonsterZombieSecurityPistol *)0)->step_right ) }, + { "bool", "run_attack", (intptr_t)(&((rvmMonsterZombieSecurityPistol *)0)->run_attack), sizeof( ((rvmMonsterZombieSecurityPistol *)0)->run_attack ) }, + { "float", "nextDodge", (intptr_t)(&((rvmMonsterZombieSecurityPistol *)0)->nextDodge), sizeof( ((rvmMonsterZombieSecurityPistol *)0)->nextDodge ) }, + { "float", "nextAttack", (intptr_t)(&((rvmMonsterZombieSecurityPistol *)0)->nextAttack), sizeof( ((rvmMonsterZombieSecurityPistol *)0)->nextAttack ) }, + { "float", "nextNoFOVAttack", (intptr_t)(&((rvmMonsterZombieSecurityPistol *)0)->nextNoFOVAttack), sizeof( ((rvmMonsterZombieSecurityPistol *)0)->nextNoFOVAttack ) }, + { "idEntityPtr < idEntity >", "combat_node", (intptr_t)(&((rvmMonsterZombieSecurityPistol *)0)->combat_node), sizeof( ((rvmMonsterZombieSecurityPistol *)0)->combat_node ) }, + { "float", "painNextTime", (intptr_t)(&((rvmMonsterZombieSecurityPistol *)0)->painNextTime), sizeof( ((rvmMonsterZombieSecurityPistol *)0)->painNextTime ) }, + { "float", "attackEndTime", (intptr_t)(&((rvmMonsterZombieSecurityPistol *)0)->attackEndTime), sizeof( ((rvmMonsterZombieSecurityPistol *)0)->attackEndTime ) }, + { "float", "loopEndTime", (intptr_t)(&((rvmMonsterZombieSecurityPistol *)0)->loopEndTime), sizeof( ((rvmMonsterZombieSecurityPistol *)0)->loopEndTime ) }, + { "float", "minShootTime", (intptr_t)(&((rvmMonsterZombieSecurityPistol *)0)->minShootTime), sizeof( ((rvmMonsterZombieSecurityPistol *)0)->minShootTime ) }, + { "bool", "firstShot", (intptr_t)(&((rvmMonsterZombieSecurityPistol *)0)->firstShot), sizeof( ((rvmMonsterZombieSecurityPistol *)0)->firstShot ) }, + { NULL, 0 } +}; + +static classVariableInfo_t rvmCharacter_typeInfo[] = { + { "float", "talkMode", (intptr_t)(&((rvmCharacter *)0)->talkMode), sizeof( ((rvmCharacter *)0)->talkMode ) }, + { "int", "talkSecondaryIndex", (intptr_t)(&((rvmCharacter *)0)->talkSecondaryIndex), sizeof( ((rvmCharacter *)0)->talkSecondaryIndex ) }, + { "idStr", "customAnim", (intptr_t)(&((rvmCharacter *)0)->customAnim), sizeof( ((rvmCharacter *)0)->customAnim ) }, + { "float", "customBlendOut", (intptr_t)(&((rvmCharacter *)0)->customBlendOut), sizeof( ((rvmCharacter *)0)->customBlendOut ) }, + { "idStr", "walkAnim", (intptr_t)(&((rvmCharacter *)0)->walkAnim), sizeof( ((rvmCharacter *)0)->walkAnim ) }, + { "bool", "allowTurn", (intptr_t)(&((rvmCharacter *)0)->allowTurn), sizeof( ((rvmCharacter *)0)->allowTurn ) }, + { "bool", "run", (intptr_t)(&((rvmCharacter *)0)->run), sizeof( ((rvmCharacter *)0)->run ) }, + { "bool", "canTalk", (intptr_t)(&((rvmCharacter *)0)->canTalk), sizeof( ((rvmCharacter *)0)->canTalk ) }, + { "bool", "noCower", (intptr_t)(&((rvmCharacter *)0)->noCower), sizeof( ((rvmCharacter *)0)->noCower ) }, + { "bool", "noCowerSaved", (intptr_t)(&((rvmCharacter *)0)->noCowerSaved), sizeof( ((rvmCharacter *)0)->noCowerSaved ) }, + { "bool", "ignorePush", (intptr_t)(&((rvmCharacter *)0)->ignorePush), sizeof( ((rvmCharacter *)0)->ignorePush ) }, + { "bool", "skipOutOfPath", (intptr_t)(&((rvmCharacter *)0)->skipOutOfPath), sizeof( ((rvmCharacter *)0)->skipOutOfPath ) }, + { "bool", "followNodes", (intptr_t)(&((rvmCharacter *)0)->followNodes), sizeof( ((rvmCharacter *)0)->followNodes ) }, + { "bool", "dontPushOthers", (intptr_t)(&((rvmCharacter *)0)->dontPushOthers), sizeof( ((rvmCharacter *)0)->dontPushOthers ) }, + { "float", "lastPushTime", (intptr_t)(&((rvmCharacter *)0)->lastPushTime), sizeof( ((rvmCharacter *)0)->lastPushTime ) }, + { "float", "pushTime", (intptr_t)(&((rvmCharacter *)0)->pushTime), sizeof( ((rvmCharacter *)0)->pushTime ) }, + { "float", "talkEndTime", (intptr_t)(&((rvmCharacter *)0)->talkEndTime), sizeof( ((rvmCharacter *)0)->talkEndTime ) }, + { "float", "talkChannel", (intptr_t)(&((rvmCharacter *)0)->talkChannel), sizeof( ((rvmCharacter *)0)->talkChannel ) }, + { "float", "talkOriginalYaw", (intptr_t)(&((rvmCharacter *)0)->talkOriginalYaw), sizeof( ((rvmCharacter *)0)->talkOriginalYaw ) }, + { "idEntityPtr < idEntity >", "current_path", (intptr_t)(&((rvmCharacter *)0)->current_path), sizeof( ((rvmCharacter *)0)->current_path ) }, + { "idEntityPtr < idEntity >", "next_path", (intptr_t)(&((rvmCharacter *)0)->next_path), sizeof( ((rvmCharacter *)0)->next_path ) }, + { "idEntityPtr < idEntity >", "listening_to_character", (intptr_t)(&((rvmCharacter *)0)->listening_to_character), sizeof( ((rvmCharacter *)0)->listening_to_character ) }, + { "idEntityPtr < idEntity >", "next_listener", (intptr_t)(&((rvmCharacter *)0)->next_listener), sizeof( ((rvmCharacter *)0)->next_listener ) }, + { NULL, 0 } +}; + +static classVariableInfo_t rvmAICharacterProne_typeInfo[] = { + { NULL, 0 } +}; + +static classVariableInfo_t rvmFollower_typeInfo[] = { + { NULL, 0 } +}; + +static classVariableInfo_t rvmCharSentry_typeInfo[] = { + { "bool", "lead_player", (intptr_t)(&((rvmCharSentry *)0)->lead_player), sizeof( ((rvmCharSentry *)0)->lead_player ) }, + { "bool", "hanging", (intptr_t)(&((rvmCharSentry *)0)->hanging), sizeof( ((rvmCharSentry *)0)->hanging ) }, + { "bool", "awake", (intptr_t)(&((rvmCharSentry *)0)->awake), sizeof( ((rvmCharSentry *)0)->awake ) }, + { "bool", "fire", (intptr_t)(&((rvmCharSentry *)0)->fire), sizeof( ((rvmCharSentry *)0)->fire ) }, + { "float", "playerMoveState", (intptr_t)(&((rvmCharSentry *)0)->playerMoveState), sizeof( ((rvmCharSentry *)0)->playerMoveState ) }, + { "idEntityPtr < idEntity >", "light", (intptr_t)(&((rvmCharSentry *)0)->light), sizeof( ((rvmCharSentry *)0)->light ) }, + { "bool", "light_on", (intptr_t)(&((rvmCharSentry *)0)->light_on), sizeof( ((rvmCharSentry *)0)->light_on ) }, + { "float", "nextPositionSearch", (intptr_t)(&((rvmCharSentry *)0)->nextPositionSearch), sizeof( ((rvmCharSentry *)0)->nextPositionSearch ) }, + { "idEntityPtr < idEntity >", "ignore_enemy", (intptr_t)(&((rvmCharSentry *)0)->ignore_enemy), sizeof( ((rvmCharSentry *)0)->ignore_enemy ) }, + { "float", "ignore_enemy_time", (intptr_t)(&((rvmCharSentry *)0)->ignore_enemy_time), sizeof( ((rvmCharSentry *)0)->ignore_enemy_time ) }, + { "idVec3", "lastValidPlayerPosition", (intptr_t)(&((rvmCharSentry *)0)->lastValidPlayerPosition), sizeof( ((rvmCharSentry *)0)->lastValidPlayerPosition ) }, + { "bool", "playerPositionThread", (intptr_t)(&((rvmCharSentry *)0)->playerPositionThread), sizeof( ((rvmCharSentry *)0)->playerPositionThread ) }, + { "float", "nextLookTime", (intptr_t)(&((rvmCharSentry *)0)->nextLookTime), sizeof( ((rvmCharSentry *)0)->nextLookTime ) }, + { "float", "leadTimeout", (intptr_t)(&((rvmCharSentry *)0)->leadTimeout), sizeof( ((rvmCharSentry *)0)->leadTimeout ) }, + { "int", "shotsFired", (intptr_t)(&((rvmCharSentry *)0)->shotsFired), sizeof( ((rvmCharSentry *)0)->shotsFired ) }, + { "float", "nextFireTime", (intptr_t)(&((rvmCharSentry *)0)->nextFireTime), sizeof( ((rvmCharSentry *)0)->nextFireTime ) }, + { NULL, 0 } +}; + +static classVariableInfo_t rvmAIAlphaLabs2Scientist1_typeInfo[] = { + { NULL, 0 } +}; + +static classVariableInfo_t rvmMonsterDemonPinky_typeInfo[] = { + { ": float", "nextDodge", (intptr_t)(&((rvmMonsterDemonPinky *)0)->nextDodge), sizeof( ((rvmMonsterDemonPinky *)0)->nextDodge ) }, + { "float", "nextRoar", (intptr_t)(&((rvmMonsterDemonPinky *)0)->nextRoar), sizeof( ((rvmMonsterDemonPinky *)0)->nextRoar ) }, + { "float", "painNextTime", (intptr_t)(&((rvmMonsterDemonPinky *)0)->painNextTime), sizeof( ((rvmMonsterDemonPinky *)0)->painNextTime ) }, + { "idEntityPtr < idEntity >", "combat_node", (intptr_t)(&((rvmMonsterDemonPinky *)0)->combat_node), sizeof( ((rvmMonsterDemonPinky *)0)->combat_node ) }, + { NULL, 0 } +}; + +static classVariableInfo_t rvmMonsterDemonImp_typeInfo[] = { + { ": float", "nextDodge", (intptr_t)(&((rvmMonsterDemonImp *)0)->nextDodge), sizeof( ((rvmMonsterDemonImp *)0)->nextDodge ) }, + { "float", "nextAttack", (intptr_t)(&((rvmMonsterDemonImp *)0)->nextAttack), sizeof( ((rvmMonsterDemonImp *)0)->nextAttack ) }, + { "float", "nextNoFOVAttack", (intptr_t)(&((rvmMonsterDemonImp *)0)->nextNoFOVAttack), sizeof( ((rvmMonsterDemonImp *)0)->nextNoFOVAttack ) }, + { "float", "nextLeap", (intptr_t)(&((rvmMonsterDemonImp *)0)->nextLeap), sizeof( ((rvmMonsterDemonImp *)0)->nextLeap ) }, + { "float", "painNextTime", (intptr_t)(&((rvmMonsterDemonImp *)0)->painNextTime), sizeof( ((rvmMonsterDemonImp *)0)->painNextTime ) }, + { "idVec3", "jumpVelocity", (intptr_t)(&((rvmMonsterDemonImp *)0)->jumpVelocity), sizeof( ((rvmMonsterDemonImp *)0)->jumpVelocity ) }, + { "idStr", "range_attack_anim", (intptr_t)(&((rvmMonsterDemonImp *)0)->range_attack_anim), sizeof( ((rvmMonsterDemonImp *)0)->range_attack_anim ) }, + { "idEntityPtr < idEntity >", "combat_node", (intptr_t)(&((rvmMonsterDemonImp *)0)->combat_node), sizeof( ((rvmMonsterDemonImp *)0)->combat_node ) }, + { NULL, 0 } +}; + +static classVariableInfo_t rvmMonsterDemonVulgar_typeInfo[] = { + { ": float", "nextDodge", (intptr_t)(&((rvmMonsterDemonVulgar *)0)->nextDodge), sizeof( ((rvmMonsterDemonVulgar *)0)->nextDodge ) }, + { "float", "nextAttack", (intptr_t)(&((rvmMonsterDemonVulgar *)0)->nextAttack), sizeof( ((rvmMonsterDemonVulgar *)0)->nextAttack ) }, + { "float", "nextNoFOVAttack", (intptr_t)(&((rvmMonsterDemonVulgar *)0)->nextNoFOVAttack), sizeof( ((rvmMonsterDemonVulgar *)0)->nextNoFOVAttack ) }, + { "float", "nextLeap", (intptr_t)(&((rvmMonsterDemonVulgar *)0)->nextLeap), sizeof( ((rvmMonsterDemonVulgar *)0)->nextLeap ) }, + { "float", "painNextTime", (intptr_t)(&((rvmMonsterDemonVulgar *)0)->painNextTime), sizeof( ((rvmMonsterDemonVulgar *)0)->painNextTime ) }, + { "idVec3", "jumpVelocity", (intptr_t)(&((rvmMonsterDemonVulgar *)0)->jumpVelocity), sizeof( ((rvmMonsterDemonVulgar *)0)->jumpVelocity ) }, + { "idStr", "range_attack_anim", (intptr_t)(&((rvmMonsterDemonVulgar *)0)->range_attack_anim), sizeof( ((rvmMonsterDemonVulgar *)0)->range_attack_anim ) }, + { "idEntityPtr < idEntity >", "combat_node", (intptr_t)(&((rvmMonsterDemonVulgar *)0)->combat_node), sizeof( ((rvmMonsterDemonVulgar *)0)->combat_node ) }, + { NULL, 0 } +}; + +static classVariableInfo_t rvmMonsterDemonRevenant_typeInfo[] = { + { ": float", "nextDodge", (intptr_t)(&((rvmMonsterDemonRevenant *)0)->nextDodge), sizeof( ((rvmMonsterDemonRevenant *)0)->nextDodge ) }, + { "float", "nextAttack", (intptr_t)(&((rvmMonsterDemonRevenant *)0)->nextAttack), sizeof( ((rvmMonsterDemonRevenant *)0)->nextAttack ) }, + { "float", "nextNoFOVAttack", (intptr_t)(&((rvmMonsterDemonRevenant *)0)->nextNoFOVAttack), sizeof( ((rvmMonsterDemonRevenant *)0)->nextNoFOVAttack ) }, + { "float", "nextLeap", (intptr_t)(&((rvmMonsterDemonRevenant *)0)->nextLeap), sizeof( ((rvmMonsterDemonRevenant *)0)->nextLeap ) }, + { "float", "painNextTime", (intptr_t)(&((rvmMonsterDemonRevenant *)0)->painNextTime), sizeof( ((rvmMonsterDemonRevenant *)0)->painNextTime ) }, + { "idVec3", "jumpVelocity", (intptr_t)(&((rvmMonsterDemonRevenant *)0)->jumpVelocity), sizeof( ((rvmMonsterDemonRevenant *)0)->jumpVelocity ) }, + { "idStr", "range_attack_anim", (intptr_t)(&((rvmMonsterDemonRevenant *)0)->range_attack_anim), sizeof( ((rvmMonsterDemonRevenant *)0)->range_attack_anim ) }, + { "idEntityPtr < idEntity >", "combat_node", (intptr_t)(&((rvmMonsterDemonRevenant *)0)->combat_node), sizeof( ((rvmMonsterDemonRevenant *)0)->combat_node ) }, + { NULL, 0 } +}; + +static classVariableInfo_t rvmMonsterDemonHellknight_typeInfo[] = { + { ": float", "nextDodge", (intptr_t)(&((rvmMonsterDemonHellknight *)0)->nextDodge), sizeof( ((rvmMonsterDemonHellknight *)0)->nextDodge ) }, + { "float", "nextAttack", (intptr_t)(&((rvmMonsterDemonHellknight *)0)->nextAttack), sizeof( ((rvmMonsterDemonHellknight *)0)->nextAttack ) }, + { "float", "nextNoFOVAttack", (intptr_t)(&((rvmMonsterDemonHellknight *)0)->nextNoFOVAttack), sizeof( ((rvmMonsterDemonHellknight *)0)->nextNoFOVAttack ) }, + { "float", "nextLeap", (intptr_t)(&((rvmMonsterDemonHellknight *)0)->nextLeap), sizeof( ((rvmMonsterDemonHellknight *)0)->nextLeap ) }, + { "float", "painNextTime", (intptr_t)(&((rvmMonsterDemonHellknight *)0)->painNextTime), sizeof( ((rvmMonsterDemonHellknight *)0)->painNextTime ) }, + { "idVec3", "jumpVelocity", (intptr_t)(&((rvmMonsterDemonHellknight *)0)->jumpVelocity), sizeof( ((rvmMonsterDemonHellknight *)0)->jumpVelocity ) }, + { "idStr", "range_attack_anim", (intptr_t)(&((rvmMonsterDemonHellknight *)0)->range_attack_anim), sizeof( ((rvmMonsterDemonHellknight *)0)->range_attack_anim ) }, + { "idEntityPtr < idEntity >", "combat_node", (intptr_t)(&((rvmMonsterDemonHellknight *)0)->combat_node), sizeof( ((rvmMonsterDemonHellknight *)0)->combat_node ) }, + { NULL, 0 } +}; + +static classVariableInfo_t rvmMonsterDemonMaggot_typeInfo[] = { + { ": bool", "explode", (intptr_t)(&((rvmMonsterDemonMaggot *)0)->explode), sizeof( ((rvmMonsterDemonMaggot *)0)->explode ) }, + { "float", "nextDodge", (intptr_t)(&((rvmMonsterDemonMaggot *)0)->nextDodge), sizeof( ((rvmMonsterDemonMaggot *)0)->nextDodge ) }, + { "float", "nextLeap", (intptr_t)(&((rvmMonsterDemonMaggot *)0)->nextLeap), sizeof( ((rvmMonsterDemonMaggot *)0)->nextLeap ) }, + { "float", "painNextTime", (intptr_t)(&((rvmMonsterDemonMaggot *)0)->painNextTime), sizeof( ((rvmMonsterDemonMaggot *)0)->painNextTime ) }, + { "idVec3", "jumpVelocity", (intptr_t)(&((rvmMonsterDemonMaggot *)0)->jumpVelocity), sizeof( ((rvmMonsterDemonMaggot *)0)->jumpVelocity ) }, + { "idEntityPtr < idEntity >", "combat_node", (intptr_t)(&((rvmMonsterDemonMaggot *)0)->combat_node), sizeof( ((rvmMonsterDemonMaggot *)0)->combat_node ) }, + { NULL, 0 } +}; + +static classVariableInfo_t rvmMonsterDemonCherub_typeInfo[] = { + { ": bool", "explode", (intptr_t)(&((rvmMonsterDemonCherub *)0)->explode), sizeof( ((rvmMonsterDemonCherub *)0)->explode ) }, + { "float", "nextDodge", (intptr_t)(&((rvmMonsterDemonCherub *)0)->nextDodge), sizeof( ((rvmMonsterDemonCherub *)0)->nextDodge ) }, + { "float", "nextLeap", (intptr_t)(&((rvmMonsterDemonCherub *)0)->nextLeap), sizeof( ((rvmMonsterDemonCherub *)0)->nextLeap ) }, + { "float", "painNextTime", (intptr_t)(&((rvmMonsterDemonCherub *)0)->painNextTime), sizeof( ((rvmMonsterDemonCherub *)0)->painNextTime ) }, + { "idVec3", "jumpVelocity", (intptr_t)(&((rvmMonsterDemonCherub *)0)->jumpVelocity), sizeof( ((rvmMonsterDemonCherub *)0)->jumpVelocity ) }, + { "idEntityPtr < idEntity >", "combat_node", (intptr_t)(&((rvmMonsterDemonCherub *)0)->combat_node), sizeof( ((rvmMonsterDemonCherub *)0)->combat_node ) }, + { NULL, 0 } +}; + +static classVariableInfo_t rvmMonsterDemonTrite_typeInfo[] = { + { ": bool", "explode", (intptr_t)(&((rvmMonsterDemonTrite *)0)->explode), sizeof( ((rvmMonsterDemonTrite *)0)->explode ) }, + { "float", "nextDodge", (intptr_t)(&((rvmMonsterDemonTrite *)0)->nextDodge), sizeof( ((rvmMonsterDemonTrite *)0)->nextDodge ) }, + { "float", "nextLeap", (intptr_t)(&((rvmMonsterDemonTrite *)0)->nextLeap), sizeof( ((rvmMonsterDemonTrite *)0)->nextLeap ) }, + { "float", "painNextTime", (intptr_t)(&((rvmMonsterDemonTrite *)0)->painNextTime), sizeof( ((rvmMonsterDemonTrite *)0)->painNextTime ) }, + { "idVec3", "jumpVelocity", (intptr_t)(&((rvmMonsterDemonTrite *)0)->jumpVelocity), sizeof( ((rvmMonsterDemonTrite *)0)->jumpVelocity ) }, + { "idEntityPtr < idEntity >", "combat_node", (intptr_t)(&((rvmMonsterDemonTrite *)0)->combat_node), sizeof( ((rvmMonsterDemonTrite *)0)->combat_node ) }, + { NULL, 0 } +}; + +static classVariableInfo_t rvmMonsterDemonWraith_typeInfo[] = { + { ": bool", "invisible", (intptr_t)(&((rvmMonsterDemonWraith *)0)->invisible), sizeof( ((rvmMonsterDemonWraith *)0)->invisible ) }, + { "float", "nextDodge", (intptr_t)(&((rvmMonsterDemonWraith *)0)->nextDodge), sizeof( ((rvmMonsterDemonWraith *)0)->nextDodge ) }, + { "float", "nextInvisible", (intptr_t)(&((rvmMonsterDemonWraith *)0)->nextInvisible), sizeof( ((rvmMonsterDemonWraith *)0)->nextInvisible ) }, + { "float", "painNextTime", (intptr_t)(&((rvmMonsterDemonWraith *)0)->painNextTime), sizeof( ((rvmMonsterDemonWraith *)0)->painNextTime ) }, + { "idEntityPtr < idEntity >", "combat_node", (intptr_t)(&((rvmMonsterDemonWraith *)0)->combat_node), sizeof( ((rvmMonsterDemonWraith *)0)->combat_node ) }, + { "idEntityPtr < idEntity >", "spawn_effect", (intptr_t)(&((rvmMonsterDemonWraith *)0)->spawn_effect), sizeof( ((rvmMonsterDemonWraith *)0)->spawn_effect ) }, + { NULL, 0 } +}; + +static classVariableInfo_t rvmMonsterDemonMancubus_typeInfo[] = { + { ": float", "nextAttack", (intptr_t)(&((rvmMonsterDemonMancubus *)0)->nextAttack), sizeof( ((rvmMonsterDemonMancubus *)0)->nextAttack ) }, + { "float", "nextNoFOVAttack", (intptr_t)(&((rvmMonsterDemonMancubus *)0)->nextNoFOVAttack), sizeof( ((rvmMonsterDemonMancubus *)0)->nextNoFOVAttack ) }, + { "float", "fire", (intptr_t)(&((rvmMonsterDemonMancubus *)0)->fire), sizeof( ((rvmMonsterDemonMancubus *)0)->fire ) }, + { "float", "painNextTime", (intptr_t)(&((rvmMonsterDemonMancubus *)0)->painNextTime), sizeof( ((rvmMonsterDemonMancubus *)0)->painNextTime ) }, + { "idEntityPtr < idEntity >", "combat_node", (intptr_t)(&((rvmMonsterDemonMancubus *)0)->combat_node), sizeof( ((rvmMonsterDemonMancubus *)0)->combat_node ) }, + { NULL, 0 } +}; + +static classVariableInfo_t rvmMonsterDemonArchvile_typeInfo[] = { + { ": float", "nextDodge", (intptr_t)(&((rvmMonsterDemonArchvile *)0)->nextDodge), sizeof( ((rvmMonsterDemonArchvile *)0)->nextDodge ) }, + { "float", "nextAttack", (intptr_t)(&((rvmMonsterDemonArchvile *)0)->nextAttack), sizeof( ((rvmMonsterDemonArchvile *)0)->nextAttack ) }, + { "float", "nextNoFOVAttack", (intptr_t)(&((rvmMonsterDemonArchvile *)0)->nextNoFOVAttack), sizeof( ((rvmMonsterDemonArchvile *)0)->nextNoFOVAttack ) }, + { "float", "painNextTime", (intptr_t)(&((rvmMonsterDemonArchvile *)0)->painNextTime), sizeof( ((rvmMonsterDemonArchvile *)0)->painNextTime ) }, + { "float", "keep_alive", (intptr_t)(&((rvmMonsterDemonArchvile *)0)->keep_alive), sizeof( ((rvmMonsterDemonArchvile *)0)->keep_alive ) }, + { "float", "num_start", (intptr_t)(&((rvmMonsterDemonArchvile *)0)->num_start), sizeof( ((rvmMonsterDemonArchvile *)0)->num_start ) }, + { "float", "summon_delay", (intptr_t)(&((rvmMonsterDemonArchvile *)0)->summon_delay), sizeof( ((rvmMonsterDemonArchvile *)0)->summon_delay ) }, + { "float", "summon_time", (intptr_t)(&((rvmMonsterDemonArchvile *)0)->summon_time), sizeof( ((rvmMonsterDemonArchvile *)0)->summon_time ) }, + { "idEntityPtr < idEntity >", "combat_node", (intptr_t)(&((rvmMonsterDemonArchvile *)0)->combat_node), sizeof( ((rvmMonsterDemonArchvile *)0)->combat_node ) }, + { "idEntityPtr < idEntity >", "resurrectionTarget", (intptr_t)(&((rvmMonsterDemonArchvile *)0)->resurrectionTarget), sizeof( ((rvmMonsterDemonArchvile *)0)->resurrectionTarget ) }, + { "idVec3", "flameWallOrigin", (intptr_t)(&((rvmMonsterDemonArchvile *)0)->flameWallOrigin), sizeof( ((rvmMonsterDemonArchvile *)0)->flameWallOrigin ) }, + { "idVec3", "incinerateOrigin", (intptr_t)(&((rvmMonsterDemonArchvile *)0)->incinerateOrigin), sizeof( ((rvmMonsterDemonArchvile *)0)->incinerateOrigin ) }, + { NULL, 0 } +}; + +static classVariableInfo_t rvmMonsterFlyingCacodemon_typeInfo[] = { + { ": float", "nextAttack", (intptr_t)(&((rvmMonsterFlyingCacodemon *)0)->nextAttack), sizeof( ((rvmMonsterFlyingCacodemon *)0)->nextAttack ) }, + { "float", "nextNoFOVAttack", (intptr_t)(&((rvmMonsterFlyingCacodemon *)0)->nextNoFOVAttack), sizeof( ((rvmMonsterFlyingCacodemon *)0)->nextNoFOVAttack ) }, + { "float", "painNextTime", (intptr_t)(&((rvmMonsterFlyingCacodemon *)0)->painNextTime), sizeof( ((rvmMonsterFlyingCacodemon *)0)->painNextTime ) }, + { "idEntityPtr < idEntity >", "combat_node", (intptr_t)(&((rvmMonsterFlyingCacodemon *)0)->combat_node), sizeof( ((rvmMonsterFlyingCacodemon *)0)->combat_node ) }, + { NULL, 0 } +}; + +static classVariableInfo_t rvmMonsterFlyingLostsoul_typeInfo[] = { + { ": float", "nextAttack", (intptr_t)(&((rvmMonsterFlyingLostsoul *)0)->nextAttack), sizeof( ((rvmMonsterFlyingLostsoul *)0)->nextAttack ) }, + { "float", "nextNoFOVAttack", (intptr_t)(&((rvmMonsterFlyingLostsoul *)0)->nextNoFOVAttack), sizeof( ((rvmMonsterFlyingLostsoul *)0)->nextNoFOVAttack ) }, + { "float", "noMeleeTime", (intptr_t)(&((rvmMonsterFlyingLostsoul *)0)->noMeleeTime), sizeof( ((rvmMonsterFlyingLostsoul *)0)->noMeleeTime ) }, + { "float", "fly_offset", (intptr_t)(&((rvmMonsterFlyingLostsoul *)0)->fly_offset), sizeof( ((rvmMonsterFlyingLostsoul *)0)->fly_offset ) }, + { "float", "painNextTime", (intptr_t)(&((rvmMonsterFlyingLostsoul *)0)->painNextTime), sizeof( ((rvmMonsterFlyingLostsoul *)0)->painNextTime ) }, + { "idVec3", "chargeVelocity", (intptr_t)(&((rvmMonsterFlyingLostsoul *)0)->chargeVelocity), sizeof( ((rvmMonsterFlyingLostsoul *)0)->chargeVelocity ) }, + { NULL, 0 } +}; + +static classVariableInfo_t rvmMonsterTurret_typeInfo[] = { + { ": bool", "fire", (intptr_t)(&((rvmMonsterTurret *)0)->fire), sizeof( ((rvmMonsterTurret *)0)->fire ) }, + { "bool", "attack_monsters", (intptr_t)(&((rvmMonsterTurret *)0)->attack_monsters), sizeof( ((rvmMonsterTurret *)0)->attack_monsters ) }, + { "bool", "light_is_on", (intptr_t)(&((rvmMonsterTurret *)0)->light_is_on), sizeof( ((rvmMonsterTurret *)0)->light_is_on ) }, + { "float", "attackTime", (intptr_t)(&((rvmMonsterTurret *)0)->attackTime), sizeof( ((rvmMonsterTurret *)0)->attackTime ) }, + { "float", "nextFireTime", (intptr_t)(&((rvmMonsterTurret *)0)->nextFireTime), sizeof( ((rvmMonsterTurret *)0)->nextFireTime ) }, + { "float", "shutdownTime", (intptr_t)(&((rvmMonsterTurret *)0)->shutdownTime), sizeof( ((rvmMonsterTurret *)0)->shutdownTime ) }, + { "idEntityPtr < idEntity >", "light", (intptr_t)(&((rvmMonsterTurret *)0)->light), sizeof( ((rvmMonsterTurret *)0)->light ) }, + { NULL, 0 } +}; + +static classVariableInfo_t rvmMonsterBossCyberdemon_typeInfo[] = { + { ": float", "nextAttack", (intptr_t)(&((rvmMonsterBossCyberdemon *)0)->nextAttack), sizeof( ((rvmMonsterBossCyberdemon *)0)->nextAttack ) }, + { "float", "nextNoFOVAttack", (intptr_t)(&((rvmMonsterBossCyberdemon *)0)->nextNoFOVAttack), sizeof( ((rvmMonsterBossCyberdemon *)0)->nextNoFOVAttack ) }, + { "float", "painNextTime", (intptr_t)(&((rvmMonsterBossCyberdemon *)0)->painNextTime), sizeof( ((rvmMonsterBossCyberdemon *)0)->painNextTime ) }, + { "idStr", "range_attack_anim", (intptr_t)(&((rvmMonsterBossCyberdemon *)0)->range_attack_anim), sizeof( ((rvmMonsterBossCyberdemon *)0)->range_attack_anim ) }, + { "idEntityPtr < idEntity >", "kick_entity", (intptr_t)(&((rvmMonsterBossCyberdemon *)0)->kick_entity), sizeof( ((rvmMonsterBossCyberdemon *)0)->kick_entity ) }, + { NULL, 0 } +}; + +static classVariableInfo_t rvmMonsterBossVagary_typeInfo[] = { + { ": float", "nextDodge", (intptr_t)(&((rvmMonsterBossVagary *)0)->nextDodge), sizeof( ((rvmMonsterBossVagary *)0)->nextDodge ) }, + { "float", "nextAttack", (intptr_t)(&((rvmMonsterBossVagary *)0)->nextAttack), sizeof( ((rvmMonsterBossVagary *)0)->nextAttack ) }, + { "float", "nextNoFOVAttack", (intptr_t)(&((rvmMonsterBossVagary *)0)->nextNoFOVAttack), sizeof( ((rvmMonsterBossVagary *)0)->nextNoFOVAttack ) }, + { "float", "painNextTime", (intptr_t)(&((rvmMonsterBossVagary *)0)->painNextTime), sizeof( ((rvmMonsterBossVagary *)0)->painNextTime ) }, + { "idEntityPtr < idEntity >", "combat_node", (intptr_t)(&((rvmMonsterBossVagary *)0)->combat_node), sizeof( ((rvmMonsterBossVagary *)0)->combat_node ) }, + { "idEntityPtr < idEntity >", "throwEntity", (intptr_t)(&((rvmMonsterBossVagary *)0)->throwEntity), sizeof( ((rvmMonsterBossVagary *)0)->throwEntity ) }, + { NULL, 0 } +}; + +static classVariableInfo_t rvmMonsterBossSabaoth_typeInfo[] = { + { ": float", "nextAttack", (intptr_t)(&((rvmMonsterBossSabaoth *)0)->nextAttack), sizeof( ((rvmMonsterBossSabaoth *)0)->nextAttack ) }, + { "float", "nextMeleeAttack", (intptr_t)(&((rvmMonsterBossSabaoth *)0)->nextMeleeAttack), sizeof( ((rvmMonsterBossSabaoth *)0)->nextMeleeAttack ) }, + { "float", "pathSpeed", (intptr_t)(&((rvmMonsterBossSabaoth *)0)->pathSpeed), sizeof( ((rvmMonsterBossSabaoth *)0)->pathSpeed ) }, + { "bool", "noSlowToStop", (intptr_t)(&((rvmMonsterBossSabaoth *)0)->noSlowToStop), sizeof( ((rvmMonsterBossSabaoth *)0)->noSlowToStop ) }, + { "idEntityPtr < idEntity >", "currentPath", (intptr_t)(&((rvmMonsterBossSabaoth *)0)->currentPath), sizeof( ((rvmMonsterBossSabaoth *)0)->currentPath ) }, + { "idEntityPtr < idEntity >", "nextPath", (intptr_t)(&((rvmMonsterBossSabaoth *)0)->nextPath), sizeof( ((rvmMonsterBossSabaoth *)0)->nextPath ) }, + { NULL, 0 } +}; + +static classVariableInfo_t rvmSeekerBase_typeInfo[] = { + { NULL, 0 } +}; + +static classVariableInfo_t rvmMonsterBossGuardianSpawner_typeInfo[] = { + { ": idEntityPtr < idEntity >", "guardian", (intptr_t)(&((rvmMonsterBossGuardianSpawner *)0)->guardian), sizeof( ((rvmMonsterBossGuardianSpawner *)0)->guardian ) }, + { "float", "inactive_time", (intptr_t)(&((rvmMonsterBossGuardianSpawner *)0)->inactive_time), sizeof( ((rvmMonsterBossGuardianSpawner *)0)->inactive_time ) }, + { "float", "active_time", (intptr_t)(&((rvmMonsterBossGuardianSpawner *)0)->active_time), sizeof( ((rvmMonsterBossGuardianSpawner *)0)->active_time ) }, + { "float", "pain_time", (intptr_t)(&((rvmMonsterBossGuardianSpawner *)0)->pain_time), sizeof( ((rvmMonsterBossGuardianSpawner *)0)->pain_time ) }, + { NULL, 0 } +}; + +static classVariableInfo_t rvmMonsterBossGuardian_typeInfo[] = { + { ": float", "nextAttack", (intptr_t)(&((rvmMonsterBossGuardian *)0)->nextAttack), sizeof( ((rvmMonsterBossGuardian *)0)->nextAttack ) }, + { "float", "painNextTime", (intptr_t)(&((rvmMonsterBossGuardian *)0)->painNextTime), sizeof( ((rvmMonsterBossGuardian *)0)->painNextTime ) }, + { "bool", "in_melee", (intptr_t)(&((rvmMonsterBossGuardian *)0)->in_melee), sizeof( ((rvmMonsterBossGuardian *)0)->in_melee ) }, + { "bool", "rightfoot", (intptr_t)(&((rvmMonsterBossGuardian *)0)->rightfoot), sizeof( ((rvmMonsterBossGuardian *)0)->rightfoot ) }, + { "bool", "charge", (intptr_t)(&((rvmMonsterBossGuardian *)0)->charge), sizeof( ((rvmMonsterBossGuardian *)0)->charge ) }, + { "idEntityPtr < idEntity >", "seeker1", (intptr_t)(&((rvmMonsterBossGuardian *)0)->seeker1), sizeof( ((rvmMonsterBossGuardian *)0)->seeker1 ) }, + { "idEntityPtr < idEntity >", "seeker2", (intptr_t)(&((rvmMonsterBossGuardian *)0)->seeker2), sizeof( ((rvmMonsterBossGuardian *)0)->seeker2 ) }, + { "idEntityPtr < idEntity >", "seeker3", (intptr_t)(&((rvmMonsterBossGuardian *)0)->seeker3), sizeof( ((rvmMonsterBossGuardian *)0)->seeker3 ) }, + { "idEntityPtr < idEntity >", "spawner", (intptr_t)(&((rvmMonsterBossGuardian *)0)->spawner), sizeof( ((rvmMonsterBossGuardian *)0)->spawner ) }, + { NULL, 0 } +}; + +static classVariableInfo_t rvmMonsterBossGuardianSeeker_typeInfo[] = { + { ": float", "painNextTime", (intptr_t)(&((rvmMonsterBossGuardianSeeker *)0)->painNextTime), sizeof( ((rvmMonsterBossGuardianSeeker *)0)->painNextTime ) }, + { "float", "nextEnemyCheck", (intptr_t)(&((rvmMonsterBossGuardianSeeker *)0)->nextEnemyCheck), sizeof( ((rvmMonsterBossGuardianSeeker *)0)->nextEnemyCheck ) }, + { "float", "getCloserEndTime", (intptr_t)(&((rvmMonsterBossGuardianSeeker *)0)->getCloserEndTime), sizeof( ((rvmMonsterBossGuardianSeeker *)0)->getCloserEndTime ) }, + { "float", "retreatEndTime", (intptr_t)(&((rvmMonsterBossGuardianSeeker *)0)->retreatEndTime), sizeof( ((rvmMonsterBossGuardianSeeker *)0)->retreatEndTime ) }, + { "idEntityPtr < idEntity >", "guardian", (intptr_t)(&((rvmMonsterBossGuardianSeeker *)0)->guardian), sizeof( ((rvmMonsterBossGuardianSeeker *)0)->guardian ) }, + { NULL, 0 } +}; + static classVariableInfo_t idTestModel_typeInfo[] = { { ": idEntityPtr < idEntity >", "head", (intptr_t)(&((idTestModel *)0)->head), sizeof( ((idTestModel *)0)->head ) }, { "idAnimator *", "headAnimator", (intptr_t)(&((idTestModel *)0)->headAnimator), sizeof( ((idTestModel *)0)->headAnimator ) }, @@ -9120,6 +9534,42 @@ static classTypeInfo_t classTypeInfo[] = { { "idAI", "idActor", sizeof(idAI), idAI_typeInfo }, { "idCombatNode", "idEntity", sizeof(idCombatNode), idCombatNode_typeInfo }, { "idAI_Vagary", "idAI", sizeof(idAI_Vagary), idAI_Vagary_typeInfo }, + { "rvmAIObject", "idClass", sizeof(rvmAIObject), rvmAIObject_typeInfo }, + { "rvmMonsterBase", "rvmAIObject", sizeof(rvmMonsterBase), rvmMonsterBase_typeInfo }, + { "rvmMonsterZombieBase", "rvmMonsterBase", sizeof(rvmMonsterZombieBase), rvmMonsterZombieBase_typeInfo }, + { "rvmMonsterZombie", "rvmMonsterZombieBase", sizeof(rvmMonsterZombie), rvmMonsterZombie_typeInfo }, + { "rvmMonsterZombieBernie", "rvmMonsterZombieBase", sizeof(rvmMonsterZombieBernie), rvmMonsterZombieBernie_typeInfo }, + { "rvmMonsterZombieMorgue", "rvmMonsterZombieBase", sizeof(rvmMonsterZombieMorgue), rvmMonsterZombieMorgue_typeInfo }, + { "rvmMonsterZombieSawyer", "rvmMonsterZombieBase", sizeof(rvmMonsterZombieSawyer), rvmMonsterZombieSawyer_typeInfo }, + { "rvmMonsterZombieCommandoTentacle", "rvmMonsterBase", sizeof(rvmMonsterZombieCommandoTentacle), rvmMonsterZombieCommandoTentacle_typeInfo }, + { "rvmMonsterZombieCommandoCGun", "rvmMonsterBase", sizeof(rvmMonsterZombieCommandoCGun), rvmMonsterZombieCommandoCGun_typeInfo }, + { "rvmMonsterZombieSecurityPistol", "rvmMonsterZombieBase", sizeof(rvmMonsterZombieSecurityPistol), rvmMonsterZombieSecurityPistol_typeInfo }, + { "rvmCharacter", "rvmAIObject", sizeof(rvmCharacter), rvmCharacter_typeInfo }, + { "rvmAICharacterProne", "rvmAIObject", sizeof(rvmAICharacterProne), rvmAICharacterProne_typeInfo }, + { "rvmFollower", "rvmAIObject", sizeof(rvmFollower), rvmFollower_typeInfo }, + { "rvmCharSentry", "rvmCharacter", sizeof(rvmCharSentry), rvmCharSentry_typeInfo }, + { "rvmAIAlphaLabs2Scientist1", "rvmAIObject", sizeof(rvmAIAlphaLabs2Scientist1), rvmAIAlphaLabs2Scientist1_typeInfo }, + { "rvmMonsterDemonPinky", "rvmMonsterBase", sizeof(rvmMonsterDemonPinky), rvmMonsterDemonPinky_typeInfo }, + { "rvmMonsterDemonImp", "rvmMonsterBase", sizeof(rvmMonsterDemonImp), rvmMonsterDemonImp_typeInfo }, + { "rvmMonsterDemonVulgar", "rvmMonsterBase", sizeof(rvmMonsterDemonVulgar), rvmMonsterDemonVulgar_typeInfo }, + { "rvmMonsterDemonRevenant", "rvmMonsterBase", sizeof(rvmMonsterDemonRevenant), rvmMonsterDemonRevenant_typeInfo }, + { "rvmMonsterDemonHellknight", "rvmMonsterBase", sizeof(rvmMonsterDemonHellknight), rvmMonsterDemonHellknight_typeInfo }, + { "rvmMonsterDemonMaggot", "rvmMonsterBase", sizeof(rvmMonsterDemonMaggot), rvmMonsterDemonMaggot_typeInfo }, + { "rvmMonsterDemonCherub", "rvmMonsterBase", sizeof(rvmMonsterDemonCherub), rvmMonsterDemonCherub_typeInfo }, + { "rvmMonsterDemonTrite", "rvmMonsterBase", sizeof(rvmMonsterDemonTrite), rvmMonsterDemonTrite_typeInfo }, + { "rvmMonsterDemonWraith", "rvmMonsterBase", sizeof(rvmMonsterDemonWraith), rvmMonsterDemonWraith_typeInfo }, + { "rvmMonsterDemonMancubus", "rvmMonsterBase", sizeof(rvmMonsterDemonMancubus), rvmMonsterDemonMancubus_typeInfo }, + { "rvmMonsterDemonArchvile", "rvmMonsterBase", sizeof(rvmMonsterDemonArchvile), rvmMonsterDemonArchvile_typeInfo }, + { "rvmMonsterFlyingCacodemon", "rvmMonsterBase", sizeof(rvmMonsterFlyingCacodemon), rvmMonsterFlyingCacodemon_typeInfo }, + { "rvmMonsterFlyingLostsoul", "rvmMonsterBase", sizeof(rvmMonsterFlyingLostsoul), rvmMonsterFlyingLostsoul_typeInfo }, + { "rvmMonsterTurret", "rvmMonsterBase", sizeof(rvmMonsterTurret), rvmMonsterTurret_typeInfo }, + { "rvmMonsterBossCyberdemon", "rvmMonsterBase", sizeof(rvmMonsterBossCyberdemon), rvmMonsterBossCyberdemon_typeInfo }, + { "rvmMonsterBossVagary", "rvmMonsterBase", sizeof(rvmMonsterBossVagary), rvmMonsterBossVagary_typeInfo }, + { "rvmMonsterBossSabaoth", "rvmMonsterBase", sizeof(rvmMonsterBossSabaoth), rvmMonsterBossSabaoth_typeInfo }, + { "rvmSeekerBase", "rvmMonsterBase", sizeof(rvmSeekerBase), rvmSeekerBase_typeInfo }, + { "rvmMonsterBossGuardianSpawner", "rvmMonsterBase", sizeof(rvmMonsterBossGuardianSpawner), rvmMonsterBossGuardianSpawner_typeInfo }, + { "rvmMonsterBossGuardian", "rvmMonsterBase", sizeof(rvmMonsterBossGuardian), rvmMonsterBossGuardian_typeInfo }, + { "rvmMonsterBossGuardianSeeker", "rvmSeekerBase", sizeof(rvmMonsterBossGuardianSeeker), rvmMonsterBossGuardianSeeker_typeInfo }, { "idTestModel", "idAnimatedEntity", sizeof(idTestModel), idTestModel_typeInfo }, { "opcode_t", "", sizeof(opcode_t), opcode_t_typeInfo }, { "idCompiler", "", sizeof(idCompiler), idCompiler_typeInfo }, diff --git a/neo/doom3/game/gamesys/State.h b/neo/doom3/game/gamesys/State.h index 138c2959..4c73e651 100644 --- a/neo/doom3/game/gamesys/State.h +++ b/neo/doom3/game/gamesys/State.h @@ -128,6 +128,8 @@ public: void Save( idSaveGame* saveFile ) const; void Restore( idRestoreGame* saveFile, idClass* owner ); + idStr CurrentState(void) const { if (IsIdle()) { return ""; } return GetState()->state; } + protected: struct flags diff --git a/neo/engine/renderer/tr_light.cpp b/neo/engine/renderer/tr_light.cpp index e8dc2e47..788f4fda 100644 --- a/neo/engine/renderer/tr_light.cpp +++ b/neo/engine/renderer/tr_light.cpp @@ -1055,7 +1055,7 @@ idRenderModel *R_EntityDefDynamicModel( idRenderEntityLocal *def ) { def->cachedDynamicModel = model->InstantiateDynamicModel( &def->parms, tr.viewDef, def->cachedDynamicModel ); idRenderModelStatic* staticMesh = (idRenderModelStatic*)def->cachedDynamicModel; - if (staticMesh) + if (staticMesh && tr.primaryWorld) { float dxrTransformMatrix[16]; staticMesh->UpdateDXR(def->dxrBottomAccelStruct); diff --git a/neo/engine/typeinfo/TypeInfoGen.cpp b/neo/engine/typeinfo/TypeInfoGen.cpp index d82fdcee..c1d650c7 100644 --- a/neo/engine/typeinfo/TypeInfoGen.cpp +++ b/neo/engine/typeinfo/TypeInfoGen.cpp @@ -863,8 +863,24 @@ void idTypeInfoGen::ParseScope( const char* scope, bool isTemplate, idParser& sr else if( token == "stateParms_t" ) { function.paramStateInput = "stateParms_t"; - src.ReadToken( &token ); // * - src.ReadToken( &token ); // variable name + if( !src.ReadToken( &token ) ) + { + function.isValidFunction = false; + } + else if( token == "&" ) + { + function.paramStateInputIsReference = true; + src.ReadToken( &token ); // variable name + } + else if( token == "*" ) + { + function.paramStateInputIsReference = false; + src.ReadToken( &token ); // variable name + } + else + { + function.isValidFunction = false; + } } else { @@ -1379,7 +1395,14 @@ void idTypeInfoGen::WriteTypeInfo( const char* fileName ) const idStr functionCall = varName; if( info->functions[j].paramStateInput != "" ) { - functionCall += va( "((%s *)param1)", info->functions[j].paramStateInput.c_str() ); + if( info->functions[j].paramStateInputIsReference ) + { + functionCall += va( "(*(%s *)param1)", info->functions[j].paramStateInput.c_str() ); + } + else + { + functionCall += va( "((%s *)param1)", info->functions[j].paramStateInput.c_str() ); + } } else { diff --git a/neo/engine/typeinfo/TypeInfoGen.h b/neo/engine/typeinfo/TypeInfoGen.h index 04724b8d..2d29e823 100644 --- a/neo/engine/typeinfo/TypeInfoGen.h +++ b/neo/engine/typeinfo/TypeInfoGen.h @@ -83,6 +83,7 @@ public: bool isConst; bool isStatic; idStr paramStateInput; + bool paramStateInputIsReference; bool isValidFunction; };