Пример #1
0
        //public DbPlayerCharacter GetCharacterByName(string name) {
        //    if (false == string.IsNullOrEmpty(SelectedCharacterId)) {
        //        var character = GetCharacter(SelectedCharacterId);
        //        if(character)
        //    }
        //}

        /// <summary>
        /// Create new character, select it and return new character object
        /// </summary>
        /// <param name="name">Name of character</param>
        /// <param name="level">Level of character</param>
        /// <param name="race">Race of character</param>
        /// <param name="workshop">Home workshop of character</param>
        /// <param name="model">Modules dictionary of character</param>
        /// <param name="exp">Initial exp of character</param>
        /// <returns></returns>
        public DbPlayerCharacter AddCharacter(string name, int race, int workshop, Dictionary <ShipModelSlotType, string> model, int icon)
        {
            if (this.Characters == null)
            {
                this.Characters = new List <DbPlayerCharacter>();
            }

            DbPlayerCharacter character = new DbPlayerCharacter {
                CharacterId   = Guid.NewGuid().ToString(),
                Name          = name,
                Deleted       = false,
                Race          = race,
                Workshop      = workshop,
                Exp           = 0,
                WorldId       = SelectCharacterApplication.Instance.GetStartLocation((Race)race, (Workshop)workshop),
                raceStatus    = (int)RaceStatus.None,
                characterIcon = icon
            };

            character.SetModel(ToHash(model));
            this.Characters.Add(character);
            //select new created character to be selected character
            this.SelectedCharacterId = character.CharacterId;
            //return new character
            return(character);
        }
Пример #2
0
 public Player(DbPlayerCharacter playerInfo)
 {
     Id            = playerInfo.Id;
     Name          = playerInfo.Name;
     Class         = playerInfo.Class;
     EquippedItems = new EquippedItems(playerInfo.EquipedItems);
     CalculateStats();
 }
Пример #3
0
        public void SetCharacterId(string cID)
        {
            characterId = cID;

            if (!string.IsNullOrEmpty(id))
            {
                var player = application.Players.GetExistingPlayer(id);
                mCachedCharacter = player.Data.GetCharacter(characterId);
            }
        }
Пример #4
0
        private static async Task UpdatePlayerDb(DbServer server, LiveUpdate update)
        {
            var updateBuilder = Builders <DbPlayerCharacter> .Update;
            var filterBuilder = Builders <DbPlayerCharacter> .Filter;

            //Get the ID
            uint id = uint.Parse(update.id1);

            //Create updates
            List <UpdateDefinition <DbPlayerCharacter> > updates = new List <UpdateDefinition <DbPlayerCharacter> >();

            updates.Add(updateBuilder.Set("tribe_id", update.tribeId));
            if (update.x != null && update.y != null && update.z != null)
            {
                updates.Add(updateBuilder.Set("pos", new DbVector3
                {
                    x = update.x.Value,
                    y = update.y.Value,
                    z = update.z.Value
                }));
            }

            //Send update
            var result = await Program.conn.content_player_characters.UpdateOneAsync(filterBuilder.Eq("server_id", server.id)& filterBuilder.Eq("ark_id", id), updateBuilder.Combine(updates));

            //Check if this entry even exists
            if (result.MatchedCount == 0 && update.x != null && update.y != null && update.z != null)
            {
                //We'll create a new object with this basic data
                DbPlayerCharacter c = new DbPlayerCharacter
                {
                    server_id = server._id,
                    tribe_id  = update.tribeId,
                    ark_id    = id,
                    pos       = new DbVector3
                    {
                        x = update.x.Value,
                        y = update.y.Value,
                        z = update.z.Value
                    }
                };

                //Insert this
                await Program.conn.content_player_characters.InsertOneAsync(c);
            }
        }
Пример #5
0
        private void CreateTestData()
        {
            var testRogueDb = new DbPlayerCharacter
            {
                Class = new DbGameClass
                {
                    Skills = new List <Skill>
                    {
                        new Skill
                        {
                            CastTime = 0,
                            Cooldown = 1000,
                            Cost     = 20,
                            Id       = 1,
                            Name     = "Backstab",
                            Effects  = new List <Effect>
                            {
                                new DirectDamageEffect
                                {
                                    BonusDamage = 2,
                                    CritChance  = 10,
                                    Id          = 1,
                                    MaxDamage   = 0,
                                    MinDamage   = 0,
                                    Type        = EffectType.DirectDamage,
                                    TargetType  = TargetType.Single
                                }
                            }
                        },
                        new Skill
                        {
                            CastTime = 0,
                            Cooldown = 1000,
                            Cost     = 20,
                            Id       = 3,
                            Name     = "Evade",
                            Effects  = new List <Effect>
                            {
                                new DirectThreatEffect()
                                {
                                    Id         = 3,
                                    MinThreat  = -10,
                                    MaxThreat  = -10,
                                    Type       = EffectType.DirectThreat,
                                    TargetType = TargetType.Aoe
                                }
                            }
                        }
                    },
                    Id        = 1,
                    Name      = "Rogue",
                    MainStat  = StatName.Agility,
                    BaseStats = new BaseStats
                    {
                        Id               = 1,
                        BaseAgility      = 20,
                        BaseStrength     = 10,
                        BaseIntelligence = 10,
                        BaseWisdom       = 10,
                        BaseStamina      = 20
                    },
                    BaseResources = new BaseResources
                    {
                        Id         = 1,
                        BaseHealth = 100
                    }
                },
                EquipedItems = new DbEquipedItems
                {
                    MainHand = new DbWeapon
                    {
                        EquipSlotType   = EquipSlot.MainHand,
                        Id              = 1,
                        ItemRarity      = ItemRarity.Magic,
                        MaxDamage       = 10,
                        MinDamage       = 5,
                        Name            = "Magic Dagger",
                        SwingSpeed      = 1,
                        WeaponEquipType = WeaponEquipType.OneHanded,
                        Stats           = new ItemStats
                        {
                            Agility = 10,
                            Id      = 1
                        }
                    }
                },
                Id        = 1,
                Inventory = new DbInventory
                {
                    Id   = 1,
                    Gold = 100
                },
                Name = "Test Rogue"
            };
            var testRoguePlayer = new Player(testRogueDb);
            var testRogue       =
                new PlayerObject(testRoguePlayer, true)
            {
                CombatConfig = new CombatConfig(testRogueDb.Class.Skills)
            };

            var tesstWarriorDb = new DbPlayerCharacter
            {
                Class = new DbGameClass
                {
                    Skills = new List <Skill>
                    {
                        new Skill
                        {
                            CastTime = 0,
                            Cooldown = 500,
                            Cost     = 20,
                            Id       = 2,
                            Name     = "Taunt",
                            Effects  = new List <Effect>
                            {
                                new DirectThreatEffect()
                                {
                                    Id         = 2,
                                    Type       = EffectType.DirectThreat,
                                    MinThreat  = 20,
                                    MaxThreat  = 20,
                                    TargetType = TargetType.Single
                                }
                            }
                        },
                        new Skill
                        {
                            CastTime = 0,
                            Cooldown = 500,
                            Cost     = 20,
                            Id       = 3,
                            Name     = "Health",
                            Effects  = new List <Effect>
                            {
                                new BuffEffect()
                                {
                                    Id       = 2,
                                    Type     = EffectType.Buff,
                                    Duration = 1000,
                                    Stats    = new BuffStats
                                    {
                                        Health = 50
                                    }
                                }
                            }
                        }
                    },
                    Id        = 2,
                    Name      = "Warrior",
                    MainStat  = StatName.Agility,
                    BaseStats = new BaseStats
                    {
                        Id               = 2,
                        BaseAgility      = 10,
                        BaseStrength     = 20,
                        BaseIntelligence = 10,
                        BaseWisdom       = 10,
                        BaseStamina      = 20
                    },
                    BaseResources = new BaseResources
                    {
                        Id         = 2,
                        BaseHealth = 200
                    }
                },
                EquipedItems = new DbEquipedItems
                {
                    MainHand = new DbWeapon
                    {
                        EquipSlotType   = EquipSlot.MainHand,
                        Id              = 2,
                        ItemRarity      = ItemRarity.Magic,
                        MaxDamage       = 15,
                        MinDamage       = 9,
                        Name            = "Magic Sword",
                        SwingSpeed      = 2,
                        WeaponEquipType = WeaponEquipType.OneHanded,
                        Stats           = new ItemStats
                        {
                            Strength = 10,
                            Id       = 2
                        }
                    }
                },
                Id        = 2,
                Inventory = new DbInventory
                {
                    Id   = 2,
                    Gold = 100
                },
                Name = "Test Warrior"
            };
            var testWarriorPlayer = new Player(tesstWarriorDb);
            var testWarrior       =
                new PlayerObject(testWarriorPlayer, true)
            {
                CombatConfig = new CombatConfig(testWarriorPlayer.Class.Skills)
            };

            var playerList = new List <ICharacterObject> {
                testWarrior, testRogue
            };
            var playerGroup = new CharacterGroup(playerList, testWarrior);

            var testOrcPawnDb = new DbMonster
            {
                Class = new DbGameClass
                {
                    Skills = new List <Skill>
                    {
                        new Skill
                        {
                            CastTime = 0,
                            Cooldown = 100000,
                            Cost     = 20,
                            Id       = 2,
                            Name     = "Taunt",
                            Effects  = new List <Effect>
                            {
                                new DirectThreatEffect()
                                {
                                    Id         = 2,
                                    Type       = EffectType.DirectThreat,
                                    MinThreat  = 20,
                                    MaxThreat  = 20,
                                    TargetType = TargetType.Single
                                }
                            }
                        }
                    },
                    Id        = 2,
                    Name      = "Warrior",
                    MainStat  = StatName.Agility,
                    BaseStats = new BaseStats
                    {
                        Id               = 2,
                        BaseAgility      = 10,
                        BaseStrength     = 20,
                        BaseIntelligence = 10,
                        BaseWisdom       = 10,
                        BaseStamina      = 20
                    },
                    BaseResources = new BaseResources
                    {
                        Id         = 2,
                        BaseHealth = 200
                    }
                },
                Id        = 3,
                Inventory = new DbInventory
                {
                    Id   = 3,
                    Gold = 100
                },
                Name     = "Orc Pawn",
                LootList = new List <PossibleLoot>
                {
                    new PossibleLoot()
                },
                MonsterType          = MonsterType.Common,
                MonsterBaseResources = new BaseResources
                {
                    Id         = 1,
                    BaseHealth = 300
                }
            };

            var testOrcPawnMonster = new Monster(testOrcPawnDb);
            var testOrcPawn        =
                new MonsterObject(testOrcPawnMonster, false)
            {
                CombatConfig = new CombatConfig(testOrcPawnMonster.Class.Skills)
            };

            var monsterList = new List <ICharacterObject> {
                testOrcPawn
            };
            var monsterGroup = new CharacterGroup(monsterList, testOrcPawn);

            _testCombat = new Combat(playerGroup, monsterGroup);
            _testCombat.StartCombat();
        }