False.Genesis 49338c6e6a * upgrade to 2.1.3 support. thx to bLuma for patch!!
* corrected and extended SharedDefines.h
* added handlers for SMSG_MOTD and SMSG_NOTIFICATION
* added values created by stuffextract to map.scp/race.scp before it supports 2.1.3 also.
2007-08-21 16:59:34 +00:00

127 lines
4.3 KiB
C++

#include "WorldSession.h"
#include "UpdateFields.h"
#include "Item.h"
#include "Bag.h"
void WorldSession::_HandleItemQuerySingleResponseOpcode(WorldPacket& recvPacket)
{
ItemProto *proto = new ItemProto;
recvPacket >> proto->Id;
uint8 field[64];
uint32 unk;
memset(field,0,64);
if(memcmp(recvPacket.contents()+sizeof(uint32),field,64))
{
recvPacket >> proto->Class;
recvPacket >> proto->SubClass;
recvPacket >> unk; // dont need that value?
for(uint8 i=0;i<4;i++)
recvPacket >> proto->Name[i];
recvPacket >> proto->DisplayInfoID;
recvPacket >> proto->Quality;
recvPacket >> proto->Flags;
recvPacket >> proto->BuyPrice;
recvPacket >> proto->SellPrice;
recvPacket >> proto->InventoryType;
recvPacket >> proto->AllowableClass;
recvPacket >> proto->AllowableRace;
recvPacket >> proto->ItemLevel;
recvPacket >> proto->RequiredLevel;
recvPacket >> proto->RequiredSkill;
recvPacket >> proto->RequiredSkillRank;
recvPacket >> proto->RequiredSpell;
recvPacket >> proto->RequiredHonorRank;
recvPacket >> proto->RequiredCityRank;
recvPacket >> proto->RequiredReputationFaction;
recvPacket >> proto->RequiredReputationRank;
recvPacket >> proto->MaxCount;
recvPacket >> proto->Stackable;
recvPacket >> proto->ContainerSlots;
for(int i = 0; i < 10; i++)
{
recvPacket >> proto->ItemStat[i].ItemStatType;
recvPacket >> proto->ItemStat[i].ItemStatValue;
}
for(int i = 0; i < 5; i++)
{
recvPacket >> proto->Damage[i].DamageMin;
recvPacket >> proto->Damage[i].DamageMax;
recvPacket >> proto->Damage[i].DamageType;
}
recvPacket >> proto->Armor;
recvPacket >> proto->HolyRes;
recvPacket >> proto->FireRes;
recvPacket >> proto->NatureRes;
recvPacket >> proto->FrostRes;
recvPacket >> proto->ShadowRes;
recvPacket >> proto->ArcaneRes;
recvPacket >> proto->Delay;
recvPacket >> proto->Ammo_type;
recvPacket >> (float)proto->RangedModRange;
for(int s = 0; s < 5; s++)
{
recvPacket >> proto->Spells[s].SpellId;
recvPacket >> proto->Spells[s].SpellTrigger;
recvPacket >> proto->Spells[s].SpellCharges;
recvPacket >> proto->Spells[s].SpellCooldown;
recvPacket >> proto->Spells[s].SpellCategory;
recvPacket >> proto->Spells[s].SpellCategoryCooldown;
}
recvPacket >> proto->Bonding;
recvPacket >> proto->Description;
recvPacket >> proto->PageText;
recvPacket >> proto->LanguageID;
recvPacket >> proto->PageMaterial;
recvPacket >> proto->StartQuest;
recvPacket >> proto->LockID;
recvPacket >> proto->Material;
recvPacket >> proto->Sheath;
recvPacket >> proto->Extra;
recvPacket >> proto->Block;
recvPacket >> proto->ItemSet;
recvPacket >> proto->MaxDurability;
recvPacket >> proto->Area;
recvPacket >> proto->Map;
recvPacket >> proto->BagFamily;
recvPacket >> proto->TotemCategory; // Added in 1.12.x client branch
for(uint32 s = 0; s < 3; s++)
{
recvPacket >> proto->Socket[s].Color;
recvPacket >> proto->Socket[s].Content;
}
recvPacket >> proto->socketBonus;
recvPacket >> proto->GemProperties;
recvPacket >> proto->ExtendedCost;
recvPacket >> proto->RequiredDisenchantSkill;
recvPacket >> proto->ArmorDamageModifier;
logdetail("Got Item Info: Id=%u Name='%s' ReqLevel=%u Armor=%u Desc='%s'",
proto->Id, proto->Name[0].c_str(), proto->RequiredLevel, proto->Armor, proto->Description.c_str());
objmgr.Add(proto);
}
else
{
logdetail("Got info of nonexistent Item %u",proto->Id);
objmgr.AddNonexistentItem(proto->Id);
delete proto;
}
}
Item::Item()
{
_type |= TYPE_ITEM;
_typeid = TYPEID_ITEM;
_valuescount = ITEM_END;
_slot = 0;
//_bag = NULL; // not yet implemented
}
void Item::Create(uint64 guid)
{
Object::Create(guid);
// what else?
}