コード例 #1
0
        public void Attack(IWeapon weapon, ICreature attacker, ICreature target, World world)
        {
            MessageTypes messageTypeToUse;
            bool         attackHits     = RandomNumberProvider.CheckIfChanceOccurs(_chanceOfHit);
            int          amountOfDamage = RandomNumberProvider.GetRandomNumber(_minimumDamage, _maximumDamage);

            if (attacker.IsPlayer())
            {
                messageTypeToUse = MessageTypes.PlayerAttack;
            }
            else
            {
                messageTypeToUse = MessageTypes.CreatureAttack;
            }

            if (attackHits)
            {
                target.Health.Current -= amountOfDamage;
                Announcer.Instance.Announce(attacker.Name + " hits " + target.Name + " for " + amountOfDamage + " damage!", MessageTypes.CreatureAttack);
            }
            else
            {
                Announcer.Instance.Announce(attacker.Name + " misses " + target.Name + "!", MessageTypes.CreatureAttack);
            }

            world.AddSpecialEffectToWorld(new Fireball(attacker.WorldIndex, target.WorldIndex, world));
        }
コード例 #2
0
        public void TakeTurn(ICreature creature, World world)
        {
            _countdownToNextTurn -= 1;
            if (_countdownToNextTurn <= 0)
            {
                _countdownToNextTurn = _speed;
                bool turnOver = false;

                if (world.CanPlayerSeeWorldIndex(creature.WorldIndex) && RandomNumberProvider.CheckIfChanceOccurs(25) && world.GetStraightLineDistance(creature.WorldIndex, world.Player.WorldIndex) <= 5)
                {
                    _spell.CastSpell(creature, world.Player.WorldIndex);
                }
                else
                {
                    while (turnOver != true)
                    {
                        int roll = RandomNumberProvider.GetRandomNumber(1, 4);
                        if (roll == 1)
                        {
                            turnOver = world.MoveCreatureInDirectionSuccessful(Direction.North, creature);
                        }
                        else if (roll == 2)
                        {
                            turnOver = world.MoveCreatureInDirectionSuccessful(Direction.South, creature);
                        }
                        else if (roll == 3)
                        {
                            turnOver = world.MoveCreatureInDirectionSuccessful(Direction.East, creature);
                        }
                        else if (roll == 4)
                        {
                            turnOver = world.MoveCreatureInDirectionSuccessful(Direction.West, creature);
                        }
                    }
                }
            }
        }