421 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			421 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| 
								 | 
							
								// 怃粽 蝶才桧?陛 ?蹂 桡棻.
							 | 
						|||
| 
								 | 
							
								SUBSTATE_POWER_OF_DARKNESS_START		<- 0;
							 | 
						|||
| 
								 | 
							
								SUBSTATE_POWER_OF_DARKNESS_EXPLOSION	<- 1;
							 | 
						|||
| 
								 | 
							
								SUBSTATE_POWER_OF_DARKNESS_LIFT			<- 2;
							 | 
						|||
| 
								 | 
							
								SUBSTATE_POWER_OF_DARKNESS_LAST			<- 3;
							 | 
						|||
| 
								 | 
							
								SUBSTATE_POWER_OF_DARKNESS_END			<- 4;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								POD_VAR_ARROW_COUNT						<- 1; // 饵辨? ?髦 偎热
							 | 
						|||
| 
								 | 
							
								POD_VAR_CIRCLE_INDEX					<- 2; // 当撩胀 掘羹 樯策蝶
							 | 
						|||
| 
								 | 
							
								POD_VAR_CIRCLE_OBJECT_GROUP				<- 3; // 当撩胀 掘羹 斜瑜
							 | 
						|||
| 
								 | 
							
								POD_VAR_CIRCLE_OBJECT_UID				<- 4; // 当撩胀 掘羹 UID
							 | 
						|||
| 
								 | 
							
								POD_VAR_CIRCLE_OBJECT					<- 5; // 当撩胀 掘羹
							 | 
						|||
| 
								 | 
							
								POD_VAR_SUPERARMOR						<- 6; // 蓬?嬴该 横?蛤虽
							 | 
						|||
| 
								 | 
							
								POD_VAR_FLASHSCREEN						<- 7; // 当撩胀 掘羹
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								POD_TIME_EVENT_ARROWGAP <- 1; // 颤歜 桧渐? : ?髦 嫦翕 卫除 除问
							 | 
						|||
| 
								 | 
							
								POD_TIME_EVENT_LIFTTIME <- 2; // 颤歜 桧渐? : 跨蝶搅 嗥办朝 卫除
							 | 
						|||
| 
								 | 
							
								POD_TIME_EVENT_LASTDELAY <- 3; // 颤歜 桧渐? : 虞颤梱虽 裁溯桧
							 | 
						|||
| 
								 | 
							
								POD_TIME_EVENT_LAST <- 4; // 颤歜 桧渐? : 虞颤? 裁溯桧
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								POD_SOUND_INDEX_LOOP <- 92716;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function sendSubState_PowerOfDarkness(obj, subState)
							 | 
						|||
| 
								 | 
							
								{	
							 | 
						|||
| 
								 | 
							
									if(!obj) return;
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									if(obj.isMyControlObject()) {
							 | 
						|||
| 
								 | 
							
										local sq_var = obj.getVar();
							 | 
						|||
| 
								 | 
							
										local circleGroup = sq_var.getInt(POD_VAR_CIRCLE_OBJECT_GROUP);
							 | 
						|||
| 
								 | 
							
										local circleUID = sq_var.getInt(POD_VAR_CIRCLE_OBJECT_UID);
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
										obj.sq_IntVectClear();
							 | 
						|||
| 
								 | 
							
										obj.sq_IntVectPush(subState); // substate撮?
							 | 
						|||
| 
								 | 
							
										obj.sq_IntVectPush(circleGroup);
							 | 
						|||
| 
								 | 
							
										obj.sq_IntVectPush(circleUID); // 掘羹暧 UID 撮?
							 | 
						|||
| 
								 | 
							
										obj.sq_addSetStatePacket(STATE_POWER_OF_DARKNESS, STATE_PRIORITY_IGNORE_FORCE, true);
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								//------------------------------------------------------------------------------
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// 蝶鉴 撮睡嫦翕 亵勒击 虏菟横舆朝 ?热殓栖棻.. 嫦翕 亵勒 state朝 桧嘐 模蝶缣怃 掘?肾横 毡蝗栖棻. 桧够缣怃 useskill娄 setstate蒂 虽姜?舆贼 腌栖棻.
							 | 
						|||
| 
								 | 
							
								function checkExecutableSkill_PowerOfDarkness(obj)  
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									if(!obj) return false;
							 | 
						|||
| 
								 | 
							
									local b_useskill = obj.sq_IsUseSkill(SKILL_POWER_OF_DARKNESS);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									if(b_useskill) {
							 | 
						|||
| 
								 | 
							
										sendSubState_PowerOfDarkness(obj,SUBSTATE_POWER_OF_DARKNESS_START);
							 | 
						|||
| 
								 | 
							
										return true;
							 | 
						|||
| 
								 | 
							
									}	
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									return false;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								//------------------------------------------------------------------------------
							 | 
						|||
| 
								 | 
							
								function isGrabable_PowerOfDarkness(obj)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									local sq_var = obj.getVar();
							 | 
						|||
| 
								 | 
							
									local i=0;	
							 | 
						|||
| 
								 | 
							
									local objectsSize = sq_var.get_obj_vector_size();		
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									if(objectsSize == 0)
							 | 
						|||
| 
								 | 
							
										return false;	
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
									for(;i<objectsSize;++i)
							 | 
						|||
| 
								 | 
							
									{				
							 | 
						|||
| 
								 | 
							
										local damager = sq_GetCNRDObjectToCollisionObject(sq_var.get_obj_vector(i));		
							 | 
						|||
| 
								 | 
							
										if(damager && !sq_IsGrabable(obj,damager)) {		
							 | 
						|||
| 
								 | 
							
											return false;
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
									}	
							 | 
						|||
| 
								 | 
							
									return true;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function resetDungeonStart_PowerOfDarkness(obj, moduleType, resetReason, isDeadTower, isResetSkillUserCount)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									obj.sq_setXScrollStop(0);
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								//isCheckHitCollision谛 checkHit朝 ?问 羹觼蒂 鼻渠寞桧 嬴棋 顶陛 ?捡 ?唳办缣 噙樯棻. pvp缣摹 鼻渠寞桧 ?问羹觼蒂 ?贼 拟港卫除桧 替溥 蝶鉴桧 警蜗肾朝 唳办陛 毡晦 阳侥.
							 | 
						|||
| 
								 | 
							
								function onIsCheckHitCollision_PowerOfDarkness(obj,damager)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									local subState = obj.getSkillSubState();	
							 | 
						|||
| 
								 | 
							
									if(subState == SUBSTATE_POWER_OF_DARKNESS_START)  //横菸暧 掏栋 pvp缣怃 罗颤 褒? 虞晦 嫔?.
							 | 
						|||
| 
								 | 
							
										return obj.isMyControlObject();
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									//晦狱瞳戏烦 釭暧 螃粽薛?陛 嬴栖贼 false棻. 罹晦怃 false蒂 ?啪 肾贼 釭暧 螃粽薛? 樯虽 念娄陛 葬欐胀棻.
							 | 
						|||
| 
								 | 
							
									return (damager && damager.isMyControlObject());
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function isForceHitCheck_PowerOfDarkness(obj)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									if(obj.isMyControlObject()) {
							 | 
						|||
| 
								 | 
							
										local subState =  obj.getSkillSubState();	
							 | 
						|||
| 
								 | 
							
										if(subState == SUBSTATE_POWER_OF_DARKNESS_START) { //横菸暧 掏栋 pvp缣怃 罗颤 褒? 虞晦 嫔?.
							 | 
						|||
| 
								 | 
							
											return true;
							 | 
						|||
| 
								 | 
							
										}	
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									return false;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// state蒂 撮??坚 籀挤戏煎 菟横螃啪 腌栖棻. 陕谦 葬模蝶蒂 撮??栖棻. 
							 | 
						|||
| 
								 | 
							
								function onSetState_PowerOfDarkness(obj, state, datas, isResetTimer)
							 | 
						|||
| 
								 | 
							
								{	
							 | 
						|||
| 
								 | 
							
									if(!obj) return;
							 | 
						|||
| 
								 | 
							
									local sq_var = obj.getVar();  
							 | 
						|||
| 
								 | 
							
									local subState = obj.sq_getVectorData(datas, 0);	
							 | 
						|||
| 
								 | 
							
									obj.setSkillSubState(subState);
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									if(subState == SUBSTATE_POWER_OF_DARKNESS_START)
							 | 
						|||
| 
								 | 
							
									{	
							 | 
						|||
| 
								 | 
							
										sq_var.clear_obj_vector();
							 | 
						|||
| 
								 | 
							
										obj.sq_stopMove();
							 | 
						|||
| 
								 | 
							
										obj.sq_setCurrentAnimation(CUSTOM_ANI_POWER_OF_DARKNESS_START);
							 | 
						|||
| 
								 | 
							
										obj.sq_setCurrentAttackInfo(CUSTOM_ATTACKINFO_POWER_OF_DARKNESS);
							 | 
						|||
| 
								 | 
							
										obj.sq_setAttackPowerWithPassive(SKILL_POWER_OF_DARKNESS, STATE_POWER_OF_DARKNESS, -1, 0, 1.0);
							 | 
						|||
| 
								 | 
							
										if(!sq_isPVPMode()) // 念潍缣怃朝 蓬嬴 寰匐
							 | 
						|||
| 
								 | 
							
											obj.sq_setSuperArmor(POD_VAR_SUPERARMOR);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										local sk = sq_GetSkill(obj,SKILL_POWER_OF_DARKNESS);		
							 | 
						|||
| 
								 | 
							
										local pw = sq_GetAttackBonusRate(sk,0,1.0);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										sq_var.setInt(POD_VAR_CIRCLE_INDEX,-1);		
							 | 
						|||
| 
								 | 
							
										obj.sq_PlaySound("PR_DARKPOWER_READY");
							 | 
						|||
| 
								 | 
							
										obj.sq_setXScrollStart(150,300);
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(subState == SUBSTATE_POWER_OF_DARKNESS_LIFT)
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										local i=0;		
							 | 
						|||
| 
								 | 
							
										local objectsSize = sq_var.get_obj_vector_size();
							 | 
						|||
| 
								 | 
							
										local liftTime = obj.sq_getIntData(3);
							 | 
						|||
| 
								 | 
							
										local x = obj.sq_getIntData(1);
							 | 
						|||
| 
								 | 
							
										local z = obj.sq_getIntData(2);		
							 | 
						|||
| 
								 | 
							
											
							 | 
						|||
| 
								 | 
							
										for(;i<objectsSize;++i)
							 | 
						|||
| 
								 | 
							
										{					
							 | 
						|||
| 
								 | 
							
											local damager = sq_var.get_obj_vector(i);
							 | 
						|||
| 
								 | 
							
											local aoDamager = sq_GetCNRDObjectToActiveObject(damager);
							 | 
						|||
| 
								 | 
							
											if(aoDamager) {
							 | 
						|||
| 
								 | 
							
												local masterAppendage = aoDamager.GetSquirrelAppendage("Appendage/Character/ap_PowerOfDarkness.nut");			
							 | 
						|||
| 
								 | 
							
												sq_AccelMoveToAppendageForce(aoDamager, obj, obj, x, 0, z - aoDamager.getObjectHeight()/2, liftTime, true, masterAppendage,true);
							 | 
						|||
| 
								 | 
							
											}
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										local circleGroup = obj.sq_getVectorData(datas, 1);		
							 | 
						|||
| 
								 | 
							
										local circleUID = obj.sq_getVectorData(datas, 2);
							 | 
						|||
| 
								 | 
							
												
							 | 
						|||
| 
								 | 
							
										local darkCircle = sq_GetObject(obj,circleGroup,circleUID);
							 | 
						|||
| 
								 | 
							
										if(darkCircle) {				
							 | 
						|||
| 
								 | 
							
											local damager = sq_var.get_obj_vector(0);
							 | 
						|||
| 
								 | 
							
											darkCircle.setCurrentPos(darkCircle.getXPos(),damager.getYPos()+1,darkCircle.getZPos()); // y蹴 谢? 蜃跷晦
							 | 
						|||
| 
								 | 
							
											sq_moveWithParent(damager,darkCircle);
							 | 
						|||
| 
								 | 
							
										}		
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										sq_SetMyShake(obj,5,160);			
							 | 
						|||
| 
								 | 
							
											
							 | 
						|||
| 
								 | 
							
										obj.setTimeEvent(POD_TIME_EVENT_LIFTTIME,liftTime,1,false);
							 | 
						|||
| 
								 | 
							
										obj.sq_setCurrentAnimation(CUSTOM_ANI_POWER_OF_DARKNESS_STAY);		
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										sq_AddDrawOnlyAniFromParent(obj,"Character/Priest/Effect/Animation/PowerOfDarkness/guard_attack_none.ani",172,0,0);
							 | 
						|||
| 
								 | 
							
										sq_AddDrawOnlyAniFromParent(obj,"Character/Priest/Effect/Animation/PowerOfDarkness/guard_attack_none_r.ani",172,0,0);
							 | 
						|||
| 
								 | 
							
									}	
							 | 
						|||
| 
								 | 
							
									else if(subState == SUBSTATE_POWER_OF_DARKNESS_LAST)
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										local gap = obj.sq_getIntData(5);
							 | 
						|||
| 
								 | 
							
										obj.setTimeEvent(POD_TIME_EVENT_LASTDELAY,gap,1,false);
							 | 
						|||
| 
								 | 
							
										obj.sq_setCurrentAnimation(CUSTOM_ANI_POWER_OF_DARKNESS_STAY);
							 | 
						|||
| 
								 | 
							
										obj.stopSound(POD_SOUND_INDEX_LOOP);
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(subState == SUBSTATE_POWER_OF_DARKNESS_EXPLOSION)
							 | 
						|||
| 
								 | 
							
									{	
							 | 
						|||
| 
								 | 
							
										local gap = obj.sq_getIntData(4);
							 | 
						|||
| 
								 | 
							
										obj.setTimeEvent(POD_TIME_EVENT_ARROWGAP,gap,0,true);
							 | 
						|||
| 
								 | 
							
										obj.sq_setCurrentAnimation(CUSTOM_ANI_POWER_OF_DARKNESS_STAY);			
							 | 
						|||
| 
								 | 
							
									}	
							 | 
						|||
| 
								 | 
							
									else if(subState == SUBSTATE_POWER_OF_DARKNESS_END)
							 | 
						|||
| 
								 | 
							
									{		
							 | 
						|||
| 
								 | 
							
										obj.sq_setCurrentAnimation(CUSTOM_ANI_POWER_OF_DARKNESS_END);
							 | 
						|||
| 
								 | 
							
										obj.sq_setXScrollStop(300);
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function onEndState_PowerOfDarkness(obj,newState) 
							 | 
						|||
| 
								 | 
							
								{	
							 | 
						|||
| 
								 | 
							
									if(!obj) return;
							 | 
						|||
| 
								 | 
							
									if(newState != STATE_POWER_OF_DARKNESS) {
							 | 
						|||
| 
								 | 
							
										obj.sq_removeSuperArmor(POD_VAR_SUPERARMOR);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										local sq_var = obj.getVar();  
							 | 
						|||
| 
								 | 
							
										local darkCircleObject = sq_var.getObject(POD_VAR_CIRCLE_OBJECT);
							 | 
						|||
| 
								 | 
							
										local darkCircle = sq_GetCNRDObjectToCollisionObject(darkCircleObject);
							 | 
						|||
| 
								 | 
							
										local flashScreenObj = sq_var.getObject(POD_VAR_FLASHSCREEN);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										if(flashScreenObj) { // ?楚莲 蝶觼萼 蒙翕酝桧贼 莠
							 | 
						|||
| 
								 | 
							
											local pflashScreen = sq_GetCNRDObjectToFlashScreen(flashScreenObj);
							 | 
						|||
| 
								 | 
							
											if(pflashScreen)
							 | 
						|||
| 
								 | 
							
												pflashScreen.fadeOut();
							 | 
						|||
| 
								 | 
							
										}		
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										sq_moveWithParent(null,darkCircle);	
							 | 
						|||
| 
								 | 
							
										obj.sq_setXScrollStop(300);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										if(darkCircle && darkCircle.isMyControlObject()) {	
							 | 
						|||
| 
								 | 
							
											sendPowerOfDarknessCircleSubState(darkCircle,POWER_OF_DARKNESS_CIRCLE_DESTROY);
							 | 
						|||
| 
								 | 
							
										}		
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										removeAllPoweOfDarknessAppendage(obj);		
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// ?姜胀 楠浑击 嫔? ?热
							 | 
						|||
| 
								 | 
							
								function getArrowCreateAngle(areaIndex)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									areaIndex = areaIndex%6;
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
									local minAngle = 0;
							 | 
						|||
| 
								 | 
							
									local maxAngle = 0;
							 | 
						|||
| 
								 | 
							
									if(areaIndex == 0) // 250~310 紫
							 | 
						|||
| 
								 | 
							
										minAngle = 250, maxAngle = 310;
							 | 
						|||
| 
								 | 
							
									else if(areaIndex == 1) // 10~70 紫
							 | 
						|||
| 
								 | 
							
										minAngle = 10, maxAngle = 70;
							 | 
						|||
| 
								 | 
							
									else if(areaIndex == 2) // 70~130 紫
							 | 
						|||
| 
								 | 
							
										minAngle = 70, maxAngle = 130;
							 | 
						|||
| 
								 | 
							
									else if(areaIndex == 3) // 190~250紫
							 | 
						|||
| 
								 | 
							
										minAngle = 190, maxAngle = 250;		
							 | 
						|||
| 
								 | 
							
									else if(areaIndex == 4) // 310~370紫
							 | 
						|||
| 
								 | 
							
										minAngle = 310, maxAngle = 370;		
							 | 
						|||
| 
								 | 
							
									else if(areaIndex == 5) // 130~190紫
							 | 
						|||
| 
								 | 
							
										minAngle = 130, maxAngle = 190;
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
									local angle = sq_getRandom(minAngle,maxAngle);
							 | 
						|||
| 
								 | 
							
									return angle.tofloat() * 0.0174532;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function createPowerOfDarknessArrow(obj, angle)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									local sq_var = obj.getVar();  
							 | 
						|||
| 
								 | 
							
									local circleGroup = sq_var.getInt(POD_VAR_CIRCLE_OBJECT_GROUP);
							 | 
						|||
| 
								 | 
							
									local circleUID   = sq_var.getInt(POD_VAR_CIRCLE_OBJECT_UID);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
									local darkCircle = sq_GetObject(obj,circleGroup,circleUID);		
							 | 
						|||
| 
								 | 
							
									if(darkCircle) {		
							 | 
						|||
| 
								 | 
							
										local x = darkCircle.getXPos() > obj.getXPos() ? darkCircle.getXPos() - obj.getXPos() : obj.getXPos() - darkCircle.getXPos();
							 | 
						|||
| 
								 | 
							
										local z = darkCircle.getZPos() > obj.getZPos() ? darkCircle.getZPos() - obj.getZPos() : obj.getZPos() - darkCircle.getZPos();			
							 | 
						|||
| 
								 | 
							
										local rate = obj.sq_getBonusRateWithPassive(SKILL_POWER_OF_DARKNESS, STATE_POWER_OF_DARKNESS,2,1.0);	
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										obj.sq_binaryData_startWrite();
							 | 
						|||
| 
								 | 
							
										obj.sq_binaryData_writeFloat(angle.tofloat());
							 | 
						|||
| 
								 | 
							
										obj.sq_binaryData_writeDword(rate);
							 | 
						|||
| 
								 | 
							
										sq_SendCreatePassiveObjectPacket(obj,24108, 0, x, sq_getRandom(-1,2), z, obj.getDirection());		
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								//POD_TIME_EVENT_ARROWGAP <- 1; // 颤歜 桧渐? : ?髦 嫦翕 卫除 除问
							 | 
						|||
| 
								 | 
							
								//POD_TIME_EVENT_LIFTTIME <- 2; // 颤歜 桧渐? : 跨蝶搅 嗥办朝 卫除
							 | 
						|||
| 
								 | 
							
								function onTimeEvent_PowerOfDarkness(obj, timeEventIndex, timeEventCount)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									local subState = obj.getSkillSubState();
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									if(timeEventIndex == POD_TIME_EVENT_LIFTTIME) {
							 | 
						|||
| 
								 | 
							
										sendSubState_PowerOfDarkness(obj,SUBSTATE_POWER_OF_DARKNESS_EXPLOSION);		
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(timeEventIndex == POD_TIME_EVENT_ARROWGAP) {
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
										local sq_var = obj.getVar();  
							 | 
						|||
| 
								 | 
							
										local current = sq_var.getInt(1);
							 | 
						|||
| 
								 | 
							
										sq_var.setInt(1,current+1);
							 | 
						|||
| 
								 | 
							
										local maxArraw = obj.sq_getLevelData(1);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
										if(current >= maxArraw) // 卫除 裁溯桧蒂 觊涡 舆晦 嫔?
							 | 
						|||
| 
								 | 
							
										{			
							 | 
						|||
| 
								 | 
							
											sendSubState_PowerOfDarkness(obj,SUBSTATE_POWER_OF_DARKNESS_LAST);							
							 | 
						|||
| 
								 | 
							
											return true;
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										else if(current < maxArraw)
							 | 
						|||
| 
								 | 
							
										{	
							 | 
						|||
| 
								 | 
							
											createPowerOfDarknessArrow(obj,getArrowCreateAngle(current));	
							 | 
						|||
| 
								 | 
							
										}		
							 | 
						|||
| 
								 | 
							
										return false;
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(timeEventIndex == POD_TIME_EVENT_LASTDELAY)
							 | 
						|||
| 
								 | 
							
									{		
							 | 
						|||
| 
								 | 
							
										local lastMaxArrow = obj.sq_getIntData(6);
							 | 
						|||
| 
								 | 
							
										local i = 0;
							 | 
						|||
| 
								 | 
							
										for(i=0;i<lastMaxArrow;++i){
							 | 
						|||
| 
								 | 
							
											local angle = 360/lastMaxArrow * i;			
							 | 
						|||
| 
								 | 
							
											angle = angle * 0.0174532;			
							 | 
						|||
| 
								 | 
							
											createPowerOfDarknessArrow(obj,angle.tofloat());
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
										obj.sq_PlaySound("PR_DARKPOWER");
							 | 
						|||
| 
								 | 
							
										obj.setTimeEvent(POD_TIME_EVENT_LAST,900,1,false);
							 | 
						|||
| 
								 | 
							
										return true;
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(timeEventIndex == POD_TIME_EVENT_LAST)
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										sq_flashScreen(obj,160,0,0,150, sq_RGB(255,255,255), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
							 | 
						|||
| 
								 | 
							
										sendSubState_PowerOfDarkness(obj,SUBSTATE_POWER_OF_DARKNESS_END);
							 | 
						|||
| 
								 | 
							
										return true;				
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else
							 | 
						|||
| 
								 | 
							
										sendSubState_PowerOfDarkness(obj,SUBSTATE_POWER_OF_DARKNESS_END);	
							 | 
						|||
| 
								 | 
							
												
							 | 
						|||
| 
								 | 
							
									return true; // true贼 属寥 酝钦
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function onEndCurrentAni_PowerOfDarkness(obj)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									local subState = obj.getSkillSubState();
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									if(subState == SUBSTATE_POWER_OF_DARKNESS_START)
							 | 
						|||
| 
								 | 
							
									{				
							 | 
						|||
| 
								 | 
							
										local sq_var = obj.getVar();
							 | 
						|||
| 
								 | 
							
										local objectsSize = sq_var.get_obj_vector_size();		
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										if (objectsSize > 0)
							 | 
						|||
| 
								 | 
							
										{
							 | 
						|||
| 
								 | 
							
											if(isGrabable_PowerOfDarkness(obj))
							 | 
						|||
| 
								 | 
							
												sendSubState_PowerOfDarkness(obj,SUBSTATE_POWER_OF_DARKNESS_LIFT);
							 | 
						|||
| 
								 | 
							
											else
							 | 
						|||
| 
								 | 
							
												sendSubState_PowerOfDarkness(obj,SUBSTATE_POWER_OF_DARKNESS_EXPLOSION);
							 | 
						|||
| 
								 | 
							
																		
							 | 
						|||
| 
								 | 
							
											obj.playSound("DARKPOWER_CATCH_LOOP",POD_SOUND_INDEX_LOOP,0,0,0);			
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										else 
							 | 
						|||
| 
								 | 
							
											sendSubState_PowerOfDarkness(obj,SUBSTATE_POWER_OF_DARKNESS_END);		
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(subState == SUBSTATE_POWER_OF_DARKNESS_END)
							 | 
						|||
| 
								 | 
							
										obj.sq_addSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false);	
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// onAttack 属寥?热 殓栖棻
							 | 
						|||
| 
								 | 
							
								function onAttack_PowerOfDarkness(obj, damager, boundingBox)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									local sq_var = obj.getVar();  
							 | 
						|||
| 
								 | 
							
									local subState = obj.getSkillSubState();
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									if(subState == SUBSTATE_POWER_OF_DARKNESS_START)
							 | 
						|||
| 
								 | 
							
									{					
							 | 
						|||
| 
								 | 
							
										local masterAppendage = CNSquirrelAppendage.sq_AppendAppendage(damager, obj, SKILL_EXECUTION, false, "Appendage/Character/ap_PowerOfDarkness.nut", true);
							 | 
						|||
| 
								 | 
							
												 
							 | 
						|||
| 
								 | 
							
										if(masterAppendage) {			
							 | 
						|||
| 
								 | 
							
											if(sq_IsHoldable(obj,damager)) {
							 | 
						|||
| 
								 | 
							
												sq_HoldAndDelayDie(damager, obj, true, true, true, 300, 300, ENUM_DIRECTION_NEUTRAL , masterAppendage);
							 | 
						|||
| 
								 | 
							
												damager.setCurrentDirection(sq_GetOppositeDirection(obj.getDirection()));			
							 | 
						|||
| 
								 | 
							
											}
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
											local collectingTime = obj.sq_getIntData(0);			
							 | 
						|||
| 
								 | 
							
											if(sq_IsGrabable(obj,damager) && sq_IsHoldable(obj,damager) && !sq_IsFixture(damager)) //濩击热 毡朝 鼻鹧				
							 | 
						|||
| 
								 | 
							
												sq_MoveToAppendageForce(damager, obj, obj, 160, 0, 90 - damager.getObjectHeight()/2, collectingTime, true, masterAppendage);			
							 | 
						|||
| 
								 | 
							
											else if(sq_IsHoldable(obj,damager) && !sq_IsFixture(obj)) 
							 | 
						|||
| 
								 | 
							
												sq_MoveToAppendageForce(damager, obj, obj, 160, 0, damager.getZPos(), collectingTime, true, masterAppendage);			
							 | 
						|||
| 
								 | 
							
											
							 | 
						|||
| 
								 | 
							
											obj.sq_PlaySound("DARKPOWER_CATCH");
							 | 
						|||
| 
								 | 
							
											sq_var.push_obj_vector(damager);
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function removeAllPoweOfDarknessAppendage(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)
							 | 
						|||
| 
								 | 
							
											CNSquirrelAppendage.sq_RemoveAppendage(damager, "Appendage/Character/ap_PowerOfDarkness.nut");
							 | 
						|||
| 
								 | 
							
										sq_SimpleMoveToNearMovablePos(damager,200);
							 | 
						|||
| 
								 | 
							
									}		
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
								function onKeyFrameFlag_PowerOfDarkness(obj,flagIndex)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									local sq_var = obj.getVar(); 
							 | 
						|||
| 
								 | 
							
									if(flagIndex == 0 && obj.isMyControlObject())
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										obj.sq_binaryData_startWrite(); //蟾晦?蒂 嫔? 涡嘐 啭萄
							 | 
						|||
| 
								 | 
							
										obj.sq_binaryData_writeDword(0); 		
							 | 
						|||
| 
								 | 
							
											
							 | 
						|||
| 
								 | 
							
										local circleIndex = sq_SendCreatePassiveObjectPacket(obj,24107, 0, 172, 2, 97,obj.getDirection());		
							 | 
						|||
| 
								 | 
							
										 
							 | 
						|||
| 
								 | 
							
										sq_var.setInt(POD_VAR_CIRCLE_INDEX,circleIndex);
							 | 
						|||
| 
								 | 
							
									}	
							 | 
						|||
| 
								 | 
							
									else if(flagIndex == 1 && obj.isMyControlObject())
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										local flashScreenObj = sq_flashScreen(obj,80,99990,240,150, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
							 | 
						|||
| 
								 | 
							
										sq_var.setObject(POD_VAR_FLASHSCREEN,flashScreenObj);		
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(flagIndex == 2 && obj.isMyControlObject()) // 赅击 偌羹酝缣 寰 濩?朝 拥陛 毡棻贼 夥煎 ?嫦 赅萄煎
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										local objectsSize = sq_var.get_obj_vector_size();
							 | 
						|||
| 
								 | 
							
										if(!isGrabable_PowerOfDarkness(obj) && objectsSize > 0)
							 | 
						|||
| 
								 | 
							
											sendSubState_PowerOfDarkness(obj,SUBSTATE_POWER_OF_DARKNESS_EXPLOSION);		
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
									return true;	
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function onCreateObject_PowerOfDarkness(obj, createObject)
							 | 
						|||
| 
								 | 
							
								{	
							 | 
						|||
| 
								 | 
							
									local sq_var = obj.getVar();  
							 | 
						|||
| 
								 | 
							
									local cuid = sq_GetUniqueId(createObject);
							 | 
						|||
| 
								 | 
							
									local circleIndex = sq_var.getInt(POD_VAR_CIRCLE_INDEX);
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									if(cuid == circleIndex) {	
							 | 
						|||
| 
								 | 
							
										local group = sq_GetGroup(createObject);
							 | 
						|||
| 
								 | 
							
										local uid  = sq_GetUniqueId(createObject);
							 | 
						|||
| 
								 | 
							
										sq_var.setObject(POD_VAR_CIRCLE_OBJECT, createObject);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										sq_var.setInt(POD_VAR_CIRCLE_OBJECT_GROUP, group);
							 | 
						|||
| 
								 | 
							
										sq_var.setInt(POD_VAR_CIRCLE_OBJECT_UID, uid);
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								 |