Make items drop in "Unreal style" from the player.

This commit is contained in:
Mari the Deer 2023-07-01 14:12:36 +02:00
commit e35f78035e
12 changed files with 42 additions and 2 deletions

View file

@ -5,6 +5,7 @@ Class SWWMAmmo : Ammo
Mixin SWWMUseToPickup;
Mixin SWWMRespawn;
Mixin SWWMRotatingPickup;
Mixin SWWMUnrealStyleDrop;
meta String PickupTag;
meta Class<MagAmmo> MagAmmoType;
@ -277,6 +278,7 @@ Class MagAmmo : Inventory abstract
Mixin SWWMUseToPickup;
Mixin SWWMRespawn;
Mixin SWWMRotatingPickup;
Mixin SWWMUnrealStyleDrop;
meta Class<Ammo> ParentAmmo;
Ammo pamo;

View file

@ -140,6 +140,7 @@ Class SWWMSpareArmor : Inventory abstract
Mixin SWWMRespawn;
Mixin SWWMRotatingPickup;
Mixin SWWMPickupGlow;
Mixin SWWMUnrealStyleDrop;
meta Class<SWWMArmor> giveme;

View file

@ -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?

View file

@ -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()

View file

@ -4,6 +4,7 @@ Class SWWMCollectible : Inventory abstract
{
Mixin SWWMUseToPickup;
Mixin SWWMRotatingPickup;
Mixin SWWMUnrealStyleDrop;
meta int avail;
bool propagated;

View file

@ -5,6 +5,7 @@ Class SWWMKey : Key abstract
Mixin SWWMOverlapPickupSound;
Mixin SWWMUseToPickup;
Mixin SWWMRotatingPickup;
Mixin SWWMUnrealStyleDrop;
bool propagated;

View file

@ -493,6 +493,7 @@ Class SWWMLamp : Inventory
Mixin SWWMRespawn;
Mixin SWWMRotatingPickup;
Mixin SWWMPickupGlow;
Mixin SWWMUnrealStyleDrop;
bool bActive, bActivated;
TextureID OnIcon;

View file

@ -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;

View file

@ -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;

View file

@ -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 )
{