swwmgz_m/zscript/swwm_armor.zsc
Marisa Kirisame e0821adbe2 Begin working on custom intermission.
Tweaks to player voice handling, line counts are language strings now, instead of the old awkward method of counting them manually.
Some adjustments to movement, jump/croush to move up/down when swimming and flying.
Increased damages of Pusher, for balance.
Fixed incorrect behaviour of armor damage absorption, which made the armor nuggets pretty much useless.
Fix incorrect absorption factor of armor nuggets, making them heal at >10% instead of >100%.
2020-03-08 11:47:20 +01:00

146 lines
3.2 KiB
Text

// All the armor items go here
Class ArmorNugget : SWWMArmor
{
Default
{
Inventory.Icon "graphics/HUD/Icons/I_ArmorNugget.png";
Inventory.Amount 5;
Inventory.MaxAmount 200;
Inventory.InterHubAmount 200;
SWWMArmor.ArmorPriority 10;
SWWMArmor.GiverArmor "ArmorNuggetItem";
}
override int HandleDamage( int damage, Name damageType, int flags )
{
double factor = amount*.01;
return int(ceil(damage*factor));
}
}
Class ArmorNuggetItem : SWWMSpareArmor
{
override Inventory CreateCopy( Actor other )
{
// additional lore
SWWMLoreLibrary.Add(other.player,"Nugget");
return Super.CreateCopy(other);
}
Default
{
Tag "$T_NUGGETA";
Stamina 1000;
Inventory.Icon "graphics/HUD/Icons/I_ArmorNugget.png";
Inventory.PickupMessage "$T_NUGGETA";
Inventory.MaxAmount 100;
Inventory.InterHubAmount 100;
Inventory.UseSound "misc/armor_pkup";
SWWMSpareArmor.GiveArmor "ArmorNugget";
+INVENTORY.ALWAYSPICKUP;
+COUNTITEM;
}
States
{
Spawn:
XZW1 # -1 NoDelay
{
frame = Random[Nugget](0,7);
}
Stop;
Dummy:
XZW1 ABCDEFGH -1;
Stop;
}
}
Class BlastSuit : SWWMArmor
{
Default
{
Inventory.Icon "graphics/HUD/Icons/I_BlastSuit.png";
Inventory.Amount 150;
Inventory.MaxAmount 150;
Inventory.InterHubAmount 150;
SWWMArmor.ArmorPriority 2;
SWWMArmor.DrainMessage "$D_BLASTSUIT";
SWWMArmor.GiverArmor "BlastSuitItem";
}
override int HandleDamage( int damage, Name damageType, int flags )
{
double factor = .3;
if ( flags&DMG_EXPLOSION ) factor = 1.-(1.-factor)*.5;
return int(ceil(damage*factor));
}
}
Class BlastSuitItem : SWWMSpareArmor
{
override Inventory CreateCopy( Actor other )
{
// additional lore
SWWMLoreLibrary.Add(other.player,"BlastSuit");
return Super.CreateCopy(other);
}
Default
{
Tag "$T_BLASTSUIT";
Stamina 40000;
Inventory.Icon "graphics/HUD/Icons/I_BlastSuit.png";
Inventory.PickupMessage "$T_BLASTSUIT";
Inventory.UseSound "armor/blastsuit";
SWWMSpareArmor.GiveArmor "BlastSuit";
}
States
{
Spawn:
XZW1 A -1;
Stop;
}
}
Class WarArmor : SWWMArmor
{
Default
{
Inventory.Icon "graphics/HUD/Icons/I_WarArmor.png";
Inventory.Amount 250;
Inventory.MaxAmount 250;
Inventory.InterHubAmount 250;
SWWMArmor.ArmorPriority 6;
SWWMArmor.DrainMessage "$D_WARARMOR";
SWWMArmor.GiverArmor "WarArmorItem";
}
override int HandleDamage( int damage, Name damageType, int flags )
{
double factor;
// should be enough "elemental" damage types I guess
if ( (damageType == 'Fire') || (damageType == 'Ice') || (damageType == 'Slime') || (damageType == 'Lightning') || (damageType == 'Wind') || (damageType == 'Water') ) factor = .8;
else factor = .5;
if ( flags&DMG_EXPLOSION ) factor = 1.-(1.-factor)*.7;
return int(ceil(damage*factor));
}
}
Class WarArmorItem : SWWMSpareArmor
{
override Inventory CreateCopy( Actor other )
{
// additional lore
SWWMLoreLibrary.Add(other.player,"WarArmor");
return Super.CreateCopy(other);
}
Default
{
Tag "$T_WARARMOR";
Stamina 100000;
Inventory.Icon "graphics/HUD/Icons/I_WarArmor.png";
Inventory.PickupMessage "$T_WARARMOR";
Inventory.UseSound "armor/wararmor";
SWWMSpareArmor.GiveArmor "WarArmor";
}
States
{
Spawn:
XZW1 A -1;
Stop;
}
}