Sqr/character/atmage/holonglight/holong_light.nut

148 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_HolongLight(obj)
{
if(!obj) return false;
local count = obj.getMyPassiveObjectCount(24222);
if(count > 0) {
local loadSlot = obj.sq_GetSkillLoad(SKILL_HOLONG_LIGHT);
if(!loadSlot) {
return false;
}
local isCool = loadSlot.isCooling();
if(!isCool) {
// 陛虽坚 毡朝 ?炀碳 酝缣 桧嘐 嫦饵胀 偃羹陛 嬴栖贼 嫦饵?棻.
local holongObj;
for(local i=0;i<count;++i) {
holongObj = obj.getMyPassiveObject(24222,i);
if(holongObj && holongObj.getState() < HOLONG_LIGHT_STATE_ATTACK) {
holongObj.sendStateOnlyPacket(HOLONG_LIGHT_STATE_ATTACK);
local loadSlot = obj.sq_GetSkillLoad(SKILL_HOLONG_LIGHT);
loadSlot.use(1);
break;
}
}
// 葆虽虞 嫦樯虽蒂 琼嬴 顶朝 睡碟
local buffCount = 0;
for(local i=0;i<count;++i) {
local passiveObj = obj.getMyPassiveObject(24222,i);
if(passiveObj && !isSameObject(holongObj,passiveObj) && passiveObj.getState() < HOLONG_LIGHT_STATE_ATTACK) {
buffCount++;
}
}
// 葆虽虞 嫦桧贼 藤颤歜击 给萼棻.
if(buffCount <= 0) { // ?偃 陴擎 鼻?缣摹 藤击 给萼棻.
obj.startSkillCoolTime(SKILL_HOLONG_LIGHT,1,-1);
}
return false;
}
}
else if(obj.getState() == STATE_STAND || obj.getState() == STATE_DASH || obj.getState() == STATE_ATTACK) {
local b_useskill = obj.sq_IsUseSkill(SKILL_HOLONG_LIGHT);
if(b_useskill) {
obj.sq_AddSetStatePacket(STATE_HOLONG_LIGHT, STATE_PRIORITY_USER, false);
return true;
}
}
return false;
}
function checkCommandEnable_HolongLight(obj)
{
if(!obj) return false;
local count = obj.getMyPassiveObjectCount(24222);
//警蜗晦 饷薯 蒙机 (2012.04.12)
if(count == 0 && obj.getState() != STATE_STAND && obj.getState() != STATE_DASH && obj.getState() != STATE_ATTACK)
return false;
local state = obj.sq_GetState();
if(state == STATE_ATTACK) {
// 念瘫潍缣怃朝 ?姜蝶鉴虏 警蜗桧 陛栋?栖棻. 蒙机濠:姜霞热 [2012.04.20]
return obj.sq_IsCommandEnable(SKILL_HOLONG_LIGHT);
}
return true;
}
function onSetState_HolongLight(obj, state, datas, isResetTimer)
{
if(!obj) return;
obj.sq_StopMove();
obj.sq_SetCurrentAnimation(CUSTOM_ANI_HOLONG_LIGHT);
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_CAST_SPEED, SPEED_TYPE_CAST_SPEED,
SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
local level = sq_GetSkillLevel(obj, SKILL_HOLONG_LIGHT);
local lifeTime = sq_GetLevelData(obj, SKILL_HOLONG_LIGHT, 0, level); //?炀碳 帼? 嵘? 卫除
AppendAppendageToSimple(obj, SKILL_HOLONG_LIGHT, "Appendage/Character/ap_atmage_buff.nut", lifeTime, true);
}
function onEndCurrentAni_HolongLight(obj)
{
if(!obj) return;
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false);
}
function onKeyFrameFlag_HolongLight(obj, flagIndex)
{
if(!obj) return true;
if(flagIndex == 1) {
obj.sq_AddSkillLoad(SKILL_HOLONG_LIGHT, 40, 2, 500);
local x = -26;
local y = 0;
local z = 90;
local activeObject = sq_FindShootingTarget(obj, sq_GetDistancePos(sq_GetXPos(obj),obj.getDirection(),x), sq_GetYPos(obj), sq_GetZPos(obj) + z, 0, 0, 4, 14, -1, 300, 100, 50, 100);
local horizonAngle = 0.0;
local verticalAngle = 0.0;
if (activeObject != NULL) {
local maxDistance = abs(activeObject.getXPos() - x);
horizonAngle = sq_GetShootingHorizonAngle(activeObject, y, 0, 5, maxDistance);
verticalAngle = sq_GetShootingVerticalAngle(activeObject, z, 0, 5, maxDistance, 300);
}
local level = sq_GetSkillLevel(obj, SKILL_HOLONG_LIGHT);
local lifeTime = sq_GetLevelData(obj, SKILL_HOLONG_LIGHT, 0, level); //?炀碳 帼? 嵘? 卫除
local defenceUp = sq_GetLevelData(obj, SKILL_HOLONG_LIGHT, 1, level);
local attackPower = obj.sq_GetBonusRateWithPassive(SKILL_HOLONG_LIGHT,STATE_HOLONG_LIGHT, 2, 1.0);
local shotTime = sq_GetIntData(obj, SKILL_HOLONG_LIGHT, 0);
local coolTime = sq_GetIntData(obj, SKILL_HOLONG_LIGHT, 1);
for(local i=0;i<2;++i) {
if(obj.isMyControlObject())
{
obj.sq_StartWrite();
obj.sq_WriteBool(i); // 颤殓 A : 桨嫔缣 当撩
obj.sq_WriteFloat(horizonAngle);
obj.sq_WriteFloat(verticalAngle);
obj.sq_WriteDword(lifeTime);
obj.sq_WriteDword(defenceUp);
obj.sq_WriteDword(attackPower);
obj.sq_WriteDword(shotTime);
obj.sq_WriteDword(coolTime);
obj.sq_SendCreatePassiveObjectPacket(24222, x, y, z, 0);
}
}
}
return true;
}