home *** CD-ROM | disk | FTP | other *** search
/ Micromanía 44 / Mm44.iso / sin / DATA / base / Pak0.pak / maps / intro.scr < prev    next >
Encoding:
Text File  |  1998-07-26  |  39.4 KB  |  1,667 lines

  1. // Bank Dialog Script
  2. setdialogscript dialog/dialog_intro.scr
  3. $skip_trigger hide
  4.  
  5. goto cinematic
  6. // doing an initialize thread there, so you wanna go there, run that anyway and implement
  7. // the use-skip-cinematic
  8. end
  9.  
  10. mainthread:
  11. //-------------------------------------------
  12. // Main thread and Script init
  13. //-------------------------------------------
  14. //thread helicopter_ride_thread
  15. thread helicopter_damage_thread
  16. thread rotors_spin_down_thread
  17. thread billboard_thread
  18. thread ammo1_thread
  19. thread ammo2_thread
  20. thread bank_entrance_thread
  21.  
  22. //-------------------------------------------
  23. // Toms stuff
  24. //-------------------------------------------
  25. // Good, bad, I'm the guy with the gun
  26. level.count_bad_guys = 0
  27. level.count_good_guys = 0
  28. level.PObjective1 = 0
  29. level.PObjective2 = 0
  30. level.PObjective3 = 0
  31. level.SObjective1 = 0
  32.  
  33. thread turret_death_wait
  34. thread turret1_deathreport
  35. thread turret2_deathreport
  36. thread turret3_deathreport
  37. thread MissionComputer
  38. thread SkillLevelSettings
  39. thread pillar
  40. thread heli_damage_dialog
  41. thread random_sounds
  42. thread shootsign
  43. end
  44.  
  45. //-------------------------------------------
  46. // Shoot sign
  47. //-------------------------------------------
  48. shootsign:
  49. $shootsign1 ondamage sign_message
  50. pause
  51.  
  52. sign_message:
  53. $shootsign1 nodamage
  54. thread dialog::jc_what_are_you_shooting_at1
  55. local.waitforthread = parm.previousthread
  56. waitForThread parm.previousthread
  57. thread dialog::blade_can_it_jc
  58. end
  59.  
  60. //-------------------------------------------
  61. // Helicopter damage dialog
  62. //-------------------------------------------
  63. random_sounds:
  64. wait 10
  65.  
  66. random_sound_loop:
  67. wait 10
  68. local.rndsnd randomint 5
  69. local.rndsnd ifequal 1 goto combat_one
  70. local.rndsnd ifequal 2 goto combat_two
  71. local.rndsnd ifequal 3 goto combat_five
  72. local.rndsnd ifequal 4 goto combat_six
  73. local.rndsnd ifequal 5 goto combat_seven
  74. end
  75.  
  76. combat_one:
  77. parm.actor1    string    "$heli_fuckshitup"
  78. thread dialog::combat_one
  79. local.waitforthread = parm.previousthread
  80. waitForThread parm.previousthread
  81. goto random_sound_loop
  82. end
  83.  
  84. combat_two:
  85. parm.actor1    string    "$heli_fuckshitup"
  86. thread dialog::combat_two
  87. local.waitforthread = parm.previousthread
  88. waitForThread parm.previousthread
  89. goto random_sound_loop
  90. end
  91.  
  92. combat_five:
  93. parm.actor1    string    "$heli_fuckshitup"
  94. thread dialog::combat_five
  95. local.waitforthread = parm.previousthread
  96. waitForThread parm.previousthread
  97. goto random_sound_loop
  98. end
  99.  
  100. combat_six:
  101. parm.actor1    string    "$heli_fuckshitup"
  102. thread dialog::combat_six
  103. local.waitforthread = parm.previousthread
  104. waitForThread parm.previousthread
  105. goto random_sound_loop
  106. end
  107.  
  108. combat_seven:
  109. parm.actor1    string    "$heli_fuckshitup"
  110. thread dialog::combat_seven
  111. local.waitforthread = parm.previousthread
  112. waitForThread parm.previousthread
  113. goto random_sound_loop
  114. end
  115.  
  116. //-------------------------------------------
  117. // Helicopter damage dialog
  118. //-------------------------------------------
  119. heli_damage_dialog:
  120. level.helidamage ifgreater 500 goto nextmessage1
  121. wait 1
  122. goto heli_damage_dialog
  123.  
  124. nextmessage1:
  125. thread dialog::pilot_hit2
  126.  
  127. nextmessage1a:
  128. level.helidamage ifgreater 900 goto nextmessage2
  129. wait 1
  130. goto nextmessage1a
  131.  
  132. nextmessage2:
  133. thread dialog::pilot_hit1
  134.  
  135. nextmessage2a:
  136. level.helidamage ifgreater 1250 goto nextmessage3
  137. wait 1
  138. goto nextmessage2a
  139.  
  140. nextmessage3:
  141. thread dialog::pilot_hit3
  142.  
  143. nextmessage3a:
  144. level.helidamage ifgreater 1550 goto nextmessage4
  145. wait 1
  146. goto nextmessage3a
  147.  
  148. nextmessage4:
  149. thread dialog::pilot_sec_airsupport
  150.  
  151. nextmessage4a:
  152. level.helidamage ifgreater 1800 goto nextmessage5
  153. wait 1
  154. goto nextmessage4a
  155.  
  156. nextmessage5:
  157. thread dialog::jc_chopper_repair
  158.  
  159. nextmessage5a:
  160. level.helidamage ifgreater 2000 goto nextmessage6
  161. wait 1
  162. goto nextmessage5a
  163.  
  164. nextmessage6:
  165. thread dialog::pilot_going_down
  166.  
  167. nextmessage6a:
  168. level.helidamage ifgreater 2500 goto fucked
  169. wait 1
  170. goto nextmessage6a
  171.  
  172. fucked:
  173. level.PObjective1 = 2
  174. level.PObjective2 = 2
  175. level.PObjective3 = 2
  176. level.SObjective1 = 2
  177. thread MissionComputer
  178. thread dialog::PObjectiveFailed
  179. cueplayer
  180. //fadeout .7 1 1 1
  181. *1 playerkill
  182. wait 2.5
  183. *1 respawn
  184. end
  185.  
  186. //-------------------------------------------
  187. // Cave in entrance trigger
  188. //-------------------------------------------
  189. pillar:
  190. $awning2    ondamage start_pillar
  191. $awning1    ondamage start_pillar
  192. $pillar ondamage start_pillar
  193. pause
  194.  
  195. start_pillar:
  196. $pillar    nodamage
  197. $awning2    nodamage
  198. $awning1    nodamage
  199. trigger $pillar
  200. level.piller = 2
  201. level.SObjective1 = 1
  202. thread MissionComputer
  203. thread dialog::SObjectiveComplete
  204. end
  205.  
  206. //-------------------------------------------
  207. // Testing Helicopter differing sounds
  208. //-------------------------------------------
  209. heli_hit:
  210. level.hitme_hit ifequal 1 goto heli_already_hit
  211. level.hitme_hit = 1
  212. $rotors playsound misc/null.wav 1 7
  213. wait .1
  214. $rotors playsound vehicle/helicopt/hit1.wav 2 7
  215. wait 3.8
  216. //$rotors playsound misc/null.wav 1 7
  217. $rotors playsound vehicle/helicopt/flyloop.wav 2 7
  218. level.hitme_hit = 0
  219. end
  220.  
  221. heli_already_hit:
  222. end
  223.  
  224. //-------------------------------------------
  225. // Turret Skill levels
  226. //-------------------------------------------
  227. SkillLevelSettings:
  228. local.skilllevel getcvar skill
  229. //easy
  230. local.skilllevel ifequal 0 $turret1 rocketrate 10
  231. local.skilllevel ifequal 0 $turret2 rocketrate 10
  232. local.skilllevel ifequal 0 $turret3 rocketrate 9
  233. local.skilllevel ifequal 0 $turret1 health 500
  234. local.skilllevel ifequal 0 $turret2 health 500
  235. local.skilllevel ifequal 0 $turret3 health 600
  236. //medium
  237. local.skilllevel ifequal 1 $turret1 rocketrate 8
  238. local.skilllevel ifequal 1 $turret2 rocketrate 8
  239. local.skilllevel ifequal 1 $turret3 rocketrate 7
  240. local.skilllevel ifequal 1 $turret1 health 1000
  241. local.skilllevel ifequal 1 $turret2 health 1000
  242. local.skilllevel ifequal 1 $turret3 health 1200
  243. //hard
  244. local.skilllevel ifequal 2 $turret1 rocketrate 4
  245. local.skilllevel ifequal 2 $turret2 rocketrate 4
  246. local.skilllevel ifequal 2 $turret3 rocketrate 3
  247. local.skilllevel ifequal 2 $turret1 health 1500
  248. local.skilllevel ifequal 2 $turret2 health 1500
  249. local.skilllevel ifequal 2 $turret3 health 1600
  250. end
  251.  
  252. //-------------------------------------------
  253. // Mission Computer
  254. //-------------------------------------------
  255. MissionComputer:
  256. //0 nd 1 succeed 2 fail
  257. // level.PObjective1 --> Destroy Rocket Turrets
  258. // level.PObjective2 --> Eliminate All Enemy Forces
  259. // level.PObjective3 --> Gain Entry Into The Bank
  260. // level.SObjective1 --> Minimize Civilian Casualties
  261. %missioncon conlayout "xv -72 yv 76 fc 0.6 0.6 1 1 string \"Air Assault On FCB\""
  262. %missioncon conapplayout "xv -120 yv 60 fc 0.4 0.4 0.8 1 string \"Primary Objective(s):\""
  263. 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\""
  264. 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\""
  265. 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\""
  266.  
  267. 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\""
  268. 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\""
  269. 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\""
  270.  
  271. 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\""
  272. 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\""
  273. 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\""
  274.  
  275. %missioncon conapplayout "xv -120 yv 0 fc 0.4 0.4 0.8 1 string \"Secondary Objective(s):\""
  276. 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\""
  277. 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\""
  278. 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\""
  279. end
  280.  
  281.  
  282. //-------------------------------------------
  283. // Temp scriptobject for turret death level variables
  284. //-------------------------------------------
  285. turret1_deathreport:
  286. $turret1_dead    ontrigger    1change
  287. pause
  288.  
  289. 1change:
  290.     //print    "got here 1"
  291. $turret1_dead    remove
  292. level.turret1_nuked = 1
  293. end
  294.  
  295. turret2_deathreport:
  296. $turret2_dead    ontrigger    2change
  297. pause
  298.  
  299. 2change:
  300.     //print "got here 2"
  301. $turret2_dead    remove
  302. level.turret2_nuked = 1
  303. end
  304.  
  305. turret3_deathreport:
  306. $turret3_dead    ontrigger    3change
  307. pause
  308.  
  309. 3change:
  310.     //print "got here 3"
  311. $turret3_dead    remove
  312. level.turret3_nuked = 1
  313. end
  314. //-------------------------------------------
  315.  
  316. //-------------------------------------------
  317. // Main level Loop (for spawning characters.
  318. // and randomly choosing stuff to happen in
  319. // the streets)
  320. //-------------------------------------------
  321. main_level_spawn_loop:
  322.     //print "Checking BAD guys\n"
  323. level.complete ifgreater 0 thread spawn_levelisdone
  324. level.complete ifgreater 0 goto end_main
  325. thread spawn_check_bad_guys
  326. wait 3
  327. goto main_level_spawn_loop
  328.  
  329. end_main:
  330. end
  331.  
  332. //-------------------------------------------
  333. // Psyco spawn BAD GUY checking thread
  334. //-------------------------------------------
  335. spawn_check_bad_guys:
  336. //level.complete ifequal 1 goto spawn_levelisdone
  337. //level.complete ifequal 2 goto spawn_levelisdone
  338. level.count_bad_guys ifequal 3 goto spawn_check_end
  339.  
  340. //local.rndbad randomint 100
  341. //local.rndbad iflessequal 10 goto spawn_window_check
  342. //local.rndbad iflessequal 20 goto window1_startspawn
  343. //local.rndbad ifgreater 20 goto spawn_roof_check
  344.  
  345.     //Spawn guys in windows logic
  346. //spawn_window_check:
  347. //local.rndwin randomint 100
  348. //local.rndwin iflessequal 50 goto window1_startspawn
  349. //local.rndwin ifgreater 50 goto window2_startspawn
  350.  
  351. goto spawn_roof_check
  352. end
  353.  
  354. //window1_startspawn:
  355. //level.dudeinwindow1 ifequal 1 goto spawn_guythere
  356. //level.dudeinwindow1 ifequal 0 thread spawn_guy_in_window1
  357. //end
  358.  
  359. //window2_startspawn:
  360. //level.dudeinwindow2 ifequal 1 goto spawn_guythere
  361. //level.dudeinwindow2 ifequal 0 thread spawn_guy_in_window2
  362. //end
  363.  
  364.     //Spawn guys on roof logic
  365. spawn_roof_check:
  366. local.rndroof randomint 100
  367. local.rndroof iflessequal 33 goto turret1_startspawn
  368. local.rndroof ifgreater 33 goto more_roof_rnd
  369.  
  370. more_roof_rnd:
  371. local.rndroof iflessequal 66 goto turret2_startspawn
  372. local.rndroof ifgreater 66 goto turret3_startspawn
  373. end
  374.  
  375. turret1_startspawn:
  376. level.turret1_active ifequal 1 goto spawn_guythere
  377. level.turret1_nuked ifequal 1 goto spawn_guythere
  378. level.turret1_active ifequal 0 thread spawn_guy_at_turret1
  379. end
  380.  
  381. turret2_startspawn:
  382. level.turret2_active ifequal 1 goto spawn_guythere
  383. level.turret2_nuked ifequal 1 goto spawn_guythere
  384. level.turret2_active ifequal 0 thread spawn_guy_at_turret2
  385. end
  386.  
  387. turret3_startspawn:
  388. level.turret3_active ifequal 1 goto spawn_guythere
  389. level.turret3_nuked ifequal 1 goto spawn_guythere
  390. level.turret3_active ifequal 0 thread spawn_guy_at_turret3
  391. end
  392.  
  393. spawn_levelisdone:
  394. level.count_bad_guys ifequal 0 goto obj2_done
  395. wait 1
  396. goto spawn_levelisdone
  397.  
  398. obj2_done:
  399. level.complete += 1
  400. level.PObjective2 = 1
  401. thread MissionComputer
  402. thread dialog::PObjectiveComplete
  403. wait 1
  404. thread land_roof_dialogue1_thread
  405.  
  406.     //print "Turrets are dead, no more baddies\n"
  407. end
  408.  
  409. spawn_check_end:
  410.     //print "Enough Bad Guys!\n"
  411. end
  412.  
  413. spawn_guythere:
  414.     //print "Somebody is already there!\n"
  415. end
  416. //-------------------------------------------
  417.  
  418. //-------------------------------------------
  419. // Turret counter and level.complete state.
  420. //-------------------------------------------
  421. turret_death_wait:
  422. local.turret_death_index = 0
  423.  
  424. turret_death_loop:
  425. $turret_death_counter    ontrigger    count_turret
  426. pause
  427.  
  428. count_turret:
  429. $turret_death_counter    notrigger
  430. local.turret_death_index += 1
  431. local.turret_death_index ifequal 3 goto turrets_dead
  432. local.turret_death_index ifequal 1 thread dialog::pilot_nice_shooting
  433. local.turret_death_index ifequal 2 thread dialog::jc_way_to_hit
  434.     //print "TURRET NUKED\n"
  435. goto turret_death_loop
  436.  
  437. turrets_dead:
  438. level.PObjective1 = 1
  439. thread MissionComputer
  440. thread dialog::PObjectiveComplete
  441. level.complete += 1
  442. //print level.complete
  443. end
  444. //-------------------------------------------
  445.  
  446. //-------------------------------------------
  447. // Spawn People in to turrets
  448. //-------------------------------------------
  449.  
  450.     // Guy in window1
  451. spawn_guy_in_window1:
  452. trigger $window_spawn1
  453. level.count_bad_guys += 1
  454. level.dudeinwindow1 = 1
  455. wait .1
  456. $window_thug1 thread winthug1_setstates
  457. wait 2
  458. trigger $window_thug1
  459. end
  460.  
  461. winthug1_setstates:
  462. local.self    ignore    act_runtoarea act_stop
  463. local.self    ignore    act_doorsound act_mutantsound act_voicesound act_machinesound act_radiosound
  464. local.self    ignore    act_weaponsound act_movementsound act_painsound act_deathsound act_breakingsound
  465. local.self    ignore    act_used
  466.  
  467. local.self    respondto    act_killed    winthug1_killed
  468. local.self    respondto    act_activated    winthug1_activated
  469.  
  470. local.self    state    act_idle
  471.  
  472. pause
  473.  
  474. winthug1_activated:
  475. $door3 open
  476. local.self      ignore  act_activated
  477. local.self    walkto    $winnode1
  478. waitFor local.self
  479. local.self    runto    $winnode2
  480. waitFor local.self
  481. local.self    attack    $helicopter
  482. pause
  483. end
  484.  
  485. winthug1_killed:
  486. level.dudeinwindow1 = 0
  487. level.count_bad_guys -= 1
  488. end
  489.  
  490.     // Guy in window2
  491. //spawn_guy_in_window2:
  492. //trigger $window_spawn2
  493. //level.count_bad_guys += 1
  494. //level.dudeinwindow2 = 1
  495. //wait .1
  496. //$window_thug2 thread winthug2_setstates
  497. //end
  498.  
  499. //winthug2_setstates:
  500. //local.self    ignore    act_runtoarea act_stop
  501. //local.self    ignore    act_doorsound act_mutantsound act_voicesound act_machinesound act_radiosound
  502. //local.self    ignore    act_weaponsound act_movementsound act_painsound act_deathsound act_breakingsound
  503. //local.self    ignore    act_used
  504.  
  505. //local.self    respondto    act_killed    winthug2_killed
  506.  
  507. //local.self    state    act_idle
  508.  
  509. //pause
  510.  
  511. //winthug2_killed:
  512. //level.dudeinwindow2 = 0
  513. //level.count_bad_guys -= 1
  514. //end
  515.  
  516.     // Thug1 dude
  517. spawn_guy_at_turret1:
  518. trigger $spawner1
  519. level.count_bad_guys += 1
  520. level.turret1_active = 1
  521. wait .1
  522. $thug1    thread thug1_setstates
  523. wait 2
  524. trigger $thug1
  525. end
  526.  
  527. thug1_setstates:
  528. local.self    ignore    act_runtoarea act_stop
  529. local.self    ignore    act_doorsound act_mutantsound act_voicesound act_machinesound act_radiosound
  530. local.self    ignore    act_weaponsound act_movementsound act_painsound act_deathsound act_breakingsound
  531. local.self    ignore    attackentity act_used act_sightenemy
  532.  
  533. local.self    respondto    act_activated    thug1_activated
  534. local.self    respondto    act_killed    thug1_killed
  535. local.self    respondto    act_idle    thug1_idle
  536.  
  537. local.self    state    act_idle
  538.  
  539. pause
  540.  
  541. thug1_idle:
  542. local.self    anim    idle
  543. waitFor local.self
  544. pause
  545. goto thug1_idle
  546.  
  547. thug1_activated:
  548. $door1    open
  549. local.self      ignore  act_activated
  550. local.self    runto    $turret1_path1
  551. waitFor local.self
  552. local.self    runto    $turret1_path2
  553. waitFor local.self
  554. $turret1    activate
  555. local.self    anim    manrocket1
  556. pause
  557. end
  558.  
  559. thug1_killed:
  560. $turret1    deactivate
  561. level.turret1_active = 0
  562. level.count_bad_guys -= 1
  563. //thread spawn_guy_at_turret1
  564. end
  565.  
  566.     // Thug2dude
  567. spawn_guy_at_turret2:
  568. trigger $spawner2
  569. level.count_bad_guys += 1
  570. level.turret2_active = 1
  571. wait .1
  572. $thug2    thread thug2_setstates
  573. wait 2
  574. trigger $thug2
  575. end
  576.  
  577. thug2_setstates:
  578. local.self    ignore    act_runtoarea act_stop
  579. local.self    ignore    act_doorsound act_mutantsound act_voicesound act_machinesound act_radiosound
  580. local.self    ignore    act_weaponsound act_movementsound act_painsound act_deathsound act_breakingsound
  581. local.self    ignore    attackentity act_used act_sightenemy
  582.  
  583. local.self    respondto    act_activated    thug2_activated
  584. local.self    respondto    act_killed    thug2_killed
  585. local.self    respondto    act_idle    thug2_idle
  586.  
  587. local.self    state    act_idle
  588.  
  589. pause
  590.  
  591. thug2_idle:
  592. local.self    anim    idle
  593. waitFor local.self
  594. pause
  595. goto thug2_idle
  596.  
  597. thug2_activated:
  598. $door2    open
  599. local.self      ignore  act_activated
  600. local.self    runto    $turret2_path1
  601. waitFor local.self
  602. local.self    runto    $turret2_path2
  603. waitFor local.self
  604. $turret2    activate
  605. local.self    anim    manrocket1
  606. pause
  607. end
  608.  
  609. thug2_killed:
  610. $turret2    deactivate
  611. level.turret2_active = 0
  612. level.count_bad_guys -= 1
  613. //thread spawn_guy_at_turret2
  614. end
  615.  
  616.     // Thug3 dude
  617. spawn_guy_at_turret3:
  618. trigger $spawner3
  619. level.count_bad_guys += 1
  620. level.turret3_active = 1
  621. wait .1
  622. $thug3    thread thug3_setstates
  623. wait 2
  624. trigger $thug3
  625. end
  626.  
  627. thug3_setstates:
  628. local.self    ignore    act_runtoarea act_stop
  629. local.self    ignore    act_doorsound act_mutantsound act_voicesound act_machinesound act_radiosound
  630. local.self    ignore    act_weaponsound act_movementsound act_painsound act_deathsound act_breakingsound
  631. local.self    ignore    attackentity act_used act_sightenemy
  632.  
  633. local.self    respondto    act_activated    thug3_activated
  634. local.self    respondto    act_killed    thug3_killed
  635. local.self    respondto    act_idle    thug3_idle
  636.  
  637. local.self    state    act_idle
  638.  
  639. pause
  640.  
  641. thug3_idle:
  642. local.self    anim    idle
  643. waitFor local.self
  644. pause
  645. goto thug3_idle
  646.  
  647. thug3_activated:
  648. $door3    open
  649. local.self      ignore  act_activated
  650. local.self    runto    $turret3_path1
  651. waitFor local.self
  652. local.self    runto    $turret3_path2
  653. waitFor local.self
  654. $turret3    activate
  655. local.self    anim    manrocket1
  656. pause
  657. end
  658.  
  659. thug3_killed:
  660. $turret3    deactivate
  661. level.turret3_active = 0
  662. level.count_bad_guys -= 1
  663. //thread spawn_guy_at_turret3
  664. end
  665. //-------------------------------------------
  666.  
  667. move_dudes_up:
  668. $remove_me_for_guys    remove
  669. $move_guys_up    time    .1
  670. $move_guys_up    moveUp    112
  671. waitFor $move_guys_up
  672. end
  673.  
  674. //-------------------------------------------
  675. // Helicopter movin
  676. //-------------------------------------------
  677. helicopter_ride_thread:
  678.  
  679. $rotors_brush notsolid
  680. $rotors_brush hide
  681. $rotors_brush bind $helicopter
  682. $heligun_origin bind $helicopter
  683. $blade2 bind $heligun_origin
  684. $heligun bind $heligun_origin
  685. $heli_fuckshitup bind $helicopter
  686. wait .1
  687. $rotors bind $rotors_brush
  688. wait .1
  689.  
  690. $rotors_brush time 1
  691. $rotors_brush rotateY 720
  692.  
  693. start_copter:
  694. wait 2
  695. $helicopter followpath $path1_startintro
  696. //level.helistarted ifequal 1 $helicopter moveto $path1_startintro
  697. wait 3
  698. $rotors playsound vehicle/helicopt/flyloop.wav 2 7
  699. waitFor $helicopter
  700. end
  701.  
  702.     //** Put player in helicopter
  703. //---
  704. start_action_thread:
  705. hud 1
  706. releaseplayer
  707. $helicopter lock
  708. $helicopter doUse *1
  709. $blade2    remove
  710. $heligun hide
  711. $cinematic_thug1    remove
  712. $cinematic_thug2    remove
  713. thread move_dudes_up
  714. level.helistarted ifequal 1 thread hover_path
  715. level.helistarted ifequal 0 fadein 1 0 0 0
  716. wait 1
  717. music normal
  718. thread thugs_attacked_dialog1
  719. thread blade_talksmack1
  720.  
  721. //--------------------------------------------
  722. // player must kill both cinematic thugs before the level starts
  723. // This is where the game should "jump" to if the cinematic playback is
  724. // aborted.
  725. //--------------------------------------------
  726. kill_cinematic_thugs:
  727. thread hover_path
  728. local.deathindex = 0
  729. level.hoverpathover = 0
  730.  
  731. kill_cinematic_thugs_loop:
  732. $thug_death_counter ontrigger counterup
  733. pause
  734.  
  735. counterup:
  736. local.deathindex += 1
  737. local.deathindex ifequal 2 goto start_level_loop
  738. goto kill_cinematic_thugs_loop
  739. end
  740.     //--------------------------------------------
  741.     // Put the helicopter in a hover path until the cinematic thugs are dead
  742.     //--------------------------------------------
  743. hover_path:
  744. $helicopter followpath $hover_path
  745. waitFor $helicopter
  746.  
  747. level.hoverpathover ifequal 1 goto start_heli_loop
  748. level.hoverpathover ifequal 0 goto hover_path
  749. end
  750.  
  751. start_level_loop:
  752. level.hoverpathover = 1
  753. end
  754.  
  755. heli_loop_dialog_start:
  756. thread dialog::StatusUpdated
  757. local.waitforthread = parm.previousthread
  758. waitForThread parm.previousthread
  759. thread dialog::jc_remember_boss
  760. end
  761.  
  762. //-------------------------------------------
  763. // Start helicopter main loop
  764. //-------------------------------------------
  765. start_heli_loop:
  766. thread heli_loop_dialog_start
  767.     // Start up main level bad guy spawn loop
  768. thread main_level_spawn_loop
  769. $helicopter followpath $down_path
  770. waitFor $helicopter
  771.  
  772. //-------------------------------------------
  773. // Loop copter, check damage, etc.
  774. //-------------------------------------------
  775. helicopter_loop_sequence:
  776.  
  777. $helicopter followpath $loop_path
  778. waitFor $helicopter
  779.  
  780. level.complete ifequal 2 goto helicopter_land_roof
  781. level.helidamage iflessequal 2000 goto helicopter_loop_sequence
  782.  
  783.  
  784. //-------------------------------------------
  785. // Helicopter Crashing on ground start
  786. //-------------------------------------------
  787. $helicopter followpath $road_path
  788.  
  789. thread copter_goin_down
  790.  
  791. waitFor $helicopter
  792. $rotors playsound misc/null.wav 1 7
  793. wait .1
  794. $rotors playsound vehicle/helicopt/hidown.wav 1.0 7
  795.  
  796. thread dialog::pilot_were_down_whew_close
  797. $helicopter unlock
  798. hud 0
  799. trigger $rotors_brush
  800. fadeout 1 0 0 0
  801. wait 1
  802. thread ground_dialog
  803. thread groundcam_thread
  804. goto heli_end
  805.  
  806. //-------------------------------------------
  807. // Helicopter lands on roof
  808. //-------------------------------------------
  809. helicopter_land_roof:
  810. level.PObjective3 = 1
  811. thread dialog::PObjectiveComplete
  812. thread MissionComputer
  813.  
  814. //thread land_roof_dialogue1_thread
  815.  
  816. $helicopter followpath $roof_path
  817. waitFor $helicopter
  818.  
  819. thread land_roof_dialogue2_thread
  820.  
  821. $helicopter stopsound
  822. $helicopter playsound vehicle/helicopt/hidown.wav 1.0 7
  823. //$helicopter unlock
  824. thread roofcam_thread
  825. //fadeout 1 0 0 0
  826. trigger $rotors_brush
  827.  
  828. heli_end:
  829. end
  830.  
  831. //-------------------------------------------
  832. // Helicopter monitor damage thread
  833. //-------------------------------------------
  834. helicopter_damage_thread:
  835.  
  836. helicopter_damage_start:
  837. $helicopter ondamage heli_damage_sequence
  838. $rotors ondamage heli_damage_sequence
  839. pause
  840.  
  841. heli_damage_sequence:
  842. $helicopter nodamage
  843. $rotors nodamage
  844. thread heli_hit
  845. level.helidamage += local.damage
  846.     //print level.helidamage
  847.     //newline
  848. goto helicopter_damage_start
  849. end
  850.  
  851. //-------------------------------------------
  852. // Helicopter Spindown
  853. //-------------------------------------------
  854. rotors_spin_down_thread:
  855.  
  856. level.rotors_speed = 720
  857.  
  858. $rotors_brush ontrigger rotors_spin_down_loop_begin
  859. pause
  860.  
  861. rotors_spin_down_loop_begin:
  862. $rotors_brush notrigger
  863.  
  864. rotors_spin_down_loop:
  865.  
  866. level.rotors_speed -= 5
  867. $rotors_brush rotateY level.rotors_speed
  868. wait .1
  869.  
  870. level.rotors_speed ifgreater 0 goto rotors_spin_down_loop
  871. end
  872.  
  873. //-------------------------------------------
  874. // Thugs Talking at start of action
  875. //-------------------------------------------
  876. thugs_attacked_dialog1:
  877. parm.thug1    string    "$dialog_airattack"
  878. thread dialog::thug_air_attack
  879. end
  880.  
  881. thugs_attacked_dialog2:
  882. parm.thug1    string    "$dialog_runforcover"
  883. thread dialog::thug_get_to_launchers1
  884.  
  885. blade_talksmack1:
  886. wait 2
  887. thread dialog::blade_not_so_fast
  888. end
  889. //-------------------------------------------
  890.  
  891. land_road_dialogue1_thread:
  892. wait 15
  893. thread dialog::pilot_flakleft
  894. local.waitforthread = parm.previousthread
  895. waitForThread parm.previousthread
  896. thread dialog::jc_great1
  897. local.waitforthread = parm.previousthread
  898. waitForThread parm.previousthread
  899. wait 4
  900.  
  901.  
  902. copter_goin_down:
  903. thread dialog::pilot_controls_arent_responding
  904. local.waitforthread = parm.previousthread
  905. waitForThread parm.previousthread
  906. thread dialog::blade_uh_oh
  907. wait 2
  908. thread dialog::pilot_hang_on1
  909. end
  910.  
  911. dialog2:
  912. wait 3
  913. thread dialog::jc_get_in_there
  914. end
  915.  
  916. land_roof_dialogue1_thread:
  917. wait 2
  918. thread dialog::jc_rooftop_landin
  919. local.waitforthread = parm.previousthread
  920. waitForThread parm.previousthread
  921. end
  922.  
  923. land_roof_dialogue2_thread:
  924. thread dialog::pilot_drop_and_dust
  925. end
  926.  
  927. //-------------------------------------------
  928. // Billboard destroyed thread1
  929. //-------------------------------------------
  930. billboard_thread:
  931. $billboard hide
  932. $billboard2 bind $billboard
  933. $fountain_flood time .1
  934. $fountain_flood moveDown 10
  935. waitFor $fountain_flood
  936. game.intro_billboard_fall ifequal 0 game.intro_billboard_fall = 1
  937. $billboard_left ondamage billboard_fall_sequence_left
  938. $billboard_right ondamage billboard_fall_sequence_right
  939. pause
  940.  
  941. billboard_fall_sequence_left:
  942. $billboard_left nodamage
  943. $billboard_right nodamage
  944. game.intro_billboard_fall = 2
  945.  
  946. wait .3
  947.  
  948. $billboard time .4
  949.  
  950. $billboard rotateXdown 56
  951. $billboard moveWest 64
  952. $billboard moveDown 30
  953. waitFor $billboard
  954.  
  955. $billboard time .7
  956.  
  957. $billboard rotateXdown 98
  958. $billboard rotateZup 5
  959. $billboard moveDown 495
  960. $billboard moveSouth 16
  961. $billboard moveWest 128
  962. waitFor $billboard
  963.  
  964. $billboard time .5
  965.  
  966. $billboard rotateXdown 85
  967. $billboard rotateZup 5
  968. $billboard moveDown 495
  969. $billboard moveSouth 16
  970. $billboard moveWest 128
  971. waitFor $billboard
  972.  
  973. $billboard time .4
  974.  
  975. $billboard rotateXdown 71
  976. $billboard rotateZup 5
  977. $billboard moveDown 490
  978. $billboard moveSouth 16
  979. $billboard moveWest 107
  980. waitFor $billboard
  981.  
  982. $billboard playsound impact/crates/crate3.wav 3.0
  983. $glass1 remove
  984. $glass2 shatter "0 0 0" 25 10 75 .5 0
  985. $glass3 remove
  986. $glass2 remove
  987.  
  988. $window_bar1 time .5
  989. $window_bar1 moveDown 368
  990. $window_bar1 rotateXup 22
  991. $window_bar1 rotateYup 30
  992. $window_bar1 moveWest 16
  993. waitFor $window_bar1
  994. goto bottom1
  995.  
  996.  
  997. //-------------------------------------------
  998. // Billboard destroyed thread2
  999. //-------------------------------------------
  1000. billboard_fall_sequence_right:
  1001. $billboard_left nodamage
  1002. $billboard_right nodamage
  1003. game.intro_billboard_fall = 3
  1004.  
  1005. wait .3
  1006.  
  1007. $billboard time .4
  1008.  
  1009. $billboard rotateXdown 56
  1010. $billboard moveWest 64
  1011. $billboard moveDown 30
  1012. waitFor $billboard
  1013.  
  1014. $billboard time .7
  1015.  
  1016. $billboard rotateXdown 98
  1017. $billboard rotateZup 5
  1018. $billboard moveDown 495
  1019. $billboard moveSouth 16
  1020. $billboard moveWest 128
  1021. waitFor $billboard
  1022.  
  1023. $billboard time .5
  1024.  
  1025. $billboard rotateXdown 85
  1026. $billboard rotateZup 5
  1027. $billboard moveDown 495
  1028. $billboard moveSouth 16
  1029. $billboard moveWest 128
  1030. waitFor $billboard
  1031.  
  1032. $billboard time .4
  1033.  
  1034. $billboard rotateXdown 71
  1035. $billboard rotateZup 5
  1036. $billboard moveDown 490
  1037. $billboard moveSouth 16
  1038. $billboard moveWest 107
  1039. waitFor $billboard
  1040.  
  1041. $billboard playsound impact/crates/crate3.wav 3.0
  1042. $glass2 shatter "0 0 0" 25 10 75 .5 0
  1043. $glass1 remove
  1044. $glass2 remove
  1045. $glass3 remove
  1046.  
  1047. wait .2
  1048.  
  1049. $billboard time .7
  1050. $window_bar1 time .7
  1051. $window_bar2 time .7
  1052.  
  1053. $window_bar1 moveDown 368
  1054. $window_bar1 rotateXup 22
  1055. $window_bar1 rotateYdown 15
  1056. $window_bar1 moveWest 16
  1057. $window_bar2 moveDown 368
  1058. $window_bar2 rotateXup 22
  1059. $window_bar2 rotateYup 30
  1060. $window_bar2 moveWest 16
  1061. $billboard moveDown 356
  1062. $billboard rotateXup 20
  1063. $billboard rotateZdown 20
  1064. waitFor $billboard
  1065.  
  1066. $fountain_flood time 15
  1067. $fountain_flood moveUp 15
  1068. thread bottom2
  1069. waitFor $fountain_flood
  1070. end
  1071.  
  1072. bottom1:
  1073. thread dialog::jc_dead_billboard1
  1074. local.waitforthread = parm.previousthread
  1075. waitForThread parm.previousthread
  1076. end
  1077.  
  1078. bottom2:
  1079. thread dialog::jc_dead_billboard2
  1080. local.waitforthread = parm.previousthread
  1081. waitForThread parm.previousthread
  1082. end
  1083.  
  1084.  
  1085.  
  1086. //=====================================
  1087. //=====================================
  1088.  
  1089.  
  1090. exit_variable_thread:
  1091.  
  1092. // 1 = ceiling entrance
  1093. // 2 = ground entrance
  1094.  
  1095. game.intro_ground_entrance ifequal 0 game.intro_ground_entrance = 1
  1096.  
  1097. $ground_entrance ontrigger ground_entrance_sequence
  1098. pause
  1099.  
  1100. ground_entrance_sequence:
  1101. game.intro_ground_entrance = 2
  1102. end
  1103.  
  1104. //=====================================
  1105. //=====================================
  1106. // I have been awake for 36 hours
  1107.  
  1108. ammo1_thread:
  1109.  
  1110. $ammo1_roof time 1
  1111.  
  1112. $ammo1 ondamage ammo1_sequence
  1113. pause
  1114.  
  1115. ammo1_sequence:
  1116. $ammo1 nodamage
  1117.  
  1118. trigger $ammo1_explode
  1119. $ammo1 shatter "0 0 0" 75 10 75 .5 0
  1120. //$ammo1_roof shatter "0 0 0" 100 10 75 1.0 0
  1121. wait .2
  1122.  
  1123. $ammo1 notsolid
  1124. $ammo1 hide
  1125.  
  1126. $ammo1_roof rotateXdown 15
  1127. $ammo1_roof rotateZdown 15
  1128. waitFor $ammo1_roof
  1129. $ammo1_roof moveDown    128
  1130. waitFor $ammo1_roof
  1131. end
  1132.  
  1133.  
  1134. ammo2_thread:
  1135.  
  1136. game.intro_roof_break1 ifequal 0 game.intro_roof_break1 = 1
  1137. $ammo2_roof time .5
  1138. $ammo2_wall1 time 1.2
  1139. $ammo2_wall2 time 1.2
  1140.  
  1141. $ammo2 ondamage ammo2_sequence
  1142. pause
  1143.  
  1144. ammo2_sequence:
  1145. $ammo2 nodamage
  1146. game.intro_roof_break1 = 2
  1147.  
  1148. trigger $ammo2_explode
  1149. $ammo2 shatter "0 0 0" 75 10 75 .5 0
  1150. wait .2
  1151.  
  1152. $ammo2 notsolid
  1153. $ammo2 hide
  1154.  
  1155. $ammo2_roof rotateXdown 15
  1156. $ammo2_roof rotateZdown 15
  1157. waitFor $ammo2_roof
  1158. $ammo2_roof moveDown    128
  1159. waitFor $ammo2_roof
  1160. end
  1161.  
  1162.  
  1163. bank_entrance_thread:
  1164. $pillar time .6
  1165. $awning1 time .6
  1166. $awning2 time .6
  1167. $awning3 time .6
  1168.  
  1169. $pillar ontrigger bank_entrance_collapse
  1170. pause
  1171.  
  1172. bank_entrance_collapse:
  1173. $pillar notrigger
  1174.  
  1175. $awning2 shatter "0 0 0" 25 10 75 .75 0
  1176. $pillar rotateZdown 45
  1177. waitFor $pillar
  1178.  
  1179. $pillar rotateZdown 45
  1180. $awning1 rotateZup 45
  1181. $awning2 moveDown 128
  1182. waitFor $awning2
  1183.  
  1184. $awning3 moveDown 100
  1185. $awning1 moveDown 128
  1186. $awning2 moveDown 128
  1187. $awning1 moveSouth 32
  1188. $awning2 rotateZdown 15
  1189. waitFor $awning2
  1190. end
  1191.  
  1192. // Matt Stuff
  1193. //----------------------------------------------------------------------
  1194. // This is where the cool stuff starts! Ok, it's only the cinematic...
  1195. //----------------------------------------------------------------------
  1196.  
  1197. //---
  1198. cinematic:
  1199.  
  1200. thread initialize_thread
  1201. local.waitforthread = parm.previousthread
  1202. waitForThread local.waitforthread
  1203. thread skip_cinematic_thread
  1204.  
  1205. //-------------------------------------------
  1206. // Wieder's stuff
  1207. //-------------------------------------------
  1208. thread PoliceCar1_Movie
  1209. thread PoliceCar2_Movie
  1210.  
  1211.  
  1212. // Matt Stuff again ;)
  1213.  
  1214. thread camera_thread
  1215. thread pigeon_thread
  1216. //thread helicopter_land_roof
  1217. //$helicopter lock
  1218. //$helicopter doUse *1
  1219. $roofblade thread ignore_thread
  1220. $groundblade thread ignore_thread
  1221. $cinematic_thug1 thread ignore_thread
  1222. $cinematic_thug2 thread ignore_thread
  1223. end
  1224.  
  1225. // Thread to skip the dramatic story of Esmeralda, the heroic pigeon and Meep-Meep, the
  1226. // reckless police car - and to get rid of the music that makes you sicker than mexican
  1227. // food...well, skip cinematic and jump right into action, that kinda stuff.
  1228.  
  1229. //---
  1230. skip_cinematic_thread:
  1231.  
  1232. $skip_trigger ontrigger skip_sequence
  1233. pause
  1234. end
  1235.  
  1236. skip_sequence:
  1237. $skip_trigger notrigger
  1238. fadeout 1 0 0 0
  1239. cueplayer
  1240. $pigeon remove
  1241. $cinematic_thug1 remove
  1242. $cinematic_thug2 remove
  1243. $blade2 hide
  1244. $heligun hide
  1245. thread move_dudes_up
  1246. level.helistarted = 1
  1247. thread start_action_thread
  1248. thread mainthread
  1249. wait 1
  1250.  
  1251. fadein 1 0 0 0
  1252. end
  1253.  
  1254. // There's something about Mary's nipples that makes me wanna see that movie aga...never mind.
  1255. //---
  1256. initialize_thread:
  1257.  
  1258. hud 0
  1259. music none
  1260. $sun1 remove
  1261. freezeplayer
  1262. $camera2 moveto $cam2start
  1263. $node hide
  1264. $node notsolid
  1265. $lookatme hide
  1266. $lookatme notsolid
  1267. $roofblade hide
  1268. $groundblade hide
  1269. $node time .1
  1270. $node rotateYup 180
  1271. waitFor $node
  1272. music aux5 none
  1273. $cinematic_thug1 anim talk1
  1274. $cinematic_thug2 anim talk1
  1275. fadeout .1 0 0 0
  1276. wait 1
  1277. fadein 2 0 0 0
  1278. end
  1279.  
  1280.  
  1281. //---
  1282. camera_thread:
  1283. $pigeon speed 10
  1284. $pigeon moveto $pigeonstart
  1285. $camera moveto $pigeonstart
  1286. $camera follow $pigeon
  1287. $pigeon followpath $pigeonstart
  1288. cueplayer
  1289. $camera jumpcut
  1290. cuecamera $camera
  1291. end
  1292.  
  1293.  
  1294. //---
  1295. camera2_thread:
  1296. level.helistarted ifequal 1 goto cam2end
  1297. //$skip_trigger notrigger
  1298. $camera follow $node $lookatme
  1299. wait 2
  1300. thread camera3_thread
  1301. $camera lookat $lookatme
  1302. $camera follow $cam2start $lookatme
  1303. wait 2
  1304. $camera pause
  1305. wait 5
  1306. $camera continue
  1307. thread move_lookatme_thread
  1308. wait 8
  1309. fadeout 1 0 0 0
  1310. cueplayer
  1311. thread mainthread
  1312. thread start_action_thread
  1313. //print "set the thugs to attack again...somehow.\n"
  1314.  
  1315. cam2end:
  1316. end
  1317.  
  1318.  
  1319.  
  1320.  
  1321. //---
  1322. camera3_thread:
  1323. music aux7
  1324. parm.thug1 string $cinematic_thug1
  1325. parm.thug2 string $cinematic_thug2
  1326. thread dialog::thug_too_easy
  1327. thread helicopter_ride_thread
  1328. wait 1
  1329. $cinematic_thug1 anim talk2
  1330. wait 2
  1331. $cinematic_thug1 anim talk1
  1332. wait 1.5
  1333. $cinematic_thug1 anim talk2
  1334. wait 2.5
  1335. $cinematic_thug1 anim laugh2
  1336. wait .5
  1337. $cinematic_thug2 anim laugh2
  1338. wait 1
  1339. $cinematic_thug1 anim talk1
  1340. wait .5
  1341. $cinematic_thug2 anim talk1
  1342. wait 4.5
  1343. parm.thug1 string $cinematic_thug1
  1344. parm.thug2 string $cinematic_thug2
  1345. thread dialog::blade_suprise
  1346. end
  1347.  
  1348.  
  1349. //---
  1350. ignore_thread:
  1351.  
  1352. local.self ignoreall
  1353. pause
  1354. goto ignore_thread
  1355. end
  1356.  
  1357.  
  1358. //---
  1359. pigeon_thread:
  1360. $skip_trigger notrigger
  1361. $pigeon nextanim pigeon_fly
  1362. wait 1.5
  1363. $skip_trigger notrigger
  1364. $pigeon nextanim coast
  1365. wait 2.3
  1366. $pigeon nextanim pigeon_fly
  1367. wait 4
  1368. $pigeon nextanim coast
  1369. $pigeon nextanim coast
  1370. wait 4.5
  1371. $pigeon nextanim pigeon_fly
  1372. wait 1.5
  1373. $cinematic_thug1 anim attack
  1374. $pigeon nextanim coast
  1375. wait .8
  1376. music aux6 none
  1377. wait .2
  1378. trigger $cinematic_sound1
  1379. $pigeon gib 1 30 1 organic
  1380. $pigeon gib 20 30 1 feather
  1381. wait .5
  1382. thread camera2_thread
  1383. end
  1384.  
  1385.  
  1386. //---
  1387. move_lookatme_thread:
  1388.  
  1389. $lookatme time 5
  1390. $lookatme moveUp 128
  1391. waitFor $lookatme
  1392. $lookatme time 3.5
  1393. $lookatme moveUp 148
  1394. $lookatme moveEast 384
  1395. $lookatme moveSouth 96
  1396. waitFor $lookatme
  1397. end
  1398.  
  1399. // Kids, don't try this at home...
  1400. //---
  1401. roofcam_thread:
  1402. trigger $glass2
  1403. $helicopter time .1
  1404. $helicopter notsolid
  1405. $helicopter moveto $roofhelistart
  1406. *1 hide
  1407. $heligun show
  1408. $roofblade show
  1409. fadein 1 0 0 0
  1410. hud 0
  1411. //freezeplayer
  1412. thread roofheli_thread
  1413. $roofcam jumpcut
  1414. $roofcam moveto $roofcamstart
  1415. $roofcam lookat $roofblade
  1416. //freezeplayer
  1417. *1 take all
  1418. cuecamera $roofcam
  1419. $roofblade thread roofblade_thread
  1420. thread changelevel1
  1421. $roofcam follow $roofcamstart $roofblade
  1422. wait 6
  1423. $roofcam follow $roofblade
  1424. waitFor $roofcam
  1425.  
  1426. end
  1427.  
  1428. // What does that mean "Why"? - Just because!
  1429. //---
  1430. roofblade_thread:
  1431. $roofblade anim 1hand_idle3
  1432. wait 3.5
  1433. local.self walkto $roofpath1
  1434. waitFor $roofblade
  1435. local.self walkto $roofpath2
  1436. wait 1
  1437. fadeout 1 0 0 0
  1438. waitFor $roofblade
  1439. //map bank$start1
  1440. end
  1441.  
  1442. changelevel1:
  1443. wait 7
  1444. map bank$start1
  1445. end
  1446.  
  1447.  
  1448. //---
  1449. roofheli_thread:
  1450.  
  1451. wait 1
  1452. $helicopter followpath $roofhelistart
  1453. waitFor $helicopter
  1454. end
  1455.  
  1456. // Dude, I'm serious...
  1457. //---
  1458. groundcam_thread:
  1459. thread end_level3
  1460. *1 hide
  1461. $heligun show
  1462. $helicopter notsolid
  1463. $groundblade show
  1464. $groundblade thread groundblade_thread
  1465. $groundcam follow $groundcam_start $groundblade
  1466. $groundcam jumpcut
  1467. *1 take all
  1468. //freezeplayer
  1469. cuecamera $groundcam
  1470. fadein 1 0 0 0
  1471. wait 4
  1472. $groundcam follow $groundblade
  1473. wait 10
  1474. end
  1475.  
  1476.  
  1477. // Fickende Hunde am Salatbuffet
  1478. //---
  1479. groundblade_thread:
  1480. thread end_level2
  1481. $groundblade anim 1hand_idle3
  1482. wait 3.5
  1483. local.self walkto $groundpath1
  1484. waitFor $groundblade
  1485. local.self runto $groundpath2
  1486. waitFor $groundblade
  1487. $groundblade runto $groundpath7
  1488. waitFor $groundblade
  1489. $groundblade runto $groundpath8
  1490. waitFor $groundblade
  1491. end
  1492.  
  1493. end_level2:
  1494. wait 7
  1495. fadeout 1 0 0 0
  1496. wait 1.5
  1497. map bank$start2
  1498. end
  1499.  
  1500. end_level3:
  1501. wait 20
  1502. fadeout 1 0 0 0
  1503. wait 1.5
  1504. map bank$start2
  1505. end
  1506.  
  1507. //-----------------------------------------------------------------------------
  1508. //-----------------------------------------------------------------------------
  1509. // Wieder Cop Car Stuff
  1510. //-----------------------------------------------------------------------------
  1511. //-----------------------------------------------------------------------------
  1512. PoliceCar1_Movie:
  1513.  
  1514. local.Movie = 1
  1515. local.WaitTime = 0
  1516. $policecar1_movie jumpto $police1_movie_start
  1517. $policetruck1_movie jumpto $police1_movie_start
  1518. $policetruck1_movie hide
  1519. local.VehicleName string "$policecar1_movie"
  1520. $policecar1_siren_movie bind local.VehicleName
  1521. wait 0.1
  1522. goto PoliceCar1_Movie_Loop
  1523.  
  1524. PoliceCar1_Movie_Loop:
  1525. local.VehicleName show
  1526. $policecar1_siren_movie playsound "environment/alarm/police/siren2.wav" 4
  1527. local.VehicleName followpath $police1_movie_start normalangles
  1528. waitFor local.VehicleName
  1529. wait local.WaitTime
  1530. $policecar1_siren_movie stopsound
  1531. `
  1532. level.piller ifequal 2 goto movieend1
  1533.  
  1534. $police1_movie_launcher launch rocket
  1535. wait 0.3
  1536. parm.VehicleName string local.VehicleName
  1537. thread Police1_Movie_CarExplode
  1538. local.waitforthread = parm.previousthread
  1539. waitForThread parm.previousthread
  1540. local.VehicleName jumpto $police1_movie_start
  1541. local.Vehicle randomint 100
  1542. local.Vehicle ifgreater 50 local.VehicleName string "$policetruck1_movie"
  1543. local.Vehicle iflessequal 50 local.VehicleName string "$policecar1_movie"
  1544. $policecar1_siren_movie bind local.VehicleName
  1545. local.WaitTime randomint 10
  1546. local.WaitTime += 1
  1547. wait local.WaitTime
  1548. local.Movie ifequal 1 wait 15
  1549. local.Movie = 0
  1550. goto PoliceCar1_Movie_Loop
  1551. end
  1552.  
  1553. movieend1:
  1554. end
  1555.  
  1556. //-----------------------------------------------------------------------------
  1557. Police1_Movie_CarExplode:
  1558. local.VehicleName string parm.VehicleName
  1559. local.VehicleName time 0.6
  1560. local.VehicleName moveUp    128
  1561. local.VehicleName moveWest  24
  1562. local.VehicleName rotateXup  -60
  1563. trigger $police1_movie_boom
  1564. //local.VehicleName shatter "0 0 0" 150 50 200 1 0
  1565. $policecar1_siren_movie playsound "environment/alarm/police/siren2down.wav" 3
  1566. waitFor local.VehicleName
  1567.  
  1568. local.VehicleName time 0.3
  1569. local.VehicleName moveUp    64
  1570. local.VehicleName moveWest   12
  1571. local.VehicleName rotateXup  -30
  1572. waitFor local.VehicleName
  1573.  
  1574. local.VehicleName time 0.9
  1575. local.VehicleName moveDown  128
  1576. local.VehicleName moveWest    36
  1577. local.VehicleName rotateXup  -90
  1578. trigger $police1_movie_boom
  1579. //local.VehicleName shatter "0 0 0" 150 50 200 1 0
  1580. waitFor local.VehicleName
  1581.  
  1582. local.VehicleName hide
  1583. local.VehicleName time 0.1
  1584. local.VehicleName rotateXup  180
  1585. trigger $police1_movie_boom
  1586. waitFor local.VehicleName
  1587. end
  1588.  
  1589. //-----------------------------------------------------------------------------
  1590. PoliceCar2_Movie:
  1591.  
  1592. local.Movie = 1
  1593. local.WaitTime = 4
  1594. $policecar2_movie jumpto $police2_movie_start
  1595. $policetruck2_movie jumpto $police2_movie_start
  1596. $policetruck2_movie hide
  1597. local.VehicleName string "$policecar2_movie"
  1598. $policecar2_siren_movie bind local.VehicleName
  1599. wait 4
  1600. goto PoliceCar2_Movie_Loop
  1601.  
  1602. PoliceCar2_Movie_Loop:
  1603. local.VehicleName show
  1604. $policecar2_siren_movie playsound "environment/alarm/police/siren2.wav" 4
  1605. local.VehicleName followpath $police2_movie_start normalangles
  1606. waitFor local.VehicleName
  1607. wait local.WaitTime
  1608. $policecar2_siren_movie stopsound
  1609.  
  1610. level.piller ifequal 2 goto movieend2
  1611.  
  1612. $police2_movie_launcher launch rocket
  1613. wait 0.3
  1614. parm.VehicleName string local.VehicleName
  1615. thread Police2_Movie_CarExplode
  1616. local.waitforthread = parm.previousthread
  1617. waitForThread parm.previousthread
  1618. local.VehicleName jumpto $police2_movie_start
  1619. local.Vehicle randomint 100
  1620. local.Vehicle ifgreater 50 local.VehicleName string "$policetruck2_movie"
  1621. local.Vehicle iflessequal 50 local.VehicleName string "$policecar2_movie"
  1622. $policecar2_siren_movie bind local.VehicleName
  1623. local.WaitTime randomint 10
  1624. local.WaitTime += 1
  1625. wait local.WaitTime
  1626. local.Movie ifequal 1 wait 15
  1627. local.Movie = 0
  1628.  
  1629. goto PoliceCar2_Movie_Loop
  1630. end
  1631.  
  1632. movieend2:
  1633. end
  1634.  
  1635. //-----------------------------------------------------------------------------
  1636. Police2_Movie_CarExplode:
  1637. local.VehicleName string parm.VehicleName
  1638. local.VehicleName time 0.6
  1639. local.VehicleName moveUp    128
  1640. local.VehicleName moveNorth  24
  1641. local.VehicleName rotateZup  -60
  1642. trigger $police2_movie_boom
  1643. //local.VehicleName shatter "0 0 0" 150 50 200 1 0
  1644. $policecar2_siren_movie playsound "environment/alarm/police/siren2down.wav" 3
  1645. waitFor local.VehicleName
  1646.  
  1647. local.VehicleName time 0.3
  1648. local.VehicleName moveUp    64
  1649. local.VehicleName moveNorth   12
  1650. local.VehicleName rotateZup  -30
  1651. waitFor local.VehicleName
  1652.  
  1653. local.VehicleName time 0.9
  1654. local.VehicleName moveDown  128
  1655. local.VehicleName moveNorth    36
  1656. local.VehicleName rotateZup  -90
  1657. trigger $police2_movie_boom
  1658. //local.VehicleName shatter "0 0 0" 150 50 200 1 0
  1659. waitFor local.VehicleName
  1660.  
  1661. local.VehicleName hide
  1662. local.VehicleName time 0.1
  1663. local.VehicleName rotateZup  180
  1664. trigger $police2_movie_boom
  1665. waitFor local.VehicleName
  1666. end
  1667.