예제 #1
0
        public static void Hobo_MugMoney(Agent agent, Agent interactingAgent, int moneyValue, string relStatus, string transactionType)
        {
            logger.LogDebug("Hobo_MugMoney");

            if (GC.serverPlayer)
            {
                for (int i = 0; i < agent.gangMembers.Count; i++)
                {
                    agent.gangMembers[i].hasMugged = true;
                }

                for (int j = 0; j < GC.playerAgentList.Count; j++)
                {
                    GC.playerAgentList[j].gangMugging = 0;
                }

                agent.objectMult.SetGangMuggingOff();
                agent.doingMugging = -1;

                BMHeaderTools.SayDialogue(agent, "Hobo_Donate_" + relStatus, vNameType.Dialogue);                 //
                InvItem invItem = new InvItem();
                invItem.invItemName  = "Money";
                invItem.invItemCount = agent.determineMoneyCost("Hobo_GiveMoney1");                 // ←
                invItem.ItemSetup(true);
                agent.inventory.AddItem(invItem);

                agent.relationships.SetRel(interactingAgent, relStatus);

                return;
            }
            interactingAgent.objectMult.ObjectAction(agent.objectNetID, "MugMoney");             // ←
        }
예제 #2
0
        public override void Patch()
        {
            base.Patch();

            ObjectInteraction reduceAmmoPrices = RogueLibsInteractions.CreateOriginalInteraction("ReduceAmmoPrices", InteractionType.Button,
                                                                                                 (agent, obj) => obj is AmmoDispenser a && !a.isBrokenShowButtons() && agent.interactionHelper.interactingFar && a.hacked == 0);

            reduceAmmoPrices.Action = (agent, obj) =>
            {
                obj.gc.audioHandler.Play(agent, "Success");
                ((AmmoDispenser)obj).ReduceAmmoPrices(agent);
                return(true);
            };

            ObjectInteraction hackExplode = RogueLibsInteractions.CreateOriginalInteraction("HackExplode", InteractionType.Button,
                                                                                            (agent, obj) => obj is AmmoDispenser a && !a.isBrokenShowButtons() && agent.interactionHelper.interactingFar && ((agent.oma.superSpecialAbility && agent.agentName == "Hacker") || agent.statusEffects.hasTrait("HacksBlowUpObjects")));
            // action is defined in ObjectReal.PressedButton

            ObjectInteraction refillGun = RogueLibsInteractions.CreateOriginalInteraction("RefillGun", InteractionType.Button,
                                                                                          (agent, obj) => obj is AmmoDispenser a && !a.isBrokenShowButtons() && !agent.interactionHelper.interactingFar && agent.inventory.InvItemList.Any(i => i.itemType == "WeaponProjectile"));

            refillGun.Action = (_, obj) =>
            {
                obj.ShowUseOn("RefillGun");
                return(false);
            };

            ObjectInteraction giveMechOil = RogueLibsInteractions.CreateOriginalInteraction("GiveMechOil", InteractionType.Button,
                                                                                            (agent, obj) =>
            {
                if (!(obj is AmmoDispenser a) || a.isBrokenShowButtons() || !agent.statusEffects.hasTrait("OilRestoresHealth"))
                {
                    return(false);
                }

                InvItem invItem = new InvItem
                {
                    invItemName  = "OilContainer",
                    invItemCount = 1
                };
                invItem.ItemSetup(false);
                float num = 1.5f;
                if (agent.statusEffects.hasTrait("OilRestoresMoreHealth") || agent.oma.superSpecialAbility)
                {
                    num = 3f;
                }

                invItem.itemValue = (int)(invItem.itemValue / num);
                float num2        = agent.health / invItem.initCount * invItem.itemValue;
                int num3          = Mathf.Max(obj.determineMoneyCost((int)(agent.healthMax / invItem.initCount * invItem.itemValue - num2), "AmmoDispenser"), 0);
                return(num3 > 0);
            });
예제 #3
0
        public static void EquipReinforcement(Agent agent)
        {
            InvItem item = new InvItem
            {
                invItemName = gc.Choose(vItem.Pistol, vItem.Knife)
            };

            item.ItemSetup(false);
            item.invItemCount = item.rewardCount;

            agent.inventory.AddItemAtEmptySlot(item, true, false);
            agent.inventory.equippedWeapon = item;

            agent.inventory.startingHeadPiece = vArmorHead.HardHat;
        }
예제 #4
0
        public static void EquipReinforcement(Agent agent)
        {
            InvItem item = new InvItem
            {
                invItemName = gc.Choose(vItem.Revolver, vItem.MachineGun)
            };

            item.ItemSetup(false);
            item.invItemCount = item.rewardCount;

            agent.inventory.AddItemAtEmptySlot(item, true, false);
            agent.inventory.equippedWeapon = item;

            agent.inventory.startingHeadPiece = vArmorHead.SoldierHelmet;
        }