コード例 #1
0
        public static bool EquipWeapon_Prefix(InvItem item, bool sfx, InvDatabase __instance)
        {
            if (item == null)
            {
                return(false);
            }

            Agent agent = __instance.agent;

            if (agent.statusEffects.hasTrait(cTrait.DrawNoBlood) && item.Categories.Contains("Piercing"))
            {
                BMHeaderTools.SayDialogue(agent, cDialogue.CantUseSharp, vNameType.Dialogue);
                GC.audioHandler.Play(__instance.agent, "CantDo");

                return(false);
            }
            else if (agent.statusEffects.hasTrait(cTrait.AfraidOfLoudNoises) && item.Categories.Contains("Loud") && !item.contents.Contains("Silencer"))
            {
                BMHeaderTools.SayDialogue(agent, cDialogue.CantUseLoud, "Dialogue");
                GC.audioHandler.Play(__instance.agent, "CantDo");

                return(false);
            }
            else if (agent.statusEffects.hasTrait(cTrait.SharpOnly) && item.Categories.Contains("Blunt"))
            {
                BMHeaderTools.SayDialogue(agent, cDialogue.CantUseBlunt, vNameType.Dialogue);
                GC.audioHandler.Play(__instance.agent, "CantDo");

                return(false);
            }

            return(true);
        }
コード例 #2
0
ファイル: C_Interactions.cs プロジェクト: Freiling87/BunnyMod
        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");             // ←
        }
コード例 #3
0
ファイル: C_Interactions.cs プロジェクト: Freiling87/BunnyMod
        public static void Hobo_MugItem(Agent agent, Agent interactingAgent, string itemName, string relStatus)
        {
            logger.LogDebug("Hobo_MugItem");

            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, "Bought", vNameType.Dialogue);                 // ←
                GC.audioHandler.Play(interactingAgent, "SelectItem");

                agent.relationships.SetRel(interactingAgent, relStatus);

                return;
            }
            interactingAgent.objectMult.ObjectAction(agent.objectNetID, "MugItem");
        }
コード例 #4
0
        public static void AddButtons(FlamingBarrel barrel)
        {
            Agent agent = barrel.interactingAgent;

            if (barrel.ora.hasParticleEffect)
            {
                if (agent.inventory.HasItem(ItemNameDB.rowIds.Fud))
                {
                    barrel.AddButton(
                        text: "GrillFud",
                        extraText: $" (Burn hands for {BMTraitController.HealthCost(agent, 10, DamageType.burnedFingers)} damage)"
                        );
                }
                else
                {
                    BMHeaderTools.SayDialogue(agent, "CantGrillFud", vNameType.Dialogue);
                }
            }
            else
            {
                if (agent.inventory.HasItem(ItemNameDB.rowIds.CigaretteLighter))
                {
                    barrel.AddButton(text: "LightBarbecue");
                }
                else
                {
                    BMHeaderTools.SayDialogue(agent, "CantOperateBarbecue", vNameType.Dialogue);
                }
            }
        }
コード例 #5
0
ファイル: Warlord.cs プロジェクト: Freiling87/BunnyMod
        // TODO implement this
        public static void StatusEffects_ChangeHealth_ShakedownHook(StatusEffects instance)
        {
            Agent hurtAgent         = instance.agent;
            Agent shakedowningAgent = GameController.gameController.playerAgentList.First(agent => agent.HasTrait <Warlord>());

            if (shakedowningAgent != null)
            {
                hurtAgent.relationships.SetRel(shakedowningAgent, nameof(relStatus.Submissive));
                BMHeaderTools.SayDialogue(hurtAgent, cDialogue.WarlordSubmission, vNameType.Dialogue);
            }
        }
コード例 #6
0
        public static bool EquipArmorHead_Prefix(InvItem item, bool sfx, InvDatabase __instance)
        {
            if (item.isArmorHead && item != null && __instance.agent.statusEffects.hasTrait(cTrait.FatHead))
            {
                BMHeaderTools.SayDialogue(__instance.agent, cDialogue.CantWearHeadgear, vNameType.Dialogue);
                GC.audioHandler.Play(__instance.agent, "CantDo");

                return(false);
            }

            return(true);
        }
コード例 #7
0
        private static bool HandleThreatenFailed(Agent agent, Agent interactingAgent)
        {
            if (!interactingAgent.HasTrait <VeiledThreats>() || AlreadyUsedOnAgent(agent))
            {
                return(true);
            }

            BMHeaderTools.SayDialogue(agent, cDialogue.VeiledThreatsAnnoyed, vNameType.Dialogue);
            agent.relationships.SetRel(interactingAgent, nameof(relStatus.Annoyed));
            agent.relationships.SetRelHate(interactingAgent, 2);
            veiledThreadsUsedOn.Add(agent);
            return(false);
        }
コード例 #8
0
        public override void OnUpdated(EffectUpdatedArgs e)
        {
            e.UpdateDelay = 1.0f;             // 1 update per second

            if (gc.percentChance(CurrentTime))
            {
                // Spasm here

                BMHeaderTools.SayDialogue(Owner, BMHeaderTools.RandomFromList(vocalTics), vNameType.Dialogue);
            }

            CurrentTime--;
        }
コード例 #9
0
        public static bool UseItem_Prefix(InvItem item, Agent agent, ItemFunctions __instance)
        {
            if (item.itemType == "Consumable")
            {
                if (vItem.alcohol.Contains(item.invItemName) &&
                    ((agent.statusEffects.hasTrait(cTrait.FriendOfBill) || agent.statusEffects.hasTrait(cTrait.Teetotaller))))
                {
                    BMHeaderTools.SayDialogue(agent, cDialogue.CantDrinkAlcohol, vNameType.Dialogue);
                    goto terminus;
                }
                else if (vItem.drugs.Contains(item.invItemName) &&
                         (agent.statusEffects.hasTrait(cTrait.DAREdevil) || agent.statusEffects.hasTrait(cTrait.Teetotaller)))
                {
                    BMHeaderTools.SayDialogue(agent, cDialogue.CantUseDrug, vNameType.Dialogue);
                    goto terminus;
                }
                else if (vItem.nonVegetarian.Contains(item.invItemName) && agent.statusEffects.hasTrait(cTrait.Vegetarian))
                {
                    BMHeaderTools.SayDialogue(agent, cDialogue.CantEatMeat, vNameType.Dialogue);
                    goto terminus;
                }
                else if (vItem.vegetarian.Contains(item.invItemName) && agent.statusEffects.hasTrait(cTrait.Carnivore))
                {
                    BMHeaderTools.SayDialogue(agent, cDialogue.CantEatNonvegetarian, vNameType.Dialogue);
                    goto terminus;
                }
            }
            else
            {
                if (vItem.loud.Contains(item.invItemName) && agent.statusEffects.hasTrait(cTrait.AfraidOfLoudNoises))
                {
                    BMHeaderTools.SayDialogue(agent, cDialogue.CantUseLoud, "Dialogue");
                    goto terminus;
                }

                if (vItem.piercing.Contains(item.invItemName) && agent.statusEffects.hasTrait(cTrait.DrawNoBlood))
                {
                    BMHeaderTools.SayDialogue(agent, cDialogue.CantUseSharp_2, vNameType.Dialogue);
                    goto terminus;
                }
            }

            return(true);

terminus:

            GC.audioHandler.Play(agent, "CantDo");

            return(false);
        }
コード例 #10
0
        private static void ChangeHealth_Postfix(float healthNum, PlayfieldObject damagerObject, NetworkInstanceId cameFromClient, float clientFinalHealthNum, string damagerObjectName, byte extraVar, StatusEffects __instance)
        {
            // TODO change to transpiler (see todo in Warlord)
            Agent hurtAgent = __instance.agent;

            if (hurtAgent.health <= hurtAgent.healthMax * 0.4f && hurtAgent.health > 0f && hurtAgent.isPlayer == 0 &&
                GameController.gameController.serverPlayer && hurtAgent.CanShakeDown() && hurtAgent.justHitByAgent2 != null &&
                (hurtAgent.justHitByAgent2.isPlayer != 0 || hurtAgent.justHitByAgent2.hasEmployer))
            {
                Agent shakedowningAgent = GameController.gameController.playerAgentList.First(agent => agent.HasTrait <Warlord>());
                if (shakedowningAgent != null)
                {
                    hurtAgent.relationships.SetRel(shakedowningAgent, nameof(relStatus.Submissive));
                    BMHeaderTools.SayDialogue(hurtAgent, cDialogue.WarlordSubmission, vNameType.Dialogue);
                }
            }
        }
コード例 #11
0
        public static bool UseItem_Prefix(InvItem __instance)
        {
            Agent         agent      = __instance.agent;
            List <string> cats       = __instance.Categories;
            bool          cantDoFlag = false;

            if (cats.Contains("Alcohol") && (agent.statusEffects.hasTrait(cTrait.FriendOfBill) || agent.statusEffects.hasTrait(cTrait.Teetotaller)))
            {
                BMHeaderTools.SayDialogue(agent, cDialogue.CantDrinkAlcohol, vNameType.Dialogue);
                cantDoFlag = true;
            }
            else if (cats.Contains("Drugs") && (agent.statusEffects.hasTrait(cTrait.DAREdevil) || agent.statusEffects.hasTrait(cTrait.Teetotaller)))
            {
                BMHeaderTools.SayDialogue(agent, cDialogue.CantUseDrug, vNameType.Dialogue);
                cantDoFlag = true;
            }
            else if (cats.Contains("NonVegetarian") && agent.statusEffects.hasTrait(cTrait.Vegetarian))
            {
                BMHeaderTools.SayDialogue(agent, cDialogue.CantEatMeat, vNameType.Dialogue);
                cantDoFlag = true;
            }
            else if (cats.Contains("Vegetarian") && agent.statusEffects.hasTrait(cTrait.Carnivore))
            {
                BMHeaderTools.SayDialogue(agent, cDialogue.CantEatNonvegetarian, vNameType.Dialogue);
                cantDoFlag = true;
            }
            else if (cats.Contains("Loud") && agent.statusEffects.hasTrait(cTrait.AfraidOfLoudNoises))
            {
                BMHeaderTools.SayDialogue(agent, cDialogue.CantUseLoud, "Dialogue");
                cantDoFlag = true;
            }
            else if (cats.Contains("Piercing") && agent.statusEffects.hasTrait(cTrait.DrawNoBlood))
            {
                BMHeaderTools.SayDialogue(agent, cDialogue.CantUseSharp_2, vNameType.Dialogue);
                cantDoFlag = true;
            }

            if (cantDoFlag)
            {
                GC.audioHandler.Play(agent, "CantDo");

                return(false);
            }

            return(true);
        }