Exemplo n.º 1
0
        public override bool OnExpire(Player player, ItemTemplate pItemProto)
        {
            List <ItemPosCount> dest = new List <ItemPosCount>();
            InventoryResult     msg  = player.CanStoreNewItem(ItemConst.NullBag, ItemConst.NullSlot, dest, 44718, 1); // Ripe Disgusting Jar

            if (msg == InventoryResult.Ok)
            {
                player.StoreNewItem(dest, 44718, true, ItemEnchantment.GenerateItemRandomPropertyId(44718));
            }

            return(true);
        }
Exemplo n.º 2
0
        public override bool OnExpire(Player player, ItemTemplate pItemProto)
        {
            List <ItemPosCount> dest = new List <ItemPosCount>();
            InventoryResult     msg  = player.CanStoreNewItem(ItemConst.NullBag, ItemConst.NullSlot, dest, 39883, 1); // Cracked Egg

            if (msg == InventoryResult.Ok)
            {
                player.StoreNewItem(dest, 39883, true, ItemEnchantment.GenerateItemRandomPropertyId(39883));
            }

            return(true);
        }
Exemplo n.º 3
0
        public LootItem(LootStoreItem li)
        {
            itemid     = li.itemid;
            conditions = li.conditions;

            ItemTemplate proto = Global.ObjectMgr.GetItemTemplate(itemid);

            freeforall        = proto != null && proto.GetFlags().HasAnyFlag(ItemFlags.MultiDrop);
            follow_loot_rules = proto != null && proto.FlagsCu.HasAnyFlag(ItemFlagsCustom.FollowLootRules);

            needs_quest = li.needs_quest;

            randomSuffix     = ItemEnchantment.GenerateEnchSuffixFactor(itemid);
            randomPropertyId = ItemEnchantment.GenerateItemRandomPropertyId(itemid);
            upgradeId        = Global.DB2Mgr.GetRulesetItemUpgrade(itemid);
            canSave          = true;
        }
Exemplo n.º 4
0
        void HandlePlayerChoiceResponse(ChoiceResponse choiceResponse)
        {
            if (_player.PlayerTalkClass.GetInteractionData().PlayerChoiceId != choiceResponse.ChoiceID)
            {
                Log.outError(LogFilter.Player, $"Error in CMSG_CHOICE_RESPONSE: {GetPlayerInfo()} tried to respond to invalid player choice {choiceResponse.ChoiceID} (allowed {_player.PlayerTalkClass.GetInteractionData().PlayerChoiceId}) (possible packet-hacking detected)");
                return;
            }

            PlayerChoice playerChoice = Global.ObjectMgr.GetPlayerChoice(choiceResponse.ChoiceID);

            if (playerChoice == null)
            {
                return;
            }

            PlayerChoiceResponse playerChoiceResponse = playerChoice.GetResponse(choiceResponse.ResponseID);

            if (playerChoiceResponse == null)
            {
                Log.outError(LogFilter.Player, $"Error in CMSG_CHOICE_RESPONSE: {GetPlayerInfo()} tried to select invalid player choice response {choiceResponse.ResponseID} (possible packet-hacking detected)");
                return;
            }

            Global.ScriptMgr.OnPlayerChoiceResponse(GetPlayer(), (uint)choiceResponse.ChoiceID, (uint)choiceResponse.ResponseID);

            if (playerChoiceResponse.Reward.HasValue)
            {
                var reward = playerChoiceResponse.Reward.Value;
                if (reward.TitleId != 0)
                {
                    _player.SetTitle(CliDB.CharTitlesStorage.LookupByKey(reward.TitleId), false);
                }

                if (reward.PackageId != 0)
                {
                    _player.RewardQuestPackage((uint)reward.PackageId);
                }

                if (reward.SkillLineId != 0 && _player.HasSkill((SkillType)reward.SkillLineId))
                {
                    _player.UpdateSkillPro((uint)reward.SkillLineId, 1000, reward.SkillPointCount);
                }

                if (reward.HonorPointCount != 0)
                {
                    _player.AddHonorXP(reward.HonorPointCount);
                }

                if (reward.Money != 0)
                {
                    _player.ModifyMoney((long)reward.Money, false);
                }

                if (reward.Xp != 0)
                {
                    _player.GiveXP(reward.Xp, null, 0.0f);
                }

                foreach (PlayerChoiceResponseRewardItem item in reward.Items)
                {
                    List <ItemPosCount> dest = new List <ItemPosCount>();
                    if (_player.CanStoreNewItem(ItemConst.NullBag, ItemConst.NullSlot, dest, item.Id, (uint)item.Quantity) == InventoryResult.Ok)
                    {
                        Item newItem = _player.StoreNewItem(dest, item.Id, true, ItemEnchantment.GenerateItemRandomPropertyId(item.Id), null, 0, item.BonusListIDs);
                        _player.SendNewItem(newItem, (uint)item.Quantity, true, false);
                    }
                }

                foreach (PlayerChoiceResponseRewardEntry currency in reward.Currency)
                {
                    _player.ModifyCurrency((CurrencyTypes)currency.Id, currency.Quantity);
                }

                foreach (PlayerChoiceResponseRewardEntry faction in reward.Faction)
                {
                    _player.GetReputationMgr().ModifyReputation(CliDB.FactionStorage.LookupByKey(faction.Id), faction.Quantity);
                }
            }
        }