This is a simple Lua Boss Script. This is a mage boss who has 3 main mage type phases and then a slightly harder shadow phase near the end of the fight.
Fight Outline
Arcane phase
Casts a high rank Arcane explosion every 1 second dealing 400-500 AoE damage per second.
Casts Arcane Missiles every 10 seconds.
Casts Nether Beam every 5 seconds causing AoE damage.
Fire phase
Casts Firebolt
Casts Conflagrate frequently
Casts Dragons Breath every 12 seconds
Casts Blast Wave every 5 seconds
Frost phase
Casts Ice Barrier fairly frequently (the boss has low armor).
Casts frostbolt every 3 seconds dealing around 4000 damage a hit.
Casts Frost Nova from time to time
The Script
Code:
----------------------------------------
----------------------------------------
--This Script was coded by Mutilated --
--Please get permission before edits --
-- Email me [email protected] --
-- Please Visit www.mutilated.co.uk --
----------------------------------------
----------------------------------------
function Casaro_OnCombat(pUnit, Event)
pUnit:RemoveEvents()
pUnit:SendChatMessage(14, 0, "Magic has never failed me!")
pUnit:RegisterEvent("phase_2", 5000, 0)
end
--------------------------------------------------------
--------------------------------------------------------
--------------------------------------------------------
function Fire_Power(pUnit, Event)
pUnit:CastSpell(12400)
end
function Casaro_fire(pUnit, Event)
pUnit:CastSpellFullOnTarget(29953)
end
function Blast_wave(pUnit, Event)
pUnit:CastSpell(33933)
end
function conflagrate(pUnit, Event)
pUnit:CastSpell(30912)
end
function phase_2(pUnit, Event)
pUnit:RemoveEvents()
pUnit:CastSpell(27053)
pUnit:CastSpell(45641)
pUnit:RegisterEvent("Fire_Power", 1000, 0)
pUnit:RegisterEvent("Casaro_fire", 3000, 0)
pUnit:RegisterEvent("Blast_Wave", 5000, 0)
pUnit:RegisterEvent("conflagrate", 7000, 0)
pUnit:RegisterEvent("fire_blast", 9000, 0)
pUnit:RegisterEvent("Dragon_Breath", 12000, 0)
pUnit:RegisterEvent(arcane, 20000, 0)
end
--------------------------------------------------------
--------------------------------------------------------
--------------------------------------------------------
function Arc_M(pUnit, Event)
local missile = GetRandomPlayer(0)
pUnit:CastSpell(29955)
end
function explosion(pUnit, Event)
pUnit:CastSpell(27082)
end
function beam(pUnit, Event)
local beam = GetRandomPlayer(0)
pUnit:CastSpell(35873, beam)
end
function arcane(pUnit, Event)
pUnit:RemoveEvents()
if pUnit:GetHealthPct() <=65 then
pUnit:RemoveAura(27053)
pUnit:SendChatMessage(14, 0, "I have arcane powers too!")
pUnit:RegisterEvent("Arc_M", 10000, 0)
pUnit:RegisterEvent("explosion", 1000, 0)
pUnit:RegisterEvent("beam", 5000, 0)
pUnit:RegisterEvent("frost", 20000, 0)
end
end
--------------------------------------------------------
--------------------------------------------------------
--------------------------------------------------------
function Ice_Barrier(pUnit, Event)
pUnit:CastSpell(33405)
end
function Frostbolt(pUnit, Event)
local frostbolt=GetRandomPlayer(0)
pUnit:FullCastSpellOnTarget(29954, frostbolt)
end
function Nova(pUnit, Event)
pUnit:CastSpell(27088)
end
function frost(pUnit, Event)
if pUnit:GetHealthPct() <=25 then
pUnit:RemoveEvents()
pUnit:SendChatMessage(14, 0, "I don't usually have to do this..")
pUnit:CastSpell(27054)
pUnit:CastSpell(29962)
pUnit:RegisterEvent("Nova", 4500, 0)
pUnit:RegisterEvent("Ice_Barrier", 1000, 0)
pUnit:RegisterEvent("Frostbolt", 2500, 0)
pUnit:RegisterEvent("insane", 20000, 0)
end
end
--------------------------------------------------------
--------------------------------------------------------
--------------------------------------------------------
function Insane_1(pUnit, Event)
local insanity = GetRandomPlayer(0)
pUnit:FullCastSpellOnTarget(30852, insanity)
end
function SoC(pUnit, Event)
local SoC = GetRandomPlayer(0)
pUnit:FullCastSpellOnTarget(27243, SoC)
end
function insane(pUnit, Event)
if pUnit:GetHealthPct() <= 10 then
pUnit:RemoveEvents()
pUnit:RemoveAura(27054)
pUnit:CastSpell(871)
pUnit:CastSpell(29185)
pUnit:SendChatMessage(14, 0, "Now to finish you with darker magic!")
pUnit:RegisterEvent("Insane_1", 10000, 0)
pUnit:RegisterEvent("SoC", 2000, 0)
end
end
--------------------------------------------------------
--------------------------------------------------------
--------------------------------------------------------
function Casaro_LeaveCombat(pUnit, Event)
pUnit:RemoveEvents()
pUnit:SendChatMessage("That was a good decision")
end
--------------------------------------------------------
--------------------------------------------------------
--------------------------------------------------------
function Casaro_OnKilledTarget(pUnit, Event)
pUnit:SendChatMessage("This is too easy for me!")
pUnit:CastSpell(30852)
end
--------------------------------------------------------
--------------------------------------------------------
--------------------------------------------------------
function Casaro_OnDeath(pUnit, Event)
pUnit:RemoveEvents()
pUnit:SendChatMessage(14, 0, "No!, failure is...not...an......")
end
--------------------------------------------------------
--------------------------------------------------------
--------------------------------------------------------
RegisterUnitEvent(182852, 1, "Casaro_OnCombat")
RegisterUnitEvent(182852, 2, "Casaro_LeaveCombat")
RegisterUnitEvent(182852, 3, "Casaro_OnKilledTarget")
RegisterUnitEvent(182852, 4, "Casaro_OnDeath")
The SQL
Code:
INSERT INTO creature_names (entry, name, subname, info_str, Flags1, type, family, rank, male_displayid, female_displayid, male_displayid2, female_displayid2, civilian, leader) VALUES ('182852','Casaro','','','0','0','0','3','5266','0','0','0','0','0')
INSERT INTO creature_proto (entry, minlevel, maxlevel, faction, minhealth, maxhealth, mana, scale, npcflags, attacktime, mindamage, maxdamage, rangedattacktime, rangedmindamage, rangedmaxdamage, mountdisplayid, equipmodel1, equipmodel2, equipmodel3, respawntime, armor, resistance1, resistance2, resistance3, resistance4, resistance5, resistance6, combat_reach, auras, boss, money, invisibility_type, death_state, walk_speed, run_speed, fly_speed) VALUES ('182852','73','73','148','300000','300000','1000000','0','1500','0','0','0','0','0','0','35631','35631','0','36000','3000','0','0','0','0','0','0','2','0','1','0','0','0','2.5','8','14')
Its a simple script I realise but some people may find it useful. Another shaman type script I made a while ago can be found here
This script was tested on an Arcemu server and worked fine I do not know about
ascent.