Add talk circles with TopicDef, staff/phone chat, and opinion outcomes.

This commit is contained in:
Leonid Pershin
2026-08-20 08:55:55 +03:00
parent 9d96108516
commit 47fc10da02
26 changed files with 1948 additions and 175 deletions
@@ -36,6 +36,24 @@
"roles": ["student", "staff"],
"weight": 3,
},
{
"defName": "StaffChat",
"room": "TeachersRoom",
"minutes": 8,
"need": "Social",
"needGain": 0.4,
"roles": ["staff"],
"weight": 3,
},
{
"defName": "PhoneChat",
"room": "Corridor",
"minutes": 6,
"need": "Social",
"needGain": 0.25,
"roles": ["student"],
"weight": 2,
},
{
"defName": "WalkCorridor",
"room": "Corridor",
@@ -62,4 +62,15 @@
{ "min": -40, "id": "OpinionDislike" },
{ "min": -100, "id": "OpinionEnemy" },
],
// Talk circles (slice 9 phase 42). Communication per hour is well below lessonSkillPerHour.
"talkSkillPerHour": 0.02,
"talkLanguageSkillPerHour": 0.005,
"talkLanguageThreshold": 25,
"talkNoLanguageOpinionMultiplier": 0.15,
"talkPhoneOpinionMultiplier": 0.5,
"talkCommunicationOpinionScale": 0.5,
"talkCircleMin": 2,
"talkCircleMax": 4,
"talkFriendThreshold": 40,
"talkEnemyThreshold": -40,
}
@@ -0,0 +1,52 @@
[
{
"defName": "TopicStudy",
"tags": ["study"],
"roles": ["student", "staff"],
"opinionShift": 2,
},
{
"defName": "TopicGames",
"tags": ["games"],
"roles": ["student"],
"age": { "min": 7, "max": 18 },
"opinionShift": 3,
},
{
"defName": "TopicFood",
"tags": ["food"],
"roles": ["student", "staff"],
"opinionShift": 2,
},
{
"defName": "TopicFamily",
"tags": ["family"],
"roles": ["student", "staff"],
"opinionShift": 2,
},
{
"defName": "TopicSport",
"tags": ["sport"],
"roles": ["student", "staff"],
"opinionShift": 3,
},
{
"defName": "TopicGossip",
"tags": ["gossip"],
"roles": ["student", "staff"],
"opinionShift": 1,
},
{
"defName": "TopicRude",
"tags": ["rude"],
"roles": ["student", "staff"],
"opinionShift": -3,
},
{
"defName": "TopicAppearance",
"tags": ["appearance"],
"roles": ["student"],
"age": { "min": 11, "max": 18 },
"opinionShift": 1,
},
]
@@ -34,12 +34,14 @@
"weight": 7,
"incompatible": ["Leader", "Bully"],
"wageAsk": -8,
"talkInitiative": 0.45,
},
{
"defName": "Leader",
"weight": 4,
"incompatible": ["Quiet"],
"wageAsk": 10,
"talkInitiative": 1.6,
"skillModifiers": [
{ "skill": "History", "offset": 4 },
],
@@ -92,4 +94,18 @@
"incompatible": ["HeatLoving"],
"comfortTemperatureOffset": -4,
},
{
"defName": "Gossip",
"weight": 5,
"roles": ["student", "staff"],
"talkOpinionMultiplier": 1.5,
"talkTagWeights": [{ "tag": "gossip", "weight": 3 }],
},
{
"defName": "Outgoing",
"weight": 6,
"incompatible": ["Quiet"],
"talkInitiative": 1.4,
"talkCircleBonus": 1,
},
]