home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 2003 June / macformat-130.iso / mac / Reviewed⁄Demos / Spearhead Demo / demota / pak1.pk3 / global / chainspawner.scr < prev    next >
Encoding:
Text File  |  2002-10-21  |  3.6 KB  |  127 lines

  1.  
  2. ////////////////////////////////////////////////////////////
  3. //////////**********************////////////////////////////
  4. //////////******SPAWNERS!!!*****////////////////////////////
  5. //////////**********************////////////////////////////
  6. ////////////////////////////////////////////////////////////
  7.  
  8.  
  9. init:
  10.     level.alarm = 1
  11.     $alarmtrig doactivate $player 
  12. end
  13.  
  14.  
  15. spawners local.spawnexausted:
  16.     if(level.chainspawnwaittime == NIL)
  17.         level.chainspawnwaittime = 10
  18.     level.spawncount = 0
  19.     local.j = 1
  20.     spawn trigger_relay targetname "alarmtrig"
  21.     local.spawntrigger = $spawntrigger
  22.     for (local.i = 1; local.i <= $spawntrigger.size; local.i++)
  23.     {
  24.         local.spawnmatched = 0
  25.         for(local.k = local.i + 1; local.k <= $spawntrigger.size; local.k++)
  26.         {
  27.             if (local.spawntrigger[local.i].target == local.spawntrigger[local.k].target)
  28.                     local.spawnmatched = 1
  29.         }
  30.         if(local.spawnmatched == 0)
  31.         {    
  32.             local.spawnrelay[local.j] = local.spawntrigger[local.i].target
  33.             local.j++
  34.         }            
  35.  
  36.     }
  37.     for (local.i = 1; local.i < local.j; local.i++)
  38.     {
  39.         local.spawnrelay[local.i] thread spawnersetup local.spawnexausted
  40.         local.spawnrelay[local.i] thread spawnerzoneloop
  41.     }
  42. end
  43.  
  44. spawnerzoneloop:
  45.     self waittill trigger
  46.     level.chainspawnzone = self.targetname
  47.     goto spawnerzoneloop
  48. end
  49.  
  50. spawnersetup local.spawnexausted:
  51.     if(self.target == NULL || self.target == NIL || self.target == "")
  52.     {
  53.         goto skipsetup
  54.     }
  55.     local.spawnername = self.target
  56.     while(local.spawnername)
  57.     {
  58.         local.radiantguy = $(local.spawnername)
  59.         local.nextspawnername = local.radiantguy.target
  60.  
  61.         local.thespawner = waitthread global/spawner.scr::spawner_create local.radiantguy
  62.         local.thespawner.targetname = local.spawnername
  63.         local.thespawner.target = local.nextspawnername
  64.         
  65.         local.spawnername = local.nextspawnername
  66.     }
  67. loop:
  68. skipsetup:
  69.     if(level.alarm == 0)
  70.         $alarmtrig waittill trigger
  71.     if(level.chainspawnzone != self.targetname)
  72.         self waittill trigger
  73. //    level.chainspawnzone = self.targetname
  74.     if(self.target == NULL || self.target == NIL || self.target == "")
  75.     {
  76.         goto skiploop
  77.     }
  78.     else
  79.         local.spawnername = self.target
  80.     while(local.spawnername)
  81.     {
  82.         local.thespawner = $(local.spawnername)
  83.         local.theguyname = (local.spawnername + "spawned")
  84.         if(!(isalive $(local.theguyname)))
  85.         {
  86.             if(!local.thespawner.burncount)
  87.                 local.thespawner.burncount = 0
  88.             if(local.thespawner.burncount >= local.spawnexausted)
  89.                 local.thespawner.burnt = 1
  90.             if(local.thespawner.burnt != 1 && level.spawncount < level.maxspawn)
  91.             {    
  92.  
  93.                 local.thespawner.burncount++
  94.                 local.theguy = waitthread global/spawner.scr::spawner_activate local.thespawner
  95.                 local.theguy.targetname = local.theguyname
  96.  
  97. //                local.randomnum = (randomint(100))  //redo sometime
  98. //                if(local.randomnum < 30)
  99. //                    $(local.theguyname) item "items/item_25_healthbox.tik" 25
  100.  
  101.                 if(local.theguy.ammo_grenade > 0)
  102.                     local.theguy item weapons/steilhandgranate.tik
  103.                 local.theguyname thread deadguy
  104.                 local.theguyname leash 9999
  105. //                local.theguyname.maxdist = 10000
  106.                 level.spawncount = level.spawncount + 1
  107.                 local.theguyname resetleash
  108.                 local.theguyname forceactivate
  109. //                local.theguyname exec global/runto.scr $player
  110.                 local.theguyname attackplayer
  111.                 if(level.chainspawner_thread)
  112.                     local.theguyname thread level.script::level.chainspawner_thread
  113.             }
  114.         }
  115.         local.spawnername = local.thespawner.target
  116.     }
  117. skiploop:
  118.     wait level.chainspawnwaittime
  119.     goto loop
  120.  
  121.  
  122. deadguy:
  123.     self waittill death
  124.     level.spawncount = level.spawncount - 1
  125.     self targetname ""
  126. end
  127.