swwmgz_m/zscript/items/swwm_keys.zsc
Marisa the Magician 80db58b0d0 Bump zscript ver to 4.14.1, plus a whole lot of stuff.
- Try to get rid of all implicit casts from string to name, color or class.
 - Use FindClass where needed.
 - Used a map in a case where a dictionary was unneeded.
 - Use new bounce flags where needed.
 - Replace Legacy of Rust weapons/ammo.
2025-03-13 14:50:58 +01:00

355 lines
4.8 KiB
Text

// Key item replacements, including some for popular map packs
Class SWWMKey : Key abstract
{
Mixin SWWMOverlapPickupSound;
Mixin SWWMUseToPickup;
Mixin SWWMRotatingPickup;
Mixin SWWMUnrealStyleDrop;
override bool TryPickup( Actor &toucher )
{
// attach the vanilla key that we replace
let rt = toucher;
if ( toucher.player ) rt = toucher.player.mo;
Class<Key> pc = Species;
if ( pc && !rt.FindInventory(pc) )
{
let p = Inventory(Spawn(pc));
SWWMHandler.KeyTagFix(p);
p.AttachToOwner(rt);
}
GoAwayAndDie();
return true;
}
Default
{
+NOTDMATCH;
+FLOATBOB;
FloatBobStrength 0.25;
}
}
Class SWWMRedCard : SWWMKey
{
Default
{
Tag "$T_REDCARD";
Species "RedCard";
Inventory.PickupMessage "$T_REDCARD";
Inventory.PickupFlash 'SWWMRedPickupFlash';
}
States
{
Spawn:
XZW1 AB 10;
Loop;
}
}
Class SWWMYellowCard : SWWMKey
{
Default
{
Tag "$T_YELLOWCARD";
Species "YellowCard";
Inventory.PickupMessage "$T_YELLOWCARD";
Inventory.PickupFlash 'SWWMPickupFlash';
}
States
{
Spawn:
XZW1 AB 10;
Loop;
}
}
Class SWWMBlueCard : SWWMKey
{
Default
{
Tag "$T_BLUECARD";
Species "BlueCard";
Inventory.PickupMessage "$T_BLUECARD";
Inventory.PickupFlash 'SWWMBluePickupFlash';
}
States
{
Spawn:
XZW1 AB 10;
Loop;
}
}
Class SWWMSilverCardKDiZD : SWWMKey
{
Default
{
Tag "$T_SILVERCARD";
Species "BlueSkull";
Inventory.PickupMessage "$T_SILVERCARD";
Inventory.PickupFlash 'SWWMWhitePickupFlash';
}
States
{
Spawn:
XZW1 AB 10;
Loop;
}
}
Class SWWMGreenCardKDiZD : SWWMKey
{
Default
{
Tag "$T_GREENCARD";
Species "YellowSkull";
Inventory.PickupMessage "$T_GREENCARD";
Inventory.PickupFlash 'SWWMGreenPickupFlash';
}
States
{
Spawn:
XZW1 AB 10;
Loop;
}
}
Class SWWMOrangeCardKDiZD : SWWMKey
{
Default
{
Tag "$T_ORANGECARD";
Species "RedSkull";
Inventory.PickupMessage "$T_ORANGECARD";
Inventory.PickupFlash 'SWWMPickupFlash';
}
States
{
Spawn:
XZW1 AB 10;
Loop;
}
}
Class SWWMGreenCard : SWWMKey
{
Default
{
Tag "$T_GREENCARD";
Species "GreenCard";
Inventory.PickupMessage "$T_GREENCARD";
Inventory.PickupFlash 'SWWMGreenPickupFlash';
}
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';
}
States
{
Spawn:
XZW1 A -1;
Stop;
}
}
Class SWWMBlueSkull : SWWMKey
{
Default
{
Tag "$T_BLUESKULL";
Species "BlueSkull";
Inventory.PickupMessage "$T_BLUESKULL";
Inventory.PickupFlash 'SWWMBluePickupFlash';
}
States
{
Spawn:
XZW1 A -1;
Stop;
}
}
Class SWWMYellowSkull : SWWMKey
{
Default
{
Tag "$T_YELLOWSKULL";
Species "YellowSkull";
Inventory.PickupMessage "$T_YELLOWSKULL";
Inventory.PickupFlash 'SWWMPickupFlash';
}
States
{
Spawn:
XZW1 A -1;
Stop;
}
}
Class SWWMPurpleSkull : SWWMKey
{
Default
{
Tag "$T_PURPLESKULL";
Species "PurpleSkull";
Inventory.PickupMessage "$T_PURPLESKULL";
Inventory.PickupFlash 'SWWMPurplePickupFlash';
}
States
{
Spawn:
XZW1 A -1;
Stop;
}
}
// Verdant Citadel fake keys
Class SWWMFakeRedSkull : Actor
{
Default
{
Radius .1;
Height 0.;
+NOBLOCKMAP;
+MOVEWITHSECTOR;
}
States
{
Spawn:
XZW1 A -1;
Stop;
}
}
Class SWWMFakeBlueSkull : Actor
{
Default
{
Radius .1;
Height 0.;
+NOBLOCKMAP;
+MOVEWITHSECTOR;
}
States
{
Spawn:
XZW1 A -1;
Stop;
}
}
Class SWWMFakeYellowSkull : Actor
{
Default
{
Radius .1;
Height 0.;
+NOBLOCKMAP;
+MOVEWITHSECTOR;
}
States
{
Spawn:
XZW1 A -1;
Stop;
}
}
Class SWWMFakePurpleSkull : Actor
{
Default
{
Radius .1;
Height 0.;
+NOBLOCKMAP;
+MOVEWITHSECTOR;
}
States
{
Spawn:
XZW1 A -1;
Stop;
}
}
Class SWWMKeyGreen : SWWMKey
{
Default
{
Tag "$T_KEYGREEN";
Species "KeyGreen";
Inventory.PickupMessage "$T_KEYGREEN";
Inventory.PickupFlash 'SWWMGreenPickupFlash';
}
States
{
Spawn:
XZW1 A -1;
Stop;
}
}
Class SWWMKeyBlue : SWWMKey
{
Default
{
Tag "$T_KEYBLUE";
Species "KeyBlue";
Inventory.PickupMessage "$T_KEYBLUE";
Inventory.PickupFlash 'SWWMBluePickupFlash';
}
States
{
Spawn:
XZW1 A -1;
Stop;
}
}
Class SWWMKeyYellow : SWWMKey
{
Default
{
Tag "$T_KEYYELLOW";
Species "KeyYellow";
Inventory.PickupMessage "$T_KEYYELLOW";
Inventory.PickupFlash 'SWWMPickupFlash';
}
States
{
Spawn:
XZW1 A -1;
Stop;
}
}
Class SWWMKeyRed : SWWMKey
{
Default
{
Tag "$T_KEYRED";
Species "KeyRed";
Inventory.PickupMessage "$T_KEYRED";
Inventory.PickupFlash 'SWWMRedPickupFlash';
}
States
{
Spawn:
XZW1 A -1;
Stop;
}
}
// HEXDD thingy
Class SWWMChaosSphere : Key
{
Default
{
Tag "$T_CHAOSSPHERE";
Inventory.InterHubAmount 1; // don't strip, this thing is always kept
+INVENTORY.UNDROPPABLE;
+INVENTORY.UNTOSSABLE;
+INVENTORY.UNCLEARABLE;
}
}