SUBSTATE_PANDEMONIUM_EX_START <- 0; SUBSTATE_PANDEMONIUM_EX_END <- 1; // 渗热 樯策蝶 PEND_EX_MAGIC_FIELD <- 0; PEND_EX_IS_ENDED <- 1; PEND_EX_CREATE_DEVIL_COUNT <- 2; PEND_EX_MAGIC_OVER <- 3; PEND_EX_FLASHSCREEN <- 4; PEND_EVENT_TIMER_CREATE_DEVIL <- 0; function sendSubState_PandemoniumEx(obj, subState) { if(!obj) return; if(obj.isMyControlObject()) { obj.sq_IntVectClear(); obj.sq_IntVectPush(subState); // substate撮? obj.sq_addSetStatePacket(STATE_PANDEMONIUM_EX, STATE_PRIORITY_IGNORE_FORCE, true); } } //------------------------------------------------------------------------------ // 蝶鉴 撮睡嫦翕 亵勒击 虏菟横舆朝 ?热殓栖棻.. 嫦翕 亵勒 state朝 桧嘐 模蝶缣怃 掘?肾横 毡蝗栖棻. 桧够缣怃 useskill娄 setstate蒂 虽姜?舆贼 腌栖棻. function checkExecutableSkill_PandemoniumEx(obj) { if(!obj) return false; local b_useskill = obj.sq_IsUseSkill(SKILL_PANDEMONIUM_EX); if(b_useskill) { sendSubState_PandemoniumEx(obj,SUBSTATE_PANDEMONIUM_EX_START); return true; } return false; } function checkCommandEnable_PandemoniumEx(obj) { if(!obj) return false; return true; } //------------------------------------------------------------------------------ function resetDungeonStart_PandemoniumEx(obj, moduleType, resetReason, isDeadTower, isResetSkillUserCount) { obj.sq_setXScrollStop(0); } //isCheckHitCollision谛 checkHit朝 ?问 羹觼蒂 鼻渠寞桧 嬴棋 顶陛 ?捡 ?唳办缣 噙樯棻. pvp缣摹 鼻渠寞桧 ?问羹觼蒂 ?贼 拟港卫除桧 替溥 蝶鉴桧 警蜗肾朝 唳办陛 毡晦 阳侥. function onIsCheckHitCollision_PandemoniumEx(obj,damager) { local subState = obj.getSkillSubState(); if(subState == SUBSTATE_POWER_OF_DARKNESS_START) //横菸暧 掏栋 pvp缣怃 罗颤 褒? 虞晦 嫔?. return obj.isMyControlObject(); //晦狱瞳戏烦 釭暧 螃粽薛?陛 嬴栖贼 false棻. 罹晦怃 false蒂 ?啪 肾贼 釭暧 螃粽薛? 樯虽 念娄陛 葬欐胀棻. return (damager && damager.isMyControlObject()); } // state蒂 撮??坚 籀挤戏煎 菟横螃啪 腌栖棻. 陕谦 葬模蝶蒂 撮??栖棻. function onSetState_PandemoniumEx(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_PANDEMONIUM_EX_START) { obj.sq_stopMove(); if(isAvengerAwakenning(obj)) { local ani = obj.getVar().GetAnimationMap("PAND_EX_START", "Character/Priest/Animation/AvengerAwakening/PandemoniumStart.ani"); obj.setCurrentAnimation(ani); obj.sq_setCurrentAttackInfo(CUSTOM_ATTACKINFO_AWAKENING_PANDEMONIUM_START); } else { obj.sq_setCurrentAnimation(CUSTOM_ANI_PANDEMONIUM_START); obj.sq_setCurrentAttackInfo(CUSTOM_ATTACKINFO_PANDEMONIUM_EX_ON_START); } //罗颤蒂 嫔? 掸? local dmg = obj.sq_getBonusRateWithPassive(SKILL_PANDEMONIUM_EX, STATE_PANDEMONIUM_EX, 0,1.0); //学葆? 鼻鹧缣摹 奢问溘 隶? if(isAvengerAwakenning(obj)) { local devilPowerUpRate = obj.sq_getIntData(0); dmg = dmg * (devilPowerUpRate + 100) * 0.01; } sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj),dmg.tointeger()); obj.sq_setXScrollStart(300,150); } else if(subState == SUBSTATE_PANDEMONIUM_EX_END) { if(isAvengerAwakenning(obj)) { local ani = obj.getVar().GetAnimationMap("PAND_EX_END", "Character/Priest/Animation/AvengerAwakening/PandemoniumEnd.ani"); obj.setCurrentAnimation(ani); } else { obj.sq_setCurrentAnimation(CUSTOM_ANI_PANDEMONIUM_END); } obj.sq_setXScrollStop(300); sq_SetMyShake(obj,0,0); local flashScreenObj = sq_var.getObject(PEND_EX_FLASHSCREEN); if(flashScreenObj) { // ?楚莲 蝶觼萼 蒙翕酝桧贼 莠 local pflashScreen = sq_GetCNRDObjectToFlashScreen(flashScreenObj); if(pflashScreen) pflashScreen.fadeOut(); } } } function onEndState_PandemoniumEx(obj,newState) { if(!obj) return; if(newState != SUBSTATE_PANDEMONIUM_EX_END) { local sq_var = obj.getVar(); local magicField = sq_var.getObject(PEND_EX_MAGIC_FIELD); if(magicField) magicField.setValid(false); local magicOver = sq_var.getObject(PEND_EX_MAGIC_OVER); if(magicOver) magicOver.setValid(false); local isEnded = sq_var.getBool(PEND_EX_IS_ENDED); if(!isEnded) { local endMagicField = sq_CreateDrawOnlyObject(obj,"Character/Priest/Effect/Animation/Pandemonium/end/base.ani",ENUM_DRAWLAYER_NORMAL,true); local endMagicFieldOver = sq_CreateDrawOnlyObject(obj,"Character/Priest/Effect/Animation/Pandemonium/end/OverEffectbase.ani",ENUM_DRAWLAYER_NORMAL,true); if(isAvengerAwakenning(obj)) { local xPos = sq_GetDistancePos(endMagicField.getXPos(), obj.getDirection(), 80); endMagicField.setCurrentPos(xPos, endMagicField.getYPos(), endMagicField.getZPos()+20); //xPos = sq_GetDistancePos(magicField.getXPos(), obj.getDirection(), 5); endMagicFieldOver.setCurrentPos(endMagicField.getXPos(), endMagicField.getYPos()+2, endMagicField.getZPos()); } sq_var.setBool(PEND_EX_IS_ENDED,true); } obj.sq_setXScrollStop(300); sq_SetMyShake(obj,0,0); } } function onTimeEvent_PandemoniumEx(obj, timeEventIndex, timeEventCount) { local sq_var = obj.getVar(); local maxCount = obj.sq_getIntData(1); local moveSpeed = obj.sq_getIntData(2); local maxTime = obj.sq_getIntData(3); local moveMaxDistance = obj.sq_getIntData(4); local currentCount = sq_var.getInt(PEND_EX_CREATE_DEVIL_COUNT); if(currentCount == maxCount) { obj.setTimeEvent(PEND_EVENT_TIMER_CREATE_DEVIL,30,0,false); sq_var.setInt(PEND_EX_CREATE_DEVIL_COUNT,currentCount+1); } else if(currentCount > maxCount) { sendSubState_PandemoniumEx(obj,SUBSTATE_PANDEMONIUM_EX_END); return true; } else { local createDevilZ = currentCount%2 == 1 ? sq_getRandom(-20,-45) : sq_getRandom(20,45); local createDevilSize = sq_getRandom(0,4); // 0桧贼 蒙擎 饵桧锷 斜 桧豭 赎饵桧锷 阔 20%?睦煎 蒙擎啪 釭褥 local devilPowerUpRate = obj.sq_getIntData(0); local dmgRate = isAvengerAwakenning(obj) ? (devilPowerUpRate + 100)* 0.01 : 1.0; local dmg = obj.sq_getBonusRateWithPassive(SKILL_PANDEMONIUM_EX, STATE_PANDEMONIUM_EX, 0, dmgRate); local createXPos = 85; local createZPos = 64; if(isAvengerAwakenning(obj)) { createXPos = 160; createZPos = 80; } obj.sq_binaryData_startWrite(); //当撩 觼晦蒂 姜?怃 尔鸟匙. obj.sq_binaryData_writeWord(createDevilSize); obj.sq_binaryData_writeWord(moveSpeed); obj.sq_binaryData_writeWord(maxTime); obj.sq_binaryData_writeWord(moveMaxDistance); obj.sq_binaryData_writeDword(dmg.tointeger()); sq_SendCreatePassiveObjectPacket(obj,24110, 0, createXPos, 1, createZPos + createDevilZ, obj.getDirection()); sq_var.setInt(PEND_EX_CREATE_DEVIL_COUNT,currentCount+1); local createDevilTimeGap = sq_getRandom(50,90); obj.setTimeEvent(PEND_EVENT_TIMER_CREATE_DEVIL,createDevilTimeGap,0,false); } return false; // true贼 属寥 酝钦 } function onEndCurrentAni_PandemoniumEx(obj) { local subState = obj.getSkillSubState(); if(subState == SUBSTATE_PANDEMONIUM_EX_END) { obj.sq_addSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false); } } function onKeyFrameFlag_PandemoniumEx(obj,flagIndex) { if(flagIndex == 1) { local sq_var = obj.getVar(); local magicField = sq_CreateDrawOnlyObject(obj,"Character/Priest/Effect/Animation/Pandemonium/start/base.ani",ENUM_DRAWLAYER_NORMAL,false); local overEffect = sq_CreateDrawOnlyObject(obj,"Character/Priest/Effect/Animation/Pandemonium/start/OverEffectbase.ani",ENUM_DRAWLAYER_NORMAL,false); if(isAvengerAwakenning(obj)) { local xPos = sq_GetDistancePos(magicField.getXPos(), obj.getDirection(), 80); magicField.setCurrentPos(xPos, magicField.getYPos(), magicField.getZPos()+20); } sq_var.setObject(PEND_EX_MAGIC_FIELD, magicField); sq_var.setObject(PEND_EX_MAGIC_OVER, overEffect); //local xPos = sq_GetDistancePos(magicField.getXPos(), obj.getDirection(), 10); overEffect.setCurrentPos(magicField.getXPos(), magicField.getYPos()+2, magicField.getZPos()); local createDevilTimeGap = sq_getRandom(50,90); obj.setTimeEvent(PEND_EVENT_TIMER_CREATE_DEVIL,createDevilTimeGap,0,true); sq_SetMyShake(obj,4,3000); local flashScreenObj = sq_flashScreen(obj,80,5000,240,150, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM); sq_var.setObject(PEND_EX_FLASHSCREEN,flashScreenObj); } return true; }