Sqr/character/atmage/icesword/ice_sword.nut

163 lines
5.3 KiB
Plaintext
Raw Permalink Normal View History

2024-03-18 21:37:40 +08:00
function checkExecutableSkill_IceSword(obj)
{
if(!obj) return false;
local b_useskill = obj.sq_IsUseSkill(SKILL_ICE_SWORD);
if(b_useskill) {
obj.sq_AddSetStatePacket(STATE_ICE_SWORD, STATE_PRIORITY_USER, false);
return true;
}
return false;
}
function checkCommandEnable_IceSword(obj)
{
if(!obj) return false;
local state = obj.sq_GetState();
if(state == STATE_ATTACK) {
return obj.sq_IsCommandEnable(SKILL_ICE_SWORD);
}
return true;
}
function onSetState_IceSword(obj, state, datas, isResetTimer)
{
if(!obj) return;
obj.sq_StopMove();
obj.sq_SetCurrentAnimation(CUSTOM_ANI_ICE_SWORD);
// 觼煎栖赝 嬴桧蛊 蒙机 蝶鉴 奢问楼紫 隶陛 等桧颤 (100~)
local speed100Rate = obj.sq_GetIntData(SKILL_ICE_SWORD, 0); // 0. 觼煎栖赝 嬴桧蛊 蒙机) 蝶鉴 奢问楼紫 隶陛 等桧颤 (100~)
local speedRate = speed100Rate.tofloat() / 100.0;
obj.sq_SetCurrentAttackInfo(CUSTOM_ATTACK_INFO_ICE_SWORD);
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED,
SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, speedRate, speedRate);
//obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED,
//SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
// 钟帼瞪 蝶鉴击 瞳辨?棻.
obj.sq_SetApplyConversionSkill();
local damage = obj.sq_GetBonusRateWithPassive(SKILL_ICE_SWORD , STATE_ICE_SWORD, 0, 1.0);
obj.sq_SetCurrentAttackBonusRate(damage);
obj.sq_setCustomHitEffectFileName("Character/Mage/Effect/Animation/ATIceSword/05_2_smoke_dodge .ani");
addElementalChain_ATMage(obj, ENUM_ELEMENT_WATER);
// ?撩 蝶鉴击 嫔?
// 彩寥匐 鬼?蒂 栉?棻贼 3颤陛 蒙翕?虽 强坚, 1, 2颤蒂 ?廓涡 奁犒?棻.
local skillLevel = sq_GetSkillLevel(obj, SKILL_ICE_SWORD_EX);
if (skillLevel > 0)
{
local var = obj.getVar();
var.clear_vector();
var.push_vector(0);
}
}
function onEndCurrentAni_IceSword(obj)
{
if(!obj) return;
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false);
}
function onAttack_IceSword(obj, damager, boundingBox, isStuck)
{
if (!obj || !damager) return;
sq_EffectLayerAppendage(damager,sq_RGB(0,144,255),150,0,0,240);
}
function onKeyFrameFlag_IceSword(obj, flagIndex)
{
if(!obj) return true;
if (flagIndex == 1)
{
obj.sq_SetCurrentAttackInfo(CUSTOM_ATTACK_INFO_ICE_SWORD);
// 钟帼瞪 蝶鉴击 瞳辨?棻.
obj.sq_SetApplyConversionSkill();
local damage = obj.sq_GetBonusRateWithPassive(SKILL_ICE_SWORD , STATE_ICE_SWORD, 0, 1.0);
obj.sq_SetCurrentAttackBonusRate(damage);
}
else if (flagIndex == 2)
{
//虞颤
obj.sq_SetCurrentAttackInfo(CUSTOM_ATTACK_INFO_ICE_SWORD_LAST);
// 钟帼瞪 蝶鉴击 瞳辨?棻.
obj.sq_SetApplyConversionSkill();
local skill_level = sq_GetSkillLevel(obj, SKILL_ICE_SWORD);
local damage = obj.sq_GetBonusRateWithPassive(SKILL_ICE_SWORD , STATE_ICE_SWORD, 1, 1.0);
obj.sq_SetCurrentAttackBonusRate(damage);
local skill_level = sq_GetSkillLevel(obj, SKILL_ICE_SWORD);
local attackInfo = sq_GetCurrentAttackInfo(obj);
printc("attackInfo " + attackInfo);
if (!attackInfo) return;
// 0.1,2颤 奢问溘% 1.虞颤 奢问溘% 2.桧楼 马模 溯涟 3.桧楼马模 ?睦 4.桧楼马模 卫除
local ice_power = sq_GetLevelData(obj, SKILL_ICE_SWORD, 2, skill_level);
local ice_prob = sq_GetLevelData(obj, SKILL_ICE_SWORD, 3, skill_level);
local ice_time = sq_GetLevelData(obj, SKILL_ICE_SWORD, 4, skill_level);
sq_SetChangeStatusIntoAttackInfo(attackInfo, 0, ACTIVESTATUS_SLOW, ice_prob, ice_power, ice_time);
}
else if (flagIndex == 3)
{
// ?撩 蝶鉴击 嫔?
// 彩寥匐 鬼?蒂 栉?棻贼 3颤陛 蒙翕?虽 强坚, 1, 2颤蒂 ?廓涡 奁犒?棻.
local skillLevel = sq_GetSkillLevel(obj, SKILL_ICE_SWORD_EX);
if (skillLevel > 0)
{
// 念瘫潍缣怃朝 蒙翕?虽 强朝棻.
if (checkModuleType(MODULE_TYPE_PVP_TYPE))
return true;
obj.sq_SetCurrentAttackInfo(CUSTOM_ATTACK_INFO_ICE_SWORD);
// 钟帼瞪 蝶鉴击 瞳辨?棻.
obj.sq_SetApplyConversionSkill();
local damage = obj.sq_GetBonusRateWithPassive(SKILL_ICE_SWORD , STATE_ICE_SWORD, 0, 1.0);
obj.sq_SetCurrentAttackBonusRate(damage);
// 0.1,2颤 奢问溘% 1.虞颤 奢问溘% 2.桧楼 马模 溯涟 3.桧楼马模 ?睦 4.桧楼马模 卫除
local skill_level = sq_GetSkillLevel(obj, SKILL_ICE_SWORD);
local attackInfo = sq_GetCurrentAttackInfo(obj);
local ice_power = sq_GetLevelData(obj, SKILL_ICE_SWORD, 2, skill_level);
local ice_prob = sq_GetLevelData(obj, SKILL_ICE_SWORD, 3, skill_level);
local ice_time = sq_GetLevelData(obj, SKILL_ICE_SWORD, 4, skill_level);
sq_SetChangeStatusIntoAttackInfo(attackInfo, 0, ACTIVESTATUS_SLOW, ice_prob, ice_power, ice_time);
local var = obj.getVar();
local flag = var.get_vector(0);
if (flag <= 0)
{ // 罗 ?溯歜戏煎 肾给萼棻.
local animation = sq_GetCurrentAnimation(obj);
obj.sq_SetCurrentTimeByFrame(animation, 0);
var.set_vector(0, 1);
}
else
{
// 蝶鉴击 谦猿卫监棻.
if (obj.isMyControlObject())
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false);
}
}
}
return true;
}