public override void OnLoad() { buffDef.name = "MysticsItems_DasherDiscActive"; buffDef.buffColor = UnityEngine.Color.white; buffDef.iconSprite = Main.AssetBundle.LoadAsset <Sprite>("Assets/Buffs/DasherDiscActive.png"); IL.RoR2.HealthComponent.TakeDamage += (il) => { ILCursor c = new ILCursor(il); if (c.TryGotoNext( MoveType.AfterLabel, x => x.MatchLdarg(1), x => x.MatchLdfld <DamageInfo>("rejected"), x => x.MatchBrfalse(out _) )) { c.Emit(OpCodes.Ldarg_0); c.Emit(OpCodes.Ldarg_1); c.EmitDelegate <System.Action <HealthComponent, DamageInfo> >((healthComponent, damageInfo) => { if (healthComponent.body.HasBuff(buffDef)) { damageInfo.rejected = true; } }); } }; On.RoR2.CharacterModel.UpdateMaterials += CharacterModel_UpdateMaterials; CharacterModelMaterialOverrides.AddOverride("DasherDiscActive", IncorporealMaterialOverride); R2API.RecalculateStatsAPI.GetStatCoefficients += RecalculateStatsAPI_GetStatCoefficients; }
public override void OnLoad() { base.OnLoad(); equipmentDef.name = "MysticsItems_FragileMask"; ConfigManager.Balance.CreateEquipmentCooldownOption(equipmentDef, "Equipment: Fragile Mask", 0f); equipmentDef.canDrop = true; ConfigManager.Balance.CreateEquipmentEnigmaCompatibleOption(equipmentDef, "Equipment: Fragile Mask", false); ConfigManager.Balance.CreateEquipmentCanBeRandomlyTriggeredOption(equipmentDef, "Equipment: Fragile Mask", false); equipmentDef.isLunar = true; equipmentDef.colorIndex = ColorCatalog.ColorIndex.LunarItem; equipmentDef.pickupModelPrefab = PrepareModel(Main.AssetBundle.LoadAsset <GameObject>("Assets/Equipment/Fragile Mask/Model.prefab")); var mat = equipmentDef.pickupModelPrefab.GetComponentInChildren <Renderer>().sharedMaterial; HopooShaderToMaterial.Standard.Apply(mat); HopooShaderToMaterial.Standard.Emission(mat, 3f, new Color32(43, 255, 251, 255)); equipmentDef.pickupIconSprite = Main.AssetBundle.LoadAsset <Sprite>("Assets/Equipment/Fragile Mask/Icon2.png"); itemDisplayPrefab = PrepareItemDisplayModel(PrefabAPI.InstantiateClone(equipmentDef.pickupModelPrefab, equipmentDef.pickupModelPrefab.name + "Display", false)); onSetupIDRS += () => { AddDisplayRule("CommandoBody", "Head", new Vector3(-0.00016F, 0.16862F, 0.22667F), new Vector3(0F, 0F, 0F), new Vector3(0.147F, 0.147F, 0.147F)); AddDisplayRule("HuntressBody", "Head", new Vector3(-0.01269F, 0.19186F, 0.14171F), new Vector3(342.3076F, 0F, 0F), new Vector3(0.119F, 0.119F, 0.121F)); AddDisplayRule("Bandit2Body", "Head", new Vector3(-0.00647F, 0.00004F, 0.15421F), new Vector3(0F, 0F, 0F), new Vector3(0.097F, 0.097F, 0.097F)); AddDisplayRule("ToolbotBody", "Head", new Vector3(0.17721F, 3.27152F, -1.81851F), new Vector3(306.0066F, 180F, 0F), new Vector3(1.24747F, 1.24747F, 1.24747F)); AddDisplayRule("EngiBody", "HeadCenter", new Vector3(-0.00145F, -0.04144F, 0.22149F), new Vector3(0F, 0F, 0F), new Vector3(0.15596F, 0.15596F, 0.15596F)); AddDisplayRule("MageBody", "Head", new Vector3(0F, 0.03035F, 0.14915F), new Vector3(0F, 0F, 0F), new Vector3(0.10014F, 0.10014F, 0.10014F)); AddDisplayRule("MercBody", "Head", new Vector3(-0.01324F, 0.07837F, 0.20433F), new Vector3(0F, 0F, 0F), new Vector3(0.123F, 0.123F, 0.123F)); AddDisplayRule("TreebotBody", "PlatformBase", new Vector3(0.01191F, 0.29394F, 0.88825F), new Vector3(21.4706F, 359.7744F, 16.32179F), new Vector3(0.3626F, 0.3626F, 0.3626F)); AddDisplayRule("LoaderBody", "Head", new Vector3(-0.01458F, 0.04875F, 0.16764F), new Vector3(0F, 0F, 0F), new Vector3(0.14481F, 0.14481F, 0.14481F)); AddDisplayRule("CrocoBody", "MouthMuzzle", new Vector3(-0.16546F, -0.03058F, 3.43643F), new Vector3(67.59733F, 0.04097F, 359.0291F), new Vector3(1.49662F, 1.49662F, 1.49662F)); AddDisplayRule("CaptainBody", "Head", new Vector3(-0.01887F, 0.03281F, 0.24355F), new Vector3(1.79143F, 0F, 0F), new Vector3(0.1343F, 0.13818F, 0.15238F)); AddDisplayRule("ScavBody", "Chest", new Vector3(-1.90286F, 4.41959F, -7.60945F), new Vector3(319.543F, 180F, 18.09413F), new Vector3(2.08147F, 2.08147F, 2.08147F)); AddDisplayRule("EquipmentDroneBody", "HeadCenter", new Vector3(-0.06693F, -1.12064F, -0.77318F), new Vector3(90F, 0F, 0F), new Vector3(0.5795F, 0.5795F, 0.5795F)); if (SoftDependencies.SoftDependenciesCore.itemDisplaysSniper) { AddDisplayRule("SniperClassicBody", "Head", new Vector3(-0.01493F, 0.22875F, -0.04979F), new Vector3(270F, 0F, 0F), new Vector3(0.12327F, 0.11932F, 0.11932F)); } AddDisplayRule("RailgunnerBody", "Head", new Vector3(0F, -0.00018F, 0.13138F), new Vector3(8.64072F, 0F, 0F), new Vector3(0.11091F, 0.11091F, 0.11091F)); AddDisplayRule("VoidSurvivorBody", "Head", new Vector3(0.00002F, 0.0516F, 0.20447F), new Vector3(337.5584F, 0F, 0F), new Vector3(0.17494F, 0.13959F, 0.13131F)); }; On.RoR2.CharacterBody.OnInventoryChanged += CharacterBody_OnInventoryChanged; RecalculateStatsAPI.GetStatCoefficients += RecalculateStatsAPI_GetStatCoefficients; On.RoR2.CharacterBody.RecalculateStats += CharacterBody_RecalculateStats; GenericGameEvents.OnTakeDamage += GenericGameEvents_OnTakeDamage; On.RoR2.Language.GetLocalizedStringByToken += Language_GetLocalizedStringByToken; var materials = LegacyResourcesAPI.Load <GameObject>("Prefabs/CharacterBodies/BrotherGlassBody").GetComponentInChildren <SkinnedMeshRenderer>().sharedMaterials; overrideMaterial = materials[1]; CharacterModelMaterialOverrides.AddOverride("FragileMask", BrittleMaterialOverride); Overlays.CreateOverlay(materials[0], (characterModel) => { if (characterModel.body) { var component = characterModel.body.GetComponent <MysticsItemsFragileMaskBehaviour>(); if (component && component.maskActive) { return(true); } } return(false); }); sfxEnable = ScriptableObject.CreateInstance <NetworkSoundEventDef>(); sfxEnable.eventName = "MysticsItems_Play_item_use_fragileMask_on"; MysticsItemsContent.Resources.networkSoundEventDefs.Add(sfxEnable); sfxDisable = ScriptableObject.CreateInstance <NetworkSoundEventDef>(); sfxDisable.eventName = "MysticsItems_Play_item_use_fragileMask_off"; MysticsItemsContent.Resources.networkSoundEventDefs.Add(sfxDisable); }