-
Notifications
You must be signed in to change notification settings - Fork 1
Archery Mechanics
Bloodwych treats archery as a profession-based ability. This agrees with the manual's description of Adventurers as good all-rounders and capable archers, while the Cutpurse's abilities include stealth, archery and observation.
The SPS 439 firing path confirms that this is implemented independently of the champion's starting Agility. Bow projectile power is calculated from the champion's stored Level and a profession selector. The routine does not read the Strength or Agility bytes while constructing the projectile.
This page concerns projectile power. The resulting value is stored in the live airborne projectile record and is subsequently used by hit resolution; it should not be interpreted as guaranteed HP loss without also accounting for the later combat routines.
The firing routine examines the champion's two hand slots and requires both:
- one arrow object in the range
$03to$04; - one bow object in the range
$5Cto$5E.
One arrow is removed from its corresponding pocket quantity when fired. The inventory and airborne codes are:
| Inventory object | Airborne code | Description |
|---|---|---|
$03 |
$88 |
Arrow |
$04 |
$89 |
Elf Arrow |
The two projectile codes use the flying portion of AirbourneSpells.gfx; see Airbourne Spells.
The champion number is masked with $03. This is the same grouping used for the four professions. The result selects one of four right-shift counts from a four-byte table:
$02, $02, $01, $00
The selected shift is applied to byte $00 of the champion record, which is the stored Character Level:
| Champion IDs | Profession | Shift | Archery base |
|---|---|---|---|
$00,$04,$08,$0C |
Warrior | 2 |
Level >> 2 / floor(Level / 4)
|
$01,$05,$09,$0D |
Wizard | 2 |
Level >> 2 / floor(Level / 4)
|
$02,$06,$0A,$0E |
Adventurer | 1 |
Level >> 1 / floor(Level / 2)
|
$03,$07,$0B,$0F |
Cutpurse | 0 | Level |
This implements the profession descriptions directly:
- Warriors and Wizards receive the lowest level-derived archery power.
- Adventurers receive a useful intermediate progression.
- Cutpurses receive the full stored Level and therefore have the strongest archery progression.
Agility may still participate in another part of combat or accuracy resolution, but it is not read by this projectile-power calculation. The Cutpurse's generally high Agility is therefore separate from this profession modifier.
After calculating the profession-scaled Level, the arrow object code is reduced by $03:
| Arrow | Modifier |
|---|---|
$03 Arrow |
+0 |
$04 Elf Arrow |
+1 |
This modifier is added before the bow's division and bonus. Define:
A = profession-scaled Level + arrow modifier
The three bows are object codes $5C to $5E. Their object order is not a strength ranking. Two adjacent three-byte tables control their power:
| Table | Bytes | Purpose |
|---|---|---|
| Power shift | $01,$00,$01 |
Right-shift count for Bow, Frost Bow and Cross Bow. |
| Power bonus | $00,$00,$01 |
Bonus added after the shift. |
After applying those tables, the game doubles the result:
| Object | Bow | Shift | Bonus | Final projectile power |
|---|---|---|---|---|
$5C |
Long Bow | A >> 1 |
+0 |
2 * floor(A / 2) |
$5D |
Frost Bow | unchanged | +0 |
2 * A |
$5E |
Cross Bow | A >> 1 |
+1 |
2 * (floor(A / 2) + 1) |
The consequences are:
- The Cross Bow always produces two more projectile-power points than the Long Bow.
- The Frost Bow scales twice as quickly as either of the other bows.
- At
A = 1orA = 2, Frost Bow and Cross Bow are equal. - At
A >= 3, the Frost Bow is increasingly stronger. - At
A = 0, the Cross Bow still produces power 2 while the other two produce zero.
For example, where A = 5:
| Bow | Projectile power |
|---|---|
| Long Bow | 4 |
| Cross Bow | 6 |
| Frost Bow | 10 |
This explains why gameplay indicates that the Frost Bow is generally the best bow despite the Cross Bow having the final object code.
Because the Elf Arrow adds one before the bow calculation:
- with the Frost Bow it always adds two final projectile-power points;
- with the Long Bow or Cross Bow, the right shift absorbs the extra point when the profession-scaled Level is even;
- with the Long Bow or Cross Bow, it adds two final power points when the profession-scaled Level is odd.
The firing and collision mechanics apply no additional elemental, accuracy or status effect that distinguishes $88 from $89. Their differences are:
- Elf Arrows add one before bow scaling;
- they retain the distinct airborne code
$89and corresponding graphics; - they return to object
$04rather than$03when placed back on the floor.
When an Arrow or Elf Arrow projectile stops, the source subtracts $85 from the airborne code. This maps $88 back to inventory/floor object $03, and $89 back to object $04, preserving the ammunition type.
The manual groups archery with the Cutpurse's stealth and observation abilities. The corresponding known gameplay behaviours are:
- Stealth: back-stab attacks can produce exceptionally high damage.
- Archery: the full-Level profession scaling documented above.
- Observation: concealed features such as Mindrocks and hidden shelves can be perceived through flashing indicators.
These are separate mechanics even though they collectively define the Cutpurse profession.