Added domestic violence calout

master
Qemlokriu 2 years ago
parent 62db1526c4
commit ccc531b562

@ -0,0 +1,118 @@
using System;
using System.Linq;
using Rage;
using LSPD_First_Response.Mod.API;
using LSPD_First_Response.Mod.Callouts;
namespace Code_Blue_Calls.Callouts
{
[CalloutInfo("Domestic Violence", CalloutProbability.High)]
public class DomesticViolence : Callout
{
private Ped victim, suspect;
private Blip blip_suspect;
private Blip blip_victim;
private Vector3 location_suspect;
private Vector3 location_victim;
private bool Victimfleeing;
private bool SuspectKillingPlayer;
private bool ShotAtVictim;
public override bool OnBeforeCalloutDisplayed()
{
location_suspect = new Vector3(-111.19f, -8.28f, 70.52f);
location_victim = new Vector3(-111.19f, -11f, 70.52f);
ShowCalloutAreaBlipBeforeAccepting(location_suspect, 30f);
CalloutMessage = "Domestic Violence";
CalloutPosition = location_suspect;
Functions.PlayScannerAudioUsingPosition("WE_HAVE CRIME_RESISTING_ARREST_02 IN_OR_ON_POSITION", location_suspect);
return base.OnBeforeCalloutDisplayed();
}
public override bool OnCalloutAccepted()
{
new RelationshipGroup("Attacker");
new RelationshipGroup("Victims");
suspect = new Ped(location_suspect);
suspect.IsPersistent = true;
suspect.BlockPermanentEvents = true;
suspect.RelationshipGroup = "Attacker";
suspect.Inventory.GiveNewWeapon("WEAPON_NAVYREVOLVER", 1, true);
victim = new Ped(location_victim);
victim.IsPersistent = true;
victim.BlockPermanentEvents = true;
victim.RelationshipGroup = "Victims";
//Game.LocalPlayer.Character.RelationshipGroup = "Victims";
suspect.Tasks.StandStill(-1);
Game.SetRelationshipBetweenRelationshipGroups("Attacker", "Victim", Relationship.Hate);
blip_suspect = suspect.AttachBlip();
blip_suspect.Color = System.Drawing.Color.Red;
blip_suspect.IsRouteEnabled = true;
blip_victim = victim.AttachBlip();
blip_victim.Color = System.Drawing.Color.Green;
blip_victim.IsRouteEnabled = false;
return base.OnCalloutAccepted();
}
public override void Process()
{
base.Process();
if (Game.LocalPlayer.Character.DistanceTo(suspect) < 40f && !ShotAtVictim && !SuspectKillingPlayer && !victim.IsDead)
{
suspect.Tasks.FightAgainst(victim);
ShotAtVictim = true;
}
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;
suspect.Tasks.FightAgainst(Game.LocalPlayer.Character);
}
if (suspect.IsDead || suspect.IsCuffed)
{
End();
}
if (suspect.Exists() && victim == null)
{
victim = new Ped(location_victim);
victim.Tasks.FightAgainst(suspect);
Game.DisplaySubtitle("Investigate the domestic violence report and neutralize the threat.", 5000);
}
if (victim != null && victim.IsDead)
{
Game.DisplaySubtitle("The victim is dead. Neutralize the suspect.", 5000);
}
}
public override void End()
{
base.End();
if (blip_suspect.Exists()) blip_suspect.Delete();
if (blip_victim.Exists()) blip_victim.Delete();
if (suspect.Exists())
{
suspect.Dismiss();
}
}
}
}

@ -1,79 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Rage;
using LSPD_First_Response.Mod.API;
using LSPD_First_Response.Mod.Callouts;
using System.Drawing;
namespace Code_Blue_Calls.Callouts
{
[CalloutInfo("Test", CalloutProbability.High)]
public class Test : Callout
{
private Ped suspect;
private Vehicle vehicle;
private Blip blip;
private LHandle Pursuit;
private Vector3 spawn;
private bool created;
public override bool OnBeforeCalloutDisplayed()
{
spawn = World.GetRandomPositionOnStreet();
ShowCalloutAreaBlipBeforeAccepting(spawn, 30f);
//AddMaximumDistanceCheck(40, spawn);
CalloutMessage = "Test";
CalloutPosition = spawn;
Functions.PlayScannerAudioUsingPosition("WE_HAVE CRIME_RESISTING_ARREST_02 IN_OR_ON_POSITION", spawn);
return base.OnBeforeCalloutDisplayed();
}
public override bool OnCalloutAccepted()
{
vehicle = new Vehicle("BLISTA", spawn);
vehicle.IsPersistent = true;
suspect = new Ped(vehicle.GetOffsetPositionFront(5f));
suspect.IsPersistent = true;
suspect.BlockPermanentEvents = true;
suspect.WarpIntoVehicle(vehicle, -1);
blip = suspect.AttachBlip();
blip.Color = System.Drawing.Color.Yellow;
blip.IsRouteEnabled = true;
created = false;
return base.OnCalloutAccepted();
}
public override void Process()
{
base.Process();
if (!created && Game.LocalPlayer.Character.DistanceTo(vehicle) <= 20f)
{
Pursuit = Functions.CreatePursuit();
Functions.AddPedToPursuit(Pursuit, suspect);
Functions.SetPursuitIsActiveForPlayer(Pursuit, true);
created = true;
}
if (created && !Functions.IsPursuitStillRunning(Pursuit))
{
End();
}
}
public override void End()
{
base.End();
if (suspect.Exists())
{
suspect.Dismiss();
}
}
}
}

@ -48,7 +48,7 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Callouts\Test.cs" />
<Compile Include="Callouts\DomesticViolence.cs" />
<Compile Include="IniFile.cs" />
<Compile Include="Main.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />

@ -28,14 +28,14 @@ namespace Code_Blue_Calls
{
if (OnDuty)
{
RegisterCallouts();
RegisterCallouts();
Game.DisplayNotification("Code Blue Callouts loaded.");
}
}
private static void RegisterCallouts()
{
Functions.RegisterCallout(typeof(Callouts.Test));
Functions.RegisterCallout(typeof(Callouts.DomesticViolence));
}
public static Assembly LSPDFRResolveEventHandler(object sender, ResolveEventArgs args)

Loading…
Cancel
Save