Sqr/character/creatormage/creatormage_common.nut

2015 lines
48 KiB
Plaintext
Raw Permalink Normal View History

2024-03-18 21:37:40 +08:00
// 褐叙 议葛搅 - ?煎餍颤殓 蒙机
// ?营煎怃 议葛搅 霜机 舱侥赀击 宪 热 桡朝 妇啗煎 罹彻饵蒂 渠鼻戏煎 蒙机击 ?艘蝗栖棻.
// 渡碟除 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;
}