T2-ACCM/Scripts/SpecOpsFeatures.cs
2013-02-01 15:45:22 -05:00

77 lines
2.4 KiB
C#

$NightVisionValue = 0.2;
function NightVisionLoop(%client){
if(!isObject(%client.player))
return;
%client.player.setWhiteOut($NightVisionValue);
%client.player.nightvision = schedule(50, 0, "NightVisionLoop", %client);
}
function serverCmdDoGrab(%client){
%obj = %client.player;
if(!isObject(%obj))
return;
if(%obj.grabbing != 1){
%pos = %obj.getMuzzlePoint($WeaponSlot);
%vec = %obj.getMuzzleVector($WeaponSlot);
%targetpos = vectoradd(%pos,vectorscale(%vec,5));
%Tobj = containerraycast(%pos, %targetpos, $typemasks::PlayerObjectType | $typemasks::CorpseObjectType, %obj);
%Tobj = getword(%Tobj,0);
if(%Tobj.client.team == %client.team && !$TeamDamage)
return; // Can't pickup teammates now.
if(isObject(%Tobj)){
if(vectorDist(%obj.getForwardVector(),%Tobj.getForwardVector()) > 1.6)
return;
%armortype = %obj.getdatablock().getname();
if(!(%armortype $= "SpecOpsMaleHumanArmor" || %armortype $= "SpecOpsFemaleHumanArmor" || %armortype $= "SpecOpsMaleBiodermArmor"))
return;
if(%Tobj.grabbing == 1)
%Tobj.grabbing = 0;
if(%Tobj.grabbed == 1)
return;
%dataBlock = %Tobj.getDataBlock();
%mass = %dataBlock.mass;
if(%mass >= 150){
return;
}
%Tobj.grabbed = 1;
%Tobj.setMoveState(true);
%obj.grabbing = 1;
schedule(100, 0, "GrabLoop", %obj, %Tobj);
}
}
else
%obj.grabbing = 0;
}
function GrabLoop(%obj, %Tobj){
if(!(isObject(%obj) && isObject(%Tobj)))
return;
if(%obj.getstate() $= "dead"){
%Tobj.setMoveState(false);
%Tobj.grabbed = 0;
return;
}
if(%obj.grabbing != 1){
%Tobj.setMoveState(false);
%Tobj.grabbed = 1;
if(%Tobj.getState() !$= "Dead")
%Tobj.getDataBlock().damageObject(%Tobj, %obj, %Tobj.getPosition(), 10, $DamageType::blah, "0 0 1", %obj.getControllingClient(), %obj);
return;
}
if(%Tobj.getMountedImage($weaponslot) !$= "")
%Tobj.throwWeapon();
if(%Tobj.getMountedImage($Backpackslot) !$= "")
%Tobj.throwPack();
if(%obj.getMountedImage($weaponslot) !$= "")
%obj.unmountImage($weaponslot);
%pos = %obj.getPosition();
%rot = %obj.getRotation();
%vel = vectoradd(%obj.getvelocity(), "0 0 1");
%vec = vectorScale(%obj.getForwardVector(),3);
%vec = vectorAdd(%vec, "0 0 0.5");
%Tobj.setTransform(vectorAdd(%pos, %vec)@" "@%rot);
%Tobj.setvelocity(%vel);
schedule(100, 0, "GrabLoop", %obj, %Tobj);
}