aboutsummaryrefslogtreecommitdiff
path: root/src/server/game
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game')
-rw-r--r--src/server/game/AI/SmartScripts/SmartScript.cpp38
-rw-r--r--src/server/game/AI/SmartScripts/SmartScriptMgr.cpp9
-rw-r--r--src/server/game/AI/SmartScripts/SmartScriptMgr.h11
-rw-r--r--src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp2
-rw-r--r--src/server/game/Scripting/ScriptLoader.cpp29
-rw-r--r--src/server/game/Scripting/ScriptLoader.h1
-rw-r--r--src/server/game/Spells/SpellEffects.cpp8
7 files changed, 82 insertions, 16 deletions
diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp
index ca5b50ea568..65b1e6c331e 100644
--- a/src/server/game/AI/SmartScripts/SmartScript.cpp
+++ b/src/server/game/AI/SmartScripts/SmartScript.cpp
@@ -2075,13 +2075,47 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
GetBaseObject()->SummonCreatureGroup(e.action.creatureGroup.group, &summonList);
for (std::list<TempSummon*>::const_iterator itr = summonList.begin(); itr != summonList.end(); ++itr)
- {
if (unit && e.action.creatureGroup.attackInvoker)
(*itr)->AI()->AttackStart(unit);
- }
break;
}
+ case SMART_ACTION_SET_POWER:
+ {
+ ObjectList* targets = GetTargets(e, unit);
+
+ if (targets)
+ for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr)
+ if (IsUnit(*itr))
+ (*itr)->ToUnit()->SetPower(Powers(e.action.power.powerType), e.action.power.newPower);
+
+ delete targets;
+ break;
+ }
+ case SMART_ACTION_ADD_POWER:
+ {
+ ObjectList* targets = GetTargets(e, unit);
+
+ if (targets)
+ for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr)
+ if (IsUnit(*itr))
+ (*itr)->ToUnit()->SetPower(Powers(e.action.power.powerType), (*itr)->ToUnit()->GetPower(Powers(e.action.power.powerType)) + e.action.power.newPower);
+
+ delete targets;
+ break;
+ }
+ case SMART_ACTION_REMOVE_POWER:
+ {
+ ObjectList* targets = GetTargets(e, unit);
+
+ if (targets)
+ for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr)
+ if (IsUnit(*itr))
+ (*itr)->ToUnit()->SetPower(Powers(e.action.power.powerType), (*itr)->ToUnit()->GetPower(Powers(e.action.power.powerType)) - e.action.power.newPower);
+
+ delete targets;
+ break;
+ }
default:
TC_LOG_ERROR(LOG_FILTER_SQL, "SmartScript::ProcessAction: Entry %d SourceType %u, Event %u, Unhandled Action type %u", e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType());
break;
diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp
index 5fb3e2481c7..99693355d70 100644
--- a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp
+++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp
@@ -831,6 +831,15 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e)
return false;
break;
}
+ case SMART_ACTION_SET_POWER:
+ case SMART_ACTION_ADD_POWER:
+ case SMART_ACTION_REMOVE_POWER:
+ if (e.action.power.powerType > MAX_POWERS)
+ {
+ TC_LOG_ERROR(LOG_FILTER_SQL, "SmartAIMgr: Entry %d SourceType %u Event %u Action %u uses non-existent Power %u, skipped.", e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType(), e.action.power.powerType);
+ return false;
+ }
+ break;
case SMART_ACTION_FOLLOW:
case SMART_ACTION_SET_ORIENTATION:
case SMART_ACTION_STORE_TARGET_LIST:
diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.h b/src/server/game/AI/SmartScripts/SmartScriptMgr.h
index 2f8c3cc33ab..740be9276b2 100644
--- a/src/server/game/AI/SmartScripts/SmartScriptMgr.h
+++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.h
@@ -489,8 +489,11 @@ enum SMART_ACTION
SMART_ACTION_ADD_GO_FLAG = 105, // Flags
SMART_ACTION_REMOVE_GO_FLAG = 106, // Flags
SMART_ACTION_SUMMON_CREATURE_GROUP = 107, // Group, attackInvoker
+ SMART_ACTION_SET_POWER = 108, // PowerType, newPower
+ SMART_ACTION_ADD_POWER = 109, // PowerType, newPower
+ SMART_ACTION_REMOVE_POWER = 110, // PowerType, newPower
- SMART_ACTION_END = 108
+ SMART_ACTION_END = 111
};
struct SmartAction
@@ -938,6 +941,12 @@ struct SmartAction
uint32 attackInvoker;
} creatureGroup;
+ struct
+ {
+ uint32 powerType;
+ uint32 newPower;
+ } power;
+
//! Note for any new future actions
//! All parameters must have type uint32
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp
index 3be95a86ca8..f8c9e888176 100644
--- a/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp
@@ -1623,7 +1623,7 @@ void BattlegroundAV::ResetBGSubclass()
bool BattlegroundAV::CheckAchievementCriteriaMeet(uint32 criteriaId, Player const* source, Unit const* target, uint32 miscValue)
{
- uint8 team = source->GetTeam();
+ uint32 team = source->GetTeam();
switch (criteriaId)
{
case BG_CRITERIA_CHECK_EVERYTHING_COUNTS:
diff --git a/src/server/game/Scripting/ScriptLoader.cpp b/src/server/game/Scripting/ScriptLoader.cpp
index 8e2fc2953c9..76defc03da4 100644
--- a/src/server/game/Scripting/ScriptLoader.cpp
+++ b/src/server/game/Scripting/ScriptLoader.cpp
@@ -340,8 +340,9 @@ void AddSC_npc_anubisath_sentinel();
void AddSC_instance_temple_of_ahnqiraj();
void AddSC_wailing_caverns(); //Wailing caverns
void AddSC_instance_wailing_caverns();
-void AddSC_zulfarrak(); //Zul'Farrak generic
-void AddSC_instance_zulfarrak(); //Zul'Farrak instance script
+void AddSC_boss_zum_rah(); //Zul'Farrak
+void AddSC_zulfarrak();
+void AddSC_instance_zulfarrak();
void AddSC_ashenvale();
void AddSC_azshara();
@@ -619,6 +620,13 @@ void AddSC_zangarmarsh();
// Events
void AddSC_event_childrens_week();
+// Pets
+void AddSC_deathknight_pet_scripts();
+void AddSC_hunter_pet_scripts();
+void AddSC_mage_pet_scripts();
+void AddSC_priest_pet_scripts();
+void AddSC_shaman_pet_scripts();
+
// battlegrounds
// outdoor pvp
@@ -647,6 +655,7 @@ void AddScripts()
AddOutlandScripts();
AddNorthrendScripts();
AddEventScripts();
+ AddPetScripts();
AddBattlegroundScripts();
AddOutdoorPvPScripts();
AddCustomScripts();
@@ -990,8 +999,9 @@ void AddKalimdorScripts()
AddSC_instance_temple_of_ahnqiraj();
AddSC_wailing_caverns(); //Wailing caverns
AddSC_instance_wailing_caverns();
- AddSC_zulfarrak(); //Zul'Farrak generic
- AddSC_instance_zulfarrak(); //Zul'Farrak instance script
+ AddSC_boss_zum_rah(); //Zul'Farrak
+ AddSC_zulfarrak();
+ AddSC_instance_zulfarrak();
AddSC_ashenvale();
AddSC_azshara();
@@ -1283,6 +1293,17 @@ void AddEventScripts()
#endif
}
+void AddPetScripts()
+{
+#ifdef SCRIPTS
+ AddSC_deathknight_pet_scripts();
+ AddSC_hunter_pet_scripts();
+ AddSC_mage_pet_scripts();
+ AddSC_priest_pet_scripts();
+ AddSC_shaman_pet_scripts();
+#endif
+}
+
void AddOutdoorPvPScripts()
{
#ifdef SCRIPTS
diff --git a/src/server/game/Scripting/ScriptLoader.h b/src/server/game/Scripting/ScriptLoader.h
index ef29b54369d..79e2454518f 100644
--- a/src/server/game/Scripting/ScriptLoader.h
+++ b/src/server/game/Scripting/ScriptLoader.h
@@ -28,6 +28,7 @@ void AddKalimdorScripts();
void AddOutlandScripts();
void AddNorthrendScripts();
void AddEventScripts();
+void AddPetScripts();
void AddBattlegroundScripts();
void AddOutdoorPvPScripts();
void AddCustomScripts();
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index 80d326e2c7a..ac3f12ed8c5 100644
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -4114,14 +4114,6 @@ void Spell::EffectScriptEffect(SpellEffIndex effIndex)
}
break;
}
- case 66545: //Summon Memory
- {
- uint8 uiRandom = urand(0, 25);
- uint32 uiSpells[26] = {66704, 66705, 66706, 66707, 66709, 66710, 66711, 66712, 66713, 66714, 66715, 66708, 66708, 66691, 66692, 66694, 66695, 66696, 66697, 66698, 66699, 66700, 66701, 66702, 66703, 66543};
-
- m_caster->CastSpell(m_caster, uiSpells[uiRandom], true);
- break;
- }
case 45668: // Ultra-Advanced Proto-Typical Shortening Blaster
{
if (!unitTarget || unitTarget->GetTypeId() != TYPEID_UNIT)