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,
},
]
@@ -4,6 +4,8 @@
"UseToilet": "Restroom",
"RecessRest": "Recess",
"Chat": "Chat",
"StaffChat": "Staff chat",
"PhoneChat": "Phone chat",
"WalkCorridor": "Walk the corridor",
"WalkYard": "Walk the yard",
"Behavior": "Behavior rules",
@@ -139,6 +141,8 @@
"Curious": "Curious",
"HotTempered": "Hot-tempered",
"Kind": "Kind",
"Gossip": "Gossip",
"Outgoing": "Outgoing",
"Neat": "Neat",
"Staffing": "Staffing",
"Height": "Height",
@@ -189,6 +193,15 @@
"OpinionEnemy": "enemies",
"ActionStarted": "started: {0}",
"ActionEnded": "finished: {0}",
"TalkEnded": "talked about {0}",
"TopicStudy": "schoolwork",
"TopicGames": "games",
"TopicFood": "food",
"TopicFamily": "family",
"TopicSport": "sport",
"TopicGossip": "gossip",
"TopicRude": "rough talk",
"TopicAppearance": "looks",
"ApparelReplaced": "got a new {0}",
"ApparelChanged": "changed clothes: {0}",
"core": "Core",
@@ -4,6 +4,8 @@
"UseToilet": "Туалет",
"RecessRest": "Перемена",
"Chat": "Разговор",
"StaffChat": "Разговор в учительской",
"PhoneChat": "Разговор по телефону",
"WalkCorridor": "Прогулка по коридору",
"WalkYard": "Прогулка во дворе",
"Behavior": "Правила поведения",
@@ -139,6 +141,8 @@
"Curious": "Любопытный",
"HotTempered": "Вспыльчивый",
"Kind": "Добрый",
"Gossip": "Сплетник",
"Outgoing": "Общительный",
"Neat": "Аккуратный",
"Staffing": "Штат",
"Height": "Рост",
@@ -189,6 +193,15 @@
"OpinionEnemy": "враги",
"ActionStarted": "начал: {0}",
"ActionEnded": "закончил: {0}",
"TalkEnded": "говорил о {0}",
"TopicStudy": "учёбе",
"TopicGames": "играх",
"TopicFood": "еде",
"TopicFamily": "семье",
"TopicSport": "спорте",
"TopicGossip": "сплетнях",
"TopicRude": "грубом",
"TopicAppearance": "внешности",
"ApparelReplaced": "получил новую {0}",
"ApparelChanged": "переоделся: {0}",
"core": "Базовая игра",