Ejemplo n.º 1
0
        private IEnchantment DragonBreath()
        {
            ISound sound = new Sound();

            sound.Loop = false;
            sound.RandomSounds.Add($"{Zone.Name}\\DragonFireball_Center.mp3");
            sound.RandomSounds.Add($"{Zone.Name}\\DragonFireball_L-R.mp3");
            sound.RandomSounds.Add($"{Zone.Name}\\DragonFireball_R-L.mp3");

            IEnchantment fireDamage = new HeartbeatBigTickEnchantment();

            fireDamage.Effect                    = new Damage(sound);
            fireDamage.ActivationPercent         = 3;
            fireDamage.EnchantmentEndingDateTime = new DateTime(9999, 12, 31);

            IDamage damage = new Objects.Damage.Damage();

            damage.Dice = new Dice(5, 6);
            damage.Type = DamageType.Fire;
            fireDamage.Parameter.Damage        = damage;
            fireDamage.Parameter.TargetMessage = new TranslationMessage("A dragon sweeps down and breaths fire on you.");
            fireDamage.Parameter.Description   = "a dragon";

            return(fireDamage);
        }
Ejemplo n.º 2
0
        IZone IZoneCode.Generate()
        {
            RandomZoneGeneration randZoneGen = new RandomZoneGeneration(10, 10, zoneId);
            RoomDescription description = new RoomDescription();
            description.LongDescription = "Dunes gently roll off into the horizon like waves on the ocean.";
            description.ExamineDescription = "The sand is a soft almost powdery substance that lets you sink up to your ankles.";
            description.ShortDescription = "Desert";
            randZoneGen.RoomDescriptions.Add(description);

            IZone zone = randZoneGen.Generate();
            zone.InGameDaysTillReset = 1;
            zone.Name = nameof(EndLessDesert);


            Random random = new Random(zoneId);
            IRoom room = zone.Rooms[random.Next(zone.Rooms.Count) + 1];
            room.LongDescription = "Lush trees grow around the small lake forming every desert travelers dream, an oasis.";
            room.ExamineDescription = "A small lake is a pale cool blue color inviting you to take a drink and cool off from the hot desert air.";
            room.ShortDescription = "Oasis";

            IEnchantment enchantment = new HeartbeatBigTickEnchantment();
            enchantment.ActivationPercent = 100;
            enchantment.Effect = new DoorwayToUnderworld();
            room.Enchantments.Add(enchantment);

            ZoneHelper.ConnectZone(zone.Rooms[6], Direction.North, 9, 93);

            return zone;
        }
Ejemplo n.º 3
0
        public void Setup()
        {
            enchantment = new HeartbeatBigTickEnchantment();
            effect      = new Mock <IEffect>();
            parameter   = new Mock <IEffectParameter>();

            enchantment.ActivationPercent = 100;
            enchantment.Effect            = effect.Object;
            enchantment.Parameter         = parameter.Object;
        }
Ejemplo n.º 4
0
        private IEnchantment FireDamage()
        {
            IEnchantment fireDamage = new HeartbeatBigTickEnchantment();

            fireDamage.Effect                    = new Damage();
            fireDamage.ActivationPercent         = 5;
            fireDamage.EnchantmentEndingDateTime = new DateTime(9999, 12, 31);
            IDamage damage = new Objects.Damage.Damage();

            damage.Dice = new Dice(1, 6);
            damage.Type = DamageType.Fire;
            fireDamage.Parameter.Damage  = damage;
            fireDamage.Parameter.Message = new TranslationMessage("Fire leaps up and burns you.");

            return(fireDamage);
        }
Ejemplo n.º 5
0
        protected override void AdditionalEffect(IMobileObject performer, IMobileObject target)
        {
            //notify the target what is happening since it doesn't happen earlier;
            ITranslationMessage message = new TranslationMessage(GlobalReference.GlobalValues.StringManipulator.UpdateTargetPerformer(performer.SentenceDescription, target.SentenceDescription, TargetNotificationSuccess.Message));

            GlobalReference.GlobalValues.Notify.Mob(target, message);

            IEnchantment     enchantment     = new HeartbeatBigTickEnchantment();
            IEffect          effect          = new Blindness();
            IEffectParameter effectParameter = new EffectParameter();
            IDefeatInfo      defeatInfo      = new DefeatInfo();

            enchantment.ActivationPercent         = 100;
            enchantment.Effect                    = effect;
            enchantment.Parameter                 = effectParameter;
            enchantment.EnchantmentEndingDateTime = new DateTime(9999, 1, 1);
            enchantment.DefeatInfo                = defeatInfo;
            defeatInfo.CurrentEnchantmentPoints   = performer.StrengthEffective;
            defeatInfo.MobStat                    = Stat.Constitution;

            target.Enchantments.Add(enchantment);
        }
Ejemplo n.º 6
0
        private IEnchantment DragonBreath()
        {
            ISound sound = new Sound();

            sound.Loop      = false;
            sound.SoundName = string.Format("{0}\\{1}", zone.Name, "DragonFireball.mp3");

            IEnchantment fireDamage = new HeartbeatBigTickEnchantment();

            fireDamage.Effect                    = new Damage(sound);
            fireDamage.ActivationPercent         = 3;
            fireDamage.EnchantmentEndingDateTime = new DateTime(9999, 12, 31);

            IDamage damage = new Objects.Damage.Damage();

            damage.Dice = new Dice(5, 6);
            damage.Type = DamageType.Fire;
            fireDamage.Parameter.Damage  = damage;
            fireDamage.Parameter.Message = new TranslationMessage("A dragon sweeps down and breaths fire on you.");

            return(fireDamage);
        }
Ejemplo n.º 7
0
        private IArmor Finger()
        {
            IArmor armor = CreateArmor(AvalableItemPosition.Finger, 17, new Gold());

            armor.ExamineDescription  = "The gem is made of a red stone with white veins that look like a swirl frozen in time.";
            armor.LookDescription     = "The ring is made of a thick gold band with a red stone in the center.";
            armor.ShortDescription    = "Gold Ring.";
            armor.SentenceDescription = "ring";
            armor.KeyWords.Add("red");
            armor.KeyWords.Add("stone");
            armor.KeyWords.Add("gold");
            armor.KeyWords.Add("ring");

            IEnchantment enchantment = new HeartbeatBigTickEnchantment();

            enchantment.Effect = new RecoverStamina();
            IEffectParameter effectParameter = new EffectParameter();

            effectParameter.Dice  = new Dice(1, 1);
            enchantment.Parameter = effectParameter;

            return(armor);
        }
Ejemplo n.º 8
0
        public IZone Generate()
        {
            List <string> names = new List <string>()
            {
                "Falim Nasha", "Bushem Dinon", "Stavelm Eaglelash", "Giu Thunderbash", "Marif Hlisk", "Fim Grirgav", "Strarcar Marshgem", "Storth Shadowless", "Tohkue-zid Lendikrafk", "Vozif Jikrehd", "Dranrovelm Igenomze", "Zathis Vedergi", "Mieng Chiao", "Thuiy Chim", "Sielbonron Canderger", "Craldu Gacevi",
                "Rumeim Shennud", "Nilen Cahrom", "Bei Ashspark", "Hii Clanbraid", "Sodif Vatsk", "Por Rorduz", "Grorcerth Forestsoar", "Gath Distantthorne", "Duhvat-keuf Faltrueltrim", "Ham-kaoz Juhpafk", "Rolvoumvald Gibenira", "Rondit Vumregi", "Foy Sheiy", "Fiop Tei", "Fruenrucu Jalbese", "Fhanun Guldendal"
            };

            RandomZoneGeneration randZoneGen = new RandomZoneGeneration(5, 5, Zone.Id);
            RoomDescription      description = new RoomDescription();

            description.LookDescription    = "The dirt has been freshly disturbed where a body has been recently placed in the ground.";
            description.ExamineDescription = "Some flowers have been placed on the headstone that belongs to {name}.";
            description.ShortDescription   = "Graveyard";
            randZoneGen.RoomDescriptions.Add(description);

            description = new RoomDescription();
            description.LookDescription    = "The headstone has been here a while and is starting to show its age.";
            description.ExamineDescription = "The headstone name has worn off and is impossible to read.";
            description.ShortDescription   = "Graveyard";
            randZoneGen.RoomDescriptions.Add(description);

            description = new RoomDescription();
            description.LookDescription    = "A grand tower of marble rises to the sky.  This person must have been important or rich in life.";
            description.ExamineDescription = "The tombstone belongs to {name}.";
            description.ShortDescription   = "Graveyard";
            randZoneGen.RoomDescriptions.Add(description);

            description = new RoomDescription();
            description.LookDescription    = "A small flat stone marker is all shows where this person is buried.";
            description.ExamineDescription = "The grave marker belongs to {name}.";
            description.ShortDescription   = "Graveyard";
            randZoneGen.RoomDescriptions.Add(description);

            description = new RoomDescription();
            description.LookDescription    = "There is a small bench for resting as one walks among the tombstones.";
            description.ExamineDescription = "A pair of angles are carved into the sides of the feet on the bench.";
            description.ShortDescription   = "Graveyard";
            randZoneGen.RoomDescriptions.Add(description);

            description = new RoomDescription();
            description.LookDescription    = "Crosses give hint that the owner might have been religions in life.";
            description.ExamineDescription = "Here lies {name}.";
            description.ShortDescription   = "Graveyard";
            randZoneGen.RoomDescriptions.Add(description);

            description = new RoomDescription();
            description.LookDescription    = "The statue a weeping angle stands watch over the deceased.";
            description.ExamineDescription = "The grave belongs to {name}.";
            description.ShortDescription   = "Graveyard";
            randZoneGen.RoomDescriptions.Add(description);

            FlavorOption option = new FlavorOption();

            option.FlavorValues.Add("{name}", names);
            description.FlavorOption.Add(option);
            randZoneGen.RoomDescriptions.Add(description);

            Zone      = randZoneGen.Generate();
            Zone.Name = nameof(GrandViewGraveYard);

            int creatueChoices = 0;

            MethodInfo[] methods = this.GetType().GetMethods(BindingFlags.NonPublic | BindingFlags.Instance);
            foreach (MethodInfo info in methods)
            {
                if (info.ReturnType == typeof(INonPlayerCharacter) && info.Name != "BuildNpc")
                {
                    creatueChoices++;
                }
            }

            int        percent            = (int)Math.Round(5d / creatueChoices, 0);
            List <int> hoursToSpawnUndead = new List <int>();

            for (int i = 12; i < 24; i++)
            {
                hoursToSpawnUndead.Add(i);
            }

            HeartbeatBigTickEnchantment enchantmentSkeleton = new HeartbeatBigTickEnchantment();

            enchantmentSkeleton.ActivationPercent = .2;
            enchantmentSkeleton.Effect            = new LoadMob()
            {
                HoursToLoad = hoursToSpawnUndead
            };
            enchantmentSkeleton.Parameter = new EffectParameter()
            {
                Performer = Skeleton(), RoomMessage = new TranslationMessage("The skeleton rises slowly out of its grave.")
            };

            HeartbeatBigTickEnchantment enchantmentZombie = new HeartbeatBigTickEnchantment();

            enchantmentSkeleton.ActivationPercent = .2;
            enchantmentZombie.Effect = new LoadMob()
            {
                HoursToLoad = hoursToSpawnUndead
            };
            enchantmentZombie.Parameter = new EffectParameter()
            {
                Performer = Zombie(), RoomMessage = new TranslationMessage("A zombie burst forth from it grave hungry for brains.")
            };

            foreach (IRoom room in Zone.Rooms.Values)
            {
                ILoadableItems loadable = (ILoadableItems)room;
                loadable.LoadableItems.Add(new LoadPercentage()
                {
                    PercentageLoad = percent, Object = Crow()
                });
                room.Attributes.Add(RoomAttribute.Outdoor);
                room.Attributes.Add(RoomAttribute.Weather);

                room.Enchantments.Add(enchantmentSkeleton);
                room.Enchantments.Add(enchantmentZombie);
            }

            SetRoom13();

            Zone.Rooms.Add(26, Room26());

            ConnectRooms();

            return(Zone);
        }
Ejemplo n.º 9
0
        private void ConnectRooms(IRoom room1, Direction direction, IRoom room2)
        {
            baseAddExit.Invoke(null, new object[] { room1, direction, room2, null });

            int successfulPutbackPercent = 5;

            IExit exit = new Exit();

            exit.Room = 1;
            exit.Zone = room1.Zone;

            if (room1.North == null)
            {
                room1.North = exit;
                if (room1.Id != 1)
                {
                    room1.Enchantments.Add(GenerateMobEnchantment(Direction.North, 100));
                }
            }
            else
            {
                room1.Enchantments.Add(GenerateMobEnchantment(Direction.North, successfulPutbackPercent));
            }

            if (room1.East == null)
            {
                room1.East = exit;
                if (room1.Id != 1)
                {
                    room1.Enchantments.Add(GenerateMobEnchantment(Direction.East, 100));
                }
            }
            else
            {
                room1.Enchantments.Add(GenerateMobEnchantment(Direction.East, successfulPutbackPercent));
            }

            if (room1.South == null)
            {
                room1.South = exit;
                if (room1.Id != 1)
                {
                    room1.Enchantments.Add(GenerateMobEnchantment(Direction.South, 100));
                }
            }
            else
            {
                room1.Enchantments.Add(GenerateMobEnchantment(Direction.South, successfulPutbackPercent));
            }

            if (room1.West == null)
            {
                room1.West = exit;
                if (room1.Id != 1)
                {
                    room1.Enchantments.Add(GenerateMobEnchantment(Direction.West, 100));
                }
            }
            else
            {
                room1.Enchantments.Add(GenerateMobEnchantment(Direction.West, successfulPutbackPercent));
            }

            Message message = new Message();

            message.Sound = new Sound();
            for (int i = 1; i < 9; i++)
            {
                message.Sound.RandomSounds.Add($"{Zone.Name}\\Thunder{i.ToString()}.mp3");
            }

            string           castleSilhouette = $"Lightning illuminates a castle to the {direction.ToString()}.";
            IEffectParameter effectParameter  = new EffectParameter();

            effectParameter.RoomId      = new BaseObjectId(room1);
            effectParameter.RoomMessage = new TranslationMessage(castleSilhouette);
            HeartbeatBigTickEnchantment heartbeatBigTickEnchantment = new HeartbeatBigTickEnchantment();

            heartbeatBigTickEnchantment.ActivationPercent = 2;
            heartbeatBigTickEnchantment.Effect            = message;
            heartbeatBigTickEnchantment.Parameter         = effectParameter;


            room1.Enchantments.Add(heartbeatBigTickEnchantment);
        }