Wizardry1/Apple/解析メモ/Monsters


目次


地図付属の出現頻度テーブル

  • (未解析)

読み方

モンスターテーブル

Data Driven Gamer: The bestiary of Wizardryに一覧あり。

特に指定がないものはINTEGER

  • 不確定名 単数/複数, 確定名 単数/複数
    • 各15文字まで
  • 絵(PIC)
  • 出現 (LOW/MID/HIGH)
  • HP dice (LEVEL,HPFAC,HPMINAD)
    • 1d8+1 なら 1,8,1
    • 先頭の値はLEVELも表す
  • CLASS (0..15)
    • 0-7: FIG, MAG, PRI, THI,MIDGET, GIANT, MITHICAL
    • 8-13: DRAGON, ANIMAL, LYCANTHROPE, UNDEAD, DAEMON, INSECT, ENCHANTED
    • 14,15: は未使用
  • AC
  • 最大攻撃回数(RECSN)
    • 攻撃力(RECS) dice [0..7]
  • EXP (LOW/MID/HIGH)
    • 実はこの項目は使われていない。monterのHPや属性から計算されている。
  • DRAINAMT
    • この値だけLEVEL DRAINしてくる
  • HEALPTS
    • この値だけ毎ターン回復
  • 宝:徘徊テーブルID、玄室テーブルID
    • ATTK012=0:REWARD1, 1:REWARD1,ONEORTWO=2, 2:REWARD2 (固定モンスター, ALARMを鳴らした等)
  • ENEMY TEAM, TEAMPERC
    • 後続のモンスターの番号, 出現率(%)
  • MAGSPELS, PRISPELS
    • 魔法・僧侶のレベル 0-7
  • UNIQUE
    • 出現回数。BUGの項参照
  • BREATH
  • MAGIC RESISTANCE (UNAFFCT)
  • WEPVSTY3 [0..15] of BOOLEAN
    • 0: NONE/FRIENDS
    • 1: FIRE
    • 2: COLD
    • 3: POISON
    • 4: DRAIN
    • 5: STONING
    • 6: MAGIC
  • 特性フラグSPPCI [0..15] of BOOLEAN
    • 0: STONE
    • 1: POISON
    • 2: PARALYZE
    • 3: CRITICALLY HIT
    • 4: 眠る
    • 5: 逃げる
      • (別記)
    • 6: 仲間を呼ぶ

モンスターを倒した時の経験値

プログラム上は下記の計算をしたかったのだと思われる。 f(n,x) は (2^(n-1))*x を計算するための処理。 fを求める関数(MLTADDKX)にバグがあって値がおかしくなる(後述)。

  • 経験値 = (LEVELHPFAC)(ブレスあり?40:20)
  • さらに以下の補正がかかる
    • 魔法レベルにより +f(MAGSPELS,35)
    • 僧侶レベルにより +f(PRISPELS,35)
    • ドレイン能力により +f(DRAINAMT,200)
    • 回復能力により +f(HEALPTS,90)
    • ACにより +f(11-AC,40)
    • RECSN>1 なら +f(RECSN,30)
    • UNAFFCT>0 なら +f(UNAFFCT/10+1,40
    • 特性(WEPVSTY3)のある数nを元に +f(n,35)
    • 特性(SPPCI)のある数nを元に +f(n,40)

BUG

MLTADDKX

経験値計算に使われる関数がバグっている(引数の参照渡しに起因するバグ)。計算結果が10000未満なら発覚しないと思われる。

see. Data Driven Gamer: The bestiary of Wizardry

LEVEL 7 FIGHTERS IN MONSTER ALLOCATION CENTER

  • ディスク内にはモンスターの出現回数テーブル(UNIQUE)があり、モンスターを倒すと -1 される
  • ほとんどのモンスターは無限(-1)の値を持つが、なぜか LEVEL 7 FIGHTER (4階 MOSTER ALLOCATION CENTER)は値が1になっている
  • ディスクが書き換えられてしまうので、大抵のユーザーのディスクでは0になってるはず