Small scorenum/damnum refactor.

This commit is contained in:
Mari the Deer 2024-01-16 10:17:28 +01:00
commit 38cd7df826
23 changed files with 182 additions and 54 deletions

View file

@ -25,16 +25,16 @@ Class ArmorNuggetItem : SWWMSpareArmor
SWWMLoreLibrary.Add(Owner.player,"Nugget");
bool bUsed = Super.Use(pickup);
// sell excess
if ( !bUsed )
if ( !bUsed && Owner.player )
{
int sellprice = abs(Stamina)/2;
SWWMScoreObj.Spawn(sellprice,level.Vec3Offset(Owner.pos,SWWMUtility.Vec3FromAngles(FRandom[ScoreBits](0,360),FRandom[ScoreBits](-90,90))*8.+(0,0,Owner.Height/2)));
SWWMCredits.Give(Owner.player,sellprice);
if ( Owner.player )
if ( Owner.player == players[consoleplayer] )
{
if ( Owner.player == players[consoleplayer] ) Console.Printf(StringTable.Localize(SWWMUtility.SellFemaleItem(self)?"$SWWM_SELLEXTRA_FEM":"$SWWM_SELLEXTRA"),GetTag(),sellprice);
else Console.Printf(StringTable.Localize(SWWMUtility.SellFemaleItem(self)?"$SWWM_SELLEXTRAREM_FEM":"$SWWM_SELLEXTRAREM"),Owner.player.GetUserName(),GetTag(),sellprice);
SWWMScoreObj.SpawnAtActorBunch(sellprice,Owner);
Console.Printf(StringTable.Localize(SWWMUtility.SellFemaleItem(self)?"$SWWM_SELLEXTRA_FEM":"$SWWM_SELLEXTRA"),GetTag(),sellprice);
}
else Console.Printf(StringTable.Localize(SWWMUtility.SellFemaleItem(self)?"$SWWM_SELLEXTRAREM_FEM":"$SWWM_SELLEXTRAREM"),Owner.player.GetUserName(),GetTag(),sellprice);
}
return bUsed;
}

View file

@ -110,6 +110,8 @@ Class SWWMArmor : Armor abstract
while ( (amount <= (MaxAmount-default.Amount)) && (Owner.CountInv(parent) > 0) )
{
Amount += default.Amount;
if ( Owner.player == players[consoleplayer] )
SWWMScoreObj.SpawnAtActorBunch(default.Amount,Owner,Font.CR_GREEN);
Owner.TakeInventory(parent,1);
// absorb the extra damage too
saved = HandleDamage(damage,damageType,flags);
@ -168,6 +170,8 @@ Class SWWMSpareArmor : Inventory abstract
}
Owner.GiveInventory(giveme,GetDefaultByType(giveme).Amount);
SWWMHandler.ArmorFlash(Owner.PlayerNumber());
if ( Owner.player == players[consoleplayer] )
SWWMScoreObj.SpawnAtActorBunch(GetDefaultByType(giveme).Amount,Owner,Font.CR_GREEN);
return true;
}
return false;

View file

@ -93,6 +93,8 @@ Class SWWMHealth : Inventory abstract
}
SWWMHandler.HealthFlash(Owner.PlayerNumber());
Owner.GiveInventory(giveme,GetDefaultByType(giveme).Amount);
if ( Owner.player == players[consoleplayer] )
SWWMScoreObj.SpawnAtActorBunch(GetDefaultByType(giveme).Amount,Owner,Font.CR_BLUE);
AutoUseExtra(false);
return true;
}
@ -141,6 +143,8 @@ Class SWWMHealth : Inventory abstract
while ( (Amount > 0) && (newdamage > 0) )
{
newdamage = newdamage-GetDefaultByType(giveme).Amount;
if ( Owner.player == players[consoleplayer] )
SWWMScoreObj.SpawnAtActorBunch(GetDefaultByType(giveme).Amount,Owner,Font.CR_BLUE);
if ( newdamage < 0 ) Owner.GiveBody(-newdamage,GetDefaultByType(giveme).MaxAmount);
newdamage = max(0,newdamage);
if ( !morethanonce ) SWWMHandler.HealthFlash(Owner.PlayerNumber());

View file

@ -15,14 +15,18 @@ Mixin Class SWWMAutoUseFix
// sell excess if there's a price
if ( !deathmatch && bALWAYSPICKUP && (Amount+item.Amount > MaxAmount) && (Stamina != 0) )
{
int sellprice = abs(Stamina)/2;
SWWMScoreObj.Spawn(sellprice,level.Vec3Offset(Owner.pos,SWWMUtility.Vec3FromAngles(FRandom[ScoreBits](0,360),FRandom[ScoreBits](-90,90))*8.+(0,0,Owner.Height/2)));
SWWMCredits.Give(Owner.player,sellprice);
if ( Owner.player )
{
if ( Owner.player == players[consoleplayer] ) Console.Printf(StringTable.Localize(SWWMUtility.SellFemaleItem(item)?"$SWWM_SELLEXTRA_FEM":"$SWWM_SELLEXTRA"),GetTag(),sellprice);
int sellprice = abs(Stamina)/2;
SWWMCredits.Give(Owner.player,sellprice);
if ( Owner.player == players[consoleplayer] )
{
SWWMScoreObj.SpawnAtActorBunch(sellprice,Owner);
Console.Printf(StringTable.Localize(SWWMUtility.SellFemaleItem(item)?"$SWWM_SELLEXTRA_FEM":"$SWWM_SELLEXTRA"),GetTag(),sellprice);
}
else Console.Printf(StringTable.Localize(SWWMUtility.SellFemaleItem(item)?"$SWWM_SELLEXTRAREM_FEM":"$SWWM_SELLEXTRAREM"),Owner.player.GetUserName(),GetTag(),sellprice);
}
item.bPickupGood = true;
}
}
return Super.HandlePickup(item);

View file

@ -94,7 +94,7 @@ Class SWWMCollectible : Inventory abstract
// give credit
if ( other.player && (Stamina > 0) )
{
SWWMScoreObj.Spawn(Stamina,level.Vec3Offset(other.pos,SWWMUtility.Vec3FromAngles(FRandom[ScoreBits](0,360),FRandom[ScoreBits](-90,90))*8.+(0,0,other.Height/2)));
if ( other.player == players[consoleplayer] ) SWWMScoreObj.SpawnAtActorBunch(Stamina,other);
SWWMCredits.Give(other.player,Stamina);
}
// send to all other players

View file

@ -56,6 +56,8 @@ Class RefresherRegen : Powerup
if ( !Owner || (Owner.health <= 0) || ((EffectTics-5)%175) ) return;
if ( !Owner.GiveBody(int(Strength),500) ) return;
SWWMHandler.DoFlash(Owner,Color(32,224,128,255),10);
if ( Owner.player == players[consoleplayer] )
SWWMScoreObj.SpawnAtActorBunch(int(Strength),Owner,Font.CR_BLUE);
Owner.A_StartSound("powerup/refresher",CHAN_ITEMEXTRA,CHANF_LOCAL|CHANF_OVERLAP,.4);
if ( Owner is 'Demolitionist' )
Demolitionist(Owner).lastbump *= 0.99;
@ -70,16 +72,16 @@ Class HealthNuggetItem : SWWMHealth
SWWMLoreLibrary.Add(Owner.player,"Nugget");
bool bUsed = Super.Use(pickup);
// sell excess
if ( !bUsed )
if ( !bUsed && Owner.player )
{
int sellprice = abs(Stamina)/2;
SWWMScoreObj.Spawn(sellprice,level.Vec3Offset(Owner.pos,SWWMUtility.Vec3FromAngles(FRandom[ScoreBits](0,360),FRandom[ScoreBits](-90,90))*8.+(0,0,Owner.Height/2)));
SWWMCredits.Give(Owner.player,sellprice);
if ( Owner.player )
if ( Owner.player == players[consoleplayer] )
{
if ( Owner.player == players[consoleplayer] ) Console.Printf(StringTable.Localize(SWWMUtility.SellFemaleItem(self)?"$SWWM_SELLEXTRA_FEM":"$SWWM_SELLEXTRA"),GetTag(),sellprice);
else Console.Printf(StringTable.Localize(SWWMUtility.SellFemaleItem(self)?"$SWWM_SELLEXTRAREM_FEM":"$SWWM_SELLEXTRAREM"),Owner.player.GetUserName(),GetTag(),sellprice);
SWWMScoreObj.SpawnAtActorBunch(sellprice,Owner);
Console.Printf(StringTable.Localize(SWWMUtility.SellFemaleItem(self)?"$SWWM_SELLEXTRA_FEM":"$SWWM_SELLEXTRA"),GetTag(),sellprice);
}
else Console.Printf(StringTable.Localize(SWWMUtility.SellFemaleItem(self)?"$SWWM_SELLEXTRAREM_FEM":"$SWWM_SELLEXTRAREM"),Owner.player.GetUserName(),GetTag(),sellprice);
}
return bUsed;
}

View file

@ -529,12 +529,15 @@ Class SWWMLamp : Inventory
if ( (Charge >= Default.Charge) && (Amount+item.Amount > MaxAmount) )
{
// sell excess
int sellprice = abs(Stamina)/2;
SWWMScoreObj.Spawn(sellprice,level.Vec3Offset(Owner.pos,SWWMUtility.Vec3FromAngles(FRandom[ScoreBits](0,360),FRandom[ScoreBits](-90,90))*8.+(0,0,Owner.Height/2)));
SWWMCredits.Give(Owner.player,sellprice);
if ( Owner.player )
{
if ( Owner.player == players[consoleplayer] ) Console.Printf(StringTable.Localize(SWWMUtility.SellFemaleItem(item)?"$SWWM_SELLEXTRA_FEM":"$SWWM_SELLEXTRA"),GetTag(),sellprice);
int sellprice = abs(Stamina)/2;
SWWMCredits.Give(Owner.player,sellprice);
if ( Owner.player == players[consoleplayer] )
{
SWWMScoreObj.SpawnAtActorBunch(sellprice,Owner);
Console.Printf(StringTable.Localize(SWWMUtility.SellFemaleItem(item)?"$SWWM_SELLEXTRA_FEM":"$SWWM_SELLEXTRA"),GetTag(),sellprice);
}
else Console.Printf(StringTable.Localize(SWWMUtility.SellFemaleItem(item)?"$SWWM_SELLEXTRAREM_FEM":"$SWWM_SELLEXTRAREM"),Owner.player.GetUserName(),GetTag(),sellprice);
}
}

View file

@ -43,17 +43,34 @@ Class GrilledCheeseSandwich : Inventory
SWWMHandler.DoFlash(Owner,Color(64,255,255,64),10);
Owner.A_QuakeEx(9.,9.,9.,3,0,1,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:1.);
Owner.GiveBody(1000,1000);
if ( Owner.player == players[consoleplayer] )
SWWMScoreObj.SpawnAtActorBunch(1000,Owner,Font.CR_BLUE);
if ( Owner is 'Demolitionist' )
{
let n = Owner.FindInventory("ArmorNugget");
if ( !n ) Owner.GiveInventory("ArmorNugget",GetDefaultByType("ArmorNugget").MaxAmount);
else n.Amount = n.MaxAmount;
else
{
n.Amount = n.MaxAmount;
if ( Owner.player == players[consoleplayer] )
SWWMScoreObj.SpawnAtActorBunch(n.MaxAmount,Owner,Font.CR_GREEN);
}
let b = Owner.FindInventory("BlastSuit");
if ( !b ) Owner.GiveInventory("BlastSuit",GetDefaultByType("BlastSuit").MaxAmount);
else b.Amount = b.MaxAmount;
else
{
b.Amount = b.MaxAmount;
if ( Owner.player == players[consoleplayer] )
SWWMScoreObj.SpawnAtActorBunch(b.MaxAmount,Owner,Font.CR_GREEN);
}
let w = Owner.FindInventory("WarArmor");
if ( !w ) Owner.GiveInventory("WarArmor",GetDefaultByType("WarArmor").MaxAmount);
else w.Amount = w.MaxAmount;
else
{
w.Amount = w.MaxAmount;
if ( Owner.player == players[consoleplayer] )
SWWMScoreObj.SpawnAtActorBunch(w.MaxAmount,Owner,Font.CR_GREEN);
}
SWWMLoreLibrary.Add(Owner.player,"Nugget");
SWWMLoreLibrary.Add(Owner.player,"BlastSuit");
SWWMLoreLibrary.Add(Owner.player,"WarArmor");
@ -1044,8 +1061,12 @@ Class RagekitPower : Powerup
SWWMHandler.DoFlash(Owner,Color(16,255,0,0),5);
Owner.GiveBody(1,100);
Owner.A_AlertMonsters(swwm_uncapalert?0:2000);
if ( (Owner.player == players[consoleplayer]) && (gametic > lastrage) && (swwm_mutevoice < 2) )
lastrage = SWWMHandler.AddOneliner("ragekit",2,5)+20;
if ( Owner.player == players[consoleplayer] )
{
SWWMScoreObj.SpawnAtActorBunch(1,Owner,Font.CR_BLUE);
if ( (gametic > lastrage) && (swwm_mutevoice < 2) )
lastrage = SWWMHandler.AddOneliner("ragekit",2,5)+20;
}
Owner.A_QuakeEx(1.5,1.5,1.5,Random[Rage](1,2),0,1,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.5);
lastpulse = max(lastpulse,gametic+10);
Demolitionist(Owner).lastbump *= .995;
@ -1078,8 +1099,12 @@ Class RagekitPower : Powerup
Owner.A_AlertMonsters(swwm_uncapalert?0:5000);
SWWMHandler.DoFlash(Owner,Color(64,255,0,0),10);
Owner.A_QuakeEx(8.,8.,8.,Random[Rage](3,8),0,1,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:1.);
if ( (Owner.player == players[consoleplayer]) && (gametic > lastrage) && (swwm_mutevoice < 2) )
lastrage = SWWMHandler.AddOneliner("ragekit",2,5)+40;
if ( Owner.player == players[consoleplayer] )
{
SWWMScoreObj.SpawnAtActorBunch(5,Owner,Font.CR_BLUE);
if ( (gametic > lastrage) && (swwm_mutevoice < 2) )
lastrage = SWWMHandler.AddOneliner("ragekit",2,5)+40;
}
Owner.A_StartSound("powerup/ragekithit",CHAN_POWERUP,CHANF_OVERLAP);
lasteffect = level.maptime;
lastpulse = max(lastpulse,gametic+35);
@ -1120,6 +1145,8 @@ Class Ragekit : Inventory
if ( pickup && !deathmatch ) return false;
if ( pickup && ((Owner.player == players[consoleplayer]) || bBigPowerup) ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA);
Owner.GiveBody(100,100);
if ( Owner.player == players[consoleplayer] )
SWWMScoreObj.SpawnAtActorBunch(100,Owner,Font.CR_BLUE);
SWWMUtility.AchievementProgressInc("rage",1,Owner.player);
if ( !(Owner is 'Demolitionist') )
{

View file

@ -1172,6 +1172,8 @@ Class DivineSpriteEffect : Inventory
{
healcnt = 0;
Owner.GiveBody(1000,1000);
if ( Owner.player == players[consoleplayer] )
SWWMScoreObj.SpawnAtActorBunch(1000,Owner,Font.CR_BLUE);
SWWMHandler.DoFlash(Owner,Color(40,255,255,255),20);
if ( Owner is 'Demolitionist' )
Demolitionist(Owner).lastbump *= 0.97;
@ -1180,6 +1182,8 @@ Class DivineSpriteEffect : Inventory
else if ( !(healcnt%5) )
{
Owner.GiveBody(500,10000);
if ( Owner.player == players[consoleplayer] )
SWWMScoreObj.SpawnAtActorBunch(500,Owner,Font.CR_BLUE);
Owner.A_StartSound("powerup/divinehit",CHAN_ITEMEXTRA,CHANF_OVERLAP);
}
}