DNF/sqr/character/atmage/lightningwall/lightningwall.nut

157 lines
4.6 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 横?蛤虽虏击 称桧坚 鼻撮晦栋擎 横?蛤虽缣怃 棻 ?棻.
function checkExecutableSkill_LightningWall(obj)
{
if(!obj) return false;
local b_useskill = obj.sq_IsUseSkill(SKILL_LIGHTNING_WALL);
if(b_useskill) {
obj.sq_AddSetStatePacket(STATE_LIGHTNING_WALL , STATE_PRIORITY_USER, false);
return true;
}
return false;
}
function checkCommandEnable_LightningWall(obj)
{
if(!obj)
return false;
local state = obj.sq_GetState();
if(state == STATE_ATTACK) {
// 念瘫潍缣怃朝 ?姜蝶鉴虏 警蜗桧 陛栋?栖棻. 蒙机濠:姜霞热 [2012.04.20]
return obj.sq_IsCommandEnable(SKILL_LIGHTNING_WALL);
}
return true;
}
function onEndState_LightningWall(obj, newState)
{
if(!obj)
return;
if(newState != STATE_LIGHTNING_WALL)
setLightningWallState(obj, PO_LIGHTNING_WALL_DESTROY);
}
function onSetState_LightningWall(obj, state, datas, isResetTimer)
{
if(!obj) return;
obj.sq_StopMove();
obj.sq_SetCurrentAnimation(CUSTOM_ANI_LIGHTNING_WALL);
// 议蝶? 楼紫蒂 评塭陛紫烟 扑姜
// 议蝶? 楼紫陛 渗唳肾贼, 缣栖诡桧暮 楼紫紫 渗唳 腌栖棻.
// 议蝶? 啪桧虽紫 ?卫蒂 ?鄹栖棻.
local skillLevel = sq_GetSkillLevel(obj, SKILL_LIGHTNING_WALL);
local castTime = sq_GetCastTime(obj, SKILL_LIGHTNING_WALL, skillLevel);
local animation = sq_GetCurrentAnimation(obj);
local castAniTime = sq_GetFrameStartTime(animation, 6);
local speedRate = castAniTime.tofloat() / castTime.tofloat();
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_CAST_SPEED, SPEED_TYPE_CAST_SPEED,
SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, speedRate, speedRate);
sq_StartDrawCastGauge(obj, castAniTime, true);
local var = obj.getVar();
var.setBool(0,false);
addElementalChain_ATMage(obj, ENUM_ELEMENT_LIGHT);
}
function setLightningWallState(obj, state)
{
if(!obj || !obj.isMyControlObject())
return;
local count = obj.getMyPassiveObjectCount(24218);
for(local i =0; i<count ; ++i) {
local wall = obj.getMyPassiveObject(24218,i);
if(wall) {
local var = obj.getVar();
local isSendMove = var.getBool(0);
if(state == PO_LIGHTNING_WALL_DESTROY) // 桧嘐 桧翕酝橾隆 赅暮桧 镞模 腑棻坚 饵塭虽虽 强朝棻.
{
if(wall.getState() != PO_LIGHTNING_WALL_MOVE)
wall.sendStateOnlyPacket(PO_LIGHTNING_WALL_DESTROY);
}
else
{
wall.sendStateOnlyPacket(state);
}
}
}
}
function onEndCurrentAni_LightningWall(obj)
{
if(!obj) return;
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false);
}
function onProc_LightningWall(obj)
{
if(!obj)
return;
local var = obj.getVar();
if(obj.isMyControlObject() && var.getBool(0) == false && sq_GetCurrentFrameIndex(obj) > 20)
{
setLightningWallState(obj,PO_LIGHTNING_WALL_MOVE);
sq_flashScreen(obj, 0, 1000,500, 180, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
var.setBool(0,true);
obj.sq_PlaySound("LIGHTWALL_SHOT");
}
}
function onKeyFrameFlag_LightningWall(obj, flagIndex)
{
if(!obj) return true;
if (flagIndex == 1) {
sq_EndDrawCastGauge(obj);
sq_EffectLayerAppendageOnlyBody(obj, sq_RGB(255,255,255), 255, 0, 0, 320);
if(obj.isMyControlObject()) {
local yByDirection = -1;
if(obj.getDirection() != ENUM_DIRECTION_RIGHT)
yByDirection = 1;
local moveDistance = sq_GetIntData(obj, SKILL_LIGHTNING_WALL, 2); //2: 桧翕 剪葬
local attackPower = obj.sq_GetBonusRateWithPassive(SKILL_LIGHTNING_WALL , STATE_LIGHTNING_WALL, 0, 1.0);
local skill_level = sq_GetSkillLevel(obj, SKILL_LIGHTNING_WALL);
local prob = sq_GetLevelData(obj, SKILL_LIGHTNING_WALL, 2, skill_level)/10.0; // 2. 马瞪 ?睦 (0.1%)
local level = sq_GetLevelData(obj, SKILL_LIGHTNING_WALL, 1, skill_level); // 1. 马瞪 溯涟
local duration = sq_GetLevelData(obj, SKILL_LIGHTNING_WALL, 4, skill_level); // 4. 虽楼卫除
local lightDamage = sq_GetLevelData(obj, SKILL_LIGHTNING_WALL, 3, skill_level); // 3. 马瞪 奢问溘
// 塭桧?棚 错 当撩
obj.sq_StartWrite();
obj.sq_WriteDword(moveDistance); // 迹瞳虽 x 谢?
obj.sq_WriteDword(attackPower);
obj.sq_WriteDword(skill_level);
obj.sq_WriteFloat(prob);
obj.sq_WriteDword(level);
obj.sq_WriteDword(duration);
obj.sq_WriteDword(lightDamage);
obj.sq_SendCreatePassiveObjectPacket(24218, 0, 50, -1, 0);
}
}
else if (flagIndex == 2) {
sq_EffectLayerAppendageOnlyBody(obj, sq_RGB(255,255,255), 255, 0, 0, 400);
}
else if (flagIndex == 3) {
// 塭桧?棚 错 桧翕
sq_SetMyShake(obj,4,300);
}
return true;
}