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

  1. //    Shutters by Mackey McCandlish.
  2. //
  3. //    Before level waittill spawn "exec global/shutter.scr".
  4. //    
  5. //    Used in m1l1, m5l1a, m5l1b, m5l3.
  6. //
  7. //    Create script_object shutters. Shutters on the left side of a window get targetname "lshutter" and shutters on the right
  8. //    side get targetname "rshutter".
  9. //
  10. //    You can alter the frequency of shutters slamming in the wind by changing level.windtime.
  11. //
  12. //    You can cause certain shutters to slam (like the planes flying by in m5l1a or the player's tank shooting in m5l3) by doing
  13. //    "thread global/shutter.scr::shuttrig #" where # is the #group value you've given the shutters in question.
  14.  
  15. main:
  16. // main local.l local.r:
  17. level.shuttime = level.time
  18. level.shuttertime = 0.3
  19. level.windtime = 5 // 1.5 // 5
  20.  
  21.  
  22.     if ($lshutter == NULL)
  23.         level.lshutters = 0
  24.         else
  25.         level.lshutters = $lshutter.size
  26.  
  27.     if (level.lshutters > 0)
  28.     {
  29.         level.lshutter = exec global/makearray.scr $lshutter
  30.  
  31.         for (local.i=1;local.i<level.lshutters+1;local.i++)
  32.         {
  33.             level.lshutter[local.i] thread shutterthink
  34.             level.lshutter[local.i] thread shutter local.i "l"
  35.         }
  36.     }
  37.  
  38.  
  39.     if ($rshutter == NULL)
  40.         level.rshutters = 0
  41.         else
  42.         level.rshutters = $rshutter.size
  43.  
  44.     if (level.rshutters > 0)
  45.     {
  46.         level.rshutter = exec global/makearray.scr $rshutter
  47.  
  48.         for (local.i=1;local.i<level.rshutters+1;local.i++)
  49.         {
  50.             level.rshutter[local.i] thread shutterthink
  51.             level.rshutter[local.i] thread shutter local.i "l"
  52.         }
  53.     }
  54.  
  55.     if ((level.lshutters > 0) || (level.rshutters > 0))
  56.         thread shuttermagic
  57. end
  58.  
  59. shuttrig local.group:
  60.     level.shuttime = level.time + 5
  61.     for (local.i=1;local.i<level.lshutters+1;local.i++)
  62.     {
  63.         if (level.lshutter[local.i].group != NIL)
  64.             if (level.lshutter[local.i].group == local.group)
  65.                 level.lshutter[local.i].specevent = 1
  66.     }
  67.     for (local.i=1;local.i<level.rshutters+1;local.i++)
  68.     {
  69.         if (level.rshutter[local.i].group != NIL)
  70.             if (level.rshutter[local.i].group == local.group)
  71.                 level.rshutter[local.i].specevent = 1
  72.     }
  73.  
  74. end
  75.  
  76.  
  77. shuttermagic:
  78.  
  79.     level waittill spawn
  80.     shuttermagicplay:
  81.     if (level.time < level.shuttime)
  82.     {
  83.         wait 1 
  84.         goto shuttermagicplay
  85.     }
  86.  
  87.     local.num = (level.windtime + randomfloat(level.windtime))
  88. //    println local.num
  89.     if (local.num < 2)
  90.         local.num = 2
  91.     wait local.num
  92. //    wait (level.windtime + randomint(level.windtime)) // level.windtime defaults to 5
  93.     local.num = randomint(100)
  94.  
  95.     if (local.num < 40)
  96.     {
  97.  
  98.         for (local.i=1;local.i<level.rshutters+1;local.i++)
  99.         {
  100.             if (level.rshutter[local.i].specevent == 0)
  101.                 level.rshutter[local.i].specevent = 11
  102.         }
  103.     
  104.         for (local.i=1;local.i<level.lshutters+1;local.i++)
  105.         {
  106.             if (level.lshutter[local.i].specevent == 0)
  107.                 level.lshutter[local.i].specevent = 10
  108.         }
  109.  
  110.     }
  111.     else
  112.     if (local.num < 60)
  113.     {
  114.         for (local.i=1;local.i<level.rshutters+1;local.i++)
  115.         {
  116.             if (level.rshutter[local.i].specevent == 0)
  117.                 level.rshutter[local.i].specevent = 10
  118.         }
  119.     
  120.         for (local.i=1;local.i<level.lshutters+1;local.i++)
  121.         {
  122.             if (level.lshutter[local.i].specevent == 0)
  123.                 level.lshutter[local.i].specevent = 11
  124.         }    
  125.  
  126.     }
  127.     else
  128.     if (local.num < 80)
  129.     {
  130.         for (local.i=1;local.i<level.rshutters+1;local.i++)
  131.         {
  132.             if (level.rshutter[local.i].specevent == 0)
  133.                 level.rshutter[local.i].specevent = 11
  134.         }
  135.     
  136.         for (local.i=1;local.i<level.lshutters+1;local.i++)
  137.         {
  138.             if (level.lshutter[local.i].specevent == 0)
  139.                 level.lshutter[local.i].specevent = 11
  140.         }
  141.         
  142.     }
  143.     else
  144.     {
  145.         for (local.i=1;local.i<level.rshutters+1;local.i++)
  146.         {
  147.             if (level.rshutter[local.i].specevent == 0)
  148.                 level.rshutter[local.i].specevent = 10
  149.         }
  150.     
  151.         for (local.i=1;local.i<level.lshutters+1;local.i++)
  152.         {
  153.             if (level.lshutter[local.i].specevent == 0)
  154.                 level.lshutter[local.i].specevent = 10
  155.         }
  156.  
  157.     }
  158.  
  159.  
  160. // level.shuttertime = level.time + 3
  161. // wait 3
  162. goto shuttermagicplay
  163.  
  164. end
  165.  
  166. shuttate local.dir local.num:
  167.     if (local.dir == "l")
  168.         self rotateYup local.num
  169.     else
  170.     if (local.dir == "r")
  171.         self rotateYdown local.num
  172. end
  173.  
  174.  
  175. shuttersound local.num1 local.num2:
  176.     // self playsound (NULL) 1 1 256
  177.     self playsound shutterhit_0 5
  178. end
  179.  
  180. shuttersqueak local.num1 local.num2:
  181. //    if (randomint(100) > 65)
  182.     self playsound shuttersqueak_0 5
  183. end
  184.  
  185. shutter local.num local.dir:
  186.     level waittill spawn
  187.     
  188.     self.specevent = 0
  189.     local.curwidth = 0
  190.     local.mover = 0
  191.  
  192.     self time 0.3
  193.     self thread shuttate local.dir -90
  194.     self waitmove
  195.  
  196.     while (1==1)
  197.     {
  198.         if (self.specevent == 0)
  199.         {
  200.             local.random = (randomint(10) - 5)
  201.  
  202.             if (local.curwidth < 2)
  203.                 local.random = (randomint(20) - 5)
  204.  
  205.             if (local.curwidth > 178)
  206.                 local.random = (randomint(20) - 15)
  207.  
  208.             if (local.mover > 6)
  209.                 local.mover = 6
  210.             else
  211.             if (local.mover < -6)
  212.                 local.mover = -6
  213.  
  214.  
  215.             local.mover = (local.mover + local.random)
  216.  
  217.             if ((local.curwidth + local.mover ) < 0)
  218.             {
  219.                 local.mover = (local.curwidth * -1)
  220.                 local.curwidth = 0
  221.             }
  222.             else
  223.             if ((local.curwidth + local.mover) > 180)
  224.             {
  225.                 local.mover = (180 - local.curwidth)
  226.                 local.curwidth = 180
  227.             }
  228.             else
  229.                 local.curwidth = (local.curwidth + local.mover)
  230.  
  231.         // self time (0.2 + (randomfloat(0.3)))
  232.             self time level.shuttertime // default 0.3
  233.             self thread shuttate local.dir local.mover
  234.             self waitmove
  235.  
  236.         }
  237.         else
  238.         {
  239.  
  240.             if (self.specevent == 10)
  241.             {
  242.                 self.specevent = 0
  243.  
  244.                 if (local.dir == "r")
  245.                 {
  246.                     local.timedif = (180 - local.curwidth) / 200.0
  247.                     self time local.timedif
  248.                     self thread shuttersqueak 3 local.timedif
  249.                     self thread shuttate local.dir (local.curwidth * -1)
  250.                     self waitmove
  251.                     self thread shuttersound 3 local.timedif
  252.                     local.curwidth = 0
  253.                 }
  254.                 else
  255.                 {
  256.                     local.timedif = (180 - local.curwidth) / 200.0
  257.                     self time local.timedif
  258.                     self thread shuttersqueak 3 local.timedif
  259.                     self thread shuttate local.dir (180 - local.curwidth)
  260.                     self waitmove
  261.                     self thread shuttersound 1 local.timedif
  262.                     local.curwidth = 180
  263.                 }
  264.             }
  265.             else
  266.             if (self.specevent == 11)
  267.             {
  268.                 self.specevent = 0
  269.  
  270.                 if (local.dir == "l")
  271.                 {
  272.                     local.timedif = (180 - local.curwidth) / 200.0
  273.                     self time local.timedif
  274.                     self thread shuttersqueak 3 local.timedif
  275.                     self thread shuttate local.dir (local.curwidth * -1)
  276.                     self waitmove
  277.                     self thread shuttersound 3 local.timedif
  278.                     local.curwidth = 0
  279.                 }
  280.                 else
  281.                 {
  282.                     local.timedif = (180 - local.curwidth) / 200.0
  283.                     self time local.timedif
  284.                     self thread shuttersqueak 3 local.timedif
  285.                     self thread shuttate local.dir (180 - local.curwidth)
  286.                     self waitmove
  287.                     self thread shuttersound 1 local.timedif
  288.                     local.curwidth = 180
  289.                 }
  290.             }
  291.             else
  292.             if (local.curwidth > 0)
  293.             {
  294.                 self time 0.5
  295.                 self thread shuttersqueak 3 local.timedif
  296.                 self thread shuttate local.dir (local.curwidth * -1)
  297.                 self waitmove
  298.                 self thread shuttersound 3 0.5
  299.                 local.curwidth = 0
  300.             }
  301.  
  302.  
  303.             if (self.specevent == 1)
  304.             {
  305.                 self.specevent = 2
  306.                 local.timedif = 0.15
  307.                 self time local.timedif
  308.                 self thread shuttersqueak 3 local.timedif
  309.                 self thread shuttate local.dir 180
  310.                 self waitmove
  311.                 self thread shuttersound 2 local.timedif
  312.  
  313.                 local.timedif = 0.20
  314.                 self time local.timedif
  315.                 self thread shuttersqueak 3 local.timedif
  316.                 self thread shuttate local.dir -180
  317.                 self waitmove
  318.                 self thread shuttersound 2 local.timedif
  319.  
  320.                 local.timedif = 0.25
  321.                 self time local.timedif
  322.                 self thread shuttersqueak 3 local.timedif
  323.                 self thread shuttate local.dir 180
  324.                 self waitmove
  325.                 self thread shuttersound 2 local.timedif
  326.  
  327.                 local.timedif = 0.30
  328.                 self time local.timedif
  329.                 self thread shuttersqueak 3 local.timedif
  330.                 self thread shuttate local.dir -180
  331.                 self waitmove
  332.                 self thread shuttersound 2 local.timedif
  333.             }
  334.             else
  335.             if (self.specevent == 2)
  336.             {
  337.                 self.specevent = 3
  338.                 local.timedif = 0.35
  339.                 self time local.timedif
  340.                 self thread shuttersqueak 3 local.timedif
  341.                 self thread shuttate local.dir 180
  342.                 self waitmove
  343.                 self thread shuttersound 2 local.timedif
  344.  
  345.                 local.timedif = 0.65
  346.                 self time local.timedif
  347.                 self thread shuttersqueak 3 local.timedif
  348.                 self thread shuttate local.dir -180
  349.                 self waitmove
  350.                 self thread shuttersound 2 local.timedif
  351.             }
  352.             else    
  353.             if (self.specevent == 3)
  354.             {
  355.                 self.specevent = 0
  356.                 local.timedif = 0.85
  357.                 self time local.timedif
  358.                 self thread shuttersqueak 3 local.timedif
  359.                 self thread shuttate local.dir 180
  360.                 self waitmove
  361.                 self thread shuttersound 2 local.timedif
  362.             
  363.                 local.timedif = 2.10
  364.                 self time local.timedif
  365.                 self thread shuttersqueak 3 local.timedif
  366.                 self thread shuttate local.dir -180
  367.                 self waitmove
  368.                 self thread shuttersound 2 local.timedif
  369.             }
  370.         }
  371.  
  372.     }
  373. end
  374.  
  375.  
  376. shutterthink:
  377.  
  378.     self waittill damage
  379.         if (self.specevent == 0)
  380.         if (randomint(100) > 50)
  381.             self.specevent = 11
  382.             else
  383.             self.specevent = 10
  384.  
  385.     thread shutterthink
  386. end
  387.