diff --git a/backend/model/events.go b/backend/model/events.go
index a95d949..b1e44d8 100644
--- a/backend/model/events.go
+++ b/backend/model/events.go
@@ -142,10 +142,7 @@ func (x *HistoricalEventArtifactClaimFormed) Html() string {
}
func (x *HistoricalEventArtifactCopied) Html() string {
- s := "aquired a copy of"
- if x.FromOriginal {
- s = "made a copy of the original"
- }
+ s := util.If(x.FromOriginal, "made a copy of the original", "aquired a copy of")
return fmt.Sprintf("%s %s %s from %s%s of %s, keeping it within %s%s",
entity(x.DestEntityId), s, artifact(x.ArtifactId), structure(x.SourceSiteId, x.SourceStructureId), site(x.SourceSiteId, " in "),
entity(x.SourceEntityId), structure(x.DestSiteId, x.DestStructureId), site(x.DestSiteId, " in "))
@@ -284,10 +281,7 @@ func (x *HistoricalEventAssumeIdentity) Html() string {
func (x *HistoricalEventAttackedSite) Html() string {
atk := entity(x.AttackerCivId)
- def := entity(x.DefenderCivId)
- if x.SiteCivId != x.DefenderCivId {
- def = entity(x.SiteCivId) + " of " + def
- }
+ def := siteCiv(x.SiteCivId, x.DefenderCivId)
generals := ""
if x.AttackerGeneralHfid != -1 {
generals += ". " + util.Capitalize(hf(x.AttackerGeneralHfid)) + " led the attack"
@@ -397,9 +391,7 @@ func (x *HistoricalEventChangeHfState) Html() string {
switch x.Reason {
case HistoricalEventChangeHfStateReason_BeWithMaster:
r = " in order to be with the master"
- case HistoricalEventChangeHfStateReason_ConvictionExile:
- r = " after being exiled following a criminal conviction"
- case HistoricalEventChangeHfStateReason_ExiledAfterConviction:
+ case HistoricalEventChangeHfStateReason_ConvictionExile, HistoricalEventChangeHfStateReason_ExiledAfterConviction:
r = " after being exiled following a criminal conviction"
case HistoricalEventChangeHfStateReason_FailedMood:
r = " after failing to create an artifact"
@@ -442,7 +434,7 @@ func (x *HistoricalEventChangeHfState) Html() string {
}
}
- switch x.Mood { // todo catatonic
+ switch x.Mood { // TODO catatonic
case HistoricalEventChangeHfStateMood_Berserk:
return hf(x.Hfid) + " went berserk " + site(x.SiteId, "in") + r
case HistoricalEventChangeHfStateMood_Fell:
@@ -464,24 +456,90 @@ func (x *HistoricalEventChangeHfState) Html() string {
}
func (x *HistoricalEventChangedCreatureType) Html() string {
- return "UNKNWON HistoricalEventChangedCreatureType"
+ return hf(x.ChangerHfid) + " changed " + hf(x.ChangeeHfid) + " from " + articled(x.OldRace) + " to " + articled(x.NewRace)
}
-func (x *HistoricalEventCompetition) Html() string { return "UNKNWON HistoricalEventCompetition" }
+
+func (x *HistoricalEventCompetition) Html() string {
+ e := world.Entities[x.CivId]
+ o := e.Occasion[x.OccasionId]
+ s := o.Schedule[x.ScheduleId]
+ return entity(x.CivId) + " held a " + strcase.ToDelimited(s.Type.String(), ' ') + site(x.SiteId, " in") + " as part of the " + o.Name() +
+ ". Competing " + util.If(len(x.CompetitorHfid) > 1, "were ", "was ") + hfList(x.CompetitorHfid) + ". " +
+ util.Capitalize(hf(x.WinnerHfid)) + " was the victor"
+}
+
func (x *HistoricalEventCreateEntityPosition) Html() string {
- return "UNKNWON HistoricalEventCreateEntityPosition"
+ c := entity(x.Civ)
+ if x.SiteCiv != x.Civ {
+ c = entity(x.SiteCiv) + " of " + c
+ }
+ if x.Histfig != -1 {
+ c = hf(x.Histfig) + " of " + c
+ } else {
+ c = "members of " + c
+ }
+ switch x.Reason {
+ case HistoricalEventCreateEntityPositionReason_AsAMatterOfCourse:
+ return c + " created the position of " + x.Position + " as a matter of course"
+ case HistoricalEventCreateEntityPositionReason_Collaboration:
+ return c + " collaborated to create the position of " + x.Position
+ case HistoricalEventCreateEntityPositionReason_ForceOfArgument:
+ return c + " created the position of " + x.Position + " trough force of argument"
+ case HistoricalEventCreateEntityPositionReason_ThreatOfViolence:
+ return c + " compelled the creation of the position of " + x.Position + " with threats of violence"
+ case HistoricalEventCreateEntityPositionReason_WaveOfPopularSupport:
+ return c + " created the position of " + x.Position + ", pushed by a wave of popular support"
+ }
+ return c + " created the position of " + x.Position
}
-func (x *HistoricalEventCreatedSite) Html() string { return "UNKNWON HistoricalEventCreatedSite" }
-func (x *HistoricalEventCreatedStructure) Html() string {
- return "UNKNWON HistoricalEventCreatedStructure"
+
+func (x *HistoricalEventCreatedSite) Html() string {
+ f := util.If(x.ResidentCivId != -1, " for "+entity(x.ResidentCivId), "")
+ if x.BuilderHfid != -1 {
+ return hf(x.BuilderHfid) + " created " + site(x.SiteId, "") + f
+ }
+ return siteCiv(x.SiteCivId, x.CivId) + " founded " + site(x.SiteId, "") + f
+
}
+
+func (x *HistoricalEventCreatedStructure) Html() string { // TODO rebuild/rebuilt; Structure/StructureId
+ if x.BuilderHfid != -1 {
+ return hf(x.BuilderHfid) + " thrust a spire of slade up from the underworld, naming it " + structure(x.SiteId, x.StructureId) +
+ ", and established a gateway between worlds in " + site(x.SiteId, "")
+ }
+ return siteCiv(x.SiteCivId, x.CivId) + util.If(x.Rebuilt, " rebuild ", " constructed ") + structure(x.SiteId, x.StructureId) + site(x.SiteId, " in")
+}
+
func (x *HistoricalEventCreatedWorldConstruction) Html() string {
- return "UNKNWON HistoricalEventCreatedWorldConstruction"
+ return siteCiv(x.SiteCivId, x.CivId) + " finished the contruction of " + worldConstruction(x.Wcid) +
+ " connecting " + site(x.SiteId1, "") + " with " + site(x.SiteId2, "") +
+ util.If(x.MasterWcid != -1, " as part of "+worldConstruction(x.MasterWcid), "")
}
+
func (x *HistoricalEventCreatureDevoured) Html() string {
- return "UNKNWON HistoricalEventCreatureDevoured"
+ return hf(x.Eater) + " devoured " + util.If(x.Victim != -1, hf(x.Victim), articled(x.Race)) +
+ util.If(x.Entity != -1, " of "+entity(x.Entity), "") +
+ location(x.SiteId, " in", x.SubregionId, " in")
}
+
func (x *HistoricalEventDanceFormCreated) Html() string {
- return "UNKNWON HistoricalEventDanceFormCreated"
+ reason := ""
+ switch x.Reason {
+ case HistoricalEventDanceFormCreatedReason_GlorifyHf:
+ reason = " in order to glorify " + hf(x.ReasonId)
+ }
+ circumstance := ""
+ switch x.Circumstance {
+ case HistoricalEventDanceFormCreatedCircumstance_Dream:
+ circumstance = " after a dream"
+ case HistoricalEventDanceFormCreatedCircumstance_DreamAboutHf:
+ circumstance = " after a dreaming about " + hf(x.CircumstanceId)
+ case HistoricalEventDanceFormCreatedCircumstance_Nightmare:
+ circumstance = " after a nightmare"
+ case HistoricalEventDanceFormCreatedCircumstance_PrayToHf:
+ circumstance = " after praying to " + hf(x.CircumstanceId)
+ }
+ return danceForm(x.FormId) + " was created by " + hf(x.HistFigureId) + site(x.SiteId, " in") + reason + circumstance
}
func (x *HistoricalEventDestroyedSite) Html() string { return "UNKNWON HistoricalEventDestroyedSite" }
func (x *HistoricalEventDiplomatLost) Html() string { return "UNKNWON HistoricalEventDiplomatLost" }
diff --git a/backend/model/extensions.go b/backend/model/extensions.go
index 709ae46..0028336 100644
--- a/backend/model/extensions.go
+++ b/backend/model/extensions.go
@@ -85,6 +85,13 @@ func entity(id int) string {
return "UNKNOWN ENTITY"
}
+func siteCiv(siteCivId, civId int) string {
+ if siteCivId == civId {
+ return entity(civId)
+ }
+ return util.If(siteCivId != -1, entity(siteCivId), "") + util.If(civId != -1 && siteCivId != -1, " of ", "") + util.If(civId != -1, entity(civId), "")
+}
+
func hf(id int) string {
if x, ok := world.HistoricalFigures[id]; ok {
return fmt.Sprintf(`the %s %s`, x.Race, x.Id(), util.Title(x.Name()))
@@ -200,3 +207,10 @@ func poeticForm(id int) string {
}
return "UNKNOWN POETIC FORM"
}
+
+func worldConstruction(id int) string {
+ if x, ok := world.WorldConstructions[id]; ok {
+ return fmt.Sprintf(`%s`, id, util.Title(x.Name()))
+ }
+ return "UNKNOWN WORLD CONSTRUCTION"
+}