diff --git a/Callouts/DomesticViolence.cs b/Callouts/DomesticViolence.cs index 6457e59..6c23a1a 100644 --- a/Callouts/DomesticViolence.cs +++ b/Callouts/DomesticViolence.cs @@ -3,12 +3,10 @@ using System.Linq; using Rage; using LSPD_First_Response.Mod.API; using LSPD_First_Response.Mod.Callouts; -using CalloutInterfaceAPI; namespace Code_Blue_Calls.Callouts { [CalloutInfo("Domestic Violence", CalloutProbability.High)] - [CalloutInterface("Domestic Violence", CalloutProbability.Medium, "Code 3", "LSPD")] public class DomesticViolence : Callout { private Ped victim, suspect; @@ -16,52 +14,47 @@ namespace Code_Blue_Calls.Callouts private Blip blip_victim; private Vector3 location_suspect; private Vector3 location_victim; - private bool victimFleeing; - private bool suspectKillingPlayer; - private bool shotAtVictim; + private bool Victimfleeing; + private bool SuspectKillingPlayer; + private bool ShotAtVictim; + public override bool OnBeforeCalloutDisplayed() { - // Set the locations for the suspect and victim location_suspect = new Vector3(-111.19f, -8.28f, 70.52f); location_victim = new Vector3(-111.19f, -11f, 70.52f); - // Show the callout area blip before accepting the callout ShowCalloutAreaBlipBeforeAccepting(location_suspect, 30f); - - // Set the callout message and position CalloutMessage = "Domestic Violence"; CalloutPosition = location_suspect; - - // Play scanner audio to announce the callout - LSPD_First_Response.Mod.API.Functions.PlayScannerAudioUsingPosition("WE_HAVE CRIME_RESISTING_ARREST_02 IN_OR_ON_POSITION", location_suspect); - + Functions.PlayScannerAudioUsingPosition("WE_HAVE CRIME_RESISTING_ARREST_02 IN_OR_ON_POSITION", location_suspect); return base.OnBeforeCalloutDisplayed(); } public override bool OnCalloutAccepted() { - // Create relationship groups for the suspect and victim new RelationshipGroup("Attacker"); new RelationshipGroup("Victims"); - // Create the suspect and set properties suspect = new Ped(location_suspect); suspect.IsPersistent = true; suspect.BlockPermanentEvents = true; suspect.RelationshipGroup = "Attacker"; suspect.Inventory.GiveNewWeapon("WEAPON_NAVYREVOLVER", 1, true); - // Create the victim and set properties + + victim = new Ped(location_victim); victim.IsPersistent = true; victim.BlockPermanentEvents = true; victim.RelationshipGroup = "Victims"; - // Set the relationship between the suspect and victim to hate - Game.SetRelationshipBetweenRelationshipGroups("Attacker", "Victims", Relationship.Hate); + //Game.LocalPlayer.Character.RelationshipGroup = "Victims"; + + suspect.Tasks.StandStill(-1); + + Game.SetRelationshipBetweenRelationshipGroups("Attacker", "Victim", Relationship.Hate); - // Attach blips to the suspect and victim blip_suspect = suspect.AttachBlip(); blip_suspect.Color = System.Drawing.Color.Red; blip_suspect.IsRouteEnabled = true; @@ -77,29 +70,27 @@ namespace Code_Blue_Calls.Callouts { base.Process(); - // If the player is near the suspect and hasn't shot at the victim yet, make the suspect fight the victim - if (Game.LocalPlayer.Character.DistanceTo(suspect) < 40f && !shotAtVictim && !suspectKillingPlayer && !victim.IsDead) + if (Game.LocalPlayer.Character.DistanceTo(suspect) < 40f && !ShotAtVictim && !SuspectKillingPlayer && !victim.IsDead) { suspect.Tasks.FightAgainst(victim); - shotAtVictim = true; + ShotAtVictim = true; } - // If the player is near the suspect and hasn't been attacked by the suspect yet, make the suspect attack the player - if (Game.LocalPlayer.Character.DistanceTo(suspect) < 15f && !suspectKillingPlayer) + if (Game.LocalPlayer.Character.DistanceTo(suspect) < 15f && !SuspectKillingPlayer) { + //Give the suspect a weapon and make him attack the player suspect.Tasks.Clear(); suspect.Inventory.EquippedWeapon.Ammo = 6; - suspectKillingPlayer = true; + SuspectKillingPlayer = true; suspect.Tasks.FightAgainst(Game.LocalPlayer.Character); + } - // End the callout if the suspect is dead or cuffed if (suspect.IsDead || suspect.IsCuffed) { End(); } - // If the suspect is still alive and the victim is null, create a new victim and make them fight the suspect if (suspect.Exists() && victim == null) { victim = new Ped(location_victim); @@ -107,94 +98,17 @@ namespace Code_Blue_Calls.Callouts Game.DisplaySubtitle("Investigate the domestic violence report and neutralize the threat.", 5000); } - // If the victim is dead, display a message to neutralize the suspect and end the callout if (victim != null && victim.IsDead) { Game.DisplaySubtitle("The victim is dead. Neutralize the suspect.", 5000); - End(); - } - - // Randomly determine the outcome of the callout - Random random = new Random(); - int outcome = random.Next(1, 101); - - if (outcome <= 20) - { - // AG kills VI - if (!victim.IsDead) - { - suspect.Tasks.FightAgainst(victim); - } - } - else if (outcome <= 30) - { - // AG kills VI and PL - if (!victim.IsDead) - { - suspect.Tasks.FightAgainst(victim); - } - if (!Game.LocalPlayer.Character.IsDead) - { - suspect.Tasks.FightAgainst(Game.LocalPlayer.Character); - } - } - else if (outcome <= 35) - { - // AG kills VI and commits suicide - if (!victim.IsDead) - { - suspect.Tasks.FightAgainst(victim); - } - if (!suspect.IsDead) - { - suspect.Kill(); - } - } - else if (outcome <= 50) - { - // AG kills PL - if (!Game.LocalPlayer.Character.IsDead) - { - suspect.Tasks.FightAgainst(Game.LocalPlayer.Character); - } - } - else if (outcome <= 60) - { - // AG takes VI hostage - if (!victim.IsDead) - { - suspect.Tasks.AimWeaponAt(victim, 999999); - } - } - else if (outcome <= 80) - { - // AG flees - if (!suspect.IsDead) - { - suspect.Tasks.ReactAndFlee(Game.LocalPlayer.Character); - } - } - else - { - // AG is drunk and noncompliant, eventually flees on foot - if (!suspect.IsDead) - { - suspect.Tasks.Wander(); - } } } public override void End() { base.End(); - - // Delete the suspect and victim blips if they exist - if (blip_suspect.Exists()) - blip_suspect.Delete(); - if (blip_victim.Exists()) - blip_victim.Delete(); - - // Dismiss the suspect if they exist + if (blip_suspect.Exists()) blip_suspect.Delete(); + if (blip_victim.Exists()) blip_victim.Delete(); if (suspect.Exists()) { suspect.Dismiss();