Keep defender-victim opinions as allies after a quarrel.
The clash penalty applied to every pair except defender looking at the victim, so the person being helped disliked the defender like a second enemy. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -122,6 +122,30 @@ public class AffinityTests
|
||||
Assert.True((OpinionStore.Get(pupil, teacher.Id) ?? 0) < before);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void RosterJson_RoundTripsCrushesAndPartner()
|
||||
{
|
||||
var catalog = Fixtures.RomanceCatalog();
|
||||
var left = Staff("s1", female: false, "Bisexual");
|
||||
var right = Staff("s2", female: true, "Bisexual");
|
||||
SetOpinion(left, right.Id, 80);
|
||||
SetOpinion(right, left.Id, 80);
|
||||
var roster = new Roster([left, right], [], []);
|
||||
Affinity.Refresh(catalog, roster, AsOf);
|
||||
Assert.Equal(right.Id, left.Bonds!.PartnerId);
|
||||
|
||||
var json = RosterJson.Serialize(RosterDocument.From(1, roster));
|
||||
Assert.Contains("\"partnerId\"", json, StringComparison.Ordinal);
|
||||
Assert.Contains("\"crushes\"", json, StringComparison.Ordinal);
|
||||
var loaded = RosterJson.Parse(json).ToRoster();
|
||||
var loadedLeft = loaded.People.First(person => person.Id.Equals(left.Id, StringComparison.Ordinal));
|
||||
var loadedRight = loaded.People.First(person => person.Id.Equals(right.Id, StringComparison.Ordinal));
|
||||
Assert.Equal(right.Id, loadedLeft.Bonds?.PartnerId);
|
||||
Assert.Equal(left.Id, loadedRight.Bonds?.PartnerId);
|
||||
Assert.Contains(right.Id, loadedLeft.Bonds!.Crushes);
|
||||
Assert.Contains(left.Id, loadedRight.Bonds!.Crushes);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void AdjacentYearStudents_CanHaveSympathy()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user