Пример #1
0
        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); }
        }
Пример #2
0
 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); }
 }