// 塭桧?棚 错卫缣 当撩肾朝 维暧 潍虞 PO_LIGHTNING_WALL_CREATE <- 2; // ?卫粽 螃粽薛?朝 state陛 2睡搅 卫蒙?棻. PO_LIGHTNING_WALL_MOVE <- 3; PO_LIGHTNING_WALL_DESTROY <- 4; PO_LIGHTNING_VAR_LIGHTNING_1 <- 0; PO_LIGHTNING_VAR_LIGHTNING_2 <- 1; PO_LIGHTNING_VAR_TARGET_X_POS <- 2; PO_LIGHTNING_VAR_DIRECTION <- 3; // 潍虞暧 寞?擎 ?鼻 伪晦 阳侥缣 蟾晦 寞?击 荡潍 PO_LIGHTNING_1_DISTANCE_X <- 61; PO_LIGHTNING_1_DISTANCE_Y <- 32; PO_LIGHTNING_2_DISTANCE_X <- -76; PO_LIGHTNING_2_DISTANCE_Y <- -32; PO_LIGHTNING_TIMER_BLACK_MARK_SMALL <- 0; // 蒙擎 夥款 濠措 当撩 卫除 PO_LIGHTNING_TIMER_BLACK_MARK_BIG <- 1; // 赎 夥款 濠措 当撩 卫除 PO_LIGHTNING_TIMER_ELEC_MARK_1 <- 2; // 瞪晦 葆觼 1 PO_LIGHTNING_TIMER_ELEC_MARK_2 <- 3; // 瞪晦 葆觼 2 // 蝶鹧? 等桧搅蒂 奁舱?罹 谆桧锷 亵瞰 function lightingWallObjAniResizeing(parentObj, obj){ local parentChr = parentObj.getTopCharacter(); if(!parentChr) return; local size = sq_GetIntData(parentChr, SKILL_LIGHTNING_WALL, 0); size = size.tofloat()/100.0; local ani = sq_GetCurrentAnimation(obj); if(ani) ani.resizeWithChild(size); } // 饵桧锷 渗?缣 评艇 螃?掸 嫔纂蒂 葬欐. function getLightningWallPos(obj, offset) { local parentChr = obj.getTopCharacter(); if(!parentChr) return offset; local walllGap = sq_GetIntData(parentChr, SKILL_LIGHTNING_WALL, 0); offset = offset.tofloat() * (walllGap.tofloat()/100.0); return offset.tointeger(); } // 夥款 瞪晦 葆觼 当撩 function lightningWallMakeElectMark(obj, x, y) { local randNum = sq_getRandom(0,1); local elecMark = sq_AddDrawOnlyAniFromParent(obj,"PassiveObject/Character/Mage/Animation/ATLightningWall/8_el-p2_dodge_" + randNum + ".ani", 0, 0, 0); local x = obj.getXPos() + getLightningWallPos(obj, x); local y = obj.getYPos() + getLightningWallPos(obj, y); elecMark.setCurrentPos(x, y, 0); lightingWallObjAniResizeing(obj, elecMark); local ani = sq_GetCurrentAnimation(obj); } function setCustomData_po_ATLightningWall(obj, receiveData) { if(!obj) return; local moveDistance = receiveData.readDword(); local attackPower = receiveData.readDword(); local skill_level = receiveData.readDword(); local prob = receiveData.readFloat(); local level = receiveData.readDword(); local duration = receiveData.readDword(); local lightDamage = receiveData.readDword(); local attackInfo = sq_GetCurrentAttackInfo(obj); sq_SetCurrentAttackBonusRate(attackInfo, attackPower); sq_SetChangeStatusIntoAttackInfoWithEtc(attackInfo, 0, ACTIVESTATUS_LIGHTNING ,prob.tointeger() ,level ,duration, lightDamage, 0); sq_SetCurrentAttackeHitStunTime(attackInfo, 0); // 谢办 塭桧?棚 偌羹 当撩 local var = obj.getVar(); local lightningObj1 = sq_AddDrawOnlyAniFromParent(obj,"PassiveObject/Character/Mage/Animation/ATLightningWall/5_el-p_normal_1.ani", PO_LIGHTNING_1_DISTANCE_X, PO_LIGHTNING_1_DISTANCE_Y, 0); local lightningObj2 = sq_AddDrawOnlyAniFromParent(obj,"PassiveObject/Character/Mage/Animation/ATLightningWall/5_el-p_normal_2.ani", PO_LIGHTNING_2_DISTANCE_X, PO_LIGHTNING_2_DISTANCE_Y, 0); lightingWallObjAniResizeing(obj, lightningObj1); lightingWallObjAniResizeing(obj, lightningObj2); var.setObject(PO_LIGHTNING_VAR_LIGHTNING_1, lightningObj1); var.setObject(PO_LIGHTNING_VAR_LIGHTNING_2, lightningObj2); local targetXPos = sq_GetDistancePos(50, sq_GetDirection(obj), moveDistance); // 譆谦迹瞳虽 x谢? var.setInt(PO_LIGHTNING_VAR_TARGET_X_POS, targetXPos); var.setInt(PO_LIGHTNING_VAR_DIRECTION, sq_GetDirection(obj)); // 维暧 潍虞擎 卫薄鼻 ?鼻 螃艇薹桧横捡 ?棻. obj.setDirection(ENUM_DIRECTION_RIGHT); lightingWallObjAniResizeing(obj, obj); obj.sendStateOnlyPacket(PO_LIGHTNING_WALL_CREATE); } function onKeyFrameFlag_po_ATLightningWall(obj, keyIndex) { // 当撩卫 霞翕 if(keyIndex == 1) { sq_SetMyShake(obj,4,200); return false; } return true; } function onTimeEvent_po_ATLightningWall(obj, timeEventIndex, timeEventCount) { if(timeEventIndex == PO_LIGHTNING_TIMER_BLACK_MARK_SMALL) // 夥款缣 匐湮桧 濠措 { if(obj.isCurrentAnimationIndex(0)) { local var = obj.getVar(); local lightningObj1 = var.getObject(PO_LIGHTNING_VAR_LIGHTNING_1); local lightningObj2 = var.getObject(PO_LIGHTNING_VAR_LIGHTNING_2); if(lightningObj1) { local floorMark = sq_AddDrawOnlyAniFromParent(obj,"PassiveObject/Character/Mage/Animation/ATLightningWall/0_bottom_normal_1.ani", 0, 0, 0); floorMark.setCurrentPos(lightningObj1.getXPos(), lightningObj1.getYPos(), 0); lightingWallObjAniResizeing(obj, floorMark); sq_ChangeDrawLayer(floorMark, ENUM_DRAWLAYER_BOTTOM); } if(lightningObj2) { local floorMark = sq_AddDrawOnlyAniFromParent(obj,"PassiveObject/Character/Mage/Animation/ATLightningWall/0_bottom_normal_1.ani", 0, 0, 0); floorMark.setCurrentPos(lightningObj2.getXPos(), lightningObj2.getYPos(), 0); lightingWallObjAniResizeing(obj, floorMark); sq_ChangeDrawLayer(floorMark, ENUM_DRAWLAYER_BOTTOM); } return false; } else return true; } else if(timeEventIndex == PO_LIGHTNING_TIMER_BLACK_MARK_BIG) // 夥款缣 匐湮桧 濠措 { if(obj.isCurrentAnimationIndex(0)) { local randNum = sq_getRandom(0,2); local floorDark = sq_AddDrawOnlyAniFromParent(obj,"PassiveObject/Character/Mage/Animation/ATLightningWall/0_bottom_normal_2.ani", 0, 0, 0); sq_ChangeDrawLayer(floorDark, ENUM_DRAWLAYER_BOTTOM); lightingWallObjAniResizeing(obj, floorDark); local floorElec = sq_AddDrawOnlyAniFromParent(obj,"PassiveObject/Character/Mage/Animation/ATLightningWall/4_el-b_dodge_" + randNum+ ".ani", 0, 0, 0); sq_ChangeDrawLayer(floorElec, ENUM_DRAWLAYER_BOTTOM); lightingWallObjAniResizeing(obj, floorElec); return false; } else return true; } else if(timeEventIndex == PO_LIGHTNING_TIMER_ELEC_MARK_1) // 瞪晦 涛鼻 { if(obj.isCurrentAnimationIndex(0)) { lightningWallMakeElectMark(obj, PO_LIGHTNING_1_DISTANCE_X , PO_LIGHTNING_1_DISTANCE_Y); return false; } else return true; } else if(timeEventIndex == PO_LIGHTNING_TIMER_ELEC_MARK_2) // 瞪晦 涛鼻 { if(obj.isCurrentAnimationIndex(0)) { lightningWallMakeElectMark(obj, PO_LIGHTNING_2_DISTANCE_X , PO_LIGHTNING_2_DISTANCE_Y); return false; } else return true; } return true; } function setState_po_ATLightningWall(obj, state, datas) { if(!obj) return; if(state == PO_LIGHTNING_WALL_MOVE) { //桧翕 setCurrentAnimationFromCutomIndex(obj, 0); obj.sq_SetMoveParticle("Particle/ATLightningWall.ptl", 0.0, 0.0 );// 桧翕 ??赝 虽姜 local parentChr = obj.getTopCharacter(); local size = sq_GetIntData(parentChr, SKILL_LIGHTNING_WALL, 0); size = size.tofloat()/100.0; //谆桧锷. 谆桧锷陛 觼贼 夥款缣 桧嘐虽蒂 斜葬朝 除问紫 创?棻. local speed = sq_GetIntData(parentChr, SKILL_LIGHTNING_WALL, 1); local speedPerSec = speed.tofloat()/1000.0; local calltime = 55.0/speedPerSec * size; if(parentChr) { // 卫薄鼻 塭桧?棚 错擎 ?薹 寞?戏煎虏 尔樯棻. 评塭怃 奁渠寞?缣怃 陈莴唳办 寞?击 庵煎 ?棻. if(parentChr.getDirection() != obj.getDirection()) speed = -speed; sq_SetSpeedToMoveParticle(obj,0,speed); // x蹴 蝶?萄 虽姜 } obj.setTimeEvent(PO_LIGHTNING_TIMER_BLACK_MARK_SMALL, calltime.tointeger(),999,true); // 蒙擎 夥款 濠措 当撩 卫除 calltime = 100.0/speedPerSec * size; obj.setTimeEvent(PO_LIGHTNING_TIMER_BLACK_MARK_BIG, calltime.tointeger(),999,true); // 赎 夥款 濠措 当撩 卫除 calltime = 90.0/speedPerSec * size; obj.setTimeEvent(PO_LIGHTNING_TIMER_ELEC_MARK_1, calltime.tointeger(),999,true); // 瞪晦 葆觼 calltime = 110.0/speedPerSec * size; obj.setTimeEvent(PO_LIGHTNING_TIMER_ELEC_MARK_2, calltime.tointeger(),999,true); // 瞪晦 葆觼 local var = obj.getVar(); local lightningObj1 = var.getObject(PO_LIGHTNING_VAR_LIGHTNING_1); local lightningObj2 = var.getObject(PO_LIGHTNING_VAR_LIGHTNING_2); // 桧?? 称桧晦 /|/|/| <- 蹂楛 窒葬 伪擎 桧?? local currentAni = sq_GetCurrentAnimation(lightningObj1); if(currentAni) { currentAni.addLayerAnimation(6,sq_CreateAnimation("","PassiveObject/Character/Mage/Animation/ATLightningWall/7_el-p1_dodge_1.ani"),true); currentAni = sq_GetCurrentAnimation(lightningObj2); currentAni.addLayerAnimation(6,sq_CreateAnimation("","PassiveObject/Character/Mage/Animation/ATLightningWall/7_el-p1_dodge_2.ani"),true); } lightingWallObjAniResizeing(obj, obj); } else if(state == PO_LIGHTNING_WALL_DESTROY) { obj.sq_RemoveMoveParticle(); // 桧翕部 setCurrentAnimationFromCutomIndex(obj, 1); // ?惚 拥栖 lightingWallObjAniResizeing(obj, obj); local var = obj.getVar(); local lightningObj1 = var.getObject(PO_LIGHTNING_VAR_LIGHTNING_1); local lightningObj2 = var.getObject(PO_LIGHTNING_VAR_LIGHTNING_2); if(lightningObj1 && lightningObj2) { lightningObj1.setValid(false); lightningObj2.setValid(false); lightningObj1 = sq_AddDrawOnlyAniFromParent(obj,"PassiveObject/Character/Mage/Animation/ATLightningWall/d5_el-p_normal_1.ani", PO_LIGHTNING_1_DISTANCE_X, PO_LIGHTNING_1_DISTANCE_Y, 0); lightningObj2 = sq_AddDrawOnlyAniFromParent(obj,"PassiveObject/Character/Mage/Animation/ATLightningWall/d5_el-p_normal_2.ani", PO_LIGHTNING_2_DISTANCE_X, PO_LIGHTNING_2_DISTANCE_Y, 0); var.setObject(PO_LIGHTNING_VAR_LIGHTNING_1, lightningObj1); var.setObject(PO_LIGHTNING_VAR_LIGHTNING_2, lightningObj2); } } } function onAttack_po_ATLightningWall(obj, damager, boundingBox, isStuck) { if(sq_IsHoldable(obj,damager) && sq_IsGrabable(obj,damager) && !sq_IsFixture(damager)) { local parentChr = obj.getTopCharacter(); local masterAppendage = CNSquirrelAppendage.sq_AppendAppendage(damager, obj, SKILL_LIGHTNING_WALL, false, "Character/ATMage/LightningWall/ap_LightningWall.nut", true); if(parentChr && masterAppendage) { sq_HoldAndDelayDie(damager, obj, true, true, true, 200, 200, ENUM_DIRECTION_NEUTRAL , masterAppendage); local time = sq_GetIntData(parentChr, SKILL_LIGHTNING_WALL, 3); // 虽虽霜 唳霜卫除 local appendageInfo = masterAppendage.getAppendageInfo(); appendageInfo.setValidTime(time); } } return 0; } function procAppend_po_ATLightningWall(obj) { if(!obj) return; local var = obj.getVar(); if(!var) return; local lightningObj1 = var.getObject(PO_LIGHTNING_VAR_LIGHTNING_1); local lightningObj2 = var.getObject(PO_LIGHTNING_VAR_LIGHTNING_2); local pos1X = getLightningWallPos(obj, PO_LIGHTNING_1_DISTANCE_X); local pos1Y = getLightningWallPos(obj, PO_LIGHTNING_1_DISTANCE_Y); local pos2X = getLightningWallPos(obj, PO_LIGHTNING_2_DISTANCE_X); local pos2Y = getLightningWallPos(obj, PO_LIGHTNING_2_DISTANCE_Y); if(lightningObj1) lightningObj1.setCurrentPos(obj.getXPos() + pos1X.tointeger(), obj.getYPos()+ pos1Y.tointeger(), obj.getZPos()); // ?惚陛 嬴栖塭 ?惚 拥栖煎 掖羹. if(lightningObj2) lightningObj2.setCurrentPos(obj.getXPos() + pos2X.tointeger(), obj.getYPos()+ pos2Y.tointeger(), obj.getZPos()); local targetXPos = var.getInt(PO_LIGHTNING_VAR_TARGET_X_POS); local direction = var.getInt(PO_LIGHTNING_VAR_DIRECTION); if(direction == ENUM_DIRECTION_RIGHT) { if(obj.getXPos() > targetXPos) { sq_SetCurrentPos(obj, targetXPos, obj.getYPos(), obj.getZPos()); obj.sendStateOnlyPacket(PO_LIGHTNING_WALL_DESTROY); } } else if(direction == ENUM_DIRECTION_LEFT) { if(obj.getXPos() < targetXPos) { sq_SetCurrentPos(obj, targetXPos, obj.getYPos(), obj.getZPos()); obj.sendStateOnlyPacket(PO_LIGHTNING_WALL_DESTROY); } } else { obj.sendStateOnlyPacket(PO_LIGHTNING_WALL_DESTROY); // 寞?桧 桡戏贼 饵塭虽虽 强挤戏煎 ?惚 } } function onEndCurrentAni_po_ATLightningWall(obj) { if(!obj) return; if(obj.isCurrentAnimationIndex(1)) { if(obj.isMyControlObject()) sq_SendDestroyPacketPassiveObject(obj); // 饵塭虽朝 赅暮? ?惚 } } function onDestroyObject_po_ATLightningWall(obj, destroyObj) { if(!obj || isSameObject(obj,destroyObj)) { local var = obj.getVar(); local lightningObj1 = var.getObject(PO_LIGHTNING_VAR_LIGHTNING_1); local lightningObj2 = var.getObject(PO_LIGHTNING_VAR_LIGHTNING_2); if(lightningObj1) lightningObj1.setValid(false); // ?惚陛 嬴栖塭 ?惚 拥栖煎 掖羹. if(lightningObj2) lightningObj2.setValid(false); } local parentChr = obj.getTopCharacter(); if(isSameObject(obj,parentChr)) { if(obj.isMyControlObject()) sq_SendDestroyPacketPassiveObject(obj); } }