示例#1
0
        /// <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}";
            }
        }
示例#2
0
        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);
        }
示例#4
0
文件: Hooks.cs 项目: tung362/RoR2PVP
 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));
     }
 }
示例#5
0
        IEnumerator WaitForStart(SummonMasterBehavior drone)
        {
            yield return(null);

            drone.transform.position = transform.position.GetVector3();
        }
示例#6
0
 public BrokenDroneData(SummonMasterBehavior drone)
 {
     transform = new SerializableTransform(drone.transform);
     name      = "Broken" + drone.name.Replace("Broken(Clone)", "");
     cost      = drone.GetComponent <PurchaseInteraction>().cost;
 }