서버 각성 리팩토링
This commit is contained in:
parent
2b59c2fe7c
commit
989e0b4daf
|
|
@ -320,10 +320,10 @@ function Init_Enchant() {
|
|||
}
|
||||
function Init_Awaken() {
|
||||
return {
|
||||
STR: { LV : 1, Exp : 0 },
|
||||
DEX: { LV : 1, Exp : 0 },
|
||||
INT: { LV : 1, Exp : 0 },
|
||||
LUK: { LV : 1, Exp : 0 }
|
||||
STR: { Lv : 1, Exp : 0 },
|
||||
DEX: { Lv : 1, Exp : 0 },
|
||||
INT: { Lv : 1, Exp : 0 },
|
||||
LUK: { Lv : 1, Exp : 0 }
|
||||
};
|
||||
}
|
||||
function Init_PC() {
|
||||
|
|
@ -992,46 +992,41 @@ handlers.Save_PC_MenuBack = function(args)
|
|||
{
|
||||
var upgradeValue = parseInt((awakenData.upgrade.find(x => x.Key === statKey)?.Value) || 0);
|
||||
var awakenValue = parseInt((awakenData.awaken.find(x => x.Key === statKey)?.Value) || 0);
|
||||
var awakenmat = Get_GlobalValue_nValue(Get_PCAwakenMatKey(statKey));
|
||||
|
||||
for (var j = 0; j < upgradeValue; ++j)
|
||||
{
|
||||
var lv = urod.Awaken[statKey].Lv;
|
||||
var audata = awakenUpgradeTable.find(f => f.n_AwakenStep == lv);
|
||||
|
||||
if (urod.Awaken[statKey].Exp >= audata.n_MaxUpgradeLevel && awakenValue > 0)
|
||||
{
|
||||
var awakenmat = Get_GlobalValue_nValue(Get_PCAwakenMatKey(statKey));
|
||||
if (TryAwakenLevelUp(table, audata, urod, statKey, awakenValue)) {
|
||||
if (!useawakenMatIds[awakenmat]) useawakenMatIds[awakenmat] = true;
|
||||
if (Use_Item(table, urod, awakenmat, audata.n_AwakenGoodsCost))
|
||||
{
|
||||
--awakenValue;
|
||||
urod.Awaken[statKey].Exp = 0;
|
||||
++urod.Awaken[statKey].Lv;
|
||||
--j; // 다시 반복
|
||||
continue;
|
||||
}
|
||||
else break;
|
||||
--awakenValue;
|
||||
--j;
|
||||
continue;
|
||||
}
|
||||
|
||||
var price = Get_K_Value(lv, audata.f_BalanceConstant, audata.n_DefaultUpgradeCostValue, audata.f_CountPerUpgradeCostValue);
|
||||
if (urod.Awaken[statKey].Exp < audata.n_MaxUpgradeLevel && Use_Item(table, urod, awakenupgradeid, price))
|
||||
{
|
||||
++urod.Awaken[statKey].Exp;
|
||||
|
||||
if (TryAwakenLevelUp(table, audata, urod, statKey, awakenmat, awakenValue))
|
||||
{
|
||||
if (!useawakenMatIds[awakenmat]) useawakenMatIds[awakenmat] = true;
|
||||
--awakenValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (upgradeValue == 0 && awakenValue > 0)
|
||||
{
|
||||
var lv = urod.Awaken[statKey].Lv;
|
||||
var audata = awakenUpgradeTable.find(f => f.n_AwakenStep == lv);
|
||||
if (urod.Awaken[statKey].Exp >= audata.n_MaxUpgradeLevel)
|
||||
if (TryAwakenLevelUp(table, audata, urod, statKey, awakenmat, awakenValue))
|
||||
{
|
||||
var awakenmat = Get_GlobalValue_nValue(Get_PCAwakenMatKey(statKey));
|
||||
if (!useawakenMatIds[awakenmat]) useawakenMatIds[awakenmat] = true;
|
||||
if (Use_Item(table, urod, awakenmat, audata.n_AwakenGoodsCost))
|
||||
{
|
||||
--awakenValue;
|
||||
urod.Awaken[statKey].Exp = 0;
|
||||
++urod.Awaken[statKey].Lv;
|
||||
}
|
||||
--awakenValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1088,6 +1083,18 @@ function Get_PCAwakenMatKey(stat)
|
|||
}
|
||||
return "";
|
||||
}
|
||||
function TryAwakenLevelUp(table, audata, urod, statKey, awakenmat, awakenValue) {
|
||||
if (urod.Awaken[statKey].Exp < audata.n_MaxUpgradeLevel) return false;
|
||||
if (awakenValue <= 0) return false;
|
||||
|
||||
if (Use_Item(table, urod, awakenmat, audata.n_AwakenGoodsCost)) {
|
||||
urod.Awaken[statKey].Exp = 0;
|
||||
urod.Awaken[statKey].Lv++;
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
handlers.Save_PC_Stat = function(args)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@ public class PCUI : BotMenuBase
|
|||
}
|
||||
|
||||
CS_AwakenData emptyawaken = new CS_AwakenData();
|
||||
LimitSlotChangeData emptylimitslot = new LimitSlotChangeData();
|
||||
public override void Check_ServerSave(bool exitui)
|
||||
{
|
||||
var sdata = ServerInfo.Ins.m_ServerData;
|
||||
|
|
@ -53,7 +54,11 @@ public class PCUI : BotMenuBase
|
|||
|
||||
if (changeCostume || changeworker || changejob || pcawakend || changelimitslot)
|
||||
{
|
||||
var limitslotdata = PCLimitUI.Ins.m_PCLimitUI_Right.m_LimitSlotChangeData.Get();
|
||||
var limitslotdata = emptylimitslot;
|
||||
if (PCLimitUI.isIns) limitslotdata = PCLimitUI.Ins.m_PCLimitUI_Right.m_LimitSlotChangeData;
|
||||
else limitslotdata.Init();
|
||||
limitslotdata = limitslotdata.Get();
|
||||
|
||||
ServerInfo.Ins.Save_PC_MenuBack(sdata.Get_EqiupmentEquip(eItem.PCCostume),
|
||||
sdata.Get_EqiupmentEquip(eItem.Worker),
|
||||
sdata.Get_EqiupmentEquip(eItem.PC),
|
||||
|
|
@ -101,15 +106,16 @@ public class PCUI : BotMenuBase
|
|||
if (exitui) base.OnClick_Back();
|
||||
}
|
||||
});
|
||||
|
||||
foreach (var key in dic_EnterID.Keys.ToList())
|
||||
dic_EnterID[key] = 0;
|
||||
if (PCAwakenUI.isIns) PCAwakenUI.Ins.Get_CS_AwakenData().Init();
|
||||
if (PCLimitUI.isIns) PCLimitUI.Ins.m_PCLimitUI_Right.m_LimitSlotChangeData.Init();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (exitui) base.OnClick_Back();
|
||||
}
|
||||
|
||||
foreach (var key in dic_EnterID.Keys.ToList())
|
||||
dic_EnterID[key] = 0;
|
||||
if (PCAwakenUI.isIns) PCAwakenUI.Ins.Get_CS_AwakenData().Init();
|
||||
}
|
||||
|
||||
public override void OnClick_Back()
|
||||
|
|
|
|||
Loading…
Reference in New Issue