Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion Client/KeyBindSettings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,8 @@ public enum KeybindOptions : int
HeroEquipment,
HeroSkills,
TargetSpellLockOn,
PetmodeFocusMasterTarget
PetmodeFocusMasterTarget,
Codex
}

public class KeyBind
Expand Down Expand Up @@ -238,6 +239,8 @@ public void New(List<KeyBind> list)
list.Add(InputKey);
InputKey = new KeyBind { Group = "Dialogs", Description = GameLanguage.ClientTextMap.GetLocalization(ClientTextKeys.CloseAllWindows), function = KeybindOptions.Closeall, RequireAlt = 2, RequireShift = 2, RequireTilde = 2, RequireCtrl = 2, Key = Keys.Escape };
list.Add(InputKey);
InputKey = new KeyBind { Group = "Dialogs", Description = GameLanguage.ClientTextMap.GetLocalization(ClientTextKeys.CodexOpenClose), function = KeybindOptions.Codex, RequireAlt = 1, RequireShift = 2, RequireTilde = 2, RequireCtrl = 2, Key = Keys.A };
list.Add(InputKey);

InputKey = new KeyBind { Group = "Skillbar", Description = GameLanguage.ClientTextMap.GetLocalization(ClientTextKeys.SkillbarSlot)+" 1", function = KeybindOptions.Bar1Skill1, RequireAlt = 2, RequireShift = 0, RequireTilde = 0, RequireCtrl = 0, Key = Keys.F1 };
list.Add(InputKey);
Expand Down
64 changes: 63 additions & 1 deletion Client/Localization/Chinese.json
Original file line number Diff line number Diff line change
Expand Up @@ -1203,6 +1203,68 @@
"HeroBehaviour_Attack": "攻击",
"HeroBehaviour_CounterAttack": "反击",
"HeroBehaviour_Follow": "跟随",
"HeroBehaviour_Custom": "自动"
"HeroBehaviour_Custom": "自动",

"Codex_NothingToSubmit": "[图鉴] 暂无可提交或领取的内容。",
"Codex_RewardClaimed": "[图鉴] 奖励已领取。",
"Codex_CollectionCompleted": "[图鉴] 收集完成,奖励已生效。",
"Codex_NoEligibleItemOrCurrency": "[图鉴] 没有符合条件的物品或货币。",
"Codex_InventoryNotAvailable": "[图鉴] 背包不可用。",
"Codex_MissingItemStage": "[图鉴] 你没有 1× {0}。",
"Codex_SubmittingItem": "[图鉴] 正在提交 1× {0}...",
"Codex_LevelUp": "[图鉴] 收集等级提升!Lv.{0}",
"Codex_LevelUpShort": "[图鉴] 收集等级提升!",
"Codex_NoStone": "[图鉴] 你没有石头。",
"Codex_NoJade": "[图鉴] 你没有玉石。",
"Codex_CurrencyStoneHint": "石头\\n• 可替代 {0} 组。\\n• 使用背包中的石头计入图鉴。\\n• 获得时优先消耗石头。",
"Codex_CurrencyJadeHint": "玉石\\n• 可替代 {0} 组。\\n• 使用背包中的玉石计入图鉴。\\n• 获得时优先消耗玉石。",
"Codex_YouGainedStone": "你获得了 {0} 个石头。",
"Codex_YouGainedJade": "你获得了 {0} 个玉石。",
"Codex_RegisteredItem": "[图鉴] 已登记 {0}。",
"Codex_ShowAllButton": "显示全部",
"Codex_ShowAllHint": "显示所有收集",
"Codex_ShowRarityHint": "仅显示 {0}",
"Codex_UntitledCollection": "未命名收集",
"Codex_ExpLabel": "图鉴经验:{0}",
"Codex_ActiveUntil": "有效期至 {0}",
"Codex_StartsOn": "开始于 {0}",
"Codex_Expired": "已过期",
"Codex_ExpiredKeep": "已过期(保留属性)",
"Codex_NotStarted": "[图鉴] 该收集尚未开始。",
"Codex_ExpiredWindow": "[图鉴] 该收集已过期。",
"Codex_SetCompletedMessage": "收集完成:{0}",
"Codex_SetCompleteEffect": "收集完成!",
"Codex_SubmitConfirm": "提交 1× {0} 到此收集?\\n\\n该物品将被消耗。",
"Codex_LevelLabel": "收集等级:{0}",
"Codex_LevelHint": "收集等级 {0}",
"Codex_ClaimedSetBonuses": "已领取的套装加成:",
"Codex_StoneLabel": "石头",
"Codex_JadeLabel": "玉石",

"Codex_Disabled": "[图鉴] 图鉴已关闭。",
"Codex_UnknownCollection": "[图鉴] 未知的收集。",
"Codex_DisabledCollection": "[图鉴] 此收集已禁用。",
"Codex_AlreadyClaimed": "[图鉴] 已领取。",
"Codex_NotComplete": "[图鉴] 未完成。",
"Codex_GainedXP": "[图鉴] +{0} 图鉴经验。",
"Codex_Claimed": "[图鉴] 已领取:{0},奖励已生效。",
"Codex_InvalidSubmission": "[图鉴] 提交无效。",
"Codex_ItemNotPart": "[图鉴] 物品不属于此收集。",
"Codex_ItemNotFound": "[图鉴] 背包中未找到该物品。",
"Codex_WrongItem": "[图鉴] 此收集需要其他物品。",
"Codex_UnableConsume": "[图鉴] 无法消耗物品。",
"Codex_Submitted": "[图鉴] 已提交:{0}。",
"Codex_InvalidCurrency": "[图鉴] 无效的货币。",
"Codex_InvalidSetId": "[图鉴] 无效的收集编号。",
"Codex_InvalidCurrencyForSet": "[图鉴] 此货币不能用于该收集。",
"Codex_NothingRequired": "[图鉴] 该收集无需物品。",
"Codex_SetComplete": "[图鉴] 收集已完成。",
"Codex_UsedCurrency": "[图鉴] 消耗 1× {0} 注册 {1}{2}。",
"Codex_Exported": "[图鉴] 已导出至 Envir/ItemCodex.json",
"Codex_LoadedAutoBuilt": "[图鉴] 读取自动生成的收集(文件缺失或无效)。",
"Codex_LoadedFromFile": "[图鉴] 已从 ItemCodex.json 读取收集。",

"CodexKey": "图鉴 ({0})",
"CodexOpenClose": "图鉴 开/关"
}
}
64 changes: 63 additions & 1 deletion Client/Localization/English.json
Original file line number Diff line number Diff line change
Expand Up @@ -1206,6 +1206,68 @@
"HeroBehaviour_Attack": "Attack",
"HeroBehaviour_CounterAttack": "CounterAttack",
"HeroBehaviour_Follow": "Follow",
"HeroBehaviour_Custom": "Custom"
"HeroBehaviour_Custom": "Custom",

"Codex_NothingToSubmit": "[Codex] Nothing to submit or claim.",
"Codex_RewardClaimed": "[Codex] Reward claimed.",
"Codex_CollectionCompleted": "[Codex] Collection completed – reward applied.",
"Codex_NoEligibleItemOrCurrency": "[Codex] You don't have an eligible item or valid currency for this set.",
"Codex_InventoryNotAvailable": "[Codex] Inventory not available.",
"Codex_MissingItemStage": "[Codex] You do not have 1× {0}.",
"Codex_SubmittingItem": "[Codex] Submitting 1× {0}...",
"Codex_LevelUp": "[Codex] Collection Level Up! Lv.{0}",
"Codex_LevelUpShort": "[Codex] Collection Level Up!",
"Codex_NoStone": "[Codex] You do not have a Stone.",
"Codex_NoJade": "[Codex] You do not have a Jade.",
"Codex_CurrencyStoneHint": "Stone\\n• Substitutes for {0} sets.\\n• Using Stones from your bag adds to Codex counts.\\n• When obtaining, Stones are consumed first.",
"Codex_CurrencyJadeHint": "Jade\\n• Substitutes for {0} sets.\\n• Using Jade from your bag adds to Codex counts.\\n• When obtaining, Jade is consumed first.",
"Codex_YouGainedStone": "You gained {0} Stone.",
"Codex_YouGainedJade": "You gained {0} Jade.",
"Codex_RegisteredItem": "[Codex] Registered {0}.",
"Codex_ShowAllButton": "Show All",
"Codex_ShowAllHint": "Show all collections",
"Codex_ShowRarityHint": "Show only {0}",
"Codex_UntitledCollection": "Untitled Collection",
"Codex_ExpLabel": "Codex EXP : {0}",
"Codex_ActiveUntil": "Active until {0}",
"Codex_StartsOn": "Starts on {0}",
"Codex_Expired": "Expired",
"Codex_ExpiredKeep": "Expired (stats kept)",
"Codex_NotStarted": "[Codex] This collection has not started yet.",
"Codex_ExpiredWindow": "[Codex] This collection has expired.",
"Codex_SetCompletedMessage": "Collection set completed: {0}",
"Codex_SetCompleteEffect": "Collection set completed!",
"Codex_SubmitConfirm": "Submit 1× {0} to this collection?\\n\\nThis will consume the item.",
"Codex_LevelLabel": "Collection Level: {0}",
"Codex_LevelHint": "Collection Level {0}",
"Codex_ClaimedSetBonuses": "Claimed Set Bonuses:",
"Codex_StoneLabel": "Stone",
"Codex_JadeLabel": "Jade",

"Codex_Disabled": "[Codex] The codex is currently disabled.",
"Codex_UnknownCollection": "[Codex] Unknown collection.",
"Codex_DisabledCollection": "[Codex] This collection is currently disabled.",
"Codex_AlreadyClaimed": "[Codex] Already claimed.",
"Codex_NotComplete": "[Codex] Not complete.",
"Codex_GainedXP": "[Codex] +{0} Codex EXP.",
"Codex_Claimed": "[Codex] Claimed: {0}. Reward applied.",
"Codex_InvalidSubmission": "[Codex] Invalid submission.",
"Codex_ItemNotPart": "[Codex] Item not part of this collection.",
"Codex_ItemNotFound": "[Codex] Item not found in your bag.",
"Codex_WrongItem": "[Codex] Wrong item for this collection.",
"Codex_UnableConsume": "[Codex] Unable to consume item.",
"Codex_Submitted": "[Codex] Submitted: {0}.",
"Codex_InvalidCurrency": "[Codex] Invalid currency.",
"Codex_InvalidSetId": "[Codex] Invalid set id.",
"Codex_InvalidCurrencyForSet": "[Codex] This currency can't be used on this set.",
"Codex_NothingRequired": "[Codex] Nothing required for this set.",
"Codex_SetComplete": "[Codex] Set already complete.",
"Codex_UsedCurrency": "[Codex] Used 1× {0} to register {1}{2}.",
"Codex_LoadedAutoBuilt": "[Codex] Loaded auto-built collections (no/invalid file).",
"Codex_Exported": "[Codex] Exported to Envir/ItemCodex.json",
"Codex_LoadedFromFile": "[Codex] Loaded collections from ItemCodex.json.",

"CodexKey": "Codex ({0})",
"CodexOpenClose": "Codex Open/Close"
}
}
11 changes: 10 additions & 1 deletion Client/MirGraphics/MLibrary.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,10 @@ public static readonly MLibrary
Effect = new MLibrary(Settings.DataPath + "Effect"),
MagicC = new MLibrary(Settings.DataPath + "MagicC"),
GuildSkill = new MLibrary(Settings.DataPath + "GuildSkill"),
Weather = new MLibrary(Settings.DataPath + "Weather");
Weather = new MLibrary(Settings.DataPath + "Weather"),
Title_32bit = new MLibrary(Settings.DataPath + "Title_32bit"),
UI_32bit = new MLibrary(Settings.DataPath + "UI_32bit"),
Effect_32bit = new MLibrary(Settings.DataPath + "Effect_32bit");

public static readonly MLibrary
Background = new MLibrary(Settings.DataPath + "Background");
Expand Down Expand Up @@ -228,6 +231,12 @@ static void LoadLibraries()

Title.Initialize();
Progress++;

Title_32bit.Initialize();
Progress++;

UI_32bit.Initialize();
Progress++;
}

private static void LoadGameLibraries()
Expand Down
40 changes: 40 additions & 0 deletions Client/MirObjects/UserObject.cs
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,8 @@ public void RefreshStats()
RefreshSkills();
RefreshBuffs();
RefreshGuildBuffs();
RefreshItemCodexStats();
RefreshItemCodexLevelStats();

SetLibraries();
SetEffects();
Expand Down Expand Up @@ -693,6 +695,44 @@ public void RefreshStatCaps()
Stats[Stat.MinSC] = Math.Min(Stats[Stat.MinSC], Stats[Stat.MaxSC]);
}

public void RefreshItemCodexStats()
{
var claimed = CodexDialog.ClaimedSetIds; // “completed set ids” per latest sync
var rewardBySet = CodexDialog.RewardBySet;

if (claimed == null || claimed.Count == 0 || rewardBySet == null) return;

foreach (var setId in claimed)
{
if (!rewardBySet.TryGetValue(setId, out var reward) || reward == null) continue;

foreach (Stat s in Enum.GetValues(typeof(Stat)))
{
int v = 0;
try { v = reward[s]; } catch { v = 0; }
if (v == 0) continue;

try { Stats[s] = Stats[s] + v; } catch { /* caps/write-protected */ }
}
}
}

public void RefreshItemCodexLevelStats()
{
// Pull the current Collection Level bonus from CodexDialog
var levelBag = CodexDialog.GetCollectionLevelBonusStats();
if (levelBag == null || levelBag.Values == null || levelBag.Values.Count == 0) return;

foreach (Stat s in Enum.GetValues(typeof(Stat)))
{
int v = 0;
try { v = levelBag[s]; } catch { v = 0; }
if (v == 0) continue;

try { Stats[s] = Stats[s] + v; } catch { /* cap / read-only */ }
}
}

public void BindAllItems()
{
for (int i = 0; i < Inventory.Length; i++)
Expand Down
Loading