Sqr/character/atmage/crystalattack/crystalattack.nut

178 lines
4.8 KiB
Plaintext
Raw Permalink 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.

getroottable()["CrystalAttackCreatePos"] <- {};
getroottable()["CrystalAttackCreatePos"] = [[0,0],[-10,15],[10,-15], // 籀挤 撮偃暧 当撩 ?虽暮
[-5,8],[5,-8],[-15,23],[15,-23],
[0,0],[-10,15],[10,-15],[-15,30],[15,-30]];
function checkExecutableSkill_CrystalAttack(obj)
{
if(!obj) return false;
local b_useskill = obj.sq_IsUseSkill(SKILL_CRYSTALATTACK);
if(b_useskill) {
obj.sq_AddSetStatePacket(STATE_CRYSTALATTACK , STATE_PRIORITY_USER, false);
return true;
}
return false;
}
function onTimeEvent_CrystalAttack(obj, timeEventIndex, timeEventCount)
{
if(!obj)
return true;
if(!obj.isMyControlObject())
return true;
local maxCreateCount = ::CrystalAttackCreatePos.len();
local createCount = obj.sq_GetIntData(SKILL_CRYSTALATTACK, 1);
local currentIndex = timeEventCount-1;
if(timeEventCount > createCount)
return true;
local dmg = obj.sq_GetBonusRateWithPassive(SKILL_CRYSTALATTACK , STATE_CRYSTALATTACK, 0, 1.0);
local attackSpeedRate = obj.sq_GetIntData(SKILL_CRYSTALATTACK, 0);
local pos = ::CrystalAttackCreatePos[currentIndex];
local xDistance = pos[0];
local angle = pos[1];
obj.sq_StartWrite();
obj.sq_WriteDword(dmg); // 等嘐虽
obj.sq_WriteFloat(angle.tofloat()); // 陕紫
obj.sq_WriteWord(attackSpeedRate);
obj.sq_WriteWord(currentIndex); // 橡挤 樯策蝶
obj.sq_SendCreatePassiveObjectPacket(24221, 0, 120 + xDistance, 1, 0);
return false;
}
function onProc_CrystalAttack(obj)
{
if (!obj) return;
local var = obj.getVar();
if(obj.sq_GetCurrentFrameIndex() > 1 && var.getBool(1) == false) // 嫦饵胀瞳桧 桡棻贼
{
var.setBool(1,true); // 嫦饵 ?挤.
local maxCreateCount = ::CrystalAttackCreatePos.len();
obj.setTimeEvent(0,50,maxCreateCount,false);
}
}
function checkCommandEnable_CrystalAttack(obj)
{
if(!obj) return false;
local state = obj.sq_GetState();
if(state == STATE_ATTACK) {
return obj.sq_IsCommandEnable(SKILL_CRYSTALATTACK);
}
return true;
}
function onSetState_CrystalAttack(obj, state, datas, isResetTimer)
{
if(!obj) return;
obj.sq_StopMove();
obj.sq_SetCurrentAnimation(CUSTOM_ANI_CRYSTALATTACK);
local attackSpeedRate = obj.sq_GetIntData(SKILL_CRYSTALATTACK, 0);
if(attackSpeedRate != 100) {
obj.sq_SetAnimationSpeedRate(obj.sq_GetCurrentAni(),attackSpeedRate.tofloat());
}
obj.sq_PlaySound("MW_CRYSTALATK");
local var = obj.getVar();
var.setBool(1,false); // 觼葬蝶骁 横鸥桧 嫦翕 腑朝虽 嵘鼠. 渗热 蟾晦?.
//obj.sq_SetStaticSpeedInfo(SPEED_TYPE_CAST_SPEED, SPEED_TYPE_CAST_SPEED,
// SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
addElementalChain_ATMage(obj, ENUM_ELEMENT_WATER);
}
function prepareDraw_CrystalAttack(obj)
{
if(!obj) return;
local substate = obj.getSkillSubState();
}
function onEndCurrentAni_CrystalAttack(obj)
{
if(!obj) return;
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false);
}
//
//function onKeyFrameFlag_CrystalAttack(obj, flagIndex)
//{
//if(!obj) return true;
//
//
//local currentCreateCount = ::CrystalAttackCreatePos.len();
//
//local angle = 0.0;
//local xDistance = 0;
//if(flagIndex == 2) {
//local rand = sq_getRandom(10,20);
//angle = sq_ToRadian(rand.tofloat());
//xDistance = -10;
//}
//else if(flagIndex == 3) {
//local rand = sq_getRandom(10,20) * -1;
//angle = sq_ToRadian(rand.tofloat());
//xDistance = 10;
//}
//
//local dmg = obj.sq_GetBonusRateWithPassive(SKILL_CRYSTALATTACK , STATE_CRYSTALATTACK, 0, 1.0);
//local attackSpeedRate = obj.sq_GetIntData(SKILL_CRYSTALATTACK, 0);
//
//if(obj.isMyControlObject())
//{
//obj.sq_StartWrite();
//obj.sq_WriteDword(dmg); // 等嘐虽
//obj.sq_WriteFloat(angle); // 陕紫
//obj.sq_WriteWord(attackSpeedRate);
//obj.sq_WriteBool(false); // ?撩 蝶鉴 嵘鼠
//
//obj.sq_SendCreatePassiveObjectPacket(24221, 0, 120 + xDistance, 1, 0);
//
//
//// ?撩 蝶鉴击 嫔?
//// 觼葬蝶骁 横鸥 鬼?蒂 栉?棻贼 觼葬蝶骁桧 4偃 涡 当撩腌栖棻.
//local skillLevel = sq_GetSkillLevel(obj, SKILL_CRYSTALATTACK_EX);
//if (flagIndex == 3 && skillLevel > 0)
//{
//local angles = [0.5, 0.15, -0.20, -0.40];
//local xDistances = [-130, -110, -90, -70];
//
//// 嫔薹缣 4偃陛 寡翮肾横 当撩桧 肾紫烟 ?
//for (local i = 0; i < 4; i++)
//{
//
//obj.sq_StartWrite();
//obj.sq_WriteDword(dmg); // 等嘐虽
//obj.sq_WriteFloat(angles[i]); // 陕紫
//obj.sq_WriteWord(attackSpeedRate);
//obj.sq_WriteBool(true); // ?撩 蝶鉴 嵘鼠
//obj.sq_SendCreatePassiveObjectPacket(24221, 0, 220 + xDistances[i], 1, 0);
//}
//}
//}
//
//return true;
//
//}
//