swwmgz_m/zscript/items/swwm_health.zsc
Marisa the Magician 93ac4d3a4f Remove Dragon's Breath shells.
Nuggets can no longer be stored as spares.
2022-06-07 12:31:02 +02:00

236 lines
5.3 KiB
Text

// all the healing items go here
Class HealthNugget : Health
{
Default
{
Inventory.Amount 1;
Inventory.MaxAmount 200;
}
}
Class TetraHealth : Health
{
Default
{
Inventory.Amount 10;
Inventory.MaxAmount 100;
}
}
Class CubeHealth : Health
{
Default
{
Inventory.Amount 20;
Inventory.MaxAmount 100;
}
}
Class RefresherHealth : Health
{
Default
{
Inventory.Amount 100;
Inventory.MaxAmount 500;
}
}
Class RefresherRegen : Powerup
{
Default
{
Inventory.Icon "graphics/HUD/Icons/I_Refresher.png";
Powerup.Duration -50;
Powerup.Strength 10;
+INVENTORY.ADDITIVETIME;
}
override void EndEffect()
{
Super.EndEffect();
if ( (EffectTics <= 0) && Owner && Owner.CheckLocalView() ) Console.Printf(StringTable.Localize("$D_REFRESHER"));
}
override void DoEffect()
{
Super.DoEffect();
if ( !Owner || (Owner.health <= 0) || ((EffectTics-5)%175) ) return;
if ( !Owner.GiveBody(int(Strength),500) ) return;
SWWMScoreObj.Spawn(int(Strength),Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2),ST_Health);
SWWMHandler.DoFlash(Owner,Color(32,224,128,255),10);
Owner.A_StartSound("powerup/refresher",CHAN_ITEMEXTRA,CHANF_LOCAL|CHANF_OVERLAP,.4);
if ( Owner is 'Demolitionist' )
Demolitionist(Owner).lastbump *= 0.99;
}
}
Class HealthNuggetItem : SWWMHealth
{
override bool Use( bool pickup )
{
// additional lore
SWWMLoreLibrary.Add(Owner.player,"Nugget");
bool bUsed = Super.Use(pickup);
// sell excess
if ( !bUsed )
{
int sellprice = int(abs(Stamina)*.5);
SWWMScoreObj.Spawn(sellprice,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2));
SWWMCredits.Give(Owner.player,sellprice);
if ( Owner.player )
{
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);
}
}
return bUsed;
}
override void DoPickupSpecial( Actor toucher )
{
Super.DoPickupSpecial(toucher);
SWWMUtility.AchievementProgressInc("candy",1,toucher.player);
}
Default
{
//$Title Health Nugget
//$Group Health
//$Sprite graphics/HUD/Icons/I_HealthNugget.png
//$Icon health
Tag "$T_NUGGETH";
Stamina 200;
Inventory.PickupMessage "$T_NUGGETH";
Inventory.MaxAmount 0;
Inventory.InterHubAmount 0;
SWWMHealth.GiveHealth "HealthNugget";
+INVENTORY.ALWAYSPICKUP;
-INVENTORY.INVBAR;
Radius 4;
Height 22;
}
States
{
Spawn:
XZW1 # -1 NoDelay
{
frame = Random[Nugget](0,7);
}
Stop;
Dummy:
XZW1 ABCDEFGH -1;
Stop;
}
}
Class TetraHealthItem : SWWMHealth
{
override Inventory CreateCopy( Actor other )
{
// additional lore
SWWMLoreLibrary.Add(other.player,"HealthGeom");
return Super.CreateCopy(other);
}
Default
{
//$Title Health Tetrahedron
//$Group Health
//$Sprite graphics/HUD/Icons/I_HealthTetra.png
//$Icon health
Tag "$T_TETRAHEALTH";
Stamina 2000;
Inventory.Icon "graphics/HUD/Icons/I_HealthTetra.png";
Inventory.PickupMessage "$T_TETRAHEALTH";
Inventory.MaxAmount 15;
Inventory.InterHubAmount 15;
SWWMHealth.GiveHealth "TetraHealth";
Radius 8;
Height 24;
}
States
{
Spawn:
XZW1 # -1;
Stop;
}
}
Class CubeHealthItem : SWWMHealth
{
override Inventory CreateCopy( Actor other )
{
// additional lore
SWWMLoreLibrary.Add(other.player,"HealthGeom");
return Super.CreateCopy(other);
}
Default
{
//$Title Health Cube
//$Group Health
//$Sprite graphics/HUD/Icons/I_HealthCube.png
//$Icon health
Tag "$T_CUBEHEALTH";
Stamina 4000;
Inventory.Icon "graphics/HUD/Icons/I_HealthCube.png";
Inventory.PickupMessage "$T_CUBEHEALTH";
Inventory.MaxAmount 10;
Inventory.InterHubAmount 10;
SWWMHealth.GiveHealth "CubeHealth";
Radius 8;
Height 24;
}
States
{
Spawn:
XZW1 # -1;
Stop;
}
}
Class RefresherItem : SWWMHealth
{
override Inventory CreateCopy( Actor other )
{
// additional lore
SWWMLoreLibrary.Add(other.player,"Refresher");
return Super.CreateCopy(other);
}
override void AutoUseExtra( bool recursive )
{
SWWMUtility.AchievementProgressInc("refresh",1,Owner.player);
// regen effect doesn't stack if we autoactivated recursively
if ( recursive ) return;
let p = Powerup(Owner.FindInventory("RefresherRegen"));
if ( p ) p.EffectTics += p.default.EffectTics;
else Owner.GiveInventory("RefresherRegen",1);
SWWMHandler.DoFlash(Owner,Color(80,224,128,255),20);
if ( Owner is 'Demolitionist' )
Demolitionist(Owner).lastbump *= 0.95;
}
override bool Use( bool pickup )
{
// never get auto-used on pickup unless we're in deathmatch
if ( pickup && !deathmatch ) return false;
return Super.Use(pickup);
}
Default
{
//$Title Refresher
//$Group Health
//$Sprite graphics/HUD/Icons/I_Refresher.png
//$Icon health
Tag "$T_REFRESHER";
Stamina 160000;
Inventory.Icon "graphics/HUD/Icons/I_Refresher.png";
Inventory.PickupMessage "$T_REFRESHER";
Inventory.PickupSound "misc/p_pkup";
Inventory.UseSound "powerup/refresheruse";
SWWMHealth.GiveHealth "RefresherHealth";
+COUNTITEM;
+INVENTORY.BIGPOWERUP;
+INVENTORY.ALWAYSPICKUP;
Radius 6;
Height 24;
}
States
{
Spawn:
XZW1 # -1;
Stop;
}
}