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; }