If it is not an infinite loop, either do 'set background=1' or set world.loop_checks=0.
proc name: StartRandomBattle (/mob/proc/StartRandomBattle)
usr: SSJ4_Majin_Mist (/mob/Guy)
src: SSJ4_Majin_Mist (/mob/Guy)
call stack:
SSJ4_Majin_Mist (/mob/StickGuy): StartRandomBattle(null, null, null)
GrassBattle (5,17,1) (/turf/GrassBattle): Entered(SSJ4_Majin_Mist (/mob/Guy), GrassBattle (4,17,1) (/turf/GrassBattle))
This also happen if i use attack couple times.Ok and the code that might be causing that is
mob/proc/StartRandomBattle(var/mob/Mons1, var/mob/Mons2, var/mob/Mons3)
var/turf/Location
for (var/turf/BattleLocation/BatLoc in world)
var/NotAvailable = 0
for (var/atom/A in BatLoc)
if (A.density == 1)
NotAvailable = 1
if (!NotAvailable)
Location = BatLoc
if (!Location)
return
var/global/BattleCount
BattleCount ++
usr.Escape = 0
usr.XLoc = usr.x
usr.YLoc = usr.y
usr.ZLoc = usr.z
usr.BattleNumber = BattleCount
usr.Move(locate(Location.x - 1, Location.y, Location.z))
usr.client.lazy_eye = 5
usr.icon_state = "Normal"
step(usr, EAST)
usr.dir = WEST
if (Mons1)
Mons1.BattleNumber = BattleCount
Mons1.Move(locate(usr.x - 4, usr.y, usr.z))
if (Mons2)
Mons2.BattleNumber = BattleCount
Mons2.Move(locate(usr.x - 4, usr.y + 1, usr.z))
if (Mons3)
Mons3.BattleNumber = BattleCount
var/PlayerCount
var/list/TurnOrder = new()
var/list/Players = new()
for(var/mob/M in world)
if (M.BattleNumber == BattleCount)
Players += M
var/NextPlayer
var/Agi
do
for (var/A = 0;A <= length(Players);A++)
Agi = 0
for(var/mob/M in Players)
if (M.Agility > Agi)
NextPlayer = M
Agi = M.Agility
else if (M.Agility == Agi)
if (rand(0,1))
NextPlayer = M
TurnOrder += NextPlayer
Players -= NextPlayer
PlayerCount ++
while (length(Players) > 0)
do
for(var/mob/Attacker in TurnOrder)
if (Attacker.powerlevel > 0)
if (Attacker.BattleNumber == BattleCount)
if (Attacker.client && !usr.Escape)
Attacker << "It is now your turn!"
Attacker.IsMyTurn = 1
while (Attacker.IsMyTurn)
sleep(5)
else
Attacker.NPCAttack()
else
TurnOrder -= Attacker
PlayerCount -= 1
// Here we check for any dead mobs.
for(var/mob/Dead in world)
if (Dead.Escape)
PlayerCount -= 1
TurnOrder -= Dead
Dead.icon_state = null
Dead.BattleNumber = 0
Dead.Move(locate(Dead.XLoc, Dead.YLoc, Dead.ZLoc))
else if (Dead.BattleNumber == BattleCount && Dead.powerlevel < 1)
Dead.icon_state = "Dead"
TurnOrder -= Dead
PlayerCount -= 1
if (!Dead.client)
Dead.BattleNumber = -1
while (PlayerCount > 1)
for (var/mob/M in view())
if (!M.client)
del (M)
else
M.icon_state = null
M.client.lazy_eye = 0
M.Move(locate(M.XLoc, M.YLoc, M.ZLoc))
M.BattleNumber = 0
Lummox JR