|
1 | 1 | using BattleTech;
|
2 | 2 | using BattleTech.Data;
|
3 | 3 | using BattleTech.Framework;
|
| 4 | +using Harmony; |
4 | 5 | using HBS.Collections;
|
5 | 6 | using Newtonsoft.Json;
|
6 | 7 | using System;
|
@@ -396,20 +397,22 @@ public static StarSystem ChangeOwner(StarSystem system, FactionControl control,
|
396 | 397 | Faction newOwner = control.faction;
|
397 | 398 | if (!lostWar) {
|
398 | 399 | 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 | + } |
410 | 408 | }
|
411 | 409 | 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 | + } |
413 | 416 | }
|
414 | 417 | }
|
415 | 418 | }
|
@@ -605,6 +608,63 @@ public static List<Faction> GetTargets(StarSystem system, SimGameState Sim) {
|
605 | 608 | }
|
606 | 609 | }
|
607 | 610 |
|
| 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 | + |
608 | 668 | public static string GetFactionTag(Faction faction) {
|
609 | 669 | try {
|
610 | 670 | switch (faction) {
|
|
0 commit comments