mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-02-14 22:19:25 +01:00
*Update to Mangos 7183.
--HG-- branch : trunk
This commit is contained in:
@@ -36,6 +36,22 @@
|
||||
#include "AccountMgr.h"
|
||||
#include "TicketMgr.h"
|
||||
|
||||
// Supported shift-links (client generated and server side)
|
||||
// |color|Harea:area_id|h[name]|h|r
|
||||
// |color|Hcreature:creature_guid|h[name]|h|r
|
||||
// |color|Hcreature_entry:creature_id|h[name]|h|r
|
||||
// |color|Hgameevent:id|h[name]|h|r
|
||||
// |color|Hgameobject:go_guid|h[name]|h|r
|
||||
// |color|Hgameobject_entry:go_id|h[name]|h|r
|
||||
// |color|Hitem:item_id:perm_ench_id:0:0|h[name]|h|r
|
||||
// |color|Hitemset:itemset_id|h[name]|h|r
|
||||
// |color|Hquest:quest_id|h[name]|h|r
|
||||
// |color|Hskill:skill_id|h[name]|h|r
|
||||
// |color|Hspell:spell_id|h[name]|h|r - client, spellbook spell icon shift-click
|
||||
// |color|Htalent:talent_id,rank|h[name]|h|r - client, talent icon shift-click
|
||||
// |color|Htele:id|h[name]|h|r
|
||||
// |color|Htrade:spell_id,cur_value,max_value,unk3int,unk3str|h[name]|h|r - client, spellbook profession icon shift-click
|
||||
|
||||
bool ChatHandler::load_command_table = true;
|
||||
|
||||
ChatCommand * ChatHandler::getCommandTable()
|
||||
@@ -1317,9 +1333,18 @@ GameObject* ChatHandler::GetObjectGlobalyWithGuidOrNearWithDbGuid(uint32 lowguid
|
||||
return obj;
|
||||
}
|
||||
|
||||
static char const* const spellTalentKeys[] = {
|
||||
"Hspell",
|
||||
"Htalent",
|
||||
enum SpellLinkType
|
||||
{
|
||||
SPELL_LINK_SPELL = 0,
|
||||
SPELL_LINK_TALENT = 1,
|
||||
SPELL_LINK_TRADE = 2
|
||||
};
|
||||
|
||||
static char const* const spellKeys[] =
|
||||
{
|
||||
"Hspell", // normal spell
|
||||
"Htalent", // talent spell
|
||||
"Htrade", // profession/skill spell
|
||||
0
|
||||
};
|
||||
|
||||
@@ -1327,31 +1352,41 @@ uint32 ChatHandler::extractSpellIdFromLink(char* text)
|
||||
{
|
||||
// number or [name] Shift-click form |color|Hspell:spell_id|h[name]|h|r
|
||||
// number or [name] Shift-click form |color|Htalent:talent_id,rank|h[name]|h|r
|
||||
// number or [name] Shift-click form |color|Htrade:spell_id,skill_id,max_value,cur_value|h[name]|h|r
|
||||
int type = 0;
|
||||
char* rankS = NULL;
|
||||
char* idS = extractKeyFromLink(text,spellTalentKeys,&type,&rankS);
|
||||
char* param1_str = NULL;
|
||||
char* idS = extractKeyFromLink(text,spellKeys,&type,¶m1_str);
|
||||
if(!idS)
|
||||
return 0;
|
||||
|
||||
uint32 id = (uint32)atol(idS);
|
||||
|
||||
// spell
|
||||
if(type==0)
|
||||
return id;
|
||||
switch(type)
|
||||
{
|
||||
case SPELL_LINK_SPELL:
|
||||
return id;
|
||||
case SPELL_LINK_TALENT:
|
||||
{
|
||||
// talent
|
||||
TalentEntry const* talentEntry = sTalentStore.LookupEntry(id);
|
||||
if(!talentEntry)
|
||||
return 0;
|
||||
|
||||
// talent
|
||||
TalentEntry const* talentEntry = sTalentStore.LookupEntry(id);
|
||||
if(!talentEntry)
|
||||
return 0;
|
||||
int32 rank = param1_str ? (uint32)atol(param1_str) : 0;
|
||||
if(rank >= 5)
|
||||
return 0;
|
||||
|
||||
int32 rank = rankS ? (uint32)atol(rankS) : 0;
|
||||
if(rank >= 5)
|
||||
return 0;
|
||||
if(rank < 0)
|
||||
rank = 0;
|
||||
|
||||
if(rank < 0)
|
||||
rank = 0;
|
||||
return talentEntry->RankID[rank];
|
||||
}
|
||||
case SPELL_LINK_TRADE:
|
||||
return id;
|
||||
}
|
||||
|
||||
return talentEntry->RankID[rank];
|
||||
// unknown type?
|
||||
return 0;
|
||||
}
|
||||
|
||||
GameTele const* ChatHandler::extractGameTeleFromLink(char* text)
|
||||
|
||||
Reference in New Issue
Block a user