mirror of
https://github.com/Ragora/T2-ACCM.git
synced 2026-01-19 19:04:46 +00:00
107 lines
2.5 KiB
C#
107 lines
2.5 KiB
C#
$S17moveforce = 500;
|
|
|
|
function S17Think(%obj){
|
|
if(!isObject(%obj))
|
|
return;
|
|
if(%obj.task !$= ""){
|
|
%task = %obj.task;
|
|
%fun = "S17"@%task;
|
|
%obj.mode = %task;
|
|
cancel(%obj.loop);cancel(%obj.loop);cancel(%obj.loop);
|
|
if(%obj.specvar[%task] !$= "")
|
|
%obj.loop = schedule(10, 0, %fun, %obj, %obj.specvar[%task]);
|
|
else
|
|
%obj.loop = schedule(10, 0, %fun, %obj);
|
|
}
|
|
}
|
|
|
|
function S17GUARD(%obj,%pos){
|
|
if(!isObject(%obj))
|
|
return;
|
|
%obj.mode = "MOVE";
|
|
S17MOVE(%obj,%pos);
|
|
}
|
|
|
|
function S17MOVE(%obj,%pos){
|
|
if(!isObject(%obj))
|
|
return;
|
|
if(%obj.mode !$= "MOVE")
|
|
return;
|
|
|
|
%objpos = %obj.getPosition();
|
|
%dist = vectorDist(%pos,%objpos);
|
|
if(%dist > 10){
|
|
%vec = vectorNormalize(vectorSub(%pos,%objpos));
|
|
%vec = vectorScale(%vec,$S17moveforce);
|
|
%obj.applyImpulse(%objpos,%vec);
|
|
}
|
|
else
|
|
return;
|
|
%obj.loop = schedule(100, 0, "S17MOVE",%obj,%pos);
|
|
}
|
|
|
|
function S17ATTACK(%obj,%target){
|
|
if(!isObject(%obj))
|
|
return;
|
|
if(!isObject(%target)){
|
|
%obj.val = "";
|
|
return;
|
|
}
|
|
if(%obj.mode !$= "ATTACK"){
|
|
%obj.val = "";
|
|
return;
|
|
}
|
|
|
|
%objpos = %obj.getPosition();
|
|
%trgpos = %target.getPosition();
|
|
%dist = vectorDist(%trgpos,%objpos);
|
|
if(%dist > 100){
|
|
%vec = vectorNormalize(vectorSub(%pos,%objpos));
|
|
%vec = vectorScale(%vec,$S17moveforce);
|
|
%obj.applyImpulse(%objpos,%vec);
|
|
}
|
|
else {
|
|
%vec = vectorSub(%trgpos,%objpos);
|
|
%random = getRandom(1,2);
|
|
if(%obj.val $= ""){
|
|
if(%random == 1)
|
|
%obj.val = "0 0 -1";
|
|
else
|
|
%obj.val = "0 0 1";
|
|
}
|
|
%vec = vectorNormalize(vectorCross(%vec,%val));
|
|
%vec = vectorScale(%vec,$S17moveforce);
|
|
%obj.applyImpulse(%objpos,%vec);
|
|
}
|
|
%obj.loop = schedule(100, 0, "S17ATTACK",%obj,%target);
|
|
}
|
|
|
|
function S17REARM(%obj,%target){
|
|
if(!isObject(%obj))
|
|
return;
|
|
if(!isObject(%target)){
|
|
%target.setRepairRate(0);
|
|
return;
|
|
}
|
|
if(%obj.mode !$= "REARM"){
|
|
%target.setRepairRate(0);
|
|
return;
|
|
}
|
|
|
|
%objpos = %obj.getPosition();
|
|
%trgpos = %target.getPosition();
|
|
%dist = vectorDist(%trgpos,%objpos);
|
|
%DamageLevel = %targetObject.getDamageLevel();
|
|
if(%dist > 6){
|
|
%vec = vectorNormalize(vectorCross(%vec,%val));
|
|
%vec = vectorScale(%vec,$S17moveforce);
|
|
%obj.applyImpulse(%objpos,%vec);
|
|
}
|
|
else if(%DamageLevel > 0)
|
|
%obj.setRepairRate(0.01);
|
|
else {
|
|
%obj.setRepairRate(0);
|
|
return;
|
|
}
|
|
%obj.loop = schedule(100, 0, "S17ATTACK",%obj,%target);
|
|
} |