About a week ago I was a bit bored so I dicided to make a script for Richard from the amazing LFG-comic (If you havn't read it, you should). This is the first script I've ever made, and after lots of testing on a localhost-server, it turned out to be pretty good.
However, I don't know if this script works for a raid or if it's possible to beat him, and thats why I need someone to test it for me (my tests only showed that all the events works fine).
The encounter with Richard
Stats
Richard has 500.000 hp and 1.000.000 mana
He deals 3500-5900 physical damage (2611 dps)
Display ID is 1661
Entry ID is 90000 (It's the old emergency number in Sweden, so it's easy to remember)
Like all Forsaken he has 10 shadow resistance.
About the spells
Most spells have been cast by Richard in the comic.
Richard uses 6 different spells:
Flame Buffet (id=41596): Cast every 35 second on the main tank and every 25 second on a random player.
Frostbolt (id=2847: Cast every 16 second on a random player.
Frost Blast (id=2780: Cast every 19 second when Richard is below 50% health.
Shadow Bolt Volley (id=45031): Cast every 45 second when Richard is below 65% health
Finger of Death (id=35354): Cast every 15 second when Richard is below 10% health
Hand of Death (id=35354): Cast if Richard is alive after five minutes.
Flame Buffet isn't as dangerous as it sounds, my tests showed that 200 resistance brings the damage after 10 stacks down to about 14k from 25k damage.
Frostbolt is cast pretty often and deals high damage. Not sure how this would effect a raid.
Shadow Bolt Volley deals decent damage, I don't think this should be any problem for the raid.
Frost Blast makes the target unable to perform any action for five seconds. Don't think it's much of a problem.
Finger of Death. 13.000 damage on the target with the highest threat every 15 second. Is it possible to dish out 50.000 damage or does this make the encounter impossible?
Hand of Death is cast after five minutes. To soon?
Phases:
Phase 1
Flame Buffet and Frostbolt are cast during this phase.
Is there anyway to check if Richard is casting a spell, because during a frostbolt, he might use Flame Buffet.
Phase 2
starts at 65% health
Adds Shadow Bolt Volley to spells cast.
Does anyone know how to make this go off the moment he reaches 65% hp?
Phase 3
Starts at 50% health
Adds Frost Blast to spells cast.
This might need to swift place with phase 2.
Phase 4
Starts at 10% health
Adds Finger of Death to spells cast.
Quotes
Please help me to improve these:
Enter Combat: None
Leave combat: "Allready over?"
Kills Player: Amusing! Who's next?
Random Taunt: None
Dies: "This is not...POSSIBLE!"
Flame Buffet on Main Tank: "Burn"
Shadow Bolt Volley: "FOR PONY"
Frost Blast: "Don't move."
Finger of Death: "I'm no physichan, but you require the aid of a healer"
Hand of Death: "You amused me for a short time, but I have to end it now!"
Thats about all info you need, now to the script and the npc.
creature_name:
PHP 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 ('90000','Richard','Lord of th Thirteen Hells','','0','6','0','3','1661','0','0','0','0','0')
creature_proto
PHP Code:
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 ('90000','73','73','127','500000','500000','1000000','0','1800','3500','5900','0','0','0','0','0','0','0','86400000','200','0','0','0','0','10','0','1','0','1','660600','0','0','2.5','8','14')
Should you get a error message saying that there are tom few collumbs then add another <'0'> (without the "<" and ">") at the end of the line.
And finally the script:
PHP Code:
function Richard_Flame_Buffet(pUnit, event, miscunit, misc)
print "Richard Flame Buffet"
pUnit:FullCastSpellOnTarget(41596,pUnit:GetMainTank(1))
pUnit:SendChatMessage(12, 0, "Burn!")
end
function Richard_Flame_BuffetB(pUnit, event, miscunit, misc)
print "Richard Flame Buffet"
pUnit:FullCastSpellOnTarget(41596,pUnit:GetRandomPlayer(1))
end
function Richard_Frostbolt(pUnit, event, miscunit, misc)
print "Richard Frostbolt"
pUnit:FullCastSpellOnTarget(28478,pUnit:GetRandomPlayer(1))
end
function Richard_Finger(pUnit, event, miscunit, misc)
if pUnit:GetHealthPct() < 10 then
print "Richard Finger"
pUnit:FullCastSpellOnTarget(31984,pUnit:GetMainTank(1))
pUnit:SendChatMessage(12, 0, "I'm no physichan, but you require the aid of a healer")
end
end
function Richard_Shadow_Bolt_Volley(pUnit, event, miscunit, misc)
if pUnit:GetHealthPct() < 75 then
print "Richard Shadow Bolt Volley"
pUnit:FullCastSpellOnTarget(45031,pUnit:GetClosestPlayer())
pUnit:SendChatMessage(12, 0, "FOR PONY!")
end
end
function Richard_Frostblast(pUnit, event, miscunit, misc)
if pUnit:GetHealthPct() < 50 then
print "Richard Frost Blast"
pUnit:FullCastSpellOnTarget(27808,pUnit:GetClosestPlayer())
pUnit:SendChatMessage(12, 0, "Don't move.")
end
end
function Richard_HandofDeath(pUnit)
pUnit:CastSpell(35354)
pUnit:SendChatMessage(12, 0, "You amused me for a short time, but I have to end it now!")
end
function Richard_OnEnterCombat(pUnit, event)
print "Richard in combat"
pUnit:RegisterEvent("Richard_Flame_Buffet",35000,0)
pUnit:RegisterEvent("Richard_Flame_BuffetB",25000,0)
pUnit:RegisterEvent("Richard_Frostbolt",16000,0)
pUnit:RegisterEvent("Richard_Finger",15000,0)
pUnit:RegisterEvent("Richard_Shadow_Bolt_Volley",45000,0)
pUnit:RegisterEvent("Richard_HandofDeath",300000,0)
pUnit:RegisterEvent("Richard_Frostblast",19000,0)
end
RegisterUnitEvent(90000, 1, "Richard_OnEnterCombat")
function Richard_Leave_Combat(pUnit, event)
print "Richard_Wipe initiated..."
pUnit:SendChatMessage(11, 0, "Already over?")
pUnit:RemoveEvents()
end
RegisterUnitEvent(90000, 2, "Richard_Leave_Combat")
function Richard_KillsPlayer(pUnit, event)
print "Richard_KillsPlayer initiated..."
pUnit:SendChatMessage(12, 0, "Amusing. Who is next?")
end
RegisterUnitEvent(90000, 3, "Richard_KillsPlayer")
function Richard_Dies(pUnit, event)
print "Richard_Dies initiated..."
pUnit:SendChatMessage(12, 0, "This is not...POSSIBLE!")
pUnit:RemoveEvents()
end
RegisterUnitEvent(90000, 4, "Richard_Dies")
Thats it. Hopefully someone test this.