ZDCMP1_Rings.zc 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362
  1. /*
  2. * Copyright (c) 2015-2021 Tormentor667, Ozymandias81, AFADoomer
  3. *
  4. * Permission is hereby granted, free of charge, to any person obtaining a copy
  5. * of this software and associated documentation files (the "Software"), to deal
  6. * in the Software without restriction, including without limitation the rights
  7. * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  8. * copies of the Software, and to permit persons to whom the Software is
  9. * furnished to do so, subject to the following conditions:
  10. *
  11. * The above copyright notice and this permission notice shall be included in all
  12. * copies or substantial portions of the Software.
  13. *
  14. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  15. * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  16. * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  17. * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  18. * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  19. * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  20. * SOFTWARE.
  21. **/
  22. class BaseOrb : ParticleBase
  23. {
  24. Default
  25. {
  26. Radius 0;
  27. Height 0;
  28. -SOLID
  29. +BRIGHT
  30. +MISSILE
  31. +NOBLOCKMAP
  32. +NOGRAVITY
  33. +NOINTERACTION
  34. RenderStyle "Add";
  35. Alpha 0.01;
  36. YScale 0.1;
  37. XScale 0.4;
  38. }
  39. States
  40. {
  41. Spawn:
  42. LRFX AAAAA 1 A_FadeIn(0.2);
  43. "####" AAAAAAAAAAAAAAAA 1 A_FadeOut(0.07);
  44. Stop;
  45. }
  46. }
  47. class SparkBase : ParticleBase
  48. {
  49. int fadespeed;
  50. String sparkcolor;
  51. Property SparkColor:sparkcolor;
  52. Default
  53. {
  54. Height 1;
  55. Radius 2;
  56. Mass 0;
  57. Speed 1.0;
  58. +BRIGHT
  59. +DONTSPLASH
  60. +FORCEXYBILLBOARD
  61. +MISSILE
  62. +NOBLOCKMAP
  63. Gravity 0.125;
  64. RenderStyle "Add";
  65. Scale 0.025;
  66. }
  67. States
  68. {
  69. Spawn:
  70. "####" E 1 BRIGHT;
  71. Loop;
  72. Death:
  73. "####" E 1 BRIGHT A_FadeOut(0.1 * fadespeed);
  74. Loop;
  75. Frames:
  76. SPKW A 0;
  77. SPKR A 0;
  78. SPKO A 0;
  79. SPKY A 0;
  80. SPKG A 0;
  81. SPKB A 0;
  82. SPKP A 0;
  83. }
  84. override void Tick()
  85. {
  86. Super.Tick();
  87. if (waterlevel) { Destroy(); }
  88. }
  89. override void PostBeginPlay()
  90. {
  91. Super.PostBeginPlay();
  92. if (
  93. sparkcolor ~== "White" || sparkcolor ~== "Red" || sparkcolor ~== "Orange" ||
  94. sparkcolor ~== "Yellow" || sparkcolor ~== "Green" || sparkcolor ~== "Blue" ||
  95. sparkcolor ~== "Purple"
  96. )
  97. {
  98. int spr = GetSpriteIndex(String.Format("SPK%s", sparkcolor.left(1)));
  99. if (spr != -1) { sprite = spr; }
  100. }
  101. else
  102. {
  103. sprite = GetSpriteIndex("SPKW");
  104. A_SetRenderStyle(alpha, STYLE_AddShaded);
  105. SetShade(sparkcolor);
  106. }
  107. Speed = FRandom(0.25, 4.0);
  108. // If it has a target (was fired as a projectile), set velocity directly,
  109. // not just speed, since A_SpawnProjectile automatically sets the spark
  110. // velocity amount to the default speed (1.0) on spawn
  111. if (target) { vel *= Speed; }
  112. }
  113. }
  114. class SparkW : SparkBase
  115. {
  116. Default
  117. {
  118. SparkBase.SparkColor "White";
  119. }
  120. }
  121. class SparkR : SparkBase
  122. {
  123. Default
  124. {
  125. SparkBase.SparkColor "Red";
  126. }
  127. }
  128. class SparkO : SparkBase
  129. {
  130. Default
  131. {
  132. SparkBase.SparkColor "Orange";
  133. }
  134. }
  135. class SparkY : SparkBase
  136. {
  137. Default
  138. {
  139. SparkBase.SparkColor "Yellow";
  140. }
  141. }
  142. class SparkG : SparkBase
  143. {
  144. Default
  145. {
  146. SparkBase.SparkColor "Green";
  147. }
  148. }
  149. class SparkB : SparkBase
  150. {
  151. Default
  152. {
  153. SparkBase.SparkColor "Blue";
  154. }
  155. }
  156. class SparkP : SparkBase
  157. {
  158. Default
  159. {
  160. SparkBase.SparkColor "Purple";
  161. }
  162. }
  163. class GreenCirclePad : Actor
  164. {
  165. Default
  166. {
  167. //$Category Special Effects (ZDCMP1)
  168. //$Title CirclePad (green)
  169. //$Color 12
  170. //$Arg0 "Nothing"
  171. //$Arg0Tooltip "Does nothing"
  172. //$Arg1 "Radius"
  173. //$Arg1Tooltip "Controls the size of the area. 32, for example, spawns in a 64x64 diameter circle."
  174. //$Arg2 "Speed"
  175. //$Arg2Tooltip "Controls the speed of the rings (can also be negative if you want them to move downwards instead of upwards)"
  176. -SOLID
  177. +CLIENTSIDEONLY
  178. +NOBLOCKMAP
  179. +NOCLIP
  180. +NOGRAVITY
  181. +NOINTERACTION
  182. +NOSECTOR
  183. }
  184. States
  185. {
  186. Spawn:
  187. Active:
  188. TNT1 A 0;
  189. TNT1 A 0 A_CheckSightOrRange(512, "Inactive");
  190. TNT1 A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2], 0, 129, 0);
  191. "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2], 10, 129, 0);
  192. "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2], 20, 129, 0);
  193. "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2], 30, 129, 0);
  194. "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2], 40, 129, 0);
  195. "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2], 50, 129, 0);
  196. "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2], 60, 129, 0);
  197. "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2], 70, 129, 0);
  198. "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2], 80, 129, 0);
  199. "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2], 90, 129, 0);
  200. "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],100, 129, 0);
  201. "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],110, 129, 0);
  202. "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],120, 129, 0);
  203. "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],130, 129, 0);
  204. "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],140, 129, 0);
  205. "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],150, 129, 0);
  206. "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],160, 129, 0);
  207. "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],170, 129, 0);
  208. "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],180, 129, 0);
  209. "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],190, 129, 0);
  210. "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],200, 129, 0);
  211. "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],210, 129, 0);
  212. "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],220, 129, 0);
  213. "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],230, 129, 0);
  214. "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],240, 129, 0);
  215. "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],250, 129, 0);
  216. "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],260, 129, 0);
  217. "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],270, 129, 0);
  218. "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],280, 129, 0);
  219. "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],290, 129, 0);
  220. "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],310, 129, 0);
  221. "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],320, 129, 0);
  222. "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],330, 129, 0);
  223. "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],340, 129, 0);
  224. "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],350, 129, 0);
  225. "####" A 4 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],360, 129, 0);
  226. Loop;
  227. Inactive:
  228. TNT1 A 1;
  229. TNT1 A 0 A_CheckSightOrRange(512, "Inactive");
  230. Goto Active;
  231. }
  232. }
  233. class BlueCirclePad : GreenCirclePad
  234. {
  235. Default
  236. {
  237. //$Title CirclePad (blue)
  238. Translation "112:127=196:207";
  239. }
  240. }
  241. class WhiteCirclePad : GreenCirclePad
  242. {
  243. Default
  244. {
  245. //$Title CirclePad (white)
  246. Translation "112:127=80:111";
  247. }
  248. }
  249. class RedCirclePad : GreenCirclePad
  250. {
  251. Default
  252. {
  253. //$Title CirclePad (red)
  254. Translation "112:127=176:191";
  255. }
  256. }
  257. class OrangeCirclePad: GreenCirclePad
  258. {
  259. Default
  260. {
  261. //$Title CirclePad (orange)
  262. Translation "112:127=214:223";
  263. }
  264. }
  265. class UFOCirclePad: Actor //fixed values for SecretUFO effect
  266. {
  267. Default
  268. {
  269. -SOLID
  270. +CLIENTSIDEONLY
  271. +NOBLOCKMAP
  272. +NOCLIP
  273. +NOGRAVITY
  274. +NOINTERACTION
  275. +NOSECTOR
  276. }
  277. States
  278. {
  279. Spawn:
  280. TNT1 A 0;
  281. TNT1 A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4, 0, 129, 0);
  282. "####" A 0 A_SpawnProjectile("SparkG", 0, random(-64,64), random(0,360), CMF_AIMDIRECTION|CMF_BADPITCH, random(-67,-113));
  283. "####" A 0 A_SpawnProjectile("SparkG", 0, random(-64,64), random(0,360), CMF_AIMDIRECTION|CMF_BADPITCH, random(-67,-113));
  284. "####" A 0 A_SpawnProjectile("SparkG", 0, random(-64,64), random(0,360), CMF_AIMDIRECTION|CMF_BADPITCH, random(-67,-113));
  285. "####" A 0 A_SpawnProjectile("SparkG", 0, random(-64,64), random(0,360), CMF_AIMDIRECTION|CMF_BADPITCH, random(-67,-113));
  286. "####" A 0 A_SpawnProjectile("SparkG", 0, random(-64,64), random(0,360), CMF_AIMDIRECTION|CMF_BADPITCH, random(-67,-113));
  287. "####" A 0 A_SpawnProjectile("SparkG", 0, random(-64,64), random(0,360), CMF_AIMDIRECTION|CMF_BADPITCH, random(-67,-113));
  288. "####" A 0 A_SpawnProjectile("SparkG", 0, random(-64,64), random(0,360), CMF_AIMDIRECTION|CMF_BADPITCH, random(-67,-113));
  289. "####" A 0 A_SpawnProjectile("SparkG", 0, random(-64,64), random(0,360), CMF_AIMDIRECTION|CMF_BADPITCH, random(-67,-113));
  290. "####" A 0 A_SpawnProjectile("SparkG", 0, random(-64,64), random(0,360), CMF_AIMDIRECTION|CMF_BADPITCH, random(-67,-113));
  291. "####" A 0 A_SpawnProjectile("SparkG", 0, random(-64,64), random(0,360), CMF_AIMDIRECTION|CMF_BADPITCH, random(-67,-113));
  292. "####" A 0 A_SpawnProjectile("SparkG", 0, random(-64,64), random(0,360), CMF_AIMDIRECTION|CMF_BADPITCH, random(-67,-113));
  293. "####" A 0 A_SpawnProjectile("SparkG", 0, random(-64,64), random(0,360), CMF_AIMDIRECTION|CMF_BADPITCH, random(-67,-113));
  294. "####" A 0 A_SpawnProjectile("SparkG", 0, random(-64,64), random(0,360), CMF_AIMDIRECTION|CMF_BADPITCH, random(-67,-113));
  295. "####" A 0 A_SpawnProjectile("SparkG", 0, random(-64,64), random(0,360), CMF_AIMDIRECTION|CMF_BADPITCH, random(-67,-113));
  296. "####" A 0 A_SpawnProjectile("SparkG", 0, random(-64,64), random(0,360), CMF_AIMDIRECTION|CMF_BADPITCH, random(-67,-113));
  297. "####" A 0 A_SpawnProjectile("SparkG", 0, random(-64,64), random(0,360), CMF_AIMDIRECTION|CMF_BADPITCH, random(-67,-113));
  298. "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4, 10, 129, 0);
  299. "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4, 20, 129, 0);
  300. "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4, 30, 129, 0);
  301. "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4, 40, 129, 0);
  302. "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4, 50, 129, 0);
  303. "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4, 60, 129, 0);
  304. "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4, 70, 129, 0);
  305. "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4, 80, 129, 0);
  306. "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4, 90, 129, 0);
  307. "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,100, 129, 0);
  308. "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,110, 129, 0);
  309. "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,120, 129, 0);
  310. "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,130, 129, 0);
  311. "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,140, 129, 0);
  312. "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,150, 129, 0);
  313. "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,160, 129, 0);
  314. "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,170, 129, 0);
  315. "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,180, 129, 0);
  316. "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,190, 129, 0);
  317. "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,200, 129, 0);
  318. "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,210, 129, 0);
  319. "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,220, 129, 0);
  320. "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,230, 129, 0);
  321. "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,240, 129, 0);
  322. "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,250, 129, 0);
  323. "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,260, 129, 0);
  324. "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,270, 129, 0);
  325. "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,280, 129, 0);
  326. "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,290, 129, 0);
  327. "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,310, 129, 0);
  328. "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,320, 129, 0);
  329. "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,330, 129, 0);
  330. "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,340, 129, 0);
  331. "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,350, 129, 0);
  332. "####" A 2 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,360, 129, 0);
  333. "####" "#" 2 A_FadeOut(0.04,FTF_REMOVE);
  334. Loop;
  335. }
  336. }