Skip to content

Commit e6834f1

Browse files
committed
*fix for eliminated factions
1 parent 228aa80 commit e6834f1

File tree

2 files changed

+77
-13
lines changed

2 files changed

+77
-13
lines changed

WarTech/WarTech/Helper.cs

+72-12
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using BattleTech;
22
using BattleTech.Data;
33
using BattleTech.Framework;
4+
using Harmony;
45
using HBS.Collections;
56
using Newtonsoft.Json;
67
using System;
@@ -396,20 +397,22 @@ public static StarSystem ChangeOwner(StarSystem system, FactionControl control,
396397
Faction newOwner = control.faction;
397398
if (!lostWar) {
398399
War war = getWar(newOwner);
399-
if (war.attackers.ContainsKey(newOwner)) {
400-
if (war.attackers[newOwner].takenPlanets.ContainsKey(system.Name)) {
401-
war.attackers[newOwner].takenPlanets[system.Name] = system.Owner;
402-
}
403-
else {
404-
war.attackers[newOwner].takenPlanets.Add(system.Name, system.Owner);
405-
}
406-
}
407-
else {
408-
if (war.defenders[newOwner].takenPlanets.ContainsKey(system.Name)) {
409-
war.defenders[newOwner].takenPlanets[system.Name] = system.Owner;
400+
if (war != null) {
401+
if (war.attackers.ContainsKey(newOwner)) {
402+
if (war.attackers[newOwner].takenPlanets.ContainsKey(system.Name)) {
403+
war.attackers[newOwner].takenPlanets[system.Name] = system.Owner;
404+
}
405+
else {
406+
war.attackers[newOwner].takenPlanets.Add(system.Name, system.Owner);
407+
}
410408
}
411409
else {
412-
war.defenders[newOwner].takenPlanets.Add(system.Name, system.Owner);
410+
if (war.defenders[newOwner].takenPlanets.ContainsKey(system.Name)) {
411+
war.defenders[newOwner].takenPlanets[system.Name] = system.Owner;
412+
}
413+
else {
414+
war.defenders[newOwner].takenPlanets.Add(system.Name, system.Owner);
415+
}
413416
}
414417
}
415418
}
@@ -605,6 +608,63 @@ public static List<Faction> GetTargets(StarSystem system, SimGameState Sim) {
605608
}
606609
}
607610

611+
public static List<Faction> GetFactionsByString(List<string> names) {
612+
try {
613+
List<Faction> factions = new List<Faction>();
614+
foreach (string name in names) {
615+
switch (name) {
616+
case "AuriganRestoration":
617+
factions.Add(Faction.AuriganRestoration);
618+
break;
619+
case "Betrayers":
620+
factions.Add(Faction.Betrayers);
621+
break;
622+
case "AuriganDirectorate":
623+
factions.Add(Faction.AuriganDirectorate); break;
624+
case "AuriganMercenaries":
625+
factions.Add(Faction.AuriganMercenaries); break;
626+
case "AuriganPirates":
627+
factions.Add(Faction.AuriganPirates); break;
628+
case "ComStar":
629+
factions.Add(Faction.ComStar); break;
630+
case "Davion":
631+
factions.Add(Faction.Davion); break;
632+
case "Kurita":
633+
factions.Add(Faction.Kurita); break;
634+
case "Liao":
635+
factions.Add(Faction.Liao); break;
636+
case "Locals":
637+
factions.Add(Faction.Locals); break;
638+
case "MagistracyCentrella":
639+
factions.Add(Faction.MagistracyCentrella); break;
640+
case "MagistracyOfCanopus":
641+
factions.Add(Faction.MagistracyOfCanopus); break;
642+
case "MajestyMetals":
643+
factions.Add(Faction.MajestyMetals); break;
644+
case "Marik":
645+
factions.Add(Faction.Marik); break;
646+
case "MercenaryReviewBoard":
647+
factions.Add(Faction.MercenaryReviewBoard); break;
648+
case "Nautilus":
649+
factions.Add(Faction.Nautilus); break;
650+
case "Steiner":
651+
factions.Add(Faction.Steiner); break;
652+
case "TaurianConcordat":
653+
factions.Add(Faction.TaurianConcordat); break;
654+
case "NoFaction":
655+
factions.Add(Faction.NoFaction); break;
656+
default:
657+
break;
658+
}
659+
}
660+
return factions;
661+
}
662+
catch (Exception ex) {
663+
Logger.LogError(ex);
664+
return null;
665+
}
666+
}
667+
608668
public static string GetFactionTag(Faction faction) {
609669
try {
610670
switch (faction) {

WarTech/WarTech/Patch.cs

+5-1
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ static void Postfix(SimGameState simGame) {
204204
}
205205
}
206206
StarSystem system2 = simGame.StarSystems.Find(x => x.Name.Equals(system.Name));
207-
system2 = Helper.ChangeOwner(system, factionControl, simGame, battle, false);
207+
system2 = Helper.ChangeOwner(system2, factionControl, simGame, battle, false);
208208
system2 = Helper.ChangeWarDescription(system2, simGame);
209209
}
210210

@@ -288,6 +288,10 @@ static void Prefix(SimGameState __instance, int timeLapse) {
288288
if (Fields.neighbourFactions.ContainsKey(pair.Key)) {
289289
fac = Fields.neighbourFactions[pair.Key];
290290
}
291+
List<Faction> list = Helper.GetFactionsByString(Fields.settings.excludedFactionNames);
292+
if (fac != null && list != null && list.Count > 0) {
293+
fac = fac.Except(list).ToList();
294+
}
291295
if (!Helper.IsAtWar(pair.Key) && !Helper.IsExcluded(pair.Key) && fac != null && fac.Count > 0) {
292296
if (rand.Next(0, 101) > Fields.WarFatique[pair.Key]) {
293297
Faction enemy;

0 commit comments

Comments
 (0)