public static void Postfix() { List <BloonModel> goldenBloons = new List <BloonModel>(); foreach (var item in Game.instance.model.bloons) { if (item.baseId == "Golden") { goldenBloons.Add(item); } } Random rand = new Random(); Il2CppReferenceArray <RoundSetModel> roundSets = InGame.instance.bridge.Model.roundSets; for (int i = 0; i < roundSets.Length; i++) { Il2CppReferenceArray <RoundModel> rounds = roundSets[i].rounds; for (int j = 0; j < rounds.Length; j++) { int randombloon = rand.Next(0, goldenBloons.Count); BloonEmissionModel goldenBloon = new BloonEmissionModel(goldenBloons[randombloon].id, 0, goldenBloons[randombloon].id); Il2CppReferenceArray <BloonEmissionModel> temp = rounds[j].emissions; List <BloonEmissionModel> temp2 = new List <BloonEmissionModel>(); foreach (var item in temp) { temp2.Add(item); } temp2.Add(goldenBloon); rounds[j].emissions_ = (Il2CppReferenceArray <BloonEmissionModel>)temp2.ToArray(); } } }
/// <summary> /// (Cross-Game compatible) Spawn a BloonModel on the map /// </summary> /// <param name="spawner"></param> /// <param name="bloonModel"></param> public static void Emit(this Spawner spawner, BloonModel bloonModel) { #if BloonsTD6 Il2CppSystem.Collections.Generic.List <Bloon.ChargedMutator> chargedMutators = new Il2CppSystem.Collections.Generic.List <Bloon.ChargedMutator>(); Il2CppSystem.Collections.Generic.List <BehaviorMutator> nonChargedMutators = new Il2CppSystem.Collections.Generic.List <BehaviorMutator>(); spawner.Emit(bloonModel, InGame.Bridge.GetCurrentRound(), 0); #elif BloonsAT var emissionModel = new BloonEmissionModel(bloonType: bloonModel.baseType); spawner.Emit(emissionModel); #endif }
public override void OnUpdate() { base.OnUpdate(); bool inAGame = InGame.instance != null && InGame.instance.bridge != null; if (inAGame) { if (!updated) { var rounds = InGame.instance.bridge.Model.roundSetsByName; var rsm = rounds["DefaultRoundSet"]; for (int i = 0; i < rsm.rounds.Count; i++) { Il2CppReferenceArray <BloonEmissionModel> bme = new Il2CppReferenceArray <BloonEmissionModel>(rsm.rounds[i].emissions.Count); for (int j = 0; j < rsm.rounds[i].emissions.Count; j++) { bme[j] = new BloonEmissionModel(rsm.rounds[i].emissions[j].bloon, 0, rsm.rounds[i].emissions[j].bloon); } rsm.rounds[i].emissions_ = bme; } rsm = rounds["AlternateRoundSet"]; for (int i = 0; i < rsm.rounds.Count; i++) { Il2CppReferenceArray <BloonEmissionModel> bme = new Il2CppReferenceArray <BloonEmissionModel>(rsm.rounds[i].emissions.Count); for (int j = 0; j < rsm.rounds[i].emissions.Count; j++) { bme[j] = new BloonEmissionModel(rsm.rounds[i].emissions[j].bloon, 0, rsm.rounds[i].emissions[j].bloon); } rsm.rounds[i].emissions_ = bme; } updated = true; } } else { updated = false; } }
public override void OnUpdate() { base.OnUpdate(); bool inAGame = InGame.instance != null && InGame.instance.bridge != null; if (inAGame) { if (!updated) { var rounds = InGame.instance.bridge.Model.roundSetsByName; var def = rounds["DefaultRoundSet"]; var abr = rounds["AlternateRoundSet"]; for (int i = 0; i < def.rounds.Count; i++) { var total = def.rounds[i].emissions.Count + abr.rounds[i].emissions.Count; Il2CppReferenceArray <BloonEmissionModel> new_emissions = new Il2CppReferenceArray <BloonEmissionModel>(total); for (int j = 0; j < def.rounds[i].emissions.Count; j++) { new_emissions[j] = new BloonEmissionModel(def.rounds[i].emissions[j].bloon, def.rounds[i].emissions[j].time, def.rounds[i].emissions[j].bloon); } for (int j = 0; j < abr.rounds[i].emissions.Count; j++) { new_emissions[j + def.rounds[i].emissions.Count] = new BloonEmissionModel(abr.rounds[i].emissions[j].bloon, abr.rounds[i].emissions[j].time, abr.rounds[i].emissions[j].bloon); } def.rounds[i].emissions_ = new_emissions; } updated = true; } } else { updated = false; } }