home *** CD-ROM | disk | FTP | other *** search
/ SPEL 3 / spel3.iso / add-on / hexen / uhg01 / uhg01.acs next >
Text File  |  1995-11-25  |  3KB  |  100 lines

  1. #include "common.acs"
  2.  
  3. /* -----------------------------------
  4. Shattering Glass
  5. I had to do this a little diferently than
  6. most windows to make it a repeatable
  7. action.  Basically the window is set up
  8. like a door i.e (ceiling height set to floor)
  9. Then the ceiling is raised revealing the
  10. broken glass texture. Fireballs are spewed
  11. about not only for the cool effect but becouse
  12. of a bug in Hexen where glass shards are not
  13. removed from the game and will cause a memory
  14. error after to many hits. (thanks to Dalias
  15. for discovering this) Therefore only Things
  16. that extinguish themselfs should be used here.
  17. After a slight delay the window is put back
  18. again by lowering the ceiling to the floor.
  19. This puts the unbroken glass texture back,
  20. ready to be broken again.  I used a crushing
  21. funtion to lower the ceiling to clear the
  22. window sector of any players. Also the
  23. Ceiling_LowerAndCrush funtion only seems to lower
  24. the ceiling to 8 about the floor.  So a second
  25. funtion is called to close it the rest of the way.
  26. Ocasionally the window does not close all the way
  27. durring play, a second breaking will generally cure
  28. this problem.
  29.  
  30. sect sector that will raise and lower to
  31.      open and close window
  32. spot TID of thing to spew out fireballs from
  33. angle angle around which fireballs will spew
  34.  
  35. i.e the fireballs will spew out at random angles
  36. ranging from plus or minus approxamatly 45 degrees
  37. the specified angle
  38. --------------------------------------- */
  39.  
  40. script 1 (int sect, int spot, int angle)
  41. {
  42.     int i;
  43.     Ceiling_RaiseByValue(sect, 255, 128);
  44.     sectorsound("GlassShatter", 255);
  45.     i = 0;
  46.     while (i < 32)
  47.     { 
  48.        Thing_ProjectileGravity(spot, T_FIREBALL1, angle + random(0, 48) - random(0, 48), random(16,24), random(8,32));
  49.        i = i + 1;
  50.     }
  51.     i = 0;
  52.     while (i < 3)
  53.     { 
  54.        Thing_Projectile(spot, T_FIREBALL1, angle + random(0, 32) - random(0, 32), random(100,200), 0);
  55.        i = i + 1;
  56.     }
  57.     delay(50);
  58.     Ceiling_LowerAndCrush(sect, 255, 16);
  59.     delay(10);
  60.     Ceiling_LowerByValue(sect, 255, 8);
  61.  
  62. }
  63.  
  64. /*------------------------------------
  65. This creates a ring of spikeballs that
  66. emanate out from the center at the
  67. specified speed
  68. spot TID of thing to shhot balls from
  69. spd  the speed at which the balls will fly
  70. ------------------------------------*/
  71.  
  72. script 2 (int spot, int angle, int spd)
  73. {
  74.     int i;
  75.     print(s:"HEE HEE HEE");
  76.     i = 0;
  77.     while (i < 32)
  78.     {
  79.         Thing_Projectile(spot, T_RIPPERBALL, random(0, 224), spd, 0);
  80.         i = i + 1;
  81.     }
  82. }
  83.  
  84. script 3 (int qspot, int rspot, int fangle)
  85. {
  86.        Radius_Quake(9,255, 5, 15, qspot);
  87.  
  88.       Thing_Projectile(rspot, T_FIREBALL1, fangle, 100, 0);
  89.  
  90.  
  91. }
  92.  
  93.  
  94.  
  95. script 255 OPEN
  96. {
  97. print(s:"UNHOLY GROUND BY CLAUDEC");
  98. }
  99.  
  100.