diff --git a/Classic/scripts/autoexec/MidairDetection.cs b/Classic/scripts/autoexec/MidairDetection.cs deleted file mode 100755 index eb4a7b1..0000000 --- a/Classic/scripts/autoexec/MidairDetection.cs +++ /dev/null @@ -1,151 +0,0 @@ -// MidAir Detection Replacement -// For CTF, LCTF, DM -// Script By: DarkTiger -// v1.0 -// -$MADR::Minimum = 10; - -//Replacing Classic Midair Hit Detection -// -//function ProjectileData::onCollision(%data, %projectile, %targetObject, %modifier, %position, %normal) -//{ -// if(!isObject(%targetObject) && !isObject(%projectile.sourceObject)) -// return; -// if(!(%targetObject.getType() & ($TypeMasks::StaticTSObjectType | $TypeMasks::InteriorObjectType | -// $TypeMasks::TerrainObjectType | $TypeMasks::WaterObjectType))) -// { -// if(%projectile.sourceObject.team !$= %targetObject.team) -// { -// if(%targetObject.getDataBlock().getClassName() $= "PlayerData" && %data.getName() $= "DiscProjectile") -// { -// %mask = $TypeMasks::StaticShapeObjectType | $TypeMasks::InteriorObjectType | $TypeMasks::TerrainObjectType; -// %start = %targetObject.getWorldBoxCenter(); -// %distance = mFloor(VectorDist(%start, %projectile.initialPosition)); -// %end = getWord(%start, 0) SPC getWord(%start, 1) SPC getWord(%start, 2) - 15; -// %grounded = ContainerRayCast(%start, %end, %mask, 0); -// if(!%grounded) -// { -// %projectile.sourceObject.client.scoreMidAir++; -// messageClient(%projectile.sourceObject.client, 'MsgMidAir', '\c0You received a %1 point bonus for a successful mid air shot.~wfx/misc/bounty_bonus.wav', Game.SCORE_PER_MIDAIR, %data.radiusDamageType, %distance); -// messageTeamExcept(%projectile.sourceObject.client, 'MsgMidAir', '\c5%1 hit a mid air shot.', %projectile.sourceObject.client.name, %data.radiusDamageType, %distance); -// Game.recalcScore(%projectile.sourceObject.client); -// } -// } -// } -// Parent::onCollision(%data, %projectile, %targetObject, %modifier, %position, %normal); -// } -//} - -package midAirMsg -{ - -function detonateGrenade(%obj) // from lakRabbitGame.cs for grenade tracking -{ - %obj.maNade = 1; - $maObjExplode = %obj; - parent::detonateGrenade(%obj); -} - -function ProjectileData::onExplode(%data, %proj, %pos, %mod) -{ - %cl = %proj.sourceObject.client; - - if(isObject(%cl)) - %cl.expData = %data TAB %proj.initialPosition TAB %pos; - - parent::onExplode(%data, %proj, %pos, %mod); -} - -function DefaultGame::onClientDamaged(%game, %clVictim, %clAttacker, %damageType, %implement, %damageLoc) -{ - if(%game.class $= "CTFGame" || %game.class $= "DMGame" || %game.class $= "SCtFGame") // did it this way so dont have to copy paste 3 fucntions - { - if(isObject(%clVictim.player) && isObject(%clAttacker.player)) - { - if(%clVictim != %clAttacker && %clVictim.team != %clAttacker.team) - { - %dist = vectorDist(%clAttacker.player.getPosition(), %clVictim.player.getPosition()); - switch$(%damageType) - { - //case $DamageType::Blaster: - //if(maRayTestDis(%clVictim.player) >= $MADR::Minimum) - //maMessage(%clAttacker,"Blaster",%dist); - case $DamageType::Plasma: - if(maRayTestDis(%clVictim.player) >= $MADR::Minimum && maDirect(%clAttacker)) - maMessage(%clAttacker,"Plasma Rifle",%dist); - case $DamageType::Disc: - if(maRayTestDis(%clVictim.player) >= $MADR::Minimum && maDirect(%clAttacker)) - maMessage(%clAttacker,"Spinfusor",%dist); - case $DamageType::Grenade: - if($dtObjExplode.dtNade) - {//for hand genades method out of lakRabbit - //if(maRayTestDis(%clVictim.player) >= $MADR::Minimum) - //maMessage(%clAttacker,"Hand Grenade",%dist); - } - else //Grenade Launcher - { - if(maRayTestDis(%clVictim.player) >= $MADR::Minimum && maDirect(%clAttacker)) - maMessage(%clAttacker,"Grenade Launcher",%dist); - } - //case $DamageType::Laser: - //if(maRayTestDis(%clVictim.player) >= $MADR::Minimum) - //maMessage(%clAttacker,"Laser Rifle",%dist); - case $DamageType::Mortar: - if(maRayTestDis(%clVictim.player) >= $MADR::Minimum && maDirect(%clAttacker)) - maMessage(%clAttacker,"Fusion Mortar",%dist); - //case $DamageType::ShockLance: - //if(maRayTestDis(%clVictim.player) >= $MADR::Minimum) - //maMessage(%clAttacker,"ShockLance",%dist); - //case $DamageType::Mine: - //if(maRayTestDis(%clVictim.player) >= $MADR::Minimum) - //maMessage(%clAttacker,"Mine",%dist); - } - } - } - } - - parent::onClientDamaged(%game, %clVictim, %clAttacker, %damageType, %implement, %damageLoc); -} - -}; - -// Prevent package from being activated if it is already -if(!isActivePackage(midAirMsg)) - activatePackage(midAirMsg); - -function maDirect(%client)// tests for direct hit with aoe weapons -{ - %field = %client.expData; - %data = getField(%field,0); %sPos = getField(%field,1); %ePos = getField(%field,2); - - if(%data.hasDamageRadius) - { - %mask = $TypeMasks::PlayerObjectType; - %vec = vectorNormalize(vectorSub(%ePos,%sPos)); - %ray = containerRayCast(%ePos, VectorAdd(%ePos, VectorScale(VectorNormalize(%vec), 5)), %mask, -1); - if(%ray) - return 1; - } - return 0; -} - -function maRayTestDis(%targetObject)// tests for height of target -{ - %mask = $TypeMasks::StaticShapeObjectType | $TypeMasks::InteriorObjectType | $TypeMasks::TerrainObjectType | $TypeMasks::ForceFieldObjectType | $TypeMasks::VehicleObjectType; - %rayStart = %targetObject.getWorldBoxCenter(); - %rayEnd = VectorAdd(%rayStart,"0 0" SPC -5000); - %ray = ContainerRayCast(%rayStart, %rayEnd, %mask, %targetObject); - - if(%ray) - return vectorDist(%rayStart,getWords(%ray,1,3)) - 1.15; - - return 0; -} - -function maMessage(%client,%porjName,%distance)// Send message -{ - %client.scoreMidAir++; - messageClient(%client, 'MsgMidAir', '\c0You received a %1 point bonus for a successful mid air shot. [%2m, %3]~wfx/misc/bounty_bonus.wav', Game.SCORE_PER_MIDAIR, mFloor(%distance), %porjName); - messageTeamExcept(%client, 'MsgMidAir', '\c5%1 hit a mid air shot. [%2m, %3]', %client.name, mFloor(%distance), %porjName); - Game.recalcScore(%client); -}