Esempio n. 1
0
        public async Task <IActionResult> PutPetItem(int id, PetItem petItem)
        {
            if (id != petItem.Id)
            {
                return(BadRequest());
            }

            _context.Entry(petItem).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!PetItemExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
Esempio n. 2
0
        public async Task <ActionResult <PetItem> > PostPetItem(PetItem petItem)
        {
            _context.PetItems.Add(petItem);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetPetItem", new { id = petItem.Id }, petItem));
        }
Esempio n. 3
0
 public Params(PetItem item)
 {
     for (int i = 0; i < (int)Param.Count; i++)
     {
         param[i] = item.GetParam((Param)i);
     }
 }
Esempio n. 4
0
    private static PetItem CreatePetItem(XmlNode petNode)
    {
        PetItem petItem = new PetItem();

        petItem.SetBase(GetBaseItem(petNode));
        petItem.itemType = BaseItem.ItemType.PET;
        return(petItem);
    }
Esempio n. 5
0
 public void GivePet(PetItem petInfo)
 {
     //if (Name == "ossimc82" || Name == "C453")
     //{
     Pet = new Pet(Manager, petInfo, this);
     Pet.Move(X, Y);
     Owner.EnterWorld(Pet);
     //}
 }
Esempio n. 6
0
        public Pet(RealmManager manager, PetItem petData, Player playerOwner)
            : base(manager, (ushort)petData.Type, true, true)
        {
            rand        = new Random();
            PlayerOwner = playerOwner;
            Info        = petData;

            try
            {
                if (petData.InstanceId != -1)
                {
                    FirstPetLevel = new PetLevel(AbilityType.First,
                                                 Utils.GetEnumByName <Ability>(Utils.GetEnumName <Ability>(petData.Abilities[0].Type)),
                                                 petData.Abilities[0].Points, petData.Abilities[0].Power, this);

                    SecondPetLevel = new PetLevel(AbilityType.Second,
                                                  Utils.GetEnumByName <Ability>(Utils.GetEnumName <Ability>(petData.Abilities[1].Type)),
                                                  petData.Abilities[1].Points, petData.Abilities[1].Power, this);

                    ThirdPetLevel = new PetLevel(AbilityType.Third,
                                                 Utils.GetEnumByName <Ability>(Utils.GetEnumName <Ability>(petData.Abilities[2].Type)),
                                                 petData.Abilities[2].Points, petData.Abilities[2].Power, this);
                    if (playerOwner != null)
                    {
                        using (Database db = new Database())
                            Size = db.GetPetSize(Convert.ToInt32(PlayerOwner.AccountId), petData.InstanceId);
                    }
                    else
                    {
                        Size = 0;
                    }

                    if (Size == 0)
                    {
                        Size = manager.GameData.TypeToPet[(ushort)petData.Type].Size;
                    }

                    PetRarity    = (Rarity)petData.Rarity;
                    PetFamily    = manager.GameData.TypeToPet[(ushort)petData.Type].PetFamily;
                    MaximumLevel = petData.MaxAbilityPower;
                    UpdateNeeded = true;
                }
                Skin   = petData.SkinName;
                SkinId = petData.Skin;
                PetId  = petData.InstanceId;
                IsPet  = true;
            }
            catch (Exception e)
            {
                PlayerOwner?.SendError(
                    $"An error ocurred while loading your pet data, please report this to an Admin: {e.Message}");
            }
        }
Esempio n. 7
0
 // Token: 0x0600284E RID: 10318 RVA: 0x00446448 File Offset: 0x00444648
 public int CompareTo(PetItem obj)
 {
     if (obj.ItemID > this.ItemID)
     {
         return(-1);
     }
     if (obj.ItemID < this.ItemID)
     {
         return(1);
     }
     return(0);
 }
Esempio n. 8
0
    void Update()
    {
        Player player = Utils.ClientLocalPlayer();

        if (!player)
        {
            return;
        }

        // use collider point(s) to also work with big entities
        if (player.target != null && player.target is Npc &&
            Utils.ClosestDistance(player.collider, player.target.collider) <= player.interactionRange)
        {
            Npc npc = (Npc)player.target;

            // revive
            if (itemIndex != -1 && itemIndex < player.inventory.Count &&
                player.inventory[itemIndex].amount > 0 &&
                player.inventory[itemIndex].item.data is PetItem)
            {
                ItemSlot slot     = player.inventory[itemIndex];
                PetItem  itemData = (PetItem)slot.item.data;
                if (itemData.petPrefab != null)
                {
                    itemSlot.GetComponent <Image>().color           = Color.white;
                    itemSlot.GetComponent <Image>().sprite          = slot.item.image;
                    itemSlot.GetComponent <UIShowToolTip>().enabled = true;
                    itemSlot.GetComponent <UIShowToolTip>().text    = slot.ToolTip();
                    costsText.text            = itemData.petPrefab.revivePrice.ToString();
                    reviveButton.interactable = slot.item.petHealth == 0 && player.gold >= itemData.petPrefab.revivePrice;
                    reviveButton.onClick.SetListener(() => {
                        player.CmdNpcRevivePet(itemIndex);
                        itemIndex = -1;
                    });
                }
            }
            else
            {
                itemSlot.GetComponent <Image>().color           = Color.clear;
                itemSlot.GetComponent <Image>().sprite          = null;
                itemSlot.GetComponent <UIShowToolTip>().enabled = false;
                costsText.text            = "0";
                reviveButton.interactable = false;
            }
        }
        else
        {
            panel.SetActive(false);  // hide
        }
        // addon system hooks
        Utils.InvokeMany(typeof(UINpcPetRevive), this, "Update_");
    }
        public Pet(RealmManager manager, PetItem petData, Player playerOwner)
            : base(manager, (ushort)petData.Type, true, true)
        {
            rand        = new Random();
            PlayerOwner = playerOwner;
            Info        = petData;

            try
            {
                if (petData.InstanceId != -1)
                {
                    FirstPetLevel = new PetLevel(AbilityType.First,
                                                 Utils.GetEnumByName <Ability>(Utils.GetEnumName <Ability>(petData.Abilities[0].Type)),
                                                 petData.Abilities[0].Points, petData.Abilities[0].Power, this);

                    SecondPetLevel = new PetLevel(AbilityType.Second,
                                                  Utils.GetEnumByName <Ability>(Utils.GetEnumName <Ability>(petData.Abilities[1].Type)),
                                                  petData.Abilities[1].Points, petData.Abilities[1].Power, this);

                    ThirdPetLevel = new PetLevel(AbilityType.Third,
                                                 Utils.GetEnumByName <Ability>(Utils.GetEnumName <Ability>(petData.Abilities[2].Type)),
                                                 petData.Abilities[2].Points, petData.Abilities[2].Power, this);

                    Size         = manager.GameData.TypeToPet[(ushort)petData.Type].Size;
                    PetRarity    = (Rarity)petData.Rarity;
                    PetFamily    = manager.GameData.TypeToPet[(ushort)petData.Type].PetFamily;
                    MaximumLevel = petData.MaxAbilityPower;
                    UpdateNeeded = true;
                }
                Skin   = petData.SkinName;
                SkinId = petData.Skin;
                PetId  = petData.InstanceId;
                IsPet  = true;

                if (PetRarity == Rarity.Divine) //Change size if wanted.
                {
                    Size = 70;
                }
            }
            catch (Exception e)
            {
                if (PlayerOwner != null)
                {
                    PlayerOwner.SendError(
                        String.Format(
                            "An error ocurred while loading your pet data, please report this to an Admin: {0}",
                            e.Message));
                }
            }
        }
        void Update()
        {
            Player player = Player.localPlayer;

            // use collider point(s) to also work with big entities
            if (player != null &&
                player.Target != null && player.Target is Npc &&
                Utility.Utility.ClosestDistance(player.collider, player.Target.collider) <= player.interactionRange)
            {
                Npc npc = (Npc)player.Target;

                // revive
                if (itemIndex != -1 && itemIndex < player.inventory.Count &&
                    player.inventory[itemIndex].amount > 0 &&
                    player.inventory[itemIndex].item.Data is PetItem)
                {
                    ItemSlot slot     = player.inventory[itemIndex];
                    PetItem  itemData = (PetItem)slot.item.Data;
                    if (itemData.summonPrefab != null)
                    {
                        itemSlot.GetComponent <Image>().color           = Color.white;
                        itemSlot.GetComponent <Image>().sprite          = slot.item.Image;
                        itemSlot.GetComponent <UIShowToolTip>().enabled = true;
                        itemSlot.GetComponent <UIShowToolTip>().text    = slot.ToolTip();
                        itemSlot.dragable         = true;
                        costsText.text            = itemData.revivePrice.ToString();
                        reviveButton.interactable = slot.item.summonedHealth == 0 && player.Money >= itemData.revivePrice;
                        reviveButton.onClick.SetListener(() =>
                        {
                            player.CmdNpcReviveSummonable(itemIndex);
                            itemIndex = -1;
                        });
                    }
                }
                else
                {
                    itemSlot.GetComponent <Image>().color           = Color.clear;
                    itemSlot.GetComponent <Image>().sprite          = null;
                    itemSlot.GetComponent <UIShowToolTip>().enabled = false;
                    itemSlot.dragable         = false;
                    costsText.text            = "0";
                    reviveButton.interactable = false;
                }
            }
            else
            {
                panel.SetActive(false);
            }
        }
Esempio n. 11
0
 // Token: 0x06002B7A RID: 11130 RVA: 0x0047E074 File Offset: 0x0047C274
 public override bool CheckItemRule(ushort id)
 {
     if (this.Type == UIItemFilter.ItemFilterType.ItemID)
     {
         DataManager instance    = DataManager.Instance;
         StoreTbl    recordByKey = instance.StoreData.GetRecordByKey(id);
         return(recordByKey.AddDiamondBuy != 0 && recordByKey.Filter != 2 && recordByKey.ItemID == this.FilterItemID);
     }
     if (this.Type == UIItemFilter.ItemFilterType.Experience && (this.SubType == UIItemFilter._SubType.Pet || this.SubType == UIItemFilter._SubType.PetFormDetail))
     {
         ushort  num     = 0;
         PetItem petItem = PetManager.Instance.FindItemData(id, ref num);
         return(petItem != null && (petItem.EquipKind - 1 == 5 && (petItem.PropertiesInfo[0].Propertieskey == 5 || petItem.PropertiesInfo[0].Propertieskey == 6)));
     }
     return(true);
 }
Esempio n. 12
0
    public void Setup(PetItem item)
    {
        this.item       = item;
        this.Params     = new Params(item);
        MaxHP           = this.Params[Param.HP];
        MaxMP           = this.Params[Param.MP];
        this.Race       = item.Familiar.Race;
        this.Attributes = new Attributes(item.Familiar.Attribute);
        this.Level      = item.level;

        level.text  = $"Lv.{Level}";
        hpText.text = $"{Params[Param.HP]}/{MaxHP}";

        Setup(item.id);
        character.sprite = Resources.LoadAll <Sprite>($"Familiar/{item.Familiar.Image}/face")[0];
        side             = Side.Player;
    }
Esempio n. 13
0
        public Pet(RealmManager manager, PetItem petData, Player playerOwner)
            : base(manager, (ushort)petData.Type, true, true)
        {
            rand = new Random();
            PlayerOwner = playerOwner;
            Info = petData;

            try
            {
                if (petData.InstanceId != -1)
                {
                    FirstPetLevel = new PetLevel(AbilityType.First,
                        Utils.GetEnumByName<Ability>(Utils.GetEnumName<Ability>(petData.Abilities[0].Type)),
                        petData.Abilities[0].Points, petData.Abilities[0].Power, this);

                    SecondPetLevel = new PetLevel(AbilityType.Second,
                        Utils.GetEnumByName<Ability>(Utils.GetEnumName<Ability>(petData.Abilities[1].Type)),
                        petData.Abilities[1].Points, petData.Abilities[1].Power, this);

                    ThirdPetLevel = new PetLevel(AbilityType.Third,
                        Utils.GetEnumByName<Ability>(Utils.GetEnumName<Ability>(petData.Abilities[2].Type)),
                        petData.Abilities[2].Points, petData.Abilities[2].Power, this);

                    Size = manager.GameData.TypeToPet[(ushort)petData.Type].Size;
                    PetRarity = (Rarity)petData.Rarity;
                    PetFamily = manager.GameData.TypeToPet[(ushort)petData.Type].PetFamily;
                    MaximumLevel = petData.MaxAbilityPower;
                    UpdateNeeded = true;
                }
                Skin = petData.SkinName;
                SkinId = petData.Skin;
                PetId = petData.InstanceId;
                IsPet = true;
            }
            catch (Exception e)
            {
                if (PlayerOwner != null)
                    PlayerOwner.SendError(
                        String.Format(
                            "An error ocurred while loading your pet data, please report this to an Admin: {0}",
                            e.Message));
            }
        }
Esempio n. 14
0
        public List <BaseItem> GetAllItemsInNpcBag(byte bag, int npcId)
        {
            DbParameter bagIdParameter = _db.CreateParameter(DbNames.GETALLNPCITEMSBYBAGID_BAGID_PARAMETER, bag);

            bagIdParameter.DbType = DbType.Byte;

            DbParameter characterIdParameter = _db.CreateParameter(DbNames.GETALLNPCITEMSBYBAGID_NPCID_PARAMETER, npcId);

            characterIdParameter.DbType = DbType.Int32;

            List <BaseItem> items = new List <BaseItem>();

            _db.Open();

            DbDataReader reader = _db.ExcecuteReader(DbNames.GETALLNPCITEMSBYBAGID_STOREDPROC, CommandType.StoredProcedure, bagIdParameter, characterIdParameter);

            int ordinalITEM_REFERENCEID        = reader.GetOrdinal(DbNames.ITEM_REFID);
            int ordinalITEM_BTYPE              = reader.GetOrdinal(DbNames.ITEM_BTYPE);
            int ordinalITEM_BKIND              = reader.GetOrdinal(DbNames.ITEM_BKIND);
            int ordinalITEM_VISUALID           = reader.GetOrdinal(DbNames.ITEM_VISUALID);
            int ordinalITEM_CLASS              = reader.GetOrdinal(DbNames.ITEM_CLASS);
            int ordinalITEM_AMOUNT             = reader.GetOrdinal(DbNames.ITEM_AMOUNT);
            int ordinalITEM_PRICE              = reader.GetOrdinal(DbNames.ITEM_PRICE);
            int ordinalITEM_LEVEL              = reader.GetOrdinal(DbNames.ITEM_LEVEL);
            int ordinalITEM_DEX                = reader.GetOrdinal(DbNames.ITEM_DEX);
            int ordinalITEM_STR                = reader.GetOrdinal(DbNames.ITEM_STR);
            int ordinalITEM_STA                = reader.GetOrdinal(DbNames.ITEM_STA);
            int ordinalITEM_ENE                = reader.GetOrdinal(DbNames.ITEM_ENE);
            int ordinalITEM_DURABILITY         = reader.GetOrdinal(DbNames.ITEM_DURABILITY);
            int ordinalITEM_DAMAGE             = reader.GetOrdinal(DbNames.ITEM_DAMAGE);
            int ordinalITEM_DEFENCE            = reader.GetOrdinal(DbNames.ITEM_DEFENCE);
            int ordinalITEM_ATTACKRATING       = reader.GetOrdinal(DbNames.ITEM_ATTACKRATING);
            int ordinalITEM_ATTACKSPEED        = reader.GetOrdinal(DbNames.ITEM_ATTACKSPEED);
            int ordinalITEM_ATTACKRANGE        = reader.GetOrdinal(DbNames.ITEM_ATTACKRANGE);
            int ordinalITEM_INCMAXLIFE         = reader.GetOrdinal(DbNames.ITEM_INCMAXLIFE);
            int ordinalITEM_INCMAXMANA         = reader.GetOrdinal(DbNames.ITEM_INCMAXMANA);
            int ordinalITEM_LIFEREGEN          = reader.GetOrdinal(DbNames.ITEM_LIFEREGEN);
            int ordinalITEM_MANAREGEN          = reader.GetOrdinal(DbNames.ITEM_MANAREGEN);
            int ordinalITEM_CRITICAL           = reader.GetOrdinal(DbNames.ITEM_CRITICAL);
            int ordinalITEM_TOMAPID            = reader.GetOrdinal(DbNames.ITEM_TOMAPID);
            int ordinalITEM_IMBUERATE          = reader.GetOrdinal(DbNames.ITEM_IMBUERATE);
            int ordinalITEM_IMBUEINCREASE      = reader.GetOrdinal(DbNames.ITEM_IMBUEINCREASE);
            int ordinalITEM_BOOKSKILLID        = reader.GetOrdinal(DbNames.ITEM_BOOKSKILLID);
            int ordinalITEM_BOOKSKILLLEVEL     = reader.GetOrdinal(DbNames.ITEM_BOOKSKILLLEVEL);
            int ordinalITEM_BOOKSKILLDATA      = reader.GetOrdinal(DbNames.ITEM_BOOKSKILLDATA);
            int ordinalITEM_MAXPOLISHTRIES     = reader.GetOrdinal(DbNames.ITEM_MAXPOLISHTRIES);
            int ordinalITEM_MAXIMBUETRIES      = reader.GetOrdinal(DbNames.ITEM_MAXIMBUES);
            int ordinalITEM_DAMAGEABSORB       = reader.GetOrdinal(DbNames.ITEM_DAMAGEABSORB);
            int ordinalITEM_DEFENSEABSORB      = reader.GetOrdinal(DbNames.ITEM_DEFENSEABSORB);
            int ordinalITEM_ATTACKRATINGABSORB = reader.GetOrdinal(DbNames.ITEM_ATTACKRATINGABSORB);
            int ordinalITEM_LIFEABSORB         = reader.GetOrdinal(DbNames.ITEM_LIFEABSORB);
            int ordinalITEM_BAG                = reader.GetOrdinal(DbNames.ITEM_BAG);
            int ordinalITEM_SLOT               = reader.GetOrdinal(DbNames.ITEM_SLOT);
            int ordinalITEM_SIZEX              = reader.GetOrdinal(DbNames.ITEM_SIZEX);
            int ordinalITEM_SIZEY              = reader.GetOrdinal(DbNames.ITEM_SIZEY);

            while (reader.Read())
            {
                BaseItem b = null;

                int BType = reader.GetByte(ordinalITEM_BTYPE);
                int BKind = reader.GetByte(ordinalITEM_BKIND);



                if (BType == (byte)bType.Weapon || BType == (byte)bType.Clothes || BType == (byte)bType.Hat || BType == (byte)bType.Necklace ||
                    BType == (byte)bType.Ring || BType == (byte)bType.Shoes || BType == (byte)bType.Cape || BType == (byte)bType.Mirror)
                {
                    if (BKind == (byte)bKindWeapons.Sword && BType == (byte)bType.Weapon)
                    {
                        b = new Sword();
                    }
                    if (BKind == (byte)bKindWeapons.Blade && BType == (byte)bType.Weapon)
                    {
                        b = new Blade();
                    }
                    if (BKind == (byte)bKindWeapons.Fan && BType == (byte)bType.Weapon)
                    {
                        b = new Fan();
                    }
                    if (BKind == (byte)bKindWeapons.Brush && BType == (byte)bType.Weapon)
                    {
                        b = new Brush();
                    }
                    if (BKind == (byte)bKindWeapons.Claw && BType == (byte)bType.Weapon)
                    {
                        b = new Claw();
                    }
                    if (BKind == (byte)bKindWeapons.Axe && BType == (byte)bType.Weapon)
                    {
                        b = new Axe();
                    }
                    if (BKind == (byte)bKindWeapons.Talon && BType == (byte)bType.Weapon)
                    {
                        b = new Talon();
                    }
                    if (BKind == (byte)bKindWeapons.Tonfa && BType == (byte)bType.Weapon)
                    {
                        b = new Tonfa();
                    }
                    if (BKind == (byte)bKindWeapons.Hammer && BType == (byte)bType.Weapon)
                    {
                        b = new Hammer();
                    }
                    if (BKind == (byte)bKindArmors.SwordMan && BType == (byte)bType.Clothes)
                    {
                        b = new Clothes();
                    }
                    if (BKind == (byte)bKindArmors.Mage && BType == (byte)bType.Clothes)
                    {
                        b = new Dress();
                    }
                    if (BKind == (byte)bKindArmors.Warrior && BType == (byte)bType.Clothes)
                    {
                        b = new Armor();
                    }
                    if (BKind == (byte)bKindArmors.GhostFighter && BType == (byte)bType.Clothes)
                    {
                        b = new LeatherClothes();
                    }
                    if (BKind == (byte)bKindHats.SwordMan && BType == (byte)bType.Hat)
                    {
                        b = new Hood();
                    }
                    if (BKind == (byte)bKindHats.Mage && BType == (byte)bType.Hat)
                    {
                        b = new Tiara();
                    }
                    if (BKind == (byte)bKindHats.Warrior && BType == (byte)bType.Hat)
                    {
                        b = new Helmet();
                    }
                    if (BKind == (byte)bKindHats.GhostFighter && BType == (byte)bType.Hat)
                    {
                        b = new Hat();
                    }
                    if (BKind == (byte)bKindHats.SwordMan && BType == (byte)bType.Shoes)
                    {
                        b = new SmBoots();
                    }
                    if (BKind == (byte)bKindHats.Mage && BType == (byte)bType.Shoes)
                    {
                        b = new MageBoots();
                    }
                    if (BKind == (byte)bKindHats.Warrior && BType == (byte)bType.Shoes)
                    {
                        b = new WarriorShoes();
                    }
                    if (BKind == (byte)bKindHats.GhostFighter && BType == (byte)bType.Shoes)
                    {
                        b = new GhostFighterShoes();
                    }
                    if (BKind == 0 && BType == (byte)bType.Ring)
                    {
                        b = new Ring();
                    }
                    if (BKind == 0 && BType == (byte)bType.Necklace)
                    {
                        b = new Necklace();
                    }
                    if (BType == (byte)bType.Cape)
                    {
                        b = new Cape();
                        Cape c = b as Cape;
                        c.MaxPolishImbueTries = reader.GetInt16(ordinalITEM_MAXPOLISHTRIES);
                    }
                    if (BType == (byte)bType.Mirror)
                    {
                        // bkind 4 = mirror, 0 = jar
                        b = new Mirror();
                        Mirror m = b as Mirror;

                        m.LifeAbsorb         = reader.GetInt16(ordinalITEM_LIFEABSORB);
                        m.DamageAbsorb       = reader.GetInt16(ordinalITEM_DAMAGEABSORB);
                        m.DefenseAbsorb      = reader.GetInt16(ordinalITEM_DEFENSEABSORB);
                        m.AttackRatingAbsorb = reader.GetInt16(ordinalITEM_ATTACKRATINGABSORB);
                    }


                    Equipment e = b as Equipment;
                    e.RequiredLevel     = reader.GetInt16(ordinalITEM_LEVEL);
                    e.RequiredDexterity = reader.GetInt16(ordinalITEM_DEX);
                    e.RequiredStrength  = reader.GetInt16(ordinalITEM_STR);
                    e.RequiredStamina   = reader.GetInt16(ordinalITEM_STA);
                    e.RequiredEnergy    = reader.GetInt16(ordinalITEM_ENE);
                    e.Durability        = reader.GetInt32(ordinalITEM_DURABILITY);
                    e.MaxDurability     = e.Durability;
                    e.Damage            = reader.GetInt32(ordinalITEM_DAMAGE);
                    e.Defence           = reader.GetInt32(ordinalITEM_DEFENCE);
                    e.AttackRating      = reader.GetInt32(ordinalITEM_ATTACKRATING);
                    e.AttackSpeed       = reader.GetInt16(ordinalITEM_ATTACKSPEED);
                    e.AttackRange       = reader.GetInt16(ordinalITEM_ATTACKRANGE);
                    e.IncMaxLife        = reader.GetInt16(ordinalITEM_INCMAXLIFE);
                    e.IncMaxMana        = reader.GetInt16(ordinalITEM_INCMAXMANA);
                    e.IncLifeRegen      = reader.GetInt16(ordinalITEM_LIFEREGEN);
                    e.IncManaRegen      = reader.GetInt16(ordinalITEM_MANAREGEN);
                    e.Critical          = reader.GetInt16(ordinalITEM_CRITICAL);
                    e.MaxImbueTries     = reader.GetByte(ordinalITEM_MAXIMBUETRIES);
                }

                if (BType == (byte)bType.ImbueItem)
                {
                    if (BKind == (byte)bKindStones.Black)
                    {
                        b = new Black();
                    }
                    if (BKind == (byte)bKindStones.White)
                    {
                        b = new White();
                    }
                    if (BKind == (byte)bKindStones.Red)
                    {
                        b = new Red();
                    }
                    if (BKind == (byte)bKindStones.Dragon)
                    {
                        b = new Dragon();
                    }
                    if (BKind == (byte)bKindStones.RbItem)
                    {
                        b = new RbHoleItem();
                    }

                    ImbueItem im = b as ImbueItem;
                    im.ImbueChance   = reader.GetInt16(ordinalITEM_IMBUERATE);
                    im.IncreaseValue = reader.GetInt16(ordinalITEM_IMBUEINCREASE);
                }

                if (BType == (byte)bType.Potion)
                {
                    if (BKind == (byte)bKindPotions.Normal)
                    {
                        b = new Potion();
                    }
                    if (BKind == (byte)bKindPotions.Elixir)
                    {
                        b = new Elixir();
                    }

                    PotionItem pot = b as PotionItem;
                    pot.HealHp   = reader.GetInt16(ordinalITEM_INCMAXLIFE);
                    pot.HealMana = reader.GetInt16(ordinalITEM_INCMAXMANA);
                }
                if (BType == (byte)bType.Book)
                {
                    if (BKind == (byte)bKindBooks.SoftBook)
                    {
                        b = new SoftBook();
                    }
                    if (BKind == (byte)bKindBooks.HardBook)
                    {
                        b = new HardBook();
                    }
                    if (BKind == (byte)bKindBooks.RebirdBook)
                    {
                        b = new RebirthBook();
                    }
                    if (BKind == (byte)bKindBooks.FourthBook)
                    {
                        b = new FourthBook();
                    }
                    if (BKind == (byte)bKindBooks.FeSkillBook)
                    {
                        b = new FeSkillBook();
                    }
                    if (BKind == (byte)bKindBooks.FeBook)
                    {
                        b = new FiveElementBook();
                    }
                    if (BKind == (byte)bKindBooks.FocusBook)
                    {
                        b = new FocusBook();
                    }

                    BookItem book = b as BookItem;
                    book.RequiredClass = reader.GetByte(ordinalITEM_CLASS);
                    book.RequiredLevel = reader.GetInt16(ordinalITEM_LEVEL);
                    book.SkillID       = reader.GetInt32(ordinalITEM_BOOKSKILLID);
                    book.SkillLevel    = reader.GetByte(ordinalITEM_BOOKSKILLLEVEL);
                    book.SkillData     = reader.GetInt32(ordinalITEM_BOOKSKILLDATA);
                }
                if (BType == (byte)bType.Bead)
                {
                    if (BKind == (byte)bKindBeads.Normal)
                    {
                        b = new Bead();
                    }
                    BeadItem bead = b as BeadItem;
                    bead.ToMapID = reader.GetInt32(ordinalITEM_TOMAPID);
                }
                if (BType == (byte)bType.StoreTag)
                {
                    b = new StoreTag();

                    StoreTag tag = b as StoreTag;
                    tag.TimeLeft = (short)reader.GetInt32(ordinalITEM_DURABILITY);
                    tag.TimeMax  = tag.TimeLeft;
                }
                if (BType == (byte)bType.PetItem)
                {
                    if (BKind == (byte)bKindPetItems.Taming)
                    {
                        b = new TameItem();
                    }
                    if (BKind == (byte)bKindPetItems.Food)
                    {
                        b = new PetFood();
                    }
                    if (BKind == (byte)bKindPetItems.Potion)
                    {
                        b = new PetPotion();
                    }
                    if (BKind == (byte)bKindPetItems.Resurect)
                    {
                        b = new PetResurrectItem();
                    }

                    PetItem p = b as PetItem;
                    p.TameChance       = reader.GetInt16(ordinalITEM_IMBUERATE);
                    p.DecreaseWildness = reader.GetInt16(ordinalITEM_IMBUEINCREASE);
                    p.HealLife         = reader.GetInt16(ordinalITEM_INCMAXLIFE);
                }

                b.ReferenceID   = reader.GetInt16(ordinalITEM_REFERENCEID);
                b.VisualID      = reader.GetInt16(ordinalITEM_VISUALID);
                b.Bag           = reader.GetByte(ordinalITEM_BAG);
                b.Slot          = reader.GetByte(ordinalITEM_SLOT);
                b.bType         = reader.GetByte(ordinalITEM_BTYPE);
                b.bKind         = reader.GetByte(ordinalITEM_BKIND);
                b.RequiredClass = reader.GetByte(ordinalITEM_CLASS);
                b.Amount        = reader.GetInt16(ordinalITEM_AMOUNT);
                b.SizeX         = reader.GetByte(ordinalITEM_SIZEX);
                b.SizeY         = reader.GetByte(ordinalITEM_SIZEY);
                b.Price         = reader.GetInt32(ordinalITEM_PRICE);

                items.Add(b);
            }

            reader.Close();
            _db.Close();

            return(items);
        }
Esempio n. 15
0
        public override void OnUserSay(RoomUser RoomUser, string string_0)
        {
            RoomUser Pet = base.GetRoomUser();

            //TODO: Pet Commands :D
            if (Pet.RoomBot.RoomUser_0 == null)
            {
                if (string_0.ToLower().Equals(Pet.PetData.Name.ToLower()))
                {
                    Pet.method_9(Rotation.GetRotation(Pet.X, Pet.Y, RoomUser.X, RoomUser.Y));
                }
                else
                {
                    if (string_0.ToLower().StartsWith(Pet.PetData.Name.ToLower() + " ") && RoomUser.GetClient().GetHabbo().Username.ToLower() == base.GetRoomUser().PetData.OwnerName.ToLower())
                    {
                        string key = string_0.Substring(Pet.PetData.Name.ToLower().Length + 1);
                        if ((Pet.PetData.Energy >= 10 && this.method_4() < 6) || Pet.PetData.Level >= 15)
                        {
                            Pet.Statusses.Clear();
                            if (!Essential.GetGame().GetRoleManager().dictionary_5.ContainsKey(key))
                            {
                                string[] array = new string[]
                                {
                                    EssentialEnvironment.GetExternalText("pet_response_confused1"),
                                    EssentialEnvironment.GetExternalText("pet_response_confused2"),
                                    EssentialEnvironment.GetExternalText("pet_response_confused3"),
                                    EssentialEnvironment.GetExternalText("pet_response_confused4"),
                                    EssentialEnvironment.GetExternalText("pet_response_confused5"),
                                    EssentialEnvironment.GetExternalText("pet_response_confused6"),
                                    EssentialEnvironment.GetExternalText("pet_response_confused7")
                                };
                                Random random = new Random();
                                Pet.HandleSpeech(null, array[random.Next(0, array.Length - 1)], false);
                            }
                            else
                            {
                                switch (Essential.GetGame().GetRoleManager().dictionary_5[key])
                                {
                                case 0:
                                    // Remove Status
                                    RemovePetStatus();

                                    this.SpeechTimer = 0;
                                    this.ActionTimer = 0;
                                    this.FollowType  = FollowType.None;

                                    // Add Status
                                    Pet.Statusses.Add("sit", TextHandling.GetString(Pet.double_0));
                                    break;

                                case 1:
                                    this.ActionTimer = 25;
                                    this.FollowType  = FollowType.None;

                                    // Remove Status
                                    RemovePetStatus();

                                    Pet.PetData.AddExpirience(10, -10);     // Give XP

                                    // Add Status
                                    Pet.Statusses.Add("sit", TextHandling.GetString(Pet.double_0));
                                    break;

                                case 2:
                                    this.ActionTimer = 30;
                                    this.FollowType  = FollowType.None;

                                    // Remove Status
                                    RemovePetStatus();

                                    Pet.PetData.AddExpirience(10, -10);     // Give XP

                                    // Add Status
                                    Pet.Statusses.Add("lay", TextHandling.GetString(Pet.double_0));
                                    break;

                                case 3:
                                    this.ActionTimer = 30;
                                    this.FollowType  = FollowType.None;

                                    RemovePetStatus();

                                    int NewX = RoomUser.X;
                                    int NewY = RoomUser.Y;

                                    #region Rotation
                                    if (RoomUser.BodyRotation == 4)
                                    {
                                        NewY = RoomUser.Y + 1;
                                    }
                                    else if (RoomUser.BodyRotation == 0)
                                    {
                                        NewY = RoomUser.Y - 1;
                                    }
                                    else if (RoomUser.BodyRotation == 6)
                                    {
                                        NewX = RoomUser.X - 1;
                                    }
                                    else if (RoomUser.BodyRotation == 2)
                                    {
                                        NewX = RoomUser.X + 1;
                                    }
                                    else if (RoomUser.BodyRotation == 3)
                                    {
                                        NewX = RoomUser.X + 1;
                                        NewY = RoomUser.Y + 1;
                                    }
                                    else if (RoomUser.BodyRotation == 1)
                                    {
                                        NewX = RoomUser.X + 1;
                                        NewY = RoomUser.Y - 1;
                                    }
                                    else if (RoomUser.BodyRotation == 7)
                                    {
                                        NewX = RoomUser.X - 1;
                                        NewY = RoomUser.Y - 1;
                                    }
                                    else if (RoomUser.BodyRotation == 5)
                                    {
                                        NewX = RoomUser.X - 1;
                                        NewY = RoomUser.Y + 1;
                                    }
                                    #endregion

                                    Pet.PetData.AddExpirience(11, -10);     // Give XP

                                    Pet.MoveTo(NewX, NewY);
                                    break;

                                case 4:
                                    this.ActionTimer = 10;
                                    this.FollowType  = FollowType.None;

                                    //Remove Status
                                    RemovePetStatus();

                                    Pet.PetData.AddExpirience(15, -13);     // Give XP

                                    Pet.Statusses.Add("beg", TextHandling.GetString(Pet.double_0));
                                    break;

                                case 5:
                                    this.ActionTimer = 30;
                                    this.FollowType  = FollowType.None;

                                    // Remove Status
                                    RemovePetStatus();

                                    // Add Status
                                    Pet.Statusses.Add("ded", TextHandling.GetString(Pet.double_0));

                                    Pet.PetData.AddExpirience(20, -18);     // Give XP
                                    break;

                                case 6:
                                    this.ActionTimer = 120;
                                    this.FollowType  = FollowType.None;

                                    // Remove Status
                                    RemovePetStatus();

                                    // Add Status
                                    Pet.Statusses.Add("sit", TextHandling.GetString(Pet.double_0));

                                    Pet.PetData.AddExpirience(20, -18);     // Give XP

                                    Pet.MoveTo(Pet.X, Pet.Y);
                                    break;

                                case 7:
                                    this.ActionTimer = 120;
                                    this.FollowType  = FollowType.Normal;
                                    this.FollowUser  = RoomUser;

                                    Pet.PetData.AddExpirience(30, -30);     // Give XP

                                    this.PetFollowUser(RoomUser, Pet, FollowType.Normal);
                                    break;

                                case 8:
                                    //Stand
                                    break;

                                case 9:
                                    this.ActionTimer = 5;
                                    this.FollowType  = FollowType.None;

                                    // Remove Status
                                    RemovePetStatus();

                                    // Add Status
                                    Pet.Statusses.Add("jmp", TextHandling.GetString(Pet.double_0));

                                    Pet.PetData.AddExpirience(35, -30);     // Give XP
                                    break;

                                case 10:
                                    // Remove Status
                                    RemovePetStatus();

                                    Pet.PetData.AddExpirience(35, -30);     // Give XP

                                    this.SpeechTimer = 2;
                                    this.FollowType  = FollowType.None;
                                    break;

                                case 11:
                                    //Play
                                    break;

                                case 12:
                                    // Remove Status
                                    RemovePetStatus();

                                    Pet.PetData.AddExpirience(35, -30);     // Give XP

                                    this.SpeechTimer = 120;
                                    this.FollowType  = FollowType.None;
                                    break;

                                case 13:
                                    //Nest Pesä

                                    this.ActionTimer = 30;
                                    List <RoomItem> Nests = new List <RoomItem>();
                                    foreach (RoomItem PetItem in this.GetRoomUser().GetRoom().Hashtable_0.Values)
                                    {
                                        if (PetItem.GetBaseItem().InteractionType.ToLower() == "pet_nest")
                                        {
                                            Nests.Add(PetItem);
                                        }
                                    }

                                    if (Nests.Count == 0)
                                    {
                                        return;
                                    }
                                    int PetNX = Nests[new Random().Next(0, Nests.Count - 1)].GetX;
                                    int PetNY = Nests[new Random().Next(0, Nests.Count - 1)].Int32_1;
                                    Pet.MoveTo(PetNX, PetNY);

                                    Nests.Clear();
                                    Nests = null;

                                    Pet.PetData.AddExpirience(15, -10);      // Give XP

                                    break;

                                case 14:
                                    //Drink

                                    this.ActionTimer = 30;
                                    List <RoomItem> Drinks = new List <RoomItem>();
                                    foreach (RoomItem PetItem in this.GetRoomUser().GetRoom().Hashtable_0.Values)
                                    {
                                        if (PetItem.GetBaseItem().InteractionType.ToLower() == "pet_drink")
                                        {
                                            Drinks.Add(PetItem);
                                        }
                                    }

                                    if (Drinks.Count == 0)
                                    {
                                        return;
                                    }
                                    int PetDX = Drinks[new Random().Next(0, Drinks.Count - 1)].GetX;
                                    int PetDY = Drinks[new Random().Next(0, Drinks.Count - 1)].Int32_1;
                                    Pet.MoveTo(PetDX, PetDY);

                                    Drinks.Clear();
                                    Drinks = null;

                                    Pet.PetData.AddExpirience(25, -10);      // Give XP

                                    break;

                                case 15:
                                    this.ActionTimer = 120;
                                    this.FollowType  = FollowType.Left;
                                    this.FollowUser  = RoomUser;

                                    Pet.PetData.AddExpirience(35, -30);     // Give XP

                                    this.PetFollowUser(RoomUser, Pet, FollowType.Left);
                                    break;

                                case 16:
                                    this.FollowType = FollowType.Right;
                                    this.FollowUser = RoomUser;

                                    Pet.PetData.AddExpirience(35, -30);     // Give XP

                                    this.PetFollowUser(RoomUser, Pet, FollowType.Right);
                                    break;

                                case 17:
                                    //Play football
                                    break;

                                case 24:
                                    //Move forwar
                                    break;

                                case 25:
                                    //Turn left
                                    break;

                                case 26:
                                    //Turn right
                                    break;

                                case 43:
                                    //Eat
                                    break;
                                }
                            }
                        }
                        else
                        {
                            string[] array2 = new string[]
                            {
                                EssentialEnvironment.GetExternalText("pet_response_sleeping1"),
                                EssentialEnvironment.GetExternalText("pet_response_sleeping2"),
                                EssentialEnvironment.GetExternalText("pet_response_sleeping3"),
                                EssentialEnvironment.GetExternalText("pet_response_sleeping4"),
                                EssentialEnvironment.GetExternalText("pet_response_sleeping5")
                            };
                            string[] array3 = new string[]
                            {
                                EssentialEnvironment.GetExternalText("pet_response_refusal1"),
                                EssentialEnvironment.GetExternalText("pet_response_refusal2"),
                                EssentialEnvironment.GetExternalText("pet_response_refusal3"),
                                EssentialEnvironment.GetExternalText("pet_response_refusal4"),
                                EssentialEnvironment.GetExternalText("pet_response_refusal5")
                            };
                            Pet.int_10 = Pet.int_12;
                            Pet.int_11 = Pet.int_13;
                            Pet.Statusses.Clear();
                            if (Pet.PetData.Energy < 10)
                            {
                                Random random2 = new Random();
                                Pet.HandleSpeech(null, array2[random2.Next(0, array2.Length - 1)], false);
                                if (Pet.PetData.Type != 13u)
                                {
                                    Pet.Statusses.Add("lay", Pet.double_0.ToString());
                                }
                                else
                                {
                                    Pet.Statusses.Add("lay", (Pet.double_0 - 1.0).ToString());
                                }
                                this.SpeechTimer = 25;
                                this.ActionTimer = 20;
                                base.GetRoomUser().PetData.PetEnergy(25);
                            }
                            else
                            {
                                Random random2 = new Random();
                                Pet.HandleSpeech(null, array3[random2.Next(0, array3.Length - 1)], false);
                            }
                        }
                        Pet.UpdateNeeded = true;
                    }
                }
            }
        }
Esempio n. 16
0
 public void GivePet(PetItem petInfo)
 {
     Pet = new Pet(Manager, petInfo, this);
     Pet.Move(X, Y);
     Owner.EnterWorld(Pet);
 }
Esempio n. 17
0
    // Token: 0x06000590 RID: 1424 RVA: 0x00078510 File Offset: 0x00076710
    public int PetBagCompare(ushort x, ushort y)
    {
        PetItem itemData  = PetManager.Instance.GetItemData((int)x);
        PetItem itemData2 = PetManager.Instance.GetItemData((int)y);

        if (itemData != null && itemData2 == null)
        {
            return(-1);
        }
        if (itemData == null && itemData2 != null)
        {
            return(1);
        }
        if (itemData == null && itemData2 == null)
        {
            return(0);
        }
        byte b  = itemData.EquipKind;
        byte b2 = itemData2.EquipKind;

        if (b == 0)
        {
            b = 29;
        }
        else if (b <= 30)
        {
            b -= 1;
        }
        else if (b <= 30)
        {
            b -= 6;
        }
        if (b2 == 0)
        {
            b2 = 29;
        }
        else if (b2 <= 30)
        {
            b2 -= 1;
        }
        else if (b2 <= 30)
        {
            b2 -= 6;
        }
        if (b < b2)
        {
            return(-1);
        }
        if (b > b2)
        {
            return(1);
        }
        EItemType eitemType = (EItemType)b;

        if (eitemType != EItemType.EIT_Consumables)
        {
            if (eitemType != EItemType.EIT_CaseByCase)
            {
                if (eitemType != EItemType.EIT_MaterialTreasureBox)
                {
                    if (eitemType == EItemType.EIT_EnhanceStone)
                    {
                        if (itemData.Quantity < itemData2.Quantity)
                        {
                            return(1);
                        }
                        if (itemData.Quantity > itemData2.Quantity)
                        {
                            return(-1);
                        }
                    }
                }
                else
                {
                    if (itemData.SyntheticParts[0].SyntheticItem < itemData2.SyntheticParts[0].SyntheticItem)
                    {
                        return(1);
                    }
                    if (itemData.SyntheticParts[0].SyntheticItem > itemData2.SyntheticParts[0].SyntheticItem)
                    {
                        return(-1);
                    }
                    if (itemData.Color < itemData2.Color)
                    {
                        return(1);
                    }
                    if (itemData.Color > itemData2.Color)
                    {
                        return(-1);
                    }
                    if (itemData.ItemID < itemData2.ItemID)
                    {
                        return(1);
                    }
                    if (itemData.ItemID > itemData2.ItemID)
                    {
                        return(-1);
                    }
                }
            }
            else
            {
                if (itemData.PropertiesInfo[0].Propertieskey < itemData2.PropertiesInfo[0].Propertieskey)
                {
                    return(-1);
                }
                if (itemData.PropertiesInfo[0].Propertieskey > itemData2.PropertiesInfo[0].Propertieskey)
                {
                    return(1);
                }
                if (itemData.Color < itemData2.Color)
                {
                    return(-1);
                }
                if (itemData.Color > itemData2.Color)
                {
                    return(1);
                }
            }
        }
        else
        {
            if (itemData.PropertiesInfo[0].PropertiesValue < itemData2.PropertiesInfo[0].PropertiesValue)
            {
                return(-1);
            }
            if (itemData.PropertiesInfo[0].PropertiesValue > itemData2.PropertiesInfo[0].PropertiesValue)
            {
                return(1);
            }
        }
        if (itemData.ItemID < itemData2.ItemID)
        {
            return(-1);
        }
        if (itemData.ItemID > itemData2.ItemID)
        {
            return(1);
        }
        return(0);
    }
Esempio n. 18
0
 public void CreatePet(Account acc, PetItem item)
 {
     MySqlCommand cmd = CreateQuery();
     cmd.CommandText = "SELECT COUNT(petId) FROM pets WHERE petId=@petId AND accId=@accId;";
     cmd.Parameters.AddWithValue("@accId", acc.AccountId);
     cmd.Parameters.AddWithValue("@petId", item.InstanceId);
     if ((int)(long)cmd.ExecuteScalar() == 0)
     {
         //Not finished yet.
         cmd = CreateQuery();
         cmd.CommandText =
             @"INSERT INTO pets(accId, petId, objType, skinName, skin, rarity, maxLevel, abilities, levels, xp)
     VALUES(@accId, @petId, @objType, @skinName, @skin, @rarity, @maxLevel, @abilities, @levels, @xp);";
         cmd.Parameters.AddWithValue("@accId", acc.AccountId);
         cmd.Parameters.AddWithValue("@petId", item.InstanceId);
         cmd.Parameters.AddWithValue("@objType", item.Type);
         cmd.Parameters.AddWithValue("@skinName", item.SkinName);
         cmd.Parameters.AddWithValue("@skin", item.Skin);
         cmd.Parameters.AddWithValue("@rarity", item.Rarity);
         cmd.Parameters.AddWithValue("@maxLevel", item.MaxAbilityPower);
         cmd.Parameters.AddWithValue("@abilities",
             String.Format("{0}, {1}, {2}", item.Abilities[0].Type, item.Abilities[1].Type, item.Abilities[2].Type));
         cmd.Parameters.AddWithValue("@levels",
             String.Format("{0}, {1}, {2}", item.Abilities[0].Power, item.Abilities[1].Power, item.Abilities[2].Power));
         cmd.Parameters.AddWithValue("@xp",
             String.Format("{0}, {1}, {2}", item.Abilities[0].Points, item.Abilities[1].Points, item.Abilities[2].Points));
         try
         {
             cmd.ExecuteNonQuery();
         }
         catch (Exception ex)
         {
             Console.WriteLine(ex);
         }
     }
 }
Esempio n. 19
0
        public static async void Create(RealmManager manager, Player player, Item egg)
        {
            await manager.Database.DoActionAsync(db =>
            {
                PetStruct petStruct = GetPetStruct(manager, egg.Family, (Rarity)egg.Rarity);
                PetSkin skin = manager.GameData.IdToPetSkin[petStruct.DefaultSkin];

                PetItem item = new PetItem
                {
                    InstanceId = db.GetNextPetId(player.AccountId),
                    Rarity = (int)egg.Rarity,
                    Family = egg.Family.ToString(),
                    SkinName = skin.DisplayId,
                    Skin = skin.ObjectType,
                    Type = petStruct.ObjectType,
                    Abilities = GetPetAbilites(egg, petStruct),
                };

                switch (item.Rarity)
                {
                    case 1:
                        item.MaxAbilityPower = 50;
                        item.Abilities[0].Power = 30;
                        item.Abilities[0].Points = 2080;
                        item.Abilities[1].Power = 11;
                        item.Abilities[1].Points = 290;
                        item.Abilities[2].Power = 0;
                        item.Abilities[2].Points = 0;
                        break;

                    case 2:
                        item.MaxAbilityPower = 70;
                        item.Abilities[0].Power = 50;
                        item.Abilities[0].Points = 10607;
                        item.Abilities[1].Power = 30;
                        item.Abilities[1].Points = 2080;
                        item.Abilities[2].Power = 0;
                        item.Abilities[2].Points = 0;
                        break;

                    case 3:
                        item.MaxAbilityPower = 90;
                        item.Abilities[0].Power = 70;
                        item.Abilities[0].Points = 50355;
                        item.Abilities[1].Power = 50;
                        item.Abilities[1].Points = 10607;
                        item.Abilities[2].Power = 30;
                        item.Abilities[2].Points = 2080;
                        break;

                    case 4:
                        item.MaxAbilityPower = 100;
                        item.Abilities[0].Power = 90;
                        item.Abilities[0].Points = 235610;
                        item.Abilities[1].Power = 70;
                        item.Abilities[1].Points = 50354;
                        item.Abilities[2].Power = 50;
                        item.Abilities[2].Points = 10607;
                        break;

                    default:
                        item.MaxAbilityPower = 30;
                        item.Abilities[0].Power = 1;
                        item.Abilities[0].Points = 0;
                        item.Abilities[1].Power = 0;
                        item.Abilities[1].Points = 0;
                        item.Abilities[2].Power = 0;
                        item.Abilities[2].Points = 0;
                        break;
                }

                Pet pet = new Pet(manager, item, null);
                int x;
                int y;
                Random rand = new Random((int)DateTime.Now.Ticks);
                do
                {
                    x = rand.Next(0, player.Owner.Map.Width);
                    y = rand.Next(0, player.Owner.Map.Height);
                } while (player.Owner.Map[x, y].Region != TileRegion.Spawn);
                pet.Move(x + 0.5f, y + 0.5f);
                db.CreatePet(player.Client.Account, item);
                player.Owner.EnterWorld(pet);
                player.Client.SendPacket(new HatchEggPacket
                {
                    PetName = skin.DisplayId,
                    PetSkinId = skin.ObjectType
                });
                player.Client.SendPacket(new UpdatePacket
                {
                    Tiles = new UpdatePacket.TileData[0],
                    NewObjects = new ObjectDef[1] { pet.ToDefinition() },
                    RemovedObjectIds = new int[0]
                });
            });
        }
Esempio n. 20
0
        public static void Create(RealmManager manager, Player player, Item egg)
        {
            manager.Database.AddDatabaseOperation(db =>
            {
                PetStruct petStruct = GetPetStruct(manager, egg.Family, (Rarity)egg.Rarity);
                PetSkin skin        = manager.GameData.IdToPetSkin[petStruct.DefaultSkin];

                PetItem item = new PetItem
                {
                    InstanceId = db.GetNextPetId(player.AccountId),
                    Rarity     = (int)egg.Rarity,
                    SkinName   = skin.DisplayId,
                    Skin       = skin.ObjectType,
                    Type       = petStruct.ObjectType,
                    Abilities  = GetPetAbilites(egg, petStruct),
                };

                switch (item.Rarity)
                {
                case 1:
                    item.MaxAbilityPower     = 50;
                    item.Abilities[0].Power  = 30;
                    item.Abilities[0].Points = 2080;
                    item.Abilities[1].Power  = 11;
                    item.Abilities[1].Points = 290;
                    item.Abilities[2].Power  = 1;
                    item.Abilities[2].Points = 0;
                    break;

                case 2:
                    item.MaxAbilityPower     = 70;
                    item.Abilities[0].Power  = 50;
                    item.Abilities[0].Points = 10607;
                    item.Abilities[1].Power  = 30;
                    item.Abilities[1].Points = 2080;
                    item.Abilities[2].Power  = 1;
                    item.Abilities[2].Points = 0;
                    break;

                case 3:
                    item.MaxAbilityPower     = 90;
                    item.Abilities[0].Power  = 70;
                    item.Abilities[0].Points = 50355;
                    item.Abilities[1].Power  = 50;
                    item.Abilities[1].Points = 10607;
                    item.Abilities[2].Power  = 30;
                    item.Abilities[2].Points = 2080;
                    break;

                case 4:
                    item.MaxAbilityPower     = 100;
                    item.Abilities[0].Power  = 90;
                    item.Abilities[0].Points = 235610;
                    item.Abilities[1].Power  = 70;
                    item.Abilities[1].Points = 50354;
                    item.Abilities[2].Power  = 50;
                    item.Abilities[2].Points = 10607;
                    break;

                default:
                    item.MaxAbilityPower     = 30;
                    item.Abilities[0].Power  = 1;
                    item.Abilities[0].Points = 0;
                    item.Abilities[1].Power  = 1;
                    item.Abilities[1].Points = 0;
                    item.Abilities[2].Power  = 1;
                    item.Abilities[2].Points = 0;
                    break;
                }

                Pet pet = new Pet(manager, item, null);
                int x;
                int y;
                Random rand = new Random((int)DateTime.Now.Ticks);
                do
                {
                    x = rand.Next(0, player.Owner.Map.Width);
                    y = rand.Next(0, player.Owner.Map.Height);
                } while (player.Owner.Map[x, y].Region != TileRegion.Spawn);
                pet.Move(x + 0.5f, y + 0.5f);
                db.CreatePet(player.Client.Account, item);
                player.Owner.EnterWorld(pet);
                player.Client.SendPacket(new HatchPetMessagePacket
                {
                    PetName = skin.DisplayId,
                    PetSkin = skin.ObjectType
                });
                player.Client.SendPacket(new UpdatePacket
                {
                    Tiles      = new UpdatePacket.TileData[0],
                    NewObjects = new ObjectDef[1] {
                        pet.ToDefinition()
                    },
                    RemovedObjectIds = new int[0]
                });
            });
        }
        public void CreatePet(Account acc, PetItem item)
        {
            XmlData data = new XmlData();
            var cmd = CreateQuery();
            cmd.CommandText = "SELECT COUNT(petId) FROM pets WHERE petId=@petId AND accId=@accId;";
            cmd.Parameters.AddWithValue("@accId", acc.AccountId);
            cmd.Parameters.AddWithValue("@petId", item.InstanceId);
            if ((int)(long)cmd.ExecuteScalar() == 0)
            {
                Family? _family = Family.Unknown;
                var _pskin = 0;
                cmd = CreateQuery();
                cmd.CommandText =
                    @"INSERT INTO pets(accId, petId, objType, skinName, skin, family, rarity, maxLevel, abilities, levels, xp)
VALUES(@accId, @petId, @objType, @skinName, @skin, @family, @rarity, @maxLevel, @abilities, @levels, @xp);";
                cmd.Parameters.AddWithValue("@accId", acc.AccountId);
                cmd.Parameters.AddWithValue("@petId", item.InstanceId);
                cmd.Parameters.AddWithValue("@objType", item.Type);
                cmd.Parameters.AddWithValue("@skinName", item.SkinName);
                cmd.Parameters.AddWithValue("@skin", item.Skin);
                foreach (KeyValuePair<ushort, Item> items in data.Items)
                {
                    if (items.Value.ObjectType == item.InstanceId)
                        _family = items.Value.Family;
                }
                cmd.Parameters.AddWithValue("@family", _family);
                cmd.Parameters.AddWithValue("@rarity", item.Rarity);
                cmd.Parameters.AddWithValue("@maxLevel", item.MaxAbilityPower);
                cmd.Parameters.AddWithValue("@abilities",
                    String.Format("{0}, {1}, {2}", item.Abilities[0].Type, item.Abilities[1].Type, item.Abilities[2].Type));
                cmd.Parameters.AddWithValue("@levels",
                    String.Format("{0}, {1}, {2}", item.Abilities[0].Power, item.Abilities[1].Power, item.Abilities[2].Power));
                cmd.Parameters.AddWithValue("@xp",
                    String.Format("{0}, {1}, {2}", item.Abilities[0].Points, item.Abilities[1].Points, item.Abilities[2].Points));
                try
                {
                    cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                }
            }
        }