484 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			484 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| 
								 | 
							
								/************************************************
							 | 
						||
| 
								 | 
							
								************************************************
							 | 
						||
| 
								 | 
							
								// 议葛搅 嫔纂缣怃 当撩肾朝 赎 ?嫦 螃粽薛?
							 | 
						||
| 
								 | 
							
								************************************************
							 | 
						||
| 
								 | 
							
								************************************************/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// ?热赀檩 牖怃煎 嫦翕脾
							 | 
						||
| 
								 | 
							
								// 楼撩嫦翕缣 暧?怃 摹鸥胀 楼撩桧 陛潍 葆虽虞缣 嫦翕腌栖棻.
							 | 
						||
| 
								 | 
							
								SUB_STATE_ELEMENTAL_BUSTER_START	<- 0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								VAR_ELEMENTAL_BUSTER_COUNT			<- 0;
							 | 
						||
| 
								 | 
							
								VAR_ELEMENTAL_BUSTER_TYPE			<- 1;
							 | 
						||
| 
								 | 
							
								VAR_ELEMENTAL_BUSTER_IS_LAST		<- 2;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function isElementalBusterCastingState(subState)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									return subState%2 == 0;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function isLastElementalBusterAttack(obj)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									local var = obj.getVar();
							 | 
						||
| 
								 | 
							
									local count = var.getInt(VAR_ELEMENTAL_BUSTER_COUNT);		
							 | 
						||
| 
								 | 
							
									local maxCount = obj.sq_GetLevelData(SKILL_ELEMENTAL_BUSTER, 4);
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									if(count+1 >= maxCount)
							 | 
						||
| 
								 | 
							
										return true;
							 | 
						||
| 
								 | 
							
									return false;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function getStartElementalBuster(element, totalCount)
							 | 
						||
| 
								 | 
							
								{	
							 | 
						||
| 
								 | 
							
									if(element == ENUM_ELEMENT_NONE)
							 | 
						||
| 
								 | 
							
										return ENUM_ELEMENT_FIRE;
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
									if (element == ENUM_ELEMENT_FIRE)
							 | 
						||
| 
								 | 
							
										element = ENUM_ELEMENT_LIGHT;
							 | 
						||
| 
								 | 
							
									else if (element == ENUM_ELEMENT_WATER)
							 | 
						||
| 
								 | 
							
										element = ENUM_ELEMENT_FIRE;
							 | 
						||
| 
								 | 
							
									else if (element == ENUM_ELEMENT_DARK)
							 | 
						||
| 
								 | 
							
										element = ENUM_ELEMENT_WATER;
							 | 
						||
| 
								 | 
							
									else if (element == ENUM_ELEMENT_LIGHT)
							 | 
						||
| 
								 | 
							
										element = ENUM_ELEMENT_DARK;
							 | 
						||
| 
								 | 
							
												
							 | 
						||
| 
								 | 
							
									totalCount = totalCount-1;
							 | 
						||
| 
								 | 
							
									if(totalCount <= 1)
							 | 
						||
| 
								 | 
							
										return element;
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
									return getStartElementalBuster(element, totalCount)
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// 县溯诠骁 帼蝶搅 蝶鉴嫦翕
							 | 
						||
| 
								 | 
							
								function checkExecutableSkill_ElementalBuster(obj)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									if (!obj) return false;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									local isUseSkill = obj.sq_IsUseSkill(SKILL_ELEMENTAL_BUSTER);
							 | 
						||
| 
								 | 
							
									if (isUseSkill)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										// ?营 摹鸥胀 楼撩擎, 陛潍 葆虽虞缣 嫦翕?棻.
							 | 
						||
| 
								 | 
							
										local element = obj.getThrowElement();
							 | 
						||
| 
								 | 
							
										local maxCount = obj.sq_GetLevelData(SKILL_ELEMENTAL_BUSTER, 4);
							 | 
						||
| 
								 | 
							
										element = getStartElementalBuster(element, maxCount);
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										printc("element : "+ element);
							 | 
						||
| 
								 | 
							
										obj.sq_IntVectClear();
							 | 
						||
| 
								 | 
							
										obj.sq_IntVectPush(SUB_STATE_ELEMENTAL_BUSTER_START);		
							 | 
						||
| 
								 | 
							
										obj.sq_IntVectPush(element);
							 | 
						||
| 
								 | 
							
										obj.sq_AddSetStatePacket(STATE_ELEMENTAL_BUSTER, STATE_PRIORITY_IGNORE_FORCE, true);
							 | 
						||
| 
								 | 
							
										return true;
							 | 
						||
| 
								 | 
							
									}	
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									return false;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function checkCommandEnable_ElementalBuster(obj)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									if(!obj) return false;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									local state = obj.sq_GetState();
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									if(state == STATE_ATTACK)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										return obj.sq_IsCommandEnable(SKILL_ELEMENTAL_BUSTER); // 念瘫潍缣怃朝 ?姜蝶鉴虏 警蜗桧 陛栋?栖棻. 蒙机濠:姜霞热 [2012.04.20] obj.sq_IsCommandEnable(SKILL_BROKENARROW);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									return true;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function onProc_ElementalBuster(obj)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									if (!obj) return;	
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// state蒂 撮??坚 籀挤戏煎 菟横螃啪 腌栖棻. 陕谦 葬模蝶蒂 撮??栖棻. 
							 | 
						||
| 
								 | 
							
								function onSetState_ElementalBuster(obj, state, datas, isResetTimer)
							 | 
						||
| 
								 | 
							
								{	
							 | 
						||
| 
								 | 
							
									if (!obj) return;
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
									local var = obj.getVar();
							 | 
						||
| 
								 | 
							
									local subState = obj.sq_GetVectorData(datas, 0);
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									local count = 0;
							 | 
						||
| 
								 | 
							
									local isLast = false;
							 | 
						||
| 
								 | 
							
									local element = ENUM_ELEMENT_FIRE;
							 | 
						||
| 
								 | 
							
									if (subState == SUB_STATE_ELEMENTAL_BUSTER_START)
							 | 
						||
| 
								 | 
							
									{		
							 | 
						||
| 
								 | 
							
										element = obj.sq_GetVectorData(datas, 1);
							 | 
						||
| 
								 | 
							
										var.setInt(VAR_ELEMENTAL_BUSTER_COUNT,0);
							 | 
						||
| 
								 | 
							
										var.setInt(VAR_ELEMENTAL_BUSTER_TYPE, element);
							 | 
						||
| 
								 | 
							
										var.setBool(VAR_ELEMENTAL_BUSTER_IS_LAST, false);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									else
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										element = var.getInt(VAR_ELEMENTAL_BUSTER_TYPE);
							 | 
						||
| 
								 | 
							
										count = var.getInt(VAR_ELEMENTAL_BUSTER_COUNT);
							 | 
						||
| 
								 | 
							
										isLast = var.getBool(VAR_ELEMENTAL_BUSTER_IS_LAST);	
							 | 
						||
| 
								 | 
							
									}	
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									local isCast = isElementalBusterCastingState(subState);
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									obj.setSkillSubState(subState);
							 | 
						||
| 
								 | 
							
									obj.sq_SetStaticMoveInfo(0, 0, 0, false);
							 | 
						||
| 
								 | 
							
									obj.sq_SetStaticMoveInfo(1, 0, 0, false);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									local animationIndex = 0;
							 | 
						||
| 
								 | 
							
									local soundTag = "";
							 | 
						||
| 
								 | 
							
									local passiveObjectIndex = 0;
							 | 
						||
| 
								 | 
							
									if (element == ENUM_ELEMENT_FIRE)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										animationIndex = isCast ? 85 : 86;
							 | 
						||
| 
								 | 
							
										passiveObjectIndex = 24290;
							 | 
						||
| 
								 | 
							
										soundTag = "EBUSTER_FIRE";
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									else if (element == ENUM_ELEMENT_WATER)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										animationIndex = isCast ? 87 : 88;
							 | 
						||
| 
								 | 
							
										passiveObjectIndex = 24293;
							 | 
						||
| 
								 | 
							
										soundTag = "EBUSTER_ICE";
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									else if (element == ENUM_ELEMENT_DARK)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										animationIndex = isCast ? 91 : 92;
							 | 
						||
| 
								 | 
							
										passiveObjectIndex = 24299;
							 | 
						||
| 
								 | 
							
										soundTag = "EBUSTER_DARK";
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									else if (element == ENUM_ELEMENT_LIGHT)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										animationIndex = isCast ? 89 : 90;
							 | 
						||
| 
								 | 
							
										passiveObjectIndex = 24296;
							 | 
						||
| 
								 | 
							
										soundTag = "EBUSTER_LIGHT";
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
											
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									if (subState != SUB_STATE_ELEMENTAL_BUSTER_START)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										// 县溯诠骁 帼蝶搅朝 4楼撩 赅舒 勘横遽棻.
							 | 
						||
| 
								 | 
							
										addElementalChain_ATMage(obj, -1);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									local animation = obj.sq_GetCurrentAni();
							 | 
						||
| 
								 | 
							
									local flashTime = 0;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// 议蝶?
							 | 
						||
| 
								 | 
							
									//animationIndex = ANIMATION_TABLE[animationIndex];
							 | 
						||
| 
								 | 
							
									obj.sq_SetCurrentAnimation(animationIndex);
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									if (subState == SUB_STATE_ELEMENTAL_BUSTER_START)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										local skillLevel = sq_GetSkillLevel(obj, SKILL_ELEMENTAL_BUSTER);
							 | 
						||
| 
								 | 
							
										local castTime  = sq_GetCastTime(obj, SKILL_ELEMENTAL_BUSTER, skillLevel);
							 | 
						||
| 
								 | 
							
										local animation = sq_GetCurrentAnimation(obj);
							 | 
						||
| 
								 | 
							
										local castAniTime = animation.getDelaySum(false);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										local speedRate = castAniTime.tofloat() / castTime.tofloat();
							 | 
						||
| 
								 | 
							
										obj.sq_SetStaticSpeedInfo(SPEED_TYPE_CAST_SPEED, SPEED_TYPE_CAST_SPEED,
							 | 
						||
| 
								 | 
							
											SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, speedRate, speedRate);
							 | 
						||
| 
								 | 
							
										sq_StartDrawCastGauge(obj, castAniTime, true);
							 | 
						||
| 
								 | 
							
										obj.sq_PlaySound("MW_EBUSTER_READY");
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									else
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										obj.sq_SetStaticSpeedInfo(SPEED_TYPE_CONST, SPEED_TYPE_CONST,
							 | 
						||
| 
								 | 
							
											SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									if (!isCast) // 嫦饵
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										animation = obj.sq_GetCurrentAni();
							 | 
						||
| 
								 | 
							
										flashTime += animation.getDelaySum(false);
							 | 
						||
| 
								 | 
							
										obj.sq_PlaySound(soundTag);
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										// 议葛搅 嫔纂缣 当撩肾朝 醴棻坞 ?嫦 螃粽薛?
							 | 
						||
| 
								 | 
							
										local powerIndex = count%3;				
							 | 
						||
| 
								 | 
							
										local sizeRate = obj.sq_GetLevelData(SKILL_ELEMENTAL_BUSTER, 5);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										local time = 640;
							 | 
						||
| 
								 | 
							
										local shake = 3;
							 | 
						||
| 
								 | 
							
										if (isLastElementalBusterAttack(obj))
							 | 
						||
| 
								 | 
							
										{	// 虞颤朝 饵桧锷陛 觼棻
							 | 
						||
| 
								 | 
							
											sizeRate = obj.sq_GetLevelData(SKILL_ELEMENTAL_BUSTER, 6);
							 | 
						||
| 
								 | 
							
											time = 800
							 | 
						||
| 
								 | 
							
											shake = 5;			
							 | 
						||
| 
								 | 
							
											powerIndex = 3; // ?表紫 ?
							 | 
						||
| 
								 | 
							
											
							 | 
						||
| 
								 | 
							
											print("isLast");
							 | 
						||
| 
								 | 
							
											// 虞颤 饵遴萄
							 | 
						||
| 
								 | 
							
											obj.sq_PlaySound("MW_EBUSTER");
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										local power = obj.sq_GetBonusRateWithPassive(SKILL_ELEMENTAL_BUSTER, STATE_ELEMENTAL_BUSTER, powerIndex, 1.0);
							 | 
						||
| 
								 | 
							
																					
							 | 
						||
| 
								 | 
							
																					
							 | 
						||
| 
								 | 
							
										// 虽姜胀 嫔纂缣 ?卫粽 螃粽薛?菟击 当撩?棻
							 | 
						||
| 
								 | 
							
										if (obj.sq_IsMyControlObject())
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											obj.sq_StartWrite();
							 | 
						||
| 
								 | 
							
											obj.sq_WriteDword(power);
							 | 
						||
| 
								 | 
							
											obj.sq_WriteWord(sizeRate);
							 | 
						||
| 
								 | 
							
											obj.sq_SendCreatePassiveObjectPacket(passiveObjectIndex, 0, 0, 1, 0);
							 | 
						||
| 
								 | 
							
												
							 | 
						||
| 
								 | 
							
											sq_flashScreen(obj, 0, flashTime, 240, 200, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
							 | 
						||
| 
								 | 
							
											obj.sq_SetShake(obj, shake, time);
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									else
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										if (element == ENUM_ELEMENT_FIRE)		
							 | 
						||
| 
								 | 
							
											obj.sq_PlaySound("EBUSTER_CAST_01");
							 | 
						||
| 
								 | 
							
										else if (element == ENUM_ELEMENT_WATER)		
							 | 
						||
| 
								 | 
							
											obj.sq_PlaySound("EBUSTER_CAST_02");
							 | 
						||
| 
								 | 
							
										else if (element == ENUM_ELEMENT_DARK)		
							 | 
						||
| 
								 | 
							
											obj.sq_PlaySound("EBUSTER_CAST_04");
							 | 
						||
| 
								 | 
							
										else if (element == ENUM_ELEMENT_LIGHT)
							 | 
						||
| 
								 | 
							
											obj.sq_PlaySound("EBUSTER_CAST_03");		
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// 缣栖诡桧暮桧 部陬挤.
							 | 
						||
| 
								 | 
							
								function onEndCurrentAni_ElementalBuster(obj)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									if (!obj) return;
							 | 
						||
| 
								 | 
							
									local subState = obj.getSkillSubState();
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									local nextAnimationIndex = obj.getVar().get_vector(0) + 1;
							 | 
						||
| 
								 | 
							
									local nextSubState = subState + 1;
							 | 
						||
| 
								 | 
							
									local isLast = false;
							 | 
						||
| 
								 | 
							
									if(!isElementalBusterCastingState(subState)) // 奢问 拥栖陛 部陬棻贼
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										setNextElementalType(obj); // 怃粽蝶才桧?陛 奢问桧历棻贼 棻挤 锰模煎 渗?
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										local var = obj.getVar();
							 | 
						||
| 
								 | 
							
										local count = var.getInt(VAR_ELEMENTAL_BUSTER_COUNT);		
							 | 
						||
| 
								 | 
							
										local maxCount = obj.sq_GetLevelData(SKILL_ELEMENTAL_BUSTER, 4);
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										count = count + 1;
							 | 
						||
| 
								 | 
							
										if(count >= maxCount)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											var.setBool(VAR_ELEMENTAL_BUSTER_IS_LAST, true);
							 | 
						||
| 
								 | 
							
											isLast = true;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
											
							 | 
						||
| 
								 | 
							
										var.setInt(VAR_ELEMENTAL_BUSTER_COUNT, count);		
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
									if (subState == SUB_STATE_ELEMENTAL_BUSTER_START)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										sq_EndDrawCastGauge(obj);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									if (!isLast)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										if (obj.sq_IsMyControlObject())
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
											obj.sq_IntVectClear();
							 | 
						||
| 
								 | 
							
											obj.sq_IntVectPush(nextSubState);
							 | 
						||
| 
								 | 
							
											obj.sq_IntVectPush(nextAnimationIndex);
							 | 
						||
| 
								 | 
							
											obj.sq_AddSetStatePacket(STATE_ELEMENTAL_BUSTER, STATE_PRIORITY_IGNORE_FORCE, true);
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									else
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										if (obj.sq_IsMyControlObject())
							 | 
						||
| 
								 | 
							
											obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}	
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function onEndState_ElementalBuster(obj, newState)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									if (!obj) return;
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function createElementalBusterCircle(obj, element, isLast, flagIndex)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									if (obj.sq_IsMyControlObject())
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										local passiveObjectIndexBig = 24291;	// ?
							 | 
						||
| 
								 | 
							
										local passiveObjectIndexSmall = 24292;
							 | 
						||
| 
								 | 
							
										if (element == ENUM_ELEMENT_FIRE)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											passiveObjectIndexBig = 24291;	// ?
							 | 
						||
| 
								 | 
							
											passiveObjectIndexSmall = 24292;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										else if (element == ENUM_ELEMENT_WATER)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											passiveObjectIndexBig = 24294;		// 热
							 | 
						||
| 
								 | 
							
											passiveObjectIndexSmall = 24295;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										else if (element == ENUM_ELEMENT_LIGHT)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											passiveObjectIndexBig = 24297;		// 赀
							 | 
						||
| 
								 | 
							
											passiveObjectIndexSmall = 24298;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										else if (element == ENUM_ELEMENT_DARK)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											passiveObjectIndexBig = 24300;		// 檩
							 | 
						||
| 
								 | 
							
											passiveObjectIndexSmall = 24301;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// 议葛搅 嫔纂缣 当撩肾朝 醴棻坞 ?嫦 螃粽薛?	
							 | 
						||
| 
								 | 
							
										local var = obj.getVar();
							 | 
						||
| 
								 | 
							
										local count = var.getInt(VAR_ELEMENTAL_BUSTER_COUNT);
							 | 
						||
| 
								 | 
							
										local powerIndex = count%3;		
							 | 
						||
| 
								 | 
							
										local sizeIndex = 5;
							 | 
						||
| 
								 | 
							
										if (isLastElementalBusterAttack(obj))
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											powerIndex = 3; // 虞颤辨 ?表
							 | 
						||
| 
								 | 
							
											sizeIndex = 6;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
											
							 | 
						||
| 
								 | 
							
										local power = obj.sq_GetBonusRateWithPassive(SKILL_ELEMENTAL_BUSTER,
							 | 
						||
| 
								 | 
							
																			STATE_ELEMENTAL_BUSTER, powerIndex, 1.0);
							 | 
						||
| 
								 | 
							
										local sizeRate = obj.sq_GetLevelData(SKILL_ELEMENTAL_BUSTER, sizeIndex);
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
										obj.sq_StartWrite();
							 | 
						||
| 
								 | 
							
										obj.sq_WriteDword(power);
							 | 
						||
| 
								 | 
							
										obj.sq_WriteWord(sizeRate);
							 | 
						||
| 
								 | 
							
																						
							 | 
						||
| 
								 | 
							
										local isLastAttack = isLastElementalBusterAttack(obj);							
							 | 
						||
| 
								 | 
							
										if (flagIndex == 1)
							 | 
						||
| 
								 | 
							
										{	// 赎 ?嫦 螃粽薛?
							 | 
						||
| 
								 | 
							
											obj.sq_SendCreatePassiveObjectPacket(passiveObjectIndexBig, 0, 150, 2, 110);
							 | 
						||
| 
								 | 
							
											if (isLastAttack && element != ENUM_ELEMENT_MAX)
							 | 
						||
| 
								 | 
							
											{	// 葆虽虞 桧塭贼 涡 当撩?
							 | 
						||
| 
								 | 
							
												obj.sq_SendCreatePassiveObjectPacket(passiveObjectIndexBig, 0, 100, 0, 110);
							 | 
						||
| 
								 | 
							
												obj.sq_SendCreatePassiveObjectPacket(passiveObjectIndexBig, 0, 80, 0, 110);
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										else if (flagIndex == 2)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											// 蒙擎 ?嫦 螃粽薛?
							 | 
						||
| 
								 | 
							
											obj.sq_SendCreatePassiveObjectPacket(passiveObjectIndexSmall, 0, 187, 2, 229);
							 | 
						||
| 
								 | 
							
											
							 | 
						||
| 
								 | 
							
											// 赎 ?嫦 螃粽薛?
							 | 
						||
| 
								 | 
							
											obj.sq_SendCreatePassiveObjectPacket(passiveObjectIndexBig, 0, 308, 2, 208);
							 | 
						||
| 
								 | 
							
											
							 | 
						||
| 
								 | 
							
											if (isLastAttack && element != ENUM_ELEMENT_MAX)
							 | 
						||
| 
								 | 
							
											{	// 葆虽虞 桧塭贼 涡 当撩?
							 | 
						||
| 
								 | 
							
												obj.sq_SendCreatePassiveObjectPacket(passiveObjectIndexSmall, 0, -4, 2, 239);
							 | 
						||
| 
								 | 
							
												obj.sq_SendCreatePassiveObjectPacket(passiveObjectIndexSmall, 0, 157, 0, 229);
							 | 
						||
| 
								 | 
							
												obj.sq_SendCreatePassiveObjectPacket(passiveObjectIndexSmall, 0, 157, 0, 229);
							 | 
						||
| 
								 | 
							
												obj.sq_SendCreatePassiveObjectPacket(passiveObjectIndexBig, 0, 208, 0, 208);
							 | 
						||
| 
								 | 
							
												obj.sq_SendCreatePassiveObjectPacket(passiveObjectIndexBig, 0, 208, 0, 208);
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										else if (flagIndex == 3)
							 | 
						||
| 
								 | 
							
										{	// 蒙擎 ?嫦 螃粽薛?
							 | 
						||
| 
								 | 
							
											obj.sq_SendCreatePassiveObjectPacket(passiveObjectIndexSmall, 0, 310, 2, 98);
							 | 
						||
| 
								 | 
							
											
							 | 
						||
| 
								 | 
							
											if (isLastAttack && element != ENUM_ELEMENT_MAX)
							 | 
						||
| 
								 | 
							
											{	// 葆虽虞 桧塭贼 涡 当撩?
							 | 
						||
| 
								 | 
							
												// 赎 ?嫦 螃粽薛?
							 | 
						||
| 
								 | 
							
												obj.sq_SendCreatePassiveObjectPacket(passiveObjectIndexBig, 0, 278, 2, 328);
							 | 
						||
| 
								 | 
							
												obj.sq_SendCreatePassiveObjectPacket(passiveObjectIndexSmall, 0, 250, 0, 98);
							 | 
						||
| 
								 | 
							
												obj.sq_SendCreatePassiveObjectPacket(passiveObjectIndexSmall, 0, 250, 0, 98);
							 | 
						||
| 
								 | 
							
												obj.sq_SendCreatePassiveObjectPacket(passiveObjectIndexBig, 0, 278, 2, 110);
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										else if (flagIndex == 4)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											// 赎 ?嫦 螃粽薛?
							 | 
						||
| 
								 | 
							
											obj.sq_SendCreatePassiveObjectPacket(passiveObjectIndexBig, 0, 468, 2, 91);
							 | 
						||
| 
								 | 
							
											
							 | 
						||
| 
								 | 
							
											if (isLastAttack && element != ENUM_ELEMENT_MAX)
							 | 
						||
| 
								 | 
							
											{	// 葆虽虞 桧塭贼 涡 当撩?
							 | 
						||
| 
								 | 
							
												// 蒙擎 ?嫦 螃粽薛?
							 | 
						||
| 
								 | 
							
												obj.sq_SendCreatePassiveObjectPacket(passiveObjectIndexSmall, 0, 569, 2, 242);
							 | 
						||
| 
								 | 
							
												obj.sq_SendCreatePassiveObjectPacket(passiveObjectIndexBig, 0, 358, 0, 200);
							 | 
						||
| 
								 | 
							
												obj.sq_SendCreatePassiveObjectPacket(passiveObjectIndexBig, 0, 418, 0, 150);
							 | 
						||
| 
								 | 
							
												obj.sq_SendCreatePassiveObjectPacket(passiveObjectIndexBig, 0, 550, 0, 250);
							 | 
						||
| 
								 | 
							
												obj.sq_SendCreatePassiveObjectPacket(passiveObjectIndexBig, 0, 620, 0, 150);
							 | 
						||
| 
								 | 
							
												
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function setNextElementalType(obj)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									print("setNextElementalType");
							 | 
						||
| 
								 | 
							
									local var = obj.getVar();
							 | 
						||
| 
								 | 
							
									local element = var.getInt(VAR_ELEMENTAL_BUSTER_TYPE);
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									if(element == ENUM_ELEMENT_NONE)
							 | 
						||
| 
								 | 
							
										return element;
							 | 
						||
| 
								 | 
							
											
							 | 
						||
| 
								 | 
							
									local newElement;
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									switch(element)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
									case ENUM_ELEMENT_FIRE : newElement = ENUM_ELEMENT_WATER; break;
							 | 
						||
| 
								 | 
							
									case ENUM_ELEMENT_WATER : newElement = ENUM_ELEMENT_DARK; break;
							 | 
						||
| 
								 | 
							
									case ENUM_ELEMENT_DARK : newElement = ENUM_ELEMENT_LIGHT; break;
							 | 
						||
| 
								 | 
							
									case ENUM_ELEMENT_LIGHT : newElement = ENUM_ELEMENT_FIRE; break;	
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									var.setInt(VAR_ELEMENTAL_BUSTER_TYPE, newElement);
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									return element;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// 奢问卫 葆彻 掘羹蒂 当撩?棻.
							 | 
						||
| 
								 | 
							
								function onKeyFrameFlag_ElementalBuster(obj, flagIndex)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									if (!obj) return false;
							 | 
						||
| 
								 | 
							
									local var = obj.getVar();
							 | 
						||
| 
								 | 
							
									local subState = obj.getSkillSubState();
							 | 
						||
| 
								 | 
							
									local element = var.getInt(VAR_ELEMENTAL_BUSTER_TYPE);
							 | 
						||
| 
								 | 
							
									local isLast  = (var.getBool(VAR_ELEMENTAL_BUSTER_IS_LAST)) && (obj.getThrowElement() != ENUM_ELEMENT_NONE);	
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									createElementalBusterCircle(obj, element, isLast, flagIndex);	
							 | 
						||
| 
								 | 
							
									return true;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function getScrollBasisPos_ElementalBuster(obj)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									if (!obj) return;
							 | 
						||
| 
								 | 
							
									local subState = obj.getSkillSubState();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									if (obj.isMyControlObject())
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										local destX = sq_GetDistancePos(obj.getXPos(), obj.getDirection(), 300);
							 | 
						||
| 
								 | 
							
										local xPos = obj.getXPos();
							 | 
						||
| 
								 | 
							
										local var = obj.getVar();
							 | 
						||
| 
								 | 
							
										local isLast  = var.getBool(VAR_ELEMENTAL_BUSTER_IS_LAST);
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										if (subState == SUB_STATE_ELEMENTAL_BUSTER_START)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											// 蝶鉴 卫瞪 : 蝶觼煤 卫蒙
							 | 
						||
| 
								 | 
							
											local stateTimer = obj.sq_GetStateTimer();
							 | 
						||
| 
								 | 
							
											xPos = sq_GetUniformVelocity(xPos, destX, stateTimer, 300);
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										else if (isLast)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											// 蝶鉴 谦猿 : 蝶觼煤 谦猿
							 | 
						||
| 
								 | 
							
											local stateTimer = obj.sq_GetStateTimer();
							 | 
						||
| 
								 | 
							
											xPos = sq_GetUniformVelocity(destX, xPos, stateTimer, 300);
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										else
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											xPos = destX;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										obj.sq_SetCameraScrollPosition(xPos, obj.getYPos(), 0);
							 | 
						||
| 
								 | 
							
										return true;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									return false;
							 | 
						||
| 
								 | 
							
								}
							 |