虚空さんを復活するキャラに変える

ヴェルニース名物の虚空さんは一度死んでしまうと復活しない。
マップエディタで編集してキャラを追加した時と同じ挙動だ。
中立キャラの子供などと同様だ。

マップ生成時にユニーク設定がされていないので追加すると復活する様になる。

map.hsp
1422行目の後ろに【:cRole(rc)=cRoleSpecial】を追加する。

この部分があるのはマップを再生性したりアップデートしたりする*map_init_mainの中のヴェルニースの処理になる。
chara_createはキャラクターを生成する。
一つ目の-1は通常の生成、ncはデータだけ生成? 0はプレイヤー?
二つ目はキャラのID。cId()の数値。虚空を這いずる者は28。
三つ目は生成するx座標。cX()の数値。
四つ目は生成するy座標。cY()の数値。

処理の後にcRole(rc)にcRoleSpecialを入れている。
唐突にrcなんて変数を使っているが、rcはchara_createの処理で生成されたキャラのcdataの配列のIDが入る。
cdata(〜,ID)にキャラのデータが入る。ソースを見ているとcId(ID)とかで見た感じ簡単に使える。
詳しく書くと、chara_createはcharaCreateを呼び出していて、
charaCreateでrcに一つ目の数値を入れてから、gosub *chara_initによって*chara_initを呼び出している。
*chara_initでrcが-1の時はmaxChara-maxSaveCharaの中でcExist()がcDeadのIDを取得したらrcに入れて処理を終わる。
maxSaveCharaはプレイヤーとペットの数+冒険者の数+ヌル用の合計。
maxCharaはキャラの最大数。
cExist(ID)はキャラの状態。cDeadはモブのキャラの死亡状態であり上書き対象になる。
なのでrcが使える。
cRole(ID)はキャラの役割? cRoleSpecialは掲示板の依頼が無い市民。

LastUpdate:2018/08/06