public static void Postfix(GameScript __instance, int slot, int[] ___combatChips) { int chipID = ___combatChips[slot]; if (ChipRegistry.GetSingleton().HasEntry(chipID)) { ChipRegistry.GetSingleton().GetEntry(chipID).InvokeOnEquip(slot); } }
public static bool Prefix(GameScript __instance, int id, ref string __result) { if (ChipRegistry.GetSingleton().HasEntry(id)) { __result = ChipRegistry.GetSingleton().GetEntry(id).Name; return(false); } return(true); }
public static bool Prefix(ItemScript __instance, ref int id) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { __instance.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, id)); return(false); } GadgetNetwork.ConvertIDToLocal(ChipRegistry.GetSingleton(), ref id); return(true); }
public static void Prefix(GameScript __instance, int slot, int[] ___combatChips, bool ___exitingcombatmode) { if (!___exitingcombatmode) { int chipID = ___combatChips[slot]; if (ChipRegistry.GetSingleton().HasEntry(chipID)) { ChipRegistry.GetSingleton().GetEntry(chipID).InvokeOnDequip(slot); } } }
public static void Postfix(GameScript __instance, int slot, int[] ___combatChips) { int chipID = ___combatChips[slot]; if (ChipRegistry.GetSingleton().HasEntry(chipID)) { ChipInfo chip = ChipRegistry.GetSingleton().GetEntry(chipID); if ((chip.Type & ChipType.ACTIVE) > 0 && chip.Cost > 0) { __instance.txtChipCost[0].text = chip.Cost + (chip.CostType == ChipInfo.ChipCostType.MANA ? " Mana" : (chip.CostType == ChipInfo.ChipCostType.ENERGY ? " Energy" : " Health")); } } }
private static void InitializeRegistries() { Log("Initializing Registries"); GameRegistry.RegisterRegistry(ItemRegistry.GetSingleton()); GameRegistry.RegisterRegistry(ChipRegistry.GetSingleton()); GameRegistry.RegisterRegistry(TileRegistry.GetSingleton()); GameRegistry.RegisterRegistry(EntityRegistry.GetSingleton()); foreach (GadgetModInfo mod in GadgetMods.ListAllModInfos()) { if (mod.Mod.Enabled) { foreach (Registry registry in mod.Mod.CreateRegistries()) { GameRegistry.RegisterRegistry(registry); } } } Log("Finished Initializing Registries"); }
public static void Postfix(GameScript __instance, int[] ___combatChips, int[] ___CHIPSTAT) { for (int i = 0; i < 6; i++) { int chipID = ___combatChips[i]; if (ChipRegistry.GetSingleton().HasEntry(chipID)) { switch (chipID) { case 2: ___CHIPSTAT[0] -= 3; break; case 3: ___CHIPSTAT[1] -= 3; break; case 4: ___CHIPSTAT[2] -= 3; break; case 5: ___CHIPSTAT[3] -= 3; break; case 6: ___CHIPSTAT[4] -= 3; break; case 7: ___CHIPSTAT[5] -= 3; break; case 52: ___CHIPSTAT[0] -= 7; break; case 53: ___CHIPSTAT[1] -= 7; break; case 54: ___CHIPSTAT[2] -= 7; break; case 55: ___CHIPSTAT[3] -= 7; break; case 56: ___CHIPSTAT[4] -= 7; break; case 57: ___CHIPSTAT[5] -= 7; break; case 102: ___CHIPSTAT[0] -= 15; break; case 103: ___CHIPSTAT[1] -= 15; break; case 104: ___CHIPSTAT[2] -= 15; break; case 105: ___CHIPSTAT[3] -= 15; break; case 106: ___CHIPSTAT[4] -= 15; break; case 107: ___CHIPSTAT[5] -= 15; break; } ChipRegistry.GetSingleton().GetEntry(chipID).Stats.AddTo(___CHIPSTAT); } } }
public static bool Prefix(NetworkView __instance, string name, RPCMode mode, ref object[] args) { if (Assembly.GetCallingAssembly().Equals(typeof(GameScript).Assembly)) { switch (name) { case "Set": if (args.Length == 3) { if (args[0] is int) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } GadgetNetwork.ConvertIDToHost(null /* WorldRegistry */, ref args[0]); } } else if (args.Length == 1) { if (args[0] is int[] && (args[0] as int[]).Length == 2) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } GadgetNetwork.ConvertIDToHost(ItemRegistry.GetSingleton(), ref (args[0] as int[])[0]); } else if (args[0] is Package2) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } GadgetNetwork.ConvertIDToHost(ItemRegistry.GetSingleton() /* ProjectileRegistry */, ref (args[0] as Package2).id); } } break; case "UA": if (args.Length == 3) { if (args[0] is int[] && (args[0] as int[]).Length == 8) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } GadgetNetwork.ConvertIDToHost(ItemRegistry.GetSingleton(), ref (args[0] as int[])[0]); GadgetNetwork.ConvertIDToHost(ItemRegistry.GetSingleton(), ref (args[0] as int[])[1]); GadgetNetwork.ConvertIDToHost(ItemRegistry.GetSingleton(), ref (args[0] as int[])[2]); GadgetNetwork.ConvertIDToHost(ItemRegistry.GetSingleton(), ref (args[0] as int[])[3]); GadgetNetwork.ConvertIDToHost(null /* RaceRegistry */, ref (args[0] as int[])[4]); GadgetNetwork.ConvertIDToHost(null /* UniformRegistry */, ref (args[0] as int[])[6]); GadgetNetwork.ConvertIDToHost(null /* AugmentRegistry */, ref (args[0] as int[])[7]); } } else if (args.Length == 1) { if (args[0] is int[] && (args[0] as int[]).Length == 3) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } GadgetNetwork.ConvertIDToHost(ItemRegistry.GetSingleton(), ref (args[0] as int[])[0]); GadgetNetwork.ConvertIDToHost(ItemRegistry.GetSingleton(), ref (args[0] as int[])[1]); GadgetNetwork.ConvertIDToHost(ItemRegistry.GetSingleton(), ref (args[0] as int[])[2]); } } break; case "ShootProjectile": if (args.Length == 3) { if (args[0] is int) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } GadgetNetwork.ConvertIDToHost(ItemRegistry.GetSingleton() /* ProjectileRegistry */, ref args[0]); } } break; case "CreateWorld": if (args.Length == 1) { if (args[0] is int[] && (args[0] as int[]).Length > 1) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } GadgetNetwork.ConvertIDToHost(null /* WorldRegistry */, ref (args[0] as int[])[0]); for (int i = 1; i < (args[0] as int[]).Length; i++) { GadgetNetwork.ConvertIDToHost(TileRegistry.GetSingleton(), ref (args[0] as int[])[i]); } } } break; case "CreateTown": if (args.Length == 1) { if (args[0] is int[] && (args[0] as int[]).Length == 2) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } GadgetNetwork.ConvertIDToHost(null /* WorldRegistry */, ref (args[0] as int[])[0]); } } break; case "SpawnProjectile": if (args.Length == 4) { if (args[1] is int) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } GadgetNetwork.ConvertIDToHost(ItemRegistry.GetSingleton() /* ProjectileRegistry */, ref args[1]); } } break; case "SetNetworked": if (args.Length == 3) { if (args[1] is int) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } GadgetNetwork.ConvertIDToHost(ItemRegistry.GetSingleton() /* ProjectileRegistry */, ref args[1]); } } break; case "SetName": if (args.Length == 1) { if (args[0] is int) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } GadgetNetwork.ConvertIDToHost(null /* WorldRegistry */, ref args[0]); } } break; case "Staff": if (args.Length == 3) { if (args[0] is int) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } GadgetNetwork.ConvertIDToHost(ItemRegistry.GetSingleton() /* ProjectileRegistry */, ref args[0]); } } break; case "ShootSpecial": if (args.Length == 3) { if (args[0] is int) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } GadgetNetwork.ConvertIDToHost(ItemRegistry.GetSingleton() /* ProjectileRegistry */, ref args[0]); } } break; case "ShootProjectile2": if (args.Length == 4) { if (args[0] is int) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } GadgetNetwork.ConvertIDToHost(ItemRegistry.GetSingleton() /* ProjectileRegistry */, ref args[0]); } } break; case "NetworkedProjectile": if (args.Length == 4) { if (args[0] is int) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } GadgetNetwork.ConvertIDToHost(ItemRegistry.GetSingleton() /* ProjectileRegistry */, ref args[0]); } } break; case "Init": if (args.Length == 1) { if (args[0] is int[] && (args[0] as int[]).Length >= 11) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } GadgetNetwork.ConvertIDToHost(ItemRegistry.GetSingleton(), ref (args[0] as int[])[0]); GadgetNetwork.ConvertIDToHost(ItemRegistry.GetSingleton(), ref (args[0] as int[])[5]); GadgetNetwork.ConvertIDToHost(ItemRegistry.GetSingleton(), ref (args[0] as int[])[6]); GadgetNetwork.ConvertIDToHost(ItemRegistry.GetSingleton(), ref (args[0] as int[])[7]); } } break; case "Chip": if (args.Length == 1) { if (args[0] is int) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } GadgetNetwork.ConvertIDToHost(ChipRegistry.GetSingleton(), ref args[0]); } } break; case "SpawnItem": if (args.Length == 2) { if (args[0] is int[] && (args[0] as int[]).Length >= 11) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } GadgetNetwork.ConvertIDToHost(ItemRegistry.GetSingleton(), ref (args[0] as int[])[0]); GadgetNetwork.ConvertIDToHost(ItemRegistry.GetSingleton(), ref (args[0] as int[])[5]); GadgetNetwork.ConvertIDToHost(ItemRegistry.GetSingleton(), ref (args[0] as int[])[6]); GadgetNetwork.ConvertIDToHost(ItemRegistry.GetSingleton(), ref (args[0] as int[])[7]); } } break; case "ChangePortal": if (args.Length == 2) { if (args[0] is int) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } GadgetNetwork.ConvertIDToHost(null /* WorldRegistry */, ref args[0]); } } break; case "ChangePortal2": if (args.Length == 2) { if (args[0] is int) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } GadgetNetwork.ConvertIDToHost(null /* WorldRegistry */, ref args[0]); } } break; case "RefreshWall": if (args.Length == 1) { if (args[0] is int[]) { for (int i = 0; i < (args[0] as int[]).Length; i++) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } GadgetNetwork.ConvertIDToHost(TileRegistry.GetSingleton(), ref (args[0] as int[])[i]); } } } break; case "RefreshShip": if (args.Length == 2) { if (args[0] is int[] && args[1] is int[]) { for (int i = 0; i < (args[0] as int[]).Length; i++) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } GadgetNetwork.ConvertIDToHost(TileRegistry.GetSingleton(), ref (args[0] as int[])[i]); } for (int i = 0; i < (args[1] as int[]).Length; i++) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } GadgetNetwork.ConvertIDToHost(TileRegistry.GetSingleton(), ref (args[1] as int[])[i]); } } } break; case "SetMaterial": if (args.Length == 1) { if (args[0] is int) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } GadgetNetwork.ConvertIDToHost(null /* WorldRegistry */, ref args[0]); } } break; } } return(true); }
public static bool Prefix(GameScript __instance, int slot, ref int[] ___combatChips, ref bool ___skilling, ref bool[] ___skillUsin) { int chipID = ___combatChips[slot]; if (ChipRegistry.GetSingleton().HasEntry(chipID)) { ChipInfo chip = ChipRegistry.GetSingleton().GetEntry(chipID); if (!___skilling && !___skillUsin[slot]) { ___skillUsin[slot] = true; __instance.StartCoroutine(SkillUsin(slot, ___skillUsin)); __instance.GetComponent <AudioSource>().PlayOneShot((AudioClip)Resources.Load("Au/error"), Menuu.soundLevel / 10f); __instance.combatChipObj[slot].GetComponent <Animation>().Play(); if (chip.IsChipActive(slot)) { return(false); } int cost = chip.Cost; if (Menuu.curAugment == 18) { cost /= 2; } if (cost < 0) { cost = 0; } if ((chip.Type & ChipType.ACTIVE) > 0) { if ((chip.CostType == ChipInfo.ChipCostType.MANA && GameScript.mana >= cost) || (chip.CostType == ChipInfo.ChipCostType.ENERGY && GameScript.energy >= cost) || (chip.CostType == ChipInfo.ChipCostType.HEALTH_SAFE && GameScript.hp > cost) || chip.CostType == ChipInfo.ChipCostType.HEALTH_LETHAL || chip.CostType == ChipInfo.ChipCostType.HEALTH_LETHAL_POSTMORTEM) { GameObject gameObject = (GameObject)UnityEngine.Object.Instantiate(Resources.Load("txtSkill"), new Vector3(0f, 0f, 0f), Quaternion.identity); gameObject.transform.parent = Camera.main.transform; gameObject.transform.localPosition = new Vector3(-14f, 7f, 0.35f); gameObject.SendMessage("InitSkill", chip.Name); if (chip.CostType == ChipInfo.ChipCostType.MANA) { GameScript.mana -= cost; __instance.BARMANA.GetComponent <Animation>().Play(); chip.InvokeOnUse(slot); __instance.StartCoroutine(WaitChip(__instance)); __instance.UpdateMana(); } else if (chip.CostType == ChipInfo.ChipCostType.ENERGY) { GameScript.energy -= cost; chip.InvokeOnUse(slot); __instance.StartCoroutine(WaitChip(__instance)); __instance.UpdateEnergy(); } else { GameScript.hp -= cost; if (GameScript.hp <= 0) { GameScript.dead = true; } if (GameScript.hp > 0 || chip.CostType == ChipInfo.ChipCostType.HEALTH_LETHAL_POSTMORTEM) { chip.InvokeOnUse(slot); __instance.StartCoroutine(WaitChip(__instance)); } if (GameScript.hp <= 0) { GameScript.dead = true; GameScript.hp = 0; Die.Invoke(__instance, new object[] { }); } else { GameScript.dead = false; } __instance.UpdateHP(); } } } } return(false); } return(true); }