Item & Monster Specs

Any developer realated stuff
Maven
Posts: 138
Joined: Sat Apr 16, 2011 9:39 pm

Post by Maven »

brideck wrote:Con/Int might give similar boosts to HP/SP when you level up. I really need to do some research in that space. I've never paid attention at all to the span of boosts you can get when you level up. Does it differ by class at all?
Pretty sure Hunters and Bards get extra HP when they level up, and Monks and spell casters don't. I expect Warriors and Paladins would as well. I doubt Rogues would. But that's just based on how many HP my party has when it gets up in the higher levels. I'm also pretty sure they get extra HP when they have high (17 or 18, maybe 16) Con, and extra SP when they have high Int.

The other thing that's pretty interesting is the Critical Hit percentage for Hunters. It's something that can be tracked, because it's a byte in the character save file. It seems to go up somewhat randomly every time your Hunter levels up. I wonder if higher Int makes it go up faster?

The Running From Monsters thing has been interesting to me. I remember a time when I found out that the Specter in the Cats can drain levels. I took my party down there and let him hit me until everyone was level 1. Then I'd go kill the Wights until I had a couple hundred thousand exp, and go level up a bunch of times. Then I'd go back and fight the Specter again. The point was to get lots of Hit Points and Spell Points for my party. I really had a hard time running from monsters when everyone was level 1. I never had Speedboots at that point, so I'm not sure what effect they have. I know they don't ensure that you can run every time, because I've had my entire party equipped with speedboots before, and still missed the saving throw. However, I do think running is base on the level of the party leader. As long as my front guy is high level, even if I change classes on all of my mages in the back rows at the same time, I still don't seem to have trouble running.

I have tried messing withe the luckshield a little bit, but it didn't seem to make enough difference to be worth the trouble.
tpth
Posts: 128
Joined: Tue Feb 02, 2010 6:39 am

Post by tpth »

This is super-interesting reading. Good work, you two :)
Maven
Posts: 138
Joined: Sat Apr 16, 2011 9:39 pm

Post by Maven »

OK, so here's what you add when you level up.

Hit Points
If your Constitution is 14 or less:
1-16 Warriors, Bards, and Hunters
1-8 Monks, Wizards (This is NOT a typo)
1-4 Conjurors, Magicians

If your Constitution is 15, add one.
If your Constitution is 16, add two.
If your Constitution is 17, add three.
If your Constitution is 18, add four.

Spell Points
1-4 if your Intelligence is 14 or less.
2-5 if your Intelligence is 15.
3-6 if your Intelligence is 16.
4-7 if your Intelligence is 17.
5-8 if your Intelligence is 18.

I did not test Paladins, Rogues, or Sorcerors. My guess is Paladins are 1-16 like Warriors and Sorcerors are 1-4 like Magicians and Conjurors. I really don't know about thieves. I never use them.

Low Constitution or Intelligence didn't have any effect.
Maven
Posts: 138
Joined: Sat Apr 16, 2011 9:39 pm

Post by Maven »

About Hunter Critical Hit Percentage

This is stored as a Byte, and ranges from 0 to FF. FF seems to be 100% Critical Hit. It seems to increase somewhat randomly every time I level up. The least I have had it increase is 1, and the most was 31. The average was about 18. I expect from this small sample that the increase is probably 1-32, and by the time your Hunter is about level 17 you should be getting criticals almost every time if not every time.

I monitored one Hunter up to level 9, and one all the way to 16 when it maxed out. Here's the actual data:

Code: Select all

1  00  00
2  1F  1F
3  31  35
4  4E  45
5  4F  62
6  6D  7E
7  88  83
8  A5  8C
9  AE  A0
10     AF
11     CE
12     D9
13     DC
14     DE
15     EE
16     FF
brideck
Posts: 11
Joined: Wed Oct 19, 2011 7:48 am

Post by brideck »

Good stuff as usual, Maven.

I'm not surprised to see Wizards get the d8 for a hit die. They're considerably different in most respects from the other spellcasters. If I had to guess, I'd say that the Rogue is also on the d8, but we'll have to look into that at some point.

I am surprised that Con & IQ start handing out bonuses as low as 15. I figured that it would be 17 like it is with Str & Dex, but considering you only get 1d4(!) SP a level that's probably a good thing.

As for Hunters, I'd guess that when they hit we test a randomly generated byte for <= crit%. In that case, both of your examples went from a mere 1/256 chance at level 1 to a whopping 1/8 chance at level 2. I wonder if that first bump is always the max or if you just got lucky twice.

Either way, I am again surprised at what low levels the various class features top out. It's almost as if it wants you to try to beat the game around the level 20-25 range, but that seems tough to me. Has anyone ever tried a low level run in this game with much success? I think must people end up grinding to fairly high levels against wights, ghouls, berserkers, etc.
Caracas
Posts: 89
Joined: Thu Jan 20, 2011 9:16 am
Location: Belgium

Post by Caracas »

just a quick intermediate:

Code: Select all

74 28 7F 28 8A 28 94 28 A0 28 AC 28 BA 28 C7 28 D4 28 DC 28 E9 28 F3 28 FE 28 0A 29 18 29 28 29 33 29 41 29 4E 29 5D 29 68 29 75 29 82 29 8F 29 9A 29 A2 29 B2 29 BF 29 CE 29 D7 29 E1 29 EC 29 FB 29 0B 2A 1E 2A 2B 2A 38 2A 45 2A 50 2A 5A 2A 66 2A 77 2A 88 2A 98 2A AA 2A B9 2A CD 2A DD 2A E8 2A F7 2A 08 2B 12 2B 1F 2B 2C 2B 39 2B 44 2B 53 2B 61 2B 6B 2B 7C 2B 87 2B 92 2B A1 2B B3 2B C2 2B CD 2B DB 2B E8 2B F5 2B 02 2C 0D 2C 1E 2C 2C 2C 3A 2C 48 2C 5A 2C 63 2C 6F 2C 80 2C 89 2C 96 2C A3 2C B0 2C BB 2C CC 2C DA 2C EC 2C FD 2C 07 2D 17 2D 24 2D 31 2D 3B 2D 45 2D 51 2D 5B 2D 6D 2D 7E 2D 88 2D 99 2D A2 2D B1 2D BB 2D CF 2D E3 2D F7 2D 07 2E 13 2E 23 2E 30 2E 41 2E 53 2E 65 2E 71 2E 81 2E 93 2E A2 2E B3 2E BA 2E CC 2E DC 2E EC 2E 00 2F 0B 2F 15 2F 22 2F 31 2F
found at $279EE in BARD.EXE holds address allocations for all the monsters:
for example: 74 28 -> 7F 28 = 11 bytes are needed for KOBOLD^^S^

something similar at $28C12

Code: Select all

C4 3D CC 3D D6 3D E4 3D EC 3D F7 3D FD 3D 04 3E 0F 3E 14 3E 1C 3E 27 3E 31 3E 39 3E 46 3E 52 3E 5A 3E 62 3E 71 3E 7E 3E 8A 3E 94 3E 9D 3E A6 3E AE 3E 00 00 BB 3E F1 3E 1C 3F 57 3F AD 3F E6 3F ED 3F F3 3F FA 3F
Address allocation for answers in the review board, street names in Skara Brae and questions in the review board.

Similar series can be found elsewhere in BARD.EXE. There's a long serie starting at $2CA47

Another short serie at $2A5A8 about the dpics files
Maven
Posts: 138
Joined: Sat Apr 16, 2011 9:39 pm

Post by Maven »

brideck wrote:Either way, I am again surprised at what low levels the various class features top out. It's almost as if it wants you to try to beat the game around the level 20-25 range, but that seems tough to me. Has anyone ever tried a low level run in this game with much success? I think must people end up grinding to fairly high levels against wights, ghouls, berserkers, etc.
I built up a party to try this out. I attempted The Tower assault a little bit too soon. I found out that I need ALL my Wizards to have at least the Animate Dead spell. Bit I was able to complete the Mangar encounter (although two of my party didn't survive) with a level 21 Monk, level 21 Bard, and 4 level 12 Wizards. Only one of the Wizards had all three of the other caster class spells. My Monk, my Bard, and one of my Wizards gained a level in the fight. I think they got drained by one of the Vampire Lords.

So yeah, it's possible. However, it would not have happened if I didn't have prior knowledge of all the maps.
Desmet Irkm
Posts: 35
Joined: Fri Nov 11, 2011 2:50 pm
Location: .de
Contact:

Post by Desmet Irkm »

Caracas wrote:Does anyone know what happens in the 47 file?
It seems to get loaded once when launching the game.

EDIT: hmm, might just be the intro picture
No, the intro pics are in the *tit files (bardtit, rgb_tit, cga_tit,...). I guess that the 47 file contains the guild animation, as it's always loaded when you enter the guild. However, I haven't decoded it yet, still working on this...
Desmet Irkm
Posts: 35
Joined: Fri Nov 11, 2011 2:50 pm
Location: .de
Contact:

Post by Desmet Irkm »

@Maven: Good work. I could also figure that now out from ZeroZero's disassemblies

The code here (from nm0b.asm)

Code: Select all

b729:012b:1   20 2a 08          jsr $082a             ; make random number
b72c:012e:1   a0 38             ldy #$38              ; point to class in roster
b72e:0130:1   b1 0f             lda ($0f),y           ; get class
b730:0132:1   aa                tax                   ; EZ: store class in x
b731:0133:1   a5 5a             lda $5a               ; get rnd lo byte
b733:0135:1   3d 40 bb          and lstclass,x        ; class-dep amount from rnd
together with this:

Code: Select all

bb40:0542:1   tbl-bb49 lstclass .byte $0f,$07,$07,$03,$03,$07
bb46:0548:1                     .byte $0f,$0f,$0f,$07
and the ordering of character classes (see the C64 disassem thread item#6)

Code: Select all

38      byte      class:   0 Warrior   5 Rogue
               1 Wizard   6 Bard
               2 Sorcerer   7 Paladin
               3 Conjurer   8 Hunter
               4 Magician   9 Monk 
gives you the following HP distribution:
Warrior 0-15
Wizard 0-7
Sorcerer 0-7
Conjurer 0-3
Magician 0-3
Rogue 0-7
Bard 0-15
Paladin 0-15
Hunter 0-15
Monk 0-7

Code: Select all

b73c:013e:1   e9 0e             sbc #$0e              ; test for > 14
b73e:0140:1   b0 02             bcs inchp             ; if > 14 keep remainder
b740:0142:1   a9 00             lda #$00              ; else no extra hp
b742:0144:1   18       inchp    clc 
b743:0145:1   65 0b             adc $0b               ; add the rnd
b745:0147:1   18                clc 
b746:0148:1   69 01             adc #$01              ; add 1 extra anyway
Here is the extra for constitution larger 14 and the one extra that make the above go like 1-4, 1-8 and 1-16. So, we can also fill in the Sorcerers, Paladins and Rogues. BTW: I find it ok, that Sorcerers and Wizards get more HP per level - they are much harder to level up than Magicians and Conjurers.

I am still interested in the critical hit stuff: as far as I can see there is no field in the character files in the msdos and amiga versions. May there it's calculated deterministically and thus does not need to be stored, in contrast to the C64 version?

(Hmm, I took the info about critical hits from here http://www.bardstaleonline.com/files/!h ... format.asp where there is no field for the critical hit chance, but maybe it in one of those question marks - need to figure that out...)
Maven
Posts: 138
Joined: Sat Apr 16, 2011 9:39 pm

Post by Maven »

I did some more checking on the critical hit chance for MSDOS. I tracked 6 more Hunters to the point where they maxed out the critical hit byte to 255. Four of them maxed out at level 16, one at level 17, and one at level 19. I did simple statistical analysis on it, and I'm pretty sure it's a simple random 1-32 that gets added to the byte at level-up, and it IS saved in the character file. I'll look up the offset tomorrow, but it's pretty easy to spot. Just check the .tpw file for any Hunter above level 1 and there's a non-zero byte that's always 0 for all other classes.

I expect the hide-in-shadows for Rogues will be similar.

I have some other information for the character file as well. There's a field there for max level (for when you get drained by a Vampire), a field for extra attacks for Monks, Warriors, and Paladins, and a field that keeps track of how many battles you have been in. Not sure if it gets incremented when you die in a battle or not--I'll have to do some more testing on it. I also don't have any idea what the field is used for, but it seems to increment every time I win a battle. Also, there is another bit field in the inventory array: 0x40 means the item is not identified.

The level field is very buggy in the MSDOS version. If you go over level 255, screwy things happen. Just FYI.

The level-up information for Hit Point increases may be platform specific as well. In the MSDOS version, Sorcerors are like Magicians and Conjurors with what they can wear. As I recall, in the Amiga version, Sorcerors are more like Wizards. I'm going to run a test on Sorcerors just to make sure.
Desmet Irkm
Posts: 35
Joined: Fri Nov 11, 2011 2:50 pm
Location: .de
Contact:

Post by Desmet Irkm »

Great info, thanks. Maybe you can figure out one more thing also: in the MSDOS version the health status seems to be a bitfield, while in the C64 version it is an enum. So, what happens e.g. if a character gets withered, then dies and is healed in a temple or with BEDE. In the C64 version he must be back to normal then, as there is no way to keep track of that we was OLD before he died, but in the MSDOS version it could be that he's still OLD (doesn't have to be, though, could also that the bit is cleared, too).
User avatar
ZeroZero
Posts: 286
Joined: Tue Mar 10, 2009 9:10 pm
Location: Germany

Post by ZeroZero »

In the C64 version there is 1 status byte that keeps the status before the present status... maybe there are more status bytes for up to some (lets asume 8) statusses....

See bytes 60 - 63 in roster. This means that up to 5 statusses )incl. the current one) can be kept in the C64 version
Maven
Posts: 138
Joined: Sat Apr 16, 2011 9:39 pm

Post by Maven »

So I did some more testing on my MSDOS version... this seems to be a recurring theme.

Sorcerors do indeed get 1-8 HP on level up. I got 8 HP on my first try, with a constitution of 13.

The CriticalHit field is immediately prior to the NumberOfBardSongs field in both the .tpw file and the in-memory structure.

There seems to be only one Rogue-specific byte. It's immediately following the SpellLevelsKnown fields in the .tpw file and the in-memory structure. I expect it is Hide In Shadows, Identify Traps, and Disarm Traps. All three? In any case, it seems to grow at half the rate of the CriticalHit for Hunters. I'm thinking straight random 1-16 on level-up.

Withered characters that die while withered do indeed need to be healed of being old after they're resurrected. However, if the hit that would have withered them also kills them, they don't. I believe poison is this way as well, which is a pain if you resurrect a character with one hit point and the poison kills him again before you can cure the poison. I believe stoned characters get healed when they are resurrected, since stoning also pretty much kills them. Not sure about posessed or insane characters.

Another interesting "state" that isn't in the bit field is when a character is drained of a level. He can be "healed" at the temple for a grundle of cash, but in the process he gets a bonus of enough experience to advance to the next level. Easy and quick way to advance Wizards, if you want to take advantage of it. However, if you go to the Review Board and advance before you visit the temple, the level loss can become permanent. I believe the reason for this not-so-intuitive feature is that the character file holds the current level and the max level, but only the current experience. So when you get drained, the current level goes down, the max level stays, and the experience gets decreased. There wasn't any way to remember what the experience was at, so when you heal at the temple, they just added max that it could have been.
User avatar
ZeroZero
Posts: 286
Joined: Tue Mar 10, 2009 9:10 pm
Location: Germany

Post by ZeroZero »

I like to add, that in the C64 roster file there is a byte that tests, if a spell
is active that overcomes certain health states, i. e. have dead party
members continue to act as "undead"
Maven
Posts: 138
Joined: Sat Apr 16, 2011 9:39 pm

Post by Maven »

Hmmm. That's interesting.

I believe the way it's implemented in MSDOS is that the Animate Dead spell resurrects the party member, but leaves them possessed. It also gives them 100 HP.

So if you don't have the Beyond Death spell yet, you can still resurrect your dead party members by using Animate Dead and Dispossess.
Post Reply