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); }
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); }
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; }
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); } } }