The Dynamics of a Bad Pull
Background:
So one day after a particularly bad pull and nasty wipe in a GoD Expedition I decided to set out to discover what dynamics were in place during a bad pull. After much searching and researching I finally unearthed the actual code that is called on the Sony servers during such a pull.
I am sure many of you are not programmers but Sony's code is pretty easy to follow and the developer has kindly placed comments in places to clarify things. The code gives a great insight into what goes on server side when you experience a bad pull.
The Code:
Sub Bad_Pull
Mob.Area_Effect_Agro = ON
Mob.Agro_Unrelated_Mobs = TRUE
Mob.Target = Mob.Friends(ALL)
Mob.Friends(ALL).Agro = 220%
Mobs(ALL).Rampage.Mode = ON
Mobs(ALL).Flurry.Mode = ON
Raid.Rangers.Instant_Death_Mode = ALWAYS_ON
***** Dev Note: Don't really need this line as this is the default mode for the Ranger Class.... *****
Mob.Move_Mode = FULL_TRAIN
Mob.Attack_Direction = MULTIPLE_RANDOM
Train.Destination = RAID_CAMP
Train.Wipe_Mode = ENTIRE_RAID
Train.Go
Do Until Raid.IsWiped = TRUE
Target Raid.Rangers(ALL)
Summon Raid.Rangers(ALL)
Kill Raid.Rangers(ALL)
**** Dev Note: Snicker ****
Do Until Raid.Clerics = 0
Target Raid.Cleric
Summon Raid.Cleric
Kill Raid.Cleric
Loop
If Raid.Wizard.Casting = EVAC_TYPE_SPELL then Spell.Fizzle_Mode = TRUE
Kill Raid.Wizard
If Raid.Druid.Casting = EVAC_TYPE_SPELL then Spell.Fizzle_Mode = TRUE
Kill Raid.Druid
**** Dev Note: Mwuhahaha Time to die a Dr00d! ****
If Raid.Monk.FeignDeath = TRUE Then CastSpell.Target = Raid.Monk
Kill Raid.Monk
If Raid.Necro.FeignDeath = TRUE Then CastSpell.Target = Raid.Necro
Kill Raid.Necro
If Raid.ShadowKnight.FeignDeath = TRUE Then CastSpell.Target = Raid.ShadowKnight
Kill Raid.ShadowKnight
If Rand(100) > 50 Then
Mob.Gate
Mob.HP = 100%
Mob.Buff = ALL
Mob.Agro_Unrelated_Mobs = TRUE
Mob.Destination = RAID_CAMP
Mob.Go
End If
Target Raid.Casters(ALL)
Summon Raid.Casters(ALL)
Kill Raid.Casters(ALL)
If Raid.Player.IsDead = FALSE Then Summon Raid.Player
Kill Raid.Player
Raid.IsWiped = TRUE
End Loop
**** Dev Note: All dead now! Mwuhahaha ****
Set Zone.Summon_Corpse = FALSE
Set Mobs(ALL).Corpse_Camp_Mode = ON
Set Mobs(ALL).See_Invis = TRUE
Set Mobs(ALL).See_SOS = TRUE
IF Raid.Player.Can_Rez = TRUE Then Raid.Player.Force_Link_Dead = TRUE
Tell Each Raid.Player "You have entered - " & HOME_ZONE & " LOADING PLEASE WAIT...."
Raid.Players(ALL).XP = Raid.Players(ALL).XP - (10000 * Rand(100))
Say SystemWide "Grettings Norrath! All servers will be coming down in 5 minutes for an update. The estimated downtime will be 7 hours. Please plan accordingly!"
Player.Force_Full_Repatch = TRUE
PatcherServer.Mode = OFF_LINE
Server.Players(ALL).Kick = TRUE
Goto Calculate_Profits
End Sub