ID:146435
 
Code:
area/TEMPLE_BOSS
var
turf/start
proc
CheckBoss()
for(var/tmp/mob/boss/temple/center/B in src)
B.loc = start
if(istype(B,/mob/boss/temple/center))
B.hits = 10
return 1
return 0
reset()
if(CheckBoss()) return
var/tmp/mob/boss/temple/center/C = new(1,1,1)
var/tmp/mob/boss/temple/left/L = new(1,1,1)
var/tmp/mob/boss/temple/right/R = new(1,1,1)
C.loc = start
L.loc = locate(C.x-1,C.y,C.z)
R.loc = locate(C.x+1,C.y,C.z)

Exited(mob/pc/M)
..()
if(istype(M,/mob/pc))
for(var/tmp/mob/pc/Oth in src)
if(istype(Oth,/mob/pc))
return
reset()
for(var/tmp/obj/prize/P in src)
P.Lock()
mob
boss
temple
icon = 'boss 1.dmi'
icon_state = "center"
dir = EAST
center
var/tmp
hits = 10
ready = 1
hitable = 1
New()
..()
walk(src,dir,hits)

var/tmp/area/TEMPLE_BOSS/A = loc.loc //DEBUG says the problem am here
A.start = loc


runtime error: Cannot read null.loc
proc name: New (/mob/boss/temple/center/New)
usr: the center (/mob/boss/temple/center)
src: the center (/mob/boss/temple/center)
call stack:
the center (/mob/boss/temple/center): New()
TEMPLE BOSS (/area/TEMPLE_BOSS): reset()
TEMPLE BOSS (/area/TEMPLE_BOSS): Exited(Fartmonger (/mob/pc))
Fartmonger (/mob/pc): Move(Palace (32,38,3)

Problem description:
When the code up there runs I get that runtime error, I really don't know what's going on. The code is meant to respawn a boss if all players leave his room and he's dead. It respawns him ok but I still get that error message, can anyone offer any help?

You're using new(1,1,1), which is wrong, instead of new(locate(1,1,1)), which is right. A standard atom new() takes one argument, not three.

Lummox JR
In response to Lummox JR
I changed the new() args as you suggested, and it's still showing a runtime error. I really can't think of any reason it's not working... is there any way to shut the log up? XD
In response to Fartmonger
area
var
start
area/TEMPLE_BOSS

proc
CheckBoss()
for(var/tmp/mob/boss/temple/center/B in src)
B.loc = start
if(istype(B,/mob/boss/temple/center))
B.hits = 10
return 1
return 0
reset()
if(CheckBoss()) return
var/tmp/mob/boss/temple/center/C = new(locate(1,1,1))
var/tmp/mob/boss/temple/left/L = new(locate(1,1,1))
var/tmp/mob/boss/temple/right/R = new(locate(1,1,1))
C.loc = start
L.loc = locate(C.x-1,C.y,C.z)
R.loc = locate(C.x+1,C.y,C.z)

Exited(mob/pc/M)
..()
if(istype(M,/mob/pc))
for(var/tmp/mob/pc/Oth in src)
if(istype(Oth,/mob/pc))
return
reset()
for(var/tmp/obj/prize/P in src)
P.Lock()

I changed the code like that and it worked without a problem... any reason why?