Example #1
0
        void OnPlayerKilled(BasePlayer victim, BasePlayer killer)
        {
#if DEBUG
            PrintToChat($"{killer?.displayName ?? "null"} kills {victim?.displayName ?? "null"}");
#endif

            Hunt hunt = null;
            hunt = HuntData.getHuntByTarget(victim);
            if (hunt != null) //Hunter kills target
            {
                if (hunt.hunter == killer && hunt.target == victim)
                {
                    hunt.end(hunt.hunter);
                }
            }
            else
            {
                hunt = HuntData.getHuntByHunter(victim);
            }
            if (hunt != null) //target kills hunter
            {
                if (hunt.target == killer && hunt.hunter == victim)
                {
                    hunt.end(hunt.target);
                }
            }
            return;
        }
Example #2
0
        private object OnItemAction(Item item, string action)
        {
            if (action != "crush")
            {
                return(null);
            }
            if (item.info.shortname != "skull.human")
            {
                return(null);
            }
            string skullName = null;

            if (item.name != null)
            {
                skullName = item.name.Substring(10, item.name.Length - 11);
            }
            if (string.IsNullOrEmpty(skullName))
            {
                return(null);
            }

            BasePlayer killer = item.GetOwnerPlayer();
            BasePlayer victim = BasePlayer.Find(skullName);

            if (victim == null)
            {
                return(null);
            }

#if DEBUG
            PrintToChat($"{killer} crushed {victim}'s skull!");
#endif

            Hunt hunt = null;
            hunt = HuntData.getHuntByTarget(victim);
            if (hunt == null)
            {
                hunt = HuntData.getHuntByHunter(victim);
            }
            if (hunt == null)
            {
                return(null);
            }
            if (hunt.hunter == killer || hunt.target == killer)
            {
                hunt.end(killer);
                return(null);
            }

            return(null);
        }
Example #3
0
        void OnPlayerDisconnected(BasePlayer player, string reason)
        {
            if (player == null)
            {
                return;
            }
            Hunt hunt = HuntData.getHuntByHunter(player);

            if (hunt == null)
            {
                return;
            }
            hunt.end();
            CooldownData.removeCooldown(hunt.target);
        }
Example #4
0
        private void huntCommand(BasePlayer player, string command, string[] args)
        {
            if (!hasPermission(player, permissions.admin))
            {
                PrintToChat(player, lang.GetMessage("noPermission", this, player.UserIDString));
                return;
            }

            if (args.Length == 0)
            {
                return;
            }
            switch (args[0])
            {
            case "list":
                player.ChatMessage("Ongoing hunts:");
                foreach (Hunt h in HuntData.instance.hunts)
                {
                    player.ChatMessage($"{h.hunterName} hunts {h.bounty.targetName}");
                }
                break;

            case "end":
            case "remove":
                if (args.Length < 2)
                {
                    return;
                }
                BasePlayer target = findPlayer(args[1], player);
                Hunt       hunt   = HuntData.getHuntByHunter(target);
                if (hunt == null)
                {
                    hunt = HuntData.getHuntByTarget(target);
                }
                if (hunt == null)
                {
                    return;
                }
                hunt.end();
                player.ChatMessage("removed hunt");
                break;
            }
        }