swwmgz_m/zscript/swwm_keys.zsc

338 lines
5.3 KiB
Text

// Key item replacements, including some for popular map packs
Class SWWMKey : Key abstract
{
Mixin SWWMOverlapPickupSound;
Mixin SWWMUseToPickup;
bool propagated;
override void DoEffect()
{
Super.DoEffect();
if ( Icon.IsNull() )
{
// fetch icon from parent (if it exists)
Class<Key> pc = Species;
if ( !pc ) return;
let p = GetDefaultByType(pc);
Icon = p.Icon;
}
}
override bool Use( bool pickup )
{
if ( Owner.player && !propagated )
{
if ( pickup && CVar.GetCVar('swwm_collectanimkey',Owner.player) )
SWWMGesture.SetSpecialGesture(Owner.player.mo,self,true);
else if ( !pickup )
SWWMGesture.SetSpecialGesture(Owner.player.mo,self);
}
// clean up the flag
propagated = false;
return false;
}
Default
{
+NOTDMATCH;
+FLOATBOB;
+INVENTORY.AUTOACTIVATE;
FloatBobStrength 0.25;
}
// helper
action void A_FinishGesture()
{
let gest = SWWMGesture(FindInventory("SWWMGesture"));
if ( !gest )
{
ThrowAbortException("Call to A_FinishGesture() without owned SWWMGesture");
return;
}
if ( gest.sstate.Size() > 0 )
{
gest.whichgesture = GS_Null;
gest.whichstate = gest.sstate[0];
gest.whichcaller = gest.scaller[0];
// push back
gest.sstate.Delete(0);
gest.scaller.Delete(0);
let psp = player.FindPSprite(PSP_WEAPON);
psp.caller = gest;
psp.SetState(gest.ResolveState("Ready"));
return;
}
if ( gest.queued )
{
gest.whichstate = null;
gest.whichgesture = gest.nextgesture;
gest.queued = false;
let psp = player.FindPSprite(PSP_WEAPON);
psp.caller = gest;
psp.SetState(gest.ResolveState("Ready"));
return;
}
player.PendingWeapon = gest.formerweapon;
let psp = player.FindPSprite(PSP_WEAPON);
psp.caller = gest;
psp.SetState(gest.ResolveState("Deselect"));
}
}
Class SWWMRedCard : SWWMKey
{
Default
{
Tag "$T_REDCARD";
Species "RedCard";
Inventory.PickupMessage "$T_REDCARD";
Inventory.PickupFlash "SWWMRedPickupFlash";
Radius 10;
Height 25;
}
States
{
Spawn:
XZW1 AB 10;
Loop;
}
}
Class SWWMYellowCard : SWWMKey
{
Default
{
Tag "$T_YELLOWCARD";
Species "YellowCard";
Inventory.PickupMessage "$T_YELLOWCARD";
Inventory.PickupFlash "SWWMPickupFlash";
Radius 10;
Height 25;
}
States
{
Spawn:
XZW1 AB 10;
Loop;
}
}
Class SWWMBlueCard : SWWMKey
{
Default
{
Tag "$T_BLUECARD";
Species "BlueCard";
Inventory.PickupMessage "$T_BLUECARD";
Inventory.PickupFlash "SWWMBluePickupFlash";
Radius 10;
Height 25;
}
States
{
Spawn:
XZW1 AB 10;
Loop;
}
}
Class SWWMSilverCardKDiZD : SWWMKey
{
Default
{
Tag "$T_SILVERCARD";
Species "BlueSkull";
Inventory.PickupMessage "$T_SILVERCARD";
Inventory.PickupFlash "SWWMWhitePickupFlash";
Radius 10;
Height 25;
}
States
{
Spawn:
XZW1 AB 10;
Loop;
}
}
Class SWWMGreenCardKDiZD : SWWMKey
{
Default
{
Tag "$T_GREENCARD";
Species "YellowSkull";
Inventory.PickupMessage "$T_GREENCARD";
Inventory.PickupFlash "SWWMGreenPickupFlash";
Radius 10;
Height 25;
}
States
{
Spawn:
XZW1 AB 10;
Loop;
}
}
Class SWWMOrangeCardKDiZD : SWWMKey
{
Default
{
Tag "$T_ORANGECARD";
Species "RedSkull";
Inventory.PickupMessage "$T_ORANGECARD";
Inventory.PickupFlash "SWWMPickupFlash";
Radius 10;
Height 25;
}
States
{
Spawn:
XZW1 AB 10;
Loop;
}
}
Class SWWMGreenCard : SWWMKey
{
Default
{
Tag "$T_GREENCARD";
Species "GreenCard";
Inventory.PickupMessage "$T_GREENCARD";
Inventory.PickupFlash "SWWMGreenPickupFlash";
Radius 10;
Height 25;
}
States
{
Spawn:
XZW1 AB 10;
Loop;
}
}
// more Doom key color variants will be implemented as needed
Class SWWMRedSkull : SWWMKey
{
Default
{
Tag "$T_REDSKULL";
Species "RedSkull";
Inventory.PickupMessage "$T_REDSKULL";
Inventory.PickupFlash "SWWMRedPickupFlash";
Radius 10;
Height 25;
}
States
{
Spawn:
XZW1 A -1;
Stop;
}
}
Class SWWMBlueSkull : SWWMKey
{
Default
{
Tag "$T_BLUESKULL";
Species "BlueSkull";
Inventory.PickupMessage "$T_BLUESKULL";
Inventory.PickupFlash "SWWMBluePickupFlash";
Radius 10;
Height 25;
}
States
{
Spawn:
XZW1 A -1;
Stop;
}
}
Class SWWMYellowSkull : SWWMKey
{
Default
{
Tag "$T_YELLOWSKULL";
Species "YellowSkull";
Inventory.PickupMessage "$T_YELLOWSKULL";
Inventory.PickupFlash "SWWMPickupFlash";
Radius 10;
Height 25;
}
States
{
Spawn:
XZW1 A -1;
Stop;
}
}
Class SWWMKeyGreen : SWWMKey
{
Default
{
Tag "$T_KEYGREEN";
Species "KeyGreen";
Inventory.PickupMessage "$T_KEYGREEN";
Inventory.PickupFlash "SWWMGreenPickupFlash";
Radius 10;
Height 25;
}
States
{
Spawn:
XZW1 A -1;
Stop;
}
}
Class SWWMKeyBlue : SWWMKey
{
Default
{
Tag "$T_KEYBLUE";
Species "KeyBlue";
Inventory.PickupMessage "$T_KEYBLUE";
Inventory.PickupFlash "SWWMBluePickupFlash";
Radius 10;
Height 25;
}
States
{
Spawn:
XZW1 A -1;
Stop;
}
}
Class SWWMKeyYellow : SWWMKey
{
Default
{
Tag "$T_KEYYELLOW";
Species "KeyYellow";
Inventory.PickupMessage "$T_KEYYELLOW";
Inventory.PickupFlash "SWWMPickupFlash";
Radius 10;
Height 25;
}
States
{
Spawn:
XZW1 A -1;
Stop;
}
}
Class SWWMKeyRed : SWWMKey
{
Default
{
Tag "$T_KEYRED";
Species "KeyRed";
Inventory.PickupMessage "$T_KEYRED";
Inventory.PickupFlash "SWWMRedPickupFlash";
Radius 10;
Height 25;
}
States
{
Spawn:
XZW1 A -1;
Stop;
}
}