mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 18:53:06 +00:00
Fixed a few runtimes.
Changed the shotgun pump proc a bit, should work better now and not teleport old shells around. Added a config option for the jobs to be loaded from the jobs.txt rather than use the defaults. Loyalty implanter removed. The Limplanter was designed to be on the prison station as it took more time and was a pain to get people up there to implant them. No prison station, no Limplanter. Implanter lockbox moved to the armory from the HoS' locker. Security room's table once again shrunk so people can walk around in there. Brig lockers are now anchored to the inside of the cells and once again have their IDs set. Warden's locker moved to his office. Cell controls Names/IDs/Access fixed as well as once again working with the brig lockers. Removed a few of the blast doors from the inside of the brig. The three secure cells have blast doors controlled from a button outside of the cell. The play admin midis toggle should be working properly now. Morgue trays will no longer teleport anything from anywhere. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2413 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
@@ -37,6 +37,7 @@
|
|||||||
var/guest_jobban = 1
|
var/guest_jobban = 1
|
||||||
var/usewhitelist = 0
|
var/usewhitelist = 0
|
||||||
var/kick_inactive = 0 //force disconnect for inactive players
|
var/kick_inactive = 0 //force disconnect for inactive players
|
||||||
|
var/load_jobs_from_txt = 0
|
||||||
|
|
||||||
var/server
|
var/server
|
||||||
var/banappeals
|
var/banappeals
|
||||||
@@ -187,7 +188,7 @@
|
|||||||
config.banappeals = value
|
config.banappeals = value
|
||||||
|
|
||||||
if ("guest_jobban")
|
if ("guest_jobban")
|
||||||
config.guest_jobban = text2num(value)
|
config.guest_jobban = 1
|
||||||
|
|
||||||
if ("usewhitelist")
|
if ("usewhitelist")
|
||||||
config.usewhitelist = 1
|
config.usewhitelist = 1
|
||||||
@@ -214,7 +215,10 @@
|
|||||||
diary << "Incorrect probability configuration definition: [prob_name] [prob_value]."
|
diary << "Incorrect probability configuration definition: [prob_name] [prob_value]."
|
||||||
|
|
||||||
if ("kick_inactive")
|
if ("kick_inactive")
|
||||||
config.kick_inactive = text2num(value)
|
config.kick_inactive = 1
|
||||||
|
|
||||||
|
if("load_jobs_from_txt")
|
||||||
|
load_jobs_from_txt = 1
|
||||||
|
|
||||||
else
|
else
|
||||||
diary << "Unknown setting in configuration: '[name]'"
|
diary << "Unknown setting in configuration: '[name]'"
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ datum/mind
|
|||||||
|
|
||||||
var/has_been_rev = 0//Tracks if this mind has been a rev or not
|
var/has_been_rev = 0//Tracks if this mind has been a rev or not
|
||||||
|
|
||||||
|
|
||||||
proc/transfer_to(mob/new_character)
|
proc/transfer_to(mob/new_character)
|
||||||
if(current)
|
if(current)
|
||||||
current.mind = null
|
current.mind = null
|
||||||
|
|||||||
@@ -39,10 +39,10 @@
|
|||||||
var/STFU_radio //80+ people rounds are fun to admin when text flies faster than airport security
|
var/STFU_radio //80+ people rounds are fun to admin when text flies faster than airport security
|
||||||
var/sound_adminhelp = 0 //If set to 1 this will play a sound when adminhelps are received.
|
var/sound_adminhelp = 0 //If set to 1 this will play a sound when adminhelps are received.
|
||||||
|
|
||||||
var/midis = 1 //Check if midis should be played for someone -- Urist
|
var/midis = 1 //Check if midis should be played for someone
|
||||||
var/bubbles = 1 //Check if bubbles should be displayed for someone -- Doohl
|
var/bubbles = 1 //Check if bubbles should be displayed for someone
|
||||||
var/be_alien = 0 //Check if that guy wants to be an alien -- Urist
|
var/be_alien = 0 //Check if that guy wants to be an alien
|
||||||
var/be_pai = 1 //Consider client when searching for players to recruit as a pAI -- TLE
|
var/be_pai = 1 //Consider client when searching for players to recruit as a pAI
|
||||||
|
|
||||||
|
|
||||||
var/vote = null
|
var/vote = null
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
I'll make some notes on where certain variable defines should probably go.
|
I'll make some notes on where certain variable defines should probably go.
|
||||||
Changing this around would probably require a good look-over the pre-existing code.
|
Changing this around would probably require a good look-over the pre-existing code.
|
||||||
*/
|
*/
|
||||||
|
var/midis = 1 //Check if midis should be played for someone
|
||||||
var/alien_egg_flag = 0//Have you been infected?
|
var/alien_egg_flag = 0//Have you been infected?
|
||||||
var/last_special = 0
|
var/last_special = 0
|
||||||
var/obj/screen/zone_sel/zone_sel = null
|
var/obj/screen/zone_sel/zone_sel = null
|
||||||
|
|||||||
@@ -47,6 +47,7 @@
|
|||||||
/mob/living/simple_animal/Login()
|
/mob/living/simple_animal/Login()
|
||||||
if(src && src.client)
|
if(src && src.client)
|
||||||
src.client.screen = null
|
src.client.screen = null
|
||||||
|
..()
|
||||||
|
|
||||||
/mob/living/simple_animal/Life()
|
/mob/living/simple_animal/Life()
|
||||||
|
|
||||||
|
|||||||
@@ -154,7 +154,8 @@
|
|||||||
icon = 'windoor.dmi'
|
icon = 'windoor.dmi'
|
||||||
icon_state = "leftsecure"
|
icon_state = "leftsecure"
|
||||||
base_state = "leftsecure"
|
base_state = "leftsecure"
|
||||||
var/id = 1.0
|
req_access = list(access_security)
|
||||||
|
var/id = null
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/door/window/northleft
|
/obj/machinery/door/window/northleft
|
||||||
|
|||||||
@@ -260,3 +260,42 @@ var/global/datum/controller/occupations/job_master
|
|||||||
spawn(1)
|
spawn(1)
|
||||||
clname(H)
|
clname(H)
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
|
||||||
|
proc/LoadJobs(jobsfile) //ran during round setup, reads info from jobs.txt -- Urist
|
||||||
|
if(!config.load_jobs_from_txt)
|
||||||
|
return 0
|
||||||
|
|
||||||
|
var/text = file2text(jobsfile)
|
||||||
|
|
||||||
|
if(!text)
|
||||||
|
world << "No jobs.txt found, using defaults."
|
||||||
|
return
|
||||||
|
|
||||||
|
var/list/jobEntries = dd_text2list(text, "\n")
|
||||||
|
|
||||||
|
for(var/job in jobEntries)
|
||||||
|
if(!job)
|
||||||
|
continue
|
||||||
|
|
||||||
|
job = trim(job)
|
||||||
|
if (!length(job))
|
||||||
|
continue
|
||||||
|
|
||||||
|
var/pos = findtext(job, "=")
|
||||||
|
var/name = null
|
||||||
|
var/value = null
|
||||||
|
|
||||||
|
if(pos)
|
||||||
|
name = copytext(job, 1, pos)
|
||||||
|
value = copytext(job, pos + 1)
|
||||||
|
else
|
||||||
|
continue
|
||||||
|
|
||||||
|
if(name && value)
|
||||||
|
var/datum/job/J = GetJob(name)
|
||||||
|
if(!J) continue
|
||||||
|
J.total_positions = text2num(value)
|
||||||
|
J.spawn_positions = text2num(value)
|
||||||
|
|
||||||
|
return 1
|
||||||
@@ -1,45 +1,4 @@
|
|||||||
/*
|
|
||||||
/proc/SetupJobs(jobsfile) //ran during round setup, reads info from jobs.txt -- Urist
|
|
||||||
return 1
|
|
||||||
|
|
||||||
var/text = file2text(jobsfile)
|
|
||||||
|
|
||||||
if(!text)
|
|
||||||
world << "No jobs.txt found, using defaults."
|
|
||||||
return
|
|
||||||
|
|
||||||
var/list/jobEntries = dd_text2list(text, "\n")
|
|
||||||
|
|
||||||
world << "\red \b Setting up jobs..."
|
|
||||||
|
|
||||||
for(var/job in jobEntries)
|
|
||||||
if (!job)
|
|
||||||
continue
|
|
||||||
|
|
||||||
job = trim(job)
|
|
||||||
if (!length(job))
|
|
||||||
continue
|
|
||||||
|
|
||||||
var/pos = findtext(job, "=")
|
|
||||||
var/name = null
|
|
||||||
var/value = null
|
|
||||||
|
|
||||||
if (pos)
|
|
||||||
name = copytext(job, 1, pos)
|
|
||||||
value = copytext(job, pos + 1)
|
|
||||||
else
|
|
||||||
continue
|
|
||||||
|
|
||||||
if(name && value)
|
|
||||||
occupations[name] = text2num(value)
|
|
||||||
|
|
||||||
if(name && value)
|
|
||||||
jobMax[name] = text2num(value)
|
|
||||||
|
|
||||||
world << "\red \b Jobs set up!"
|
|
||||||
|
|
||||||
return
|
|
||||||
*/
|
|
||||||
|
|
||||||
//TODO: put these somewhere else
|
//TODO: put these somewhere else
|
||||||
/client/proc/mimewall()
|
/client/proc/mimewall()
|
||||||
|
|||||||
@@ -14,122 +14,155 @@
|
|||||||
req_access = list(access_brig)
|
req_access = list(access_brig)
|
||||||
anchored = 1.0 // can't pick it up
|
anchored = 1.0 // can't pick it up
|
||||||
density = 0 // can walk through it.
|
density = 0 // can walk through it.
|
||||||
var/id = null // id of door it controls.
|
var
|
||||||
var/releasetime = 0 // when world.time reaches it - release the prisoneer
|
id = null // id of door it controls.
|
||||||
var/timing = 1 // boolean, true/1 timer is on, false/0 means it's not timing
|
releasetime = 0 // when world.time reaches it - release the prisoneer
|
||||||
var/childproof = 0 // boolean, when activating the door controls, locks door for 1 minute
|
timing = 1 // boolean, true/1 timer is on, false/0 means it's not timing
|
||||||
var/picture_state // icon_state of alert picture, if not displaying text/numbers
|
picture_state // icon_state of alert picture, if not displaying text/numbers
|
||||||
var/list/obj/machinery/door/window/brigdoor/targetdoors = new
|
list/obj/machinery/targets = list()
|
||||||
var/list/obj/machinery/flasher/targetflashers = new
|
|
||||||
|
|
||||||
/obj/machinery/door_timer/New()
|
|
||||||
|
New()
|
||||||
..()
|
..()
|
||||||
|
|
||||||
|
pixel_x = ((src.dir & 3)? (0) : (src.dir == 4 ? 32 : -32))
|
||||||
|
pixel_y = ((src.dir & 3)? (src.dir ==1 ? 24 : -32) : (0))
|
||||||
|
|
||||||
|
spawn(20)
|
||||||
for(var/obj/machinery/door/window/brigdoor/M in world)
|
for(var/obj/machinery/door/window/brigdoor/M in world)
|
||||||
if (M.id == src.id)
|
if (M.id == src.id)
|
||||||
targetdoors += M
|
targets += M
|
||||||
break
|
|
||||||
if (targetdoors.len==0)
|
|
||||||
stat |= BROKEN
|
|
||||||
targetflashers = list()
|
|
||||||
for(var/obj/machinery/flasher/F in world)
|
for(var/obj/machinery/flasher/F in world)
|
||||||
if(F.id == src.id)
|
if(F.id == src.id)
|
||||||
targetflashers += F
|
targets += F
|
||||||
|
|
||||||
|
for(var/obj/structure/secure_closet/brig/C in world)
|
||||||
|
if(C.id == src.id)
|
||||||
|
targets += C
|
||||||
|
|
||||||
|
if(targets.len==0)
|
||||||
|
stat |= BROKEN
|
||||||
update_icon()
|
update_icon()
|
||||||
|
return
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
//Main door timer loop, if it's timing and time is >0 reduce time by 1.
|
//Main door timer loop, if it's timing and time is >0 reduce time by 1.
|
||||||
// if it's less than 0, open door, reset timer
|
// if it's less than 0, open door, reset timer
|
||||||
// update the door_timer window and the icon
|
// update the door_timer window and the icon
|
||||||
/obj/machinery/door_timer/process()
|
process()
|
||||||
if (stat & (NOPOWER|BROKEN))
|
if(stat & (NOPOWER|BROKEN)) return
|
||||||
return
|
|
||||||
if(src.timing)
|
if(src.timing)
|
||||||
if(world.time > src.releasetime)
|
if(world.time > src.releasetime)
|
||||||
src.opendoor() // open doors, reset timer, clear status screen
|
src.timer_end() // open doors, reset timer, clear status screen
|
||||||
src.timing = 0
|
src.timing = 0
|
||||||
src.updateUsrDialog()
|
src.updateUsrDialog()
|
||||||
src.update_icon()
|
src.update_icon()
|
||||||
else
|
else
|
||||||
opendoor()
|
timer_end()
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
// has the door power sitatuation changed, if so update icon.
|
// has the door power sitatuation changed, if so update icon.
|
||||||
/obj/machinery/door_timer/power_change()
|
power_change()
|
||||||
..()
|
..()
|
||||||
update_icon()
|
update_icon()
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
// open/closedoor checks if door_timer has power, if so it checks if the
|
// open/closedoor checks if door_timer has power, if so it checks if the
|
||||||
// linked door is open/closed (by density) then opens it/closes it.
|
// linked door is open/closed (by density) then opens it/closes it.
|
||||||
/obj/machinery/door_timer/proc/opendoor()
|
proc/timer_start()
|
||||||
if(stat & (NOPOWER|BROKEN))
|
if(stat & (NOPOWER|BROKEN)) return 0
|
||||||
return
|
|
||||||
for (var/obj/machinery/door/window/brigdoor/targetdoor in targetdoors)
|
|
||||||
if(targetdoor.density)
|
|
||||||
spawn( 0 )
|
|
||||||
targetdoor.open()
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/machinery/door_timer/proc/closedoor()
|
for(var/obj/machinery/door/window/brigdoor/door in targets)
|
||||||
if(stat & (NOPOWER|BROKEN))
|
if(door.density) continue
|
||||||
return
|
|
||||||
for (var/obj/machinery/door/window/brigdoor/targetdoor in targetdoors)
|
|
||||||
if(!targetdoor.density)
|
|
||||||
spawn(0)
|
spawn(0)
|
||||||
targetdoor.close()
|
door.close()
|
||||||
return
|
|
||||||
|
|
||||||
/obj/machinery/door_timer/proc/timeleft()
|
for(var/obj/structure/secure_closet/brig/C in targets)
|
||||||
|
if(C.broken) continue
|
||||||
|
if(!C.close()) continue
|
||||||
|
C.locked = 1
|
||||||
|
C.icon_state = C.icon_locked
|
||||||
|
return 1
|
||||||
|
|
||||||
|
|
||||||
|
proc/timer_end()
|
||||||
|
if(stat & (NOPOWER|BROKEN)) return 0
|
||||||
|
|
||||||
|
for(var/obj/machinery/door/window/brigdoor/door in targets)
|
||||||
|
if(!door.density) continue
|
||||||
|
spawn(0)
|
||||||
|
door.open()
|
||||||
|
|
||||||
|
for(var/obj/structure/secure_closet/brig/C in targets)
|
||||||
|
if(C.broken) continue
|
||||||
|
if(C.opened) continue
|
||||||
|
C.locked = 0
|
||||||
|
C.icon_state = C.icon_closed
|
||||||
|
|
||||||
|
return 1
|
||||||
|
|
||||||
|
|
||||||
|
proc/timeleft()
|
||||||
. = (releasetime-world.time)/10
|
. = (releasetime-world.time)/10
|
||||||
if(. < 0)
|
if(. < 0)
|
||||||
. = 0
|
. = 0
|
||||||
|
|
||||||
/obj/machinery/door_timer/proc/timeset(var/seconds)
|
|
||||||
|
proc/timeset(var/seconds)
|
||||||
releasetime=world.time+seconds*10
|
releasetime=world.time+seconds*10
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
//Allows AIs to use door_timer, see human attack_hand function below
|
//Allows AIs to use door_timer, see human attack_hand function below
|
||||||
/obj/machinery/door_timer/attack_ai(var/mob/user as mob)
|
attack_ai(var/mob/user as mob)
|
||||||
return src.attack_hand(user)
|
return src.attack_hand(user)
|
||||||
|
|
||||||
//Allows monkeys to use door_timer, see human attack_hand function below
|
|
||||||
/obj/machinery/door_timer/attack_paw(var/mob/user as mob)
|
|
||||||
return src.attack_hand(user)
|
|
||||||
|
|
||||||
//Allows humans to use door_timer
|
//Allows humans to use door_timer
|
||||||
//Opens dialog window when someone clicks on door timer
|
//Opens dialog window when someone clicks on door timer
|
||||||
// Allows altering timer and the timing boolean.
|
// Allows altering timer and the timing boolean.
|
||||||
// Flasher activation limited to 150 seconds
|
// Flasher activation limited to 150 seconds
|
||||||
/obj/machinery/door_timer/attack_hand(var/mob/user as mob)
|
attack_hand(var/mob/user as mob)
|
||||||
if(..())
|
if(..())
|
||||||
return
|
return
|
||||||
var/dat = "<HTML><BODY><TT><B>Door [src.id] controls</B>"
|
var/second = round(timeleft() % 60)
|
||||||
|
var/minute = round((timeleft() - second) / 60)
|
||||||
user.machine = src
|
user.machine = src
|
||||||
var/d2
|
var/dat = "<HTML><BODY><TT>"
|
||||||
|
dat += "<HR>Timer System:</hr>"
|
||||||
|
dat += "<b>Door [src.id] controls</b><br/>"
|
||||||
if (src.timing)
|
if (src.timing)
|
||||||
d2 = text("<A href='?src=\ref[];timing=0'>Stop Timer and open doors</A><br>", src)
|
dat += "<a href='?src=\ref[src];timing=0'>Stop Timer and open door</a><br/>"
|
||||||
else
|
else
|
||||||
d2 = text("<A href='?src=\ref[];timing=1'>Activate Timer and close doors</A><br>", src)
|
dat += "<a href='?src=\ref[src];timing=1'>Activate Timer and close door</a><br/>"
|
||||||
var/timeleft = timeleft()
|
|
||||||
var/second = round(timeleft % 60)
|
dat += "Time Left: [(minute ? text("[minute]:") : null)][second] <br/>"
|
||||||
var/minute = round((timeleft - second) / 60)
|
dat += "<a href='?src=\ref[src];tp=-60'>-</a> <a href='?src=\ref[src];tp=-1'>-</a> <a href='?src=\ref[src];tp=1'>+</a> <A href='?src=\ref[src];tp=60'>+</a><br/>"
|
||||||
dat += text("<br><HR>\nTimer System: [d2]\nTime Left: [(minute ? text("[minute]:") : null)][second] <A href='?src=\ref[src];tp=-60'>-</A> <A href='?src=\ref[src];tp=-1'>-</A> <A href='?src=\ref[src];tp=1'>+</A> <A href='?src=\ref[src];tp=60'>+</A>")
|
|
||||||
if (targetflashers.len)
|
for(var/obj/machinery/flasher/F in targets)
|
||||||
dat += "<BR>"
|
|
||||||
for(var/obj/machinery/flasher/F in targetflashers)
|
|
||||||
if(F.last_flash && (F.last_flash + 150) > world.time)
|
if(F.last_flash && (F.last_flash + 150) > world.time)
|
||||||
dat += text("<BR><A href='?src=\ref[];fc=1'>Flash Cell (Charging)</A>", src)
|
dat += "<br/><A href='?src=\ref[src];fc=1'>Flash Charging</A>"
|
||||||
else
|
else
|
||||||
dat += text("<BR><A href='?src=\ref[];fc=1'>Flash Cell</A>", src)
|
dat += "<br/><A href='?src=\ref[src];fc=1'>Activate Flash</A>"
|
||||||
dat += text("<BR><BR><A href='?src=\ref[];mach_close=computer'>Close</A></TT></BODY></HTML>", user)
|
|
||||||
|
dat += "<br/><br/><a href='?src=\ref[user];mach_close=computer'>Close</a>"
|
||||||
|
dat += "</TT></BODY></HTML>"
|
||||||
user << browse(dat, "window=computer;size=400x500")
|
user << browse(dat, "window=computer;size=400x500")
|
||||||
onclose(user, "computer")
|
onclose(user, "computer")
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
//Function for using door_timer dialog input, checks if user has permission
|
//Function for using door_timer dialog input, checks if user has permission
|
||||||
// href_list to
|
// href_list to
|
||||||
// "timing" turns on timer
|
// "timing" turns on timer
|
||||||
// "tp" value to modify timer
|
// "tp" value to modify timer
|
||||||
// "fc" activates flasher
|
// "fc" activates flasher
|
||||||
// Also updates dialog window and timer icon
|
// Also updates dialog window and timer icon
|
||||||
/obj/machinery/door_timer/Topic(href, href_list)
|
Topic(href, href_list)
|
||||||
if(..())
|
if(..())
|
||||||
return
|
return
|
||||||
if(!src.allowed(usr))
|
if(!src.allowed(usr))
|
||||||
@@ -148,22 +181,23 @@
|
|||||||
//src.timing = 1
|
//src.timing = 1
|
||||||
//src.closedoor()
|
//src.closedoor()
|
||||||
if(href_list["fc"])
|
if(href_list["fc"])
|
||||||
for (var/obj/machinery/flasher/F in targetflashers)
|
for(var/obj/machinery/flasher/F in targets)
|
||||||
F.flash()
|
F.flash()
|
||||||
src.add_fingerprint(usr)
|
src.add_fingerprint(usr)
|
||||||
src.updateUsrDialog()
|
src.updateUsrDialog()
|
||||||
src.update_icon()
|
src.update_icon()
|
||||||
if(src.timing)
|
if(src.timing)
|
||||||
src.closedoor()
|
src.timer_start()
|
||||||
else
|
else
|
||||||
src.opendoor()
|
src.timer_end()
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
//icon update function
|
//icon update function
|
||||||
// if NOPOWER, display blank
|
// if NOPOWER, display blank
|
||||||
// if BROKEN, display blue screen of death icon AI uses
|
// if BROKEN, display blue screen of death icon AI uses
|
||||||
// if timing=true, run update display function
|
// if timing=true, run update display function
|
||||||
/obj/machinery/door_timer/update_icon()
|
update_icon()
|
||||||
if(stat & (NOPOWER))
|
if(stat & (NOPOWER))
|
||||||
icon_state = "frame"
|
icon_state = "frame"
|
||||||
return
|
return
|
||||||
@@ -178,16 +212,19 @@
|
|||||||
update_display(disp1, disp2)
|
update_display(disp1, disp2)
|
||||||
else
|
else
|
||||||
update_display("SET","TIME")
|
update_display("SET","TIME")
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
// Adds an icon in case the screen is broken/off, stolen from status_display.dm
|
// Adds an icon in case the screen is broken/off, stolen from status_display.dm
|
||||||
/obj/machinery/door_timer/proc/set_picture(var/state)
|
proc/set_picture(var/state)
|
||||||
picture_state = state
|
picture_state = state
|
||||||
overlays = null
|
overlays = null
|
||||||
overlays += image('status_display.dmi', icon_state=picture_state)
|
overlays += image('status_display.dmi', icon_state=picture_state)
|
||||||
|
|
||||||
|
|
||||||
//Checks to see if there's 1 line or 2, adds text-icons-numbers/letters over display
|
//Checks to see if there's 1 line or 2, adds text-icons-numbers/letters over display
|
||||||
// Stolen from status_display
|
// Stolen from status_display
|
||||||
/obj/machinery/door_timer/proc/update_display(var/line1, var/line2)
|
proc/update_display(var/line1, var/line2)
|
||||||
if(line2 == null) // single line display
|
if(line2 == null) // single line display
|
||||||
overlays = null
|
overlays = null
|
||||||
overlays += texticon(line1, 23, -13)
|
overlays += texticon(line1, 23, -13)
|
||||||
@@ -199,9 +236,10 @@
|
|||||||
// valid characters are 0-9 and :
|
// valid characters are 0-9 and :
|
||||||
// px, py are pixel offsets
|
// px, py are pixel offsets
|
||||||
|
|
||||||
|
|
||||||
//Actual string input to icon display for loop, with 5 pixel x offsets for each letter.
|
//Actual string input to icon display for loop, with 5 pixel x offsets for each letter.
|
||||||
//Stolen from status_display
|
//Stolen from status_display
|
||||||
/obj/machinery/door_timer/proc/texticon(var/tn, var/px = 0, var/py = 0)
|
proc/texticon(var/tn, var/px = 0, var/py = 0)
|
||||||
var/image/I = image('status_display.dmi', "blank")
|
var/image/I = image('status_display.dmi', "blank")
|
||||||
var/len = lentext(tn)
|
var/len = lentext(tn)
|
||||||
|
|
||||||
@@ -212,9 +250,47 @@
|
|||||||
var/image/ID = image('status_display.dmi', icon_state=char)
|
var/image/ID = image('status_display.dmi', icon_state=char)
|
||||||
ID.pixel_x = -(d-1)*5 + px
|
ID.pixel_x = -(d-1)*5 + px
|
||||||
ID.pixel_y = py
|
ID.pixel_y = py
|
||||||
|
|
||||||
I.overlays += ID
|
I.overlays += ID
|
||||||
|
|
||||||
return I
|
return I
|
||||||
|
|
||||||
|
|
||||||
|
/obj/machinery/door_timer/cell_1
|
||||||
|
name = "Cell 1"
|
||||||
|
id = "Cell 1"
|
||||||
|
dir = 2
|
||||||
|
pixel_y = -32
|
||||||
|
|
||||||
|
|
||||||
|
/obj/machinery/door_timer/cell_2
|
||||||
|
name = "Cell 2"
|
||||||
|
id = "Cell 2"
|
||||||
|
dir = 2
|
||||||
|
pixel_y = -32
|
||||||
|
|
||||||
|
|
||||||
|
/obj/machinery/door_timer/cell_3
|
||||||
|
name = "Cell 3"
|
||||||
|
id = "Cell 3"
|
||||||
|
dir = 2
|
||||||
|
pixel_y = -32
|
||||||
|
|
||||||
|
|
||||||
|
/obj/machinery/door_timer/cell_4
|
||||||
|
name = "Cell 4"
|
||||||
|
id = "Cell 4"
|
||||||
|
dir = 2
|
||||||
|
pixel_y = -32
|
||||||
|
|
||||||
|
|
||||||
|
/obj/machinery/door_timer/cell_5
|
||||||
|
name = "Cell 5"
|
||||||
|
id = "Cell 5"
|
||||||
|
dir = 2
|
||||||
|
pixel_y = -32
|
||||||
|
|
||||||
|
|
||||||
|
/obj/machinery/door_timer/cell_6
|
||||||
|
name = "Cell 6"
|
||||||
|
id = "Cell 6"
|
||||||
|
dir = 4
|
||||||
|
pixel_x = 32
|
||||||
@@ -123,22 +123,15 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
/obj/structure/m_tray/MouseDrop_T(atom/movable/O as mob|obj, mob/user as mob)
|
/obj/structure/m_tray/MouseDrop_T(atom/movable/O as mob|obj, mob/user as mob)
|
||||||
if (istype(O, /obj/structure/closet/body_bag) || get_dist(user, src) > 1 || get_dist(user, O) > 1 || user.contents.Find(src))
|
|
||||||
O.loc = src.loc
|
|
||||||
for(var/mob/B in viewers(user, 3))
|
|
||||||
if ((B.client && !( B.blinded )))
|
|
||||||
B << text("\red [] stuffs the bodybag into []!", user, src)
|
|
||||||
return
|
|
||||||
if ((!( istype(O, /atom/movable) ) || O.anchored || get_dist(user, src) > 1 || get_dist(user, O) > 1 || user.contents.Find(src)))
|
if ((!( istype(O, /atom/movable) ) || O.anchored || get_dist(user, src) > 1 || get_dist(user, O) > 1 || user.contents.Find(src)))
|
||||||
return
|
return
|
||||||
if (!ismob(O))
|
if (!ismob(O) && !istype(O, /obj/structure/closet/body_bag))
|
||||||
return
|
return
|
||||||
O.loc = src.loc
|
O.loc = src.loc
|
||||||
if (user != O)
|
if (user != O)
|
||||||
for(var/mob/B in viewers(user, 3))
|
for(var/mob/B in viewers(user, 3))
|
||||||
if ((B.client && !( B.blinded )))
|
if ((B.client && !( B.blinded )))
|
||||||
B << text("\red [] stuffs [] into []!", user, O, src)
|
B << text("\red [] stuffs [] into []!", user, O, src)
|
||||||
//Foreach goto(99)
|
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/structure/crematorium/proc/update()
|
/obj/structure/crematorium/proc/update()
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ datum/controller/game_controller
|
|||||||
job_master = new /datum/controller/occupations()
|
job_master = new /datum/controller/occupations()
|
||||||
if(job_master.SetupOccupations())
|
if(job_master.SetupOccupations())
|
||||||
world << "\red \b Job setup complete"
|
world << "\red \b Job setup complete"
|
||||||
|
job_master.LoadJobs("config/jobs.txt")
|
||||||
|
|
||||||
if(!tension_master)
|
if(!tension_master)
|
||||||
tension_master = new /datum/tension()
|
tension_master = new /datum/tension()
|
||||||
@@ -33,8 +34,6 @@ datum/controller/game_controller
|
|||||||
|
|
||||||
setupgenetics()
|
setupgenetics()
|
||||||
|
|
||||||
// SetupJobs("config/jobs.txt")
|
|
||||||
|
|
||||||
syndicate_code_phrase = generate_code_phrase()//Sets up code phrase for traitors, for the round.
|
syndicate_code_phrase = generate_code_phrase()//Sets up code phrase for traitors, for the round.
|
||||||
syndicate_code_response = generate_code_phrase()
|
syndicate_code_response = generate_code_phrase()
|
||||||
|
|
||||||
|
|||||||
@@ -55,7 +55,6 @@
|
|||||||
new /obj/item/clothing/head/helmet(src)
|
new /obj/item/clothing/head/helmet(src)
|
||||||
new /obj/item/device/radio/headset/heads/hos(src)
|
new /obj/item/device/radio/headset/heads/hos(src)
|
||||||
new /obj/item/weapon/shield/riot(src)
|
new /obj/item/weapon/shield/riot(src)
|
||||||
new /obj/item/weapon/storage/lockbox/loyalty(src)
|
|
||||||
new /obj/item/weapon/storage/flashbang_kit(src)
|
new /obj/item/weapon/storage/flashbang_kit(src)
|
||||||
new /obj/item/weapon/storage/belt/security(src)
|
new /obj/item/weapon/storage/belt/security(src)
|
||||||
new /obj/item/weapon/melee/baton(src)
|
new /obj/item/weapon/melee/baton(src)
|
||||||
@@ -154,6 +153,7 @@
|
|||||||
/obj/structure/secure_closet/brig
|
/obj/structure/secure_closet/brig
|
||||||
name = "Brig Locker"
|
name = "Brig Locker"
|
||||||
req_access = list(access_brig)
|
req_access = list(access_brig)
|
||||||
|
anchored = 1
|
||||||
var/id = null
|
var/id = null
|
||||||
|
|
||||||
New()
|
New()
|
||||||
|
|||||||
@@ -2,10 +2,11 @@
|
|||||||
set category = "Special Verbs"
|
set category = "Special Verbs"
|
||||||
set name = "Toggle Midis"
|
set name = "Toggle Midis"
|
||||||
|
|
||||||
if(usr.client.midis)
|
if(istype(usr,/mob))
|
||||||
usr.client.midis=0
|
var/mob/M = usr
|
||||||
usr << "You will now stop receiving any sounds uploaded by admins."
|
M.midis = !M.midis
|
||||||
else
|
|
||||||
usr.client.midis=1
|
if(M.client)
|
||||||
usr << "You will now start receiving any sounds uploaded by admins."
|
M.client.midis = !M.client.midis
|
||||||
|
M << "You will now [M.client.midis? "start":"stop"] receiving any sounds uploaded by admins."
|
||||||
return
|
return
|
||||||
@@ -11,11 +11,13 @@
|
|||||||
loc = location
|
loc = location
|
||||||
else//Safety, in case a turf cannot be found.
|
else//Safety, in case a turf cannot be found.
|
||||||
loc = pick(latejoin)
|
loc = pick(latejoin)
|
||||||
|
if(!istype(body,/mob)) return//This needs to be recoded sometime so it has loc as its first arg
|
||||||
real_name = body.real_name
|
real_name = body.real_name
|
||||||
name = body.real_name
|
name = body.real_name
|
||||||
if(!safety)
|
if(!safety)
|
||||||
corpse = body
|
corpse = body
|
||||||
verbs += /mob/dead/observer/proc/reenter_corpse
|
verbs += /mob/dead/observer/proc/reenter_corpse
|
||||||
|
return
|
||||||
|
|
||||||
/mob/dead/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
|
/mob/dead/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
|
||||||
return 1
|
return 1
|
||||||
|
|||||||
@@ -743,7 +743,8 @@
|
|||||||
|
|
||||||
handle_regular_hud_updates()
|
handle_regular_hud_updates()
|
||||||
|
|
||||||
if(client)
|
if(!client) return 0
|
||||||
|
|
||||||
for(var/image/hud in client.images)
|
for(var/image/hud in client.images)
|
||||||
if(copytext(hud.icon_state,1,4) == "hud") //ugly, but icon comparison is worse, I believe
|
if(copytext(hud.icon_state,1,4) == "hud") //ugly, but icon comparison is worse, I believe
|
||||||
del(hud)
|
del(hud)
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ var/datum/paiController/paiController // Global handler for pAI candidates
|
|||||||
var/obj/item/device/paicard/card = locate(href_list["device"])
|
var/obj/item/device/paicard/card = locate(href_list["device"])
|
||||||
if(card.pai)
|
if(card.pai)
|
||||||
return
|
return
|
||||||
if(card && candidate)
|
if(istype(card,/obj/item/device/paicard) && istype(candidate,/datum/paiCandidate))
|
||||||
var/mob/living/silicon/pai/pai = new(card)
|
var/mob/living/silicon/pai/pai = new(card)
|
||||||
pai.name = candidate.name
|
pai.name = candidate.name
|
||||||
pai.real_name = pai.name
|
pai.real_name = pai.name
|
||||||
|
|||||||
@@ -2,6 +2,9 @@
|
|||||||
log_access("Login: [key_name(src)] from [src.client.address ? src.client.address : "localhost"]")
|
log_access("Login: [key_name(src)] from [src.client.address ? src.client.address : "localhost"]")
|
||||||
src.lastKnownIP = src.client.address
|
src.lastKnownIP = src.client.address
|
||||||
src.computer_id = src.client.computer_id
|
src.computer_id = src.client.computer_id
|
||||||
|
if(!src.client.midis || !src.midis)
|
||||||
|
src.client.midis = 0
|
||||||
|
src.midis = 0
|
||||||
if (config.log_access)
|
if (config.log_access)
|
||||||
for (var/mob/M in world)
|
for (var/mob/M in world)
|
||||||
if(M == src)
|
if(M == src)
|
||||||
|
|||||||
@@ -34,13 +34,15 @@
|
|||||||
pumped = 0
|
pumped = 0
|
||||||
if(current_shell)//We have a shell in the chamber
|
if(current_shell)//We have a shell in the chamber
|
||||||
current_shell.loc = get_turf(src)//Eject casing
|
current_shell.loc = get_turf(src)//Eject casing
|
||||||
|
current_shell = null
|
||||||
|
if(in_chamber)
|
||||||
|
in_chamber = null
|
||||||
if(!loaded.len) return 0
|
if(!loaded.len) return 0
|
||||||
var/obj/item/ammo_casing/AC = loaded[1] //load next casing.
|
var/obj/item/ammo_casing/AC = loaded[1] //load next casing.
|
||||||
loaded -= AC //Remove casing from loaded list.
|
loaded -= AC //Remove casing from loaded list.
|
||||||
current_shell = AC
|
current_shell = AC
|
||||||
if(AC.BB)
|
if(AC.BB)
|
||||||
in_chamber = AC.BB //Load projectile into chamber.
|
in_chamber = AC.BB //Load projectile into chamber.
|
||||||
AC.BB.loc = src //Set projectile loc to gun.
|
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ HOSTEDBY Yournamehere
|
|||||||
|
|
||||||
## Set to jobban "Guest-" accounts from Captain, HoS, HoP, CE, RD, CMO, Warden, Security, Detective, and AI positions.
|
## Set to jobban "Guest-" accounts from Captain, HoS, HoP, CE, RD, CMO, Warden, Security, Detective, and AI positions.
|
||||||
## Set to 1 to jobban them from those positions, set to 0 to allow them.
|
## Set to 1 to jobban them from those positions, set to 0 to allow them.
|
||||||
GUEST_JOBBAN 1
|
# GUEST_JOBBAN
|
||||||
|
|
||||||
## Set to jobban everyone who's key is not listed in data/whitelist.txt from Captain, HoS, HoP, CE, RD, CMO, Warden, Security, Detective, and AI positions.
|
## Set to jobban everyone who's key is not listed in data/whitelist.txt from Captain, HoS, HoP, CE, RD, CMO, Warden, Security, Detective, and AI positions.
|
||||||
## Uncomment to 1 to jobban, leave commented out to allow these positions for everyone (but see GUEST_JOBBAN above and regular jobbans)
|
## Uncomment to 1 to jobban, leave commented out to allow these positions for everyone (but see GUEST_JOBBAN above and regular jobbans)
|
||||||
@@ -97,3 +97,6 @@ GUEST_JOBBAN 1
|
|||||||
## In-game features
|
## In-game features
|
||||||
## spawns a spellbook which gives object-type spells instead of verb-type spells for the wizard
|
## spawns a spellbook which gives object-type spells instead of verb-type spells for the wizard
|
||||||
# FEATURE_OBJECT_SPELL_SYSTEM
|
# FEATURE_OBJECT_SPELL_SYSTEM
|
||||||
|
|
||||||
|
##Toggle for having jobs load up from the .txt
|
||||||
|
# LOAD_JOBS_FROM_TXT
|
||||||
|
|||||||
16863
maps/tgstation.2.0.8.dmm
16863
maps/tgstation.2.0.8.dmm
File diff suppressed because it is too large
Load Diff
@@ -541,7 +541,6 @@
|
|||||||
#include "code\game\objects\noticeboard.dm"
|
#include "code\game\objects\noticeboard.dm"
|
||||||
#include "code\game\objects\object_procs.dm"
|
#include "code\game\objects\object_procs.dm"
|
||||||
#include "code\game\objects\portals.dm"
|
#include "code\game\objects\portals.dm"
|
||||||
#include "code\game\objects\secure_closets.dm"
|
|
||||||
#include "code\game\objects\sign_decals.dm"
|
#include "code\game\objects\sign_decals.dm"
|
||||||
#include "code\game\objects\stool.dm"
|
#include "code\game\objects\stool.dm"
|
||||||
#include "code\game\objects\structures.dm"
|
#include "code\game\objects\structures.dm"
|
||||||
@@ -576,6 +575,7 @@
|
|||||||
#include "code\game\objects\closets\secure\medical.dm"
|
#include "code\game\objects\closets\secure\medical.dm"
|
||||||
#include "code\game\objects\closets\secure\personal.dm"
|
#include "code\game\objects\closets\secure\personal.dm"
|
||||||
#include "code\game\objects\closets\secure\scientist.dm"
|
#include "code\game\objects\closets\secure\scientist.dm"
|
||||||
|
#include "code\game\objects\closets\secure\secure_closets.dm"
|
||||||
#include "code\game\objects\closets\secure\security.dm"
|
#include "code\game\objects\closets\secure\security.dm"
|
||||||
#include "code\game\objects\devices\aicard.dm"
|
#include "code\game\objects\devices\aicard.dm"
|
||||||
#include "code\game\objects\devices\chameleonproj.dm"
|
#include "code\game\objects\devices\chameleonproj.dm"
|
||||||
|
|||||||
Reference in New Issue
Block a user