MOD(BaseMODなどの非公式なもの)について議論?する場所です
Library Of RuinaのMODは制作者の想定していないものであり、場合によってはゲームを壊す可能性があります
また、MODはけして良いものではありません。ゲームバランスを崩すような過度な改変は不快に思う方や、怒りを覚える方がいます。
MDOはゲームに新たなコンテンツを追加することが出来ます。これらのことに気を付けてゲームとして楽しめるMOD制作をしていきましょう。
MOD(BaseMODなどの非公式なもの)について議論?する場所です
Library Of RuinaのMODは制作者の想定していないものであり、場合によってはゲームを壊す可能性があります
また、MODはけして良いものではありません。ゲームバランスを崩すような過度な改変は不快に思う方や、怒りを覚える方がいます。
MDOはゲームに新たなコンテンツを追加することが出来ます。これらのことに気を付けてゲームとして楽しめるMOD制作をしていきましょう。
ちなみにキャラクターの位置はStageInfoのformationをいじれば変えられます
どの陣形がいいかはアセット覗くなりして判断してください(1が司書と同じ並びのやつ)
(接待中に変えたいならSingleton<StageController>.Instance.GetCurrentWaveModel().SetFormationPosition(index, new Vector2Int(x, y));という手もあります。詳しいやり方は完全開放戦のenemyteammanager覗くなり元メソッド参照するなりしてください)
あと現在おま環なのか仕様なのかわかりませんが招待状MODのステージだと舞台開始時に2番目の敵と1番目の敵のIndexが入れ替わるのでAddNewUnitや陣形組むときは注意が必要です
ついでにOnDieOtherUnitは生贄職員がよくやるバトペ能力による自爆には反応しないので同様の状況が起こりえるときは避けてOnRoundEndTheLastにGetAliveListするなりした方がよさげ
質問なのですが、パッシブやダイス効果について書いてあるコードってどのファイルにあるのでしょうか?
色々試すのに参考にしたいんですが、探しても見つからなくて…
公式マニュアルで参照に追加しろと言っていたAssembly-CSharp.dllに大体入ってます
<<らまさん
Library Of Ruina\LibraryOfRuina_Data\Managed\Assembly-CSharp.dllに記載されています。
閲覧するのであればILSpyなどの逆コンパイラが必要になってきます
<Yakumohisyoさん <<漆樹さん
教えていただきありがとうございます。
無事解決しました!
>GetAliveListとかが動かねぇなぁとか悩んでたけどよく見たら.NET FrameWorkじゃないただのクラスライブラリで作っちゃってた事をここに懺悔します
なんか動く処理と動かん処理あるなあと思ってから投げちゃってたけど多分これだわ
あなたのお陰で救われました 多分
揺らぎの手札追加とかは普通に出来るのに「一撃」そのまま丸コピした処理も動かん!ってふて寝してた
MODでMapManager追加してBGMを追加(専用曲)って可能ですか?
あと開放戦とか一部のバトルで画面に流れる台詞?っぽいものを呼び出すときに参照してるIndexがどこにあるか(それと追加できるか)はどなたか分かるでしょうか。。
いろいろ試した結果MapManagerはUnity上でプレハブ化されたオブジェクトから呼び出されているのでこちらで下手にいじるのは危険だという結論に達しました(普通にやってもスクリプトが動かず最悪ゲームが停止します)
幻想体セリフのIndexは各MapManagerの中で設定されていますが肝心の呼び出し先がAssetの中のxmlになっているようなのでこちらも私の技術では不可能でした
BGMだけならだいぶ前に上に挙げたように
OnRoundStart()に
int emotionTotalCoinNumber = Singleton<StageController>.Instance.GetCurrentStageFloorModel().team.emotionTotalCoinNumber;
Singleton<StageController>.Instance.GetCurrentWaveModel().team.emotionTotalBonus = emotionTotalCoinNumber + 2;
(感情コインの有利不利で敵のBGMかセフィラBGMか変わるので敵のBGMに固定)
を追加してから、
任意のタイミングで
SingletonBehavior<BattleSoundManager>.Instance.ChangeFinalCreatureTheme_Roland(0);
(ローラン戦第1段階BGMの場合。詳しくはBattleSoundManagerとかEnemyTeamManagerとか覗いてください)
AudioClip[] audio = new AudioClip[1]{SingletonBehavior<BattleSoundManager>.Instance.CurrentPlayingTheme.clip};
AudioClip[] audio2 = SingletonBehavior<BattleSoundManager>.Instance.SetEnemyTheme(audio);
(敵のBGMリスト(戦闘中に急に流れる接待準備画面めいたあのBGM)を変更したBGMに挿げ替える)
でいけます(bool変数などでChange~Themaの部分以降は再起動しないように制御してください)
WorkShopからのサブスクライブ時やゲーム起動時にAudioCripがどこに格納されるかがわかればStoryBGMから読み取って最終文にぶちこめば外部音声も再生できそうです
(追記)
StoryBGMの場所のアクセスの仕方は分かりましたが読み取りにコルーチンを使っているため現在私たちが使えるコードでは処理は難しいと判断しました。一応アクセスパスの詳細を下記に記しておきます
string modId = "TestMod"
string audioName = "test.ogg";
string basePath = Singleton<ModContentManager>.Instance.GetModPath(modId);
string modBgmPath = ModUtil.GetModBgmPath(basePath);
//上記までは作動を確認
//下記が問題のコルーチン。現在作れるパッシブ、バフ、ダイス能力、ページ能力などではMonoBehaviourやEventSystemが継承できないのとそもそもEventSystemを新たに生成するのは危険極まりなさそうなのでこのコルーチンを制御する術が無いと思われます。ちなみにコールバックメソッドは元の記述から変更しています
AudioUtil.LoadAudioCoroutine(Path.Combine(modBgmPath, audioName), (Action<AudioClip>)(c => SingletonBehavior<BattleSoundManager>.Instance.SetEnemyTheme(new AudioClip[1] { c })));
詳細を知りたい方はStoryManagerのLoadAndPlayBackgroundMusicメソッドを参照してください
というかそもそも公式のアプデを待った方がよさそう
あなたの考えは?