Files
dreamer-game/scripts/probleme.gd
2026-09-15 23:17:07 +02:00

137 lines
4.2 KiB
GDScript

class_name Probleme
## Die zweite Ebene: was einen Menschen nicht im Tagesablauf aufhält, sondern
## in einzelnen Momenten. Eine Gewohnheit hat einen Platz im Tag -- ein
## psychisches Problem hat keinen. Es zeigt sich in Situationen, und die
## kommen, wann sie wollen.
##
## Darum die andere Mechanik: Gewohnheiten pflanzt man ein und sie laufen ohne
## dich weiter. Bei einer Situation musst du dabei sein und im Moment die
## Technik wählen, die zu diesem Problem passt.
static var LISTE: Dictionary = {
"angst": {
"name": "Angst", "kurz": "der Körper macht dicht, bevor der Kopf mitredet",
},
"selbstzweifel": {
"name": "Selbstzweifel", "kurz": "die innere Stimme redet es klein",
},
"stress": {
"name": "Stress", "kurz": "alles gleichzeitig, nichts zu Ende",
},
"ueberforderung": {
"name": "Überforderung", "kurz": "der Berg ist zu groß zum Ansehen",
},
"erschoepfung": {
"name": "Erschöpfung", "kurz": "der Akku ist leer, bevor der Tag anfängt",
},
"einsamkeit": {
"name": "Einsamkeit", "kurz": "hängt allein an dem, was zu zweit ginge",
},
"perfektionismus": {
"name": "Perfektionismus", "kurz": "nichts ist je gut genug zum Abgeben",
},
"unruhe": {
"name": "Unruhe", "kurz": "kann nicht bleiben, wo er ist",
},
}
## Situationen: was im Moment sichtbar wird. Jede gehört zu einem Problem.
static var SITUATIONEN: Dictionary = {
"blackout": {
"name": "wird starr", "was": "Ihr wird schwarz vor Augen.",
"problem": "angst",
},
"aufschieben_angst": {
"name": "meldet sich ab", "was": "Sie sagt den Termin wieder ab.",
"problem": "angst",
},
"kleinreden": {
"name": "redet es klein", "was": "»Das kann doch jeder besser.«",
"problem": "selbstzweifel",
},
"vergleich": {
"name": "vergleicht sich", "was": "Sie sieht, was andere schaffen.",
"problem": "selbstzweifel",
},
"alles_gleichzeitig": {
"name": "fängt drei Dinge an", "was": "Alles gleichzeitig, nichts zu Ende.",
"problem": "stress",
},
"noch_ein_ja": {
"name": "sagt schon wieder ja", "was": "Noch eine Bitte, noch ein Ja.",
"problem": "stress",
},
"erstarrt": {
"name": "erstarrt vor dem Berg", "was": "Sie sieht die Aufgabe und macht nichts.",
"problem": "ueberforderung",
},
"ausgebrannt": {
"name": "sackt zusammen", "was": "Sie sitzt da und starrt.",
"problem": "erschoepfung",
},
"allein": {
"name": "hängt allein fest", "was": "Sie kommt nicht weiter und fragt niemanden.",
"problem": "einsamkeit",
},
"absagen_treffen": {
"name": "sagt das Treffen ab", "was": "Lieber allein als unter Leuten.",
"problem": "einsamkeit",
},
"verwerfen": {
"name": "verwirft den Entwurf", "was": "Sie löscht, was schon fertig war.",
"problem": "perfektionismus",
},
"nachbessern": {
"name": "bessert endlos nach", "was": "Die dritte Fassung, und es wird nicht besser.",
"problem": "perfektionismus",
},
"aufspringen": {
"name": "springt auf", "was": "Sie hält es am Platz nicht aus.",
"problem": "unruhe",
},
"ortswechsel": {
"name": "wechselt den Ort", "was": "Woanders geht es bestimmt besser.",
"problem": "unruhe",
},
"zusammenbruch_klein": {
"name": "gibt für heute auf", "was": "Der Rest des Tages ist gestrichen.",
"problem": "erschoepfung",
},
"abbruch": {
"name": "lässt es liegen", "was": "Mitten drin hört sie auf.",
"problem": "ueberforderung",
},
}
static func problem_da(schluessel: String) -> bool:
return LISTE.has(schluessel)
static func name_von(schluessel: String) -> String:
return str(LISTE[schluessel]["name"]) if LISTE.has(schluessel) else schluessel
## Alle Situationen, in denen sich dieses Problem zeigt.
static func situationen_von(problem: String) -> Array:
var out: Array = []
for key in SITUATIONEN:
if SITUATIONEN[key]["problem"] == problem:
out.append(key)
return out
## Techniken, die gegen dieses Problem etwas ausrichten -- erkennbar am Feld
## `tags` der Technik.
static func techniken_gegen(problem: String) -> Array:
var out: Array = []
for t in TechDB.LIST:
if (t["tags"] as Array).has(problem):
out.append(str(t["id"]))
return out
static func hilft(tech_id: String, problem: String) -> bool:
var t := TechDB.by_id(tech_id)
return not t.is_empty() and (t["tags"] as Array).has(problem)