PDA

View Full Version : Boss Script "Arthura"



Grandelf
10-07-2014, 09:44 PM
General information, cus why not …

Since I haven’t released a script for quite some time and actually never scripted anything with the Eluna Lua Engine, I decided to do a boss script to get more familiar with the API (nothing works better than a boss script for that ..). I also tried to use an alternative way of scripting bosses, using closure based "classes" (sort of .. ), which worked out quite well in my opinion.

The boss "Arthura"

Arthura is a val’kyr boss and has two phases, a light one and a dark one. In phase one, the light phase, Arthura has three spells:


Smite, which is casted on a random player;
Holy Fire, which is casted on three random players at once;
Disarm, she will disarm the tank every now and then.

Apart from the spells there are a few things that will make the encounter more interesting during the light phase. This phase is all about the damage per second done, seeing as Arthura will have opportunities to heal herself, and your healers mana won’t last forever.
Arthura will heal herself each second for 0,1% of her total health. Secondly every 20 seconds a npc start walking towards Arthura. This npc must be killed as fast as possible, because if it reaches Arthura then Arthura will heal herself for 5% of her maximum health.
As a last addition, Arthura will cast an area of effect spell every 30 seconds that will kill everyone on hit. To prevent dying, players will have to stand in one out of two area’s marked on the ground. This will only reduce most of the damage and players will still be taking damage equivalent to the amount of players in that area. The tactic here is to get in the area, but also split the raid in half to fill both area’s. If only one area is filled, the damage done to the players in that area will be multiplied by 5.

The dark phase will start at a health percentage of 50% and lower. In this phase Arthura will have five spells available:


Shadow Cleave, which will hit anyone in front of her;
Shadow Strike, this is a debuff that is cast on the tank and deals damage of time;
Death and Decay, who doesn’t know this spell …;
Dark Shell, which will reflect all spells and deals 1500 damage to the player on a melee attack for 6 seconds;
Shadowbolt, which is cast on the entire raid.

Yet again there is more to it then the spells. In this phase, there will be a lot of pressure on the healers. There’s a lot of aoe damage going on. Aside from the AoE spells that Arthura has, she will also be dealing 4000 damage to the entire raid every 5 seconds. To make things worse, a dark void zone will spawn on the ground every 30 seconds, dealing 3500-4500 damage each seconds. This zone will keep growing until “one” player enters the portal that spawned, and kills the npc that he will find inside.

The script (and SQL file)

http://i394.photobucket.com/albums/pp27/kenny231_2008/WoWScrnShot_100714_230248.jpg (http://s394.photobucket.com/user/kenny231_2008/media/WoWScrnShot_100714_230248.jpg.html)

http://i394.photobucket.com/albums/pp27/kenny231_2008/WoWScrnShot_100814_002200.jpg (http://s394.photobucket.com/user/kenny231_2008/media/WoWScrnShot_100814_002200.jpg.html)

Script: http://pastebin.com/TABCEz86
SQL: http://pastebin.com/KPKyH9Nw

Grandelf

Tommy
10-07-2014, 09:45 PM
Thanks for the script. \o/

Rochet2
10-07-2014, 10:02 PM
Looks pretty nice.
Btw. a hint.. dont do this: summoner = pSummoner; Save the guid instead (GetGUID) and then later use someunit:GetMap():GetWorldObject(guid)
Never save an object over time. (save and then use it after time has passed without guarantee of it existing)
You can only do that with world packets and SQL queries.

Grandelf
10-07-2014, 10:25 PM
Looks pretty nice.
Btw. a hint.. dont do this: summoner = pSummoner; Save the guid instead (GetGUID) and then later use someunit:GetMap():GetWorldObject(guid)
Never save an object over time. (save and then use it after time has passed without guarantee of it existing)
You can only do that with world packets and SQL queries.

Thanks, I was already looking for something like that, seeing as :IsInWorld() didn't do the trick.
I tried to avoid that from happening as much as possible though, I guess I'll look into it tomorrow seeing as I am quite tired right now.

Kaev
10-08-2014, 08:22 AM
Dayum, that sounds awesome.

Xaver
10-08-2014, 12:33 PM
lua_scripts/test.lua:268: loop in gettable
lua_scripts/test.lua:268: loop in gettable
lua_scripts/test.lua:268: loop in gettable
lua_scripts/test.lua:268: loop in gettable
lua_scripts/test.lua:268: loop in gettable
lua_scripts/test.lua:268: loop in gettable
lua_scripts/test.lua:268: loop in gettable


?

spam text in game.

Grandelf
10-08-2014, 03:53 PM
I am not sure what "look in gettable" is supposed to mean. Line 268 is currently trying to loop through the objects found by:
pUnit:GetNearObjects(40, 0, VOID_ZONE_LIGHT). This method should find the two objects that are spawned by Arthura,
however even if it doesn't, there shouldn't be an error because according to the wiki :GetNearObjects() will always return a table (even if it's empty).

Unfortunatly I do not have this error on my local server, I will look through the script to see if something is wrong nonetheless.

Foereaper
10-08-2014, 04:32 PM
Thank you Grandelf, pleasure having you on the forum :)

Deadzshammy
09-15-2016, 01:57 PM
Hello! i get this error : ERROR lua_scripts/custom boss.lua:330: Couldn't find a creature with (ID: 70000)!

I got all the IDs in creature_template.

Someone to help?