From db806b85d0e830b93a3df4dd155439ed4bdda22e Mon Sep 17 00:00:00 2001 From: Tastyfish Date: Thu, 22 Dec 2011 01:29:47 -0500 Subject: [PATCH 1/4] improved ear examine phrasing --- code/modules/mob/living/carbon/human/examine.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 06f9fa3b394..9e3a769c90a 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -31,10 +31,10 @@ usr << "\blue [src.name] has a \icon[src.wear_suit] [src.wear_suit.name] on." if (src.l_ear) - usr << "\blue [src.name] has a \icon[src.l_ear] [src.l_ear.name] by [t_his] mouth." + usr << "\blue [src.name] has a \icon[src.l_ear] [src.l_ear.name] on [t_his] ear." if (src.r_ear) - usr << "\blue [src.name] has a \icon[src.r_ear] [src.r_ear.name] by [t_his] mouth." + usr << "\blue [src.name] has a \icon[src.r_ear] [src.r_ear.name] on [t_his] ear." if (src.wear_mask) if (src.wear_mask.blood_DNA) From cee96346060fa77e07a8c56c31c569a9af6620a4 Mon Sep 17 00:00:00 2001 From: Tastyfish Date: Thu, 22 Dec 2011 01:47:40 -0500 Subject: [PATCH 2/4] stick id's in computer by using id on it, better ear examine text --- code/game/machinery/computer/medical.dm | 10 ++++++++++ code/game/machinery/computer/security.dm | 10 ++++++++++ code/modules/mob/living/carbon/human/examine.dm | 4 ++-- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index 303febedba2..6a53e2198b6 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -1,3 +1,13 @@ +/obj/machinery/computer/med_data/attackby(O as obj, user as mob) + if(istype(O, /obj/item/weapon/card/id)) + var/obj/item/weapon/card/id/idcard = O + if(!scan) + usr.drop_item() + idcard.loc = src + scan = idcard + else + ..() + /obj/machinery/computer/med_data/attack_ai(user as mob) return src.attack_hand(user) diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index 3fe19ce1762..95b62855d9f 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -1,3 +1,13 @@ +/obj/machinery/computer/secure_data/attackby(O as obj, user as mob) + if(istype(O, /obj/item/weapon/card/id)) + var/obj/item/weapon/card/id/idcard = O + if(!scan) + usr.drop_item() + idcard.loc = src + scan = idcard + else + ..() + /obj/machinery/computer/secure_data/attack_ai(mob/user as mob) return attack_hand(user) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 9e3a769c90a..1029a993577 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -31,10 +31,10 @@ usr << "\blue [src.name] has a \icon[src.wear_suit] [src.wear_suit.name] on." if (src.l_ear) - usr << "\blue [src.name] has a \icon[src.l_ear] [src.l_ear.name] on [t_his] ear." + usr << "\blue [src.name] has a \icon[src.l_ear] [src.l_ear.name] on [t_his] left ear." if (src.r_ear) - usr << "\blue [src.name] has a \icon[src.r_ear] [src.r_ear.name] on [t_his] ear." + usr << "\blue [src.name] has a \icon[src.r_ear] [src.r_ear.name] on [t_his] right ear." if (src.wear_mask) if (src.wear_mask.blood_DNA) From d14b67782a5c0339957cdbfb588b13ff9d37ea93 Mon Sep 17 00:00:00 2001 From: Tastyfish Date: Thu, 22 Dec 2011 05:34:05 -0500 Subject: [PATCH 3/4] added being able to backup sec/med records to disks, ejecting card trys to put it in your hand before dumping it ontop --- code/defines/obj/computer.dm | 2 + code/game/machinery/computer/medical.dm | 65 +++++++-- code/game/machinery/computer/security.dm | 160 +++++++++++++++++++++-- maps/tgstation.2.0.8.dmm | 16 +-- 4 files changed, 212 insertions(+), 31 deletions(-) diff --git a/code/defines/obj/computer.dm b/code/defines/obj/computer.dm index 6a1a62134d7..8c29401ce5a 100644 --- a/code/defines/obj/computer.dm +++ b/code/defines/obj/computer.dm @@ -134,6 +134,7 @@ req_access = list(access_medical) circuit = "/obj/item/weapon/circuitboard/med_data" var/obj/item/weapon/card/id/scan = null + var/obj/item/weapon/disk/records/disk = null var/authenticated = null var/rank = null var/screen = null @@ -182,6 +183,7 @@ req_access = list(access_security) circuit = "/obj/item/weapon/circuitboard/secure_data" var/obj/item/weapon/card/id/scan = null + var/obj/item/weapon/disk/records/disk = null var/authenticated = null var/rank = null var/screen = null diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index 6a53e2198b6..926aaacbe44 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -1,12 +1,15 @@ -/obj/machinery/computer/med_data/attackby(O as obj, user as mob) - if(istype(O, /obj/item/weapon/card/id)) - var/obj/item/weapon/card/id/idcard = O - if(!scan) - usr.drop_item() - idcard.loc = src - scan = idcard - else - ..() +/obj/machinery/computer/med_data/attackby(obj/item/O as obj, user as mob) + if(istype(O, /obj/item/weapon/card/id) && !scan) + usr.drop_item() + O.loc = src + scan = O + user << "You insert [O]." + else if(istype(O, /obj/item/weapon/disk/records) && !disk) + usr.drop_item() + O.loc = src + disk = O + user << "You insert [O]." + ..() /obj/machinery/computer/med_data/attack_ai(user as mob) return src.attack_hand(user) @@ -43,7 +46,24 @@ //Foreach goto(132) dat += text("
Back", src) if(3.0) - dat += text("Records Maintenance
\nBackup To Disk
\nUpload From disk
\nDelete All Records
\n
\nBack", src, src, src, src) + dat += "Records Maintenance
" + if(disk) + dat += "Disk Contents:
    " + if(disk.general) + dat += "
  • General
  • " + if(disk.medical) + dat += "
  • Medical
  • " + if(disk.security) + dat += "
  • Security
  • " + dat += "
Backup To Disk
" + if(disk.general && disk.medical) + dat += "Restore From Disk
" + else + dat += "Disk does not contain medical records.
" + dat += "Eject Disk
" + else + dat += "Please insert a records disk.
" + dat += "
Delete All Records

Back" if(4.0) dat += "
Medical Record

" if ((istype(src.active1, /datum/data/record) && data_core.general.Find(src.active1))) @@ -108,8 +128,11 @@ src.temp = null if (href_list["scan"]) if (src.scan) - src.scan.loc = src.loc - src.scan = null + if(!usr.get_active_hand()) + usr.put_in_hand(scan) + else + scan.loc = get_turf(src) + scan = null else var/obj/item/I = usr.equipped() if (istype(I, /obj/item/weapon/card/id)) @@ -432,6 +455,24 @@ if ((E.fields["name"] == active2.fields["name"] || E.fields["id"] == active2.fields["id"])) active1 = E screen = 4 + if (href_list["eject_disk"]) + if (!disk) + return + if(!usr.get_active_hand()) + usr.put_in_hand(disk) + else + disk.loc = get_turf(src) + disk = null + if (href_list["backup"]) + if (!disk) + return + disk.backup(1, 0) + temp = "Data backup complete." + if (href_list["restore"]) + if (!disk) + return + disk.restore(1, 0) + temp = "Data restore complete." src.add_fingerprint(usr) src.updateUsrDialog() diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index 95b62855d9f..8e2b81390c2 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -1,12 +1,15 @@ -/obj/machinery/computer/secure_data/attackby(O as obj, user as mob) - if(istype(O, /obj/item/weapon/card/id)) - var/obj/item/weapon/card/id/idcard = O - if(!scan) - usr.drop_item() - idcard.loc = src - scan = idcard - else - ..() +/obj/machinery/computer/secure_data/attackby(obj/item/O as obj, user as mob) + if(istype(O, /obj/item/weapon/card/id) && !scan) + usr.drop_item() + O.loc = src + scan = O + user << "You insert [O]." + else if(istype(O, /obj/item/weapon/disk/records) && !disk) + usr.drop_item() + O.loc = src + disk = O + user << "You insert [O]." + ..() /obj/machinery/computer/secure_data/attack_ai(mob/user as mob) return attack_hand(user) @@ -75,7 +78,24 @@ dat += text("Record Maintenance

", src) dat += text("{Log Out}",src) if(2.0) - dat += text("Records Maintenance
\nDelete All Records
\n
\nBack", src, src) + dat += "Records Maintenance
" + if(disk) + dat += "Disk Contents:
    " + if(disk.general) + dat += "
  • General
  • " + if(disk.medical) + dat += "
  • Medical
  • " + if(disk.security) + dat += "
  • Security
  • " + dat += "
Backup To Disk
" + if(disk.general && disk.security) + dat += "Restore From Disk
" + else + dat += "Disk does not contain security records.
" + dat += "Eject Disk
" + else + dat += "Please insert a records disk.
" + dat += "
Delete All Records

Back" if(3.0) dat += "
Security Record

" if ((istype(active1, /datum/data/record) && data_core.general.Find(active1))) @@ -172,7 +192,10 @@ What a mess.*/ if("Confirm Identity") if (scan) - scan.loc = loc + if(!usr.get_active_hand()) + usr.put_in_hand(scan) + else + scan.loc = get_turf(src) scan = null else var/obj/item/I = usr.equipped() @@ -435,6 +458,24 @@ What a mess.*/ temp += "" else alert(usr, "You do not have the required rank to do this!") + if ("eject_disk") + if (!disk) + return + if(!usr.get_active_hand()) + usr.put_in_hand(disk) + else + disk.loc = get_turf(src) + disk = null + if ("backup") + if (!disk) + return + disk.backup(0, 1) + temp = "Data backup complete." + if ("restore") + if (!disk) + return + disk.restore(0, 1) + temp = "Data restore complete." //TEMPORARY MENU FUNCTIONS else//To properly clear as per clear screen. temp=null @@ -476,3 +517,100 @@ What a mess.*/ updateUsrDialog() return +/obj/item/weapon/disk/records + name = "Crew Records Disk" + desc = "Stores security and medical records." + icon = 'cloning.dmi' + icon_state = "datadisk2" + item_state = "card-id" + w_class = 1.0 + var/list/general + var/list/security + var/list/medical + +/obj/item/weapon/disk/records/verb/label(t as text) + set name = "Label Disk" + set category = "Object" + set src in usr + + if (t) + src.name = text("Records Disk - '[]'", t) + else + src.name = "Crew Records Disk" + src.add_fingerprint(usr) + return + +/obj/item/weapon/disk/records/proc/backup(var/med, var/sec) + // have to manually copy each field so there's no references between data_core and the disk + general = new() + for(var/datum/data/record/E in data_core.general) + var/datum/data/record/G = new /datum/data/record() + for(var/F in E.fields) + G.fields[F] += E.fields[F] + general += G + + if(med) + medical = new() + for(var/datum/data/record/E in data_core.medical) + var/datum/data/record/G = new /datum/data/record() + for(var/F in E.fields) + G.fields[F] += E.fields[F] + medical += G + + if(sec) + security = new() + for(var/datum/data/record/E in data_core.security) + var/datum/data/record/G = new /datum/data/record() + for(var/F in E.fields) + G.fields[F] += E.fields[F] + security += G + +/obj/item/weapon/disk/records/proc/restore(var/med, var/sec) + // actually merge the content to not wipe new arrivals, etc + if(general) + for(var/datum/data/record/R in general) + for(var/datum/data/record/E in data_core.general) + if (E.fields["name"] == R.fields["name"] || E.fields["id"] == R.fields["id"]) + data_core.general -= E + break + var/datum/data/record/G = new /datum/data/record() + for(var/F in R.fields) + G.fields[F] += R.fields[F] + data_core.general += G + + if(med && medical) + for(var/datum/data/record/R in medical) + for(var/datum/data/record/E in data_core.medical) + if (E.fields["name"] == R.fields["name"] || E.fields["id"] == R.fields["id"]) + data_core.medical -= E + break + var/datum/data/record/G = new /datum/data/record() + for(var/F in R.fields) + G.fields[F] += R.fields[F] + data_core.medical += G + + if(sec && security) + for(var/datum/data/record/R in security) + for(var/datum/data/record/E in data_core.security) + if (E.fields["name"] == R.fields["name"] || E.fields["id"] == R.fields["id"]) + data_core.security -= E + break + var/datum/data/record/G = new /datum/data/record() + for(var/F in R.fields) + G.fields[F] += R.fields[F] + data_core.security += G + +/obj/item/weapon/storage/recordsbox + name = "Records Diskette Box" + icon_state = "disk_kit" + item_state = "syringe_kit" + +/obj/item/weapon/storage/recordsbox/New() + ..() + new /obj/item/weapon/disk/records(src) + new /obj/item/weapon/disk/records(src) + new /obj/item/weapon/disk/records(src) + new /obj/item/weapon/disk/records(src) + new /obj/item/weapon/disk/records(src) + new /obj/item/weapon/disk/records(src) + new /obj/item/weapon/disk/records(src) diff --git a/maps/tgstation.2.0.8.dmm b/maps/tgstation.2.0.8.dmm index af9b7f5d126..7c737ebea74 100644 --- a/maps/tgstation.2.0.8.dmm +++ b/maps/tgstation.2.0.8.dmm @@ -1925,7 +1925,7 @@ "aLa" = (/obj/structure/stool/chair{dir = 1},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/bridge) "aLb" = (/turf/simulated/floor{icon_state = "red"; dir = 1},/area/bridge) "aLc" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/bridge) -"aLd" = (/obj/structure/table/reinforced,/turf/simulated/floor,/area/bridge) +"aLd" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/recordsbox,/turf/simulated/floor,/area/bridge) "aLe" = (/obj/structure/stool/chair{dir = 1},/turf/simulated/floor,/area/bridge) "aLf" = (/obj/machinery/computer/station_alert,/turf/simulated/floor,/area/bridge) "aLg" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/bridge) @@ -5512,7 +5512,7 @@ "cbZ" = (/obj/effect/landmark/start,/turf/unsimulated/floor,/area/start) "cca" = (/turf/unsimulated/wall{icon = 'icons/misc/fullscreen.dmi'; icon_state = "title"; name = "Space Station 13"},/area/start) "ccb" = (/turf/space,/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/syndicate_mothership) -"ccc" = (/turf/unsimulated/wall{desc = "Why it no open!"; icon = 'rapid_pdoor.dmi'; icon_state = "pdoor1"; name = "Shuttle Bay Blast Door"},/area/syndicate_mothership) +"ccc" = (/turf/unsimulated/wall{desc = "Why it no open!"; icon = 'icons/obj/doors/rapid_pdoor.dmi'; icon_state = "pdoor1"; name = "Shuttle Bay Blast Door"},/area/syndicate_mothership) "ccd" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/syndicate_mothership) "cce" = (/turf/space,/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/shuttle/syndicate_elite/mothership) "ccf" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_r (NORTH)"; icon_state = "propulsion_r"; dir = 1},/turf/space,/area/shuttle/syndicate_elite/mothership) @@ -5584,8 +5584,8 @@ "cdt" = (/obj/structure/table,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) "cdu" = (/turf/unsimulated/wall,/area/centcom) "cdv" = (/obj/effect/landmark{name = "Nuclear-Closet"},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) -"cdw" = (/turf/unsimulated/wall{desc = "Why it no open!"; icon = 'rapid_pdoor.dmi'; icon_state = "pdoor1"; name = "External Airlock"},/area) -"cdx" = (/turf/unsimulated/wall{desc = "Why it no open!"; icon = 'rapid_pdoor.dmi'; icon_state = "pdoor1"; name = "Shuttle Bay Blast Door"},/area/centcom) +"cdw" = (/turf/unsimulated/wall{desc = "Why it no open!"; icon = 'icons/obj/doors/rapid_pdoor.dmi'; icon_state = "pdoor1"; name = "External Airlock"},/area) +"cdx" = (/turf/unsimulated/wall{desc = "Why it no open!"; icon = 'icons/obj/doors/rapid_pdoor.dmi'; icon_state = "pdoor1"; name = "Shuttle Bay Blast Door"},/area/centcom) "cdy" = (/turf/unsimulated/floor{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/centcom) "cdz" = (/turf/unsimulated/floor{name = "plating"},/area/centcom) "cdA" = (/obj/structure/stool/chair{dir = 4},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) @@ -5647,7 +5647,7 @@ "ceE" = (/turf/unsimulated/floor{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/centcom/suppy) "ceF" = (/turf/unsimulated/floor{name = "plating"},/area/centcom/suppy) "ceG" = (/turf/unsimulated/floor{tag = "icon-warnplate (EAST)"; icon_state = "warnplate"; dir = 4},/area/centcom/suppy) -"ceH" = (/turf/unsimulated/wall{desc = "Why it no open!"; icon = 'rapid_pdoor.dmi'; icon_state = "pdoor1"; name = "Shuttle Bay Blast Door"},/area/centcom/suppy) +"ceH" = (/turf/unsimulated/wall{desc = "Why it no open!"; icon = 'icons/obj/doors/rapid_pdoor.dmi'; icon_state = "pdoor1"; name = "Shuttle Bay Blast Door"},/area/centcom/suppy) "ceI" = (/obj/machinery/sleeper{icon_state = "sleeper_0-r"; orient = "RIGHT"},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/syndicate_station/start) "ceJ" = (/obj/effect/landmark{name = "Syndicate-Spawn"},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/syndicate_station/start) "ceK" = (/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/syndicate_station/start) @@ -5664,7 +5664,7 @@ "ceV" = (/obj/structure/table,/obj/machinery/juicer{pixel_y = 6},/turf/unsimulated/floor{tag = "icon-redyellowfull"; icon_state = "redyellowfull"},/area/centcom/living) "ceW" = (/obj/machinery/door/airlock/external,/turf/unsimulated/floor{name = "plating"},/area/centcom/living) "ceX" = (/turf/unsimulated/floor{name = "plating"},/area/centcom/living) -"ceY" = (/turf/unsimulated/wall{desc = "Why it no open!"; icon = 'rapid_pdoor.dmi'; icon_state = "pdoor1"; name = "Shuttle Bay Blast Door"},/area/centcom/living) +"ceY" = (/turf/unsimulated/wall{desc = "Why it no open!"; icon = 'icons/obj/doors/rapid_pdoor.dmi'; icon_state = "pdoor1"; name = "Shuttle Bay Blast Door"},/area/centcom/living) "ceZ" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s6"; icon_state = "swall_s6"; dir = 2},/area/supply/dock) "cfa" = (/turf/simulated/shuttle/wall{tag = "icon-swall12"; icon_state = "swall12"; dir = 2},/area/supply/dock) "cfb" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s10"; icon_state = "swall_s10"; dir = 2},/area/supply/dock) @@ -6036,7 +6036,7 @@ "cmd" = (/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) "cme" = (/obj/structure/stool/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "cmf" = (/obj/machinery/computer/security,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"cmg" = (/turf/unsimulated/wall{desc = "Why it no open!"; icon = 'rapid_pdoor.dmi'; icon_state = "pdoor1"; name = "Shuttle Bay Blast Door"},/area/centcom/ferry) +"cmg" = (/turf/unsimulated/wall{desc = "Why it no open!"; icon = 'icons/obj/doors/rapid_pdoor.dmi'; icon_state = "pdoor1"; name = "Shuttle Bay Blast Door"},/area/centcom/ferry) "cmh" = (/turf/unsimulated/floor{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/centcom/ferry) "cmi" = (/turf/unsimulated/floor{name = "plating"},/area/centcom/ferry) "cmj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{name = "plating"},/area/centcom/ferry) @@ -6046,7 +6046,7 @@ "cmn" = (/obj/structure/stool/chair{dir = 8},/turf/unsimulated/floor{icon_state = "green"; dir = 4},/area/centcom/control) "cmo" = (/obj/machinery/computer/crew,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "cmp" = (/obj/machinery/computer/communications,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"cmq" = (/turf/unsimulated/wall{desc = "Why it no open!"; icon = 'rapid_pdoor.dmi'; icon_state = "pdoor1"; name = "Shuttle Bay Blast Door"},/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/centcom/ferry) +"cmq" = (/turf/unsimulated/wall{desc = "Why it no open!"; icon = 'icons/obj/doors/rapid_pdoor.dmi'; icon_state = "pdoor1"; name = "Shuttle Bay Blast Door"},/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/centcom/ferry) "cmr" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s6"; icon_state = "swall_s6"; dir = 2},/area/shuttle/transport1/centcom) "cms" = (/turf/simulated/shuttle/wall{tag = "icon-swall12"; icon_state = "swall12"; dir = 2},/area/shuttle/transport1/centcom) "cmt" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s10"; icon_state = "swall_s10"; dir = 2},/area/shuttle/transport1/centcom) From 8f53cb2d87bd6e3204fe6316a449af9838bf11be Mon Sep 17 00:00:00 2001 From: Tastyfish Date: Fri, 23 Dec 2011 02:20:16 -0500 Subject: [PATCH 4/4] spaceman requested everyone having christmas hats admin verb for possible christmas event. it was possibly a joke I took seriosuly --- baystation12.dme | 1 + code/modules/admin/admin_verbs.dm | 2 ++ code/modules/admin/verbs/gimmicks.dm | 23 ++++++++++++++++++ code/modules/mob/living/carbon/human/human.dm | 2 ++ icons/mob/gimmick_head.dmi | Bin 0 -> 3454 bytes 5 files changed, 28 insertions(+) create mode 100644 code/modules/admin/verbs/gimmicks.dm create mode 100644 icons/mob/gimmick_head.dmi diff --git a/baystation12.dme b/baystation12.dme index 69a61b42524..8da74bc8662 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -708,6 +708,7 @@ #include "code\modules\admin\verbs\deadsay.dm" #include "code\modules\admin\verbs\debug.dm" #include "code\modules\admin\verbs\diagnostics.dm" +#include "code\modules\admin\verbs\gimmicks.dm" #include "code\modules\admin\verbs\mapping.dm" #include "code\modules\admin\verbs\massmodvar.dm" #include "code\modules\admin\verbs\MC.dm" diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 50fc1241a22..e3133bdc82c 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -207,6 +207,7 @@ verbs += /client/proc/admin_cancel_shuttle verbs += /obj/admins/proc/show_traitor_panel verbs += /client/proc/cmd_admin_dress + verbs += /client/proc/cmd_admin_christmas verbs += /client/proc/respawn_character verbs += /client/proc/spawn_xeno verbs += /proc/possess @@ -340,6 +341,7 @@ verbs -= /client/proc/admin_cancel_shuttle verbs -= /obj/admins/proc/show_traitor_panel verbs -= /client/proc/cmd_admin_dress + verbs -= /client/proc/cmd_admin_christmas verbs -= /client/proc/respawn_character verbs -= /client/proc/spawn_xeno verbs -= /proc/possess diff --git a/code/modules/admin/verbs/gimmicks.dm b/code/modules/admin/verbs/gimmicks.dm new file mode 100644 index 00000000000..ae37d3ce2a9 --- /dev/null +++ b/code/modules/admin/verbs/gimmicks.dm @@ -0,0 +1,23 @@ +var/global/gimmick_hat = null + +// irreversable, for now +/client/proc/cmd_admin_christmas() + set category = "Fun" + set name = "Christmas Time" + + if(!authenticated || !holder) + src << "Only administrators may use this command." + return + + if(!gimmick_hat) + log_admin("[usr.key] has started Christmas!") + message_admins("[usr.key] has started Christmas!") + + // handle pre-existing hats + gimmick_hat = "santahat" + else + log_admin("[usr.key] has stopped Christmas!") + message_admins("[usr.key] has stopped Christmas!") + + // handle pre-existing hats + gimmick_hat = null diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index d5933f49833..4be9f247296 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1006,6 +1006,8 @@ if(istype(head,/obj/item/clothing/head/kitty)) head_icon = (( lying ) ? head:mob2 : head:mob) overlays += image("icon" = head_icon, "layer" = MOB_LAYER) + if(gimmick_hat) + overlays += image("icon" = icon('gimmick_head.dmi', "[gimmick_hat][!lying ? "" : "2"]"), "layer" = MOB_LAYER) if (head.blood_DNA) var/icon/stain_icon = icon('blood.dmi', "helmetblood[!lying ? "" : "2"]") overlays += image("icon" = stain_icon, "layer" = MOB_LAYER) diff --git a/icons/mob/gimmick_head.dmi b/icons/mob/gimmick_head.dmi new file mode 100644 index 0000000000000000000000000000000000000000..5be570dfd1edf578fe75837fcbc148719be2a966 GIT binary patch literal 3454 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 B(V74N literal 0 HcmV?d00001