flak_m/zscript/armoritems.zsc
Marisa Kirisame 569ef037ec Added lesser variants to shock core and biorifle ammo for balance.
Added "dropped ammo" properties to all weapons, also for balance.
Silence warnings about floating point truncation.
2018-06-13 13:24:57 +02:00

150 lines
3.1 KiB
Text

Class UTArmor : Armor
{
int absorb;
Property ArmorAbsorption : absorb;
Default
{
+INVENTORY.AUTOACTIVATE;
+INVENTORY.UNTOSSABLE;
+INVENTORY.KEEPDEPLETED;
}
override void AbsorbDamage( int damage, Name damageType, out int newdamage )
{
int saved;
if ( (amount > 0) && !DamageTypeDefinition.IgnoreArmor(damageType) )
{
saved = int(damage*absorb/100.);
if ( amount <= saved ) saved = amount;
newdamage -= saved;
amount -= saved;
damage = newdamage;
}
if ( damage > 0 ) newdamage = ApplyDamageFactors(GetClass(),damageType,damage,damage);
}
}
Class UTArmorBonus : UTArmor replaces ArmorBonus
{
override void AbsorbDamage( int damage, Name damageType, out int newdamage )
{
absorb = Clamp(amount*2,25,75);
Super.AbsorbDamage(damage,damageType,newdamage);
}
Default
{
Tag "Armor Bonus";
+COUNTITEM;
+INVENTORY.ALWAYSPICKUP;
Inventory.Amount 1;
Inventory.MaxAmount 50;
Inventory.InterHubAmount 50;
UTArmor.ArmorAbsorption 25;
Inventory.PickupMessage "You picked up an Armor Bonus.";
Inventory.PickupSound "misc/ut_shard";
Radius 4;
Height 12;
}
States
{
Spawn:
XANH A -1;
Stop;
}
}
Class UTThighPads : UTArmor replaces GreenArmor
{
Default
{
Tag "Thigh Pads";
Inventory.Amount 50;
Inventory.MaxAmount 50;
Inventory.InterHubAmount 50;
UTArmor.ArmorAbsorption 50;
Inventory.PickupMessage "You got the Thigh Pads.";
Inventory.PickupSound "misc/ut_armor";
}
States
{
Spawn:
THIG A -1;
Stop;
}
}
Class UTBodyArmor : UTArmor replaces BlueArmor
{
Default
{
Tag "Body Armor";
Inventory.Amount 100;
Inventory.MaxAmount 100;
Inventory.InterHubAmount 100;
UTArmor.ArmorAbsorption 75;
Inventory.PickupMessage "You got the Body Armor.";
Inventory.PickupSound "misc/ut_armor";
}
States
{
Spawn:
UARM A -1;
Stop;
}
}
Class UTShieldBelt : UTArmor replaces Megasphere
{
override void AbsorbDamage( int damage, Name damageType, out int newdamage )
{
if ( (amount > 0) && !DamageTypeDefinition.IgnoreArmor(damageType) )
{
Owner.A_PlaySound("belt/absorb",CHAN_7);
UTMainHandler.DoFlash(Owner,Color(80,255,224,0),5);
}
int oldamt = amount;
Super.AbsorbDamage(damage,damageType,newdamage);
if ( (oldamt > 0) && (amount <= 0) ) PrintPickupMessage(true,"The Shield Belt has depleted.");
}
override bool Use( bool pickup )
{
// removes thigh pads and body armor like in UT
Owner.TakeInventory("UTThighPads",50);
Owner.TakeInventory("UTBodyArmor",150);
return false;
}
override bool HandlePickup( Inventory item )
{
if ( (item is 'UTThighPads') || (item is 'UTBodyArmor') )
{
if ( amount < maxamount )
{
DepleteOrDestroy();
return Super.HandlePickup(item);
}
else return true;
}
return Super.HandlePickup(item);
}
Default
{
Tag "Shield Belt";
+COUNTITEM;
+INVENTORY.BIGPOWERUP;
Inventory.Amount 150;
Inventory.MaxAmount 150;
Inventory.InterHubAmount 150;
UTArmor.ArmorAbsorption 100;
Inventory.PickupMessage "You got the Shield Belt.";
Inventory.PickupSound "belt/pickup";
Inventory.RespawnTics 2100;
}
States
{
Spawn:
BELT A -1;
Stop;
}
}