618 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			618 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| 
								 | 
							
								EXECUTION_SUB_STATE_GRAB	 <- 0
							 | 
						|||
| 
								 | 
							
								EXECUTION_SUB_STATE_GRAB_EX	 <- 1
							 | 
						|||
| 
								 | 
							
								EXECUTION_SUB_STATE_TURNOVER <- 2
							 | 
						|||
| 
								 | 
							
								EXECUTION_SUB_STATE_RUN		 <- 3
							 | 
						|||
| 
								 | 
							
								EXECUTION_SUB_STATE_LAST	 <- 4
							 | 
						|||
| 
								 | 
							
								EXECUTION_SUB_STATE_FAILED	 <- 5
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								TEST_MODE_EXCUTION <- DEBUG;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								EXC_READY_FOR_THROW <- 0;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function sendSubState_Execution(obj,subState)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									if(!obj) return;
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									if(obj.isMyControlObject()) {
							 | 
						|||
| 
								 | 
							
										obj.sq_IntVectClear();
							 | 
						|||
| 
								 | 
							
										obj.sq_IntVectPush(subState); // substate撮?
							 | 
						|||
| 
								 | 
							
										obj.sq_addSetStatePacket(STATE_EXECUTION, STATE_PRIORITY_USER, true);
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								//------------------------------------------------------------------------------
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// 籀?擎 学葆啪桧虽煎 亵瞰胀棻..斜楝嘎煎 学葆啪桧虽 comsume睡碟击 籀?缣 ?热?蒂 卫面捡?栖棻..
							 | 
						|||
| 
								 | 
							
								function IsEnableExecution(obj)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									if(!obj) return false; 
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
									//if(TEST_MODE_EXCUTION)
							 | 
						|||
| 
								 | 
							
									//	return true;
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
									//if(!isInDevilStrike(obj)) return false;
							 | 
						|||
| 
								 | 
							
									if(!isInDevilStrikeSkill(obj)) return false;
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
									local appendage = obj.GetSquirrelAppendage("Appendage/Character/ap_avenger_devilstrike.nut"); // 等网蝶?塭桧醴 横?蛤虽
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									if(!appendage) return false;
							 | 
						|||
| 
								 | 
							
									print("appendage.sq_var.size_vector():" + appendage.sq_var.size_vector());
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									if(appendage.sq_var.size_vector() > 1) {
							 | 
						|||
| 
								 | 
							
										// 7. 学葆啪桧虽 模赅榆
							 | 
						|||
| 
								 | 
							
										local skillLevel = sq_GetSkillLevel(obj, SKILL_EXECUTION);
							 | 
						|||
| 
								 | 
							
										local consumeValue = sq_GetLevelData(obj, SKILL_EXECUTION, 7, skillLevel);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										//DS_APEND_MAX_GAUGE <- 0 // 譆渠 学葆啪桧虽 热纂
							 | 
						|||
| 
								 | 
							
										//DS_APEND_GAUGE <- 1 // ?营 学
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
												
							 | 
						|||
| 
								 | 
							
										local devil_gauge = appendage.sq_var.get_vector(DS_APEND_GAUGE); // gauge index 0
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										if(devil_gauge >= consumeValue)
							 | 
						|||
| 
								 | 
							
										{
							 | 
						|||
| 
								 | 
							
											consumeDevilGauge(obj, consumeValue); // 学葆啪桧虽蒂 还罹鄹栖棻..
							 | 
						|||
| 
								 | 
							
											return true;
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										else {
							 | 
						|||
| 
								 | 
							
											obj.startCantUseSkillWarning();
							 | 
						|||
| 
								 | 
							
											if (obj.isMessage()) {
							 | 
						|||
| 
								 | 
							
												sq_AddMessage(29002); // 29002>学葆啪桧虽陛 睡褶?栖棻.
							 | 
						|||
| 
								 | 
							
											}
							 | 
						|||
| 
								 | 
							
											return false;
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									return false;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function onEndState_Execution(obj, newState)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									if(newState != STATE_EXECUTION)
							 | 
						|||
| 
								 | 
							
										removeAllExcutionAppendage(obj);
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// 蝶鉴 撮睡嫦翕 亵勒击 虏菟横舆朝 ?热殓栖棻.. 嫦翕 亵勒 state朝 桧嘐 模蝶缣怃 掘?肾横 毡蝗栖棻. 桧够缣怃 useskill娄 setstate蒂 虽姜?舆贼 腌栖棻.
							 | 
						|||
| 
								 | 
							
								function checkExecutableSkill_Execution(obj)  
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									if(!obj) return false;
							 | 
						|||
| 
								 | 
							
									local b_useskill = obj.sq_IsUseSkill(SKILL_EXECUTION);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									if(b_useskill) {
							 | 
						|||
| 
								 | 
							
										if(IsEnableExecution(obj)) { // 学葆啪桧虽煎 籀?击 噩 热 毡蝗栖棻..
							 | 
						|||
| 
								 | 
							
											sendSubState_Execution(obj,EXECUTION_SUB_STATE_GRAB);
							 | 
						|||
| 
								 | 
							
											return true;
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
									}	
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									return false;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// 蝶鉴嬴桧夔 ?撩? 亵勒击 评虽朝 ?热殓栖棻. true蒂 葬欐?贼 蝶鉴 嬴桧夔桧 ?撩?陛 腌栖棻. (嫦翕亵勒 state朝  模蝶缣怃 籀葬腌栖棻.)
							 | 
						|||
| 
								 | 
							
								function checkCommandEnable_Execution(obj)
							 | 
						|||
| 
								 | 
							
								{ //橾奁 鼻?缣怃 绿?撩? 卫监棻.. 桧匙击 ?撩? 卫郦朝 钦啗朝 螃煎虽.. 渗褐-陕撩击 ?朝 钦啗缣怃 殓栖棻.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									//if(TEST_MODE_EXCUTION)
							 | 
						|||
| 
								 | 
							
									//	return true;
							 | 
						|||
| 
								 | 
							
									return false;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								//------------------------------------------------------------------------------
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								//isCheckHitCollision谛 checkHit朝 ?问 羹觼蒂 鼻渠寞桧 嬴棋 顶陛 ?捡 ?唳办缣 噙樯棻. pvp缣摹 鼻渠寞桧 ?问羹觼蒂 ?贼 拟港卫除桧 替溥 蝶鉴桧 警蜗肾朝 唳办陛 毡晦 阳侥.
							 | 
						|||
| 
								 | 
							
								function onIsCheckHitCollision_Execution(obj,damager)
							 | 
						|||
| 
								 | 
							
								{	
							 | 
						|||
| 
								 | 
							
									local subState = obj.getSkillSubState();	
							 | 
						|||
| 
								 | 
							
									if(subState == EXECUTION_SUB_STATE_GRAB)  //横菸暧 掏栋 pvp缣怃 罗颤 褒? 虞晦 嫔?.
							 | 
						|||
| 
								 | 
							
										return obj.isMyControlObject();
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
									//晦狱瞳戏烦 釭暧 螃粽薛?陛 嬴栖贼 false棻. 罹晦怃 false蒂 ?啪 肾贼 釭暧 螃粽薛? 樯虽 念娄陛 葬欐胀棻.
							 | 
						|||
| 
								 | 
							
									return (damager && damager.isMyControlObject());
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function isForceHitCheck_Execution(obj)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									if(obj.isMyControlObject()) {
							 | 
						|||
| 
								 | 
							
										local subState =  obj.getSkillSubState();	
							 | 
						|||
| 
								 | 
							
										if(subState == EXECUTION_SUB_STATE_GRAB) { //横菸暧 掏栋 pvp缣怃 罗颤 褒? 虞晦 嫔?.
							 | 
						|||
| 
								 | 
							
											return true;
							 | 
						|||
| 
								 | 
							
										}	
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									return false;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// state蒂 撮??坚 籀挤戏煎 菟横螃啪 腌栖棻. 陕谦 葬模蝶蒂 撮??栖棻. 
							 | 
						|||
| 
								 | 
							
								function onSetState_Execution(obj, state, datas, isResetTimer)
							 | 
						|||
| 
								 | 
							
								{	
							 | 
						|||
| 
								 | 
							
									if(!obj) return;
							 | 
						|||
| 
								 | 
							
									// 怃粽 蝶才桧? 扑姜
							 | 
						|||
| 
								 | 
							
									local sq_var = obj.getVar();  
							 | 
						|||
| 
								 | 
							
									local subState = obj.sq_getVectorData(datas, 0);
							 | 
						|||
| 
								 | 
							
									obj.setSkillSubState(subState);	
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local posX = obj.getXPos();
							 | 
						|||
| 
								 | 
							
									local posY = obj.getYPos();
							 | 
						|||
| 
								 | 
							
									local posZ = obj.getZPos();
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									sq_var.clear_vector(); // als缣怃 create draw only object 蒂 跤噙晦 阳侥缣 ?溯歜 郦 ?楚斜煎 桧辨?啊蝗栖棻..
							 | 
						|||
| 
								 | 
							
									sq_var.push_vector(0); // index : 0
							 | 
						|||
| 
								 | 
							
									sq_var.push_vector(0); // index : 1
							 | 
						|||
| 
								 | 
							
									sq_var.push_vector(0); // index : 2
							 | 
						|||
| 
								 | 
							
									sq_var.push_vector(0); // index : 3
							 | 
						|||
| 
								 | 
							
									sq_var.push_vector(0); // index : 4
							 | 
						|||
| 
								 | 
							
									sq_var.push_vector(0); // index : 5
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local ani = null; // 蝶监嬴夥颤 阳侥缣 getcustomani蒂 桧辨?虽 跤?栖棻.. 瞪睡 谖睡缣怃 拥栖诡桧暮击 煎注?怃 陛螳褫栖棻..
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									if(subState == EXECUTION_SUB_STATE_GRAB)
							 | 
						|||
| 
								 | 
							
									{	
							 | 
						|||
| 
								 | 
							
										obj.sq_stopMove();
							 | 
						|||
| 
								 | 
							
										//obj.sq_setCurrentAnimation(CUSTOM_ANI_EXC_GRAB);
							 | 
						|||
| 
								 | 
							
										ani = obj.getVar().GetAnimationMap("EXC_GRAB", "Character/Priest/Animation/execution/grab.ani"); // 蝶监嬴夥颤 阳侥缣 谖睡缣怃 拥栖诡桧暮击 陛虽坚 谛捡 ?栖棻..
							 | 
						|||
| 
								 | 
							
										obj.setCurrentAnimation(ani);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										obj.sq_setCurrentAttackInfo(CUSTOM_ATTACKINFO_EXCUTION_1);	
							 | 
						|||
| 
								 | 
							
										obj.sq_PlaySound("PR_EXECUTION_READY");		
							 | 
						|||
| 
								 | 
							
										sq_var.setBool(EXC_READY_FOR_THROW,false);
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(subState == EXECUTION_SUB_STATE_GRAB_EX)
							 | 
						|||
| 
								 | 
							
									{	
							 | 
						|||
| 
								 | 
							
										obj.sq_stopMove();
							 | 
						|||
| 
								 | 
							
										//obj.sq_setCurrentAnimation(CUSTOM_ANI_EXC_GRAB_EX);
							 | 
						|||
| 
								 | 
							
										ani = obj.getVar().GetAnimationMap("EXC_GRAB_EX", "Character/Priest/Animation/execution/grabEx.ani"); // 蝶监嬴夥颤 阳侥缣 谖睡缣怃 拥栖诡桧暮击 陛虽坚 谛捡 ?栖棻..
							 | 
						|||
| 
								 | 
							
										obj.setCurrentAnimation(ani);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										obj.sq_setCurrentAttackInfo(CUSTOM_ATTACKINFO_EXCUTION_2);	
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										obj.sq_setAttackPowerWithPassive(SKILL_EXECUTION,state, 0,-1,1.0); // 0廓 樯策蝶 奢问溘 虽姜
							 | 
						|||
| 
								 | 
							
									}	
							 | 
						|||
| 
								 | 
							
									else if(subState == EXECUTION_SUB_STATE_TURNOVER)
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										//obj.sq_setCurrentAnimation(CUSTOM_ANI_EXC_TURNOVER);
							 | 
						|||
| 
								 | 
							
										ani = obj.getVar().GetAnimationMap("EXC_TURNOVER", "Character/Priest/Animation/execution/turnOver.ani"); // 蝶监嬴夥颤 阳侥缣 谖睡缣怃 拥栖诡桧暮击 陛虽坚 谛捡 ?栖棻..
							 | 
						|||
| 
								 | 
							
										obj.setCurrentAnimation(ani);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
										local sizeRate = obj.sq_getLevelData(3);
							 | 
						|||
| 
								 | 
							
										local explosionSizeRate = sizeRate.tofloat()/100.0;
							 | 
						|||
| 
								 | 
							
											
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										local pAni = obj.sq_getCurrentAni();		
							 | 
						|||
| 
								 | 
							
										pAni.applyBoundingBoxRate(explosionSizeRate,0,0); // 醱问? 彰嫔 瞳辨		
							 | 
						|||
| 
								 | 
							
										obj.sq_setCurrentAttackInfo(CUSTOM_ATTACKINFO_EXCUTION_3);	
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										local sq_var = obj.getVar();
							 | 
						|||
| 
								 | 
							
										local i=0;		
							 | 
						|||
| 
								 | 
							
										local objectsSize = sq_var.get_obj_vector_size();
							 | 
						|||
| 
								 | 
							
										for(;i<objectsSize;++i)
							 | 
						|||
| 
								 | 
							
										{
							 | 
						|||
| 
								 | 
							
											local damager = sq_GetCNRDObjectToCollisionObject(sq_var.get_obj_vector(i));
							 | 
						|||
| 
								 | 
							
											if(damager) 
							 | 
						|||
| 
								 | 
							
												obj.addHitObject(damager);
							 | 
						|||
| 
								 | 
							
										}	
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										local ani = sq_CreateAnimation("","Character/Priest/Effect/Animation/execution/turnOver/finger.ani")
							 | 
						|||
| 
								 | 
							
										local fingerObj = sq_CreatePooledObject(ani,true);
							 | 
						|||
| 
								 | 
							
										fingerObj.setCurrentPos(obj.getXPos(),obj.getYPos()+2,obj.getZPos());
							 | 
						|||
| 
								 | 
							
										fingerObj.setCurrentDirection(obj.getDirection());
							 | 
						|||
| 
								 | 
							
										sq_AddObject(obj,fingerObj,2,false);	
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										//obj.sq_setAttackPowerWithPassive(SKILL_EXECUTION, state, 2,-1,1.0);
							 | 
						|||
| 
								 | 
							
										obj.sq_setAttackPowerWithPassive(SKILL_EXECUTION, state, 1,-1,1.0); // // 1. 阶缣 镒历击阳 濩?拥缣 渠? 奢问溘(+)
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(subState == EXECUTION_SUB_STATE_RUN)
							 | 
						|||
| 
								 | 
							
									{				
							 | 
						|||
| 
								 | 
							
										obj.sq_PlaySound("PR_EXECUTION_DRAWN");	
							 | 
						|||
| 
								 | 
							
										obj.sq_setCurrentAttackInfo(CUSTOM_ATTACKINFO_EXCUTION_4);	
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										local moveDistance = obj.sq_getIntData(SKILL_EXECUTION,0); // 桧翕剪葬
							 | 
						|||
| 
								 | 
							
										local velocityX = obj.sq_getIntData(SKILL_EXECUTION,1); // 蟾渡 桧翕楼紫
							 | 
						|||
| 
								 | 
							
										local velocityY = obj.sq_getIntData(SKILL_EXECUTION,2); // 蟾渡 桧翕楼紫
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
											
							 | 
						|||
| 
								 | 
							
										// ?蹂?勒 卫除 = 剪葬/楼紫		
							 | 
						|||
| 
								 | 
							
										local targetTime = 0;
							 | 
						|||
| 
								 | 
							
										if(velocityX != 0)
							 | 
						|||
| 
								 | 
							
											targetTime = moveDistance* 1000 / velocityX;
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										obj.sq_timer_.setParameter(targetTime, 1);
							 | 
						|||
| 
								 | 
							
										obj.sq_timer_.setEventOnStart(false);
							 | 
						|||
| 
								 | 
							
										obj.sq_timer_.resetInstant(0);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										obj.sq_setStaticMoveInfo(0,velocityX,velocityX,false);
							 | 
						|||
| 
								 | 
							
										obj.sq_setStaticMoveInfo(1,velocityY,velocityY,true);
							 | 
						|||
| 
								 | 
							
										obj.sq_setMoveDirection(obj.getDirection(), ENUM_DIRECTION_NEUTRAL);
							 | 
						|||
| 
								 | 
							
										//obj.sq_setCurrentAnimation(CUSTOM_ANI_EXC_RUN);		
							 | 
						|||
| 
								 | 
							
										ani = obj.getVar().GetAnimationMap("EXC_RUN", "Character/Priest/Animation/execution/run.ani"); // 蝶监嬴夥颤 阳侥缣 谖睡缣怃 拥栖诡桧暮击 陛虽坚 谛捡 ?栖棻..
							 | 
						|||
| 
								 | 
							
										obj.setCurrentAnimation(ani);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										obj.playSound("EXECUTION_DRAWN_LOOP",3711,0,0,0);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(subState == EXECUTION_SUB_STATE_LAST)
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										obj.stopSound(3711);
							 | 
						|||
| 
								 | 
							
										obj.sq_setCurrentAttackInfo(CUSTOM_ATTACKINFO_EXCUTION_5);	
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
										local velocityX = obj.sq_getIntData(SKILL_EXECUTION,1); // 蟾渡 桧翕楼紫
							 | 
						|||
| 
								 | 
							
										local accelX = obj.sq_getIntData(SKILL_EXECUTION,3); // 马楼紫
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										obj.sq_setStaticMoveInfo(0,velocityX,velocityX,false,accelX,true);
							 | 
						|||
| 
								 | 
							
										obj.sq_setStaticMoveInfo(1,0,0,false);
							 | 
						|||
| 
								 | 
							
										obj.sq_setMoveDirection(obj.getDirection(), ENUM_DIRECTION_NEUTRAL);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										ani = obj.getVar().GetAnimationMap("EXC_LAST", "Character/Priest/Animation/execution/last.ani"); // 蝶监嬴夥颤 阳侥缣 谖睡缣怃 拥栖诡桧暮击 陛虽坚 谛捡 ?栖棻..
							 | 
						|||
| 
								 | 
							
										obj.setCurrentAnimation(ani);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										obj.sq_setAttackPowerWithPassive(SKILL_EXECUTION,state, 5,-1,1.0);
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(subState == EXECUTION_SUB_STATE_FAILED)
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										//obj.sq_setCurrentAnimation(CUSTOM_ANI_EXC_FAILED);
							 | 
						|||
| 
								 | 
							
										ani = obj.getVar().GetAnimationMap("EXC_FAILED", "Character/Priest/Animation/execution/grabFailed.ani"); // 蝶监嬴夥颤 阳侥缣 谖睡缣怃 拥栖诡桧暮击 陛虽坚 谛捡 ?栖棻..
							 | 
						|||
| 
								 | 
							
										obj.setCurrentAnimation(ani);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function onProc_Execution(obj)
							 | 
						|||
| 
								 | 
							
								{	
							 | 
						|||
| 
								 | 
							
									if(!obj) return;
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local subState = obj.getSkillSubState();
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local pAni = obj.sq_getCurrentAni();
							 | 
						|||
| 
								 | 
							
								    local frmIndex = obj.sq_ani_GetCurrentFrameIndex(pAni);
							 | 
						|||
| 
								 | 
							
									local posX = obj.getXPos();
							 | 
						|||
| 
								 | 
							
									local posY = obj.getYPos();
							 | 
						|||
| 
								 | 
							
									local posZ = obj.getZPos();
							 | 
						|||
| 
								 | 
							
									local dir = sq_GetDirection(obj);
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local sq_var = obj.getVar();
							 | 
						|||
| 
								 | 
							
									if(subState == EXECUTION_SUB_STATE_RUN) {
							 | 
						|||
| 
								 | 
							
										// [use animation] `../../Effect/Animation/execution/run/26_dust_a_normal.ani` 	`5`
							 | 
						|||
| 
								 | 
							
										//[create draw only object] 4 `5` 0 50 0
							 | 
						|||
| 
								 | 
							
										//[create draw only object] 2 `5` 0 50 0
							 | 
						|||
| 
								 | 
							
										//[create draw only object] 0 `5` 0 50 0
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										// [use animation] `../../Effect/Animation/execution/run/1_dust_a_normal.ani` 	`1`
							 | 
						|||
| 
								 | 
							
										//[create draw only object] 1 `1` 0 -1 0
							 | 
						|||
| 
								 | 
							
										//[create draw only object] 3 `1` 0 -1 0
							 | 
						|||
| 
								 | 
							
										//[create draw only object] 5 `1` 0 -1 0
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										if(frmIndex >= 0 && !sq_var.get_vector(0)) {
							 | 
						|||
| 
								 | 
							
											sqr_CreatePooledObject(obj, "Effect/Animation/execution/run/26_dust_a_normal.ani", posX, posY + 50, posZ, dir);
							 | 
						|||
| 
								 | 
							
											sq_var.set_vector(0, 1);
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										if(frmIndex >= 1 && !sq_var.get_vector(1)) {
							 | 
						|||
| 
								 | 
							
											sqr_CreatePooledObject(obj, "Effect/Animation/execution/run/1_dust_a_normal.ani", posX, posY - 1, posZ, dir);
							 | 
						|||
| 
								 | 
							
											sq_var.set_vector(1, 1);
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
										if(frmIndex >= 2 && !sq_var.get_vector(2)) {
							 | 
						|||
| 
								 | 
							
											sqr_CreatePooledObject(obj, "Effect/Animation/execution/run/26_dust_a_normal.ani", posX, posY + 50, posZ, dir);
							 | 
						|||
| 
								 | 
							
											sq_var.set_vector(2, 1);
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
										if(frmIndex >= 3 && !sq_var.get_vector(3)) {
							 | 
						|||
| 
								 | 
							
											sqr_CreatePooledObject(obj, "Effect/Animation/execution/run/1_dust_a_normal.ani", posX, posY - 1, posZ, dir);
							 | 
						|||
| 
								 | 
							
											sq_var.set_vector(3, 1);
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
										if(frmIndex >= 4 && !sq_var.get_vector(4)) {
							 | 
						|||
| 
								 | 
							
											sqr_CreatePooledObject(obj, "Effect/Animation/execution/run/26_dust_a_normal.ani", posX, posY + 50, posZ, dir);
							 | 
						|||
| 
								 | 
							
											sq_var.set_vector(4, 1);
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
										if(frmIndex >= 5 && !sq_var.get_vector(5)) {
							 | 
						|||
| 
								 | 
							
											sqr_CreatePooledObject(obj, "Effect/Animation/execution/run/1_dust_a_normal.ani", posX, posY - 1, posZ, dir);
							 | 
						|||
| 
								 | 
							
											sq_var.set_vector(5, 1);
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										//
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(subState == EXECUTION_SUB_STATE_LAST) {
							 | 
						|||
| 
								 | 
							
										//[use animation] `../../Effect/Animation/execution/run/26_dust_a_normal.ani` 	`3`
							 | 
						|||
| 
								 | 
							
										//[use animation] `../../Effect/Animation/execution/run/1_dust_a_normal.ani` 	`2`
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										//[create draw only object] 3 `3` 60 50 0
							 | 
						|||
| 
								 | 
							
										//[create draw only object] 1 `3` 30 50 0
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										//[create draw only object] 0 `2` 30 -1 0
							 | 
						|||
| 
								 | 
							
										//[create draw only object] 2 `2` 60 -1 0
							 | 
						|||
| 
								 | 
							
										//
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
										if(frmIndex >= 0 && !sq_var.get_vector(0)) {
							 | 
						|||
| 
								 | 
							
											local dstX = sq_GetDistancePos(posX, obj.getDirection(), 30);
							 | 
						|||
| 
								 | 
							
											sqr_CreatePooledObject(obj, "Effect/Animation/execution/run/1_dust_a_normal.ani", dstX, posY - 1, posZ, obj.getDirection());
							 | 
						|||
| 
								 | 
							
											sq_var.set_vector(0, 1);
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
										if(frmIndex >= 0 && !sq_var.get_vector(4)) {
							 | 
						|||
| 
								 | 
							
											local dstX = sq_GetDistancePos(posX, obj.getDirection(), 90);
							 | 
						|||
| 
								 | 
							
											sqr_CreatePooledObject(obj, "Effect/Animation/execution/last/drawOnly/drawOnlyBase.ani", dstX, posY + 1, posZ, obj.getDirection());
							 | 
						|||
| 
								 | 
							
											sq_var.set_vector(4, 1);
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										if(frmIndex >= 1 && !sq_var.get_vector(1)) {
							 | 
						|||
| 
								 | 
							
											local dstX = sq_GetDistancePos(posX, obj.getDirection(), 30);
							 | 
						|||
| 
								 | 
							
											sqr_CreatePooledObject(obj, "Effect/Animation/execution/run/26_dust_a_normal.ani", dstX, posY + 50, posZ, obj.getDirection());
							 | 
						|||
| 
								 | 
							
											sq_var.set_vector(1, 1);
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										if(frmIndex >= 2 && !sq_var.get_vector(2)) {
							 | 
						|||
| 
								 | 
							
											local dstX = sq_GetDistancePos(posX, obj.getDirection(), 60);
							 | 
						|||
| 
								 | 
							
											sqr_CreatePooledObject(obj, "Effect/Animation/execution/run/1_dust_a_normal.ani", dstX, posY - 1, posZ, obj.getDirection());
							 | 
						|||
| 
								 | 
							
											sq_var.set_vector(2, 1);
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										if(frmIndex >= 3 && !sq_var.get_vector(3)) {
							 | 
						|||
| 
								 | 
							
											local dstX = sq_GetDistancePos(posX, obj.getDirection(), 60);
							 | 
						|||
| 
								 | 
							
											sqr_CreatePooledObject(obj, "Effect/Animation/execution/run/26_dust_a_normal.ani", dstX, posY + 50, posZ, obj.getDirection());
							 | 
						|||
| 
								 | 
							
											sq_var.set_vector(3, 1);
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									if(obj.isMyControlObject())
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										if(subState == EXECUTION_SUB_STATE_RUN)
							 | 
						|||
| 
								 | 
							
										{	
							 | 
						|||
| 
								 | 
							
											local pAni = obj.sq_getCurrentAni();		
							 | 
						|||
| 
								 | 
							
											local currentT = pAni.getCurrentTime();
							 | 
						|||
| 
								 | 
							
											
							 | 
						|||
| 
								 | 
							
											
							 | 
						|||
| 
								 | 
							
											if (obj.sq_timer_.isOnEvent(currentT) == true)
							 | 
						|||
| 
								 | 
							
											{
							 | 
						|||
| 
								 | 
							
												sendSubState_Execution(obj,EXECUTION_SUB_STATE_LAST);
							 | 
						|||
| 
								 | 
							
											}
							 | 
						|||
| 
								 | 
							
											obj.setSkillCommandEnable(SKILL_EXECUTION,true);
							 | 
						|||
| 
								 | 
							
														
							 | 
						|||
| 
								 | 
							
											local b_useskill = obj.sq_IsEnterSkill(SKILL_EXECUTION);			
							 | 
						|||
| 
								 | 
							
											if(b_useskill != -1)
							 | 
						|||
| 
								 | 
							
												sendSubState_Execution(obj,EXECUTION_SUB_STATE_LAST);
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function onTimeEvent_Execution(obj, timeEventIndex, timeEventCount)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									if(obj.isMyControlObject())
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										local subState = obj.getSkillSubState();
							 | 
						|||
| 
								 | 
							
										if(subState == EXECUTION_SUB_STATE_RUN)
							 | 
						|||
| 
								 | 
							
										{	
							 | 
						|||
| 
								 | 
							
											local power = obj.sq_getPowerWithPassive(SKILL_EXECUTION, STATE_EXECUTION, 4,-1,1.0);	
							 | 
						|||
| 
								 | 
							
											sq_createAttackObjectWithPath(obj, "Character/Priest/Effect/Animation/execution/run/runDamage.ani","PassiveObject/Character/Priest/AttackInfo/excutionBox.atk",false,power,100,0,0,0);		
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									return false; // true贼 属寥 酝钦
							 | 
						|||
| 
								 | 
							
								} 
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function isExcutionGrabable(obj)
							 | 
						|||
| 
								 | 
							
								{ 		
							 | 
						|||
| 
								 | 
							
									local sq_var = obj.getVar();
							 | 
						|||
| 
								 | 
							
									local i=0;		
							 | 
						|||
| 
								 | 
							
									local objectsSize = sq_var.get_obj_vector_size();
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									for(;i<objectsSize;++i)
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										local damager = sq_var.get_obj_vector(i);
							 | 
						|||
| 
								 | 
							
										if(damager) {
							 | 
						|||
| 
								 | 
							
											if(sq_IsGrabable(obj,damager) && sq_IsHoldable(obj,damager)) //濩击热 毡朝 鼻鹧
							 | 
						|||
| 
								 | 
							
												return true;
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
									}	
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									return false;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function removeAllExcutionAppendage(obj)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									local sq_var = obj.getVar();  		
							 | 
						|||
| 
								 | 
							
									local i=0;		
							 | 
						|||
| 
								 | 
							
									local objectsSize = sq_var.get_obj_vector_size();
							 | 
						|||
| 
								 | 
							
									if(objectsSize <= 0)
							 | 
						|||
| 
								 | 
							
										return;
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									for(;i<objectsSize;++i)
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										local damager = sq_var.get_obj_vector(i);
							 | 
						|||
| 
								 | 
							
										if(damager)
							 | 
						|||
| 
								 | 
							
											CNSquirrelAppendage.sq_RemoveAppendage(damager, "Appendage/Character/executionAppendage.nut");
							 | 
						|||
| 
								 | 
							
									}		
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									sq_var.clear_obj_vector();
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function onEndCurrentAni_Execution(obj)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									local subState = obj.getSkillSubState();
							 | 
						|||
| 
								 | 
							
									local sq_var = obj.getVar();  
							 | 
						|||
| 
								 | 
							
									if(subState == EXECUTION_SUB_STATE_GRAB)
							 | 
						|||
| 
								 | 
							
									{			
							 | 
						|||
| 
								 | 
							
										local objectsSize = sq_var.get_obj_vector_size();
							 | 
						|||
| 
								 | 
							
										if(objectsSize > 0)
							 | 
						|||
| 
								 | 
							
										{			
							 | 
						|||
| 
								 | 
							
											//?问 螃粽薛?陛 ?涡绾桧贼 EXECUTION_SUB_STATE_TURNOVER 嬴栖贼 EXECUTION_SUB_STATE_GRAB_EX	
							 | 
						|||
| 
								 | 
							
											if(isExcutionGrabable(obj)) {
							 | 
						|||
| 
								 | 
							
												sendSubState_Execution(obj,EXECUTION_SUB_STATE_TURNOVER);
							 | 
						|||
| 
								 | 
							
											}
							 | 
						|||
| 
								 | 
							
											else {
							 | 
						|||
| 
								 | 
							
												sendSubState_Execution(obj,EXECUTION_SUB_STATE_GRAB_EX);
							 | 
						|||
| 
								 | 
							
											}
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										else
							 | 
						|||
| 
								 | 
							
										{	
							 | 
						|||
| 
								 | 
							
											sendSubState_Execution(obj,EXECUTION_SUB_STATE_FAILED);			
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(subState == EXECUTION_SUB_STATE_TURNOVER)
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										sendSubState_Execution(obj,EXECUTION_SUB_STATE_RUN);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										local gap = obj.sq_getIntData(SKILL_EXECUTION,4);
							 | 
						|||
| 
								 | 
							
										obj.setTimeEvent(0,gap,0,true);
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(subState == EXECUTION_SUB_STATE_RUN)
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										sendSubState_Execution(obj,EXECUTION_SUB_STATE_LAST);
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(subState == EXECUTION_SUB_STATE_LAST || subState == EXECUTION_SUB_STATE_GRAB_EX || subState == EXECUTION_SUB_STATE_FAILED)  //虞颤 部釭贼 stand
							 | 
						|||
| 
								 | 
							
									{		
							 | 
						|||
| 
								 | 
							
										obj.sq_addSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										removeAllExcutionAppendage(obj);		
							 | 
						|||
| 
								 | 
							
									}	
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// onAttack 属寥?热 殓栖棻
							 | 
						|||
| 
								 | 
							
								function onAttack_Execution(obj, damager, boundingBox)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									local sq_var = obj.getVar();  
							 | 
						|||
| 
								 | 
							
									local subState = obj.getSkillSubState();
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									if(subState == EXECUTION_SUB_STATE_GRAB)
							 | 
						|||
| 
								 | 
							
									{			
							 | 
						|||
| 
								 | 
							
										if(!CNSquirrelAppendage.sq_IsAppendAppendage(damager,"Appendage/Character/executionAppendage.nut")) // 桧嘐 称横 毡朝 拥菟擎 称桧虽 强朝棻.
							 | 
						|||
| 
								 | 
							
										{
							 | 
						|||
| 
								 | 
							
											local masterAppendage = CNSquirrelAppendage.sq_AppendAppendage(damager, obj, SKILL_EXECUTION, false, "Appendage/Character/executionAppendage.nut", true);
							 | 
						|||
| 
								 | 
							
											
							 | 
						|||
| 
								 | 
							
											if(masterAppendage) {
							 | 
						|||
| 
								 | 
							
												sq_HoldAndDelayDie(damager, obj, true, true, true, 300, 300, ENUM_DIRECTION_NEUTRAL , masterAppendage);
							 | 
						|||
| 
								 | 
							
												damager.setCurrentDirection(sq_GetOppositeDirection(obj.getDirection()));
							 | 
						|||
| 
								 | 
							
												
							 | 
						|||
| 
								 | 
							
												sq_var.push_obj_vector(damager);
							 | 
						|||
| 
								 | 
							
											}
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local isLastThrowMode = sq_var.getBool(EXC_READY_FOR_THROW);
							 | 
						|||
| 
								 | 
							
									if(isLastThrowMode && damager)
							 | 
						|||
| 
								 | 
							
										CNSquirrelAppendage.sq_RemoveAppendage(damager, "Appendage/Character/executionAppendage.nut");
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
								function onKeyFrameFlag_Execution(obj,flagIndex)
							 | 
						|||
| 
								 | 
							
								{	
							 | 
						|||
| 
								 | 
							
									local sq_var = obj.getVar();  		
							 | 
						|||
| 
								 | 
							
									local i=0;		
							 | 
						|||
| 
								 | 
							
									local objectsSize = sq_var.get_obj_vector_size();
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									// 赅苌 横?蛤虽缣 瞪殖
							 | 
						|||
| 
								 | 
							
									for(;i<objectsSize;++i)
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										local damager = sq_var.get_obj_vector(i);
							 | 
						|||
| 
								 | 
							
										local ao = sq_GetCNRDObjectToActiveObject(damager);		
							 | 
						|||
| 
								 | 
							
										if(ao) {
							 | 
						|||
| 
								 | 
							
											local appendage = ao.GetSquirrelAppendage("Appendage/Character/executionAppendage.nut");			
							 | 
						|||
| 
								 | 
							
											if(appendage)
							 | 
						|||
| 
								 | 
							
												appendage.setState(flagIndex,sq_GetGlobalIntVector());
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									if(flagIndex == 18) 
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(flagIndex == 30 && obj.isMyControlObject()) // 濩挤
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										local fScreen = sq_flashScreen(obj,80,0,0,150, sq_RGB(255,255,255), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
							 | 
						|||
| 
								 | 
							
										sq_addFlashScreen(fScreen,0,240,320,250, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);	
							 | 
						|||
| 
								 | 
							
										sq_SetShake(obj,6,400);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										sq_setFullScreenEffect(obj,"Character/Priest/Effect/Animation/execution/grabEx/finish.ani");	
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(flagIndex == 11) // 阶缣 顶溥 蔼
							 | 
						|||
| 
								 | 
							
									{	
							 | 
						|||
| 
								 | 
							
										sq_SetMyShake(obj,7,400);		
							 | 
						|||
| 
								 | 
							
										sq_CreateParticle("Character/Priest/Effect/Particle/ExcutionStonsSmall.ptl", obj, -200, 0, 0, true, 30, 0,2);		
							 | 
						|||
| 
								 | 
							
									}	
							 | 
						|||
| 
								 | 
							
									else if(flagIndex == 12) // 
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										local sq_var = obj.getVar();
							 | 
						|||
| 
								 | 
							
										local i=0;		
							 | 
						|||
| 
								 | 
							
										local objectsSize = sq_var.get_obj_vector_size();
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										local state = obj.sq_GetSTATE();
							 | 
						|||
| 
								 | 
							
										obj.sq_setAttackPowerWithPassive(SKILL_EXECUTION, state, 1,-1,1.0);
							 | 
						|||
| 
								 | 
							
										for(;i<objectsSize;++i)
							 | 
						|||
| 
								 | 
							
										{		
							 | 
						|||
| 
								 | 
							
											local damager = sq_GetCNRDObjectToCollisionObject(sq_var.get_obj_vector(i));
							 | 
						|||
| 
								 | 
							
											if(damager && sq_IsHoldable(obj,damager) && sq_IsGrabable(obj,damager)) 
							 | 
						|||
| 
								 | 
							
												sq_SendHitObjectPacket(obj,damager,0,0,0);
							 | 
						|||
| 
								 | 
							
										}	
							 | 
						|||
| 
								 | 
							
										obj.sq_setAttackPowerWithPassive(SKILL_EXECUTION, state, 2,-1,1.0);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(flagIndex == 19)
							 | 
						|||
| 
								 | 
							
										sq_SetMyShake(obj,4,80);
							 | 
						|||
| 
								 | 
							
									else if(flagIndex == 21)
							 | 
						|||
| 
								 | 
							
										sq_SetMyShake(obj,4,80);
							 | 
						|||
| 
								 | 
							
									else if(flagIndex == 23)
							 | 
						|||
| 
								 | 
							
										sq_SetMyShake(obj,4,80);
							 | 
						|||
| 
								 | 
							
									else if(flagIndex == 26)
							 | 
						|||
| 
								 | 
							
										sq_SetMyShake(obj,5,200);
							 | 
						|||
| 
								 | 
							
									else if(flagIndex == 32 && obj.isMyControlObject()) // 濩挤
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										local fScreen = sq_flashScreen(obj,80,0,0,150, sq_RGB(255,255,255), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
							 | 
						|||
| 
								 | 
							
										sq_addFlashScreen(fScreen,0,240,320,250, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);	
							 | 
						|||
| 
								 | 
							
										sq_SetShake(obj,6,400);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										sq_setFullScreenEffect(obj,"Character/Priest/Effect/Animation/execution/grabEx/finish.ani");	
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(flagIndex == 27 && obj.isMyControlObject())
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										local currentAni = obj.getCurrentAnimation();
							 | 
						|||
| 
								 | 
							
										local frameDelay = currentAni.getDelayBySpeedRate(1);
							 | 
						|||
| 
								 | 
							
										local fScreen = sq_flashScreen(obj,0,frameDelay*7,0, 200, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
							 | 
						|||
| 
								 | 
							
										sq_addFlashScreen(fScreen,0,0,frameDelay*2,100, sq_RGB(255,255,255), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);		
							 | 
						|||
| 
								 | 
							
										obj.sq_setCurrentAttackInfo(CUSTOM_ATTACKINFO_EXCUTION_6);
							 | 
						|||
| 
								 | 
							
										local state = obj.sq_GetSTATE();
							 | 
						|||
| 
								 | 
							
										obj.sq_setAttackPowerWithPassive(SKILL_EXECUTION, state, 6,-1,1.0);
							 | 
						|||
| 
								 | 
							
										obj.stopTimeEvent(0);	
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(flagIndex == 28)
							 | 
						|||
| 
								 | 
							
										sq_SetMyShake(obj,6,160);	
							 | 
						|||
| 
								 | 
							
									else if(flagIndex == 30) {
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
										if(obj.isMyControlObject()) {
							 | 
						|||
| 
								 | 
							
											sq_SetMyShake(obj,6,400);	
							 | 
						|||
| 
								 | 
							
											local currentAni = obj.getCurrentAnimation();
							 | 
						|||
| 
								 | 
							
											local frameDelay = currentAni.getDelayBySpeedRate(1);
							 | 
						|||
| 
								 | 
							
											local fScreen = sq_flashScreen(obj, frameDelay*2, frameDelay*5, frameDelay*3, 200, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										sq_CreateParticle("Character/Priest/Effect/Particle/ExcutionStonsLarge.ptl", obj, 180, 5, 250, true, 30, 0, 2);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										sq_var.setBool(EXC_READY_FOR_THROW,true);
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(flagIndex == 31) {
							 | 
						|||
| 
								 | 
							
										removeAllExcutionAppendage(obj);
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									return true;	
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								 |