2と10のリビジョン間の差分 (その間の編集: 8回)
2020-11-08 16:25:36時点のリビジョン2
サイズ: 2189
編集者: keitaroh
コメント:
2020-11-13 15:30:53時点のリビジョン10
サイズ: 6832
編集者: keitaroh
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 15: 行 15:
 * まだ。  * スライムの処理は、以下のフェイズからなる。
  * 初期化フェイズ。
  * 停止/呪文発射フェイズ。
  * 移動準備フェイズ。
  * 移動フェイズ。
  * 死亡フェイズ。
  * ギル死因演出フェイズ。
  * 処理終了フェイズ。

== 初期化フェイズ ==

 * 初期化フェイズは個別初期化フェイズと共通初期化フェイズからなる。
  * スライムの処理は、個別初期化フェイズから始まる。
 * 個別初期化フェイズでは、以下の処理を行ったあと共通初期化フェイズへ分岐する。
  * スライムの個別ID(スライムの一覧参照)を設定。
  * スライムを倒した時の得点を設定。
 * 共通初期化フェイズでは、以下の各ワークエリアに対する初期化処理を行う。
  * 反転表示フラグを消去。
  * スプライト番号へスライムの基本スプライト番号を書き込み。
  * 出現位置の決定。
  * 停止時間の初期値を設定(すべてのスライム共通、乱数値を取得してそのまま書き込み)。
  * 攻撃中フラグをセット。
 * 全ての初期化を終えると停止/呪文発射フェイズへ移行する。

== 停止/呪文発射フェイズ ==

 * ブロックの中心点に留まっているフェイズ。
 * 停止時間の値を毎フレーム1ずつ減らし、0になると移動準備フェイズへ移行する。
 * グリーン・ブラック以外のスライムは、内部タイマの値が $00 のとき呪文を発射する。
  * ダークイエロー・スライムの場合、どの呪文を放つか乱数(0~3)で決定する。

== 移動準備フェイズ ==

 * 移動前の震え動作を行うフェイズ。
 * まず乱数でスライムの向きを変更し、その後16フレームかけて震え動作を行う。
 * 震え動作を終えると移動フェイズへ移行する。

== 移動フェイズ ==

 * 隣のブロックへ移動するフェイズ。32~33フレームかけて移動する。
 * 内部タイマが偶数の時に以下の処理を行う。
  * 移動シーケンス番号を1進める。
  * 移動シーケンス番号が $02、$08、$0Eのとき、向いている方向へ8ドット移動する。
   * 8ドット移動する際にスライムが画面内にいる(スプライトが表示されている)なら、スライム移動音を鳴らす。
  * 移動シーケンス番号が $11 のとき、停止時間を新たに設定して停止/呪文発射フェイズへ移行する。

== 向き ==

 * グラフィックでは判別できないが、スライムにも向きの概念が存在する。
  * 呪文は「いまスライムが向いている方」へ発射される。
  * スライムの向きは、直前に移動した方向である。
  * 移動が終わってから次に移動するまでの間、向きを変える事はない。
  * 向きは初期化されない。したがってフロアが開始してから最初に移動するまでの間、向きは未定義である。

= スライムの一覧 =

||'''ID'''||'''グラフィック'''||'''名前'''||'''停止時間'''||'''点数'''||'''呪文'''||初登場フロア||
||0||{{attachment:slime_green.png}}||グリーン・スライム||乱数(0~254)+16||30||なし||フロア01||
||1||{{attachment:slime_red.png}}||レッド・スライム||乱数(0~127)+16||60||ホワイト・スペル||フロア07||
||2||{{attachment:slime_black.png}}||ブラック・スライム||乱数(0~63)+16||50||なし||フロア02||
||3||{{attachment:slime_blue.png}}||ブルー・スライム||乱数(0~127)+16||40||ブルー・スペル||フロア13||
||4||{{attachment:slime_darkgreen.png}}||ダークグリーン・スライム||乱数(0~31)+16||70||グリーン・スペル||フロア28||
||5||{{attachment:slime_darkyellow.png}}||ダークイエロー・スライム||乱数(0~31)+16||90||全ての呪文||フロア43||

 * 停止時間はフロア開始直後のみ全スライム共通。乱数(0~254)を設定。
 * 註:ブラック・スライムの ID は 1 ではなく 2 である。
行 22: 行 87:
  * また、TODは相打ちになるとギルが一方的に敗北する仕様である。
  * 以上の事情
から、スライム移動中に攻撃すると打ち負けやすい
  * あまりにち負けるプレイヤーが続出したため、「移動中は無敵」との俗説が生まれたと思われる。
 * 内部タイマ($1001)が $00~$10 のときに震え動作を行うコードが記述されているが、直後の処理で震え動作が無効化されるため、実際には震えない。
  * --(また、TODは相打ちになるとギルが一方的に敗北する仕様である。)--
   * ちょっと違う気がしてきたので一旦消し。
   * スライムに関しては、
    * 8ドット移動の直後にギルへの攻撃判定が実行される(同一フレーム内)。
    * ギル
からの攻撃判定は次のフレームの最初に実行される。
   * という仕様のため
、スライム移動直後はスライム有利
  * あまりにち負けるプレイヤーが続出したため、「移動中は無敵」との俗説が生まれたと思われる。
 * 内部タイマ($1001)が $00~$10 のときに震え動作を行うコードが記述されているが、同一フレーム内の処理で震え動作が無効化されるため、実際には震えない。
行 32: 行 101:
CategoryMonster [[CategoryMonster|カテゴリ:モンスター]]
  • スライムは、単色でゼリー状の怪物である。最序盤から登場する。

概要

  • 普段はブロックの中心点で停止しており、ときどき隣のブロックへ跳ねるように移動する。
  • HP制ではないため、適切に攻撃すれば一撃で倒す事ができる。
  • 一方でスライムの攻撃もダメージ制ではないので、ギルを一撃で倒す力を持つ。
  • スライムの移動中はスライム優位であり、うかつに攻撃すると返り討ちに遭う。
  • 呪文を唱えるスライムもいる。

仕様

  • スライムの処理は、以下のフェイズからなる。
    • 初期化フェイズ。
    • 停止/呪文発射フェイズ。
    • 移動準備フェイズ。
    • 移動フェイズ。
    • 死亡フェイズ。
    • ギル死因演出フェイズ。
    • 処理終了フェイズ。

初期化フェイズ

  • 初期化フェイズは個別初期化フェイズと共通初期化フェイズからなる。
    • スライムの処理は、個別初期化フェイズから始まる。
  • 個別初期化フェイズでは、以下の処理を行ったあと共通初期化フェイズへ分岐する。
    • スライムの個別ID(スライムの一覧参照)を設定。
    • スライムを倒した時の得点を設定。
  • 共通初期化フェイズでは、以下の各ワークエリアに対する初期化処理を行う。
    • 反転表示フラグを消去。
    • スプライト番号へスライムの基本スプライト番号を書き込み。
    • 出現位置の決定。
    • 停止時間の初期値を設定(すべてのスライム共通、乱数値を取得してそのまま書き込み)。
    • 攻撃中フラグをセット。
  • 全ての初期化を終えると停止/呪文発射フェイズへ移行する。

停止/呪文発射フェイズ

  • ブロックの中心点に留まっているフェイズ。
  • 停止時間の値を毎フレーム1ずつ減らし、0になると移動準備フェイズへ移行する。
  • グリーン・ブラック以外のスライムは、内部タイマの値が $00 のとき呪文を発射する。
    • ダークイエロー・スライムの場合、どの呪文を放つか乱数(0~3)で決定する。

移動準備フェイズ

  • 移動前の震え動作を行うフェイズ。
  • まず乱数でスライムの向きを変更し、その後16フレームかけて震え動作を行う。
  • 震え動作を終えると移動フェイズへ移行する。

移動フェイズ

  • 隣のブロックへ移動するフェイズ。32~33フレームかけて移動する。
  • 内部タイマが偶数の時に以下の処理を行う。
    • 移動シーケンス番号を1進める。
    • 移動シーケンス番号が $02、$08、$0Eのとき、向いている方向へ8ドット移動する。
      • 8ドット移動する際にスライムが画面内にいる(スプライトが表示されている)なら、スライム移動音を鳴らす。
    • 移動シーケンス番号が $11 のとき、停止時間を新たに設定して停止/呪文発射フェイズへ移行する。

向き

  • グラフィックでは判別できないが、スライムにも向きの概念が存在する。
    • 呪文は「いまスライムが向いている方」へ発射される。
    • スライムの向きは、直前に移動した方向である。
    • 移動が終わってから次に移動するまでの間、向きを変える事はない。
    • 向きは初期化されない。したがってフロアが開始してから最初に移動するまでの間、向きは未定義である。

スライムの一覧

ID

グラフィック

名前

停止時間

点数

呪文

初登場フロア

0

slime_green.png

グリーン・スライム

乱数(0~254)+16

30

なし

フロア01

1

slime_red.png

レッド・スライム

乱数(0~127)+16

60

ホワイト・スペル

フロア07

2

slime_black.png

ブラック・スライム

乱数(0~63)+16

50

なし

フロア02

3

slime_blue.png

ブルー・スライム

乱数(0~127)+16

40

ブルー・スペル

フロア13

4

slime_darkgreen.png

ダークグリーン・スライム

乱数(0~31)+16

70

グリーン・スペル

フロア28

5

slime_darkyellow.png

ダークイエロー・スライム

乱数(0~31)+16

90

全ての呪文

フロア43

  • 停止時間はフロア開始直後のみ全スライム共通。乱数(0~254)を設定。
  • 註:ブラック・スライムの ID は 1 ではなく 2 である。

備考

  • 移動中は無敵という俗説が昔から根強く存在する。
    • スライム自身に無敵時間などはない。
    • スライムは8ドットずつ移動するため、ギルの攻撃範囲の外から一気に飛び込んでくることがある。
    • また、TODは相打ちになるとギルが一方的に敗北する仕様である。

      • ちょっと違う気がしてきたので一旦消し。
      • スライムに関しては、
        • 8ドット移動の直後にギルへの攻撃判定が実行される(同一フレーム内)。
        • ギルからの攻撃判定は次のフレームの最初に実行される。
      • という仕様のため、スライム移動直後はスライム有利。
    • あまりに打ち負けるプレイヤーが続出したため、「移動中は無敵」との俗説が生まれたと思われる。
  • 内部タイマ($1001)が $00~$10 のときに震え動作を行うコードが記述されているが、同一フレーム内の処理で震え動作が無効化されるため、実際には震えない。
  • 呪文発射判定部のプログラムコードは、内部タイマの下位7ビットが0のとき(つまり $00 か $80 のとき)に呪文を放つかのように記述されている。
    • が、発射判定部へは内部タイマが $00~$10 のときにしか分岐しないため、実際に呪文が発射されるのは内部タイマが $00 のときのみになっている。
  • グリーン・スライムの停止時間は乱数値(0~254)+16で算出されるが、停止時間は1バイト値のため桁あふれを起こす事がある。
    • そのため、グリーン・スライムは稀に連続移動を行う。油断は禁物。


カテゴリ:モンスター

スライム (最終更新日時 2020-11-18 13:06:47 更新者 keitaroh)