/// <summary> /// Adds text labels for various interactables to a <see cref="PingIndicator"/> /// </summary> /// <param name="pingIndicator">Target <see cref="PingIndicator"/> that should have the text added</param> private static void AddLootText(RoR2.UI.PingIndicator pingIndicator) { const string textStart = "<size=70%>\n"; string price = GetPrice(pingIndicator.pingTarget); ShopTerminalBehavior shopTerminal = pingIndicator.pingTarget.GetComponent <ShopTerminalBehavior>(); if (shopTerminal && _config.ShowShopText.Value) { string text = textStart; PickupIndex pickupIndex = shopTerminal.CurrentPickupIndex(); PickupDef pickup = PickupCatalog.GetPickupDef(pickupIndex); text += shopTerminal.pickupIndexIsHidden ? "?" : $"{Language.GetString(pickup.nameToken)}"; pingIndicator.pingText.text += $"{text} ({price})"; return; } GenericPickupController pickupController = pingIndicator.pingTarget.GetComponent <GenericPickupController>(); if (pickupController && _config.ShowPickupText.Value) { PickupDef pickup = PickupCatalog.GetPickupDef(pickupController.pickupIndex); pingIndicator.pingText.text += $"{textStart}{Language.GetString(pickup.nameToken)}"; } ChestBehavior chest = pingIndicator.pingTarget.GetComponent <ChestBehavior>(); if (chest && _config.ShowChestText.Value) { pingIndicator.pingText.text += $"{textStart}{Util.GetBestBodyName(pingIndicator.pingTarget)} ({price})"; return; } string name = ""; PurchaseInteraction purchaseInteraction = pingIndicator.pingTarget.GetComponent <PurchaseInteraction>(); if (purchaseInteraction) { name = Language.GetString(purchaseInteraction.displayNameToken); } // Drones SummonMasterBehavior summonMaster = pingIndicator.pingTarget.GetComponent <SummonMasterBehavior>(); if (summonMaster && _config.ShowDroneText.Value) { pingIndicator.pingText.text += $"{textStart}{name} ({price})"; return; } if (_config.ShowShrineText.Value) { pingIndicator.pingText.text += $"{textStart}{name}"; } }
private Interactability PreventEquipmentFromAllowance(On.RoR2.PurchaseInteraction.orig_GetInteractability orig, PurchaseInteraction self, Interactor activator) { SummonMasterBehavior summonMasterBehavior = self.gameObject.GetComponent <SummonMasterBehavior>(); if (summonMasterBehavior && summonMasterBehavior.callOnEquipmentSpentOnPurchase) { CharacterBody characterBody = activator.GetComponent <CharacterBody>(); if (characterBody && characterBody.inventory) { if (bannedEquipmentIndices.Contains(characterBody.inventory.currentEquipmentIndex)) { return(Interactability.ConditionsNotMet); } } } return(orig(self, activator)); }
private void ModifyBrokenObject() { SummonMasterBehavior summonMasterBehavior = brokenObject.GetComponent <SummonMasterBehavior>(); droneMasterRed = summonMasterBehavior.masterPrefab.InstantiateClone($"{name}RedMaster", true); droneMasterGreen = summonMasterBehavior.masterPrefab.InstantiateClone($"{name}GreenMaster", true); contentProvider.masterObjects.Add(droneMasterRed); contentProvider.masterObjects.Add(droneMasterGreen); ModifyDroneMaster(); CharacterMaster masterRed = droneMasterRed.GetComponent <CharacterMaster>(); CharacterMaster masterGreen = droneMasterGreen.GetComponent <CharacterMaster>(); droneBodyRed = masterRed.bodyPrefab.InstantiateClone($"{name}RedBody", true); droneBodyGreen = masterGreen.bodyPrefab.InstantiateClone($"{name}GreenBody", true); contentProvider.bodyObjects.Add(droneBodyRed); contentProvider.bodyObjects.Add(droneBodyGreen); ModifyDroneBody(); masterRed.bodyPrefab = droneBodyRed; masterGreen.bodyPrefab = droneBodyGreen; summonMasterBehavior.masterPrefab = droneMasterRed; PurchaseInteraction purchaseInteraction = brokenObject.GetComponent <PurchaseInteraction>(); purchaseInteraction.cost *= 10; purchaseInteraction.Networkcost = purchaseInteraction.cost; purchaseInteraction.contextToken = "PSI_BIT_CONTEXT"; purchaseInteraction.displayNameToken = "PSI_BIT_INTERACTABLE_NAME"; GenericDisplayNameProvider nameProvider = brokenObject.GetComponent <GenericDisplayNameProvider>(); nameProvider.displayToken = "PSI_BIT_NAME"; GameObject customBrokenModel = assetBundle.LoadAsset <GameObject>("Assets/Drones/PsiBits/Model/mdlPsiBitsBroken.prefab"); brokenObject.ReplaceModel(customBrokenModel, DebugCheck()); Highlight highlight = brokenObject.GetComponent <Highlight>(); GameObject coreObject = customBrokenModel.transform.Find("_mdlPsiBitsBroken").gameObject; highlight.targetRenderer = coreObject.GetComponent <MeshRenderer>(); EntityLocator entityLocator = customBrokenModel.AddComponent <EntityLocator>(); entityLocator.entity = brokenObject; EntityLocator coreEntityLocator = coreObject.AddComponent <EntityLocator>(); coreEntityLocator.entity = brokenObject; AddBrokenEffects(customBrokenModel, (MeshRenderer)highlight.targetRenderer); }
static CharacterMaster CompanionShareInventory(On.RoR2.SummonMasterBehavior.orig_OpenSummonReturnMaster orig, SummonMasterBehavior self, Interactor activator) { if (NetworkServer.active) { //Copies owner's inventory items to companion CharacterMaster spawnedCompanion = orig(self, activator); if (VoteAPI.VoteResults.HasVote(Settings.CompanionsShareItems.Item2)) { spawnedCompanion.inventory.CopyItemsFrom(activator.GetComponent <CharacterBody>().master.inventory); spawnedCompanion.inventory.ResetItem(RoR2Content.Items.WardOnLevel); spawnedCompanion.inventory.ResetItem(RoR2Content.Items.BeetleGland); spawnedCompanion.inventory.ResetItem(RoR2Content.Items.CrippleWardOnLevel); } return(spawnedCompanion); } else { return(orig(self, activator)); } }
IEnumerator WaitForStart(SummonMasterBehavior drone) { yield return(null); drone.transform.position = transform.position.GetVector3(); }
public BrokenDroneData(SummonMasterBehavior drone) { transform = new SerializableTransform(drone.transform); name = "Broken" + drone.name.Replace("Broken(Clone)", ""); cost = drone.GetComponent <PurchaseInteraction>().cost; }