User Tag List

Page 1 of 2 1 2 LastLast
Results 1 to 7 of 9

Thread: Boss Script "Arthura"

  1. #1
    Esteemed Member <span style='color: #4169E1'>Grandelf</span>'s Avatar
    Join Date
    Oct 2014
    Posts
    104
    XP
    64,547
    Level
    78
    Thanks
    18
    Thanked 110 Times in 45 Posts

    Boss Script "Arthura"

    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)





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

    Grandelf
    Last edited by Grandelf; 10-07-2014 at 10:27 PM.
    Achievements:
    1 year registered Level XL Level LXX
    Awards:
    Support

  2. The Following 3 Users Say Thank You to Grandelf For This Useful Post:


  3. #2
    Founder <span style='color: #FF4500'>Tommy</span>'s Avatar
    Join Date
    Apr 2013
    Posts
    7,391
    XP
    3,449,104
    Level
    378
    Thanks
    889
    Thanked 1,858 Times in 1,120 Posts
    Thanks for the script. \o/

  4. #3
    Moderator / Eluna Dev <span style='color: #FF0000'><span class='glow_8B0000'>Rochet2</span></span>'s Avatar
    Join Date
    Apr 2013
    Location
    Finland
    Posts
    1,860
    XP
    13,531
    Level
    35
    Thanks
    95
    Thanked 592 Times in 419 Posts
    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.
    Last edited by Rochet2; 10-07-2014 at 10:06 PM.
    Awards:
    Support LOL Scripter Facepalm! Raffle Winner

  5. #4
    Original Poster
    Esteemed Member <span style='color: #4169E1'>Grandelf</span>'s Avatar
    Join Date
    Oct 2014
    Posts
    104
    XP
    64,547
    Level
    78
    Thanks
    18
    Thanked 110 Times in 45 Posts
    Quote Originally Posted by Rochet2 View Post
    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.

  6. #5
    Super Moderator <span style='color: #FFFF00'><span class='glow_000000'>Kaev</span></span>'s Avatar

    Join Date
    Jan 2014
    Location
    Germany
    Posts
    535
    XP
    2,925,342
    Level
    335
    Thanks
    76
    Thanked 102 Times in 70 Posts
    Dayum, that sounds awesome.
    Achievements:
    Shopper Member 1 year registered Level XL Level C
    Awards:
    Raffle Winner Member of Staff Support LOL Drunk Donator


    Read the rules before posting.

    Do you have an unsolved issue? Give us more informations about your problem.

    Do you have problems with compiling or installing TrinityCore? Unknown96's Tutorial will help you.

    Visit our other helpful sites:
    EmuDevs SQL Generator

  7. #6
    Respected Member
    Join Date
    Jun 2014
    Posts
    132
    XP
    2,942
    Level
    15
    Thanks
    1
    Thanked 7 Times in 6 Posts
    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.
    Achievements:
    1 year registered Level XV

  8. #7
    Original Poster
    Esteemed Member <span style='color: #4169E1'>Grandelf</span>'s Avatar
    Join Date
    Oct 2014
    Posts
    104
    XP
    64,547
    Level
    78
    Thanks
    18
    Thanked 110 Times in 45 Posts
    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.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •