From b478a963973bc5d551e4f88e7b13bb411d1b3248 Mon Sep 17 00:00:00 2001 From: Arkatos1 Date: Sat, 11 May 2019 17:41:27 +0200 Subject: [PATCH 01/29] health doll examine --- code/_onclick/hud/screen_objects.dm | 9 +- code/modules/mob/living/carbon/carbon.dm | 103 ++++++++++++----------- 2 files changed, 59 insertions(+), 53 deletions(-) diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index c583617ac23..91c8d6250b4 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -453,7 +453,6 @@ /obj/screen/healths/corgi icon = 'icons/mob/screen_corgi.dmi' - /obj/screen/healths/guardian name = "summoner health" icon = 'icons/mob/guardian.dmi' @@ -467,14 +466,18 @@ screen_loc = ui_healthdoll var/list/cached_healthdoll_overlays = list() // List of icon states (strings) for overlays +/obj/screen/healthdoll/Click() + if(ishuman(usr)) + var/mob/living/carbon/H = usr + H.check_self_for_injuries() + /obj/screen/component_button var/obj/screen/parent - /obj/screen/component_button/Initialize(mapload, obj/screen/new_parent) . = ..() parent = new_parent /obj/screen/component_button/Click(params) if(parent) - parent.component_click(src, params) \ No newline at end of file + parent.component_click(src, params) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 31788ecc8cf..41f077905f9 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -216,56 +216,7 @@ add_attack_logs(M, src, "Shaked", ATKLOG_ALL) if(health >= HEALTH_THRESHOLD_CRIT) if(src == M && ishuman(src)) - var/mob/living/carbon/human/H = src - visible_message( \ - text("[src] examines [].",gender==MALE?"himself":"herself"), \ - "You check yourself for injuries." \ - ) - - var/list/missing = list("head", "chest", "groin", "l_arm", "r_arm", "l_hand", "r_hand", "l_leg", "r_leg", "l_foot", "r_foot") - for(var/X in H.bodyparts) - var/obj/item/organ/external/LB = X - missing -= LB.limb_name - var/status = "" - var/brutedamage = LB.brute_dam - var/burndamage = LB.burn_dam - - if(brutedamage > 0) - status = "bruised" - if(brutedamage > 20) - status = "battered" - if(brutedamage > 40) - status = "mangled" - if(brutedamage > 0 && burndamage > 0) - status += " and " - if(burndamage > 40) - status += "peeling away" - - else if(burndamage > 10) - status += "blistered" - else if(burndamage > 0) - status += "numb" - if(LB.status & ORGAN_MUTATED) - status = "weirdly shapen." - if(status == "") - status = "OK" - to_chat(src, "\t Your [LB.name] is [status].") - - for(var/obj/item/I in LB.embedded_objects) - to_chat(src, "\t There is \a [I] embedded in your [LB.name]!") - - for(var/t in missing) - to_chat(src, "Your [parse_zone(t)] is missing!") - - if(H.bleed_rate) - to_chat(src, "You are bleeding!") - if(staminaloss) - if(staminaloss > 30) - to_chat(src, "You're completely exhausted.") - else - to_chat(src, "You feel fatigued.") - if((SKELETON in H.mutations) && (!H.w_uniform) && (!H.wear_suit)) - H.play_xylophone() + check_self_for_injuries() else if(player_logged) M.visible_message("[M] shakes [src], but [p_they()] [p_do()] not respond. Probably suffering from SSD.", \ @@ -308,6 +259,58 @@ else if(H.w_uniform) H.w_uniform.add_fingerprint(M) +/mob/living/carbon/proc/check_self_for_injuries() + var/mob/living/carbon/human/H = src + visible_message( \ + text("[src] examines [].",gender==MALE?"himself":"herself"), \ + "You check yourself for injuries." \ + ) + + var/list/missing = list("head", "chest", "groin", "l_arm", "r_arm", "l_hand", "r_hand", "l_leg", "r_leg", "l_foot", "r_foot") + for(var/X in H.bodyparts) + var/obj/item/organ/external/LB = X + missing -= LB.limb_name + var/status = "" + var/brutedamage = LB.brute_dam + var/burndamage = LB.burn_dam + + if(brutedamage > 0) + status = "bruised" + if(brutedamage > 20) + status = "battered" + if(brutedamage > 40) + status = "mangled" + if(brutedamage > 0 && burndamage > 0) + status += " and " + if(burndamage > 40) + status += "peeling away" + + else if(burndamage > 10) + status += "blistered" + else if(burndamage > 0) + status += "numb" + if(LB.status & ORGAN_MUTATED) + status = "weirdly shapen." + if(status == "") + status = "OK" + to_chat(src, "\t Your [LB.name] is [status].") + + for(var/obj/item/I in LB.embedded_objects) + to_chat(src, "\t There is \a [I] embedded in your [LB.name]!") + + for(var/t in missing) + to_chat(src, "Your [parse_zone(t)] is missing!") + + if(H.bleed_rate) + to_chat(src, "You are bleeding!") + if(staminaloss) + if(staminaloss > 30) + to_chat(src, "You're completely exhausted.") + else + to_chat(src, "You feel fatigued.") + if((SKELETON in H.mutations) && (!H.w_uniform) && (!H.wear_suit)) + H.play_xylophone() + /mob/living/carbon/flash_eyes(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0) . = ..() var/damage = intensity - check_eye_prot() From a96721b7f08ef0e4b909271761eaac9eb225e1f7 Mon Sep 17 00:00:00 2001 From: Citinited Date: Tue, 14 May 2019 00:49:51 +0100 Subject: [PATCH 02/29] Adds a radial menu to the RPD --- code/game/objects/items/weapons/rpd.dm | 48 +++++++++++++++++++++++++ icons/obj/interface.dmi | Bin 5466 -> 6139 bytes 2 files changed, 48 insertions(+) diff --git a/code/game/objects/items/weapons/rpd.dm b/code/game/objects/items/weapons/rpd.dm index 63a3ffef0c5..649417bc644 100644 --- a/code/game/objects/items/weapons/rpd.dm +++ b/code/game/objects/items/weapons/rpd.dm @@ -4,6 +4,9 @@ #define RPD_COOLDOWN_TIME 4 //How long should we have to wait between dispensing pipes? #define RPD_WALLBUILD_TIME 40 //How long should drilling into a wall take? +#define RPD_MENU_ROTATE "Rotate pipes" //Stuff for radial menu +#define RPD_MENU_FLIP "Flip pipes" //Stuff for radial menu +#define RPD_MENU_DELETE "Delete pipes" //Stuff for radial menu /obj/item/rpd name = "rapid pipe dispenser" @@ -172,6 +175,9 @@ var/list/pipemenu = list( ui.open() ui.set_auto_update(1) +/obj/item/rpd/AltClick(mob/user) + radial_menu(user) + /obj/item/rpd/ui_data(mob/user, ui_key = "main", datum/topic_state/state = inventory_state) var/data[0] data["iconrotation"] = iconrotation @@ -200,6 +206,45 @@ var/list/pipemenu = list( return SSnanoui.update_uis(src) +//RPD radial menu + +/obj/item/rpd/proc/check_menu(mob/living/user) + if(!istype(user)) + return + if(user.incapacitated()) + return + if(loc != user) + return + return TRUE + +/obj/item/rpd/proc/radial_menu(mob/user) + if(!check_menu(user)) + to_chat(user, "You can't do that right now!") + return + var/icon_file = 'icons/obj/interface.dmi' + var/list/choices = list( + RPD_MENU_ROTATE = image(icon = 'icons/obj/interface.dmi', icon_state = "rpd_rotate"), + RPD_MENU_FLIP = image(icon = icon_file, icon_state = "rpd_flip"), + RPD_MENU_DELETE = image(icon = icon_file, icon_state = "rpd_delete"), + "UI" = image(icon = icon_file, icon_state = "ui_interact") + ) + var/selected_mode = show_radial_menu(user, src, choices, custom_check = CALLBACK(src, .proc/check_menu, user)) + if(!check_menu(user)) + return + if(selected_mode == "UI") + ui_interact(user) + else + switch(selected_mode) + if(RPD_MENU_ROTATE) + mode = RPD_ROTATE_MODE + if(RPD_MENU_FLIP) + mode = RPD_FLIP_MODE + if(RPD_MENU_DELETE) + mode = RPD_DELETE_MODE + else + return //Either nothing was selected, or an invalid mode was selected + to_chat(user, "You set [src]'s mode.") + /obj/item/rpd/afterattack(atom/target, mob/user, proximity) ..() if(loc != user) @@ -236,3 +281,6 @@ var/list/pipemenu = list( #undef RPD_COOLDOWN_TIME #undef RPD_WALLBUILD_TIME +#undef RPD_MENU_ROTATE +#undef RPD_MENU_FLIP +#undef RPD_MENU_DELETE diff --git a/icons/obj/interface.dmi b/icons/obj/interface.dmi index 3b64561d5e0017ad40bf13b396a9b7dc3f039a1a..91ccc83ff54aca8a0ebb207b26a4ea158eca22f7 100644 GIT binary patch literal 6139 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 literal 5466 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 MYv`$0tJ*~T54Q)UsQ>@~ From fd97be08ef745104c93e22cc4e111416edf34dd6 Mon Sep 17 00:00:00 2001 From: Citinited Date: Tue, 14 May 2019 08:30:43 +0100 Subject: [PATCH 03/29] Removes unused var --- code/game/objects/items/weapons/rpd.dm | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/code/game/objects/items/weapons/rpd.dm b/code/game/objects/items/weapons/rpd.dm index 649417bc644..4381c4295c7 100644 --- a/code/game/objects/items/weapons/rpd.dm +++ b/code/game/objects/items/weapons/rpd.dm @@ -221,12 +221,11 @@ var/list/pipemenu = list( if(!check_menu(user)) to_chat(user, "You can't do that right now!") return - var/icon_file = 'icons/obj/interface.dmi' var/list/choices = list( RPD_MENU_ROTATE = image(icon = 'icons/obj/interface.dmi', icon_state = "rpd_rotate"), - RPD_MENU_FLIP = image(icon = icon_file, icon_state = "rpd_flip"), - RPD_MENU_DELETE = image(icon = icon_file, icon_state = "rpd_delete"), - "UI" = image(icon = icon_file, icon_state = "ui_interact") + RPD_MENU_FLIP = image(icon = 'icons/obj/interface.dmi', icon_state = "rpd_flip"), + RPD_MENU_DELETE = image(icon = 'icons/obj/interface.dmi', icon_state = "rpd_delete"), + "UI" = image(icon = 'icons/obj/interface.dmi', icon_state = "ui_interact") ) var/selected_mode = show_radial_menu(user, src, choices, custom_check = CALLBACK(src, .proc/check_menu, user)) if(!check_menu(user)) From a9009d93c9122eeb85a4ef39bb0da196e64590a7 Mon Sep 17 00:00:00 2001 From: Citinited Date: Tue, 14 May 2019 18:01:15 +0100 Subject: [PATCH 04/29] Better interface sprites --- icons/obj/interface.dmi | Bin 6139 -> 6127 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/interface.dmi b/icons/obj/interface.dmi index 91ccc83ff54aca8a0ebb207b26a4ea158eca22f7..631bba214c8f92b4daf68899905451793e8871ec 100644 GIT binary patch delta 5947 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 Wr8*|VnUW47J(_Ads#VH1VgC>E_P Date: Sat, 18 May 2019 19:56:30 +0200 Subject: [PATCH 05/29] rechargers now show their contents and charge status on examine --- code/game/atoms_movable.dm | 4 +++ code/game/machinery/recharger.dm | 33 ++++++++++++++----- code/game/objects/items/devices/scanners.dm | 3 ++ code/game/objects/items/weapons/stunbaton.dm | 3 ++ .../hardware/battery_module.dm | 3 ++ code/modules/power/cell.dm | 3 ++ code/modules/projectiles/guns/energy.dm | 3 ++ code/modules/telesci/telepad.dm | 4 ++- 8 files changed, 47 insertions(+), 9 deletions(-) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index d1bee2bb62e..ce2f0616add 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -58,6 +58,10 @@ pulledby = null return ..() +//Returns an atom's power cell, if it has one. Overload for individual items. +/atom/movable/proc/get_cell() + return + /atom/movable/proc/start_pulling(atom/movable/AM, state, force = move_force, supress_message = FALSE) if(QDELETED(AM)) return FALSE diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index 81006be3fdd..b8f2d153d9f 100644 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -8,6 +8,7 @@ idle_power_usage = 4 active_power_usage = 250 var/obj/item/charging = null + var/using_power = FALSE var/list/allowed_devices = list(/obj/item/gun/energy, /obj/item/melee/baton, /obj/item/modular_computer, /obj/item/rcs, /obj/item/bodyanalyzer) var/icon_state_off = "rechargeroff" var/icon_state_charged = "recharger2" @@ -81,22 +82,21 @@ if(stat & (NOPOWER|BROKEN) || !anchored) return - var/using_power = 0 + using_power = FALSE if(charging) if(istype(charging, /obj/item/gun/energy)) var/obj/item/gun/energy/E = charging if(E.power_supply.charge < E.power_supply.maxcharge) E.power_supply.give(E.power_supply.chargerate) use_power(250) - using_power = 1 - + using_power = TRUE if(istype(charging, /obj/item/melee/baton)) var/obj/item/melee/baton/B = charging if(B.bcell) if(B.bcell.give(B.bcell.chargerate)) use_power(200) - using_power = 1 + using_power = TRUE if(istype(charging, /obj/item/modular_computer)) var/obj/item/modular_computer/C = charging @@ -107,21 +107,21 @@ if(B.battery.charge < B.battery.maxcharge) B.battery.give(B.battery.chargerate) use_power(200) - using_power = 1 + using_power = TRUE if(istype(charging, /obj/item/rcs)) var/obj/item/rcs/R = charging if(R.rcell) if(R.rcell.give(R.rcell.chargerate)) use_power(200) - using_power = 1 + using_power = TRUE if(istype(charging, /obj/item/bodyanalyzer)) var/obj/item/bodyanalyzer/B = charging if(B.power_supply) if(B.power_supply.give(B.power_supply.chargerate)) use_power(200) - using_power = 1 + using_power = TRUE update_icon(using_power) @@ -141,7 +141,7 @@ B.bcell.charge = 0 ..(severity) -/obj/machinery/recharger/update_icon(using_power = 0) //we have an update_icon() in addition to the stuff in process to make it feel a tiny bit snappier. +/obj/machinery/recharger/update_icon(using_power = FALSE) //we have an update_icon() in addition to the stuff in process to make it feel a tiny bit snappier. if(stat & (NOPOWER|BROKEN) || !anchored) icon_state = icon_state_off return @@ -153,6 +153,23 @@ return icon_state = icon_state_idle +/obj/machinery/recharger/examine(mob/user) + ..() + if(charging && (!in_range(user, src) && !issilicon(user) && !isobserver(user))) + to_chat(user, "You're too far away to examine [src]'s contents and display!") + return + + if(charging) + to_chat(user, "\The [src] contains:") + to_chat(user, "- \A [charging].") + if(!(stat & (NOPOWER|BROKEN))) + var/obj/item/stock_parts/cell/C = charging.get_cell() + to_chat(user, "The status display reads:") + if(using_power) + to_chat(user, "- Recharging [(C.chargerate/C.maxcharge)*100]% cell charge per cycle.") + if(charging) + to_chat(user, "- \The [charging]'s cell is at [C.percent()]%.") + // Atlantis: No need for that copy-pasta code, just use var to store icon_states instead. /obj/machinery/recharger/wallcharger name = "wall recharger" diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 9bb036c4d05..cad4ae25ac8 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -591,6 +591,9 @@ REAGENT SCANNER var/scan_time = 10 SECONDS //how long does it take to scan var/scan_cd = 60 SECONDS //how long before we can scan again +/obj/item/bodyanalyzer/get_cell() + return power_supply + /obj/item/bodyanalyzer/advanced cell_type = /obj/item/stock_parts/cell/upgraded/plus diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index f128b874eaa..526340daea5 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -20,6 +20,9 @@ user.visible_message("[user] is putting the live [name] in [user.p_their()] mouth! It looks like [user.p_theyre()] trying to commit suicide.") return FIRELOSS +/obj/item/melee/baton/get_cell() + return bcell + /obj/item/melee/baton/New() ..() update_icon() diff --git a/code/modules/modular_computers/hardware/battery_module.dm b/code/modules/modular_computers/hardware/battery_module.dm index 65b4ef1f640..98f1ab5667e 100644 --- a/code/modules/modular_computers/hardware/battery_module.dm +++ b/code/modules/modular_computers/hardware/battery_module.dm @@ -8,6 +8,9 @@ var/obj/item/stock_parts/cell/battery = null device_type = MC_CELL +/obj/item/computer_hardware/battery/get_cell() + return battery + /obj/item/computer_hardware/battery/New(loc, battery_type = null) if(battery_type) battery = new battery_type(src) diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index 4719ff75261..33b423c6360 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -19,6 +19,9 @@ var/ratingdesc = TRUE var/grown_battery = FALSE // If it's a grown that acts as a battery, add a wire overlay to it. +/obj/item/stock_parts/cell/get_cell() + return src + /obj/item/stock_parts/cell/New() ..() START_PROCESSING(SSobj, src) diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index b25420b5491..cbc230c1e98 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -23,6 +23,9 @@ power_supply.use(round(power_supply.charge / severity)) update_icon() +/obj/item/gun/energy/get_cell() + return power_supply + /obj/item/gun/energy/New() ..() if(cell_type) diff --git a/code/modules/telesci/telepad.dm b/code/modules/telesci/telepad.dm index 2f3667a645f..893e9719fb4 100644 --- a/code/modules/telesci/telepad.dm +++ b/code/modules/telesci/telepad.dm @@ -128,11 +128,13 @@ var/teleporting = 0 var/chargecost = 1000 +/obj/item/rcs/get_cell() + return rcell + /obj/item/rcs/New() ..() rcell = new(src) - /obj/item/rcs/examine(mob/user) ..(user) to_chat(user, "There are [round(rcell.charge/chargecost)] charge\s left.") From fdd2ca94d4556a7654979aa71e204670acfad969 Mon Sep 17 00:00:00 2001 From: Arkatos1 Date: Sat, 18 May 2019 23:52:18 +0200 Subject: [PATCH 06/29] added get_cell() proc to remaining items using cells --- code/game/machinery/defib_mount.dm | 5 ++++- code/game/machinery/floodlight.dm | 2 ++ code/game/machinery/spaceheater.dm | 4 +++- code/game/mecha/mecha.dm | 4 ++++ code/game/objects/items/weapons/defib.dm | 3 +++ code/modules/clothing/gloves/miscellaneous.dm | 4 +++- code/modules/clothing/spacesuits/rig/rig.dm | 3 +++ code/modules/mob/living/silicon/robot/robot.dm | 3 +++ code/modules/mob/living/simple_animal/bot/mulebot.dm | 3 +++ .../modular_computers/computers/item/computer_power.dm | 4 ++++ code/modules/ninja/suit/suit.dm | 3 +++ code/modules/ninja/suit/suit_attackby.dm | 4 +--- code/modules/power/apc.dm | 4 +++- code/modules/projectiles/guns/throw/crossbow.dm | 3 +++ code/modules/reagents/chemistry/machinery/chem_dispenser.dm | 3 +++ code/modules/spacepods/spacepod.dm | 2 ++ 16 files changed, 47 insertions(+), 7 deletions(-) diff --git a/code/game/machinery/defib_mount.dm b/code/game/machinery/defib_mount.dm index 49c5fbcbce6..77d68590efa 100644 --- a/code/game/machinery/defib_mount.dm +++ b/code/game/machinery/defib_mount.dm @@ -15,6 +15,10 @@ var/obj/item/defibrillator/defib //this mount's defibrillator var/clamps_locked = FALSE //if true, and a defib is loaded, it can't be removed without unlocking the clamps +/obj/machinery/defibrillator_mount/get_cell() + if(defib) + return defib.get_cell() + /obj/machinery/defibrillator_mount/New(location, direction, building = 0) ..() @@ -28,7 +32,6 @@ pixel_x = (dir & 3)? 0 : (dir == 4 ? -30 : 30) pixel_y = (dir & 3)? (dir == 1 ? -30 : 30) : 0 - /obj/machinery/defibrillator_mount/loaded/New() //loaded subtype for mapping use ..() defib = new/obj/item/defibrillator/loaded(src) diff --git a/code/game/machinery/floodlight.dm b/code/game/machinery/floodlight.dm index c11b3d7a725..68e22f2e8c7 100644 --- a/code/game/machinery/floodlight.dm +++ b/code/game/machinery/floodlight.dm @@ -12,6 +12,8 @@ var/open = FALSE var/brightness_on = 14 +/obj/machinery/floodlight/get_cell() + return cell /obj/machinery/floodlight/Initialize() . = ..() diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm index 3777dfc866d..ccba902b058 100644 --- a/code/game/machinery/spaceheater.dm +++ b/code/game/machinery/spaceheater.dm @@ -12,6 +12,9 @@ var/set_temperature = 50 // in celcius, add T0C for kelvin var/heating_power = 40000 +/obj/machinery/space_heater/get_cell() + return cell + /obj/machinery/space_heater/New() ..() cell = new(src) @@ -39,7 +42,6 @@ else to_chat(user, "The charge meter reads [cell ? round(cell.percent(),1) : 0]%") - /obj/machinery/space_heater/emp_act(severity) if(stat & (BROKEN|NOPOWER)) ..(severity) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index d9d9d5dd261..2ff5cabaaaa 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -137,6 +137,10 @@ //////////////////////// ////// Helpers ///////// //////////////////////// + +/obj/mecha/get_cell() + return cell + /obj/mecha/proc/add_airtank() internal_tank = new /obj/machinery/portable_atmospherics/canister/air(src) return internal_tank diff --git a/code/game/objects/items/weapons/defib.dm b/code/game/objects/items/weapons/defib.dm index ea70e29ef83..3b388bd75f8 100644 --- a/code/game/objects/items/weapons/defib.dm +++ b/code/game/objects/items/weapons/defib.dm @@ -23,6 +23,9 @@ var/obj/item/stock_parts/cell/high/bcell = null var/combat = 0 //can we revive through space suits? +/obj/item/defibrillator/get_cell() + return bcell + /obj/item/defibrillator/New() //starts without a cell for rnd ..() paddles = make_paddles() diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm index 227374bd420..8e5e658e31a 100644 --- a/code/modules/clothing/gloves/miscellaneous.dm +++ b/code/modules/clothing/gloves/miscellaneous.dm @@ -64,7 +64,6 @@ item_state = "lgloves" flags = NODROP - /obj/item/clothing/gloves/color/yellow/stun name = "stun gloves" desc = "Horrendous and awful. It smells like cancer. The fact it has wires attached to it is incidental." @@ -72,6 +71,9 @@ var/stun_strength = 5 var/stun_cost = 2000 +/obj/item/clothing/gloves/color/yellow/stun/get_cell() + return cell + /obj/item/clothing/gloves/color/yellow/stun/New() ..() update_icon() diff --git a/code/modules/clothing/spacesuits/rig/rig.dm b/code/modules/clothing/spacesuits/rig/rig.dm index 913e65af734..b463a513764 100644 --- a/code/modules/clothing/spacesuits/rig/rig.dm +++ b/code/modules/clothing/spacesuits/rig/rig.dm @@ -97,6 +97,9 @@ to_chat(usr, "The maintenance panel is [open ? "open" : "closed"].") to_chat(usr, "Hardsuit systems are [offline ? "offline" : "online"].") +/obj/item/rig/get_cell() + return cell + /obj/item/rig/New() ..() diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 7521270346e..14a9e94f57b 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -103,6 +103,9 @@ var/list/robot_verbs_default = list( var/datum/action/item_action/toggle_research_scanner/scanner = null var/list/module_actions = list() +/mob/living/silicon/robot/get_cell() + return cell + /mob/living/silicon/robot/New(loc,var/syndie = 0,var/unfinished = 0, var/alien = 0) spark_system = new /datum/effect_system/spark_spread() spark_system.set_up(5, 0, src) diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm index 49a3b2718db..1db149418c7 100644 --- a/code/modules/mob/living/simple_animal/bot/mulebot.dm +++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm @@ -50,6 +50,9 @@ var/currentBloodColor = "#A10808" var/currentDNA = null +/mob/living/simple_animal/bot/mulebot/get_cell() + return cell + /mob/living/simple_animal/bot/mulebot/New() ..() wires = new /datum/wires/mulebot(src) diff --git a/code/modules/modular_computers/computers/item/computer_power.dm b/code/modules/modular_computers/computers/item/computer_power.dm index 0a7955cfe52..27c81d48190 100644 --- a/code/modules/modular_computers/computers/item/computer_power.dm +++ b/code/modules/modular_computers/computers/item/computer_power.dm @@ -26,6 +26,10 @@ return battery_module.battery.give(amount) return 0 +/obj/item/modular_computer/get_cell() + var/obj/item/computer_hardware/battery/battery_module = all_components[MC_CELL] + if(battery_module && battery_module.battery) + return battery_module.battery // Used in following function to reduce copypaste /obj/item/modular_computer/proc/power_failure() diff --git a/code/modules/ninja/suit/suit.dm b/code/modules/ninja/suit/suit.dm index dfd430a5754..6e550e64893 100644 --- a/code/modules/ninja/suit/suit.dm +++ b/code/modules/ninja/suit/suit.dm @@ -27,6 +27,9 @@ Contents: var/obj/item/clothing/mask/gas/space_ninja/suitMask var/mob/living/carbon/human/suitOccupant +/obj/item/clothing/suit/space/space_ninja/get_cell() + return suitCell + /obj/item/clothing/suit/space/space_ninja/proc/toggle_suit_lock(mob/living/carbon/human/user) if(!suitActive) if(!istype(user.wear_suit, /obj/item/clothing/suit/space/space_ninja)) diff --git a/code/modules/ninja/suit/suit_attackby.dm b/code/modules/ninja/suit/suit_attackby.dm index ab6250a2b0f..2a2683a2826 100644 --- a/code/modules/ninja/suit/suit_attackby.dm +++ b/code/modules/ninja/suit/suit_attackby.dm @@ -1,5 +1,3 @@ - - /obj/item/clothing/suit/space/space_ninja/attackby(obj/item/I, mob/U, params) if(U==suitOccupant)//Safety, in case you try doing this without wearing the suit/being the person with the suit. if(istype(I, /obj/item/stock_parts/cell)) @@ -21,4 +19,4 @@ else to_chat(U, "Procedure interrupted. Protocol terminated.") return - ..() \ No newline at end of file + ..() diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index a3186b115a4..357d716197e 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -117,7 +117,6 @@ lighting = 0 operating = 0 - /obj/machinery/power/apc/noalarm report_power_alarm = 0 @@ -133,6 +132,9 @@ usesound = 'sound/items/deconstruct.ogg' toolspeed = 1 +/obj/machinery/power/apc/get_cell() + return cell + /obj/machinery/power/apc/connect_to_network() //Override because the APC does not directly connect to the network; it goes through a terminal. //The terminal is what the power computer looks for anyway. diff --git a/code/modules/projectiles/guns/throw/crossbow.dm b/code/modules/projectiles/guns/throw/crossbow.dm index bf101cd49c3..9c87f7949a9 100644 --- a/code/modules/projectiles/guns/throw/crossbow.dm +++ b/code/modules/projectiles/guns/throw/crossbow.dm @@ -22,6 +22,9 @@ var/obj/item/stock_parts/cell/cell = null // Used for firing superheated rods. var/list/possible_tensions = list(XBOW_TENSION_20, XBOW_TENSION_40, XBOW_TENSION_60, XBOW_TENSION_80, XBOW_TENSION_FULL) +/obj/item/gun/throw/crossbow/get_cell() + return cell + /obj/item/gun/throw/crossbow/emp_act(severity) if(cell && severity) emp_act(severity) diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm index 57a57ef8e0a..51a26533ea7 100644 --- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm +++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm @@ -24,6 +24,9 @@ var/hack_message = "You disable the safety safeguards, enabling the \"Mad Scientist\" mode." var/unhack_message = "You re-enable the safety safeguards, enabling the \"NT Standard\" mode." +/obj/machinery/chem_dispenser/get_cell() + return cell + /obj/machinery/chem_dispenser/New() ..() component_parts = list() diff --git a/code/modules/spacepods/spacepod.dm b/code/modules/spacepods/spacepod.dm index 273ea75e832..16f8e8f067f 100644 --- a/code/modules/spacepods/spacepod.dm +++ b/code/modules/spacepods/spacepod.dm @@ -92,6 +92,8 @@ has_paint = 1 update_icons() +/obj/spacepod/get_cell() + return battery /obj/spacepod/New() . = ..() From 066343ad31897b1d9d73653138b957c6251da9ae Mon Sep 17 00:00:00 2001 From: tayyyyyyy Date: Mon, 20 May 2019 17:18:18 -0700 Subject: [PATCH 07/29] Support markdown --- code/modules/paperwork/paper.dm | 21 ++++++++++++--------- html/browser/marked.js | 26 ++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 9 deletions(-) create mode 100644 html/browser/marked.js diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 451687cd38c..23a37e06409 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -75,16 +75,19 @@ assets.send(user) var/data - if((!user.say_understands(null, GLOB.all_languages["Galactic Common"]) && !forceshow) || forcestars) //assuming all paper is written in common is better than hardcoded type checks - data = "[name][stars(info)][stamps]" - if(view) - usr << browse(data, "window=[name];size=[paper_width]x[paper_height]") - onclose(usr, "[name]") + var/stars = (!user.say_understands(null, GLOB.all_languages["Galactic Common"]) && !forceshow) || forcestars + if(stars) //assuming all paper is written in common is better than hardcoded type checks + data = "[stars(info)][stamps]" else - data = "[name][infolinks ? info_links : info][stamps]" - if(view) - usr << browse(data, "window=[name];size=[paper_width]x[paper_height]") - onclose(usr, "[name]") + data = "
[infolinks ? info_links : info]
[stamps]" + if(view) + var/datum/browser/popup = new(user, name, , paper_width, paper_height) + popup.stylesheets = list() + popup.set_content(data) + if(!stars) + popup.add_script("marked.js", 'html/browser/marked.js') + popup.add_head_content("[name]") + popup.open() return data /obj/item/paper/verb/rename() diff --git a/html/browser/marked.js b/html/browser/marked.js new file mode 100644 index 00000000000..6fe0e1e4e41 --- /dev/null +++ b/html/browser/marked.js @@ -0,0 +1,26 @@ +/** + * marked - a markdown parser + * Copyright (c) 2011-2018, Christopher Jeffrey. (MIT Licensed) + * https://github.com/markedjs/marked + */ +!function(e){"use strict";var _={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,fences:f,hr:/^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *(?:#+ *)?(?:\n+|$)/,nptable:f,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3})(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:"^ {0,3}(?:<(script|pre|style)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?\\?>\\n*|\\n*|\\n*|)[\\s\\S]*?(?:\\n{2,}|$)|<(?!script|pre|style)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$))",def:/^ {0,3}\[(label)\]: *\n? *]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,table:f,lheading:/^([^\n]+)\n {0,3}(=|-){2,} *(?:\n+|$)/,paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading| {0,3}>|<\/?(?:tag)(?: +|\n|\/?>)|<(?:script|pre|style|!--))[^\n]+)*)/,text:/^[^\n]+/};function a(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||m.defaults,this.rules=_.normal,this.options.pedantic?this.rules=_.pedantic:this.options.gfm&&(this.options.tables?this.rules=_.tables:this.rules=_.gfm)}_._label=/(?!\s*\])(?:\\[\[\]]|[^\[\]])+/,_._title=/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/,_.def=i(_.def).replace("label",_._label).replace("title",_._title).getRegex(),_.bullet=/(?:[*+-]|\d{1,9}\.)/,_.item=/^( *)(bull) ?[^\n]*(?:\n(?!\1bull ?)[^\n]*)*/,_.item=i(_.item,"gm").replace(/bull/g,_.bullet).getRegex(),_.list=i(_.list).replace(/bull/g,_.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+_.def.source+")").getRegex(),_._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",_._comment=//,_.html=i(_.html,"i").replace("comment",_._comment).replace("tag",_._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),_.paragraph=i(_.paragraph).replace("hr",_.hr).replace("heading",_.heading).replace("lheading",_.lheading).replace("tag",_._tag).getRegex(),_.blockquote=i(_.blockquote).replace("paragraph",_.paragraph).getRegex(),_.normal=d({},_),_.gfm=d({},_.normal,{fences:/^ {0,3}(`{3,}|~{3,})([^`\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?:\n+|$)|$)/,paragraph:/^/,heading:/^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/}),_.gfm.paragraph=i(_.paragraph).replace("(?!","(?!"+_.gfm.fences.source.replace("\\1","\\2")+"|"+_.list.source.replace("\\1","\\3")+"|").getRegex(),_.tables=d({},_.gfm,{nptable:/^ *([^|\n ].*\|.*)\n *([-:]+ *\|[-| :]*)(?:\n((?:.*[^>\n ].*(?:\n|$))*)\n*|$)/,table:/^ *\|(.+)\n *\|?( *[-:]+[-| :]*)(?:\n((?: *[^>\n ].*(?:\n|$))*)\n*|$)/}),_.pedantic=d({},_.normal,{html:i("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",_._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/}),a.rules=_,a.lex=function(e,t){return new a(t).lex(e)},a.prototype.lex=function(e){return e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g," ").replace(/\u00a0/g," ").replace(/\u2424/g,"\n"),this.token(e,!0)},a.prototype.token=function(e,t){var n,r,s,i,l,o,a,h,p,u,c,g,f,d,k,m,b,x;for(e=e.replace(/^ +$/gm,"");e;)if((s=this.rules.newline.exec(e))&&(e=e.substring(s[0].length),1 ?/gm,""),x=1;b.match(/^ {0,3}>/);)x++,this.tokens.push({type:"blockquote_start"}),b=b.replace(/^ *> ?/gm,"");for(this.token(b,t),c=0;c?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:f,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(href(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(?!\s*\])((?:\\[\[\]]?|[^\[\]\\])+)\]/,nolink:/^!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?/,strong:/^__([^\s_])__(?!_)|^\*\*([^\s*])\*\*(?!\*)|^__([^\s][\s\S]*?[^\s])__(?!_)|^\*\*([^\s][\s\S]*?[^\s])\*\*(?!\*)/,em:/^_([^\s_])_(?!_)|^\*([^\s*"<\[])\*(?!\*)|^_([^\s][\s\S]*?[^\s_])_(?!_|[^\spunctuation])|^_([^\s_][\s\S]*?[^\s])_(?!_|[^\spunctuation])|^\*([^\s"<\[][\s\S]*?[^\s*])\*(?!\*)|^\*([^\s*"<\[][\s\S]*?[^\s])\*(?!\*)/,code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:f,text:/^(`+|[^`])(?:[\s\S]*?(?:(?=[\\?@\\[^_{|}~",n.em=i(n.em).replace(/punctuation/g,n._punctuation).getRegex(),n._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,n._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,n._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,n.autolink=i(n.autolink).replace("scheme",n._scheme).replace("email",n._email).getRegex(),n._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,n.tag=i(n.tag).replace("comment",_._comment).replace("attribute",n._attribute).getRegex(),n._label=/(?:\[[^\[\]]*\]|\\[\[\]]?|`[^`]*`|`(?!`)|[^\[\]\\`])*?/,n._href=/\s*(<(?:\\[<>]?|[^\s<>\\])*>|[^\s\x00-\x1f]*)/,n._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,n.link=i(n.link).replace("label",n._label).replace("href",n._href).replace("title",n._title).getRegex(),n.reflink=i(n.reflink).replace("label",n._label).getRegex(),n.normal=d({},n),n.pedantic=d({},n.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/,link:i(/^!?\[(label)\]\((.*?)\)/).replace("label",n._label).getRegex(),reflink:i(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",n._label).getRegex()}),n.gfm=d({},n.normal,{escape:i(n.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^~+(?=\S)([\s\S]*?\S)~+/,text:/^(`+|[^`])(?:[\s\S]*?(?:(?=[\\/i.test(i[0])&&(this.inLink=!1),!this.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(i[0])?this.inRawBlock=!0:this.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(i[0])&&(this.inRawBlock=!1),e=e.substring(i[0].length),o+=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(i[0]):u(i[0]):i[0];else if(i=this.rules.link.exec(e)){var a=k(i[2],"()");if(-1$/,"$1"),o+=this.outputLink(i,{href:p.escapes(r),title:p.escapes(s)}),this.inLink=!1}else if((i=this.rules.reflink.exec(e))||(i=this.rules.nolink.exec(e))){if(e=e.substring(i[0].length),t=(i[2]||i[1]).replace(/\s+/g," "),!(t=this.links[t.toLowerCase()])||!t.href){o+=i[0].charAt(0),e=i[0].substring(1)+e;continue}this.inLink=!0,o+=this.outputLink(i,t),this.inLink=!1}else if(i=this.rules.strong.exec(e))e=e.substring(i[0].length),o+=this.renderer.strong(this.output(i[4]||i[3]||i[2]||i[1]));else if(i=this.rules.em.exec(e))e=e.substring(i[0].length),o+=this.renderer.em(this.output(i[6]||i[5]||i[4]||i[3]||i[2]||i[1]));else if(i=this.rules.code.exec(e))e=e.substring(i[0].length),o+=this.renderer.codespan(u(i[2].trim(),!0));else if(i=this.rules.br.exec(e))e=e.substring(i[0].length),o+=this.renderer.br();else if(i=this.rules.del.exec(e))e=e.substring(i[0].length),o+=this.renderer.del(this.output(i[1]));else if(i=this.rules.autolink.exec(e))e=e.substring(i[0].length),r="@"===i[2]?"mailto:"+(n=u(this.mangle(i[1]))):n=u(i[1]),o+=this.renderer.link(r,null,n);else if(this.inLink||!(i=this.rules.url.exec(e))){if(i=this.rules.text.exec(e))e=e.substring(i[0].length),this.inRawBlock?o+=this.renderer.text(i[0]):o+=this.renderer.text(u(this.smartypants(i[0])));else if(e)throw new Error("Infinite loop on byte: "+e.charCodeAt(0))}else{if("@"===i[2])r="mailto:"+(n=u(i[0]));else{for(;l=i[0],i[0]=this.rules._backpedal.exec(i[0])[0],l!==i[0];);n=u(i[0]),r="www."===i[1]?"http://"+n:n}e=e.substring(i[0].length),o+=this.renderer.link(r,null,n)}return o},p.escapes=function(e){return e?e.replace(p.rules._escapes,"$1"):e},p.prototype.outputLink=function(e,t){var n=t.href,r=t.title?u(t.title):null;return"!"!==e[0].charAt(0)?this.renderer.link(n,r,this.output(e[1])):this.renderer.image(n,r,u(e[1]))},p.prototype.smartypants=function(e){return this.options.smartypants?e.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…"):e},p.prototype.mangle=function(e){if(!this.options.mangle)return e;for(var t,n="",r=e.length,s=0;s'+(n?e:u(e,!0))+"\n":"
"+(n?e:u(e,!0))+"
"},r.prototype.blockquote=function(e){return"
\n"+e+"
\n"},r.prototype.html=function(e){return e},r.prototype.heading=function(e,t,n,r){return this.options.headerIds?"'+e+"\n":""+e+"\n"},r.prototype.hr=function(){return this.options.xhtml?"
\n":"
\n"},r.prototype.list=function(e,t,n){var r=t?"ol":"ul";return"<"+r+(t&&1!==n?' start="'+n+'"':"")+">\n"+e+"\n"},r.prototype.listitem=function(e){return"
  • "+e+"
  • \n"},r.prototype.checkbox=function(e){return" "},r.prototype.paragraph=function(e){return"

    "+e+"

    \n"},r.prototype.table=function(e,t){return t&&(t=""+t+""),"\n\n"+e+"\n"+t+"
    \n"},r.prototype.tablerow=function(e){return"\n"+e+"\n"},r.prototype.tablecell=function(e,t){var n=t.header?"th":"td";return(t.align?"<"+n+' align="'+t.align+'">':"<"+n+">")+e+"\n"},r.prototype.strong=function(e){return""+e+""},r.prototype.em=function(e){return""+e+""},r.prototype.codespan=function(e){return""+e+""},r.prototype.br=function(){return this.options.xhtml?"
    ":"
    "},r.prototype.del=function(e){return""+e+""},r.prototype.link=function(e,t,n){if(null===(e=l(this.options.sanitize,this.options.baseUrl,e)))return n;var r='"},r.prototype.image=function(e,t,n){if(null===(e=l(this.options.sanitize,this.options.baseUrl,e)))return n;var r=''+n+'":">"},r.prototype.text=function(e){return e},s.prototype.strong=s.prototype.em=s.prototype.codespan=s.prototype.del=s.prototype.text=function(e){return e},s.prototype.link=s.prototype.image=function(e,t,n){return""+n},s.prototype.br=function(){return""},h.parse=function(e,t){return new h(t).parse(e)},h.prototype.parse=function(e){this.inline=new p(e.links,this.options),this.inlineText=new p(e.links,d({},this.options,{renderer:new s})),this.tokens=e.reverse();for(var t="";this.next();)t+=this.tok();return t},h.prototype.next=function(){return this.token=this.tokens.pop(),this.token},h.prototype.peek=function(){return this.tokens[this.tokens.length-1]||0},h.prototype.parseText=function(){for(var e=this.token.text;"text"===this.peek().type;)e+="\n"+this.next().text;return this.inline.output(e)},h.prototype.tok=function(){switch(this.token.type){case"space":return"";case"hr":return this.renderer.hr();case"heading":return this.renderer.heading(this.inline.output(this.token.text),this.token.depth,g(this.inlineText.output(this.token.text)),this.slugger);case"code":return this.renderer.code(this.token.text,this.token.lang,this.token.escaped);case"table":var e,t,n,r,s="",i="";for(n="",e=0;e?@[\]^`{|}~]/g,"").replace(/\s/g,"-");if(this.seen.hasOwnProperty(t))for(var n=t;this.seen[n]++,t=n+"-"+this.seen[n],this.seen.hasOwnProperty(t););return this.seen[t]=0,t},u.escapeTest=/[&<>"']/,u.escapeReplace=/[&<>"']/g,u.replacements={"&":"&","<":"<",">":">",'"':""","'":"'"},u.escapeTestNoEncode=/[<>"']|&(?!#?\w+;)/,u.escapeReplaceNoEncode=/[<>"']|&(?!#?\w+;)/g;var o={},c=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function f(){}function d(e){for(var t,n,r=1;rt)n.splice(t);else for(;n.lengthAn error occurred:

    "+u(e.message+"",!0)+"
    ";throw e}}f.exec=f,m.options=m.setOptions=function(e){return d(m.defaults,e),m},m.getDefaults=function(){return{baseUrl:null,breaks:!1,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:new r,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,tables:!0,xhtml:!1}},m.defaults=m.getDefaults(),m.Parser=h,m.parser=h.parse,m.Renderer=r,m.TextRenderer=s,m.Lexer=a,m.lexer=a.lex,m.InlineLexer=p,m.inlineLexer=p.output,m.Slugger=t,m.parse=m,"undefined"!=typeof module&&"object"==typeof exports?module.exports=m:"function"==typeof define&&define.amd?define(function(){return m}):e.marked=m}(this||("undefined"!=typeof window?window:global)); +var $ = document.querySelector.bind(document); + +function parse(node) { + for (var i = 0; i < node.childNodes.length; i++) { + parse(node.childNodes[i]); + } + + if(!node.innerHTML) { + return; + } + node.innerHTML = marked(node.innerHTML.replace(/
    /gi, '\n'), { breaks: true }); +} + +function main() { + if ($('#markdown')) { + parse($('#markdown')); + } +} + +window.onload = main; From 7a6321ca5fe41e433525bf5759def934b7fa8e5c Mon Sep 17 00:00:00 2001 From: tayyyyyyy Date: Wed, 22 May 2019 01:46:09 -0700 Subject: [PATCH 08/29] Autocomplete input for ghost buttons --- code/__HELPERS/lists.dm | 4 +- code/datums/helper_datums/input.dm | 95 +++++++++++++++++----- code/modules/mob/dead/observer/observer.dm | 40 ++++----- html/browser/autocomplete.js | 61 ++++++++++++++ 4 files changed, 155 insertions(+), 45 deletions(-) create mode 100644 html/browser/autocomplete.js diff --git a/code/__HELPERS/lists.dm b/code/__HELPERS/lists.dm index 6b5807deaef..9e01753d492 100644 --- a/code/__HELPERS/lists.dm +++ b/code/__HELPERS/lists.dm @@ -353,12 +353,12 @@ var/middle = L.len / 2 + 1 // Copy is first,second-1 return mergeLists(sortList(L.Copy(0,middle)), sortList(L.Copy(middle))) //second parameter null = to end of list -//Mergsorge: uses sortList() but uses the var's name specifically. This should probably be using mergeAtom() instead +//Mergsorge: uses sortAssoc() but uses the var's name specifically. This should probably be using mergeAtom() instead /proc/sortNames(var/list/L) var/list/Q = new() for(var/atom/x in L) Q[x.name] = x - return sortList(Q) + return sortAssoc(Q) /proc/mergeLists(var/list/L, var/list/R) var/Li=1 diff --git a/code/datums/helper_datums/input.dm b/code/datums/helper_datums/input.dm index 3bcf9509e37..19205a4ab62 100644 --- a/code/datums/helper_datums/input.dm +++ b/code/datums/helper_datums/input.dm @@ -1,71 +1,90 @@ /proc/input_async(mob/user=usr, prompt, list/choices) - var/datum/async_input/A = new(choices, prompt) - A.show(user) + var/datum/async_input/A = new(choices, prompt, , user) + A.show() return A /proc/input_ranked_async(mob/user=usr, prompt="Order by greatest to least preference", list/choices) - var/datum/async_input/ranked/A = new(choices, prompt) - A.show(user) + var/datum/async_input/ranked/A = new(choices, prompt, "ranked_input", user) + A.show() + return A + +/proc/input_autocomplete_async(mob/user=usr, prompt="Enter text: ", list/choices) + var/datum/async_input/autocomplete/A = new(choices, prompt, "ac_input", user) + A.show() return A /datum/async_input var/datum/browser/popup + // If associative list, key will be used for display, but the final result will be the value var/list/choices + var/datum/callback/onCloseCb var/flash = TRUE var/immediate_submit = FALSE var/prompt var/result = null var/style = "text-align: center;" + var/mob/user var/window_id var/height = 200 var/width = 400 -/datum/async_input/New(list/new_choices, new_prompt="Pick an option:", new_window_id="async_input") +/datum/async_input/New(list/new_choices, new_prompt="Pick an option:", new_window_id="async_input", mob/new_user=usr) choices = new_choices prompt = new_prompt window_id = new_window_id + user = new_user + popup = new(user, window_id, , width, height, src) /datum/async_input/proc/close() if(popup) popup.close() + if(result && choices[result]) + result = choices[result] + if(onCloseCb) + onCloseCb.Invoke(result) return result -/datum/async_input/proc/show(mob/user) - var/dat = create_ui(user) - popup = new(user, window_id, , width, height, src) - popup.set_content(dat) +// Callback function should take the result as the last argument +/datum/async_input/proc/on_close(var/datum/callback/cb) + onCloseCb = cb + +/datum/async_input/proc/show() + popup.set_content(create_ui()) if(flash && result == null) window_flash(user.client) popup.open() -/datum/async_input/proc/create_ui(mob/user) +/datum/async_input/proc/create_ui() var/dat = "
    " - dat += render_prompt(user) - dat += render_choices(user) + dat += render_prompt() + dat += render_choices() dat += "
    " dat += "
    " - dat += button("Submit", "submit=1", , result == null && !immediate_submit) + dat += render_buttons() dat += "
    " return dat -/datum/async_input/proc/render_prompt(mob/user) +/datum/async_input/proc/render_prompt() return "

    [prompt]

    " -/datum/async_input/proc/render_choices(mob/user) +/datum/async_input/proc/render_choices() var/dat = " " for(var/choice in choices) dat += button(choice, "choice=[choice]", choice == result) dat += " " return dat -/datum/async_input/proc/button(label, topic, on=FALSE, disabled=FALSE) +/datum/async_input/proc/render_buttons() + return button("Submit", "submit=1", , result == null && !immediate_submit) + +/datum/async_input/proc/button(label, topic, on=FALSE, disabled=FALSE, id="") var/class = "" if(on) class = "linkOn" if(disabled) class = "linkOff" topic = "" - return "
    [label]" + return "[label]" /datum/async_input/Topic(href, href_list) if(href_list["submit"] || href_list["close"]) @@ -74,14 +93,14 @@ if(href_list["choice"]) result = href_list["choice"] - show(usr) + show() return /datum/async_input/ranked height = 400 immediate_submit = TRUE -/datum/async_input/ranked/render_choices(mob/user) +/datum/async_input/ranked/render_choices() var/dat = "
    " dat += "" for(var/i = 1, i <= choices.len, i++) @@ -103,13 +122,47 @@ if(href_list["upvote"]) var/index = text2num(href_list["upvote"]) choices.Swap(index, index - 1) - show(usr) + show() return if(href_list["downvote"]) var/index = text2num(href_list["downvote"]) choices.Swap(index, index + 1) - show(usr) + show() + return + + ..() + +/datum/async_input/autocomplete + immediate_submit = TRUE + height = 150 + +/datum/async_input/autocomplete/New() + ..() + popup.add_script("autocomplete.js", 'html/browser/autocomplete.js') + +/datum/async_input/autocomplete/render_prompt() + return "" + +/datum/async_input/autocomplete/render_choices() + var/dat = "" + dat += "" + for(var/choice in choices) + dat += "" + return dat + +/datum/async_input/autocomplete/render_buttons() + var/dat = button("Submit", "", , result == null && !immediate_submit, "submit-button") + dat += button("Cancel", "close=1") + return dat + +/datum/async_input/autocomplete/Topic(href, href_list) + if(href_list["submit"]) + // Entering an invalid choice is the same as canceling + if(href_list["submit"] in choices) + result = href_list["submit"] + close() return ..() diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 9be4f92a0b8..fb6d327c8c0 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -397,9 +397,10 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp to_chat(usr, "Not when you're not dead!") return - var/area/A = input("Area to jump to", "BOOYEA") as null|anything in ghostteleportlocs - var/area/thearea = ghostteleportlocs[A] + var/datum/async_input/A = input_autocomplete_async(usr, "Area to jump to: ", ghostteleportlocs) + A.on_close(CALLBACK(src, .proc/teleport)) +/mob/dead/observer/proc/teleport(area/thearea) if(!thearea) return @@ -420,9 +421,8 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp set desc = "Follow and orbit a mob." var/list/mobs = getpois(skip_mindless=1) - var/input = input("Please, select a mob!", "Haunt", null, null) as null|anything in mobs - var/mob/target = mobs[input] - ManualFollow(target) + var/datum/async_input/A = input_autocomplete_async(usr, "Please, select a mob: ", mobs) + A.on_close(CALLBACK(src, .proc/ManualFollow)) // This is the ghost's follow verb with an argument /mob/dead/observer/proc/ManualFollow(var/atom/movable/target) @@ -494,25 +494,21 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp set name = "Jump to Mob" set desc = "Teleport to a mob" - if(isobserver(usr)) //Make sure they're an observer! - var/list/dest = list() //List of possible destinations (mobs) - var/target = null //Chosen target. + if(isobserver(usr)) //Make sure they're an observer! + var/list/dest = getpois(mobs_only=1) //Fill list, prompt user with list + var/datum/async_input/A = input_autocomplete_async(usr, "Enter a mob name: ", dest) + A.on_close(CALLBACK(src, .proc/jump_to_mob)) - dest += getpois(mobs_only=1) //Fill list, prompt user with list - target = input("Please, select a mob!", "Jump to Mob", null, null) as null|anything in dest - - if(!target) //Make sure we actually have a target - return - else - var/mob/M = dest[target] //Destination mob - var/mob/A = src //Source mob - var/turf/T = get_turf(M) //Turf of the destination mob - - if(T && isturf(T)) //Make sure the turf exists, then move the source to that destination. - A.forceMove(T) - else - to_chat(A, "This mob is not located in the game world.") +/mob/dead/observer/proc/jump_to_mob(mob/M) + if(!M) + return + var/mob/A = src //Source mob + var/turf/T = get_turf(M) //Turf of the destination mob + if(T && isturf(T)) //Make sure the turf exists, then move the source to that destination. + A.forceMove(T) + return + to_chat(A, "This mob is not located in the game world.") /* Now a spell. See spells.dm /mob/dead/observer/verb/boo() diff --git a/html/browser/autocomplete.js b/html/browser/autocomplete.js new file mode 100644 index 00000000000..28d3be539c4 --- /dev/null +++ b/html/browser/autocomplete.js @@ -0,0 +1,61 @@ +var $ = document.querySelector.bind(document); +var input; +var submitButton; +var optionsMap = {}; + +function updateTopic() { + if (!input || !submitButton) { + return; + } + + var hrefList = submitButton.getAttribute('href').split(';'); + // Topic must come last in the submit button for this to work + hrefList = hrefList.slice(0, hrefList.length - 1); + hrefList.push(optionsMap[input.value] ? 'submit=' + optionsMap[input.value] : ''); + submitButton.setAttribute('href', hrefList.join(';')); +} + +function clean(name) { + // \improper shows up as 2 characters outside of ascii range + if (name.charCodeAt(0) > 127) { + return name.slice(2); + } + return name; +} + +function setElements() { + input = $('#input'); + submitButton = $('#submit-button'); + var choices = $('#choices'); + + if (!input || !submitButton || !choices) { + return; + } + + + for (var i = 0; i < choices.options.length; i++) { + var name = choices.options[i].value; + var cleaned = clean(name); + optionsMap[cleaned] = name; + choices.options[i].value = cleaned; + } + + input.addEventListener('keyup', function(event) { + if (event.key !== 'Enter') { + return; + } + + if (Object.keys(optionsMap).indexOf(input.value) === -1) { + // Byond doesn't let you to use enter to select + // so we need to prevent unintended submissions + return + } + + submitButton.click(); + event.preventDefault(); + }); + + input.focus(); +} + +window.onload = setElements; From bddc563343f5bea86a18b375f6fdeccca18e8afa Mon Sep 17 00:00:00 2001 From: AzuleUtama <44248086+AzuleUtama@users.noreply.github.com> Date: Sun, 26 May 2019 02:24:44 +0100 Subject: [PATCH 09/29] Makes Cybernetic Bundles Nuke Ops Only Again --- code/datums/uplink_item.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm index b6167338ad3..79c68a2a2d2 100644 --- a/code/datums/uplink_item.dm +++ b/code/datums/uplink_item.dm @@ -1627,7 +1627,8 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "CIB" item = /obj/item/storage/box/cyber_implants/bundle cost = 40 - + gamemodes = list(/datum/game_mode/nuclear) + /datum/uplink_item/bundles_TC/medical name = "Medical Bundle" desc = "The support specialist: Aid your fellow operatives with this medical bundle. Contains a tactical medkit, \ From 8362a5b056ca18d244da62500c6a2fc4ec7a6b6c Mon Sep 17 00:00:00 2001 From: Mark van Alphen Date: Mon, 27 May 2019 20:50:42 +0200 Subject: [PATCH 10/29] Re-add ghost PDA messages --- code/__DEFINES/preferences.dm | 3 ++- code/modules/client/preference/preferences.dm | 4 ++++ code/modules/client/preference/preferences_toggles.dm | 8 ++++++++ code/modules/pda/messenger.dm | 8 ++++++++ 4 files changed, 22 insertions(+), 1 deletion(-) diff --git a/code/__DEFINES/preferences.dm b/code/__DEFINES/preferences.dm index 22b4334e3be..45f1b3e5b3d 100644 --- a/code/__DEFINES/preferences.dm +++ b/code/__DEFINES/preferences.dm @@ -31,10 +31,11 @@ #define CHAT_NO_MENTORTICKETLOGS 524288 #define TYPING_ONCE 1048576 #define AMBIENT_OCCLUSION 2097152 +#define CHAT_GHOSTPDA 4194304 #define TOGGLES_TOTAL 4194303 // If you add or remove a preference toggle above, make sure you update this define with the total value of the toggles combined. -#define TOGGLES_DEFAULT (CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_GHOSTSIGHT|CHAT_PRAYER|CHAT_RADIO|CHAT_LOOC|MEMBER_PUBLIC|DONATOR_PUBLIC|AMBIENT_OCCLUSION) +#define TOGGLES_DEFAULT (CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_GHOSTSIGHT|CHAT_PRAYER|CHAT_RADIO|CHAT_LOOC|MEMBER_PUBLIC|DONATOR_PUBLIC|AMBIENT_OCCLUSION|CHAT_GHOSTPDA) // Admin attack logs filter system, see /proc/add_attack_logs and /proc/msg_admin_attack #define ATKLOG_ALL 0 diff --git a/code/modules/client/preference/preferences.dm b/code/modules/client/preference/preferences.dm index 4b24d267f29..98e688222c7 100644 --- a/code/modules/client/preference/preferences.dm +++ b/code/modules/client/preference/preferences.dm @@ -454,6 +454,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts dat += "Ghost Ears: [(toggles & CHAT_GHOSTEARS) ? "All Speech" : "Nearest Creatures"]
    " dat += "Ghost Radio: [(toggles & CHAT_GHOSTRADIO) ? "All Chatter" : "Nearest Speakers"]
    " dat += "Ghost Sight: [(toggles & CHAT_GHOSTSIGHT) ? "All Emotes" : "Nearest Creatures"]
    " + dat += "Ghost PDA: [(toggles & CHAT_GHOSTPDA) ? "All PDA Messages" : "No PDA Messages"]
    " if(check_rights(R_ADMIN,0)) dat += "OOC Color:     Change
    " if(config.allow_Metadata) @@ -2028,6 +2029,9 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts if("ghost_radio") toggles ^= CHAT_GHOSTRADIO + + if("ghost_pda") + toggles ^= CHAT_GHOSTPDA if("ghost_anonsay") ghost_anonsay = !ghost_anonsay diff --git a/code/modules/client/preference/preferences_toggles.dm b/code/modules/client/preference/preferences_toggles.dm index c4d7599d2de..8096a707916 100644 --- a/code/modules/client/preference/preferences_toggles.dm +++ b/code/modules/client/preference/preferences_toggles.dm @@ -242,3 +242,11 @@ else to_chat(usr, "You have disabled text popup limiting.") +/client/verb/toggle_ghost_pda() + set name = "Show/Hide GhostPDA" + set category = "Preferences" + set desc = ".Toggle seeing PDA messages as an observer." + prefs.toggles ^= CHAT_GHOSTPDA + to_chat(src, "As a ghost, you will now [(prefs.toggles & CHAT_GHOSTPDA) ? "see all PDA messages" : "no longer see PDA messages"].") + prefs.save_preferences(src) + feedback_add_details("admin_verb","TGP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! \ No newline at end of file diff --git a/code/modules/pda/messenger.dm b/code/modules/pda/messenger.dm index 67ccf48df8a..ab97c956d85 100644 --- a/code/modules/pda/messenger.dm +++ b/code/modules/pda/messenger.dm @@ -169,10 +169,18 @@ if(useTC != 2) // Does our recipient have a broadcaster on their level? to_chat(U, "ERROR: Cannot reach recipient.") return + useMS.send_pda_message("[P.owner]","[pda.owner]","[t]") tnote.Add(list(list("sent" = 1, "owner" = "[P.owner]", "job" = "[P.ownjob]", "message" = "[t]", "target" = "\ref[P]"))) PM.tnote.Add(list(list("sent" = 0, "owner" = "[pda.owner]", "job" = "[pda.ownjob]", "message" = "[t]", "target" = "\ref[pda]"))) pda.investigate_log("PDA Message - [U.key] - [pda.owner] -> [P.owner]: [t]", "pda") + + // Show it to ghosts + for(var/mob/M in GLOB.dead_mob_list) + if(isobserver(M) && M.client && (M.client.prefs.toggles & CHAT_GHOSTPDA)) + var/ghost_message = "[pda.owner] ([ghost_follow_link(pda, ghost=M)]) PDA Message --> [P.owner] ([ghost_follow_link(P, ghost=M)]): [t]" + to_chat(M, "[ghost_message]") + if(!conversations.Find("\ref[P]")) conversations.Add("\ref[P]") if(!PM.conversations.Find("\ref[pda]")) From 1f3d40f11a2467eb28d866025fb631383e209fdb Mon Sep 17 00:00:00 2001 From: Mark van Alphen Date: Mon, 27 May 2019 20:56:50 +0200 Subject: [PATCH 11/29] Total toggles update --- code/__DEFINES/preferences.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/__DEFINES/preferences.dm b/code/__DEFINES/preferences.dm index 45f1b3e5b3d..dbd29b1d4d1 100644 --- a/code/__DEFINES/preferences.dm +++ b/code/__DEFINES/preferences.dm @@ -33,7 +33,7 @@ #define AMBIENT_OCCLUSION 2097152 #define CHAT_GHOSTPDA 4194304 -#define TOGGLES_TOTAL 4194303 // If you add or remove a preference toggle above, make sure you update this define with the total value of the toggles combined. +#define TOGGLES_TOTAL 8388607 // If you add or remove a preference toggle above, make sure you update this define with the total value of the toggles combined. #define TOGGLES_DEFAULT (CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_GHOSTSIGHT|CHAT_PRAYER|CHAT_RADIO|CHAT_LOOC|MEMBER_PUBLIC|DONATOR_PUBLIC|AMBIENT_OCCLUSION|CHAT_GHOSTPDA) From 49f36bc43f2f66676b7a290cea683b5e5fbfa1e4 Mon Sep 17 00:00:00 2001 From: Arkatos1 Date: Tue, 28 May 2019 21:33:26 +0200 Subject: [PATCH 12/29] Smartfridge now tries to put contents into user hands, if able --- .../kitchen_machinery/smartfridge.dm | 38 ++++++++++++------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm index 9c11035ea11..01b550b42f1 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm @@ -151,7 +151,7 @@ // Virology Medical Smartfridge // ---------------------------- /obj/machinery/smartfridge/secure/chemistry/virology - name = "smart virus storage" + name = "Smart Virus Storage" desc = "A refrigerated storage unit for volatile sample storage." req_access_txt = "39" spawn_meds = list(/obj/item/reagent_containers/syringe/antiviral = 4, @@ -357,7 +357,8 @@ return data /obj/machinery/smartfridge/Topic(href, href_list) - if(..()) return 0 + if(..()) + return FALSE var/mob/user = usr var/datum/nanoui/ui = SSnanoui.get_open_ui(user, src, "main") @@ -367,7 +368,7 @@ if(href_list["close"]) user.unset_machine() ui.close() - return 0 + return FALSE if(href_list["vend"]) var/index = text2num(href_list["vend"]) @@ -380,17 +381,26 @@ item_quants[K] = max(count - amount, 0) var/i = amount - for(var/obj/O in contents) - if(O.name == K) - O.forceMove(loc) - adjust_item_drop_location(O) - update_icon() - i-- - if(i <= 0) - return 1 - - return 1 - return 0 + if(i == 1 && Adjacent(user) && !issilicon(user)) + for(var/obj/O in contents) + if(O.name == K) + if(!user.put_in_hands(O)) + O.forceMove(loc) + adjust_item_drop_location(O) + update_icon() + break + return TRUE + else + for(var/obj/O in contents) + if(O.name == K) + O.forceMove(loc) + adjust_item_drop_location(O) + update_icon() + i-- + if(i <= 0) + return TRUE + return TRUE + return FALSE /obj/machinery/smartfridge/proc/throw_item() var/obj/throw_item = null From c9fae392a409d7fc4ade7fa736ebee0153f8a106 Mon Sep 17 00:00:00 2001 From: Arkatos1 Date: Tue, 28 May 2019 22:01:49 +0200 Subject: [PATCH 13/29] proper icon updating --- code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm index 01b550b42f1..463ff5fbc17 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm @@ -387,7 +387,7 @@ if(!user.put_in_hands(O)) O.forceMove(loc) adjust_item_drop_location(O) - update_icon() + update_icon() break return TRUE else From 32bff777e8d074d256f1dc34a4165ebcf491f98a Mon Sep 17 00:00:00 2001 From: Couls Date: Tue, 4 Jun 2019 19:38:07 -0400 Subject: [PATCH 14/29] in-hand sprites for lantern --- code/modules/mining/mine_items.dm | 1 + icons/mob/inhands/items_lefthand.dmi | Bin 152240 -> 152502 bytes icons/mob/inhands/items_righthand.dmi | Bin 149529 -> 149768 bytes 3 files changed, 1 insertion(+) diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index 8ba8b13c09c..f10b78dc526 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -82,6 +82,7 @@ /obj/item/flashlight/lantern name = "lantern" icon_state = "lantern" + item_state = "lantern" desc = "A mining lantern." brightness_on = 6 // luminosity when on diff --git a/icons/mob/inhands/items_lefthand.dmi b/icons/mob/inhands/items_lefthand.dmi index ae285a5453a4a7ee18c2bccb73535675a0d7488b..47cb86a2c89c693259910cddc96120e87faa80e1 100644 GIT binary patch delta 5463 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 NnErKWq28@${|6+lWNQEb diff --git a/icons/mob/inhands/items_righthand.dmi b/icons/mob/inhands/items_righthand.dmi index 8b949a8e732f0c31f85dba0e711a136d8363759f..e4630c2764e79adf798a1edda3ae30d0a7bdd389 100644 GIT binary patch delta 2311 zcmYjS2Ut_d77j%5i4W8VE-Fn$S66Hxq3EM1L6LYLxV zAlZn3v;-BT3Am6#*#HVjkP?ItlaP??HTu4N_d9p)xifRl|DTyNbMn$RCOzJmzE>fE zv@b$gXI=Rg#f~?<{cqCnn<=e`RvAAxU#1W+^|rPE=6mBlUO5r3tk8g0R_x!Us2$S~ ztFK5?2jJ=w-y^v+`(00Ek&9C6GV-EnDuvR!lCPw8KIhf1$qw~c?|ZVa7dQUZY#Dae z{z>w=t31Cy>caph>;pfitgK0(#x7s`?QLNV=H?Fo$*z$nd$)j4HLD_!qvYR<^(+If*v5Z zoAiZZL@F}+%a$dRIvpA+jGa!czkpbO9{Itm(_J+LxUKSq-$;!0^_Y8pMk+V4Y9}e7 zmmkX9IiKwx-!qZ^zzRi*S51%ADHWo^Sm`+o2%=cr)QPGigie2F`yVIRq~&T)~lPDCR*HY!Y1q&R*pwoF5v+^;BjFSbGa_bTV*o?p3-q z0|;`qZ*1rccJ%9MH6P@U4EfVZI4Du(^bdO7N*QS~+v?D-X$f$siC^)a;Td$+wpF<-a2BignPq5DZ!+ zC5$tc%)dK~AJhw$E)DXQzUFumq({?>rAuK$9s$}|)%N@5@$(|)gowvcI^(RBGT_h| z{UXYLOlPDgUII{bL_wNz@xk%V-gvb3IlD)odc8h8Yhhx{MMR0U6gI}By;aeWy5=p? z^wkV+iX&LE)iiQx7`bv5@^jQW7051Zmd>f#)_pnTSem5=20iBC2;622()@zksnTH( zMK?uK`$#T_7eso^C&rBJ2+ypWPI_MfFzii@cdoqonx!){o4qlwSacff-p3f)T^O#} zN`Qi?%zs&+0IX2c!@}2shWZ4V4|uO1L?0;IuWD@WzVlI$>2}0{L~kNSjg$)&S#JNo zXpX8YUt6PO=2w|jcZTxl1`*N4+&BZ5vJ7sjdm|>MG+N1x?OWe?%XW+r zV#ESIRrKQfJrci+ctF)qAb!bs6D6UJ)gL7(?w(s_N=vQaf#_%#jF6)NhX?Y?eAFGC zUm}>S+8JupmL1PgFQP0=f6`8Jq~U9jugXpSVOJpQ6Nz9<&WQ^#5k{$8b5bKGZEfBp zn}b=%`$E7q$9b?LCTf6!4(XGm_aV5O!g+jrlCD@0JOs}Z$%>fh`Rjj02bp37Ye+*2 zFZ0E?i?WQ1*269#WFX*e+3eNNd2g@-?VV4dRpO2(SGz{jf%=Re!dqQk__|95JtojH0YIsk z&pnOkkEg{QL4NEAY8l=@>jE~4njcB{yJY*O7mb%A{nc$wkvx5`mD_7N_T?4cJ>Z>m34LN)*boE`j*Yyp`#|f z!)~4;uTJ3}wxGQJ2m})Bbj;B3X<$ibL)Yn8H^fS>0G!&jhj7>W yd#MAvpgX_F$G|4o3aaxzT_w0p9wPW(@>-^lX}FB6>|59MZP?bv2~IeD@!sE3xu;$L delta 2070 zcmb7Fd03L!9)_H9wA`l6>w=XzPC8|2qmmMnOXXx{W#U4R%V?7rWz?- zEqy;Yw#+14UALUG5CDpTLoy=Rlb-Ku!= zP5nE79eT(^IsIq$?8}!&2sKd!w#~Np;l8x(2`s?{E59h%P~ zQX|JAIkI?zk+-X3k+JQWL`%}8?;9@!S3{Bo+prjZRfiksx`JmeY3*F-;|bAYXJvqZd> z2&{k#!ixe5lXtW&aS3in*aKnV{70Y9w&r^0=sWefy@3kOgCmt1TnRPufzrk4w}JJn z^r=v-jmWE;iotc}3Dl4yakR0wNhK8%6)xG_@IXiQtbs4A&e9d>nUlQ!vo|IAk&%DM zbjzR$GY)5LngZMK);4{%WiD%f7>FBszZ7D&w0*?TUEgfj^5tIh#!>L1DA=+s5uz6n zmYMM|h(_``>GQa7zV%zc0_XoZo(q^_37^3m_vF}G#R1cI#~udN=iNHk$#2~fFr>0A z0qQ0`{DwL%h#N&V->Oyd?56s-xx$=CE-Rb=BhmIXZwu0Lvll*U70K;FKhzkPL!LLV zkC$UJ`;=VO7oi)z;zmT1 zvK~Ojb0ieIrk;VW`Pk)9WwBg%8{r|-d3^p|yoSle`eHIi|4~R;g;puKIwlve!Ok#` ziG>I{MvSH?ojGaL_J(>ND1Or8q}{pHQsUL={e`Na@Q~2ZRJ@uZC{O6k&A{q%s?2}X z{nWeGq#A4>rZhRYd3Qz%(ZJisTwkB_lj0=nyHAehrgTUL7V&KfkUf#@spw)aQy(fu z8%i17gWI23ingdg-&=+lyLB}_JWsOGEz)9C{F8e1_*(UDcg&>oy0CBQsuw~3jnkpa z?|*o|RJ3PbJRg9RV<-83_Q8k!*3e4_6*4m)?iolKnrjG#koBUZ(lEsRLxG=;T3ye4 zy{fX5zr?eAdskOJBPJ%j^F~%IjM1xvIzFvTGF_Ee``GHG^cj3v#Kj;7nJ{~6?T)-A zOa*QSLQ5vy!z(ruh>z8#d6)qV9SBogdsqkwDiGu0p42tX+nYdWh7b6@IWaR~0 z{6zIFu73lVkRCs&+X{k4J(m$)wa?FO*g_QR7Dr$0|oLM zUvMTyewvXq1kJog&v`1A9)2bi$3*M^%FTYi7UzWK!;<&0Bu-pLI-{J6d~ z(ZOp)IMdA58~fd3mTem@ek6%5%Q!+&D$hk#i&-A%0IT)VK`&v&li4xKZiSlbVe2>{ zAcX00Q1?4b+n8B{C+drv?|zLypKX&wPneyq>IGi2HegaAcgWMO40@FX>Ewz?>@ZKC zSKa}R*ECiLv3(Yft|d0dj1Y&=Pi~MGaQW9!`6Dw0*odM039NX2eEtP;_B`J1-gD$^ z&GG4&AHMR{3=I3I&~K=VjNJ~fy?gAMnKGldnL7>trIYdNTEW5~<3n=tTU8Ok-(({<*j>J%|t0h)ZZ#%1`lq#Bd6Sk4GcN5}i6 z|EGCLX|2_(gjBzy1Rz2}z|q96e!?JgKrh_4Pg0P${_fu2pyhN=t2djwN&qg! z4-m5Eg5*VHXymz}DnWO7#3+n+huJY9L(5~Ye!Am`7O2pOXm-iBkncX9r&Nq^TvW4NMOO44NwIYwnn#}#D_*K85 z{A>)RRn&=Z{^tP(4Jm9AwMlW|B`Zh+vwgu?%Tec5LZm_h^dt6goZ@4}h`J-1d{P?i zl$_GG2NATQzAQnY!?+1l*I7NwJmvzrs$;mWPQ E05}N*rvLx| From 3b24d495a355cf77e14ad28e4e4ddcd242ba5d5c Mon Sep 17 00:00:00 2001 From: tayyyyyyy Date: Thu, 30 May 2019 00:05:44 -0700 Subject: [PATCH 15/29] Add scrolling messages --- code/modules/admin/verbs/adminpm.dm | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm index caa051f8748..3fa82a26d84 100644 --- a/code/modules/admin/verbs/adminpm.dm +++ b/code/modules/admin/verbs/adminpm.dm @@ -308,16 +308,25 @@ dat += "[label]" var/datum/pm_convo/convo = pms[current_title] + var/datum/browser/popup = new(user, window_id, "Messages", 1000, 600, src) if(convo) + popup.add_head_content(@{""}) convo.read = TRUE dat += "

    [check_rights(R_ADMIN, FALSE, user) ? fancy_title(current_title) : current_title]

    " dat += "

    " - dat += "

    " + dat += "
    " + dat += "
    " for(var/message in convo.messages) dat += "" dat += "
    [message]
    " + dat += "
    " if(convo.typing) dat += "[current_title] is typing" dat += "
    " @@ -327,7 +336,6 @@ if(check_rights(R_ADMIN, FALSE, user)) dat += "Ping" - var/datum/browser/popup = new(user, window_id, "Messages", 1000, 600, src) popup.set_content(dat) popup.open() open = TRUE From 31058952936708400bb38137a0983b968ba0113d Mon Sep 17 00:00:00 2001 From: tayyyyyyy Date: Mon, 10 Jun 2019 00:20:19 -0700 Subject: [PATCH 16/29] Fix players showing as DCed when not --- code/modules/admin/verbs/adminpm.dm | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm index 3fa82a26d84..83531c9b0b9 100644 --- a/code/modules/admin/verbs/adminpm.dm +++ b/code/modules/admin/verbs/adminpm.dm @@ -279,6 +279,9 @@ /datum/pm_tracker/proc/add_message(client/title, client/sender, message, mob/user) if(!pms[title.key]) pms[title.key] = new /datum/pm_convo(title) + else if(!pms[title.key].client) + // If they DCed earlier, we need to add the client reference back + pms[title.key].client = title pms[title.key].add(sender, message) if(!open) @@ -341,11 +344,18 @@ open = TRUE /datum/pm_tracker/proc/fancy_title(title) - var/client/C = pms[title].client + var/client/C = pms[title].client || update_client(title) if(!C) return "[title] (Disconnected)" return "[key_name(C, FALSE)] ([ADMIN_QUE(C.mob,"?")]) ([ADMIN_PP(C.mob,"PP")]) ([ADMIN_VV(C.mob,"VV")]) ([ADMIN_SM(C.mob,"SM")]) ([admin_jump_link(C.mob)]) (CA)" +/datum/pm_tracker/proc/update_client(title) + var/client/C = GLOB.directory[ckey(title)] + if(C) + pms[title].client = C + return C + return null + /datum/pm_tracker/Topic(href, href_list) if(href_list["archive"]) pms[href_list["archive"]].archived = !pms[href_list["archive"]].archived From 2e09dfbb443ea79c45aa4d800bf524336952764f Mon Sep 17 00:00:00 2001 From: Couls Date: Sun, 16 Jun 2019 09:14:57 -0400 Subject: [PATCH 17/29] fix typo in rand --- code/modules/reagents/chemistry/reagents/food.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/reagents/chemistry/reagents/food.dm b/code/modules/reagents/chemistry/reagents/food.dm index a67f681973d..6f0c53730b4 100644 --- a/code/modules/reagents/chemistry/reagents/food.dm +++ b/code/modules/reagents/chemistry/reagents/food.dm @@ -815,7 +815,7 @@ var/update_flags = STATUS_UPDATE_NONE if(prob(5)) if(prob(10)) - update_flags |= M.adjustToxLoss(rand(2.4), FALSE) + update_flags |= M.adjustToxLoss(rand(2,4), FALSE) if(prob(7)) to_chat(M, "A horrible migraine overpowers you.") update_flags |= M.Stun(rand(2,5), FALSE) From ea3ed5e9823d44c16cfa93c2f3bade0e00e21fc9 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Mon, 8 Jul 2019 05:32:52 -0400 Subject: [PATCH 18/29] Automatic changelog generation for PR #11519 [ci skip] --- html/changelogs/AutoChangeLog-pr-11519.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-11519.yml diff --git a/html/changelogs/AutoChangeLog-pr-11519.yml b/html/changelogs/AutoChangeLog-pr-11519.yml new file mode 100644 index 00000000000..332c238483d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11519.yml @@ -0,0 +1,4 @@ +author: "Arkatos" +delete-after: True +changes: + - tweak: "Clicking on a health doll icon will now check you for injuries" From 7f13ff64fe9d7da07d16ffbb7afab3551e7fa0e0 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Mon, 8 Jul 2019 05:33:49 -0400 Subject: [PATCH 19/29] Automatic changelog generation for PR #11525 [ci skip] --- html/changelogs/AutoChangeLog-pr-11525.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-11525.yml diff --git a/html/changelogs/AutoChangeLog-pr-11525.yml b/html/changelogs/AutoChangeLog-pr-11525.yml new file mode 100644 index 00000000000..72c4fb92f5a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11525.yml @@ -0,0 +1,4 @@ +author: "Citinited" +delete-after: True +changes: + - rscadd: "Alt-clicking the RPD now brings up a radial menu with rotate, flip, and delete modes accessible. The main interface remains unchanged." From 7850d549e0679eee9c73153b1855625277327ffc Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Mon, 8 Jul 2019 08:18:39 -0400 Subject: [PATCH 20/29] Automatic changelog generation for PR #11544 [ci skip] --- html/changelogs/AutoChangeLog-pr-11544.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-11544.yml diff --git a/html/changelogs/AutoChangeLog-pr-11544.yml b/html/changelogs/AutoChangeLog-pr-11544.yml new file mode 100644 index 00000000000..860d07a7bfb --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11544.yml @@ -0,0 +1,4 @@ +author: "Arkatos" +delete-after: True +changes: + - rscadd: "Rechargers now show their contents and charge status on close examine" From 0ae1518afd460f899838ee141a454fd0fdd2594b Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Mon, 8 Jul 2019 08:20:48 -0400 Subject: [PATCH 21/29] Automatic changelog generation for PR #11562 [ci skip] --- html/changelogs/AutoChangeLog-pr-11562.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-11562.yml diff --git a/html/changelogs/AutoChangeLog-pr-11562.yml b/html/changelogs/AutoChangeLog-pr-11562.yml new file mode 100644 index 00000000000..807f7b75313 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11562.yml @@ -0,0 +1,4 @@ +author: "Tayyyyyyy" +delete-after: True +changes: + - tweak: "paper supports markdown as well as pencode" From 119967b09a041161669697efbb7e307d98bbc9b6 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Mon, 8 Jul 2019 08:21:25 -0400 Subject: [PATCH 22/29] Automatic changelog generation for PR #11570 [ci skip] --- html/changelogs/AutoChangeLog-pr-11570.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-11570.yml diff --git a/html/changelogs/AutoChangeLog-pr-11570.yml b/html/changelogs/AutoChangeLog-pr-11570.yml new file mode 100644 index 00000000000..4891020e5c9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11570.yml @@ -0,0 +1,4 @@ +author: "Tayyyyyyy" +delete-after: True +changes: + - rscadd: "Autocomplete for ghost buttons" From e7b558e874f3e879588a4c75811c0b260b97f0df Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Mon, 8 Jul 2019 08:21:49 -0400 Subject: [PATCH 23/29] Automatic changelog generation for PR #11593 [ci skip] --- html/changelogs/AutoChangeLog-pr-11593.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-11593.yml diff --git a/html/changelogs/AutoChangeLog-pr-11593.yml b/html/changelogs/AutoChangeLog-pr-11593.yml new file mode 100644 index 00000000000..f8397f1da67 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11593.yml @@ -0,0 +1,4 @@ +author: "AzuleUtama" +delete-after: True +changes: + - bugfix: "The cybernetic implant bundle can no longer be bought by traitors." From 0c19d79a16b9795fbf1dad149c1305ede628d28c Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Mon, 8 Jul 2019 08:22:44 -0400 Subject: [PATCH 24/29] Automatic changelog generation for PR #11608 [ci skip] --- html/changelogs/AutoChangeLog-pr-11608.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-11608.yml diff --git a/html/changelogs/AutoChangeLog-pr-11608.yml b/html/changelogs/AutoChangeLog-pr-11608.yml new file mode 100644 index 00000000000..53ecbc82d31 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11608.yml @@ -0,0 +1,4 @@ +author: "Markolie" +delete-after: True +changes: + - rscadd: "Ghosts can now see all PDA messages when enabled through a preference setting." From 27f14cfc10bc3b54c437c2f7975a72958bb93f1a Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Mon, 8 Jul 2019 08:23:13 -0400 Subject: [PATCH 25/29] Automatic changelog generation for PR #11613 [ci skip] --- html/changelogs/AutoChangeLog-pr-11613.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-11613.yml diff --git a/html/changelogs/AutoChangeLog-pr-11613.yml b/html/changelogs/AutoChangeLog-pr-11613.yml new file mode 100644 index 00000000000..10f302189c2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11613.yml @@ -0,0 +1,4 @@ +author: "Arkatos" +delete-after: True +changes: + - tweak: "Smartfridge will now try to put an item in your hands after vending, if able" From 3ea57b0295b6b08b7153e1ceb3c41a7d2daea9b8 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Mon, 8 Jul 2019 08:23:39 -0400 Subject: [PATCH 26/29] Automatic changelog generation for PR #11619 [ci skip] --- html/changelogs/AutoChangeLog-pr-11619.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-11619.yml diff --git a/html/changelogs/AutoChangeLog-pr-11619.yml b/html/changelogs/AutoChangeLog-pr-11619.yml new file mode 100644 index 00000000000..80fc26a0170 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11619.yml @@ -0,0 +1,5 @@ +author: "Tayyyyyyy" +delete-after: True +changes: + - tweak: "PMs window scrollable" + - bugfix: "Fix a bug where a player who reconnects is still shown as disconnected" From ef1f9ccd02459ed863535afa73bbab31ba860559 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Mon, 8 Jul 2019 08:25:51 -0400 Subject: [PATCH 27/29] Automatic changelog generation for PR #11683 [ci skip] --- html/changelogs/AutoChangeLog-pr-11683.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-11683.yml diff --git a/html/changelogs/AutoChangeLog-pr-11683.yml b/html/changelogs/AutoChangeLog-pr-11683.yml new file mode 100644 index 00000000000..4f07d917fd6 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11683.yml @@ -0,0 +1,4 @@ +author: "Couls" +delete-after: True +changes: + - imageadd: "lantern sprites" From c1d89acdcc9dba55c43596e323e851c366fbd5a7 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Mon, 8 Jul 2019 08:26:40 -0400 Subject: [PATCH 28/29] Automatic changelog generation for PR #11731 [ci skip] --- html/changelogs/AutoChangeLog-pr-11731.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-11731.yml diff --git a/html/changelogs/AutoChangeLog-pr-11731.yml b/html/changelogs/AutoChangeLog-pr-11731.yml new file mode 100644 index 00000000000..3a232a2cd7c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11731.yml @@ -0,0 +1,4 @@ +author: "Couls" +delete-after: True +changes: + - bugfix: "typo in msg" From 4dbbf33ccc19a107159762359024eb9d94a4282c Mon Sep 17 00:00:00 2001 From: Arkatos1 Date: Mon, 8 Jul 2019 15:33:33 +0200 Subject: [PATCH 29/29] Changelog Compile 8th of July --- html/changelog.html | 57 ++++++++++++++++++++++ html/changelogs/.all_changelog.yml | 39 +++++++++++++++ html/changelogs/AutoChangeLog-pr-11449.yml | 7 --- html/changelogs/AutoChangeLog-pr-11519.yml | 4 -- html/changelogs/AutoChangeLog-pr-11525.yml | 4 -- html/changelogs/AutoChangeLog-pr-11544.yml | 4 -- html/changelogs/AutoChangeLog-pr-11562.yml | 4 -- html/changelogs/AutoChangeLog-pr-11570.yml | 4 -- html/changelogs/AutoChangeLog-pr-11593.yml | 4 -- html/changelogs/AutoChangeLog-pr-11608.yml | 4 -- html/changelogs/AutoChangeLog-pr-11613.yml | 4 -- html/changelogs/AutoChangeLog-pr-11619.yml | 5 -- html/changelogs/AutoChangeLog-pr-11639.yml | 4 -- html/changelogs/AutoChangeLog-pr-11663.yml | 4 -- html/changelogs/AutoChangeLog-pr-11683.yml | 4 -- html/changelogs/AutoChangeLog-pr-11706.yml | 4 -- html/changelogs/AutoChangeLog-pr-11731.yml | 4 -- html/changelogs/AutoChangeLog-pr-11770.yml | 5 -- html/changelogs/AutoChangeLog-pr-11771.yml | 4 -- html/changelogs/AutoChangeLog-pr-11786.yml | 4 -- 20 files changed, 96 insertions(+), 77 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-11449.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-11519.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-11525.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-11544.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-11562.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-11570.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-11593.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-11608.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-11613.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-11619.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-11639.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-11663.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-11683.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-11706.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-11731.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-11770.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-11771.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-11786.yml diff --git a/html/changelog.html b/html/changelog.html index d98359137e3..b639984a5a6 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,6 +56,63 @@ -->
    +

    08 July 2019

    +

    Arkatos updated:

    +
      +
    • Clicking on a health doll icon will now check you for injuries
    • +
    • Rechargers now show their contents and charge status on close examine
    • +
    • Smartfridge will now try to put an item in your hands after vending, if able
    • +
    +

    AzuleUtama updated:

    +
      +
    • The cybernetic implant bundle can no longer be bought by traitors.
    • +
    +

    Citinited updated:

    +
      +
    • Alt-clicking the RPD now brings up a radial menu with rotate, flip, and delete modes accessible. The main interface remains unchanged.
    • +
    • Writing in blood can't be done while dead or incapacitated any more
    • +
    • You can't write stuff in blood at a distance any more
    • +
    +

    Couls updated:

    +
      +
    • lantern sprites
    • +
    • typo in msg
    • +
    +

    Improvedname updated:

    +
      +
    • Explorer suits now properly hide tails
    • +
    +

    JKnutson101 updated:

    +
      +
    • Fixed Construction Permits deleting themselves prematurely.
    • +
    +

    Kyep updated:

    +
      +
    • fixed a bug with biogenerator.
    • +
    +

    Markolie updated:

    +
      +
    • Ghosts can now see all PDA messages when enabled through a preference setting.
    • +
    • The Mask of Nar'Sie transformation buttons have been removed, as the mask was removed a long time ago.
    • +
    +

    Shadeykins updated:

    +
      +
    • Changed Quarantine, NT Default, Aggressive, and Corporate AI lawsets. balance: Reduced the ability for NT Default AI's to murder people just because.
    • +
    • Removed several redundancies in Aggressive lawset.
    • +
    • Fixed a few subject-verb disagreements (is -> are).
    • +
    +

    Tayyyyyyy updated:

    +
      +
    • paper supports markdown as well as pencode
    • +
    • Autocomplete for ghost buttons
    • +
    • PMs window scrollable
    • +
    • Fix a bug where a player who reconnects is still shown as disconnected
    • +
    +

    datlo updated:

    +
      +
    • Fix an antag rolling exploit.
    • +
    +

    30 June 2019

    Crazylemon64 updated:

      diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index b9801566492..49e86db023d 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -10415,3 +10415,42 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. 2019-06-30: Crazylemon64: - rscdel: SDQL2 no longer allows a macro argument +2019-07-08: + Arkatos: + - tweak: Clicking on a health doll icon will now check you for injuries + - rscadd: Rechargers now show their contents and charge status on close examine + - tweak: Smartfridge will now try to put an item in your hands after vending, if + able + AzuleUtama: + - bugfix: The cybernetic implant bundle can no longer be bought by traitors. + Citinited: + - rscadd: Alt-clicking the RPD now brings up a radial menu with rotate, flip, and + delete modes accessible. The main interface remains unchanged. + - bugfix: Writing in blood can't be done while dead or incapacitated any more + - bugfix: You can't write stuff in blood at a distance any more + Couls: + - imageadd: lantern sprites + - bugfix: typo in msg + Improvedname: + - bugfix: Explorer suits now properly hide tails + JKnutson101: + - bugfix: Fixed Construction Permits deleting themselves prematurely. + Kyep: + - bugfix: fixed a bug with biogenerator. + Markolie: + - rscadd: Ghosts can now see all PDA messages when enabled through a preference + setting. + - rscdel: The Mask of Nar'Sie transformation buttons have been removed, as the mask + was removed a long time ago. + Shadeykins: + - tweak: 'Changed Quarantine, NT Default, Aggressive, and Corporate AI lawsets. + balance: Reduced the ability for NT Default AI''s to murder people just because.' + - bugfix: Removed several redundancies in Aggressive lawset. + - spellcheck: Fixed a few subject-verb disagreements (is -> are). + Tayyyyyyy: + - tweak: paper supports markdown as well as pencode + - rscadd: Autocomplete for ghost buttons + - tweak: PMs window scrollable + - bugfix: Fix a bug where a player who reconnects is still shown as disconnected + datlo: + - bugfix: Fix an antag rolling exploit. diff --git a/html/changelogs/AutoChangeLog-pr-11449.yml b/html/changelogs/AutoChangeLog-pr-11449.yml deleted file mode 100644 index 3789ca10f13..00000000000 --- a/html/changelogs/AutoChangeLog-pr-11449.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "Shadeykins" -delete-after: True -changes: - - tweak: "Changed Quarantine, NT Default, Aggressive, and Corporate AI lawsets. -balance: Reduced the ability for NT Default AI's to murder people just because." - - bugfix: "Removed several redundancies in Aggressive lawset." - - spellcheck: "Fixed a few subject-verb disagreements (is -> are)." diff --git a/html/changelogs/AutoChangeLog-pr-11519.yml b/html/changelogs/AutoChangeLog-pr-11519.yml deleted file mode 100644 index 332c238483d..00000000000 --- a/html/changelogs/AutoChangeLog-pr-11519.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Arkatos" -delete-after: True -changes: - - tweak: "Clicking on a health doll icon will now check you for injuries" diff --git a/html/changelogs/AutoChangeLog-pr-11525.yml b/html/changelogs/AutoChangeLog-pr-11525.yml deleted file mode 100644 index 72c4fb92f5a..00000000000 --- a/html/changelogs/AutoChangeLog-pr-11525.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Citinited" -delete-after: True -changes: - - rscadd: "Alt-clicking the RPD now brings up a radial menu with rotate, flip, and delete modes accessible. The main interface remains unchanged." diff --git a/html/changelogs/AutoChangeLog-pr-11544.yml b/html/changelogs/AutoChangeLog-pr-11544.yml deleted file mode 100644 index 860d07a7bfb..00000000000 --- a/html/changelogs/AutoChangeLog-pr-11544.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Arkatos" -delete-after: True -changes: - - rscadd: "Rechargers now show their contents and charge status on close examine" diff --git a/html/changelogs/AutoChangeLog-pr-11562.yml b/html/changelogs/AutoChangeLog-pr-11562.yml deleted file mode 100644 index 807f7b75313..00000000000 --- a/html/changelogs/AutoChangeLog-pr-11562.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Tayyyyyyy" -delete-after: True -changes: - - tweak: "paper supports markdown as well as pencode" diff --git a/html/changelogs/AutoChangeLog-pr-11570.yml b/html/changelogs/AutoChangeLog-pr-11570.yml deleted file mode 100644 index 4891020e5c9..00000000000 --- a/html/changelogs/AutoChangeLog-pr-11570.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Tayyyyyyy" -delete-after: True -changes: - - rscadd: "Autocomplete for ghost buttons" diff --git a/html/changelogs/AutoChangeLog-pr-11593.yml b/html/changelogs/AutoChangeLog-pr-11593.yml deleted file mode 100644 index f8397f1da67..00000000000 --- a/html/changelogs/AutoChangeLog-pr-11593.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "AzuleUtama" -delete-after: True -changes: - - bugfix: "The cybernetic implant bundle can no longer be bought by traitors." diff --git a/html/changelogs/AutoChangeLog-pr-11608.yml b/html/changelogs/AutoChangeLog-pr-11608.yml deleted file mode 100644 index 53ecbc82d31..00000000000 --- a/html/changelogs/AutoChangeLog-pr-11608.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Markolie" -delete-after: True -changes: - - rscadd: "Ghosts can now see all PDA messages when enabled through a preference setting." diff --git a/html/changelogs/AutoChangeLog-pr-11613.yml b/html/changelogs/AutoChangeLog-pr-11613.yml deleted file mode 100644 index 10f302189c2..00000000000 --- a/html/changelogs/AutoChangeLog-pr-11613.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Arkatos" -delete-after: True -changes: - - tweak: "Smartfridge will now try to put an item in your hands after vending, if able" diff --git a/html/changelogs/AutoChangeLog-pr-11619.yml b/html/changelogs/AutoChangeLog-pr-11619.yml deleted file mode 100644 index 80fc26a0170..00000000000 --- a/html/changelogs/AutoChangeLog-pr-11619.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Tayyyyyyy" -delete-after: True -changes: - - tweak: "PMs window scrollable" - - bugfix: "Fix a bug where a player who reconnects is still shown as disconnected" diff --git a/html/changelogs/AutoChangeLog-pr-11639.yml b/html/changelogs/AutoChangeLog-pr-11639.yml deleted file mode 100644 index f47431f6876..00000000000 --- a/html/changelogs/AutoChangeLog-pr-11639.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "datlo" -delete-after: True -changes: - - bugfix: "Fix an antag rolling exploit." diff --git a/html/changelogs/AutoChangeLog-pr-11663.yml b/html/changelogs/AutoChangeLog-pr-11663.yml deleted file mode 100644 index c1129811f68..00000000000 --- a/html/changelogs/AutoChangeLog-pr-11663.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Markolie" -delete-after: True -changes: - - rscdel: "The Mask of Nar'Sie transformation buttons have been removed, as the mask was removed a long time ago." diff --git a/html/changelogs/AutoChangeLog-pr-11683.yml b/html/changelogs/AutoChangeLog-pr-11683.yml deleted file mode 100644 index 4f07d917fd6..00000000000 --- a/html/changelogs/AutoChangeLog-pr-11683.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Couls" -delete-after: True -changes: - - imageadd: "lantern sprites" diff --git a/html/changelogs/AutoChangeLog-pr-11706.yml b/html/changelogs/AutoChangeLog-pr-11706.yml deleted file mode 100644 index 349da8c68a5..00000000000 --- a/html/changelogs/AutoChangeLog-pr-11706.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Improvedname" -delete-after: True -changes: - - bugfix: "Explorer suits now properly hide tails" diff --git a/html/changelogs/AutoChangeLog-pr-11731.yml b/html/changelogs/AutoChangeLog-pr-11731.yml deleted file mode 100644 index 3a232a2cd7c..00000000000 --- a/html/changelogs/AutoChangeLog-pr-11731.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Couls" -delete-after: True -changes: - - bugfix: "typo in msg" diff --git a/html/changelogs/AutoChangeLog-pr-11770.yml b/html/changelogs/AutoChangeLog-pr-11770.yml deleted file mode 100644 index 94c44bb97b7..00000000000 --- a/html/changelogs/AutoChangeLog-pr-11770.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Citinited" -delete-after: True -changes: - - bugfix: "Writing in blood can't be done while dead or incapacitated any more" - - bugfix: "You can't write stuff in blood at a distance any more" diff --git a/html/changelogs/AutoChangeLog-pr-11771.yml b/html/changelogs/AutoChangeLog-pr-11771.yml deleted file mode 100644 index edc2a64f5ab..00000000000 --- a/html/changelogs/AutoChangeLog-pr-11771.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "JKnutson101" -delete-after: True -changes: - - bugfix: "Fixed Construction Permits deleting themselves prematurely." diff --git a/html/changelogs/AutoChangeLog-pr-11786.yml b/html/changelogs/AutoChangeLog-pr-11786.yml deleted file mode 100644 index 53546aede12..00000000000 --- a/html/changelogs/AutoChangeLog-pr-11786.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Kyep" -delete-after: True -changes: - - bugfix: "fixed a bug with biogenerator."