123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362 |
- /*
- * Copyright (c) 2015-2021 Tormentor667, Ozymandias81, AFADoomer
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- **/
- class BaseOrb : ParticleBase
- {
- Default
- {
- Radius 0;
- Height 0;
- -SOLID
- +BRIGHT
- +MISSILE
- +NOBLOCKMAP
- +NOGRAVITY
- +NOINTERACTION
- RenderStyle "Add";
- Alpha 0.01;
- YScale 0.1;
- XScale 0.4;
- }
-
- States
- {
- Spawn:
- LRFX AAAAA 1 A_FadeIn(0.2);
- "####" AAAAAAAAAAAAAAAA 1 A_FadeOut(0.07);
- Stop;
- }
- }
- class SparkBase : ParticleBase
- {
- int fadespeed;
- String sparkcolor;
- Property SparkColor:sparkcolor;
- Default
- {
- Height 1;
- Radius 2;
- Mass 0;
- Speed 1.0;
- +BRIGHT
- +DONTSPLASH
- +FORCEXYBILLBOARD
- +MISSILE
- +NOBLOCKMAP
- Gravity 0.125;
- RenderStyle "Add";
- Scale 0.025;
- }
- States
- {
- Spawn:
- "####" E 1 BRIGHT;
- Loop;
- Death:
- "####" E 1 BRIGHT A_FadeOut(0.1 * fadespeed);
- Loop;
- Frames:
- SPKW A 0;
- SPKR A 0;
- SPKO A 0;
- SPKY A 0;
- SPKG A 0;
- SPKB A 0;
- SPKP A 0;
- }
- override void Tick()
- {
- Super.Tick();
- if (waterlevel) { Destroy(); }
- }
- override void PostBeginPlay()
- {
- Super.PostBeginPlay();
- if (
- sparkcolor ~== "White" || sparkcolor ~== "Red" || sparkcolor ~== "Orange" ||
- sparkcolor ~== "Yellow" || sparkcolor ~== "Green" || sparkcolor ~== "Blue" ||
- sparkcolor ~== "Purple"
- )
- {
- int spr = GetSpriteIndex(String.Format("SPK%s", sparkcolor.left(1)));
- if (spr != -1) { sprite = spr; }
- }
- else
- {
- sprite = GetSpriteIndex("SPKW");
- A_SetRenderStyle(alpha, STYLE_AddShaded);
- SetShade(sparkcolor);
- }
- Speed = FRandom(0.25, 4.0);
- // If it has a target (was fired as a projectile), set velocity directly,
- // not just speed, since A_SpawnProjectile automatically sets the spark
- // velocity amount to the default speed (1.0) on spawn
- if (target) { vel *= Speed; }
- }
- }
- class SparkW : SparkBase
- {
- Default
- {
- SparkBase.SparkColor "White";
- }
- }
- class SparkR : SparkBase
- {
- Default
- {
- SparkBase.SparkColor "Red";
- }
- }
- class SparkO : SparkBase
- {
- Default
- {
- SparkBase.SparkColor "Orange";
- }
- }
- class SparkY : SparkBase
- {
- Default
- {
- SparkBase.SparkColor "Yellow";
- }
- }
- class SparkG : SparkBase
- {
- Default
- {
- SparkBase.SparkColor "Green";
- }
- }
- class SparkB : SparkBase
- {
- Default
- {
- SparkBase.SparkColor "Blue";
- }
- }
- class SparkP : SparkBase
- {
- Default
- {
- SparkBase.SparkColor "Purple";
- }
- }
- class GreenCirclePad : Actor
- {
- Default
- {
- //$Category Special Effects (ZDCMP1)
- //$Title CirclePad (green)
- //$Color 12
- //$Arg0 "Nothing"
- //$Arg0Tooltip "Does nothing"
- //$Arg1 "Radius"
- //$Arg1Tooltip "Controls the size of the area. 32, for example, spawns in a 64x64 diameter circle."
- //$Arg2 "Speed"
- //$Arg2Tooltip "Controls the speed of the rings (can also be negative if you want them to move downwards instead of upwards)"
- -SOLID
- +CLIENTSIDEONLY
- +NOBLOCKMAP
- +NOCLIP
- +NOGRAVITY
- +NOINTERACTION
- +NOSECTOR
- }
- States
- {
- Spawn:
- Active:
- TNT1 A 0;
- TNT1 A 0 A_CheckSightOrRange(512, "Inactive");
- TNT1 A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2], 0, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2], 10, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2], 20, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2], 30, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2], 40, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2], 50, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2], 60, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2], 70, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2], 80, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2], 90, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],100, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],110, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],120, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],130, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],140, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],150, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],160, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],170, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],180, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],190, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],200, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],210, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],220, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],230, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],240, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],250, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],260, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],270, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],280, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],290, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],310, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],320, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],330, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],340, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],350, 129, 0);
- "####" A 4 A_SpawnItemEx("BaseOrb", Args[1], 0, 0, 0, 0, Args[2],360, 129, 0);
- Loop;
- Inactive:
- TNT1 A 1;
- TNT1 A 0 A_CheckSightOrRange(512, "Inactive");
- Goto Active;
- }
- }
- class BlueCirclePad : GreenCirclePad
- {
- Default
- {
- //$Title CirclePad (blue)
- Translation "112:127=196:207";
- }
- }
- class WhiteCirclePad : GreenCirclePad
- {
- Default
- {
- //$Title CirclePad (white)
- Translation "112:127=80:111";
- }
- }
- class RedCirclePad : GreenCirclePad
- {
- Default
- {
- //$Title CirclePad (red)
- Translation "112:127=176:191";
- }
- }
- class OrangeCirclePad: GreenCirclePad
- {
- Default
- {
- //$Title CirclePad (orange)
- Translation "112:127=214:223";
- }
- }
- class UFOCirclePad: Actor //fixed values for SecretUFO effect
- {
- Default
- {
- -SOLID
- +CLIENTSIDEONLY
- +NOBLOCKMAP
- +NOCLIP
- +NOGRAVITY
- +NOINTERACTION
- +NOSECTOR
- }
-
- States
- {
- Spawn:
- TNT1 A 0;
- TNT1 A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4, 0, 129, 0);
- "####" A 0 A_SpawnProjectile("SparkG", 0, random(-64,64), random(0,360), CMF_AIMDIRECTION|CMF_BADPITCH, random(-67,-113));
- "####" A 0 A_SpawnProjectile("SparkG", 0, random(-64,64), random(0,360), CMF_AIMDIRECTION|CMF_BADPITCH, random(-67,-113));
- "####" A 0 A_SpawnProjectile("SparkG", 0, random(-64,64), random(0,360), CMF_AIMDIRECTION|CMF_BADPITCH, random(-67,-113));
- "####" A 0 A_SpawnProjectile("SparkG", 0, random(-64,64), random(0,360), CMF_AIMDIRECTION|CMF_BADPITCH, random(-67,-113));
- "####" A 0 A_SpawnProjectile("SparkG", 0, random(-64,64), random(0,360), CMF_AIMDIRECTION|CMF_BADPITCH, random(-67,-113));
- "####" A 0 A_SpawnProjectile("SparkG", 0, random(-64,64), random(0,360), CMF_AIMDIRECTION|CMF_BADPITCH, random(-67,-113));
- "####" A 0 A_SpawnProjectile("SparkG", 0, random(-64,64), random(0,360), CMF_AIMDIRECTION|CMF_BADPITCH, random(-67,-113));
- "####" A 0 A_SpawnProjectile("SparkG", 0, random(-64,64), random(0,360), CMF_AIMDIRECTION|CMF_BADPITCH, random(-67,-113));
- "####" A 0 A_SpawnProjectile("SparkG", 0, random(-64,64), random(0,360), CMF_AIMDIRECTION|CMF_BADPITCH, random(-67,-113));
- "####" A 0 A_SpawnProjectile("SparkG", 0, random(-64,64), random(0,360), CMF_AIMDIRECTION|CMF_BADPITCH, random(-67,-113));
- "####" A 0 A_SpawnProjectile("SparkG", 0, random(-64,64), random(0,360), CMF_AIMDIRECTION|CMF_BADPITCH, random(-67,-113));
- "####" A 0 A_SpawnProjectile("SparkG", 0, random(-64,64), random(0,360), CMF_AIMDIRECTION|CMF_BADPITCH, random(-67,-113));
- "####" A 0 A_SpawnProjectile("SparkG", 0, random(-64,64), random(0,360), CMF_AIMDIRECTION|CMF_BADPITCH, random(-67,-113));
- "####" A 0 A_SpawnProjectile("SparkG", 0, random(-64,64), random(0,360), CMF_AIMDIRECTION|CMF_BADPITCH, random(-67,-113));
- "####" A 0 A_SpawnProjectile("SparkG", 0, random(-64,64), random(0,360), CMF_AIMDIRECTION|CMF_BADPITCH, random(-67,-113));
- "####" A 0 A_SpawnProjectile("SparkG", 0, random(-64,64), random(0,360), CMF_AIMDIRECTION|CMF_BADPITCH, random(-67,-113));
- "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4, 10, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4, 20, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4, 30, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4, 40, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4, 50, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4, 60, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4, 70, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4, 80, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4, 90, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,100, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,110, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,120, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,130, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,140, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,150, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,160, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,170, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,180, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,190, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,200, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,210, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,220, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,230, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,240, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,250, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,260, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,270, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,280, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,290, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,310, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,320, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,330, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,340, 129, 0);
- "####" A 0 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,350, 129, 0);
- "####" A 2 A_SpawnItemEx("BaseOrb", 128, 0, 0, 0, 0, -4,360, 129, 0);
- "####" "#" 2 A_FadeOut(0.04,FTF_REMOVE);
- Loop;
- }
- }
|