Eintragsdetails ansehen

IDProjektKategorieSichtbarkeitZuletzt aktualisiert
0002491Eressea[Alle Projekte] Generalöffentlich2018-09-12 23:23
ReporterSoltharBearbeitung durchEnno 
PrioritätnormalAuswirkungkleinerer FehlerReproduzierbarnicht getestet
Status zugewiesenLösungoffen 
Produktversion3.17.2 
ZielversionBehoben in Version 
Zusammenfassung0002491: Verfluchte Gegenstände verhalten sich nicht, wie sie sollen
Beschreibung

Mir scheint, dieser Code in laws.c verursacht, dass "verfluchte" Gegenstände im Astralraum zerfallen. Ich vermute, dass aber das Gegenteil beabsichtigt war, oder?

static void astral_crumble(unit *u) {
    item **itemp = &u->items;
    while (*itemp) {
        item *itm = *itemp;
        if ((itm->type->flags & ITF_NOTLOST) == 0) {
            if (itm->type->flags & (ITF_BIG | ITF_ANIMAL | ITF_CURSED)) {
                ADDMSG(&u->faction->msgs, msg_message("itemcrumble",
                    "unit region item amount",
                    u, u->region, itm->type->rtype, itm->number));
                i_free(i_remove(itemp, itm));
                continue;
            }
        }
        itemp = &itm->next;
    }
}
Partei1wpy
SpielE2
Report1092

Notizen / Dateien

Xolgrim

Xolgrim

2018-09-11 19:04

Entwickler   ~0008089

Für beutel des nagativen gewichts könnte das auch gewollt gewesen sein. Warum die not lost sind verstehe ich eh nicht.

Solthar

Solthar

2018-09-11 22:44

Entwickler   ~0008090

Die sind aber nicht CURSED. Was der Unterschied ist, könnte ich gar nicht so schnell sagen. CURSED kann man nicht weggeben, ist die Grundidee, glaube ich. Nur ein paar sehr handgeschneiderte Gegenstände haben dieses Attribut.

Solthar

Solthar

2018-09-12 09:02

Entwickler   ~0008091

Hab mir bei der Gelegenheit die Attribute mal angeschaut:
notlost: snowball/man/globe, birthdaycake, lebkuchenherz, questkey1/2, museumexitticket (aber nicht museumticket), magicbag, pegasus, elvenhorse, dolphin, mistletoe,
notlost und cursed: ring_of_levitation, aog, jadee_ring/dress, wentee_ring/dress, lmsreward,
cursed: seashell, presspass

CURSED:
battle.c: geht nicht kaputt, wenn Besitzer stirbt (BUG? sollte NOTLOST sein?)
give.c: kann nicht übergeben werden; verhindert Einheiten- oder Personenübergabe (BUG? aber nicht, wenn Partei oder Einheit stirbt (unit.c:gift_items())?
CURSED | NOTLOST: battle.c: wird auf jeden Fall erbeutet (BUG? Sollte cursed wirklich erbeutet werden?)
CURSED & !NOTLOST:
laws.c: zerfällt im Astralraum
NOTLOST:
faction.c: wird auf jeden Fall übergeben, wenn Partei stirbt
unit.c: wird nicht an Bauern übergeben, wenn Partei stirbt (BUG? s.o., gift_items())
laws.c: verhindert Astralraumzerfall

Zusammenfassend:
Die Intention von CURSED scheint zu sein, dass es nicht übergeben werden kann, die von NOTLOST, dass es nicht verschwinden kann. Was ist aber mit Gegenständen, die beides sind? Kann ich sie erbeuten, wie eine verfluchte Waffe in D&D? Oder eben nicht, weil es ein personalisierter Gegenstand ist wie ein Presseausweis? Im Code scheinen beide Ideen vorzukommen.

Weitere mögliche Fehler:
sp_combatrosthauch / sp_rosthauch / sp_seduce ignorieren die Flags
sp_undeadhero kann CURSED umgehen

Solthar

Solthar

2018-09-12 11:56

Entwickler   ~0008092

Oh je, verfluchte Gegenstände können durch RESERVIERE übergeben werden (aber nicht durch GIB).

Xolgrim

Xolgrim

2018-09-12 17:32

Entwickler   ~0008093

Ich habe ein "Amulett des Treffens" im Kampf erbeutet, kann das aber nicht abgeben. Das muss dann aus obiger Liste "imsreward" oder "aog" sein, die restlichen Dinge sind ja recht klar am Namen zu erkennen.
Mindestens beim Ring der Levitation ist es gewollt gewesen, dass der nach dem tode des Besitzers weiterhin existiert.

Enno

Enno

2018-09-12 21:11

Administrator   ~0008096

Ja, das Amulett des Treffens ist aog (Amulett of Gathering). Zu der Motivation für den Astralraum-Code kann ich nicht mehr viel sagen, das ist lange her. Wir wollten auf jeden Fall vermeiden, dass man mit Pferden Massenhaft Material transportiert, und keine Schiffe mehr für eine Invasion braucht. Der Beutel des n. Gewicht fällt da wohl auch drunter.

Mir sind diese Flags auch nicht geheuer, es kann gut sein, dass die gelegentlich vertauscht worden sind. Ich werde mir das selber noch einmal ansehen müssen, Danke aber auf jeden Fall für die detailierte Auflistung!

Solthar

Solthar

2018-09-12 23:23

Entwickler   ~0008100

Zur Ergänzung: Verwirrend ist hier auch, dass Gegenstände auf verschiedene Weisen verändern können: Da gibt es i_change und i_remove, die nicht nur direkt, sondern auch von change_resource aufgerufen werden und zwar über den Hook resource_type.uchange(), was aber möglicherweise i_change auch ganz übergehen kann ... Schwer zu sagen, wo da überall abfragen auf ITF_CURSED und NOTLOST sein müssten.

Eintrags-Historie

Änderungsdatum Benutzername Feld Änderung
2018-09-11 18:58 Solthar Neuer Eintrag
2018-09-11 19:04 Xolgrim Notiz hinzugefügt: 0008089
2018-09-11 22:44 Solthar Notiz hinzugefügt: 0008090
2018-09-12 09:02 Solthar Notiz hinzugefügt: 0008091
2018-09-12 11:56 Solthar Notiz hinzugefügt: 0008092
2018-09-12 11:57 Solthar Zusammenfassung Verfluchte Gegenstände zerfallen im Astralraum? => Verfluchte Gegenstände verhalten sich nicht, wie sie sollen
2018-09-12 17:32 Xolgrim Notiz hinzugefügt: 0008093
2018-09-12 21:11 Enno Notiz hinzugefügt: 0008096
2018-09-12 21:11 Enno Bearbeitung durch => Enno
2018-09-12 21:11 Enno Status neu => zugewiesen
2018-09-12 21:11 Enno Produktversion => 3.17.2
2018-09-12 23:23 Solthar Notiz hinzugefügt: 0008100