Ein Modul muss gar nicht sein, das würde ich nur der Aufgeräumtheit halber benutzen.
Im Grunde ist es sehr simpel:
In TranslateAction folgende Zeile einfügen (bei mir Zeile 138):
objekt = OtherName(objekt);
Dann diese Funktion benutzen:
String OtherName(String objekt) {
int r = player.Room;
int mx = mouse.x;
int my = mouse.y;
int c = -1, h = -1, o = -1;
int lt = GetLocationType(mx, my);
if (lt == eLocationCharacter) {
Character*cp = Character.GetAtScreenXY(mx, my);
if (cp != null) c = cp.ID;
}
if (lt == eLocationHotspot) {
Hotspot*hp = Hotspot.GetAtScreenXY(mx, my);
if (hp.ID > 0) h = hp.ID;
}
if (lt == eLocationObject) {
Object*op = Object.GetAtScreenXY(mx, my);
if (op != null) o = op.ID;
}
// Raum 2
if (r == 2) {
if (h == 1 && books_wet) objekt = "nasse Bücher";
}
return objekt;
}
Im Beispiel habe ich einen alternativen Text für Hotspot 1 in Raum 2, falls books_wet == true.
(Der ganze Aufwand mit GetAtScreenXY ist übrigens nicht nötig, wenn die Gegenstände eindeutige Namen haben. Gibt es aber z.B. mehrere Spinde, von denen einer irgendwann "kaputter Spind" heißen soll, muss man natürlich zwischen IDs unterscheiden.
Wenn es aber z.B. im ganzen Spiel nur einen Rubin gibt, der später "Blutrubin" heißen soll, reicht:
if (objekt == "Rubin" && ruby_is_bloody) return "Blutrubin";
)
Auf die gleiche Weise kann man natürlich auch den Verbtext ändern.