mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 18:22:39 +00:00
Explosions will delay a bit longer before allowing powernet rebuilds. Removed the Ionstorm Command reports at Urist's request, he said he would add something later. Added dust storms to meteor mode. Fixed most of the runtimes in the latest log. Wizards mind_transfer now needs his robes, this prevents the constant body swap mess. Z 1 lost all of its areas sometime in the last two revs. I think I got everything back in place but would not mind if a mapper took a look. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2037 316c924e-a436-60f5-8080-3fe189b3f50e
275 lines
9.1 KiB
Plaintext
275 lines
9.1 KiB
Plaintext
/proc/togglebuildmode(mob/M as mob in world)
|
|
set name = "Toggle Build Mode"
|
|
set category = "Special Verbs"
|
|
if(M.client)
|
|
if(M.client.buildmode)
|
|
log_admin("[key_name(usr)] has left build mode.")
|
|
M.client.buildmode = 0
|
|
M.client.show_popup_menus = 1
|
|
for(var/obj/buildholder/H)
|
|
if(H.cl == M.client)
|
|
del(H)
|
|
else
|
|
log_admin("[key_name(usr)] has entered build mode.")
|
|
M.client.buildmode = 1
|
|
M.client.show_popup_menus = 0
|
|
|
|
var/obj/buildholder/H = new/obj/buildholder()
|
|
var/obj/builddir/A = new/obj/builddir(H)
|
|
A.master = H
|
|
var/obj/buildhelp/B = new/obj/buildhelp(H)
|
|
B.master = H
|
|
var/obj/buildmode/C = new/obj/buildmode(H)
|
|
C.master = H
|
|
var/obj/buildquit/D = new/obj/buildquit(H)
|
|
D.master = H
|
|
|
|
H.builddir = A
|
|
H.buildhelp = B
|
|
H.buildmode = C
|
|
H.buildquit = D
|
|
M.client.screen += A
|
|
M.client.screen += B
|
|
M.client.screen += C
|
|
M.client.screen += D
|
|
H.cl = M.client
|
|
|
|
/obj/builddir
|
|
density = 1
|
|
anchored = 1
|
|
layer = 20
|
|
dir = NORTH
|
|
icon = 'buildmode.dmi'
|
|
icon_state = "build"
|
|
screen_loc = "NORTH,WEST"
|
|
var/obj/buildholder/master = null
|
|
/obj/buildhelp
|
|
density = 1
|
|
anchored = 1
|
|
layer = 20
|
|
dir = NORTH
|
|
icon = 'buildmode.dmi'
|
|
icon_state = "buildhelp"
|
|
screen_loc = "NORTH,WEST+1"
|
|
var/obj/buildholder/master = null
|
|
/obj/buildmode
|
|
density = 1
|
|
anchored = 1
|
|
layer = 20
|
|
dir = NORTH
|
|
icon = 'buildmode.dmi'
|
|
icon_state = "buildmode1"
|
|
screen_loc = "NORTH,WEST+2"
|
|
var/obj/buildholder/master = null
|
|
var/varholder = "name"
|
|
var/valueholder = "derp"
|
|
var/objholder = "/obj/closet"
|
|
/obj/buildquit
|
|
density = 1
|
|
anchored = 1
|
|
layer = 20
|
|
dir = NORTH
|
|
icon = 'buildmode.dmi'
|
|
icon_state = "buildquit"
|
|
screen_loc = "NORTH,WEST+3"
|
|
var/obj/buildholder/master = null
|
|
|
|
/obj/buildquit/Click()
|
|
togglebuildmode(master.cl.mob)
|
|
|
|
/obj/buildholder
|
|
density = 0
|
|
anchored = 1
|
|
var/client/cl = null
|
|
var/obj/builddir/builddir = null
|
|
var/obj/buildhelp/buildhelp = null
|
|
var/obj/buildmode/buildmode = null
|
|
var/obj/buildquit/buildquit = null
|
|
|
|
/obj/builddir/Click()
|
|
switch(dir)
|
|
if(NORTH)
|
|
dir = EAST
|
|
if(EAST)
|
|
dir = SOUTH
|
|
if(SOUTH)
|
|
dir = WEST
|
|
if(WEST)
|
|
dir = NORTHWEST
|
|
if(NORTHWEST)
|
|
dir = NORTH
|
|
|
|
/obj/buildhelp/Click()
|
|
switch(master.cl.buildmode)
|
|
if(1)
|
|
usr << "\blue ***********************************************************"
|
|
usr << "\blue Left Mouse Button = Construct / Upgrade"
|
|
usr << "\blue Right Mouse Button = Deconstruct / Delete / Downgrade"
|
|
usr << "\blue Left Mouse Button + ctrl = R-Window"
|
|
usr << "\blue Left Mouse Button + alt = Airlock"
|
|
usr << ""
|
|
usr << "\blue Use the button in the upper left corner to"
|
|
usr << "\blue change the direction of built objects."
|
|
usr << "\blue ***********************************************************"
|
|
if(2)
|
|
usr << "\blue ***********************************************************"
|
|
usr << "\blue Right Mouse Button on buildmode button = Set object type"
|
|
usr << "\blue Left Mouse Button on turf/obj = Place objects"
|
|
usr << "\blue Right Mouse Button = Delete objects"
|
|
usr << ""
|
|
usr << "\blue Use the button in the upper left corner to"
|
|
usr << "\blue change the direction of built objects."
|
|
usr << "\blue ***********************************************************"
|
|
if(3)
|
|
usr << "\blue ***********************************************************"
|
|
usr << "\blue Right Mouse Button on buildmode button = Select var(type) & value"
|
|
usr << "\blue Left Mouse Button on turf/obj/mob = Set var(type) & value"
|
|
usr << "\blue Right Mouse Button on turf/obj/mob = Reset var's value"
|
|
usr << "\blue ***********************************************************"
|
|
|
|
/obj/buildmode/Click(location, control, params)
|
|
var/list/pa = params2list(params)
|
|
|
|
if(pa.Find("left"))
|
|
switch(master.cl.buildmode)
|
|
if(1)
|
|
master.cl.buildmode = 2
|
|
src.icon_state = "buildmode2"
|
|
if(2)
|
|
master.cl.buildmode = 3
|
|
src.icon_state = "buildmode3"
|
|
if(3)
|
|
master.cl.buildmode = 1
|
|
src.icon_state = "buildmode1"
|
|
else if(pa.Find("right"))
|
|
switch(master.cl.buildmode)
|
|
if(1)
|
|
return
|
|
if(2)
|
|
objholder = input(usr,"Enter typepath:" ,"Typepath","/obj/closet")
|
|
var/list/removed_paths = list("/obj/bhole")
|
|
if(objholder in removed_paths)
|
|
alert("That path is not allowed.")
|
|
objholder = "/obj/closet"
|
|
else if (dd_hasprefix(objholder, "/mob") && !(usr.client.holder.rank in list("Game Master", "Game Admin", "Badmin")))
|
|
objholder = "/obj/closet"
|
|
if(3)
|
|
var/list/locked = list("vars", "key", "ckey", "client", "firemut", "ishulk", "telekinesis", "xray", "virus", "viruses", "cuffed", "ka", "last_eaten", "urine")
|
|
|
|
master.buildmode.varholder = input(usr,"Enter variable name:" ,"Name", "name")
|
|
if(master.buildmode.varholder in locked && !(usr.client.holder.rank in list("Game Master", "Game Admin")))
|
|
return
|
|
var/thetype = input(usr,"Select variable type:" ,"Type") in list("text","number","mob-reference","obj-reference","turf-reference")
|
|
if(!thetype) return
|
|
switch(thetype)
|
|
if("text")
|
|
master.buildmode.valueholder = input(usr,"Enter variable value:" ,"Value", "value") as text
|
|
if("number")
|
|
master.buildmode.valueholder = input(usr,"Enter variable value:" ,"Value", 123) as num
|
|
if("mob-reference")
|
|
master.buildmode.valueholder = input(usr,"Enter variable value:" ,"Value") as mob in world
|
|
if("obj-reference")
|
|
master.buildmode.valueholder = input(usr,"Enter variable value:" ,"Value") as obj in world
|
|
if("turf-reference")
|
|
master.buildmode.valueholder = input(usr,"Enter variable value:" ,"Value") as turf in world
|
|
|
|
|
|
/proc/build_click(var/mob/user, buildmode, location, control, params, var/obj/object)
|
|
|
|
var/obj/buildholder/holder = null
|
|
|
|
for(var/obj/buildholder/H)
|
|
if(H.cl == user.client)
|
|
holder = H
|
|
break
|
|
|
|
if(!holder) return
|
|
var/list/pa = params2list(params)
|
|
|
|
|
|
switch(buildmode)
|
|
|
|
if(1)
|
|
if(istype(object,/turf) && pa.Find("left") && !pa.Find("alt") && !pa.Find("ctrl") )
|
|
if(istype(object,/turf/space))
|
|
var/turf/T = object
|
|
T.ReplaceWithFloor()
|
|
return
|
|
else if(istype(object,/turf/simulated/floor))
|
|
var/turf/T = object
|
|
T.ReplaceWithWall()
|
|
return
|
|
else if(istype(object,/turf/simulated/wall))
|
|
var/turf/T = object
|
|
T.ReplaceWithRWall()
|
|
return
|
|
|
|
else if(pa.Find("right"))
|
|
if(istype(object,/turf/simulated/wall))
|
|
var/turf/T = object
|
|
T.ReplaceWithFloor()
|
|
return
|
|
else if(istype(object,/turf/simulated/floor))
|
|
var/turf/T = object
|
|
T.ReplaceWithSpace()
|
|
return
|
|
else if(istype(object,/turf/simulated/wall/r_wall))
|
|
var/turf/T = object
|
|
T.ReplaceWithWall()
|
|
return
|
|
else if(istype(object,/obj))
|
|
del(object)
|
|
return
|
|
|
|
else if(istype(object,/turf) && pa.Find("alt") && pa.Find("left"))
|
|
new/obj/machinery/door/airlock(get_turf(object))
|
|
|
|
else if(istype(object,/turf) && pa.Find("ctrl") && pa.Find("left"))
|
|
switch(holder.builddir.dir)
|
|
if(NORTH)
|
|
var/obj/window/reinforced/WIN = new/obj/window/reinforced(get_turf(object))
|
|
WIN.dir = NORTH
|
|
if(SOUTH)
|
|
var/obj/window/reinforced/WIN = new/obj/window/reinforced(get_turf(object))
|
|
WIN.dir = SOUTH
|
|
if(EAST)
|
|
var/obj/window/reinforced/WIN = new/obj/window/reinforced(get_turf(object))
|
|
WIN.dir = EAST
|
|
if(WEST)
|
|
var/obj/window/reinforced/WIN = new/obj/window/reinforced(get_turf(object))
|
|
WIN.dir = WEST
|
|
if(NORTHWEST)
|
|
var/obj/window/reinforced/WIN = new/obj/window/reinforced(get_turf(object))
|
|
WIN.dir = NORTHWEST
|
|
if(2)
|
|
if(pa.Find("left"))
|
|
var/obj/A = new holder.buildmode.objholder (get_turf(object))
|
|
A.dir = holder.builddir.dir
|
|
blink(A)
|
|
else if(pa.Find("right"))
|
|
if(isobj(object)) del(object)
|
|
|
|
if(3)
|
|
if(pa.Find("left")) //I cant believe this shit actually compiles.
|
|
if(object.vars.Find(holder.buildmode.varholder))
|
|
log_admin("[key_name(usr)] modified [object.name]'s [holder.buildmode.varholder] to [holder.buildmode.valueholder]")
|
|
// message_admins("[key_name_admin(usr)] modified [object.name]'s [holder.buildmode.varholder] to [holder.buildmode.valueholder]", 1)
|
|
object.vars[holder.buildmode.varholder] = holder.buildmode.valueholder
|
|
blink(object)
|
|
else
|
|
usr << "\red [initial(object.name)] does not have a var called '[holder.buildmode.varholder]'"
|
|
if(pa.Find("right"))
|
|
if(object.vars.Find(holder.buildmode.varholder))
|
|
log_admin("[key_name(usr)] modified [object.name]'s [holder.buildmode.varholder] to [holder.buildmode.valueholder]")
|
|
// message_admins("[key_name_admin(usr)] modified [object.name]'s [holder.buildmode.varholder] to [holder.buildmode.valueholder]", 1)
|
|
object.vars[holder.buildmode.varholder] = initial(object.vars[holder.buildmode.varholder])
|
|
blink(object)
|
|
else
|
|
usr << "\red [initial(object.name)] does not have a var called '[holder.buildmode.varholder]'"
|
|
|
|
/proc/blink(atom/A)
|
|
A.icon += rgb(0,75,75)
|
|
spawn(10)
|
|
if(A)
|
|
A.icon = initial(A.icon)
|