Beispiel #1
0
        public void CharacterEntered(DungeonMaster DM, Character guy)
        {
            if (Name == "Entrance" && guy.HasCondition("Treasure"))
            {
                guy.ReduceCondition("Treasure", 1);
                DM.ScorePoint(guy.SideID, 1);
            }

            if (Properties.Contains(TileProperties.Teleportal) && Target != null)
            {
                if (guy.HasCondition("Teleported"))
                {
                    guy.ReduceCondition("Teleported", 1);
                }
                else
                {
                    guy.AddCondition("Teleported", 1);
                    //telefrag nerds
                    var nerd = DM.Characters.FirstOrDefault(c => c.Pos == Target);
                    if (nerd != null)
                    {
                        nerd.TakeDamage(Mechanics.Effects.DamageEffect.DamageType.True, 999);
                    }
                    DM.TeleportTo(guy, Target);
                }
            }

            if (Properties.Contains(TileProperties.OnFire) && !guy.HasTrait("Firedance"))
            {
                guy.TakeDamage(Mechanics.Effects.DamageEffect.DamageType.Fire, 1);
            }

            //TODO: use properties?
            if (Name == "Shallow Pool" && guy.HasTrait("Weakness to Water"))
            {
                guy.TakeDamage(Mechanics.Effects.DamageEffect.DamageType.True, 5); //TODO: magic number
            }

            if (Properties.Contains(TileProperties.Ooze) && !guy.HasTrait("One with Filth"))
            {
                guy.TakeDamage(Mechanics.Effects.DamageEffect.DamageType.Magic, 1);
                guy.Stamina.Value -= 1;
            }

            if (Properties.Contains(TileProperties.Treasure) && !guy.HasTrait("Mindless") &&
                guy.Stamina.Value > 0 && !guy.HasCondition("Treasure"))
            {
                guy.Stamina.Value -= 1;
                guy.AddCondition("Treasure", 1);
                var floor = DM.data.GetTileByName("Floor");
                DM.map.MakeTile(DM, floor, guy.Pos, DM.data);
            }
        }