public override void OnLoad() { base.OnLoad(); itemDef.name = "MysticsItems_LimitedArmor"; SetItemTierWhenAvailable(ItemTier.Tier1); itemDef.tags = new ItemTag[] { ItemTag.Utility }; itemDef.pickupModelPrefab = PrepareModel(Main.AssetBundle.LoadAsset <GameObject>("Assets/Items/Bow/Model.prefab")); itemDef.pickupIconSprite = Main.AssetBundle.LoadAsset <Sprite>("Assets/Items/Bow/Icon.png"); itemDisplayPrefab = PrepareItemDisplayModel(PrepareModel(Main.AssetBundle.LoadAsset <GameObject>("Assets/Items/Bow/DisplayModel.prefab"))); ChildLocatorAdditions.list.Add(new ChildLocatorAdditions.Addition { modelName = "mdlTreebot", transformLocation = "TreebotArmature/ROOT/Base/PlatformBase/ArmPlatformBase/Antennae.1/Antennae.005/Antennae.003/Antennae.007/Antennae.002/Antennae.006/Antennae.004", childName = "MIAntennae4" }); onSetupIDRS += () => { AddDisplayRule("CommandoBody", "Head", new Vector3(0.09206F, 0.33178F, -0.09136F), new Vector3(16.03024F, 63.62674F, 304.511F), new Vector3(0.02301F, 0.02301F, 0.02301F)); AddDisplayRule("HuntressBody", "Head", new Vector3(0.01367F, 0.21655F, -0.17495F), new Vector3(357.0015F, 65.06252F, 277.7556F), new Vector3(0.02242F, 0.02242F, 0.02242F)); AddDisplayRule("Bandit2Body", "Head", new Vector3(0.05274F, 0.09501F, -0.10753F), new Vector3(350.0532F, 63.19105F, 297.9137F), new Vector3(0.02805F, 0.02805F, 0.02805F)); AddDisplayRule("ToolbotBody", "Head", new Vector3(-1.5345F, 1.70927F, 2.3488F), new Vector3(25.30116F, 73.93195F, 115.0976F), new Vector3(0.31308F, 0.31308F, 0.31308F)); AddDisplayRule("EngiBody", "HeadCenter", new Vector3(0.05794F, 0.12538F, -0.14704F), new Vector3(0.49978F, 72.40844F, 310.3805F), new Vector3(0.03243F, 0.03243F, 0.03243F)); AddDisplayRule("EngiTurretBody", "Head", new Vector3(-0.89207F, 0.72175F, -0.23478F), new Vector3(318.9225F, 103.5389F, 353.6144F), new Vector3(0.11999F, 0.11999F, 0.11999F)); AddDisplayRule("EngiWalkerTurretBody", "Head", new Vector3(-0.73947F, 1.2767F, -0.80614F), new Vector3(324.2756F, 119.1527F, 340.6565F), new Vector3(0.10744F, 0.1307F, 0.10504F)); AddDisplayRule("MageBody", "Head", new Vector3(0.06019F, 0.16738F, -0.14399F), new Vector3(343.2434F, 235.5832F, 58.464F), new Vector3(0.02055F, 0.02055F, 0.02055F)); AddDisplayRule("MercBody", "Head", new Vector3(0.09912F, 0.20856F, -0.03218F), new Vector3(346.0291F, 221.2525F, 67.84089F), new Vector3(0.02243F, 0.02243F, 0.02243F)); AddDisplayRule("TreebotBody", "MIAntennae4", new Vector3(-0.00461F, 0.14457F, 0.00345F), new Vector3(-0.00002F, 36.79062F, 272.2785F), new Vector3(0.0496F, 0.0496F, 0.0496F)); AddDisplayRule("LoaderBody", "Head", new Vector3(0.07075F, 0.22212F, -0.05101F), new Vector3(16.6799F, 61.79085F, 306.0373F), new Vector3(0.02181F, 0.02181F, 0.02181F)); AddDisplayRule("CrocoBody", "Head", new Vector3(1.45411F, 0.59183F, 1.08829F), new Vector3(56.441F, 150.6051F, 281.6682F), new Vector3(0.33415F, 0.59025F, 0.33415F)); AddDisplayRule("CaptainBody", "Chest", new Vector3(0.00136F, 0.37981F, 0.1799F), new Vector3(350.816F, 280.0829F, 276.5578F), new Vector3(0.02509F, 0.02509F, 0.02509F)); AddDisplayRule("BrotherBody", "Head", BrotherInfection.white, new Vector3(0.18348F, 0.10434F, 0.01567F), new Vector3(0F, 0F, 295.3276F), new Vector3(0.08227F, 0.04507F, 0.04507F)); AddDisplayRule("ScavBody", "Chest", new Vector3(3.64754F, 6.52544F, -3.91259F), new Vector3(342.9161F, 287.3514F, 19.34576F), new Vector3(1.36506F, 1.40266F, 1.36506F)); if (SoftDependencies.SoftDependenciesCore.itemDisplaysSniper) { AddDisplayRule("SniperClassicBody", "Head", new Vector3(0.07554F, -0.03519F, -0.19979F), new Vector3(348.2051F, 48.22592F, 228.5832F), new Vector3(0.02543F, 0.02543F, 0.02543F)); } AddDisplayRule("RailgunnerBody", "Head", new Vector3(0.05764F, 0.1407F, -0.13382F), new Vector3(355.0823F, 235.3653F, 70.07189F), new Vector3(0.01869F, 0.01869F, 0.01869F)); AddDisplayRule("RailgunnerBody", "GunScope", new Vector3(-0.09378F, -0.17916F, 0.29156F), new Vector3(331.6838F, 257.2208F, 4.46473F), new Vector3(0.01869F, 0.01869F, 0.01869F)); AddDisplayRule("VoidSurvivorBody", "Neck", new Vector3(-0.00094F, 0.24878F, -0.20333F), new Vector3(3.48902F, 270F, 270F), new Vector3(0.02107F, 0.02107F, 0.02107F)); }; On.RoR2.CharacterMaster.OnInventoryChanged += CharacterMaster_OnInventoryChanged; GenericGameEvents.BeforeTakeDamage += (damageInfo, attackerInfo, victimInfo) => { if (victimInfo.inventory && victimInfo.master) { int itemCount = victimInfo.inventory.GetItemCount(itemDef); if (itemCount > 0) { MysticsItemsLimitedArmorBehavior component = victimInfo.master.gameObject.GetComponent <MysticsItemsLimitedArmorBehavior>(); if (!component) { component = victimInfo.master.gameObject.AddComponent <MysticsItemsLimitedArmorBehavior>(); } if (component.HasAtLeastOneStock()) { component.doDamageCheck++; } } } }; GenericGameEvents.OnTakeDamage += (damageReport) => { if (damageReport.victimMaster) { MysticsItemsLimitedArmorBehavior component = damageReport.victimMaster.GetComponent <MysticsItemsLimitedArmorBehavior>(); if (component) { if (component.doDamageCheck > 0) { component.doDamageCheck--; if (damageReport.damageInfo != null && !damageReport.damageInfo.rejected && damageReport.damageInfo.damage > 0) { var lostFinalHitInStock = component.RemoveStockAndCheck(); if (lostFinalHitInStock) { Inventory inventory = damageReport.victimMaster.inventory; if (inventory) { component.skipItemCheck = true; inventory.RemoveItem(itemDef); component.skipItemCheck = false; inventory.GiveItem(MysticsItemsContent.Items.MysticsItems_LimitedArmorBroken); CharacterMasterNotificationQueue.PushItemTransformNotification( damageReport.victimMaster, MysticsItemsContent.Items.MysticsItems_LimitedArmor.itemIndex, MysticsItemsContent.Items.MysticsItems_LimitedArmorBroken.itemIndex, CharacterMasterNotificationQueue.TransformationType.Default ); NetworkPickupDiscovery.DiscoverPickup(damageReport.victimMaster, LimitedArmorBroken.pickupIndex); } } } } } } }; RecalculateStatsAPI.GetStatCoefficients += RecalculateStatsAPI_GetStatCoefficients; }
public void FixedUpdate() { if (dirty && body.inventory) { dirty = false; itemLevel = 1; if (body.level >= upgradeLevel12) { itemLevel = 2; } if (body.level >= upgradeLevel23) { itemLevel = 3; } var itemCount1 = body.inventory.GetItemCount(MysticsItemsContent.Items.MysticsItems_MarwanAsh1); var itemCount2 = body.inventory.GetItemCount(MysticsItemsContent.Items.MysticsItems_MarwanAsh2); var itemCount3 = body.inventory.GetItemCount(MysticsItemsContent.Items.MysticsItems_MarwanAsh3); if (itemLevel == 2 && NetworkServer.active) { body.inventory.RemoveItem(MysticsItemsContent.Items.MysticsItems_MarwanAsh1, itemCount1); body.inventory.GiveItem(MysticsItemsContent.Items.MysticsItems_MarwanAsh2, itemCount1); if (itemCount1 > 0) { CharacterMasterNotificationQueue.PushItemTransformNotification( body.master, MysticsItemsContent.Items.MysticsItems_MarwanAsh1.itemIndex, MysticsItemsContent.Items.MysticsItems_MarwanAsh2.itemIndex, CharacterMasterNotificationQueue.TransformationType.Default ); NetworkPickupDiscovery.DiscoverPickup(body.master, level2PickupIndex); } itemCount2 += itemCount1; itemCount1 = 0; } if (itemLevel == 3 && NetworkServer.active) { body.inventory.RemoveItem(MysticsItemsContent.Items.MysticsItems_MarwanAsh1, itemCount1); body.inventory.RemoveItem(MysticsItemsContent.Items.MysticsItems_MarwanAsh2, itemCount2); body.inventory.GiveItem(MysticsItemsContent.Items.MysticsItems_MarwanAsh3, itemCount1 + itemCount2); if (itemCount1 > 0) { CharacterMasterNotificationQueue.PushItemTransformNotification( body.master, MysticsItemsContent.Items.MysticsItems_MarwanAsh1.itemIndex, MysticsItemsContent.Items.MysticsItems_MarwanAsh3.itemIndex, CharacterMasterNotificationQueue.TransformationType.Default ); NetworkPickupDiscovery.DiscoverPickup(body.master, level2PickupIndex); } if (itemCount2 > 0) { CharacterMasterNotificationQueue.PushItemTransformNotification( body.master, MysticsItemsContent.Items.MysticsItems_MarwanAsh2.itemIndex, MysticsItemsContent.Items.MysticsItems_MarwanAsh3.itemIndex, CharacterMasterNotificationQueue.TransformationType.Default ); NetworkPickupDiscovery.DiscoverPickup(body.master, level3PickupIndex); } itemCount3 += itemCount1 + itemCount2; itemCount1 = 0; itemCount2 = 0; } itemCount = itemCount1 + itemCount2 + itemCount3; } }