TWM2/scripts/weapons/Equipment/C4.cs
2014-02-26 13:54:04 -06:00

67 lines
1.7 KiB
C#

datablock ItemData(C4Deployed) {
shapeFile = "pack_upgrade_satchel.dts";
explosion = SatchelMainExplosion;
underwaterExplosion = UnderwaterSatchelMainExplosion;
mass = 1;
elasticity = 0.1;
friction = 0.9;
rotate = false;
pickupRadius = 0;
noTimeout = true;
maxDamage = 0.6;
kickBackStrength = 4000;
computeCRC = true;
};
datablock ItemData(C4) {
className = HandInventory;
catagory = "Handheld";
shapeFile = "ammo_mine.dts";
mass = 1;
elasticity = 0.2;
friction = 0.7;
pickupRadius = 2;
thrownItem = C4Deployed;
pickUpName = "some C4 Explosives";
computeCRC = true;
};
function C4GoBoom(%C4) {
%C4.setDamageState(Destroyed);
}
function C4Deployed::onThrow(%this, %mine, %thrower) {
if($TWM2::PlayingSabo) {
MessageClient(%thrower.client, 'MsgC4IsBanned', "\c5C4 Mines are banned in this game mode");
%mine.delete();
return;
}
%mine.armed = false;
%mine.damaged = 0;
%mine.detonated = false;
%mine.depCount = 0;
%mine.theClient = %thrower.client;
%time = 10;
if(%thrower.client.IsActivePerk("3 Second C4")) {
%time = 3;
}
schedule(%time * 1000, 0, "C4GoBoom", %mine);
MessageClient(%thrower.client, 'MsgBoom', "\c5C4 Deployed, "@%time@" Seconds to Detonate.");
}
function C4Deployed::onDestroyed(%data, %obj, %lastState) {
%dmgRadius = 20 * $SatchelChargeMultiplier;
%dmgMod = 1.0 * $SatchelChargeMultiplier;
%expImpulse = limitSatchelImpulse(2500 * $SatchelChargeMultiplier);
%dmgType = $DamageType::SatchelCharge;
if(!%obj.isFalse) {
RadiusExplosion(%obj, %obj.getPosition(), %dmgRadius, %dmgMod, %expImpulse, %obj.sourceObject, %dmgType);
}
%obj.schedule(500, "Delete");
}