From 1d8a030070098a20817c4c15c4444487e3264540 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Mon, 7 Sep 2020 05:36:51 -0700 Subject: [PATCH 01/16] Update projectile.dm --- code/modules/projectiles/projectile.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 99a0bedc4d..4e81c5aeb6 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -460,6 +460,7 @@ return TRUE //Bullets don't drift in space /obj/item/projectile/process(wait) + set waitfor = FALSE if(!loc || !fired || !trajectory) fired = FALSE return PROCESS_KILL From 700c129c2142181fc77d42ea64717898a4a02fa9 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Thu, 10 Sep 2020 11:51:34 -0700 Subject: [PATCH 02/16] Update walls.dm --- code/game/turfs/simulated/walls.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index 9ff4f668a4..402ab36947 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -138,7 +138,7 @@ if(prob(hardness)) playsound(src, 'sound/effects/meteorimpact.ogg', 100, TRUE) user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ), forced = "hulk") - hulk_recoil(arm, user) + //hulk_recoil(arm, user) // citadel edit - no, hulks are already subject to stamina combat dismantle_wall(1) else From f892309903925b0040039c892a359bf4fff0aefd Mon Sep 17 00:00:00 2001 From: DeltaFire Date: Tue, 15 Sep 2020 17:35:58 +0200 Subject: [PATCH 03/16] fixes --- code/game/objects/items/stacks/medical.dm | 4 ++-- code/modules/mob/living/carbon/human/species.dm | 9 +++++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index 7ba2196184..a96b0104f1 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -269,8 +269,8 @@ to_chat(user, "[M] is at full health.") return FALSE user.visible_message("[user] applies \the [src] on [M].", "You apply \the [src] on [M].") - return heal_carbon(M, user, heal_brute, heal_burn) - + M.heal_bodypart_damage(heal_brute) + return TRUE to_chat(user, "You can't heal [M] with \the [src]!") /obj/item/stack/medical/ointment diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 89f5783124..fa9df8dd48 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1379,6 +1379,9 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) var/obj/item/bodypart/affecting = target.get_bodypart(ran_zone(user.zone_selected)) + if(!affecting) //Maybe the bodypart is missing? Or things just went wrong.. + affecting = target.get_bodypart(BODY_ZONE_CHEST) //target chest instead, as failsafe. Or hugbox? You decide. + var/miss_chance = 100//calculate the odds that a punch misses entirely. considers stamina and brute damage of the puncher. punches miss by default to prevent weird cases if(attackchain_flags & ATTACK_IS_PARRY_COUNTERATTACK) miss_chance = 0 @@ -1594,6 +1597,10 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) /datum/species/proc/spec_attacked_by(obj/item/I, mob/living/user, obj/item/bodypart/affecting, intent, mob/living/carbon/human/H, attackchain_flags = NONE, damage_multiplier = 1) var/totitemdamage = H.pre_attacked_by(I, user) * damage_multiplier + + if(!affecting) //Something went wrong. Maybe the limb is missing? + affecting = H.get_bodypart(BODY_ZONE_CHEST) //If the limb is missing, or something went terribly wrong, just hit the chest instead + // Allows you to put in item-specific reactions based on species if(user != H) var/list/block_return = list() @@ -1605,8 +1612,6 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) return 0 var/hit_area - if(!affecting) //Something went wrong. Maybe the limb is missing? - affecting = H.bodyparts[1] hit_area = affecting.name var/def_zone = affecting.body_zone From 95ebeac5b64147f5b541177d5d6178cf686c47c9 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Tue, 15 Sep 2020 17:27:11 -0700 Subject: [PATCH 04/16] fix --- code/controllers/subsystem/persistence.dm | 19 ------------------- code/datums/mutations/_mutations.dm | 2 +- .../items/devices/portable_chem_mixer.dm | 3 +-- code/game/objects/obj_defense.dm | 3 --- .../antagonists/bloodsucker/powers/brawn.dm | 2 +- .../antagonists/bloodsucker/powers/feed.dm | 2 +- code/modules/recycling/disposal/bin.dm | 2 +- 7 files changed, 5 insertions(+), 28 deletions(-) diff --git a/code/controllers/subsystem/persistence.dm b/code/controllers/subsystem/persistence.dm index 5b60747725..e1b6e6f6e2 100644 --- a/code/controllers/subsystem/persistence.dm +++ b/code/controllers/subsystem/persistence.dm @@ -48,25 +48,6 @@ SUBSYSTEM_DEF(persistence) /datum/controller/subsystem/persistence/proc/LoadSatchels() var/placed_satchel = 0 var/path - if(fexists("data/npc_saves/SecretSatchels.sav")) //legacy conversion. Will only ever run once. - var/savefile/secret_satchels = new /savefile("data/npc_saves/SecretSatchels.sav") - for(var/map in secret_satchels) - var/json_file = file("data/npc_saves/SecretSatchels[map].json") - var/list/legacy_secret_satchels = splittext(secret_satchels[map],"#") - var/list/satchels = list() - for(var/i=1,i<=legacy_secret_satchels.len,i++) - var/satchel_string = legacy_secret_satchels[i] - var/list/chosen_satchel = splittext(satchel_string,"|") - if(chosen_satchel.len == 3) - var/list/data = list() - data["x"] = text2num(chosen_satchel[1]) - data["y"] = text2num(chosen_satchel[2]) - data["saved_obj"] = chosen_satchel[3] - satchels += list(data) - var/list/file_data = list() - file_data["data"] = satchels - WRITE_FILE(json_file, json_encode(file_data)) - fdel("data/npc_saves/SecretSatchels.sav") var/json_file = file("data/npc_saves/SecretSatchels[SSmapping.config.map_name].json") var/list/json = list() diff --git a/code/datums/mutations/_mutations.dm b/code/datums/mutations/_mutations.dm index fb5f6ed5f6..3bddfdaa63 100644 --- a/code/datums/mutations/_mutations.dm +++ b/code/datums/mutations/_mutations.dm @@ -11,7 +11,7 @@ var/lowest_value = 256 * 8 var/text_gain_indication = "" var/text_lose_indication = "" - var/list/mutable_appearance/visual_indicators = list() + var/list/visual_indicators = list() var/obj/effect/proc_holder/spell/power var/layer_used = MUTATIONS_LAYER //which mutation layer to use var/list/species_allowed = list() //to restrict mutation to only certain species diff --git a/code/game/objects/items/devices/portable_chem_mixer.dm b/code/game/objects/items/devices/portable_chem_mixer.dm index 25ecef5955..3e1b20cfc2 100644 --- a/code/game/objects/items/devices/portable_chem_mixer.dm +++ b/code/game/objects/items/devices/portable_chem_mixer.dm @@ -113,8 +113,7 @@ if (loc != user) return ..() if(SEND_SIGNAL(src, COMSIG_IS_STORAGE_LOCKED)) - ui_interact(user) - return + INVOKE_ASYNC(src, /datum.proc/ui_interact, user) /obj/item/storage/portable_chem_mixer/attack_self(mob/user) if(loc == user) diff --git a/code/game/objects/obj_defense.dm b/code/game/objects/obj_defense.dm index bcdf509fbe..3de28b38e8 100644 --- a/code/game/objects/obj_defense.dm +++ b/code/game/objects/obj_defense.dm @@ -204,9 +204,6 @@ GLOBAL_DATUM_INIT(acid_overlay, /mutable_appearance, mutable_appearance('icons/e /obj/proc/acid_processing() . = 1 if(!(resistance_flags & ACID_PROOF)) - for(var/armour_value in armor) - if(armour_value != "acid" && armour_value != "fire") - armor = armor.modifyAllRatings(0 - round(sqrt(acid_level)*0.1)) if(prob(33)) playsound(loc, 'sound/items/welder.ogg', 150, 1) take_damage(min(1 + round(sqrt(acid_level)*0.3), 300), BURN, "acid", 0) diff --git a/code/modules/antagonists/bloodsucker/powers/brawn.dm b/code/modules/antagonists/bloodsucker/powers/brawn.dm index cf0393ff3a..6322800cf1 100644 --- a/code/modules/antagonists/bloodsucker/powers/brawn.dm +++ b/code/modules/antagonists/bloodsucker/powers/brawn.dm @@ -107,7 +107,7 @@ if(user_C.handcuffed) var/obj/O = user_C.get_item_by_slot(SLOT_HANDCUFFED) if(istype(O)) - //user_C.visible_message("[user_C] attempts to remove [O]!", \ + //user_C.visible_message("[user_C] attempts to remove [O]!", // "You snap [O] like it's nothing!") user_C.clear_cuffs(O,TRUE) playsound(get_turf(usr), 'sound/effects/grillehit.ogg', 80, 1, -1) diff --git a/code/modules/antagonists/bloodsucker/powers/feed.dm b/code/modules/antagonists/bloodsucker/powers/feed.dm index caca020b32..fa961a7e92 100644 --- a/code/modules/antagonists/bloodsucker/powers/feed.dm +++ b/code/modules/antagonists/bloodsucker/powers/feed.dm @@ -165,7 +165,7 @@ // Broadcast Message if(amSilent) //if (!iscarbon(target)) - // user.visible_message("[user] shifts [target] closer to [user.p_their()] mouth.", \ + // user.visible_message("[user] shifts [target] closer to [user.p_their()] mouth.", // "You secretly slip your fangs into [target]'s flesh.", \ // vision_distance = 2, ignored_mobs=target) // Only people who AREN'T the target will notice this action. //else diff --git a/code/modules/recycling/disposal/bin.dm b/code/modules/recycling/disposal/bin.dm index c8da9ab5e3..b106005a15 100644 --- a/code/modules/recycling/disposal/bin.dm +++ b/code/modules/recycling/disposal/bin.dm @@ -263,7 +263,7 @@ . = ..() if(.) return - for(var/obj/item/I in src_object) + for(var/obj/item/I in src_object.contents()) if(user.active_storage != src_object) if(I.on_found(user)) return From cffc321050c0ec75ee2a1c87155e94e8b008810e Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Tue, 15 Sep 2020 17:27:50 -0700 Subject: [PATCH 05/16] more --- code/modules/antagonists/bloodsucker/powers/brawn.dm | 2 +- code/modules/antagonists/bloodsucker/powers/feed.dm | 2 +- code/modules/paperwork/ticketmachine.dm | 5 ++++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/code/modules/antagonists/bloodsucker/powers/brawn.dm b/code/modules/antagonists/bloodsucker/powers/brawn.dm index 6322800cf1..71cf95a5b2 100644 --- a/code/modules/antagonists/bloodsucker/powers/brawn.dm +++ b/code/modules/antagonists/bloodsucker/powers/brawn.dm @@ -128,7 +128,7 @@ if(user_C.legcuffed) var/obj/O = user_C.get_item_by_slot(SLOT_LEGCUFFED) if(istype(O)) - //user_C.visible_message("[user_C] attempts to remove [O]!", \ + //user_C.visible_message("[user_C] attempts to remove [O]!", // "You snap [O] like it's nothing!") user_C.clear_cuffs(O,TRUE) playsound(get_turf(usr), 'sound/effects/grillehit.ogg', 80, 1, -1) diff --git a/code/modules/antagonists/bloodsucker/powers/feed.dm b/code/modules/antagonists/bloodsucker/powers/feed.dm index fa961a7e92..81ebdbe4e2 100644 --- a/code/modules/antagonists/bloodsucker/powers/feed.dm +++ b/code/modules/antagonists/bloodsucker/powers/feed.dm @@ -166,7 +166,7 @@ if(amSilent) //if (!iscarbon(target)) // user.visible_message("[user] shifts [target] closer to [user.p_their()] mouth.", - // "You secretly slip your fangs into [target]'s flesh.", \ + // "You secretly slip your fangs into [target]'s flesh.", // vision_distance = 2, ignored_mobs=target) // Only people who AREN'T the target will notice this action. //else var/deadmessage = target.stat == DEAD ? "" : " [target.p_they(TRUE)] looks dazed, and will not remember this." diff --git a/code/modules/paperwork/ticketmachine.dm b/code/modules/paperwork/ticketmachine.dm index e46ed64971..b71efd8318 100644 --- a/code/modules/paperwork/ticketmachine.dm +++ b/code/modules/paperwork/ticketmachine.dm @@ -162,6 +162,9 @@ /obj/machinery/ticket_machine/attack_hand(mob/living/carbon/user) . = ..() + INVOKE_ASYNC(src, .proc/attempt_ticket, user) + +/obj/machinery/ticket_machine/proc/attempt_ticket(mob/living/carbon/user) if(!ready) to_chat(user,"You press the button, but nothing happens...") return @@ -195,7 +198,7 @@ /obj/item/ticket_machine_ticket name = "Ticket" - desc = "A ticket which shows your place in the Head of Personnel's line. Made from Nanotrasen patented NanoPaper®. Though solid, its form seems to shimmer slightly. Feels (and burns) just like the real thing." + desc = "A ticket which shows your place in the Head of Personnel's line. Made from Nanotrasen patented NanoPaper�. Though solid, its form seems to shimmer slightly. Feels (and burns) just like the real thing." icon = 'icons/obj/bureaucracy.dmi' icon_state = "ticket" maptext_x = 7 From 17b21d29f36079f77cb58f4f829a06d2e1a9870a Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Wed, 16 Sep 2020 00:07:33 -0700 Subject: [PATCH 06/16] helpers --- code/game/area/Space_Station_13_areas.dm | 3 +- code/game/area/areas.dm | 3 + code/modules/shielding/helpers.dm | 85 ++++++++++++++++++++++++ tgstation.dme | 1 + 4 files changed, 91 insertions(+), 1 deletion(-) create mode 100644 code/modules/shielding/helpers.dm diff --git a/code/game/area/Space_Station_13_areas.dm b/code/game/area/Space_Station_13_areas.dm index cbad2f7ab0..5310b24202 100644 --- a/code/game/area/Space_Station_13_areas.dm +++ b/code/game/area/Space_Station_13_areas.dm @@ -43,6 +43,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station outdoors = TRUE ambientsounds = SPACE blob_allowed = FALSE //Eating up space doesn't count for victory as a blob. + considered_hull_exterior = TRUE /area/space/nearstation icon_state = "space_near" @@ -1592,4 +1593,4 @@ NOTE: there are two lists of areas in the end of this file: centcom and station valid_territory = FALSE outdoors = TRUE ambientsounds = SPACE - blob_allowed = FALSE //While part of the station, what good will it do you? \ No newline at end of file + blob_allowed = FALSE //While part of the station, what good will it do you? diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index 672d5c096f..b9415f3cf8 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -34,6 +34,9 @@ /// If megafauna can be spawned by natural random generation var/megafauna_spawn_allowed = FALSE + /// Considered space for hull shielding + var/considered_hull_exterior = FALSE + var/fire = null var/atmos = TRUE var/atmosalm = FALSE diff --git a/code/modules/shielding/helpers.dm b/code/modules/shielding/helpers.dm new file mode 100644 index 0000000000..51aa3d10f8 --- /dev/null +++ b/code/modules/shielding/helpers.dm @@ -0,0 +1,85 @@ +//////// HELPER FILE FOR SHIELDING ///////// + +// HULL SHIELD GENERATION HELPERS +/** + * Gets hull exterior adjacent tiles of a certain area + * Area method. + * EXPENSIVE. + * If the area itself is already considered exterior, it'll find all tiles inside it that's next to an interior area. + */ +/proc/hull_shielding_get_tiles_around_area(area/instance, check_tick = FALSE) + var/list/cache = list() + var/area/A + if(instance.considered_hull_exterior) + for(var/turf/potential in instance) + for(var/turf/looking in orange(1, potential)) + A = looking.loc + if(!A.considered_hull_exterior) + cache[potential] = TRUE // we're the exterior area, grab the one that's reaching out + if(check_tick) + CHECK_TICK + else + for(var/turf/potential in instance) + for(var/turf/looking in orange(1, potential)) + A = looking.loc + if(A.considered_hull_exterior) + cache[looking] = TRUE // we're not the exterior area, grab the one that's being reached to + if(check_tick) + CHECK_TICK + . = list() + for(var/i in cache) + . += i // strip assoc value + +/** + * Gets hull adjacent exterior tiles of an entire zlevel + * EXPENSIVE. + * Gets the tiles in the exterior area touching to a non-exterior area + */ +/proc/hull_shielding_get_tiles_in_z(zlevel, check_tick = FALSE, recurse = FALSE, list/outlist = list(), list/scanned_zlevels = list()) + . = outlist + if(zlevel in scanned_zlevels) + return + scanned_zlevels |= zlevel + if(recurse) + var/up = SSmapping.level_trait(zlevel, ZTRAIT_UP) + var/down = SSmapping.level_trait(zlevel, ZTRAIT_DOWN) + if(isnum(up) && (up != 0)) + hull_shielding_get_tiles_in_z(up, check_tick, recurse, outlist, scanned_zlevels) + if(isnum(down) && (down != 0)) + hull_shielding_get_tiles_in_z(down, check_tick, recurse, outlist, scanned_zlevels) + // sigh. why. + var/turf/potential + var/area/p_area + var/area/l_area + for(var/x in 1 to world.maxx) + for(var/y in 1 to world.maxy) + if(check_tick) + CHECK_TICK + potential = locate(x, y) + p_area = potential.loc + if(!p_area.considered_hull_exterior) + continue + for(var/turf/looking in orange(1, potential)) + l_area = looking.loc + if(!l_area.considered_hull_exterior) + outlist += potential + +/proc/debug1(area/A) + for(var/turf/T in hull_shielding_get_tiles_around_area(A, FALSE)) + T.maptext = "Found" + T.plane = 50 + T.layer = 50 + spawn(100) + T.maptext = null + T.plane = initial(T.plane) + T.layer = initial(T.layer) + +/proc/debug2(z) + for(var/turf/T in hull_shielding_get_tiles_in_z(z, FALSE, TRUE)) + T.maptext = "Found" + T.plane = 50 + T.layer = 50 + spawn(100) + T.maptext = null + T.plane = initial(T.plane) + T.layer = initial(T.layer) diff --git a/tgstation.dme b/tgstation.dme index c3e51d49cc..13fc4eb42f 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3287,6 +3287,7 @@ #include "code\modules\ruins\spaceruin_code\whiteshipruin_box.dm" #include "code\modules\security_levels\keycard_authentication.dm" #include "code\modules\security_levels\security_levels.dm" +#include "code\modules\shielding\helpers.dm" #include "code\modules\shuttle\arrivals.dm" #include "code\modules\shuttle\assault_pod.dm" #include "code\modules\shuttle\computer.dm" From 49333833a4c036fcc40fff975cfb6d168a2419aa Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Wed, 16 Sep 2020 00:44:57 -0700 Subject: [PATCH 07/16] debugging done --- code/modules/shielding/helpers.dm | 22 +--------------------- 1 file changed, 1 insertion(+), 21 deletions(-) diff --git a/code/modules/shielding/helpers.dm b/code/modules/shielding/helpers.dm index 51aa3d10f8..8995cc3b03 100644 --- a/code/modules/shielding/helpers.dm +++ b/code/modules/shielding/helpers.dm @@ -55,7 +55,7 @@ for(var/y in 1 to world.maxy) if(check_tick) CHECK_TICK - potential = locate(x, y) + potential = locate(x, y, zlevel) p_area = potential.loc if(!p_area.considered_hull_exterior) continue @@ -63,23 +63,3 @@ l_area = looking.loc if(!l_area.considered_hull_exterior) outlist += potential - -/proc/debug1(area/A) - for(var/turf/T in hull_shielding_get_tiles_around_area(A, FALSE)) - T.maptext = "Found" - T.plane = 50 - T.layer = 50 - spawn(100) - T.maptext = null - T.plane = initial(T.plane) - T.layer = initial(T.layer) - -/proc/debug2(z) - for(var/turf/T in hull_shielding_get_tiles_in_z(z, FALSE, TRUE)) - T.maptext = "Found" - T.plane = 50 - T.layer = 50 - spawn(100) - T.maptext = null - T.plane = initial(T.plane) - T.layer = initial(T.layer) From a4763bd8c6749ec070a9704b6334158db550bdfa Mon Sep 17 00:00:00 2001 From: MrJWhit <48370570+MrJWhit@users.noreply.github.com> Date: Wed, 16 Sep 2020 10:56:34 -0400 Subject: [PATCH 08/16] Port'n stuff --- icons/obj/chess.dmi | Bin 3627 -> 1327 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/chess.dmi b/icons/obj/chess.dmi index 09d9c766fd591d16df9a6f30fb54c3d688cf4863..ec9415eab4ef902e1e8bff9c0e7f08fdaa34ba4d 100644 GIT binary patch delta 1319 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 From 872ef07b43cb967bb840258db3ed89348b0105f7 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Thu, 17 Sep 2020 04:36:39 -0700 Subject: [PATCH 09/16] Update brawn.dm --- code/modules/antagonists/bloodsucker/powers/brawn.dm | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/code/modules/antagonists/bloodsucker/powers/brawn.dm b/code/modules/antagonists/bloodsucker/powers/brawn.dm index 71cf95a5b2..5444cccd3f 100644 --- a/code/modules/antagonists/bloodsucker/powers/brawn.dm +++ b/code/modules/antagonists/bloodsucker/powers/brawn.dm @@ -1,7 +1,7 @@ /datum/action/bloodsucker/targeted/brawn - name = "Brawn"//"Cellular Emporium" + name = "Brawn" desc = "Snap restraints with ease, or deal terrible damage with your bare hands." button_icon_state = "power_strength" bloodcost = 10 @@ -107,8 +107,6 @@ if(user_C.handcuffed) var/obj/O = user_C.get_item_by_slot(SLOT_HANDCUFFED) if(istype(O)) - //user_C.visible_message("[user_C] attempts to remove [O]!", - // "You snap [O] like it's nothing!") user_C.clear_cuffs(O,TRUE) playsound(get_turf(usr), 'sound/effects/grillehit.ogg', 80, 1, -1) return TRUE @@ -128,8 +126,6 @@ if(user_C.legcuffed) var/obj/O = user_C.get_item_by_slot(SLOT_LEGCUFFED) if(istype(O)) - //user_C.visible_message("[user_C] attempts to remove [O]!", - // "You snap [O] like it's nothing!") user_C.clear_cuffs(O,TRUE) playsound(get_turf(usr), 'sound/effects/grillehit.ogg', 80, 1, -1) return TRUE From 3629addf0fa8fbf8f13ab4c6c1febb7585dd94be Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Thu, 17 Sep 2020 04:37:10 -0700 Subject: [PATCH 10/16] Update ticketmachine.dm --- code/modules/paperwork/ticketmachine.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/paperwork/ticketmachine.dm b/code/modules/paperwork/ticketmachine.dm index b71efd8318..0e553ced35 100644 --- a/code/modules/paperwork/ticketmachine.dm +++ b/code/modules/paperwork/ticketmachine.dm @@ -198,7 +198,7 @@ /obj/item/ticket_machine_ticket name = "Ticket" - desc = "A ticket which shows your place in the Head of Personnel's line. Made from Nanotrasen patented NanoPaper�. Though solid, its form seems to shimmer slightly. Feels (and burns) just like the real thing." + desc = "A ticket which shows your place in the Head of Personnel's line. Made from Nanotrasen patented NanoPaper®. Though solid, its form seems to shimmer slightly. Feels (and burns) just like the real thing." icon = 'icons/obj/bureaucracy.dmi' icon_state = "ticket" maptext_x = 7 From 59372710bb46488ae24b0b9d5bef93294ca385d2 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Thu, 17 Sep 2020 21:41:05 -0700 Subject: [PATCH 11/16] Update keybindings.dm --- code/__DEFINES/admin/keybindings.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/__DEFINES/admin/keybindings.dm b/code/__DEFINES/admin/keybindings.dm index fcfe7c5e58..e8616fd3ce 100644 --- a/code/__DEFINES/admin/keybindings.dm +++ b/code/__DEFINES/admin/keybindings.dm @@ -1,6 +1,6 @@ // Defines for managed input/keybinding system. /// Max length of a keypress command before it's considered to be a forged packet/bogus command -#define MAX_KEYPRESS_COMMANDLENGTH 32 +#define MAX_KEYPRESS_COMMANDLENGTH 64 /// Maximum keys that can be bound to one button #define MAX_COMMANDS_PER_KEY 5 /// Maximum keys per keybind From b9315c5080d8eb38179d8f0df5cf658da8f68364 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Fri, 18 Sep 2020 04:26:22 -0700 Subject: [PATCH 12/16] Update airlock.dm --- code/datums/wires/airlock.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/datums/wires/airlock.dm b/code/datums/wires/airlock.dm index 179adf46bd..9af78b0090 100644 --- a/code/datums/wires/airlock.dm +++ b/code/datums/wires/airlock.dm @@ -71,7 +71,7 @@ /datum/wires/airlock/on_pulse(wire) set waitfor = FALSE var/obj/machinery/door/airlock/A = holder - if(!A.hasSiliconAccessInArea(usr) && A.isElectrified() && A.shock(usr, 100)) + if(usr && !A.hasSiliconAccessInArea(usr) && A.isElectrified() && A.shock(usr, 100)) return FALSE switch(wire) if(WIRE_POWER1, WIRE_POWER2) // Pulse to loose power. @@ -127,7 +127,7 @@ /datum/wires/airlock/on_cut(wire, mend) var/obj/machinery/door/airlock/A = holder - if(!A.hasSiliconAccessInArea(usr) && A.isElectrified() && A.shock(usr, 100)) + if(usr && !A.hasSiliconAccessInArea(usr) && A.isElectrified() && A.shock(usr, 100)) return FALSE switch(wire) if(WIRE_POWER1, WIRE_POWER2) // Cut to loose power, repair all to gain power. From b4f383df6d20c22ec5b7785cc03b827dd84eccd4 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 19 Sep 2020 07:59:12 -0500 Subject: [PATCH 13/16] Automatic changelog generation for PR #13401 [ci skip] --- html/changelogs/AutoChangeLog-pr-13401.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-13401.yml diff --git a/html/changelogs/AutoChangeLog-pr-13401.yml b/html/changelogs/AutoChangeLog-pr-13401.yml new file mode 100644 index 0000000000..6bfc8e4e21 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13401.yml @@ -0,0 +1,4 @@ +author: "MrJWhit" +delete-after: True +changes: + - rscadd: "New sprites for chess pieces! You can craft them in-game with metal sheets." From 3d2afcae42b1f376a09981948ea451b213148e58 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 19 Sep 2020 08:02:36 -0500 Subject: [PATCH 14/16] Automatic changelog generation for PR #13394 [ci skip] --- html/changelogs/AutoChangeLog-pr-13394.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-13394.yml diff --git a/html/changelogs/AutoChangeLog-pr-13394.yml b/html/changelogs/AutoChangeLog-pr-13394.yml new file mode 100644 index 0000000000..6fe20032da --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13394.yml @@ -0,0 +1,5 @@ +author: "DeltaFire15" +delete-after: True +changes: + - bugfix: "Sutures work on simplemobs again." + - bugfix: "Attacking dismembered bodyparts now targets the chest instead, for weapons aswell as unarmed attacks." From 20e2c030dcda6849a6ce1f4ec7d85cd715075ff2 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 19 Sep 2020 08:04:51 -0500 Subject: [PATCH 15/16] Automatic changelog generation for PR #13399 [ci skip] --- html/changelogs/AutoChangeLog-pr-13399.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-13399.yml diff --git a/html/changelogs/AutoChangeLog-pr-13399.yml b/html/changelogs/AutoChangeLog-pr-13399.yml new file mode 100644 index 0000000000..2da88988a0 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13399.yml @@ -0,0 +1,4 @@ +author: "silicons" +delete-after: True +changes: + - rscdel: "acid no longer degrades armor" From d0701ddcc0b1d55d3fa85193d2e66c9a4b5dba7d Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 19 Sep 2020 08:07:07 -0500 Subject: [PATCH 16/16] Automatic changelog generation for PR #13382 [ci skip] --- html/changelogs/AutoChangeLog-pr-13382.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-13382.yml diff --git a/html/changelogs/AutoChangeLog-pr-13382.yml b/html/changelogs/AutoChangeLog-pr-13382.yml new file mode 100644 index 0000000000..2dfa78c540 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13382.yml @@ -0,0 +1,4 @@ +author: "silicons" +delete-after: True +changes: + - balance: "hulks can smash again (walls no longer break their hands)"