Updated the flagship scripts in the table. The LP damage script and duel data headers had to be removed due to their high management, made worse by certain differences in the code.
About experience gain hacks
No luck here. I tried with cheat engine, modifying some relevant code sections in the game's script and still... This cheat is becoming more of a myth. Doesn't mean I'll give up -- just pushing it back.
About duel results, missions/objectives
Here's a nifty script in the game assembly:
// YgomGame.Duel.DuelClient
private void WriteResultToSendWork()
{
if (ClientWork.getDictionaryByJsonPath("$.Duel", null) == null)
{
return;
}
if (Util.ClientResumeMode() || Util.IsQuestionMode())
{
int[] duelMemo = Engine.GetDuelMemo(Engine.Myself());
int num = 0;
object[] array = new object[duelMemo[num]];
num++;
Array.Copy(duelMemo, num, array, 0, array.Length);
num += array.Length;
object[] array2 = new object[duelMemo[num]];
num++;
Array.Copy(duelMemo, num, array2, 0, array2.Length);
num += array2.Length;
object[] array3 = new object[duelMemo[num]];
num++;
Array.Copy(duelMemo, num, array3, 0, array3.Length);
num += array3.Length;
object[] array4 = new object[duelMemo[num]];
num++;
Array.Copy(duelMemo, num, array4, 0, array4.Length);
Dictionary<int, int> dictionary = new Dictionary<int, int>();
for (int i = 0; i < array4.Length; i++)
{
if ((int)array4 != 0)
{
for (int j = 0; j < 32; j++)
{
if (((int)array4 & 1 << j) != 0)
{
int cardRareByUniqueID = Engine.GetCardRareByUniqueID(i * 32 + j);
if (dictionary.ContainsKey(cardRareByUniqueID))
{
Dictionary<int, int> dictionary2;
int key;
(dictionary2 = dictionary)[key = cardRareByUniqueID] = dictionary2[key] + 1;
}
else
{
dictionary[cardRareByUniqueID] = 1;
}
}
}
}
}
List<object> list = new List<object>();
foreach (KeyValuePair<int, int> current in dictionary)
{
list.Add(current.Key);
list.Add(current.Value);
}
int lP = Engine.GetLP(Engine.Myself());
int duelFinish = (int)Engine.GetDuelFinish();
int duelResult = (int)Engine.GetDuelResult();
this.dicResult = new Dictionary<string, object>();
this.dicResult["v32"] = new List<object>(array);
this.dicResult["v16"] = new List<object>(array2);
this.dicResult["flags"] = new List<object>(array3);
this.dicResult["lp"] = lP;
this.dicResult["rare"] = list;
this.dicResult["counts"] = DuelResume.Instance.GetUseCardCount();
this.dicResult["skill"] = Engine.GetSkillCount(Engine.Myself());
this.dicResult["finish"] = duelFinish;
this.dicResult["res"] = duelResult;
this.dicResult["turn"] = Engine.GetTurnNum();
this.dicResult["deck"] = Engine.GetCardNum(Engine.Myself(), 15);
this.dicResult["auto"] = this.enabledAutoPlay;
this.dicResult["finisher"] = Engine.GetDuelFinishCardID();
object[] array5 = new object[2];
array5[Engine.Myself()] = Engine.GetCardNum(Engine.Myself(), 16);
array5[Engine.Rival()] = Engine.GetCardNum(Engine.Rival(), 16);
object[] array6 = new object[2];
array6[Engine.Myself()] = Engine.GetCardNum(Engine.Myself(), 17);
array6[Engine.Rival()] = Engine.GetCardNum(Engine.Rival(), 17);
this.dicResult["grave"] = new List<object>(array5);
this.dicResult["exclude"] = new List<object>(array6);
this.dicResult["lp2"] = Engine.GetLP(Engine.Rival());
this.dicResult["deck2"] = Engine.GetCardNum(Engine.Rival(), 15);
this.dicResult["cheat"] = this.IsCheat;
this.dicResult["dat"] = Engine.GetDuelData(Engine.Myself());
this.dicResult["lastbgm"] = this.lastBgmLabel;
}
}
It doesn't take a coder to recognize that parts (in plain English) of this script can be modified to our nefarious purposes. We got it boiizz.
edit:
About the game's script assembly Assembly-CSharp, and the future of this table
There exists modded assemblies released on the net. imo using cheat engine for this game lacks the control that one can have while modding the script; so continuing to support this table is quite plebeian. Once I've compiled some unique mods for the game assembly you guys will be the first to know. Full-featured, without money walls lol.