Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Schicksalsklinge: Umfassender Bugfix-Patch
Noch was ist mir aufgefallen: An zwei Stellen (Zeile 419 und 466) in der Funktion seg038 steht in BrightEyes der Kommentar "Original-Bug" drin. Es handelt sich zweimal um eine Verzweigung mit der Bedingung
(l_var5 < 0) || (l_var5 > 23) || (l_var4 < 0) || (l_var5 > 23)
Hier wird also "l_var5 > 23" doppelt abgetestet. Beim zweiten Mal sollte es wohl "l_var4 > 23" lauten.

Offenbar bezeichnen l_var5 und l_var4 die x-y-Koordinaten eines Kampffelds.
In Abhängigkeit von der Verzweigung wird später was an die Stelle (25 * l_var5) + l_var4 in CHESSBOARD_CPY reingeschrieben.
Potentiell wird also hinter den Speicherbereich rausgeschrieben bzw. der Inhalt eines anderen Felds überschrieben.
(Seltsamerweise wird l_var5 mit 25 multipliziert wird und nicht wie eigentlich zu erwarten mit 24. Ist l_var nur um eins zu groß (d.h. l_var4 == 24), dann passiert also noch nichts.)

Falls die Stelle durch den Patch noch nicht korrigiert ist, sollte das also gemacht werden.
Mit Glück behebt das den Bug schon, woran ich aber nicht so recht glaube.
Zitieren
(08.01.2021, 02:53)siebenstreich schrieb: Mit Glück behebt das den Bug schon, woran ich aber nicht so recht glaube.
Tut's nicht.
Zitieren
(07.01.2021, 22:20)NRS schrieb:
siebenstreich schrieb:Zur Sicherheit: Voraussetzung zum Abfeuern der Steinschleuder sollte sein, dass die linke Hand leer ist (um die imaginäre Munition zu halten bzw. um einen Stein vom Boden aufzuheben). Eine Hexe mit Schleuder in der Rechten und Goldschild in der Linken wäre dann doch zu heftig.
Mit soviel Heftigkeit musst Du leben. Die Hexe hält den Schild mit Mittel-, Ring- und kleinem Finger, und die Munition mit Daumen und Zeigefinger. Ansonsten müsste die Steinschleuder intern als Zweihänder geführt werden, und das ist dann mir zu heftig.

Zweihänder-Behandlung (d.h. permanentes Freihalten der linken Hand) ist eigentlich nicht nötig. Es würde reichen, wenn zum Zeitpunkt des Abfeuerns die linke Hand frei ist. (Logik: das gleichzeitige Herumtragen von Schleuder und Goldschild ist kein Problem. Aber zum Betätigen der Schleuder muss die zweite Hand einen Stein aufheben und in die Schleuder einlegen.) Man könnte die Meldung "... HAT KEINE STEINE IN DER LINKEN HAND." durch "... HAT KEINE FREIE LINKE HAND." ersetzen. Die Abfrage muss natürlich entsprechend angepasst werden. Und dann noch schauen, dass kein Abzug von Munition stattfindet, aber das hast du vermutlich schon gemacht beim Reparieren.
Zitieren
(08.01.2021, 04:05)NRS schrieb:
(08.01.2021, 02:53)siebenstreich schrieb: Mit Glück behebt das den Bug schon, woran ich aber nicht so recht glaube.
Tut's nicht.

Du hast das schon ausprobiert! Schade, aber es hätte mich auch gewundert wenn es so einfach gewesen wäre. Weil die Sache nichts mit zweifeldrigen Gegnern etc. zu tun hat. Trotzdem ist es gut, die Stelle repariert zu haben, weil ja potentiell Unsinn passieren kann.
Zitieren
(08.01.2021, 10:39)siebenstreich schrieb: Es würde reichen, wenn zum Zeitpunkt des Abfeuerns die linke Hand frei ist. (Logik: das gleichzeitige Herumtragen von Schleuder und Goldschild ist kein Problem. Aber zum Betätigen der Schleuder muss die zweite Hand einen Stein aufheben und in die Schleuder einlegen.) Man könnte die Meldung "... HAT KEINE STEINE IN DER LINKEN HAND." durch "... HAT KEINE FREIE LINKE HAND." ersetzen. Die Abfrage muss natürlich entsprechend angepasst werden. Und dann noch schauen, dass kein Abzug von Munition stattfindet, aber das hast du vermutlich schon gemacht beim Reparieren.
Jajajaja. Und am besten auch noch eine neue Animation nur für das Abfeuern der Steinschleuder malen. Das alles werde ich ganz bestimmt nicht machen. Wir haben jetzt wieder ein Beispiel für "Wenn man den kleinen Finger reicht ..."
Zitieren
(08.01.2021, 11:25)NRS schrieb: Wir haben jetzt wieder ein Beispiel für "Wenn man den kleinen Finger reicht ..."

Evtl. hast du mich falsch verstanden. Du hattest doch oben schon zum Ausdruck gebracht, dass das Feuer nicht mehr so lodert wie früher, und ich hatte geantwortet, dass ich das komplett nachvollziehen kann. Man kennt das ja. Seitdem ist völlig klar, dass du keine größeren Umbauarbeiten machen wirst.

Bei meinem letzten Beitrag hatte ich lediglich laut darüber nachgedacht, was sich mit **geringem Aufwand** evtl. noch retten ließe. Die Abfrage nach dem Inhalt der linken Hand bei der Benutzung der Schleuder ist vorhanden (war bisher diese == 999 Geschichte), und so war die Hoffnung, dass sich das leicht auf eine Abfrage auf "Hand frei" umändern lässt.

Den Code von seg038 werde ich mir heute abend weiter anschauen, wenn ich mehr Zeit habe.
Zitieren
Wenn ich in mit drei Fingern den Goldschild trage und zwei Finger frei habe, um einen Stein zu halten, kann ich mit denselben zwei Fingern auch den Stein aufheben, in die Zwille einspannen und loslassen. Ich sehe deshalb keine Veranlassung, extra die bloße Hand abzufragen, mal abgesehen davon, dass dies schon wieder ein Aspekt unerträglichen Mikromanagements darstellen würde. Ich frage mich ja sowieso, warum die Originalautoren vom Spieler nicht verlangt haben, vor dem Essen jedes Mal die Waffen und Schilde manuell abzunehmen. "Asgrimm hat keine Hand frei, um den Bierkrug in die Hand zu nehmen!" Der Extraaufwand bezieht sich auf das gewünschte Ändern der Textmeldung, welche eine Aktualisierung nicht nur der SCHICKM.EXE, sondern der SCHICK.DAT erfordern würde. Diese geänderte Textmeldung wäre aber in Konsequenz wieder notwendig, wenn man die Abfrage der bloßen Hand implementieren würde. Du siehst also, jede vermeintlich kleine Änderung zieht einen Rattenschwanz an notwendigen Folgeänderungen nach sich.

Man könnte ja auch noch berücksichtigen, dass das Aufheben eines Steins zur Verwendung mit der Steinschleuder Zeit kostet, was dazu führt, dass bei Verwendung der Schleuder ein BP-Malus zu vergeben ist. Da man aber nicht jeden Stein einzeln aufhebt, sondern je nach Gelegenheit mehrere Steine gleichzeitig aufhebt, kommt dieser BP-Malus nur in jeder 1W6-ten Kampfrunde zum Tragen. Wie Du an dieser sarkastischen Überlegung siehst, könnte man bei entsprechender Realitätsversessenheit noch ganz andere Saiten aufziehen. Deswegen würde ich sagen, wir lassen es dabei: Schleuder braucht keine Munition und auch keine zweite leere Hand.
Zitieren
Schild und Zauberstab geht streng genommen gar nicht, weil der Zauberstab / Hexenbesen eigentlich zweihändig ist. Vermutlich war die Möglichkeit ihn einhändig zu führen eine Komfortfunktion der Programmierer. damit auch die schwächeren Heldenklassen gewisse Rüstungsteile tragen können. Schild und Steinschleuder gleichzeitig zu benutzen halte ich aber nicht für sehr realistisch. Muss man aber nicht verwenden, also nur rein mit der einfachen Modifikation, einfach keine Munition für die Schleuder.
Hacke Tau, Kumpels!

Ihr seid Freunde der alten NLT? Freunde des Mikromanagements? Ihr sucht eine neue Herausforderung, weil euch die NLT zu leicht war?

Dann spielt doch mal Schicksalsklinge HD 1.36 von Crafty Studios!
Zitieren
(08.01.2021, 12:45)NRS schrieb: Wenn ich in mit drei Fingern den Goldschild trage und zwei Finger frei habe, um einen Stein zu halten, kann ich mit denselben zwei Fingern auch den Stein aufheben, in die Zwille einspannen und loslassen. Ich sehe deshalb keine Veranlassung, extra die bloße Hand abzufragen, mal abgesehen davon, dass dies schon wieder ein Aspekt unerträglichen Mikromanagements darstellen würde. Ich frage mich ja sowieso, warum die Originalautoren vom Spieler nicht verlangt haben, vor dem Essen jedes Mal die Waffen und Schilde manuell abzunehmen. "Asgrimm hat keine Hand frei, um den Bierkrug in die Hand zu nehmen!"

Ich gebe dir völlig recht, was das Vermeiden von unnötigem Mikromanagement in unkritischen Situationen angeht. Aber die Benutzung der Schleuder findet halt im Kampf statt, und da empfinde ich einen munitionslosen Angriff unter gleichzeitigem Genuss von RS +2 durch einen Schild als nicht mehr recht ausgewogen. Da kommt ja ein altgedienter Armbrustschütze noch ins Grübeln. Abgesehen davon sehe ich auch keine Verwerfungen im Mikromanagement: Die linke Hand eines Schleuderschützen bleibt halt leer, fertig.

(08.01.2021, 12:45)NRS schrieb: Der Extraaufwand bezieht sich auf das gewünschte Ändern der Textmeldung, welche eine Aktualisierung nicht nur der SCHICKM.EXE, sondern der SCHICK.DAT erfordern würde.

Dass das einen großen Extraaufwand darstellen könnte, damit hatte ich ehrlich nicht gerechnet. Die bloße Änderung der Datei kann es ja wohl nicht sein, also muss es wohl an der Erstellen der Differenzdatei und Hash-Werten etc. liegen.

(08.01.2021, 12:45)NRS schrieb: Man könnte ja auch noch berücksichtigen, dass das Aufheben eines Steins zur Verwendung mit der Steinschleuder Zeit kostet, was dazu führt, dass bei Verwendung der Schleuder ein BP-Malus zu vergeben ist. Da man aber nicht jeden Stein einzeln aufhebt, sondern je nach Gelegenheit mehrere Steine gleichzeitig aufhebt, kommt dieser BP-Malus nur in jeder 1W6-ten Kampfrunde zum Tragen. Wie Du an dieser sarkastischen Überlegung siehst, könnte man bei entsprechender Realitätsversessenheit noch ganz andere Saiten aufziehen.

Was die BP angeht, ist das Kind schon vorher in den Brunnen gefallen, spätestens beim Spannen einer Armbrust...

(08.01.2021, 12:45)NRS schrieb: Deswegen würde ich sagen, wir lassen es dabei: Schleuder braucht keine Munition und auch keine zweite leere Hand.

Wie so oft im Leben: Deine Meinung, meine Meinung. Aber vor allem dein Patch und deine Zeit und somit deine Entscheidung!
Zitieren
siebenstreich schrieb:Aber die Benutzung der Schleuder findet halt im Kampf statt, und da empfinde ich einen munitionslosen Angriff unter gleichzeitigem Genuss von RS +2 durch einen Schild als nicht mehr recht ausgewogen
Angesichts der mickrigen Schadenspunktzahl der Schleuder ist eine Erschütterung der Spielbalance durch "Supermänner mit Steinschleuder und Schild" eher nicht zu befürchten.
siebenstreich schrieb:Dass das einen großen Extraaufwand darstellen könnte, damit hatte ich ehrlich nicht gerechnet. Die bloße Änderung der Datei kann es ja wohl nicht sein, also muss es wohl an der Erstellen der Differenzdatei und Hash-Werten etc. liegen.
Da die SCHICK.DAT aus vielen kleinen Einzeldateien besteht, muss die Datei vor Erstellung der binären Differenzdatei komplett neu aufgebaut werden. Da käme man nur dann drum herum, wenn der Ersatztext exakt die gleiche Länge wie der Originaltext hätte, und darauf will ich mich nicht festlegen. Aber wie gesagt, es ist nicht alleine der Aufwand, sondern dass ich inhaltlich davon nicht überzeugt bin.

Schauen wir lieber erstmal, ob wir bezüglich einfrierendem Kampfbildschirm noch wohin kommen. Du hast ja vom bloßen Ansehen schon mehr von der Logik verstanden als ich.
Zitieren
(08.01.2021, 10:39)siebenstreich schrieb: (Logik: das gleichzeitige Herumtragen von Schleuder und Goldschild ist kein Problem. Aber zum Betätigen der Schleuder muss die zweite Hand einen Stein aufheben und in die Schleuder einlegen.)
(08.01.2021, 12:45)NRS schrieb: Wenn ich in mit drei Fingern den Goldschild trage und zwei Finger frei habe, um einen Stein zu halten, kann ich mit denselben zwei Fingern auch den Stein aufheben, in die Zwille einspannen und loslassen. Ich sehe deshalb keine Veranlassung, extra die bloße Hand abzufragen, mal abgesehen davon, dass dies schon wieder ein Aspekt unerträglichen Mikromanagements darstellen würde.[...] Der Extraaufwand bezieht sich auf das gewünschte Ändern der Textmeldung, welche eine Aktualisierung nicht nur der SCHICKM.EXE, sondern der SCHICK.DAT erfordern würde. Diese geänderte Textmeldung wäre aber in Konsequenz wieder notwendig, wenn man die Abfrage der bloßen Hand implementieren würde. Du siehst also, jede vermeintlich kleine Änderung zieht einen Rattenschwanz an notwendigen Folgeänderungen nach sich.
Ich würde siebenstreich in der Sache zustimmen, dass es logischer wäre, wenn man eine Schleuder nicht mit Schild in der linken Hand benutzen kann, wie es auch bei allen anderen Schusswaffen der Fall ist. Zuviel Micromanagement sehe ich darin auch nicht, jedenfalls nicht mehr als bei der Benutzung von Pfeil und Bogen. Wenn das aber - wie NRS ja dargelegt hat - ein erheblicher zusätzlicher Aufwand ist, die Schleuder als zweihändig zu klassifizieren bzw. eine entsprechende Fehlermeldung ausgeben zu lassen, dann halte ich es für durchaus vertretbar, die einhändige Benutzung der Schleuder zuzulassen; das ist ja bereits eine erhebliche Verbesserung gegenüber der gänzlich unbenutzbaren Schleuder. - Und von der Logik her kann man eben sagen, dass jeder Held mit Schleuder ein paar Steinchen in der Hosentasche (oder wenn er keine Hose trägt, in einer Tasche seiner Gewandung) trägt und es in einem Angriffszug enthalten ist, kurz den Schild abzusetzen, einen Stein zu schleudern und den Schild wieder in die Hand zu nehmen. Dass das für einen bedrängten (d.h. auch im Nahkampf gebundenen) Helden schwierig ist, muss man halt mal hinnehmen.
"Haut die Säbel auffe Schnäbel."
Zitieren
Ich kann grad nicht nachschauen, aber ist die Schleuder in diesem Fall überhaupt eine Zwille, oder eher sowas?

[Bild: Liber.jpg]

In diesem Beispiel ist ja sogar ein Kämpfer mit Schild und einhändig bedienter Schleuder zu sehen. :D


(Aber ich bilde mir ein, dass das Item wie eine Zwille aussah. Hmmm. Hatte es nie benutzt)
Zitieren
(08.01.2021, 15:36)aeyol schrieb: Ich kann grad nicht nachschauen, aber ist die Schleuder in diesem Fall überhaupt eine Zwille, oder eher sowas?
[...]

(Aber ich bilde mir ein, dass das Item wie eine Zwille aussah. Hmmm. Hatte es nie benutzt)

Ich habe das Teil auch immer als eine Zwille interpretiert, nicht als eine dieser "klassischen" Schleudern. Aber ich denke, beides sollte möglich sein. In letztgenannter Variante müsste der Stein dann ja nur einmal eingelegt werden, was wohl auch einhändig gehen dürfte oder mit Schild in der Hand.

Davon einmal abgesehen gibt es ja in der Tat viele Umstände im Spiel, die nicht so ganz realistisch sind. Wie etwa die bereits genannte Kombination von Hexenbesen oder Zauberstab und Goldschild. Oder die brennende Fackel im Gepäck. Oder das Bepflastern mit Wirselkraut im Kampf. Daher finde ich persönlich, dass das mit der Schleuder und einem Schild kein wirkliches Problem ist. Erst recht nicht, wenn ein Bogenschütze problemlos 99 Pfeile in einer Hand tragen kann. ;)
"Alrik war durstig und hat getrunken."
Zitieren
(08.01.2021, 15:36)aeyol schrieb: Hatte es nie benutzt)
Ging ja auch nicht.  ;)
"Haut die Säbel auffe Schnäbel."
Zitieren
@aeyol: Sehr guter Punkt. Bisher hatte ich mir eine Zwille vorgestellt, einfach weil das Bild am Ausrüstungsbildschirm danach ausschaut. Aber jetzt frage ich mich, welches elastische Material da eigentlich eingespannt sein soll in der mittelalterlichen Welt Aventuriens. Insofern sollte es sich wohl eher um eine klassische Schleuder handeln, wo der Stein in einer rotierenden Schlinge beschleunigt wird. Diese Erkenntnis, kombiniert mit dem Bild von aeyol und flankiert von den Argumenten von Alrik, haben mich jetzt umdenken lassen.

Ich gebe mich also geschlagen. Die Schlinge soll eine munitionslose einhändige Waffe sein.
Zitieren
Habe jetzt noch die Wikipedia studiert.

Unter Zwille steht "Trotz ihrer Einfachheit existieren Zwillen erst seit dem 19. Jahrhundert, da erst die 1839 erfundene Vulkanisation von Kautschuk ihre Herstellung ermöglicht.", womit ich meine Überlegung von oben bestätigt sehe. In Aventurien dürfte es eher keine kampftauglichen Zwillen geben.

Unter Schleuder bin ich zum einen dem Bild von aeyol begegnet, und zum anderen steht dort "Der Schleuderer benötigt im Gegensatz zu einem Bogenschützen bei kurzen Schleudern für den Wurf nur eine Hand. Es gibt Techniken, um auch beim Nachladen beispielsweise einen Schild in der Hand zu halten."
Zitieren
Also im Spiel schaut das Dingens so aus:

.png   Steinschleuder.png (Größe: 203 Bytes / Downloads: 107)
Zitieren
(08.01.2021, 20:20)NRS schrieb: Also im Spiel schaut das Dingens so aus:

Klar, in Ermangelung von genaueren Unterscheidungen des Wortes "Schleuder" und der ohnehin mitunter durchaus fragwürdigen, grafischen Umsetzungen im gesamten Spiel bzw. der Trilogie kommen dann solche Exemplare bei rum.

Durch das Bild von aeyol und die Verlinkung von siebenstreich dürfte dann m.M.N. recht klar sein, dass eine solche Zwille eigentlich nicht passend sein dürfte, der Grafik zum Trotz.

Und ich denke, wir haben ja nun einen Konsens gefunden, mit dem jeder sehr zufrieden ist. :)
"Alrik war durstig und hat getrunken."
Zitieren
Danke, NRS. Eine Zwille also, das deckt sich mit meiner Erinnerung.

Ich vermute, dass bei Attic das Wort "Schleuder" ohne genauere Vorstellung bis zum Grafiker durchgereicht worden ist, und der hat dann halt was gemalt. Interessant wäre auch zu wissen, ob die Schleuder in der Schicksalsklinge frei erfunden wurde, oder ob sie auf dem damaligen DSA-Regelwerk basiert. Im zweiteren Fall könnte man also (entsprechenden Literaturzugang vorausgesetzt) in der Quelle nachschlagen. Die DSA-Sachen waren ja immer recht schön illustriert.
Zitieren
(08.01.2021, 14:19)NRS schrieb: Da die SCHICK.DAT aus vielen kleinen Einzeldateien besteht, muss die Datei vor Erstellung der binären Differenzdatei komplett neu aufgebaut werden. Da käme man nur dann drum herum, wenn der Ersatztext exakt die gleiche Länge wie der Originaltext hätte, und darauf will ich mich nicht festlegen.

ok, wenn sich die Länge der SCHICK.DAT ändert, dann verstehe ich das Problem. Ich hätte vermutet, dass man sich mit Füllzeichen behelfen kann, wenn der Text kürzer wird.

Zitat:Schauen wir lieber erstmal, ob wir bezüglich einfrierendem Kampfbildschirm noch wohin kommen. Du hast ja vom bloßen Ansehen schon mehr von der Logik verstanden als ich.

Ein wenig hab ich jetzt noch weiter geschaut. Mir ist folgendes aufgefallen:

(1)
Das Argument bp_needed (also die zuvor berechnete Distanz zum Zielfeld) der Funktion FIG_backtrack kann potentiell bis zu 50 groß sein, wegen der Bedingung "l_var2 < 50" in Zeile 487 bei der Distanzberechnung. Die vier in FIG_backtrack berechneten Wege werden unter TEXT_OUTPUT_BUF aber nur im 20er-Abstand abgelegt. Bei Entfernungen > 20 (die bei einem Charakter in der Ecke und vielen herumstehenden zweifeldrigen Gegnern durchaus auftreten können) wird also aus dem vorgesehenen Bereich rausgeschrieben.

Soweit ich es überblicke, passt aber trotzdem alles, ein klarer Fall von mehr Glück als Verstand.
Letztlich sind nur die vordersten Einträge in diesen Wegen wichtig, nämlich so viele, wie der Charakter BP übrig hat. Den Rest müsste man (nach einer Endmarke -1) gar nicht mehr schreiben, aber das Programm schreibt etwas grobschlächtig trotzdem alles mit -1 voll. Weil man meines Wissens max. 12 BP haben kann (mit einem Axxeleratus), ist der wesentliche Teil also im 20er Speicherfenster drin. Weil die vier Wegeinträge der Reihe nach erzeugt werden, überschreiben sie sich auch nicht gegenseitig den relevanten Bereich. Und weil TEXT_OUTPUT_BUF insgesamt die Länge 300 hat, wird auch nichts hinten raus in fremde Speicherbereiche reingeschrieben.
Auf Nummer sicher gehen könnte man hier, indem man in den Zeilen 155-159 anstelle von Vielfachen von 20 Vielfache von 50 benutzt (oder noch besser von 60, um mit der Endmarke auf der sicheren Seite zu sein.)

(2)
Dann habe ich noch gefunden, dass in diesem Forum tatsächlich schonmal über ein Aufhängen des Kampfs in der Funktion FIG_backtrack diskutiert wurde, nämlich in diesem Beitrag. Dort war das ursächliche Problem wo anders, was aber dazu geführt hat, dass FIG_backtrack mit dem Charakterfeld als Zielfeld (also Distanz 0) aufgerufen wird. In Folge liefert FIG_count_smth in Zeile 249 immer das Ergebnis 99, womit es dann beim memcpy in Zeile 263 kracht, weil found_dir nicht initialisiert ist. Keine Ahnung, ob das bei uns auch ein Bauteil des Problems sein kann. Man müsste mal mitprotokollieren, ob FIG_backtrack irgendwann mit Distanz 0 aufgerufen wird.
Zitieren




Benutzer, die gerade dieses Thema anschauen: 4 Gast/Gäste