Dual Summon Mod のアップデート 3

追加した部屋

120215_1.jpg

120215_2.jpg

このセット(CChasm〜)は床を綺麗につなげるのが難しいですね…。
どうしても繋ぎ目ができちゃいます。
公式が作ったセットでも、繋ぎ方が下手で、わずかに隙間ができている場所が沢山あります。
配置するときのコツは、配置位置XYZの小数点以下を削除することと、角度を変えないこと(Z軸回転も避けた方がいい)です。

120215_1.jpg
この祭壇でリッチをいじくり回してたという設定です。

120215_2.jpg
岩を登ると上の階に上がれます。

120215_3.jpg
奥の天井の穴からは薄っすらと外の光が差し込んでいます。

120215_4.jpg
青いリッチはここから降りてこないので、自分がここに上がって戦わないといけません。

セットは配置できるパターンに限りがあるので、出来合いのセットをテンプレ化しているMODがあります。
それを使えばもっと楽に配置できると思います。

Cello978's Dungeon Maker - Caves
Cello978's Dungeon Maker - Alyied Ruins
Cello978's Dungeon Maker - Fort Ruins

ダンジョンなんかを作る時に、これらのMODを一緒に読み込んで、使いたい部分をコピペするだけです。
オブジェクトを1から配置するよりも楽ですし、時間の節約になります。
 

Dual Summon Mod のアップデート 2

赤いリッチ

初期状態
一定範囲内に効果があるファイアダメージの杖を所持
プレイヤーの足元にドクロ地雷を発生させる(かなり痛い)
周囲にドクロ爆弾をばらまく
スケルトンチャンピオンを召喚
炎系の魔法を複数使用
炎ダメージは全く効かない
麻痺・水ダメージ・病気・毒・通常武器への高い耐性がある
物理ダメージの反射10%を持つ

本気バージョン
Skull Bomb Staffを所持
プレイヤーの足元にドクロ地雷を発生させる確率がアップ
周囲にドクロ爆弾をばらまく確率がダウン
数秒ごとにプレイヤーのすぐ近くにワープ
スケルトンチャンピオンを召喚
ウィザードの激憤を使用
炎耐性、魔法耐性を下げる魔法を使用
炎ダメージは全く効かない
麻痺・水ダメージ・病気・毒・通常武器への高い耐性がある
物理ダメージの反射10%を持つ

120216_01.jpg ドクロ爆弾発射!
120216_02.jpg チュドーン
 

Dual Summon Mod のアップデート 1

Dual Summon Modをアップデートするための作業中です。
かねてからアイデアはあったものの、いつやるか?という部分で、動画の撮影・編集に時間を使っていたのでできませんでした。
動画は一日フルに作業しても完成までに数日かかります…。
一応、復活したマニマルコを倒すところまでは終わったので、動画作りは一旦ストップして、MODいじりに移ります。

Double Mauled Skeleton の挙動を変更
セルが変わったときに召喚したスケルトンを消していたのですが、このせいで、かなり使い勝手が悪くなっていました。
従来の召喚クリーチャーのように、セル移動で消すのは止めました。
建物内→建物外へ移動した場合、スケルトンが建物内で戦闘中でなければ、建物外へ出てきます。
ただ、あまりにも距離が離れてしまうと着いて来ない場合があります。
これで大分、使いやすくなりました。

セーブするデータを変更
文字列変数を1つセーブデータに保存していたのですが、これを止めました。

新しい杖を追加
後述の赤いリッチの死体から入手できます。
魔法弾を発射し、対象に当たると周囲に複数の頭蓋骨が出現。
数秒後に爆発します。
120217_03.jpg 外観
120217_04.jpg 発射!
120217_05.jpg ドクロが出現
120217_06.jpg ドカーン

特殊なリッチを二体同時に召喚する魔法を追加
赤いリッチ、青いリッチを二体同時に召喚する魔法が追加されます。
この魔法を手に入れるのは、結構大変です。

ブラッドラン洞穴の最深部に隠し扉が追加されます。
隠し扉をスイッチで開く岩が封鎖しています。
更にその岩を緩んだ板が封鎖しています(これはアクティベートすれば外れます)。

スイッチがある部屋の鍵をブラッドラン洞穴内で見つけます。

鍵でスイッチ部屋の扉を開けると、3体の特殊なスケルトンが洞穴内に出現します(倒す必要はありません)。

スイッチで岩を開けます。

隠し扉はDual Summon Ringを装備していないと開けることが出来ません。

隠し扉に入ると、広い洞穴の部屋に移動します。

奥には赤いリッチ(炎を操る)がいます。

赤いリッチを倒すと、赤いリッチ(本気バージョン)と青いリッチ(氷を操る)が出現します。

二体とも倒します。

それぞれ、特殊なブラックソウルジェムを持っているので、それを回収します。

赤いリッチは新しい武器(Skull Bomb Staff)も持ってます。

死霊術師のアミュレットや血蟲のヘルムなどの装備で召喚レベルを110以上にします。

部屋内にある本を探し出し、本を読みます。

本に書かれている内容を試してみる?→はい

2つの特殊なブラックソウルジェム、MP全てを失い、リッチ二体同時召喚魔法を入手。

120217_01.jpg 赤いリッチ
120217_02.jpg 青いリッチ
現状、赤いリッチと青いリッチが登場するところまで完了。
かなり強い…。
 

地面を掘るMOD

前々から墓荒しMODを作りたかったのですが、Graverobberを知ってしまい

「作る必要ないんじゃね?」

と一瞬思いました。
どんどん掘りポイントが追加されるなら、素晴らしいMODだと思いました。
でも、2007年から更新がありません…。

Graverobber BETA1 by WereWolf
http://oblivion.nexusmods.com/mods/8942/

似たようなMODがないか検索したのですが、見つからず。
ないなら作るしかない…。

で、墓に限らず、シャベルひとつで何処でも掘れるMODを作ろうと思ったのですが、やる気がすぐに無くなりました。
昔、仕事でこんな感じのスクリプトをしこたま書いてました。

処理自体は簡単です。

1 シャベルを選択
2 掘れる場所か判定
3 (掘れるなら)掘る?→はい
4 掘る深さを決める
5 待ち時間
6 ランダムとかで色々出てくる

シャベルに耐久度(確認はできないけど、データとして持ってる)を付けて、ある程度掘ると使えなくなります。
修理は…とりあえず、できなくていいや。
一度掘った場所は掘りやすくなり、二回目以降の掘り時間が短縮される…という処理が良さそうです。
大したアイテムは出ないので、ゲーム内時間を浪費したいなら何度も掘ればいいじゃんというスタンスです。
なので、同じ場所を延々と掘って、しょぼいアイテムを何度もゲットするプレイはアリです。
場所によって出てくるアイテムを差別化すれば、色んな場所に移動して掘るという理由になると思います。

2掘れる場所は、掘るポイントのデータを見て決めます。
プレイヤーの立ってる位置が掘るポイントに含まれているなら掘れます。
墓の近くなら、墓を掘ります。

掘りポイントに必要なデータは、セル名、中心座標(XYZ)、中心座標からの有効距離です。
実際は他にもいくつかのデータが追加で必要です。

まず、掘るポイントのデータを作るのがめんどくさい。

広大なフィールドだけでなく、大量にある内部セルの全てをひとつひとつ吟味して、何処が掘れるか?を決めなきゃいけません。
レンダリングウィンドウでそのセルを開いて、掘れそうな場所の座標と範囲を確認し、スクリプトに追加していく作業を繰り返す必要があります。
なあなあで済ませることも可能です。
それなりのものが出来上がるだけです。

次に、掘った時に出てくるモノのデータを作るのもめんどくさい。

掘る深さは三段階選べるようにします。
となると、1つの掘りポイントに3種類のドロップリストが必要です。
ドロップリストは、どのアイテムがどれくらいの割合でドロップするか?を持ってます。
ドロップリストを沢山用意すれば、それだけ変化に飛んだアイテムの出方をするようなります。
最初は少ないドロップリストを使いまわして、バージョンアップで細かく差別化して行くのが、まっとうな方法でしょうか。

墓を掘った後に足元に棺を置きたいなら、そのデータも用意しなきゃいけません。
動的に地形を変えて、掘った位置に穴を作ることはできないので、掘るだけ掘って、用が済んだらきちんと埋めて元に戻しましたという演出のための盛り土を置くのが精一杯です。

それには、どのオブジェクトをどの位置に(掘りポイントからの相対位置)、どの角度で置くか?というデータも必要です。
角度を決める際、レンダリングウィンドウで仮置きしたオブジェクトをZ軸回転させながら、これくらい?っていうのを無数に繰り返さないといけません。

先にやるべきことが分かってしまうと気が重い…。
 

Disassemble Corpse v0.0.2bで追加された機能に関する詳細な仕様

バージョン 0.0.2 beta で追加した内容。

1解体時に待ち時間が設定される。
2ドロップ率とドロップ数が使用武器の影響を受ける。
3ドレモラ解体時は人間の心臓をドロップしない。

12に関する仕様の詳細です。
大したことはしてないのですが、説明するとなると、すごく長くなりそうな予感がします。


何にどう影響するのか?

解体時にドロップするアイテムの一覧は以下となっています。

- 80% 1 skull → ドロップ率に影響
- 60% 2 clavicles → ドロップ率に影響
- 75% 1 pelvis → ドロップ率に影響
- 25% 4 thick bones → ドロップ率に影響
- 20% 8 thin bones → ドロップ率に影響
- 50% 1 ribcage → ドロップ率に影響
- 100% 1 human heart → ドレモラの時はドロップしない
- 100% 1 bone meal → ドロップ率とドロップ数に影響
- from 1 to 5 human skin(s) → ドロップ数に影響
- from 1 to 5 human blood bottle(s) → ドロップ数に影響
- 死体の所持品 → 影響なし

好条件な武器を使うことで、上記のドロップ率が上昇します。悪条件は逆です。
ドロップ数も同様です。
待ち時間は好条件なほど短くなり、逆は長くなります。
好条件・悪条件は次項のルールに従って算出されます。


好条件・悪条件の算出

最初にDPWを求めます。
Damage Per Weightの略です。
重さ1あたりの武器の攻撃力を表しています。
DPWの数値が大きいほど好条件とみなされ、逆が悪条件になります。
軽くて攻撃力の高い武器が良いということになります。

好条件な武器の例は、18ABF7 の Steel Longsword です。
クエストアイテムのようです。

悪条件な武器の例は、レプリカの武器全般です。
C5616 Ebony Dagger Replica


DPWの基準値

Vanillaの全ての片手剣からDPWを算出し、最大値、最小値、基準値を決定しました。
これらの値を使い、使用している武器がどれだけ好条件か?どれだけ悪条件か?…より詳細な変化量を求めます。
デフォルトでは、最大値は2.2、最小値は0.1、基準値は1.0となっています。
データ抽出をミスってなければ、最小値未満の武器(0.0...)、最大値を超える武器も存在します。
デフォルトの基準値、最小値、最大値には大して根拠はありません。

Vanillaの片手武器におけるDPWの分布
vanilla1hblade_dpw_distribution.png

省いていますが、DPW5や7の武器も存在します。
この分布図からすれば、一番数が多い0.5を基準値とするべき、なぜ0.0を最小値としないのか?という見方もできると思います。


特殊な武器に対するDPWの修正

重さが0の武器や、MODで追加されるチート武器に対しては、以下の修正を行なっています。

1Vanilla以外の武器は全て基準値に修正。
2重さが0の武器は全て基準値に修正。


パラメータに関して

できるだけマジックナンバーは使わないように設計しているため、ほとんどが変更可能です。
DisassembleCorpse.iniを編集します。
コンソールでも変更可能ですが、セーブデータのローディング時に元に戻ってしまいます。

DPWの基準値、最小値、最大値を設定します。
set DisassembleCorpse.base_dpw to 1.0
set DisassembleCorpse.min_dpw to 0.1
set DisassembleCorpse.max_dpw to 2.2

最小値は一番悪い条件とみなしたい武器のDPWです。
この値より小さい場合、最小値に修正されます。
最大値は値を超える場合に最大値に修正されます。
使用する武器のDPWが基準値より高いか、低いかによって、ドロップ率、ドロップ数、待ち時間に対してプラスに働くかマイナスに働くかが決まります。

待ち時間の範囲を設定します。
set DisassembleCorpse.base_wait_time to 6
set DisassembleCorpse.min_wait_time to 1
set DisassembleCorpse.max_wait_time to 10

使用する武器のDPWが基準値に近い場合、base_wait_timeに近くなります。
待ち時間は最短でもmin_wait_timeまでしか短縮せず、最大でもmax_wait_timeまでしか延長しません。

ドロップ率の係数の範囲を設定します。
set DisassembleCorpse.base_drop_factor to 1.0
set DisassembleCorpse.min_drop_factor to 0.5
set DisassembleCorpse.max_drop_factor to 2.0

ドロップ数の係数の範囲を設定します。
set DisassembleCorpse.base_count_factor to 1.0
set DisassembleCorpse.min_count_factor to 0.1
set DisassembleCorpse.max_count_factor to 1.5


ドロップ率、ドロップ数、待ち時間の算出方法

ドロップ率、ドロップ数に設定できるのは、係数です。
算出した係数をドロップ率・数に掛けます。

base = ドロップ率・数の係数の基準値
min = ドロップ率・数の係数の最小値
max = ドロップ率・数の係数の最大値

DPW が max_dpw 以上なら max
DPW が max_dpw 未満なら base + base * (DPW - base_dpw) / (max_dpw - min_dpw)

算出した係数がmin未満になったら、minで修正され、maxを超えたらmaxで修正されます。

DPWが1.5の武器の場合のドロップ率の係数(設定は全てデフォルト値)
max_dpw(2.2)未満なので、base_drop_factor + base_drop_factor * (1.5 - base_dpw) / (max_dpw - min_dpw)
1.0 + 1.0 * (1.5 - 1.0) / (2.2 - 0.1)
1.0 + 1.0 * 0.5 / 2.1
1.0 + 0.23...
1.23...
ドロップ率が1.23...倍になります。

DPWが0.3の武器の場合のドロップ数の係数(設定は全てデフォルト値)
base_count_factor + base_count_factor * (0.3 - base_dpw) / (max_dpw - min_dpw)
1.0 + 1.0 * (0.3 - 1.0) / (2.2 - 0.1)
1.0 + 1.0 * -0.7 / 2.1
1.0 + 1.0 * -0.33...
1.0 - 0.33...
0.66...
ドロップ数が33%減ります。10個ドロップする場合、6個か7個。

待ち時間の場合は係数ではなく、そのまま待ち時間として算出されます。
 
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。