118 lines
3.1 KiB
Text
118 lines
3.1 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 3;
|
|
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 bool Use( bool pickup )
|
|
{
|
|
// additional lore
|
|
SWWMLoreLibrary.Add(Owner.player,"Nugget");
|
|
bool bUsed = Super.Use(pickup);
|
|
// sell excess
|
|
if ( !bUsed && Owner.player )
|
|
{
|
|
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(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
|
|
{
|
|
Tag "$T_NUGGETA";
|
|
Stamina -1200;
|
|
Inventory.PickupMessage "$T_NUGGETA";
|
|
Inventory.MaxAmount 0;
|
|
Inventory.InterHubAmount 0;
|
|
Inventory.UseSound "misc/armor_pkup";
|
|
SWWMSpareArmor.GiveArmor "ArmorNugget";
|
|
+INVENTORY.ALWAYSPICKUP;
|
|
}
|
|
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;
|
|
Inventory.RestrictedTo "Demolitionist";
|
|
SWWMArmor.ArmorPriority 4;
|
|
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 WarArmor : SWWMArmor
|
|
{
|
|
Default
|
|
{
|
|
Inventory.Icon "graphics/HUD/Icons/I_WarArmor.png";
|
|
Inventory.Amount 250;
|
|
Inventory.MaxAmount 250;
|
|
Inventory.InterHubAmount 250;
|
|
Inventory.RestrictedTo "Demolitionist";
|
|
SWWMArmor.ArmorPriority 5;
|
|
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 == 'Electric') || (damageType == 'Plasma') || (damageType == 'Radiation') || (damageType == 'Wind') || (damageType == 'Water') || (damageType == 'Corroded') || (damageType == 'Lava') ) factor = .8;
|
|
else factor = .5;
|
|
if ( flags&DMG_EXPLOSION ) factor = 1.-(1.-factor)*.7;
|
|
return int(ceil(damage*factor));
|
|
}
|
|
}
|