proc.hsp

Last-modified: 2015-03-22 (日) 21:42:28

技能とスペルの効果・継続行動に関するスクリプト。

動物系マテリアルが手に入らない問題

905 名前:名無しさん@お腹いっぱい。 [sage] 投稿日:2011/02/22(火) 15:54:53.38 ID:Xy0WFno8

>>900
random_material関数の中にある抽選ループに、
選ばれたマテリアルのレベル?が採取レベル(採取スポットなら現在階層レベル)未満ならループの頭へ、って記述がある。
抽選ループは最大500回繰り返されて、10回おきに採取レベルを1つ下げるんだが、
高レベル階層だと、ループを繰り返しても採取レベルが高いままになるから、
戻り値は関数の冒頭でセットされた0番(=クズ)のままになる。
おそらく不等号の向きが逆。

>>901
動物系マテリアルが手に入らない原因は、採取スポットでの採取処理ルーチンに記述抜けがあるから。

具体的には、「何かの残骸がある」と表示される採取スポットのレベルを変更(PCの解剖学レベル / 3を加算)するところで、
採取スポットの種類番号を16(動物系)にセットする記述が抜けてる。
記述を加えたら動物系マテリアルを採取できた。

修正方法

proc.hsp 31行目

	cell_featRead cX(pc),cY(pc)
	if feat(1)=objREremain	:atxLv+=sAnatomy(pc)/3
	if feat(1)=objREspring	:atxSpot=atxWater1
	if feat(1)=objREmine	:atxSpot=atxMine1
	if feat(1)=objREbush	:atxSpot=atxBush1

	cell_featRead cX(pc),cY(pc)
	if feat(1)=objREremain	:atxSpot=atxRemain1   :atxLv+=sAnatomy(pc)/3
	if feat(1)=objREspring	:atxSpot=atxWater1
	if feat(1)=objREmine	:atxSpot=atxMine1
	if feat(1)=objREbush	:atxSpot=atxBush1

チュートリアルでの採掘補正が残り続ける問題

46 名前:名無しさん@お腹いっぱい。[sage] 投稿日:11/03/25 08:26:08 ID:KJTQvXIm
採掘のチュートリアルの話を聞いた後、わが家で一度も掘らずにいると
他のマップで採掘が1ターンで終わってしまうバグ修正。

proc.hsp 1065行目 (1040行目からの*dig内)
if (f=true)or(flagTutorial=2){

if (f=true)or((flagTutorial=2)&(gArea=areaHome)){
に変更。
あまりにも対症療法的でかっこ悪いけど、一応動作は確認した。
スマートな修正方法は腕の良い方にお任せする。

こういう感じだった。
if (普通の採掘完了) or (flagTutorial=2)
壁壊したり、音鳴らしたり、なんか色々やってる
if (flagTutorial=2)&(マップがわが家)
呪い偽金塊を生成
flagTutorial=3
else
普通のアイテム生成判定
以下略

冒険者とペットの判定が一部おかしい問題

50 名前:名無しさん@お腹いっぱい。[sage] 投稿日:11/03/29 12:37:03 ID:7ECFtcfk
maxFollowerって<と>=で判定だよな?所々そうじゃなかったのでとりあえず

>maxFollowe となってるのがai,chara_func,(hsptmp),main,procにそれぞれいくつか

<=maxFollower となってるのがproc.hspに一つだけ見つかった
どのような不具合があったかは未確認

あと所々"の閉じ忘れとかあるけど見たところ問題無いっぽい?

吟遊詩人が演奏を開始したときプレイヤーの累計おひねりアイテム数が初期化される問題

320 名前:名無しさん@お腹いっぱい。 [sage] 投稿日:2011/03/29(火) 18:56:40.21 ID:Myv4aFO+ [2/4]
もしかしてperformTipsってプレイヤー以外でも初期化されてる?
精々吟遊詩人に割り込まれた時おひねりアイテムが貰いやすくなる程度だけど

321 名前:名無しさん@お腹いっぱい。 [sage] 投稿日:2011/03/29(火) 19:41:56.19 ID:0hn58pRB [3/3]
"の演奏をはじめた。"のメッセージ表示時点で無差別に初期化してるね
まさしく

>精々吟遊詩人に割り込まれた時おひねりアイテムが貰いやすくなる程度だけど
が起きる
"演奏を終えた。"等のメッセージ表示時はプレイヤー以外のチェックしてるから
バグですな

演奏依頼で成功値が正しく計算されない問題

177 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2012/01/23(月) 20:07:28.99 ID:aAhbOsrX

演奏依頼のときだけやたら経験値が入るの気になってたんだけど

p = rnd(聴衆レベル + 1) + 1として

rnd(演奏スキル + 1) > rnd(聴衆レベル * 2 + 1) なら

パーティ中の場合、聴衆がPCペット冒険者でなければ友好度 += rnd(3) してcalcpartyscoreを行う

1/2の確率で成功値 += p

1/4の確率で成功値 -= p

ってなってるんだけどcalcpartyscore内でpがクエストポイントに上書きされるから

演奏依頼時の成功値の変動が想定外の値になってると思うんだがバグだよねこれ

よくある変数被り
calcpartyscore内のpをptpなどの被らないものにしておく

演奏での楽器の効果が機能しないことがある問題

おひねりアイテムが生成されるとciが上書きされる
おひねり金の計算・グールドのピアノ判定・ストラディバリウス判定・成功値計算の4箇所で
ci→cItemUsing(cc)とするといいかも

井戸で見つけた金貨の枚数が元の枚数を上書きする問題

403 名前:名無しさん@お腹いっぱい。 [sage] 投稿日:2011/04/01(金) 03:49:31.46 ID:tns7sz5b [2/4]
ん、バグやね

proc.hsp 1411行目
item_createの後でiNum(ci)を変更している部分をitem_createへの引数にする
( : iNum(ci)=を,に置き換えればおけ)

逆根
162688行目を削除
162688行目にあったrnd(sdata(159, cc) / 2 * 50 + 100) + 1を
162687行目末尾のパラメータ0と置き換え

でいいはず

対象がテレポート妨害装備をしていると使用者のスリの指が不発する問題

55 名前:名無しさん@お腹いっぱい。[sage] 投稿日:11/04/10 06:38:42 ID:zXhhPTta
対象がテレポート妨害装備してるとスリの指が不発するのってバグかな?
使用者の方を条件にすべきなんかね
逆コンパイルソースの163900行目あたり

 

57 名前:名無しさん@お腹いっぱい。[sage] 投稿日:11/04/11 02:58:30 ID:nKwftskk
if ( efid == 635 ) {
(略)
}
をまるごと
if ( efid == 619 ) {
}
の直前に持ってきて

if ( tc == cc ) {

if ( encfind(cc, 22) != (-1) ) {
に、

if ( efid == 619 ) {

if ( efid == 619 | efid == 635 ) {
にそれぞれ書き換え
これで動いてる気がする

スリの指の成功判定が誤っている問題

スリの指の判定がどうもおかしい
rnd(対象の感覚) > rnd(対象の器用 * 4)
が条件の一つになっているが
rnd(対象の感覚) > rnd(使用者の器用 * 4)
ではないだろうか?

乗馬されているペットが接近を発動すると増えていく問題

628 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2011/04/28(木) 06:57:14.70 ID:SkKmJBTh
乗馬ペットに接近持ちの投擲武器持たせて発動させるとバグるんだがどうにかならない?
動かない乗馬ペットが増える

629 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2011/04/28(木) 07:28:54.70 ID:Kh1lQqjk
空間歪曲発動もマズそうな気がする

乗馬してるペットが対象なら終了ってなってる部分を
接近ならテレポート先は対象の座標でテレポートするのは自身って書いてる部分の下に持ってくれば?
ちゃんと動くかは知らない

弱体化の手が不発する条件がおかしい問題

あと163750行目あたりの
i = sorg(10 + p, tc) - cdata(240 + p, tc)

i = sorg(10 + p, tc) + cdata(240 + p, tc)
に書き換え
これで弱体化の手がちゃんと動く気がする

睡眠時に魔力・魅力の潜在が上昇しない問題

523 名前:名無しさん@お腹いっぱい。[sage] 投稿日:11/04/04 11:48:01.98 ID:zyKOmCEX
調べてみたらVersion 1.16fix1から魔力・魅力が対象外になってんね
理由はわかんね
"まあまあの目覚めだ。"で検索して20行ほど下のmodgrowthの引数のrnd(6)を
rnd(8)にすればVersion 1.16開発版以前と同じ仕様になる

睡眠経験値がオーバーフローする問題

152 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2011/05/17(火) 06:40:47.44 ID:RUgFtL0h
睡眠時の成長率計算もバグってるね・・・wiki見てて気付いたわ
後半は1%成長が当然だとばかり

睡眠経験値*寝具補正/100 

この部分で/100より前にオーバーフローしちゃってるから、
↓みたいに変更すれば問題無い

睡眠経験値100万以上の場合 睡眠経験値/100*寝具補正
そうでない場合 睡眠経験値*寝具補正/100

あとは睡眠経験値自体をMax10億に制限すれば完璧だが、これはちょっと面倒

153 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2011/05/17(火) 07:01:48.06 ID:7WmqKcOq
睡眠経験値入るの2箇所だしそこでlimitじゃだめかな?

店番のいない店で寝ると地面のアイテムがすべて非表示になる問題

101 名前:名無しさん@お腹いっぱい。[sage] 投稿日:11/08/04 23:48:11 ID:pQtyOggO
店番のいない店で寝ると地面のアイテムがすべて非表示になる。

これは睡眠処理ルーチンの末尾で、
「現在地のマップオブジェクト識別番号が102:店なら、店のマップ描画情報をリフレッシュ」
するようにしたら直った。

if ( adata(16, gdata(20)) == 102 ) {
gosub *label_1726
}

グローバルマップで空腹時に毎ターン持ち物から旅糧を探す処理が入る問題

64 名前:名無しさん@お腹いっぱい。[sage] 投稿日:11/04/16 10:31:52 ID:Uq9LvXAN
グローバルマップで空腹だと1歩ごとに持ち物から旅糧探すのなんとかならんかな
新たな変数に旅糧持ちフラグセットしてグローバルマップに入ったときリセットとかでいけそう?

65 名前:名無しさん@お腹いっぱい。[sage] 投稿日:11/04/16 22:22:56 ID:3vMN1Sr5
毎ターン判定してるのを1マスごとにするだけでも気にならなくなったよ

66 名前:名無しさん@お腹いっぱい。[sage] 投稿日:11/04/18 05:17:53 ID:aphD6IuY
ああなるほど毎ターン呼び出されてるのかこれ
荒天のときの処理も弄った方がいいんだろうけど自信ないからちゃんとした人に任せる

ガロクの槌を使用キャンセルしたときメッセージがおかしい問題

67 名前:名無しさん@お腹いっぱい。[sage] 投稿日:11/04/19 22:26:05 ID:4iY30nFb
ガロクの槌でキャンセルすると槌が消費されずに
"そのアイテムに改良の余地はない。"って表示されるのバグじゃないかな?

逆コンソース166626行目
f = stat の下に
equip = inv(18, ci)
if ( f == 1 ) {  を入れて

166638行目の
equip = inv(18, ci)をコメントアウト

166738-166745行目
else {
(略)
}
をコピーして

166656行目
tcol@txtfunc = 255, 255, 255 の下にペースト

これで素材槌なんかと似たような感じにはなる、ただしキャンセルでも消費される
のあ猫はどうしたかったんだろうか

68 名前:名無しさん@お腹いっぱい。[sage] 投稿日:11/04/20 00:17:30 ID:iK3cod6Z
逆コンソース166626行目
f = stat の上に
if ( stat == 0 ) {
 goto *label_2186
}
を入れるとキャンセル時は「何も表示せず、消費もされない」になる
逆コンベースだとメッセージ表示とか面倒なんでこれでいい気もする

ガロクの槌で生成した奇跡品に素材品質補正が適用されない問題

品質を奇跡にする前に素材品質補正(*label_0265)しているので
槌使用前の品質で各種補正が計算されてしまう
順番を入れ替えておく

収穫依頼の作物を収穫中にペットがお金を拾うと個数が上書きされる問題

76 名前:名無しさん@お腹いっぱい。[sage] 投稿日:11/04/26 06:44:03 ID:e4D9YpXI
逆コンソース161124行目
gosub *label_2192の上に
in = inv(0, ci)を挿入で治ってる気がする

収穫行動中にペットがお金拾うとinが上書きされちゃうのが問題かな

召喚時に無限ループに陥ることがある問題

80 名前:名無しさん@お腹いっぱい。[sage] 投稿日:11/04/30 23:34:27 ID:C1F0Ua96
召喚系スキルのルーチンで、キャラクタ生成後、
「妹召喚以外は、スキル発動者と同じキャラが生成されたら、そのキャラをvanquishして、カウンタを増やさずループ続行」
という記述があるんだが、これはキャラクタ生成に失敗した時に無限ループになる可能性がある。
上記の処理を「キャラクタ生成に成功したとき」だけ実行するようにすれば回避出来るはず。

ペットが設置した地雷が敵に当たらない問題

156 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2011/05/18(水) 07:01:47.16 ID:xRy6NrcG
地雷の設置者がPCじゃなく、踏んだのがPCでもペットでなければ無効
みたいな処理があるんだがこれペットが設置した地雷が敵に当たらない気がする
何か見過ごしてるかもしれん

バックパックが満杯で窃盗に成功しなかった場合調達依頼品フラグが消える問題

窃盗の際にバックパックの空きを確認する前に ibitmod 12, ci, 0 しているためバックパックがいっぱいで失敗した際に
対象のアイテムが相手の手元に残ったままにもかかわらず調達依頼品フラグがオフになってしまう
ibitmod 12, ci, 0 をバックパックの空きを確認する処理の後に移動させれば問題ない

NPCが渡されたアイテムを無限に使用し続けることがある問題

129 名前:名無しさん@お腹いっぱい。[sage] 投稿日:12/04/01 22:46:42 ID:q2af02np
・無限使用バグ

662 名前:以下、名無しにかわりましてVIPがお送りします[sage] 投稿日:2012/03/27(火) 20:42:35.33 ID:jaa0ZzTm0

速度が合えばNPCにお酒なりなんなり上げて(必要なら毒薬など受け取ってくれないものを選択してテンポずらす)飲まれる前に窃盗すると、

NPCが~を飲んだってでたあとに~を盗んだってでる。

こうするともういっかい窃盗画面開くなりして相手のアイテム欄をのぞくまで

盗んだ~をひたすら飲み続けるみたい。

巻物でも可
個数がマイナスになっても使用し続けるので非常にまずい

とりあえず

*ai_itemのところで
if iNum(ci)=0

if iNum(ci)<=0
としておく

こうしておいても盗むと同時に1つはカラ使用されてしまいリサイクルできてしまうので
盗むのあたりでcAiItem:cdata(12,)は盗めないようにしておくといいかも
ちょっと根本的な理由がよく分からないので要調査

129の無限使用バグについて
if cActionPeriod(cc)>0{ }内では個数チェックが入っているが
盗む最終ターンに個数チェックがされていないのが問題のようだ
if cActionPeriod(cc)>0{ }の下のif gRowAct=rowActSteal{ }内で個数<=0チェックしておく

事前に対象を指定するタイプの魔法を混乱時に使ったとき対象が使用者自身になってしまう問題

混乱しながらも~のあたり
PCは混乱していても正常に対象に当たるし、ボルトやボールなんかではPC以外でも効果が正常に発動するのでバグではないか
gosub *label_1513(読書なんかと同じラベル)の前後で
tcbk = tc と tc = tcbk を書き加えてみた

錬金術で誤字がある問題

錬金術のあたり
obvisou→obvious

連続魔法の2発目以降のスペルパワーが半減していく問題

141 名前:名無しさん@お腹いっぱい。[sage] 投稿日:12/08/01 13:53:58 ID:Lj+mRFVw
連続魔法が思ったより強くない原因。

連続魔法(rapidmagic)はefp, dice1, dice2, bonusの値がそれぞれ元の半分 + 1で計算されるけど、
1ループごとにefpの復元をしていないせいで、連射数に応じてefpが半減していく。
例えばefpが100の場合、3連射なら51→26→14で計91になる。

142 名前:名無しさん@お腹いっぱい。[sage] 投稿日:12/08/01 17:53:05 ID:n8CDDnET
本当だ、よく見てるな

でもこれ以降矢系魔法でefp使わないんだよね
直前のcalcskill命令でefpからele,elep,dice1,dice2,bonus計算してるから
ここはefpじゃなくelep(属性強度)を半分にしたかったんじゃないかと推測するんだがどうだろうか

マニの分解術のメッセージがおかしい問題

修正方法

proc.hsp 1830行目

	case skHand
	if cCastStyle(cc)!0{
		if sync(cc):if cc=pc:txt lang(name(cc)+"は"+skillName(efId)+"の"+_cast(cCastStyle(cc)),name(cc)+" cast "+skillName(efId)+"."):txtMore:else:txt lang(name(cc)+"は"+_cast(cCastStyle(cc)),name(cc)+""+_cast(cCastStyle(cc))):txtMore
		}else{
		if efId=actDrainBlood{
			if sync(cc):(省略)
			}else{
			if sync(cc):(省略)
			}
		}
	if efId=actDisassemble{
		txt lang("「余分な機能は削除してしまえ」",cnvTalk("Delete."))
		cHP(tc)=cMHP(tc)/12+1
		swbreak
		}

	case skHand
	if cCastStyle(cc)!0{
		if sync(cc):if cc=pc:txt lang(name(cc)+"は"+skillName(efId)+"の"+_cast(cCastStyle(cc)),name(cc)+" cast "+skillName(efId)+"."):txtMore:else:txt lang(name(cc)+"は"+_cast(cCastStyle(cc)),name(cc)+""+_cast(cCastStyle(cc))):txtMore
	}else{
		if efId=actDrainBlood{
			if sync(cc):(省略)
		}else:if efId=actDisassemble{
			if sync(cc):txt lang("「余分な機能は削除してしまえ」",cnvTalk("Delete."))   ; ←こちらに移動
		}else{
			if sync(cc):(省略)
		}
	}
	if efId=actDisassemble{
;		txt lang("「余分な機能は削除してしまえ」",cnvTalk("Delete.")) ←コメントアウト
		cHP(tc)=cMHP(tc)/12+1
		swbreak
	}

朦朧の眼差しでメッセージが表示されない問題

修正方法

proc.hsp 3381行目

	if efId=actGazeDim{
		if sync(tc):txt lang(name(cc)+"は"+name(tc)+"を睨み付けた。",name(cc)+" gaze"+_s(cc)+" "+name(tc)+".")
	}

を挿入

壁を掘って鉱石を見つけたとき、ペットがすぐに拾うとスタックされない問題

概要

itemName関数が呼ばれないので鑑定度が変化しない

修正方法

proc.hsp 1091-1092行目

				item_checkKnown ci

を挿入