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); }
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"); // ← }
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"); }
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); } } }
// 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); } }
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); }
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); }
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--; }
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); }
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); } } }
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); }