private static void BeforeAddEntry_AmendEntry(GeoscapeLogEntry entry, GeoscapeLogMessagesDef ____messagesDef, GeoFaction ____faction) { try { if (entry == null || entry.Text != ____messagesDef.AircraftCrewReadyMessage) { return; } var name = (entry.Parameters[0] as LocalizedTextBind)?.Localize(); Verbo("Checking rest message of {0}", name); Func <IGeoCharacterContainer, bool> foundEntry = (e) => e.Name == name; IGeoCharacterContainer container = ____faction.Vehicles.FirstOrDefault(foundEntry) ?? ____faction.Sites.FirstOrDefault(foundEntry); if (container == null) { return; } string note; if (container.GetAllCharacters().Any(e => e.IsInjured)) { note = new LocalizedTextBind("KEY_GEOSCAPE_STAMINA").Localize(); } else if (container.GetAllCharacters().Any(e => e.Fatigue?.IsFullyRested == false)) { note = new LocalizedTextBind("KEY_HEALTH").Localize(); } else { return; } Info("Updating rest message of {0}", name); entry.Text = new LocalizedTextBind(entry.GenerateMessage() + " (" + TitleCase(note) + ")", true); } catch (Exception ex) { Error(ex); } }
private static void AfterSiteMission_AmendLog(GeoSite site, GeoMission mission, List <GeoscapeLogEntry> ____entries) { try { if (!(mission is GeoHavenDefenseMission defense) || DefenseMission == null) { return; } var attacker = DefenseMission.GetEnemyFaction(); if (!CauseZoneDamage(attacker)) { return; } LocalizedTextBind zoneName = defense.AttackedZone?.Def?.ViewElementDef?.DisplayName1; if (zoneName == null || ____entries == null || ____entries.Count < 1) { return; } GeoscapeLogEntry entry = ____entries[____entries.Count - 1]; Verbo("Converting {0} invasion message to zone invasion.", attacker.GetPPName()); entry.Parameters[0] = new LocalizedTextBind(site.SiteName.Localize() + " " + TitleCase(zoneName.Localize()), true); } catch (Exception ex) { Error(ex); } }