338 lines
5.3 KiB
Text
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;
|
|
}
|
|
}
|