mirror of
https://github.com/mangosfour/server.git
synced 2025-12-14 16:37:01 +00:00
Merge commit 'origin/master' into 310
Conflicts: src/game/Player.cpp
This commit is contained in:
commit
950a4bf13f
52 changed files with 623 additions and 474 deletions
|
|
@ -796,7 +796,7 @@ void Spell::EffectDummy(uint32 i)
|
|||
// create before death for get proper coordinates
|
||||
if(!pGameObj->Create(objmgr.GenerateLowGuid(HIGHGUID_GAMEOBJECT), 179644, map, m_caster->GetPhaseMask(),
|
||||
creatureTarget->GetPositionX(), creatureTarget->GetPositionY(), creatureTarget->GetPositionZ(),
|
||||
creatureTarget->GetOrientation(), 0.0f, 0.0f, 0.0f, 0.0f, 100, 1) )
|
||||
creatureTarget->GetOrientation(), 0.0f, 0.0f, 0.0f, 0.0f, 100, GO_STATE_READY) )
|
||||
{
|
||||
delete pGameObj;
|
||||
return;
|
||||
|
|
@ -888,7 +888,7 @@ void Spell::EffectDummy(uint32 i)
|
|||
// return; -- implemented at client side
|
||||
case 28006: // Arcane Cloaking
|
||||
{
|
||||
if( unitTarget->GetTypeId() == TYPEID_PLAYER )
|
||||
if (unitTarget && unitTarget->GetTypeId() == TYPEID_PLAYER )
|
||||
m_caster->CastSpell(unitTarget,29294,true);
|
||||
return;
|
||||
}
|
||||
|
|
@ -1292,7 +1292,7 @@ void Spell::EffectDummy(uint32 i)
|
|||
}
|
||||
// Think its not need (also need remove Life Tap from SpellDamageBonus or add new value)
|
||||
// damage = m_caster->SpellDamageBonus(m_caster, m_spellInfo,uint32(damage > 0 ? damage : 0), SPELL_DIRECT_DAMAGE);
|
||||
if(int32(unitTarget->GetHealth()) > damage)
|
||||
if(unitTarget && (int32(unitTarget->GetHealth()) > damage))
|
||||
{
|
||||
// Shouldn't Appear in Combat Log
|
||||
unitTarget->ModifyHealth(-damage);
|
||||
|
|
@ -1681,9 +1681,9 @@ void Spell::EffectDummy(uint32 i)
|
|||
if(m_caster->GetTypeId() != TYPEID_PLAYER)
|
||||
return;
|
||||
|
||||
for(int i = BASE_ATTACK; i <= OFF_ATTACK; ++i)
|
||||
for(int j = BASE_ATTACK; j <= OFF_ATTACK; ++j)
|
||||
{
|
||||
if(Item* item = ((Player*)m_caster)->GetWeaponForAttack(WeaponAttackType(i)))
|
||||
if(Item* item = ((Player*)m_caster)->GetWeaponForAttack(WeaponAttackType(j)))
|
||||
{
|
||||
if(item->IsFitToSpellRequirements(m_spellInfo))
|
||||
{
|
||||
|
|
@ -1912,7 +1912,7 @@ void Spell::EffectTriggerSpell(uint32 i)
|
|||
if (!spell)
|
||||
return;
|
||||
|
||||
for (int i=0; i < spell->StackAmount; ++i)
|
||||
for (int j=0; j < spell->StackAmount; ++j)
|
||||
m_caster->CastSpell(unitTarget,spell->Id, true, m_CastItem, NULL, m_originalCasterGUID);
|
||||
return;
|
||||
}
|
||||
|
|
@ -1923,7 +1923,7 @@ void Spell::EffectTriggerSpell(uint32 i)
|
|||
if (!spell)
|
||||
return;
|
||||
|
||||
for (int i=0; i < spell->StackAmount; ++i)
|
||||
for (int j=0; j < spell->StackAmount; ++j)
|
||||
m_caster->CastSpell(unitTarget,spell->Id, true, m_CastItem, NULL, m_originalCasterGUID);
|
||||
return;
|
||||
}
|
||||
|
|
@ -3044,10 +3044,10 @@ void Spell::EffectSummonChangeItem(uint32 i)
|
|||
if( !pNewItem )
|
||||
return;
|
||||
|
||||
for(uint8 i= PERM_ENCHANTMENT_SLOT; i<=TEMP_ENCHANTMENT_SLOT; ++i)
|
||||
for(uint8 j= PERM_ENCHANTMENT_SLOT; j<=TEMP_ENCHANTMENT_SLOT; ++j)
|
||||
{
|
||||
if(m_CastItem->GetEnchantmentId(EnchantmentSlot(i)))
|
||||
pNewItem->SetEnchantment(EnchantmentSlot(i), m_CastItem->GetEnchantmentId(EnchantmentSlot(i)), m_CastItem->GetEnchantmentDuration(EnchantmentSlot(i)), m_CastItem->GetEnchantmentCharges(EnchantmentSlot(i)));
|
||||
if(m_CastItem->GetEnchantmentId(EnchantmentSlot(j)))
|
||||
pNewItem->SetEnchantment(EnchantmentSlot(j), m_CastItem->GetEnchantmentId(EnchantmentSlot(j)), m_CastItem->GetEnchantmentDuration(EnchantmentSlot(j)), m_CastItem->GetEnchantmentCharges(EnchantmentSlot(j)));
|
||||
}
|
||||
|
||||
if(m_CastItem->GetUInt32Value(ITEM_FIELD_DURABILITY) < m_CastItem->GetUInt32Value(ITEM_FIELD_MAXDURABILITY))
|
||||
|
|
@ -4251,11 +4251,14 @@ void Spell::EffectLearnPetSpell(uint32 i)
|
|||
|
||||
void Spell::EffectTaunt(uint32 /*i*/)
|
||||
{
|
||||
if (!unitTarget)
|
||||
return;
|
||||
|
||||
// this effect use before aura Taunt apply for prevent taunt already attacking target
|
||||
// for spell as marked "non effective at already attacking target"
|
||||
if(unitTarget && unitTarget->GetTypeId() != TYPEID_PLAYER)
|
||||
if (unitTarget->GetTypeId() != TYPEID_PLAYER)
|
||||
{
|
||||
if(unitTarget->getVictim()==m_caster)
|
||||
if (unitTarget->getVictim()==m_caster)
|
||||
{
|
||||
SendCastResult(SPELL_FAILED_DONT_REPORT);
|
||||
return;
|
||||
|
|
@ -4263,7 +4266,7 @@ void Spell::EffectTaunt(uint32 /*i*/)
|
|||
}
|
||||
|
||||
// Also use this effect to set the taunter's threat to the taunted creature's highest value
|
||||
if(unitTarget->CanHaveThreatList() && unitTarget->getThreatManager().getCurrentVictim())
|
||||
if (unitTarget->CanHaveThreatList() && unitTarget->getThreatManager().getCurrentVictim())
|
||||
unitTarget->getThreatManager().addThreat(m_caster,unitTarget->getThreatManager().getCurrentVictim()->getThreat());
|
||||
}
|
||||
|
||||
|
|
@ -4377,12 +4380,12 @@ void Spell::EffectWeaponDmg(uint32 i)
|
|||
if(m_spellInfo->SpellFamilyFlags & 0x001000000000LL)
|
||||
{
|
||||
Unit::AuraList const& m_OverrideClassScript = m_caster->GetAurasByType(SPELL_AURA_OVERRIDE_CLASS_SCRIPTS);
|
||||
for(Unit::AuraList::const_iterator i = m_OverrideClassScript.begin(); i != m_OverrideClassScript.end(); ++i)
|
||||
for(Unit::AuraList::const_iterator citr = m_OverrideClassScript.begin(); citr != m_OverrideClassScript.end(); ++citr)
|
||||
{
|
||||
// Stormstrike AP Buff
|
||||
if ( (*i)->GetModifier()->m_miscvalue == 5634 )
|
||||
if ( (*citr)->GetModifier()->m_miscvalue == 5634 )
|
||||
{
|
||||
m_caster->CastSpell(m_caster,38430,true,NULL,*i);
|
||||
m_caster->CastSpell(m_caster,38430,true,NULL,*citr);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -4561,7 +4564,7 @@ void Spell::EffectSummonObjectWild(uint32 i)
|
|||
Map *map = target->GetMap();
|
||||
|
||||
if(!pGameObj->Create(objmgr.GenerateLowGuid(HIGHGUID_GAMEOBJECT), gameobject_id, map,
|
||||
m_caster->GetPhaseMask(), x, y, z, target->GetOrientation(), 0.0f, 0.0f, 0.0f, 0.0f, 100, 1))
|
||||
m_caster->GetPhaseMask(), x, y, z, target->GetOrientation(), 0.0f, 0.0f, 0.0f, 0.0f, 100, GO_STATE_READY))
|
||||
{
|
||||
delete pGameObj;
|
||||
return;
|
||||
|
|
@ -4609,7 +4612,7 @@ void Spell::EffectSummonObjectWild(uint32 i)
|
|||
{
|
||||
GameObject* linkedGO = new GameObject;
|
||||
if(linkedGO->Create(objmgr.GenerateLowGuid(HIGHGUID_GAMEOBJECT), linkedEntry, map,
|
||||
m_caster->GetPhaseMask(), x, y, z, target->GetOrientation(), 0.0f, 0.0f, 0.0f, 0.0f, 100, 1))
|
||||
m_caster->GetPhaseMask(), x, y, z, target->GetOrientation(), 0.0f, 0.0f, 0.0f, 0.0f, 100, GO_STATE_READY))
|
||||
{
|
||||
linkedGO->SetRespawnTime(duration > 0 ? duration/IN_MILISECONDS : 0);
|
||||
linkedGO->SetSpellId(m_spellInfo->Id);
|
||||
|
|
@ -4832,7 +4835,7 @@ void Spell::EffectScriptEffect(uint32 effIndex)
|
|||
if(!unitTarget)
|
||||
return;
|
||||
|
||||
uint32 spellId;
|
||||
uint32 spellId = 0;
|
||||
switch(rand()%4)
|
||||
{
|
||||
case 0: spellId = 46740; break;
|
||||
|
|
@ -5263,7 +5266,7 @@ void Spell::EffectDuel(uint32 i)
|
|||
m_caster->GetPositionX()+(unitTarget->GetPositionX()-m_caster->GetPositionX())/2 ,
|
||||
m_caster->GetPositionY()+(unitTarget->GetPositionY()-m_caster->GetPositionY())/2 ,
|
||||
m_caster->GetPositionZ(),
|
||||
m_caster->GetOrientation(), 0.0f, 0.0f, 0.0f, 0.0f, 0, 1))
|
||||
m_caster->GetOrientation(), 0.0f, 0.0f, 0.0f, 0.0f, 0, GO_STATE_READY))
|
||||
{
|
||||
delete pGameObj;
|
||||
return;
|
||||
|
|
@ -5653,7 +5656,7 @@ void Spell::EffectSummonObject(uint32 i)
|
|||
|
||||
Map *map = m_caster->GetMap();
|
||||
if(!pGameObj->Create(objmgr.GenerateLowGuid(HIGHGUID_GAMEOBJECT), go_id, map,
|
||||
m_caster->GetPhaseMask(), x, y, z, m_caster->GetOrientation(), 0.0f, 0.0f, 0.0f, 0.0f, 0, 1))
|
||||
m_caster->GetPhaseMask(), x, y, z, m_caster->GetOrientation(), 0.0f, 0.0f, 0.0f, 0.0f, 0, GO_STATE_READY))
|
||||
{
|
||||
delete pGameObj;
|
||||
return;
|
||||
|
|
@ -6243,7 +6246,7 @@ void Spell::EffectTransmitted(uint32 effIndex)
|
|||
GameObject* pGameObj = new GameObject;
|
||||
|
||||
if(!pGameObj->Create(objmgr.GenerateLowGuid(HIGHGUID_GAMEOBJECT), name_id, cMap,
|
||||
m_caster->GetPhaseMask(), fx, fy, fz, m_caster->GetOrientation(), 0.0f, 0.0f, 0.0f, 0.0f, 100, 1))
|
||||
m_caster->GetPhaseMask(), fx, fy, fz, m_caster->GetOrientation(), 0.0f, 0.0f, 0.0f, 0.0f, 100, GO_STATE_READY))
|
||||
{
|
||||
delete pGameObj;
|
||||
return;
|
||||
|
|
@ -6260,7 +6263,7 @@ void Spell::EffectTransmitted(uint32 effIndex)
|
|||
|
||||
// end time of range when possible catch fish (FISHING_BOBBER_READY_TIME..GetDuration(m_spellInfo))
|
||||
// start time == fish-FISHING_BOBBER_READY_TIME (0..GetDuration(m_spellInfo)-FISHING_BOBBER_READY_TIME)
|
||||
int32 lastSec;
|
||||
int32 lastSec = 0;
|
||||
switch(urand(0, 3))
|
||||
{
|
||||
case 0: lastSec = 3; break;
|
||||
|
|
@ -6310,7 +6313,7 @@ void Spell::EffectTransmitted(uint32 effIndex)
|
|||
{
|
||||
GameObject* linkedGO = new GameObject;
|
||||
if(linkedGO->Create(objmgr.GenerateLowGuid(HIGHGUID_GAMEOBJECT), linkedEntry, cMap,
|
||||
m_caster->GetPhaseMask(), fx, fy, fz, m_caster->GetOrientation(), 0.0f, 0.0f, 0.0f, 0.0f, 100, 1))
|
||||
m_caster->GetPhaseMask(), fx, fy, fz, m_caster->GetOrientation(), 0.0f, 0.0f, 0.0f, 0.0f, 100, GO_STATE_READY))
|
||||
{
|
||||
linkedGO->SetRespawnTime(duration > 0 ? duration/IN_MILISECONDS : 0);
|
||||
linkedGO->SetUInt32Value(GAMEOBJECT_LEVEL, m_caster->getLevel() );
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue