*Set totem slot to 4 but total summon slot to 6.
*Fix build. --HG-- branch : trunk
This commit is contained in:
@@ -2901,47 +2901,6 @@ bool ChatHandler::HandleListObjectCommand(const char* args)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ChatHandler::HandleGameObjectNearCommand(const char* args)
|
|
||||||
{
|
|
||||||
float distance = (!*args) ? 10 : atol(args);
|
|
||||||
uint32 count = 0;
|
|
||||||
|
|
||||||
Player* pl = m_session->GetPlayer();
|
|
||||||
QueryResult *result = WorldDatabase.PQuery("SELECT guid, id, position_x, position_y, position_z, map, "
|
|
||||||
"(POW(position_x - '%f', 2) + POW(position_y - '%f', 2) + POW(position_z - '%f', 2)) AS order_ "
|
|
||||||
"FROM gameobject WHERE map='%u' AND (POW(position_x - '%f', 2) + POW(position_y - '%f', 2) + POW(position_z - '%f', 2)) <= '%f' ORDER BY order_",
|
|
||||||
pl->GetPositionX(), pl->GetPositionY(), pl->GetPositionZ(),
|
|
||||||
pl->GetMapId(),pl->GetPositionX(), pl->GetPositionY(), pl->GetPositionZ(),distance*distance);
|
|
||||||
|
|
||||||
if (result)
|
|
||||||
{
|
|
||||||
do
|
|
||||||
{
|
|
||||||
Field *fields = result->Fetch();
|
|
||||||
uint32 guid = fields[0].GetUInt32();
|
|
||||||
uint32 entry = fields[1].GetUInt32();
|
|
||||||
float x = fields[2].GetFloat();
|
|
||||||
float y = fields[3].GetFloat();
|
|
||||||
float z = fields[4].GetFloat();
|
|
||||||
int mapid = fields[5].GetUInt16();
|
|
||||||
|
|
||||||
GameObjectInfo const * gInfo = objmgr.GetGameObjectInfo(entry);
|
|
||||||
|
|
||||||
if(!gInfo)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
PSendSysMessage(LANG_GO_LIST_CHAT, guid, guid, gInfo->name, x, y, z, mapid);
|
|
||||||
|
|
||||||
++count;
|
|
||||||
} while (result->NextRow());
|
|
||||||
|
|
||||||
delete result;
|
|
||||||
}
|
|
||||||
|
|
||||||
PSendSysMessage(LANG_COMMAND_NEAROBJMESSAGE,distance,count);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool ChatHandler::HandleGameObjectStateCommand(const char* args)
|
bool ChatHandler::HandleGameObjectStateCommand(const char* args)
|
||||||
{
|
{
|
||||||
// number or [name] Shift-click form |color|Hgameobject:go_id|h[name]|h|r
|
// number or [name] Shift-click form |color|Hgameobject:go_id|h[name]|h|r
|
||||||
|
|||||||
@@ -598,6 +598,9 @@ class Spell
|
|||||||
void SpellDamageSchoolDmg(uint32 i);
|
void SpellDamageSchoolDmg(uint32 i);
|
||||||
void SpellDamageWeaponDmg(uint32 i);
|
void SpellDamageWeaponDmg(uint32 i);
|
||||||
void SpellDamageHeal(uint32 i);
|
void SpellDamageHeal(uint32 i);
|
||||||
|
|
||||||
|
void GetSummonPosition(float &x, float &y, float &z, float radius = 0.0f, uint32 count = 0);
|
||||||
|
|
||||||
SpellCastResult CanOpenLock(uint32 effIndex, uint32 lockid, SkillType& skillid, int32& reqSkillValue, int32& skillValue);
|
SpellCastResult CanOpenLock(uint32 effIndex, uint32 lockid, SkillType& skillid, int32& reqSkillValue, int32& skillValue);
|
||||||
// -------------------------------------------
|
// -------------------------------------------
|
||||||
|
|
||||||
|
|||||||
+24
-57
@@ -3681,11 +3681,6 @@ void Spell::EffectSummonWild(uint32 i)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// select center of summon position
|
|
||||||
float center_x = m_targets.m_destX;
|
|
||||||
float center_y = m_targets.m_destY;
|
|
||||||
float center_z = m_targets.m_destZ;
|
|
||||||
|
|
||||||
float radius = GetSpellRadiusForHostile(sSpellRadiusStore.LookupEntry(m_spellInfo->EffectRadiusIndex[i]));
|
float radius = GetSpellRadiusForHostile(sSpellRadiusStore.LookupEntry(m_spellInfo->EffectRadiusIndex[i]));
|
||||||
|
|
||||||
int32 amount = damage > 0 ? damage : 1;
|
int32 amount = damage > 0 ? damage : 1;
|
||||||
@@ -3693,23 +3688,7 @@ void Spell::EffectSummonWild(uint32 i)
|
|||||||
for(int32 count = 0; count < amount; ++count)
|
for(int32 count = 0; count < amount; ++count)
|
||||||
{
|
{
|
||||||
float px, py, pz;
|
float px, py, pz;
|
||||||
// If dest location if present
|
GetSummonPosition(px, py, pz, radius, count);
|
||||||
if (m_targets.m_targetMask & TARGET_FLAG_DEST_LOCATION)
|
|
||||||
{
|
|
||||||
// Summon 1 unit in dest location
|
|
||||||
if (count == 0)
|
|
||||||
{
|
|
||||||
px = m_targets.m_destX;
|
|
||||||
py = m_targets.m_destY;
|
|
||||||
pz = m_targets.m_destZ;
|
|
||||||
}
|
|
||||||
// Summon in random point all other units if location present
|
|
||||||
else
|
|
||||||
m_caster->GetRandomPoint(center_x,center_y,center_z,radius,px,py,pz);
|
|
||||||
}
|
|
||||||
// Summon if dest location not present near caster
|
|
||||||
else
|
|
||||||
m_caster->GetClosePoint(px,py,pz,3.0f);
|
|
||||||
|
|
||||||
int32 duration = GetSpellDuration(m_spellInfo);
|
int32 duration = GetSpellDuration(m_spellInfo);
|
||||||
|
|
||||||
@@ -5586,10 +5565,8 @@ void Spell::EffectSummonTotem(uint32 i)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
float angle = slot < MAX_TOTEM ? M_PI/MAX_TOTEM - (slot*2*M_PI/MAX_TOTEM) : 0;
|
|
||||||
|
|
||||||
float x,y,z;
|
float x,y,z;
|
||||||
m_caster->GetClosePoint(x,y,z,pTotem->GetObjectSize(),2.0f,angle);
|
GetSummonPosition(x, y, z);
|
||||||
|
|
||||||
// totem must be at same Z in case swimming caster and etc.
|
// totem must be at same Z in case swimming caster and etc.
|
||||||
if( fabs( z - m_caster->GetPositionZ() ) > 5 )
|
if( fabs( z - m_caster->GetPositionZ() ) > 5 )
|
||||||
@@ -6051,16 +6028,7 @@ void Spell::EffectSummonCritter(uint32 i)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
float x,y,z;
|
float x,y,z;
|
||||||
// If dest location if present
|
GetSummonPosition(x, y, z);
|
||||||
if (m_targets.m_targetMask & TARGET_FLAG_DEST_LOCATION)
|
|
||||||
{
|
|
||||||
x = m_targets.m_destX;
|
|
||||||
y = m_targets.m_destY;
|
|
||||||
z = m_targets.m_destZ;
|
|
||||||
}
|
|
||||||
// Summon if dest location not present near caster
|
|
||||||
else
|
|
||||||
m_caster->GetClosePoint(x,y,z,m_caster->GetObjectSize());
|
|
||||||
|
|
||||||
int32 duration = GetSpellDuration(m_spellInfo);
|
int32 duration = GetSpellDuration(m_spellInfo);
|
||||||
TempSummonType summonType = (duration == 0) ? TEMPSUMMON_DEAD_DESPAWN : TEMPSUMMON_TIMED_DESPAWN;
|
TempSummonType summonType = (duration == 0) ? TEMPSUMMON_DEAD_DESPAWN : TEMPSUMMON_TIMED_DESPAWN;
|
||||||
@@ -6534,11 +6502,6 @@ void Spell::EffectSkill(uint32 /*i*/)
|
|||||||
|
|
||||||
void Spell::EffectSummonDemon(uint32 i)
|
void Spell::EffectSummonDemon(uint32 i)
|
||||||
{
|
{
|
||||||
// select center of summon position
|
|
||||||
float center_x = m_targets.m_destX;
|
|
||||||
float center_y = m_targets.m_destY;
|
|
||||||
float center_z = m_targets.m_destZ;
|
|
||||||
|
|
||||||
float radius = GetSpellRadiusForFriend(sSpellRadiusStore.LookupEntry(m_spellInfo->EffectRadiusIndex[i]));
|
float radius = GetSpellRadiusForFriend(sSpellRadiusStore.LookupEntry(m_spellInfo->EffectRadiusIndex[i]));
|
||||||
|
|
||||||
int32 amount = damage > 0 ? damage : 1;
|
int32 amount = damage > 0 ? damage : 1;
|
||||||
@@ -6546,23 +6509,7 @@ void Spell::EffectSummonDemon(uint32 i)
|
|||||||
for(int32 count = 0; count < amount; ++count)
|
for(int32 count = 0; count < amount; ++count)
|
||||||
{
|
{
|
||||||
float px, py, pz;
|
float px, py, pz;
|
||||||
// If dest location if present
|
GetSummonPosition(px, py, pz, radius, count);
|
||||||
if (m_targets.m_targetMask & TARGET_FLAG_DEST_LOCATION)
|
|
||||||
{
|
|
||||||
// Summon 1 unit in dest location
|
|
||||||
if (count == 0)
|
|
||||||
{
|
|
||||||
px = m_targets.m_destX;
|
|
||||||
py = m_targets.m_destY;
|
|
||||||
pz = m_targets.m_destZ;
|
|
||||||
}
|
|
||||||
// Summon in random point all other units if location present
|
|
||||||
else
|
|
||||||
m_caster->GetRandomPoint(center_x,center_y,center_z,radius,px,py,pz);
|
|
||||||
}
|
|
||||||
// Summon if dest location not present near caster
|
|
||||||
else
|
|
||||||
m_caster->GetClosePoint(px,py,pz,3.0f);
|
|
||||||
|
|
||||||
int32 duration = GetSpellDuration(m_spellInfo);
|
int32 duration = GetSpellDuration(m_spellInfo);
|
||||||
|
|
||||||
@@ -6773,6 +6720,26 @@ void Spell::EffectSummonVehicle(uint32 i)
|
|||||||
vehicle->SetUInt32Value(UNIT_CREATED_BY_SPELL, m_spellInfo->Id);
|
vehicle->SetUInt32Value(UNIT_CREATED_BY_SPELL, m_spellInfo->Id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Spell::GetSummonPosition(float &x, float &y, float &z, float radius, uint32 count)
|
||||||
|
{
|
||||||
|
if (m_targets.m_targetMask & TARGET_FLAG_DEST_LOCATION)
|
||||||
|
{
|
||||||
|
// Summon 1 unit in dest location
|
||||||
|
if (count == 0)
|
||||||
|
{
|
||||||
|
x = m_targets.m_destX;
|
||||||
|
y = m_targets.m_destY;
|
||||||
|
z = m_targets.m_destZ;
|
||||||
|
}
|
||||||
|
// Summon in random point all other units if location present
|
||||||
|
else
|
||||||
|
m_caster->GetRandomPoint(m_targets.m_destX,m_targets.m_destY,m_targets.m_destZ,radius,x,y,z);
|
||||||
|
}
|
||||||
|
// Summon if dest location not present near caster
|
||||||
|
else
|
||||||
|
m_caster->GetClosePoint(x,y,z,3.0f);
|
||||||
|
}
|
||||||
|
|
||||||
void Spell::EffectRenamePet(uint32 /*eff_idx*/)
|
void Spell::EffectRenamePet(uint32 /*eff_idx*/)
|
||||||
{
|
{
|
||||||
if (!unitTarget || unitTarget->GetTypeId() != TYPEID_UNIT ||
|
if (!unitTarget || unitTarget->GetTypeId() != TYPEID_UNIT ||
|
||||||
|
|||||||
+2
-1
@@ -822,7 +822,8 @@ enum ReactiveType
|
|||||||
};
|
};
|
||||||
|
|
||||||
#define MAX_REACTIVE 3
|
#define MAX_REACTIVE 3
|
||||||
#define MAX_TOTEM 6
|
#define MAX_TOTEM 4
|
||||||
|
#define MAX_SUMMON_SLOT 6
|
||||||
|
|
||||||
struct AuraSlotEntry
|
struct AuraSlotEntry
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user