128 lines
2.9 KiB
Plaintext
128 lines
2.9 KiB
Plaintext
|
||
function sq_AddFunctionName(appendage)
|
||
{
|
||
appendage.sq_AddFunctionName("proc", "proc_appendage_IceCrash")
|
||
appendage.sq_AddFunctionName("onStart", "onStart_appendage_IceCrash")
|
||
appendage.sq_AddFunctionName("onEnd", "onEnd_appendage_IceCrash")
|
||
}
|
||
|
||
function sq_AddEffect(appendage)
|
||
{
|
||
}
|
||
|
||
|
||
|
||
function proc_appendage_IceCrash(appendage)
|
||
{
|
||
if(!appendage) {
|
||
return;
|
||
}
|
||
|
||
local parentObj = appendage.getParent();
|
||
local sourceObj = appendage.getSource();
|
||
|
||
if(!sourceObj || !parentObj) {
|
||
appendage.setValid(false);
|
||
return;
|
||
}
|
||
|
||
local x = sq_GetDistancePos(sourceObj.getXPos(), sourceObj.getDirection(), 155);
|
||
local t = sq_GetShuttleValue(0, 10,sq_GetObjectTime(parentObj),50)-5;
|
||
x = x + (t >= 0 ? 3 : -3);
|
||
local z = sourceObj.getZPos() + 50 - parentObj.getObjectHeight()/2;
|
||
|
||
if(z < 0)
|
||
z = 0;
|
||
sq_SetCurrentPos(parentObj, x, sourceObj.getYPos()-1,z);
|
||
}
|
||
|
||
|
||
|
||
function onStart_appendage_IceCrash(appendage)
|
||
{
|
||
if(!appendage) {
|
||
return;
|
||
}
|
||
|
||
local parentObj = appendage.getParent();
|
||
local sourceObj = appendage.getSource();
|
||
|
||
if(!sourceObj || !parentObj) {
|
||
appendage.setValid(false);
|
||
return;
|
||
}
|
||
}
|
||
|
||
|
||
|
||
function onEnd_appendage_IceCrash(appendage)
|
||
{
|
||
if(!appendage) {
|
||
return;
|
||
}
|
||
|
||
local obj = appendage.getParent();
|
||
local sourceObj = appendage.getSource();
|
||
if(obj && sq_IsMyControlObject(obj) ) {
|
||
local xPos = obj.getXPos();
|
||
local yPos = obj.getYPos();
|
||
|
||
// 霜摹鼻 桧翕 陛栋? 谢?蒂 琼朝棻
|
||
if (moveDamagerLinerMovablepos(obj, sourceObj.getDirection(), 50) == false)
|
||
{
|
||
// 霜摹鼻 陛栋? 谢?蒂 跤琼擎 唳办 卫瞪濠暧 嫔纂陛 姜鼻瞳樯 唳办 卫瞪濠暧 嫔纂煎 桧翕
|
||
if (obj.isMovablePos(sourceObj.getXPos(), sourceObj.getYPos()) == true)
|
||
{
|
||
sq_SetCurrentPos(obj, sourceObj.getXPos(), sourceObj.getYPos(), obj.getZPos());
|
||
}
|
||
// 卫瞪濠暧 嫔纂紫 桧鼻? 唳办 舆渗暧 瞳渡? 嫔纂 摹姜
|
||
else
|
||
{
|
||
sq_SimpleMoveToNearMovablePos(obj,200);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
function moveDamagerLinerMovablepos(damager, dir, movableRange)
|
||
{
|
||
local xPos = damager.getXPos();
|
||
local yPos = damager.getYPos();
|
||
local toXPos = xPos
|
||
|
||
if (dir == ENUM_DIRECTION_LEFT)
|
||
{
|
||
toXPos = xPos - movableRange;
|
||
}
|
||
else
|
||
{
|
||
toXPos = xPos + movableRange;
|
||
}
|
||
|
||
toXPos = damager.sq_findNearLinearMovableXPos(xPos, yPos, toXPos, yPos, 10);
|
||
if (damager.isMovablePos(toXPos, yPos) == true)
|
||
{
|
||
sq_SetCurrentPos(damager, toXPos, yPos, damager.getZPos());
|
||
return true;
|
||
}
|
||
else
|
||
{
|
||
if (dir == ENUM_DIRECTION_LEFT)
|
||
{
|
||
toXPos = xPos + movableRange;
|
||
}
|
||
else
|
||
{
|
||
toXPos = xPos - movableRange;
|
||
}
|
||
|
||
toXPos = damager.sq_findNearLinearMovableXPos(xPos, yPos, toXPos, yPos, 10);
|
||
if (damager.isMovablePos(toXPos, yPos) == true)
|
||
{
|
||
sq_SetCurrentPos(damager, toXPos, yPos, damager.getZPos());
|
||
return true;
|
||
}
|
||
}
|
||
|
||
return false;
|
||
} |