장비 마법부여 버그 수정 등

This commit is contained in:
Ino 2025-08-04 03:24:16 +09:00
parent 86eab6f7d0
commit ed4edf999d
6 changed files with 46 additions and 14 deletions

View File

@ -1583,11 +1583,11 @@ handlers.Save_EquipItem_Enchant = function(args)
return Get_Return(1);
var table = Get_MissionTable();
//if (Use_Item(table, urod, args.EnchantID, 1))
if (Use_Item(table, urod, args.EnchantID, 1))
{
var grade = Get_RandomEnchantRateGrade(s_enchant[1]);
var olv = Get_OptionLv(grade);
var optionid = Get_EnchantOptionID(slot);
var optionid = Get_EnchantOptionID(args.EnchantID, slot);
slot.Enchant[args.Slot].ID = optionid;
slot.Enchant[args.Slot].Lv = olv;
@ -11886,20 +11886,18 @@ function Get_EnchantListTable()
}
]
}
function Get_EnchantOptionID(slot) {
var enchantTable = Get_EnchantListTable();
function Get_EnchantOptionID(enchantid, slot) {
var enchantData = Get_EnchantListTable().find(f=>f.n_EnchantID == enchantid);
// slot.Enchant에서 이미 사용된 ID 수집
var usedStats = slot.Enchant.map(e => e.ID);
// 모든 옵션 ID 수집 (중복 포함)
var allIds = [];
for (var i = 0; i < enchantTable.length; ++i) {
allIds.push(enchantTable[i].n_OptionConfigID1);
allIds.push(enchantTable[i].n_OptionConfigID2);
allIds.push(enchantTable[i].n_OptionConfigID3);
allIds.push(enchantTable[i].n_OptionConfigID4);
}
allIds.push(enchantData.n_OptionConfigID1);
allIds.push(enchantData.n_OptionConfigID2);
allIds.push(enchantData.n_OptionConfigID3);
allIds.push(enchantData.n_OptionConfigID4);
// 중복 제거
var uniqueIds = [...new Set(allIds)];

View File

@ -532,6 +532,9 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 91d4965b697c50443aa0a3ee17803553, type: 3}
m_Name:
m_EditorClassIdentifier:
images:
- {fileID: 2595564974761034920}
- {fileID: 1199757943775746256}
texts:
- {fileID: 1565741600275440652}
- {fileID: 7205455428029474132}

View File

@ -16,12 +16,17 @@ public class EquipItemEnchantOption : uScrollViewMgr
list_EnchantCardData[i].EnchantData = slotdata.Enchant[i];
}
Set_UI();
Set_ScrollView(list_EnchantCardData);
}
public void DeSelectAll()
{
list_CardBase.ForEach(f => f.Do_SomeThing());
}
public override void Set_UI()
{
Set_ScrollView(list_EnchantCardData);
list_CardBase.ForEach(f=>f.Set_UI());
}
}

View File

@ -1,8 +1,10 @@
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class EquipItemEnchantOptionCard : CardBase
{
public Image[] images; // 0 bg, 1 grade
public TextMeshProUGUI[] texts; // 0 등급, 1 옵션, 2 오픈 조건
public GameObject[] gos_lock; // 0 언락, 1 락
@ -12,7 +14,12 @@ public class EquipItemEnchantOptionCard : CardBase
{
base.Set(_base);
m_EnchantCardData = _base as EnchantCardData;
Set_UI();
Do_SomeThing();
}
public override void Set_UI()
{
if (IsOpen())
{
DSUtil.InActivateGameObjects(gos_lock, 0);
@ -22,19 +29,35 @@ public class EquipItemEnchantOptionCard : CardBase
texts[0].text = egcData.n_EnchantGrade.ToString();
var upgradeData = table_optionconfig.Ins.Get_Data(m_EnchantCardData.EnchantData.ID);
texts[1].text = MyText.Get_StatNameValueText(upgradeData.e_OptionType, m_EnchantCardData.EnchantData.Get_Value());
images[1].enabled = true;
images[1].color = egcData.GradeColor;
}
else
{ // 오픈되었으나 비어있음
texts[0].text = "0";
texts[1].text = table_localtext.Ins.Get_Text(203);
images[1].enabled = false;
}
}
else
DSUtil.InActivateGameObjects(gos_lock, 1);
}
public override void Set_Selected(bool active)
{
images[0].sprite = UIAtlasMgr.Ins.Get_Sprite(active ? "slot 2" : "slot 1_weapon");
}
public override void Do_SomeThing()
{
Set_Selected(false);
}
public void OnClick_Enchant()
{
PopupMgr.Ins.m_EquipmentItemPopup.m_EquipItemEnchantOption.DeSelectAll();
Set_Selected(true);
PopupMgr.Ins.m_EquipmentItemPopup.Set_Position(false); // 팝업을 왼쪽으로 보낸다.
NewGameUI.Ins.m_EquipmentUI.m_Tab.OnClick_Tab_byScript(0); // 인챈트 리스트 표시
EquipmentEnchantCard.Select_EnchantCardData = m_EnchantCardData;

View File

@ -62,12 +62,13 @@ public class EquipmentEnchantCard : CardBase
public void OnClick_EnchantEquipItem()
{
var sdata = ServerInfo.Ins.m_ServerData;
if (sdata.Get_EnchantLv(m_Data.n_EnchantID) > 0)
if (sdata.Get_EnchantLv(m_Data.n_EnchantID) > 0 && sdata.Check_ItemAmount(m_Data.n_EnchantID, 1))
{ // 마법 부여 하자
ServerInfo.Ins.Save_EquipItem_Enchant(PopupMgr.Ins.m_EquipmentItemPopup.Get_ItemID(), m_Data.n_EnchantID,
Select_EnchantCardData.Index,
result =>
{
sdata.Use_Item(m_Data.n_EnchantID, 1);
var parts = PopupMgr.Ins.m_EquipmentItemPopup.Get_Parts();
// 주석은 클라 처리 -> 서버 처리로 변경됨
//var grade = DSUtil.Get_RandomIndex(m_EnchantRateTableData.list_rate) + 1;
@ -79,6 +80,8 @@ public class EquipmentEnchantCard : CardBase
sdata.Add_MissionCount(ePurpose.EQUIP_ITEM_ENCHANT_ACC);
sdata.Add_MissionCount(ePurpose.EQUIP_ITEM_ENCHANT_ALL);
Set_UI();
});
}
}

View File

@ -52,7 +52,7 @@ public class EquipmentItemPopup : EquipmentPopupItemInfoBase
//texts[2].text = $"{curmainText}<size=25>+{nextmainText}";
texts[3].text = DSUtil.Format(418, m_SD_Slot.Lv);
texts[5].text = $"{curmainText}";
texts[7].text = $"{MyText.Get_StatValueText(m_ESUTD.e_OptionType, curmain + nextmain - curmain)}%";
texts[7].text = $"{MyText.Get_StatValueText(m_ESUTD.e_OptionType, curmain + nextmain - curmain)}";
texts[6].text = NumberFormatter.FormatNumber(Get_Price());
m_EquipItemEnchantOption.Set(m_SD_Slot);