Skip to content

CHR NPC

Shihan edited this page Mar 17, 2020 · 1 revision

Table of Contents

Die Schicksalsklinge

CHR/NPC Dateien sind 1754 Bytes lang und besitzen keinen Header an dem die Spiel-Version erkannt werden kann.

Die Schicksalsklinge v3.02
0x0 16 byte Character-Array Name Dateistruktur: 1754 bytes
0x10 16 byte Character-Array Name
0x20 1 byte (?) Anzahl belegter Gegenstandsslots
0x21 1 byte integer (unsigned) Typus
0x22 1 byte integer (unsigned) Geschlecht
0x23 1 byte integer (unsigned) Größe (in cm)
0x24 2 byte integer (unsigned) Gewicht (in Unzen)
0x26 1 byte integer (unsigned) Gottheit
0x27 1 byte integer (unsigned) Stufe
0x28 4 byte integer (?) Abenteuerpunkte
0x2C 4 byte integer (?) Geld (in Hellern)
0x30 1 byte integer (?) RS-Bonus1 (RS-Bonus = RS-Bonus1 + RS-Bonus2)
0x31 1 byte integer (?) RS-Bonus2 (RS-Bonus = RS-Bonus1 + RS-Bonus2)
0x32 1 byte integer (signed) RS-BE (Rüstungsbehinderung)
0x33 1 byte integer (?) Verbleibende BP in Kampfrunde
0x34 1 byte integer (signed char) Mut (normaler Wert)
0x35 1 byte integer (signed char) Mut (momentaner Wert)
0x36 1 byte integer (signed char) Mut (Bonus/Malus)
0x37 1 byte integer (signed char) Klugheit (normaler Wert)
0x38 1 byte integer (signed char) Klugheit (momentaner Wert)
0x39 1 byte integer (signed char) Klugheit (Bonus/Malus)
0x3A 1 byte integer (signed char) Charisma (normaler Wert)
0x3B 1 byte integer (signed char) Charisma (momentaner Wert)
0x3C 1 byte integer (signed char) Charisma (Bonus/Malus)
0x3D 1 byte integer (signed char) Fingerfertigkeit (normaler Wert)
0x3E 1 byte integer (signed char) Fingerfertigkeit (momentaner Wert)
0x3F 1 byte integer (signed char) Fingerfertigkeit (Bonus/Malus)
0x40 1 byte integer (signed char) Gewandtheit (normaler Wert)
0x41 1 byte integer (signed char) Gewandtheit (momentaner Wert)
0x42 1 byte integer (signed char) Gewandtheit (Bonus/Malus)
0x43 1 byte integer (signed char) Intuition (normaler Wert)
0x44 1 byte integer (signed char) Intuition (momentaner Wert)
0x45 1 byte integer (signed char) Intuition (Bonus/Malus)
0x46 1 byte integer (signed char) Körperkraft (normaler Wert)
0x47 1 byte integer (signed char) Körperkraft (momentaner Wert)
0x48 1 byte integer (signed char) Körperkraft (Bonus/Malus)
0x49 1 byte integer (signed char) Aberglaube (normaler Wert)
0x4A 1 byte integer (signed char) Aberglaube (momentaner Wert)
0x4B 1 byte integer (signed char) Aberglaube (Bonus/Malus)
0x4C 1 byte integer (signed char) Höhenangst (normaler Wert)
0x4D 1 byte integer (signed char) Höhenangst (momentaner Wert)
0x4E 1 byte integer (signed char) Höhenangst (Bonus/Malus)
0x4F 1 byte integer (signed char) Raumangst (normaler Wert)
0x50 1 byte integer (signed char) Raumangst (momentaner Wert)
0x51 1 byte integer (signed char) Raumangst (Bonus/Malus)
0x52 1 byte integer (signed char) Goldgier (normaler Wert)
0x53 1 byte integer (signed char) Goldgier (momentaner Wert)
0x54 1 byte integer (signed char) Goldgier (Bonus/Malus)
0x55 1 byte integer (signed char) Totenangst (normaler Wert)
0x56 1 byte integer (signed char) Totenangst (momentaner Wert)
0x57 1 byte integer (signed char) Totenangst (Bonus/Malus)
0x58 1 byte integer (signed char) Neugier (normaler Wert)
0x59 1 byte integer (signed char) Neugier (momentaner Wert)
0x5A 1 byte integer (signed char) Neugier (Bonus/Malus)
0x5B 1 byte integer (signed char) Jähzorn (normaler Wert)
0x5C 1 byte integer (signed char) Jähzorn (momentaner Wert)
0x5D 1 byte integer (signed char) Jähzorn (Bonus/Malus)
0x5E 2 byte integer (signed) Lebensenergie aktuell
0x60 2 byte integer (signed) Lebenspunkte maximal
0x62 2 byte integer (signed) Astralenergie aktuell
0x64 2 byte integer (signed) Astralspunkte maximal
0x66 1 byte integer (signed) Magieresistenz
0x67 1 byte integer (?) Basiswert Atacke/Parade
0x68 7 x 1 byte integer (?) Attackewerte
0x6F 7 x 1 byte integer (?) Paradewerte
0x76 1 byte integer (signed) Attacke (Bonus/Malus) der Waffe
0x77 1 byte integer (signed) Parade (Bonus/Malus) der Waffe
0x78 1 byte integer (signed) Gattung der aktuellen Waffe
0x79 1 byte integer (signed) momentaner Attackenmodifikator (0x00 = normal; 0x02 = aggressiv; 0xFE = vorsichtig)
0x7A 1 bytes integer (signed) permanenter LE Verlust
0x7B 1 bytes Helden-ID für heldenbezogene Timer
0x7C 1 bytes Startausrüstung erhalten = 1, noch nicht erhalten = 0
0x7D 1 bytes Wirkung von Kräutern {keine = 0, Belmart = 1, Menchalkaktus = 2}
0x7E 1 bytes Unbekannt (Unbenutzt)
0x7F 1 byte integer (unsigned) Hunger (in Prozent)
0x80 1 byte integer (unsigned) Durst (in Prozent)
0x81 1 bytes signed Kampf-ID des Helden
0x82 1 byte Blickrichtung
0x83 1 byte Anzahl verbleibender Aktionen pro Kampfrunde (wird im Kampf geändert)
0x84 1 bytes Unbekannt
0x85 1 byte integer signed Zauberspruch-ID
0x86 1 byte integer (signed) Kampf-ID des zuletzt angegriffenen Gegners
0x87 1 byte Nummer der Heldengruppe
0x88 1 byte integer Tempel-ID (TYPEINDEX) in welcher sich der Held befindet
0x89 1 byte integer signed NPC-ID {Held = 0, NARIELL = 1, HARIKA = 2, CURIAN = 3, ARDORA = 4, GARSVIK = 5, ERWO = 6}
0x8A 1 byte integer (unsigned) Position in der Heldengruppe (0x01 bis 0x06, 0x00 = nicht in der Heldengruppe)
0x8B 4 bytes integer (?) Unbekannt
0x8F 4 bytes integer (?) Unbekannt
0x93 1 byte signed Rezept-ID (Alchemist)
0x94 1 byte Unbekannt
0x95 1 byte Unbekannt
0x96 1 byte Verbleibende Kampfrunden geblendet
0x97 1 byte Verbleibende Kampfrunden Ecliptifactus
0x98 1 byte Unbekannt
0x99 1 byte integer (signed) Schutz vor magischem Feuer (Feuerbann) 0/1
0x9A 1 byte integer Unsichtbar (Visibili Vanitar) 0 / 1
0x9B 1 byte Unbekannt
0x9C 1 byte Herbergs-ID (TYPEINDEX) in welcher sich der Held befindet (Alchemist)
0x9D 2 byte Unbekannt
0x9F 1 byte im Gefängnis = 1, normal = 0
0xA0 1 byte (bool) Axxeleratus aktiviert = 1
0xA1 1 byte (bool) Betrunken
0xA2 8 bytes Unbekannt (Unbenutzt)
0xAA 1 byte bitfield Status (Bitflags: Bit0 = tot, Bit1 = schläft, Bit2 = versteinert, Bit4 = Chamaelioni, Bit5 = verflucht, Bit6 = bewusstlos)
0xAB 1 byte bitfield Status (Bitflags: Bit1 = Duplicatus)
0xAC 2 bytes Unbekannt (Unbenutzt)
0xAE 5 byte struct leerer Slot für Krankheiten
0xB3 7× 5 byte struct Slots für Krankheiten { 1-Wundfieber, 2-Dumpfschädel, 3-Blaue Keuche, 4-Paralyse, 5-Schlachtenfieber, 6-Frostschäden, 7-Tollwut }
0xD6 5 byte struct leerer Slot für Gifte
0xDB 9× 5 byte struct Slots für Gifte { 1-Shurinknollengift, 2-Arax, 3-Angstgift, 4-Schlafgift, 5-Goldleim, 6-Krötenschemel, 7-Lotusgift, 8-Kukris, 9-Bannstaubvergiftung }
0x108 9× 1 byte integer (signed) Talentwerte Kampf
0x111 10× 1 byte integer (signed) Talentwerte Körper
0x11B 7× 1 byte integer (signed) Talentwerte Gesellschaft
0x122 6× 1 byte integer (signed) Talentwerte Natur
0x128 9× 1 byte integer (signed) Talentwerte Wissen
0x131 9× 1 byte integer (signed) Talentwerte Handwerk
0x13A 2× 1 byte integer (signed) Talentwerte Intuition
0x13C 1 byte integer (signed) Aufgesparte Talentsteigerungen
0x13D 1 byte integer (unsigned) Zauber[0]
0x13E 5× 1 byte integer (signed) Zauberfertigkeiten Antimagie
0x143 12× 1 byte integer (signed) Zauberfertigkeiten Beherrschung
0x14F 6× 1 byte integer (signed) Zauberfertigkeiten Dämonologie
0x155 3× 1 byte integer (signed) Zauberfertigkeiten Elemente
0x158 6× 1 byte integer (signed) Zauberfertigkeiten Bewegung
0x15E 5× 1 byte integer (signed) Zauberfertigkeiten Heilung
0x163 7× 1 byte integer (signed) Zauberfertigkeiten Hellsicht
0x16A 4× 1 byte integer (signed) Zauberfertigkeiten Illusion
0x16E 9× 1 byte integer (signed) Zauberfertigkeiten Kampf
0x177 2× 1 byte integer (signed) Zauberfertigkeiten Verständigung
0x179 16× 1 byte integer (signed) Zauberfertigkeiten Verwandlung
0x189 10× 1 byte integer (signed) Zauberfertigkeiten Veränderung
0x193 1 byte integer (signed) Aufgesparte Zaubersteigerungen
0x194 1 byte integer (unsigned) Magische Schulung
0x195 1 byte integer (unsigned) Stabzauber (aktiv beim Zauberstab, Magier)
0x196* 14 bytes* Gegenstand Kopf (Helm)
0x1A4* 14 bytes* Gegenstand Arm (Armschiene)
0x1B2* 14 bytes* Gegenstand Körper (Rüstung)
0x1C0* 14 bytes* Gegenstand rechte Hand
0x1CE* 14 bytes* Gegenstand linke Hand
0x1DC* 14 bytes* Gegenstand Beine (Hose)
0x1EA* 14 bytes* Gegenstand Füße (Schuhe)
0x1F8* 14 bytes* Gegenstand Rucksack #1
0x206* 14 bytes* Gegenstand Rucksack #2
0x214* 14 bytes* Gegenstand Rucksack #3
0x222* 14 bytes* Gegenstand Rucksack #4
0x230* 14 bytes* Gegenstand Rucksack #5
0x23E* 14 bytes* Gegenstand Rucksack #6
0x24C* 14 bytes* Gegenstand Rucksack #7
0x25A* 14 bytes* Gegenstand Rucksack #8
0x268* 14 bytes* Gegenstand Rucksack #9
0x276* 14 bytes* Gegenstand Rucksack #10
0x284* 14 bytes* Gegenstand Rucksack #11
0x292* 14 bytes* Gegenstand Rucksack #12
0x2A0* 14 bytes* Gegenstand Rucksack #13
0x2AE* 14 bytes* Gegenstand Rucksack #14
0x2BC* 14 bytes* Gegenstand Rucksack #15
0x2CA* 14 bytes* Gegenstand Rucksack #16
0x2D8 2 byte integer (?) momentane Last
0x2DA 1024 bytes Charakter Bild (32x32 Pixel, 8 bpp, Palette #1)

Änderungen DSA 2 und DSA 3

  • ab DSA 2 sind die Items 27 Bytes groß, von daher verschieben sich die Item offsets wie folgt:
TODO!!!!!!!!!!!!!!!!!
Offset Datentyp Bedeutung

Inventarslots

ab DSA 1

Offset Datentyp Bedeutung
0x00 2 byte Item-ID
0x02 2 byte Zähler für gestapelte Gegenstände
0x04 1 byte Flags: Bit7: analysiert/Odem Arcanum (in Riva wird bei Analyse Bit 6 & 7 gesetzt), Bit6 + Bit5: permanent vergiftet, Bit3: magisch, Bit2: leer, Bit1: halbleer, Bit0: kaputt
0x05
0x06 1 byte Bruchfaktor(genaugenommen der Waffenzustand, die Werte im Spiel reichen von -99(unzerbrechlich)und von -5 bis 7. Werte > 7 werden im Spiel nicht mehr richtig dargestellt. Besitzt eine Waffe einen Zustand von 7 und wird weiter beschädigt, dann zerbricht sie)
0x07 1 byte Benutzt, wenn nicht 0
0x08 1 byte Timer für Lichtquellen (Fackel/Lampe)(zählt runter)
0x09 1 byte Gifttyp für mit Gift behandelte Waffen { 0-kein Gift, 1-Schurinknollengift, 2-Arax, 3-Angstgift, 4-Schlafgift, 5-Goldleim, 6-Krötenschemelgift, 7-Lotosgift, 8-Kukris, 9-Bannstaub, 10-Expurgicum, 11-Vomicum }
0x0a 1 byte Giftzähler für mit Gift behandelte Waffen (Anzahl der erfolgreichen Treffer bis das Gift verbraucht ist)
0x0b
0x0c
0x0d

ab DSA 2

Offset Datentyp Bedeutung
0x10 1 byte Schuhzustand (ab DSA 2)

Infos von Kunar (Larian Forum)

Heldenportrait

Die Portraits stehen am Ende der Heldendatei (*.CHR) und umfassen offset 0002D0 0A bis 0006D0 09 (oder anders ausgedrückt ab 2d0 (720) + a (10), also 2da (730)). Es sind 32x32 Pixel, also die letzten 1024 Byte in der Datei.

Auch NSC-Portraits lassen sich so benutzen, indem man die NPC-Dateien aus dem TEMP-Verzeichnis kopiert. Sie entsprechen den CHR-Datei der Helden (erwähnte ich bereits früher in diesem Faden).

Die Portraits benutzen nur die 32 Farben, welche mit den Hexcodes 20-3F beschrieben werden.

Sternenschweif/Schatten über Riva

CHR/NPC Dateien sind 1519 Bytes lang und besitzen einen Header an dem erkannt werden kann welches Spiel in welcher Version die Datei erstellt hat. CHR Dateien gibt es in Sternenschweif/Schatten über Riva nicht mehr: die Spielercharaktere werden im Unterverzeichnis GAMES in den CHARS*.DAT Dateien gespeichert (Dateigröße/1519 = enthaltene CHRs).

12 bytes Identifier (= "DSA VERSION\0") Header: 16 bytes
1 byte Unbekannt
1 byte Version Spielnummer (Schweif = 2, Riva = 3)
1 byte Version Major
1 byte Version Minor
...

Kategorie:DSA1Kategorie:DSA2Kategorie:DSA3