DT6

From OHRRPGCE-Wiki
Jump to: navigation, search

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]

About Formal Specs

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
1 = Cycle backward
2 = Oscillate
3 = Random

3 INT (1) Target Class:

0 = Enemy
1 = Ally excluding dead
2 = Self
3 = All
4 = Ally including dead
5 = Ally excluding self
6 = Revenge (last hit)
7 = Revenge (whole battle)
8 = Previous target
9 = Recorded target
10 = Dead allies (heroes only)
11 = Thankvenge (last to cure attacker)
12 = Thankvenge (whole battle)

4 INT (1) Target Setting:

0 = Focused
1 = Spread
2 = Optional spread
3 = Random focus
4 = First target

5 INT (1) Damage Equation:

0 = Normal: Atk - Def*.5
1 = Blunt: Atk*.8 - Def*.1
2 = Sharp: Atk*1.3 - Def
3 = Pure Damage
4 = No Damage
5 = Set target stat to (100+extra damage)% of Max
6 = Set target stat to (100+extra damage)% of Current
7 = (100+extra damage)% of Max
8 = (100+extra damage)% of Current

6 INT (1) Aim Math:

0 = Normal: Aim*4 vs Dog
1 = Poor: Aim*2 vs Dog
2 = Bad: Aim vs Dog
3 = Never misses
4 = Magic: Mag vs Wil*1.25
5 = Percentage: Aim% vs Dog%
6 = Percentage: Aim%
7 = Percentage: Mag% vs Wil%
8 = Percentage: Mag%

7 INT (1) Base Attack Stat:

0 = Atk (attacker)
1 = Mag (attacker)
2 = HP (attacker)
3 = Lost HP (attacker)
4 = Random (0 to 999)
5 = 100
6 = HP (attacker)
7 = MP (attacker)
8 = Atk (attacker)
9 = Aim (attacker)
10 = Def (attacker)
11 = Dog (attacker)
12 = Mag (attacker)
13 = Wil (attacker)
14 = Spd (attacker)
15 = Ctr (attacker)
16 = Focus (attacker)
17 = extra Hits (attacker)
18 = Previous attack
19 = Last damage to attacker
20 = Last damage to target
21 = Last cure to attacker
22 = Last cure to target
23 = HP (target)
24 = MP (target)
25 = Atk (target)
26 = Aim (target)
27 = Def (target)
28 = Dog (target)
29 = Mag (target)
30 = Wil (target)
31 = Spd (target)
32 = Ctr (target)
33 = Focus (target)
34 = extra Hits (target)
35 = Max HP (attacker)
36 = Max MP (attacker)
37 = Max Atk (attacker)
38 = Max Aim (attacker)
39 = Max Def (attacker)
40 = Max Dog (attacker)
41 = Max Mag (attacker)
42 = Max Wil (attacker)
43 = Max Spd (attacker)
44 = Max Ctr (attacker)
45 = Max Focus (attacker)
46 = Max extra Hits (attacker)
47 = Max HP (target)
48 = Max MP (target)
49 = Max Atk (target)
50 = Max Aim (target)
51 = Max Def (target)
52 = Max Dog (target)
53 = Max Mag (target)
54 = Max Wil (target)
55 = Max Spd (target)
56 = Max Ctr (target)
57 = Max Focus (target)
58 = Max extra Hits (target)

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)
1 = Cast
2 = Dash In (shows weapon)
3 = SpinStrike (shows weapon)
4 = Jump
5 = Land
6 = Null
7 = Standing Cast
8 = Teleport (shows weapon)
9 = Standing Strike (This is a WIP feature)

15 INT (1) Attack Animation:

0 = Normal
1 = Projectile
2 = Reverse projectile
3 = Drop
4 = Ring
5 = Wave
6 = Scatter
7 = Sequential Projectile
8 = Meteor
9 = Driveby
10 = Null

16 INT (1) Attack Delay (ticks)
17 INT (1) Number of hits (range 1 to 20)
18 INT (1) Target Stat:

0 = HP
1 = MP
2 = Atk
3 = Aim
4 = Def
5 = Dog
6 = Mag
7 = Wil
8 = Spd
9 = Ctr
10 = Focus
11 = extra Hits
12 = Poison register
13 = Regen register
14 = Stun register
15 = Mute register

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: Store Target
BIT (1) 53: Delete Stored Target
BIT (1) 54: Automaticaly 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
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
0 = Full duration of attack
>=1 = Number of ticks to 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)
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

59 INT (1) Tag to Set

0 - none
> 0 - set tag
< 0 - unset tag

60 INT (1) Tag Condition

0 - Never
1 - Always
2 - Hit
3 - Miss
4 - Kill

61 INT (1) Tag Check

0 - none
> 0 - tag must be on
< 0 - tag must be off

62 INT (1) Tag to Set #2

0 - none
> 0 - set tag
< 0 - unset tag

63 INT (1) Tag Condition #2

0 - Never
1 - Always
2 - Hit
3 - Miss
4 - Kill

64 INT (1) Tag Check #2

0 - none
> 0 - tag must be on
< 0 - tag must be off

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 (56) 25-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 + 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
1: both val1 and val2 are tags to check
2: attacker stat val1 greater than val2
3: attacker stat val1 less than than val2
4: attacker stat val1 greater than val2%
5: attacker stat val1 less than than val2%
6: any target stat val1 greater than val2
7: any target stat val1 less than val2
8: any target stat val1 greater than val2%
9: any target stat val1 less than val2%
10: all target stat val1 greater than val2
11: all target stat val1 less than val2
12: all target stat val1 greater than val2%
13: all target stat val1 less than val2%

102 INT(1) Chain condition Primary value (meaning varies depending on Chain type)
103 INT(1) Chain condition secondary value (meaning varies depending on Chain type)
104 Chain bits

0: Attacker must know the chained attack also
1: Chained attack ignores delay
2: Chain delay doesn't block actions
3: Don't retarget if target is lost

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
1=restore to new max
2=preserve % of max
3=keep current, cap to new max

120 INT (1) What to do with other stats when transmogrifying

0=keep current
1=restore to new max
2=preserve % of max
3=keep current, cap to new max

121-312 FLOAT Threshold (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, simulating the way in which the old fail bits ignored whether the Absorb bit was on.
Each threshold had format:

Type INT 0: No condition

3: Target takes < Value damage from this element
5: Target takes > Value damage from this element

Value FLOAT Percentage threshold (1.0 is 100%)
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. (This is a WIP feature)

Future data fields[edit]

This hasn't been merged yet.

Offset Data Meaning
321 INT (1) Stat cost: index of stat + 1 (This is a WIP feature)
322 INT (1) Stat cost: amount to decrement (This is a WIP feature)

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 make 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.

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)
'Learned' sound effect (sound file)