*Changes in Exarch Maladaar script

*Script for airstrike items - by Bagsac
*Changes in Moroes script

--HG--
branch : trunk
This commit is contained in:
Blaymoira
2008-12-22 10:39:42 +01:00
parent 3bdf880c20
commit 1c93644c09
4 changed files with 42 additions and 30 deletions
+1
View File
@@ -0,0 +1 @@
UPDATE `item_template` SET `scriptname` = "item_only_for_flight" WHERE `entry` IN (34475, 34489, 24538);
@@ -31,6 +31,7 @@ item_nether_wraith_beacon(i31742) Summons creatures for quest Becoming a Spell
item_flying_machine(i34060,i34061) Engineering crafted flying machines item_flying_machine(i34060,i34061) Engineering crafted flying machines
item_gor_dreks_ointment(i30175) Protecting Our Own(q10488) item_gor_dreks_ointment(i30175) Protecting Our Own(q10488)
item_muiseks_vessel Cast on creature, they must be dead(q 3123,3124,3125,3126,3127) item_muiseks_vessel Cast on creature, they must be dead(q 3123,3124,3125,3126,3127)
item_only_for_flight Items which should only useable while flying
item_protovoltaic_magneto_collector Prevents abuse item_protovoltaic_magneto_collector Prevents abuse
item_razorthorn_flayer_gland Quest Discovering Your Roots (q11520) and Rediscovering Your Roots (q11521). Prevents abuse item_razorthorn_flayer_gland Quest Discovering Your Roots (q11520) and Rediscovering Your Roots (q11521). Prevents abuse
item_tame_beast_rods(many) Prevent cast on any other creature than the intended (for all tame beast quests) item_tame_beast_rods(many) Prevent cast on any other creature than the intended (for all tame beast quests)
@@ -65,13 +66,29 @@ bool ItemUse_item_area_52_special(Player *player, Item* _Item, SpellCastTargets
} }
/*##### /*#####
# item_arcane_charges # item_only_for_flight
#####*/ #####*/
bool ItemUse_item_arcane_charges(Player *player, Item* _Item, SpellCastTargets const& targets) bool ItemUse_item_only_for_flight(Player *player, Item* _Item, SpellCastTargets const& targets)
{ {
uint32 itemId = _Item->GetEntry();
bool disabled = false;
//for special scripts
switch(itemId)
{
case 24538:
if(!player->GetAreaId() == 3628)
disabled = true;
break;
case 34489:
if(!player->GetZoneId() == 4080)
disabled = true;
break;
}
// allow use in flight only // allow use in flight only
if( player->isInFlight() ) if( player->isInFlight() && !disabled)
return false; return false;
// error // error
@@ -458,8 +475,8 @@ void AddSC_item_scripts()
newscript->RegisterSelf(); newscript->RegisterSelf();
newscript = new Script; newscript = new Script;
newscript->Name="item_arcane_charges"; newscript->Name="item_only_for_flight";
newscript->pItemUse = ItemUse_item_arcane_charges; newscript->pItemUse = ItemUse_item_only_for_flight;
newscript->RegisterSelf(); newscript->RegisterSelf();
newscript = new Script; newscript = new Script;
@@ -143,7 +143,11 @@ CreatureAI* GetAI_mob_stolen_soul(Creature *_Creature)
struct TRINITY_DLL_DECL boss_exarch_maladaarAI : public ScriptedAI struct TRINITY_DLL_DECL boss_exarch_maladaarAI : public ScriptedAI
{ {
boss_exarch_maladaarAI(Creature *c) : ScriptedAI(c) {Reset();} boss_exarch_maladaarAI(Creature *c) : ScriptedAI(c)
{
HasTaunted = false;
Reset();
}
uint32 soulmodel; uint32 soulmodel;
uint64 soulholder; uint64 soulholder;
@@ -166,31 +170,20 @@ struct TRINITY_DLL_DECL boss_exarch_maladaarAI : public ScriptedAI
Ribbon_of_Souls_timer = 5000; Ribbon_of_Souls_timer = 5000;
StolenSoul_Timer = 25000 + rand()% 10000; StolenSoul_Timer = 25000 + rand()% 10000;
HasTaunted = false;
Avatar_summoned = false; Avatar_summoned = false;
} }
void MoveInLineOfSight(Unit *who) void MoveInLineOfSight(Unit *who)
{ {
if (!m_creature->getVictim() && who->isTargetableForAttack() && ( m_creature->IsHostileTo( who )) && who->isInAccessiblePlaceFor(m_creature)) if (!HasTaunted && m_creature->IsWithinDistInMap(who, 150.0))
{ {
if (!HasTaunted && m_creature->IsWithinDistInMap(who, 150.0)) DoScriptText(SAY_INTRO, m_creature);
{ HasTaunted = true;
DoScriptText(SAY_INTRO, m_creature); }
HasTaunted = true;
}
if (!m_creature->canFly() && m_creature->GetDistanceZ(who) > CREATURE_Z_ATTACK_RANGE) ScriptedAI::MoveInLineOfSight(who);
return; }
float attackRadius = m_creature->GetAttackDistance(who);
if (m_creature->IsWithinDistInMap(who, attackRadius) && m_creature->IsWithinLOSInMap(who))
{
//who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH);
AttackStart(who);
}
}
}
void Aggro(Unit *who) void Aggro(Unit *who)
{ {
@@ -207,13 +200,16 @@ struct TRINITY_DLL_DECL boss_exarch_maladaarAI : public ScriptedAI
if (summoned->GetEntry() == ENTRY_STOLEN_SOUL) if (summoned->GetEntry() == ENTRY_STOLEN_SOUL)
{ {
//SPELL_STOLEN_SOUL_VISUAL has shapeshift effect, but not implemented feature in Trinity for this spell. //SPELL_STOLEN_SOUL_VISUAL has shapeshift effect, but not implemented feature in Trinity for this spell.
summoned->SetDisplayId(soulmodel);
summoned->CastSpell(summoned,SPELL_STOLEN_SOUL_VISUAL,false); summoned->CastSpell(summoned,SPELL_STOLEN_SOUL_VISUAL,false);
summoned->SetDisplayId(soulmodel);
summoned->setFaction(m_creature->getFaction());
if (Unit *target = Unit::GetUnit(*m_creature,soulholder)) if (Unit *target = Unit::GetUnit(*m_creature,soulholder))
summoned->AI()->AttackStart(target); {
((mob_stolen_soulAI*)summoned->AI())->SetMyClass(soulclass); ((mob_stolen_soulAI*)summoned->AI())->SetMyClass(soulclass);
summoned->AI()->AttackStart(target);
}
} }
} }
@@ -323,12 +323,10 @@ struct TRINITY_DLL_DECL boss_moroesAI : public ScriptedAI
}else Wait_Timer -= diff; }else Wait_Timer -= diff;
} }
//Blind highest aggro, and attack second highest //Gouge highest aggro, and attack second highest
if (Gouge_Timer < diff) if (Gouge_Timer < diff)
{ {
DoCast(m_creature->getVictim(), SPELL_GOUGE); DoCast(m_creature->getVictim(), SPELL_GOUGE);
if (m_creature->getThreatManager().getThreat(m_creature->getVictim()))
m_creature->getThreatManager().modifyThreatPercent(m_creature->getVictim(),-100);
Gouge_Timer = 40000; Gouge_Timer = 40000;
}else Gouge_Timer -= diff; }else Gouge_Timer -= diff;