*Merge.
--HG-- branch : trunk
This commit is contained in:
@@ -0,0 +1,5 @@
|
|||||||
|
DELETE FROM `spell_proc_event` WHERE `entry` IN (56337, 56336, 56333);
|
||||||
|
INSERT INTO `spell_proc_event` VALUES
|
||||||
|
(56337, 0x00, 9, 0x00000004, 0x00000000, 0x00000200, 0x00011100, 0x0000000, 0.000000, 0.000000, 0),
|
||||||
|
(56336, 0x00, 9, 0x00000004, 0x00000000, 0x00000200, 0x00011100, 0x0000000, 0.000000, 0.000000, 0),
|
||||||
|
(56333, 0x00, 9, 0x00000004, 0x00000000, 0x00000200, 0x00011100, 0x0000000, 0.000000, 0.000000, 0);
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
UPDATE creature_template SET ScriptName='npc_kingdom_of_dalaran_quests' WHERE entry IN (29169,23729,26673,27158,29158,29161,26471,29155,29159,29160,29162);
|
||||||
|
DELETE FROM spell_target_position WHERE id=53360;
|
||||||
|
INSERT INTO spell_target_position VALUES
|
||||||
|
(53360, 571, 5807.829, 587.960, 660.939, 1.663);
|
||||||
@@ -29,6 +29,7 @@ npc_guardian 100% guardianAI used to prevent players from accessin
|
|||||||
npc_garments_of_quests 80% NPC's related to all Garments of-quests 5621, 5624, 5625, 5648, 565
|
npc_garments_of_quests 80% NPC's related to all Garments of-quests 5621, 5624, 5625, 5648, 565
|
||||||
npc_injured_patient 100% patients for triage-quests (6622 and 6624)
|
npc_injured_patient 100% patients for triage-quests (6622 and 6624)
|
||||||
npc_doctor 100% Gustaf Vanhowzen and Gregory Victor, quest 6622 and 6624 (Triage)
|
npc_doctor 100% Gustaf Vanhowzen and Gregory Victor, quest 6622 and 6624 (Triage)
|
||||||
|
npc_kingdom_of_dalaran_quests Misc NPC's gossip option related to quests 12791, 12794 and 12796
|
||||||
npc_mount_vendor 100% Regular mount vendors all over the world. Display gossip if player doesn't meet the requirements to buy
|
npc_mount_vendor 100% Regular mount vendors all over the world. Display gossip if player doesn't meet the requirements to buy
|
||||||
npc_rogue_trainer 80% Scripted trainers, so they are able to offer item 17126 for class quest 6681
|
npc_rogue_trainer 80% Scripted trainers, so they are able to offer item 17126 for class quest 6681
|
||||||
npc_sayge 100% Darkmoon event fortune teller, buff player based on answers given
|
npc_sayge 100% Darkmoon event fortune teller, buff player based on answers given
|
||||||
@@ -876,6 +877,44 @@ CreatureAI* GetAI_npc_guardian(Creature *_Creature)
|
|||||||
return new npc_guardianAI (_Creature);
|
return new npc_guardianAI (_Creature);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*######
|
||||||
|
## npc_kingdom_of_dalaran_quests
|
||||||
|
######*/
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
SPELL_TELEPORT_DALARAN = 53360,
|
||||||
|
ITEM_KT_SIGNET = 39740,
|
||||||
|
QUEST_MAGICAL_KINGDOM_A = 12794,
|
||||||
|
QUEST_MAGICAL_KINGDOM_H = 12791,
|
||||||
|
QUEST_MAGICAL_KINGDOM_N = 12796
|
||||||
|
};
|
||||||
|
|
||||||
|
#define GOSSIP_ITEM_TELEPORT_TO "I am ready to be teleported to Dalaran."
|
||||||
|
|
||||||
|
bool GossipHello_npc_kingdom_of_dalaran_quests(Player* pPlayer, Creature* pCreature)
|
||||||
|
{
|
||||||
|
if (pCreature->isQuestGiver())
|
||||||
|
pPlayer->PrepareQuestMenu(pCreature->GetGUID());
|
||||||
|
|
||||||
|
if (pPlayer->HasItemCount(ITEM_KT_SIGNET,1) && (!pPlayer->GetQuestRewardStatus(QUEST_MAGICAL_KINGDOM_A) ||
|
||||||
|
!pPlayer->GetQuestRewardStatus(QUEST_MAGICAL_KINGDOM_H) || !pPlayer->GetQuestRewardStatus(QUEST_MAGICAL_KINGDOM_N)))
|
||||||
|
pPlayer->ADD_GOSSIP_ITEM(0, GOSSIP_ITEM_TELEPORT_TO, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
|
||||||
|
|
||||||
|
pPlayer->SEND_GOSSIP_MENU(pCreature->GetNpcTextId(), pCreature->GetGUID());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool GossipSelect_npc_kingdom_of_dalaran_quests(Player* pPlayer, Creature* pCreature, uint32 uiSender, uint32 uiAction)
|
||||||
|
{
|
||||||
|
if (uiAction == GOSSIP_ACTION_INFO_DEF+1)
|
||||||
|
{
|
||||||
|
pPlayer->CLOSE_GOSSIP_MENU();
|
||||||
|
pPlayer->CastSpell(pPlayer,SPELL_TELEPORT_DALARAN,false);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/*######
|
/*######
|
||||||
## npc_mount_vendor
|
## npc_mount_vendor
|
||||||
######*/
|
######*/
|
||||||
@@ -1417,6 +1456,12 @@ void AddSC_npcs_special()
|
|||||||
newscript->GetAI = &GetAI_npc_guardian;
|
newscript->GetAI = &GetAI_npc_guardian;
|
||||||
newscript->RegisterSelf();
|
newscript->RegisterSelf();
|
||||||
|
|
||||||
|
newscript = new Script;
|
||||||
|
newscript->Name="npc_kingdom_of_dalaran_quests";
|
||||||
|
newscript->pGossipHello = &GossipHello_npc_kingdom_of_dalaran_quests;
|
||||||
|
newscript->pGossipSelect = &GossipSelect_npc_kingdom_of_dalaran_quests;
|
||||||
|
newscript->RegisterSelf();
|
||||||
|
|
||||||
newscript = new Script;
|
newscript = new Script;
|
||||||
newscript->Name="npc_mount_vendor";
|
newscript->Name="npc_mount_vendor";
|
||||||
newscript->pGossipHello = &GossipHello_npc_mount_vendor;
|
newscript->pGossipHello = &GossipHello_npc_mount_vendor;
|
||||||
|
|||||||
@@ -3240,6 +3240,7 @@ void Player::_LoadSpellCooldowns(QueryResult *result)
|
|||||||
// some cooldowns can be already set at aura loading...
|
// some cooldowns can be already set at aura loading...
|
||||||
|
|
||||||
//QueryResult *result = CharacterDatabase.PQuery("SELECT spell,item,time FROM character_spell_cooldown WHERE guid = '%u'",GetGUIDLow());
|
//QueryResult *result = CharacterDatabase.PQuery("SELECT spell,item,time FROM character_spell_cooldown WHERE guid = '%u'",GetGUIDLow());
|
||||||
|
|
||||||
if(result)
|
if(result)
|
||||||
{
|
{
|
||||||
time_t curTime = time(NULL);
|
time_t curTime = time(NULL);
|
||||||
|
|||||||
+3
-5
@@ -1108,8 +1108,8 @@ void Spell::DoSpellHitOnUnit(Unit *unit, const uint32 effectMask)
|
|||||||
}
|
}
|
||||||
|
|
||||||
unit->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_HITBYSPELL);
|
unit->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_HITBYSPELL);
|
||||||
//if(m_customAttr & SPELL_ATTR_CU_AURA_CC)
|
if(m_customAttr & SPELL_ATTR_CU_AURA_CC)
|
||||||
//unit->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_CC);
|
unit->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_CC);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -1246,6 +1246,7 @@ void Spell::DoSpellHitOnUnit(Unit *unit, const uint32 effectMask)
|
|||||||
_duration = aur ? aur->GetAuraDuration() : -1;
|
_duration = aur ? aur->GetAuraDuration() : -1;
|
||||||
}
|
}
|
||||||
triggeredAur->SetAuraDuration(_duration);
|
triggeredAur->SetAuraDuration(_duration);
|
||||||
|
triggeredAur->SetPermanent(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2212,9 +2213,6 @@ void Spell::prepare(SpellCastTargets const* targets, AuraEffect* triggeredByAura
|
|||||||
if(isSpellBreakStealth(m_spellInfo) )
|
if(isSpellBreakStealth(m_spellInfo) )
|
||||||
m_caster->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_CAST);
|
m_caster->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_CAST);
|
||||||
|
|
||||||
if(!m_IsTriggeredSpell)
|
|
||||||
m_caster->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_ANY_CAST);
|
|
||||||
|
|
||||||
m_caster->SetCurrentCastedSpell( this );
|
m_caster->SetCurrentCastedSpell( this );
|
||||||
m_selfContainer = &(m_caster->m_currentSpells[GetCurrentContainer()]);
|
m_selfContainer = &(m_caster->m_currentSpells[GetCurrentContainer()]);
|
||||||
SendSpellStart();
|
SendSpellStart();
|
||||||
|
|||||||
@@ -1209,11 +1209,10 @@ void Aura::SetStackAmount(uint8 stackAmount)
|
|||||||
// Reapply if amount change
|
// Reapply if amount change
|
||||||
if (amount!=part->GetAmount())
|
if (amount!=part->GetAmount())
|
||||||
{
|
{
|
||||||
bool Real = bool (part->m_spellmod);
|
|
||||||
// Auras which are applying spellmod should have removed spellmods for real
|
// Auras which are applying spellmod should have removed spellmods for real
|
||||||
part->ApplyModifier(false,Real);
|
part->ApplyModifier(false,true);
|
||||||
part->SetAmount(amount);
|
part->SetAmount(amount);
|
||||||
part->ApplyModifier(true, Real);
|
part->ApplyModifier(true,true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -94,6 +94,7 @@ class TRINITY_DLL_SPEC Aura
|
|||||||
void SetNegative() { m_positive = false; }
|
void SetNegative() { m_positive = false; }
|
||||||
void SetPositive() { m_positive = true; }
|
void SetPositive() { m_positive = true; }
|
||||||
bool IsPermanent() const { return m_permanent; }
|
bool IsPermanent() const { return m_permanent; }
|
||||||
|
void SetPermanent(bool val) { m_permanent = val; }
|
||||||
|
|
||||||
bool IsPassive() const { return m_isPassive; }
|
bool IsPassive() const { return m_isPassive; }
|
||||||
bool IsDeathPersistent() const { return m_isDeathPersist; }
|
bool IsDeathPersistent() const { return m_isDeathPersist; }
|
||||||
|
|||||||
@@ -701,7 +701,7 @@ void Player::UpdateManaRegen()
|
|||||||
int32 modManaRegenInterrupt = GetTotalAuraModifier(SPELL_AURA_MOD_MANA_REGEN_INTERRUPT);
|
int32 modManaRegenInterrupt = GetTotalAuraModifier(SPELL_AURA_MOD_MANA_REGEN_INTERRUPT);
|
||||||
if (modManaRegenInterrupt > 100)
|
if (modManaRegenInterrupt > 100)
|
||||||
modManaRegenInterrupt = 100;
|
modManaRegenInterrupt = 100;
|
||||||
SetStatFloatValue(UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER, (power_regen_mp5 + power_regen) * modManaRegenInterrupt / 100.0f);
|
SetStatFloatValue(UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER, power_regen_mp5 + power_regen * modManaRegenInterrupt / 100.0f);
|
||||||
|
|
||||||
SetStatFloatValue(UNIT_FIELD_POWER_REGEN_FLAT_MODIFIER, power_regen_mp5 + power_regen);
|
SetStatFloatValue(UNIT_FIELD_POWER_REGEN_FLAT_MODIFIER, power_regen_mp5 + power_regen);
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-5
@@ -9017,10 +9017,11 @@ uint32 Unit::SpellHealingBonus(Unit *pVictim, SpellEntry const *spellProto, uint
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
coeff = (CastingTime / 3500.0f) * DotFactor;
|
// As wowwiki says: C = (Cast Time / 3.5) * 1.88 (for healing spells)
|
||||||
|
coeff = (CastingTime / 3500.0f) * DotFactor * 1.88f;
|
||||||
}
|
}
|
||||||
|
|
||||||
float coeff2 = CalculateLevelPenalty(spellProto) * 1.88f * stack;
|
float coeff2 = CalculateLevelPenalty(spellProto)* stack;
|
||||||
TakenTotal += TakenAdvertisedBenefit * coeff * coeff2;
|
TakenTotal += TakenAdvertisedBenefit * coeff * coeff2;
|
||||||
if(Player* modOwner = GetSpellModOwner())
|
if(Player* modOwner = GetSpellModOwner())
|
||||||
{
|
{
|
||||||
@@ -9043,7 +9044,7 @@ uint32 Unit::SpellHealingBonus(Unit *pVictim, SpellEntry const *spellProto, uint
|
|||||||
// Rejuvenation, Regrowth, Lifebloom, or Wild Growth
|
// Rejuvenation, Regrowth, Lifebloom, or Wild Growth
|
||||||
if (pVictim->GetAura(SPELL_AURA_PERIODIC_HEAL, SPELLFAMILY_DRUID, 0x50, 0x4000010, 0))
|
if (pVictim->GetAura(SPELL_AURA_PERIODIC_HEAL, SPELLFAMILY_DRUID, 0x50, 0x4000010, 0))
|
||||||
//increase healing by 20%
|
//increase healing by 20%
|
||||||
DoneTotalMod *= 1.2f;
|
TakenTotalMod *= 1.2f;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Taken mods
|
// Taken mods
|
||||||
@@ -9069,11 +9070,11 @@ uint32 Unit::SpellHealingBonus(Unit *pVictim, SpellEntry const *spellProto, uint
|
|||||||
if(damagetype==DOT)
|
if(damagetype==DOT)
|
||||||
{
|
{
|
||||||
// Healing over time taken percent
|
// Healing over time taken percent
|
||||||
float minval_hot = GetMaxNegativeAuraModifier(SPELL_AURA_MOD_HOT_PCT);
|
float minval_hot = pVictim->GetMaxNegativeAuraModifier(SPELL_AURA_MOD_HOT_PCT);
|
||||||
if(minval_hot)
|
if(minval_hot)
|
||||||
TakenTotalMod *= (100.0f + minval_hot) / 100.0f;
|
TakenTotalMod *= (100.0f + minval_hot) / 100.0f;
|
||||||
|
|
||||||
float maxval_hot = GetMaxPositiveAuraModifier(SPELL_AURA_MOD_HOT_PCT);
|
float maxval_hot = pVictim->GetMaxPositiveAuraModifier(SPELL_AURA_MOD_HOT_PCT);
|
||||||
if(maxval_hot)
|
if(maxval_hot)
|
||||||
TakenTotalMod *= (100.0f + maxval_hot) / 100.0f;
|
TakenTotalMod *= (100.0f + maxval_hot) / 100.0f;
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-4
@@ -59,9 +59,9 @@ enum SpellChannelInterruptFlags
|
|||||||
|
|
||||||
enum SpellAuraInterruptFlags
|
enum SpellAuraInterruptFlags
|
||||||
{
|
{
|
||||||
AURA_INTERRUPT_FLAG_ANY_CAST = 0x00000001, // 0 removed by any cast
|
AURA_INTERRUPT_FLAG_HITBYSPELL = 0x00000001, // 0 removed when getting hit by a negative spell?
|
||||||
AURA_INTERRUPT_FLAG_DAMAGE = 0x00000002, // 1 removed by any damage
|
AURA_INTERRUPT_FLAG_DAMAGE = 0x00000002, // 1 removed by any damage
|
||||||
AURA_INTERRUPT_FLAG_HITBYSPELL = 0x00000004, // 2 removed when getting hit by a negative spell? aoe damage?
|
AURA_INTERRUPT_FLAG_CC = 0x00000004, // 2 crowd control
|
||||||
AURA_INTERRUPT_FLAG_MOVE = 0x00000008, // 3 removed by any movement
|
AURA_INTERRUPT_FLAG_MOVE = 0x00000008, // 3 removed by any movement
|
||||||
AURA_INTERRUPT_FLAG_TURNING = 0x00000010, // 4 removed by any turning
|
AURA_INTERRUPT_FLAG_TURNING = 0x00000010, // 4 removed by any turning
|
||||||
AURA_INTERRUPT_FLAG_JUMP = 0x00000020, // 5 removed by entering combat
|
AURA_INTERRUPT_FLAG_JUMP = 0x00000020, // 5 removed by entering combat
|
||||||
@@ -71,8 +71,8 @@ enum SpellAuraInterruptFlags
|
|||||||
AURA_INTERRUPT_FLAG_NOT_SHEATHED = 0x00000200, // 9 removed by unsheathing
|
AURA_INTERRUPT_FLAG_NOT_SHEATHED = 0x00000200, // 9 removed by unsheathing
|
||||||
AURA_INTERRUPT_FLAG_TALK = 0x00000400, // 10 talk to npc / loot? action on creature
|
AURA_INTERRUPT_FLAG_TALK = 0x00000400, // 10 talk to npc / loot? action on creature
|
||||||
AURA_INTERRUPT_FLAG_USE = 0x00000800, // 11 mine/use/open action on gameobject
|
AURA_INTERRUPT_FLAG_USE = 0x00000800, // 11 mine/use/open action on gameobject
|
||||||
AURA_INTERRUPT_FLAG_ATTACK = 0x00001000, // 12 removed by attacking (negative spell cast?)
|
AURA_INTERRUPT_FLAG_ATTACK = 0x00001000, // 12 removed by attacking
|
||||||
AURA_INTERRUPT_FLAG_CAST = 0x00002000, // 13 cast stealth breaking spell
|
AURA_INTERRUPT_FLAG_CAST = 0x00002000, // 13 ???
|
||||||
AURA_INTERRUPT_FLAG_UNK14 = 0x00004000, // 14
|
AURA_INTERRUPT_FLAG_UNK14 = 0x00004000, // 14
|
||||||
AURA_INTERRUPT_FLAG_TRANSFORM = 0x00008000, // 15 removed by transform?
|
AURA_INTERRUPT_FLAG_TRANSFORM = 0x00008000, // 15 removed by transform?
|
||||||
AURA_INTERRUPT_FLAG_UNK16 = 0x00010000, // 16
|
AURA_INTERRUPT_FLAG_UNK16 = 0x00010000, // 16
|
||||||
|
|||||||
Reference in New Issue
Block a user