DT6
This lump is one of two containing attack data. Each attack is treated as a single block of data. The first 40 INTs of each record are stored in .DT6, the remainder are stored in records ATTACK.BIN, which is resizeable using BINSIZE.BIN
In the loadattackdata sub in loading.bas, the attack data is combined into a single INT array. The complete specification combining data from both lumps follows. Offsets are in INTs from the start of the combined attack data.
Grey fields are obsolete or unused. |
Complete Attack Data Formal Specs[edit]
Offset | Data | Meaning | ||||||
---|---|---|---|---|---|---|---|---|
0 | INT (1) | Animation picture | ||||||
1 | INT (1) | Animation palette, or -1 for default | ||||||
2 | INT (1) | Animation pattern:
0 = Cycle forward | ||||||
3 | INT (1) | Target Class:
0 = Enemy | ||||||
4 | INT (1) | Target Setting:
0 = Focused | ||||||
5 | INT (1) | Damage Equation:
0 = Normal: Atk - Def*.5 | ||||||
6 | INT (1) | Aim Math:
(In the following, 'Aim', 'Dog', 'Mag', 'Wil' refer to those stats, while AccStat and DogStat refer to "Base Accuracy Stat" and "Base Dodge Stat", AimMult and DogMult are the Accuracy multiplier and Dodge multiplier data, and Extra is Aim Math extra value) 0 = Normal: Aim*4 vs Dog | ||||||
7 | INT (1) | Base Attack Stat:
0 = Atk (attacker) | ||||||
8 | INT (1) | MP Cost | ||||||
9 | INT (1) | HP Cost | ||||||
10 | INT (1) | Money Cost | ||||||
11 | INT (1) | Extra Damage % | ||||||
12 | INT (1) | Chain-to attack number + 1, 0 for none | ||||||
13 | INT (1) | Chain Rate % (0-100) | ||||||
14 | INT (1) | Attacker Animation:
0 = Strike (shows weapon) | ||||||
15 | INT (1) | Attack Animation:
0 = Normal | ||||||
16 | INT (1) | Attack Delay (ticks) | ||||||
17 | INT (1) | Number of hits (range 1 to 20) | ||||||
18 | INT (1) | Target Stat:
0 = HP | ||||||
19 | INT (1) | Preferred target: 0 = default 1 = first 2 = closest 3 = farthest 4 = random 5 = weakest 6 = strongest 7 = weakest% 8 = strongest% | ||||||
20 - 23: Attack Bitsets 1 (64) |
BIT (1) | 0: Cure Instead of Harm | ||||||
BIT (1) | 1: Divide Spread Damage | |||||||
BIT (1) | 2: Absorb Damage | |||||||
BIT (1) | 3: Unreversable Picture | |||||||
BIT (1) | 4: Steal Item | |||||||
BIT (8) | 5 - 12: Elementary 1 - 8 Damage | |||||||
BIT (8) | 13 - 20: Bonus vs. Monster Type 1 - 8 (aka. Elemental 9 - 16 damage) | |||||||
BIT (8) | 21 - 28: Fail vs. Elementary 1 - 8 Resistance (Obsolete, see #Note 1) | |||||||
BIT (8) | 29 - 36: Fail vs. Monster Type 1 - 8 (Obsolete, see #Note 1) | |||||||
BIT (8) | 37: Cannot target enemy slot 0 - 7 | |||||||
BIT (4) | 45: Cannot target hero slot 0 - 3 | |||||||
BIT (1) | 49: Ignore attacker's extra hits | |||||||
BIT (1) | 50: Erase rewards (enemy target only) | |||||||
BIT (1) | 51: Show damage without inflicting | |||||||
BIT (1) | 52: Add Target to Stored Targets | |||||||
BIT (1) | 53: Delete Stored Targets | |||||||
BIT (1) | 54: Automatically choose target | |||||||
BIT (1) | 55: Show attack name | |||||||
BIT (1) | 56: Do not display Damage | |||||||
BIT (1) | 57: Reset target stat to max before hit | |||||||
BIT (1) | 58: Allow Cure to exceed maximum | |||||||
BIT (1) | 59: Useable Outside of Battle | |||||||
BIT (1) | 60: Damage MP (obsolete, but still supported) | |||||||
BIT (1) | 61: Do not randomize (obsolete, ignored if fixAttackMultipliers is on) | |||||||
BIT (1) | 62: Damage can be Zero | |||||||
BIT (1) | 63: Cause heroes to run away | |||||||
24 - 35 | FVSTR (1i+1i+10i=12i) | Attack Name, 10 characters max: First INT contains length, the second is unused | ||||||
36 | INT (1) | Caption Display Time:
-1 = Do not display | ||||||
37 - 56 | FVSTR (1i+38b=40b) | Attack Caption, 38 characters max (note that the length INT ant first 4 chars are stored in DT6 and the remainder of the caption is stored in ATTACK.BIN) | ||||||
57 | INT (1) | Caption Delay (range 0 to 16383) | ||||||
58 | INT (1) | Base Defense Stat:
0 = Default (Wil if base attack stat is Mag, Def otherwise) | ||||||
59 | INT (1) | Tag to Set 0 - none | ||||||
60 | INT (1) | Tag Condition 0 - Never | ||||||
61 | INT (1) | Tag Check 0 - none | ||||||
62 | INT (1) | Tag to Set #2 0 - none | ||||||
63 | INT (1) | Tag Condition #2 0 - Never | ||||||
64 | INT (1) | Tag Check #2 0 - none | ||||||
65 - 72: Bitsets 2 (128) |
BIT (1) | 0: Mutable | ||||||
BIT (1) | 1: Fail if target is Poisoned | |||||||
BIT (1) | 2: Fail if target is Regened | |||||||
BIT (1) | 3: Fail if target is Stunned | |||||||
BIT (1) | 4: Fail if target is Muted | |||||||
BIT (1) | 5: % based attacks damage instead of set (#Note 2) | |||||||
BIT (1) | 6: Check costs when used as a weapon | |||||||
BIT (1) | 7: Do not chain if attack fails | |||||||
BIT (1) | 8: Reset Poisoned register | |||||||
BIT (1) | 9: Reset Regened register | |||||||
BIT (1) | 10: Reset Stun Register | |||||||
BIT (1) | 11: Reset Mute Register | |||||||
BIT (1) | 12: Cancel target's attack | |||||||
BIT (1) | 13: Can't be canceled by other attacks | |||||||
BIT (1) | 14: Do not trigger spawning on attack | |||||||
BIT (1) | 15: Do not trigger spawning on death | |||||||
BIT (1) | 16: Check costs when used as an item in battle | |||||||
BIT (1) | 17: Re-check costs after attack delay | |||||||
BIT (1) | 18: Does not cause target to flinch | |||||||
BIT (1) | 19: Don't allow damage to exceed target stat | |||||||
BIT (1) | 20: Delay doesn't block further actions | |||||||
BIT (1) | 21: Force victory | |||||||
BIT (1) | 22: Force battle exit | |||||||
BIT (1) | 23: Never trigger counterattacks | |||||||
BIT (1) | 24: Healing poison register past max becomes regen and vice versa | |||||||
BIT (1) | 25: attack is not usable inside battle | |||||||
BIT (1) | 26: don't display miss | |||||||
BIT (1) | 27: don't display fail | |||||||
BIT (1) | 28: Hide attacker regardless of attacker animation | |||||||
BIT (1) | 29: Unhide attacker regardless of attacker animation | |||||||
BIT (1) | 30: Block actions when used as a counterattack in active mode | |||||||
BIT (1) | 31: Empty target ready meter | |||||||
BIT (1) | 32: Fill target ready meter | |||||||
BIT (1) | 33: Exclude this attack from hero auto-battle | |||||||
BIT (1) | 34: Ignore damage cap | |||||||
BIT (1) | 35: Replace stored targets (This is a WIP feature) | |||||||
BIT (44) | 36-79: Unused | |||||||
BIT (48) | 80 - 127: Element 17 - 64 Damage | |||||||
73 - 92 | VSTR (1i+38b = 40b) | Spell description | ||||||
93, 95, 97 | INT (1) x 3 | Item ID+1 to be consumed (or given) or 0 for none (x3) | ||||||
94, 96, 98 | INT (1) x 3 | Number of items to be consumed (or given) (x3) | ||||||
99 | INT (1) | Sound effect to be played on a hit + 1 (0 for none) | ||||||
100 | INT (1) | Stat for preferred target weakest/strongest 0 = same as target stat 1 = HP 2 = MP 3 = Atk 4 = Aim 5 = Def 6 = Dog 7 = Mag 8 = Wil 9 = Spd 10 = Ctr 11 = Focus 12 = extra Hits 13 = Poison register 14 = Regen register 15 = Stun register 16 = Mute register | ||||||
101 | INT(1) | Chain condition type 0: No special conditions | ||||||
102 | INT(1) | Chain condition primary value (val1) (meaning varies depending on Chain type) | ||||||
103 | INT(1) | Chain condition secondary value (val2) (meaning varies depending on Chain type) | ||||||
104 | Chain bits 0: Attacker must know the chained attack also | |||||||
105 | INT (1) | Else-Chain-to attack number + 1, 0 for none | ||||||
106 | INT(1) | Else-Chain condition type (see chain condition type for valid values) | ||||||
107 | INT (1) | Else-Chain Rate % (0-100) | ||||||
108 | INT (1) | Else-Chain condition value (meaning varies depending on Else-Chain type) | ||||||
109 | INT(1) | Else-Chain condition secondary value (meaning varies depending on Else-Chain type) | ||||||
110 | BIT(16) | Else-chain bits (see chain bits) | ||||||
111 | INT (1) | Instead-Chain-to attack number + 1, 0 for none | ||||||
112 | INT(1) | Instead-Chain condition type (see chain condition type for valid values) | ||||||
113 | INT (1) | Instead-Chain Rate % (0-100) | ||||||
114 | INT (1) | Instead-Chain condition value (meaning varies depending on Instead-Chain type) | ||||||
115 | INT(1) | Instead-Chain condition secondary value (meaning varies depending on Instead-Chain type) | ||||||
116 | BIT(16) | Instead-chain bits (see chain bits) | ||||||
117 | INT (1) | Sound effect when learned from item or levelup + 1 (0 for none) | ||||||
118 | INT (1) | Transmogrify enemy. new Enemy ID + 1 or 0 for no change | ||||||
119 | INT (1) | What to do with HP when transmogrifying 0=keep current | ||||||
120 | INT (1) | What to do with other stats when transmogrifying 0=keep current | ||||||
121-312 | AttackElementCondition (64) (6 bytes each) |
Conditions for attack failure if the target takes beyond some threshold of damage from some element. #Note 1 Note: if the 'Simulate old fail vs. element resist bit' general bitset is ON, then consider the absolute value of the
amount of damage taken by a target from the element (for Types 3 and 4 only!),
simulating the way in which the old fail bits ignored whether the Absorb bit was on.
| ||||||
313 | INT (1) | Weapon picture override. 0=use hero's weapon picture. >= is the weapon picture id +1 | ||||||
314 | INT (1) | Weapon palette override. -1 is default, >=0 is the palette number. This value is completely ignored if weapon picture override is 0. It is not possible to override palette without also overriding picture. | ||||||
315 | INT (1) | Weapon picture frame 0 handle X (only applies to wep picture override) | ||||||
316 | INT (1) | Weapon picture frame 0 handle Y (only applies to wep picture override) | ||||||
317 | INT (1) | Weapon picture frame 1 handle X (only applies to wep picture override) | ||||||
318 | INT (1) | Weapon picture frame 1 handle Y (only applies to wep picture override) | ||||||
319 | INT (1) | Attack delay (turns) | ||||||
320 | INT (1) | Dramatic Pause: number of ticks. This pause is part of the attack animation, and happens after the (undelayed) caption displays but before the visible animation happens. | ||||||
321 | INT (1) | Stat cost: index of stat + 1 (This incomplete feature is not in nightlies) | ||||||
322 | INT (1) | Stat cost: amount to decrement (This incomplete feature is not in nightlies) | ||||||
323 | INT (1) | Base Accuracy Stat (only used for Aim Math 9-12): -1 = Constant (value 1) | ||||||
324 | INT (1) | Base Dodge Stat (only used for Aim Math 9-12): Same as above, but dividing by number of targets is not available. | ||||||
325 | FLOAT | Accuracy multiplier #note 3 | ||||||
327 | FLOAT | Dodge multiplier #note 3 | ||||||
329 | FLOAT | Attack multiplier #note 3 | ||||||
331 | FLOAT | Defense multiplier #note 3 | ||||||
333 | FLOAT | Aim math extra value | ||||||
335 | FLOAT | Absorb rate #note 3 | ||||||
337 | INT (1) | Damage +/- randomization percentage (0 - 100) If fixAttackMultipliers is off, initialize to 20 unless "Do not randomize" was set | ||||||
338 | INT (1) | Damage display color override (0=default, >=1 is master palette index (color 0 not available)) | ||||||
339 | INT (1) | What to do with rewards when transmogrifying
0=Don't give rewards from old enemy | ||||||
340 | INT (1) | Whether to provoke counter attacks:
0=Default (use global setting gen(genDefCounterProvoke)) | ||||||
341 | INT (1) | Sound effect to be played on Miss + 1; 0 for same as Hit sound effect; -1 for none (This incomplete feature is not in nightlies) | ||||||
342 | INT (1) | Sound effect to be played on Fail + 1; 0 for same as Hit sound effect; -1 for none (This incomplete feature is not in nightlies) | ||||||
343 | INT (1) | Sound effect to be played on Hit, but steal failure + 1; 0 for same as Hit sound effect; -1 for none (This incomplete feature is not in nightlies) | ||||||
344 | INT (1) | X-offset of attack relative to target | ||||||
345 | INT (1) | Y-offset of attack relative to target | ||||||
346 | INT (1) | horizontal anchor&align of attack to target; -1=align left edges, 0=center, 1=align right edges | ||||||
347 | INT (1) | vertical anchor&align of attack to target; -1=align top edges, 0=center, 1=align bottom edges | ||||||
348 | INT (1) | change target controllable status - 0=no change, 1=make controllable, 2=make auto-acting, 3=set to default | ||||||
349 | INT (1) | change target's turncoat attacker status - 0=no change, 1=attacks allies, 2=attacks foes, 3=set to default | ||||||
350 | INT (1) | change target's defector target status - 0=no change, 1=changes sides, 2=remains loyal, 3=set to default | ||||||
351 | INT (1) | change target's flipped sprite status - 0=no change, 1=flipped, 2=unflipped, 3=set to default | ||||||
352 | INT (1) | Spawn an enemy if there is room (0 for none or enemy ID+1) |
Note 1[edit]
If fixAttackElementFails is OFF, then elemental fail thresholds should be read from the "fail vs. ..." bits:
- All conditions default to "None".
- If 'fail vs. elemental n resistance' is set, the element n condition is "If < 100% damage"
- If 'fail vs. enemytype n ' is set, the element n+8 condition is "If > 100% damage"
If fixAttackElementFails is ON, the old bits contain garbage.
Note 2[edit]
"% based attacks damage instead of set" is a very messy bitset. We planned to get rid of it, replacing Damage Equation = 5 or 6 with Damage Equation = 7 or 8 if this bitset is on (adding a new fix bit, "fixPercentageAttacks"), but this was never done.
Note 3[edit]
The marked multipliers are initialised to 1.0 when the fixAttackMultipliers upgrade is applied.
Note 4[edit]
Implementation not merged: https://bitbucket.org/rbv/ohrrpgce/commits/branch/attacksounds
References to other lumps[edit]
Field | Indicating record in lump: |
---|---|
Animation picture | PT6 |
Animation palette | PAL |
Chain-to,Instead-chain-to,else-chain-to | DT6 (this lump) |
Sound effect | (sound file) |
Miss sound effect | (sound file) |
Fail sound effect | (sound file) |
'Learned' sound effect | (sound file) |
ARCHINYM.LMP
. ATTACK.BIN
. BINSIZE.BIN
. BROWSE.TXT
. DEFPAL#.BIN
. DEFPASS.BIN
. distrib.reld
. FIXBITS.BIN
. general.reld
. heroes.reld
. heroform.reld
. LOOKUP1.BIN
. MENUITEM.BIN
. MENUS.BIN
. PALETTES.BIN
. PLOTSCR.LST
. SFXDATA.BIN
. SLICELOOKUP.TXT
. slicetree_#_#.reld
. SONGDATA.BIN
. UICOLORS.BIN
Map Format :
E
. D
. L
. N
. P
. T
. Z
BAM
. DOR
. DOX
. DT0
. DT1
. DT6
. EFS
. FNT
. FOR
. GEN
. HSP
. HSZ
. ITM
. MAP
. MAS
. MN
. MXS
. PAL
. PT0 ... PT8
. RGFX
. SAY
. SHO
. SNG
. STF
. STT
. TAP
. TIL
. TMN
. VEH