home *** CD-ROM | disk | FTP | other *** search
/ GameStar Special 2004 March / GSSH0304CD4.iso / Patches / MoHAASpear / mohaasp_patch_211_to_215.exe / maps / t2l4.scr next >
Text File  |  2002-12-03  |  33KB  |  1,171 lines

  1. //--------------------------------------------------------------------
  2. // LEVEL INITIALIZATION
  3. //--------------------------------------------------------------------
  4.  
  5. main:
  6.     level.script="maps/t2l4.scr"
  7.     level.music="t2l4"
  8.     exec global/loadout.scr
  9.     exec global/ai.scr
  10.     exec global/exploder.scr
  11.     exec global/turret.scr
  12.  
  13. level waittill prespawn
  14.  
  15.     level.aipronechance = 0
  16.     level.auto_friendly = 0
  17.     exec global/door_locked.scr
  18.     exec global/ambient.scr level.script
  19.     exec global/bomber.scr
  20.     exec global/ambient.scr t2l4
  21.     exec gags/t2l4_start.scr
  22.     exec gags/t2l4_newstuka.scr
  23.  
  24. level waittill spawn
  25.     $world farplane_color (0.10 0.11 0.15)
  26.     $world farplane 3600
  27.     $world farplane_bias -1000
  28.     $world farplane_cull 2 
  29.     thread SetupFlak
  30.  
  31. //---------------------------------------------------------------------
  32. //Create Objectives
  33. //---------------------------------------------------------------------
  34.  
  35.     level.objective1 = 0
  36.     level.objective2 = 0
  37.     level.objective3 = 0
  38.     level.objective4 = 0
  39.     level.objective5 = 0
  40.     level.objective6 = 0
  41.  
  42. //--------------------------------------------------------------------
  43. // Tell AI to not drop health or weapons
  44. //--------------------------------------------------------------------
  45.  
  46.         level waittill spawn
  47.         level.nodrophealth = 1
  48. //---------------------------------------------------------------------
  49. //Snow Parameters
  50. //---------------------------------------------------------------------
  51.         level.rain_speed = "30"
  52.         level.rain_speed_vary = "1"
  53.         level.rain_length = "1.5"
  54.         level.rain_width = "1.5"
  55.         level.rain_density = "0.1"
  56.         level.rain_slant = "0"
  57.         level.rain_min_dist = "512"
  58.         level.rain_numshaders = 4
  59.         level.rain_shader = "textures/snow"
  60.  
  61.  
  62. //--------------------------------------------------------------------
  63. //Farplane Animation
  64. //--------------------------------------------------------------------
  65. //maxFarplaneDistance minPlayerZ maxPlayerZ
  66.  
  67. // $world animated_farplane 2000 5000 128 544
  68.  
  69.  
  70. //---------------------------------------------------------------------
  71. //For Captain's Dialog
  72. //---------------------------------------------------------------------
  73. thread gags/t2l4_captain.scr::t2l4_main
  74. $player fullheal
  75.  
  76.     // save off mg42gunnerC's turret...
  77.     level.turret_gunnerC = $mg42gunnerC.turret
  78.  
  79. //---------------------------------------------------------------------
  80. //Initalize Gags
  81. //---------------------------------------------------------------------
  82. waitthread gags/t2l4_Start.scr::DoStartup
  83.  
  84. $actiontrigger thread actiontrigger_thread
  85. thread gags/t2l4_friendly.scr::diver_guys_init
  86.  
  87.  
  88. //---------------------------------------------------------------------
  89. // These are global variables needed by the script to operate the tank
  90. //---------------------------------------------------------------------
  91.         level.enemytankspeed = 200
  92.         //level.playertanktarget = $player
  93.         level.lookahead = 256
  94.             wait 0.1
  95.  
  96.         //level.fnum[1].friendtype = 1
  97.         //level.fnum[1] thread global/friendly.scr::friendlythink
  98.  
  99.         //level.friendly.friendtype=1
  100.         //level.friendly thread global/friendly.scr::friendlythink
  101.  
  102.         setcvar "g_mission" "2"
  103.  
  104.     level.saychurch = 0
  105.     level.sayhouse = 0
  106.     level.sayschool = 0
  107.     level.sayhotel = 0
  108.  
  109.     level.captainfindtarget = 32000
  110.  
  111.     level.curr_objective    = 1
  112.  
  113.     level.hotel_spawns = 0
  114.  
  115.     level.no_more_chargers = 0
  116.  
  117.     // cheat code...
  118.     level.kill_player = 1
  119.  
  120.     // used by the church..
  121.     level.cappy_upstairs = 0
  122.     level.werfer_ready = 0
  123.  
  124.  
  125.     $hotel_mg hide
  126.     $hotel_mg ai_off
  127.     $hotel_mg threatbias ignoreme
  128.  
  129.  
  130.     thread SetupDeathTriggers
  131.  
  132.     $delete_5678 nottriggerable
  133.  
  134.  
  135. end    // main
  136.  
  137.  
  138. //-------------------------------------------------------------------
  139. doorlockedsound:
  140. //  Plays locked door sound
  141. //-------------------------------------------------------------------
  142.     self playsound door_wood_locked1
  143.  
  144. end
  145.  
  146. //-------------------------------------------------------------------
  147. SetupFlak:
  148. //
  149. //    Flak Cannon
  150. //-------------------------------------------------------------------
  151.  
  152.     $flak1_turret0 maxyawoffset 200.0
  153.     $flak1_turret0 turnspeed 30
  154.     $flak1_turret0 pitchspeed 7.5
  155.     $flak1_turret0 pitchcaps "-80 10 -5"
  156.     $flak1_turret0 viewjitter 7
  157.     $flak1_turret0 firedelay 4
  158.  
  159. end
  160.  
  161.  
  162.  
  163.  
  164. //------------------------------------------------------------------------------------------------
  165. // Building switches
  166. //------------------------------------------------------------------------------------------------
  167.  
  168.  
  169. // there must be 4 triggers
  170. // ***OutSideOn
  171. // ***OutSideOff
  172. // ***InSideOn
  173. // ***InSideOff
  174. // for each group of enemies
  175.  
  176. TurnChargersOn:
  177.     for (local.i=1;local.i<=$chargers.size;local.i++)
  178.     {
  179.         $chargers[local.i] rendereffects "-dontdraw"
  180.         $chargers[local.i] exec global/enable_ai.scr
  181.         $chargers[local.i] ai_on
  182.         $chargers[local.i] threatbias 1000
  183.     }
  184. end
  185.  
  186. TurnChargersOff:
  187.     for (local.i=1;local.i<=$chargers.size;local.i++)
  188.     {
  189.         $chargers[local.i] rendereffects "+dontdraw"
  190.         $chargers[local.i] exec global/disable_ai.scr
  191.         $chargers[local.i] ai_off
  192.         $chargers[local.i] threatbias ignoreme
  193.     }
  194. end
  195.  
  196. TurnMG42On:
  197.     for (local.i=1;local.i<=$mg42.size;local.i++)
  198.     {
  199.         local.ent = $mg42[local.i].target
  200.         if (isalive local.ent)
  201.         {
  202.             local.ent rendereffects "-dontdraw"
  203.             local.ent exec global/enable_ai.scr
  204.             local.ent ai_on
  205.             local.ent threatbias 5000
  206.         }
  207.         $mg42[local.i] rendereffects "-dontdraw"
  208.         $mg42[local.i] exec global/enable_ai.scr
  209. //        $mg42[local.i] ai_on
  210.     }
  211. end
  212.  
  213. TurnMG42Off:
  214.     for (local.i=1;local.i<=$mg42.size;local.i++)
  215.     {
  216.         local.ent = $mg42[local.i].target
  217.         if (isalive local.ent)
  218.         {
  219.             local.ent rendereffects "+dontdraw"
  220.             local.ent exec global/disable_ai.scr
  221.             local.ent ai_off
  222.             local.ent threatbias ignoreme
  223.  
  224.         }
  225.  
  226.         $mg42[local.i] rendereffects "+dontdraw"
  227.         $mg42[local.i] exec global/disable_ai.scr
  228. //        $mg42[local.i] ai_off
  229.     }
  230. end
  231.  
  232. TurnWanderEnemyOn:
  233.     for (local.i=1;local.i<=$wander_enemy.size;local.i++)
  234.     {
  235.         $wander_enemy[local.i] rendereffects "-dontdraw"
  236.         $wander_enemy[local.i] exec global/enable_ai.scr
  237.         $wander_enemy[local.i] ai_on
  238.         $wander_enemy[local.i] threatbias 1000
  239.     }
  240. end
  241.  
  242. TurnWanderEnemyOff:
  243.     for (local.i=1;local.i<=$wander_enemy.size;local.i++)
  244.     {
  245.         $wander_enemy[local.i] rendereffects "+dontdraw"
  246.         $wander_enemy[local.i] exec global/disable_ai.scr
  247.         $wander_enemy[local.i] ai_off
  248.         $wander_enemy[local.i] threatbias ignoreme
  249.     }
  250. end
  251.  
  252. TurnTanksOn:
  253. end
  254.     if(level.objective2 == 0)
  255.     {
  256.         $panzer1 rendereffects "-dontdraw"
  257.         $panzer2 rendereffects "-dontdraw"
  258.  
  259.         local.gun = $panzer1 QueryTurretSlotEntity 0
  260.         local.gun2 = $panzer1 QueryTurretSlotEntity 1
  261.         local.gun rendereffects "-dontdraw"
  262.         local.gun2 rendereffects "-dontdraw"
  263.  
  264.         local.gun = $panzer2 QueryTurretSlotEntity 0
  265.         local.gun2 = $panzer2 QueryTurretSlotEntity 1
  266.         local.gun rendereffects "-dontdraw"
  267.         local.gun2 rendereffects "-dontdraw"
  268.     }
  269.     //$panzer3 rendereffects "-dontdraw"
  270.     $panzer4 rendereffects "-dontdraw"
  271. end
  272.  
  273. TurnTanksOff:
  274. end
  275.     $panzer1 rendereffects "+dontdraw"
  276.     $panzer2 rendereffects "+dontdraw"
  277.  
  278.     local.gun = $panzer1 QueryTurretSlotEntity 0
  279.     local.gun2 = $panzer1 QueryTurretSlotEntity 1
  280.     local.gun rendereffects "+dontdraw"
  281.     local.gun2 rendereffects "+dontdraw"
  282.  
  283.     local.gun = $panzer2 QueryTurretSlotEntity 0
  284.     local.gun2 = $panzer2 QueryTurretSlotEntity 1
  285.     local.gun rendereffects "+dontdraw"
  286.     local.gun2 rendereffects "+dontdraw"
  287.  
  288.     //$panzer3 rendereffects "+dontdraw"
  289.     $panzer4 rendereffects "+dontdraw"
  290. end
  291.  
  292. RemoveTanks:
  293. end
  294.     //$panzer1 rendereffects "+dontdraw"
  295.     //$panzer2 rendereffects "+dontdraw"
  296.     
  297.     $panzer1 remove
  298.     local.gun = $panzer1 QueryTurretSlotEntity 0
  299.     local.gun2 = $panzer1 QueryTurretSlotEntity 1
  300.     local.gun remove
  301.     local.gun2 remove
  302.  
  303.     $panzer2 remove
  304.     local.gun = $panzer2 QueryTurretSlotEntity 0
  305.     local.gun2 = $panzer2 QueryTurretSlotEntity 1
  306.     local.gun remove
  307.     local.gun2 remove
  308. end
  309.  
  310. //--------------------------------------------------------------------------------------------
  311. // Church AI Manager
  312. //--------------------------------------------------------------------------------------------
  313. ChurchBoth:
  314.  
  315. end
  316.  
  317. ChurchInside:
  318.     // if guy is inside church, get rid of the extra sniper guy...
  319.     if ( $sniper1!=NULL && $sniper!=NIL )
  320.         $sniper1 delete
  321.  
  322. end
  323.  
  324. ChurchOutside:
  325. end
  326.  
  327.  
  328. //--------------------------------------------------------------------------------------------
  329. // Hotel AI Manager
  330. //--------------------------------------------------------------------------------------------
  331. HotelBoth:
  332. end
  333.  
  334. HotelInside:
  335.     if ( level.curr_objective== 5)
  336.     {
  337.         thread gags/t2l4_captain.scr::RespawnHotelMG42
  338.         thread gags/t2l4_end.scr::DoEnding
  339.         self delete
  340.     }
  341.  
  342. end
  343.  
  344. HotelOutside:
  345.  
  346. end
  347.  
  348. //------------------------------------------------------------------------------------------------
  349. // stuka
  350. //------------------------------------------------------------------------------------------------
  351. actiontrigger_thread:
  352.  
  353.     self waittill trigger
  354. //    $stuka thread gags/t2l4_stuka.scr::stukalogic
  355.  
  356.     thread store_original_fog
  357.     trigger $DiverJump
  358.     trigger $DiverDive
  359.     trigger $DiverSlide
  360.  
  361. end
  362.  
  363. //------------------------------------------------------------------------------------------------
  364. // fog control
  365. //------------------------------------------------------------------------------------------------
  366.  
  367. store_original_fog:
  368. //    level.farplane = 1500
  369. //    level.farplane_bias = -600
  370. //    level.farplanedelta = 5000
  371. //    level.howfast = 10
  372. //    level.fogcount = 0
  373. //    level.fogtotalchange = level.farplanedelta + level.farplane
  374.  
  375. end
  376.  
  377. change_fog:
  378. //    local.exit = 0
  379. //    while ((level.fogcount < level.fogtotalchange) && (local.exit == 0))
  380. //    {
  381. //        level.fogcount += level.howfast
  382. //        $world farplane (level.farplane + level.fogcount)
  383. //        $world farplane (level.farplane + level.fogcount)
  384. //        if ($player istouching $restore_fog)
  385. //            local.exit = 1
  386. //        wait 0.1
  387. //    }
  388.     wait 1
  389. end
  390.  
  391. restore_fog:
  392. //    local.exit = 0
  393. //    while ((level.fogcount > 0) && (local.exit == 0))
  394. //    {
  395. //        level.fogcount -= level.howfast
  396. //        $world farplane (level.farplane + level.fogcount)
  397. //        $world farplane (level.farplane + level.fogcount)
  398. //        if ($player istouching $change_fog)
  399. //            local.exit = 1
  400. //        wait 0.1
  401. //    }
  402.     wait 1
  403. end
  404.  
  405. charger_remove:
  406.  
  407. end
  408.  
  409.  
  410. //------------------------------------------------------------------------------------------------
  411. KillThePlayer local.panzer:
  412. //------------------------------------------------------------------------------------------------
  413.  
  414.     if ( level.kill_player==0 )
  415.         end
  416.  
  417.     if (local.panzer==NIL)
  418.         local.panzer = 1
  419.  
  420.     if ( local.panzer==1 )
  421.     {
  422.         // dprintln "Take out the Tanks!"
  423.         $player playsound dfr_call_AP4362
  424.     }
  425.  
  426.  
  427.     //dprintln "killing the player from trigger:" self.targetname
  428.  
  429.     $killtheplayer1 turnon
  430.     $killtheplayer2 turnon
  431.     $killtheplayer3 turnon
  432.  
  433.     wait 3
  434.  
  435.     while(isalive $player)
  436.     {
  437.         //dprintln "forcing player dead."
  438.         radiusdamage $player.origin 900 400 1
  439.         wait 1
  440.     }
  441.  
  442.     $killtheplayer1 turnoff
  443.     $killtheplayer2 turnoff
  444.     $killtheplayer3 turnoff
  445.  
  446.     end
  447.  
  448.  
  449. //------------------------------------------------------------------------------------------------
  450. spawn_0:
  451. //
  452. //    spawn guys in little house...
  453. //------------------------------------------------------------------------------------------------
  454.  
  455.     //dprintln "enabling death_field_to_church_toggle "
  456.     $death_field_to_church_toggle triggerable
  457.     thread global/ai.scr::spawnset 0 wander_enemy
  458.  
  459.     // cross off the first objective...
  460.     waitthread global/objectives.scr::add_objectives 1 3
  461.     level.curr_objective    = 2
  462.     forcemusic aux3 aux3
  463.  
  464. end
  465.  
  466. //------------------------------------------------------------------------------------------------
  467. spawn_13:
  468. //
  469. //    spawn guys in front of house...
  470. //------------------------------------------------------------------------------------------------
  471.  
  472.     thread global/ai.scr::spawnset 13 wander_enemy
  473.  
  474. end
  475.  
  476. //------------------------------------------------------------------------------------------------
  477. spawn_1:
  478. //
  479. //    first church group...
  480. //------------------------------------------------------------------------------------------------
  481.  
  482.     //dprintln "first church group"
  483.     thread global/ai.scr::spawnset 1 ChurchGuys 1
  484.  
  485. end
  486.  
  487. //------------------------------------------------------------------------------------------------
  488. spawn_2:
  489. //
  490. //    second church group...
  491. //------------------------------------------------------------------------------------------------
  492.  
  493.     //dprintln "second church group"
  494.     thread global/ai.scr::spawnset 2 ChurchGuys 1
  495.  
  496.     // let's delete all our chargers and destroy the tank if it's not already....
  497.  
  498.     //if ( isAlive $panzer3 )
  499. //    {
  500.     //    $panzer3 damage NULL 9000 NULL (0 0 0) (0 0 0) (0 0 0) 0 9 0 0
  501. //    }
  502.  
  503.  
  504. end
  505.  
  506. //------------------------------------------------------------------------------------------------
  507. spawn_200:
  508. //
  509. //    third church guy...
  510. //------------------------------------------------------------------------------------------------
  511.  
  512.     thread global/ai.scr::spawnset 200 ChurchGuys 1
  513.  
  514. end
  515.  
  516. //------------------------------------------------------------------------------------------------
  517. DoMG42Guy:
  518. //------------------------------------------------------------------------------------------------
  519.     self gun "MG42"
  520.     self threatbias ignoreme    // don't want cappy coming after this guy..
  521.     self type_idle "machinegunner"
  522.     self type_attack "machinegunner"
  523.     self type_disguise "machinegunner"
  524.     self type_grenade "machinegunner"
  525.  
  526.     self runto self.target
  527.     self waittill movedone
  528.  
  529.     local.o = self.origin
  530.     local.m = self.model
  531.     local.a = self.angles
  532.     local.s = self.sight
  533.  
  534.     self delete
  535.  
  536.     //dprintln "mg42guy getting on turretC"
  537.     // latch onto gunnerC's turret
  538. //    self turret level.turret_gunnerC
  539.  
  540.     // re-spawn a clone of him...
  541.     local.ent = spawn local.m angles local.a origin local.o targetname mg42_run_guy
  542.  
  543.     local.ent type_idle "machinegunner"
  544.     local.ent type_attack "machinegunner"
  545.     local.ent type_disguise "machinegunner"
  546.     local.ent type_grenade "machinegunner"
  547.     local.ent gun "MG42"
  548.     local.ent turret level.turret_gunnerC
  549.     local.ent sight local.s
  550.     local.ent threatbias 5000
  551.  
  552.  
  553.  
  554.     end
  555.  
  556. //------------------------------------------------------------------------------------------------
  557. spawn_5678:
  558. //
  559. //    spawn enemy when player enters church tower...
  560. //      this guy is to the right and runs to the MG42
  561. //------------------------------------------------------------------------------------------------
  562.  
  563.     $delete_5678 triggerable
  564.     thread give_sniper_rifle
  565.     waitthread global/ai.scr::spawnset 5678 BazookaGuys
  566.      $BazookaGuys thread BeBazookaGuy
  567.  
  568.  end
  569.  
  570. //------------------------------------------------------------------------------------------------
  571. BeBazookaGuy:
  572. //------------------------------------------------------------------------------------------------
  573.  
  574.      self exec global/disable_ai.scr
  575.      self waittill movedone
  576.      
  577.      wait 0.5
  578.      self exec global/crouch.scr
  579.      wait 1
  580.      while ( isAlive self )
  581.  
  582.          {
  583.           self exec global/aimat.scr $player
  584.           wait 1
  585.           self exec global/shoot.scr
  586.           wait 3.5
  587.          }
  588.  
  589.  end
  590.  
  591. //------------------------------------------------------------------------------------------------
  592. delete_5678:
  593. // called by the delete_2000 trigger
  594. //------------------------------------------------------------------------------------------------
  595.     self delete
  596.  
  597.     $BazookaGuys thread DeleteYourselfNow
  598.  
  599.     end
  600.  
  601. //------------------------------------------------------------------------------------------------
  602. spawn_2003:
  603. //
  604. //    mortar fodder in front of barn...
  605. //------------------------------------------------------------------------------------------------
  606.     wait 2
  607.     thread global/ai.scr::spawnset 2003 mortar_fodder_a 1
  608.  
  609. end
  610.  
  611. //------------------------------------------------------------------------------------------------
  612. spawn_2004:
  613. //
  614. //    mortar fodder in front of house...
  615. //------------------------------------------------------------------------------------------------
  616.     wait 2
  617.     thread global/ai.scr::spawnset 2004 mortar_fodder_b 1
  618.  
  619. end
  620.  
  621. //------------------------------------------------------------------------------------------------
  622. spawn_3:
  623. //
  624. //    first hotel group...
  625. //------------------------------------------------------------------------------------------------
  626.  
  627.     //dprintln "first hotel group"
  628.     waitthread global/ai.scr::spawnset 3 HotelGuys 1
  629.     waitthread OnHotelSpawn
  630.  
  631. end
  632.  
  633.  
  634. //------------------------------------------------------------------------------------------------
  635. spawn_4:
  636. //    
  637. //------------------------------------------------------------------------------------------------
  638.  
  639.     waitthread global/ai.scr::spawnset 4 HotelGuys 1
  640.     $triggerset4_2 delete
  641.  
  642.     waitthread OnHotelSpawn
  643.  
  644. end
  645.  
  646.     //------------------------------------------------------------------------------------------------
  647.     spawn_4_2:
  648.     //        
  649.     //------------------------------------------------------------------------------------------------
  650.     
  651.         waitthread global/ai.scr::spawnset 4 HotelGuys 1
  652.         $triggerset4 delete
  653.         waitthread OnHotelSpawn
  654.  
  655.     
  656.     end
  657.  
  658.  
  659. //------------------------------------------------------------------------------------------------
  660. spawn_5:
  661. //    
  662. //------------------------------------------------------------------------------------------------
  663.  
  664. //    waitthread global/ai.scr::spawnset 5 HotelGuys 1
  665.  
  666.     $windowguy_1 thread gags/t2l4_captain.scr::BeWindowGuy
  667.     $windowguy_2 thread gags/t2l4_captain.scr::BeWindowGuy
  668.  
  669.     $triggerset5_2 delete
  670.     waitthread OnHotelSpawn
  671.     $proj_southwing TurnOn
  672.     $proj_eastwing TurnOn
  673.  
  674.  
  675. end
  676.  
  677.     //------------------------------------------------------------------------------------------------
  678.     spawn_5_2:
  679.     //        
  680.     //------------------------------------------------------------------------------------------------
  681.     
  682. //        waitthread global/ai.scr::spawnset 5 HotelGuys 1
  683.         $windowguy_1 thread gags/t2l4_captain.scr::BeWindowGuy
  684.         $windowguy_2 thread gags/t2l4_captain.scr::BeWindowGuy
  685.  
  686.         $triggerset5 delete
  687.         waitthread OnHotelSpawn
  688.         $proj_southwing TurnOn
  689.     
  690.     end
  691.  
  692. //------------------------------------------------------------------------------------------------
  693. spawn_6:
  694. //
  695. //    second hotel group...
  696. //------------------------------------------------------------------------------------------------
  697.  
  698.     waitthread global/ai.scr::spawnset 6 HotelGuys 1
  699.     $triggerset6_2 delete
  700.  
  701.     waitthread OnHotelSpawn
  702.  
  703.     // move our cappy here too.. (otherwize mg guy busts a cap on him..)
  704.  
  705. end
  706.  
  707.     //------------------------------------------------------------------------------------------------
  708.     spawn_6_2:
  709.     //
  710.     //    second hotel group...
  711.     //------------------------------------------------------------------------------------------------
  712.     
  713.         waitthread global/ai.scr::spawnset 6 HotelGuys 1
  714.         $triggerset6 delete
  715.  
  716.         waitthread OnHotelSpawn
  717.     
  718.     end
  719.  
  720.  
  721. //------------------------------------------------------------------------------------------------
  722. spawn_7:
  723. //
  724. //    
  725. //------------------------------------------------------------------------------------------------
  726.  
  727. //    waitthread global/ai.scr::spawnset 7 HotelGuys 1
  728.  
  729.     $windowguy_3 thread gags/t2l4_captain.scr::BeWindowGuy
  730.     $windowguy_4 thread gags/t2l4_captain.scr::BeWindowGuy
  731.  
  732.     $triggerset7_2 delete
  733.     waitthread OnHotelSpawn
  734.     $proj_northwing TurnOn
  735.     $proj_eastwing TurnOn    
  736.  
  737. end
  738.  
  739.     //------------------------------------------------------------------------------------------------
  740.     spawn_7_2:
  741.     //
  742.     //    second hotel group...
  743.     //------------------------------------------------------------------------------------------------
  744.     
  745. //        waitthread global/ai.scr::spawnset 7 HotelGuys 1
  746.  
  747.         $windowguy_3 thread gags/t2l4_captain.scr::BeWindowGuy
  748.         $windowguy_4 thread gags/t2l4_captain.scr::BeWindowGuy
  749.  
  750.         $triggerset7 delete
  751.         waitthread OnHotelSpawn
  752.     $proj_northwing TurnOn
  753.     
  754.     end
  755.  
  756. //------------------------------------------------------------------------------------------------
  757. spawn_8:
  758. //    
  759. //------------------------------------------------------------------------------------------------
  760.  
  761. //    waitthread global/ai.scr::spawnset 8 HotelGuys 1
  762.  
  763.     $windowguy_5 thread gags/t2l4_captain.scr::BeWindowGuy
  764.     $triggerset8_2 delete
  765.     waitthread OnHotelSpawn
  766.     // turn hotel mg guy on...
  767.     $hotel_mg show
  768.     $hotel_mg ai_on
  769.     $hotel_mg threatbias 5000
  770.     $cappy thread gags/t2l4_captain.scr::DoEnding
  771.  
  772.  
  773. end
  774.  
  775.     //------------------------------------------------------------------------------------------------
  776.     spawn_8_2:
  777.     //        
  778.     //------------------------------------------------------------------------------------------------
  779.     
  780. //        waitthread global/ai.scr::spawnset 8 HotelGuys 1
  781.  
  782.         $windowguy_5 thread gags/t2l4_captain.scr::BeWindowGuy
  783.         $triggerset8 delete
  784.         waitthread OnHotelSpawn
  785.         // turn hotel mg guy on...
  786.         $hotel_mg show
  787.         $hotel_mg ai_on
  788.         $hotel_mg threatbias 5000
  789.  
  790.         $cappy thread gags/t2l4_captain.scr::DoEnding
  791.     
  792.     end
  793.  
  794. //------------------------------------------------------------------------------------------------
  795. spawn_9:
  796. //
  797. //    attic hotel group...
  798. //------------------------------------------------------------------------------------------------
  799.  
  800.     //dprintln "attic hotel group"
  801.     waitthread global/ai.scr::spawnset 9 HotelGuys 1
  802.     waitthread OnHotelSpawn
  803.  
  804.     // move cappy to his end-gag destination...
  805.     $cappy origin $captain_dest5.origin
  806.  
  807.  
  808. end
  809.  
  810. //------------------------------------------------------------------------------------------------
  811. spawn_50:
  812. //
  813. //    other side of barn...
  814. //------------------------------------------------------------------------------------------------
  815.  
  816.     //dprintln "run into barn"
  817.     thread global/ai.scr::spawnset 50 wander_enemy 1
  818.     
  819.  
  820. end
  821.  
  822. //------------------------------------------------------------------------------------------------
  823. spawn_51:
  824. //
  825. //    spawns just short of the church
  826. //------------------------------------------------------------------------------------------------
  827.  
  828.     thread global/ai.scr::spawnset 51 wander_enemy
  829.     
  830. end
  831.  
  832. //------------------------------------------------------------------------------------------------
  833. deletespawn_51:
  834. //
  835. //    spawn guys in little house...
  836. //------------------------------------------------------------------------------------------------
  837.  
  838.     //dprintln "delete run into barn"
  839.     thread global/ai.scr::DeleteEnemySpawner $wander_enemy 51
  840.  
  841. end
  842.  
  843.  
  844. //------------------------------------------------------------------------------------------------
  845. spawn_52:
  846. //
  847. //    spawn flak guys...
  848. //------------------------------------------------------------------------------------------------
  849.     if (parm.other==$player || parm.other==$cappy )
  850.     {
  851.         self delete
  852.         thread global/ai.scr::spawnset 52 wander_enemy 1
  853.         thread global/ai.scr::spawnset 552 sacrifice 1
  854.         thread gags/t2l4_captain.scr::StopFiringFlak
  855.     }
  856. end
  857.  
  858. //------------------------------------------------------------------------------------------------
  859. spawn_70_a:
  860. //
  861. //    guys right before hotel...
  862. //------------------------------------------------------------------------------------------------
  863.     if (parm.other==$player || parm.other==$cappy )
  864.     {
  865.         self delete
  866.         thread global/ai.scr::spawnset 70 wander_enemy 1
  867.         $triggerset70_b delete
  868.         $triggerset70_c delete
  869.     }
  870. end
  871.  
  872.  
  873.     //------------------------------------------------------------------------------------------------
  874.     spawn_70_b:
  875.     //
  876.     //    guys right before hotel...
  877.     //------------------------------------------------------------------------------------------------
  878.  
  879.     if (parm.other==$player || parm.other==$cappy )
  880.     {
  881.         self delete    
  882.         thread global/ai.scr::spawnset 70 wander_enemy 1
  883.         $triggerset70_a delete
  884.         $triggerset70_c delete
  885.     }
  886.     end
  887.     
  888.     
  889.         //------------------------------------------------------------------------------------------------
  890.         spawn_70_c:
  891.         //
  892.         //    guys right before hotel...
  893.         //------------------------------------------------------------------------------------------------
  894.     if (parm.other==$player || parm.other==$cappy )
  895.     {
  896.         self delete        
  897.         thread global/ai.scr::spawnset 70 wander_enemy 1
  898.         $triggerset70_a delete
  899.         $triggerset70_b delete
  900.     }
  901.  
  902.     end
  903.  
  904. //------------------------------------------------------------------------------------------------
  905. spawn_schoolgroup:
  906. // group of enemies emerging from school
  907. //------------------------------------------------------------------------------------------------
  908.     dprintln "spawning school guys"
  909.     thread global/ai.scr::spawnset 71 wander_enemy
  910.     
  911. end
  912.  
  913.  
  914.  
  915. //------------------------------------------------------------------------------------------------
  916. OnHotelSpawn:
  917. //------------------------------------------------------------------------------------------------
  918.  
  919.     level.hotel_spawns ++
  920.  
  921.     end
  922.  
  923.  
  924. //------------------------------------------------------------------------------------------------
  925. SetupDeathTriggers:
  926. //------------------------------------------------------------------------------------------------
  927.     
  928.     $death_field_to_church_toggle nottriggerable
  929.     $death_church_to_hotel nottriggerable
  930.  
  931.     $death_church_to_hotel_toggle nottriggerable
  932.     $death_hotel_to_end nottriggerable
  933.  
  934.     end
  935.  
  936. //------------------------------------------------------------------------------------------------
  937. death_minefield:
  938. //
  939. //    player went into the minefield... time to die...
  940. //------------------------------------------------------------------------------------------------
  941.     
  942.     self delete
  943.     thread KillThePlayer 0
  944.  
  945.     end
  946.  
  947. //------------------------------------------------------------------------------------------------
  948. death_field_to_church:
  949. //------------------------------------------------------------------------------------------------
  950.     
  951.     self delete
  952.     thread KillThePlayer
  953.     
  954.     end
  955.  
  956. //------------------------------------------------------------------------------------------------
  957. death_field_to_church_toggle:
  958. //------------------------------------------------------------------------------------------------
  959.     self delete
  960.     thread KillThePlayer
  961.     end
  962.  
  963. //------------------------------------------------------------------------------------------------
  964. death_church_to_hotel:
  965. //------------------------------------------------------------------------------------------------
  966.     self delete
  967.     thread KillThePlayer
  968.     end
  969.  
  970. //------------------------------------------------------------------------------------------------
  971. death_church_to_hotel_toggle:
  972. //------------------------------------------------------------------------------------------------
  973.     self delete
  974.     thread KillThePlayer
  975.     end
  976.  
  977. //------------------------------------------------------------------------------------------------
  978. death_hotel_to_end:
  979. //------------------------------------------------------------------------------------------------
  980.     self delete
  981.     thread KillThePlayer
  982.     end
  983.  
  984. //------------------------------------------------------------------------------------------------
  985. give_sniper_rifle:
  986. //------------------------------------------------------------------------------------------------
  987.  
  988.     $player item weapons/KAR98sniper.tik
  989.     $sniper_rifle playsound gewehr43_snd_pickup
  990.     iprintln "You picked up a sniper rifle"
  991.  
  992.     $player use "KAR98 - Sniper"
  993.  
  994.     end
  995.  
  996. //------------------------------------------------------------------------------------------------
  997. windowguy_1001_show:
  998. //
  999. //
  1000. //------------------------------------------------------------------------------------------------
  1001.     waitthread global/ai.scr::spawnset 1001 allied_show 1
  1002.  
  1003.     wait 2.5
  1004.     $proj_bazooka2 mindelay 0.01
  1005.     $proj_bazooka2 maxdelay 0.01
  1006.     $proj_bazooka2 minduration 0.01    
  1007.     $proj_bazooka2 maxduration 0.01  
  1008.     $proj_bazooka2 TurnOn
  1009.     $allied_show thread delete_yourself
  1010.  
  1011. end
  1012.  
  1013.  
  1014. //------------------------------------------------------------------------------------------------
  1015. windowguy_2002_show:
  1016. //
  1017. // THESE ARE THE SHOWS OUTSIDE THE HOTEL WINDOWS
  1018. //------------------------------------------------------------------------------------------------
  1019.     waitthread global/ai.scr::spawnset 2002 allied_show
  1020.     $allied_show thread delete_yourself
  1021.  
  1022. end
  1023.  
  1024. //------------------------------------------------------------------------------------------------
  1025. windowguy_3003_show1:
  1026. //
  1027. //  
  1028. //------------------------------------------------------------------------------------------------
  1029.     waitthread global/ai.scr::spawnset 30031 allied_show 1
  1030.     $allied_show thread delete_yourself
  1031.  
  1032. end
  1033.  
  1034. //------------------------------------------------------------------------------------------------
  1035. windowguy_3003_show2:
  1036. //
  1037. //
  1038. //------------------------------------------------------------------------------------------------
  1039.     waitthread global/ai.scr::spawnset 30032 allied_show 1
  1040.     $allied_show thread delete_yourself
  1041.  
  1042. end
  1043.  
  1044. //------------------------------------------------------------------------------------------------
  1045. windowguy_4004_show:
  1046. //
  1047. //
  1048. //------------------------------------------------------------------------------------------------
  1049.     waitthread global/ai.scr::spawnset 4004 allied_show
  1050.     $allied_show thread delete_yourself
  1051.  
  1052. end
  1053.  
  1054. //------------------------------------------------------------------------------------------------
  1055. windowguy_40042_show:
  1056. //
  1057. //
  1058. //------------------------------------------------------------------------------------------------
  1059.  
  1060.     waitthread global/ai.scr::spawnset 40042 allied_show 1
  1061.     wait 3
  1062.     $proj_bazooka mindelay 0.01
  1063.     $proj_bazooka maxdelay 0.01
  1064.     $proj_bazooka minduration 0.01    
  1065.     $proj_bazooka maxduration 0.01  
  1066.     $proj_bazooka TurnOn
  1067.     $allied_show thread delete_yourself
  1068.  
  1069. end
  1070.  
  1071. //------------------------------------------------------------------------------------------------
  1072. windowguy_5005_show:
  1073. //
  1074. //
  1075. //------------------------------------------------------------------------------------------------
  1076.     waitthread global/ai.scr::spawnset 5005 allied_show 1
  1077.     $allied_show thread delete_yourself
  1078.  
  1079. end
  1080.  
  1081. //------------------------------------------------------------------------------------------------
  1082. delete_yourself:
  1083. //
  1084. //------------------------------------------------------------------------------------------------
  1085.  
  1086.     self runto self.target
  1087.     self waittill movedone
  1088.  
  1089.     while ( parm.movedone!=1 )
  1090.     {
  1091.         self runto self.target
  1092.         self waittill movedone
  1093.     }
  1094.  
  1095.     // we're really there...
  1096.  
  1097.     self delete
  1098. //    dprintln "I'm gone"    
  1099.  
  1100. end
  1101.  
  1102. //------------------------------------------------------------------------------------------------
  1103. DeleteYourselfNow:
  1104. //------------------------------------------------------------------------------------------------
  1105.  
  1106.     self delete
  1107.  
  1108.     end
  1109.  
  1110.  
  1111. //------------------------------------------------------------------------------------------------
  1112. DisableCappyAI:
  1113. //
  1114. //    trigger hit by the player when he goes upstairs...
  1115. //------------------------------------------------------------------------------------------------
  1116.  
  1117.     level.no_more_chargers = 1
  1118.     // delete all our allies....
  1119.     $chargers delete
  1120.     $mortar_fodder_a delete
  1121.     $mortar_fodder_b delete
  1122.  
  1123.     if ( level.cappy_upstairs==0 )
  1124.     {
  1125.         $cappy exec global/disable_ai.scr
  1126.     }
  1127.  
  1128.     end
  1129.  
  1130. //------------------------------------------------------------------------------------------------
  1131. shotgun_ammo:
  1132. //
  1133. // give the player some shells
  1134. //------------------------------------------------------------------------------------------------
  1135.  
  1136.     $player take panzerschreck
  1137.     $shotgun_pickup delete
  1138.     $player give weapons/shotgun.tik
  1139.     wait .1
  1140.     $player ammo shotgun 40
  1141.     $player useweaponclass heavy
  1142.     end
  1143.  
  1144. //------------------------------------------------------------------------------------------------
  1145. windowguy_9999_show:
  1146. //
  1147. //
  1148. //------------------------------------------------------------------------------------------------
  1149.     self delete
  1150.     waitthread global/ai.scr::spawnset 9998 billy
  1151.     $windowguy_9999 ai_on
  1152.     $windowguy_9999 takedamage
  1153.     $windowguy_9999 show
  1154.     wait 0.5
  1155.     $proj_9999 mindelay .01
  1156.     $proj_9999 maxdelay .01
  1157.     $proj_9999 minduration .01    
  1158.     $proj_9999 maxduration .01
  1159.     $proj_9999 TurnOn
  1160.  
  1161.     $billy exec global/disable_ai.scr
  1162.     $billy turnto $player
  1163.     $billy lookat $player
  1164.  
  1165.     wait 5
  1166.  
  1167.     $billy runto $billy_delete
  1168.     $billy waittill movedone
  1169.     $billy delete
  1170.  
  1171. end