From bce371235c2783a10ee3d3622e152819528419e7 Mon Sep 17 00:00:00 2001 From: Marisa the Magician Date: Sat, 1 Jul 2023 14:12:36 +0200 Subject: [PATCH] Make items drop in "Unreal style" from the player. --- language.version | 4 ++-- zscript/items/swwm_baseammo.zsc | 2 ++ zscript/items/swwm_basearmor.zsc | 1 + zscript/items/swwm_basehealth.zsc | 1 + zscript/items/swwm_baseitem.zsc | 14 ++++++++++++++ zscript/items/swwm_collectibles.zsc | 1 + zscript/items/swwm_keys.zsc | 1 + zscript/items/swwm_lamp.zsc | 1 + zscript/items/swwm_miscitems.zsc | 2 ++ zscript/items/swwm_powerups.zsc | 12 ++++++++++++ zscript/items/swwm_powerups_vip.zsc | 3 +++ zscript/weapons/swwm_baseweapon.zsc | 2 ++ 12 files changed, 42 insertions(+), 2 deletions(-) diff --git a/language.version b/language.version index 8d7bdccb9..9e17e2007 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r798 \cu(Sat 1 Jul 14:31:11 CEST 2023)\c-"; -SWWM_SHORTVER="\cw1.3pre r798 \cu(2023-07-01 14:31:11)\c-"; +SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r799 \cu(Sat 1 Jul 14:31:18 CEST 2023)\c-"; +SWWM_SHORTVER="\cw1.3pre r799 \cu(2023-07-01 14:31:18)\c-"; diff --git a/zscript/items/swwm_baseammo.zsc b/zscript/items/swwm_baseammo.zsc index e840f83ed..9c5de200b 100644 --- a/zscript/items/swwm_baseammo.zsc +++ b/zscript/items/swwm_baseammo.zsc @@ -5,6 +5,7 @@ Class SWWMAmmo : Ammo Mixin SWWMUseToPickup; Mixin SWWMRespawn; Mixin SWWMRotatingPickup; + Mixin SWWMUnrealStyleDrop; meta String PickupTag; meta Class MagAmmoType; @@ -277,6 +278,7 @@ Class MagAmmo : Inventory abstract Mixin SWWMUseToPickup; Mixin SWWMRespawn; Mixin SWWMRotatingPickup; + Mixin SWWMUnrealStyleDrop; meta Class ParentAmmo; Ammo pamo; diff --git a/zscript/items/swwm_basearmor.zsc b/zscript/items/swwm_basearmor.zsc index b4ffc16c9..02b840fa2 100644 --- a/zscript/items/swwm_basearmor.zsc +++ b/zscript/items/swwm_basearmor.zsc @@ -140,6 +140,7 @@ Class SWWMSpareArmor : Inventory abstract Mixin SWWMRespawn; Mixin SWWMRotatingPickup; Mixin SWWMPickupGlow; + Mixin SWWMUnrealStyleDrop; meta Class giveme; diff --git a/zscript/items/swwm_basehealth.zsc b/zscript/items/swwm_basehealth.zsc index a00535fbb..dcbf31435 100644 --- a/zscript/items/swwm_basehealth.zsc +++ b/zscript/items/swwm_basehealth.zsc @@ -7,6 +7,7 @@ Class SWWMHealth : Inventory abstract Mixin SWWMRespawn; Mixin SWWMRotatingPickup; Mixin SWWMPickupGlow; + Mixin SWWMUnrealStyleDrop; // can't use the Health class for whatever reason // nice parser you got there I guess? diff --git a/zscript/items/swwm_baseitem.zsc b/zscript/items/swwm_baseitem.zsc index 8329b98d8..3374286f3 100644 --- a/zscript/items/swwm_baseitem.zsc +++ b/zscript/items/swwm_baseitem.zsc @@ -237,6 +237,20 @@ Mixin Class SWWMRotatingPickup } } +Mixin Class SWWMUnrealStyleDrop +{ + override void OnDrop( Actor dropper ) + { + if ( !(dropper is 'Demolitionist') ) return; + Vector3 ofs = SWWMUtility.RotateVector3((dropper.radius,0.,dropper.height*.5),dropper.angle); + SetOrigin(level.Vec3Offset(dropper.pos,ofs),false); + vel = SWWMUtility.GetPlayerViewDir(dropper)*12.+(0.,0.,4.); + angle = dropper.angle; + pitch = 0; + roll = 0; + } +} + Mixin Class SWWMRespawn { override void Hide() diff --git a/zscript/items/swwm_collectibles.zsc b/zscript/items/swwm_collectibles.zsc index b9f901d80..d7f7c1f60 100644 --- a/zscript/items/swwm_collectibles.zsc +++ b/zscript/items/swwm_collectibles.zsc @@ -4,6 +4,7 @@ Class SWWMCollectible : Inventory abstract { Mixin SWWMUseToPickup; Mixin SWWMRotatingPickup; + Mixin SWWMUnrealStyleDrop; meta int avail; bool propagated; diff --git a/zscript/items/swwm_keys.zsc b/zscript/items/swwm_keys.zsc index 3c4584f7e..aaed0319f 100644 --- a/zscript/items/swwm_keys.zsc +++ b/zscript/items/swwm_keys.zsc @@ -5,6 +5,7 @@ Class SWWMKey : Key abstract Mixin SWWMOverlapPickupSound; Mixin SWWMUseToPickup; Mixin SWWMRotatingPickup; + Mixin SWWMUnrealStyleDrop; bool propagated; diff --git a/zscript/items/swwm_lamp.zsc b/zscript/items/swwm_lamp.zsc index 85e5c4d01..6d995f375 100644 --- a/zscript/items/swwm_lamp.zsc +++ b/zscript/items/swwm_lamp.zsc @@ -493,6 +493,7 @@ Class SWWMLamp : Inventory Mixin SWWMRespawn; Mixin SWWMRotatingPickup; Mixin SWWMPickupGlow; + Mixin SWWMUnrealStyleDrop; bool bActive, bActivated; TextureID OnIcon; diff --git a/zscript/items/swwm_miscitems.zsc b/zscript/items/swwm_miscitems.zsc index 59562224c..b3a53a074 100644 --- a/zscript/items/swwm_miscitems.zsc +++ b/zscript/items/swwm_miscitems.zsc @@ -6,6 +6,7 @@ Class Omnisight : Inventory Mixin SWWMUseToPickup; Mixin SWWMRespawn; Mixin SWWMRotatingPickup; + Mixin SWWMUnrealStyleDrop; override bool TryPickup( in out Actor toucher ) { @@ -76,6 +77,7 @@ Class SafetyTether : Inventory Mixin SWWMUseToPickup; Mixin SWWMRespawn; Mixin SWWMRotatingPickup; + Mixin SWWMUnrealStyleDrop; bool bPrimed, bFailed; int primetim; diff --git a/zscript/items/swwm_powerups.zsc b/zscript/items/swwm_powerups.zsc index 29c88ab70..362a10cff 100644 --- a/zscript/items/swwm_powerups.zsc +++ b/zscript/items/swwm_powerups.zsc @@ -190,6 +190,13 @@ Class GrilledCheeseSandwich : Inventory override void OnDrop( Actor dropper ) { lastdropper = dropper; + if ( !(dropper is 'Demolitionist') ) return; + Vector3 ofs = SWWMUtility.RotateVector3((dropper.radius,0.,dropper.height*.5),dropper.angle); + SetOrigin(level.Vec3Offset(dropper.pos,ofs),false); + vel = SWWMUtility.GetPlayerViewDir(dropper)*12.+(0.,0.,4.); + angle = dropper.angle; + pitch = 0; + roll = 0; } override void PostTeleport( Vector3 destpos, double destangle, int flags ) { @@ -411,6 +418,7 @@ Class GhostArtifact : Inventory Mixin SWWMRespawn; Mixin SWWMRotatingPickup; Mixin SWWMPickupGlow; + Mixin SWWMUnrealStyleDrop; Default { @@ -582,6 +590,7 @@ Class GravitySuppressor : Inventory Mixin SWWMRespawn; Mixin SWWMRotatingPickup; Mixin SWWMPickupGlow; + Mixin SWWMUnrealStyleDrop; override bool Use( bool pickup ) { @@ -814,6 +823,7 @@ Class FuckingInvinciball : Inventory Mixin SWWMRespawn; Mixin SWWMRotatingPickup; Mixin SWWMPickupGlow; + Mixin SWWMUnrealStyleDrop; override Inventory CreateCopy( Actor other ) { @@ -1092,6 +1102,7 @@ Class Ragekit : Inventory Mixin SWWMRespawn; Mixin SWWMRotatingPickup; Mixin SWWMPickupGlow; + Mixin SWWMUnrealStyleDrop; override bool Use( bool pickup ) { @@ -1334,6 +1345,7 @@ Class EBarrier : Inventory Mixin SWWMRespawn; Mixin SWWMRotatingPickup; Mixin SWWMPickupGlow; + Mixin SWWMUnrealStyleDrop; int terrainwait; diff --git a/zscript/items/swwm_powerups_vip.zsc b/zscript/items/swwm_powerups_vip.zsc index d30ab3078..3a832ac88 100644 --- a/zscript/items/swwm_powerups_vip.zsc +++ b/zscript/items/swwm_powerups_vip.zsc @@ -472,6 +472,7 @@ Class Mykradvo : Inventory Mixin SWWMUseToPickup; Mixin SWWMRespawn; Mixin SWWMPickupGlow; + Mixin SWWMUnrealStyleDrop; Actor ringa[2]; @@ -905,6 +906,7 @@ Class AngerySigil : Inventory Mixin SWWMRespawn; Mixin SWWMRotatingPickup; Mixin SWWMPickupGlow; + Mixin SWWMUnrealStyleDrop; override bool Use( bool pickup ) { @@ -1189,6 +1191,7 @@ Class DivineSprite : Inventory Mixin SWWMRespawn; Mixin SWWMRotatingPickup; Mixin SWWMPickupGlow; + Mixin SWWMUnrealStyleDrop; override bool Use( bool pickup ) { diff --git a/zscript/weapons/swwm_baseweapon.zsc b/zscript/weapons/swwm_baseweapon.zsc index 9a02fb350..9ca38e53f 100644 --- a/zscript/weapons/swwm_baseweapon.zsc +++ b/zscript/weapons/swwm_baseweapon.zsc @@ -2,6 +2,7 @@ Class SWWMWeapon : Weapon abstract { Mixin SWWMOverlapPickupSound; + Mixin SWWMUnrealStyleDrop; bool wasused; bool bUsePickup; @@ -723,6 +724,7 @@ Class SWWMDualWeaponGiver : Inventory Mixin SWWMOverlapPickupSound; Mixin SWWMRespawn; Mixin SWWMRotatingPickup; + Mixin SWWMUnrealStyleDrop; bool bUsePickup; SWWMWeapon giveme[2];