Sqr/character/creatormage/creatormage_common.nut

2015 lines
48 KiB
Plaintext
Raw Permalink 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.

// 褐叙 议葛搅 - ?煎餍颤殓 蒙机
// ?营煎怃 议葛搅 霜机 舱侥赀击 宪 热 桡朝 妇啗煎 罹彻饵蒂 渠鼻戏煎 蒙机击 ?艘蝗栖棻.
// 渡碟除 Thief陛 褐叙 议葛搅 - 葆办蝶夔?煤 霜机桧塭坚 除舆?栖棻.
// ?? Thief陛 嬴棋 褐叙 霜机 舱侥赀戏煎 夥绂横捡 ?栖棻.
// 寿缣 舆戮侥缣 Master塭坚 赀芦肾朝匙擎 夔?煤 肾朝 螃粽薛?菟暧 MainCharacter殓栖棻.
// 觼葬缣桧搅 瞪瘫鼻?樯虽 羹觼?朝 ?热殓栖棻.
function IsInBattleCreator(obj)
{
if (!obj)
return false;
if (!obj.isMyControlObject())
return false;
//print(" isInBattle:" + obj.isInBattle());
if (sq_GetCurrentModuleType() == MODULE_TYPE_SELECT_DUNGEON)
{
return false;
}
if (sq_IsInBattle() && !sq_IsPauseTypeWorld(obj))
{
if (!obj.isInActiveSkillBlockedMap())
{ // 挡?粽 蝶鉴击 噩 热 毡朝 裘樯虽 羹觼?栖棻.
if (obj.isInBattle())
return true;
}
}
return false;
}
function lockMouse(obj)
{
if (!obj)
return;
if (sq_IsMyControlObject(obj) && sq_getJob(obj) == ENUM_CHARACTERJOB_CREATOR_MAGE)
{
sq_SetClipCursor(true);
setEnableBattleInUI(false);
obj.getVar("MouseLock").clear_vector();
obj.getVar("MouseLock").push_vector(1);
print(" lock mouse");
}
}
function unLockMouse(obj)
{
if (!obj)
return;
if (sq_IsMyControlObject(obj) && sq_getJob(obj) == ENUM_CHARACTERJOB_CREATOR_MAGE)
{
sq_SetClipCursor(false);
setEnableBattleInUI(true);
obj.getVar("MouseLock").clear_vector();
obj.getVar("MouseLock").push_vector(0);
print(" un lock mouse");
}
}
function getCreatorTypeGaugeRate(obj)
{
local appendage = getCreatorMageStateAppendage(obj);
if (appendage)
{
local max_gaugeValue = appendage.sq_var.get_vector(I_MAX_COUNT);
local gaugeValue = appendage.sq_var.get_vector(I_REMAIN_COUNT);
local rate = (gaugeValue.tofloat() * 100.0) / max_gaugeValue.tofloat();
return rate;
}
return 0.0;
}
function getCreatorTypeColor(obj, type)
{
local rgb = sq_RGB(255,50,50);
switch (type)
{
case CREATOR_TYPE_FLAME:
rgb = sq_RGB(255,50,50);
break;
case CREATOR_TYPE_ICE:
rgb = sq_RGB(50,255,255);
break;
case CREATOR_TYPE_DISTURB:
rgb = sq_RGB(110,30,230);
break;
case CREATOR_TYPE_GUARDIAN:
rgb = sq_RGB(255,170,40);
break;
case CREATOR_TYPE_WIND:
rgb = sq_RGB(255,250,150);
break;
}
return rgb;
}
function getCreatorTypeAlphaColor(obj, type, alpha)
{
local rgba = sq_RGBA(255,50,50,alpha);
switch (type)
{
case CREATOR_TYPE_FLAME:
rgba = sq_RGBA(255,50,50,alpha);
break;
case CREATOR_TYPE_ICE:
rgba = sq_RGBA(50,255,255,alpha);
break;
case CREATOR_TYPE_DISTURB:
rgba = sq_RGBA(110,30,230,alpha);
break;
case CREATOR_TYPE_GUARDIAN:
rgba = sq_RGBA(255,170,40,alpha);
break;
case CREATOR_TYPE_WIND:
rgba = sq_RGBA(255,250,150,alpha);
break;
}
return rgba;
}
// 觼葬缣桧搅暧 颤殓缣 评塭 楼撩横?蛤虽蒂 葬欐?栖棻.
function getCreatorMageAppendageByType(obj, type)
{
local appendage = null;
local appendageName = null;
switch (type)
{
case CREATOR_TYPE_FLAME:
appendageName = "Character/CreatorMage/ap_creatormage_flame.nut";
break;
case CREATOR_TYPE_ICE:
appendageName = "Character/CreatorMage/ap_creatormage_ice.nut";
break;
case CREATOR_TYPE_DISTURB:
appendageName = "Character/CreatorMage/ap_creatormage_disturb.nut";
break;
case CREATOR_TYPE_GUARDIAN:
appendageName = "Character/CreatorMage/ap_creatormage_guardian.nut";
break;
case CREATOR_TYPE_WIND:
appendageName = "Character/CreatorMage/ap_creatormage_wind.nut";
break;
}
if (appendageName != null)
appendage = CNSquirrelAppendage.sq_GetAppendage(obj,appendageName);
return appendage;
}
function getAniCreatorSkillOn(obj, type)
{
if (!obj)
return null;
local sq_var = obj.getVar();
local ani = null;
switch (type)
{
case CREATOR_TYPE_FLAME:
ani = sq_var.GetAnimationMap("hud_skillicon_creator_fire", "Character/Mage/CreatorAnimation/ui/hud_skillicon/hud_skillicon_creator_fire.ani");
break;
case CREATOR_TYPE_ICE:
ani = sq_var.GetAnimationMap("hud_skillicon_creator_ice", "Character/Mage/CreatorAnimation/ui/hud_skillicon/hud_skillicon_creator_ice.ani");
break;
case CREATOR_TYPE_DISTURB:
ani = sq_var.GetAnimationMap("hud_skillicon_creator_defence", "Character/Mage/CreatorAnimation/ui/hud_skillicon/hud_skillicon_creator_defence.ani");
break;
case CREATOR_TYPE_GUARDIAN:
ani = sq_var.GetAnimationMap("hud_skillicon_creator_block", "Character/Mage/CreatorAnimation/ui/hud_skillicon/hud_skillicon_creator_block.ani");
break;
case CREATOR_TYPE_WIND:
ani = sq_var.GetAnimationMap("hud_skillicon_creator_wind", "Character/Mage/CreatorAnimation/ui/hud_skillicon/hud_skillicon_creator_wind.ani");
break;
}
return ani;
}
function getAniCreatorSkillOff(obj, type)
{
if (!obj)
return null;
local sq_var = obj.getVar();
local ani = null;
switch (type)
{
case CREATOR_TYPE_FLAME:
ani = sq_var.GetAnimationMap("hud_skillicon_creator_fire02", "Character/Mage/CreatorAnimation/ui/hud_skillicon/hud_skillicon_creator_fire02.ani");
break;
case CREATOR_TYPE_ICE:
ani = sq_var.GetAnimationMap("hud_skillicon_creator_ice02", "Character/Mage/CreatorAnimation/ui/hud_skillicon/hud_skillicon_creator_ice02.ani");
break;
case CREATOR_TYPE_DISTURB:
ani = sq_var.GetAnimationMap("hud_skillicon_creator_defence02", "Character/Mage/CreatorAnimation/ui/hud_skillicon/hud_skillicon_creator_defence02.ani");
break;
case CREATOR_TYPE_GUARDIAN:
ani = sq_var.GetAnimationMap("hud_skillicon_creator_block02", "Character/Mage/CreatorAnimation/ui/hud_skillicon/hud_skillicon_creator_block02.ani");
break;
case CREATOR_TYPE_WIND:
ani = sq_var.GetAnimationMap("hud_skillicon_creator_wind02", "Character/Mage/CreatorAnimation/ui/hud_skillicon/hud_skillicon_creator_wind02.ani");
break;
}
if (ani)
{
local rate = getCreatorTypeGaugeRate(obj);
local currentFrameIndex = ani.GetCurrentFrameIndex();
if (rate < 50.0 && rate > 30.0)
{
if (currentFrameIndex > 3)
{
ani.setEnd(false);
ani.setCurrentFrameWithChildLayer(0);
}
}
else if (rate <= 30.0)
{
if (currentFrameIndex > 8)
{
ani.setEnd(false);
ani.setCurrentFrameWithChildLayer(5);
}
}
}
return ani;
}
// 觼葬缣搅暧 醱瞪晦栋击 撮??栖棻.
function setChargeCreatorMageGauge(obj, type, value)
{
local appendage = getCreatorMageAppendageByType(obj, type);
if (appendage)
{
if (value)
{ // 醱瞪卫蒙桧塭贼 颤桧该蒂 亿煎 撮??栖棻.
appendage.getTimer().Reset();
appendage.getTimer().Start(10000,0);
// 陴嬴毡朝 偎热蒂 ?学?怃 ?煎 瓣表韩阳梱虽暧 卫除击 掘?鹿栖棻.
local initRemainCnt = appendage.sq_var.get_vector(I_REMAIN_COUNT);
appendage.sq_var.set_vector(I_CHARGE_INIT_COUNT, initRemainCnt);
}
appendage.sq_var.set_vector(l_CHARGE_ON, value);
}
}
// 觼葬缣搅暧 陕 撮睡蝶鉴缣 渠? 啪桧虽 模赅榆击 掘?栖棻.
function getCreatorSkillConsumeValue(obj, skillIndex)
{
local consumeValue = 10;
local staticRowIndex = -1;
switch (skillIndex)
{
case SKILL_FIREWALL:
// 1. 模赅榆
staticRowIndex = 1;
break;
case SKILL_WOODFENCE:
// 1. 模赅榆
staticRowIndex = 1;
break;
case SKILL_ICEROCK:
// 2. 模赅榆
staticRowIndex = 2;
break;
case SKILL_FIREHURRICANE:
// 1. 模赅榆
staticRowIndex = 1;
break;
case SKILL_ICESHIELD:
// 1. 模赅榆
staticRowIndex = 1;
break;
case SKILL_ICEPLATE:
// 1. 模赅榆
staticRowIndex = 1;
break;
case SKILL_MGRAB:
// 2. 模赅榆
staticRowIndex = 2;
break;
case SKILL_FIREMETEO:
// 2. 模赅榆
staticRowIndex = 2;
break;
case SKILL_WINDPRESS:
// 2. 模赅榆
staticRowIndex = 2;
break;
case SKILL_WINDSTORM:
// 2. 模赅榆
staticRowIndex = 1;
break;
}
if (staticRowIndex != -1)
consumeValue = sq_GetIntData(obj, skillIndex, staticRowIndex);
return consumeValue;
}
// 觼溯桧搅暧 赅苌 楼撩 啪桧虽 醱瞪击 卫蒙?栖棻.
function onAllChargeCreatorMageGauge(obj)
{
for (local i = CREATOR_TYPE_FLAME; i < CREATOR_TYPE_MAX; i++)
{
setChargeCreatorMageGauge(obj, i, 1);
}
}
function getCreatorMageStateAppendage(obj)
{
// 觼葬缣桧搅 state 横?蛤虽 殓栖棻.
// 蝶鉴击 噙贼 桧翕?贼怃 ?廓缣 ?釭暧 蝶鉴虏 噩 热 毡晦阳侥缣 横?蛤虽蒂 舒朝匙殓栖棻.
// ap_creatormage_flame.nut
// ap_creatormage_disturb.nut
// ap_creatormage_guardian.nut
// ap_creatormage_ice.nut
// 觼葬缣桧搅暧 奢问颤殓击 椭横褫栖棻.
local type = obj.getVar("state").get_vector(0);
if (type < 0)
return null;
local appendage = getCreatorMageAppendageByType(obj, type);
if (!appendage)
return null;
if (appendage.sq_var.size_vector() == 0)
{
for (local i = 0; i < I_SIZE; i++)
appendage.sq_var.push_vector(-1);
}
return appendage;
}
function getCreatorBeforePosX(obj)
{
local appendage = getCreatorMageStateAppendage(obj);
if(appendage)
{
return appendage.sq_var.get_vector(I_BEFORE_X);
}
return -1;
}
function getCreatorBeforePosY(obj)
{
local appendage = getCreatorMageStateAppendage(obj);
if(appendage)
{
return appendage.sq_var.get_vector(I_BEFORE_Y);
}
return -1;
}
function setCreatorBeforePos(obj, x, y)
{
local appendage = getCreatorMageStateAppendage(obj);
if(appendage)
{
if (appendage.sq_var.size_vector() == 0)
{
for (local i = 0; i < I_SIZE; i++)
appendage.sq_var.push_vector(0);
}
appendage.sq_var.set_vector(I_BEFORE_X, x);
appendage.sq_var.set_vector(I_BEFORE_Y, y);
}
}
function setCreatorBeforeCount(obj, cnt)
{
local appendage = getCreatorMageStateAppendage(obj);
if(appendage)
{
if (appendage.sq_var.size_vector() == 0)
{
for (local i = 0; i < I_SIZE; i++)
appendage.sq_var.push_vector(0);
}
appendage.sq_var.set_vector(I_BEFORE_COUNT, cnt);
}
}
// 觼葬缣桧搅暧 蝶鉴樯策蝶蒂 撮??栖棻.
function setCreatorSkillStateSkillIndex(obj, index)
{
if (!obj)
return;
local oldStateIndex = getCreatorSkillStateSkillIndex(obj);
if (oldStateIndex == CREATOR_TYPE_DISTURB)
{
// 寞?赅萄缣怃 萄煎办蒂 堤舆朝匙击 ?廓 ?轿?鄹栖棻.
// 援艇鼻鹧缣怃 蝶鉴樯策蝶蒂 渗唳?贼 夸醮毡朝 帼斜嫦当
onMouseButtonUp_Mgrab(obj);
}
obj.getVar("state").clear_vector();
obj.getVar("state").push_vector(index);
if (index != -1)
{
local ani = getAniCreatorSkillOn(obj, index);
if (obj.getVar("gauge_ani").size_vector() == 0)
obj.getVar("gauge_ani").push_vector(1);
else
obj.getVar("gauge_ani").set_vector(0, 1);
if (ani)
{
obj.sq_PlaySound("PCHANGE");
sq_Rewind(ani);
}
}
}
// 觼葬缣桧搅暧 蝶鉴偎热蒂 撮??栖棻.
function setCreatorSkillCount(obj, cnt)
{
local appendage = getCreatorMageStateAppendage(obj);
if (appendage)
{
if (appendage.sq_var.size_vector() == 0)
{
for (local i = 0; i < I_SIZE; i++)
appendage.sq_var.push_vector(0);
}
appendage.sq_var.set_vector(I_REMAIN_COUNT, cnt);
}
}
// ?营噙坚 毡朝 蝶鉴樯策蝶 殓栖棻.
function getCreatorSkillStateSkillIndex(obj)
{
if (!obj)
return -1;
if (obj.getVar("state").size_vector() == 0)
{
obj.getVar("state").push_vector(-1);
}
return obj.getVar("state").get_vector(0);
}
// 陴嬴毡朝 蝶鉴偎热
function getCreatorRemainSkillCount(obj)
{
local remainCount = 0;
local appendage = getCreatorMageStateAppendage(obj);
if(appendage)
{
if (appendage.sq_var.size_vector() == 0)
{
for (local i = 0; i < I_SIZE; i++)
appendage.sq_var.push_vector(0);
}
remainCount = appendage.sq_var.get_vector(I_REMAIN_COUNT);
}
return remainCount;
}
// 觼溯桧搅暧 卫瞪饵遴萄蒂 嫦翕?栖棻.
function playCreatorCastSound(obj, skillIndex)
{
switch (skillIndex)
{
case SKILL_FIREWALL:
obj.sq_PlaySound("R_CR_FIREWALL");
break;
case SKILL_FIREMETEO:
obj.sq_PlaySound("R_CR_METEO");
break;
case SKILL_ICEROCK:
obj.sq_PlaySound("R_CR_ICESTONE");
break;
case SKILL_ICEPLATE:
obj.sq_PlaySound("R_CR_ICEPLATE");
break;
case SKILL_WOODFENCE:
obj.sq_PlaySound("R_CR_WOODFENCE");
break;
case SKILL_MGRAB:
obj.sq_PlaySound("R_CR_THROW_MONSTER");
break;
case SKILL_WINDSTORM:
obj.sq_PlaySound("R_CR_WINDSTORM");
break;
}
}
function useCreatorSkill(obj, skillIndex, x, y, consumeValue)
{
local appendage = getCreatorMageStateAppendage(obj);
if(appendage)
{
switch (skillIndex)
{
case SKILL_FIREWALL:
case SKILL_WOODFENCE:
case SKILL_ICEROCK:
case SKILL_FIREMETEO:
case SKILL_ICEPLATE:
{
// 鼻晦 蝶鉴菟擎 夥款y蹴匐仪击 ?瑭捡 ?栖棻.
if (y < TILE_FLOOR_START_Y)
return false;
}
break;
}
local cnt = getCreatorRemainSkillCount(obj);
local remainCnt = (cnt - consumeValue);
if(remainCnt < 0)
{
remainCnt = 0;
if (obj.isMessage())
{
//29004>啪桧虽陛 睡褶?罹 %s蝶鉴桧 ?薯腌栖棻.
local type = getCreatorSkillStateSkillIndex(obj);
local typeStrIndex = 0;
switch (type)
{
case CREATOR_TYPE_FLAME:
typeStrIndex = 29005;
break;
case CREATOR_TYPE_ICE:
typeStrIndex = 29006;
break;
case CREATOR_TYPE_DISTURB:
typeStrIndex = 29007;
break;
case CREATOR_TYPE_GUARDIAN:
typeStrIndex = 29008;
break;
case CREATOR_TYPE_WIND:
typeStrIndex = 29009;
break;
}
if (typeStrIndex)
{
sq_AddMessagePrintf(29004, typeStrIndex);
}
}
setCreatorSkillStateSkillIndex(obj, -1);
// 赅苌 觼溯桧搅暧 楼撩 醱瞪击 卫蒙?栖棻.
//setCreatorBeforeCount(obj, remainCnt);
onAllChargeCreatorMageGauge(obj);
return false;
}
setCreatorBeforePos(obj, x, y);
setCreatorBeforeCount(obj, cnt);
setCreatorSkillCount(obj, remainCnt);
//
appendage.getTimer().Reset();
appendage.getTimer().Start(10000,0);
// 质湍 晦奖击 绿掖?怃 譆蟾煎 噙朝匙桧塭贼..卫瞪饵遴萄 轿溘
if (obj.getVar("useskill").size_vector() == 0)
{
obj.getVar("useskill").push_vector(skillIndex);
playCreatorCastSound(obj, skillIndex);
}
else
{
if (obj.getVar("useskill").get_vector(0) != skillIndex)
{
obj.getVar("useskill").set_vector(0, skillIndex);
playCreatorCastSound(obj, skillIndex);
}
}
//
local rate = getCreatorTypeGaugeRate(obj);
if (rate < 50)
{
if (obj.getVar("gauge_ani").get_vector(0) != 2)
{
local type = getCreatorSkillStateSkillIndex(obj);
local ani = getAniCreatorSkillOff(obj, type);
if (ani)
{
sq_Rewind(ani);
}
if (obj.getVar("gauge_ani").size_vector() == 0)
obj.getVar("gauge_ani").push_vector(2);
else
obj.getVar("gauge_ani").set_vector(0, 2);
}
}
}
return true;
}
// ?营 蹂羶? 颤殓 葆办蝶 豭赝葛击 ?击 阳 横雯 蝶鉴樯虽 椭横鹿栖棻.
function getLButtonSkillByType(obj, type)
{
if (type < 0 || type >= CREATOR_TYPE_MAX)
return -1;
local size = CREATOR_TYPE_MAX; // ?釭 涡 跷陛?捡?
local skill_l =[];
skill_l.resize(size);
skill_l[CREATOR_TYPE_NONE] = -1;
skill_l[CREATOR_TYPE_FLAME] = SKILL_FIREWALL;
skill_l[CREATOR_TYPE_ICE] = SKILL_ICEROCK;
skill_l[CREATOR_TYPE_DISTURB] = SKILL_WOODFENCE;
skill_l[CREATOR_TYPE_GUARDIAN] = SKILL_FIREHURRICANE;
skill_l[CREATOR_TYPE_WIND] = SKILL_WINDPRESS;
return skill_l[type];
}
// ?营 蹂羶? 颤殓 葆办蝶 螃艇赝葛击 ?击 阳 横雯 蝶鉴樯虽 椭横鹿栖棻.
function getRButtonSkillByType(obj, type)
{
if (type < 0 || type >= CREATOR_TYPE_MAX)
return -1;
local size = CREATOR_TYPE_MAX; // ?釭 涡 跷陛?捡?
local skill_l =[];
skill_l.resize(size);
skill_l[CREATOR_TYPE_NONE] = -1;
skill_l[CREATOR_TYPE_FLAME] = SKILL_FIREMETEO;
skill_l[CREATOR_TYPE_ICE] = SKILL_ICEPLATE;
skill_l[CREATOR_TYPE_DISTURB] = SKILL_MGRAB;
skill_l[CREATOR_TYPE_GUARDIAN] = SKILL_ICESHIELD;
skill_l[CREATOR_TYPE_WIND] = SKILL_WINDSTORM;
return skill_l[type];
}
// ?营 葆办蝶 豭赝葛 帼?击 扬毓击 阳 釭螃朝 蝶鉴击 葬欐?栖棻.
function getLButtonSkill(obj)
{
if (!obj)
return -1;
local type = obj.getVar("state").get_vector(0);
local skillIndex = getLButtonSkillByType(obj, type);
if (skillIndex != -1)
{
local level = sq_GetSkillLevel(obj, skillIndex);
if (level <= 0)
return -1;
}
return skillIndex;
}
// ?营 葆办蝶 螃艇赝葛 帼?击 扬毓击 阳 釭螃朝 蝶鉴击 椭蝗栖棻.
function getRButtonSkill(obj)
{
if (!obj)
return -1;
local type = obj.getVar("state").get_vector(0);
local skillIndex = getRButtonSkillByType(obj, type);
if (skillIndex != -1)
{
local level = sq_GetSkillLevel(obj, skillIndex);
if (level <= 0)
return -1;
}
return skillIndex;
}
// ?营 觼葬缣桧搅 瞪瘫 ui ?撩? 鼻鹧樯虽 羹觼?琐栖棻.
// 橾奁 ui陛 ?撩?樯虽 羹觼?贼 腌栖棻.
function isEnableCreatorBattleInUI()
{
local mainControl = sq_GetGlobalMainControl();
if (mainControl)
{
return mainControl.IsEnable();
}
return false;
}
function setEnableBattleInUI(enable)
{
local quiestUI = sq_GetPopupWindowMainCotrol(1); // quest guide
if (quiestUI)
{
quiestUI.SetEnable(enable);
quiestUI.SetVisible(true);
}
local group = sq_GetUISystemChatControl(99);
if (group)
{
group.SetEnable(enable);
group.SetVisible(true);
}
local chatControl = sq_GetGlobalChatControl();
if (chatControl)
{
chatControl.SetEnable(enable);
chatControl.SetVisible(true);
}
local mainControl = sq_GetGlobalMainControl();
if (mainControl)
{
mainControl.SetEnable(enable);
mainControl.SetVisible(true);
}
local strikerUI = sq_GetStrikerSkillUi();
if (strikerUI)
{
strikerUI.SetEnable(enable);
// strikerUI.SetVisible(enable);
}
}
// 褐叙 议葛搅 - 觼葬缣桧搅缣怃 瞪瘫 卫 葆办蝶 晦栋击 斛渠??晦 嫔?
// ?贼顶 ui菟 葆办蝶 ?撩?陛 肾朝虽 寰肾朝虽 晦遽桧 肾朝 嫔纂殓栖棻. 桧够缣 属寥or sqr 夥樯注击 ?栖棻.
function onOpenPopupWindow_CreatorMage(obj, popupType, windowTileType)
{
if (!obj)
return;
if (!IsInBattleCreator(obj))
{
return;
}
// 樯? 孺紫办谛 晦颤 ?釭?釭 ?机击 鼠卫?栖棻.
if (sq_IsIgnoreOpenPopupCreator(popupType, windowTileType))
return;
local isEsc = sq_IsESCClosableWindow(popupType);
local windowsNum = sq_GetPopupWindows();
// 褐叙 议葛搅 - 觼葬缣桧搅缣怃 瞪瘫 卫 葆办蝶 晦栋击 斛渠??晦 嫔?
// ?贼顶 ui菟 葆办蝶 ?撩?陛 肾朝虽 寰肾朝虽 晦遽桧 肾朝 嫔纂殓栖棻. 桧够缣 属寥or sqr 夥樯注击 ?栖棻.
unLockMouse(obj);
}
function onClosePopupWindow_CreatorMage(obj, popupType, windowTileType)
{
if (!obj)
return;
if (!IsInBattleCreator(obj))
return;
// 樯? 孺紫办谛 晦颤 ?釭?釭 ?机击 鼠卫?栖棻.
if (sq_IsIgnoreOpenPopupCreator(popupType, windowTileType))
return;
local isEsc = sq_IsESCClosableWindow(popupType);
// 翮萼 孺紫办陛 ?釭塭紫 毡戏贼 鼠卫?栖棻.
//if (!isEsc)
//return;
local windowsNum = sq_GetPopupWindows();
//
// 觼葬缣桧搅陛 鼠卫? 热 桡朝 夔?煤?捡?朝 ?机桧 翮溥毡朝虽 羹觼?朝 ?热殓栖棻.
if (sq_IsOpenCreatorControlPopupWindows())
return;
print(" onClose popupType:" + popupType + " windowTileType:" + windowTileType);
//print(" clip on");
lockMouse(obj);
}
// 渠莲饵遴萄蒂 撮??朝 螃帼塭桧注胀 ?热殓栖棻..
// 觼葬缣桧搅朝 渠莲横鸥饵遴萄陛 釭螃贼 寰腌栖棻.
function playDashAttackSound_CreatorMage(obj)
{
return 1;
}
// 螃帼胀 嬴桧蛊击 琼晦嫔? ?热 殓栖棻.
function checkOverItemObject_CreatorMage(obj)
{
if (!obj)
return null;
local itemObj = null;
local objMgr = obj.getObjectManager();
if (objMgr)
{
itemObj = objMgr.getMeetItemObject(IMouse.GetXPos(), IMouse.GetYPos());
}
return itemObj;
}
// 觼葬缣桧搅暧 颤殓涤 蝶鉴樯策蝶蒂 椭蝗栖棻.
function getTypeSkillIndex(obj, type)
{
local idx = SKILL_CREATORFLAME;
switch (type)
{
case CREATOR_TYPE_FLAME:
idx = SKILL_CREATORFLAME;
break;
case CREATOR_TYPE_ICE:
idx = SKILL_CREATORICE;
break;
case CREATOR_TYPE_DISTURB:
idx = SKILL_CREATORDISTURB;
break;
case CREATOR_TYPE_GUARDIAN:
idx = SKILL_CREATORGUARDIAN;
break;
case CREATOR_TYPE_WIND:
idx = SKILL_CREATORWIND;
break;
}
return idx;
}
function drawMainCustomUI_CreatorMage(obj)
{
if (!obj)
return;
local sq_var = obj.getVar();
// 蝶鉴蜗煜
local hud_creator_b_gauge = sq_var.GetAnimationMap("hud_creator_b_gauge", "Character/Mage/CreatorAnimation/ui/hud_creator_b_gauge.ani");
local hud_creator_b_select = sq_var.GetAnimationMap("hud_creator_b_select", "Character/Mage/CreatorAnimation/ui/hud_creator_b_select.ani");
local skill_ui_index = 0;
local x = 626;
local y = 588;
local offset = 36;
// ?斜葬晦
local hudCreatorAni = sq_var.GetAnimationMap("hud_creator_back", "Character/Mage/CreatorAnimation/ui/hud_creator_back.ani");
sq_DrawSpecificFrame(hudCreatorAni, x, y, false, 0, false, 1.0);
//
// 谆办濠陛 毡击 热 毡戏嘎煎 桧够缣怃 寡?樯虽 嬴棋虽蒂 羹觼?罹
// 寡?桧 嬴棋 唳办 醴怃谛 ui蒂 ?横鄹栖棻.
if (!IsInBattleCreator(obj))
{
local isEnable = isEnableCreatorBattleInUI();
if (!isEnable)
{
unLockMouse(obj);
}
//return;
}
// 摹鸥? 才舒葬 斜葬晦
if (getCreatorSkillStateSkillIndex(obj) != -1)
{
local type = getCreatorSkillStateSkillIndex(obj);
local skillmgr = obj.getSkillManager();
local slot = -1;
if (skillmgr)
{
local index = getTypeSkillIndex(obj, type);
slot = skillmgr.getSlotindex(index);
}
if (slot != -1)
{
// 摹鸥虽 斜葬晦
sq_AnimationProc(hud_creator_b_select);
sq_drawCurrentFrame(hud_creator_b_select, x + (slot * offset), y, false);
}
}
// 啪桧虽 斜葬晦
local hud_creator_b_gauge = sq_var.GetAnimationMap("hud_creator_b_gauge", "Character/Mage/CreatorAnimation/ui/hud_creator_b_gauge.ani");
// 楼撩蝶鉴 啪桧虽 斜葬晦 睡碟殓栖棻.
local skillmgr = obj.getSkillManager();
if (!skillmgr)
return;
for (local i = CREATOR_TYPE_FLAME; i < CREATOR_TYPE_MAX; i++)
{
local slot = -1;
if (skillmgr)
{
local index = getTypeSkillIndex(obj, i);
slot = skillmgr.getSlotindex(index);
}
if (slot != -1)
{
local appendage = getCreatorMageAppendageByType(obj, i);
if (appendage)
{
local gaugeValue = 0;
local max_gaugeValue = 0;
max_gaugeValue = appendage.sq_var.get_vector(I_MAX_COUNT);
gaugeValue = appendage.sq_var.get_vector(I_REMAIN_COUNT);
local rate = gaugeValue.tofloat() / max_gaugeValue.tofloat();
local rgb = getCreatorTypeColor(obj, i);
local alpha = sq_ALPHA(255);
hud_creator_b_gauge.setImageRate(rate, 1.0);
local gaugePosX = x - 87;
sq_DrawSpecificFrameEffect_SIMPLE(hud_creator_b_gauge, gaugePosX + (slot * offset), y, 0, rgb, alpha, true);
}
}
}
}
function onProcSkillShop_CreatorMage(obj, control)
{
local x = 573;
local y = 538;
local offset = 46;
//print(" control x:" + control.GetXPos() + " y:" + control.GetYPos());
local sq_var = obj.getVar();
// 啪桧虽 斜葬晦
local hud_creator_b_gauge = sq_var.GetAnimationMap("hud_creator_b_gauge", "Character/Mage/CreatorAnimation/ui/hud_creator_b_gauge.ani");
// 楼撩蝶鉴 啪桧虽 斜葬晦 睡碟殓栖棻.
local skillmgr = obj.getSkillManager();
if (!skillmgr)
return;
for (local i = CREATOR_TYPE_FLAME; i < CREATOR_TYPE_MAX; i++)
{
local slot = -1;
if (skillmgr)
{
local index = getTypeSkillIndex(obj, i);
slot = skillmgr.getSlotindex(index);
}
if (slot != -1)
{
local appendage = getCreatorMageAppendageByType(obj, i);
if (appendage)
{
local gaugeValue = 0;
local max_gaugeValue = 0;
max_gaugeValue = appendage.sq_var.get_vector(I_MAX_COUNT);
gaugeValue = appendage.sq_var.get_vector(I_REMAIN_COUNT);
local rate = gaugeValue.tofloat() / max_gaugeValue.tofloat();
local rgb = getCreatorTypeColor(obj, i);
local alpha = sq_ALPHA(255);
hud_creator_b_gauge.setImageRate(rate, 1.0);
local gaugePosX = x;
sq_DrawSpecificFrameEffect_SIMPLE(hud_creator_b_gauge, gaugePosX + (slot * offset), y, 0, rgb, alpha, true);
}
}
}
}
function drawCustomUI_CreatorMage(obj)
{
// 葆办蝶斜椰 籀葬
if (!obj)
return;
if (!IsInBattleCreator(obj))
{
return;
}
// 醴怃斜葬晦
// 醴怃 斜葬晦 睡碟殓栖棻.
local isLock = sq_IsClipCursor();
if (!isLock)
{
if (!sq_IsVisibleCursor())
{
sq_SetVisibleCursor(true);
}
return;
}
if (sq_IsVisibleCursor())
{
sq_SetVisibleCursor(false);
}
local ani = obj.getVar().GetAnimationMap("NORMAL",
"Character/Mage/Effect/Animation/CreatorMagicSphere/normal.ani"); // 橾奁醴怃
local usingSkillIndex = getCreatorSkillStateSkillIndex(obj);
if (usingSkillIndex == CREATOR_TYPE_DISTURB)
{
local stage = sq_GetObjectManagerStage(obj);
if (!stage)
return;
local control = stage.getMainControl();
if (control.IsRBDown())
{ // 萄煎办橾隆 醴怃蒂 夥习栖棻.
ani = obj.getVar().GetAnimationMap("THROW",
"Character/Mage/Effect/Animation/CreatorMagicSphere/draw_cursor.ani"); //
}
else
{
ani = obj.getVar().GetAnimationMap("BLOCK",
"Character/Mage/Effect/Animation/CreatorMagicSphere/block.ani"); //
}
}
else if (usingSkillIndex == CREATOR_TYPE_GUARDIAN)
{
ani = obj.getVar().GetAnimationMap("GUARD",
"Character/Mage/Effect/Animation/CreatorMagicSphere/guard.ani"); //
}
else if (usingSkillIndex == CREATOR_TYPE_ICE)
{
ani = obj.getVar().GetAnimationMap("ICE",
"Character/Mage/Effect/Animation/CreatorMagicSphere/icesphere.ani"); //
}
else if (usingSkillIndex == CREATOR_TYPE_FLAME)
{
ani = obj.getVar().GetAnimationMap("FIRE",
"Character/Mage/Effect/Animation/CreatorMagicSphere/firesphere.ani"); //
}
else if (usingSkillIndex == CREATOR_TYPE_WIND)
{
ani = obj.getVar().GetAnimationMap("WIND",
"Character/Mage/Effect/Animation/CreatorMagicSphere/wind.ani"); //
}
local state = obj.getState();
if (state == STATE_ICESHIELD)
{
ani = obj.getVar().GetAnimationMap("SHIELD",
"Character/Mage/Effect/Animation/CreatorMagicSphere/shield_cursor_dodge.ani"); //
}
else if (state == STATE_FIREHURRICANE)
{
ani = obj.getVar().GetAnimationMap("HURRICANE",
"Character/Mage/Effect/Animation/CreatorMagicSphere/hurricane_cursor.ani"); //
}
if (ani)
{
local posX = IMouse.GetXPos();
local posY = IMouse.GetYPos();
sq_AnimationProc(ani);
sq_drawCurrentFrame(ani, posX, posY, false);
}
////////////// 诡樯ui
if (getCreatorSkillStateSkillIndex(obj) == -1)
return;
local sq_var = obj.getVar();
local skill_ui_index = 0;
local x = 400;
local y = 470;
local offset = 36;
local alpha = sq_ALPHA(200);
local baseRGB = sq_RGB(255,255,255);
// ?斜葬晦
local main_gauge_b = sq_var.GetAnimationMap("main_gauge_b",
"Character/Mage/CreatorAnimation/ui/main_gauge_b.ani");
local main_gauge_b_select = sq_var.GetAnimationMap("main_gauge_b_select",
"Character/Mage/CreatorAnimation/ui/main_gauge_b_select.ani");
sq_AnimationProc(main_gauge_b);
local currentFrameIndex = main_gauge_b.GetCurrentFrameIndex();
sq_DrawSpecificFrameEffect_SIMPLE(main_gauge_b, x, y, currentFrameIndex, baseRGB, alpha, false);
//sq_drawCurrentFrame(main_gauge_b, x, y, false);
// 啪桧虽 斜葬晦
local hud_creator_b_gauge = sq_var.GetAnimationMap("hud_creator_b_gauge", "Character/Mage/CreatorAnimation/ui/hud_creator_b_gauge.ani");
if (getCreatorSkillStateSkillIndex(obj) != -1)
{
local creator_guage_1 = sq_var.GetAnimationMap("creator_guage_1", "Character/Mage/CreatorAnimation/ui/creator_guage_1.ani");
local creator_guage_2 = sq_var.GetAnimationMap("creator_guage_2", "Character/Mage/CreatorAnimation/ui/creator_guage_2.ani");
local creator_guage_3 = sq_var.GetAnimationMap("creator_guage_3", "Character/Mage/CreatorAnimation/ui/creator_guage_3.ani");
local creator_guage_4 = sq_var.GetAnimationMap("creator_guage_4", "Character/Mage/CreatorAnimation/ui/creator_guage_4.ani");
local type = getCreatorSkillStateSkillIndex(obj);
local appendage = getCreatorMageAppendageByType(obj, type);
if (appendage)
{
local gaugeValue = 0;
local max_gaugeValue = 0;
//I_REMAIN_COUNT <- 0 // 陴嬴毡朝 蝶鉴偎热
//l_CHARGE_ON <- 1 // 醱瞪 酝 樯虽 羹觼
//I_BEFORE_X <- 2 // 卫除
//I_BEFORE_Y <- 3 // 卫除
//I_MAX_COUNT <- 4 // 譆渠醱瞪榆
//I_SIZE <- 5 // 卫除
max_gaugeValue = appendage.sq_var.get_vector(I_MAX_COUNT);
gaugeValue = appendage.sq_var.get_vector(I_REMAIN_COUNT);
local rate = gaugeValue.tofloat() / max_gaugeValue.tofloat();
local maxFrameIndex = 156;
local frameRate = maxFrameIndex.tofloat() * rate.tofloat();
local frameIndex = maxFrameIndex - frameRate.tointeger();
local rgb = getCreatorTypeColor(obj, type);
//local rgba = getCreatorTypeAlphaColor(obj, type, 50);
sq_DrawSpecificFrameEffect_SIMPLE(creator_guage_1, x, y, frameIndex, rgb, alpha, true);
sq_DrawSpecificFrameEffect_SIMPLE(creator_guage_2, x, y, frameIndex, rgb, alpha, true);
sq_DrawSpecificFrameEffect_SIMPLE(creator_guage_3, x, y, frameIndex, rgb, alpha, true);
sq_DrawSpecificFrameEffect_SIMPLE(creator_guage_4, x, y, frameIndex, rgb, alpha, true);
}
}
//摹鸥? 蝶鉴菟
local main_gauge_lb = sq_var.GetAnimationMap("main_gauge_lb", "Character/Mage/CreatorAnimation/ui/main_gauge_lb.ani");
local main_gauge_rb = sq_var.GetAnimationMap("main_gauge_rb", "Character/Mage/CreatorAnimation/ui/main_gauge_rb.ani");
//sq_DrawSpecificFrame(main_gauge_lb, x, y, false, 0, false, 1.0);
//sq_DrawSpecificFrame(main_gauge_rb, x, y, false, 0, false, 1.0);
sq_DrawSpecificFrameEffect_SIMPLE(main_gauge_lb, x, y, 0, baseRGB, alpha, false);
sq_DrawSpecificFrameEffect_SIMPLE(main_gauge_rb, x, y, 0, baseRGB, alpha, false);
// 摹鸥? 蝶鉴樯策蝶 斜葬晦
local main_gauge_b_select = sq_var.GetAnimationMap("main_gauge_b_select", "Character/Mage/CreatorAnimation/ui/main_gauge_b_select.ani");
if (getCreatorSkillStateSkillIndex(obj) != -1)
{
local off = 32;
local type = getCreatorSkillStateSkillIndex(obj);
local skill_icon_mode = obj.getVar("gauge_ani").get_vector(0);
if (skill_icon_mode == 1)
{
local hud_creatorskill_icon = getAniCreatorSkillOn(obj, type);
sq_AnimationProc(hud_creatorskill_icon);
sq_drawCurrentFrame(hud_creatorskill_icon, x, y, false);
//sq_DrawCurrentFrameEffect_SIMPLE(hud_creatorskill_icon, x, y, baseRGB, alpha, false);
}
else if (skill_icon_mode == 2)
{
local hud_creatorskill_icon = getAniCreatorSkillOff(obj, type);
sq_AnimationProc(hud_creatorskill_icon);
sq_drawCurrentFrame(hud_creatorskill_icon, x, y, false);
//sq_DrawCurrentFrameEffect_SIMPLE(hud_creatorskill_icon, x, y, baseRGB, alpha, false);
}
// 摹鸥? 蝶鉴嬴桧夔 斜葬晦
local lbuttonSkl = getLButtonSkillByType(obj, type);
local rbuttonSkl = getRButtonSkillByType(obj, type);
local ls = sq_GetSkill(obj, lbuttonSkl);
local rs = sq_GetSkill(obj, rbuttonSkl);
local sx = x - 29;
local sy = y - 16;
if (ls)
{
if (sq_GetSkillLevel(obj, lbuttonSkl) > 0)
{
sq_DrawSkillIcon(ls, sx, sy, alpha);
}
}
if (rs)
{
if (sq_GetSkillLevel(obj, rbuttonSkl) > 0)
{
sq_DrawSkillIcon(rs, sx + off, sy, alpha);
}
}
// 摹鸥?击阳
local stage = sq_GetObjectManagerStage(obj);
if (!stage)
return;
local control = stage.getMainControl();
if (control.IsLBDown())
{
sq_AnimationProc(main_gauge_b_select);
sq_drawCurrentFrame(main_gauge_b_select, x, y, false);
}
else if(control.IsRBDown())
{
sq_AnimationProc(main_gauge_b_select);
sq_drawCurrentFrame(main_gauge_b_select, x + off, y, false);
}
}
}
function onStartMap_CreatorMage(obj)
{
if(!obj)
return;
lockMouse(obj);
obj.getVar("dstpos").clear_vector();
// 寞桧 剩横鬲朝等 ?热 横?蛤虽陛 毡棻贼..
// 饷薯?鄹栖棻.
// 棻挤寞缣怃紫 ?娄陛 虽楼肾晦 阳侥殓栖棻.
local appendage = CNSquirrelAppendage.sq_GetAppendage(obj, "Appendage/Character/ap_common_suck.nut");
if (appendage)
{
appendage.sq_DeleteAppendages();
CNSquirrelAppendage.sq_RemoveAppendage(obj, "Appendage/Character/ap_common_suck.nut");
}
}
function resetDungeonStart_CreatorMage(obj, moduleType, resetReason, isDeadTower, isResetSkillUserCount)
{
if (!obj) return -1;
if (!obj.isMyControlObject())
return -1;
local isReset = true; // 晦狱瞳戏烦 瞪睡 葬掸殓栖棻.
setCreatorSkillStateSkillIndex(obj, -1);
onAllChargeCreatorMageGauge(obj);
if (sq_GetCurrentModuleType() == MODULE_TYPE_ROOM_LIST || sq_GetCurrentModuleType() == MODULE_TYPE_ENTRANCE || sq_GetCurrentModuleType() == MODULE_TYPE_SELECT_DUNGEON)
{
unLockMouse(obj);
}
else
{
print(" game module:" + sq_GetCurrentModuleType());
lockMouse(obj);
}
print(" resetDungeonStart_CreatorMage game module:" + sq_GetCurrentModuleType());
if (!sq_IsTowerDungeon())
{
for (local i = CREATOR_TYPE_FLAME; i < CREATOR_TYPE_MAX; i++)
{
local slot = -1;
local skillmgr = obj.getSkillManager();
if (skillmgr)
{
local index = getTypeSkillIndex(obj, i);
slot = skillmgr.getSlotindex(index);
}
if (slot != -1)
{
local appendage = getCreatorMageAppendageByType(obj, i);
if (appendage)
{
local max_gaugeValue = appendage.sq_var.get_vector(I_MAX_COUNT);
appendage.sq_var.set_vector(I_REMAIN_COUNT, max_gaugeValue);
appendage.sq_var.set_vector(l_CHARGE_ON, 0);
appendage.sq_var.set_vector(I_CHARGE_INIT_COUNT, 0);
appendage.sq_var.set_vector(I_CURRENT_CHARGE_TIME, 0);
}
}
}
}
return 1;
}
function onStartDungeon_CreatorMage(obj)
{
if (!obj)
return;
if (sq_IsMyCharacter(obj))
{
lockMouse(obj);
//////////////////////////////////////////////////////
obj.getVar("lbdown").clear_timer_vector();
obj.getVar("lbdown").push_timer_vector();
obj.getVar("lbdown").push_timer_vector();
local t = obj.getVar("lbdown").get_timer_vector(0);
t.setParameter(20, -1);
t.resetInstant(0);
obj.getVar("lbdown").clear_ct_vector();
obj.getVar("lbdown").push_ct_vector();
local timer = obj.getVar("lbdown").get_ct_vector(0);
timer.Reset();
timer.Start(10000,0);
//////////////////////////////////////////////////////
// 觼溯桧搅暧 赅苌 楼撩 啪桧虽 醱瞪击 卫蒙?栖棻.
onAllChargeCreatorMageGauge(obj);
}
}
// 孺紫办陛 ?撩? 腑击阳 ?轿肾朝 属寥?热 殓栖棻.
function onActiveWindow_CreatorMage(obj, activeState)
{
if (!obj)
return;
if (IsInBattleCreator(obj))
{
//#define WA_INACTIVE 0
//#define WA_ACTIVE 1
//#define WA_CLICKACTIVE 2
local isOpen = sq_IsOpenCreatorControlPopupWindows();
local hotKey = sq_IsDownHotKeyCreatorCursor();
if (isOpen || hotKey)
{
return;
}
lockMouse(obj);
}
}
// 孺紫办陛 绿?撩? 腑击阳 ?轿肾朝 属寥?热 殓栖棻.
function onInActiveWindow_CreatorMage(obj)
{
unLockMouse(obj);
}
function onChangeSkillEffect_CreatorMage(obj, skillIndex, reciveData)
{
if (!obj)
return;
if (skillIndex == SKILL_MGRAB)
{
onChangeSkillEffect_Mgrab(obj, skillIndex, reciveData);
}
}
function procAppend_CreatorMage(obj)
{
if (!obj)
return 0;
local type = getCreatorSkillStateSkillIndex(obj);
if (type == CREATOR_TYPE_DISTURB)
{
onProc_Mgrab(obj);
}
if (!obj.isMyControlObject())
return 0;
local STATE_ACTIVE = 1;
local cashState = sq_GetStateCashShop();
local isClipCursor = sq_IsClipCursor(); // 醴怃陛 陉?毡朝虽 羹觼?栖棻.
if (cashState == STATE_ACTIVE)
{
// 撮塭憧桧 翮溜朝等 醴怃陛 off赅萄陛 肾横怃朝 寰腌栖棻.
if (isClipCursor)
unLockMouse(obj);
}
else
{
// 葆办蝶块桧 ?葬虽 强擎 唳办 葆虽虞 湍瞪 赝葬横鼻鹧樯虽 羹觼?琐栖棻.
if (sq_GetResultState() || sq_GetRewardState())
{
// 念娄玺桧 釭螃朝 翕寰缣紫 鼻濠蛔击 睡敷帼葬晦 嫔?
// 桧廓缚 羲戏煎 ui?撩?郦蒂 援脑贼 葆办蝶蒂 濡掬帼董栖棻.
local hotKey = sq_IsDownHotKeyCreatorCursor();
if (hotKey)
{
// ui?撩?郦陛 扬萼鼻鹧缣怃朝 赝董桧 ?溥毡棻贼..
// 棻卫 濡掬帼董栖棻.
if (!isClipCursor)
lockMouse(obj);
}
else
{
if (isClipCursor)
{
unLockMouse(obj);
}
}
return 0;
}
if (IsInBattleCreator(obj))
{ // 瞪潍酝桧塭贼..
local hotKey = sq_IsDownHotKeyCreatorCursor();
if (hotKey)
{
// ui?撩? 郦蒂 援艇 鼻鹧缣歙 葆办蝶陛 濡衔朝虽 羹觼?琐栖棻.
if (isClipCursor)
{
// 葆办蝶陛 濡衔棻贼
unLockMouse(obj);
}
}
else
{
// ?营 葆办蝶 谢?陛 孺紫办 ?贼寰薹缣 毡朝 羹觼?栖棻.
//print(" isClipCursor:" + isClipCursor);
if (!isClipCursor)
{ // 葆办蝶块桧 ?萼 鼻鹧塭贼
//print(" isopencreator:" + sq_IsOpenCreatorControlPopupWindows());
if (!sq_IsOpenCreatorControlPopupWindows())
{
if (sq_IsMousePtInWindowRect())
{ // 葆办蝶陛 顶睡缣 谢?蒂 ??毡棻贼..
// ui?撩? 郦蒂 援艇 鼻鹧缣怃 谖睡瓣?玺击 援脑贼 橾卫瞳戏煎
// ui?撩? 郦陛 false煎 肾朝等 桧阳 葆办蝶块击 勘横舆贼 寰腌栖棻.
lockMouse(obj);
}
}
}
}
}
else
{
if (isClipCursor == true)
{
unLockMouse(obj);
}
}
}
return 1;
}
// 奢问除问击 姜?晦 嫔? 樯搅弊击 姜?怃 葬欐?栖棻.
function IsInterval(obj, interval)
{
if (!obj)
return false;
// 晦狱奢问 颤桧该
local t = obj.getVar().get_ct_vector(0);
if (!t)
{
obj.getVar().clear_ct_vector();
obj.getVar().push_ct_vector();
t = obj.getVar().get_ct_vector(0);
t.Reset();
t.Start(10000,0);
return true;
}
local currentT = t.Get();
if(currentT > interval)
{
t.Reset();
t.Start(10000,0);
return true;
}
//print(" not interval");
return false;
}
// 葆办蝶帼?击 扬毓击 阳 籀葬肾横捡 ?朝 蝶鉴?煎撮蝶 睡碟殓栖棻.
function onMouseButtonDown_ProcSkill(obj, usingSkillIndex)
{
if (!obj)
return;
if (!obj.isMyControlObject())
return;
if (!IsInBattleCreator(obj))
return;
if (!sq_IsClipCursor())
return;
// 骁匙击 颤坚 毡戏贼 葆办蝶 奢问击 ? 热 桡蝗栖棻.
if (sq_IsRidingObject(obj))
return;
local objectManager = obj.getObjectManager();
if (!objectManager)
return;
local xPos = objectManager.getFieldXPos(IMouse.GetXPos(), ENUM_DRAWLAYER_NORMAL);
local yPos = objectManager.getFieldYPos(IMouse.GetYPos(), 0, ENUM_DRAWLAYER_NORMAL);
//print(" onMouseButtonDown_ProcSkill:" + usingSkillIndex);
if (usingSkillIndex == SKILL_WOODFENCE)
{
// 办萄?蝶暧 唳办朝 萄楚斜寞冲桧晦 阳侥缣
// 罹晦怃 籀葬肾虽 强蝗栖棻.
}
else if (usingSkillIndex == SKILL_FIREWALL)
{
//print(" onMouseMoveCharacter_Firewall:" + usingSkillIndex);
onMouseMoveCharacter_Firewall(obj, IMouse.GetXPos(), IMouse.GetYPos());
}
else if (usingSkillIndex == SKILL_ICEROCK)
{
local consumeValue = getCreatorSkillConsumeValue(obj, usingSkillIndex);
if (useCreatorSkill(obj, usingSkillIndex, xPos, yPos, consumeValue))
onMouseButtonDown_IceRock(obj);
}
else if (usingSkillIndex == SKILL_FIREMETEO)
{
local consumeValue = getCreatorSkillConsumeValue(obj, usingSkillIndex);
if (useCreatorSkill(obj, usingSkillIndex, xPos, yPos, consumeValue))
onMouseButtonDown_FireMeteo(obj);
}
else if (usingSkillIndex == SKILL_ICEPLATE)
{
local consumeValue = getCreatorSkillConsumeValue(obj, usingSkillIndex);
if (useCreatorSkill(obj, usingSkillIndex, xPos, yPos, consumeValue))
onMouseButtonDown_IcePlate(obj);
}
else if (usingSkillIndex == SKILL_FIREHURRICANE)
{
local isExcute = obj.isExcutableState(SKILL_CREATORGUARDIAN);
if (isExcute)
{
local consumeValue = getCreatorSkillConsumeValue(obj, usingSkillIndex);
if (useCreatorSkill(obj, usingSkillIndex, xPos, yPos, consumeValue))
{
obj.sq_IntVectClear();
obj.sq_IntVectPush(SUB_STATE_FIREHURRICANE_0); // substate撮?
obj.sq_AddSetStatePacket(STATE_FIREHURRICANE, STATE_PRIORITY_USER, true);
}
}
}
else if (usingSkillIndex == SKILL_ICESHIELD)
{
if (obj.isExcutableState(SKILL_CREATORGUARDIAN))
{
local consumeValue = getCreatorSkillConsumeValue(obj, usingSkillIndex);
if (useCreatorSkill(obj, usingSkillIndex, xPos, yPos, consumeValue))
{
obj.sq_IntVectClear();
obj.sq_IntVectPush(SUB_STATE_ICESHIELD_0); // substate撮?
obj.sq_AddSetStatePacket(STATE_ICESHIELD, STATE_PRIORITY_USER, true);
}
}
}
else if (usingSkillIndex == SKILL_WINDPRESS)
{
local isExcute = obj.isExcutableState(SKILL_CREATORWIND);
if (isExcute)
{
local consumeValue = getCreatorSkillConsumeValue(obj, usingSkillIndex);
if (useCreatorSkill(obj, usingSkillIndex, xPos, yPos, consumeValue))
{
obj.sq_IntVectClear();
obj.sq_IntVectPush(SUB_STATE_WINDPRESS_0); // substate撮?
obj.sq_AddSetStatePacket(STATE_WINDPRESS, STATE_PRIORITY_IGNORE_FORCE, true);
}
}
}
else if (usingSkillIndex == SKILL_WINDSTORM)
{
local consumeValue = getCreatorSkillConsumeValue(obj, usingSkillIndex);
if (yPos >= TILE_FLOOR_START_Y)
{
if (useCreatorSkill(obj, usingSkillIndex, xPos, yPos, consumeValue))
{
onMouseButtonDown_WindStorm(obj);
}
}
}
else if (usingSkillIndex == SKILL_MGRAB)
{
// 蟾晦?
setStateMouseGrab(obj);
grabThrowObject(obj);
}
else if (usingSkillIndex == -1)
{
// 桧谖暧 唳办 渠?瞳戏煎 -1樯 唳办缣朝
// 晦狱奢问戏煎 瞪??栖棻.
// http://jira.in.neople.co.kr/jira/browse/DNF-8531
// [觼葬缣桧搅] 嬴桧蝶 褒萄蒂 蝗菜?虽 强擎 鼻鹧缣怃 ?溯歜 ?葬馨樯 饵辨 酝 螃艇薹 赝葛击 ? 唳办 等嘐虽陛 雪嬴虽朝 ?鼻
local state = obj.getState();
if (state == STATE_ICESHIELD || state == STATE_FIREHURRICANE)
return;
// ?颤奢问击 噩 热 毡朝 鼻?樯虽 羹觼?栖棻.
if (!obj.isEnableBasicAttack())
return;
local hitInterval = 500; // 除问热纂 (ms)
if (IsInterval(obj, hitInterval))
{ // 嫦饵?坚 桧? 嫦饵 除问桧 蹂羶? 热纂 桧?陛 肾横捡 晦狱嫦饵陛 陛栋?栖棻. (翱嫦寞虽)
local objectManager = obj.getObjectManager();
if (!objectManager)
return;
local xPos = objectManager.getFieldXPos(IMouse.GetXPos(), ENUM_DRAWLAYER_NORMAL);
local yPos = objectManager.getFieldYPos(IMouse.GetYPos(), 0, ENUM_DRAWLAYER_NORMAL);
local zPos = 0;
local hoverEnemyObject = getOverClickableEnemyObject(obj, IMouse.GetXPos(), IMouse.GetYPos());
if (hoverEnemyObject)
{
yPos = hoverEnemyObject.getYPos();
if (hoverEnemyObject.getZPos() > 0)
{
zPos = hoverEnemyObject.getZPos();
}
zPos = objectManager.getFieldZPos(IMouse.GetYPos(), yPos, ENUM_DRAWLAYER_NORMAL);
}
sq_SetCurrentAttackInfo(obj, obj.sq_GetDefaultAttackInfo(0));
obj.applyBasicAttackUp(sq_GetCurrentAttackInfo(obj),STATE_ATTACK);
sq_SetCurrentAttackInfo(obj, sq_GetCurrentAttackInfo(obj));
obj.sq_StartWrite();
sq_BinaryWriteWord(0); // 涡嘐
sq_SendCreatePassiveObjectPacketPos(obj, 24353, 0, xPos, yPos, zPos);
}
}
}
// 葆办蝶 帼?桧 机腑击阳 籀葬肾横捡 ?朝 蝶鉴?煎撮蝶 殓栖棻.
function onMouseButtonUp_ProcSkill(obj, usingSkillIndex)
{
if (!obj)
return;
if (usingSkillIndex == SKILL_MGRAB)
{
//onMouseButtonUp_Mgrab(obj);
}
}
function onMouseLeftButtonDown_CreatorMage(obj)
{
if (!obj)
return;
// 避历击 隆 菟横谛摹 寰腌栖棻.
if (obj.isDead())
return;
local objectManager = obj.getObjectManager();
if (!objectManager)
return;
// 葆办蝶煎 螃帼胀 嬴桧蛊
local overItem = obj.getOverItemObject();
if (overItem)
{
// 尔寰赅菊阳侥缣 濡卫 嬴桧蛊毡朝 谢?煎 鬲棻陛 给嬴褫栖棻.
local beforePosX = obj.getXPos();
local beforePosY = obj.getYPos();
local beforePosZ = obj.getZPos();
local itemPosX = overItem.getXPos();
local itemPosY = overItem.getYPos();
sq_SetCurrentPos(obj, itemPosX, itemPosY, 0);
obj.procGetItem();
sq_SetCurrentPos(obj, beforePosX, beforePosY, beforePosZ);
return;
}
local usingSkillIndex = getLButtonSkill(obj);
onMouseButtonDown_ProcSkill(obj, usingSkillIndex);
}
function onMouseLeftButtonUp_CreatorMage(obj)
{
if (!obj)
return;
// 避历击 隆 菟横谛摹 寰腌栖棻.
if (obj.isDead())
return;
local usingSkillIndex = getLButtonSkill(obj);
onMouseButtonUp_ProcSkill(obj, usingSkillIndex);
}
function onMouseRightButtonDown_CreatorMage(obj)
{
if (!obj)
return;
// 避历击 隆 菟横谛摹 寰腌栖棻.
if (obj.isDead())
return;
local usingSkillIndex = getRButtonSkill(obj);
//歜卫 ?机
//sq_OpenPopupWindow(379, 279, 499, 1000);
//
onMouseButtonDown_ProcSkill(obj, usingSkillIndex);
}
function onMouseRightButtonUp_CreatorMage(obj)
{
if (!obj)
return;
// 避历击 隆 菟横谛摹 寰腌栖棻.
if (obj.isDead())
return;
local usingSkillIndex = getRButtonSkill(obj);
onMouseButtonUp_ProcSkill(obj, usingSkillIndex);
}
function onMouseMoveCharacter_CreatorMage(obj, x, y)
{
if (!obj)
return;
// 避历击 隆 菟横谛摹 寰腌栖棻.
if (obj.isDead())
return;
if (!obj.isMyControlObject())
return;
if (!IsInBattleCreator(obj))
return;
if (!sq_IsClipCursor())
return;
// 骁匙击 颤坚 毡戏贼 葆办蝶 奢问击 ? 热 桡蝗栖棻.
if (sq_IsRidingObject(obj))
return;
local stage = sq_GetObjectManagerStage(obj);
if (!stage)
return;
x = IMouse.GetXPos();
y = IMouse.GetYPos();
local control = stage.getMainControl();
local usingSkillIndex = -1;
if (control.IsLBDown())
{
usingSkillIndex = getLButtonSkill(obj);
}
else if(control.IsRBDown())
{
usingSkillIndex = getRButtonSkill(obj);
}
// ?营 噙坚毡朝 蝶鉴桧 毡朝虽 ?学?琐栖棻.
if (usingSkillIndex == SKILL_FIREWALL)
{
onMouseMoveCharacter_Firewall(obj, x, y);
}
else if (usingSkillIndex == SKILL_WOODFENCE)
{
onMouseMoveCharacter_WoodFence(obj, x, y);
}
else if (usingSkillIndex == SKILL_MGRAB)
{
}
}
function drawAppend_CreatorMage(obj, isOver, x, y)
{
if (!obj.isMyControlObject())
return 0;
return 0;
}