Eintragsdetails ansehen

IDProjektKategorieSichtbarkeitZuletzt aktualisiert
0002419Eressea[Alle Projekte] Generalöffentlich2018-02-18 11:46
ReporterEnnoBearbeitung durchEnno 
PrioritätnormalAuswirkungkleinerer FehlerReproduzierbarnicht getestet
Status erledigtLösungwiedereröffnet 
Produktversion3.15.0 
Zielversion3.16.0Behoben in Version3.16.0 
Zusammenfassung0002419: Wirkung Heiltrank und Wundsalbe vertauscht?
Beschreibung

Laut https://wiki.eressea.de/index.php/Tr%C3%A4nke macht die Wundsalbe 400 Trefferpunkte Heilung, und kann mit BENUTZE verwendet werden. Der Heiltrank soll für bis zu 4 Personen einen tödlichen Treffer mit 50% abwehren.

BENUTZE 1 Wundsalbe führt dazu, dass die Einheit 400 Punkte geheilt wird, aber das passiert nicht in der dafür vorgesehenen Funktion, sondern in use_healingpotion. Heiltränke hingegen kann man scheinbar nicht benutzen? In use_potion steht nämlich:

if (oldpotiontype[P_HEAL] && itype == oldpotiontype[P_HEAL]) {
    return EUNUSABLE;
}
Schritte zur Reproduktion

Die beiden Items haben derzeit keine Acceptance-Tests. Da sollten wir mal anfangen.

Partei0
SpielE2
Report0

Notizen / Dateien

Enno

Enno

2018-02-15 19:14

Administrator   ~0007814

Ich habe so ein dunkles Gefühl, dass wir dazu mal eine Diskussion of eressea-dev hatten...

Enno

Enno

2018-02-15 19:19

Administrator   ~0007815

Jau. 06.06.2016, Betreff: "Wirkung von Heiltränken" mit Bezug auf Bug 0002204

Zitat Enno:

Zweck des Trankes ist, dass eine Einheit mit 0 HP den Kampf trotzdem
überlebt, und man so seine Taktiker und Magier retten kann.

Es gab in der Folge eine Diskussion, an der sich @Solthar und @CTD beteiligt haben, und wir haben wohl auch etwas geändert. Solthar hat damals offenbar einen Pull-Request dafür gemacht.

Erschwerend kommt sicherlich dazu, dass die beiden Tränke intern P_HEILWASSER und P_HEAL heißen. Da kann ich mal gleich anfangen, glaube ich.

Enno

Enno

2018-02-15 21:03

Administrator   ~0007816

Okay, ganz so verwirrend ist es dann doch nicht gewesen, das ist alles machbar. Ich habe das lokal in einem Branch halbwegs geordnet, mit Tests für BENUTZE, aber (noch) ohne Test für die Auferstehung im Kampf oder bei Vulkanausbruch.

Enno

Enno

2018-02-16 19:56

Administrator   ~0007817

Interessant: Beim Vulkanausbruch gibt der Trank vier Personen eine 50% Chance zum Überleben (und eventuell residuelle Trank-Effekte, durch change_effect). Im Kampf scheint der Trank nur für eine Person zu wirken, dafür mit 100% Wahrscheinlichkeit, und es kann nur ein Trank pro Person wirken, aber mehrere pro Einheit. Das war wohl Absicht der Änderungen in 2016? Ich finde aber keine Ankündigung, und es steht auch anders in der Anleitung, glaube ich.

Enno

Enno

2018-02-16 20:08

Administrator   ~0007818

Anleitung muss noch aktualisiert werden. Machen wir dann nach dem Announce zur Einführung?

Enno

Enno

2018-02-17 13:39

Administrator   ~0007819

Noch ein Fehler bei Tränken: Es gibt eine alte Regel, dass man Tränke nur einmal pro Woche mit BENUTZE einsetzen darf. Also nicht zwei Befehle "BENUTZE 1 Zaubertrank" in der gleichen Woche, Herr Obelix.

Ich sehe nicht ein, warum das so ist, und es hat ursprünglich wohl auch nur Zauber betroffen, die einen Effekt an der Einheit erzeugen (z.B. Schaffenstrunk). Durch den Umweg über do_potion betrifft es aber auch Tränke wie den Heiltrank, die dort gesondert behandelt werden.

Das ganze ist eigentlich total egal, weil man auch einfach BENUTZE 2 Zaubertrank befehlen könnte. Ich vermute, der Code dazu kann evtl. ganz weg?

Enno

Enno

2018-02-17 14:08

Administrator   ~0007820

Xolgrim weist mich gerade darauf hin, dass ich das falsch verstanden habe. Der Code soll verhindern, dass eine Einheit in der selben Woche zwei unterschiedliche Tränke trinkt. Habe ich wohl kaputtgemacht. Ich halte nichts von der Regel, sehe keinen Grund dafür, und werde die löschen.

Enno

Enno

2018-02-18 11:37

Administrator   ~0007822

Durch die Umbenennung von p14 -> healing hat es diesen Fehler in der Test-AW gegeben:

ERROR: read_spells: could not find spell 'create_potion_p14'

Der Name des Zaubers ist im Datenfile, da braucht es eine Aliasing-Funktion.

Enno

Enno

2018-02-18 11:38

Administrator   ~0007823

static const char sp_alias(const char zname) ist das.

Enno

Enno

2018-02-18 11:43

Administrator   ~0007824

Passiert nur in E3 und E4, natürlich.

Enno

Enno

2018-02-18 11:46

Administrator   ~0007825

Ansonsten scheint alles zu funktionieren. Prima.

Eintrags-Historie

Änderungsdatum Benutzername Feld Änderung
2018-02-15 19:13 Enno Neuer Eintrag
2018-02-15 19:13 Enno Status neu => zugewiesen
2018-02-15 19:13 Enno Bearbeitung durch => Enno
2018-02-15 19:14 Enno Notiz hinzugefügt: 0007814
2018-02-15 19:19 Enno Notiz hinzugefügt: 0007815
2018-02-15 21:03 Enno Notiz hinzugefügt: 0007816
2018-02-16 19:56 Enno Notiz hinzugefügt: 0007817
2018-02-16 20:08 Enno Status zugewiesen => erledigt
2018-02-16 20:08 Enno Lösung offen => erledigt
2018-02-16 20:08 Enno Behoben in Version => 3.16.0
2018-02-16 20:08 Enno Notiz hinzugefügt: 0007818
2018-02-17 13:39 Enno Status erledigt => Rückmeldung
2018-02-17 13:39 Enno Lösung erledigt => wiedereröffnet
2018-02-17 13:39 Enno Notiz hinzugefügt: 0007819
2018-02-17 14:08 Enno Notiz hinzugefügt: 0007820
2018-02-18 11:37 Enno Notiz hinzugefügt: 0007822
2018-02-18 11:37 Enno Status Rückmeldung => zugewiesen
2018-02-18 11:38 Enno Notiz hinzugefügt: 0007823
2018-02-18 11:43 Enno Notiz hinzugefügt: 0007824
2018-02-18 11:46 Enno Status zugewiesen => erledigt
2018-02-18 11:46 Enno Notiz hinzugefügt: 0007825