バグ修正情報のフォーラムの引用

Elona開発ファイル所有者の情報交換トピック
http://elona.squares.net/forum/viewtopic.php?f=7&t=4779&start=0
からの引用。
2015/12/26時点でページをローカルに保存していたのでそこからコピーしています。

Re: Elona開発ファイル所有者の情報交換トピック

by Nyamonaki on 木 3 17, 2011 1:24 pm

とりあえずあちこちに分散されているバグ情報、バグの修正情報を譲渡されたソースに対して適用する場合の修正点まとめ
※なにをさておいても、公式フォーラムや、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 に変更


Nyamonaki
記事: 9
登録日時: 月 7 28, 2008 1:51 pm

 

 

LastUpdate:2018/08/06