From e35f78035edf51a6384d752eb57562b7ac5ae373 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 b55b14838..f475d71f9 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r817 \cu(Sat 1 Jul 14:12:16 CEST 2023)\c-"; -SWWM_SHORTVER="\cw1.3pre r817 \cu(2023-07-01 14:12:16)\c-"; +SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r818 \cu(Sat 1 Jul 14:12:36 CEST 2023)\c-"; +SWWM_SHORTVER="\cw1.3pre r818 \cu(2023-07-01 14:12:36)\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 dfa1611c0..d4a3e9923 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 664f4c315..3b3c892bf 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 8053691b5..cceabf0c1 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 e34bfaf75..d58899e52 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 ) { @@ -414,6 +421,7 @@ Class GhostArtifact : Inventory Mixin SWWMRespawn; Mixin SWWMRotatingPickup; Mixin SWWMPickupGlow; + Mixin SWWMUnrealStyleDrop; Default { @@ -585,6 +593,7 @@ Class GravitySuppressor : Inventory Mixin SWWMRespawn; Mixin SWWMRotatingPickup; Mixin SWWMPickupGlow; + Mixin SWWMUnrealStyleDrop; override bool Use( bool pickup ) { @@ -817,6 +826,7 @@ Class FuckingInvinciball : Inventory Mixin SWWMRespawn; Mixin SWWMRotatingPickup; Mixin SWWMPickupGlow; + Mixin SWWMUnrealStyleDrop; override Inventory CreateCopy( Actor other ) { @@ -1095,6 +1105,7 @@ Class Ragekit : Inventory Mixin SWWMRespawn; Mixin SWWMRotatingPickup; Mixin SWWMPickupGlow; + Mixin SWWMUnrealStyleDrop; override bool Use( bool pickup ) { @@ -1337,6 +1348,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 4bb823595..082a8930a 100644 --- a/zscript/items/swwm_powerups_vip.zsc +++ b/zscript/items/swwm_powerups_vip.zsc @@ -466,6 +466,7 @@ Class Mykradvo : Inventory Mixin SWWMUseToPickup; Mixin SWWMRespawn; Mixin SWWMPickupGlow; + Mixin SWWMUnrealStyleDrop; Actor ringa[2]; @@ -899,6 +900,7 @@ Class AngerySigil : Inventory Mixin SWWMRespawn; Mixin SWWMRotatingPickup; Mixin SWWMPickupGlow; + Mixin SWWMUnrealStyleDrop; override bool Use( bool pickup ) { @@ -1183,6 +1185,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 78ff10f95..1b2b89ac4 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; @@ -750,6 +751,7 @@ Class SWWMDualWeaponGiver : Inventory Mixin SWWMOverlapPickupSound; Mixin SWWMRespawn; Mixin SWWMRotatingPickup; + Mixin SWWMUnrealStyleDrop; bool bUsePickup; SWWMWeapon giveme[2];