From dac596cda9d81bebbc8e1e5d1e52cf92d1178ffc Mon Sep 17 00:00:00 2001 From: Kurfursten Date: Wed, 27 May 2020 17:11:35 -0500 Subject: [PATCH] Law Planning Frame (#26435) * progress * Law Planning Frame * cleanup * Tweaks * Done * cleaning up from rebase * Thank you for squashing --- code/game/gamemodes/events.dm | 2 +- code/game/machinery/doors/brigdoors.dm | 96 ++--- code/game/objects/items.dm | 3 + code/game/objects/items/sec_lawplanner.dm | 384 ++++++++++++++++++ code/game/objects/items/trader.dm | 101 ----- .../objects/items/weapons/storage/belt.dm | 1 + .../objects/items/weapons/storage/boxes.dm | 1 + code/modules/events/prison_break.dm | 2 +- config-example/config.txt | 6 +- icons/obj/device.dmi | Bin 40179 -> 40988 bytes nano/css/shared.css | 16 + nano/templates/lawplanner.tmpl | 194 +++++++++ vgstation13.dme | 1 + 13 files changed, 649 insertions(+), 158 deletions(-) create mode 100644 code/game/objects/items/sec_lawplanner.dm create mode 100644 nano/templates/lawplanner.tmpl diff --git a/code/game/gamemodes/events.dm b/code/game/gamemodes/events.dm index b6e16181868..c5eba6e8092 100644 --- a/code/game/gamemodes/events.dm +++ b/code/game/gamemodes/events.dm @@ -287,7 +287,7 @@ spawn(0) temp_glassairlock.prison_open() for (var/obj/machinery/door_timer/temp_timer in A) - temp_timer.releasetime = 1 + temp_timer.timeleft = 0 sleep(150) command_alert(/datum/command_alert/graytide) diff --git a/code/game/machinery/doors/brigdoors.dm b/code/game/machinery/doors/brigdoors.dm index a86ef490b9b..9acde08226f 100644 --- a/code/game/machinery/doors/brigdoors.dm +++ b/code/game/machinery/doors/brigdoors.dm @@ -14,16 +14,25 @@ icon_state = "frame" desc = "A remote control for a door." req_access = list(access_brig) - anchored = 1.0 // can't pick it up - density = 0 // can walk through it. - var/id_tag = null // id of door it controls. - var/releasetime = 0 // when world.timeofday reaches it - release the prisoneer - var/timing = 1 // boolean, true/1 timer is on, false/0 means it's not timing + anchored = TRUE + density = FALSE + var/id_tag = null // id of door it controls + var/timeleft = 0 // in seconds + var/timing = FALSE var/picture_state // icon_state of alert picture, if not displaying text/numbers var/list/obj/machinery/targets = list() var/last_call = 0 layer = ABOVE_WINDOW_LAYER +/obj/machinery/door_timer/New() + ..() + machines -= src + fast_objects += src //process every 0.5 instead of every 2 + +/obj/machinery/door_timer/Destroy() + fast_objects -= src + ..() + /obj/machinery/door_timer/initialize() ..() @@ -33,6 +42,7 @@ for(var/obj/machinery/door/window/brigdoor/M in all_doors) if (M.id_tag == src.id_tag) targets += M + M.open() //these start the shift open for(var/obj/machinery/flasher/F in flashers) if(F.id_tag == src.id_tag) @@ -50,16 +60,15 @@ // if it's less than 0, open door, reset timer // update the door_timer window and the icon /obj/machinery/door_timer/process() - if(stat & (NOPOWER|BROKEN)) + if((stat & (NOPOWER|BROKEN)) || !timing) return - if(src.timing) - if(timeleft() == 0) - src.timer_end() // open doors, reset timer, clear status screen - src.timing = 0 - src.updateUsrDialog() - src.update_icon() - else - timer_end() + if(timeleft <= 0) + timer_end() // open doors, reset timer, clear status screen + timing = FALSE + return + timeleft -= (SS_WAIT_FAST_OBJECTS/(1 SECONDS)) //this is a fast object + updateUsrDialog() + update_icon() // has the door power sitatuation changed, if so update icon. @@ -107,36 +116,28 @@ C.locked = 0 C.icon_state = C.icon_closed + timeleft = 0 + + update_icon() + return 1 -/obj/machinery/door_timer/proc/timeleft() - if(timing) - . = max((releasetime-world.timeofday)/10, 0) - else - . = max((releasetime-last_call)/10, 0) - - if(. < 0) . = 0 - last_call = world.timeofday - /obj/machinery/door_timer/proc/timeset(var/seconds) - releasetime=world.timeofday+seconds*10 - last_call = world.timeofday + timeleft = seconds //Allows AIs to use door_timer, see human attack_hand function below /obj/machinery/door_timer/attack_ai(var/mob/user as mob) - src.add_hiddenprint(user) - return src.attack_hand(user) + add_hiddenprint(user) + return attack_hand(user) //Allows humans to use door_timer //Opens dialog window when someone clicks on door timer // Allows altering timer and the timing boolean. -// Flasher activation limited to 150 seconds +// Flasher activation limited to 15 seconds /obj/machinery/door_timer/attack_hand(var/mob/user as mob) if(..()) return - var/second = round(timeleft() % 60) - var/minute = round((timeleft() - second) / 60) user.set_machine(src) var/dat = "" @@ -148,10 +149,10 @@ dat += "Activate Timer and close door
" - dat += {"Time Left: [(minute ? text("[minute]:") : null)][second]
+ dat += {"Time Left: [timeleft / 60 % 60]:[add_zero(num2text(timeleft % 60), 2)]
- - + +
"} for(var/obj/machinery/flasher/F in targets) - if(F.last_flash && (F.last_flash + 150) > world.timeofday) + if(F.last_flash && (F.last_flash + 15 SECONDS) > world.timeofday) dat += "
Flash Charging" else dat += "
Activate Flash" @@ -177,26 +178,21 @@ usr.set_machine(src) if(href_list["timing"]) - src.timing = text2num(href_list["timing"]) + timing = text2num(href_list["timing"]) else - if(href_list["tp"]) //adjust timer, close door if not already closed - var/tp = text2num(href_list["tp"]) - var/timeleft = timeleft() - timeleft += tp - timeleft = min(max(round(timeleft), 0), 3600) - timeset(timeleft) - //src.timing = 1 - //src.closedoor() + if(href_list["tp"]) + timeleft += text2num(href_list["tp"]) + timeleft = clamp(round(timeleft), 0, 1 HOURS) if(href_list["fc"]) for(var/obj/machinery/flasher/F in targets) F.flash() - src.add_fingerprint(usr) - src.updateUsrDialog() - src.update_icon() - if(src.timing) - src.timer_start() + add_fingerprint(usr) + updateUsrDialog() + update_icon() + if(timing) + timer_start() else - src.timer_end() + timer_end() //icon update function @@ -210,9 +206,8 @@ if(stat & (BROKEN)) set_picture("ai_bsod") return - if(src.timing) + if(timing) var/disp1 = uppertext(id_tag) - var/timeleft = timeleft() var/disp2 = "[add_zero(num2text((timeleft / 60) % 60),2)]~[add_zero(num2text(timeleft % 60), 2)]" spawn(0.5 SECONDS) update_display(disp1, disp2) @@ -303,10 +298,7 @@ /obj/machinery/door_timer/npc_tamper_act(mob/living/L) //Increase or decrease the release time by a random number - var/timeleft = timeleft() - timeleft = max(0, timeleft + rand(-60, 60)) //From -1 minute to 1 minute. Can't go below 0 - timeset(timeleft) timer_start() if(prob(10)) //Flash the flashers diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 22e9e0ae29c..19feeebed2a 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -1326,6 +1326,9 @@ var/global/list/image/blood_overlays = list() user.drop_from_inventory(cuffs) C.equip_to_slot(cuffs, slot_handcuffed) cuffs.on_restraint_apply(C) + var/list/findcuffs = get_contents_in_object(user,/obj/item/device/law_planner) + for(var/obj/item/device/law_planner/LP in findcuffs) + LP.handcuff_signal() return TRUE /obj/item/proc/on_restraint_removal(var/mob/living/carbon/C) //Needed for syndicuffs diff --git a/code/game/objects/items/sec_lawplanner.dm b/code/game/objects/items/sec_lawplanner.dm new file mode 100644 index 00000000000..9458d4f92ce --- /dev/null +++ b/code/game/objects/items/sec_lawplanner.dm @@ -0,0 +1,384 @@ +#define LAW_ASSAULT 1 +#define LAW_DAMAGE 2 +#define LAW_THEFT 3 +#define LAW_CONTRABAND 4 +#define LAW_TRESPASS 5 +#define LAW_ESCAPE 6 +#define LAW_INSUB 7 + +/obj/item/device/law_planner + name = "law planning frame" + desc = "A large data pad with buttons for crimes. Used for planning a brig sentence." + w_class = W_CLASS_SMALL + origin_tech = Tc_PROGRAMMING + "=6" + icon = 'icons/obj/device.dmi' + icon_state = "lawplanner" + item_state = "electronic" + req_access = list(access_brig) + var/announce = 1 //If true, read crimes when you hit the cell timer + var/start_timer = FALSE //If true, automatically start the timer on upload + var/time_arrest = FALSE //If true, start counting time when the arrest is made, to subtract from the sentence. + var/timing = 0 //Time of arrest. + var/datum/data/record/upload_crimes = null //Will look for an associated datacore file and upload crimes + var/list/rapsheet = list() + var/total_time = 0 + +/obj/item/device/law_planner/attack_self(mob/user) + ui_interact(user) + +/obj/item/device/law_planner/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open=NANOUI_FOCUS) + if(user.stat && !isAdminGhost(user)) + return + + // this is the data which will be sent to the ui + var/list/data = list() + data["timer"] = total_time + data["announce"] = announce + data["starttimer"] = start_timer + data["timearrest"] = time_arrest + data["arresttime"] = worldtime2text(timing) + if(upload_crimes) + data["perp"] = upload_crimes.fields["name"] + data["crimes"] = english_list(rapsheet) + + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "lawplanner.tmpl", "Law Planning Frame", 520, 500) + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(1) + +/obj/item/device/law_planner/Topic(href, href_list) + if(..(href, href_list)) + return + + var/datum/law/L + if(href_list["assault"]) + L = findlaw(LAW_ASSAULT,text2num(href_list["assault"])) + else if(href_list["damage"]) + L = findlaw(LAW_DAMAGE,text2num(href_list["damage"])) + else if(href_list["theft"]) + L = findlaw(LAW_THEFT,text2num(href_list["theft"])) + else if(href_list["contraband"]) + L = findlaw(LAW_CONTRABAND,text2num(href_list["contraband"])) + else if(href_list["trespass"]) + L = findlaw(LAW_TRESPASS,text2num(href_list["trespass"])) + else if(href_list["escape"]) + L = findlaw(LAW_ESCAPE,text2num(href_list["escape"])) + else if(href_list["insubordination"]) + L = findlaw(LAW_INSUB,text2num(href_list["insubordination"])) + + switch(href_list["toggle"]) + if("announce") + announce = !announce + if("starttimer") + start_timer = !start_timer + if("timearrest") + time_arrest = !time_arrest + + switch(href_list["clear"]) + if("record") + upload_crimes = null + if("rapsheet") + rapsheet.Cut() + total_time = 0 + if("arresttime") + timing = 0 + + if(!L) + updateUsrDialog() + return 1 + rapsheet += initial(L.name) + total_time += initial(L.penalty) + if(initial(L.death)) + visible_message("[bicon(src)] \The [src] beeps, \"This inmate is eligible for execution.\"") + + if(initial(L.demotion)) + visible_message("[bicon(src)] \The [src] beeps, \"This inmate is eligible for demotion.\"") + updateUsrDialog() + return 1 + + +/obj/item/device/law_planner/proc/announce() + visible_message("[bicon(src)] \The [src] beeps, \"Charges: [english_list(rapsheet)]") + visible_message("[bicon(src)] \The [src] beeps, \"[total_time] minutes.") + +/obj/item/device/law_planner/preattack(var/atom/A, var/mob/user, var/proximity_flag) + if(!proximity_flag) + return 1 + if(!allowed(user)) + to_chat(user, "You must wear your ID!") + return 1 + if(ishuman(A)&&!(A==user)) + var/mob/living/carbon/human/H = A + var/identity = H.get_face_name() + if(identity == "Unknown") + visible_message("[bicon(src)] \The [src] beeps, \"Error. Subject's face was not readable.\"") + return 1 + for(var/datum/data/record/E in data_core.security) + if(E.fields["name"] == A.name) + visible_message("[bicon(src)] \The [src] beeps, \"Verified. Found record match for [A].") + upload_crimes = E + timing = 0 + return 1 + visible_message("[bicon(src)] \The [src] beeps, \"Error. No security record found.\"") + return 1 + if(istype(A,/obj/machinery/computer/secure_data)) + if(upload_crimes) + upload_crimes(user) + rapsheet.Cut() + total_time = 0 + return 1 + if(istype(A,/obj/machinery/door_timer)) + if(!rapsheet.len) + visible_message("[bicon(src)] \The [src] beeps, \"Error. Zero charges have been issued.\"") + if(announce) + announce() + if(upload_crimes) + upload_crimes(user) + var/apply = (total_time MINUTES) / (1 SECONDS) + if(timing) + visible_message("[bicon(src)] \The [src] beeps, \"Deducting [round((world.time - timing)/(1 SECONDS))] seconds on time served.\"") + apply -= round((world.time - timing)/(1 SECONDS)) + timing = 0 + var/obj/machinery/door_timer/D = A + D.timeleft += apply + if(start_timer && !D.timing) + D.timing = TRUE + D.timer_start() + rapsheet.Cut() + total_time = 0 + return 1 + + else + return ..() + +/obj/item/device/law_planner/proc/upload_crimes(mob/user) + upload_crimes.fields["criminal"] = "Incarcerated" + var/counter = 1 + while(upload_crimes.fields["com_[counter]"]) + counter++ + upload_crimes.fields["com_[counter]"] = "Made by [user] (Automated) at [worldtime2text()] [time_arrest? "(Arrested [worldtime2text(timing)])":""]
[english_list(rapsheet)]" + upload_crimes = null + +//received signal from handcuffs +/obj/item/device/law_planner/proc/handcuff_signal() + if(time_arrest) + if(timing) + visible_message("[bicon(src)] \The [src] beeps, \"An arrest timer is already running.\"") + else + timing = world.time + updateUsrDialog() + +/*********************************************************************** +*** SPACE LAW DATUMS *** +***********************************************************************/ + +#define LAW_A1 1 +#define LAW_A2 2 +#define LAW_B1 3 +#define LAW_B2 4 +#define LAW_C1 5 +#define LAW_C2 6 + +/proc/findlaw(var/mother,var/code) + var/list/possible_laws = subtypesof(/datum/law) + for(var/possible in possible_laws) + var/datum/law/L = possible + if((initial(L.mothercrime) == mother) && (initial(L.code) == code)) + return L + //otherwise, returns null + +/datum/law + var/name = "law" + var/mothercrime = 0 + var/penalty = 0 + var/death = FALSE + var/demotion = FALSE + var/code = 0 + +/datum/law/assault + mothercrime = LAW_ASSAULT + +/datum/law/assault/minor + name = "1A-1 MINOR ASSAULT" + penalty = 3 + code = LAW_A1 + +/datum/law/assault/full + name = "1A-2 ASSAULT" + penalty = 6 + code = LAW_A2 + +/datum/law/assault/abduction + name = "1B-1 ABDUCTION" + penalty = 10 + code = LAW_B1 + +/datum/law/assault/manslaughter + name = "1C-1 MANSLAUGHTER" + penalty = 10 + code = LAW_C1 + +/datum/law/assault/murder + name = "1C-2 MURDER" + penalty = 10 + death = TRUE + code = LAW_C2 + +/datum/law/damage + mothercrime = LAW_DAMAGE + +/datum/law/damage/vandalism + name = "2A-1 VANDALISM" + penalty = 3 + code = LAW_A1 + +/datum/law/damage/negligence + name = "2B-1 NEGLIGENCE" + penalty = 5 + code = LAW_B1 + demotion = TRUE + +/datum/law/damage/sabotage + name = "2B-2 SABOTAGE" + penalty = 8 + code = LAW_B2 + +/datum/law/damage/illegalupload + name = "2C-1 ILLEGAL UPLOAD" + penalty = 10 + code = LAW_C1 + +/datum/law/damage/grandsabotage + name = "2C-2 GRAND SABOTAGE" + penalty = 15 + code = LAW_C2 + death = TRUE + +/datum/law/theft + mothercrime = LAW_THEFT + +/datum/law/theft/petty + name = "3A-1 PETTY THEFT" + penalty = 3 + code = LAW_A1 + +/datum/law/theft/full + name = "3B-1 THEFT" + penalty = 5 + code = LAW_B1 + +/datum/law/theft/grand + name = "3C-1 GRAND THEFT" + penalty = 15 + code = LAW_C1 + +/datum/law/contraband + mothercrime = LAW_CONTRABAND + +/datum/law/contraband/makeshiftcons + name = "4A-1 MAKESHIFT/CONSOLES" + penalty = 5 + code = LAW_A1 + +/datum/law/contraband/weaponexpl + name = "4B-1 WEAPONS/EXPLOSIVES" + penalty = 8 + code = LAW_B1 + demotion = TRUE + +/datum/law/contraband/mechs + name = "4C-1 COMBAT GEAR/MECHS" + penalty = 10 + code = LAW_C1 + demotion = TRUE + +/datum/law/contraband/enemycontraband + name = "4C-2 ENEMY CONTRABAND" + penalty = 10 + code = LAW_C2 + demotion = TRUE + +/datum/law/trespass + mothercrime = LAW_TRESPASS + +/datum/law/trespass/minor + name = "5A-1 MINOR TRESPASS" + penalty = 3 + code = LAW_A1 + +/datum/law/trespass/bande + name = "5A-2 B&E" + penalty = 4 + code = LAW_A2 + +/datum/law/trespass/full + name = "5B-1 TRESPASS" + penalty = 6 + code = LAW_B1 + +/datum/law/trespass/major + name = "5C-1 MAJOR TRESPASS" + penalty = 10 + code = LAW_C1 + +/datum/law/escape + mothercrime = LAW_ESCAPE + +/datum/law/escape/resist + name = "6A-1 RESISTING" + penalty = 5 + code = LAW_A1 + +/datum/law/escape/full + name = "6B-1 ESCAPE" + penalty = 5 + code = LAW_B1 + +/datum/law/escape/interfere + name = "6B-2 INTERFERENCE" + penalty = 10 + code = LAW_B2 + +/datum/law/escape/grand + name = "6C-1 GRAND ESCAPE" + penalty = 15 + code = LAW_C1 + death = TRUE + +/datum/law/escape/deimplant + name = "6C-2 DEIMPLANTING" + penalty = 15 + code = LAW_C2 + +/datum/law/insub + mothercrime = LAW_INSUB + +/datum/law/insub/comms + name = "7A-1 MISUSE COMMS" + penalty = 0 + code = LAW_A1 + +/datum/law/insub/insub + name = "7A-2 INSUBORD" + penalty = 5 + demotion = TRUE + code = LAW_A2 + +/datum/law/insub/framing + name = "7B-1 FRAMING" + penalty = 0 + code = LAW_B1 + +/datum/law/insub/abusepower + name = "7C-1 ABUSE POWER" + penalty = 0 + demotion = TRUE + code = LAW_C1 + +/datum/law/insub/enemy + name = "7C-2 ENEMY OF CORP" + penalty = 15 + death = TRUE + code = LAW_C2 \ No newline at end of file diff --git a/code/game/objects/items/trader.dm b/code/game/objects/items/trader.dm index d366139b68e..ecf9df37841 100644 --- a/code/game/objects/items/trader.dm +++ b/code/game/objects/items/trader.dm @@ -8,21 +8,6 @@ name = "trader coin" icon_state = "coin_mythril" -/obj/item/weapon/storage/trader_marauder - name = "box of Marauder circuits" - desc = "All in one box!" - icon = 'icons/obj/storage/smallboxes.dmi' - inhand_states = list("left_hand" = 'icons/mob/in-hand/left/boxes_and_storage.dmi', "right_hand" = 'icons/mob/in-hand/right/boxes_and_storage.dmi') - icon_state = "box_of_doom" - item_state = "box_of_doom" - -/obj/item/weapon/storage/trader_marauder/New() //Because we're good jews, they won't be able to finish the marauder. The box is missing a circuit. - ..() - new /obj/item/weapon/circuitboard/mecha/marauder(src) - new /obj/item/weapon/circuitboard/mecha/marauder/peripherals(src) - //new /obj/item/weapon/circuitboard/mecha/marauder/targeting(src) - new /obj/item/weapon/circuitboard/mecha/marauder/main(src) - /obj/item/weapon/storage/trader_chemistry name = "chemist's pallet" desc = "Everything you need to make art." @@ -94,14 +79,6 @@ else new wonder_clothing(src) -/*/obj/structure/cage/with_random_slime - ..() - - add_mob - -/mob/living/carbon/slime/proc/randomSlime() -*/ - /area/vault/mecha_graveyard /obj/item/weapon/disk/shuttle_coords/vault/mecha_graveyard @@ -456,84 +433,6 @@ var/global/list/alcatraz_stuff = list( mob_path = null bonus_path = /mob/living/carbon/human/frankenstein -/*/obj/item/device/law_planner Scapped, but maybe in the future - name = "law planning frame" - desc = "A large data pad with buttons for crimes. Used for planning a brig sentence." - w_class = W_CLASS_SMALL - origin_tech = Tc_PROGRAMMING + "=6" - icon = 'icons/obj/pda.dmi' - icon_state = "aicard" - item_state = "electronic" - req_access = list(access_brig) - var/announce = 1 //0 = Off, 1 = On select, 2 = On upload - var/start_timer = FALSE //If true, automatically start the timer on upload - var/datum/data/record/upload_crimes = null //If has DNA, will look for an associated datacore file and upload crimes - var/list/rapsheet = list() - var/total_time = 0 - - var/list/minor_crimes = list( - "RESISTING ARREST"=2, - "PETTY CRIME"=3, - "DRUGGING"=4, - "POSSESSION"=5, - "MANHUNT"=5, - "ESCAPE"=5, - "FRAMING"=5, - "WORKPLACE HAZARD"=5, - "ASSAULT"=6, - "POSS. WEAPON"=7, - "POSS. EXPLOSIVE"=8) - var/list/major_crimes = list( - "B&E RESTRICTED"=10, - "INTERFERENCE"=10, - "UNLAWFUL UPLOAD"=10, - "ABUSE OF POWER"=10, - "ASSAULT ON SEC"=10, - "MAJOR TRESPASS"=10, - "MAJOR B&E"=15, - "GRAND THEFT"=15) - -/obj/item/device/law_planner/proc/announce() - say(english_list(rapsheet)) - say("[total_time] minutes.") - -/obj/item/device/law_planner/afterattack(var/atom/A, var/mob/user, var/proximity_flag) - if(!proximity_flag) - to_chat(user, "You can't seem to reach \the [A].") - return 0 - if(!allowed) - to_chat(user, "You must wear your ID!") - return 0 - if(ishuman(A)&&!(A==user)) - for(var/datum/data/record/E in data_core.security) - if(E.fields["name"] == A.name) - say("Verified. Found record match for [A].") - upload_crimes = E - if(istype(A,/obj/machinery/door_timer)) - if(announce==2) - announce() - if(upload_crimes) - upload_crimes.fields["criminal"] = "Incarcerated" - var/counter = 1 - while(upload_crimes.fields["com_[counter]"]) - counter++ - upload_crimes.fields["com_[counter]"] = text("Made by [user] (Automated) on [time2text(world.realtime, "DDD MMM DD")]
[english_list(rapsheet)]") - var/obj/machinery/door_timer/D = A - if(D.timeleft()) - //We're adding time - D.releasetime += total_time*60 - else - //Setting time - D.timeset(total_time*60) - if(start_timer && !D.timing) - D.timer_start() - upload_crimes = null - rapsheet = null - total_time = null - else - ..()*/ - - /obj/item/weapon/boxofsnow name = "box of winter" desc = "It has a single red button on top. Probably want to be careful where you open this." diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index 41d4e88e2c5..0dcbb80579d 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -224,6 +224,7 @@ "/obj/item/device/hailer", "/obj/item/weapon/melee/telebaton", "/obj/item/device/gps/secure", + "/obj/item/device/law_planner", "/obj/item/clothing/accessory/holobadge", "/obj/item/weapon/autocuffer", "/obj/item/weapon/depocket_wand", diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index 13ae5e2ee57..9c806bd68ec 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -554,6 +554,7 @@ new /obj/item/weapon/reagent_containers/spray/pepper(src) new /obj/item/taperoll/police(src) new /obj/item/device/hailer(src) + new /obj/item/device/law_planner(src) /obj/item/weapon/storage/box/large/detectivegear name = "detective essentials" diff --git a/code/modules/events/prison_break.dm b/code/modules/events/prison_break.dm index c78cc96e83f..5ff00717f3d 100644 --- a/code/modules/events/prison_break.dm +++ b/code/modules/events/prison_break.dm @@ -50,4 +50,4 @@ temp_glassairlock.prison_open() for(var/obj/machinery/door_timer/temp_timer in A) - temp_timer.releasetime = 1 \ No newline at end of file + temp_timer.timeleft = 0 \ No newline at end of file diff --git a/config-example/config.txt b/config-example/config.txt index a32c50ce615..250b38bdf8a 100644 --- a/config-example/config.txt +++ b/config-example/config.txt @@ -313,15 +313,15 @@ SKIP_VAULT_GENERATION ## SHUT_UP_AUTOMATIC_DIAGNOSTIC_AND_ANNOUNCEMENT_SYSTEM ## Uncomment to disable the lovely robotic voice that tells you the time at the start of every shift. ## Recommended for your sanity if you start the server a lot for testing things. -#SHUT_UP_AUTOMATIC_DIAGNOSTIC_AND_ANNOUNCEMENT_SYSTEM +SHUT_UP_AUTOMATIC_DIAGNOSTIC_AND_ANNOUNCEMENT_SYSTEM ## NO_LOBBY_MUSIC ## Uncomment to never play lobby music. Useful if you use guest keys to multiaccount-test stuff, since you can't use client preferences for those. -#NO_LOBBY_MUSIC +NO_LOBBY_MUSIC ## NO_AMBIENCE ## Same as above. -#NO_AMBIENCE +NO_AMBIENCE ## ENABLE_ROUNDSTART_AWAY_MISSIONS ## Uncomment to genereate an away mission at the beginning of each round diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index 0d35235a72b16844d257cd99415f9b4110253b25..c8738ded840de96cd72bb57db175e2e112f91fda 100644 GIT binary patch delta 18675 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

Bc8G8OfdauLK|f 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 diff --git a/nano/css/shared.css b/nano/css/shared.css index 959f85b50a3..52c594819c2 100644 --- a/nano/css/shared.css +++ b/nano/css/shared.css @@ -593,3 +593,19 @@ th.misc { line-height: 110%; font-size: 10px; } + +/* Law Frame */ +.redButton { + width:112px; + background: #ea0000; +} + +.yellowButton { + width:112px; + background: #cacc00; +} + +.greenButton { + width:112px; + background: #2f943c; +} \ No newline at end of file diff --git a/nano/templates/lawplanner.tmpl b/nano/templates/lawplanner.tmpl new file mode 100644 index 00000000000..83803d46cb3 --- /dev/null +++ b/nano/templates/lawplanner.tmpl @@ -0,0 +1,194 @@ +

+ {{if data.perp}} +
+ Record: +
+
+ {{:data.perp}} {{:helper.link('X', null, {'clear' : 'record'})}} +
+ {{/if}} + {{if data.timearrest}} +
+ Time of Arrest: +
+
+ {{:data.arresttime}} {{:helper.link('X', null, {'clear' : 'arresttime'})}} +
+ {{/if}} +
+ Rapsheet: +
+
+ {{:data.crimes}} ({{:data.timer}}) {{:helper.link('X', null, {'clear' : 'rapsheet'})}} +
+
+
+ {{:helper.link('Announce Charges', 'volume-on', {'toggle' : 'announce'},null, data.announce ? 'greenBackground' : null)}} + {{:helper.link('Autostart Celltimer', 'play', {'toggle' : 'starttimer'},null, data.starttimer ? 'greenBackground' : null)}} + {{:helper.link('Time Arrest', 'clock', {'toggle' : 'timearrest'},null, data.timearrest ? 'greenBackground' : null)}} +
+
+
+
+ Assault +
+
+ {{:helper.link('MINOR ASSAULT', null,{'assault':1},null, 'greenButton')}} +
+
+ {{:helper.link('ASSAULT', null,{'assault':2},null, 'greenButton')}} +
+
+ {{:helper.link('ABDUCTION', null,{'assault':3},null, 'yellowButton')}} +
+
+ {{:helper.link(' ',null,null,null, 'yellowButton')}} +
+
+ {{:helper.link('MANSLAUGHTER', null,{'assault':5},null, 'redButton')}} +
+
+ {{:helper.link('MURDER', null,{'assault':6},null, 'redButton')}} +
+
+
+
+ Damage +
+
+ {{:helper.link('VANDALISM', null,{'damage':1},null, 'greenButton')}} +
+
+ {{:helper.link(' ',null,null,null, 'greenButton')}} +
+
+ {{:helper.link('NEGLIGANCE', null,{'damage':3},null, 'yellowButton')}} +
+
+ {{:helper.link('SABOTAGE', null,{'damage':4},null, 'yellowButton')}} +
+
+ {{:helper.link('UNAUTH UPLOAD', null,{'damage':5},null, 'redButton')}} +
+
+ {{:helper.link('GRAND SABOTAGE', null,{'damage':6},null, 'redButton')}} +
+
+
+
+ Theft +
+
+ {{:helper.link('PETTY THEFT', null,{'theft':1},null, 'greenButton')}} +
+
+ {{:helper.link(' ',null,null,null, 'greenButton')}} +
+
+ {{:helper.link('THEFT', null,{'theft':3},null, 'yellowButton')}} +
+
+ {{:helper.link(' ',null,null,null, 'yellowButton')}} +
+
+ {{:helper.link('GRAND THEFT', null,{'theft':5},null, 'redButton')}} +
+
+ {{:helper.link(' ',null,null,null, 'redButton')}} +
+
+
+
+ Contraband +
+
+ {{:helper.link('MAKESHIFT WEP', null,{'contraband':1},null, 'greenButton')}} +
+
+ {{:helper.link(' ',null,null,null, 'greenButton')}} +
+
+ {{:helper.link('WEAPON/EXPLOS', null,{'contraband':3},null, 'yellowButton')}} +
+
+ {{:helper.link(' ',null,null,null, 'yellowButton')}} +
+
+ {{:helper.link('DISTRIB/MECHS', null,{'contraband':5},null, 'redButton')}} +
+
+ {{:helper.link('ENEMY CONTRAB', null,{'contraband':6},null, 'redButton')}} +
+
+
+
+
+
+ Trespass +
+
+ {{:helper.link('MINOR TRESPASS', null,{'trespass':1},null, 'greenButton')}} +
+
+ {{:helper.link(' ', null,null,null, 'greenButton')}} +
+
+ {{:helper.link('TRESPASS', null,{'trespass':3},null, 'yellowButton')}} +
+
+ {{:helper.link(' ',null,null,null, 'yellowButton')}} +
+
+ {{:helper.link('MAJOR TRESPASS', null,{'trespass':5},null, 'redButton')}} +
+
+ {{:helper.link(' ', null,null,null, 'redButton')}} +
+
+
+
+ Escape +
+
+ {{:helper.link('RESIST ARREST', null,{'escape':1},null, 'greenButton')}} +
+
+ {{:helper.link(' ',null,null,null, 'greenButton')}} +
+
+ {{:helper.link('ESCAPE', null,{'escape':3},null, 'yellowButton')}} +
+
+ {{:helper.link('INTERFERENCE', null,{'escape':4},null, 'yellowButton')}} +
+
+ {{:helper.link('GRAND ESCAPE', null,{'escape':5},null, 'redButton')}} +
+
+ {{:helper.link('DEIMPLANTING', null,{'escape':6},null, 'redButton')}} +
+
+
+
+ Insubordination +
+
+ {{:helper.link('MISUSE COMMS', null,{'insubordination':1},null, 'greenButton')}} +
+
+ {{:helper.link('INSUBORD',null,{'insubordination':2},null, 'greenButton')}} +
+
+ {{:helper.link('FRAMING', null,{'insubordination':3},null, 'yellowButton')}} +
+
+ {{:helper.link(' ',null,null,null, 'yellowButton')}} +
+
+ {{:helper.link('POWER ABUSE', null,{'insubordination':5},null, 'redButton')}} +
+
+ {{:helper.link('ENEMY OF CORP',null,{'insubordination':6},null, 'redButton')}} +
+
+
\ No newline at end of file diff --git a/vgstation13.dme b/vgstation13.dme index 1c6ef78c0e8..9aee3c0e1b4 100644 --- a/vgstation13.dme +++ b/vgstation13.dme @@ -838,6 +838,7 @@ #include "code\game\objects\items\policetape.dm" #include "code\game\objects\items\potions.dm" #include "code\game\objects\items\powercreeper_packet.dm" +#include "code\game\objects\items\sec_lawplanner.dm" #include "code\game\objects\items\shooting_range.dm" #include "code\game\objects\items\slime_heart.dm" #include "code\game\objects\items\toys.dm"