home *** CD-ROM | disk | FTP | other *** search
Text File | 1998-07-26 | 39.4 KB | 1,667 lines |
- // Bank Dialog Script
- setdialogscript dialog/dialog_intro.scr
- $skip_trigger hide
-
- goto cinematic
- // doing an initialize thread there, so you wanna go there, run that anyway and implement
- // the use-skip-cinematic
- end
-
- mainthread:
- //-------------------------------------------
- // Main thread and Script init
- //-------------------------------------------
- //thread helicopter_ride_thread
- thread helicopter_damage_thread
- thread rotors_spin_down_thread
- thread billboard_thread
- thread ammo1_thread
- thread ammo2_thread
- thread bank_entrance_thread
-
- //-------------------------------------------
- // Toms stuff
- //-------------------------------------------
- // Good, bad, I'm the guy with the gun
- level.count_bad_guys = 0
- level.count_good_guys = 0
- level.PObjective1 = 0
- level.PObjective2 = 0
- level.PObjective3 = 0
- level.SObjective1 = 0
-
- thread turret_death_wait
- thread turret1_deathreport
- thread turret2_deathreport
- thread turret3_deathreport
- thread MissionComputer
- thread SkillLevelSettings
- thread pillar
- thread heli_damage_dialog
- thread random_sounds
- thread shootsign
- end
-
- //-------------------------------------------
- // Shoot sign
- //-------------------------------------------
- shootsign:
- $shootsign1 ondamage sign_message
- pause
-
- sign_message:
- $shootsign1 nodamage
- thread dialog::jc_what_are_you_shooting_at1
- local.waitforthread = parm.previousthread
- waitForThread parm.previousthread
- thread dialog::blade_can_it_jc
- end
-
- //-------------------------------------------
- // Helicopter damage dialog
- //-------------------------------------------
- random_sounds:
- wait 10
-
- random_sound_loop:
- wait 10
- local.rndsnd randomint 5
- local.rndsnd ifequal 1 goto combat_one
- local.rndsnd ifequal 2 goto combat_two
- local.rndsnd ifequal 3 goto combat_five
- local.rndsnd ifequal 4 goto combat_six
- local.rndsnd ifequal 5 goto combat_seven
- end
-
- combat_one:
- parm.actor1 string "$heli_fuckshitup"
- thread dialog::combat_one
- local.waitforthread = parm.previousthread
- waitForThread parm.previousthread
- goto random_sound_loop
- end
-
- combat_two:
- parm.actor1 string "$heli_fuckshitup"
- thread dialog::combat_two
- local.waitforthread = parm.previousthread
- waitForThread parm.previousthread
- goto random_sound_loop
- end
-
- combat_five:
- parm.actor1 string "$heli_fuckshitup"
- thread dialog::combat_five
- local.waitforthread = parm.previousthread
- waitForThread parm.previousthread
- goto random_sound_loop
- end
-
- combat_six:
- parm.actor1 string "$heli_fuckshitup"
- thread dialog::combat_six
- local.waitforthread = parm.previousthread
- waitForThread parm.previousthread
- goto random_sound_loop
- end
-
- combat_seven:
- parm.actor1 string "$heli_fuckshitup"
- thread dialog::combat_seven
- local.waitforthread = parm.previousthread
- waitForThread parm.previousthread
- goto random_sound_loop
- end
-
- //-------------------------------------------
- // Helicopter damage dialog
- //-------------------------------------------
- heli_damage_dialog:
- level.helidamage ifgreater 500 goto nextmessage1
- wait 1
- goto heli_damage_dialog
-
- nextmessage1:
- thread dialog::pilot_hit2
-
- nextmessage1a:
- level.helidamage ifgreater 900 goto nextmessage2
- wait 1
- goto nextmessage1a
-
- nextmessage2:
- thread dialog::pilot_hit1
-
- nextmessage2a:
- level.helidamage ifgreater 1250 goto nextmessage3
- wait 1
- goto nextmessage2a
-
- nextmessage3:
- thread dialog::pilot_hit3
-
- nextmessage3a:
- level.helidamage ifgreater 1550 goto nextmessage4
- wait 1
- goto nextmessage3a
-
- nextmessage4:
- thread dialog::pilot_sec_airsupport
-
- nextmessage4a:
- level.helidamage ifgreater 1800 goto nextmessage5
- wait 1
- goto nextmessage4a
-
- nextmessage5:
- thread dialog::jc_chopper_repair
-
- nextmessage5a:
- level.helidamage ifgreater 2000 goto nextmessage6
- wait 1
- goto nextmessage5a
-
- nextmessage6:
- thread dialog::pilot_going_down
-
- nextmessage6a:
- level.helidamage ifgreater 2500 goto fucked
- wait 1
- goto nextmessage6a
-
- fucked:
- level.PObjective1 = 2
- level.PObjective2 = 2
- level.PObjective3 = 2
- level.SObjective1 = 2
- thread MissionComputer
- thread dialog::PObjectiveFailed
- cueplayer
- //fadeout .7 1 1 1
- *1 playerkill
- wait 2.5
- *1 respawn
- end
-
- //-------------------------------------------
- // Cave in entrance trigger
- //-------------------------------------------
- pillar:
- $awning2 ondamage start_pillar
- $awning1 ondamage start_pillar
- $pillar ondamage start_pillar
- pause
-
- start_pillar:
- $pillar nodamage
- $awning2 nodamage
- $awning1 nodamage
- trigger $pillar
- level.piller = 2
- level.SObjective1 = 1
- thread MissionComputer
- thread dialog::SObjectiveComplete
- end
-
- //-------------------------------------------
- // Testing Helicopter differing sounds
- //-------------------------------------------
- heli_hit:
- level.hitme_hit ifequal 1 goto heli_already_hit
- level.hitme_hit = 1
- $rotors playsound misc/null.wav 1 7
- wait .1
- $rotors playsound vehicle/helicopt/hit1.wav 2 7
- wait 3.8
- //$rotors playsound misc/null.wav 1 7
- $rotors playsound vehicle/helicopt/flyloop.wav 2 7
- level.hitme_hit = 0
- end
-
- heli_already_hit:
- end
-
- //-------------------------------------------
- // Turret Skill levels
- //-------------------------------------------
- SkillLevelSettings:
- local.skilllevel getcvar skill
- //easy
- local.skilllevel ifequal 0 $turret1 rocketrate 10
- local.skilllevel ifequal 0 $turret2 rocketrate 10
- local.skilllevel ifequal 0 $turret3 rocketrate 9
- local.skilllevel ifequal 0 $turret1 health 500
- local.skilllevel ifequal 0 $turret2 health 500
- local.skilllevel ifequal 0 $turret3 health 600
- //medium
- local.skilllevel ifequal 1 $turret1 rocketrate 8
- local.skilllevel ifequal 1 $turret2 rocketrate 8
- local.skilllevel ifequal 1 $turret3 rocketrate 7
- local.skilllevel ifequal 1 $turret1 health 1000
- local.skilllevel ifequal 1 $turret2 health 1000
- local.skilllevel ifequal 1 $turret3 health 1200
- //hard
- local.skilllevel ifequal 2 $turret1 rocketrate 4
- local.skilllevel ifequal 2 $turret2 rocketrate 4
- local.skilllevel ifequal 2 $turret3 rocketrate 3
- local.skilllevel ifequal 2 $turret1 health 1500
- local.skilllevel ifequal 2 $turret2 health 1500
- local.skilllevel ifequal 2 $turret3 health 1600
- end
-
- //-------------------------------------------
- // Mission Computer
- //-------------------------------------------
- MissionComputer:
- //0 nd 1 succeed 2 fail
- // level.PObjective1 --> Destroy Rocket Turrets
- // level.PObjective2 --> Eliminate All Enemy Forces
- // level.PObjective3 --> Gain Entry Into The Bank
- // level.SObjective1 --> Minimize Civilian Casualties
- %missioncon conlayout "xv -72 yv 76 fc 0.6 0.6 1 1 string \"Air Assault On FCB\""
- %missioncon conapplayout "xv -120 yv 60 fc 0.4 0.4 0.8 1 string \"Primary Objective(s):\""
- level.PObjective1 ifequal 0 %missioncon conapplayout "xv -118 yv 48 spicn b_blank 0.5 0.5 xv -116 yv 48 fc 0.7 0.7 0.7 1 string \" Destroy Rocket Turrets\""
- level.PObjective2 ifequal 0 %missioncon conapplayout "xv -118 yv 36 spicn b_blank 0.5 0.5 xv -116 yv 36 fc 0.7 0.7 0.7 1 string \" Eliminate All Enemy Forces\""
- level.PObjective3 ifequal 0 %missioncon conapplayout "xv -118 yv 24 spicn b_blank 0.5 0.5 xv -116 yv 24 fc 0.7 0.7 0.7 1 string \" Gain Entry Into The Bank\""
-
- level.PObjective1 ifequal 1 %missioncon conapplayout "xv -118 yv 48 spicn b_checked 0.5 0.5 xv -116 yv 48 fc 0.3 0.3 0.3 1 string \" Destroy Rocket Turrets\""
- level.PObjective2 ifequal 1 %missioncon conapplayout "xv -118 yv 36 spicn b_checked 0.5 0.5 xv -116 yv 36 fc 0.3 0.3 0.3 1 string \" Eliminate All Enemy Forces\""
- level.PObjective3 ifequal 1 %missioncon conapplayout "xv -118 yv 24 spicn b_checked 0.5 0.5 xv -116 yv 24 fc 0.3 0.3 0.3 1 string \" Gain Entry Into The Bank\""
-
- level.PObjective1 ifequal 2 %missioncon conapplayout "xv -118 yv 48 spicn b_notchecked 0.5 0.5 xv -116 yv 48 fc 0.3 0.3 0.3 1 string \" Destroy Rocket Turrets\""
- level.PObjective2 ifequal 2 %missioncon conapplayout "xv -118 yv 36 spicn b_notchecked 0.5 0.5 xv -116 yv 36 fc 0.3 0.3 0.3 1 string \" Eliminate All Enemy Forces\""
- level.PObjective3 ifequal 2 %missioncon conapplayout "xv -118 yv 24 spicn b_notchecked 0.5 0.5 xv -116 yv 24 fc 0.3 0.3 0.3 1 string \" Gain Entry Into The Bank\""
-
- %missioncon conapplayout "xv -120 yv 0 fc 0.4 0.4 0.8 1 string \"Secondary Objective(s):\""
- level.SObjective1 ifequal 0 %missioncon conapplayout "xv -118 yv -12 spicn b_blank 0.5 0.5 xv -116 yv -12 fc 0.7 0.7 0.7 1 string \" Minimize Hardcorp Casualties\""
- level.SObjective1 ifequal 1 %missioncon conapplayout "xv -118 yv -12 spicn b_checked 0.5 0.5 xv -116 yv -12 fc 0.3 0.3 0.3 1 string \" Minimize Hardcorp Casualties\""
- level.SObjective1 ifequal 2 %missioncon conapplayout "xv -118 yv -12 spicn b_notchecked 0.5 0.5 xv -116 yv -12 fc 0.3 0.3 0.3 1 string \" Minimize Hardcorp Casualties\""
- end
-
-
- //-------------------------------------------
- // Temp scriptobject for turret death level variables
- //-------------------------------------------
- turret1_deathreport:
- $turret1_dead ontrigger 1change
- pause
-
- 1change:
- //print "got here 1"
- $turret1_dead remove
- level.turret1_nuked = 1
- end
-
- turret2_deathreport:
- $turret2_dead ontrigger 2change
- pause
-
- 2change:
- //print "got here 2"
- $turret2_dead remove
- level.turret2_nuked = 1
- end
-
- turret3_deathreport:
- $turret3_dead ontrigger 3change
- pause
-
- 3change:
- //print "got here 3"
- $turret3_dead remove
- level.turret3_nuked = 1
- end
- //-------------------------------------------
-
- //-------------------------------------------
- // Main level Loop (for spawning characters.
- // and randomly choosing stuff to happen in
- // the streets)
- //-------------------------------------------
- main_level_spawn_loop:
- //print "Checking BAD guys\n"
- level.complete ifgreater 0 thread spawn_levelisdone
- level.complete ifgreater 0 goto end_main
- thread spawn_check_bad_guys
- wait 3
- goto main_level_spawn_loop
-
- end_main:
- end
-
- //-------------------------------------------
- // Psyco spawn BAD GUY checking thread
- //-------------------------------------------
- spawn_check_bad_guys:
- //level.complete ifequal 1 goto spawn_levelisdone
- //level.complete ifequal 2 goto spawn_levelisdone
- level.count_bad_guys ifequal 3 goto spawn_check_end
-
- //local.rndbad randomint 100
- //local.rndbad iflessequal 10 goto spawn_window_check
- //local.rndbad iflessequal 20 goto window1_startspawn
- //local.rndbad ifgreater 20 goto spawn_roof_check
-
- //Spawn guys in windows logic
- //spawn_window_check:
- //local.rndwin randomint 100
- //local.rndwin iflessequal 50 goto window1_startspawn
- //local.rndwin ifgreater 50 goto window2_startspawn
-
- goto spawn_roof_check
- end
-
- //window1_startspawn:
- //level.dudeinwindow1 ifequal 1 goto spawn_guythere
- //level.dudeinwindow1 ifequal 0 thread spawn_guy_in_window1
- //end
-
- //window2_startspawn:
- //level.dudeinwindow2 ifequal 1 goto spawn_guythere
- //level.dudeinwindow2 ifequal 0 thread spawn_guy_in_window2
- //end
-
- //Spawn guys on roof logic
- spawn_roof_check:
- local.rndroof randomint 100
- local.rndroof iflessequal 33 goto turret1_startspawn
- local.rndroof ifgreater 33 goto more_roof_rnd
-
- more_roof_rnd:
- local.rndroof iflessequal 66 goto turret2_startspawn
- local.rndroof ifgreater 66 goto turret3_startspawn
- end
-
- turret1_startspawn:
- level.turret1_active ifequal 1 goto spawn_guythere
- level.turret1_nuked ifequal 1 goto spawn_guythere
- level.turret1_active ifequal 0 thread spawn_guy_at_turret1
- end
-
- turret2_startspawn:
- level.turret2_active ifequal 1 goto spawn_guythere
- level.turret2_nuked ifequal 1 goto spawn_guythere
- level.turret2_active ifequal 0 thread spawn_guy_at_turret2
- end
-
- turret3_startspawn:
- level.turret3_active ifequal 1 goto spawn_guythere
- level.turret3_nuked ifequal 1 goto spawn_guythere
- level.turret3_active ifequal 0 thread spawn_guy_at_turret3
- end
-
- spawn_levelisdone:
- level.count_bad_guys ifequal 0 goto obj2_done
- wait 1
- goto spawn_levelisdone
-
- obj2_done:
- level.complete += 1
- level.PObjective2 = 1
- thread MissionComputer
- thread dialog::PObjectiveComplete
- wait 1
- thread land_roof_dialogue1_thread
-
- //print "Turrets are dead, no more baddies\n"
- end
-
- spawn_check_end:
- //print "Enough Bad Guys!\n"
- end
-
- spawn_guythere:
- //print "Somebody is already there!\n"
- end
- //-------------------------------------------
-
- //-------------------------------------------
- // Turret counter and level.complete state.
- //-------------------------------------------
- turret_death_wait:
- local.turret_death_index = 0
-
- turret_death_loop:
- $turret_death_counter ontrigger count_turret
- pause
-
- count_turret:
- $turret_death_counter notrigger
- local.turret_death_index += 1
- local.turret_death_index ifequal 3 goto turrets_dead
- local.turret_death_index ifequal 1 thread dialog::pilot_nice_shooting
- local.turret_death_index ifequal 2 thread dialog::jc_way_to_hit
- //print "TURRET NUKED\n"
- goto turret_death_loop
-
- turrets_dead:
- level.PObjective1 = 1
- thread MissionComputer
- thread dialog::PObjectiveComplete
- level.complete += 1
- //print level.complete
- end
- //-------------------------------------------
-
- //-------------------------------------------
- // Spawn People in to turrets
- //-------------------------------------------
-
- // Guy in window1
- spawn_guy_in_window1:
- trigger $window_spawn1
- level.count_bad_guys += 1
- level.dudeinwindow1 = 1
- wait .1
- $window_thug1 thread winthug1_setstates
- wait 2
- trigger $window_thug1
- end
-
- winthug1_setstates:
- local.self ignore act_runtoarea act_stop
- local.self ignore act_doorsound act_mutantsound act_voicesound act_machinesound act_radiosound
- local.self ignore act_weaponsound act_movementsound act_painsound act_deathsound act_breakingsound
- local.self ignore act_used
-
- local.self respondto act_killed winthug1_killed
- local.self respondto act_activated winthug1_activated
-
- local.self state act_idle
-
- pause
-
- winthug1_activated:
- $door3 open
- local.self ignore act_activated
- local.self walkto $winnode1
- waitFor local.self
- local.self runto $winnode2
- waitFor local.self
- local.self attack $helicopter
- pause
- end
-
- winthug1_killed:
- level.dudeinwindow1 = 0
- level.count_bad_guys -= 1
- end
-
- // Guy in window2
- //spawn_guy_in_window2:
- //trigger $window_spawn2
- //level.count_bad_guys += 1
- //level.dudeinwindow2 = 1
- //wait .1
- //$window_thug2 thread winthug2_setstates
- //end
-
- //winthug2_setstates:
- //local.self ignore act_runtoarea act_stop
- //local.self ignore act_doorsound act_mutantsound act_voicesound act_machinesound act_radiosound
- //local.self ignore act_weaponsound act_movementsound act_painsound act_deathsound act_breakingsound
- //local.self ignore act_used
-
- //local.self respondto act_killed winthug2_killed
-
- //local.self state act_idle
-
- //pause
-
- //winthug2_killed:
- //level.dudeinwindow2 = 0
- //level.count_bad_guys -= 1
- //end
-
- // Thug1 dude
- spawn_guy_at_turret1:
- trigger $spawner1
- level.count_bad_guys += 1
- level.turret1_active = 1
- wait .1
- $thug1 thread thug1_setstates
- wait 2
- trigger $thug1
- end
-
- thug1_setstates:
- local.self ignore act_runtoarea act_stop
- local.self ignore act_doorsound act_mutantsound act_voicesound act_machinesound act_radiosound
- local.self ignore act_weaponsound act_movementsound act_painsound act_deathsound act_breakingsound
- local.self ignore attackentity act_used act_sightenemy
-
- local.self respondto act_activated thug1_activated
- local.self respondto act_killed thug1_killed
- local.self respondto act_idle thug1_idle
-
- local.self state act_idle
-
- pause
-
- thug1_idle:
- local.self anim idle
- waitFor local.self
- pause
- goto thug1_idle
-
- thug1_activated:
- $door1 open
- local.self ignore act_activated
- local.self runto $turret1_path1
- waitFor local.self
- local.self runto $turret1_path2
- waitFor local.self
- $turret1 activate
- local.self anim manrocket1
- pause
- end
-
- thug1_killed:
- $turret1 deactivate
- level.turret1_active = 0
- level.count_bad_guys -= 1
- //thread spawn_guy_at_turret1
- end
-
- // Thug2dude
- spawn_guy_at_turret2:
- trigger $spawner2
- level.count_bad_guys += 1
- level.turret2_active = 1
- wait .1
- $thug2 thread thug2_setstates
- wait 2
- trigger $thug2
- end
-
- thug2_setstates:
- local.self ignore act_runtoarea act_stop
- local.self ignore act_doorsound act_mutantsound act_voicesound act_machinesound act_radiosound
- local.self ignore act_weaponsound act_movementsound act_painsound act_deathsound act_breakingsound
- local.self ignore attackentity act_used act_sightenemy
-
- local.self respondto act_activated thug2_activated
- local.self respondto act_killed thug2_killed
- local.self respondto act_idle thug2_idle
-
- local.self state act_idle
-
- pause
-
- thug2_idle:
- local.self anim idle
- waitFor local.self
- pause
- goto thug2_idle
-
- thug2_activated:
- $door2 open
- local.self ignore act_activated
- local.self runto $turret2_path1
- waitFor local.self
- local.self runto $turret2_path2
- waitFor local.self
- $turret2 activate
- local.self anim manrocket1
- pause
- end
-
- thug2_killed:
- $turret2 deactivate
- level.turret2_active = 0
- level.count_bad_guys -= 1
- //thread spawn_guy_at_turret2
- end
-
- // Thug3 dude
- spawn_guy_at_turret3:
- trigger $spawner3
- level.count_bad_guys += 1
- level.turret3_active = 1
- wait .1
- $thug3 thread thug3_setstates
- wait 2
- trigger $thug3
- end
-
- thug3_setstates:
- local.self ignore act_runtoarea act_stop
- local.self ignore act_doorsound act_mutantsound act_voicesound act_machinesound act_radiosound
- local.self ignore act_weaponsound act_movementsound act_painsound act_deathsound act_breakingsound
- local.self ignore attackentity act_used act_sightenemy
-
- local.self respondto act_activated thug3_activated
- local.self respondto act_killed thug3_killed
- local.self respondto act_idle thug3_idle
-
- local.self state act_idle
-
- pause
-
- thug3_idle:
- local.self anim idle
- waitFor local.self
- pause
- goto thug3_idle
-
- thug3_activated:
- $door3 open
- local.self ignore act_activated
- local.self runto $turret3_path1
- waitFor local.self
- local.self runto $turret3_path2
- waitFor local.self
- $turret3 activate
- local.self anim manrocket1
- pause
- end
-
- thug3_killed:
- $turret3 deactivate
- level.turret3_active = 0
- level.count_bad_guys -= 1
- //thread spawn_guy_at_turret3
- end
- //-------------------------------------------
-
- move_dudes_up:
- $remove_me_for_guys remove
- $move_guys_up time .1
- $move_guys_up moveUp 112
- waitFor $move_guys_up
- end
-
- //-------------------------------------------
- // Helicopter movin
- //-------------------------------------------
- helicopter_ride_thread:
-
- $rotors_brush notsolid
- $rotors_brush hide
- $rotors_brush bind $helicopter
- $heligun_origin bind $helicopter
- $blade2 bind $heligun_origin
- $heligun bind $heligun_origin
- $heli_fuckshitup bind $helicopter
- wait .1
- $rotors bind $rotors_brush
- wait .1
-
- $rotors_brush time 1
- $rotors_brush rotateY 720
-
- start_copter:
- wait 2
- $helicopter followpath $path1_startintro
- //level.helistarted ifequal 1 $helicopter moveto $path1_startintro
- wait 3
- $rotors playsound vehicle/helicopt/flyloop.wav 2 7
- waitFor $helicopter
- end
-
- //** Put player in helicopter
- //---
- start_action_thread:
- hud 1
- releaseplayer
- $helicopter lock
- $helicopter doUse *1
- $blade2 remove
- $heligun hide
- $cinematic_thug1 remove
- $cinematic_thug2 remove
- thread move_dudes_up
- level.helistarted ifequal 1 thread hover_path
- level.helistarted ifequal 0 fadein 1 0 0 0
- wait 1
- music normal
- thread thugs_attacked_dialog1
- thread blade_talksmack1
-
- //--------------------------------------------
- // player must kill both cinematic thugs before the level starts
- // This is where the game should "jump" to if the cinematic playback is
- // aborted.
- //--------------------------------------------
- kill_cinematic_thugs:
- thread hover_path
- local.deathindex = 0
- level.hoverpathover = 0
-
- kill_cinematic_thugs_loop:
- $thug_death_counter ontrigger counterup
- pause
-
- counterup:
- local.deathindex += 1
- local.deathindex ifequal 2 goto start_level_loop
- goto kill_cinematic_thugs_loop
- end
- //--------------------------------------------
- // Put the helicopter in a hover path until the cinematic thugs are dead
- //--------------------------------------------
- hover_path:
- $helicopter followpath $hover_path
- waitFor $helicopter
-
- level.hoverpathover ifequal 1 goto start_heli_loop
- level.hoverpathover ifequal 0 goto hover_path
- end
-
- start_level_loop:
- level.hoverpathover = 1
- end
-
- heli_loop_dialog_start:
- thread dialog::StatusUpdated
- local.waitforthread = parm.previousthread
- waitForThread parm.previousthread
- thread dialog::jc_remember_boss
- end
-
- //-------------------------------------------
- // Start helicopter main loop
- //-------------------------------------------
- start_heli_loop:
- thread heli_loop_dialog_start
- // Start up main level bad guy spawn loop
- thread main_level_spawn_loop
- $helicopter followpath $down_path
- waitFor $helicopter
-
- //-------------------------------------------
- // Loop copter, check damage, etc.
- //-------------------------------------------
- helicopter_loop_sequence:
-
- $helicopter followpath $loop_path
- waitFor $helicopter
-
- level.complete ifequal 2 goto helicopter_land_roof
- level.helidamage iflessequal 2000 goto helicopter_loop_sequence
-
-
- //-------------------------------------------
- // Helicopter Crashing on ground start
- //-------------------------------------------
- $helicopter followpath $road_path
-
- thread copter_goin_down
-
- waitFor $helicopter
- $rotors playsound misc/null.wav 1 7
- wait .1
- $rotors playsound vehicle/helicopt/hidown.wav 1.0 7
-
- thread dialog::pilot_were_down_whew_close
- $helicopter unlock
- hud 0
- trigger $rotors_brush
- fadeout 1 0 0 0
- wait 1
- thread ground_dialog
- thread groundcam_thread
- goto heli_end
-
- //-------------------------------------------
- // Helicopter lands on roof
- //-------------------------------------------
- helicopter_land_roof:
- level.PObjective3 = 1
- thread dialog::PObjectiveComplete
- thread MissionComputer
-
- //thread land_roof_dialogue1_thread
-
- $helicopter followpath $roof_path
- waitFor $helicopter
-
- thread land_roof_dialogue2_thread
-
- $helicopter stopsound
- $helicopter playsound vehicle/helicopt/hidown.wav 1.0 7
- //$helicopter unlock
- thread roofcam_thread
- //fadeout 1 0 0 0
- trigger $rotors_brush
-
- heli_end:
- end
-
- //-------------------------------------------
- // Helicopter monitor damage thread
- //-------------------------------------------
- helicopter_damage_thread:
-
- helicopter_damage_start:
- $helicopter ondamage heli_damage_sequence
- $rotors ondamage heli_damage_sequence
- pause
-
- heli_damage_sequence:
- $helicopter nodamage
- $rotors nodamage
- thread heli_hit
- level.helidamage += local.damage
- //print level.helidamage
- //newline
- goto helicopter_damage_start
- end
-
- //-------------------------------------------
- // Helicopter Spindown
- //-------------------------------------------
- rotors_spin_down_thread:
-
- level.rotors_speed = 720
-
- $rotors_brush ontrigger rotors_spin_down_loop_begin
- pause
-
- rotors_spin_down_loop_begin:
- $rotors_brush notrigger
-
- rotors_spin_down_loop:
-
- level.rotors_speed -= 5
- $rotors_brush rotateY level.rotors_speed
- wait .1
-
- level.rotors_speed ifgreater 0 goto rotors_spin_down_loop
- end
-
- //-------------------------------------------
- // Thugs Talking at start of action
- //-------------------------------------------
- thugs_attacked_dialog1:
- parm.thug1 string "$dialog_airattack"
- thread dialog::thug_air_attack
- end
-
- thugs_attacked_dialog2:
- parm.thug1 string "$dialog_runforcover"
- thread dialog::thug_get_to_launchers1
-
- blade_talksmack1:
- wait 2
- thread dialog::blade_not_so_fast
- end
- //-------------------------------------------
-
- land_road_dialogue1_thread:
- wait 15
- thread dialog::pilot_flakleft
- local.waitforthread = parm.previousthread
- waitForThread parm.previousthread
- thread dialog::jc_great1
- local.waitforthread = parm.previousthread
- waitForThread parm.previousthread
- wait 4
-
-
- copter_goin_down:
- thread dialog::pilot_controls_arent_responding
- local.waitforthread = parm.previousthread
- waitForThread parm.previousthread
- thread dialog::blade_uh_oh
- wait 2
- thread dialog::pilot_hang_on1
- end
-
- dialog2:
- wait 3
- thread dialog::jc_get_in_there
- end
-
- land_roof_dialogue1_thread:
- wait 2
- thread dialog::jc_rooftop_landin
- local.waitforthread = parm.previousthread
- waitForThread parm.previousthread
- end
-
- land_roof_dialogue2_thread:
- thread dialog::pilot_drop_and_dust
- end
-
- //-------------------------------------------
- // Billboard destroyed thread1
- //-------------------------------------------
- billboard_thread:
- $billboard hide
- $billboard2 bind $billboard
- $fountain_flood time .1
- $fountain_flood moveDown 10
- waitFor $fountain_flood
- game.intro_billboard_fall ifequal 0 game.intro_billboard_fall = 1
- $billboard_left ondamage billboard_fall_sequence_left
- $billboard_right ondamage billboard_fall_sequence_right
- pause
-
- billboard_fall_sequence_left:
- $billboard_left nodamage
- $billboard_right nodamage
- game.intro_billboard_fall = 2
-
- wait .3
-
- $billboard time .4
-
- $billboard rotateXdown 56
- $billboard moveWest 64
- $billboard moveDown 30
- waitFor $billboard
-
- $billboard time .7
-
- $billboard rotateXdown 98
- $billboard rotateZup 5
- $billboard moveDown 495
- $billboard moveSouth 16
- $billboard moveWest 128
- waitFor $billboard
-
- $billboard time .5
-
- $billboard rotateXdown 85
- $billboard rotateZup 5
- $billboard moveDown 495
- $billboard moveSouth 16
- $billboard moveWest 128
- waitFor $billboard
-
- $billboard time .4
-
- $billboard rotateXdown 71
- $billboard rotateZup 5
- $billboard moveDown 490
- $billboard moveSouth 16
- $billboard moveWest 107
- waitFor $billboard
-
- $billboard playsound impact/crates/crate3.wav 3.0
- $glass1 remove
- $glass2 shatter "0 0 0" 25 10 75 .5 0
- $glass3 remove
- $glass2 remove
-
- $window_bar1 time .5
- $window_bar1 moveDown 368
- $window_bar1 rotateXup 22
- $window_bar1 rotateYup 30
- $window_bar1 moveWest 16
- waitFor $window_bar1
- goto bottom1
-
-
- //-------------------------------------------
- // Billboard destroyed thread2
- //-------------------------------------------
- billboard_fall_sequence_right:
- $billboard_left nodamage
- $billboard_right nodamage
- game.intro_billboard_fall = 3
-
- wait .3
-
- $billboard time .4
-
- $billboard rotateXdown 56
- $billboard moveWest 64
- $billboard moveDown 30
- waitFor $billboard
-
- $billboard time .7
-
- $billboard rotateXdown 98
- $billboard rotateZup 5
- $billboard moveDown 495
- $billboard moveSouth 16
- $billboard moveWest 128
- waitFor $billboard
-
- $billboard time .5
-
- $billboard rotateXdown 85
- $billboard rotateZup 5
- $billboard moveDown 495
- $billboard moveSouth 16
- $billboard moveWest 128
- waitFor $billboard
-
- $billboard time .4
-
- $billboard rotateXdown 71
- $billboard rotateZup 5
- $billboard moveDown 490
- $billboard moveSouth 16
- $billboard moveWest 107
- waitFor $billboard
-
- $billboard playsound impact/crates/crate3.wav 3.0
- $glass2 shatter "0 0 0" 25 10 75 .5 0
- $glass1 remove
- $glass2 remove
- $glass3 remove
-
- wait .2
-
- $billboard time .7
- $window_bar1 time .7
- $window_bar2 time .7
-
- $window_bar1 moveDown 368
- $window_bar1 rotateXup 22
- $window_bar1 rotateYdown 15
- $window_bar1 moveWest 16
- $window_bar2 moveDown 368
- $window_bar2 rotateXup 22
- $window_bar2 rotateYup 30
- $window_bar2 moveWest 16
- $billboard moveDown 356
- $billboard rotateXup 20
- $billboard rotateZdown 20
- waitFor $billboard
-
- $fountain_flood time 15
- $fountain_flood moveUp 15
- thread bottom2
- waitFor $fountain_flood
- end
-
- bottom1:
- thread dialog::jc_dead_billboard1
- local.waitforthread = parm.previousthread
- waitForThread parm.previousthread
- end
-
- bottom2:
- thread dialog::jc_dead_billboard2
- local.waitforthread = parm.previousthread
- waitForThread parm.previousthread
- end
-
-
-
- //=====================================
- //=====================================
-
-
- exit_variable_thread:
-
- // 1 = ceiling entrance
- // 2 = ground entrance
-
- game.intro_ground_entrance ifequal 0 game.intro_ground_entrance = 1
-
- $ground_entrance ontrigger ground_entrance_sequence
- pause
-
- ground_entrance_sequence:
- game.intro_ground_entrance = 2
- end
-
- //=====================================
- //=====================================
- // I have been awake for 36 hours
-
- ammo1_thread:
-
- $ammo1_roof time 1
-
- $ammo1 ondamage ammo1_sequence
- pause
-
- ammo1_sequence:
- $ammo1 nodamage
-
- trigger $ammo1_explode
- $ammo1 shatter "0 0 0" 75 10 75 .5 0
- //$ammo1_roof shatter "0 0 0" 100 10 75 1.0 0
- wait .2
-
- $ammo1 notsolid
- $ammo1 hide
-
- $ammo1_roof rotateXdown 15
- $ammo1_roof rotateZdown 15
- waitFor $ammo1_roof
- $ammo1_roof moveDown 128
- waitFor $ammo1_roof
- end
-
-
- ammo2_thread:
-
- game.intro_roof_break1 ifequal 0 game.intro_roof_break1 = 1
- $ammo2_roof time .5
- $ammo2_wall1 time 1.2
- $ammo2_wall2 time 1.2
-
- $ammo2 ondamage ammo2_sequence
- pause
-
- ammo2_sequence:
- $ammo2 nodamage
- game.intro_roof_break1 = 2
-
- trigger $ammo2_explode
- $ammo2 shatter "0 0 0" 75 10 75 .5 0
- wait .2
-
- $ammo2 notsolid
- $ammo2 hide
-
- $ammo2_roof rotateXdown 15
- $ammo2_roof rotateZdown 15
- waitFor $ammo2_roof
- $ammo2_roof moveDown 128
- waitFor $ammo2_roof
- end
-
-
- bank_entrance_thread:
- $pillar time .6
- $awning1 time .6
- $awning2 time .6
- $awning3 time .6
-
- $pillar ontrigger bank_entrance_collapse
- pause
-
- bank_entrance_collapse:
- $pillar notrigger
-
- $awning2 shatter "0 0 0" 25 10 75 .75 0
- $pillar rotateZdown 45
- waitFor $pillar
-
- $pillar rotateZdown 45
- $awning1 rotateZup 45
- $awning2 moveDown 128
- waitFor $awning2
-
- $awning3 moveDown 100
- $awning1 moveDown 128
- $awning2 moveDown 128
- $awning1 moveSouth 32
- $awning2 rotateZdown 15
- waitFor $awning2
- end
-
- // Matt Stuff
- //----------------------------------------------------------------------
- // This is where the cool stuff starts! Ok, it's only the cinematic...
- //----------------------------------------------------------------------
-
- //---
- cinematic:
-
- thread initialize_thread
- local.waitforthread = parm.previousthread
- waitForThread local.waitforthread
- thread skip_cinematic_thread
-
- //-------------------------------------------
- // Wieder's stuff
- //-------------------------------------------
- thread PoliceCar1_Movie
- thread PoliceCar2_Movie
-
-
- // Matt Stuff again ;)
-
- thread camera_thread
- thread pigeon_thread
- //thread helicopter_land_roof
- //$helicopter lock
- //$helicopter doUse *1
- $roofblade thread ignore_thread
- $groundblade thread ignore_thread
- $cinematic_thug1 thread ignore_thread
- $cinematic_thug2 thread ignore_thread
- end
-
- // Thread to skip the dramatic story of Esmeralda, the heroic pigeon and Meep-Meep, the
- // reckless police car - and to get rid of the music that makes you sicker than mexican
- // food...well, skip cinematic and jump right into action, that kinda stuff.
-
- //---
- skip_cinematic_thread:
-
- $skip_trigger ontrigger skip_sequence
- pause
- end
-
- skip_sequence:
- $skip_trigger notrigger
- fadeout 1 0 0 0
- cueplayer
- $pigeon remove
- $cinematic_thug1 remove
- $cinematic_thug2 remove
- $blade2 hide
- $heligun hide
- thread move_dudes_up
- level.helistarted = 1
- thread start_action_thread
- thread mainthread
- wait 1
-
- fadein 1 0 0 0
- end
-
- // There's something about Mary's nipples that makes me wanna see that movie aga...never mind.
- //---
- initialize_thread:
-
- hud 0
- music none
- $sun1 remove
- freezeplayer
- $camera2 moveto $cam2start
- $node hide
- $node notsolid
- $lookatme hide
- $lookatme notsolid
- $roofblade hide
- $groundblade hide
- $node time .1
- $node rotateYup 180
- waitFor $node
- music aux5 none
- $cinematic_thug1 anim talk1
- $cinematic_thug2 anim talk1
- fadeout .1 0 0 0
- wait 1
- fadein 2 0 0 0
- end
-
-
- //---
- camera_thread:
- $pigeon speed 10
- $pigeon moveto $pigeonstart
- $camera moveto $pigeonstart
- $camera follow $pigeon
- $pigeon followpath $pigeonstart
- cueplayer
- $camera jumpcut
- cuecamera $camera
- end
-
-
- //---
- camera2_thread:
- level.helistarted ifequal 1 goto cam2end
- //$skip_trigger notrigger
- $camera follow $node $lookatme
- wait 2
- thread camera3_thread
- $camera lookat $lookatme
- $camera follow $cam2start $lookatme
- wait 2
- $camera pause
- wait 5
- $camera continue
- thread move_lookatme_thread
- wait 8
- fadeout 1 0 0 0
- cueplayer
- thread mainthread
- thread start_action_thread
- //print "set the thugs to attack again...somehow.\n"
-
- cam2end:
- end
-
-
-
-
- //---
- camera3_thread:
- music aux7
- parm.thug1 string $cinematic_thug1
- parm.thug2 string $cinematic_thug2
- thread dialog::thug_too_easy
- thread helicopter_ride_thread
- wait 1
- $cinematic_thug1 anim talk2
- wait 2
- $cinematic_thug1 anim talk1
- wait 1.5
- $cinematic_thug1 anim talk2
- wait 2.5
- $cinematic_thug1 anim laugh2
- wait .5
- $cinematic_thug2 anim laugh2
- wait 1
- $cinematic_thug1 anim talk1
- wait .5
- $cinematic_thug2 anim talk1
- wait 4.5
- parm.thug1 string $cinematic_thug1
- parm.thug2 string $cinematic_thug2
- thread dialog::blade_suprise
- end
-
-
- //---
- ignore_thread:
-
- local.self ignoreall
- pause
- goto ignore_thread
- end
-
-
- //---
- pigeon_thread:
- $skip_trigger notrigger
- $pigeon nextanim pigeon_fly
- wait 1.5
- $skip_trigger notrigger
- $pigeon nextanim coast
- wait 2.3
- $pigeon nextanim pigeon_fly
- wait 4
- $pigeon nextanim coast
- $pigeon nextanim coast
- wait 4.5
- $pigeon nextanim pigeon_fly
- wait 1.5
- $cinematic_thug1 anim attack
- $pigeon nextanim coast
- wait .8
- music aux6 none
- wait .2
- trigger $cinematic_sound1
- $pigeon gib 1 30 1 organic
- $pigeon gib 20 30 1 feather
- wait .5
- thread camera2_thread
- end
-
-
- //---
- move_lookatme_thread:
-
- $lookatme time 5
- $lookatme moveUp 128
- waitFor $lookatme
- $lookatme time 3.5
- $lookatme moveUp 148
- $lookatme moveEast 384
- $lookatme moveSouth 96
- waitFor $lookatme
- end
-
- // Kids, don't try this at home...
- //---
- roofcam_thread:
- trigger $glass2
- $helicopter time .1
- $helicopter notsolid
- $helicopter moveto $roofhelistart
- *1 hide
- $heligun show
- $roofblade show
- fadein 1 0 0 0
- hud 0
- //freezeplayer
- thread roofheli_thread
- $roofcam jumpcut
- $roofcam moveto $roofcamstart
- $roofcam lookat $roofblade
- //freezeplayer
- *1 take all
- cuecamera $roofcam
- $roofblade thread roofblade_thread
- thread changelevel1
- $roofcam follow $roofcamstart $roofblade
- wait 6
- $roofcam follow $roofblade
- waitFor $roofcam
-
- end
-
- // What does that mean "Why"? - Just because!
- //---
- roofblade_thread:
- $roofblade anim 1hand_idle3
- wait 3.5
- local.self walkto $roofpath1
- waitFor $roofblade
- local.self walkto $roofpath2
- wait 1
- fadeout 1 0 0 0
- waitFor $roofblade
- //map bank$start1
- end
-
- changelevel1:
- wait 7
- map bank$start1
- end
-
-
- //---
- roofheli_thread:
-
- wait 1
- $helicopter followpath $roofhelistart
- waitFor $helicopter
- end
-
- // Dude, I'm serious...
- //---
- groundcam_thread:
- thread end_level3
- *1 hide
- $heligun show
- $helicopter notsolid
- $groundblade show
- $groundblade thread groundblade_thread
- $groundcam follow $groundcam_start $groundblade
- $groundcam jumpcut
- *1 take all
- //freezeplayer
- cuecamera $groundcam
- fadein 1 0 0 0
- wait 4
- $groundcam follow $groundblade
- wait 10
- end
-
-
- // Fickende Hunde am Salatbuffet
- //---
- groundblade_thread:
- thread end_level2
- $groundblade anim 1hand_idle3
- wait 3.5
- local.self walkto $groundpath1
- waitFor $groundblade
- local.self runto $groundpath2
- waitFor $groundblade
- $groundblade runto $groundpath7
- waitFor $groundblade
- $groundblade runto $groundpath8
- waitFor $groundblade
- end
-
- end_level2:
- wait 7
- fadeout 1 0 0 0
- wait 1.5
- map bank$start2
- end
-
- end_level3:
- wait 20
- fadeout 1 0 0 0
- wait 1.5
- map bank$start2
- end
-
- //-----------------------------------------------------------------------------
- //-----------------------------------------------------------------------------
- // Wieder Cop Car Stuff
- //-----------------------------------------------------------------------------
- //-----------------------------------------------------------------------------
- PoliceCar1_Movie:
-
- local.Movie = 1
- local.WaitTime = 0
- $policecar1_movie jumpto $police1_movie_start
- $policetruck1_movie jumpto $police1_movie_start
- $policetruck1_movie hide
- local.VehicleName string "$policecar1_movie"
- $policecar1_siren_movie bind local.VehicleName
- wait 0.1
- goto PoliceCar1_Movie_Loop
-
- PoliceCar1_Movie_Loop:
- local.VehicleName show
- $policecar1_siren_movie playsound "environment/alarm/police/siren2.wav" 4
- local.VehicleName followpath $police1_movie_start normalangles
- waitFor local.VehicleName
- wait local.WaitTime
- $policecar1_siren_movie stopsound
- `
- level.piller ifequal 2 goto movieend1
-
- $police1_movie_launcher launch rocket
- wait 0.3
- parm.VehicleName string local.VehicleName
- thread Police1_Movie_CarExplode
- local.waitforthread = parm.previousthread
- waitForThread parm.previousthread
- local.VehicleName jumpto $police1_movie_start
- local.Vehicle randomint 100
- local.Vehicle ifgreater 50 local.VehicleName string "$policetruck1_movie"
- local.Vehicle iflessequal 50 local.VehicleName string "$policecar1_movie"
- $policecar1_siren_movie bind local.VehicleName
- local.WaitTime randomint 10
- local.WaitTime += 1
- wait local.WaitTime
- local.Movie ifequal 1 wait 15
- local.Movie = 0
- goto PoliceCar1_Movie_Loop
- end
-
- movieend1:
- end
-
- //-----------------------------------------------------------------------------
- Police1_Movie_CarExplode:
- local.VehicleName string parm.VehicleName
- local.VehicleName time 0.6
- local.VehicleName moveUp 128
- local.VehicleName moveWest 24
- local.VehicleName rotateXup -60
- trigger $police1_movie_boom
- //local.VehicleName shatter "0 0 0" 150 50 200 1 0
- $policecar1_siren_movie playsound "environment/alarm/police/siren2down.wav" 3
- waitFor local.VehicleName
-
- local.VehicleName time 0.3
- local.VehicleName moveUp 64
- local.VehicleName moveWest 12
- local.VehicleName rotateXup -30
- waitFor local.VehicleName
-
- local.VehicleName time 0.9
- local.VehicleName moveDown 128
- local.VehicleName moveWest 36
- local.VehicleName rotateXup -90
- trigger $police1_movie_boom
- //local.VehicleName shatter "0 0 0" 150 50 200 1 0
- waitFor local.VehicleName
-
- local.VehicleName hide
- local.VehicleName time 0.1
- local.VehicleName rotateXup 180
- trigger $police1_movie_boom
- waitFor local.VehicleName
- end
-
- //-----------------------------------------------------------------------------
- PoliceCar2_Movie:
-
- local.Movie = 1
- local.WaitTime = 4
- $policecar2_movie jumpto $police2_movie_start
- $policetruck2_movie jumpto $police2_movie_start
- $policetruck2_movie hide
- local.VehicleName string "$policecar2_movie"
- $policecar2_siren_movie bind local.VehicleName
- wait 4
- goto PoliceCar2_Movie_Loop
-
- PoliceCar2_Movie_Loop:
- local.VehicleName show
- $policecar2_siren_movie playsound "environment/alarm/police/siren2.wav" 4
- local.VehicleName followpath $police2_movie_start normalangles
- waitFor local.VehicleName
- wait local.WaitTime
- $policecar2_siren_movie stopsound
-
- level.piller ifequal 2 goto movieend2
-
- $police2_movie_launcher launch rocket
- wait 0.3
- parm.VehicleName string local.VehicleName
- thread Police2_Movie_CarExplode
- local.waitforthread = parm.previousthread
- waitForThread parm.previousthread
- local.VehicleName jumpto $police2_movie_start
- local.Vehicle randomint 100
- local.Vehicle ifgreater 50 local.VehicleName string "$policetruck2_movie"
- local.Vehicle iflessequal 50 local.VehicleName string "$policecar2_movie"
- $policecar2_siren_movie bind local.VehicleName
- local.WaitTime randomint 10
- local.WaitTime += 1
- wait local.WaitTime
- local.Movie ifequal 1 wait 15
- local.Movie = 0
-
- goto PoliceCar2_Movie_Loop
- end
-
- movieend2:
- end
-
- //-----------------------------------------------------------------------------
- Police2_Movie_CarExplode:
- local.VehicleName string parm.VehicleName
- local.VehicleName time 0.6
- local.VehicleName moveUp 128
- local.VehicleName moveNorth 24
- local.VehicleName rotateZup -60
- trigger $police2_movie_boom
- //local.VehicleName shatter "0 0 0" 150 50 200 1 0
- $policecar2_siren_movie playsound "environment/alarm/police/siren2down.wav" 3
- waitFor local.VehicleName
-
- local.VehicleName time 0.3
- local.VehicleName moveUp 64
- local.VehicleName moveNorth 12
- local.VehicleName rotateZup -30
- waitFor local.VehicleName
-
- local.VehicleName time 0.9
- local.VehicleName moveDown 128
- local.VehicleName moveNorth 36
- local.VehicleName rotateZup -90
- trigger $police2_movie_boom
- //local.VehicleName shatter "0 0 0" 150 50 200 1 0
- waitFor local.VehicleName
-
- local.VehicleName hide
- local.VehicleName time 0.1
- local.VehicleName rotateZup 180
- trigger $police2_movie_boom
- waitFor local.VehicleName
- end
-