mirror of
https://github.com/mangosfour/server.git
synced 2025-12-14 16:37:01 +00:00
Fixed/updated some enums/packets.
This commit is contained in:
parent
d69abfcae1
commit
af9318ffa1
9 changed files with 153 additions and 134 deletions
|
|
@ -45,10 +45,7 @@ void WorldSession::SendGMTicketGetTicket(uint32 status, char const* text)
|
||||||
|
|
||||||
void WorldSession::HandleGMTicketGetTicketOpcode( WorldPacket & /*recv_data*/ )
|
void WorldSession::HandleGMTicketGetTicketOpcode( WorldPacket & /*recv_data*/ )
|
||||||
{
|
{
|
||||||
WorldPacket data( SMSG_QUERY_TIME_RESPONSE, 4+4 );
|
SendQueryTimeResponse();
|
||||||
data << (uint32)time(NULL);
|
|
||||||
data << (uint32)0;
|
|
||||||
SendPacket( &data );
|
|
||||||
|
|
||||||
GMTicket* ticket = sTicketMgr.GetGMTicket(GetPlayer()->GetGUIDLow());
|
GMTicket* ticket = sTicketMgr.GetGMTicket(GetPlayer()->GetGUIDLow());
|
||||||
if(ticket)
|
if(ticket)
|
||||||
|
|
@ -105,12 +102,9 @@ void WorldSession::HandleGMTicketCreateOpcode( WorldPacket & recv_data )
|
||||||
|
|
||||||
sTicketMgr.Create(_player->GetGUIDLow(), ticketText.c_str());
|
sTicketMgr.Create(_player->GetGUIDLow(), ticketText.c_str());
|
||||||
|
|
||||||
WorldPacket data( SMSG_QUERY_TIME_RESPONSE, 4+4 );
|
SendQueryTimeResponse();
|
||||||
data << (uint32)time(NULL);
|
|
||||||
data << (uint32)0;
|
|
||||||
SendPacket( &data );
|
|
||||||
|
|
||||||
data.Initialize( SMSG_GMTICKET_CREATE, 4 );
|
WorldPacket data( SMSG_GMTICKET_CREATE, 4 );
|
||||||
data << uint32(2); // 2 - nothing appears (3-error creating, 5-error updating)
|
data << uint32(2); // 2 - nothing appears (3-error creating, 5-error updating)
|
||||||
SendPacket( &data );
|
SendPacket( &data );
|
||||||
DEBUG_LOG("update the ticket");
|
DEBUG_LOG("update the ticket");
|
||||||
|
|
|
||||||
172
src/game/Item.h
172
src/game/Item.h
|
|
@ -39,89 +39,95 @@ struct ItemSetEffect
|
||||||
enum InventoryChangeFailure
|
enum InventoryChangeFailure
|
||||||
{
|
{
|
||||||
EQUIP_ERR_OK = 0,
|
EQUIP_ERR_OK = 0,
|
||||||
EQUIP_ERR_CANT_EQUIP_LEVEL_I = 1,
|
EQUIP_ERR_CANT_EQUIP_LEVEL_I = 1, // ERR_CANT_EQUIP_LEVEL_I
|
||||||
EQUIP_ERR_ERR_CANT_EQUIP_SKILL = 2,
|
EQUIP_ERR_CANT_EQUIP_SKILL = 2, // ERR_CANT_EQUIP_SKILL
|
||||||
EQUIP_ERR_ITEM_DOESNT_GO_TO_SLOT = 3,
|
EQUIP_ERR_ITEM_DOESNT_GO_TO_SLOT = 3, // ERR_WRONG_SLOT
|
||||||
EQUIP_ERR_BAG_FULL = 4,
|
EQUIP_ERR_BAG_FULL = 4, // ERR_BAG_FULL
|
||||||
EQUIP_ERR_NONEMPTY_BAG_OVER_OTHER_BAG = 5,
|
EQUIP_ERR_NONEMPTY_BAG_OVER_OTHER_BAG = 5, // ERR_BAG_IN_BAG
|
||||||
EQUIP_ERR_CANT_TRADE_EQUIP_BAGS = 6,
|
EQUIP_ERR_CANT_TRADE_EQUIP_BAGS = 6, // ERR_TRADE_EQUIPPED_BAG
|
||||||
EQUIP_ERR_ONLY_AMMO_CAN_GO_HERE = 7,
|
EQUIP_ERR_ONLY_AMMO_CAN_GO_HERE = 7, // ERR_AMMO_ONLY
|
||||||
EQUIP_ERR_NO_REQUIRED_PROFICIENCY = 8,
|
EQUIP_ERR_NO_REQUIRED_PROFICIENCY = 8, // ERR_PROFICIENCY_NEEDED
|
||||||
EQUIP_ERR_NO_EQUIPMENT_SLOT_AVAILABLE = 9,
|
EQUIP_ERR_NO_EQUIPMENT_SLOT_AVAILABLE = 9, // ERR_NO_SLOT_AVAILABLE
|
||||||
EQUIP_ERR_YOU_CAN_NEVER_USE_THAT_ITEM = 10,
|
EQUIP_ERR_YOU_CAN_NEVER_USE_THAT_ITEM = 10, // ERR_CANT_EQUIP_EVER
|
||||||
EQUIP_ERR_YOU_CAN_NEVER_USE_THAT_ITEM2 = 11,
|
EQUIP_ERR_YOU_CAN_NEVER_USE_THAT_ITEM2 = 11, // ERR_CANT_EQUIP_EVER
|
||||||
EQUIP_ERR_NO_EQUIPMENT_SLOT_AVAILABLE2 = 12,
|
EQUIP_ERR_NO_EQUIPMENT_SLOT_AVAILABLE2 = 12, // ERR_NO_SLOT_AVAILABLE
|
||||||
EQUIP_ERR_CANT_EQUIP_WITH_TWOHANDED = 13,
|
EQUIP_ERR_CANT_EQUIP_WITH_TWOHANDED = 13, // ERR_2HANDED_EQUIPPED
|
||||||
EQUIP_ERR_CANT_DUAL_WIELD = 14,
|
EQUIP_ERR_CANT_DUAL_WIELD = 14, // ERR_2HSKILLNOTFOUND
|
||||||
EQUIP_ERR_ITEM_DOESNT_GO_INTO_BAG = 15,
|
EQUIP_ERR_ITEM_DOESNT_GO_INTO_BAG = 15, // ERR_WRONG_BAG_TYPE
|
||||||
EQUIP_ERR_ITEM_DOESNT_GO_INTO_BAG2 = 16,
|
EQUIP_ERR_ITEM_DOESNT_GO_INTO_BAG2 = 16, // ERR_WRONG_BAG_TYPE
|
||||||
EQUIP_ERR_CANT_CARRY_MORE_OF_THIS = 17,
|
EQUIP_ERR_CANT_CARRY_MORE_OF_THIS = 17, // ERR_ITEM_MAX_COUNT
|
||||||
EQUIP_ERR_NO_EQUIPMENT_SLOT_AVAILABLE3 = 18,
|
EQUIP_ERR_NO_EQUIPMENT_SLOT_AVAILABLE3 = 18, // ERR_NO_SLOT_AVAILABLE
|
||||||
EQUIP_ERR_ITEM_CANT_STACK = 19,
|
EQUIP_ERR_ITEM_CANT_STACK = 19, // ERR_CANT_STACK
|
||||||
EQUIP_ERR_ITEM_CANT_BE_EQUIPPED = 20,
|
EQUIP_ERR_ITEM_CANT_BE_EQUIPPED = 20, // ERR_NOT_EQUIPPABLE
|
||||||
EQUIP_ERR_ITEMS_CANT_BE_SWAPPED = 21,
|
EQUIP_ERR_ITEMS_CANT_BE_SWAPPED = 21, // ERR_CANT_SWAP
|
||||||
EQUIP_ERR_SLOT_IS_EMPTY = 22,
|
EQUIP_ERR_SLOT_IS_EMPTY = 22, // ERR_SLOT_EMPTY
|
||||||
EQUIP_ERR_ITEM_NOT_FOUND = 23,
|
EQUIP_ERR_ITEM_NOT_FOUND = 23, // ERR_ITEM_NOT_FOUND
|
||||||
EQUIP_ERR_CANT_DROP_SOULBOUND = 24,
|
EQUIP_ERR_CANT_DROP_SOULBOUND = 24, // ERR_DROP_BOUND_ITEM
|
||||||
EQUIP_ERR_OUT_OF_RANGE = 25,
|
EQUIP_ERR_OUT_OF_RANGE = 25, // ERR_OUT_OF_RANGE
|
||||||
EQUIP_ERR_TRIED_TO_SPLIT_MORE_THAN_COUNT = 26,
|
EQUIP_ERR_TRIED_TO_SPLIT_MORE_THAN_COUNT = 26, // ERR_TOO_FEW_TO_SPLIT
|
||||||
EQUIP_ERR_COULDNT_SPLIT_ITEMS = 27,
|
EQUIP_ERR_COULDNT_SPLIT_ITEMS = 27, // ERR_SPLIT_FAILED
|
||||||
EQUIP_ERR_MISSING_REAGENT = 28,
|
EQUIP_ERR_MISSING_REAGENT = 28, // ERR_SPELL_FAILED_REAGENTS_GENERIC
|
||||||
EQUIP_ERR_NOT_ENOUGH_MONEY = 29,
|
EQUIP_ERR_NOT_ENOUGH_MONEY = 29, // ERR_NOT_ENOUGH_MONEY
|
||||||
EQUIP_ERR_NOT_A_BAG = 30,
|
EQUIP_ERR_NOT_A_BAG = 30, // ERR_NOT_A_BAG
|
||||||
EQUIP_ERR_CAN_ONLY_DO_WITH_EMPTY_BAGS = 31,
|
EQUIP_ERR_CAN_ONLY_DO_WITH_EMPTY_BAGS = 31, // ERR_DESTROY_NONEMPTY_BAG
|
||||||
EQUIP_ERR_DONT_OWN_THAT_ITEM = 32,
|
EQUIP_ERR_DONT_OWN_THAT_ITEM = 32, // ERR_NOT_OWNER
|
||||||
EQUIP_ERR_CAN_EQUIP_ONLY1_QUIVER = 33,
|
EQUIP_ERR_CAN_EQUIP_ONLY1_QUIVER = 33, // ERR_ONLY_ONE_QUIVER
|
||||||
EQUIP_ERR_MUST_PURCHASE_THAT_BAG_SLOT = 34,
|
EQUIP_ERR_MUST_PURCHASE_THAT_BAG_SLOT = 34, // ERR_NO_BANK_SLOT
|
||||||
EQUIP_ERR_TOO_FAR_AWAY_FROM_BANK = 35,
|
EQUIP_ERR_TOO_FAR_AWAY_FROM_BANK = 35, // ERR_NO_BANK_HERE
|
||||||
EQUIP_ERR_ITEM_LOCKED = 36,
|
EQUIP_ERR_ITEM_LOCKED = 36, // ERR_ITEM_LOCKED
|
||||||
EQUIP_ERR_YOU_ARE_STUNNED = 37,
|
EQUIP_ERR_YOU_ARE_STUNNED = 37, // ERR_GENERIC_STUNNED
|
||||||
EQUIP_ERR_YOU_ARE_DEAD = 38,
|
EQUIP_ERR_YOU_ARE_DEAD = 38, // ERR_PLAYER_DEAD
|
||||||
EQUIP_ERR_CANT_DO_RIGHT_NOW = 39,
|
EQUIP_ERR_CANT_DO_RIGHT_NOW = 39, // ERR_CLIENT_LOCKED_OUT
|
||||||
EQUIP_ERR_INT_BAG_ERROR = 40,
|
EQUIP_ERR_INT_BAG_ERROR = 40, // ERR_INTERNAL_BAG_ERROR
|
||||||
EQUIP_ERR_CAN_EQUIP_ONLY1_QUIVER2 = 41,
|
EQUIP_ERR_CAN_EQUIP_ONLY1_QUIVER2 = 41, // ERR_ONLY_ONE_BOLT
|
||||||
EQUIP_ERR_CAN_EQUIP_ONLY1_AMMOPOUCH = 42,
|
EQUIP_ERR_CAN_EQUIP_ONLY1_AMMOPOUCH = 42, // ERR_ONLY_ONE_AMMO
|
||||||
EQUIP_ERR_STACKABLE_CANT_BE_WRAPPED = 43,
|
EQUIP_ERR_STACKABLE_CANT_BE_WRAPPED = 43, // ERR_CANT_WRAP_STACKABLE
|
||||||
EQUIP_ERR_EQUIPPED_CANT_BE_WRAPPED = 44,
|
EQUIP_ERR_EQUIPPED_CANT_BE_WRAPPED = 44, // ERR_CANT_WRAP_EQUIPPED
|
||||||
EQUIP_ERR_WRAPPED_CANT_BE_WRAPPED = 45,
|
EQUIP_ERR_WRAPPED_CANT_BE_WRAPPED = 45, // ERR_CANT_WRAP_WRAPPED
|
||||||
EQUIP_ERR_BOUND_CANT_BE_WRAPPED = 46,
|
EQUIP_ERR_BOUND_CANT_BE_WRAPPED = 46, // ERR_CANT_WRAP_BOUND
|
||||||
EQUIP_ERR_UNIQUE_CANT_BE_WRAPPED = 47,
|
EQUIP_ERR_UNIQUE_CANT_BE_WRAPPED = 47, // ERR_CANT_WRAP_UNIQUE
|
||||||
EQUIP_ERR_BAGS_CANT_BE_WRAPPED = 48,
|
EQUIP_ERR_BAGS_CANT_BE_WRAPPED = 48, // ERR_CANT_WRAP_BAGS
|
||||||
EQUIP_ERR_ALREADY_LOOTED = 49,
|
EQUIP_ERR_ALREADY_LOOTED = 49, // ERR_LOOT_GONE
|
||||||
EQUIP_ERR_INVENTORY_FULL = 50,
|
EQUIP_ERR_INVENTORY_FULL = 50, // ERR_INV_FULL
|
||||||
EQUIP_ERR_BANK_FULL = 51,
|
EQUIP_ERR_BANK_FULL = 51, // ERR_BAG_FULL
|
||||||
EQUIP_ERR_ITEM_IS_CURRENTLY_SOLD_OUT = 52,
|
EQUIP_ERR_ITEM_IS_CURRENTLY_SOLD_OUT = 52, // ERR_VENDOR_SOLD_OUT
|
||||||
EQUIP_ERR_BAG_FULL3 = 53,
|
EQUIP_ERR_BAG_FULL3 = 53, // ERR_BAG_FULL
|
||||||
EQUIP_ERR_ITEM_NOT_FOUND2 = 54,
|
EQUIP_ERR_ITEM_NOT_FOUND2 = 54, // ERR_ITEM_NOT_FOUND
|
||||||
EQUIP_ERR_ITEM_CANT_STACK2 = 55,
|
EQUIP_ERR_ITEM_CANT_STACK2 = 55, // ERR_CANT_STACK
|
||||||
EQUIP_ERR_BAG_FULL4 = 56,
|
EQUIP_ERR_BAG_FULL4 = 56, // ERR_BAG_FULL
|
||||||
EQUIP_ERR_ITEM_SOLD_OUT = 57,
|
EQUIP_ERR_ITEM_SOLD_OUT = 57, // ERR_VENDOR_SOLD_OUT
|
||||||
EQUIP_ERR_OBJECT_IS_BUSY = 58,
|
EQUIP_ERR_OBJECT_IS_BUSY = 58, // ERR_OBJECT_IS_BUSY
|
||||||
EQUIP_ERR_NONE = 59,
|
EQUIP_ERR_NONE = 59, // ERR_CANT_BE_DISENCHANTED
|
||||||
EQUIP_ERR_NOT_IN_COMBAT = 60,
|
EQUIP_ERR_NOT_IN_COMBAT = 60, // ERR_NOT_IN_COMBAT
|
||||||
EQUIP_ERR_NOT_WHILE_DISARMED = 61,
|
EQUIP_ERR_NOT_WHILE_DISARMED = 61, // ERR_NOT_WHILE_DISARMED
|
||||||
EQUIP_ERR_BAG_FULL6 = 62,
|
EQUIP_ERR_BAG_FULL6 = 62, // ERR_BAG_FULL
|
||||||
EQUIP_ERR_CANT_EQUIP_RANK = 63,
|
EQUIP_ERR_CANT_EQUIP_RANK = 63, // ERR_CANT_EQUIP_RANK
|
||||||
EQUIP_ERR_CANT_EQUIP_REPUTATION = 64,
|
EQUIP_ERR_CANT_EQUIP_REPUTATION = 64, // ERR_CANT_EQUIP_REPUTATION
|
||||||
EQUIP_ERR_TOO_MANY_SPECIAL_BAGS = 65,
|
EQUIP_ERR_TOO_MANY_SPECIAL_BAGS = 65, // ERR_TOO_MANY_SPECIAL_BAGS
|
||||||
EQUIP_ERR_LOOT_CANT_LOOT_THAT_NOW = 66,
|
EQUIP_ERR_LOOT_CANT_LOOT_THAT_NOW = 66, // ERR_LOOT_CANT_LOOT_THAT_NOW
|
||||||
EQUIP_ERR_ITEM_UNIQUE_EQUIPABLE = 67,
|
EQUIP_ERR_ITEM_UNIQUE_EQUIPABLE = 67, // ERR_ITEM_UNIQUE_EQUIPPABLE
|
||||||
EQUIP_ERR_VENDOR_MISSING_TURNINS = 68,
|
EQUIP_ERR_VENDOR_MISSING_TURNINS = 68, // ERR_VENDOR_MISSING_TURNINS
|
||||||
EQUIP_ERR_NOT_ENOUGH_HONOR_POINTS = 69,
|
EQUIP_ERR_NOT_ENOUGH_HONOR_POINTS = 69, // ERR_NOT_ENOUGH_HONOR_POINTS
|
||||||
EQUIP_ERR_NOT_ENOUGH_ARENA_POINTS = 70,
|
EQUIP_ERR_NOT_ENOUGH_ARENA_POINTS = 70, // ERR_NOT_ENOUGH_ARENA_POINTS
|
||||||
EQUIP_ERR_ITEM_MAX_COUNT_SOCKETED = 71,
|
EQUIP_ERR_ITEM_MAX_COUNT_SOCKETED = 71, // ERR_ITEM_MAX_COUNT_SOCKETED
|
||||||
EQUIP_ERR_MAIL_BOUND_ITEM = 72,
|
EQUIP_ERR_MAIL_BOUND_ITEM = 72, // ERR_MAIL_BOUND_ITEM
|
||||||
EQUIP_ERR_NO_SPLIT_WHILE_PROSPECTING = 73,
|
EQUIP_ERR_NO_SPLIT_WHILE_PROSPECTING = 73, // ERR_INTERNAL_BAG_ERROR
|
||||||
EQUIP_ERR_ITEM_MAX_COUNT_EQUIPPED_SOCKETED = 75,
|
EQUIP_ERR_BAG_FULL7 = 74, // ERR_BAG_FULL
|
||||||
EQUIP_ERR_ITEM_UNIQUE_EQUIPPABLE_SOCKETED = 76,
|
EQUIP_ERR_ITEM_MAX_COUNT_EQUIPPED_SOCKETED = 75, // ERR_ITEM_MAX_COUNT_EQUIPPED_SOCKETED
|
||||||
EQUIP_ERR_TOO_MUCH_GOLD = 77,
|
EQUIP_ERR_ITEM_UNIQUE_EQUIPPABLE_SOCKETED = 76, // ERR_ITEM_UNIQUE_EQUIPPABLE_SOCKETED
|
||||||
EQUIP_ERR_NOT_DURING_ARENA_MATCH = 78,
|
EQUIP_ERR_TOO_MUCH_GOLD = 77, // ERR_TOO_MUCH_GOLD
|
||||||
EQUIP_ERR_CANNOT_TRADE_THAT = 79,
|
EQUIP_ERR_NOT_DURING_ARENA_MATCH = 78, // ERR_NOT_DURING_ARENA_MATCH
|
||||||
EQUIP_ERR_PERSONAL_ARENA_RATING_TOO_LOW = 80,
|
EQUIP_ERR_CANNOT_TRADE_THAT = 79, // ERR_TRADE_BOUND_ITEM
|
||||||
// no output = 81,
|
EQUIP_ERR_PERSONAL_ARENA_RATING_TOO_LOW = 80, // ERR_CANT_EQUIP_RATING
|
||||||
EQUIP_ERR_ARTEFACTS_ONLY_FOR_OWN_CHARACTERS = 82,
|
EQUIP_ERR_EVENT_AUTOEQUIP_BIND_CONFIRM = 81, // EQUIP_ERR_OK, EVENT_AUTOEQUIP_BIND_CONFIRM
|
||||||
// no output = 83,
|
EQUIP_ERR_ARTEFACTS_ONLY_FOR_OWN_CHARACTERS = 82, // ERR_NOT_SAME_ACCOUNT
|
||||||
// crash client = 84,
|
EQUIP_ERR_OK2 = 83, // EQUIP_ERR_OK
|
||||||
|
EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_COUNT_EXCEEDED_IS = 84,
|
||||||
|
EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_SOCKETED_EXCEEDED_IS = 85,
|
||||||
|
EQUIP_ERR_SCALING_STAT_ITEM_LEVEL_EXCEEDED = 86,
|
||||||
|
EQUIP_ERR_PURCHASE_LEVEL_TOO_LOW = 87,
|
||||||
|
EQUIP_ERR_CANT_EQUIP_NEED_TALENT = 88,
|
||||||
|
EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_EQUIPPED_EXCEEDED_IS = 89
|
||||||
};
|
};
|
||||||
|
|
||||||
enum BuyFailure
|
enum BuyFailure
|
||||||
|
|
|
||||||
|
|
@ -40,8 +40,6 @@
|
||||||
#include "InstanceSaveMgr.h"
|
#include "InstanceSaveMgr.h"
|
||||||
#include "VMapFactory.h"
|
#include "VMapFactory.h"
|
||||||
|
|
||||||
#define DEFAULT_GRID_EXPIRY 300
|
|
||||||
#define MAX_GRID_LOAD_TIME 50
|
|
||||||
#define MAX_CREATURE_ATTACK_RADIUS (45.0f * sWorld.getRate(RATE_CREATURE_AGGRO))
|
#define MAX_CREATURE_ATTACK_RADIUS (45.0f * sWorld.getRate(RATE_CREATURE_AGGRO))
|
||||||
|
|
||||||
GridState* si_GridStates[MAX_GRID_STATE];
|
GridState* si_GridStates[MAX_GRID_STATE];
|
||||||
|
|
@ -381,7 +379,6 @@ Map::EnsureGridLoadedAtEnter(const Cell &cell, Player *player)
|
||||||
|
|
||||||
if (player)
|
if (player)
|
||||||
{
|
{
|
||||||
player->SendDelayResponse(MAX_GRID_LOAD_TIME);
|
|
||||||
DEBUG_LOG("Player %s enter cell[%u,%u] triggers of loading grid[%u,%u] on map %u", player->GetName(), cell.CellX(), cell.CellY(), cell.GridX(), cell.GridY(), i_id);
|
DEBUG_LOG("Player %s enter cell[%u,%u] triggers of loading grid[%u,%u] on map %u", player->GetName(), cell.CellX(), cell.CellY(), cell.GridX(), cell.GridY(), i_id);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
||||||
|
|
@ -4174,15 +4174,6 @@ void Player::BuildPlayerRepop()
|
||||||
SetByteValue(UNIT_FIELD_BYTES_1, 3, UNIT_BYTE1_FLAG_ALWAYS_STAND);
|
SetByteValue(UNIT_FIELD_BYTES_1, 3, UNIT_BYTE1_FLAG_ALWAYS_STAND);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::SendDelayResponse(const uint32 ml_seconds)
|
|
||||||
{
|
|
||||||
//FIXME: is this delay time arg really need? 50msec by default in code
|
|
||||||
WorldPacket data( SMSG_QUERY_TIME_RESPONSE, 4+4 );
|
|
||||||
data << (uint32)time(NULL);
|
|
||||||
data << (uint32)0;
|
|
||||||
GetSession()->SendPacket( &data );
|
|
||||||
}
|
|
||||||
|
|
||||||
void Player::ResurrectPlayer(float restore_percent, bool applySickness)
|
void Player::ResurrectPlayer(float restore_percent, bool applySickness)
|
||||||
{
|
{
|
||||||
WorldPacket data(SMSG_DEATH_RELEASE_LOC, 4*4); // remove spirit healer position
|
WorldPacket data(SMSG_DEATH_RELEASE_LOC, 4*4); // remove spirit healer position
|
||||||
|
|
@ -10261,7 +10252,7 @@ uint8 Player::CanUseItem( Item *pItem, bool not_loading ) const
|
||||||
return EQUIP_ERR_NO_REQUIRED_PROFICIENCY;
|
return EQUIP_ERR_NO_REQUIRED_PROFICIENCY;
|
||||||
|
|
||||||
if (GetSkillValue( pProto->RequiredSkill ) < pProto->RequiredSkillRank)
|
if (GetSkillValue( pProto->RequiredSkill ) < pProto->RequiredSkillRank)
|
||||||
return EQUIP_ERR_ERR_CANT_EQUIP_SKILL;
|
return EQUIP_ERR_CANT_EQUIP_SKILL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pProto->RequiredSpell != 0 && !HasSpell(pProto->RequiredSpell))
|
if (pProto->RequiredSpell != 0 && !HasSpell(pProto->RequiredSpell))
|
||||||
|
|
@ -10322,7 +10313,7 @@ uint8 Player::CanUseAmmo( uint32 item ) const
|
||||||
if( GetSkillValue( pProto->RequiredSkill ) == 0 )
|
if( GetSkillValue( pProto->RequiredSkill ) == 0 )
|
||||||
return EQUIP_ERR_NO_REQUIRED_PROFICIENCY;
|
return EQUIP_ERR_NO_REQUIRED_PROFICIENCY;
|
||||||
else if( GetSkillValue( pProto->RequiredSkill ) < pProto->RequiredSkillRank )
|
else if( GetSkillValue( pProto->RequiredSkill ) < pProto->RequiredSkillRank )
|
||||||
return EQUIP_ERR_ERR_CANT_EQUIP_SKILL;
|
return EQUIP_ERR_CANT_EQUIP_SKILL;
|
||||||
}
|
}
|
||||||
if( pProto->RequiredSpell != 0 && !HasSpell( pProto->RequiredSpell ) )
|
if( pProto->RequiredSpell != 0 && !HasSpell( pProto->RequiredSpell ) )
|
||||||
return EQUIP_ERR_NO_REQUIRED_PROFICIENCY;
|
return EQUIP_ERR_NO_REQUIRED_PROFICIENCY;
|
||||||
|
|
@ -11601,24 +11592,38 @@ void Player::RemoveItemFromBuyBackSlot( uint32 slot, bool del )
|
||||||
void Player::SendEquipError( uint8 msg, Item* pItem, Item *pItem2 )
|
void Player::SendEquipError( uint8 msg, Item* pItem, Item *pItem2 )
|
||||||
{
|
{
|
||||||
sLog.outDebug( "WORLD: Sent SMSG_INVENTORY_CHANGE_FAILURE (%u)", msg);
|
sLog.outDebug( "WORLD: Sent SMSG_INVENTORY_CHANGE_FAILURE (%u)", msg);
|
||||||
WorldPacket data(SMSG_INVENTORY_CHANGE_FAILURE, (msg == EQUIP_ERR_CANT_EQUIP_LEVEL_I ? 22 : (msg == EQUIP_ERR_OK ? 1 : 18)));
|
WorldPacket data(SMSG_INVENTORY_CHANGE_FAILURE, 1+8+8+1);
|
||||||
data << uint8(msg);
|
data << uint8(msg);
|
||||||
|
|
||||||
if (msg != EQUIP_ERR_OK)
|
if (msg != EQUIP_ERR_OK)
|
||||||
{
|
{
|
||||||
data << uint64(pItem ? pItem->GetGUID() : 0);
|
data << uint64(pItem ? pItem->GetGUID() : 0);
|
||||||
data << uint64(pItem2 ? pItem2->GetGUID() : 0);
|
data << uint64(pItem2 ? pItem2->GetGUID() : 0);
|
||||||
data << uint8(0); // not 0 there...
|
data << uint8(0); // bag type subclass, used with EQUIP_ERR_EVENT_AUTOEQUIP_BIND_CONFIRM and EQUIP_ERR_ITEM_DOESNT_GO_INTO_BAG2
|
||||||
|
|
||||||
if (msg == EQUIP_ERR_CANT_EQUIP_LEVEL_I)
|
switch(msg)
|
||||||
{
|
{
|
||||||
uint32 level = 0;
|
case EQUIP_ERR_CANT_EQUIP_LEVEL_I:
|
||||||
|
case EQUIP_ERR_PURCHASE_LEVEL_TOO_LOW:
|
||||||
if (pItem)
|
{
|
||||||
if (ItemPrototype const* proto = pItem->GetProto())
|
ItemPrototype const* proto = pItem ? pItem->GetProto() : NULL;
|
||||||
level = proto->RequiredLevel;
|
data << uint32(proto ? proto->RequiredLevel : 0);
|
||||||
|
} break;
|
||||||
data << uint32(level); // new 2.4.0
|
case EQUIP_ERR_EVENT_AUTOEQUIP_BIND_CONFIRM: // no idea about this one...
|
||||||
|
{
|
||||||
|
data << uint64(0);
|
||||||
|
data << uint32(0);
|
||||||
|
data << uint64(0);
|
||||||
|
} break;
|
||||||
|
case EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_COUNT_EXCEEDED_IS:
|
||||||
|
case EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_SOCKETED_EXCEEDED_IS:
|
||||||
|
case EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_EQUIPPED_EXCEEDED_IS:
|
||||||
|
{
|
||||||
|
ItemPrototype const* proto = pItem ? pItem->GetProto() : NULL;
|
||||||
|
data << uint32(proto ? proto->ItemLimitCategory : 0);
|
||||||
|
} break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
GetSession()->SendPacket(&data);
|
GetSession()->SendPacket(&data);
|
||||||
|
|
@ -18013,7 +18018,7 @@ void Player::UpdateHomebindTime(uint32 time)
|
||||||
// hide reminder
|
// hide reminder
|
||||||
WorldPacket data(SMSG_RAID_GROUP_ONLY, 4+4);
|
WorldPacket data(SMSG_RAID_GROUP_ONLY, 4+4);
|
||||||
data << uint32(0);
|
data << uint32(0);
|
||||||
data << uint32(0);
|
data << uint32(ERR_RAID_GROUP_NONE); // error used only when timer = 0
|
||||||
GetSession()->SendPacket(&data);
|
GetSession()->SendPacket(&data);
|
||||||
}
|
}
|
||||||
// instance is valid, reset homebind timer
|
// instance is valid, reset homebind timer
|
||||||
|
|
@ -18036,7 +18041,7 @@ void Player::UpdateHomebindTime(uint32 time)
|
||||||
// send message to player
|
// send message to player
|
||||||
WorldPacket data(SMSG_RAID_GROUP_ONLY, 4+4);
|
WorldPacket data(SMSG_RAID_GROUP_ONLY, 4+4);
|
||||||
data << uint32(m_HomebindTimer);
|
data << uint32(m_HomebindTimer);
|
||||||
data << uint32(1);
|
data << uint32(ERR_RAID_GROUP_NONE); // error used only when timer = 0
|
||||||
GetSession()->SendPacket(&data);
|
GetSession()->SendPacket(&data);
|
||||||
sLog.outDebug("PLAYER: Player '%s' (GUID: %u) will be teleported to homebind in 60 seconds", GetName(),GetGUIDLow());
|
sLog.outDebug("PLAYER: Player '%s' (GUID: %u) will be teleported to homebind in 60 seconds", GetName(),GetGUIDLow());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -394,6 +394,15 @@ struct LookingForGroup
|
||||||
uint8 roles;
|
uint8 roles;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum RaidGroupError
|
||||||
|
{
|
||||||
|
ERR_RAID_GROUP_NONE = 0,
|
||||||
|
ERR_RAID_GROUP_LOWLEVEL = 1,
|
||||||
|
ERR_RAID_GROUP_ONLY = 2,
|
||||||
|
ERR_RAID_GROUP_FULL = 3,
|
||||||
|
ERR_RAID_GROUP_REQUIREMENTS_UNMATCH = 4
|
||||||
|
};
|
||||||
|
|
||||||
enum PlayerMovementType
|
enum PlayerMovementType
|
||||||
{
|
{
|
||||||
MOVE_ROOT = 1,
|
MOVE_ROOT = 1,
|
||||||
|
|
@ -1805,7 +1814,6 @@ class MANGOS_DLL_SPEC Player : public Unit
|
||||||
|
|
||||||
void BuildCreateUpdateBlockForPlayer( UpdateData *data, Player *target ) const;
|
void BuildCreateUpdateBlockForPlayer( UpdateData *data, Player *target ) const;
|
||||||
void DestroyForPlayer( Player *target, bool anim = false ) const;
|
void DestroyForPlayer( Player *target, bool anim = false ) const;
|
||||||
void SendDelayResponse(const uint32);
|
|
||||||
void SendLogXPGain(uint32 GivenXP,Unit* victim,uint32 RestXP);
|
void SendLogXPGain(uint32 GivenXP,Unit* victim,uint32 RestXP);
|
||||||
|
|
||||||
// notifiers
|
// notifiers
|
||||||
|
|
|
||||||
|
|
@ -140,10 +140,7 @@ void WorldSession::HandleNameQueryOpcode( WorldPacket & recv_data )
|
||||||
|
|
||||||
void WorldSession::HandleQueryTimeOpcode( WorldPacket & /*recv_data*/ )
|
void WorldSession::HandleQueryTimeOpcode( WorldPacket & /*recv_data*/ )
|
||||||
{
|
{
|
||||||
WorldPacket data( SMSG_QUERY_TIME_RESPONSE, 4+4 );
|
SendQueryTimeResponse();
|
||||||
data << (uint32)time(NULL);
|
|
||||||
data << (uint32)0;
|
|
||||||
SendPacket( &data );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Only _static_ data send in this packet !!!
|
/// Only _static_ data send in this packet !!!
|
||||||
|
|
@ -556,3 +553,11 @@ void WorldSession::HandleQuestPOIQuery(WorldPacket& recv_data)
|
||||||
data.hexlike();
|
data.hexlike();
|
||||||
SendPacket(&data);
|
SendPacket(&data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void WorldSession::SendQueryTimeResponse()
|
||||||
|
{
|
||||||
|
WorldPacket data(SMSG_QUERY_TIME_RESPONSE, 4+4);
|
||||||
|
data << uint32(time(NULL));
|
||||||
|
data << uint32(sWorld.GetNextDailyQuestsResetTime() - time(NULL));
|
||||||
|
SendPacket(&data);
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -59,17 +59,18 @@ enum QuestFailedReasons
|
||||||
|
|
||||||
enum QuestShareMessages
|
enum QuestShareMessages
|
||||||
{
|
{
|
||||||
QUEST_PARTY_MSG_SHARING_QUEST = 0,
|
QUEST_PARTY_MSG_SHARING_QUEST = 0, // ERR_QUEST_PUSH_SUCCESS_S
|
||||||
QUEST_PARTY_MSG_CANT_TAKE_QUEST = 1,
|
QUEST_PARTY_MSG_CANT_TAKE_QUEST = 1, // ERR_QUEST_PUSH_INVALID_S
|
||||||
QUEST_PARTY_MSG_ACCEPT_QUEST = 2,
|
QUEST_PARTY_MSG_ACCEPT_QUEST = 2, // ERR_QUEST_PUSH_ACCEPTED_S
|
||||||
QUEST_PARTY_MSG_DECLINE_QUEST = 3,
|
QUEST_PARTY_MSG_DECLINE_QUEST = 3, // ERR_QUEST_PUSH_DECLINED_S
|
||||||
QUEST_PARTY_MSG_BUSY = 4,
|
QUEST_PARTY_MSG_BUSY = 4, // ERR_QUEST_PUSH_BUSY_S
|
||||||
QUEST_PARTY_MSG_LOG_FULL = 5,
|
QUEST_PARTY_MSG_LOG_FULL = 5, // ERR_QUEST_PUSH_LOG_FULL_S
|
||||||
QUEST_PARTY_MSG_HAVE_QUEST = 6,
|
QUEST_PARTY_MSG_HAVE_QUEST = 6, // ERR_QUEST_PUSH_ONQUEST_S
|
||||||
QUEST_PARTY_MSG_FINISH_QUEST = 7,
|
QUEST_PARTY_MSG_FINISH_QUEST = 7, // ERR_QUEST_PUSH_ALREADY_DONE_S
|
||||||
QUEST_PARTY_MSG_CANT_BE_SHARED_TODAY = 8,
|
QUEST_PARTY_MSG_CANT_BE_SHARED_TODAY = 8, // ERR_QUEST_PUSH_NOT_DAILY_S
|
||||||
QUEST_PARTY_MSG_SHARING_TIMER_EXPIRED = 9,
|
QUEST_PARTY_MSG_SHARING_TIMER_EXPIRED = 9, // ERR_QUEST_PUSH_TIMER_EXPIRED_S
|
||||||
QUEST_PARTY_MSG_NOT_IN_PARTY = 10
|
QUEST_PARTY_MSG_NOT_IN_PARTY = 10, // ERR_QUEST_PUSH_NOT_IN_PARTY_S
|
||||||
|
QUESY_PARTY_MSG_DIFFERENT_SERVER_DAILY = 11 // ERR_QUEST_PUSH_DIFFERENT_SERVER_DAILY_S
|
||||||
};
|
};
|
||||||
|
|
||||||
enum __QuestTradeSkill
|
enum __QuestTradeSkill
|
||||||
|
|
|
||||||
|
|
@ -434,6 +434,8 @@ class World
|
||||||
time_t const& GetGameTime() const { return m_gameTime; }
|
time_t const& GetGameTime() const { return m_gameTime; }
|
||||||
/// Uptime (in secs)
|
/// Uptime (in secs)
|
||||||
uint32 GetUptime() const { return uint32(m_gameTime - m_startTime); }
|
uint32 GetUptime() const { return uint32(m_gameTime - m_startTime); }
|
||||||
|
/// Next daily quests reset time
|
||||||
|
time_t GetNextDailyQuestsResetTime() const { return m_NextDailyQuestReset; }
|
||||||
|
|
||||||
/// Get the maximum skill level a player can reach
|
/// Get the maximum skill level a player can reach
|
||||||
uint16 GetConfigMaxSkillValue() const
|
uint16 GetConfigMaxSkillValue() const
|
||||||
|
|
|
||||||
|
|
@ -133,6 +133,7 @@ class MANGOS_DLL_SPEC WorldSession
|
||||||
void SendPartyResult(PartyOperation operation, const std::string& member, PartyResult res);
|
void SendPartyResult(PartyOperation operation, const std::string& member, PartyResult res);
|
||||||
void SendAreaTriggerMessage(const char* Text, ...) ATTR_PRINTF(2,3);
|
void SendAreaTriggerMessage(const char* Text, ...) ATTR_PRINTF(2,3);
|
||||||
void SendSetPhaseShift(uint32 phaseShift);
|
void SendSetPhaseShift(uint32 phaseShift);
|
||||||
|
void SendQueryTimeResponse();
|
||||||
|
|
||||||
AccountTypes GetSecurity() const { return _security; }
|
AccountTypes GetSecurity() const { return _security; }
|
||||||
uint32 GetAccountId() const { return _accountId; }
|
uint32 GetAccountId() const { return _accountId; }
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue