165 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			165 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| // 蝶鉴 撮睡嫦翕 亵勒击 虏菟横舆朝 ?热殓栖棻.. 嫦翕 亵勒 state朝 桧嘐 模蝶缣怃 掘?肾横 毡蝗栖棻. 桧够缣怃 useskill娄 setstate蒂 虽姜?舆贼 腌栖棻.
 | |
| function checkExecutableSkill_Ripper(obj)  
 | |
| {
 | |
| 	if(!obj) return false;
 | |
| 	local b_useskill = obj.sq_IsUseSkill(SKILL_RIPPER);
 | |
| 	if(b_useskill) {
 | |
| 		obj.sq_addSetStatePacket(STATE_RIPPER, STATE_PRIORITY_USER, false);
 | |
| 		return true;
 | |
| 	}	
 | |
| 	
 | |
| 	return false;
 | |
| }
 | |
| 
 | |
| // 蝶鉴嬴桧夔 ?撩? 亵勒击 评虽朝 ?热殓栖棻. true蒂 葬欐?贼 蝶鉴 嬴桧夔桧 ?撩?陛 腌栖棻. (嫦翕亵勒 state朝  模蝶缣怃 籀葬腌栖棻.)
 | |
| function checkCommandEnable_Ripper(obj)
 | |
| {
 | |
| 	if(!obj) return false;
 | |
| 	
 | |
| 	local state = obj.sq_GetSTATE();
 | |
| 	
 | |
| 	if(state == STATE_ATTACK) {
 | |
| 		// 念瘫潍缣怃朝 ?姜蝶鉴虏 警蜗桧 陛栋?栖棻. 蒙机濠:姜霞热 [2012.04.20]
 | |
| 		return obj.sq_IsCommandEnable(SKILL_RIPPER);
 | |
| 	}
 | |
| 
 | |
| 	return true;
 | |
| }
 | |
| 
 | |
| //------------------------------------------------------------------------------
 | |
| 
 | |
| 
 | |
| //isCheckHitCollision谛 checkHit朝 ?问 羹觼蒂 鼻渠寞桧 嬴棋 顶陛 ?捡 ?唳办缣 噙樯棻. pvp缣摹 鼻渠寞桧 ?问羹觼蒂 ?贼 拟港卫除桧 替溥 蝶鉴桧 警蜗肾朝 唳办陛 毡晦 阳侥.
 | |
| function onIsCheckHitCollision_Ripper(obj,damager)
 | |
| {	
 | |
| 	return obj.isMyControlObject();
 | |
| }
 | |
| 
 | |
| function isForceHitCheck_Ripper(obj)
 | |
| {
 | |
| 	return obj.isMyControlObject();
 | |
| }
 | |
| 
 | |
| function onAttack_Ripper(obj,damager,boundingBox)
 | |
| {
 | |
| 	local sq_var = obj.getVar();
 | |
| 	sq_var.setBool(0,true); // 奢问 撩奢	
 | |
| 	
 | |
| 	local isLast = sq_var.getBool(1); // 虞颤
 | |
| 	if (!isLast) {
 | |
| 		sq_var.push_obj_vector(damager);
 | |
| 		sq_AtrractionForce(obj, damager, false, 270, -1, 2000.0, 1500.0, false); // 尘横顶晦	
 | |
| 		sq_EffectLayerAppendage(damager,sq_RGB(255,255,255),155,0,80,0);	
 | |
| 	}
 | |
| }
 | |
| 
 | |
| 
 | |
| function onEndState_Ripper(obj, newState)
 | |
| {
 | |
| 	if(!obj) return;
 | |
| 	local sq_var = obj.getVar();
 | |
| 	sq_var.clear_obj_vector();
 | |
| 	
 | |
| 	local ani = sq_GetCurrentAnimation(obj);	
 | |
| 	if(ani){
 | |
| 		local sizeRate = sq_var.getFloat(2);
 | |
| 		ani.setAttackBoundingBoxSizeRate(1.0/sizeRate,true);
 | |
| 	}
 | |
| }
 | |
| 
 | |
| 
 | |
| // state蒂 撮??坚 籀挤戏煎 菟横螃啪 腌栖棻. 陕谦 葬模蝶蒂 撮??栖棻. 
 | |
| function onSetState_Ripper(obj, state, datas, isResetTimer)
 | |
| {	
 | |
| 	if(!obj) return;
 | |
| 	local sq_var = obj.getVar();
 | |
| 	obj.sq_stopMove();
 | |
| 	obj.sq_setCurrentAnimation(CUSTOM_ANI_RIPPER);
 | |
| 	obj.sq_setCurrentAttackInfo(CUSTOM_ATTACKINFO_RIPPER);	
 | |
| 	obj.sq_setAttackPowerWithPassive(SKILL_RIPPER, state, -1,0,1.0);	
 | |
| 	sq_var.setBool(0,false);	
 | |
| 	sq_var.setBool(1,false);
 | |
| 	sq_var.setFloat(2,1.0);
 | |
| 	
 | |
| 	obj.sq_setXScroll(180,500,1500,100);
 | |
| 	obj.sq_PlaySound("PR_RIPPER_READY");	
 | |
| }
 | |
| 
 | |
| function onEndCurrentAni_Ripper(obj)
 | |
| {
 | |
| 	obj.sq_addSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false);
 | |
| 	obj.sq_setfindNearMovablePos(obj.getXPos(),obj.getYPos(),50,1,5);
 | |
| }
 | |
| 
 | |
| function onKeyFrameFlag_Ripper(obj,flagIndex)
 | |
| {
 | |
| 	local isMycontrolObject = obj.sq_isMyControlObject();
 | |
| 	local sq_var = obj.getVar();
 | |
| 	
 | |
| 	if(isMycontrolObject && flagIndex == 1) // 霞翕,廓翻 桧??朝 釭缣啪虏 尔樯棻.
 | |
| 		obj.sq_setShake(obj,4,60);
 | |
| 	else if(isMycontrolObject && flagIndex == 2)
 | |
| 		obj.sq_setShake(obj,2,30);
 | |
| 	else if(flagIndex == 3) 
 | |
| 	{		
 | |
| 		if(isMycontrolObject)
 | |
| 			obj.sq_setShake(obj,3,60);			
 | |
| 	}
 | |
| 	else if(isMycontrolObject && flagIndex == 4)
 | |
| 		obj.sq_setShake(obj,2,30);
 | |
| 	else if(flagIndex == 6)
 | |
| 	{
 | |
| 		obj.sq_setCurrentAttackInfo(CUSTOM_ATTACKINFO_RIPPER);
 | |
| 		local state = obj.sq_GetSTATE();
 | |
| 		obj.sq_setAttackPowerWithPassive(SKILL_RIPPER, state, -1,0,1.0);
 | |
| 	}
 | |
| 	else if(flagIndex == 5 && sq_var.getBool(0))
 | |
| 	{		
 | |
| 		local state = obj.sq_GetSTATE();
 | |
| 
 | |
| 		obj.sq_setCurrentAttackInfo(CUSTOM_ATTACKINFO_RIPPER_EXPLOSION);
 | |
| 		
 | |
| 		// 葬? ?撩 蝶鉴桧贼
 | |
| 		local exSkillLevel = sq_GetSkillLevel(obj,SKILL_RIPPER_EX);		
 | |
| 		if(!sq_isPVPMode() && exSkillLevel > 0) {			
 | |
| 			local sizeRate = sq_GetLevelData(obj, SKILL_RIPPER, 2, exSkillLevel);			
 | |
| 			sizeRate = sizeRate * 0.01;	
 | |
| 			
 | |
| 			local ani = sq_GetCurrentAnimation(obj);			
 | |
| 			if(ani){
 | |
| 				ani.setAttackBoundingBoxSizeRate(sizeRate,true);
 | |
| 				sq_var.setFloat(2,sizeRate);
 | |
| 			}
 | |
| 		}	
 | |
| 		
 | |
| 			
 | |
| 		obj.sq_setAttackPowerWithPassive(SKILL_RIPPER, state, -1,1,1.0);
 | |
| 		sq_AddDrawOnlyAniFromParent(obj,"Character/Priest/Effect/Animation/Ripper/etc/33p_1_burst1-handup_normal.ani",0,1,0);
 | |
| 		sq_AddDrawOnlyAniFromParent(obj,"Character/Priest/Effect/Animation/Ripper/etc/33p_burst1-handup_normal.ani",0,1,0);
 | |
| 		if(isMycontrolObject)
 | |
| 		{			
 | |
| 			local flash = sq_flashScreen(obj,80, 80, 0, 255, sq_RGBA(255,255,255,128),GRAPHICEFFECT_NONE,ENUM_DRAWLAYER_BOTTOM);
 | |
| 			sq_addFlashScreen(flash,0,0,400,255,sq_RGBA(0,0,0,180),GRAPHICEFFECT_NONE,ENUM_DRAWLAYER_BOTTOM);
 | |
| 			
 | |
| 			local objListSize = sq_var.get_obj_vector_size();	
 | |
| 			for(local i =0;i<objListSize;++i)
 | |
| 			{				
 | |
| 				local obj = sq_var.get_obj_vector(i);
 | |
| 				if(obj == null)
 | |
| 					continue;
 | |
| 				
 | |
| 				sq_EffectLayerAppendage(obj,sq_RGB(0,0,0),255,0,160,160);
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| 	else if(flagIndex == 7 && sq_var.getBool(0))
 | |
| 	{				
 | |
| 		sq_var.setBool(1,true);
 | |
| 		if(isMycontrolObject)
 | |
| 			sq_SendCreatePassiveObjectPacket(obj,24102, 0, 267, 1, 83,obj.getDirection());
 | |
| 		obj.sq_PlaySound("R_PR_RIPPER");
 | |
| 	}
 | |
| 
 | |
| 	return true;
 | |
| }
 |