// 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)); } }