public void StartMurderScenario()
        {
            GameFiber.StartNew(delegate
            {
                this.pursuit = Functions.CreatePursuit();

                int r = new Random().Next(1, 5);
                int t = new Random().Next(1, 3);

                state = EMurderState.DecisionMade;

                if (r == 1)
                {
                    NativeFunction.CallByName <uint>("TASK_COMBAT_PED", Aggressor, Victim, 0, 1);
                    NativeFunction.CallByName <uint>("TASK_REACT_AND_FLEE_PED", Victim, Aggressor);

                    GameFiber.Sleep(5000);

                    NativeFunction.CallByName <uint>("TASK_REACT_AND_FLEE_PED", Victim, Aggressor);

                    if (t == 1)
                    {
                        NativeFunction.CallByName <uint>("TASK_COMBAT_PED", Aggressor, Game.LocalPlayer.Character, 0, 1);

                        GameFiber.Sleep(4500);
                    }

                    if (t == 2)
                    {
                        Victim.Kill();

                        if (!Victim.IsAlive)
                        {
                            isDead = true;
                        }

                        if (isDead == true)
                        {
                            NativeFunction.CallByName <uint>("TASK_AIM_GUN_AT_ENTITY", Aggressor, Victim, -1, true);
                        }
                    }
                }
                else
                {
                    NativeFunction.CallByName <uint>("TASK_REACT_AND_FLEE_PED", Victim, Aggressor);
                }

                if (Aggressor.Exists())
                {
                    Aggressor.Dismiss();
                }

                Functions.AddPedToPursuit(this.pursuit, Aggressor);

                Functions.RequestBackup(Game.LocalPlayer.Character.Position, LSPD_First_Response.EBackupResponseType.Pursuit, LSPD_First_Response.EBackupUnitType.LocalUnit);
            });
        }
        public override void Process()
        {
            base.Process();

            if (state == EMurderState.EnRoute && Game.LocalPlayer.Character.Position.DistanceTo(SpawnPoint) <= 15)
            {
                state = EMurderState.OnScene;

                StartMurderScenario();
            }

            if (state == EMurderState.DecisionMade && !Functions.IsPursuitStillRunning(pursuit))
            {
                this.End();
            }

            if (Game.IsKeyDown(Keys.End))
            {
                this.End();
            }
        }
        public override bool OnCalloutAccepted()
        {
            state = EMurderState.EnRoute;

            string myPedsGun = pedsGun[myRand.Next(pedsGun.Length)];

            aggressorBlip = Aggressor.AttachBlip();
            aggressorBlip.EnableRoute(Color.DarkOrange);

            Aggressor.Inventory.GiveNewWeapon(myPedsGun, 50, true);

            if (Victim.IsAlive)
            {
                NativeFunction.CallByName <uint>("TASK_AIM_GUN_AT_ENTITY", Aggressor, Victim, -1, true);
                Victim.Tasks.PutHandsUp(-1, Aggressor);

                Victim.BlockPermanentEvents = true;
            }

            Game.DisplaySubtitle("~b~" + Main.playerName + " ~w~Get to the ~r~scene~w~.", 6500);

            return(base.OnCalloutAccepted());
        }