Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of JPLangMod v1.0.6
JPLangMod.dll
Decompiled 8 months agousing System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Text; using BepInEx; using BepInEx.Configuration; using On.RoR2; using On.RoR2.UI; using RoR2; using RoR2.UI; using TMPro; using UnityEngine; using UnityEngine.SceneManagement; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("JPFontMod")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("JPFontMod")] [assembly: AssemblyCopyright("Copyright © 2025")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("fb60a9b5-06a1-4228-b141-0b50fcef0e2e")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("1.0.0.0")] namespace JPLangMod; [BepInPlugin("com.yourname.jpfontmod", "JPLangMod", "1.0.0")] public class JPLangMod : BaseUnityPlugin { private TMP_FontAsset jpFont; private TMP_FontAsset fallbackFont; public const string PluginGUID = "com.yourname.detaileditemessages"; public const string PluginName = "Detailed Item Messages"; public const string PluginVersion = "1.0.0"; private ConfigEntry<bool> enableDetailedMessages; private ConfigEntry<bool> showItemTier; private ConfigEntry<bool> showStackCount; private ConfigEntry<bool> showItemDescription; private ConfigEntry<float> messageDuration; private Dictionary<ItemIndex, string> itemDescriptions = new Dictionary<ItemIndex, string>(); private void Awake() { //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Expected O, but got Unknown //IL_0187: Unknown result type (might be due to invalid IL or missing references) //IL_0191: Expected O, but got Unknown //IL_0199: Unknown result type (might be due to invalid IL or missing references) //IL_01a3: Expected O, but got Unknown //IL_01ab: Unknown result type (might be due to invalid IL or missing references) //IL_01b5: Expected O, but got Unknown string location = Assembly.GetExecutingAssembly().Location; string directoryName = Path.GetDirectoryName(location); string text = Path.Combine(directoryName, "jpfontbundle"); AssetBundle val = AssetBundle.LoadFromFile(text); if ((Object)(object)val == (Object)null) { ((BaseUnityPlugin)this).Logger.LogError((object)("AssetBundle load failed: " + text)); return; } jpFont = val.LoadAsset<TMP_FontAsset>("LogoTypeGothicC"); fallbackFont = val.LoadAsset<TMP_FontAsset>("LogoTypeGothicR"); if ((Object)(object)jpFont == (Object)null) { ((BaseUnityPlugin)this).Logger.LogError((object)"JPFont アセットが AssetBundle 内に見つかりません"); return; } ((BaseUnityPlugin)this).Logger.LogInfo((object)"日本語フォント読み込み成功"); HGTextMeshProUGUI.Awake += new hook_Awake(ReplaceFontHook); ApplyFontToAllExistingTMPText(); SceneManager.sceneLoaded += delegate { ApplyFontToAllExistingTMPText(); }; enableDetailedMessages = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "EnableDetailedMessages", true, "詳細なアイテムメッセージを有効にする"); showItemTier = ((BaseUnityPlugin)this).Config.Bind<bool>("Display", "ShowItemTier", true, "アイテムの階級を表示する"); showStackCount = ((BaseUnityPlugin)this).Config.Bind<bool>("Display", "ShowStackCount", true, "現在のスタック数を表示する"); showItemDescription = ((BaseUnityPlugin)this).Config.Bind<bool>("Display", "ShowItemDescription", true, "アイテムの説明を表示する"); messageDuration = ((BaseUnityPlugin)this).Config.Bind<float>("Display", "MessageDuration", 10f, "メッセージの表示時間(秒)"); Inventory.GiveItem_ItemIndex_int += new hook_GiveItem_ItemIndex_int(Inventory_GiveItem); Inventory.SetEquipmentIndex += new hook_SetEquipmentIndex(Inventory_SetEquipmentIndex); Chat.AddPickupMessage += new hook_AddPickupMessage(Chat_AddPickupMessage); ((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin Detailed Item Messages loaded successfully!"); } private void ReplaceFontHook(orig_Awake orig, HGTextMeshProUGUI self) { orig.Invoke(self); ApplyFont((TMP_Text)(object)self); } private void ApplyFontToAllExistingTMPText() { Object[] array = Resources.FindObjectsOfTypeAll<Object>(); foreach (Object val in array) { TMP_Text val2 = (TMP_Text)(object)((val is TMP_Text) ? val : null); if (val2 != null) { ApplyFont(val2); } } } private void ApplyFont(TMP_Text text) { if (!((Object)(object)jpFont == (Object)null)) { text.font = jpFont; text.fontSharedMaterial = ((TMP_Asset)jpFont).material; if ((Object)(object)fallbackFont != (Object)null) { text.font.fallbackFontAssetTable = new List<TMP_FontAsset> { fallbackFont }; } else { text.font.fallbackFontAssetTable?.Clear(); } text.ForceMeshUpdate(false, false); } } private void Inventory_GiveItem(orig_GiveItem_ItemIndex_int orig, Inventory self, ItemIndex itemIndex, int count) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self, itemIndex, count); if (!enableDetailedMessages.Value) { return; } CharacterMaster component = ((Component)self).GetComponent<CharacterMaster>(); if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component.playerCharacterMasterController)) { LocalUser firstLocalUser = LocalUserManager.GetFirstLocalUser(); if (firstLocalUser != null && (Object)(object)firstLocalUser.cachedMasterController == (Object)(object)component.playerCharacterMasterController) { DisplayDetailedItemMessage(itemIndex, component); } } } private void Inventory_SetEquipmentIndex(orig_SetEquipmentIndex orig, Inventory self, EquipmentIndex newEquipmentIndex) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Invalid comparison between Unknown and I4 //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) EquipmentIndex currentEquipmentIndex = self.currentEquipmentIndex; orig.Invoke(self, newEquipmentIndex); if (!enableDetailedMessages.Value || (int)newEquipmentIndex == -1 || newEquipmentIndex == currentEquipmentIndex) { return; } CharacterMaster component = ((Component)self).GetComponent<CharacterMaster>(); if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component.playerCharacterMasterController)) { LocalUser firstLocalUser = LocalUserManager.GetFirstLocalUser(); if (firstLocalUser != null && (Object)(object)firstLocalUser.cachedMasterController == (Object)(object)component.playerCharacterMasterController) { DisplayDetailedEquipmentMessage(newEquipmentIndex, component); } } } private void DisplayDetailedEquipmentMessage(EquipmentIndex equipmentIndex, CharacterMaster master) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) EquipmentDef equipmentDef = EquipmentCatalog.GetEquipmentDef(equipmentIndex); if (Object.op_Implicit((Object)(object)equipmentDef)) { string @string = Language.GetString(equipmentDef.nameToken); string string2 = Language.GetString(equipmentDef.descriptionToken); float cooldown = equipmentDef.cooldown; StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append("<color=#FFA500>[装備取得] " + @string + "</color>"); if (showItemDescription.Value && !string.IsNullOrEmpty(string2)) { stringBuilder.AppendLine(); stringBuilder.AppendLine("<color=#CCCCCC>効果: " + string2 + "</color>"); } if (cooldown > 0f) { stringBuilder.AppendLine(); stringBuilder.Append($"<color=#87CEEB>クールダウン: {cooldown}秒</color>"); } string equipmentInfo = GetEquipmentInfo(equipmentIndex); if (!string.IsNullOrEmpty(equipmentInfo)) { stringBuilder.AppendLine(); stringBuilder.Append("<color=#FFD700>" + equipmentInfo + "</color>"); } Chat.AddMessage(stringBuilder.ToString()); } } private void Chat_AddPickupMessage(orig_AddPickupMessage orig, CharacterBody body, string pickupToken, Color32 pickupColor, uint pickupQuantity) { //IL_0040: Unknown result type (might be due to invalid IL or missing references) if (enableDetailedMessages.Value && (Object)(object)body != (Object)null) { LocalUser firstLocalUser = LocalUserManager.GetFirstLocalUser(); if (firstLocalUser != null && (Object)(object)firstLocalUser.cachedBody == (Object)(object)body) { return; } } orig.Invoke(body, pickupToken, pickupColor, pickupQuantity); } private string GetEquipmentInfo(EquipmentIndex equipmentIndex) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_010f: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_012b: Unknown result type (might be due to invalid IL or missing references) //IL_0131: Unknown result type (might be due to invalid IL or missing references) //IL_0147: Unknown result type (might be due to invalid IL or missing references) //IL_014d: Unknown result type (might be due to invalid IL or missing references) //IL_0163: Unknown result type (might be due to invalid IL or missing references) //IL_0169: Unknown result type (might be due to invalid IL or missing references) if (equipmentIndex == Equipment.Jetpack.equipmentIndex) { return "持続時間: 15秒、燃料消費で飛行"; } if (equipmentIndex == Equipment.GoldGat.equipmentIndex) { return "持続時間: 14秒、お金を消費して攻撃"; } if (equipmentIndex == Equipment.BFG.equipmentIndex) { return "チャージ時間: 2秒、貫通レーザー"; } if (equipmentIndex == Equipment.Scanner.equipmentIndex) { return "持続時間: 10秒、敵とアイテムを透視"; } if (equipmentIndex == Equipment.CritOnUse.equipmentIndex) { return "持続時間: 8秒、クリティカル率100%"; } if (equipmentIndex == Equipment.DroneBackup.equipmentIndex) { return "持続時間: 25秒、4体のドローン召喚"; } if (equipmentIndex == Equipment.Lightning.equipmentIndex) { return "範囲: 35m、4体まで連鎖"; } if (equipmentIndex == Equipment.BurnNearby.equipmentIndex) { return "範囲: 15m、12秒間燃焼"; } if (equipmentIndex == Equipment.Blackhole.equipmentIndex) { return "持続時間: 10秒、重力フィールド生成"; } if (equipmentIndex == Equipment.Gateway.equipmentIndex) { return "持続時間: 30秒、2つのポータル設置"; } if (equipmentIndex == Equipment.Fruit.equipmentIndex) { return "最大HPの50%を即座に回復"; } if (equipmentIndex == Equipment.Meteor.equipmentIndex) { return "範囲: 16m、落下まで3秒"; } if (equipmentIndex == Equipment.Saw.equipmentIndex) { return "持続時間: 3秒、回転ノコギリ射出"; } return ""; } private void DisplayDetailedItemMessage(ItemIndex itemIndex, CharacterMaster master) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) ItemDef itemDef = ItemCatalog.GetItemDef(itemIndex); if (!Object.op_Implicit((Object)(object)itemDef)) { return; } Inventory inventory = master.inventory; int itemCount = inventory.GetItemCount(itemIndex); string text = BuildDetailedMessage(itemDef, itemCount); if (Object.op_Implicit((Object)(object)master.playerCharacterMasterController)) { NetworkUser networkUser = master.playerCharacterMasterController.networkUser; if (Object.op_Implicit((Object)(object)networkUser)) { Chat.AddMessage("<color=#FFA500>[アイテム取得]</color>\n" + text); } } } private string BuildDetailedMessage(ItemDef itemDef, int stackCount) { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append("<color=" + GetTierColor(itemDef.tier) + ">" + Language.GetString(itemDef.nameToken) + "</color>"); if (showItemTier.Value) { string tierName = GetTierName(itemDef.tier); stringBuilder.Append(" (" + tierName + ")"); } if (showStackCount.Value && stackCount > 1) { stringBuilder.Append($" [スタック: {stackCount}]"); } stringBuilder.AppendLine(); if (showItemDescription.Value) { string @string = Language.GetString(itemDef.descriptionToken); if (!string.IsNullOrEmpty(@string)) { stringBuilder.AppendLine("<color=#CCCCCC>効果: " + @string + "</color>"); } } string stackInfo = GetStackInfo(itemDef, stackCount); if (!string.IsNullOrEmpty(stackInfo)) { stringBuilder.AppendLine("<color=#FFD700>" + stackInfo + "</color>"); } return stringBuilder.ToString().TrimEnd(Array.Empty<char>()); } private string GetTierColor(ItemTier tier) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0004: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Expected I4, but got Unknown //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_0103: Unknown result type (might be due to invalid IL or missing references) //IL_011c: Unknown result type (might be due to invalid IL or missing references) //IL_0121: Unknown result type (might be due to invalid IL or missing references) //IL_013a: Unknown result type (might be due to invalid IL or missing references) //IL_013f: Unknown result type (might be due to invalid IL or missing references) return (int)tier switch { 0 => "#" + ColorUtility.ToHtmlStringRGB(Color32.op_Implicit(ColorCatalog.GetColor((ColorIndex)1))), 1 => "#" + ColorUtility.ToHtmlStringRGB(Color32.op_Implicit(ColorCatalog.GetColor((ColorIndex)2))), 2 => "#" + ColorUtility.ToHtmlStringRGB(Color32.op_Implicit(ColorCatalog.GetColor((ColorIndex)3))), 4 => "#" + ColorUtility.ToHtmlStringRGB(Color32.op_Implicit(ColorCatalog.GetColor((ColorIndex)13))), 3 => "#" + ColorUtility.ToHtmlStringRGB(Color32.op_Implicit(ColorCatalog.GetColor((ColorIndex)4))), 6 => "#" + ColorUtility.ToHtmlStringRGB(Color32.op_Implicit(ColorCatalog.GetColor((ColorIndex)25))), 7 => "#" + ColorUtility.ToHtmlStringRGB(Color32.op_Implicit(ColorCatalog.GetColor((ColorIndex)25))), 8 => "#" + ColorUtility.ToHtmlStringRGB(Color32.op_Implicit(ColorCatalog.GetColor((ColorIndex)25))), 9 => "#" + ColorUtility.ToHtmlStringRGB(Color32.op_Implicit(ColorCatalog.GetColor((ColorIndex)25))), _ => "#FFFFFF", }; } private string GetTierName(ItemTier tier) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0004: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Expected I4, but got Unknown return (int)tier switch { 0 => "コモン", 1 => "アンコモン", 2 => "レジェンダリー", 4 => "ボス", 3 => "ルナ", 6 => "コモン(ボイド)", 7 => "アンコモン(ボイド)", 8 => "レジェンダリー(ボイド)", 9 => "ボス(ボイド)", _ => "不明", }; } private string GetStackInfo(ItemDef itemDef, int stackCount) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_012d: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_0177: Unknown result type (might be due to invalid IL or missing references) //IL_0181: Unknown result type (might be due to invalid IL or missing references) //IL_01c1: Unknown result type (might be due to invalid IL or missing references) //IL_01cb: Unknown result type (might be due to invalid IL or missing references) //IL_0203: Unknown result type (might be due to invalid IL or missing references) //IL_020d: Unknown result type (might be due to invalid IL or missing references) //IL_023d: Unknown result type (might be due to invalid IL or missing references) //IL_0247: Unknown result type (might be due to invalid IL or missing references) //IL_026c: Unknown result type (might be due to invalid IL or missing references) //IL_0276: Unknown result type (might be due to invalid IL or missing references) //IL_02a5: Unknown result type (might be due to invalid IL or missing references) //IL_02af: Unknown result type (might be due to invalid IL or missing references) //IL_02df: Unknown result type (might be due to invalid IL or missing references) //IL_02e9: Unknown result type (might be due to invalid IL or missing references) //IL_0319: Unknown result type (might be due to invalid IL or missing references) //IL_0323: Unknown result type (might be due to invalid IL or missing references) //IL_035b: Unknown result type (might be due to invalid IL or missing references) //IL_0365: Unknown result type (might be due to invalid IL or missing references) //IL_0395: Unknown result type (might be due to invalid IL or missing references) //IL_039f: Unknown result type (might be due to invalid IL or missing references) //IL_03cf: Unknown result type (might be due to invalid IL or missing references) //IL_03d9: Unknown result type (might be due to invalid IL or missing references) //IL_0409: Unknown result type (might be due to invalid IL or missing references) //IL_0413: Unknown result type (might be due to invalid IL or missing references) //IL_0443: Unknown result type (might be due to invalid IL or missing references) //IL_044d: Unknown result type (might be due to invalid IL or missing references) //IL_047d: Unknown result type (might be due to invalid IL or missing references) //IL_0487: Unknown result type (might be due to invalid IL or missing references) //IL_04b7: Unknown result type (might be due to invalid IL or missing references) //IL_04c1: Unknown result type (might be due to invalid IL or missing references) //IL_04f1: Unknown result type (might be due to invalid IL or missing references) //IL_04fb: Unknown result type (might be due to invalid IL or missing references) //IL_0520: Unknown result type (might be due to invalid IL or missing references) //IL_052a: Unknown result type (might be due to invalid IL or missing references) //IL_054f: Unknown result type (might be due to invalid IL or missing references) //IL_0559: Unknown result type (might be due to invalid IL or missing references) //IL_0591: Unknown result type (might be due to invalid IL or missing references) //IL_059b: Unknown result type (might be due to invalid IL or missing references) //IL_05d3: Unknown result type (might be due to invalid IL or missing references) //IL_05dd: Unknown result type (might be due to invalid IL or missing references) //IL_060d: Unknown result type (might be due to invalid IL or missing references) //IL_0617: Unknown result type (might be due to invalid IL or missing references) //IL_063c: Unknown result type (might be due to invalid IL or missing references) //IL_0646: Unknown result type (might be due to invalid IL or missing references) //IL_067e: Unknown result type (might be due to invalid IL or missing references) //IL_0688: Unknown result type (might be due to invalid IL or missing references) //IL_06c9: Unknown result type (might be due to invalid IL or missing references) //IL_06d3: Unknown result type (might be due to invalid IL or missing references) //IL_06f8: Unknown result type (might be due to invalid IL or missing references) //IL_0702: Unknown result type (might be due to invalid IL or missing references) //IL_071c: Unknown result type (might be due to invalid IL or missing references) //IL_0726: Unknown result type (might be due to invalid IL or missing references) //IL_073d: Unknown result type (might be due to invalid IL or missing references) //IL_0747: Unknown result type (might be due to invalid IL or missing references) //IL_075e: Unknown result type (might be due to invalid IL or missing references) //IL_0768: Unknown result type (might be due to invalid IL or missing references) if (itemDef.itemIndex == Items.Syringe.itemIndex) { float num = 15f * (float)stackCount; return $"攻撃速度: +{num}% ({15f}% × {stackCount})"; } if (itemDef.itemIndex == Items.FlatHealth.itemIndex) { float num2 = 25f * (float)stackCount; return $"最大HP: +{num2} ({25f} × {stackCount})"; } if (itemDef.itemIndex == Items.Mushroom.itemIndex) { float num3 = 1.5f + (float)(stackCount - 1) * 1.5f; float num4 = 4.5f * (float)stackCount; return $"治療効果: 毎秒{num4}HP回復 (範囲: {num3}m)"; } if (itemDef.itemIndex == Items.CritGlasses.itemIndex) { float num5 = 10f * (float)stackCount; return $"クリティカル率: +{num5}% ({10f}% × {stackCount})"; } if (itemDef.itemIndex == Items.Medkit.itemIndex) { float num6 = 20f + (float)(stackCount - 1) * 10f; return $"回復量: {num6}HP (基本20HP + {stackCount - 1} × 10HP)"; } if (itemDef.itemIndex == Items.PersonalShield.itemIndex) { float num7 = 25f + (float)(stackCount - 1) * 25f; return $"シールド: {num7} (基本25 + {stackCount - 1} × 25)"; } if (itemDef.itemIndex == Items.Crowbar.itemIndex) { float num8 = 75f + (float)(stackCount - 1) * 75f; return $"90%以上HPの敵に +{num8}% ダメージ"; } if (itemDef.itemIndex == Items.Hoof.itemIndex) { float num9 = 14f * (float)stackCount; return $"移動速度: +{num9}%"; } if (itemDef.itemIndex == Items.Feather.itemIndex) { return $"追加ジャンプ: +{stackCount}回"; } if (itemDef.itemIndex == Items.ChainLightning.itemIndex) { int num10 = 2 + (stackCount - 1) * 2; return $"連鎖対象数: {num10}体"; } if (itemDef.itemIndex == Items.Seed.itemIndex) { float num11 = 1f * (float)stackCount; return $"ダメージ時回復: {num11}HP"; } if (itemDef.itemIndex == Items.Icicle.itemIndex) { float num12 = 10f * (float)stackCount; return $"減速確率: +{num12}%"; } if (itemDef.itemIndex == Items.GhostOnKill.itemIndex) { float num13 = 7f + (float)(stackCount - 1) * 7f; return $"ゴースト持続時間: {num13}秒"; } if (itemDef.itemIndex == Items.StunChanceOnHit.itemIndex) { float num14 = 5f * (float)stackCount; return $"スタン確率: +{num14}%"; } if (itemDef.itemIndex == Items.Tooth.itemIndex) { float num15 = 3f * (float)stackCount; return $"キル時回復: {num15}HP"; } if (itemDef.itemIndex == Items.IgniteOnKill.itemIndex) { float num16 = 10f * (float)stackCount; return $"燃焼確率: +{num16}%"; } if (itemDef.itemIndex == Items.Bandolier.itemIndex) { float num17 = 18f * (float)stackCount; return $"弾薬ドロップ確率: {num17}%"; } if (itemDef.itemIndex == Items.ArmorPlate.itemIndex) { float num18 = 5f * (float)stackCount; return $"アーマー: +{num18}"; } if (itemDef.itemIndex == Items.BleedOnHit.itemIndex) { float num19 = 10f * (float)stackCount; return $"出血確率: +{num19}%"; } if (itemDef.itemIndex == Items.SprintArmor.itemIndex) { float num20 = 30f * (float)stackCount; return $"ダッシュ中アーマー: +{num20}"; } if (itemDef.itemIndex == Items.SecondarySkillMagazine.itemIndex) { return $"セカンダリスキルチャージ: +{stackCount}"; } if (itemDef.itemIndex == Items.UtilitySkillMagazine.itemIndex) { return $"ユーティリティスキルチャージ: +{stackCount}"; } if (itemDef.itemIndex == Items.Dagger.itemIndex) { float num21 = 150f + (float)(stackCount - 1) * 150f; return $"低HP時追加ダメージ: +{num21}%"; } if (itemDef.itemIndex == Items.Behemoth.itemIndex) { float num22 = 4f + (float)(stackCount - 1) * 2.5f; return $"爆発範囲: {num22}m"; } if (itemDef.itemIndex == Items.Missile.itemIndex) { float num23 = 300f * (float)stackCount; return $"ミサイルダメージ: {num23}%"; } if (itemDef.itemIndex == Items.ExtraLife.itemIndex) { return $"復活回数: {stackCount}回"; } if (itemDef.itemIndex == Items.KillEliteFrenzy.itemIndex) { float num24 = 4f + (float)(stackCount - 1) * 4f; return $"フレンジー持続時間: {num24}秒"; } if (itemDef.itemIndex == Items.Knurl.itemIndex) { float num25 = 40f * (float)stackCount; float num26 = 1.6f * (float)stackCount; return $"最大HP: +{num25}, HP回復: +{num26}/秒"; } if (itemDef.itemIndex == Items.BeetleGland.itemIndex) { return $"ビートルガード召喚数: {stackCount}体"; } if (itemDef.itemIndex == Items.LunarPrimaryReplacement.itemIndex) { return "プライマリスキルが「Visions of Heresy」に置換"; } if (itemDef.itemIndex == Items.LunarSecondaryReplacement.itemIndex) { return "セカンダリスキルが「Hooks of Heresy」に置換"; } if (itemDef.itemIndex == Items.LunarUtilityReplacement.itemIndex) { return "ユーティリティスキルが「Strides of Heresy」に置換"; } if (itemDef.itemIndex == Items.LunarSpecialReplacement.itemIndex) { return "スペシャルスキルが「Essence of Heresy」に置換"; } if (stackCount > 1) { return $"現在のスタック数: {stackCount}"; } return ""; } public void OnDestroy() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Expected O, but got Unknown //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Expected O, but got Unknown Inventory.GiveItem_ItemIndex_int -= new hook_GiveItem_ItemIndex_int(Inventory_GiveItem); Inventory.SetEquipmentIndex -= new hook_SetEquipmentIndex(Inventory_SetEquipmentIndex); Chat.AddPickupMessage -= new hook_AddPickupMessage(Chat_AddPickupMessage); } }