Exemplo n.º 1
0
        public async Task <ActionResult <FighterDto> > CreateFighter(
            [FromBody] FighterDto dto,
            [FromServices] IFighterLevelUpHandler fighterLevelUpHandler,
            [FromServices] IFighterOutfitter fighterOutfitter,
            [FromServices] IEquipmentGenerator equipmentGenerator)
        {
            var userId = User.Claims.GetUserId();

            if (userId == null)
            {
                return(Forbid());
            }

            var name = dto.Name;

            if (string.IsNullOrEmpty(name) || await Context.Fighters.AnyAsync(o => o.Name == name))
            {
                return(BadRequest());
            }

            if (await Context.Fighters.AnyAsync(o => o.UserId == userId))
            {
                return(BadRequest());
            }

            var fighter = new Fighter()
            {
                Name      = name,
                UserId    = userId.Value,
                Created   = dateTimeProvider.Now,
                Equipment = new List <Equipment>(),
            };

            fighterLevelUpHandler.Up(fighter);

            var armorHead      = equipmentGenerator.GenerateArmorHead(fighter.Level, ItemRarity.Basic, userId.Value);
            var armorShoulders = equipmentGenerator.GenerateArmorShoulders(fighter.Level, ItemRarity.Basic, userId.Value);
            var armorChest     = equipmentGenerator.GenerateArmorChest(fighter.Level, ItemRarity.Basic, userId.Value);
            var armorHands     = equipmentGenerator.GenerateArmorHands(fighter.Level, ItemRarity.Basic, userId.Value);
            var armorLegs      = equipmentGenerator.GenerateArmorLegs(fighter.Level, ItemRarity.Basic, userId.Value);
            var armorShoes     = equipmentGenerator.GenerateArmorShoes(fighter.Level, ItemRarity.Basic, userId.Value);

            var weapon = equipmentGenerator.GenerateWeaponGreatsword(fighter.Level, ItemRarity.Basic, userId.Value);

            fighterOutfitter.Equip(fighter, armorHead, false);
            fighterOutfitter.Equip(fighter, armorShoulders, false);
            fighterOutfitter.Equip(fighter, armorChest, false);
            fighterOutfitter.Equip(fighter, armorHands, false);
            fighterOutfitter.Equip(fighter, armorLegs, false);
            fighterOutfitter.Equip(fighter, armorShoes, false);

            fighterOutfitter.Equip(fighter, weapon, false);

            Context.Fighters.Add(fighter);
            Context.Equipment.AddRange(armorHead, armorShoulders, armorChest, armorHands, armorLegs, armorShoes, weapon);
            await Context.SaveChangesAsync();

            return(Mapper.Map <FighterDto>(fighter));
        }
 public SeasonFighterResetter(
     IFighterLevelUpHandler fighterLevelUpHandler,
     IFighterOutfitter fighterOutfitter,
     IEquipmentGenerator equipmentGenerator)
 {
     this.fighterLevelUpHandler = fighterLevelUpHandler;
     this.fighterOutfitter      = fighterOutfitter;
     this.equipmentGenerator    = equipmentGenerator;
 }
Exemplo n.º 3
0
 public EquipmentTraderAction(IEquipmentGenerator E, int price)
 {
     EquipGenerator = E;
     Price          = price;
     Requirements   = new List <IBaseRequirement> {
         new  BaseTraderRequirement(price)
     };
     TraderItems = new List <CItemInventory> {
         E.GenerateMax(), E.GenerateMin()
     };
 }
Exemplo n.º 4
0
        public CharacterGenerator(IAlignmentGenerator alignmentGenerator, ICharacterClassGenerator characterClassGenerator, IRaceGenerator raceGenerator,
            IAdjustmentsSelector adjustmentsSelector, IRandomizerVerifier randomizerVerifier, IPercentileSelector percentileSelector,
            IAbilitiesGenerator abilitiesGenerator, ICombatGenerator combatGenerator, IEquipmentGenerator equipmentGenerator,
            IMagicGenerator magicGenerator, Generator generator, ICollectionsSelector collectionsSelector)
        {
            this.alignmentGenerator = alignmentGenerator;
            this.characterClassGenerator = characterClassGenerator;
            this.raceGenerator = raceGenerator;
            this.abilitiesGenerator = abilitiesGenerator;
            this.combatGenerator = combatGenerator;
            this.equipmentGenerator = equipmentGenerator;
            this.generator = generator;

            this.adjustmentsSelector = adjustmentsSelector;
            this.randomizerVerifier = randomizerVerifier;
            this.percentileSelector = percentileSelector;
            this.magicGenerator = magicGenerator;
            this.collectionsSelector = collectionsSelector;
        }
Exemplo n.º 5
0
 public RewardFactory(IEquipmentGenerator equipmentGenerator)
 {
     equipmentPools = new Dictionary <Guid, RewardPoolBase <Equipment> >()
     {
         [FighterLevelRewardPool.Id]       = new FighterLevelRewardPool(equipmentGenerator),
         [EmpoweredChestRewardPool.Common] = new EmpoweredChestRewardPool(equipmentGenerator)
         {
             Rarity = ItemRarity.Common,
         },
         [EmpoweredChestRewardPool.Rare] = new EmpoweredChestRewardPool(equipmentGenerator)
         {
             Rarity = ItemRarity.Rare,
         },
         [EmpoweredChestRewardPool.Fabled] = new EmpoweredChestRewardPool(equipmentGenerator)
         {
             Rarity = ItemRarity.Fabled,
         },
         [EmpoweredChestRewardPool.Mythic] = new EmpoweredChestRewardPool(equipmentGenerator)
         {
             Rarity = ItemRarity.Mythic
         },
     };
 }
Exemplo n.º 6
0
 public CreatureGenerator(IAlignmentGenerator alignmentGenerator,
                          ICreatureVerifier creatureVerifier,
                          ICollectionSelector collectionsSelector,
                          IAbilitiesGenerator abilitiesGenerator,
                          ISkillsGenerator skillsGenerator,
                          IFeatsGenerator featsGenerator,
                          ICreatureDataSelector creatureDataSelector,
                          IHitPointsGenerator hitPointsGenerator,
                          IArmorClassGenerator armorClassGenerator,
                          ISavesGenerator savesGenerator,
                          JustInTimeFactory justInTimeFactory,
                          IAdvancementSelector advancementSelector,
                          IAttacksGenerator attacksGenerator,
                          ISpeedsGenerator speedsGenerator,
                          IEquipmentGenerator equipmentGenerator,
                          IMagicGenerator magicGenerator,
                          ILanguageGenerator languageGenerator)
 {
     this.alignmentGenerator   = alignmentGenerator;
     this.abilitiesGenerator   = abilitiesGenerator;
     this.skillsGenerator      = skillsGenerator;
     this.featsGenerator       = featsGenerator;
     this.creatureVerifier     = creatureVerifier;
     this.collectionsSelector  = collectionsSelector;
     this.creatureDataSelector = creatureDataSelector;
     this.hitPointsGenerator   = hitPointsGenerator;
     this.armorClassGenerator  = armorClassGenerator;
     this.savesGenerator       = savesGenerator;
     this.justInTimeFactory    = justInTimeFactory;
     this.advancementSelector  = advancementSelector;
     this.attacksGenerator     = attacksGenerator;
     this.speedsGenerator      = speedsGenerator;
     this.equipmentGenerator   = equipmentGenerator;
     this.magicGenerator       = magicGenerator;
     this.languageGenerator    = languageGenerator;
 }
Exemplo n.º 7
0
        public async Task <ActionResult <RewardContentDto> > Buy([FromBody] ShopItemDto dto, [FromServices] IEquipmentGenerator equipmentGenerator)
        {
            var userId = User.Claims.GetUserId();

            if (userId == null)
            {
                return(Forbid());
            }

            var item = ShopInventory.Items.FirstOrDefault(o => o.ItemId == dto.ItemId && o.Rarity == dto.Rarity);

            if (item == null)
            {
                return(BadRequest());
            }

            foreach (var price in item.Prices)
            {
                var currencies = await Context.Items
                                 .Where(o => o.UserId == userId)
                                 .Where(o => o.ItemId == price.CurrencyItemId)
                                 .Take(price.Quantity)
                                 .ToListAsync();

                if (currencies.Count != price.Quantity)
                {
                    return(BadRequest());
                }

                Context.RemoveRange(currencies);
            }

            var content = new RewardContentDto();

            if (EquipmentConstants.IsEquipmentConstant(item.ItemId))
            {
                var fighterLevel = await Context.Fighters
                                   .Where(o => o.UserId == userId)
                                   .MaxAsync(o => o.Level);

                var itemLevel = fighterLevel.NearestBase(8);
                if (itemLevel < 1)
                {
                    itemLevel = 1;
                }

                var equipment = equipmentGenerator.GenerateEquipment(item.ItemId, itemLevel, item.Rarity, userId.Value);
                Context.Add(equipment);
                content.Equipment.Add(Mapper.Map <EquipmentDto>(equipment));
            }
            else
            {
                var boughtItem = new Item()
                {
                    ItemId = item.ItemId,
                    UserId = userId.Value,
                };

                Context.Items.Add(boughtItem);
                content.Items.Add(Mapper.Map <ItemDto>(boughtItem));
            }

            await Context.SaveChangesAsync();

            return(Ok(content));
        }
 public RandomEquipmentEnhancer(IEnhancementProbability enhancementProbability, IEquipmentGenerator equipmentGenerator)
 {
     this.enhancementProbability = enhancementProbability;
     this.equipmentGenerator     = equipmentGenerator;
 }
        public void Setup()
        {
            mockWeaponGenerator = new Mock<IWeaponGenerator>();
            mockCollectionsSelector = new Mock<ICollectionsSelector>();
            mockArmorGenerator = new Mock<IArmorGenerator>();
            mockTreasureGenerator = new Mock<ITreasureGenerator>();
            generator = new ConfigurableIterationGenerator(3);
            equipmentGenerator = new EquipmentGenerator(mockCollectionsSelector.Object, mockWeaponGenerator.Object,
                mockTreasureGenerator.Object, mockArmorGenerator.Object, generator);
            feats = new List<Feat>();
            characterClass = new CharacterClass();
            meleeWeapon = new Item();
            rangedWeapon = new Item();
            baseRangedWeaponTypes = new List<string>();
            armor = new Item();
            treasure = new Treasure();
            race = new Race();
            shieldProficiencyFeats = new List<string>();
            weaponProficiencyFeats = new List<string>();
            npcs = new List<string>();

            characterClass.Level = 9266;
            meleeWeapon.Name = "melee weapon";
            meleeWeapon.ItemType = ItemTypeConstants.Weapon;
            meleeWeapon.Attributes = new[] { AttributeConstants.Melee };
            rangedWeapon.Name = "ranged weapon";
            rangedWeapon.ItemType = ItemTypeConstants.Weapon;
            rangedWeapon.Attributes = new[] { "not melee" };
            armor.Name = "armor";
            armor.ItemType = ItemTypeConstants.Armor;
            baseRangedWeaponTypes.Add("base ranged weapon");
            treasureItem = new Item { Name = "treasure item" };
            treasure.Items = new[] { treasureItem };

            mockWeaponGenerator.Setup(g => g.GenerateFrom(feats, characterClass, race)).Returns(meleeWeapon);
            mockWeaponGenerator.Setup(g => g.GenerateRangedFrom(feats, characterClass, race)).Returns(rangedWeapon);
            mockWeaponGenerator.Setup(g => g.GenerateMeleeFrom(feats, characterClass, race)).Returns(meleeWeapon);
            mockArmorGenerator.Setup(g => g.GenerateArmorFrom(feats, characterClass, race)).Returns(armor);
            mockCollectionsSelector.Setup(s => s.SelectFrom(TableNameConstants.Set.Collection.ItemGroups, It.IsAny<string>())).Returns((String table, String name) => new[] { name });
            mockCollectionsSelector.Setup(s => s.SelectFrom(TableNameConstants.Set.Collection.ItemGroups, rangedWeapon.Name)).Returns(baseRangedWeaponTypes);
            mockTreasureGenerator.Setup(g => g.GenerateAtLevel(9266)).Returns(treasure);
            mockCollectionsSelector.Setup(s => s.SelectFrom(TableNameConstants.Set.Collection.FeatGroups, AttributeConstants.Shield + GroupConstants.Proficiency))
                .Returns(shieldProficiencyFeats);
            mockCollectionsSelector.Setup(s => s.SelectFrom(TableNameConstants.Set.Collection.FeatGroups, ItemTypeConstants.Weapon + GroupConstants.Proficiency))
                .Returns(weaponProficiencyFeats);
            mockCollectionsSelector.Setup(s => s.SelectFrom(TableNameConstants.Set.Collection.ClassNameGroups, GroupConstants.NPCs))
                .Returns(npcs);
        }
 public EquipmentEnhancer(IEquipmentGenerator equipmentGenerator)
 {
     this.equipmentGenerator = equipmentGenerator;
 }
Exemplo n.º 11
0
 public FighterLevelRewardPool(IEquipmentGenerator equipmentGenerator)
 {
     this.equipmentGenerator = equipmentGenerator;
 }
Exemplo n.º 12
0
 public EmpoweredChestRewardPool(IEquipmentGenerator equipmentGenerator)
 {
     this.equipmentGenerator = equipmentGenerator;
 }