Example #1
0
        private void HandleTelefragged([NotNull] Actor actor,
                                       IEnumerable <Actor> telefragged,
                                       Pos2D oldPos,
                                       Pos2D newPos,
                                       int damage)
        {
            string hurtMessage;

            // Teleporting on top of another actor should always cause damage to that actor and swap it to your old location
            foreach (var target in telefragged)
            {
                hurtMessage = CombatManager.HurtObject(this, actor, target, damage, "scrambles", DamageType.Normal);

                if (actor.IsPlayer || target.IsPlayer || CanPlayerSee(newPos))
                {
                    AddMessage(hurtMessage, ClientMessageType.Generic);
                }

                Level.MoveObject(target, oldPos);
            }

            // If any collisions occurred, also hurt the actor who triggered it
            hurtMessage = CombatManager.HurtObject(this, actor, actor, damage, "scrambles", DamageType.Normal);

            if (actor.IsPlayer || Player.CanSee(newPos))
            {
                AddMessage(hurtMessage, ClientMessageType.Generic);
            }
        }
Example #2
0
        private void HandleFailedTeleport([NotNull] Actor actor, Pos2D pos, int damage)
        {
            if (actor.IsPlayer || CanPlayerSee(pos))
            {
                AddMessage($"{actor.Name} tries to teleport but is blocked, causing {damage} scramble damage.",
                           ClientMessageType.Failure);
            }

            CombatManager.HurtObject(this, actor, actor, damage, "scrambles", DamageType.Normal);
        }