Merge [SD2]

r1100 Added basic AI definitions for boss sartharion (with adds, using a common AI for certain events) and intro calling drakes
r1101 Correcting a few details and simplify call drakes for boss sartharion
      Add boss and mini-boss' abilities and add more common events to common drakes AI
r1102 Drop support for Windows VC71 (2003) (ref Mangos rev 7865)
r1103 Added support for quest 6481 (summon npc 11920)
r1104 Restore compile after change in OnCreatureCreate(). Require Mangos 7871+ - skip (we don't merge 7871?)
r1105 Remove code related to taunt immune. creature_template.flags_extra(CREATURE_FLAG_EXTRA_NOT_TAUNTABLE) must be used instead where creature should always be immune.

--HG--
branch : trunk
This commit is contained in:
Kudlaty
2009-07-24 22:42:17 +02:00
parent f867cb85bd
commit 261e75c9cf
19 changed files with 1046 additions and 256 deletions
+9
View File
@@ -17,6 +17,7 @@ UPDATE `gameobject_template` SET `ScriptName`='go_eastern_crystal_pylon' WHERE `
UPDATE `gameobject_template` SET `ScriptName`='go_barov_journal' WHERE `entry`=180794; UPDATE `gameobject_template` SET `ScriptName`='go_barov_journal' WHERE `entry`=180794;
UPDATE `gameobject_template` SET `ScriptName`='go_field_repair_bot_74A' WHERE `entry`=179552; UPDATE `gameobject_template` SET `ScriptName`='go_field_repair_bot_74A' WHERE `entry`=179552;
UPDATE `gameobject_template` SET `ScriptName`='go_orb_of_command' WHERE `entry`=179879; UPDATE `gameobject_template` SET `ScriptName`='go_orb_of_command' WHERE `entry`=179879;
UPDATE `gameobject_template` SET `ScriptName`='go_resonite_cask' WHERE entry=178145;
UPDATE `gameobject_template` SET `ScriptName`='go_tablet_of_madness' WHERE `entry`=180368; UPDATE `gameobject_template` SET `ScriptName`='go_tablet_of_madness' WHERE `entry`=180368;
UPDATE `gameobject_template` SET `ScriptName`='go_tablet_of_the_seven' WHERE `entry`=169294; UPDATE `gameobject_template` SET `ScriptName`='go_tablet_of_the_seven' WHERE `entry`=169294;
UPDATE `gameobject_template` SET `ScriptName`='go_manticron_cube' WHERE `entry`=181713; UPDATE `gameobject_template` SET `ScriptName`='go_manticron_cube' WHERE `entry`=181713;
@@ -704,6 +705,14 @@ UPDATE `creature_template` SET `ScriptName`='boss_keristrasza' WHERE `entry`=267
/* OBSIDIAN SANCTUM */ /* OBSIDIAN SANCTUM */
UPDATE `instance_template` SET `script`='instance_obsidian_sanctum' WHERE map=615; UPDATE `instance_template` SET `script`='instance_obsidian_sanctum' WHERE map=615;
UPDATE creature_template SET ScriptName='boss_sartharion' WHERE entry=28860;
UPDATE creature_template SET ScriptName='mob_vesperon' WHERE entry=30449;
UPDATE creature_template SET ScriptName='mob_shadron' WHERE entry=30451;
UPDATE creature_template SET ScriptName='mob_tenebron' WHERE entry=30452;
UPDATE creature_template SET ScriptName='mob_twilight_eggs' WHERE entry=30882;
UPDATE creature_template SET ScriptName='mob_twilight_whelp' WHERE entry IN (30890, 31214);
UPDATE creature_template SET ScriptName='mob_acolyte_of_shadron' WHERE entry=31218;
UPDATE creature_template SET ScriptName='mob_acolyte_of_vesperon' WHERE entry=31219;
/* ONYXIA'S LAIR */ /* ONYXIA'S LAIR */
UPDATE `creature_template` SET `ScriptName`='boss_onyxia' WHERE `entry`=10184; UPDATE `creature_template` SET `ScriptName`='boss_onyxia' WHERE `entry`=10184;
+10
View File
@@ -0,0 +1,10 @@
UPDATE creature_template SET ScriptName='boss_sartharion' WHERE entry=28860;
UPDATE creature_template SET ScriptName='mob_vesperon' WHERE entry=30449;
UPDATE creature_template SET ScriptName='mob_shadron' WHERE entry=30451;
UPDATE creature_template SET ScriptName='mob_tenebron' WHERE entry=30452;
UPDATE creature_template SET ScriptName='mob_twilight_eggs' WHERE entry=30882;
UPDATE creature_template SET ScriptName='mob_twilight_whelp' WHERE entry IN (30890, 31214);
UPDATE creature_template SET ScriptName='mob_acolyte_of_shadron' WHERE entry=31218;
UPDATE creature_template SET ScriptName='mob_acolyte_of_vesperon' WHERE entry=31219;
UPDATE gameobject_template SET ScriptName='go_resonite_cask' WHERE entry=178145;
@@ -2818,18 +2818,6 @@
</File> </File>
</Filter> </Filter>
</Filter> </Filter>
<Filter
Name="Obsidian Sanctum"
>
<File
RelativePath="..\scripts\zone\obsidian_sanctum\def_obsidian_sanctum.h"
>
</File>
<File
RelativePath="..\scripts\zone\obsidian_sanctum\instance_obsidian_sanctum.cpp"
>
</File>
</Filter>
<Filter <Filter
Name="Vault of Archavon" Name="Vault of Archavon"
> >
@@ -2819,18 +2819,6 @@
</File> </File>
</Filter> </Filter>
</Filter> </Filter>
<Filter
Name="Obsidian Sanctum"
>
<File
RelativePath="..\scripts\zone\obsidian_sanctum\def_obsidian_sanctum.h"
>
</File>
<File
RelativePath="..\scripts\zone\obsidian_sanctum\instance_obsidian_sanctum.cpp"
>
</File>
</Filter>
<Filter <Filter
Name="Vault of Archavon" Name="Vault of Archavon"
> >
+24 -1
View File
@@ -17,7 +17,7 @@
/* ScriptData /* ScriptData
SDName: GO_Scripts SDName: GO_Scripts
SD%Complete: 100 SD%Complete: 100
SDComment: Quest support: 4285,4287,4288(crystal pylons), 4296, 10990, 10991, 10992, Field_Repair_Bot->Teaches spell 22704. Barov_journal->Teaches spell 26089 SDComment: Quest support: 4285,4287,4288(crystal pylons), 4296, 6481, 10990, 10991, 10992, Field_Repair_Bot->Teaches spell 22704. Barov_journal->Teaches spell 26089
SDCategory: Game Objects SDCategory: Game Objects
EndScriptData */ EndScriptData */
@@ -33,6 +33,7 @@ go_sacred_fire_of_life
go_shrine_of_the_birds go_shrine_of_the_birds
go_field_repair_bot_74A go_field_repair_bot_74A
go_orb_of_command go_orb_of_command
go_resonite_cask
go_tablet_of_madness go_tablet_of_madness
go_tablet_of_the_seven go_tablet_of_the_seven
go_tele_to_dalaran_crystal go_tele_to_dalaran_crystal
@@ -274,6 +275,23 @@ bool GOHello_go_ethereum_stasis(Player* pPlayer, GameObject* pGo)
return false; return false;
} }
/*######
## go_resonite_cask
######*/
enum
{
NPC_GOGGEROC = 11920
};
bool GOHello_go_resonite_cask(Player* pPlayer, GameObject* pGO)
{
if (pGO->GetGoType() == GAMEOBJECT_TYPE_GOOBER)
pGO->SummonCreature(NPC_GOGGEROC, 0.0f, 0.0f, 0.0f, 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 300000);
return false;
}
/*###### /*######
## go_sacred_fire_of_life ## go_sacred_fire_of_life
######*/ ######*/
@@ -433,6 +451,11 @@ void AddSC_go_scripts()
newscript->pGOHello = &GOHello_go_ethereum_stasis; newscript->pGOHello = &GOHello_go_ethereum_stasis;
newscript->RegisterSelf(); newscript->RegisterSelf();
newscript = new Script;
newscript->Name = "go_resonite_cask";
newscript->pGOHello = &GOHello_go_resonite_cask;
newscript->RegisterSelf();
newscript = new Script; newscript = new Script;
newscript->Name = "go_sacred_fire_of_life"; newscript->Name = "go_sacred_fire_of_life";
newscript->pGOHello = &GOHello_go_sacred_fire_of_life; newscript->pGOHello = &GOHello_go_sacred_fire_of_life;
@@ -48,9 +48,6 @@ struct TRINITY_DLL_DECL boss_broodlordAI : public ScriptedAI
MortalStrike_Timer = 20000; MortalStrike_Timer = 20000;
KnockBack_Timer = 30000; KnockBack_Timer = 30000;
LeashCheck_Timer = 2000; LeashCheck_Timer = 2000;
m_creature->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_TAUNT, true);
m_creature->ApplySpellImmune(1, IMMUNITY_EFFECT,SPELL_EFFECT_ATTACK_ME, true);
} }
void EnterCombat(Unit *who) void EnterCombat(Unit *who)
@@ -79,9 +79,6 @@ struct TRINITY_DLL_DECL boss_nefarianAI : public ScriptedAI
TailLash_Timer = 10000; TailLash_Timer = 10000;
ClassCall_Timer = 35000; //35-40 seconds ClassCall_Timer = 35000; //35-40 seconds
Phase3 = false; Phase3 = false;
m_creature->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_TAUNT, true);
m_creature->ApplySpellImmune(1, IMMUNITY_EFFECT,SPELL_EFFECT_ATTACK_ME, true);
} }
void KilledUnit(Unit* Victim) void KilledUnit(Unit* Victim)
@@ -50,9 +50,6 @@ struct TRINITY_DLL_DECL boss_razorgoreAI : public ScriptedAI
WarStomp_Timer = 35000; WarStomp_Timer = 35000;
FireballVolley_Timer = 7000; FireballVolley_Timer = 7000;
Conflagration_Timer = 12000; Conflagration_Timer = 12000;
m_creature->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_TAUNT, true);
m_creature->ApplySpellImmune(1, IMMUNITY_EFFECT,SPELL_EFFECT_ATTACK_ME, true);
} }
void EnterCombat(Unit *who) void EnterCombat(Unit *who)
@@ -72,9 +72,6 @@ struct TRINITY_DLL_DECL boss_vaelAI : public ScriptedAI
TailSwipe_Timer = 20000; TailSwipe_Timer = 20000;
HasYelled = false; HasYelled = false;
DoingSpeach = false; DoingSpeach = false;
m_creature->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_TAUNT, true);
m_creature->ApplySpellImmune(1, IMMUNITY_EFFECT,SPELL_EFFECT_ATTACK_ME, true);
} }
void BeginSpeach(Unit* target) void BeginSpeach(Unit* target)
@@ -45,7 +45,7 @@ struct TRINITY_DLL_DECL boss_temporusAI : public ScriptedAI
boss_temporusAI(Creature *c) : ScriptedAI(c) boss_temporusAI(Creature *c) : ScriptedAI(c)
{ {
pInstance = c->GetInstanceData(); pInstance = c->GetInstanceData();
HeroicMode = m_creature->GetMap()->IsHeroic(); HeroicMode = c->GetMap()->IsHeroic();
} }
ScriptedInstance *pInstance; ScriptedInstance *pInstance;
@@ -58,9 +58,6 @@ struct TRINITY_DLL_DECL boss_temporusAI : public ScriptedAI
void Reset() void Reset()
{ {
m_creature->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_TAUNT, true);
m_creature->ApplySpellImmune(0, IMMUNITY_EFFECT,SPELL_EFFECT_ATTACK_ME, true);
Haste_Timer = 15000+rand()%8000; Haste_Timer = 15000+rand()%8000;
SpellReflection_Timer = 30000; SpellReflection_Timer = 30000;
MortalWound_Timer = 8000; MortalWound_Timer = 8000;
@@ -80,9 +80,6 @@ struct TRINITY_DLL_DECL boss_gruulAI : public ScriptedAI
if (pInstance) if (pInstance)
pInstance->SetData(DATA_GRUULEVENT, NOT_STARTED); pInstance->SetData(DATA_GRUULEVENT, NOT_STARTED);
m_creature->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_TAUNT, true);
m_creature->ApplySpellImmune(0, IMMUNITY_EFFECT,SPELL_EFFECT_ATTACK_ME, true);
} }
void EnterCombat(Unit *who) void EnterCombat(Unit *who)
@@ -191,9 +191,6 @@ struct TRINITY_DLL_DECL boss_warbringer_omroggAI : public ScriptedAI
ThunderClap_Timer = 15000; ThunderClap_Timer = 15000;
ResetThreat_Timer = 30000; ResetThreat_Timer = 30000;
m_creature->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_TAUNT, true);
m_creature->ApplySpellImmune(1, IMMUNITY_EFFECT,SPELL_EFFECT_ATTACK_ME, true);
if (pInstance) if (pInstance)
pInstance->SetData(TYPE_OMROGG, NOT_STARTED); //End boss can use this later. O'mrogg must be defeated(DONE) or he will come to aid. pInstance->SetData(TYPE_OMROGG, NOT_STARTED); //End boss can use this later. O'mrogg must be defeated(DONE) or he will come to aid.
} }
@@ -131,8 +131,6 @@ struct TRINITY_DLL_DECL boss_curatorAI : public ScriptedAI
{ {
AstralFlare->CastSpell(AstralFlare, SPELL_ASTRAL_FLARE_PASSIVE, false); AstralFlare->CastSpell(AstralFlare, SPELL_ASTRAL_FLARE_PASSIVE, false);
AstralFlare->AI()->AttackStart(target); AstralFlare->AI()->AttackStart(target);
AstralFlare->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_TAUNT, true);
AstralFlare->ApplySpellImmune(0, IMMUNITY_EFFECT,SPELL_EFFECT_ATTACK_ME, true);
} }
//Reduce Mana by 10% of max health //Reduce Mana by 10% of max health
@@ -185,9 +185,6 @@ struct TRINITY_DLL_DECL boss_attumenAI : public ScriptedAI
void Reset() void Reset()
{ {
ResetTimer = 2000; ResetTimer = 2000;
m_creature->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_TAUNT, true);
m_creature->ApplySpellImmune(0, IMMUNITY_EFFECT,SPELL_EFFECT_ATTACK_ME, true);
} }
void EnterCombat(Unit* who) {} void EnterCombat(Unit* who) {}
File diff suppressed because it is too large Load Diff
@@ -97,9 +97,6 @@ struct TRINITY_DLL_DECL boss_onyxiaAI : public ScriptedAI
FireballTimer = 18000; FireballTimer = 18000;
InitialSpawn = true; InitialSpawn = true;
m_creature->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_TAUNT, true);
m_creature->ApplySpellImmune(1, IMMUNITY_EFFECT,SPELL_EFFECT_ATTACK_ME, true);
} }
void EnterCombat(Unit* who) void EnterCombat(Unit* who)
@@ -218,8 +218,6 @@ struct TRINITY_DLL_DECL aqsentinelAI : public ScriptedAI
} }
ClearBudyList(); ClearBudyList();
gatherOthersWhenAggro = true; gatherOthersWhenAggro = true;
m_creature->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_TAUNT, false);
m_creature->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_ATTACK_ME, false);
} }
void GainSentinelAbility(uint32 id) void GainSentinelAbility(uint32 id)
@@ -234,12 +232,6 @@ struct TRINITY_DLL_DECL aqsentinelAI : public ScriptedAI
} }
SentinelAbilityAura *a = new SentinelAbilityAura(this, (SpellEntry*)spell, id, eff_mask); SentinelAbilityAura *a = new SentinelAbilityAura(this, (SpellEntry*)spell, id, eff_mask);
m_creature->AddAura(a); m_creature->AddAura(a);
if (id == SPELL_KNOCK_BUFF)
{
m_creature->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_TAUNT, true);
m_creature->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_ATTACK_ME, true);
}
} }
void EnterCombat(Unit *who) void EnterCombat(Unit *who)
@@ -71,9 +71,6 @@ struct TRINITY_DLL_DECL boss_marliAI : public ScriptedAI
Spawned = false; Spawned = false;
PhaseTwo = false; PhaseTwo = false;
m_creature->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_TAUNT, true);
m_creature->ApplySpellImmune(1, IMMUNITY_EFFECT,SPELL_EFFECT_ATTACK_ME, true);
} }
void EnterCombat(Unit *who) void EnterCombat(Unit *who)
-4
View File
@@ -23,10 +23,6 @@
#include "Common.h" #include "Common.h"
#ifndef HAVE_CONFIG_H
#define HAVE_ACE_STACK_TRACE_H 1
#endif
#ifdef HAVE_ACE_STACK_TRACE_H #ifdef HAVE_ACE_STACK_TRACE_H
#include "ace/Stack_Trace.h" #include "ace/Stack_Trace.h"
#endif #endif