示例#1
0
        public HfsFormedReputationRelationship(List <Property> properties, World world)
            : base(properties, world)
        {
            foreach (Property property in properties)
            {
                switch (property.Name)
                {
                case "hfid1": HistoricalFigure1 = world.GetHistoricalFigure(Convert.ToInt32(property.Value)); break;

                case "hfid2": HistoricalFigure2 = world.GetHistoricalFigure(Convert.ToInt32(property.Value)); break;

                case "identity_id1": IdentityId1 = Convert.ToInt32(property.Value); break;

                case "identity_id2": IdentityId2 = Convert.ToInt32(property.Value); break;

                case "hf_rep_1_of_2":
                    switch (property.Value)
                    {
                    case "information source":
                        HfRep1Of2 = ReputationType.InformationSource;
                        break;

                    default:
                        property.Known = false;
                        break;
                    }

                    break;

                case "hf_rep_2_of_1":
                    switch (property.Value)
                    {
                    case "information source":
                        HfRep2Of1 = ReputationType.InformationSource;
                        break;

                    case "buddy":
                        HfRep2Of1 = ReputationType.Buddy;
                        break;

                    default:
                        property.Known = false;
                        break;
                    }

                    break;

                case "site_id": Site = world.GetSite(Convert.ToInt32(property.Value)); break;

                case "subregion_id": Region = world.GetRegion(Convert.ToInt32(property.Value)); break;

                case "feature_layer_id": UndergroundRegion = world.GetUndergroundRegion(Convert.ToInt32(property.Value)); break;
                }
            }
            HistoricalFigure1.AddEvent(this);
            HistoricalFigure2.AddEvent(this);
            Site.AddEvent(this);
            Region.AddEvent(this);
            UndergroundRegion.AddEvent(this);
        }
示例#2
0
        public HfAbducted(List <Property> properties, World world)
            : base(properties, world)
        {
            foreach (Property property in properties)
            {
                switch (property.Name)
                {
                case "target_hfid": Target = world.GetHistoricalFigure(Convert.ToInt32(property.Value)); break;

                case "snatcher_hfid": Snatcher = world.GetHistoricalFigure(Convert.ToInt32(property.Value)); break;

                case "site_id": Site = world.GetSite(Convert.ToInt32(property.Value)); break;

                case "subregion_id": Region = world.GetRegion(Convert.ToInt32(property.Value)); break;

                case "feature_layer_id": UndergroundRegion = world.GetUndergroundRegion(Convert.ToInt32(property.Value)); break;
                }
            }

            Target.AddEvent(this);
            Snatcher.AddEvent(this);
            Site.AddEvent(this);
            Region.AddEvent(this);
            UndergroundRegion.AddEvent(this);
        }
        public EntityIncorporated(List <Property> properties, World world) : base(properties, world)
        {
            foreach (Property property in properties)
            {
                switch (property.Name)
                {
                case "site_id": Site = world.GetSite(Convert.ToInt32(property.Value)); break;

                case "subregion_id": Region = world.GetRegion(Convert.ToInt32(property.Value)); break;

                case "feature_layer_id": UndergroundRegion = world.GetUndergroundRegion(Convert.ToInt32(property.Value)); break;

                case "joiner_entity_id": JoinerEntity = world.GetEntity(Convert.ToInt32(property.Value)); break;

                case "joined_entity_id": JoinedEntity = world.GetEntity(Convert.ToInt32(property.Value)); break;

                case "leader_hfid": Leader = world.GetHistoricalFigure(Convert.ToInt32(property.Value)); break;

                case "partial_incorporation":
                    property.Known       = true;
                    PartialIncorporation = true;
                    break;
                }
            }

            Site.AddEvent(this);
            Region.AddEvent(this);
            UndergroundRegion.AddEvent(this);
            Leader.AddEvent(this);
            JoinerEntity.AddEvent(this);
            JoinedEntity.AddEvent(this);
        }
示例#4
0
        public HfPerformedHorribleExperiments(List <Property> properties, World world)
            : base(properties, world)
        {
            foreach (Property property in properties)
            {
                switch (property.Name)
                {
                case "group_hfid": GroupHistoricalFigure = world.GetHistoricalFigure(Convert.ToInt32(property.Value)); break;

                case "site_id": Site = world.GetSite(Convert.ToInt32(property.Value)); break;

                case "subregion_id": Region = world.GetRegion(Convert.ToInt32(property.Value)); break;

                case "feature_layer_id": UndergroundRegion = world.GetUndergroundRegion(Convert.ToInt32(property.Value)); break;

                case "structure_id": StructureId = Convert.ToInt32(property.Value); break;
                }
            }
            if (Site != null)
            {
                Structure = Site.Structures.FirstOrDefault(structure => structure.Id == StructureId);
            }
            Site.AddEvent(this);
            Region.AddEvent(this);
            UndergroundRegion.AddEvent(this);
            Structure.AddEvent(this);
        }
示例#5
0
        public HfReachSummit(List <Property> properties, World world)
            : base(properties, world)
        {
            foreach (Property property in properties)
            {
                switch (property.Name)
                {
                case "group_hfid": HistoricalFigure = world.GetHistoricalFigure(Convert.ToInt32(property.Value)); break;

                case "subregion_id": Region = world.GetRegion(Convert.ToInt32(property.Value)); break;

                case "feature_layer_id": UndergroundRegion = world.GetUndergroundRegion(Convert.ToInt32(property.Value)); break;

                case "site": Site = world.GetSite(Convert.ToInt32(property.Value)); break;

                case "coords": Coordinates = Formatting.ConvertToLocation(property.Value); break;

                case "group": if (HistoricalFigure == null)
                    {
                        HistoricalFigure = world.GetHistoricalFigure(Convert.ToInt32(property.Value));
                    }
                    else
                    {
                        property.Known = true;
                    } break;
                }
            }
            HistoricalFigure.AddEvent(this);
            Region.AddEvent(this);
            UndergroundRegion.AddEvent(this);
            Site.AddEvent(this);
        }
示例#6
0
        public ArtifactLost(List <Property> properties, World world) : base(properties, world)
        {
            int sitePropertyId = -1;

            foreach (Property property in properties)
            {
                switch (property.Name)
                {
                case "artifact_id": Artifact = world.GetArtifact(Convert.ToInt32(property.Value)); break;

                case "site_id": Site = world.GetSite(Convert.ToInt32(property.Value)); break;

                case "subregion_id": Region = world.GetRegion(Convert.ToInt32(property.Value)); break;

                case "feature_layer_id": UndergroundRegion = world.GetUndergroundRegion(Convert.ToInt32(property.Value)); break;

                case "site_property_id": sitePropertyId = Convert.ToInt32(property.Value); break;
                }
            }

            if (Site != null && sitePropertyId != -1)
            {
                SiteProperty = Site.SiteProperties.FirstOrDefault(sp => sp.Id == sitePropertyId);
            }
            Artifact.AddEvent(this);
            Site.AddEvent(this);
            Region.AddEvent(this);
            UndergroundRegion.AddEvent(this);
        }
示例#7
0
        public HfRevived(List <Property> properties, World world)
            : base(properties, world)
        {
            foreach (Property property in properties)
            {
                switch (property.Name)
                {
                case "ghost": _ghost = property.Value; break;

                case "hfid": HistoricalFigure = world.GetHistoricalFigure(Convert.ToInt32(property.Value)); break;

                case "site_id": Site = world.GetSite(Convert.ToInt32(property.Value)); break;

                case "subregion_id": Region = world.GetRegion(Convert.ToInt32(property.Value)); break;

                case "feature_layer_id": UndergroundRegion = world.GetUndergroundRegion(Convert.ToInt32(property.Value)); break;

                case "raised_before": RaisedBefore = true; property.Known = true; break;

                case "actor_hfid": Actor = world.GetHistoricalFigure(Convert.ToInt32(property.Value)); break;

                case "disturbance": Disturbance = true; property.Known = true; break;
                }
            }

            HistoricalFigure.AddEvent(this);
            Site.AddEvent(this);
            Region.AddEvent(this);
            UndergroundRegion.AddEvent(this);
        }
示例#8
0
        public Gamble(List <Property> properties, World world) : base(properties, world)
        {
            foreach (Property property in properties)
            {
                switch (property.Name)
                {
                case "site_id": Site = world.GetSite(Convert.ToInt32(property.Value)); break;

                case "subregion_id": Region = world.GetRegion(Convert.ToInt32(property.Value)); break;

                case "feature_layer_id": UndergroundRegion = world.GetUndergroundRegion(Convert.ToInt32(property.Value)); break;

                case "old_account": OldAccount = Convert.ToInt32(property.Value); break;

                case "new_account": NewAccount = Convert.ToInt32(property.Value); break;

                case "gambler_hfid": Gambler = world.GetHistoricalFigure(Convert.ToInt32(property.Value)); break;

                case "structure_id": StructureId = Convert.ToInt32(property.Value); break;
                }
            }

            if (Site != null)
            {
                Structure = Site.Structures.FirstOrDefault(structure => structure.Id == StructureId);
            }

            Site.AddEvent(this);
            Region.AddEvent(this);
            UndergroundRegion.AddEvent(this);
            Gambler.AddEvent(this);
            Structure.AddEvent(this);
        }
        public FormCreatedEvent(List <Property> properties, World world) : base(properties, world)
        {
            foreach (Property property in properties)
            {
                switch (property.Name)
                {
                case "hist_figure_id":
                    HistoricalFigure = world.GetHistoricalFigure(Convert.ToInt32(property.Value));
                    break;

                case "site_id":
                    Site = world.GetSite(Convert.ToInt32(property.Value));
                    break;

                case "form_id":
                    FormId = property.Value;
                    break;

                case "reason":
                    Reason = property.Value;
                    break;

                case "reason_id":
                    ReasonId = Convert.ToInt32(property.Value);
                    break;

                case "circumstance":
                    Circumstance = property.Value;
                    break;

                case "circumstance_id":
                    CircumstanceId = Convert.ToInt32(property.Value);
                    break;

                case "subregion_id":
                    Region = world.GetRegion(Convert.ToInt32(property.Value));
                    break;
                }
            }

            Site.AddEvent(this);
            Region.AddEvent(this);
            HistoricalFigure.AddEvent(this);
            if (Reason == "glorify hf")
            {
                GlorifiedHf = world.GetHistoricalFigure(ReasonId);
                if (GlorifiedHf != HistoricalFigure)
                {
                    GlorifiedHf.AddEvent(this);
                }
            }
            if (Circumstance == "pray to hf")
            {
                PrayToHf = world.GetHistoricalFigure(CircumstanceId);
                if (PrayToHf != GlorifiedHf)
                {
                    PrayToHf.AddEvent(this);
                }
            }
        }
示例#10
0
        public OccasionEvent(List <Property> properties, World world) : base(properties, world)
        {
            foreach (Property property in properties)
            {
                switch (property.Name)
                {
                case "civ_id":
                    Civ = world.GetEntity(Convert.ToInt32(property.Value));
                    break;

                case "site_id":
                    Site = world.GetSite(Convert.ToInt32(property.Value));
                    break;

                case "subregion_id":
                    Region = world.GetRegion(Convert.ToInt32(property.Value));
                    break;

                case "feature_layer_id":
                    UndergroundRegion = world.GetUndergroundRegion(Convert.ToInt32(property.Value));
                    break;

                case "occasion_id":
                    OccasionId = Convert.ToInt32(property.Value);
                    break;

                case "schedule_id":
                    ScheduleId = Convert.ToInt32(property.Value);
                    break;
                }
            }

            if (Civ != null && Civ.Occassions.Any())
            {
                EntityOccasion = Civ.Occassions.ElementAt(OccasionId);
                if (EntityOccasion != null)
                {
                    Schedule = EntityOccasion.Schedules.ElementAt(ScheduleId);

                    // DEBUG

                    //if (Schedule.Reference != -1 && Schedule.Type == ScheduleType.Storytelling)
                    //{
                    //    WorldEvent worldEvent = World.GetEvent(Schedule.Reference) as WorldEvent;
                    //    if (!(worldEvent is IFeatured))
                    //    {
                    //        world.ParsingErrors.Report("Unknown Occasion Feature - worldEvent.Type: " + worldEvent.Type);
                    //    }
                    //}
                }
            }

            Civ.AddEvent(this);
            Site.AddEvent(this);
            Region.AddEvent(this);
            UndergroundRegion.AddEvent(this);
        }
示例#11
0
        public HfConfronted(List <Property> properties, World world)
            : base(properties, world)
        {
            Reasons         = new List <ConfrontReason>();
            _unknownReasons = new List <string>();
            foreach (Property property in properties)
            {
                switch (property.Name)
                {
                case "hfid": HistoricalFigure = world.GetHistoricalFigure(Convert.ToInt32(property.Value)); break;

                case "situation":
                    switch (property.Value)
                    {
                    case "general suspicion": Situation = ConfrontSituation.GeneralSuspicion; break;

                    default:
                        Situation         = ConfrontSituation.Unknown;
                        _unknownSituation = property.Value;
                        world.ParsingErrors.Report("Unknown HF Confronted Situation: " + _unknownSituation);
                        break;
                    }
                    break;

                case "reason":
                    switch (property.Value)
                    {
                    case "murder": Reasons.Add(ConfrontReason.Murder); break;

                    case "ageless": Reasons.Add(ConfrontReason.Ageless); break;

                    default:
                        Reasons.Add(ConfrontReason.Unknown);
                        _unknownReasons.Add(property.Value);
                        world.ParsingErrors.Report("Unknown HF Confronted Reason: " + property.Value);
                        break;
                    }
                    break;

                case "site_id": Site = world.GetSite(Convert.ToInt32(property.Value)); break;

                case "subregion_id": Region = world.GetRegion(Convert.ToInt32(property.Value)); break;

                case "feature_layer_id": UndergroundRegion = world.GetUndergroundRegion(Convert.ToInt32(property.Value)); break;

                case "coords": Coordinates = Formatting.ConvertToLocation(property.Value); break;
                }
            }

            HistoricalFigure.AddEvent(this);
            Site.AddEvent(this);
            Region.AddEvent(this);
            UndergroundRegion.AddEvent(this);
        }
示例#12
0
        public ArtifactFound(List <Property> properties, World world)
            : base(properties, world)
        {
            foreach (Property property in properties)
            {
                switch (property.Name)
                {
                case "artifact_id":
                    Artifact = world.GetArtifact(Convert.ToInt32(property.Value));
                    break;

                case "hist_figure_id":
                    HistoricalFigure = world.GetHistoricalFigure(Convert.ToInt32(property.Value));
                    break;

                case "site_id":
                    Site = world.GetSite(Convert.ToInt32(property.Value));
                    break;

                case "site_property_id":
                    SitePropertyId = Convert.ToInt32(property.Value);
                    break;

                case "structure_id":
                    StructureId = Convert.ToInt32(property.Value);
                    break;

                case "unit_id":
                    UnitId = Convert.ToInt32(property.Value);
                    if (UnitId != -1)
                    {
                        property.Known = false;
                    }
                    break;

                case "subregion_id": Region = world.GetRegion(Convert.ToInt32(property.Value)); break;

                case "feature_layer_id": UndergroundRegion = world.GetUndergroundRegion(Convert.ToInt32(property.Value)); break;
                }
            }

            if (Site != null)
            {
                Structure    = Site.Structures.FirstOrDefault(structure => structure.Id == StructureId);
                SiteProperty = Site.SiteProperties.FirstOrDefault(sp => sp.Id == SitePropertyId);
            }
            Artifact.AddEvent(this);
            HistoricalFigure.AddEvent(this);
            Site.AddEvent(this);
            Structure.AddEvent(this);
            Region.AddEvent(this);
            UndergroundRegion.AddEvent(this);
        }
示例#13
0
        public BodyAbused(List <Property> properties, World world)
            : base(properties, world)
        {
            foreach (Property property in properties)
            {
                switch (property.Name)
                {
                case "site_id": Site = world.GetSite(Convert.ToInt32(property.Value)); break;

                case "coords": Coordinates = Formatting.ConvertToLocation(property.Value); break;

                case "subregion_id": Region = world.GetRegion(Convert.ToInt32(property.Value)); break;

                case "feature_layer_id": UndergroundRegion = world.GetUndergroundRegion(Convert.ToInt32(property.Value)); break;

                case "site": if (Site == null)
                    {
                        Site = world.GetSite(Convert.ToInt32(property.Value));
                    }
                    else
                    {
                        property.Known = true;
                    } break;

                case "civ": Abuser = world.GetEntity(Convert.ToInt32(property.Value)); break;

                case "bodies": Body = world.GetHistoricalFigure(Convert.ToInt32(property.Value)); break;

                case "histfig": HistoricalFigure = world.GetHistoricalFigure(Convert.ToInt32(property.Value)); break;

                case "props_item_type": ItemType = property.Value; break;

                case "props_item_subtype": ItemSubType = property.Value; break;

                case "props_item_mat": Material = property.Value; break;

                case "abuse_type": AbuseTypeId = Convert.ToInt32(property.Value); break;

                case "props_pile_type": PileTypeId = Convert.ToInt32(property.Value); break;

                case "props_item_mat_type": MaterialTypeId = Convert.ToInt32(property.Value); break;

                case "props_item_mat_index": MaterialIndex = Convert.ToInt32(property.Value); break;
                }
            }

            Site.AddEvent(this);
            Region.AddEvent(this);
            UndergroundRegion.AddEvent(this);
            Body.AddEvent(this);
            HistoricalFigure.AddEvent(this);
            Abuser.AddEvent(this);
        }
        public HfRelationShipDenied(List <Property> properties, World world) : base(properties, world)
        {
            foreach (Property property in properties)
            {
                switch (property.Name)
                {
                case "site_id":
                    Site = world.GetSite(Convert.ToInt32(property.Value));
                    break;

                case "subregion_id":
                    Region = world.GetRegion(Convert.ToInt32(property.Value));
                    break;

                case "feature_layer_id":
                    UndergroundRegion = world.GetUndergroundRegion(Convert.ToInt32(property.Value));
                    break;

                case "seeker_hfid":
                    Seeker = world.GetHistoricalFigure(Convert.ToInt32(property.Value));
                    break;

                case "target_hfid":
                    Target = world.GetHistoricalFigure(Convert.ToInt32(property.Value));
                    break;

                case "relationship":
                    Relationship = property.Value;
                    break;

                case "reason":
                    Reason = property.Value;
                    break;

                case "reason_id":
                    ReasonHf = world.GetHistoricalFigure(Convert.ToInt32(property.Value));
                    break;
                }
            }

            Site.AddEvent(this);
            Region.AddEvent(this);
            UndergroundRegion.AddEvent(this);
            Seeker.AddEvent(this);
            Target.AddEvent(this);
            if (ReasonHf != null && !ReasonHf.Equals(Seeker) && !ReasonHf.Equals(Target))
            {
                ReasonHf.AddEvent(this);
            }
        }
示例#15
0
        public FieldBattle(List <Property> properties, World world)
            : base(properties, world)
        {
            foreach (Property property in properties)
            {
                switch (property.Name)
                {
                case "coords": Coordinates = Formatting.ConvertToLocation(property.Value); break;

                case "attacker_civ_id": Attacker = world.GetEntity(Convert.ToInt32(property.Value)); break;

                case "defender_civ_id": Defender = world.GetEntity(Convert.ToInt32(property.Value)); break;

                case "subregion_id": Region = world.GetRegion(Convert.ToInt32(property.Value)); break;

                case "attacker_general_hfid": AttackerGeneral = world.GetHistoricalFigure(Convert.ToInt32(property.Value)); break;

                case "defender_general_hfid": DefenderGeneral = world.GetHistoricalFigure(Convert.ToInt32(property.Value)); break;

                case "feature_layer_id": UndergroundRegion = world.GetUndergroundRegion(Convert.ToInt32(property.Value)); break;

                case "attacker_merc_enid": AttackerMercenaries = world.GetEntity(Convert.ToInt32(property.Value)); break;

                case "defender_merc_enid": DefenderMercenaries = world.GetEntity(Convert.ToInt32(property.Value)); break;

                case "a_support_merc_enid": AttackerSupportMercenaries = world.GetEntity(Convert.ToInt32(property.Value)); break;

                case "d_support_merc_enid": DefenderSupportMercenaries = world.GetEntity(Convert.ToInt32(property.Value)); break;
                }
            }

            Attacker.AddEvent(this);
            Defender.AddEvent(this);
            AttackerGeneral.AddEvent(this);
            DefenderGeneral.AddEvent(this);
            Region.AddEvent(this);
            UndergroundRegion.AddEvent(this);
            if (AttackerMercenaries != Defender && AttackerMercenaries != Attacker)
            {
                AttackerMercenaries.AddEvent(this);
            }
            if (DefenderMercenaries != Defender && DefenderMercenaries != Attacker)
            {
                DefenderMercenaries.AddEvent(this);
            }
            AttackerSupportMercenaries.AddEvent(this);
            DefenderSupportMercenaries.AddEvent(this);
        }
示例#16
0
        public ChangeHfBodyState(List <Property> properties, World world)
            : base(properties, world)
        {
            foreach (Property property in properties)
            {
                switch (property.Name)
                {
                case "hfid": HistoricalFigure = world.GetHistoricalFigure(Convert.ToInt32(property.Value)); break;

                case "body_state":
                    switch (property.Value)
                    {
                    case "entombed at site": BodyState = BodyState.EntombedAtSite; break;

                    default:
                        BodyState         = BodyState.Unknown;
                        _unknownBodyState = property.Value;
                        world.ParsingErrors.Report("Unknown HF Body State: " + _unknownBodyState);
                        break;
                    }
                    break;

                case "site_id": Site = world.GetSite(Convert.ToInt32(property.Value)); break;

                case "structure_id":
                case "building_id":
                    StructureId = Convert.ToInt32(property.Value);
                    break;

                case "subregion_id": Region = world.GetRegion(Convert.ToInt32(property.Value)); break;

                case "feature_layer_id": UndergroundRegion = world.GetUndergroundRegion(Convert.ToInt32(property.Value)); break;

                case "coords": Coordinates = Formatting.ConvertToLocation(property.Value); break;
                }
            }
            if (Site != null)
            {
                Structure = Site.Structures.FirstOrDefault(structure => structure.Id == StructureId);
            }
            Structure.AddEvent(this);
            HistoricalFigure.AddEvent(this);
            Site.AddEvent(this);
            Region.AddEvent(this);
            UndergroundRegion.AddEvent(this);
        }
示例#17
0
        public HfRecruitedUnitTypeForEntity(List <Property> properties, World world)
            : base(properties, world)
        {
            foreach (Property property in properties)
            {
                switch (property.Name)
                {
                case "hfid": HistoricalFigure = world.GetHistoricalFigure(Convert.ToInt32(property.Value)); break;

                case "entity_id": Entity = world.GetEntity(Convert.ToInt32(property.Value)); break;

                case "unit_type":
                    switch (property.Value)
                    {
                    case "monk":
                        UnitType = UnitType.Monk;
                        break;

                    default:
                        property.Known = false;
                        break;
                    }
                    break;

                case "site_id": Site = world.GetSite(Convert.ToInt32(property.Value)); break;

                case "subregion_id": Region = world.GetRegion(Convert.ToInt32(property.Value)); break;

                case "feature_layer_id": UndergroundRegion = world.GetUndergroundRegion(Convert.ToInt32(property.Value)); break;
                }
            }
            HistoricalFigure.AddEvent(this);
            Site.AddEvent(this);
            Region.AddEvent(this);
            UndergroundRegion.AddEvent(this);
        }
示例#18
0
        public HfWounded(List <Property> properties, World world)
            : base(properties, world)
        {
            foreach (Property property in properties)
            {
                switch (property.Name)
                {
                case "woundee_hfid": Woundee = world.GetHistoricalFigure(Convert.ToInt32(property.Value)); break;

                case "wounder_hfid": Wounder = world.GetHistoricalFigure(Convert.ToInt32(property.Value)); break;

                case "site_id": Site = world.GetSite(Convert.ToInt32(property.Value)); break;

                case "subregion_id": Region = world.GetRegion(Convert.ToInt32(property.Value)); break;

                case "feature_layer_id": UndergroundRegion = world.GetUndergroundRegion(Convert.ToInt32(property.Value)); break;

                case "woundee": if (Woundee == null)
                    {
                        Woundee = world.GetHistoricalFigure(Convert.ToInt32(property.Value));
                    }
                    else
                    {
                        property.Known = true;
                    } break;

                case "wounder": if (Wounder == null)
                    {
                        Wounder = world.GetHistoricalFigure(Convert.ToInt32(property.Value));
                    }
                    else
                    {
                        property.Known = true;
                    } break;

                case "site": if (Site == null)
                    {
                        Site = world.GetSite(Convert.ToInt32(property.Value));
                    }
                    else
                    {
                        property.Known = true;
                    } break;

                case "woundee_race": WoundeeRace = Convert.ToInt32(property.Value); break;

                case "woundee_caste": WoundeeCaste = Convert.ToInt32(property.Value); break;

                case "body_part": BodyPart = Convert.ToInt32(property.Value); break;

                case "injury_type": InjuryType = Convert.ToInt32(property.Value); break;

                case "part_lost": PartLost = Convert.ToInt32(property.Value); break;

                case "was_torture":
                    property.Known = true;
                    WasTorture     = true;
                    break;
                }
            }

            Woundee.AddEvent(this);
            if (Woundee != Wounder)
            {
                Wounder.AddEvent(this);
            }
            Site.AddEvent(this);
            Region.AddEvent(this);
            UndergroundRegion.AddEvent(this);
        }
示例#19
0
        public SquadVsSquad(List <Property> properties, World world)
            : base(properties, world)
        {
            foreach (Property property in properties)
            {
                switch (property.Name)
                {
                case "a_hfid": AttackerHistoricalFigure = world.GetHistoricalFigure(Convert.ToInt32(property.Value)); break;

                case "d_hfid": DefenderHistoricalFigure = world.GetHistoricalFigure(Convert.ToInt32(property.Value)); break;

                case "a_squad_id": AttackerSquadId = Convert.ToInt32(property.Value); break;

                case "d_squad_id": DefenderSquadId = Convert.ToInt32(property.Value); break;

                case "d_race": DefenderRaceId = Convert.ToInt32(property.Value); break;

                case "d_interaction":
                    // TODO last checked in version 0.44.10
                    property.Known = true;
                    break;

                case "d_effect":
                    // TODO last checked in version 0.44.10
                    property.Known = true;
                    break;

                case "d_number": DefenderNumber = Convert.ToInt32(property.Value); break;

                case "d_slain": DefenderSlain = Convert.ToInt32(property.Value); break;

                case "site_id": Site = world.GetSite(Convert.ToInt32(property.Value)); break;

                case "structure_id": StructureId = Convert.ToInt32(property.Value); break;

                case "subregion_id": Region = world.GetRegion(Convert.ToInt32(property.Value)); break;

                case "feature_layer_id": UndergroundRegion = world.GetUndergroundRegion(Convert.ToInt32(property.Value)); break;

                case "a_leader_hfid": AttackerLeader = world.GetHistoricalFigure(Convert.ToInt32(property.Value)); break;

                case "d_leader_hfid": DefenderLeader = world.GetHistoricalFigure(Convert.ToInt32(property.Value)); break;

                case "a_leadership_roll": AttackerLeadershipRoll = Convert.ToInt32(property.Value); break;

                case "d_leadership_roll": DefenderLeadershipRoll = Convert.ToInt32(property.Value); break;
                }
            }
            if (Site != null)
            {
                Structure = Site.Structures.FirstOrDefault(structure => structure.Id == StructureId);
            }
            AttackerHistoricalFigure.AddEvent(this);
            DefenderHistoricalFigure.AddEvent(this);
            Site.AddEvent(this);
            Structure.AddEvent(this);
            Region.AddEvent(this);
            UndergroundRegion.AddEvent(this);
            if (AttackerLeader != AttackerHistoricalFigure)
            {
                AttackerLeader.AddEvent(this);
            }

            if (DefenderLeader != DefenderHistoricalFigure)
            {
                DefenderLeader.AddEvent(this);
            }
        }
示例#20
0
        public BodyAbused(List <Property> properties, World world)
            : base(properties, world)
        {
            Bodies = new List <HistoricalFigure>();
            int structureId = -1;

            foreach (Property property in properties)
            {
                switch (property.Name)
                {
                case "site_id": Site = world.GetSite(Convert.ToInt32(property.Value)); break;

                case "coords": Coordinates = Formatting.ConvertToLocation(property.Value); break;

                case "subregion_id": Region = world.GetRegion(Convert.ToInt32(property.Value)); break;

                case "feature_layer_id": UndergroundRegion = world.GetUndergroundRegion(Convert.ToInt32(property.Value)); break;

                case "site": if (Site == null)
                    {
                        Site = world.GetSite(Convert.ToInt32(property.Value));
                    }
                    else
                    {
                        property.Known = true;
                    } break;

                case "civ": Abuser = world.GetEntity(Convert.ToInt32(property.Value)); break;

                case "victim_entity": Victim = world.GetEntity(Convert.ToInt32(property.Value)); break;

                case "bodies": Bodies.Add(world.GetHistoricalFigure(Convert.ToInt32(property.Value))); break;

                case "histfig": HistoricalFigure = world.GetHistoricalFigure(Convert.ToInt32(property.Value)); break;

                case "props_item_type":
                case "item_type":
                    ItemType = property.Value;
                    break;

                case "props_item_subtype":
                case "item_subtype":
                    ItemSubType = property.Value;
                    break;

                case "props_item_mat":
                case "item_mat":
                    Material = property.Value;
                    break;

                case "abuse_type":
                    switch (property.Value)
                    {
                    case "0":
                    case "impaled":
                        AbuseType = AbuseType.Impaled;
                        break;

                    case "1":
                    case "piled":
                        AbuseType = AbuseType.Piled;
                        break;

                    case "2":
                    case "flayed":
                        AbuseType = AbuseType.Flayed;
                        break;

                    case "3":
                    case "hung":
                        AbuseType = AbuseType.Hung;
                        break;

                    case "4":
                    case "mutilated":
                        AbuseType = AbuseType.Mutilated;
                        break;

                    case "5":
                    case "animated":
                        AbuseType = AbuseType.Animated;
                        break;

                    default:
                        property.Known = false;
                        break;
                    }
                    break;

                case "pile_type":
                    switch (property.Value)
                    {
                    case "gruesomesculpture":
                        PileType = PileType.GruesomeSculpture;
                        break;

                    case "grislymound":
                        PileType = PileType.GrislyMound;
                        break;

                    case "grotesquepillar":
                        PileType = PileType.GrotesquePillar;
                        break;

                    default:
                        property.Known = false;
                        break;
                    }
                    break;

                case "props_pile_type": PileTypeId = Convert.ToInt32(property.Value); break;

                case "props_item_mat_type": MaterialTypeId = Convert.ToInt32(property.Value); break;

                case "props_item_mat_index": MaterialIndex = Convert.ToInt32(property.Value); break;

                case "tree":
                    property.Known = true;     // TODO no idea what this is
                    break;

                case "structure":
                    structureId = Convert.ToInt32(property.Value);
                    break;

                case "interaction":
                    property.Known = true;     // TODO no idea what this is
                    break;
                }
            }

            Site.AddEvent(this);
            Region.AddEvent(this);
            UndergroundRegion.AddEvent(this);
            Bodies.ForEach(body =>
            {
                if (body != HistoricalFigure.Unknown)
                {
                    body.AddEvent(this);
                    if (AbuseType == AbuseType.Animated)
                    {
                        body.CreatureTypes.Add(new HistoricalFigure.CreatureType("animated corpse", this));
                    }
                }
            });
            HistoricalFigure.AddEvent(this);
            Abuser.AddEvent(this);
            Victim.AddEvent(this);
            if (structureId != -1 && Site != null)
            {
                Structure = Site.Structures.FirstOrDefault(structure => structure.Id == structureId);
                Structure.AddEvent(this);
            }
        }
示例#21
0
        public HfDied(List <Property> properties, World world)
            : base(properties, world)
        {
            ItemId              = -1;
            ShooterItemId       = -1;
            SlayerItemId        = -1;
            SlayerShooterItemId = -1;
            SlayerRace          = "UNKNOWN";
            SlayerCaste         = "UNKNOWN";
            Cause = DeathCause.Unknown;
            foreach (Property property in properties)
            {
                switch (property.Name)
                {
                case "slayer_item_id": SlayerItemId = Convert.ToInt32(property.Value); break;

                case "slayer_shooter_item_id": SlayerShooterItemId = Convert.ToInt32(property.Value); break;

                case "cause":
                    switch (property.Value)
                    {
                    case "hunger": Cause = DeathCause.Starved; break;

                    case "struck": Cause = DeathCause.Struck; break;

                    case "murdered": Cause = DeathCause.Murdered; break;

                    case "old age": Cause = DeathCause.OldAge; break;

                    case "dragonfire": Cause = DeathCause.DragonsFire; break;

                    case "shot": Cause = DeathCause.Shot; break;

                    case "fire": Cause = DeathCause.Burned; break;

                    case "thirst": Cause = DeathCause.Thirst; break;

                    case "air": Cause = DeathCause.Suffocated; break;

                    case "blood": Cause = DeathCause.Bled; break;

                    case "cold": Cause = DeathCause.Cold; break;

                    case "crushed bridge": Cause = DeathCause.CrushedByABridge; break;

                    case "drown": Cause = DeathCause.Drowned; break;

                    case "infection": Cause = DeathCause.Infection; break;

                    case "obstacle": Cause = DeathCause.CollidedWithAnObstacle; break;

                    case "put to rest": Cause = DeathCause.PutToRest; break;

                    case "quitdead": Cause = DeathCause.StarvedQuit; break;

                    case "trap": Cause = DeathCause.Trap; break;

                    case "crushed": Cause = DeathCause.CaveIn; break;

                    case "cage blasted": Cause = DeathCause.InACage; break;

                    case "freezing water": Cause = DeathCause.FrozenInWater; break;

                    case "exec generic": Cause = DeathCause.ExecutedGeneric; break;

                    case "exec fed to beasts": Cause = DeathCause.ExecutedFedToBeasts; break;

                    case "exec burned alive": Cause = DeathCause.ExecutedBurnedAlive; break;

                    case "exec crucified": Cause = DeathCause.ExecutedCrucified; break;

                    case "exec drowned": Cause = DeathCause.ExecutedDrowned; break;

                    case "exec hacked to pieces": Cause = DeathCause.ExecutedHackedToPieces; break;

                    case "exec buried alive": Cause = DeathCause.ExecutedBuriedAlive; break;

                    case "exec beheaded": Cause = DeathCause.ExecutedBeheaded; break;

                    case "blood drained": Cause = DeathCause.DrainedBlood; break;

                    case "collapsed": Cause = DeathCause.Collapsed; break;

                    case "scared to death": Cause = DeathCause.ScaredToDeath; break;

                    case "scuttled": Cause = DeathCause.Scuttled; break;

                    case "flying object": Cause = DeathCause.FlyingObject; break;

                    case "slaughtered": Cause = DeathCause.Slaughtered; break;

                    case "melt": Cause = DeathCause.Melted; break;

                    case "spikes": Cause = DeathCause.Spikes; break;

                    case "heat": Cause = DeathCause.Heat; break;

                    case "vanish": Cause = DeathCause.Vanish; break;

                    case "cooling magma": Cause = DeathCause.CoolingMagma; break;

                    case "vehicle": Cause = DeathCause.Vehicle; break;

                    case "suicide drowned": Cause = DeathCause.SuicideDrowned; break;

                    case "suicide leaping": Cause = DeathCause.SuicideLeaping; break;

                    case "chasm": Cause = DeathCause.Chasm; break;

                    default: Cause = DeathCause.Unknown; UnknownCause = property.Value; world.ParsingErrors.Report("|==> Events 'hf died'/ \nUnknown Death Cause: " + UnknownCause); break;
                    }
                    break;

                case "slayer_race": SlayerRace = Formatting.FormatRace(property.Value); break;

                case "slayer_caste": SlayerCaste = property.Value; break;

                case "hfid": HistoricalFigure = world.GetHistoricalFigure(Convert.ToInt32(property.Value)); break;

                case "slayer_hfid": Slayer = world.GetHistoricalFigure(Convert.ToInt32(property.Value)); break;

                case "site_id": Site = world.GetSite(Convert.ToInt32(property.Value)); break;

                case "subregion_id": Region = world.GetRegion(Convert.ToInt32(property.Value)); break;

                case "feature_layer_id": UndergroundRegion = world.GetUndergroundRegion(Convert.ToInt32(property.Value)); break;

                case "victim_hf": if (HistoricalFigure == null)
                    {
                        HistoricalFigure = world.GetHistoricalFigure(Convert.ToInt32(property.Value));
                    }
                    else
                    {
                        property.Known = true;
                    } break;

                case "slayer_hf": if (Slayer == null)
                    {
                        Slayer = world.GetHistoricalFigure(Convert.ToInt32(property.Value));
                    }
                    else
                    {
                        property.Known = true;
                    } break;

                case "site": if (Site == null)
                    {
                        Site = world.GetSite(Convert.ToInt32(property.Value));
                    }
                    else
                    {
                        property.Known = true;
                    } break;

                case "death_cause": property.Known = true; break;

                case "item": ItemId = Convert.ToInt32(property.Value); break;

                case "item_type": ItemType = property.Value; break;

                case "item_subtype": ItemSubType = property.Value; break;

                case "mat": ItemMaterial = property.Value; break;

                case "artifact_id": Artifact = world.GetArtifact(Convert.ToInt32(property.Value)); break;

                case "shooter_item": ShooterItemId = Convert.ToInt32(property.Value); break;

                case "shooter_item_type": ShooterItemType = property.Value; break;

                case "shooter_item_subtype": ShooterItemSubType = property.Value; break;

                case "shooter_mat": ShooterItemMaterial = property.Value; break;

                case "shooter_artifact_id": ShooterArtifact = world.GetArtifact(Convert.ToInt32(property.Value)); break;
                }
            }

            HistoricalFigure.AddEvent(this);
            if (HistoricalFigure.DeathCause == DeathCause.None)
            {
                HistoricalFigure.DeathCause = Cause;
            }

            if (Slayer != null)
            {
                if (HistoricalFigure != Slayer)
                {
                    Slayer.AddEvent(this);
                }
                Slayer.NotableKills.Add(this);
            }
            Site.AddEvent(this);
            Region.AddEvent(this);
            UndergroundRegion.AddEvent(this);
            Artifact.AddEvent(this);
        }
示例#22
0
        public ChangeHfState(List <Property> properties, World world)
            : base(properties, world)
        {
            foreach (Property property in properties)
            {
                switch (property.Name)
                {
                case "state":
                    switch (property.Value)
                    {
                    case "settled": State = HfState.Settled; break;

                    case "wandering": State = HfState.Wandering; break;

                    case "scouting": State = HfState.Scouting; break;

                    case "snatcher": State = HfState.Snatcher; break;

                    case "refugee": State = HfState.Refugee; break;

                    case "thief": State = HfState.Thief; break;

                    case "hunting": State = HfState.Hunting; break;

                    case "visiting": State = HfState.Visiting; break;

                    default: State = HfState.Unknown; property.Known = false; break;
                    }
                    break;

                case "substate": SubState = Convert.ToInt32(property.Value); break;

                case "coords": Coordinates = Formatting.ConvertToLocation(property.Value); break;

                case "hfid": HistoricalFigure = world.GetHistoricalFigure(Convert.ToInt32(property.Value)); break;

                case "site_id": Site = world.GetSite(Convert.ToInt32(property.Value)); break;

                case "subregion_id": Region = world.GetRegion(Convert.ToInt32(property.Value)); break;

                case "feature_layer_id": UndergroundRegion = world.GetUndergroundRegion(Convert.ToInt32(property.Value)); break;

                case "site": Site = world.GetSite(Convert.ToInt32(property.Value)); break;

                case "mood":
                    switch (property.Value)
                    {
                    case "macabre":
                        Mood = Mood.Macabre;
                        break;

                    case "secretive":
                        Mood = Mood.Secretive;
                        break;

                    case "insane":
                        Mood = Mood.Insane;
                        break;

                    case "possessed":
                        Mood = Mood.Possessed;
                        break;

                    case "berserk":
                        Mood = Mood.Berserk;
                        break;

                    case "fey":
                        Mood = Mood.Fey;
                        break;

                    case "melancholy":
                        Mood = Mood.Melancholy;
                        break;

                    case "fell":
                        Mood = Mood.Fell;
                        break;

                    case "catatonic":
                        Mood = Mood.Catatonic;
                        break;

                    default:
                        Mood           = Mood.Unknown;
                        property.Known = false;
                        break;
                    }
                    break;

                case "reason":
                    switch (property.Value)
                    {
                    case "failed mood":
                        Reason = ChangeHfStateReason.FailedMood;
                        break;

                    case "gather information":
                        Reason = ChangeHfStateReason.GatherInformation;
                        break;

                    case "be with master":
                        Reason = ChangeHfStateReason.BeWithMaster;
                        break;

                    case "flight":
                        Reason = ChangeHfStateReason.Flight;
                        break;

                    case "scholarship":
                        Reason = ChangeHfStateReason.Scholarship;
                        break;

                    case "on a pilgrimage":
                        Reason = ChangeHfStateReason.Pilgrimage;
                        break;

                    case "lack of sleep":
                        Reason = ChangeHfStateReason.LackOfSleep;
                        break;

                    default:
                        if (property.Value != "-1")
                        {
                            property.Known = false;
                        }
                        break;
                    }
                    break;
                }
            }
            if (HistoricalFigure != null)
            {
                HistoricalFigure.AddEvent(this);
                HistoricalFigure.States.Add(new HistoricalFigure.State(State, Year));
                HistoricalFigure.State lastState = HistoricalFigure.States.LastOrDefault();
                if (lastState != null)
                {
                    lastState.EndYear = Year;
                }

                HistoricalFigure.CurrentState = State;
            }
            Site.AddEvent(this);
            Region.AddEvent(this);
            UndergroundRegion.AddEvent(this);
        }
        public HfDoesInteraction(List <Property> properties, World world)
            : base(properties, world)
        {
            foreach (Property property in properties)
            {
                switch (property.Name)
                {
                case "doer_hfid": Doer = world.GetHistoricalFigure(Convert.ToInt32(property.Value)); break;

                case "target_hfid": Target = world.GetHistoricalFigure(Convert.ToInt32(property.Value)); break;

                case "interaction": Interaction = property.Value; break;

                case "doer": if (Doer == null)
                    {
                        Doer = world.GetHistoricalFigure(Convert.ToInt32(property.Value));
                    }
                    else
                    {
                        property.Known = true;
                    } break;

                case "target": if (Target == null)
                    {
                        Target = world.GetHistoricalFigure(Convert.ToInt32(property.Value));
                    }
                    else
                    {
                        property.Known = true;
                    } break;

                case "interaction_action": InteractionAction = property.Value.Replace("[IS_HIST_STRING_1:", "").Replace("[IS_HIST_STRING_2:", "").Replace("]", ""); break;

                case "interaction_string": InteractionString = property.Value.Replace("[IS_HIST_STRING_2:", "").Replace("[I_TARGET:A:CREATURE", "").Replace("]", ""); break;

                case "source": Source = property.Value; break;

                case "region": Region = world.GetRegion(Convert.ToInt32(property.Value)); break;

                case "site": Site = world.GetSite(Convert.ToInt32(property.Value)); break;
                }
            }

            if (Target != null)
            {
                string creatureType = "";
                if (!string.IsNullOrWhiteSpace(Interaction))
                {
                    if (!Target.ActiveInteractions.Contains(Interaction))
                    {
                        Target.ActiveInteractions.Add(Interaction);
                    }
                    if (Doer != null)
                    {
                        Doer.LineageCurseChilds.Add(Target);
                        Target.LineageCurseParent = Doer;
                    }

                    if (Interaction.Contains("VAMPIRE"))
                    {
                        creatureType = "vampire";
                    }
                    if (Interaction.Contains("WEREBEAST"))
                    {
                        creatureType = "werebeast";
                    }
                    if (Interaction.Contains("SECRET"))
                    {
                        creatureType = "necromancer";
                    }
                    if (Interaction.Contains("ANIMATE"))
                    {
                        creatureType = "animated corpse";
                    }
                    if (Interaction.Contains("UNDEAD_RES"))
                    {
                        creatureType = "resurrected undead";
                    }
                }
                if (!string.IsNullOrWhiteSpace(InteractionAction) && InteractionAction.Contains(", passing on the "))
                {
                    Target.Interaction = InteractionAction.Replace(", passing on the ", "");
                    if (!string.IsNullOrEmpty(Target.Interaction))
                    {
                        creatureType = "were" + Target.Interaction.Replace(" monster curse", " ");
                    }
                }
                else if (!string.IsNullOrWhiteSpace(InteractionString) && InteractionString.Contains(" to assume the form of a "))
                {
                    Target.Interaction = InteractionString.Replace(" to assume the form of a ", "").Replace("-like", "").Replace(" every full moon", " curse");
                    if (!string.IsNullOrEmpty(Target.Interaction))
                    {
                        creatureType = "were" + Target.Interaction.Replace(" monster curse", " ");
                    }
                }

                if (!string.IsNullOrEmpty(creatureType))
                {
                    Target.CreatureTypes.Add(new HistoricalFigure.CreatureType(creatureType, this));
                }
            }
            Doer.AddEvent(this);
            Target.AddEvent(this);
            Region.AddEvent(this);
            Site.AddEvent(this);
        }
        // Similar to hfs formed intrigue relationship
        public FailedIntrigueCorruption(List <Property> properties, World world) : base(properties, world)
        {
            foreach (Property property in properties)
            {
                switch (property.Name)
                {
                case "corruptor_hfid": CorruptorHf = world.GetHistoricalFigure(Convert.ToInt32(property.Value)); break;

                case "target_hfid": TargetHf = world.GetHistoricalFigure(Convert.ToInt32(property.Value)); break;

                case "site_id": Site = world.GetSite(Convert.ToInt32(property.Value)); break;

                case "subregion_id": Region = world.GetRegion(Convert.ToInt32(property.Value)); break;

                case "feature_layer_id": UndergroundRegion = world.GetUndergroundRegion(Convert.ToInt32(property.Value)); break;

                case "failed_judgment_test": property.Known = true; FailedJudgmentTest = true; break;

                case "action":
                    switch (property.Value.Replace("_", " "))
                    {
                    case "bribe official": Action = IntrigueAction.BribeOfficial; break;

                    case "induce to embezzle": Action = IntrigueAction.InduceToEmbezzle; break;

                    case "corrupt in place": Action = IntrigueAction.CorruptInPlace; break;

                    case "bring into network": Action = IntrigueAction.BringIntoNetwork; break;

                    default:
                        property.Known = false;
                        break;
                    }
                    break;

                case "method":
                    switch (property.Value.Replace("_", " "))
                    {
                    case "intimidate": Method = IntrigueMethod.Intimidate; break;

                    case "flatter": Method = IntrigueMethod.Flatter; break;

                    case "bribe": Method = IntrigueMethod.Bribe; break;

                    case "precedence": Method = IntrigueMethod.Precedence; break;

                    case "offer immortality": Method = IntrigueMethod.OfferImmortality; break;

                    case "religious sympathy": Method = IntrigueMethod.ReligiousSympathy; break;

                    case "blackmail over embezzlement": Method = IntrigueMethod.BlackmailOverEmbezzlement; break;

                    case "revenge on grudge": Method = IntrigueMethod.RevengeOnGrudge; break;

                    default:
                        property.Known = false;
                        break;
                    }
                    break;

                case "top_facet": TopFacet = property.Value; break;

                case "top_facet_rating": TopFacetRating = Convert.ToInt32(property.Value); break;

                case "top_facet_modifier": TopFacetModifier = Convert.ToInt32(property.Value); break;

                case "top_value": TopValue = property.Value; break;

                case "top_value_rating": TopValueRating = Convert.ToInt32(property.Value); break;

                case "top_value_modifier": TopValueModifier = Convert.ToInt32(property.Value); break;

                case "top_relationship_factor": TopRelationshipFactor = property.Value; break;

                case "top_relationship_rating": TopRelationshipRating = Convert.ToInt32(property.Value); break;

                case "top_relationship_modifier": TopRelationshipModifier = Convert.ToInt32(property.Value); break;

                case "ally_defense_bonus": AllyDefenseBonus = Convert.ToInt32(property.Value); break;

                case "coconspirator_bonus": CoConspiratorBonus = Convert.ToInt32(property.Value); break;

                case "lure_hfid": LureHf = world.GetHistoricalFigure(Convert.ToInt32(property.Value)); break;

                case "corruptor_identity": CorruptorIdentityId = Convert.ToInt32(property.Value); break;

                case "target_identity": TargetIdentityId = Convert.ToInt32(property.Value); break;

                case "relevant_entity_id": RelevantEntity = world.GetEntity(Convert.ToInt32(property.Value)); break;

                case "relevant_position_profile_id": RelevantPositionProfileId = Convert.ToInt32(property.Value); break;

                case "relevant_id_for_method": RelevantIdForMethod = Convert.ToInt32(property.Value); break;
                }
            }

            CorruptorHf.AddEvent(this);
            TargetHf.AddEvent(this);
            Site.AddEvent(this);
            Region.AddEvent(this);
            UndergroundRegion.AddEvent(this);
            LureHf.AddEvent(this);
        }
示例#25
0
        public TacticalSituation(List <Property> properties, World world)
            : base(properties, world)
        {
            foreach (Property property in properties)
            {
                switch (property.Name)
                {
                case "a_tactician_hfid": AttackerTactician = world.GetHistoricalFigure(Convert.ToInt32(property.Value)); break;

                case "d_tactician_hfid": DefenderTactician = world.GetHistoricalFigure(Convert.ToInt32(property.Value)); break;

                case "a_tactics_roll": AttackerTacticsRoll = Convert.ToInt32(property.Value); break;

                case "d_tactics_roll": DefenderTacticsRoll = Convert.ToInt32(property.Value); break;

                case "situation":
                    switch (property.Value)
                    {
                    case "neither favored":
                        Situation = TacticalSituationType.NeitherFavored;
                        break;

                    case "a slightly favored":
                        Situation = TacticalSituationType.AttackersSlightlyFavored;
                        break;

                    case "d slightly favored":
                        Situation = TacticalSituationType.DefendersSlightlyFavored;
                        break;

                    case "a strongly favored":
                        Situation = TacticalSituationType.AttackersStronglyFavored;
                        break;

                    case "d strongly favored":
                        Situation = TacticalSituationType.DefendersStronglyFavored;
                        break;

                    default:
                        property.Known = false;
                        break;
                    }
                    break;

                case "site_id": Site = world.GetSite(Convert.ToInt32(property.Value)); break;

                case "structure_id": StructureId = Convert.ToInt32(property.Value); break;

                case "subregion_id": Region = world.GetRegion(Convert.ToInt32(property.Value)); break;

                case "feature_layer_id": UndergroundRegion = world.GetUndergroundRegion(Convert.ToInt32(property.Value)); break;

                case "start":
                    // TODO last checked in version 0.44.10
                    property.Known = true;
                    break;
                }
            }
            if (Site != null)
            {
                Structure = Site.Structures.FirstOrDefault(structure => structure.Id == StructureId);
            }
            AttackerTactician.AddEvent(this);
            DefenderTactician.AddEvent(this);
            Site.AddEvent(this);
            Structure.AddEvent(this);
            Region.AddEvent(this);
            UndergroundRegion.AddEvent(this);
        }
示例#26
0
        public HfDoesInteraction(List <Property> properties, World world)
            : base(properties, world)
        {
            foreach (Property property in properties)
            {
                switch (property.Name)
                {
                case "doer_hfid": Doer = world.GetHistoricalFigure(Convert.ToInt32(property.Value)); break;

                case "target_hfid": Target = world.GetHistoricalFigure(Convert.ToInt32(property.Value)); break;

                case "interaction": Interaction = property.Value; break;

                case "doer": if (Doer == null)
                    {
                        Doer = world.GetHistoricalFigure(Convert.ToInt32(property.Value));
                    }
                    else
                    {
                        property.Known = true;
                    } break;

                case "target": if (Target == null)
                    {
                        Target = world.GetHistoricalFigure(Convert.ToInt32(property.Value));
                    }
                    else
                    {
                        property.Known = true;
                    } break;

                case "interaction_action": InteractionAction = property.Value.Replace("[IS_HIST_STRING_1:", "").Replace("[IS_HIST_STRING_2:", "").Replace("]", ""); break;

                case "interaction_string": InteractionString = property.Value.Replace("[IS_HIST_STRING_2:", "").Replace("[I_TARGET:A:CREATURE", "").Replace("]", ""); break;

                case "source": Source = property.Value; break;

                case "region": Region = world.GetRegion(Convert.ToInt32(property.Value)); break;

                case "site": Site = world.GetSite(Convert.ToInt32(property.Value)); break;
                }
            }

            if (Target != null && !string.IsNullOrWhiteSpace(Interaction))
            {
                if (!Target.ActiveInteractions.Contains(Interaction))
                {
                    Target.ActiveInteractions.Add(Interaction);
                }
                if (Doer != null)
                {
                    Doer.LineageCurseChilds.Add(Target);
                    Target.LineageCurseParent = Doer;
                }
            }
            if (Target != null && !string.IsNullOrWhiteSpace(InteractionAction))
            {
                if (InteractionAction.Contains(", passing on the "))
                {
                    Target.Interaction = InteractionAction.Replace(", passing on the ", "");
                }
                else if (InteractionString.Contains(" to assume the form of a "))
                {
                    Target.Interaction = InteractionString.Replace(" to assume the form of a ", "").Replace("-like", "").Replace(" every full moon", " curse");
                }
            }
            Doer.AddEvent(this);
            Target.AddEvent(this);
            Region.AddEvent(this);
            Site.AddEvent(this);
        }
示例#27
0
        public BodyAbused(List <Property> properties, World world)
            : base(properties, world)
        {
            Bodies = new List <HistoricalFigure>();
            foreach (Property property in properties)
            {
                switch (property.Name)
                {
                case "site_id": Site = world.GetSite(Convert.ToInt32(property.Value)); break;

                case "coords": Coordinates = Formatting.ConvertToLocation(property.Value); break;

                case "subregion_id": Region = world.GetRegion(Convert.ToInt32(property.Value)); break;

                case "feature_layer_id": UndergroundRegion = world.GetUndergroundRegion(Convert.ToInt32(property.Value)); break;

                case "site": if (Site == null)
                    {
                        Site = world.GetSite(Convert.ToInt32(property.Value));
                    }
                    else
                    {
                        property.Known = true;
                    } break;

                case "civ": Abuser = world.GetEntity(Convert.ToInt32(property.Value)); break;

                case "bodies": Bodies.Add(world.GetHistoricalFigure(Convert.ToInt32(property.Value))); break;

                case "histfig": HistoricalFigure = world.GetHistoricalFigure(Convert.ToInt32(property.Value)); break;

                case "props_item_type": ItemType = property.Value; break;

                case "props_item_subtype": ItemSubType = property.Value; break;

                case "props_item_mat": Material = property.Value; break;

                case "abuse_type":
                    switch (property.Value)
                    {
                    case "0":
                        AbuseType = AbuseType.Impaled;
                        break;

                    case "1":
                        AbuseType = AbuseType.Piled;
                        break;

                    case "2":
                        AbuseType = AbuseType.Flayed;
                        break;

                    case "3":
                        AbuseType = AbuseType.Hung;
                        break;

                    case "4":
                        AbuseType = AbuseType.Mutilated;
                        break;

                    case "5":
                        AbuseType = AbuseType.Animated;
                        break;

                    default:
                        property.Known = false;
                        break;
                    }
                    break;

                case "props_pile_type": PileTypeId = Convert.ToInt32(property.Value); break;

                case "props_item_mat_type": MaterialTypeId = Convert.ToInt32(property.Value); break;

                case "props_item_mat_index": MaterialIndex = Convert.ToInt32(property.Value); break;
                }
            }

            Site.AddEvent(this);
            Region.AddEvent(this);
            UndergroundRegion.AddEvent(this);
            Bodies.ForEach(body =>
            {
                if (body != HistoricalFigure.Unknown)
                {
                    body.AddEvent(this);
                    if (AbuseType == AbuseType.Animated)
                    {
                        body.CreatureTypes.Add(new HistoricalFigure.CreatureType("animated corpse", this));
                    }
                }
            });
            HistoricalFigure.AddEvent(this);
            Abuser.AddEvent(this);
        }
        public WrittenContentComposed(List <Property> properties, World world) : base(properties, world)
        {
            foreach (Property property in properties)
            {
                switch (property.Name)
                {
                case "civ_id":
                    Civ = world.GetEntity(Convert.ToInt32(property.Value));
                    break;

                case "site_id":
                    Site = world.GetSite(Convert.ToInt32(property.Value));
                    break;

                case "hist_figure_id":
                    HistoricalFigure = world.GetHistoricalFigure(Convert.ToInt32(property.Value));
                    break;

                case "wc_id":
                    WrittenContentId = property.Value;
                    break;

                case "reason":
                    Reason = property.Value;
                    break;

                case "reason_id":
                    ReasonId = Convert.ToInt32(property.Value);
                    break;

                case "circumstance":
                    Circumstance = property.Value;
                    break;

                case "circumstance_id":
                    CircumstanceId = Convert.ToInt32(property.Value);
                    break;

                case "subregion_id":
                    Region = world.GetRegion(Convert.ToInt32(property.Value));
                    break;
                }
            }

            Civ.AddEvent(this);
            Site.AddEvent(this);
            Region.AddEvent(this);
            HistoricalFigure.AddEvent(this);
            if (Reason == "glorify hf")
            {
                GlorifiedHf = world.GetHistoricalFigure(ReasonId);
                GlorifiedHf.AddEvent(this);
            }
            if (Circumstance == "pray to hf" || Circumstance == "dream about hf")
            {
                CircumstanceHf = world.GetHistoricalFigure(CircumstanceId);
                if (GlorifiedHf != null && GlorifiedHf != CircumstanceHf)
                {
                    CircumstanceHf.AddEvent(this);
                }
            }
        }