static void Prefix(HellTrain __instance) { int gain = 0; int prev = totalTickets; try { gain = (int)Traverse.Create(__instance).Field("_otherCreatureWorkCount").GetValue(); totalTickets += gain; } catch (Exception excep) { FileLog.Log("Exception thrown in getting Tickets:"); FileLog.Log(excep.ToString()); } try { __instance.model.ShowNarrationForcely(string.Format(trainDialogueMath, prev, gain, totalTickets)); } catch (Exception excep) { FileLog.Log("Exception in showing Narration"); FileLog.Log(excep.ToString()); } }
static void Postfix(HellTrain __instance) { if (totalTickets >= ticketsRequired) { Present(ref __instance); } }
private static void Present(ref HellTrain instance) { bool showDialogue = false; AgentModel curAgent = (AgentModel)Traverse.Create(instance).Field("curAgent").GetValue(); if (InventoryModel.Instance.CheckEquipmentCount(trainArmorID)) { var armor = InventoryModel.Instance.CreateEquipment(trainArmorID); if (!curAgent.HasEquipment(trainArmorID)) { curAgent.SetArmor((ArmorModel)armor); } instance.model.ShowNarrationForcely(trainDialogueThanks); showDialogue = true; } if (InventoryModel.Instance.CheckEquipmentCount(trainWeaponID)) { var weapon = InventoryModel.Instance.CreateEquipment(trainWeaponID); if (!curAgent.HasEquipment(trainWeaponID)) { curAgent.SetWeapon((WeaponModel)weapon); } if (!showDialogue) { instance.model.ShowNarrationForcely(trainDialogueThanks); } showDialogue = true; } EGOgiftModel gift = EGOgiftModel.MakeGift(EquipmentTypeList.instance.GetData(trainGiftID)); curAgent.AttachEGOgift(gift); if (!showDialogue) { instance.model.ShowNarrationForcely(trainDialogueThanks); } showDialogue = true; totalTickets -= ticketsRequired; }