diff options
Diffstat (limited to 'src/server/game')
| -rw-r--r-- | src/server/game/AI/SmartScripts/SmartScript.cpp | 38 | ||||
| -rw-r--r-- | src/server/game/AI/SmartScripts/SmartScriptMgr.cpp | 9 | ||||
| -rw-r--r-- | src/server/game/AI/SmartScripts/SmartScriptMgr.h | 11 | ||||
| -rw-r--r-- | src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp | 2 | ||||
| -rw-r--r-- | src/server/game/Scripting/ScriptLoader.cpp | 29 | ||||
| -rw-r--r-- | src/server/game/Scripting/ScriptLoader.h | 1 | ||||
| -rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 8 |
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) |
