public override void Patch()
        {
            base.Patch();

            ObjectInteraction allAccess = RogueLibsInteractions.CreateOriginalInteraction("AllAccessAlarmButton", InteractionType.Button,
                                                                                          (agent, obj) => obj is AlarmButton a && agent.interactionHelper.interactingFar && !a.hacked);

            allAccess.Action = (_, obj) =>
            {
                AlarmButton alarmButton = (AlarmButton)obj;

                alarmButton.hacked = true;
                if (!alarmButton.gc.serverPlayer)
                {
                    alarmButton.gc.playerAgent.objectMult.ObjectAction(alarmButton.objectNetID, "AllAccess");
                }
                alarmButton.StopInteraction();
                return(true);
            };

            ObjectInteraction pressAlarmButton = RogueLibsInteractions.CreateOriginalInteraction("PressAlarmButton", InteractionType.InteractOrButton,
                                                                                                 new CustomNameInfo("Call a Supercop",
                                                                                                                    null, null, null, null,
                                                                                                                    "Вызвать Суперкопа",
                                                                                                                    null, null),
                                                                                                 (agent, obj) => obj is AlarmButton a && !a.isBroken() && (agent.upperCrusty || a.hacked));

            pressAlarmButton.Action = (agent, obj) =>
            {
                ((AlarmButton)obj).ToggleSwitch(agent, null);
                return(true);
            };
        }
예제 #2
0
        public override void Patch()
        {
            base.Patch();

            ObjectInteraction insertItem = RogueLibsInteractions.CreateOriginalInteraction("InsertItem", InteractionType.Button,
                                                                                           (_, obj) => obj is AirConditioner);

            insertItem.Action = (_, obj) =>
            {
                obj.ShowUseOn("InsertItem");
                return(false);
            };
        }
예제 #3
0
        public override void Patch()
        {
            base.Patch();

            ObjectInteraction increaseVolume = RogueLibsInteractions.CreateOriginalInteraction("IncreaseVolume", InteractionType.Button,
                                                                                               (agent, obj) => obj is ArcadeGame a && agent.interactionHelper.interactingFar && !a.isHighVolume);

            increaseVolume.Action = (_, obj) =>
            {
                (obj as ArcadeGame)?.IncreaseVolume();
                return(false);
            };

            ObjectInteraction hackExplode = RogueLibsInteractions.CreateOriginalInteraction("HackExplode", InteractionType.Button,
                                                                                            (agent, obj) => obj is ArcadeGame a && !a.isBroken() && !a.tempNoOperating && agent.interactionHelper.interactingFar && ((agent.oma.superSpecialAbility && agent.agentName == "Hacker") || agent.statusEffects.hasTrait("HacksBlowUpObjects")));
            // action is defined in ObjectReal.PressedButton
        }
예제 #4
0
        public override void Patch()
        {
            base.Patch();

            ObjectInteraction grillFud = RogueLibsInteractions.CreateOriginalInteraction("GrillFud", InteractionType.Button,
                                                                                         (_, obj) => obj is Barbecue b && !b.burntOut && b.ora.hasParticleEffect && b.interactingAgent.inventory.HasItem("Fud"));

            grillFud.Action = (_, obj) =>
            {
                obj.StartCoroutine(obj.Operating(obj.interactingAgent, null, 2f, true, "Grilling"));
                return(false);
            };

            ObjectInteraction lightBarbecue = RogueLibsInteractions.CreateOriginalInteraction("LightBarbecue", InteractionType.Button,
                                                                                              (_, obj) => obj is Barbecue b && !b.burntOut && !b.ora.hasParticleEffect && b.interactingAgent.inventory.HasItem("CigaretteLighter"));

            lightBarbecue.Action = (_, obj) =>
            {
                ((Barbecue)obj).StartFireInObject();
                return(true);
            };
        }