DNF/sqr/character/atmage/crystalattack/crystalattack.nut

178 lines
4.8 KiB
Plaintext
Raw Normal View History

2024-03-30 00:19:16 +08:00
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;
//
//}
//