236 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			236 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
|  | ENUM_PO_ICE_CHAKRAM_TIMER_LARGE_MULTI_HIT <- 0; | |||
|  | ENUM_PO_ICE_CHAKRAM_TIMER_LARGE_MOVE_END  <- 1; | |||
|  | ENUM_PO_ICE_CHAKRAM_TIMER_LARGE_SPIN      <- 2; | |||
|  | 
 | |||
|  | 
 | |||
|  | ENUM_PIC_SUB_STATE_FLYING		<-10; //PIC == PO_ICE_CHAKRAM | |||
|  | ENUM_PIC_SUB_STATE_SPIN			<-11;	 | |||
|  | ENUM_PIC_SUB_STATE_READY_EXPLOSION	<-12; // ?嫦遽绿 : ?拥飓 | |||
|  | ENUM_PIC_SUB_STATE_EXPLOSION		<-13; // 夥煎 ?嫦卫 | |||
|  | 
 | |||
|  | ENUM_PIC_CUSTOM_ATTACK_INFO_DEFAULT <- -1; | |||
|  | ENUM_PIC_CUSTOM_ATTACK_INFO_SPIN	<- 0; | |||
|  | ENUM_PIC_CUSTOM_ATTACK_INFO_EXPLOSION	<- 1; | |||
|  | 
 | |||
|  | ENUM_PIC_CUSTOM_ANI_READY		<- 0; | |||
|  | ENUM_PIC_CUSTOM_ANI_EXPLOSION	<- 1; | |||
|  | 
 | |||
|  | 
 | |||
|  | function setAttackInfo_po_ATIceChakramLarge(obj, attackInfoIndex) | |||
|  | { | |||
|  | 	if(attackInfoIndex != ENUM_PIC_CUSTOM_ATTACK_INFO_DEFAULT) | |||
|  | 		sq_SetCurrentAttackInfoFromCustomIndex(obj, attackInfoIndex); | |||
|  | 		 | |||
|  | 	local parentObj = obj.getTopCharacter(); | |||
|  | 	if(parentObj) { // 棻钦??蒂 嫔? 颤桧该.		 | |||
|  | 		// 赎坚葬 棻钦 ?? 奢问溘 扑姜 | |||
|  | 		local sqrParent = sq_ObjectToSQRCharacter(parentObj); | |||
|  | 		if(sqrParent) { | |||
|  | 			local power = sqrParent.sq_GetBonusRateWithPassive(SKILL_ICECHAKRAM , STATE_ICECHAKRAM, 1, 1.0);		 | |||
|  | 			local attackInfo = sq_GetCurrentAttackInfo(obj); | |||
|  | 			sq_SetCurrentAttackBonusRate(attackInfo, power); | |||
|  | 			sq_SetCurrentAttackeHitStunTime(attackInfo, 0); // 奢问 唳霜卫除 桡拥晦. | |||
|  | 		} | |||
|  | 	} | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | function setCustomData_po_ATIceChakramLarge(obj, reciveData) | |||
|  | { | |||
|  | 	if(!obj) return; | |||
|  | 	 | |||
|  | 	local parentObj = obj.getTopCharacter(); | |||
|  | 	if(parentObj) { // 棻钦??蒂 嫔? 颤桧该. | |||
|  | 		local multiHitTimeGab = sq_GetLevelData(parentObj,	SKILL_ICECHAKRAM, 5, sq_GetSkillLevel(parentObj, SKILL_ICECHAKRAM)); | |||
|  | 		obj.setTimeEvent(ENUM_PO_ICE_CHAKRAM_TIMER_LARGE_MULTI_HIT, multiHitTimeGab, 0, true); // 0桧贼 鼠?渠 | |||
|  | 			 | |||
|  | 		// 赎坚葬 棻钦 ?? 奢问溘 扑姜 | |||
|  | 		setAttackInfo_po_ATIceChakramLarge(obj, ENUM_PIC_CUSTOM_ATTACK_INFO_DEFAULT); | |||
|  | 	} | |||
|  | 	 | |||
|  | 	local horizonAngle  = reciveData.readFloat(); | |||
|  | 	local verticalAngle = reciveData.readFloat();	 | |||
|  | 	local moveSpeed		= reciveData.readDword(); | |||
|  | 	local maxDistance	= reciveData.readDword(); | |||
|  | 	local group			= reciveData.readDword(); // 颤啃 斜瑜 | |||
|  | 	local uid			= reciveData.readDword(); // 颤啃 Uid	 | |||
|  | 	local target		= sq_GetObject(obj, group, uid); | |||
|  | 	 | |||
|  | 	local var = obj.getVar(); | |||
|  | 	var.setObject(0,target); | |||
|  | 	 | |||
|  | 	 | |||
|  | 	 | |||
|  | 	obj.sq_SetMoveParticle("Particle/ATIceChakramLarge.ptl", horizonAngle, verticalAngle); | |||
|  | 	sq_SetSpeedToMoveParticle(obj,0,moveSpeed); | |||
|  | 	 | |||
|  | 	//卫除 = 剪葬/楼紫 | |||
|  | 	local flyTiime = maxDistance.tofloat()/moveSpeed.tofloat() * 1000.0; | |||
|  | 	 | |||
|  | 	// 桧翕 姜卫? 卫除. | |||
|  | 	obj.setTimeEvent(ENUM_PO_ICE_CHAKRAM_TIMER_LARGE_MOVE_END, flyTiime.tointeger(), 1, false); // 0桧贼 鼠?渠 | |||
|  | 	 | |||
|  | 	obj.sendStateOnlyPacket(ENUM_PIC_SUB_STATE_FLYING); // 晦狱 蝶才桧?朝 陈嬴陛朝 鼻鹧. | |||
|  | 	sq_CreateParticle("PassiveObject/Character/Mage/Particle/ATIceChakramDust.ptl",obj,0,0,-40,true,50,flyTiime.tointeger(),100); | |||
|  | 	obj.sq_PlaySound("RAGEBLAST_THROW_LOOP",2711);	 | |||
|  | } | |||
|  | 
 | |||
|  | function destroy_po_ATIceChakramLarge(obj) | |||
|  | { | |||
|  | 	sq_RemoveParticle("PassiveObject/Character/Mage/Particle/ATIceChakramDust.ptl", obj);	 | |||
|  | 	obj.stopSound(2711); | |||
|  | } | |||
|  | 
 | |||
|  | function onTimeEvent_po_ATIceChakramLarge(obj, timeEventIndex, timeEventCount) | |||
|  | {	 | |||
|  | 	if(!obj) | |||
|  | 		return true; | |||
|  | 	 | |||
|  | 	if(timeEventIndex == ENUM_PO_ICE_CHAKRAM_TIMER_LARGE_MULTI_HIT) | |||
|  | 	{			 | |||
|  | 		obj.resetHitObjectList(); //棻钦??蒂嫔? ??螃粽薛? 葬蝶?蒂 葬掸.				 | |||
|  | 		return false; // false贼 啗楼 属寥 (timeEventCount苹遴?陛 嵘?桧塭贼 timeEventCount 虏踯 属寥) | |||
|  | 	} | |||
|  | 	else if(timeEventIndex == ENUM_PO_ICE_CHAKRAM_TIMER_LARGE_MOVE_END) | |||
|  | 	{ | |||
|  | 		//桧翕 部桧贼 薯濠葬 ?瞪.		 | |||
|  | 		obj.sendStateOnlyPacket(ENUM_PIC_SUB_STATE_SPIN); | |||
|  | 		printc("ENUM_PIC_SUB_STATE_SPIN"); | |||
|  | 		return true;		 | |||
|  | 	} | |||
|  | 	else if(timeEventIndex ==  ENUM_PO_ICE_CHAKRAM_TIMER_LARGE_SPIN) | |||
|  | 	{ | |||
|  | 		// ?嫦 | |||
|  | 		obj.sendStateOnlyPacket(ENUM_PIC_SUB_STATE_READY_EXPLOSION);		 | |||
|  | 		 | |||
|  | 	} | |||
|  | 	 | |||
|  | 	return true; | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | function setState_po_ATIceChakramLarge(obj, state, datas) | |||
|  | { | |||
|  | 	if(!obj) return; | |||
|  | 	 | |||
|  | 	if(state == ENUM_PIC_SUB_STATE_SPIN) | |||
|  | 	{		 | |||
|  | 		// 试虽 ??赝 薯剪. | |||
|  | 		sq_RemoveParticle("PassiveObject/Character/Mage/Particle/ATIceChakramDust.ptl", obj); | |||
|  | 		 | |||
|  | 		setAttackInfo_po_ATIceChakramLarge(obj, ENUM_PIC_CUSTOM_ATTACK_INFO_SPIN); | |||
|  | 		 | |||
|  | 		// 薯濠葬缣怃 蝶?. 颤啃桧 桡棻贼 夥煎 ?嫦				 | |||
|  | 		obj.sq_RemoveMoveParticle(); | |||
|  | 		local var = obj.getVar(); | |||
|  | 		local target = var.getObject(0);	 | |||
|  | 	 | |||
|  | 		if (target) {							 | |||
|  | 			obj.setTimeEvent(ENUM_PO_ICE_CHAKRAM_TIMER_LARGE_SPIN, 500, 1, false); // 0桧贼 鼠?渠				 | |||
|  | 		} | |||
|  | 		else { | |||
|  | 			obj.sendStateOnlyPacket(ENUM_PIC_SUB_STATE_EXPLOSION);		 | |||
|  | 		} | |||
|  | 	}		 | |||
|  | 	else if(state == ENUM_PIC_SUB_STATE_READY_EXPLOSION) | |||
|  | 	{ | |||
|  | 		setCurrentAnimationFromCutomIndex(obj, ENUM_PIC_CUSTOM_ANI_READY);		 | |||
|  | 	} | |||
|  | 	else if(state == ENUM_PIC_SUB_STATE_EXPLOSION) | |||
|  | 	{ | |||
|  | 		obj.stopSound(2711); | |||
|  | 		// 棻钦??暧 颤桧该蒂 酝钦. | |||
|  | 		obj.stopTimeEvent(ENUM_PO_ICE_CHAKRAM_TIMER_LARGE_MULTI_HIT); | |||
|  | 		 | |||
|  | 		setCurrentAnimationFromCutomIndex(obj, ENUM_PIC_CUSTOM_ANI_EXPLOSION);	 | |||
|  | 		sq_SetCurrentAttackInfoFromCustomIndex(obj, ENUM_PIC_CUSTOM_ATTACK_INFO_EXPLOSION); | |||
|  | 			 | |||
|  | 		local parentObj = obj.getTopCharacter(); | |||
|  | 		if(parentObj) { | |||
|  | 			// ?嫦 ?? 奢问溘 扑姜 | |||
|  | 			local sqrParent = sq_ObjectToSQRCharacter(parentObj); | |||
|  | 			if(sqrParent) { | |||
|  | 				local power = sqrParent.sq_GetBonusRateWithPassive(SKILL_ICECHAKRAM , STATE_ICECHAKRAM, 2, 1.0);		 | |||
|  | 				local attackInfo = sq_GetCurrentAttackInfo(obj); | |||
|  | 				sq_SetCurrentAttackBonusRate(attackInfo, power); | |||
|  | 				sq_SetCurrentAttackeHitStunTime(attackInfo, 0); // 奢问 唳霜卫除 桡拥晦. | |||
|  | 			} | |||
|  | 		}		 | |||
|  | 		 | |||
|  | 		local flashScreen = sq_flashScreen(obj, 0, 80, 0, 120, sq_RGB(255,255,255), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM); | |||
|  | 		sq_addFlashScreen(flashScreen, 0, 960, 320, 120, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM); | |||
|  | 		 | |||
|  | 		sq_SetMyShake(obj,4,340); | |||
|  | 	}		 | |||
|  | } | |||
|  | 
 | |||
|  | function onAttack_po_ATIceChakramLarge(obj, damager, boundingBox, isStuck) | |||
|  | {	// ?颤 鼠楼撩 | |||
|  | 	if (!obj) | |||
|  | 		return 0; | |||
|  | 	if (isStuck) | |||
|  | 		return 0; | |||
|  | 		 | |||
|  | 	local var = obj.getVar(); | |||
|  | 	var.push_obj_vector(damager); | |||
|  | 	 | |||
|  | 	local target = var.getObject(0); | |||
|  | 	 | |||
|  | 	if(target && isSameObject(target,damager))//颤啃击 奢问?棻贼. | |||
|  | 	{	 | |||
|  | 		// 颤啃桧 桧翕陛栋? 偌羹塭贼 鬼薯煎 桧翕.	//蜃晦 桧雌 嫔纂煎.		 | |||
|  | 		if(!sq_IsFixture(damager) && sq_IsGrabable(obj,target)) {		 | |||
|  | 			sq_SetCurrentPos(damager, sq_GetDistancePos(obj.getXPos(), obj.getDirection(), 100), obj.getYPos(), damager.getZPos()); | |||
|  | 		} | |||
|  | 	} | |||
|  | 	 | |||
|  | 	 | |||
|  | 	return 0; | |||
|  | } | |||
|  | 
 | |||
|  | function getCustomHitEffectFileName_po_ATIceChakramLarge(obj, isAttachOnDamager) | |||
|  | { | |||
|  | 	// 伞鼠 号戏贼 滓 嵘嫦. 奢问?朝 偎热陛 号击 热烟 瞳啪 ?卫 | |||
|  | 	local var = obj.getVar(); | |||
|  | 	local maxN = var.get_obj_vector_size(); | |||
|  | 	 | |||
|  | 	if(maxN > 3) | |||
|  | 		maxN = 3; | |||
|  | 		 | |||
|  | 	if(sq_getRandom(0,maxN) == 0) | |||
|  | 		return "PassiveObject/Character/Mage/Animation/ATIceChakram/fire/08_chakrahit_dodge.ani"; | |||
|  | 	else | |||
|  | 		return ""; | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | function procAppend_po_ATIceChakramLarge(obj) | |||
|  | { | |||
|  | 	//obj.sendDestroyPacket(true); | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | function onKeyFrameFlag_po_ATIceChakramLarge(obj, flagIndex) | |||
|  | { | |||
|  | 	if(!obj) return true; | |||
|  | 	 | |||
|  | 	if(flagIndex == 1) { | |||
|  | 		 | |||
|  | 	} | |||
|  | 	return true; | |||
|  | } | |||
|  | 
 | |||
|  | function onEndCurrentAni_po_ATIceChakramLarge(obj) | |||
|  | { | |||
|  | 	if(!obj) return; | |||
|  | 	 | |||
|  | 	if(obj.getState() == ENUM_PIC_SUB_STATE_READY_EXPLOSION)  | |||
|  | 	{ | |||
|  | 		obj.sendStateOnlyPacket(ENUM_PIC_SUB_STATE_EXPLOSION);		 | |||
|  | 	}	 | |||
|  | 	else if(obj.getState() == ENUM_PIC_SUB_STATE_EXPLOSION) | |||
|  | 	{ | |||
|  | 		obj.sendDestroyPacket(true);		 | |||
|  | 	}	 | |||
|  | } | |||
|  |  |