Skip to content

Commit a737ffe

Browse files
committed
Implement dump/patch for Player.setBonus
1 parent f4a08ea commit a737ffe

File tree

4 files changed

+59
-5
lines changed

4 files changed

+59
-5
lines changed

ModLocalizer/Dumper.cs

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,32 @@ private void DumpItems()
181181
}
182182
}
183183

184+
method = type.FindMethod("UpdateArmorSet");
185+
if (method?.HasBody == true)
186+
{
187+
var inst = method.Body.Instructions;
188+
189+
for (var index = 0; index < inst.Count; index++)
190+
{
191+
var ins = inst[index];
192+
193+
if (ins.OpCode != OpCodes.Ldstr)
194+
continue;
195+
196+
var value = ins.Operand as string;
197+
198+
if ((ins = inst[++index]).OpCode == OpCodes.Stfld && ins.Operand is MemberRef m)
199+
{
200+
switch (m.Name)
201+
{
202+
case "setBonus":
203+
item.SetBonus = value;
204+
break;
205+
}
206+
}
207+
}
208+
}
209+
184210
items.Add(item);
185211
}
186212

@@ -425,8 +451,8 @@ private void DumpMapEntries()
425451
ins = inst[++index];
426452

427453
if (ins.Operand is IMethodDefOrRef m &&
428-
string.Equals(m.Name.ToString(), "SetDefault") &&
429-
string.Equals(m.DeclaringType.Name, "ModTranslation", StringComparison.Ordinal))
454+
string.Equals(m.Name.ToString(), "SetDefault") &&
455+
string.Equals(m.DeclaringType.Name, "ModTranslation", StringComparison.Ordinal))
430456
{
431457
entry.Name = value;
432458
}

ModLocalizer/Framework/ItemTranslation.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ public sealed class ItemTranslation : ITranslation
1212

1313
public string ToolTip { get; set; } = string.Empty;
1414

15+
public string SetBonus { get; set; } = string.Empty;
16+
1517
public List<string> ModifyTooltips { get; set; } = new List<string>();
1618
}
1719
}

ModLocalizer/Patcher.cs

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,32 @@ void ApplyItemsInternal(ItemTranslation translation, TranslationEmitter emitter)
159159
}
160160

161161

162+
}
163+
}
164+
165+
method = type.FindMethod("UpdateArmorSet");
166+
if (method?.HasBody == true)
167+
{
168+
var inst = method.Body.Instructions;
169+
170+
for (var index = 0; index < inst.Count; index++)
171+
{
172+
var ins = inst[index];
173+
174+
if (ins.OpCode != OpCodes.Ldstr)
175+
continue;
176+
177+
if ((ins = inst[++index]).OpCode == OpCodes.Stfld && ins.Operand is MemberRef m)
178+
{
179+
switch (m.Name)
180+
{
181+
case "setBonus":
182+
inst[index - 1].Operand = translation.SetBonus;
183+
break;
184+
}
185+
}
186+
187+
162188
}
163189
}
164190
}
@@ -189,7 +215,7 @@ void ApplyNpcsInternal(NpcTranslation translation, TranslationEmitter emitter)
189215
{
190216
if (!string.IsNullOrEmpty(translation.Name))
191217
emitter.Emit(method, "DisplayName", translation.Name);
192-
}
218+
}
193219

194220
method = type.FindMethod("GetChat");
195221
if (method?.HasBody == true)

ModLocalizer/Properties/AssemblyInfo.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,5 @@
1414

1515
[assembly: Guid("613f981d-c5dd-43d1-b0ff-057169a647c4")]
1616

17-
[assembly: AssemblyVersion("0.5.0.0")]
18-
[assembly: AssemblyFileVersion("0.5.0.0")]
17+
[assembly: AssemblyVersion("0.6.0.0")]
18+
[assembly: AssemblyFileVersion("0.6.0.0")]

0 commit comments

Comments
 (0)