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