まめ知識

【計算のオーバー(アンダー)フロー】

コードでの計算中、オーバーフローする単位は、処理しているバイト数単位。
例)HPの計算 現在値が255(0xFF)の場合
05 4C 41 01  .→ HP256(00 01(2Byte計算のため、上位Byteに繰り上がった))
05 4C 01 01  .→ HP 0(00 00)

こんな感じ。 常識といえば常識ですが。

.. -- phan (2006-04-11 04:10:52)

【小ネタ:コードの鬼】

・説明文にコードを仕込む際、説明文の終わりには「00」を入れなくてはならない。
(以降の命令文も文章と見られる)
が、0D 00~ で始まるコードならくっつけてもOK。
例)[340]0C 54 65 73 74 0D 00 30 41 01

【装備超簡易認証】

例)
[390]0D 00 94 24
[394] 79
・どうせ完璧な認証なんて出来ないし、
どーしてもアイテムに一意の数値を用意できない場合はこんな手もあり。


この説明で分からない場合、使わないほうが得策。
.. -- phan (2006-04-13 03:22:16)

【イベントフラグ】


[2E0] FF BF 82 7D 7F FF 89 03
[2E8] 00 00 08 00 00 00 00 00
[2F0] 00 00 00 00 00 00 00 00
[2F8] 00 00 00 00 00 00 FF 00

こんなんやると、
・タブレット全部集まってる状態
・マスターの宝箱や封印の門の前の宝箱開けてない状態

に、なる。
.. -- phan (2006-05-14 02:29:04)

【発動条件切り替え装備 簡単ロジック】

例)武器で14→07に変更する場合

0D 00 84 24 14 :If[武器]の84番地 = 14
02 nn 00   Else(≠ 14…07) nn番地へ

(14コードの効果)
0D 00 84 00 07
FF

nn(07コードの効果)
0D 00 84 00 14
FF


メリット
・変更後のコードの開始位置がどこでも問題ない。
・修正が容易。
.. -- phan (2006-04-11 04:06:22)

【動的に変化する発動確率指定】

  1. Rand(HP+MaxHP) > HP // HPが減少しているほど確率が高く、最低でも50%、最大で ほぼ100%~
  2. Rand(HP) > MaxHP-HP // HPが全快に近いほど確率が高く、50%を切ると発動しなくなる~
  3. Rand(MaxHP*2) > HP // HPが減少しているほど確率が高く、発動率は50%~約100%~
  4. Rand(HP*2) < MaxHP // HPが減っているほど確率が高く、50%を切ると100%発動
    • Rand(HP*n) < MaxHP とした場合、Max値の1/nを境に発動率がカンストする。
  • 乱数の範囲指定側に*nする場合、WORD値の制限により32768を超えられないので、閾値側を同じ値で割るほうがより安全~

【魔法の属性値について】あーぬさん 2024年02月20日 (火) 19時41分 3558

例のBBBのカオスフレアとフュージョンが威力調整されている件で魔法の属性値についても気になったので軽く調査してみました。

測定方法はダメージ減算処理直前の発動条件14でダメージ計算用属性値アドレスの数値を取得するだけですね。
一応該当アドレスを目視でも見れますが直ぐ0に戻るので確実に拾いますw 結果は以下のようになりました。
BBBで上昇したのは光闇禁呪のみですが30台といい感じになっていますね。※括弧内はMAT部分にかかる倍率です。

フレイムバレット火10(1/3) スパークバレット風8(1/3) ウォーターバレット水6(1/4)
ストーンバレット地11(1/3) ダークウェイブ闇16(1/3) ライトボール光8(1/4)
ブレイズ火30(1/2) ライトニングボルト雷30(1/2) ブリザード水16(1/4)
ポイズンクラウド地4(1/4) マジックレイ光15(1/3)
シャイニング光8(1/4) ダークブレス闇10(1/2)
エクスプロージョン火70(1/1) サンダーボルト雷70(1/1) フリーズビースト水8(1/3)
アースジャベリン地8(1/3) デススペル邪3(1/1)
カオスフレア闇12(1/3)/火11(1/3) → BBBで闇36(1/2)/火33(1/2)に上昇
フュージョン光10(1/3) → BBBで光30(1/2)に上昇
ターンアンデット聖5(1/1) レクイエム聖30(1/2) ホーリーワード聖70(1/1)
コールエンジェル聖5(1/3) サモンエレメンタル各5(1/3)

低級や多段系はやはり属性値が低いのでネックレスなどで内部的に反属性にすると極端に高い属性の相手にも通ったりするんですねw
ちなみにFaiのエンチャは付与値が基本5+POWの1/24でMAX46、持続が基本40秒+MATの1/8でMAX165秒となっております。
守護属性の影響は魔法の基本属性値部分は無しでオイル含むエンチャント部分は有りです。

更にこのデータを基にしてヒット時に同値の反属性を足して相殺しつつ彼我の関連ステALL0で基本威力まで調べますと、
全魔法の基本威力が上記の基本属性値と同値でした。MATだけ999にしますと基本威力+MAT倍率まで分かり、
例えばフレイムバレットなら343ダメージなので基本威力10にMAT÷3の333を足した数値だと判明しますね。Luk0だとブレも無いです。
倍率は1/1、1/2、1/3、1/4の4種だけです。無属性魔法はスマッシュ24(1/2)、マジックミサイル20(1/3)、メテオ140(1/1)となっています。
持続なのに1/2と高いダクブレとか2Hitはするからか1/4と低いブリが目を引きますねw これで魔法の攻撃側の計算は殆ど明らかになりましたね。


【ドミニオンダガー:種族特性】あーぬさん 2024年02月20日 (火) 19時41分 3558

全然関係ない話なんですが、アイテム詳細ページを眺めていますとドミニオンダガーが種族特性:邪の敵にも反応すると書かれていましたので、
現物を掘って中身を確認してみますと確かに邪の種族ビット判定がありました。
大体悪魔ビット持ちは邪ビットも持っているので判定的には被っている場合が多いんですが、
Priでもホリワ&CEで頑張れる調整らしいバジトームとかいう変な子が一匹いまして() エクスカリバーより特効の武器が存在していることに感動しましたw
プレイヤーキャラも守護属性が邪なら邪+実体+亜人の種族特性になっていますのでバトロイで特効になる模様…?
魔神であろうと冒険者であろうと問答無用で邪即斬なドミニオンダガーのユニークっぷりに評価が爆上がりですね。


【敵のLUKについて】あーぬさん 2024年02月20日 (火) 19時41分 3558

敵のLukがヒット時などに取得出来るのでダークエンジェルを調べてみました。なんとEQ/BBB共に999です(爆)
他は犬100 イフ76 グレ80 ロード300 バジ80ですね。皆Crt0です。
Crt出してくる敵と言えばゾンビLuk35Crt1 メタボLuk8Crt10 メタスラluk80Crt10でしたね。
プレイヤーキャラに限れば裸Luk32毎にCrt+1されるようになっています。初期Crtは1でHunだけ4ありますね。
ご参考までにどうぞ。


【伝説の壊れないダミードール】あーぬさん 2023年11月17日 (金) 21時45分 3552

ルフィアの不思議なダンジョン…姫路銀山…Indoor派の広場…葉月のHP…ウッ アタマガ…
InternetArchiveを駆使して古いHP巡りをしていますと、
古のB&Bアイテムクリエイション専用掲示板の常連錬金術師であったグレチキ氏のHPのコメントに壊れないダミードールへのコメントを発見しました。
https://web.archive.org/web/20010716194543/http://page.freett.com/gure_tiki/bb.html

氏によりますと電プレD-18のデータらしく、ネトオクで表紙絵を探してみますと見覚えのあるメガネナースでしたので机を捜索しますとやはり手元にありました。
早速調べて見ますとBBBキャラでアクセ系所持フェアリー「ac4」のストックボックス内のダミードールが個数の値0でした。私の睨んだ通りですね。

コードの方を見ますと正規品と違うのは破壊確率が100%になっている点ですね。絶対壊れるけど65535回ダイジョーブ!みたいなやつです。
他にもダンシングドールとドミニオンフェザーも同じく個数0の破壊確率100%でしたね。これは仕込み入ってる気がしましたw
個数については消耗品が10個ずつでその他装備品は何故か全部0になっていました。
普通1なので正規ドロップではなくデータ打ち込み時にデフォルト個数1を入力し忘れたやつかもしれませんね。
錬金でアイテム使用可能な装備品を作成した場合は個数が0だと交換時に消滅してしまいますが、
逆にそうでない普通の装備品は個数0でも消えないので問題無いといえばないですね。
破壊確率100についてだけは確信犯的なものを感じますw 以上ご報告でした。

追記:破損確率は最後の00 64だけ見ていたのでそこは合ってました。その前に0B 22 4B 02で乱数作ってますので50%になっていますね。
大変失礼しました。となりますとおかしいのは個数の値だけですね。消耗品以外全部0となると普通にミスッて爆誕したのかもしれませんね。


【ソードオブナイトメア?】あーぬさん 2023年10月13日 (金) 18時20分 3546

ソードオブナイトメアの混乱の持続時間は∞ではなく約146秒固定で、
他異常武器と同じく重ね掛け可能。その場合文字表示は無しで煙エフェクトと共に持続時間が更新されます。

通常の状態異常武器は元SP(あるいはMSP)÷8に基本時間21秒の合計した時間を入力しており、
ソードオブナイトメアも持続時間の入力を行っていますが何故か入力先がお隣の呪い時間の場所なので、
時間指定された呪い(時間のみで無害)は元MSP÷8+21秒、特に指定されなかった混乱時間の方は
一時MSP999化からの12 XX状態異常発生コード処理の結果146秒になっている模様です。(リアルタイムで状態異常時間アドレスを監視しました)

バトロイで彼我のLV1ステALL0やLV9999ステALL999など条件を色々変えると呪いは21秒~146秒まで変動し、混乱は常に146秒固定でした。
当時のプレイヤーの方々はこの秒数でビシバシ更新し続けられたのであたかも持続時間が無限のように感じたんでしょうね。

ちなみに状態異常の持続時間は相手側のRS/MRS/LCKが関与しませんでした。
これらのステはあくまで発生確率への抵抗だけで時間は軽減できないんですね。
何故対象が呪い状態かどうかの判定と呪い時間だけの入力を行うのかは不明ですが、
これにより必ずMSP999と同等の持続時間固定になりLV4000相当になるメリット(ブッ壊れ?)と、
サタンリング装備の相手が混乱して魔法も物理も使えなくなるアンフェアを回避するメリットの2点が発生しています。

コードだけ見ると他からテンプレ引っ張って来て頑張って作りましたみたいな感じもしますし、
ディアボロスレイピアといいフィロソハーズローブといい謎の凡ミスが見落とされたままなんですよね。
持続時間算出用に弄ったメモリ2C値を最後に自MSPに代入して元に戻そうとする(戻ってない)所とか他の状態異常武器では見かけないので怪しげです。
装備修正込みステの数値はメニュー開いた時やヒット時のダメージ処理開始タイミングでまた新たに素ステと装備ステから再計算され正常値に戻るので実害はありませんがモヤモヤコードですね。
同様の理由でエンジェルイレイザーも1回オネーサン叩くと自分に補助回復魔法掛けたりして最後対象を変えたりしない限り、
素振りするだけで装備修正込みアドレスのATが99ずつ加算されていきますがヒット時には戻ってますw
フレーム単位でタイミングが重なっても結局再計算処理に阻まれるのでフィロソハーズローブでメテオ中に〇連打とかも意味ないです。
あれもメモリ上ではどんどんMATが膨れ上がるのでテンションだけ上がりますw


ちょっとしたコードミスでそんなことになるとは。
とはいえ、フィロソハーズローブやディアボロスの発動条件とかも残念きわまりないのは同意です。
追加アイテムは検証も甘かったんでしょうねぇ。効果もぱっと見ではわからないものでしたし、なおのことかな。

コード上、混乱の継続時間に指定がないって所までは把握してましたから、
混乱する前と変わらない(継続時間が0)=継続時間が1から0にならない=終了判断ができない=無限だと思っていました。
と言うか、混乱したらタコ殴りにされて終わりですね。継続時間以前のお話とか。
アイテム解説の詳細の方、機会があったら修正しておきますね。

コードの謎と言えば壊れないダミードールもありました。
昔いろいろ調べてコードを見つけてやろうとしたんですが、結局どこをどう見てもふつうのダミードールと違いがないように見えて、結局挫折した覚えがありますね。懐かしいなぁ。
バイナリなんて触る世界で仕事なんかしないだろう、と思っていたのですが、存外に今の仕事では使っていたりして、
XORなんてなんの暗号だよ、とか思っていたわけですが、どこで何が役に立つかわからないなぁ、としみじみ感じています。


持続時間1→0になる時だけ状態異常ビットOFF処理がされますので、その認識で合っていますが、
実は12 XXコードはそれ単体で持続時間算出まで機能しますので、ソードオブナイトメアのように12コードを使用しながら時間指定までしてやらない場合は、
12コード独自の計算式に基づいた持続時間が自動で入力されちゃうんですね。

状態異常時間は種類によって少しずつ式が違うんですが、12コード混乱の場合はMSPの1/8+基本21秒で算出されています。
ソードオブナイトメアも全く同じ式をコード化して自力算出した数値を(何故か)呪い時間アドレスへ突っ込んでおり、
ここを書き換えて「混乱時間アドレスに0を代入」させてあげるようにすると永続混乱になりました。
混乱掛かる前の持続時間0と手動代入後の0はどうやって判別しているのかは不明ですが、
同じ0でもコードによる指定操作が入ったならその値を優先してくれる仕様みたいですね。
まあ混乱は10秒程度で直らない限り生殺し悪夢なので、即死の方が精神的にマシになってしまうんですかね。
ナイトメアは名前や説明文も含め総合的にヤバそうなオーラを発しているせいか即死より禁止されがちだったんでしょうか。

ちなみに12コード版スタンは基本5秒+元SPの1/50で、ブラックジャックは12コード後に手動計算で基本16秒+元SPの1/32と長めの時間になるようにしていますね。
敵版と同じ式のままだと短いので長くするゾーという感じですね。ハリセンソードは12コード無しの直接スタンフラグONなので特定の敵種族で無効化されず、
時間も基本6秒+元SP1/8とやたら伸びしろがある感じになってました。流石最強の武器ですねw

余談ですがハリセンのコード見た時冒頭の0B 20 40 00 0B 20 24 00 02 CA 00で笑い転げました。
「何に使うかワカランけどとりあえずメモリ20初期化や!今0にしたばかりのメモリ20やねんけどこれはもしもの話やで?!中身が0でなかったら、
もし何かの間違いで0以外になってたら、即★終劇するで!」(ンナワケナイヤロ!)みたいなお笑いコードが展開されています。
これ狙って組んだんでしょうかね?06 40 03 80の後に02 CA 00があるのもよくわからないんですが態とボケてますよねコレ。
「もしもの話やで?!もしCPUがバグッてスタンフラグ立てるのに失敗しよったら即★終劇やで?!」(ナンデヤネン)みたいな。
CPUが本当にボケて処理をミスった時の事までフォローする気概を持ったスゴイコードです。
結局メモリ20は何にも使ってないのもツッコミ所ですね。
私もビットシフトとか丸め誤差って何?というレベルでプログラミング無知なのにこういうコード見て爆笑出来る程度にはなりました。

壊れないダミードールは昔聞いたことがあった程度なんですが、
何かの配布キャラが持ってたりどこかの宝箱から出て来るものなどでしたかね?興味あります。
コード部分が完全に一致していても、謎の理由で個数の値が0になっているとすればそこから破壊処理でー1されて65535個にはなりますね。

追記:フィロソハーズローブのコードを眺めていますと最後のMAT&MDFの加算処理が演算子58でなくて41を使用しているのに気付きました。
05 38 41 2Cでは固定値44加算しているだけになるので折角計算に使用したメモリ2Cがハシゴ落されて泣いてますね。
まあ58にしても意味ないんですけどね(知りたくなかった情報w)


【12コード単体の状態異常時間調査】2024/3/11/20:55 -あーぬ-

魔法や敵の状態異常攻撃はこのままの式で行われている模様。
既存アイテムは12コードの後に個別調整した計算式で時間を決定している。
成功時ビット無しなら初回文字表示、以降は文字表示無しで時間だけ更新。
00:魔法武器化:基本24秒+MAT1/4
01:Dエネミー:基本60秒+MAT1/4
02:Dアライメント:基本60秒+MAT1/4
03:エンチャント火:基本40秒+MAT1/8、属性値は基本0(Fai魔法版は5)+POW1/24
04:エンチャント地:基本40秒+MAT1/8、属性値は基本0(Fai魔法版は5)+POW1/24
05:エンチャント風:基本40秒+MAT1/8、属性値は基本0(Fai魔法版は5)+POW1/24
06:エンチャント水:基本40秒+MAT1/8、属性値は基本0(Fai魔法版は5)+POW1/24
07:麻痺 基本36秒+SP1/4
08:混乱 基本21秒+MSP1/8
09:呪い 基本66秒+MSP1/4
0A:沈黙 基本66秒+MSP1/4
0B:睡眠 基本26秒+MSP1/8
0C:スタン 基本5秒+SP1/50
0D:石化 基本6秒+SP1/8
0E:狂人化 基本66秒+MSP1/4
0F:AT-UP 基本10秒+MAT1/8
10:AT-DOWN 基本10秒+MAT1/8
11:DF-UP 基本10秒+MAT1/8
12:DF-DOWN 基本10秒+MAT1/8
13:ヘイスト 基本40秒+MAT1/8
14:スロー 基本40秒+MAT1/8
15:MAT-UP 基本10秒+MAT1/8
16:MAT-DOWN 基本10秒+MAT1/8
17:MDF-UP 基本10秒+MAT1/8
18:MDF-DOWN 基本10秒+MAT1/8
19:魔法無効化 基本25秒+MAT1/8
1A:インビニシブル 基本10秒+MAT1/8
1B:ウィーク 基本10秒+MAT1/8
1E:毒 基本6回+SP1/4回(1.5秒毎に約3%減・1→0回の際は減少無し)
1F:フィーブル 基本6回+MSP1/4回(1.5秒毎に約3%減・1→0回の際は減少無し)
20:ドレイン 35秒+MSP1/4(同一発動者から3回まで、成功判定は自SPと敵RS)
↑グレイアークが発動条件12でMRSでなくてRS999で抵抗しているので肉体系異常。
 プレディクションプレートは発動条件13の精神系受けた時MRS999なのでDrainは防げない。
21:リジェネ 基本30秒+MAT1/4


名前:
コメント:

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2024年03月11日 20:56
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。