Sqr/character/atmage/pieceofice/piece_of_ice.nut

143 lines
3.7 KiB
Plaintext

POI_MAX_KEYFRAME_INDEX <-8;
function checkExecutableSkill_PieceOfIce(obj)
{
if (!obj) return false;
local useSkill = obj.sq_IsUseSkill(SKILL_PIECE_OF_ICE);
if (useSkill) {
//obj.sq_IntVectClear();
//obj.sq_IntVectPush(SUB_STATE_ICEROAD_0); // substate撮?
obj.sq_AddSetStatePacket(STATE_PIECE_OF_ICE, STATE_PRIORITY_IGNORE_FORCE, false);
return true;
}
return false;
}
function checkCommandEnable_PieceOfIce(obj)
{
if(!obj) return false;
local state = obj.sq_GetState();
if(state == STATE_ATTACK) {
// 念瘫潍缣怃朝 ?姜蝶鉴虏 警蜗桧 陛栋?栖棻. 蒙机濠:姜霞热 [2012.04.20]
return obj.sq_IsCommandEnable(SKILL_PIECE_OF_ICE);
}
return true;
}
function onSetState_PieceOfIce(obj, state, datas, isResetTimer)
{
if(!obj) return;
obj.sq_StopMove();
obj.sq_SetCurrentAnimation(CUSTOM_ANI_PIECE_OF_ICE);
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED,
SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
}
function onProc_PieceOfIce(obj)
{
if(!obj) return;
local substate = obj.getSkillSubState();
}
function onEndCurrentAni_PieceOfIce(obj)
{
if(!obj) return;
local substate = obj.getSkillSubState();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false);
}
function onKeyFrameFlag_PieceOfIce(obj, flagIndex)
{
if(!obj) return false;
local substate = obj.getSkillSubState();
local level = sq_GetSkillLevel(obj, SKILL_PIECE_OF_ICE);
if(flagIndex == 1) {
if(obj.isMyControlObject())
{
obj.sq_StartWrite();
obj.sq_WriteBool(false);
local x = sq_GetIntData(obj, SKILL_PIECE_OF_ICE, 0);
local z = sq_GetIntData(obj, SKILL_PIECE_OF_ICE, 1);
obj.sq_SendCreatePassiveObjectPacket(24224, 0, x, 0, z);
}
}
else if(flagIndex >= 2 ) {
local iceCoreObj = obj.getMyPassiveObject(24224,0);
if(iceCoreObj)
{
if(iceCoreObj.isMyControlObject()) {
iceCoreObj.sendStatePacket(PIECE_OF_ICE_CORE_STATE_DAMAGE, flagIndex);
}
local randMin = sq_GetIntData(obj, SKILL_PIECE_OF_ICE, 2);
local randMax = sq_GetIntData(obj, SKILL_PIECE_OF_ICE, 3);
local randNum = sq_getRandom(randMin, randMax);
for(local i=0;i<randNum;++i) {
//譆渠 ?楚斜 樯策蝶 = 8 8缣 陛梱选热烟 彰嫔陛 还横 苌棻.
if(obj.isMyControlObject())
{
local hAngleRange = sq_GetIntData(obj, SKILL_PIECE_OF_ICE, 5); //谢办 彰嫔
local vAngleRange = sq_GetIntData(obj, SKILL_PIECE_OF_ICE, 6); //鼻? 彰嫔
if(hAngleRange > 360)
hAngleRange = 360;
local horizonAngle = sq_getRandom(0,hAngleRange) -(hAngleRange/2);
local verticalAngle = sq_getRandom(0,vAngleRange);
// ?溯歜桧 虽陈热烟 当撩 谢?陛 薄薄 寰戏煎 菟横陛啪莠
local startPosY = (40 * (8-flagIndex)/POI_MAX_KEYFRAME_INDEX) * (vAngleRange == 0 ? 1 : horizonAngle/(hAngleRange/2));
local lifeTime = sq_GetIntData(obj, SKILL_PIECE_OF_ICE, 4);
local iceParticle = sq_CreateDrawOnlyObject(iceCoreObj, "PassiveObject/Character/Mage/Animation/ATPieceOfIce/08_ice_shard1_dodge.ani",ENUM_DRAWLAYER_NORMAL,true);
sq_SetCustomRotate(iceParticle,sq_ToRadian(-horizonAngle.tofloat()));
obj.sq_StartWrite();
obj.sq_WriteWord(sq_getRandom(0,5));
obj.sq_WriteFloat(horizonAngle.tofloat()); // 热? 彰嫔
obj.sq_WriteFloat(verticalAngle.tofloat()); // 热霜 彰嫔
obj.sq_WriteWord(lifeTime);
obj.sq_SendCreatePassiveObjectPacket(24223, 0, 60, startPosY, 75);
}
}
}
}
return true;
}
function onDamage_PieceOfIce(obj, attacker, boundingBox)
{
if(!obj) return;
local iceCoreObj = obj.getMyPassiveObject(24224,0);
if(iceCoreObj)
iceCoreObj.sendStateOnlyPacket(PIECE_OF_ICE_CORE_STATE_END);
}