// 蝶鉴 撮睡嫦翕 亵勒击 虏菟横舆朝 ?热殓栖棻.. 嫦翕 亵勒 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