DSA1 Kampfsystem
Aus FreedsaWiki
Inhaltsverzeichnis |
ALLGEMEINES
Besondere Dateien
FIGHT.LST
Die ersten beiden Bytes (Word) sind die Anzahl der Einträge in der Datei. Somit ist ein Eintrag für einen Kampf 216 Bytes lang.
| 0x00 - 0x13 (00 - 19) | Name | nicht geprüft |
| 0x14 - 0x15 (20 - 21) | Nummer des Scenarios | nicht geprüft |
| 0x16 - 0x79 (22 - 121) | Gegner (a 5 Byte; maximal 20 Gegner) | nicht geprüft |
| 0x7A - 0x95 (122 - 149) | 7 Spieler (a 4 Byte) | nicht geprüft |
| 0x96 - 0xD1 (150 - 209) | Beute | nicht geprüft |
| 0xD2 - 0xD3 (210 - 211) | ??? | nicht geprüft |
| 0xD4 - 0xD5 (212 - 213) | Silberstücke | nicht geprüft |
| 0xD6 - 0xD7 (214 - 215) | ??? | nicht geprüft |
Die Gegner-Daten sehen wie folgt aus:
| 0x00 | ID des Gegners (siehe MONSTER.DAT) | nicht geprüft |
| 0x01 | Position ?-Achse | nicht geprüft |
| 0x02 | Position ?-Achse | nicht geprüft |
| 0x03 | Blickrichtung | nicht geprüft |
| 0x04 | Runde des Erscheinens (beginnend mit 0) | nicht geprüft |
Die Spieler-Daten sehen wie folgt aus:
| 0x00 | Position ?-Achse | nicht geprüft |
| 0x01 | Position ?-Achse | nicht geprüft |
| 0x02 | Blickrichtung | nicht geprüft |
| 0x03 | Startrunde | nicht geprüft |
Die Startrunde ist meist mit 0x00 belegt, nur bei Überraschungskämpfen Nachts auf das Camp sind sie mit 0x01 belegt, wodurch die Gegner zuerst ziehen können.
Beute:
| 0x00 | ID Gegenstand | nicht geprüft |
| 0x01 | Anzahl (bei stapelbaren Gegenständen) | nicht geprüft |
SCENARIO.LST
Die ersten beiden Bytes (Word) sind die Anzahl der Einträge in der Datei. Somit ist ein Eintrag für ein Kampfszenario 621 Bytes lang.
MONNAMES
MONNAMES ist eine Datei mit Nullterminierten Bytearrays (C-Strings) wobei jeder String Einzahl und Mehrzahl enthält, durch 0x2E getrennt. Die Datei beginnt mit einen Namen, der nur aus einem Leerzeichen (0x20) besteht. Das ist insofern wichtig, als die MONNAMES die Namen der Monster in der Reihenfolge enthält, in der sie in der MONSTER.DAT vorkommen und letztere mit einem leeren Monster beginnt.
MONSTER.DAT
Enthält die Vorlagen aller Gegner. Die Vorlagen werden benutzt um die Charakterbögen der echten Gegner auszufüllen. Jede Vorlage hat eine Länge von 44 Byte. Die Datei beginnt mit einem leeren Gegner, d.h. alle Werte sind mit 0x00 belegt. Einige Werte bestehen aus einem Würfelwurf mit Modifikator der Form nWm+o. Der Typ eines Würfelwurfs ist ein Word.
n = Anzahl der Würfel (die hochstwertigen 4 Bit) m = Typ des Würfels (die nächsten 4 Bit) (1=W6, 2=W20, 3=W3, 4=W4, 0 und alles >4=W4) o = Modifikator (die niederwertigen 8 Bit) als vorzeichenbehaftetes Byte [-128 bis 127]
Bsp:
0x2100 bedeutet 2W6+0 0x2205 bedeutet 2W20+5 0x24ff bedeutet 2W4+(-1)
Die Talente sind als Array mit 7 solcher Würfelwerte implementiert.
Die einzelnen Bytes sind wie folgt belegt (nicht überprüft!):
| 0x00 (00) | ID | |
| 0x01 (01) | ID Grafik-Set | |
| 0x02 (02) | Rüstungsschutz | S8 |
| 0x03 (03) | MU Würfelwert | Word (Würfelwert) nicht geprüft |
| 0x05 (05) | KL Würfelwert | Word (Würfelwert) nicht geprüft |
| 0x07 (07) | CH Würfelwert | Word (Würfelwert) nicht geprüft |
| 0x09 (09) | FF Würfelwert | Word (Würfelwert) nicht geprüft |
| 0x0B (11) | GE Würfelwert | Word (Würfelwert) nicht geprüft |
| 0x0D (13) | IN Würfelwert | Word (Würfelwert) nicht geprüft |
| 0x0F (15) | KK Würfelwert | Word (Würfelwert) nicht geprüft |
| 0x11 (17) | LE Würfelwert (das Ergebnis wird durch 6 geteilt und mit 5 multipliziert | Word (Würfelwert) nicht geprüft |
| 0x13 (19) | AE Würfelwert | Word (Würfelwert) nicht geprüft |
| 0x15 (21) | Magieresistenz | Word (Würfelwert) |
| TODO | ||
| 0x17 (23) | Erst-AP | nicht geprüft |
| 0x18 (24) | Anzahl Attacken | nicht geprüft |
| 0x19 (25) | AT | S8 |
| 0x1A (26) | PA | S8 |
| 0x1B (27) | Schaden erster Angriff | Word (Würfelwert) nicht geprüft |
| 0x1D (29) | Schaden zweiter Angriff | Word (Würfelwert) nicht geprüft |
| 0x1F (31) | Bewegungspunkte | nicht geprüft |
| 0x20 (32) | Immunität gegen nicht-magische Waffen (Flag? Wert?) | nicht geprüft |
| 0x21 (33) | ID Magierklasse (nach welcher Liste?) | nicht geprüft |
| 0x22 (34) | Stufe | nicht geprüft |
| 0x23 (35) | Größenklasse (Spinnen und Zwerge 2, Rest 3, Oger 4, Drachen 5) | nicht geprüft |
| 0x24 (36) | Flags (1=Tier;2=?;4=?;8=?;16=?;32=?;64=?;128=? | nicht geprüft |
| 0x25 (37) | Anzahl Geschosse | nicht geprüft |
| 0x26 (38) | Schaden Schusswaffen | Word (Würfelwert) nicht geprüft |
| 0x28 (40) | Anzahl Wurfwaffen | nicht geprüft |
| 0x29 (42) | Schaden Wurfwaffen | Word (Würfelwert) nicht geprüft |
| 0x2B (43) | LE Fluchtwert (0 bis 10) | ?8 |
Charakterbögen der Gegner
Der Charakterbogen eines Gegners hat eine Länge von 62 Byte. Er wird aus den Werten der MONSTER.DAT generiert. Einige Werte werden übertragen, Andere ausgewertet. So hat der Mut-Würfelwert von z.B 1W6+7 aus der MONSTER.DAT zur Folge, dass im Charakterbogen ein MU-Wert von 10 erscheint.
| 0x00 (00) | ID | ?8 |
| 0x01 (01) | ID Grafik-Set | ?8 |
| 0x02 (02) | Rüstungsschutz | S8 |
| 0x03 (03) | MU | ?8 |
| 0x04 (04) | MU | ?8 |
| 0x05 (05) | KL | ?8 |
| 0x06 (06) | KL | ?8 |
| 0x07 (07) | CH | ?8 |
| 0x08 (08) | CH | ?8 |
| 0x09 (09) | FF | ?8 |
| 0x0a (10) | FF | ?8 |
| 0x0b (11) | GE | ?8 |
| 0x0c (12) | GE | ?8 |
| 0x0d (13) | IN | ?8 |
| 0x0e (14) | IN | ?8 |
| 0x0f (15) | KK | ?8 |
| 0x10 (16) | KK | ?8 |
| 0x11 (17) | LE | ?16 |
| 0x13 (19) | LE | ?16 |
| 0x15 (21) | AE | ?16 |
| 0x17 (23) | AE | ?16 |
| 0x19 (25) | MR | ?8 Bei Kampf 0xbc ist MR = 5 |
| 0x1a (26) | Erst-AP | ?8 |
| 0x1b (27) | Anzahl Attacken | ?8 nicht geprüft |
| 0x1c (28) | AT | S8 |
| 0x1d (29) | PA | S8 |
| 0x1e (30) | Schaden erster Angriff | Word (Würfelwert) nicht geprüft |
| 0x20 (32) | Schaden zweiter Angriff | Word (Würfelwert) nicht geprüft |
| 0x22 (34) | Bewegungspunkte | ?8 (maximal 10/0x0a) |
| 0x23 (35) | Unbelegt? | ?8 nicht geprüft |
| 0x24 (36) | Immunität gegen nicht-magische Waffen? (Nur bei Heshthot und Orkchampion) | ?8 nicht geprüft |
| 0x25 (37) | ID Magierklasse (nach welcher Liste, jeder Wert ausser 0xff und 0x00 nur einmal)? | ?8 nicht geprüft |
| 0x26 (38) | Wird immer auf 0xff gesetzt | ?8 nicht geprüft |
| 0x27 (39) | Wert wird aus einem Array geholt.*((DS:0xbd28+enemy_nr*5)+0x19) | ?8 nicht geprüft |
| 0x28 (40) | Unbelegt? | ?8 nicht geprüft |
| 0x29 (41) | Stufe | ?8 nicht geprüft |
| 0x2a (42) | Unbelegt? | ?8 nicht geprüft |
| 0x2b (43) | Unbelegt? | ?8 nicht geprüft |
| 0x2c (44) | Unbelegt? | ?8 nicht geprüft |
| 0x2d (45) | Fight-ID des aktuellen Gegners | s8 |
| 0x2e (46) | Unbelegt? | ?8 nicht geprüft |
| 0x2f (47) | Anzahl der geblendeten Kampfrunden | u8 |
| 0x30 (48) | Unbelegt? | ?8 nicht geprüft |
| 0x31 (49) | Flags Bei Kampf 0xc0 && Enemy != "Orkchampion") Flags |= 0x20;); Flags &= 0xfe; | ?8 |
| 0x32 (50) | Flags Bei Kampf 0x5e && Enemy == "Kultist") Flags |= 0x04;) | ?8 |
| 0x33 (51) | Unbelegt? | ?8 nicht geprüft |
| 0x34 (52) | Grössenklasse | ?8 nicht geprüft |
| 0x35 (53) | Runde des Erscheinens (beginnend mit 0) | ?8 |
| 0x36 (54) | Flags (1=Tier?) | ?8 nicht geprüft |
| 0x37 (55) | Anzahl Geschosse | ?8 nicht geprüft |
| 0x38 (56) | Schaden Geschosse | Word (Würfelwert) nicht geprüft |
| 0x3a (58) | Anzahl Wurfwaffen | ?8 nicht geprüft |
| 0x3b (59) | Schaden Wurfwaffen | Word (Würfelwert) nicht geprüft |
| 0x3d (60) | LE Fluchtwert | ?8 |

