Eintragsdetails ansehen

IDProjektKategorieSichtbarkeitZuletzt aktualisiert
0002491EresseaGeneralöffentlich2022-07-17 15:15
ReporterSolthar Bearbeitung durchEnno  
PrioritätnormalSchweregradkleinerer FehlerReproduzierbarnicht getestet
Status erledigtLösungerledigt 
Produktversion3.17.2 
Zielversion27.2Behoben in Version27.3 
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;
    }
}
TagsKeine Tags zugeordnet.
Partei1wpy
SpielE2
Report1092

Eintrags-Beziehungen

verwandt mit 0002831 erledigtEnno BENUTZE Muschel funktioniert zwar, aber Ring der Levitation nicht 
verwandt mit 0002871 geschlossenEnno Verfluchte Gegenstände lassen sich nicht mehr reservieren 

Notizen / Dateien

Xolgrim

Xolgrim

2018-09-11 19:04

Tester   ~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

Tester   ~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.

Enno

Enno

2018-12-11 18:33

Administrator   ~0008298

lmsreward ist übrigens der "Gürtel der Heldentaten", der Lohn für den Sieg bei einem "Last Man Standing" Event, den es wohl mal gab. Hat den wohl jemand? Vor einer Weile, als ich mal Inventar gemacht habe, gab es davon zwei Stück.

Enno

Enno

2022-03-09 18:06

Administrator   ~0009550

Ich traue mich immer noch nicht recht dran an diese Sache, weil ich nicht weiß, was die Intention hinter astral_crumble war. Ich habe auch keine commit history, weil der Code von vor 2010 ist.

Solthar

Solthar

2022-03-09 18:53

Entwickler   ~0009551

Mhhh, astral crumble klingt irgendwie lecker und gleichzeitig gefährlich.

Zumindest im Announce von 2005 ist keine Erwähnung davon:

** Astralraum, Problematik

Der Astralraum ist eine ziemlich praktische Angelegenheit, und Zugang zum Astralraum so etwas wie Lufthoheit - ohne sieht man auf Dauer echt alt aus. Allerdings ist das ganze zu weit gegangen. In letzter Zeit werden Kriege vermehrt geführt, indem die komplette Invasionsarmee durch den Astralraum gelaufen kommt und mitten auf der angegriffenen Insel aussteigt. Das ist bei der Pentagramm-Tirawon Schlacht so gewesen, und auch vorher schon passiert. Momentan sind über 50.000 Personen im Astralraum.

Das ganze ist aus mehreren Gründen schlecht: Jegliches Verschiffen von Truppen wird überflüssig, weil man im Astralraum schneller und sicherer vorankommen kann, wenn man nur eine Armee hat, die groß genug ist. Man kann auch wesentlich mehr Gewicht mitnehmen als auf Schiffen, da Katapulte, Pferde, Steine, usw. keinerlei Problem sind (speziell wegen des Draig-Zaubers). Ein einzelnes Magiegebiet (Draig) kriegt einen abnormen Vorteil - eine Allianz die den Zauber nicht hat, kann eigentlich Invasionen vergessen. Und es gibt noch weniger als ohnehin schon Möglichkeiten, sich auf einen Angriff vorzubereiten - es ist schlimm genug, seine Küsten zu befestigen, aber wenn die Feinde prinzipiell von überall kommen können, was soll man da noch tun?

** Astralraum, Änderungen

  1. Mit sofortiger Wirkung gilt für den Zauber Chaossog, dass Einheiten die den Wirbel betreten 3/4 ihrer Lebensenergie einbüßen - sowohl beim Ein- als auch beim Austritt aus dem Astralraum. Sterben tut dadurch niemand (unter 1 Lebenspunkt fällt man nicht), aber eine Invasion sollte wesentlich schwerer sein.

  2. Mit Wirkung ab Auswertung 430 (in ca. zwei Realmonaten) zerfallen im Astralraum Steine, Pferde, Wagen und Katapulte zu Staub. Diese Gegenstände lassen sich in Zukunft nicht mehr durch den Astralraum transportieren. Wer noch welche im Astralraum hat (es gibt etwa 1000 Katapulte dort oben) hat 8 Wochen Zeit, sie an einer sicheren Stelle in den Realraum zu schieben.

Enno

Enno

2022-03-09 19:50

Administrator   ~0009552

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

Das sollte auf jeden Fall einheitlich sein.

Enno

Enno

2022-03-09 20:23

Administrator   ~0009553

Ich habe einen Bugfix für RESERVIERE eingespielt.

Enno

Enno

2022-03-09 20:27

Administrator   ~0009554

Zum Amulett des Treffens: Da war glaube ich die Intention, dass das nur Spieler haben, die bei dem ersten Bremer Treffen dabei waren, und dass sie es nicht aus Versehen verlieren können. Das gibt der Code natürlich so nicht her, und inzwischen sind die Dinger sicher zum großen Teil in den falschen Händen, und die Spieler verschwunden. Da brauche ich nichts mehr zu retten, glaube ich, das ist halt, wie es ist.

Enno

Enno

2022-03-09 20:34

Administrator   ~0009555

Zuletzt bearbeitet: 2022-03-09 20:38

Allerdings: seashell und presspass sind Gegenstände wie das Amulett des Treffens. Soll der Besitzer nicht an andere Parteien geben können, deshalb CURSED. Und sollen im Astralraum nicht kaputt gehen, deshalb nicht NOTLOST. Dann sollte das Amulett evtl. auch so sein, und ich glaube, der Code tut das richtige.

Enno

Enno

2022-03-09 20:38

Administrator   ~0009556

Irgendwie scheint es aber eine Konfusion (evtl. nur bei mir) zu geben, zwischen "Gegenstände, die die Einheit nicht weggeben kann" und "Gegenstände, die man einer anderen Partei nicht geben darf".

Solthar

Solthar

2022-03-09 22:03

Entwickler   ~0009557

Aber aktuell würde seashell im Astralraum doch kaputtgehen (da cursed und nicht NOTLOST).

Enno

Enno

2022-03-10 09:20

Administrator   ~0009558

Ja, ich glaube, das muss alles nochmal neu durchdacht werden, angefangen von "was wollen wir eigentlich erreichen?". Wir wollen Dinge, die man nicht an andere Parteien geben kann (z.B. seashell), und Dinge die nicht aus der Welt verschwinden können (z.B. museumticket). Sonst noch Kategorien? Gibt es überhaupt einen Grund, Übergabe innerhalb der eigenen Partei zu untersagen?

Solthar

Solthar

2022-03-10 10:10

Entwickler   ~0009559

Mal sehen: Wildentes Hochzeitsfrack? Vielleicht war der schon so gedacht. Ring der Levitation? Amulett des Treffens? Gürtel der Heldentaten? Akkredition des Xontormia-Expreß? Dafür finde ich keinen Code mehr. Sind also nur noch Andenken, falls sie noch existieren. Bleibt als einziges die Muschel. Die kriegt man auf dem Muschelplateau und kann damit offenbar eine Art Nachricht abspielen. Das sollte tatsächlich dann auch nicht innerhalb der Partei übergeben werden. Und es gibt keinerlei Grund, dass sie im Astralraum zerfallen sollte.

Es ergibt tatsächlich auch Sinn, dass die Muschel nicht NOTLOST ist. Man kann den Status "ist auf dem Muschelplateau gewesen" nicht erben.

Die anderen NOTLOST-Gegenstände sind dann noch Schneeball/mann, Schneekugel, Pegasus (gibt es da noch einen?), Zauberbeutel, Elfenpferd, Delphin (!?), Mistelzweig.

Davon finde ich Zauberbeutel und Elfenpferd problematisch. Das führt theoretisch zu einer Inflation, da die noch neu erzeugt werden, aber nicht kaputt gehen. Die anderen sind wohl einmalige Sachen, insofern finde ich es hübsch, dass sie nicht kaputt gehen.

Questkeys gibt es zwar noch Code, ich weiß aber nicht, ob der noch triggern kann. Auf jeden Fall scheint es plausibel (gewesen) zu sein, dass die nicht verloren gehen können. Ohne Key kein Quest. Ähnliches gilt wahrscheinlich für Museumtickets?

Lebkuchenherz ist wohl auch eher ein Andenken.

Solthar

Solthar

2022-03-10 10:37

Entwickler   ~0009560

Fazit: Ja, Cursed sollte Übergabe auf welchem Wege auch immer verhindern. Der Gegenstand geht mit der Einheit verloren. Wobei es da mit Personenübergaben ein schwer zu stopfendes Loch gibt. Dazu müsste man die Regel einführen "An eine Einheit mit einem CURSED Gegenstand dürfen keine Personen übergeben werden". Meiner Meinung nach dürften sie auch nicht im Kampf erbeutet werden. Das gibt nur weitere Schlupflöcher. Der Status NOTLOST und CURSED ist demnach meiner Ansicht nach ein Widerspruch. Wenn es nach dem Tod der Einheit erhalten bleibt, kann man es auch gleich übergebbar machen, oder? Ich würde für die entsprechenden Gegenstände einfach das CURSED-Flag entfernen. Sie haben keine Funktion mehr und sind nur noch Andenken.

An vielen Stellen im Code wird CURSED und NOTLOST gleich behandelt. Das wäre dann ein Fehler.

Testfälle für Cursed: Verboten sind GIB, RESERVIERE, Beute und dieser Gib-mir-all-dein-Zeug-Zauber. Gibt es noch andere? Erlaubt ist EInheitenübergabe. Und CURSED sollte eher NOT_TRANSFERABLE heißen.

Und ja, die CURSED-Sache im Astralraum ist ein Bug.

Elfenpferde und Zauberbeutel sollten wahrscheinlich kein NOTLOST mehr haben.

Testfälle für Notlost: Hm, im Grunde sollte es da der Hook beim Entfernen von leeren Einheiten reichen? Oder wie läuft das nach dem Kampf oder wenn eine Einheit ertrinkt oder verhungert? NOTLOST-Gegenstände sollten vererbt oder erbeutet werden oder, falls keine Erben da sind, kriegt die ein Geist. Und was passiert, wenn die Einheit zum Beispiel ertrinkt? Gibt es Wasserzombies?

Xolgrim

Xolgrim

2022-03-10 11:19

Tester   ~0009561

Wenn die Einheit stirbt erbt ein Ghast, wenn die Einheit ertrinkt, erbt ein Geist, so ist das glaube ich implementiert. Mit den Quest keys kann man ein großes Tor öffnen und vermutlich auch wieder schließen, letzteres teste ich in wenigen Wochen. Ring der Levitation und Amulett des Treffens existieren definitiv noch. Warum soll man die Muschel nicht parteiintern übergeben können, der Sinn dahinter erschließt sich mir nicht wirklich. Generell ist es eine zimlich doofe Sache Gegenstände zu haben, die man nicht innerhalb der Partei übergeben kann (Meist dann an den Museumswärter). Bei Elfenpferden und vor allem Zauberbeuteln bin ich voll bei dir, die sollten keinen besonderen Schutz genießen.

Solthar

Solthar

2022-03-10 12:56

Entwickler   ~0009563

Joa, vielleicht hast du recht. Ich fand die Idee cool, dass der Gegenstand gewissermaßen die Einheit auf immer markiert, aber das könnte auch parteiweit gelten. Das macht die implementierung auch viel einfacher. Man muss eigentlich nur noch auf GIB und Beute und diesem Dingsbumszauber aufpassen. Aber ich vergesse bestimmt was.

Enno

Enno

2022-07-16 22:03

Administrator   ~0009716

Die Änderung an RESERVIERE nehme ich zurück wegen Bug 2871. RESERVIERE und GIB von ITF_CURSED in der eigenen Partei ist erlaubt (aber nicht an fremde Parteien).

Es gibt da noch einen seltsamen Check in can_give_men, den ich mir genauer angucken will, ich glaube der verhindert GIB PERSONEN, sollte aber GIB EINHEIT (an andere Partei) verbieten.

Enno

Enno

2022-07-16 22:03

Administrator   ~0009717

Auch geändert habe ich das mit dem Zerfall im Astralraum. Das war in der Tat kontraproduktiv.

Enno

Enno

2022-07-17 15:15

Administrator   ~0009718

Offenbar durften Einheiten, die eine Muschel (ITF_CURSED) haben, keine Personen an andere Einheiten abgeben. Das macht keinen Sinn, habe ich gestrichen. Bei der Gelegenheit auch getestet, dass eine Einheit nicht mitsamt ihrer Muschel an eine andere Partei gegeben werden darf.

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
2018-12-11 18:33 Enno Notiz hinzugefügt: 0008298
2022-03-09 18:06 Enno Notiz hinzugefügt: 0009550
2022-03-09 18:53 Solthar Notiz hinzugefügt: 0009551
2022-03-09 19:50 Enno Notiz hinzugefügt: 0009552
2022-03-09 20:23 Enno Notiz hinzugefügt: 0009553
2022-03-09 20:23 Enno Zielversion => 27.2
2022-03-09 20:27 Enno Notiz hinzugefügt: 0009554
2022-03-09 20:34 Enno Notiz hinzugefügt: 0009555
2022-03-09 20:38 Enno Notiz hinzugefügt: 0009556
2022-03-09 20:38 Enno Notiz bearbeitet: 0009555
2022-03-09 22:03 Solthar Notiz hinzugefügt: 0009557
2022-03-10 09:20 Enno Notiz hinzugefügt: 0009558
2022-03-10 10:10 Solthar Notiz hinzugefügt: 0009559
2022-03-10 10:37 Solthar Notiz hinzugefügt: 0009560
2022-03-10 11:00 Solthar Beziehung hinzugefügt verwandt mit 0002831
2022-03-10 11:19 Xolgrim Notiz hinzugefügt: 0009561
2022-03-10 12:56 Solthar Notiz hinzugefügt: 0009563
2022-07-16 20:38 Enno Beziehung hinzugefügt verwandt mit 0002871
2022-07-16 22:03 Enno Notiz hinzugefügt: 0009716
2022-07-16 22:03 Enno Notiz hinzugefügt: 0009717
2022-07-17 15:15 Enno Status zugewiesen => erledigt
2022-07-17 15:15 Enno Lösung offen => erledigt
2022-07-17 15:15 Enno Behoben in Version => 27.3
2022-07-17 15:15 Enno Notiz hinzugefügt: 0009718