Sqr/character/atmage/frozenland/frozenland.nut

419 lines
12 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.

SUB_STATE_FROZENLAND_0 <- 0
SUB_STATE_FROZENLAND_1 <- 1
SUB_STATE_FROZENLAND_2 <- 2
SUB_STATE_FROZENLAND_3 <- 3
SUB_STATE_FROZENLAND_4 <- 4
SUB_STATE_FROZENLAND_CASTING <- 5
function createShockWaveAnimation(obj, x, y, z)
{
local ani = sq_CreateAnimation("", "PassiveObject/Character/Mage/Animation/ATFrozenLand/sub_dodge.ani");
local shockWaveObj = sq_CreatePooledObject(ani,true);
shockWaveObj = sq_SetEnumDrawLayer(shockWaveObj, ENUM_DRAWLAYER_BOTTOM);
if(shockWaveObj)
{
shockWaveObj.setCurrentPos(x,y,z);
sq_AddObject(obj, shockWaveObj, OBJECTTYPE_DRAWONLY, false);
}
}
function checkExecutableSkill_FrozenLand(obj)
{
if(!obj) return false;
local b_useskill = obj.sq_IsUseSkill(SKILL_FROZENLAND);
if(b_useskill) {
obj.sq_IntVectClear();
obj.sq_IntVectPush(SUB_STATE_FROZENLAND_CASTING); // substate撮?
obj.sq_AddSetStatePacket(STATE_FROZENLAND, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_FrozenLand(obj)
{
if(!obj) return false;
local state = obj.sq_GetState();
if(state == STATE_ATTACK)
{
// 念瘫潍缣怃朝 ?姜蝶鉴虏 警蜗桧 陛栋?栖棻. 蒙机濠:姜霞热 [2012.04.20]
return obj.sq_IsCommandEnable(SKILL_FROZENLAND); // 念瘫潍缣怃朝 ?姜蝶鉴虏 警蜗桧 陛栋?栖棻. 蒙机濠:姜霞热 [2012.04.20] obj.sq_IsCommandEnable(SKILL_FROZENLAND);
}
return true;
}
function onSetState_FrozenLand(obj, state, datas, isResetTimer)
{
if(!obj) return;
local substate = obj.sq_GetVectorData(datas, 0);
obj.setSkillSubState(substate);
obj.sq_StopMove();
obj.getVar().clear_vector();
obj.getVar().push_vector(0);
obj.getVar().push_vector(0);
obj.getVar().push_vector(0);
obj.getVar().push_vector(0);
obj.getVar().push_vector(0);
obj.getVar("state").clear_ct_vector();
obj.getVar("state").push_ct_vector();
if(substate == SUB_STATE_FROZENLAND_CASTING)
{
// 议蝶? 楼紫蒂 评塭陛紫烟 扑姜
// 议蝶? 楼紫陛 渗唳肾贼, 缣栖诡桧暮 楼紫紫 渗唳 腌栖棻.
// 议蝶? 啪桧虽紫 ?卫蒂 ?鄹栖棻.
obj.sq_SetCurrentAnimation(CUSTOM_ANI_FROZENLAND_CASTING);
local skillLevel = sq_GetSkillLevel(obj, SKILL_FROZENLAND);
local castTime = sq_GetCastTime(obj, SKILL_FROZENLAND, skillLevel);
local animation = sq_GetCurrentAnimation(obj);
local startTime = sq_GetFrameStartTime(animation, 16);
local speedRate = startTime.tofloat() / castTime.tofloat();
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_CAST_SPEED, SPEED_TYPE_CAST_SPEED,
SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, speedRate, speedRate);
sq_StartDrawCastGauge(obj, startTime, true);
obj.sq_PlaySound("MW_SLASHWATER");
}
else if(substate == SUB_STATE_FROZENLAND_0) {
obj.sq_SetCurrentAnimation(CUSTOM_ANI_FROZENLAND1);
}
else if(substate == SUB_STATE_FROZENLAND_1) {
obj.sq_SetCurrentAnimation(CUSTOM_ANI_FROZENLAND2);
}
else if(substate == SUB_STATE_FROZENLAND_2) {
local t = obj.getVar("state").get_ct_vector(0);
t.Reset();
t.Start(10000,0);
//obj.sq_SetCurrentAnimation(CUSTOM_ANI_FROZENLAND3);
}
else if(substate == SUB_STATE_FROZENLAND_3)
{
//print(" obj.sq_SetCurrentAnimation(CUSTOM_ANI_FROZENLAND3);");
obj.sq_SetCurrentAnimation(CUSTOM_ANI_FROZENLAND3);
}
else if(substate == SUB_STATE_FROZENLAND_4) {
// SUB_STATE_FROZENLAND_4 怃粽蝶才桧? 蒙机
}
//obj.sq_SetStaticSpeedInfo(SPEED_TYPE_CAST_SPEED, SPEED_TYPE_CAST_SPEED,
// SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
}
function prepareDraw_FrozenLand(obj)
{
if(!obj) return;
local substate = obj.getSkillSubState();
if(substate == SUB_STATE_FROZENLAND_0) {
// SUB_STATE_FROZENLAND_0 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FROZENLAND_1) {
// SUB_STATE_FROZENLAND_1 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FROZENLAND_2) {
// SUB_STATE_FROZENLAND_2 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FROZENLAND_3) {
// SUB_STATE_FROZENLAND_3 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FROZENLAND_4) {
// SUB_STATE_FROZENLAND_4 怃粽蝶才桧? 蒙机
}
}
function onProc_FrozenLand(obj)
{
if(!obj) return;
local substate = obj.getSkillSubState();
local pAni = obj.sq_GetCurrentAni();
local frmIndex = obj.sq_GetCurrentFrameIndex(pAni);
local currentT = sq_GetCurrentTime(pAni);
if(substate == SUB_STATE_FROZENLAND_0) {
// SUB_STATE_FROZENLAND_0 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FROZENLAND_1) {
// SUB_STATE_FROZENLAND_1 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FROZENLAND_2) {
// SUB_STATE_FROZENLAND_2 怃粽蝶才桧? 蒙机
local t = obj.getVar("state").get_ct_vector(0);
local currentT = 0;
currentT = t.Get();
//print(" currentT:" + currentT);
if(currentT > 240)
{
if(!obj.getVar().get_vector(1))
{
//obj.sq_SetCurrentAnimation(CUSTOM_ANI_FROZENLAND3);
if(obj.isMyControlObject())
{
obj.sq_IntVectClear();
obj.sq_IntVectPush(SUB_STATE_FROZENLAND_3); // substate撮?
obj.sq_AddSetStatePacket(STATE_FROZENLAND, STATE_PRIORITY_IGNORE_FORCE, true);
}
obj.getVar().set_vector(1, 1);
}
}
}
else if(substate == SUB_STATE_FROZENLAND_3) {
// SUB_STATE_FROZENLAND_3 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FROZENLAND_4) {
// SUB_STATE_FROZENLAND_4 怃粽蝶才桧? 蒙机
}
}
function onProcCon_FrozenLand(obj)
{
if(!obj) return;
local substate = obj.getSkillSubState();
local pAni = obj.sq_GetCurrentAni();
local frmIndex = obj.sq_GetCurrentFrameIndex(pAni);
if(substate == SUB_STATE_FROZENLAND_0) {
if(frmIndex >= 4) {
if(obj.getVar().get_vector(0) == 0)
{
if(obj.isMyControlObject())
{
local radiusRate = obj.sq_GetIntData(SKILL_FROZENLAND, 0);// 0. 卫瞪彰嫔 (葆彻霞 虽荤 绿徽 : 100%~)
local stopSpinNum = obj.sq_GetIntData(SKILL_FROZENLAND, 2); // 2. 晦菅桧 釭颤釭怃 薯濠葬缣怃 蝶?击 紫朝 热
local spinTime = obj.sq_GetIntData(SKILL_FROZENLAND, 3); // 3. 模辨给桧 药怃 陛遴等煎 菟横螃朝 卫除
sq_BinaryStartWrite();
sq_BinaryWriteDword(radiusRate); // 卫瞪彰嫔 (葆彻霞 虽荤 绿徽 : 100%~)
sq_BinaryWriteDword(stopSpinNum); // 晦菅桧 釭颤釭怃 薯濠葬缣怃 蝶?击 紫朝 热
sq_BinaryWriteDword(spinTime); // 模辨给桧 药怃 陛遴等煎 菟横螃朝 卫除
local multiHitTerm = obj.sq_GetIntData(SKILL_FROZENLAND, 1); // 1. 晦菅 棻钦?? 除问 (0.001蟾 钦嫔)
local multiHitAttackRate = obj.sq_GetBonusRateWithPassive(SKILL_FROZENLAND, STATE_FROZENLAND, 0, 1.0); //0.晦菅 棻钦?? 奢问溘(%)
local expAttackRate = obj.sq_GetBonusRateWithPassive(SKILL_FROZENLAND, STATE_FROZENLAND, 1, 1.0); // 1.晦菅 ?嫦 奢问溘(%)
obj.sq_GetLevelData(SKILL_FROZENLAND, 1, obj.sq_GetSkillLevel(SKILL_FROZENLAND));
// 2.彩念 ?徽 3.彩念 溯涟 4.彩念 卫除
local skillLevel = obj.sq_GetSkillLevel(SKILL_FROZENLAND);
local frozenRate = obj.sq_GetLevelData(SKILL_FROZENLAND, 2, skillLevel); // 2.彩念 ?徽
local frozenLevel = obj.sq_GetLevelData(SKILL_FROZENLAND, 3, skillLevel); // 3.彩念 溯涟
local frozenTime = obj.sq_GetLevelData(SKILL_FROZENLAND, 4, skillLevel); // 4.彩念 卫除
sq_BinaryWriteDword(multiHitTerm); // 晦菅 棻钦?? 除问
sq_BinaryWriteDword(multiHitAttackRate); // 晦菅 棻钦?? 奢问溘 (%)
sq_BinaryWriteDword(expAttackRate); // 晦菅 ?嫦 奢问溘 (%)
sq_BinaryWriteDword(frozenRate); // 彩念 ?徽
sq_BinaryWriteDword(frozenLevel); // 彩念 溯涟
sq_BinaryWriteDword(frozenTime); // 彩念 卫除
// 觼煎栖赝 嬴桧蛊 跷陛 蒙机
// 觼煎栖赝 嬴桧蛊 跷陛 蒙机 薯濠葬缣怃 给坚毡朝 卫除桧 0尔棻 觼棻贼 舆嫔蒂 摹??朝 state煎 渗唳?捡 ?栖棻.
local spinAddTime = obj.sq_GetIntData(SKILL_FROZENLAND, 4); // 4. 模辨给桧陛 议葛搅 舆渗击 ?瞪?朝 卫除 (0.001蟾钦嫔)
sq_BinaryWriteDword(spinAddTime); // 模辨给桧陛 议葛搅 舆渗击 ?瞪?朝 卫除 (0.001蟾钦嫔)
obj.sq_SendCreatePassiveObjectPacket(24247, 0, 10, -1, 0); // 陴彻饵 - 橡横称擎 渠虽 (葆彻霞)
}
obj.getVar().set_vector(0, 1);
}
}
}
else if(substate == SUB_STATE_FROZENLAND_1) {
local magicCirclePassiveObj = obj.sq_GetPassiveObject(24247); // po_ATFrozenLandMagicCircle
local stateChange = true;
if(magicCirclePassiveObj)
{
local magicCirclePassiveState = magicCirclePassiveObj.getState();
if(magicCirclePassiveState == S_PO_FROZENLAND_MC_3)
{
stateChange = true;
}
else
{
stateChange = false;
}
}
if(stateChange)
{
obj.sq_IntVectClear();
obj.sq_IntVectPush(SUB_STATE_FROZENLAND_2); // substate撮?
obj.sq_AddSetStatePacket(STATE_FROZENLAND, STATE_PRIORITY_IGNORE_FORCE, true);
}
}
else if(substate == SUB_STATE_FROZENLAND_2) {
// SUB_STATE_FROZENLAND_2 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FROZENLAND_3) {
// SUB_STATE_FROZENLAND_3 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FROZENLAND_4) {
// SUB_STATE_FROZENLAND_4 怃粽蝶才桧? 蒙机
}
}
function onEndCurrentAni_FrozenLand(obj)
{
if(!obj) return;
if(!obj.isMyControlObject()) {
return;
}
local substate = obj.getSkillSubState();
if(substate == SUB_STATE_FROZENLAND_CASTING)
{
obj.sq_IntVectClear();
obj.sq_IntVectPush(SUB_STATE_FROZENLAND_0); // substate撮?
obj.sq_AddSetStatePacket(STATE_FROZENLAND, STATE_PRIORITY_IGNORE_FORCE, true);
}
else if(substate == SUB_STATE_FROZENLAND_0) {
obj.sq_IntVectClear();
obj.sq_IntVectPush(SUB_STATE_FROZENLAND_1); // substate撮?
obj.sq_AddSetStatePacket(STATE_FROZENLAND, STATE_PRIORITY_IGNORE_FORCE, true);
}
else if(substate == SUB_STATE_FROZENLAND_1) {
}
else if(substate == SUB_STATE_FROZENLAND_2) {
}
else if(substate == SUB_STATE_FROZENLAND_3) {
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false);
}
else if(substate == SUB_STATE_FROZENLAND_4) {
// SUB_STATE_FROZENLAND_4 怃粽蝶才桧? 蒙机
}
}
function onKeyFrameFlag_FrozenLand(obj, flagIndex)
{
if(!obj) return false;
local substate = obj.getSkillSubState();
if(substate == SUB_STATE_FROZENLAND_0) {
// SUB_STATE_FROZENLAND_0 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FROZENLAND_1) {
// SUB_STATE_FROZENLAND_1 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FROZENLAND_2) {
// SUB_STATE_FROZENLAND_2 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FROZENLAND_3) {
// SUB_STATE_FROZENLAND_3 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FROZENLAND_4) {
// SUB_STATE_FROZENLAND_4 怃粽蝶才桧? 蒙机
}
return false;
}
function onEndState_FrozenLand(obj, new_state)
{
if(!obj) return;
local substate = obj.getSkillSubState();
if(substate == SUB_STATE_FROZENLAND_0) {
// SUB_STATE_FROZENLAND_0 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FROZENLAND_1) {
// SUB_STATE_FROZENLAND_1 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FROZENLAND_2) {
// SUB_STATE_FROZENLAND_2 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FROZENLAND_3) {
// SUB_STATE_FROZENLAND_3 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FROZENLAND_4) {
// SUB_STATE_FROZENLAND_4 怃粽蝶才桧? 蒙机
}
// 蝶才桧? 谦猿 ?擎 镞模 肾历棻贼 议蝶? 啪桧虽 桡据
sq_EndDrawCastGauge(obj);
}
function onAfterSetState_FrozenLand(obj, state, datas, isResetTimer)
{
if(!obj) return;
local substate = obj.getSkillSubState();
if(substate == SUB_STATE_FROZENLAND_0) {
// SUB_STATE_FROZENLAND_0 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FROZENLAND_1) {
// SUB_STATE_FROZENLAND_1 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FROZENLAND_2) {
// SUB_STATE_FROZENLAND_2 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FROZENLAND_3) {
// SUB_STATE_FROZENLAND_3 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FROZENLAND_4) {
// SUB_STATE_FROZENLAND_4 怃粽蝶才桧? 蒙机
}
}