예제 #1
0
        public void OnPlayerDie(PlayerDieEvent ev)
        {
            if (!Sitrep.Events.Contains("playerdieevent"))
            {
                return;
            }
            if (!Sitrep.CustomChannelIds.TryGetValue("playerdieevent", out ulong channel))
            {
                channel = Sitrep.EventsId;
            }
            DamageType dmgType = ev.HitInfo.GetDamageInfo();

            if (dmgType == DamageType.AntiCheat || dmgType == DamageType.CmdSuicide || dmgType == DamageType.Disconnect || dmgType == DamageType.Wall || dmgType == DamageType.None)
            {
                return;
            }
            if (Methods.IsTeamkill(ev))
            {
                Send($":warning: **[{ev.Target.Role.AsString()}] {ev.Target.Nick.DiscordSanitize()} ({ev.Target.ParsedUserId}) byl zabit spoluhráčem [{ev.Attacker.Role.AsString()}] {ev.Attacker.Nick.DiscordSanitize()} ({ev.Attacker.ParsedUserId}) pomocí {dmgType}**", channel);
                return;
            }

            if (ev.Attacker.UserId == ev.Target.UserId)
            {
                Send($":skull: [{ev.Target.Role.AsString()}] {ev.Target.Nick.DiscordSanitize()} ({ev.Target.ParsedUserId}) spáchal sebevraždu pomocí {dmgType}.", channel);
            }
            else
            {
                Send($":skull: [{ev.Target.Role.AsString()}] {ev.Target.Nick.DiscordSanitize()} ({ev.Target.ParsedUserId}) byl zabit hráčem [{ev.Attacker.Role.AsString()}] {ev.Attacker.Nick.DiscordSanitize()} ({ev.Attacker.ParsedUserId}) pomocí {dmgType}.", channel);
            }
        }
예제 #2
0
 public virtual void Die()
 {
     if (PlayerDieEvent != null)
     {
         PlayerDieEvent.Invoke();
     }
 }
예제 #3
0
 public override void Kill()
 {
     if (Killed)
     {
         return;
     }
     Killed = true;
     PlayerDieEvent?.Invoke();
     Life--;
     base.Kill();
 }
예제 #4
0
    public void OnPlayerDieEvent(PlayerDieEvent gameEvent)
    {
        if (GameOver)
        {
            return;
        }

        UpdateScoreForKill(gameEvent.Killer, gameEvent.Dead, PointsForKill);

        StartCoroutine(RespawnPlayer(gameEvent.Dead));
    }
예제 #5
0
 /// <summary> Events callback. Called every time a Player dies. </summary>
 /// <param name="eventArgs"> the death event arguments </param>
 void OnPlayerDie(PlayerDieEvent eventArgs)
 {
     _stocks[eventArgs.Player.ID]--;
     if (eventArgs.Revived || _stocks[eventArgs.Player.ID] <= 0)
     {
         return;
     }
     _eventManager.Publish(new PlayerRespawnEvent {
         Player = eventArgs.Player
     });
     eventArgs.Revived = true;
 }
예제 #6
0
 public override void Initialization()
 {
     GameStartedEvent        = new GameStartedEvent();
     CanGenerateNewWaveEvent = new CanGenerateNewWaveEvent();
     EnemyWaveGeneratedEvent = new EnemyWaveGeneratedEvent();
     EnemyDieEvent           = new EnemyDieEvent();
     SquadDieEvent           = new SquadDieEvent();
     FormationDieEvent       = new FormationDieEvent();
     PlayerDieEvent          = new PlayerDieEvent();
     DifficultUpEvent        = new DifficultUpEvent();
     HealthPickedEvent       = new HealthPickedEvent();
     EndMusicEvent           = new EndMusicEvent();
 }
예제 #7
0
    private void Update()
    {
        Vector2 moveInput = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));

        if (joystick.Horizontal != 0 || joystick.Vertical != 0)
        {
            moveInput = new Vector2(joystick.Horizontal, joystick.Vertical);
        }
        moveVelocity = moveInput.normalized * speed;

        if (health <= 0)
        {
            PlayerDieEvent.Invoke();
        }
    }
예제 #8
0
 public void OnPlayerDie(PlayerDieEvent ev)
 {
     if (ev.Attacker == Scp035Player)
     {
         ev.Target.ShowHint("Byl jsi zabit SCP-035", 5);
     }
     if (ev.Target == Scp035Player)
     {
         Scp035Player = null;
         Pickup pickup = Map.SpawnItem(SCP035ItemType, ev.Target.Position);
         Timing.KillCoroutines(Hurt035Coroutine);
         Scp035Pickup = pickup;
     }
     if (ev.Target != Scp035Player)
     {
         CheckOnlySCPs();
     }
 }
예제 #9
0
파일: API.cs 프로젝트: ondax/Sitrep
        public static bool IsTeamkill(PlayerDieEvent ev)
        {
            RoleType killer = ev.Attacker.Role;
            RoleType target = ev.Target.Role;

            if (ev.Attacker.UserId == ev.Target.UserId)
            {
                return(false);
            }
            if (killer.GetTeam() == target.GetTeam())
            {
                return(true);
            }
            if (killer == RoleType.ChaosInsurgency && target == RoleType.ClassD)
            {
                return(true);
            }
            if (killer == RoleType.FacilityGuard && target == RoleType.NtfCadet)
            {
                return(true);
            }
            if (killer == RoleType.NtfCommander && target == RoleType.FacilityGuard)
            {
                return(true);
            }
            if (killer == RoleType.NtfLieutenant && target == RoleType.FacilityGuard)
            {
                return(true);
            }
            if (killer == RoleType.NtfScientist && target == RoleType.FacilityGuard)
            {
                return(true);
            }
            if (killer.GetTeam() == Vigilance.Enums.TeamType.NineTailedFox && target == RoleType.Scientist)
            {
                return(true);
            }
            return(false);
        }
예제 #10
0
 void _OnDie(PlayerDieEvent evt)
 {
     _animator.Play("Die");
 }
예제 #11
0
 void onPlayerDie(PlayerDieEvent e)
 {
     Instantiate(dieMenuPrefab);
 }