472 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			472 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								S_DISASTER_0 <- 0
							 | 
						|||
| 
								 | 
							
								S_DISASTER_1 <- 1
							 | 
						|||
| 
								 | 
							
								S_DISASTER_2 <- 2
							 | 
						|||
| 
								 | 
							
								S_DISASTER_3 <- 3
							 | 
						|||
| 
								 | 
							
								S_DISASTER_4 <- 4
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								//750 // 学葆? 鼻鹧橾 阳, 等嘐虽 隶?睦
							 | 
						|||
| 
								 | 
							
								//500 // 学葆? 鼻鹧橾 阳, 学葆? 虽楼卫除 隶陛,ms 钦嫔
							 | 
						|||
| 
								 | 
							
								//2000 // 颤啪? 卫除 (ms 钦嫔)
							 | 
						|||
| 
								 | 
							
								//500 // 颤啃暧 x蹴 桧翕卫除
							 | 
						|||
| 
								 | 
							
								//500 // 颤啃暧 y蹴 桧翕卫除
							 | 
						|||
| 
								 | 
							
								//250 // 模辨给桧陛 瞳击 庄横菟桧朝 彰嫔(x蹴 虽荤)
							 | 
						|||
| 
								 | 
							
								//125 // 模辨给桧陛 瞳击 庄横菟桧朝 楼紫
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								SD_I_DAMAGE_INC <- 0 // 学葆? 鼻鹧橾 阳, 等嘐虽 隶?睦
							 | 
						|||
| 
								 | 
							
								SD_I_AWAKENING_INC <- 1 //// 学葆? 鼻鹧橾 阳, 学葆? 虽楼卫除 隶陛,ms 钦嫔
							 | 
						|||
| 
								 | 
							
								SD_I_TARGET_TIME <- 2 // 颤啪? 卫除 (ms 钦嫔)
							 | 
						|||
| 
								 | 
							
								SD_I_TARGET_MOV_X <- 3 // 颤啃暧 X蹴 桧翕卫除
							 | 
						|||
| 
								 | 
							
								SD_I_TARGET_MOV_Y <- 4 // 颤啃暧 y蹴 桧翕卫除
							 | 
						|||
| 
								 | 
							
								SD_I_TARGET_SUCK_LEN <- 5 // 模辨给桧陛 瞳击 庄横菟桧朝 彰嫔(x蹴 虽荤)
							 | 
						|||
| 
								 | 
							
								SD_I_TARGET_SUCK_VEL <- 6 // 模辨给桧陛 瞳击 庄横菟桧朝 楼紫
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// 蝶鉴 撮睡嫦翕 亵勒击 虏菟横舆朝 ?热殓栖棻.. 嫦翕 亵勒 state朝 桧嘐 模蝶缣怃 掘?肾横 毡蝗栖棻. 桧够缣怃 useskill娄 setstate蒂 虽姜?舆贼 腌栖棻.
							 | 
						|||
| 
								 | 
							
								function checkExecutableSkill_DisasterEx(obj)  
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									if(!obj) return false;
							 | 
						|||
| 
								 | 
							
									local b_useskill = obj.sq_IsUseSkill(SKILL_EX_DISASTER);
							 | 
						|||
| 
								 | 
							
									if(b_useskill) {
							 | 
						|||
| 
								 | 
							
										obj.sq_IntVectClear();
							 | 
						|||
| 
								 | 
							
										obj.sq_IntVectPush(S_DISASTER_0); // substate撮?
							 | 
						|||
| 
								 | 
							
										obj.sq_IntVectPush(obj.getDirection()); // substate撮?
							 | 
						|||
| 
								 | 
							
										obj.sq_addSetStatePacket(STATE_EX_DISASTER, STATE_PRIORITY_IGNORE_FORCE, true);
							 | 
						|||
| 
								 | 
							
										return true;
							 | 
						|||
| 
								 | 
							
									}	
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									return false;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// 蝶鉴嬴桧夔 ?撩? 亵勒击 评虽朝 ?热殓栖棻. true蒂 葬欐?贼 蝶鉴 嬴桧夔桧 ?撩?陛 腌栖棻. (嫦翕亵勒 state朝  模蝶缣怃 籀葬腌栖棻.)
							 | 
						|||
| 
								 | 
							
								function checkCommandEnable_DisasterEx(obj)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									if(!obj) return false;
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local state = obj.sq_GetSTATE();
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									if(state == STATE_ATTACK) {
							 | 
						|||
| 
								 | 
							
										return obj.sq_IsCommandEnable(SKILL_EX_DISASTER); // 念瘫潍缣怃朝 ?姜蝶鉴虏 警蜗桧 陛栋?栖棻. 蒙机濠:姜霞热 [2012.04.20] obj.sq_IsCommandEnable(SKILL_EARTH_QUAKE);
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									return true;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// state蒂 撮??坚 籀挤戏煎 菟横螃啪 腌栖棻. 陕谦 葬模蝶蒂 撮??栖棻. 
							 | 
						|||
| 
								 | 
							
								function onSetState_DisasterEx(obj, state, datas, isResetTimer)
							 | 
						|||
| 
								 | 
							
								{	
							 | 
						|||
| 
								 | 
							
									if(!obj) return;
							 | 
						|||
| 
								 | 
							
									local sq_var = obj.getVar();
							 | 
						|||
| 
								 | 
							
									local substate = obj.sq_getVectorData(datas, 0); // 罗廓箪 substate殓栖棻..	
							 | 
						|||
| 
								 | 
							
									local direction = obj.sq_getVectorData(datas, 1); // 罗廓箪 substate殓栖棻..	
							 | 
						|||
| 
								 | 
							
									obj.setSkillSubState(substate); //set substate
							 | 
						|||
| 
								 | 
							
									obj.sq_stopMove();
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
								    
							 | 
						|||
| 
								 | 
							
									sq_var.clear_vector();
							 | 
						|||
| 
								 | 
							
									sq_var.push_vector(0);	
							 | 
						|||
| 
								 | 
							
									sq_var.push_vector(0);
							 | 
						|||
| 
								 | 
							
									sq_var.push_vector(0);
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local posX = obj.getXPos();
							 | 
						|||
| 
								 | 
							
									local posY = obj.getYPos();
							 | 
						|||
| 
								 | 
							
									local posZ = obj.getZPos();
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
								//CUSTOM_ANI_EX_DISASTER_1		<- 118	  // EX蝶鉴 - 营懈1
							 | 
						|||
| 
								 | 
							
								//CUSTOM_ANI_EX_DISASTER_2		<- 119	  // EX蝶鉴 - 营懈1
							 | 
						|||
| 
								 | 
							
								//CUSTOM_ANI_EX_DISASTER_3		<- 120	  // EX蝶鉴 - 营懈1
							 | 
						|||
| 
								 | 
							
								//CUSTOM_ANI_EX_DISASTER_4		<- 121	  // EX蝶鉴 - 营懈1
							 | 
						|||
| 
								 | 
							
								//CUSTOM_ANI_EX_DISASTER_5		<- 122	  // EX蝶鉴 - 营懈1
							 | 
						|||
| 
								 | 
							
									obj.sq_setCurrentAttackInfo(CUSTOM_ATTACKINFO_DISASTER);
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local attack_rate = 1.0;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									//SD_I_DAMAGE_INC <- 0 // 学葆? 鼻鹧橾 阳, 等嘐虽 隶?睦
							 | 
						|||
| 
								 | 
							
									//SD_I_AWAKENING_INC <- 1 //// 学葆? 鼻鹧橾 阳, 学葆? 虽楼卫除 隶陛,ms 钦嫔
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									if(isAvengerAwakenning(obj)) {
							 | 
						|||
| 
								 | 
							
										local inc = obj.sq_getIntData(SKILL_EX_DISASTER, SD_I_DAMAGE_INC); // 颤啃暧 X蹴 桧翕卫除
							 | 
						|||
| 
								 | 
							
										local inc_rate = inc.tofloat() / 100.0;
							 | 
						|||
| 
								 | 
							
										print("\n inc_rate:" + inc_rate);
							 | 
						|||
| 
								 | 
							
										attack_rate += inc_rate;
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									obj.stopSound(7575);
							 | 
						|||
| 
								 | 
							
									obj.sq_setAttackPowerWithPassive(SKILL_EX_DISASTER, state, -1, 0, attack_rate);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
								    if(substate == S_DISASTER_0) {
							 | 
						|||
| 
								 | 
							
										if(isAvengerAwakenning(obj)) {
							 | 
						|||
| 
								 | 
							
											local ani = obj.getVar().GetAnimationMap("Disaster1", "Character/Priest/Animation/disasterEx/Disaster1.ani"); // 蝶监嬴夥颤 阳侥缣 谖睡缣怃 拥栖诡桧暮击 陛虽坚 谛捡 ?栖棻..
							 | 
						|||
| 
								 | 
							
											obj.setCurrentAnimation(ani);
							 | 
						|||
| 
								 | 
							
											local appendage = CNSquirrelAppendage.sq_AppendAppendage(obj, obj, SKILL_AVENGER_AWAKENING, false, "Appendage/Character/ap_avenger_awakening.nut", false);
							 | 
						|||
| 
								 | 
							
											if(appendage) { // 陕撩鼻鹧塭贼 陕撩卫除击 棺溥丑捡?栖棻.
							 | 
						|||
| 
								 | 
							
												local skill_level = obj.sq_getSkillLevel(SKILL_AVENGER_AWAKENING);
							 | 
						|||
| 
								 | 
							
												local t = sq_GetLevelData(obj, SKILL_AVENGER_AWAKENING, SL_CHANGE_TIME, skill_level);
							 | 
						|||
| 
								 | 
							
												local awakening_inc_t = obj.sq_getIntData(SKILL_EX_DISASTER, SD_I_AWAKENING_INC); // 学葆? 鼻鹧橾 阳, 学葆? 虽楼卫除 隶陛,ms 钦嫔
							 | 
						|||
| 
								 | 
							
												appendage.sq_var.set_vector(I_AVENGER_AWAKENING_TIME, t + awakening_inc_t);
							 | 
						|||
| 
								 | 
							
												appendage.sq_SetValidTime(t + awakening_inc_t); // 横?蛤虽 颤歜 撮?
							 | 
						|||
| 
								 | 
							
											}
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										else {
							 | 
						|||
| 
								 | 
							
											obj.sq_setCurrentAnimation(CUSTOM_ANI_EX_DISASTER_1);
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
								    
							 | 
						|||
| 
								 | 
							
										local pAni = obj.sq_getCurrentAni();		
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    else if(substate == S_DISASTER_1) {
							 | 
						|||
| 
								 | 
							
										obj.sq_setShake(obj, 3, 160);
							 | 
						|||
| 
								 | 
							
								    
							 | 
						|||
| 
								 | 
							
										if(isAvengerAwakenning(obj)) {
							 | 
						|||
| 
								 | 
							
											 // 蝶监嬴夥颤 阳侥缣 谖睡缣怃 拥栖诡桧暮击 陛虽坚 谛捡 ?栖棻..
							 | 
						|||
| 
								 | 
							
											local ani = obj.getVar().GetAnimationMap("Disaster2", "Character/Priest/Animation/disasterEx/Disaster2.ani");
							 | 
						|||
| 
								 | 
							
											obj.setCurrentAnimation(ani);
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										else {
							 | 
						|||
| 
								 | 
							
											obj.sq_setCurrentAnimation(CUSTOM_ANI_EX_DISASTER_2);
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
								    
							 | 
						|||
| 
								 | 
							
										/////////////////////////////////////////////
							 | 
						|||
| 
								 | 
							
										//if(obj.isMyControlObject()) {
							 | 
						|||
| 
								 | 
							
											//obj.sq_binaryData_startWrite();
							 | 
						|||
| 
								 | 
							
											//obj.sq_binaryData_writeDword(0);
							 | 
						|||
| 
								 | 
							
											//obj.sq_p00_sendCreatePassiveObjectPacket(24101, 0, 0, 0, 0);
							 | 
						|||
| 
								 | 
							
										//}
							 | 
						|||
| 
								 | 
							
									    ///////////////////////////////////////////////	
							 | 
						|||
| 
								 | 
							
										local pA = obj.sq_getCurrentAni();
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										local iX = posX;
							 | 
						|||
| 
								 | 
							
										local iY = posY;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
										//int offsetX = lua_getIntData(SKILL_SPIRAL_COLUMN_EX, 0);
							 | 
						|||
| 
								 | 
							
										//offsetX = lua_getDistancePos(iX, sq_GetDirection(this), offsetX);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
										//int vX = lua_getIntData(SKILL_SPIRAL_COLUMN_EX, 1);
							 | 
						|||
| 
								 | 
							
										//int vY = 0;
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
									//SD_I_DAMAGE_INC <- 0 // 学葆? 鼻鹧橾 阳, 等嘐虽 隶?睦
							 | 
						|||
| 
								 | 
							
									//SD_I_AWAKENING_INC <- 1 //// 学葆? 鼻鹧橾 阳, 学葆? 虽楼卫除 隶陛,ms 钦嫔
							 | 
						|||
| 
								 | 
							
									//SD_I_TARGET_TIME <- 2 // 颤啪? 卫除 (ms 钦嫔)
							 | 
						|||
| 
								 | 
							
									//SD_I_TARGET_MOV_X <- 3 // 颤啃暧 X蹴 桧翕卫除
							 | 
						|||
| 
								 | 
							
									//SD_I_TARGET_MOV_Y <- 4 // 颤啃暧 y蹴 桧翕卫除
							 | 
						|||
| 
								 | 
							
									//SD_I_TARGET_SUCK_LEN <- 5 // 模辨给桧陛 瞳击 庄横菟桧朝 彰嫔(x蹴 虽荤)
							 | 
						|||
| 
								 | 
							
									//SD_I_TARGET_SUCK_VEL <- 6 // 模辨给桧陛 瞳击 庄横菟桧朝 楼紫
							 | 
						|||
| 
								 | 
							
									//
							 | 
						|||
| 
								 | 
							
										//
							 | 
						|||
| 
								 | 
							
										local vX = obj.sq_getIntData(SKILL_EX_DISASTER, SD_I_TARGET_MOV_X); // 颤啃暧 X蹴 桧翕卫除
							 | 
						|||
| 
								 | 
							
										local vY = obj.sq_getIntData(SKILL_EX_DISASTER, SD_I_TARGET_MOV_Y); // 颤啃暧 Y蹴 桧翕卫除
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
										obj.sq_addAttractAimPointMark(iX, iY, vX, vY);
							 | 
						|||
| 
								 | 
							
										//450	// 庄横菟桧朝 彰嫔 (x蹴 虽荤)
							 | 
						|||
| 
								 | 
							
										//180	// 庄横菟桧朝 瞳暧 譆渠 堪桧
							 | 
						|||
| 
								 | 
							
										local range = obj.sq_getIntData(SKILL_EX_DISASTER, SD_I_TARGET_SUCK_LEN); // 模辨给桧陛 瞳击 庄横菟桧朝 彰嫔(x蹴 虽荤)
							 | 
						|||
| 
								 | 
							
										local suck_vel = obj.sq_getIntData(SKILL_EX_DISASTER, SD_I_TARGET_SUCK_VEL); // 模辨给桧陛 瞳击 庄横菟桧朝 楼紫
							 | 
						|||
| 
								 | 
							
										obj.sq_setAttractAimInfo(suck_vel, suck_vel, range / 2, 180);
							 | 
						|||
| 
								 | 
							
										//obj.sq_setAttractAimInfo(91, 113, range / 2, 180);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    else if(substate == S_DISASTER_2) {
							 | 
						|||
| 
								 | 
							
								    //
							 | 
						|||
| 
								 | 
							
										//CUSTOM_ATTACKINFO_DISASTER
							 | 
						|||
| 
								 | 
							
								   		obj.sq_setCurrentAttackInfo(CUSTOM_ATTACKINFO_DISASTER);
							 | 
						|||
| 
								 | 
							
								   		
							 | 
						|||
| 
								 | 
							
										if(isAvengerAwakenning(obj)) {
							 | 
						|||
| 
								 | 
							
											 // 蝶监嬴夥颤 阳侥缣 谖睡缣怃 拥栖诡桧暮击 陛虽坚 谛捡 ?栖棻..
							 | 
						|||
| 
								 | 
							
											local ani = obj.getVar().GetAnimationMap("Disaster3", "Character/Priest/Animation/disasterEx/Disaster3.ani");
							 | 
						|||
| 
								 | 
							
											obj.setCurrentAnimation(ani);
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										else {
							 | 
						|||
| 
								 | 
							
											obj.sq_setCurrentAnimation(CUSTOM_ANI_EX_DISASTER_3);
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										obj.sq_PlaySound("DISASTER_CIRCLE_LOOP", 7575);
							 | 
						|||
| 
								 | 
							
								   		
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    else if(substate == S_DISASTER_3) {
							 | 
						|||
| 
								 | 
							
								    
							 | 
						|||
| 
								 | 
							
										if(isAvengerAwakenning(obj)) {
							 | 
						|||
| 
								 | 
							
											 // 蝶监嬴夥颤 阳侥缣 谖睡缣怃 拥栖诡桧暮击 陛虽坚 谛捡 ?栖棻..
							 | 
						|||
| 
								 | 
							
											local ani = obj.getVar().GetAnimationMap("Disaster4", "Character/Priest/Animation/disasterEx/Disaster4.ani");
							 | 
						|||
| 
								 | 
							
											obj.setCurrentAnimation(ani);
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										else {
							 | 
						|||
| 
								 | 
							
											obj.sq_setCurrentAnimation(CUSTOM_ANI_EX_DISASTER_4);
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
								    
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    else if(substate == S_DISASTER_4) {
							 | 
						|||
| 
								 | 
							
										if(isAvengerAwakenning(obj)) {
							 | 
						|||
| 
								 | 
							
											 // 蝶监嬴夥颤 阳侥缣 谖睡缣怃 拥栖诡桧暮击 陛虽坚 谛捡 ?栖棻..
							 | 
						|||
| 
								 | 
							
											local ani = obj.getVar().GetAnimationMap("Disaster5", "Character/Priest/Animation/disasterEx/Disaster5.ani");
							 | 
						|||
| 
								 | 
							
											obj.setCurrentAnimation(ani);
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										else {
							 | 
						|||
| 
								 | 
							
											obj.sq_setCurrentAnimation(CUSTOM_ANI_EX_DISASTER_5);
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// irdcharacter缣怃  setstate() -> IRDActiveObject::setState -> aftersetstate() 桧楛牖怃缣怃 葆虽虞 setstate殓栖棻. skill?撩缣 评塭怃 ?轿? ?蹂陛 
							 | 
						|||
| 
								 | 
							
								// 毡棻贼 桧 ?热蒂 桧辨?栖棻.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function onAfterSetState_DisasterEx(obj, state, datas, isResetTimer)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									if(!obj) return;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// onbeforeattack 属寥?热 殓栖棻
							 | 
						|||
| 
								 | 
							
								function onBeforeAttack_DisasterEx(obj, damager, boundingBox)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// loop 睡碟殓栖棻 ismycontrol煎 马谆虽 强擎 翱念胀 赅苌 object菟桧 桧够击 剪纂啪腌栖棻.
							 | 
						|||
| 
								 | 
							
								function onProc_DisasterEx(obj)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									if(!obj) return;
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local substate = obj.getSkillSubState();
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local posX = obj.getXPos();
							 | 
						|||
| 
								 | 
							
									local posY = obj.getYPos();
							 | 
						|||
| 
								 | 
							
									local posZ = obj.getZPos();
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local sq_var = obj.getVar();
							 | 
						|||
| 
								 | 
							
									local pAni = obj.sq_getCurrentAni();
							 | 
						|||
| 
								 | 
							
								    local frmIndex = obj.sq_ani_GetCurrentFrameIndex(pAni);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									local currentT = sq_GetCurrentTime(pAni);
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
								    if(substate == S_DISASTER_0) {
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    else if(substate == S_DISASTER_1) {
							 | 
						|||
| 
								 | 
							
										if(frmIndex >= 0) {
							 | 
						|||
| 
								 | 
							
								    		local flag = sq_var.get_vector(0);
							 | 
						|||
| 
								 | 
							
								    		if(!flag) {
							 | 
						|||
| 
								 | 
							
												local appendage = CNSquirrelAppendage.sq_AppendAppendage(obj, obj, SKILL_EX_DISASTER, true, "Appendage/Character/ap_avenger_effect.nut", true);
							 | 
						|||
| 
								 | 
							
												sq_var.set_vector(0, 1);
							 | 
						|||
| 
								 | 
							
											}
							 | 
						|||
| 
								 | 
							
									   }
							 | 
						|||
| 
								 | 
							
									   //isAvengerAwakenning()
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    else if(substate == S_DISASTER_2) {
							 | 
						|||
| 
								 | 
							
										local stateTimer = obj.sq_getStateTimer();		
							 | 
						|||
| 
								 | 
							
										//SD_I_DAMAGE_INC <- 0 // 学葆? 鼻鹧橾 阳, 等嘐虽 隶?睦
							 | 
						|||
| 
								 | 
							
										//SD_I_AWAKENING_INC <- 1 //// 学葆? 鼻鹧橾 阳, 学葆? 虽楼卫除 隶陛,ms 钦嫔
							 | 
						|||
| 
								 | 
							
										//SD_I_TARGET_TIME <- 2 // 颤啪? 卫除 (ms 钦嫔)
							 | 
						|||
| 
								 | 
							
										//SD_I_TARGET_MOV_X <- 3 // 颤啃暧 X蹴 桧翕卫除
							 | 
						|||
| 
								 | 
							
										//SD_I_TARGET_MOV_Y <- 4 // 颤啃暧 y蹴 桧翕卫除
							 | 
						|||
| 
								 | 
							
										//SD_I_TARGET_SUCK_LEN <- 5 // 模辨给桧陛 瞳击 庄横菟桧朝 彰嫔(x蹴 虽荤)
							 | 
						|||
| 
								 | 
							
										//SD_I_TARGET_SUCK_VEL <- 6 // 模辨给桧陛 瞳击 庄横菟桧朝 楼紫
							 | 
						|||
| 
								 | 
							
										//local t = 1000;
							 | 
						|||
| 
								 | 
							
										local t = obj.sq_getIntData(SKILL_EX_DISASTER, SD_I_TARGET_TIME); // 颤啪? 卫除 (ms 钦嫔)
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										//print("\n stateTimer:" + stateTimer);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										if(stateTimer > (t - 750)) {
							 | 
						|||
| 
								 | 
							
								    		local flag = sq_var.get_vector(1);
							 | 
						|||
| 
								 | 
							
								    		if(!flag) {				
							 | 
						|||
| 
								 | 
							
												local iX = obj.getXPos();
							 | 
						|||
| 
								 | 
							
												local iY = obj.getYPos();
							 | 
						|||
| 
								 | 
							
												local iPX = obj.sq_getAttractAimPosX(iX,iY, false);
							 | 
						|||
| 
								 | 
							
												local iPY = obj.sq_getAttractAimPosY(iX,iY, false) + 2;
							 | 
						|||
| 
								 | 
							
												
							 | 
						|||
| 
								 | 
							
												print("\n posX:" + posX + " posY:" + posY + " aimposX:" + iPX + " aimposY:" + iPY);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
												sq_MoveToNearMovablePos(obj, iPX, iPY, 0, iX, iY, posZ, 200, -1, 3);
							 | 
						|||
| 
								 | 
							
												obj.sq_removeAttractAimPointMark();
							 | 
						|||
| 
								 | 
							
												sq_var.set_vector(1, 1);
							 | 
						|||
| 
								 | 
							
											}
							 | 
						|||
| 
								 | 
							
									   }
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										if(stateTimer > t) {
							 | 
						|||
| 
								 | 
							
											if(obj.isMyControlObject()) {
							 | 
						|||
| 
								 | 
							
												obj.sq_IntVectClear();
							 | 
						|||
| 
								 | 
							
												obj.sq_IntVectPush(S_DISASTER_3);
							 | 
						|||
| 
								 | 
							
												obj.sq_IntVectPush(obj.getDirection()); // substate撮?
							 | 
						|||
| 
								 | 
							
												obj.sq_addSetStatePacket(STATE_EX_DISASTER, STATE_PRIORITY_IGNORE_FORCE, true);
							 | 
						|||
| 
								 | 
							
											}
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
								    
							 | 
						|||
| 
								 | 
							
								    }	
							 | 
						|||
| 
								 | 
							
								    else if(substate == S_DISASTER_3) {
							 | 
						|||
| 
								 | 
							
										if(frmIndex >= 5) {
							 | 
						|||
| 
								 | 
							
								    		local flag = sq_var.get_vector(0);
							 | 
						|||
| 
								 | 
							
								    		if(!flag) {
							 | 
						|||
| 
								 | 
							
												if(obj.isMyControlObject()) {
							 | 
						|||
| 
								 | 
							
												
							 | 
						|||
| 
								 | 
							
													//SD_I_DAMAGE_INC <- 0 // 学葆? 鼻鹧橾 阳, 等嘐虽 隶?睦
							 | 
						|||
| 
								 | 
							
													//SD_I_AWAKENING_INC <- 1 //// 学葆? 鼻鹧橾 阳, 学葆? 虽楼卫除 隶陛,ms 钦嫔
							 | 
						|||
| 
								 | 
							
													
							 | 
						|||
| 
								 | 
							
													local attack_rate = 1.0;
							 | 
						|||
| 
								 | 
							
													if(isAvengerAwakenning(obj)) {
							 | 
						|||
| 
								 | 
							
														local inc = obj.sq_getIntData(SKILL_EX_DISASTER, SD_I_DAMAGE_INC); // 颤啃暧 X蹴 桧翕卫除
							 | 
						|||
| 
								 | 
							
														local inc_rate = inc.tofloat() / 100.0;
							 | 
						|||
| 
								 | 
							
														attack_rate += inc_rate;
							 | 
						|||
| 
								 | 
							
													}
							 | 
						|||
| 
								 | 
							
													
							 | 
						|||
| 
								 | 
							
													local bonus_rate = obj.sq_getBonusRateWithPassive(SKILL_EX_DISASTER, STATE_EX_DISASTER, 1, attack_rate);
							 | 
						|||
| 
								 | 
							
													
							 | 
						|||
| 
								 | 
							
													obj.sq_binaryData_startWrite();
							 | 
						|||
| 
								 | 
							
													obj.sq_binaryData_writeDword(bonus_rate);
							 | 
						|||
| 
								 | 
							
													obj.sq_p00_sendCreatePassiveObjectPacket(24109, 0, 0, 0, 0); // ?嫦
							 | 
						|||
| 
								 | 
							
												}
							 | 
						|||
| 
								 | 
							
												
							 | 
						|||
| 
								 | 
							
												
							 | 
						|||
| 
								 | 
							
												if(isAvengerAwakenning(obj)) {
							 | 
						|||
| 
								 | 
							
													//local particleCreater = sq_var.GetparticleCreaterMap("GuillotineSub", "PassiveObject/Character/Thief/Particle/GuillotineSub.ptl", obj);
							 | 
						|||
| 
								 | 
							
													local particleCreater = sq_var.GetparticleCreaterMap("GuillotineSub6", "Character/Priest/Effect/Particle/DisasterStonsSmall.ptl", obj);
							 | 
						|||
| 
								 | 
							
													particleCreater.Restart(0);
							 | 
						|||
| 
								 | 
							
													//local dstX = sq_GetDistancePos(posX, obj.getDirection(), -20);				
							 | 
						|||
| 
								 | 
							
													particleCreater.SetPos(posX, posY, posZ);
							 | 
						|||
| 
								 | 
							
													sq_AddParticleObject(obj, particleCreater);
							 | 
						|||
| 
								 | 
							
													
							 | 
						|||
| 
								 | 
							
													obj.sq_PlaySound("PR_DGUARDIAN_DISASTER"); // 学葆? 渗褐 ? 葆虽虞 阶缣 睡??貊 廓偃舰阳 尔桧蝶
							 | 
						|||
| 
								 | 
							
												}
							 | 
						|||
| 
								 | 
							
												else {				
							 | 
						|||
| 
								 | 
							
													obj.sq_PlaySound("PR_DISASTER"); // 葆虽虞 阶缣 睡??貊 廓偃舰阳 尔桧蝶
							 | 
						|||
| 
								 | 
							
												}
							 | 
						|||
| 
								 | 
							
												
							 | 
						|||
| 
								 | 
							
												local fScreen = sq_flashScreen(obj,0,320,320,200, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
												obj.sq_setShake(obj, 6, 320);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
												obj.sq_removeAttractAimPointMark();
							 | 
						|||
| 
								 | 
							
												sq_var.set_vector(0, 1);
							 | 
						|||
| 
								 | 
							
											}
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
								    
							 | 
						|||
| 
								 | 
							
								    }	
							 | 
						|||
| 
								 | 
							
								    else if(substate == S_DISASTER_4) {
							 | 
						|||
| 
								 | 
							
								    }	
							 | 
						|||
| 
								 | 
							
								    
							 | 
						|||
| 
								 | 
							
								    
							 | 
						|||
| 
								 | 
							
								    
							 | 
						|||
| 
								 | 
							
								    if(substate == S_DISASTER_4) {
							 | 
						|||
| 
								 | 
							
										if(frmIndex >= 4) {
							 | 
						|||
| 
								 | 
							
								    		local flag = sq_var.get_vector(0);
							 | 
						|||
| 
								 | 
							
								    		if(!flag) {
							 | 
						|||
| 
								 | 
							
												local appendage = CNSquirrelAppendage.sq_AppendAppendage(obj, obj, SKILL_EX_DISASTER, true, "Appendage/Character/ap_avenger_effect.nut", true);
							 | 
						|||
| 
								 | 
							
												sq_var.set_vector(0, 1);
							 | 
						|||
| 
								 | 
							
											}
							 | 
						|||
| 
								 | 
							
									   }
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// loop 睡碟殓栖棻 ismycontrol ?蝶?陛 狱樯桧 object陛 桧够击 菟横骨栖棻. setstate 撮?桧釭 ?卫粽螃粽薛? 当撩 , 蛔蛔 籀葬?栖棻.
							 | 
						|||
| 
								 | 
							
								function onProcCon_DisasterEx(obj)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									if(!obj) return;
							 | 
						|||
| 
								 | 
							
									local pAni = obj.sq_getCurrentAni();
							 | 
						|||
| 
								 | 
							
									local bEnd = obj.sq_ani_IsEnd(pAni);
							 | 
						|||
| 
								 | 
							
								    local frmIndex = obj.sq_ani_GetCurrentFrameIndex(pAni);
							 | 
						|||
| 
								 | 
							
									local sq_var = obj.getVar();
							 | 
						|||
| 
								 | 
							
									//
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    local subState = obj.getSkillSubState();
							 | 
						|||
| 
								 | 
							
								        
							 | 
						|||
| 
								 | 
							
								    if(subState == S_DISASTER_1) {
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    else if(subState == S_DISASTER_2) {
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    else if(subState == S_DISASTER_3) {
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									if(bEnd) {
							 | 
						|||
| 
								 | 
							
									    if(subState == S_DISASTER_0) {
							 | 
						|||
| 
								 | 
							
											obj.sq_IntVectClear();
							 | 
						|||
| 
								 | 
							
											obj.sq_IntVectPush(S_DISASTER_1);
							 | 
						|||
| 
								 | 
							
											obj.sq_IntVectPush(obj.getDirection()); // substate撮?
							 | 
						|||
| 
								 | 
							
											obj.sq_addSetStatePacket(STATE_EX_DISASTER, STATE_PRIORITY_IGNORE_FORCE, true);
							 | 
						|||
| 
								 | 
							
									    }
							 | 
						|||
| 
								 | 
							
									    else if(subState == S_DISASTER_1) {
							 | 
						|||
| 
								 | 
							
											obj.sq_IntVectClear();
							 | 
						|||
| 
								 | 
							
											obj.sq_IntVectPush(S_DISASTER_2);
							 | 
						|||
| 
								 | 
							
											obj.sq_IntVectPush(obj.getDirection()); // substate撮?
							 | 
						|||
| 
								 | 
							
											obj.sq_addSetStatePacket(STATE_EX_DISASTER, STATE_PRIORITY_IGNORE_FORCE, true);
							 | 
						|||
| 
								 | 
							
									    }
							 | 
						|||
| 
								 | 
							
									    else if(subState == S_DISASTER_2) {
							 | 
						|||
| 
								 | 
							
									    }
							 | 
						|||
| 
								 | 
							
									    else if(subState == S_DISASTER_3) {
							 | 
						|||
| 
								 | 
							
											obj.sq_IntVectClear();
							 | 
						|||
| 
								 | 
							
											obj.sq_IntVectPush(S_DISASTER_4);
							 | 
						|||
| 
								 | 
							
											obj.sq_IntVectPush(obj.getDirection()); // substate撮?
							 | 
						|||
| 
								 | 
							
											obj.sq_addSetStatePacket(STATE_EX_DISASTER, STATE_PRIORITY_IGNORE_FORCE, true);
							 | 
						|||
| 
								 | 
							
									    }
							 | 
						|||
| 
								 | 
							
									    else if(subState == S_DISASTER_4) {
							 | 
						|||
| 
								 | 
							
											obj.sq_addSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false);
							 | 
						|||
| 
								 | 
							
									    }
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// state谦猿谛 翕卫缣 ?廓 ?轿肾朝 ?热殓栖棻. oldstate陛 谦猿肾朝 state殓栖棻. 鼠树陛 嫦饵胀匙桧 毡剪釭 谦猿籀葬腆匙桧 毡棻贼 桧够缣怃 籀葬?栖棻.
							 | 
						|||
| 
								 | 
							
								function onEndState_DisasterEx(obj, new_state)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									if(!obj) return;
							 | 
						|||
| 
								 | 
							
									if(new_state != STATE_EX_DISASTER) {
							 | 
						|||
| 
								 | 
							
										obj.sq_removeAttractAimPointMark();
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									obj.stopSound(7575);
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// onAttack 属寥?热 殓栖棻
							 | 
						|||
| 
								 | 
							
								function onAttack_DisasterEx(obj, damager, boundingBox)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// onAfterAttack 属寥?热 殓栖棻
							 | 
						|||
| 
								 | 
							
								function onAfterAttack_DisasterEx(obj, damager, boundingBox)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// onBeforeDamage 属寥?热 殓栖棻
							 | 
						|||
| 
								 | 
							
								function onBeforeDamage_DisasterEx(obj, attacker, boundingBox)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// onDamage 属寥?热 殓栖棻
							 | 
						|||
| 
								 | 
							
								function onDamage_DisasterEx(obj, attacker, boundingBox)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// onAfterDamage 属寥?热 殓栖棻
							 | 
						|||
| 
								 | 
							
								function onAfterDamage_DisasterEx(obj, attacker, boundingBox)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function getScrollBasisPos_DisasterEx(obj)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									if(!obj) return;
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local substate = obj.getSkillSubState();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									if(substate == S_DISASTER_2 || substate == S_DISASTER_1) {
							 | 
						|||
| 
								 | 
							
										if(obj.isMyControlObject()) {
							 | 
						|||
| 
								 | 
							
											local iX = obj.getXPos();
							 | 
						|||
| 
								 | 
							
											local iY = obj.getYPos();
							 | 
						|||
| 
								 | 
							
											local iPX = obj.sq_getAttractAimPosX(iX,iY, false);
							 | 
						|||
| 
								 | 
							
											local iPY = obj.sq_getAttractAimPosY(iX,iY, false);
							 | 
						|||
| 
								 | 
							
											obj.sq_SetCameraScrollPosition(iPX, iPY, 0);
							 | 
						|||
| 
								 | 
							
											return true;
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									return false;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								 |