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

  1. //-----------------------------------------------------------------------------
  2. //    StickyBomb.Scr
  3. //    Jeff Leggett
  4. //    07/19/2002
  5. //
  6. //    Support for multiple sticky bombs blowing up the same target.  
  7. //    This script ensures that once one of the sticky bombs is placed, the rest
  8. //    of them will be removed.
  9. //
  10. //        To use:
  11. //                1. Create your sticky bombs and target the object you want them
  12. //                to destroy.
  13. //                2. Name all the sticky bombs with the same $targetname.
  14. //                3. Add the following line of code to your script:
  15. //
  16. //                thread global/stickybomb.scr::StickyBombInit $mystickybomb
  17. //
  18. //                (where $mystickybomb is the name you choose.)
  19. //
  20. //        To hide the sticky bombs, call:
  21. //                thread global/stickybomb.scr::StickyBombHide $mystickybomb
  22. //
  23. //        To show the sticky bombs, call:
  24. //                thread global/stickybomb.scr::StickyBombShow $mystickybomb
  25. //
  26. //        To disable the sticky bombs call:
  27. //                thread global/stickybomb.scr::StickyBombDisable $mystickybomb
  28. //
  29. //        To enable the sticky bombs call:
  30. //                thread global/stickybomb.scr::StickyBombEnable $mystickybomb
  31. //
  32. //-----------------------------------------------------------------------------
  33.  
  34.  
  35. //-----------------------------------------------------------------------------
  36. main:
  37. //-----------------------------------------------------------------------------
  38.  
  39.     End
  40.  
  41.  
  42. //-----------------------------------------------------------------------------
  43. StickyBombInit local.bomb local.usethread:
  44. //
  45. //
  46. //    pass the name of the sticky bomb(s) you want to be grouped together.
  47. //
  48. //-----------------------------------------------------------------------------
  49.  
  50.     if ( local.bomb==NIL || local.bomb==NULL )
  51.     {
  52.         dprintln "stickybomb error: " local.bomb
  53.         End
  54.     }
  55.  
  56.     for ( local.i=1;local.i<=local.bomb.size;local.i++ )
  57.     {
  58.         if ( local.i==1 )
  59.             local.bomb[local.i].target thread RemoveOnDeath local.bomb
  60.         local.bomb[local.i] bind local.bomb[local.i].target
  61.         local.bomb[local.i] setusethread global/stickybomb.scr::StickyBombUse
  62.         local.bomb[local.i].myent = local.bomb
  63.         local.bomb[local.i].myusethread = local.usethread
  64.     }
  65.  
  66.     End
  67.  
  68. //-----------------------------------------------------------------------------
  69. StickyBombEnable local.bomb:
  70. //-----------------------------------------------------------------------------
  71.     if ( local.bomb==NIL || local.bomb==NULL )
  72.         End
  73.  
  74.     for ( local.i=1;local.i<=local.bomb.size;local.i++ )
  75.     {
  76.         local.bomb[local.i] triggered 0
  77.     }
  78.  
  79.     end
  80.  
  81. //-----------------------------------------------------------------------------
  82. StickyBombDisable local.bomb:
  83. //-----------------------------------------------------------------------------
  84.  
  85.     if ( local.bomb==NIL || local.bomb==NULL )
  86.         End
  87.  
  88.     for ( local.i=1;local.i<=local.bomb.size;local.i++ )
  89.     {
  90.         local.bomb[local.i] triggered 1
  91.     }
  92.  
  93.     end
  94.  
  95.  
  96. //-----------------------------------------------------------------------------
  97. StickyBombHide local.bomb:
  98. //-----------------------------------------------------------------------------
  99.  
  100.     if ( local.bomb==NIL || local.bomb==NULL )
  101.         End
  102.  
  103.     for ( local.i=1;local.i<=local.bomb.size;local.i++ )
  104.     {
  105.         local.bomb[local.i] hide
  106.         local.bomb[local.i] nodamage
  107.     }
  108.  
  109.     End
  110.  
  111. //-----------------------------------------------------------------------------
  112. StickyBombShow local.bomb:
  113. //-----------------------------------------------------------------------------
  114.  
  115.     if ( local.bomb==NIL || local.bomb==NULL )
  116.         End
  117.  
  118.  
  119.     for ( local.i=1;local.i<=local.bomb.size;local.i++ )
  120.     {
  121.         local.bomb[local.i] show
  122. //        local.bomb[local.i] takedamage
  123.     }
  124.  
  125.     End
  126.  
  127. //-----------------------------------------------------------------------------
  128. StickyBombDelete local.bomb:
  129. //-----------------------------------------------------------------------------
  130.  
  131.     if ( local.bomb==NIL || local.bomb==NULL )
  132.         End
  133.  
  134.     for ( local.i=1;local.i<=local.bomb.size;local.i++ )
  135.     {
  136.         local.bomb[local.i] delete
  137.     }
  138.  
  139.     End
  140.  
  141. //-----------------------------------------------------------------------------
  142. StickyBombUse:
  143. //
  144. //    called when the stickybomb is used.... hide all other stickybombs...
  145. //-----------------------------------------------------------------------------
  146.  
  147.     if ( self.myusethread != NIL )
  148.         thread self.myusethread
  149.  
  150.     // hide all the other ones
  151.     self thread StickyBombHide self.myent
  152.     self show
  153.     self takedamage
  154.  
  155.     End
  156.  
  157. //-----------------------------------------------------------------------------
  158. RemoveOnDeath local.bomb:
  159. //-----------------------------------------------------------------------------
  160.     self waittill death
  161.     
  162.     thread StickyBombDelete local.bomb
  163.  
  164.     $player stopwatch 0
  165.  
  166.     end
  167.