564 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			564 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | function setCustomData_po_ATIceManMagicCircle(obj, reciveData) | ||
|  | { | ||
|  | 	if(!obj) return; | ||
|  | 
 | ||
|  | 				//sq_BinaryWriteDword(freezeRate); //  | ||
|  | 				//sq_BinaryWriteDword(multiHitAttackRate); //  | ||
|  | 				//sq_BinaryWriteDword(smashAttackRate); //  | ||
|  | 				//sq_BinaryWriteDword(expPower); //  | ||
|  | 	local freezeRate = reciveData.readDword(); // | ||
|  | 	local multiHitAttackRate = reciveData.readDword(); // | ||
|  | 	local smashAttackRate = reciveData.readDword(); // | ||
|  | 	local expPower = reciveData.readDword(); // | ||
|  | 	 | ||
|  | 	obj.getVar("freezeRate").clear_vector(); //  | ||
|  | 	obj.getVar("freezeRate").push_vector(freezeRate); | ||
|  | 	 | ||
|  | 	obj.getVar("attack").clear_vector(); //  | ||
|  | 	obj.getVar("attack").push_vector(multiHitAttackRate); | ||
|  | 	obj.getVar("attack").push_vector(smashAttackRate); | ||
|  | 	obj.getVar("attack").push_vector(expPower); | ||
|  | 	 | ||
|  | 	 | ||
|  | 	obj.getVar("state").clear_vector(); // state vector | ||
|  | 	obj.getVar("state").push_vector(0); | ||
|  | 	 | ||
|  | 	obj.getVar("flag").clear_vector(); | ||
|  | 	obj.getVar("flag").push_vector(0); | ||
|  | 	obj.getVar("flag").push_vector(0); | ||
|  | 	obj.getVar("flag").push_vector(0); | ||
|  | 	obj.getVar("flag").push_vector(0); | ||
|  | 	obj.getVar("flag").push_vector(0); | ||
|  | 
 | ||
|  | 	obj.getVar("casting").clear_obj_vector(); | ||
|  | 
 | ||
|  | 	local pChr = obj.getTopCharacter(); | ||
|  | 	 | ||
|  | 	print(" pChr:" + pChr); | ||
|  | 	sq_SetCurrentDirection(obj, obj.getDirection()); | ||
|  | 	 | ||
|  | 	if(obj.isMyControlObject()) | ||
|  | 	{ | ||
|  | 		local pIntVec = sq_GetGlobalIntVector(); | ||
|  | 		 | ||
|  | 		sq_IntVectorClear(pIntVec); | ||
|  | 		sq_IntVectorPush(pIntVec, 0); | ||
|  | 		obj.addSetStatePacket(PASSIVEOBJ_SUB_STATE_0, pIntVec, STATE_PRIORITY_AUTO, false, ""); | ||
|  | 	} | ||
|  | } | ||
|  | 
 | ||
|  | function destroy_po_ATIceManMagicCircle(obj) | ||
|  | { | ||
|  | 	if(!obj) | ||
|  | 		return; | ||
|  | 		 | ||
|  | 	destroyObjectByVar(obj, "casting"); | ||
|  | 	destroyObject(obj); | ||
|  | 	 | ||
|  | 	 | ||
|  | } | ||
|  | 
 | ||
|  | 
 | ||
|  | function setState_po_ATIceManMagicCircle(obj, state, datas) | ||
|  | { | ||
|  | 	if(!obj) return; | ||
|  | 	 | ||
|  | 	local pChr = obj.getTopCharacter(); | ||
|  | 	 | ||
|  | 	local passiveState = state; | ||
|  | 	 | ||
|  | 	obj.getVar("state").set_vector(0, passiveState); | ||
|  | 
 | ||
|  | 	local x = sq_GetXPos(obj); | ||
|  | 	local y = sq_GetYPos(obj); | ||
|  | 	local z = sq_GetZPos(obj); | ||
|  | 
 | ||
|  | 	 | ||
|  | 	obj.getVar("state").clear_ct_vector(); | ||
|  | 	obj.getVar("state").push_ct_vector();	 | ||
|  | // 蟾晦?	 | ||
|  | 	local t = obj.getVar("state").get_ct_vector(0); | ||
|  | 	t.Reset(); | ||
|  | 	t.Start(10000,0); | ||
|  | 	 | ||
|  | 	 | ||
|  | 	local posX = obj.getXPos(); | ||
|  | 	local posY = obj.getYPos(); | ||
|  | 	local posZ = obj.getZPos(); | ||
|  | 		 | ||
|  | 	if(passiveState == PASSIVEOBJ_SUB_STATE_0) | ||
|  | 	{	 | ||
|  | 	} | ||
|  | 	else if(passiveState == PASSIVEOBJ_SUB_STATE_1) | ||
|  | 	{ | ||
|  | 		local ani = obj.getCustomAnimation(0); | ||
|  | 		obj.setCurrentAnimation(ani);		 | ||
|  | 		 | ||
|  | 		local pooledBackObj = createAnimationPooledObject(obj,  | ||
|  | 		"PassiveObject/Character/Mage/Animation/ATIceMan/01_casting/casting_base_back.ani", false,  | ||
|  | 		posX, posY - 1, 0); | ||
|  | 		 | ||
|  | 		local pooledFrontObj = createAnimationPooledObject(obj,  | ||
|  | 		"PassiveObject/Character/Mage/Animation/ATIceMan/01_casting/casting_base_front.ani", false,  | ||
|  | 		posX, posY + 2, 0); | ||
|  | 		 | ||
|  | 		obj.getVar("casting").push_obj_vector(pooledBackObj); | ||
|  | 		obj.getVar("casting").push_obj_vector(pooledFrontObj); | ||
|  | 		 | ||
|  | 
 | ||
|  | 		createAnimationPooledObject(obj,  | ||
|  | 		"PassiveObject/Character/Mage/Animation/ATIceMan/01_casting/02_roadappear_dodge_00.ani", true, | ||
|  | 		posX, posY + 2, 0); | ||
|  | 		 | ||
|  | 		createAnimationPooledObject(obj,  | ||
|  | 		"PassiveObject/Character/Mage/Animation/ATIceMan/01_casting/02_roadappear_dodge_f_00.ani", true,  | ||
|  | 		posX, posY - 1, 0); | ||
|  | 
 | ||
|  | 	} | ||
|  | 	else if(passiveState == PASSIVEOBJ_SUB_STATE_2) | ||
|  | 	{ | ||
|  | 		//pChr.setDirection( | ||
|  | 		local ani = obj.getCustomAnimation(1); | ||
|  | 		obj.setCurrentAnimation(ani);			 | ||
|  | 			 | ||
|  | 		 | ||
|  | 		local pooledFrontObj = createAnimationPooledObject(obj,  | ||
|  | 		"PassiveObject/Character/Mage/Animation/ATIceMan/02_pole/pole_base.ani", false, posX, posY, 0); | ||
|  | 		 | ||
|  | 		obj.getVar().push_obj_vector(pooledFrontObj); // index 2 | ||
|  | 		 | ||
|  | 		// 试虽 | ||
|  | 		createAnimationPooledObject(obj,  | ||
|  | 		"PassiveObject/Character/Mage/Animation/ATIceMan/02_pole/dust/19smoke_dodge_11.ani", true,  | ||
|  | 		posX, posY + 1, 0);		 | ||
|  | 		//	 | ||
|  | 	} | ||
|  | 	else if(passiveState == PASSIVEOBJ_SUB_STATE_3) | ||
|  | 	{ // 橡挤?惚 1 | ||
|  | 		local ani = obj.getCustomAnimation(2); | ||
|  | 		obj.setCurrentAnimation(ani); | ||
|  | 	 | ||
|  | 		local attackInfo = sq_GetCustomAttackInfo(obj, 0); | ||
|  | 		sq_SetCurrentAttackInfo(obj, attackInfo); | ||
|  | 		 | ||
|  | 		//////////////////////////////////////////////////////// | ||
|  | 		// 涧觼铮桧粽 跷陛 | ||
|  | 		local pooledObj = null; | ||
|  | 		 | ||
|  | 				 | ||
|  | 		pooledObj = sq_CreateDrawOnlyObject(obj,  | ||
|  | 		"PassiveObject/Character/Mage/Animation/ATIceMan/03_destroy/common/18_shockwave_dodge_0.ani",  | ||
|  | 		ENUM_DRAWLAYER_BOTTOM, true); | ||
|  | 		 | ||
|  | 		pooledObj.setCurrentPos(posX, posY, 0); | ||
|  | 		 | ||
|  | 		sq_AddObject(obj, pooledObj, OBJECTTYPE_DRAWONLY, false); | ||
|  | 		//////////////////////////////////////////////////////// | ||
|  | 	 | ||
|  | 
 | ||
|  | 		local pooledFrontObj = createAnimationPooledObject(obj,  | ||
|  | 		"PassiveObject/Character/Mage/Animation/ATIceMan/03_destroy/destroy_base_0.ani", false, posX, posY, 0); | ||
|  | 		 | ||
|  | 		destroyObject(obj); | ||
|  | 		 | ||
|  | 		obj.getVar().push_obj_vector(pooledFrontObj); | ||
|  | 		 | ||
|  | 		local particleCreater = obj.getVar().GetparticleCreaterMap("AtIceManD0", "PassiveObject/Character/Mage/Particle/ATIceManDestroy0.ptl", obj); | ||
|  | 			// | ||
|  | 		particleCreater.Restart(0); | ||
|  | 		particleCreater.SetPos(posX, posY + 5, posZ);	 | ||
|  | 		 | ||
|  | 		sq_AddParticleObject(obj, particleCreater); | ||
|  | 		 | ||
|  | 		 | ||
|  | 		createAnimationPooledObject(obj,  | ||
|  | 		"PassiveObject/Character/Mage/Animation/ATIceMan/03_destroy/02_broken/23_glow_dodge.ani", true,  | ||
|  | 		posX, posY + 1, 0); | ||
|  | 		 | ||
|  | 		local particle = obj.getVar().GetparticleCreaterMap("AtIceManD1", "PassiveObject/Character/Mage/Particle/ATIceManDestroy1.ptl", obj); | ||
|  | 			// | ||
|  | 		particle.Restart(0); | ||
|  | 		particle.SetPos(posX, posY + 5, 55);	 | ||
|  | 		 | ||
|  | 		sq_AddParticleObject(obj, particle); | ||
|  | 		 | ||
|  | 		local atk = sq_GetCurrentAttackInfo(obj); | ||
|  | 		local smashAttackRate = obj.getVar("attack").get_vector(1);		 | ||
|  | 		sq_SetCurrentAttackBonusRate(atk, smashAttackRate); | ||
|  | 
 | ||
|  | 		 | ||
|  | 		if(obj.isMyControlObject()) | ||
|  | 		{ | ||
|  | 			// ?贼?娄 | ||
|  | 			local fScreen = sq_flashScreen(obj,0,80,0,80, sq_RGB(255,255,255), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM); | ||
|  | 			sq_addFlashScreen(fScreen, 0, 400, 240, 150, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM); | ||
|  | 			//		 | ||
|  | 			 | ||
|  | 			sq_SetMyShake(obj,4,300); | ||
|  | 		} | ||
|  | 	} | ||
|  | 	else if(passiveState == PASSIVEOBJ_SUB_STATE_4) | ||
|  | 	{ // 橡挤?惚 2 | ||
|  | 		local pooledFrontObj = createAnimationPooledObject(obj,  | ||
|  | 		"PassiveObject/Character/Mage/Animation/ATIceMan/03_destroy/destroy_base_1.ani", false,  | ||
|  | 		posX, posY, 0); | ||
|  | 		 | ||
|  | 		destroyObject(obj); | ||
|  | 		 | ||
|  | 		obj.getVar().push_obj_vector(pooledFrontObj); | ||
|  | 		 | ||
|  | 		// 旋煎办		 | ||
|  | 		createAnimationPooledObject(obj,  | ||
|  | 		"PassiveObject/Character/Mage/Animation/ATIceMan/03_destroy/02_broken/23_glow_dodge.ani", true,  | ||
|  | 		posX, posY + 1, 0); | ||
|  | 		 | ||
|  | 		 | ||
|  | 		// 试虽 | ||
|  | 		createAnimationPooledObject(obj,  | ||
|  | 			"PassiveObject/Character/Mage/Animation/ATIceMan/03_destroy/02_broken/dust/19smoke_dodge_00.ani", true,  | ||
|  | 		posX, posY + 1, 0);		 | ||
|  | 		// | ||
|  | 		 | ||
|  | 		local ani = obj.getCustomAnimation(2); | ||
|  | 		obj.setCurrentAnimation(ani); | ||
|  | 		 | ||
|  | 		local atk = sq_GetCurrentAttackInfo(obj); | ||
|  | 		local smashAttackRate = obj.getVar("attack").get_vector(1);		 | ||
|  | 		sq_SetCurrentAttackBonusRate(atk, smashAttackRate); | ||
|  | 		 | ||
|  | 		 | ||
|  | 	} | ||
|  | 	else if(passiveState == PASSIVEOBJ_SUB_STATE_5) | ||
|  | 	{ // 橡挤?惚 3 | ||
|  | 		local ani = obj.getCustomAnimation(2); | ||
|  | 		obj.setCurrentAnimation(ani); | ||
|  | 	 | ||
|  | 		local attackInfo = sq_GetCustomAttackInfo(obj, 1); | ||
|  | 		 | ||
|  | 		sq_SetCurrentAttackInfo(obj, attackInfo); | ||
|  | 	 | ||
|  | 		local pooledFrontObj = createAnimationPooledObject(obj,  | ||
|  | 		"PassiveObject/Character/Mage/Animation/ATIceMan/03_destroy/destroy_base_2.ani", false,  | ||
|  | 		posX, posY, 0); | ||
|  | 		 | ||
|  | 		destroyObject(obj); | ||
|  | 		 | ||
|  | 		local frontObj = obj.getVar("casting").get_obj_vector(0); | ||
|  | 		local backObj = obj.getVar("casting").get_obj_vector(1); | ||
|  | 		 | ||
|  | 		if(frontObj) | ||
|  | 		{ | ||
|  | 			frontObj.setValid(false); | ||
|  | 		} | ||
|  | 		 | ||
|  | 		if(backObj) | ||
|  | 		{ | ||
|  | 			backObj.setValid(false); | ||
|  | 		} | ||
|  | 		 | ||
|  | 		obj.getVar("casting").remove_obj_vector(frontObj); | ||
|  | 		obj.getVar("casting").remove_obj_vector(backObj); | ||
|  | 		 | ||
|  | 		 | ||
|  | 		obj.getVar().push_obj_vector(pooledFrontObj); | ||
|  | 		 | ||
|  | 		// 旋煎办		 | ||
|  | 		createAnimationPooledObject(obj,  | ||
|  | 		"PassiveObject/Character/Mage/Animation/ATIceMan/03_destroy/02_broken/23_glow_dodge.ani", true,  | ||
|  | 		posX, posY + 1, 0); | ||
|  | 		 | ||
|  | 		local particleCreater = obj.getVar().GetparticleCreaterMap("AtIceManD2", "PassiveObject/Character/Mage/Particle/ATIceManDestroy2.ptl", obj); | ||
|  | 			// | ||
|  | 		particleCreater.Restart(0); | ||
|  | 		particleCreater.SetPos(posX, posY + 5, 55);	 | ||
|  | 		 | ||
|  | 		sq_AddParticleObject(obj, particleCreater); | ||
|  | 		 | ||
|  | 		// 试虽 | ||
|  | 		createAnimationPooledObject(obj,  | ||
|  | 		"PassiveObject/Character/Mage/Animation/ATIceMan/03_destroy/03_broken_02/dust/19smoke_dodge_00.ani", true,  | ||
|  | 		posX, posY + 1, 0);		 | ||
|  | 		// | ||
|  | 		if(obj.isMyControlObject()) | ||
|  | 		{ | ||
|  | 			sq_SetMyShake(obj,4,300); | ||
|  | 		} | ||
|  | 		 | ||
|  | 		local atk = sq_GetCurrentAttackInfo(obj); | ||
|  | 		local expPower = obj.getVar("attack").get_vector(2);		 | ||
|  | 		sq_SetCurrentAttackPower(atk, expPower); | ||
|  | 		 | ||
|  | 	} | ||
|  | 	else if(passiveState == PASSIVEOBJ_SUB_STATE_6) | ||
|  | 	{ // 葆彻霞饷薯 | ||
|  | 		print(" passiveState == PASSIVEOBJ_SUB_STATE_6"); | ||
|  | 		local ani = obj.getCustomAnimation(3); | ||
|  | 		obj.setCurrentAnimation(ani); | ||
|  | 		 | ||
|  | 		 | ||
|  | 	} | ||
|  | 	 | ||
|  | 	//local radiusRate = (radius100Rate.tofloat() / 100.0);	 | ||
|  | 	//local size = (sq_GetAniRealImageSize(currentAni, ENUM_DIRECTION_RIGHT) / 2) + 60;	 | ||
|  | } | ||
|  | 
 | ||
|  | function procAppend_po_ATIceManMagicCircle(obj) | ||
|  | { | ||
|  | 	if(!obj) return; | ||
|  | 	 | ||
|  | 	local pChr = obj.getTopCharacter(); | ||
|  | 	 | ||
|  | 	if(!pChr) | ||
|  | 	{ | ||
|  | 		if(obj.isMyControlObject()) | ||
|  | 		{ | ||
|  | 			sq_SendDestroyPacketPassiveObject(obj); | ||
|  | 			return; | ||
|  | 		} | ||
|  | 	} | ||
|  | 	 | ||
|  | 	local passiveState = obj.getVar("state").get_vector(0); | ||
|  | 	 | ||
|  | 	if(pChr.getState() != STATE_ICEMAN) | ||
|  | 	{ | ||
|  | 		if(passiveState <= PASSIVEOBJ_SUB_STATE_3) | ||
|  | 		{ | ||
|  | 			if(obj.isMyControlObject()) | ||
|  | 			{ | ||
|  | 				sq_SendDestroyPacketPassiveObject(obj); | ||
|  | 				return; | ||
|  | 			} | ||
|  | 		} | ||
|  | 	} | ||
|  | 	 | ||
|  | 	 | ||
|  | 	 | ||
|  | 	 | ||
|  | 	if(passiveState == PASSIVEOBJ_SUB_STATE_0) | ||
|  | 	{ | ||
|  | 	} | ||
|  | 	else if(passiveState == PASSIVEOBJ_SUB_STATE_1) | ||
|  | 	{ | ||
|  | 		local sendState = false; | ||
|  | 		local castingObj = obj.getVar("casting").get_obj_vector(0); | ||
|  | 		 | ||
|  | 		if(castingObj) | ||
|  | 		{ | ||
|  | 			local isEnd = sq_IsEnd(castingObj.getCurrentAnimation()); | ||
|  | 			 | ||
|  | 			if(isEnd) | ||
|  | 			{ | ||
|  | 				if(pChr.getState() == STATE_ICEMAN && pChr.getSkillSubState() >= SUB_STATE_ICEMAN_1) | ||
|  | 				{ | ||
|  | 					local frmIndex = sq_GetCurrentFrameIndex(pChr); | ||
|  | 					 | ||
|  | 					if(frmIndex > 1) | ||
|  | 					{ | ||
|  | 						//print(" pass"); | ||
|  | 						sendState = true; | ||
|  | 					} | ||
|  | 					 | ||
|  | 				} | ||
|  | 				// | ||
|  | 			} | ||
|  | 		} | ||
|  | 		else | ||
|  | 		{ | ||
|  | 			//print(" castingObj is null"); | ||
|  | 			sendState = true; | ||
|  | 		} | ||
|  | 		 | ||
|  | 		if(obj.isMyControlObject()) | ||
|  | 		{ | ||
|  | 			if(sendState) | ||
|  | 			{ | ||
|  | 				local pIntVec = sq_GetGlobalIntVector(); | ||
|  | 				sq_IntVectorClear(pIntVec); | ||
|  | 				sq_IntVectorPush(pIntVec, 0); | ||
|  | 
 | ||
|  | 				obj.addSetStatePacket(PASSIVEOBJ_SUB_STATE_2, pIntVec, STATE_PRIORITY_AUTO, false, ""); | ||
|  | 			} | ||
|  | 		} | ||
|  | 	} | ||
|  | 	else if(passiveState > PASSIVEOBJ_SUB_STATE_1 && passiveState < PASSIVEOBJ_SUB_STATE_6) | ||
|  | 	{ // 橡挤当撩,  橡挤?惚 | ||
|  | 		//PASSIVEOBJ_SUB_STATE_2	// 橡挤当撩 | ||
|  | 		//PASSIVEOBJ_SUB_STATE_3	// 橡挤?惚 - 梱虏?贼 | ||
|  | 		//PASSIVEOBJ_SUB_STATE_4	// 橡挤?惚 - ?惚1 | ||
|  | 		//PASSIVEOBJ_SUB_STATE_5	// 橡挤?惚 - ?惚2 | ||
|  | 		local sendState = false; | ||
|  | 		local castingObj = obj.getVar().get_obj_vector(0); | ||
|  | 
 | ||
|  | 		if(castingObj) | ||
|  | 		{ | ||
|  | 			local isEnd = sq_IsEnd(castingObj.getCurrentAnimation()); // index 2 | ||
|  | 			 | ||
|  | 			if(isEnd) | ||
|  | 			{ | ||
|  | 				if(passiveState == PASSIVEOBJ_SUB_STATE_2) | ||
|  | 				{ // 橡挤当撩桧 赅舒 部陬击 阳 | ||
|  | 					if(pChr.getState() == STATE_ICEMAN && pChr.getSkillSubState() >= SUB_STATE_ICEMAN_4) | ||
|  | 					{ | ||
|  | 						local frmIndex = sq_GetCurrentFrameIndex(pChr); | ||
|  | 						 | ||
|  | 						//print( " now:" + frmIndex); | ||
|  | 						 | ||
|  | 						if(frmIndex > 5) | ||
|  | 						{ | ||
|  | 							sendState = true; | ||
|  | 						} | ||
|  | 					} | ||
|  | 				} | ||
|  | 				else | ||
|  | 				{ | ||
|  | 					sendState = true; | ||
|  | 				} | ||
|  | 			} | ||
|  | 			else | ||
|  | 			{ // 拥栖诡桧暮桧 寰部陬击 阳 | ||
|  | 				if(passiveState == PASSIVEOBJ_SUB_STATE_2)				 | ||
|  | 				{ // 晦菅娄 跺桧 ?溯歜 翕晦? | ||
|  | 					if(pChr.getSkillSubState() == SUB_STATE_ICEMAN_3) | ||
|  | 					{ | ||
|  | 						local frmIndex = sq_GetCurrentFrameIndex(pChr); | ||
|  | 						 | ||
|  | 						if(frmIndex <= 18) | ||
|  | 						{ | ||
|  | 							local poleObj = obj.getVar().get_obj_vector(2); // index 2 | ||
|  | 							 | ||
|  | 							if(poleObj) | ||
|  | 							{ | ||
|  | 								local poleFrmIndex = sq_GetCurrentFrameIndex(poleObj); | ||
|  | 								 | ||
|  | 								if(poleFrmIndex != frmIndex) | ||
|  | 								{ | ||
|  | 									sq_SetAnimationFrameIndex(poleObj.getCurrentAnimation(), frmIndex); | ||
|  | 								} | ||
|  | 							} | ||
|  | 						} | ||
|  | 					} | ||
|  | 					else if(pChr.getState() == STATE_ICEMAN && pChr.getSkillSubState() >= SUB_STATE_ICEMAN_4) | ||
|  | 					{ | ||
|  | 						local frmIndex = sq_GetCurrentFrameIndex(pChr); | ||
|  | 						 | ||
|  | 						if(frmIndex > 5) | ||
|  | 							sendState = true; | ||
|  | 					} | ||
|  | 				} | ||
|  | 			} | ||
|  | 		} | ||
|  | 		else | ||
|  | 		{ | ||
|  | 			sendState = true; | ||
|  | 		} | ||
|  | 		 | ||
|  | 		if(obj.isMyControlObject()) | ||
|  | 		{ | ||
|  | 			if(sendState) | ||
|  | 			{ | ||
|  | 				local pIntVec = sq_GetGlobalIntVector(); | ||
|  | 				sq_IntVectorClear(pIntVec); | ||
|  | 				sq_IntVectorPush(pIntVec, 0); | ||
|  | 
 | ||
|  | 				obj.addSetStatePacket(passiveState + 1, pIntVec, STATE_PRIORITY_AUTO, false, ""); | ||
|  | 			} | ||
|  | 		} | ||
|  | 	} | ||
|  | 	 | ||
|  | } | ||
|  | 
 | ||
|  | function onChangeSkillEffect_po_ATIceManMagicCircle(obj, skillIndex, reciveData) | ||
|  | { | ||
|  | 
 | ||
|  | 	if(!obj) return; | ||
|  | 
 | ||
|  | } | ||
|  | 
 | ||
|  | function onDestroyObject_po_ATIceManMagicCircle(obj, object) | ||
|  | { | ||
|  | 
 | ||
|  | 	if(!obj) return; | ||
|  | 
 | ||
|  | } | ||
|  | 
 | ||
|  | function onKeyFrameFlag_po_ATIceManMagicCircle(obj, flagIndex) | ||
|  | { | ||
|  | 
 | ||
|  | } | ||
|  | 
 | ||
|  | function onEndCurrentAni_po_ATIceManMagicCircle(obj) | ||
|  | { | ||
|  | 	if(!obj) return; | ||
|  | 	 | ||
|  | 	if(!obj.isMyControlObject()) | ||
|  | 		return; | ||
|  | 
 | ||
|  | 	local passiveState = obj.getVar("state").get_vector(0); | ||
|  | 	 | ||
|  | 	if(passiveState == PASSIVEOBJ_SUB_STATE_0) | ||
|  | 	{ | ||
|  | 		local pIntVec = sq_GetGlobalIntVector(); | ||
|  | 		sq_IntVectorClear(pIntVec); | ||
|  | 		sq_IntVectorPush(pIntVec, 0); | ||
|  | 
 | ||
|  | 		obj.addSetStatePacket(PASSIVEOBJ_SUB_STATE_1, pIntVec, STATE_PRIORITY_AUTO, false, ""); | ||
|  | 	} | ||
|  | 	else if(passiveState == PASSIVEOBJ_SUB_STATE_1) | ||
|  | 	{ | ||
|  | 	} | ||
|  | 	else if(passiveState == PASSIVEOBJ_SUB_STATE_2) | ||
|  | 	{ | ||
|  | 	} | ||
|  | 	else if(passiveState == PASSIVEOBJ_SUB_STATE_3) | ||
|  | 	{ | ||
|  | 	} | ||
|  | 	else if(passiveState == PASSIVEOBJ_SUB_STATE_4) | ||
|  | 	{ | ||
|  | 	} | ||
|  | 	else if(passiveState == PASSIVEOBJ_SUB_STATE_6) | ||
|  | 	{ // 饷薯 | ||
|  | 		print(" passiveState == PASSIVEOBJ_SUB_STATE_6 destroy"); | ||
|  | 		sq_SendDestroyPacketPassiveObject(obj); | ||
|  | 	} | ||
|  | 	 | ||
|  | } | ||
|  | 
 | ||
|  | function onAttack_po_ATIceManMagicCircle(obj, damager, boundingBox, isStuck) | ||
|  | { | ||
|  | 	if(!obj) | ||
|  | 		return 0; | ||
|  | 		 | ||
|  | 	local pChr = obj.getTopCharacter(); | ||
|  | 	 | ||
|  | 	if(!pChr) | ||
|  | 		return 0; | ||
|  | 	 | ||
|  | 	local active_damager = sq_GetCNRDObjectToActiveObject(damager); | ||
|  | 	 | ||
|  | 	if(!active_damager) | ||
|  | 		return 0; | ||
|  | 
 | ||
|  | 	 | ||
|  | 	local passiveState = obj.getVar("state").get_vector(0); | ||
|  | 	 | ||
|  | 	if(passiveState == PASSIVEOBJ_SUB_STATE_1) | ||
|  | 	{ | ||
|  | 		local rand = sq_getRandom(0, 100);  | ||
|  | 		 | ||
|  | 		local rate = obj.getVar("freezeRate").get_vector(0); | ||
|  | 		print(" rate:" + rate + " rand" + rand); | ||
|  | 		 | ||
|  | 		// 桧楼?徽桧 剩横陛捡 桧楼马模 横?蛤虽蒂 勘横鄹栖棻.. | ||
|  | 		if(rand <= obj.getVar("freezeRate").get_vector(0)) | ||
|  | 		{	 | ||
|  | 			CNSquirrelAppendage.sq_AppendAppendage(damager, pChr, SKILL_ICEMAN,  | ||
|  | 			true, "Character/ATMage/IceMan/ap_ATIceManMagicCircle.nut", true); | ||
|  | 		} | ||
|  | 	} | ||
|  | 		 | ||
|  | 	return 0; | ||
|  | } |