Sqr/character/atmage/frozenland/frozenland.nut

419 lines
12 KiB
Plaintext
Raw Normal View History

2024-03-18 21:37:40 +08:00
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 怃粽蝶才桧? 蒙机
}
}