とりあえずあちこちに分散されているバグ情報、バグの修正情報を譲渡されたソースに対して適用する場合の修正点まとめ
※なにをさておいても、公式フォーラムや、2chの解析・改造スレ、外部板のElona不具合修正スレ等に色々書いてくれた人に感謝
以下、箇条書きでだらりと行きます
--------------------------------------------------------------------------------------------------------------
カジノ表示バグ
ミニゲームのカジノでのBJ時に画面描画がおかしい
対処
screen.hsp
121行目
なぜかコメントされていたのでコメントを外す
心眼エンチャントクリティカル率補正バグ修正
「それは心眼の技術を上昇させる」のエンチャントの付いた武具を装備しても
心眼スキル上昇によるクリティカル率の上昇が加味されない
対処
calculation.hsp
421行目
クリティカル率の再計算位置がまずいので421行目を無難と思われる494行目付近へ移動
遺物系マテリアル未出現バグ修正
「鳥の羽」、「ウサギの尻尾」等のマテリアルが出現しない
対処
proc.hsp
32行目
atxLv+=sAnatomy(pc)/3の前にatxSpot =
atxRemain1の記述を追加
高レベルネフィア取得マテリアルバグ修正
高レベルのネフィアなどでマテリアル採集をしても「クズ」しか採集できない
対処
material.hsp
14行目
lv--:rare--をlv++:rare++へ変更
material.hsp
15行目
matLv(p)<lvをmatLv(p)>lvへ変更
material.hsp
16行目
matRare(p)<rareをmatRare(p)>rareへ変更
※マテリアルの入手バランスに影響があるので要調整?
食べた物に付与されていたエンチャントにより適用される効果の修正
「運勢を維持する」が付与された生もの製の武具を食べると落ちる
対処
item.hsp
1197行目
if enc2=encSustain{をif
((enc2=encSustain)&(enc!rsLUC)){に変更する事で
「運勢を維持する」によって成長期が発生しないように対処できる
※運の成長率が0%なのが問題?運に成長率を設定するのとどちらが良いか?
鍵開けバグ修正
開錠に失敗した場合にそのまま再挑戦すると開錠難度が不正な値になる
対処
action.hsp
861行目からの*lockpickサブルーチン
サブルーチン開始直後にグローバル変数valに渡されてきた開錠難度を別変数に退避し、
開錠判定を退避した別変数で行うようにする
レシピ選択画面の表示ずれ修正
config.txtにてwindowH.を600以上に設定した場合に、テスト用フライパンなどを
使用してレシピ選択ウィンドウを表示すると右ウィンドウの調合の手順以下の表示位置が
ずれる
対処
blend.hsp
287行目
dy=120をdy=y+48に変更
カジノ景品おまけのエーテル抗体の取得率修正
カジノ景品のおまけで貰えるエーテル抗体の取得率が連勝数が4の時が最大で以降
連勝するごとに下がっていく
対処
Noa氏への問い合わせの結果、「連勝すればするほど取得率が上がるように」が意図との
ことだったので
txtadv.hsp
737行目
if rnd(200)>(winRow*5+5)をif
rnd(200)<(winRow*5+5)へ変更
※エーテル抗体の取得難度が上がると思われるため要調整?
アニメ表示部の修正
アニメ表示が意図されたように表示されていない
対処
screen.hsp
927行目
ifの条件に関わらずpreparePicItem
17が実行されている
Noa氏への問い合わせの結果、「記憶が定かではないが多分記述ミス」とのことことだったので
else後のpreparePicItemのパラメータを17から18に変更
※item.bmpを見て「多分18かな?」と判断したので正しい値かどうかは不明
追加打撃、追加射撃時のダメージ属性修正
属性ダメ追加があると追加打撃/射撃時にその属性で攻撃してしまう
対処
action.hsp
1452行目
最後に:ele=0を追加
光源範囲修正
光源の届く距離が南北と東西で1マス違う
対処
init.hsp
67行目
maxFovに設定する値を15から17へ変更
screen.hsp
1003行目
sx(3)=cX(pc)-maxFov/2-2をsx(3)=cX(pc)-maxFov/2へ変更
system.hsp
1621行目
repeat maxFov+4をrepeat maxFovへ変更
system.hsp
1623行目
dist(x*10/12,y,maxFov/2,maxFov/2)<maxFov/2を
dist(x,y,maxFov/2,maxFov/2)<(maxFov-2)/2)へ変更
system.hsp
1630行目
repeat maxFov+4をrepeat
maxFovへ変更
ついでにウィンドウ高さの768制限を解除(変更)
screen.hsp
17行目
2つの768を適当な任意の値へ変更
家具価値再計算バグ修正
修飾子の付いている家具を素材変化すると価値がおかしくなる
対処
item_data.hsp
1183行目
originalValue=iValue(ci)*100/mtRef(1,p)で素材価値適用前の価値を
計算している部分を
・家具の場合
・修飾子が付いている場合
を加味して計算するように変更する
以下、例
if
( refType = fltFurniture ) {
// 家具の場合
if ( iSubName(ci) !=
0 )
{
// 修飾子がある場合
originalValue = iValue(ci) * 100 / (80 +
iSubName(ci) * 20)
} else {
// 修飾子がない場合
originalValue =
iValue(ci)
}
originalValue = iValue(ci) - mtRef(1, p) * 2
}
else {
// 家具以外の場合
originalValue =
iValue(ci) * 100 / mtRef(1,
p)
}
オパートス信仰によるダメージ減衰バグ修正
オパートスを信仰する事によって得られるはずのダメージ減衰が無効になっている
対処
chara_func.hsp
1469行目
ダメージ減衰処理自体は1474行目で判定しているが現在HPに対するダメージの
適用が1469行目なので意味がなくなっている
1474行目での判定と同じ物を1468行目より前に追加すればよい
以下、例
if
( (tc == pc) & (cGod(pc) == godEarth) ) : dmg = dmg * 90 /
100
※PC以外のNPCにも信仰が設定されるようになったため(tc ==
PC)は不要?
画面下部のステータス表示部にゴミが残る問題修正
画面最下部、4桁に達している主能力の1の位にゴミが出る
対処
screen.hsp
176行目
sx=inf_raderW+cnt*47+168をsx=inf_raderW+cnt*47+168-2に変更
screen.hsp
179行目
gcopy selInf,0,440,24,16をgcopy
selInf,0,440,28,16に変更
ダイエットバグ修正
体重が上限に達してると痩せられない
対処
chara_func.hsp
1866行目
if mode=0をif
((mode=0)&(a>0))に変更
低名声時(1000未満)の盗賊団の頭領のレベル調整
名声が1000未満の場合、盗賊団の首領が基本レベル(Lv12)で生成される
対処
action.hsp
673行目
encounterLv=
cFame(pc)/1000の後ろに:ifencounterLv=0:encounterLv=1を追加
※名声1000〜1999時と同じレベルになるため要調整?
バックパックが満杯のときに、井戸(聖なる井戸)の水を空き瓶で汲むと落ちるのを修正
対処
アイテムが満杯でitem_createの戻り値がfalseかつciに-1が設定されているのに
そのままitemName(ci,1)を実行しようとしてitemName内部で落ちる
以下、例
action.hsp
1623行目
1623行目の直後に
if (inv_getFreeId(pc) == falseM) : item_num ciDip, 1
: txtInvFull : goto
*turn_end
の行を追加し、アイテムが満杯の場合はメッセージを表示し何もしないようにする
--------------------------------------------------------------------------------------------------------------
以上が今のところこちらで把握、対処済みな不具合などになります
行数は若干ずれがあるかもしれませんので各自で察して補正お願いします
以下、ソースを解析、修正していて気付いた点
・上記の不具合まとめでも出ているpreparePicItem(#defineマクロ)が使用時の記述によっては意図しない不正な展開を
される事があります
※まさに不具合まとめで示している箇所
#deffunc辺りに書き直すといいかも知れません(速度面が多少気になりますが)
・譲渡されたソースをそのままHSP
3.21でコンパイルしようとするとエラーが発生します
原因はHSP
3.2から追加されたラベル変数に関連する物で一つ上の記事で紹介されているページにて記載されている
パラメータを設定してgosubを行う部分を#defineを使用してcallに置き換えている部分にあります
対処はinit.hsp
4261行目で
#define global call(%1,%2=0) procRef%2: gosub
*%1
と定義されている部分を
#define global call(%1,%2=0) procRef%2: gosub
%1
に変更し、「全ての」callマクロ使用部分の第一パラメータの先頭に*を追加すればコンパイルできるようになります
例:call
act_melee を call *act_melee に変更