From b367f76c62adfe370eaa0247905dfca0cc0318a6 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Wed, 24 Jun 2020 07:49:45 -0700 Subject: [PATCH 01/64] autobunker --- .../configuration/entries/comms.dm | 21 +++++++++++- code/datums/world_topic.dm | 19 +++++++++++ code/modules/client/verbs/autobunker.dm | 34 +++++++++++++++++++ tgstation.dme | 1 + 4 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 code/modules/client/verbs/autobunker.dm diff --git a/code/controllers/configuration/entries/comms.dm b/code/controllers/configuration/entries/comms.dm index 012c3ec9fe..e56ff3f0d1 100644 --- a/code/controllers/configuration/entries/comms.dm +++ b/code/controllers/configuration/entries/comms.dm @@ -25,4 +25,23 @@ /datum/config_entry/string/medal_hub_address /datum/config_entry/string/medal_hub_password - protection = CONFIG_ENTRY_HIDDEN \ No newline at end of file + protection = CONFIG_ENTRY_HIDDEN + +/datum/config_entry/keyed_list/cross_server_bunker_override + key_mode = KEY_MODE_TEXT + value_mode = VALUE_MODE_TEXT + protection = CONFIG_ENTRY_LOCKED + +/datum/config_entry/keyed_list/cross_server_bunker_override/ValidateAndSet(str_val) + . = ..() + if(.) + var/list/newv = list() + for(var/I in config_entry_value) + newv[replacetext(I, "+", " ")] = config_entry_value[I] + config_entry_value = newv + +/datum/config_entry/keyed_list/cross_server_bunker_override/ValidateListEntry(key_name, key_value) + return key_value != "byond:\\address:port" && ..() + +/datum/config_entry/flag/allow_cross_server_bunker_override + protection = CONFIG_ENTRY_LOCKED diff --git a/code/datums/world_topic.dm b/code/datums/world_topic.dm index 30699d36f4..261e423640 100644 --- a/code/datums/world_topic.dm +++ b/code/datums/world_topic.dm @@ -74,6 +74,25 @@ for(var/client/C in GLOB.clients) C.AnnouncePR(final_composed) +/datum/world_topic/auto_bunker_passthrough + keyword = "auto_bunker_override" + require_comms_key = TRUE + +/datum/world_topic/auto_bunker_passthrough/Run(list/input) + if(!CONFIG_GET(flag/allow_cross_server_bunker_override)) + return "Function Disabled" + var/ckeytobypass = input["ckey"] + var/is_new_ckey = !(ckey(ckeytobypass) in GLOB.bunker_passthrough) + var/sender = input["source"] || "UNKNOWN" + GLOB.bunker_passthrough |= ckey(ckeytobypass) + GLOB.bunker_passthrough[ckey(ckeytobypass)] = world.realtime + SSpersistence.SavePanicBunker() //we can do this every time, it's okay + if(!is_new_ckey) + log_admin("AUTO BUNKER: [ckeytobypass] given access (incoming comms from [sender]).") + message_admins("AUTO BUNKER: [ckeytobypass] given access (incoming comms from [sender]).") + send2irc("Panic Bunker", "AUTO BUNKER: [ckeytobypass] given access (incoming comms from [sender]).") + return "Success" + /datum/world_topic/ahelp_relay keyword = "Ahelp" require_comms_key = TRUE diff --git a/code/modules/client/verbs/autobunker.dm b/code/modules/client/verbs/autobunker.dm new file mode 100644 index 0000000000..7fba73bda8 --- /dev/null +++ b/code/modules/client/verbs/autobunker.dm @@ -0,0 +1,34 @@ +/client/verb/bunker_auto_authorize() + set name = "Auto Authorize Panic Bunker" + set desc = "Authorizes your account in the panic bunker of any servers connected to this function." + set category = "OOC" + + world.send_cross_server_bunker_overrides(key, src) + +/world/proc/send_cross_server_bunker_overrides(key, client/C) + var/comms_key = CONFIG_GET(string/comms_key) + if(!comms_key) + return + var/list/message = list() + message["ckey"] = key + message["source"] = "[CONFIG_GET(string/cross_comms_name)]" + message["key"] = comms_key + message["auto_bunker_override"] = TRUE + var/list/servers = CONFIG_GET(keyed_list/cross_server_bunker_override) + if(!length(servers)) + to_chat(C, "AUTOBUNKER: No servers are configured to receive from this one.") + return + var/logtext = "[key] ([key_name(C)]) has initiated an autobunker authentication with linked servers." + message_admins(logtext) + log_admin(logtext) + for(var/name in servers) + var/returned = world.Export("[servers[name]]?[list2params(message)]") + switch(returned) + if("Bad Key") + to_chat(C, "AUTOBuNKER: [name] failed to authenticate with this server.") + if("Function Disabled") + to_chat(C, "AUTOBUNKER: [name] has autobunker receive disabled.") + if("Success") + to_chat(C, "AUTOBUNKER: Successfully authenticated with [name]. Panic bunker bypass granted to [key]..") + else + to_chat(C, "AUTOBUNKER: Unknown error ([name]).") diff --git a/tgstation.dme b/tgstation.dme index 78cce84a0c..21f167de78 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1792,6 +1792,7 @@ #include "code\modules\client\preferences_toggles.dm" #include "code\modules\client\preferences_vr.dm" #include "code\modules\client\verbs\aooc.dm" +#include "code\modules\client\verbs\autobunker.dm" #include "code\modules\client\verbs\etips.dm" #include "code\modules\client\verbs\looc.dm" #include "code\modules\client\verbs\minimap.dm" From d6a7f91b81fb76988a8e69b48c6d03d25c8bab58 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Mon, 29 Jun 2020 04:45:05 -0700 Subject: [PATCH 02/64] Update autobunker.dm --- code/modules/client/verbs/autobunker.dm | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/code/modules/client/verbs/autobunker.dm b/code/modules/client/verbs/autobunker.dm index 7fba73bda8..8954901eef 100644 --- a/code/modules/client/verbs/autobunker.dm +++ b/code/modules/client/verbs/autobunker.dm @@ -2,6 +2,12 @@ set name = "Auto Authorize Panic Bunker" set desc = "Authorizes your account in the panic bunker of any servers connected to this function." set category = "OOC" + + var/static/lastuse = 0 + if(lastuse + 5 SECONDS > world.time) + to_chat(src, "Function on cooldown, try again in 5 seconds.") + return + lastuse = world.time world.send_cross_server_bunker_overrides(key, src) From d22ab62b507af5a2ee3da04cde4fd18f86b8af75 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Mon, 29 Jun 2020 23:20:52 -0700 Subject: [PATCH 03/64] Update combat.dm --- code/modules/keybindings/keybind/combat.dm | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/code/modules/keybindings/keybind/combat.dm b/code/modules/keybindings/keybind/combat.dm index 457fbb0cb2..8a0e713d8f 100644 --- a/code/modules/keybindings/keybind/combat.dm +++ b/code/modules/keybindings/keybind/combat.dm @@ -25,6 +25,17 @@ var/mob/living/L = user.mob L.keybind_stop_active_blocking() +/datum/keybinding/living/active_block_toggle + name = "active_block_toggle" + full_name = "Block (Toggle)" + category = CATEGORY_COMBAT + description = "Toggles active blocking system using currenet in hand object, or any found object if applicable." + +/datum/keybinding/living/active_block_toggle/down(client/user) + var/mob/living/L = user.mob + L.keybind_toggle_active_blocking() + return TRUE + /datum/keybinding/living/active_parry hotkey_keys = list("Insert", "G") name = "active_parry" From 84f6efe683fc79eeee2b0c3b260fda4a29fdc970 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Mon, 29 Jun 2020 23:22:48 -0700 Subject: [PATCH 04/64] Update shields.dm --- code/game/objects/items/shields.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/shields.dm b/code/game/objects/items/shields.dm index aefa5d3cc8..0b33d93a42 100644 --- a/code/game/objects/items/shields.dm +++ b/code/game/objects/items/shields.dm @@ -26,7 +26,7 @@ /datum/block_parry_data/shield block_damage_multiplier = 0.25 block_stamina_efficiency = 2.5 - block_stamina_cost_per_second = 3.5 + block_stamina_cost_per_second = 2.5 block_slowdown = 0 block_lock_attacking = FALSE block_lock_sprinting = TRUE From 3b3a3ad44ed14102421be87aa3696c3acfb517df Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Mon, 29 Jun 2020 23:37:51 -0700 Subject: [PATCH 05/64] nayser --- code/__DEFINES/dcs/signals.dm | 5 ++++ .../modules/mob/living/living_active_block.dm | 6 +++++ .../modules/mob/living/living_active_parry.dm | 24 +++++++++++++++---- code/modules/surgery/organs/augments_arms.dm | 21 ++++++++++++++-- 4 files changed, 49 insertions(+), 7 deletions(-) diff --git a/code/__DEFINES/dcs/signals.dm b/code/__DEFINES/dcs/signals.dm index c6b008329a..0619c4569b 100644 --- a/code/__DEFINES/dcs/signals.dm +++ b/code/__DEFINES/dcs/signals.dm @@ -222,6 +222,11 @@ #define COMSIG_LIVING_RUN_BLOCK "living_do_run_block" //from base of mob/living/do_run_block(): (real_attack, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone) #define COMSIG_LIVING_GET_BLOCKING_ITEMS "get_blocking_items" //from base of mob/living/get_blocking_items(): (list/items) +#define COMSIG_LIVING_ACTIVE_BLOCK_START "active_block_start" //from base of mob/living/keybind_start_active_blocking(): (obj/item/blocking_item, list/backup_items) + #define COMPONENT_PREVENT_BLOCK_START 1 +#define COMSIG_LIVING_ACTIVE_PARRY_START "active_parry_start" //from base of mob/living/initiate_parry_sequence(): (parrying_method, datum/parrying_item_mob_or_art, list/backup_items) + #define COMPONENT_PREVENT_PARRY_START 1 + //ALL OF THESE DO NOT TAKE INTO ACCOUNT WHETHER AMOUNT IS 0 OR LOWER AND ARE SENT REGARDLESS! #define COMSIG_LIVING_STATUS_STUN "living_stun" //from base of mob/living/Stun() (amount, update, ignore) #define COMSIG_LIVING_STATUS_KNOCKDOWN "living_knockdown" //from base of mob/living/Knockdown() (amount, update, ignore) diff --git a/code/modules/mob/living/living_active_block.dm b/code/modules/mob/living/living_active_block.dm index e1b90716b6..892b105616 100644 --- a/code/modules/mob/living/living_active_block.dm +++ b/code/modules/mob/living/living_active_block.dm @@ -83,6 +83,12 @@ return FALSE // QOL: Instead of trying to just block with held item, grab first available item. var/obj/item/I = find_active_block_item() + var/list/other_items = list() + if(SEND_SIGNAL(src, COMSIG_LIVING_START_ACTIVE_BLOCKING, I, other_items) & COMPONENT_PREVENT_BLOCK_START) + to_chat(src, "Something is preventing you from blocking!") + return + if(!I && length(other_items)) + I = other_items[1] if(!I) to_chat(src, "You can't block with your bare hands!") return diff --git a/code/modules/mob/living/living_active_parry.dm b/code/modules/mob/living/living_active_parry.dm index 50b51d4d95..4994479d16 100644 --- a/code/modules/mob/living/living_active_parry.dm +++ b/code/modules/mob/living/living_active_parry.dm @@ -24,25 +24,39 @@ // yanderedev else if time var/obj/item/using_item = get_active_held_item() var/datum/block_parry_data/data + var/datum/tool var/method if(using_item?.can_active_parry()) data = using_item.block_parry_data method = ITEM_PARRY + tool = using_item else if(mind?.martial_art?.can_martial_parry) data = mind.martial_art.block_parry_data method = MARTIAL_PARRY + tool = mind.martial_art else if(combat_flags & COMBAT_FLAG_UNARMED_PARRY) data = block_parry_data method = UNARMED_PARRY + tool = src else // QOL: If none of the above work, try to find another item. var/obj/item/backup = find_backup_parry_item() - if(!backup) - to_chat(src, "You have nothing to parry with!") - return FALSE - data = backup.block_parry_data - using_item = backup + if(backup) + tool = backup + data = backup.block_parry_data + using_item = backup + method = ITEM_PARRY + var/list/other_items = list() + if(SEND_SIGNAL(src, COMSIG_LIVING_START_ACTIVE_PARRYING, method, tool, other_items) & COMPONENT_PREVENT_PARRY_START) + to_chat(src, "Something is preventing you from parrying!") + return + if(!using_item && !method && length(other_items)) + using_item = other_items[1] method = ITEM_PARRY + data = using_item.block_parry_data + if(!method) + to_chat(src, "You have nothing to parry with!") + return FALSE //QOL: Try to enable combat mode if it isn't already SEND_SIGNAL(src, COMSIG_ENABLE_COMBAT_MODE) if(!SEND_SIGNAL(src, COMSIG_COMBAT_MODE_CHECK, COMBAT_MODE_ACTIVE)) diff --git a/code/modules/surgery/organs/augments_arms.dm b/code/modules/surgery/organs/augments_arms.dm index b7dfa3eb88..840020b149 100644 --- a/code/modules/surgery/organs/augments_arms.dm +++ b/code/modules/surgery/organs/augments_arms.dm @@ -273,12 +273,29 @@ desc = "A deployable riot shield to help deal with civil unrest." contents = newlist(/obj/item/shield/riot/implant) -/obj/item/organ/cyberimp/arm/shield/Extend(obj/item/I) +/obj/item/organ/cyberimp/arm/shield/Extend(obj/item/I, silent = FALSE) if(I.obj_integrity == 0) //that's how the shield recharge works - to_chat(owner, "[I] is still too unstable to extend. Give it some time!") + if(!silent) + to_chat(owner, "[I] is still too unstable to extend. Give it some time!") return FALSE return ..() +/obj/item/organ/cyberimp/arm/shield/Insert(mob/living/carbon/M, special = FALSE, drop_if_replaced = TRUE) + . = ..() + if(.) + RegisterSignal(M, COMSIG_LIVING_START_ACTIVE_BLOCKING, .proc/on_signal) + +/obj/item/organ/cyberimp/arm/shield/Remove(special = FALSE) + UnregisterSignal(owner, COMSIG_LIVING_START_ACTIVE_BLOCKING) + return ..() + +/obj/item/organ/cyberimp/arm/shield/proc/on_signal(datum/source, obj/item/blocking_item, list/other_items = list()) + if(!blocking_item) //if they don't have something + var/obj/item/shield/S = locate() in contents + if(!Extend(S, TRUE)) + return + other_items += S + /obj/item/organ/cyberimp/arm/shield/emag_act() . = ..() if(obj_flags & EMAGGED) From ee34f37ac200bb358e7ed629f82e094f9b15f9af Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Mon, 29 Jun 2020 23:41:53 -0700 Subject: [PATCH 06/64] fix --- code/modules/mob/living/living_active_block.dm | 12 ++++++------ code/modules/mob/living/living_active_parry.dm | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/code/modules/mob/living/living_active_block.dm b/code/modules/mob/living/living_active_block.dm index 892b105616..a4e9612247 100644 --- a/code/modules/mob/living/living_active_block.dm +++ b/code/modules/mob/living/living_active_block.dm @@ -14,14 +14,14 @@ changeNext_move(data.block_end_click_cd_add) return TRUE -/mob/living/proc/start_active_blocking(obj/item/I) +/mob/living/proc/active_blocking_start(obj/item/I) if(combat_flags & (COMBAT_FLAG_ACTIVE_BLOCK_STARTING | COMBAT_FLAG_ACTIVE_BLOCKING)) return FALSE if(!(I in held_items)) return FALSE var/datum/block_parry_data/data = I.get_block_parry_data() if(!istype(data)) //Typecheck because if an admin/coder screws up varediting or something we do not want someone being broken forever, the CRASH logs feedback so we know what happened. - CRASH("start_active_blocking called with an item with no valid data: [I] --> [I.block_parry_data]!") + CRASH("active_blocking_start called with an item with no valid data: [I] --> [I.block_parry_data]!") combat_flags |= COMBAT_FLAG_ACTIVE_BLOCKING active_block_item = I if(data.block_lock_attacking) @@ -70,12 +70,12 @@ if(combat_flags & (COMBAT_FLAG_ACTIVE_BLOCK_STARTING | COMBAT_FLAG_ACTIVE_BLOCKING)) return keybind_stop_active_blocking() else - return keybind_start_active_blocking() + return keybind_active_blocking_start() /** * Proc called by keybindings to start active blocking. */ -/mob/living/proc/keybind_start_active_blocking() +/mob/living/proc/keybind_active_blocking_start() if(combat_flags & (COMBAT_FLAG_ACTIVE_BLOCK_STARTING | COMBAT_FLAG_ACTIVE_BLOCKING)) return FALSE if(!(combat_flags & COMBAT_FLAG_BLOCK_CAPABLE)) @@ -84,7 +84,7 @@ // QOL: Instead of trying to just block with held item, grab first available item. var/obj/item/I = find_active_block_item() var/list/other_items = list() - if(SEND_SIGNAL(src, COMSIG_LIVING_START_ACTIVE_BLOCKING, I, other_items) & COMPONENT_PREVENT_BLOCK_START) + if(SEND_SIGNAL(src, COMSIG_LIVING_active_blocking_start, I, other_items) & COMPONENT_PREVENT_BLOCK_START) to_chat(src, "Something is preventing you from blocking!") return if(!I && length(other_items)) @@ -110,7 +110,7 @@ animate(src, pixel_x = get_standard_pixel_x_offset(), pixel_y = get_standard_pixel_y_offset(), time = 2.5, FALSE, SINE_EASING | EASE_IN, ANIMATION_END_NOW) return combat_flags &= ~(COMBAT_FLAG_ACTIVE_BLOCK_STARTING) - start_active_blocking(I) + active_blocking_start(I) /** * Gets the first item we can that can block, but if that fails, default to active held item.COMSIG_ENABLE_COMBAT_MODE diff --git a/code/modules/mob/living/living_active_parry.dm b/code/modules/mob/living/living_active_parry.dm index 4994479d16..56a914f2b4 100644 --- a/code/modules/mob/living/living_active_parry.dm +++ b/code/modules/mob/living/living_active_parry.dm @@ -47,7 +47,7 @@ using_item = backup method = ITEM_PARRY var/list/other_items = list() - if(SEND_SIGNAL(src, COMSIG_LIVING_START_ACTIVE_PARRYING, method, tool, other_items) & COMPONENT_PREVENT_PARRY_START) + if(SEND_SIGNAL(src, COMSIG_LIVING_active_parrying_start, method, tool, other_items) & COMPONENT_PREVENT_PARRY_START) to_chat(src, "Something is preventing you from parrying!") return if(!using_item && !method && length(other_items)) From 6a91ce84162fde331fa57cf32d470f1b59b38ebc Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Mon, 29 Jun 2020 23:43:53 -0700 Subject: [PATCH 07/64] fix --- code/modules/mob/living/living_active_block.dm | 12 ++++++------ code/modules/mob/living/living_active_parry.dm | 2 +- code/modules/surgery/organs/augments_arms.dm | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/code/modules/mob/living/living_active_block.dm b/code/modules/mob/living/living_active_block.dm index a4e9612247..4bdd1d1c65 100644 --- a/code/modules/mob/living/living_active_block.dm +++ b/code/modules/mob/living/living_active_block.dm @@ -14,14 +14,14 @@ changeNext_move(data.block_end_click_cd_add) return TRUE -/mob/living/proc/active_blocking_start(obj/item/I) +/mob/living/proc/ACTIVE_BLOCKING_START(obj/item/I) if(combat_flags & (COMBAT_FLAG_ACTIVE_BLOCK_STARTING | COMBAT_FLAG_ACTIVE_BLOCKING)) return FALSE if(!(I in held_items)) return FALSE var/datum/block_parry_data/data = I.get_block_parry_data() if(!istype(data)) //Typecheck because if an admin/coder screws up varediting or something we do not want someone being broken forever, the CRASH logs feedback so we know what happened. - CRASH("active_blocking_start called with an item with no valid data: [I] --> [I.block_parry_data]!") + CRASH("ACTIVE_BLOCKING_START called with an item with no valid data: [I] --> [I.block_parry_data]!") combat_flags |= COMBAT_FLAG_ACTIVE_BLOCKING active_block_item = I if(data.block_lock_attacking) @@ -70,12 +70,12 @@ if(combat_flags & (COMBAT_FLAG_ACTIVE_BLOCK_STARTING | COMBAT_FLAG_ACTIVE_BLOCKING)) return keybind_stop_active_blocking() else - return keybind_active_blocking_start() + return keybind_ACTIVE_BLOCKING_START() /** * Proc called by keybindings to start active blocking. */ -/mob/living/proc/keybind_active_blocking_start() +/mob/living/proc/keybind_ACTIVE_BLOCKING_START() if(combat_flags & (COMBAT_FLAG_ACTIVE_BLOCK_STARTING | COMBAT_FLAG_ACTIVE_BLOCKING)) return FALSE if(!(combat_flags & COMBAT_FLAG_BLOCK_CAPABLE)) @@ -84,7 +84,7 @@ // QOL: Instead of trying to just block with held item, grab first available item. var/obj/item/I = find_active_block_item() var/list/other_items = list() - if(SEND_SIGNAL(src, COMSIG_LIVING_active_blocking_start, I, other_items) & COMPONENT_PREVENT_BLOCK_START) + if(SEND_SIGNAL(src, COMSIG_LIVING_ACTIVE_BLOCKING_START, I, other_items) & COMPONENT_PREVENT_BLOCK_START) to_chat(src, "Something is preventing you from blocking!") return if(!I && length(other_items)) @@ -110,7 +110,7 @@ animate(src, pixel_x = get_standard_pixel_x_offset(), pixel_y = get_standard_pixel_y_offset(), time = 2.5, FALSE, SINE_EASING | EASE_IN, ANIMATION_END_NOW) return combat_flags &= ~(COMBAT_FLAG_ACTIVE_BLOCK_STARTING) - active_blocking_start(I) + ACTIVE_BLOCKING_START(I) /** * Gets the first item we can that can block, but if that fails, default to active held item.COMSIG_ENABLE_COMBAT_MODE diff --git a/code/modules/mob/living/living_active_parry.dm b/code/modules/mob/living/living_active_parry.dm index 56a914f2b4..c0957d3a9a 100644 --- a/code/modules/mob/living/living_active_parry.dm +++ b/code/modules/mob/living/living_active_parry.dm @@ -47,7 +47,7 @@ using_item = backup method = ITEM_PARRY var/list/other_items = list() - if(SEND_SIGNAL(src, COMSIG_LIVING_active_parrying_start, method, tool, other_items) & COMPONENT_PREVENT_PARRY_START) + if(SEND_SIGNAL(src, COMSIG_LIVING_ACTIVE_PARRYING_START, method, tool, other_items) & COMPONENT_PREVENT_PARRY_START) to_chat(src, "Something is preventing you from parrying!") return if(!using_item && !method && length(other_items)) diff --git a/code/modules/surgery/organs/augments_arms.dm b/code/modules/surgery/organs/augments_arms.dm index 840020b149..f5729ba5cb 100644 --- a/code/modules/surgery/organs/augments_arms.dm +++ b/code/modules/surgery/organs/augments_arms.dm @@ -283,10 +283,10 @@ /obj/item/organ/cyberimp/arm/shield/Insert(mob/living/carbon/M, special = FALSE, drop_if_replaced = TRUE) . = ..() if(.) - RegisterSignal(M, COMSIG_LIVING_START_ACTIVE_BLOCKING, .proc/on_signal) + RegisterSignal(M, COMSIG_LIVING_ACTIVE_BLOCKING_START, .proc/on_signal) /obj/item/organ/cyberimp/arm/shield/Remove(special = FALSE) - UnregisterSignal(owner, COMSIG_LIVING_START_ACTIVE_BLOCKING) + UnregisterSignal(owner, COMSIG_LIVING_ACTIVE_BLOCKING_START) return ..() /obj/item/organ/cyberimp/arm/shield/proc/on_signal(datum/source, obj/item/blocking_item, list/other_items = list()) From 7a2818d6575f7d2ee8da3262f416bd4a3e83eb8a Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Mon, 29 Jun 2020 23:45:18 -0700 Subject: [PATCH 08/64] fix --- code/modules/mob/living/living_active_block.dm | 12 ++++++------ code/modules/mob/living/living_active_parry.dm | 2 +- code/modules/surgery/organs/augments_arms.dm | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/code/modules/mob/living/living_active_block.dm b/code/modules/mob/living/living_active_block.dm index 4bdd1d1c65..97bbea666f 100644 --- a/code/modules/mob/living/living_active_block.dm +++ b/code/modules/mob/living/living_active_block.dm @@ -14,14 +14,14 @@ changeNext_move(data.block_end_click_cd_add) return TRUE -/mob/living/proc/ACTIVE_BLOCKING_START(obj/item/I) +/mob/living/proc/ACTIVE_BLOCK_START(obj/item/I) if(combat_flags & (COMBAT_FLAG_ACTIVE_BLOCK_STARTING | COMBAT_FLAG_ACTIVE_BLOCKING)) return FALSE if(!(I in held_items)) return FALSE var/datum/block_parry_data/data = I.get_block_parry_data() if(!istype(data)) //Typecheck because if an admin/coder screws up varediting or something we do not want someone being broken forever, the CRASH logs feedback so we know what happened. - CRASH("ACTIVE_BLOCKING_START called with an item with no valid data: [I] --> [I.block_parry_data]!") + CRASH("ACTIVE_BLOCK_START called with an item with no valid data: [I] --> [I.block_parry_data]!") combat_flags |= COMBAT_FLAG_ACTIVE_BLOCKING active_block_item = I if(data.block_lock_attacking) @@ -70,12 +70,12 @@ if(combat_flags & (COMBAT_FLAG_ACTIVE_BLOCK_STARTING | COMBAT_FLAG_ACTIVE_BLOCKING)) return keybind_stop_active_blocking() else - return keybind_ACTIVE_BLOCKING_START() + return keybind_ACTIVE_BLOCK_START() /** * Proc called by keybindings to start active blocking. */ -/mob/living/proc/keybind_ACTIVE_BLOCKING_START() +/mob/living/proc/keybind_ACTIVE_BLOCK_START() if(combat_flags & (COMBAT_FLAG_ACTIVE_BLOCK_STARTING | COMBAT_FLAG_ACTIVE_BLOCKING)) return FALSE if(!(combat_flags & COMBAT_FLAG_BLOCK_CAPABLE)) @@ -84,7 +84,7 @@ // QOL: Instead of trying to just block with held item, grab first available item. var/obj/item/I = find_active_block_item() var/list/other_items = list() - if(SEND_SIGNAL(src, COMSIG_LIVING_ACTIVE_BLOCKING_START, I, other_items) & COMPONENT_PREVENT_BLOCK_START) + if(SEND_SIGNAL(src, COMSIG_LIVING_ACTIVE_BLOCK_START, I, other_items) & COMPONENT_PREVENT_BLOCK_START) to_chat(src, "Something is preventing you from blocking!") return if(!I && length(other_items)) @@ -110,7 +110,7 @@ animate(src, pixel_x = get_standard_pixel_x_offset(), pixel_y = get_standard_pixel_y_offset(), time = 2.5, FALSE, SINE_EASING | EASE_IN, ANIMATION_END_NOW) return combat_flags &= ~(COMBAT_FLAG_ACTIVE_BLOCK_STARTING) - ACTIVE_BLOCKING_START(I) + ACTIVE_BLOCK_START(I) /** * Gets the first item we can that can block, but if that fails, default to active held item.COMSIG_ENABLE_COMBAT_MODE diff --git a/code/modules/mob/living/living_active_parry.dm b/code/modules/mob/living/living_active_parry.dm index c0957d3a9a..0dab70b045 100644 --- a/code/modules/mob/living/living_active_parry.dm +++ b/code/modules/mob/living/living_active_parry.dm @@ -47,7 +47,7 @@ using_item = backup method = ITEM_PARRY var/list/other_items = list() - if(SEND_SIGNAL(src, COMSIG_LIVING_ACTIVE_PARRYING_START, method, tool, other_items) & COMPONENT_PREVENT_PARRY_START) + if(SEND_SIGNAL(src, COMSIG_LIVING_ACTIVE_PARRY_START, method, tool, other_items) & COMPONENT_PREVENT_PARRY_START) to_chat(src, "Something is preventing you from parrying!") return if(!using_item && !method && length(other_items)) diff --git a/code/modules/surgery/organs/augments_arms.dm b/code/modules/surgery/organs/augments_arms.dm index f5729ba5cb..ca1a125929 100644 --- a/code/modules/surgery/organs/augments_arms.dm +++ b/code/modules/surgery/organs/augments_arms.dm @@ -283,10 +283,10 @@ /obj/item/organ/cyberimp/arm/shield/Insert(mob/living/carbon/M, special = FALSE, drop_if_replaced = TRUE) . = ..() if(.) - RegisterSignal(M, COMSIG_LIVING_ACTIVE_BLOCKING_START, .proc/on_signal) + RegisterSignal(M, COMSIG_LIVING_ACTIVE_BLOCK_START, .proc/on_signal) /obj/item/organ/cyberimp/arm/shield/Remove(special = FALSE) - UnregisterSignal(owner, COMSIG_LIVING_ACTIVE_BLOCKING_START) + UnregisterSignal(owner, COMSIG_LIVING_ACTIVE_BLOCK_START) return ..() /obj/item/organ/cyberimp/arm/shield/proc/on_signal(datum/source, obj/item/blocking_item, list/other_items = list()) From 97564316124148e0f42418df7709f72124955c50 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Mon, 29 Jun 2020 23:52:18 -0700 Subject: [PATCH 09/64] Spelling --- code/modules/mob/living/living_active_block.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/living_active_block.dm b/code/modules/mob/living/living_active_block.dm index 97bbea666f..95b1fad320 100644 --- a/code/modules/mob/living/living_active_block.dm +++ b/code/modules/mob/living/living_active_block.dm @@ -70,12 +70,12 @@ if(combat_flags & (COMBAT_FLAG_ACTIVE_BLOCK_STARTING | COMBAT_FLAG_ACTIVE_BLOCKING)) return keybind_stop_active_blocking() else - return keybind_ACTIVE_BLOCK_START() + return keybind_start_active_blocking() /** * Proc called by keybindings to start active blocking. */ -/mob/living/proc/keybind_ACTIVE_BLOCK_START() +/mob/living/proc/keybind_start_active_blocking() if(combat_flags & (COMBAT_FLAG_ACTIVE_BLOCK_STARTING | COMBAT_FLAG_ACTIVE_BLOCKING)) return FALSE if(!(combat_flags & COMBAT_FLAG_BLOCK_CAPABLE)) From 203949673970673a2fb3688b743832401567d08a Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Tue, 30 Jun 2020 03:05:15 -0700 Subject: [PATCH 10/64] groan --- code/game/objects/items/shields.dm | 2 +- code/modules/mob/living/living_active_block.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/objects/items/shields.dm b/code/game/objects/items/shields.dm index aefa5d3cc8..21a26f7cd8 100644 --- a/code/game/objects/items/shields.dm +++ b/code/game/objects/items/shields.dm @@ -386,7 +386,7 @@ obj/item/shield/riot/bullet_proof max_integrity = 100 obj_integrity = 100 can_shatter = FALSE - item_flags = SLOWS_WHILE_IN_HAND + item_flags = SLOWS_WHILE_IN_HAND | ITEM_CAN_BLOCK var/recharge_timerid var/recharge_delay = 15 SECONDS diff --git a/code/modules/mob/living/living_active_block.dm b/code/modules/mob/living/living_active_block.dm index 95b1fad320..fc66908b7f 100644 --- a/code/modules/mob/living/living_active_block.dm +++ b/code/modules/mob/living/living_active_block.dm @@ -87,7 +87,7 @@ if(SEND_SIGNAL(src, COMSIG_LIVING_ACTIVE_BLOCK_START, I, other_items) & COMPONENT_PREVENT_BLOCK_START) to_chat(src, "Something is preventing you from blocking!") return - if(!I && length(other_items)) + if(!I?.can_active_block() && length(other_items)) I = other_items[1] if(!I) to_chat(src, "You can't block with your bare hands!") From f03343b5167a7080f0e5ce7e751a901fdc0bf552 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Tue, 30 Jun 2020 05:19:50 -0700 Subject: [PATCH 11/64] fix --- code/modules/mob/living/living_active_block.dm | 11 ++++++----- code/modules/surgery/organs/augments_arms.dm | 3 ++- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/code/modules/mob/living/living_active_block.dm b/code/modules/mob/living/living_active_block.dm index fc66908b7f..4211b2cfd9 100644 --- a/code/modules/mob/living/living_active_block.dm +++ b/code/modules/mob/living/living_active_block.dm @@ -87,11 +87,11 @@ if(SEND_SIGNAL(src, COMSIG_LIVING_ACTIVE_BLOCK_START, I, other_items) & COMPONENT_PREVENT_BLOCK_START) to_chat(src, "Something is preventing you from blocking!") return - if(!I?.can_active_block() && length(other_items)) - I = other_items[1] if(!I) - to_chat(src, "You can't block with your bare hands!") - return + if(!length(other_items)) + to_chat(src, "You can't block with your bare hands!") + return + I = other_items[1] if(!I.can_active_block()) to_chat(src, "[I] is either not capable of being used to actively block, or is not currently in a state that can! (Try wielding it if it's twohanded, for example.)") return @@ -121,7 +121,8 @@ for(var/obj/item/I in held_items - held) if(I.can_active_block()) return I - return held + else + return held /** * Proc called by keybindings to stop active blocking. diff --git a/code/modules/surgery/organs/augments_arms.dm b/code/modules/surgery/organs/augments_arms.dm index ca1a125929..b42770723b 100644 --- a/code/modules/surgery/organs/augments_arms.dm +++ b/code/modules/surgery/organs/augments_arms.dm @@ -132,6 +132,7 @@ "You extend [holder] from your [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm.", "You hear a short mechanical noise.") playsound(get_turf(owner), 'sound/mecha/mechmove03.ogg', 50, 1) + return TRUE /obj/item/organ/cyberimp/arm/ui_action_click() if(crit_fail || (organ_flags & ORGAN_FAILING) || (!holder && !contents.len)) @@ -289,7 +290,7 @@ UnregisterSignal(owner, COMSIG_LIVING_ACTIVE_BLOCK_START) return ..() -/obj/item/organ/cyberimp/arm/shield/proc/on_signal(datum/source, obj/item/blocking_item, list/other_items = list()) +/obj/item/organ/cyberimp/arm/shield/proc/on_signal(datum/source, obj/item/blocking_item, list/other_items) if(!blocking_item) //if they don't have something var/obj/item/shield/S = locate() in contents if(!Extend(S, TRUE)) From 4865831b6e357e3c937cf4d2d21a149e42273159 Mon Sep 17 00:00:00 2001 From: timothyteakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Wed, 1 Jul 2020 03:28:37 +0100 Subject: [PATCH 12/64] alright this is a bad meme --- code/modules/reagents/chemistry/reagents/food_reagents.dm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm index 52fd89e37c..88d9004bbb 100644 --- a/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -132,8 +132,8 @@ "You're covered in boiling oil!") M.emote("scream") playsound(M, 'sound/machines/fryer/deep_fryer_emerge.ogg', 25, TRUE) - var/oil_damage = (holder.chem_temp / fry_temperature) * 0.33 //Damage taken per unit - M.adjustFireLoss(min(35, oil_damage * reac_volume)) //Damage caps at 35 + var/oil_damage = max((holder.chem_temp / fry_temperature) * 0.33,1) //Damage taken per unit + M.adjustFireLoss(oil_damage * max(reac_volume,10)) //Damage caps at 10 else ..() return TRUE @@ -866,4 +866,3 @@ taste_mult = 2 taste_description = "fizzy sweetness" value = REAGENT_VALUE_COMMON - \ No newline at end of file From d1f92da74a7a0310ccd335190957c609968457ea Mon Sep 17 00:00:00 2001 From: timothyteakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Wed, 1 Jul 2020 03:29:22 +0100 Subject: [PATCH 13/64] 20 is fine if we edit volume --- code/modules/reagents/chemistry/reagents/food_reagents.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm index 88d9004bbb..6929a374b8 100644 --- a/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -133,7 +133,7 @@ M.emote("scream") playsound(M, 'sound/machines/fryer/deep_fryer_emerge.ogg', 25, TRUE) var/oil_damage = max((holder.chem_temp / fry_temperature) * 0.33,1) //Damage taken per unit - M.adjustFireLoss(oil_damage * max(reac_volume,10)) //Damage caps at 10 + M.adjustFireLoss(oil_damage * max(reac_volume,20)) //Damage caps at 20 else ..() return TRUE From 0f0e0298e5838ccb47440e178de185f19790b39a Mon Sep 17 00:00:00 2001 From: timothyteakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Wed, 1 Jul 2020 03:34:17 +0100 Subject: [PATCH 14/64] newline at end of file --- code/modules/reagents/chemistry/reagents/food_reagents.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm index 6929a374b8..f0900796c6 100644 --- a/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -866,3 +866,4 @@ taste_mult = 2 taste_description = "fizzy sweetness" value = REAGENT_VALUE_COMMON + From 35ee3e6aeb93a87701c61c5f8787b72a7bdd95cf Mon Sep 17 00:00:00 2001 From: YakumoChen Date: Wed, 1 Jul 2020 08:43:34 +0000 Subject: [PATCH 15/64] No pocket guns, unstupids part names --- .../datums/components/crafting/guncrafting.dm | 38 ++++--------------- 1 file changed, 7 insertions(+), 31 deletions(-) diff --git a/code/datums/components/crafting/guncrafting.dm b/code/datums/components/crafting/guncrafting.dm index 4626ef69d1..6f95aaa536 100644 --- a/code/datums/components/crafting/guncrafting.dm +++ b/code/datums/components/crafting/guncrafting.dm @@ -1,4 +1,4 @@ -k// PARTS // +// PARTS // /obj/item/weaponcrafting icon = 'icons/obj/improvised.dmi' @@ -14,12 +14,12 @@ k// PARTS // icon_state = "durastring" //////////////////////////////// -// KAT IMPROVISED WEAPON PARTS// +// IMPROVISED WEAPON PARTS// //////////////////////////////// /obj/item/weaponcrafting/improvised_parts - name = "Eerie bunch of coloured dots." - desc = "You feel the urge to report to Central that the parent type of guncrafting, which should never appear in this reality, has appeared. Whatever that means." + name = "Debug Improvised Gun Part" //Just make it a normal fucking debug item not debug hypno sissy dot shit + desc = "A badly coded gun part. You should report coders if you see this." icon = 'icons/obj/guns/gun_parts.dmi' icon_state = "palette" @@ -35,33 +35,21 @@ k// PARTS // desc = "A twenty bore shotgun barrel." icon_state = "barrel_shotgun" -/obj/item/weaponcrafting/improvised_parts/barrel_pistol - name = "pistol barrel" - desc = "A pipe with a small diameter and some holes finely cut into it. It fits .32 ACP bullets. Probably." - icon_state = "barrel_pistol" - w_class = WEIGHT_CLASS_SMALL - // RECEIVERS /obj/item/weaponcrafting/improvised_parts/rifle_receiver - name = "bolt action receiver" + name = "rifle receiver" desc = "A crudely constructed receiver to create an improvised bolt-action breechloaded rifle. It's generic enough to modify to create other rifles, potentially." icon_state = "receiver_rifle" w_class = WEIGHT_CLASS_SMALL -/obj/item/weaponcrafting/improvised_parts/pistol_receiver - name = "pistol receiver" - desc = "A receiver to connect house and connects all the parts to make an improvised pistol." - icon_state = "receiver_pistol" - w_class = WEIGHT_CLASS_SMALL - /obj/item/weaponcrafting/improvised_parts/laser_receiver - name = "energy emitter assembly" + name = "laser reciever" desc = "A mixture of components haphazardly wired together to form an energy emitter." icon_state = "laser_assembly" /obj/item/weaponcrafting/improvised_parts/shotgun_receiver - name = "break-action assembly" + name = "shotgun reciever" desc = "An improvised receiver to create a break-action breechloaded shotgun. Parts of this are still useful if you want to make another type of shotgun, however." icon_state = "receiver_shotgun" w_class = WEIGHT_CLASS_SMALL @@ -78,15 +66,3 @@ k// PARTS // name = "wooden firearm body" desc = "A crudely fashioned wooden body to help keep higher calibre improvised weapons from blowing themselves apart." icon_state = "wooden_body" - -/obj/item/weaponcrafting/improvised_parts/wooden_grip - name = "wooden pistol grip" - desc = "A nice wooden grip hollowed out for pistol magazines." - icon_state = "wooden_pistolgrip" - w_class = WEIGHT_CLASS_SMALL - -/obj/item/weaponcrafting/improvised_parts/makeshift_lens - name = "makeshift focusing lens" - desc = "A properly made lens made with actual glassworking tools would perform much better, but this will have to do." - icon_state = "focusing_lens" - w_class = WEIGHT_CLASS_TINY From 6f5066418957b151f766661fd3da696f82797f7a Mon Sep 17 00:00:00 2001 From: YakumoChen Date: Wed, 1 Jul 2020 08:48:10 +0000 Subject: [PATCH 16/64] removes improv handguns --- .../recipes/recipes_weapon_and_ammo.dm | 96 ------------------- 1 file changed, 96 deletions(-) diff --git a/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm b/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm index 177f6fb2b6..a38d78a36b 100644 --- a/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm +++ b/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm @@ -276,49 +276,6 @@ category = CAT_WEAPONRY subcategory = CAT_WEAPON -/datum/crafting_recipe/ipistol - name = "Improvised Pistol (.32)" - result = /obj/item/gun/ballistic/automatic/pistol/improvised/nomag - reqs = list(/obj/item/weaponcrafting/improvised_parts/barrel_pistol = 1, - /obj/item/weaponcrafting/improvised_parts/pistol_receiver = 1, - /obj/item/weaponcrafting/improvised_parts/trigger_assembly = 1, - /obj/item/weaponcrafting/improvised_parts/wooden_grip = 1, - /obj/item/stack/sheet/plastic = 15, - /obj/item/stack/sheet/plasteel = 1) - tools = list(TOOL_SCREWDRIVER, TOOL_WELDER, TOOL_WIRECUTTER) - time = 100 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/ilaser - name = "Improvised Energy Gun" - result = /obj/item/gun/energy/e_gun/old/improvised - reqs = list(/obj/item/weaponcrafting/improvised_parts/laser_receiver = 1, - /obj/item/weaponcrafting/improvised_parts/trigger_assembly = 1, - /obj/item/weaponcrafting/improvised_parts/makeshift_lens = 1, - /obj/item/stock_parts/cell = 1, - /obj/item/stack/sheet/metal = 10, - /obj/item/stack/sheet/plasteel = 5, - /obj/item/stack/cable_coil = 10) - tools = list(TOOL_SCREWDRIVER) - time = 100 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/ilaser/upgraded - name = "Improvised Energy Gun Upgrade" - result = /obj/item/gun/energy/e_gun/old/improvised/upgraded - reqs = list(/obj/item/gun/energy/e_gun/old/improvised = 1, - /obj/item/glasswork/glass_base/lens = 1, - /obj/item/stock_parts/capacitor/quadratic = 2, - /obj/item/stock_parts/micro_laser/ultra = 1, - /obj/item/stock_parts/cell/bluespace = 1, - /obj/item/stack/cable_coil = 5) - tools = list(TOOL_SCREWDRIVER, TOOL_MULTITOOL) - time = 100 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - ////////////////// ///AMMO CRAFTING// ////////////////// @@ -442,17 +399,6 @@ category = CAT_WEAPONRY subcategory = CAT_AMMO -/datum/crafting_recipe/m32acp - name = ".32ACP Empty Magazine" - result = /obj/item/ammo_box/magazine/m32acp/empty - reqs = list(/obj/item/stack/sheet/metal = 3, - /obj/item/stack/sheet/plasteel = 1, - /obj/item/stack/packageWrap = 1) - tools = list(TOOL_WELDER,TOOL_SCREWDRIVER) - time = 5 - category = CAT_WEAPONRY - subcategory = CAT_AMMO - //////////////////// // PARTS CRAFTING // //////////////////// @@ -477,16 +423,6 @@ category = CAT_WEAPONRY subcategory = CAT_PARTS -/datum/crafting_recipe/pistol_barrel - name = "Improvised Pistol Barrel" - result = /obj/item/weaponcrafting/improvised_parts/barrel_pistol - reqs = list(/obj/item/pipe = 1, - /obj/item/stack/sheet/plasteel = 1) - tools = list(TOOL_WELDER,TOOL_SAW) - time = 150 - category = CAT_WEAPONRY - subcategory = CAT_PARTS - // RECEIVERS /datum/crafting_recipe/rifle_receiver @@ -509,28 +445,6 @@ category = CAT_WEAPONRY subcategory = CAT_PARTS -/datum/crafting_recipe/pistol_receiver - name = "Improvised Pistol Receiver" - result = /obj/item/weaponcrafting/improvised_parts/pistol_receiver - reqs = list(/obj/item/stack/sheet/metal = 5, - /obj/item/stack/sheet/plasteel = 1) - tools = list(TOOL_SCREWDRIVER, TOOL_WELDER, TOOL_SAW) - time = 50 - category = CAT_WEAPONRY - subcategory = CAT_PARTS - -/datum/crafting_recipe/laser_receiver - name = "Energy Weapon Assembly" - result = /obj/item/weaponcrafting/improvised_parts/laser_receiver - reqs = list(/obj/item/stack/sheet/metal = 10, - /obj/item/stock_parts/capacitor = 2, - /obj/item/stock_parts/micro_laser = 1, - /obj/item/assembly/prox_sensor = 1) - tools = list(TOOL_SCREWDRIVER, TOOL_MULTITOOL, TOOL_WELDER) // Prox sensor and multitool for the circuit board, welder for extremely ghetto soldering. - time = 150 - category = CAT_WEAPONRY - subcategory = CAT_PARTS - // MISC /datum/crafting_recipe/trigger_assembly @@ -542,13 +456,3 @@ time = 150 category = CAT_WEAPONRY subcategory = CAT_PARTS - -/datum/crafting_recipe/makeshift_lens - name = "Makeshift Lens" - result = /obj/item/weaponcrafting/improvised_parts/makeshift_lens - reqs = list(/obj/item/stack/sheet/metal = 1, - /obj/item/stack/sheet/glass = 2) - tools = list(TOOL_WELDER) // Glassmaking lets you make non-makeshift lenses. - time = 50 - category = CAT_WEAPONRY - subcategory = CAT_PARTS From 4c460278b4accb1d7a3a1444cc687e688a085447 Mon Sep 17 00:00:00 2001 From: YakumoChen Date: Wed, 1 Jul 2020 08:52:09 +0000 Subject: [PATCH 17/64] removes improv handgun spawns --- code/game/objects/effects/spawners/lootdrop.dm | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/code/game/objects/effects/spawners/lootdrop.dm b/code/game/objects/effects/spawners/lootdrop.dm index 2c7f701a6e..86bcc107e9 100644 --- a/code/game/objects/effects/spawners/lootdrop.dm +++ b/code/game/objects/effects/spawners/lootdrop.dm @@ -668,13 +668,9 @@ loot = list("" = 50, /obj/item/weaponcrafting/improvised_parts/barrel_rifle = 10, /obj/item/weaponcrafting/improvised_parts/barrel_shotgun = 5, - /obj/item/weaponcrafting/improvised_parts/barrel_pistol = 5, /obj/item/weaponcrafting/improvised_parts/rifle_receiver = 10, /obj/item/weaponcrafting/improvised_parts/shotgun_receiver = 3, - /obj/item/weaponcrafting/improvised_parts/pistol_receiver = 3, - /obj/item/weaponcrafting/improvised_parts/laser_receiver = 1, /obj/item/weaponcrafting/improvised_parts/trigger_assembly = 10, - /obj/item/weaponcrafting/improvised_parts/makeshift_lens = 3, ) /obj/effect/spawner/lootdrop/weapon_parts @@ -683,11 +679,8 @@ spawn_on_turf = FALSE loot = list("" = 75, /obj/item/weaponcrafting/improvised_parts/barrel_rifle = 5, - /obj/item/weaponcrafting/improvised_parts/barrel_pistol = 5, /obj/item/weaponcrafting/improvised_parts/rifle_receiver = 5, - /obj/item/weaponcrafting/improvised_parts/pistol_receiver = 2, /obj/item/weaponcrafting/improvised_parts/trigger_assembly = 5, - /obj/item/weaponcrafting/improvised_parts/makeshift_lens = 3, ) /obj/effect/spawner/lootdrop/ammo @@ -695,8 +688,6 @@ lootcount = 1 spawn_on_turf = FALSE loot = list("" = 25, - /obj/item/ammo_box/c32mm = 15, - /obj/item/ammo_box/r32mm = 15, /obj/item/ammo_box/magazine/wt550m9 = 1, /obj/item/ammo_casing/shotgun/buckshot = 7, /obj/item/ammo_casing/shotgun/rubbershot = 7, @@ -709,8 +700,6 @@ lootcount = 1 spawn_on_turf = FALSE loot = list("" = 50, - /obj/item/ammo_box/c32mm = 7, - /obj/item/ammo_box/r32mm = 7, /obj/item/ammo_box/magazine/wt550m9 = 2, /obj/item/ammo_casing/shotgun/buckshot = 10, /obj/item/ammo_casing/shotgun/rubbershot = 10, From ed017cc22ad97a35c9634b7bb20c99059294a627 Mon Sep 17 00:00:00 2001 From: YakumoChen Date: Wed, 1 Jul 2020 08:53:08 +0000 Subject: [PATCH 18/64] Update sheet_types.dm --- code/game/objects/items/stacks/sheets/sheet_types.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index f0a57fddb2..705cbae8b0 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -242,7 +242,6 @@ GLOBAL_LIST_INIT(wood_recipes, list ( \ null, \ new/datum/stack_recipe("wooden firearm body", /obj/item/weaponcrafting/improvised_parts/wooden_body, 10, time = 40), \ new/datum/stack_recipe("rifle stock", /obj/item/weaponcrafting/stock, 10, time = 40), \ - new/datum/stack_recipe("pistol grip", /obj/item/weaponcrafting/improvised_parts/wooden_grip, 5, time = 40), \ new/datum/stack_recipe("rolling pin", /obj/item/kitchen/rollingpin, 2, time = 30), \ new/datum/stack_recipe("wooden bucket", /obj/item/reagent_containers/glass/bucket/wood, 2, time = 30), \ new/datum/stack_recipe("wooden buckler", /obj/item/shield/riot/buckler, 20, time = 40), \ From 36592431a90d54c55c625540b3bf756d79a87a76 Mon Sep 17 00:00:00 2001 From: YakumoChen Date: Wed, 1 Jul 2020 08:53:54 +0000 Subject: [PATCH 19/64] Update pistol.dm --- .../projectiles/ammunition/ballistic/pistol.dm | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/code/modules/projectiles/ammunition/ballistic/pistol.dm b/code/modules/projectiles/ammunition/ballistic/pistol.dm index 2077b108d7..07f3b4c997 100644 --- a/code/modules/projectiles/ammunition/ballistic/pistol.dm +++ b/code/modules/projectiles/ammunition/ballistic/pistol.dm @@ -51,17 +51,3 @@ desc = "A .50AE bullet casing." caliber = ".50" projectile_type = /obj/item/projectile/bullet/a50AE - -// .32 ACP (Improvised Pistol) - -/obj/item/ammo_casing/c32acp - name = ".32 bullet casing" - desc = "A .32 bullet casing." - caliber = "c32acp" - projectile_type = /obj/item/projectile/bullet/c32acp - -/obj/item/ammo_casing/r32acp - name = ".32 rubber bullet casing" - desc = "A .32 rubber bullet casing." - caliber = "c32acp" - projectile_type = /obj/item/projectile/bullet/r32acp From 6ec2cba2bef25fe9ade5a34f3bc51e4d1c8c5197 Mon Sep 17 00:00:00 2001 From: YakumoChen Date: Wed, 1 Jul 2020 08:54:42 +0000 Subject: [PATCH 20/64] Update laser.dm --- code/modules/projectiles/ammunition/energy/laser.dm | 9 --------- 1 file changed, 9 deletions(-) diff --git a/code/modules/projectiles/ammunition/energy/laser.dm b/code/modules/projectiles/ammunition/energy/laser.dm index 492b91ec2d..174645dd11 100644 --- a/code/modules/projectiles/ammunition/energy/laser.dm +++ b/code/modules/projectiles/ammunition/energy/laser.dm @@ -12,15 +12,6 @@ e_cost = 200 select_name = "kill" -/obj/item/ammo_casing/energy/lasergun/improvised - projectile_type = /obj/item/projectile/beam/weak/improvised - e_cost = 200 - select_name = "kill" - -/obj/item/ammo_casing/energy/lasergun/improvised/upgraded - projectile_type = /obj/item/projectile/beam/weak - e_cost = 100 - /obj/item/ammo_casing/energy/laser/hos e_cost = 100 From 6a48b9199f30b26d5a0ee14ab180487cb7bc31f6 Mon Sep 17 00:00:00 2001 From: YakumoChen Date: Wed, 1 Jul 2020 08:55:42 +0000 Subject: [PATCH 21/64] Update ammo_boxes.dm --- .../projectiles/boxes_magazines/ammo_boxes.dm | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/code/modules/projectiles/boxes_magazines/ammo_boxes.dm b/code/modules/projectiles/boxes_magazines/ammo_boxes.dm index 86d66ec354..e4674f4f4c 100644 --- a/code/modules/projectiles/boxes_magazines/ammo_boxes.dm +++ b/code/modules/projectiles/boxes_magazines/ammo_boxes.dm @@ -55,18 +55,6 @@ desc = "Designed to quickly reload revolvers. These rounds are manufactured within extremely tight tolerances, making them easy to show off trickshots with." ammo_type = /obj/item/ammo_casing/c38/match -/obj/item/ammo_box/c32mm - name = "ammo box (.32 acp)" - desc = "Lethal .32 acp bullets, there's forty in the box." - ammo_type = /obj/item/ammo_casing/c32acp - max_ammo = 40 - -/obj/item/ammo_box/r32mm - name = "ammo box (rubber .32 acp)" - desc = "Non-lethal .32 acp bullets, there's forty in the box." - ammo_type = /obj/item/ammo_casing/r32acp - max_ammo = 40 - /obj/item/ammo_box/c9mm name = "ammo box (9mm)" icon_state = "9mmbox" From d9e5847b8f079360da141f941be3d681f3b1da73 Mon Sep 17 00:00:00 2001 From: YakumoChen Date: Wed, 1 Jul 2020 08:56:13 +0000 Subject: [PATCH 22/64] Update pistol.dm --- .../projectiles/boxes_magazines/external/pistol.dm | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/code/modules/projectiles/boxes_magazines/external/pistol.dm b/code/modules/projectiles/boxes_magazines/external/pistol.dm index 1852b839f4..63b0483875 100644 --- a/code/modules/projectiles/boxes_magazines/external/pistol.dm +++ b/code/modules/projectiles/boxes_magazines/external/pistol.dm @@ -66,15 +66,3 @@ caliber = ".50" max_ammo = 7 multiple_sprites = 1 - -/obj/item/ammo_box/magazine/m32acp - name = "pistol magazine (.32)" - desc = "A crudely construction pistol magazine that holds .32 ACP rounds. It looks like it can only fit eight bullets." - icon_state = "32acp" - ammo_type = /obj/item/ammo_casing/c32acp - caliber = "c32acp" - max_ammo = 8 - multiple_sprites = 2 - -/obj/item/ammo_box/magazine/m32acp/empty - start_empty = 1 From 550aa405e58f378b1c38844857d4c30b506dccb8 Mon Sep 17 00:00:00 2001 From: YakumoChen Date: Wed, 1 Jul 2020 08:56:43 +0000 Subject: [PATCH 23/64] Update pistol.dm --- .../modules/projectiles/guns/ballistic/pistol.dm | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/code/modules/projectiles/guns/ballistic/pistol.dm b/code/modules/projectiles/guns/ballistic/pistol.dm index 319ec16345..cdaadb5c3b 100644 --- a/code/modules/projectiles/guns/ballistic/pistol.dm +++ b/code/modules/projectiles/guns/ballistic/pistol.dm @@ -156,19 +156,3 @@ name = "Syndicate Anti Tank Pistol" desc = "A massively impractical and silly monstrosity of a pistol that fires .50 calliber rounds. The recoil is likely to dislocate a variety of joints without proper bracing." pin = /obj/item/firing_pin/implant/pindicate - -////////////Improvised Pistol//////////// - -/obj/item/gun/ballistic/automatic/pistol/improvised - name = "Improvised Pistol" - desc = "An improvised pocket-sized pistol that fires .32 calibre rounds. It looks incredibly flimsy." - icon_state = "ipistol" - item_state = "pistol" - mag_type = /obj/item/ammo_box/magazine/m32acp - fire_delay = 7.5 - can_suppress = FALSE - w_class = WEIGHT_CLASS_SMALL - spread = 15 // Keep the spread between 15 and 20. This hardlocks it into being a mid-range pistol, the magazine size means you're allowed to miss. Fills the mid-range niche that slugs/rifle and buckshot doesn't fill. - -/obj/item/gun/ballistic/automatic/pistol/improvised/nomag - spawnwithmagazine = FALSE // For crafting as you shouldn't get eight bullets for free otherwise people will reaper reload. From baf41d828a7be8a509b6ff7609ca37b7532deb7f Mon Sep 17 00:00:00 2001 From: YakumoChen Date: Wed, 1 Jul 2020 08:57:35 +0000 Subject: [PATCH 24/64] removes improv laser --- code/modules/projectiles/guns/energy/laser.dm | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index e64da116f3..83c143531d 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -241,19 +241,3 @@ process_fire(target, user, TRUE, params) -//////////////// -// IMPROVISED // -//////////////// - -/obj/item/gun/energy/e_gun/old/improvised - name = "improvised energy rifle" - desc = "A crude imitation of an energy gun. It works, however the beams are poorly focused and most of the energy is wasted before it reaches the target. Welp, it still burns things." - icon_state = "improvised" - ammo_x_offset = 1 - shaded_charge = 1 - ammo_type = list(/obj/item/ammo_casing/energy/lasergun/improvised) - -/obj/item/gun/energy/e_gun/old/improvised/upgraded - name = "makeshift energy rifle" - desc = "The new lens and upgraded parts gives this a higher capacity and more energy output, however, the shoddy construction still leaves it inferior to Nanotrasen's own energy weapons." - ammo_type = list(/obj/item/ammo_casing/energy/lasergun/improvised/upgraded) From a3961a642c29307e64de3b50f32aa0ef4025e52c Mon Sep 17 00:00:00 2001 From: YakumoChen Date: Wed, 1 Jul 2020 08:57:48 +0000 Subject: [PATCH 25/64] removes improv laser --- code/modules/projectiles/guns/energy/laser.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index 83c143531d..72ac9620b5 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -240,4 +240,3 @@ chambered.BB.damage *= 5 process_fire(target, user, TRUE, params) - From 346007b4fbdf13d3d058697febd82e95357b786b Mon Sep 17 00:00:00 2001 From: YakumoChen Date: Wed, 1 Jul 2020 08:58:27 +0000 Subject: [PATCH 26/64] Update beams.dm --- code/modules/projectiles/projectile/beams.dm | 3 --- 1 file changed, 3 deletions(-) diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index d95c3b5028..2f12f0f69b 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -39,9 +39,6 @@ /obj/item/projectile/beam/weak damage = 15 -/obj/item/projectile/beam/weak/improvised - damage = 10 - /obj/item/projectile/beam/weak/penetrator armour_penetration = 50 From 5c7c300bf0bf51e5cf41c82481fd39f60c51e1bd Mon Sep 17 00:00:00 2001 From: kappa-sama <44128284+kappa-sama@users.noreply.github.com> Date: Wed, 1 Jul 2020 04:58:44 -0400 Subject: [PATCH 27/64] these do nothing --- .../game/objects/effects/spawners/lootdrop.dm | 87 ------------------- 1 file changed, 87 deletions(-) diff --git a/code/game/objects/effects/spawners/lootdrop.dm b/code/game/objects/effects/spawners/lootdrop.dm index 2c7f701a6e..6155454427 100644 --- a/code/game/objects/effects/spawners/lootdrop.dm +++ b/code/game/objects/effects/spawners/lootdrop.dm @@ -644,90 +644,3 @@ /obj/effect/spawner/lootdrop/glowstick/no_turf spawn_on_turf = FALSE - -// Random Parts - -/obj/effect/spawner/lootdrop/stock_parts - name = "random stock parts spawner" - lootcount = 1 - loot = list( - /obj/item/stock_parts/capacitor, - /obj/item/stock_parts/scanning_module, - /obj/item/stock_parts/manipulator, - /obj/item/stock_parts/micro_laser, - /obj/item/stock_parts/matter_bin, - /obj/item/stock_parts/cell - ) - -// Random Weapon Parts - -/obj/effect/spawner/lootdrop/weapon_parts - name = "random weapon parts spawner 50%" - lootcount = 1 - spawn_on_turf = FALSE - loot = list("" = 50, - /obj/item/weaponcrafting/improvised_parts/barrel_rifle = 10, - /obj/item/weaponcrafting/improvised_parts/barrel_shotgun = 5, - /obj/item/weaponcrafting/improvised_parts/barrel_pistol = 5, - /obj/item/weaponcrafting/improvised_parts/rifle_receiver = 10, - /obj/item/weaponcrafting/improvised_parts/shotgun_receiver = 3, - /obj/item/weaponcrafting/improvised_parts/pistol_receiver = 3, - /obj/item/weaponcrafting/improvised_parts/laser_receiver = 1, - /obj/item/weaponcrafting/improvised_parts/trigger_assembly = 10, - /obj/item/weaponcrafting/improvised_parts/makeshift_lens = 3, - ) - -/obj/effect/spawner/lootdrop/weapon_parts - name = "random weapon parts spawner 25%" - lootcount = 1 - spawn_on_turf = FALSE - loot = list("" = 75, - /obj/item/weaponcrafting/improvised_parts/barrel_rifle = 5, - /obj/item/weaponcrafting/improvised_parts/barrel_pistol = 5, - /obj/item/weaponcrafting/improvised_parts/rifle_receiver = 5, - /obj/item/weaponcrafting/improvised_parts/pistol_receiver = 2, - /obj/item/weaponcrafting/improvised_parts/trigger_assembly = 5, - /obj/item/weaponcrafting/improvised_parts/makeshift_lens = 3, - ) - -/obj/effect/spawner/lootdrop/ammo - name = "random ammo 75%" - lootcount = 1 - spawn_on_turf = FALSE - loot = list("" = 25, - /obj/item/ammo_box/c32mm = 15, - /obj/item/ammo_box/r32mm = 15, - /obj/item/ammo_box/magazine/wt550m9 = 1, - /obj/item/ammo_casing/shotgun/buckshot = 7, - /obj/item/ammo_casing/shotgun/rubbershot = 7, - /obj/item/ammo_casing/a762 = 15, - /obj/item/ammo_box/a762 = 15, - ) - -/obj/effect/spawner/lootdrop/ammo/fiftypercent - name = "random ammo 50%" - lootcount = 1 - spawn_on_turf = FALSE - loot = list("" = 50, - /obj/item/ammo_box/c32mm = 7, - /obj/item/ammo_box/r32mm = 7, - /obj/item/ammo_box/magazine/wt550m9 = 2, - /obj/item/ammo_casing/shotgun/buckshot = 10, - /obj/item/ammo_casing/shotgun/rubbershot = 10, - /obj/item/ammo_casing/a762 = 7, - /obj/item/ammo_box/a762 = 7, - ) - -/obj/effect/spawner/lootdrop/ammo/shotgun - name = "random ammo 50%" - lootcount = 1 - spawn_on_turf = FALSE - loot = list("" = 50, - /obj/item/ammo_box/shotgun/loaded/buckshot = 5, - /obj/item/ammo_box/shotgun/loaded/beanbag = 5, - /obj/item/ammo_box/shotgun/loaded/incendiary = 5, - /obj/item/ammo_casing/shotgun/buckshot = 8, - /obj/item/ammo_casing/shotgun/rubbershot = 9, - /obj/item/ammo_casing/shotgun = 8, - /obj/item/ammo_casing/shotgun/incendiary = 10, - ) From e03112d1dc745c6381338c288a3db31048ef5486 Mon Sep 17 00:00:00 2001 From: kappa-sama <44128284+kappa-sama@users.noreply.github.com> Date: Wed, 1 Jul 2020 04:59:59 -0400 Subject: [PATCH 28/64] these --- code/modules/projectiles/ammunition/energy/laser.dm | 9 --------- 1 file changed, 9 deletions(-) diff --git a/code/modules/projectiles/ammunition/energy/laser.dm b/code/modules/projectiles/ammunition/energy/laser.dm index 492b91ec2d..174645dd11 100644 --- a/code/modules/projectiles/ammunition/energy/laser.dm +++ b/code/modules/projectiles/ammunition/energy/laser.dm @@ -12,15 +12,6 @@ e_cost = 200 select_name = "kill" -/obj/item/ammo_casing/energy/lasergun/improvised - projectile_type = /obj/item/projectile/beam/weak/improvised - e_cost = 200 - select_name = "kill" - -/obj/item/ammo_casing/energy/lasergun/improvised/upgraded - projectile_type = /obj/item/projectile/beam/weak - e_cost = 100 - /obj/item/ammo_casing/energy/laser/hos e_cost = 100 From 67b5efbce089ca231b3bc7451e2923cea4b43252 Mon Sep 17 00:00:00 2001 From: YakumoChen Date: Wed, 1 Jul 2020 09:03:48 +0000 Subject: [PATCH 29/64] Update pistol.dm --- .../modules/projectiles/projectile/bullets/pistol.dm | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/code/modules/projectiles/projectile/bullets/pistol.dm b/code/modules/projectiles/projectile/bullets/pistol.dm index 62ff4adb11..38c9c9f7d9 100644 --- a/code/modules/projectiles/projectile/bullets/pistol.dm +++ b/code/modules/projectiles/projectile/bullets/pistol.dm @@ -48,15 +48,3 @@ L.Sleeping(300) else L.adjustStaminaLoss(25) - -// .32 ACP (Improvised Pistol) - -/obj/item/projectile/bullet/c32acp - name = ".32 bullet" - damage = 13 - -/obj/item/projectile/bullet/r32acp - name = ".32 rubber bullet" - damage = 3 - eyeblur = 1 - stamina = 20 From 327a36f8bd5093bb1bb9b25db5aaae0d2df85f6c Mon Sep 17 00:00:00 2001 From: YakumoChen Date: Wed, 1 Jul 2020 09:06:29 +0000 Subject: [PATCH 30/64] removes obselete autolathe designs --- .../autolathe_designs_sec_and_hacked.dm | 27 ------------------- 1 file changed, 27 deletions(-) diff --git a/code/modules/research/designs/autolathe_desings/autolathe_designs_sec_and_hacked.dm b/code/modules/research/designs/autolathe_desings/autolathe_designs_sec_and_hacked.dm index 9768d80a59..61d0594d3b 100644 --- a/code/modules/research/designs/autolathe_desings/autolathe_designs_sec_and_hacked.dm +++ b/code/modules/research/designs/autolathe_desings/autolathe_designs_sec_and_hacked.dm @@ -30,14 +30,6 @@ build_path = /obj/item/ammo_box/c38 category = list("initial", "Security") -/datum/design/r32acp - name = "Rubber Pistol Bullet (.32)" - id = "r32acp" - build_type = AUTOLATHE - materials = list(/datum/material/iron = 250) - build_path = /obj/item/ammo_casing/r32acp - category = list("initial", "Security") - ///////////////// ///Hacked Gear // ///////////////// @@ -206,22 +198,3 @@ build_path = /obj/item/clothing/head/foilhat category = list("hacked", "Misc") -/datum/design/c32acp - name = "Pistol Bullet (.32)" - id = "c32acp" - build_type = AUTOLATHE - materials = list(/datum/material/iron = 500) - build_path = /obj/item/ammo_casing/c32acp - category = list("hacked", "Security") - -///////////////// -// Magazines // -///////////////// - -/datum/design/m32acp - name = "Empty .32 Magazine" - id = "m32acp" - build_type = AUTOLATHE - materials = list(/datum/material/iron = 10000) - build_path = /obj/item/ammo_box/magazine/m32acp/empty - category = list("hacked", "Security") From 8e25b90d54c8bdbbd9664aa8456d0c9be36fe886 Mon Sep 17 00:00:00 2001 From: YakumoChen Date: Wed, 1 Jul 2020 09:08:01 +0000 Subject: [PATCH 31/64] removes obselete part --- .../autolathe_designs_tcomms_and_misc.dm | 8 -------- 1 file changed, 8 deletions(-) diff --git a/code/modules/research/designs/autolathe_desings/autolathe_designs_tcomms_and_misc.dm b/code/modules/research/designs/autolathe_desings/autolathe_designs_tcomms_and_misc.dm index 3c9c8f9aca..539232bbcd 100644 --- a/code/modules/research/designs/autolathe_desings/autolathe_designs_tcomms_and_misc.dm +++ b/code/modules/research/designs/autolathe_desings/autolathe_designs_tcomms_and_misc.dm @@ -289,11 +289,3 @@ materials = list(/datum/material/iron = 6500, /datum/material/glass = 50) build_path = /obj/item/weaponcrafting/improvised_parts/trigger_assembly category = list("initial", "Misc") - -/datum/design/focusing_lens - name = "Makeshift Lens" - id = "makeshift_lens" - build_type = AUTOLATHE - materials = list(/datum/material/iron = 2000, /datum/material/glass = 4000) - build_path = /obj/item/weaponcrafting/improvised_parts/makeshift_lens - category = list("initial", "Misc") From 1f38c3029cc9c7003b97865b4a425a253b55c1c8 Mon Sep 17 00:00:00 2001 From: kappa-sama Date: Wed, 1 Jul 2020 07:40:43 -0400 Subject: [PATCH 32/64] yeah ok --- .../datums/components/crafting/guncrafting.dm | 47 +----- .../recipes/recipes_weapon_and_ammo.dm | 138 ++---------------- .../items/stacks/sheets/sheet_types.dm | 4 +- code/game/objects/items/tools/saw.dm | 47 ------ .../projectiles/guns/ballistic/revolver.dm | 7 +- code/modules/projectiles/guns/energy/laser.dm | 17 --- code/modules/projectiles/projectile/beams.dm | 3 - .../autolathe_designs_tools.dm | 8 - 8 files changed, 19 insertions(+), 252 deletions(-) delete mode 100644 code/game/objects/items/tools/saw.dm diff --git a/code/datums/components/crafting/guncrafting.dm b/code/datums/components/crafting/guncrafting.dm index 4626ef69d1..32bc92b582 100644 --- a/code/datums/components/crafting/guncrafting.dm +++ b/code/datums/components/crafting/guncrafting.dm @@ -19,50 +19,21 @@ k// PARTS // /obj/item/weaponcrafting/improvised_parts name = "Eerie bunch of coloured dots." - desc = "You feel the urge to report to Central that the parent type of guncrafting, which should never appear in this reality, has appeared. Whatever that means." + desc = "This should not be here. Report this showing up as a bug on the github." icon = 'icons/obj/guns/gun_parts.dmi' icon_state = "palette" -// BARRELS - -/obj/item/weaponcrafting/improvised_parts/barrel_rifle - name = "rifle barrel" - desc = "A pipe with a diameter just the right size to fire 7.62 rounds out of." - icon_state = "barrel_rifle" - -/obj/item/weaponcrafting/improvised_parts/barrel_shotgun - name = "shotgun barrel" - desc = "A twenty bore shotgun barrel." - icon_state = "barrel_shotgun" - -/obj/item/weaponcrafting/improvised_parts/barrel_pistol - name = "pistol barrel" - desc = "A pipe with a small diameter and some holes finely cut into it. It fits .32 ACP bullets. Probably." - icon_state = "barrel_pistol" - w_class = WEIGHT_CLASS_SMALL - // RECEIVERS /obj/item/weaponcrafting/improvised_parts/rifle_receiver name = "bolt action receiver" - desc = "A crudely constructed receiver to create an improvised bolt-action breechloaded rifle. It's generic enough to modify to create other rifles, potentially." + desc = "A crudely constructed receiver to create an improvised bolt-action breechloaded rifle." // removed some text implying that the item had more uses than it does icon_state = "receiver_rifle" w_class = WEIGHT_CLASS_SMALL -/obj/item/weaponcrafting/improvised_parts/pistol_receiver - name = "pistol receiver" - desc = "A receiver to connect house and connects all the parts to make an improvised pistol." - icon_state = "receiver_pistol" - w_class = WEIGHT_CLASS_SMALL - -/obj/item/weaponcrafting/improvised_parts/laser_receiver - name = "energy emitter assembly" - desc = "A mixture of components haphazardly wired together to form an energy emitter." - icon_state = "laser_assembly" - /obj/item/weaponcrafting/improvised_parts/shotgun_receiver name = "break-action assembly" - desc = "An improvised receiver to create a break-action breechloaded shotgun. Parts of this are still useful if you want to make another type of shotgun, however." + desc = "An improvised receiver to create a break-action breechloaded shotgun." // read above icon_state = "receiver_shotgun" w_class = WEIGHT_CLASS_SMALL @@ -78,15 +49,3 @@ k// PARTS // name = "wooden firearm body" desc = "A crudely fashioned wooden body to help keep higher calibre improvised weapons from blowing themselves apart." icon_state = "wooden_body" - -/obj/item/weaponcrafting/improvised_parts/wooden_grip - name = "wooden pistol grip" - desc = "A nice wooden grip hollowed out for pistol magazines." - icon_state = "wooden_pistolgrip" - w_class = WEIGHT_CLASS_SMALL - -/obj/item/weaponcrafting/improvised_parts/makeshift_lens - name = "makeshift focusing lens" - desc = "A properly made lens made with actual glassworking tools would perform much better, but this will have to do." - icon_state = "focusing_lens" - w_class = WEIGHT_CLASS_TINY diff --git a/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm b/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm index 177f6fb2b6..ac63fcae7d 100644 --- a/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm +++ b/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm @@ -248,10 +248,10 @@ category = CAT_WEAPONRY subcategory = CAT_WEAPON -/datum/crafting_recipe/ishotgun +/datum/crafting_recipe/ishotgun // smaller and more versatile gun requires some better materials name = "Improvised Shotgun" result = /obj/item/gun/ballistic/revolver/doublebarrel/improvised - reqs = list(/obj/item/weaponcrafting/improvised_parts/barrel_shotgun = 1, + reqs = list(/obj/item/pipe = 2, // putting a large amount of meaningless timegates by forcing people to turn base resources into upgraded resources kinda sucks /obj/item/weaponcrafting/improvised_parts/shotgun_receiver = 1, /obj/item/weaponcrafting/improvised_parts/trigger_assembly = 1, /obj/item/weaponcrafting/improvised_parts/wooden_body = 1, @@ -262,10 +262,10 @@ category = CAT_WEAPONRY subcategory = CAT_WEAPON -/datum/crafting_recipe/irifle +/datum/crafting_recipe/irifle // larger and less versatile gun, but a bit easier to make name = "Improvised Rifle (7.62mm)" result = /obj/item/gun/ballistic/shotgun/boltaction/improvised - reqs = list(/obj/item/weaponcrafting/improvised_parts/barrel_rifle = 1, + reqs = list(/obj/item/pipe = 2, // above /obj/item/weaponcrafting/improvised_parts/rifle_receiver = 1, /obj/item/weaponcrafting/improvised_parts/trigger_assembly = 1, /obj/item/weaponcrafting/improvised_parts/wooden_body = 1, @@ -276,49 +276,6 @@ category = CAT_WEAPONRY subcategory = CAT_WEAPON -/datum/crafting_recipe/ipistol - name = "Improvised Pistol (.32)" - result = /obj/item/gun/ballistic/automatic/pistol/improvised/nomag - reqs = list(/obj/item/weaponcrafting/improvised_parts/barrel_pistol = 1, - /obj/item/weaponcrafting/improvised_parts/pistol_receiver = 1, - /obj/item/weaponcrafting/improvised_parts/trigger_assembly = 1, - /obj/item/weaponcrafting/improvised_parts/wooden_grip = 1, - /obj/item/stack/sheet/plastic = 15, - /obj/item/stack/sheet/plasteel = 1) - tools = list(TOOL_SCREWDRIVER, TOOL_WELDER, TOOL_WIRECUTTER) - time = 100 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/ilaser - name = "Improvised Energy Gun" - result = /obj/item/gun/energy/e_gun/old/improvised - reqs = list(/obj/item/weaponcrafting/improvised_parts/laser_receiver = 1, - /obj/item/weaponcrafting/improvised_parts/trigger_assembly = 1, - /obj/item/weaponcrafting/improvised_parts/makeshift_lens = 1, - /obj/item/stock_parts/cell = 1, - /obj/item/stack/sheet/metal = 10, - /obj/item/stack/sheet/plasteel = 5, - /obj/item/stack/cable_coil = 10) - tools = list(TOOL_SCREWDRIVER) - time = 100 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/ilaser/upgraded - name = "Improvised Energy Gun Upgrade" - result = /obj/item/gun/energy/e_gun/old/improvised/upgraded - reqs = list(/obj/item/gun/energy/e_gun/old/improvised = 1, - /obj/item/glasswork/glass_base/lens = 1, - /obj/item/stock_parts/capacitor/quadratic = 2, - /obj/item/stock_parts/micro_laser/ultra = 1, - /obj/item/stock_parts/cell/bluespace = 1, - /obj/item/stack/cable_coil = 5) - tools = list(TOOL_SCREWDRIVER, TOOL_MULTITOOL) - time = 100 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - ////////////////// ///AMMO CRAFTING// ////////////////// @@ -442,94 +399,31 @@ category = CAT_WEAPONRY subcategory = CAT_AMMO -/datum/crafting_recipe/m32acp - name = ".32ACP Empty Magazine" - result = /obj/item/ammo_box/magazine/m32acp/empty - reqs = list(/obj/item/stack/sheet/metal = 3, - /obj/item/stack/sheet/plasteel = 1, - /obj/item/stack/packageWrap = 1) - tools = list(TOOL_WELDER,TOOL_SCREWDRIVER) - time = 5 - category = CAT_WEAPONRY - subcategory = CAT_AMMO - //////////////////// // PARTS CRAFTING // //////////////////// -// BARRELS - -/datum/crafting_recipe/rifle_barrel - name = "Improvised Rifle Barrel" - result = /obj/item/weaponcrafting/improvised_parts/barrel_rifle - reqs = list(/obj/item/pipe = 2) - tools = list(TOOL_WELDER,TOOL_SAW) - time = 150 - category = CAT_WEAPONRY - subcategory = CAT_PARTS - -/datum/crafting_recipe/shotgun_barrel - name = "Improvised Shotgun Barrel" - result = /obj/item/weaponcrafting/improvised_parts/barrel_shotgun - reqs = list(/obj/item/pipe = 2) - tools = list(TOOL_WELDER,TOOL_SAW) - time = 150 - category = CAT_WEAPONRY - subcategory = CAT_PARTS - -/datum/crafting_recipe/pistol_barrel - name = "Improvised Pistol Barrel" - result = /obj/item/weaponcrafting/improvised_parts/barrel_pistol - reqs = list(/obj/item/pipe = 1, - /obj/item/stack/sheet/plasteel = 1) - tools = list(TOOL_WELDER,TOOL_SAW) - time = 150 - category = CAT_WEAPONRY - subcategory = CAT_PARTS - // RECEIVERS /datum/crafting_recipe/rifle_receiver name = "Improvised Rifle Receiver" result = /obj/item/weaponcrafting/improvised_parts/rifle_receiver - reqs = list(/obj/item/stack/sheet/metal = 10, - /obj/item/stack/sheet/plasteel = 1) + reqs = list(/obj/item/stack/sheet/metal = 15) // you can carry multiple shotguns tools = list(TOOL_SCREWDRIVER, TOOL_WELDER) - time = 50 + time = 25 category = CAT_WEAPONRY subcategory = CAT_PARTS /datum/crafting_recipe/shotgun_receiver name = "Improvised Shotgun Receiver" result = /obj/item/weaponcrafting/improvised_parts/shotgun_receiver - reqs = list(/obj/item/stack/sheet/metal = 10, - /obj/item/stack/sheet/plasteel = 1) - tools = list(TOOL_SCREWDRIVER, TOOL_WELDER) // Dual wielding has been removed, plasteel is a soft timesink to obtain for most to make mass production harder. - time = 50 + reqs = list(/obj/item/stack/sheet/metal = 15, + /obj/item/stack/sheet/plasteel = 1) // requires access or hacking since shotgun is better + tools = list(TOOL_SCREWDRIVER, TOOL_WELDER) + time = 25 category = CAT_WEAPONRY subcategory = CAT_PARTS -/datum/crafting_recipe/pistol_receiver - name = "Improvised Pistol Receiver" - result = /obj/item/weaponcrafting/improvised_parts/pistol_receiver - reqs = list(/obj/item/stack/sheet/metal = 5, - /obj/item/stack/sheet/plasteel = 1) - tools = list(TOOL_SCREWDRIVER, TOOL_WELDER, TOOL_SAW) - time = 50 - category = CAT_WEAPONRY - subcategory = CAT_PARTS - -/datum/crafting_recipe/laser_receiver - name = "Energy Weapon Assembly" - result = /obj/item/weaponcrafting/improvised_parts/laser_receiver - reqs = list(/obj/item/stack/sheet/metal = 10, - /obj/item/stock_parts/capacitor = 2, - /obj/item/stock_parts/micro_laser = 1, - /obj/item/assembly/prox_sensor = 1) - tools = list(TOOL_SCREWDRIVER, TOOL_MULTITOOL, TOOL_WELDER) // Prox sensor and multitool for the circuit board, welder for extremely ghetto soldering. - time = 150 - category = CAT_WEAPONRY - subcategory = CAT_PARTS // MISC @@ -539,16 +433,6 @@ reqs = list(/obj/item/stack/sheet/metal = 3, /obj/item/assembly/igniter = 1) tools = list(TOOL_SCREWDRIVER, TOOL_WELDER) - time = 150 - category = CAT_WEAPONRY - subcategory = CAT_PARTS - -/datum/crafting_recipe/makeshift_lens - name = "Makeshift Lens" - result = /obj/item/weaponcrafting/improvised_parts/makeshift_lens - reqs = list(/obj/item/stack/sheet/metal = 1, - /obj/item/stack/sheet/glass = 2) - tools = list(TOOL_WELDER) // Glassmaking lets you make non-makeshift lenses. - time = 50 + time = 25 category = CAT_WEAPONRY subcategory = CAT_PARTS diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index f0a57fddb2..880a2e7214 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -240,8 +240,8 @@ GLOBAL_LIST_INIT(wood_recipes, list ( \ new /datum/stack_recipe("pew (right)", /obj/structure/chair/pew/right, 3, one_per_turf = TRUE, on_floor = TRUE),\ )), null, \ - new/datum/stack_recipe("wooden firearm body", /obj/item/weaponcrafting/improvised_parts/wooden_body, 10, time = 40), \ - new/datum/stack_recipe("rifle stock", /obj/item/weaponcrafting/stock, 10, time = 40), \ + new/datum/stack_recipe("wooden firearm body", /obj/item/weaponcrafting/improvised_parts/wooden_body, 10, time = 20), \ // twice as costly to make an impro gun as before, but still takes similar amount of time + new/datum/stack_recipe("rifle stock", /obj/item/weaponcrafting/stock, 10, time = 20), \ new/datum/stack_recipe("pistol grip", /obj/item/weaponcrafting/improvised_parts/wooden_grip, 5, time = 40), \ new/datum/stack_recipe("rolling pin", /obj/item/kitchen/rollingpin, 2, time = 30), \ new/datum/stack_recipe("wooden bucket", /obj/item/reagent_containers/glass/bucket/wood, 2, time = 30), \ diff --git a/code/game/objects/items/tools/saw.dm b/code/game/objects/items/tools/saw.dm deleted file mode 100644 index aab59c00be..0000000000 --- a/code/game/objects/items/tools/saw.dm +++ /dev/null @@ -1,47 +0,0 @@ -/obj/item/hatchet/saw - name = "handsaw" - desc = "A very sharp handsaw, it's compact." - icon = 'icons/obj/tools.dmi' - icon_state = "saw" - item_state = "sawhandle_greyscale" - lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi' - tool_behaviour = TOOL_SAW - force = 10 - throwforce = 8 - throw_speed = 3 - throw_range = 5 - custom_materials = list(/datum/material/iron = 5000) - attack_verb = list("sawed", "sliced", "cut") - hitsound = 'sound/weapons/bladeslice.ogg' - sharpness = IS_SHARP - var/random_color = TRUE //code taken from screwdrivers.dm; cool handles are cool. - var/static/list/saw_colors = list( - "blue" = rgb(24, 97, 213), - "red" = rgb(255, 0, 0), - "pink" = rgb(213, 24, 141), - "brown" = rgb(160, 82, 18), - "green" = rgb(14, 127, 27), - "cyan" = rgb(24, 162, 213), - "yellow" = rgb(255, 165, 0) - ) - -/obj/item/hatchet/saw/Initialize() - . = ..() - if(random_color) - icon_state = "sawhandle_greyscale" - var/our_color = pick(saw_colors) - add_atom_colour(saw_colors[our_color], FIXED_COLOUR_PRIORITY) - update_icon() - if(prob(75)) - pixel_y = rand(-8, 8) - -/obj/item/hatchet/saw/update_overlays() - . = ..() - if(!random_color) //icon override - return - var/mutable_appearance/base_overlay = mutable_appearance(icon, "sawblade") - base_overlay.appearance_flags = RESET_COLOR - . += base_overlay - -// END \ No newline at end of file diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm index f34dbc6abc..06b66ed73e 100644 --- a/code/modules/projectiles/guns/ballistic/revolver.dm +++ b/code/modules/projectiles/guns/ballistic/revolver.dm @@ -319,11 +319,11 @@ /obj/item/gun/ballistic/revolver/doublebarrel/improvised name = "improvised shotgun" - desc = "A shoddy break-action breechloaded shotgun. Its lacklustre construction will probably result in it hurting people less than a normal shotgun." + desc = "A shoddy break-action breechloaded shotgun. Its lacklustre construction shows in its lesser effectiveness." icon_state = "ishotgun" item_state = "shotgun" w_class = WEIGHT_CLASS_BULKY - weapon_weight = WEAPON_MEDIUM + weapon_weight = WEAPON_MEDIUM // prevents shooting 2 at once, but doesn't require 2 hands force = 10 slot_flags = null mag_type = /obj/item/ammo_box/magazine/internal/shot/improvised @@ -331,7 +331,6 @@ unique_reskin = null projectile_damage_multiplier = 0.9 var/slung = FALSE - weapon_weight = WEAPON_HEAVY /obj/item/gun/ballistic/revolver/doublebarrel/improvised/attackby(obj/item/A, mob/user, params) ..() @@ -358,7 +357,7 @@ /obj/item/gun/ballistic/revolver/doublebarrel/improvised/sawn name = "sawn-off improvised shotgun" - desc = "The barrel and stock have been sawn and filed down; it can fit in backpacks. You still need two hands to fire this, if you value unbroken wrists." + desc = "The barrel and stock have been sawn and filed down; it can fit in backpacks. You wont want to shoot two of these at once if you value your wrists." icon_state = "ishotgun" item_state = "gun" w_class = WEIGHT_CLASS_NORMAL diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index e64da116f3..72ac9620b5 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -240,20 +240,3 @@ chambered.BB.damage *= 5 process_fire(target, user, TRUE, params) - -//////////////// -// IMPROVISED // -//////////////// - -/obj/item/gun/energy/e_gun/old/improvised - name = "improvised energy rifle" - desc = "A crude imitation of an energy gun. It works, however the beams are poorly focused and most of the energy is wasted before it reaches the target. Welp, it still burns things." - icon_state = "improvised" - ammo_x_offset = 1 - shaded_charge = 1 - ammo_type = list(/obj/item/ammo_casing/energy/lasergun/improvised) - -/obj/item/gun/energy/e_gun/old/improvised/upgraded - name = "makeshift energy rifle" - desc = "The new lens and upgraded parts gives this a higher capacity and more energy output, however, the shoddy construction still leaves it inferior to Nanotrasen's own energy weapons." - ammo_type = list(/obj/item/ammo_casing/energy/lasergun/improvised/upgraded) diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index d95c3b5028..2f12f0f69b 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -39,9 +39,6 @@ /obj/item/projectile/beam/weak damage = 15 -/obj/item/projectile/beam/weak/improvised - damage = 10 - /obj/item/projectile/beam/weak/penetrator armour_penetration = 50 diff --git a/code/modules/research/designs/autolathe_desings/autolathe_designs_tools.dm b/code/modules/research/designs/autolathe_desings/autolathe_designs_tools.dm index 1bb18482f3..bebf836ce0 100644 --- a/code/modules/research/designs/autolathe_desings/autolathe_designs_tools.dm +++ b/code/modules/research/designs/autolathe_desings/autolathe_designs_tools.dm @@ -158,11 +158,3 @@ materials = list(/datum/material/iron = 150, /datum/material/glass = 150) build_path = /obj/item/geiger_counter category = list("initial", "Tools") - -/datum/design/saw - name = "Hand Saw" - id = "handsaw" - build_type = AUTOLATHE - materials = list(/datum/material/iron = 500) - build_path = /obj/item/hatchet/saw - category = list("initial", "Tools") From 0b0d9ff1a68527897b9623e9bdc2db08db8f7c46 Mon Sep 17 00:00:00 2001 From: kappa-sama <44128284+kappa-sama@users.noreply.github.com> Date: Wed, 1 Jul 2020 07:56:55 -0400 Subject: [PATCH 33/64] this --- code/game/objects/items/stacks/sheets/sheet_types.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 3445035e88..4b1c3674f4 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -240,7 +240,7 @@ GLOBAL_LIST_INIT(wood_recipes, list ( \ new /datum/stack_recipe("pew (right)", /obj/structure/chair/pew/right, 3, one_per_turf = TRUE, on_floor = TRUE),\ )), null, \ - new/datum/stack_recipe("wooden firearm body", /obj/item/weaponcrafting/improvised_parts/wooden_body, 10, time = 20), \ // twice as costly to make an impro gun as before, but still takes similar amount of time + new/datum/stack_recipe("wooden firearm body", /obj/item/weaponcrafting/improvised_parts/wooden_body, 10, time = 20), \ new/datum/stack_recipe("rifle stock", /obj/item/weaponcrafting/stock, 10, time = 20), \ new/datum/stack_recipe("rolling pin", /obj/item/kitchen/rollingpin, 2, time = 30), \ new/datum/stack_recipe("wooden bucket", /obj/item/reagent_containers/glass/bucket/wood, 2, time = 30), \ From 1fffd0a60888826f02010dc06f011d98e361b5d9 Mon Sep 17 00:00:00 2001 From: kappa-sama <44128284+kappa-sama@users.noreply.github.com> Date: Wed, 1 Jul 2020 08:02:41 -0400 Subject: [PATCH 34/64] 45 seconds lol --- .../components/crafting/recipes/recipes_weapon_and_ammo.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm b/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm index 177f6fb2b6..c2045ca468 100644 --- a/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm +++ b/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm @@ -193,7 +193,7 @@ reqs = list(/obj/item/pipe = 5, /obj/item/stack/sheet/plastic = 15, /obj/item/weaponcrafting/durathread_string = 5) - time = 450 + time = 200 category = CAT_WEAPONRY subcategory = CAT_WEAPON From 49af0d11c7e445d0689bfec5cb0c0319a9f99b7f Mon Sep 17 00:00:00 2001 From: kappa-sama <44128284+kappa-sama@users.noreply.github.com> Date: Wed, 1 Jul 2020 08:09:39 -0400 Subject: [PATCH 35/64] string --- code/datums/components/crafting/guncrafting.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/datums/components/crafting/guncrafting.dm b/code/datums/components/crafting/guncrafting.dm index 4626ef69d1..255c80f209 100644 --- a/code/datums/components/crafting/guncrafting.dm +++ b/code/datums/components/crafting/guncrafting.dm @@ -8,9 +8,9 @@ k// PARTS // custom_materials = list(/datum/material/wood = MINERAL_MATERIAL_AMOUNT * 6) icon_state = "riflestock" -/obj/item/weaponcrafting/durathread_string - name = "durathread string" - desc = "A long piece of durathread with some resemblance to cable coil." +/obj/item/weaponcrafting/string + name = "bowstring" + desc = "A long piece of thread with some resemblance to cable coil." icon_state = "durastring" //////////////////////////////// From 9cc6f5aa91b6095221552a207cfec89abf30b2c0 Mon Sep 17 00:00:00 2001 From: kappa-sama <44128284+kappa-sama@users.noreply.github.com> Date: Wed, 1 Jul 2020 08:09:43 -0400 Subject: [PATCH 36/64] durathread->string --- code/game/objects/items/stacks/sheets/sheet_types.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index f0a57fddb2..6b484a0775 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -382,6 +382,7 @@ GLOBAL_LIST_INIT(cloth_recipes, list ( \ new/datum/stack_recipe("chemistry bag", /obj/item/storage/bag/chemistry, 4), \ new/datum/stack_recipe("bio bag", /obj/item/storage/bag/bio, 4), \ null, \ + new/datum/stack_recipe("bowstring", /obj/item/weaponcrafting/string, 1, time = 40), \ new/datum/stack_recipe("improvised gauze", /obj/item/stack/medical/gauze/improvised, 1, 2, 6), \ new/datum/stack_recipe("rag", /obj/item/reagent_containers/rag, 1), \ new/datum/stack_recipe("towel", /obj/item/reagent_containers/rag/towel, 3), \ @@ -429,7 +430,6 @@ GLOBAL_LIST_INIT(durathread_recipes, list ( \ new/datum/stack_recipe("durathread beret", /obj/item/clothing/head/beret/durathread, 2, time = 40), \ new/datum/stack_recipe("durathread beanie", /obj/item/clothing/head/beanie/durathread, 2, time = 40), \ new/datum/stack_recipe("durathread bandana", /obj/item/clothing/mask/bandana/durathread, 1, time = 25), \ - new/datum/stack_recipe("durathread string", /obj/item/weaponcrafting/durathread_string, 1, time = 40), \ )) /obj/item/stack/sheet/durathread From 406af65d935d3c87a630da132fdc7ed5f81ce263 Mon Sep 17 00:00:00 2001 From: kappa-sama <44128284+kappa-sama@users.noreply.github.com> Date: Wed, 1 Jul 2020 08:12:35 -0400 Subject: [PATCH 37/64] you need 5 of these --- code/game/objects/items/stacks/sheets/sheet_types.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 6b484a0775..f8786a7437 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -382,7 +382,7 @@ GLOBAL_LIST_INIT(cloth_recipes, list ( \ new/datum/stack_recipe("chemistry bag", /obj/item/storage/bag/chemistry, 4), \ new/datum/stack_recipe("bio bag", /obj/item/storage/bag/bio, 4), \ null, \ - new/datum/stack_recipe("bowstring", /obj/item/weaponcrafting/string, 1, time = 40), \ + new/datum/stack_recipe("string", /obj/item/weaponcrafting/string, 1, time = 10), \ new/datum/stack_recipe("improvised gauze", /obj/item/stack/medical/gauze/improvised, 1, 2, 6), \ new/datum/stack_recipe("rag", /obj/item/reagent_containers/rag, 1), \ new/datum/stack_recipe("towel", /obj/item/reagent_containers/rag/towel, 3), \ From 73d616b3a481553b1b2c50f3cac6562f6f24230e Mon Sep 17 00:00:00 2001 From: kappa-sama <44128284+kappa-sama@users.noreply.github.com> Date: Wed, 1 Jul 2020 08:13:30 -0400 Subject: [PATCH 38/64] more accurate --- code/datums/components/crafting/guncrafting.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/datums/components/crafting/guncrafting.dm b/code/datums/components/crafting/guncrafting.dm index 255c80f209..56e3be8524 100644 --- a/code/datums/components/crafting/guncrafting.dm +++ b/code/datums/components/crafting/guncrafting.dm @@ -9,7 +9,7 @@ k// PARTS // icon_state = "riflestock" /obj/item/weaponcrafting/string - name = "bowstring" + name = "wound thread" desc = "A long piece of thread with some resemblance to cable coil." icon_state = "durastring" From 36955950345cad154cd4dc0beb95751db343e2e0 Mon Sep 17 00:00:00 2001 From: kappa-sama <44128284+kappa-sama@users.noreply.github.com> Date: Wed, 1 Jul 2020 08:17:13 -0400 Subject: [PATCH 39/64] ammunition --- .../crafting/recipes/recipes_weapon_and_ammo.dm | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm b/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm index c2045ca468..540d608bae 100644 --- a/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm +++ b/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm @@ -192,8 +192,8 @@ result = /obj/item/gun/ballistic/bow/pipe reqs = list(/obj/item/pipe = 5, /obj/item/stack/sheet/plastic = 15, - /obj/item/weaponcrafting/durathread_string = 5) - time = 200 + /obj/item/weaponcrafting/string = 5) + time = 150 category = CAT_WEAPONRY subcategory = CAT_WEAPON @@ -326,9 +326,9 @@ /datum/crafting_recipe/arrow name = "Arrow" result = /obj/item/ammo_casing/caseless/arrow/wood - time = 30 + time = 5 // these only do 15 damage reqs = list(/obj/item/stack/sheet/mineral/wood = 1, - /obj/item/stack/sheet/durathread = 1, + /obj/item/stack/sheet/cloth = 1, /obj/item/stack/rods = 1) // 1 metal sheet = 2 rods = 2 arrows category = CAT_WEAPONRY subcategory = CAT_AMMO @@ -336,7 +336,7 @@ /datum/crafting_recipe/bone_arrow name = "Bone Arrow" result = /obj/item/ammo_casing/caseless/arrow/bone - time = 30 + time = 5 always_availible = FALSE reqs = list(/obj/item/stack/sheet/bone = 1, /obj/item/stack/sheet/sinew = 1, @@ -348,7 +348,7 @@ name = "Ashen Arrow" result = /obj/item/ammo_casing/caseless/arrow/ash tools = list(TOOL_WELDER) - time = 30 + time = 10 // 1.5 seconds minimum per actually worthwhile arrow excluding interface lag always_availible = FALSE reqs = list(/obj/item/ammo_casing/caseless/arrow/wood = 1) category = CAT_WEAPONRY From ad4f909d796cbf1a835647b17f22d215a4665a22 Mon Sep 17 00:00:00 2001 From: kappa-sama <44128284+kappa-sama@users.noreply.github.com> Date: Wed, 1 Jul 2020 08:19:27 -0400 Subject: [PATCH 40/64] ashwalkers --- code/datums/components/crafting/recipes/recipes_primal.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/datums/components/crafting/recipes/recipes_primal.dm b/code/datums/components/crafting/recipes/recipes_primal.dm index e646d24018..aaae94df1d 100644 --- a/code/datums/components/crafting/recipes/recipes_primal.dm +++ b/code/datums/components/crafting/recipes/recipes_primal.dm @@ -103,7 +103,7 @@ /datum/crafting_recipe/bone_bow name = "Bone Bow" result = /obj/item/gun/ballistic/bow/ashen - time = 200 + time = 120 // 80+120 = 200 always_availible = FALSE reqs = list(/obj/item/stack/sheet/bone = 8, /obj/item/stack/sheet/sinew = 4) @@ -112,7 +112,7 @@ /datum/crafting_recipe/bow_tablet name = "Sandstone Bow Making Manual" result = /obj/item/book/granter/crafting_recipe/bone_bow - time = 600 //Scribing + time = 200 //Scribing // don't care always_availible = FALSE reqs = list(/obj/item/stack/rods = 1, /obj/item/stack/sheet/mineral/sandstone = 4) From 9a156dffc67faf83d554ba892a4398aabb3d87fa Mon Sep 17 00:00:00 2001 From: YakumoChen Date: Thu, 2 Jul 2020 09:19:53 +0000 Subject: [PATCH 41/64] remove saw from TG.dme --- tgstation.dme | 1 - 1 file changed, 1 deletion(-) diff --git a/tgstation.dme b/tgstation.dme index c43a6de0e4..3e240b3973 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1150,7 +1150,6 @@ #include "code\game\objects\items\tanks\tanks.dm" #include "code\game\objects\items\tanks\watertank.dm" #include "code\game\objects\items\tools\crowbar.dm" -#include "code\game\objects\items\tools\saw.dm" #include "code\game\objects\items\tools\screwdriver.dm" #include "code\game\objects\items\tools\weldingtool.dm" #include "code\game\objects\items\tools\wirecutters.dm" From 6fc584518ad3b039e8b04b33ec665660879868e5 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Fri, 3 Jul 2020 00:07:30 +0200 Subject: [PATCH 42/64] Fixing (un)equip penalties from obscured inv slots. --- code/game/objects/items/storage/fancy.dm | 8 ++++---- code/modules/clothing/gloves/color.dm | 5 +++-- code/modules/mob/mob.dm | 2 +- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/code/game/objects/items/storage/fancy.dm b/code/game/objects/items/storage/fancy.dm index 821fd52bd1..927a29407c 100644 --- a/code/game/objects/items/storage/fancy.dm +++ b/code/game/objects/items/storage/fancy.dm @@ -207,18 +207,18 @@ cig_position++ /obj/item/storage/fancy/cigarettes/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob) - if(!ismob(M)) - return + if(M != user || !istype(M)) + return ..() var/obj/item/clothing/mask/cigarette/cig = locate(/obj/item/clothing/mask/cigarette) in contents if(cig) - if(M == user && contents.len > 0 && !user.wear_mask) + if(!user.wear_mask && !(SLOT_WEAR_MASK in M.check_obscured_slots())) var/obj/item/clothing/mask/cigarette/W = cig SEND_SIGNAL(src, COMSIG_TRY_STORAGE_TAKE, W, M) M.equip_to_slot_if_possible(W, SLOT_WEAR_MASK) contents -= W to_chat(user, "You take \a [W] out of the pack.") else - ..() + return ..() else to_chat(user, "There are no [icon_type]s left in the pack.") diff --git a/code/modules/clothing/gloves/color.dm b/code/modules/clothing/gloves/color.dm index 1b5cd6c7d2..56d6e7d38f 100644 --- a/code/modules/clothing/gloves/color.dm +++ b/code/modules/clothing/gloves/color.dm @@ -23,14 +23,15 @@ if(iscarbon(target) && proximity) var/mob/living/carbon/C = target var/mob/living/carbon/U = user - var/success = C.equip_to_slot_if_possible(new /obj/item/clothing/gloves/color/yellow/sprayon, ITEM_SLOT_GLOVES, TRUE, TRUE) + var/success = C.equip_to_slot_if_possible(new /obj/item/clothing/gloves/color/yellow/sprayon, ITEM_SLOT_GLOVES, TRUE, TRUE, clothing_check = TRUE) if(success) if(C == user) C.visible_message("[U] sprays their hands with glittery rubber!") else C.visible_message("[U] sprays glittery rubber on the hands of [C]!") else - C.visible_message("The rubber fails to stick to [C]'s hands!") + user.visible_message("The rubber fails to stick to [C]'s hands!", + "The rubber fails to stick to [C]'s [(SLOT_GLOVES in C.check_obscured_slots()) ? "unexposed" : ""] hands!") qdel(src) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 0124249baf..fd9afc91cd 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -227,7 +227,7 @@ mob/visible_message(message, self_message, blind_message, vision_distance = DEFA var/obj/item/W = get_active_held_item() if(istype(W)) - if(equip_to_slot_if_possible(W, slot, FALSE, FALSE, FALSE, TRUE)) + if(equip_to_slot_if_possible(W, slot, FALSE, FALSE, FALSE, FALSE, TRUE)) return TRUE if(!W) From 92c846fdbffff90fc7862f36d8d6a4c33506f5d3 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Fri, 3 Jul 2020 01:08:28 +0200 Subject: [PATCH 43/64] Improvements to the recent clothing menu toggle hardsuit helmet feature. --- code/modules/clothing/suits/toggles.dm | 20 ++++++++++++------- code/modules/mob/living/carbon/human/human.dm | 18 +++++++++-------- 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/code/modules/clothing/suits/toggles.dm b/code/modules/clothing/suits/toggles.dm index 639f2d3bfb..60f8cc179a 100644 --- a/code/modules/clothing/suits/toggles.dm +++ b/code/modules/clothing/suits/toggles.dm @@ -164,7 +164,7 @@ RemoveHelmet() ..() -/obj/item/clothing/suit/space/hardsuit/proc/RemoveHelmet() +/obj/item/clothing/suit/space/hardsuit/proc/RemoveHelmet(message = TRUE) if(!helmet) return suittoggled = FALSE @@ -174,16 +174,18 @@ helmet.attack_self(H) H.transferItemToLoc(helmet, src, TRUE) H.update_inv_wear_suit() - to_chat(H, "The helmet on the hardsuit disengages.") + if(message) + to_chat(H, "The helmet on the hardsuit disengages.") playsound(src.loc, 'sound/mecha/mechmove03.ogg', 50, 1) else helmet.forceMove(src) + return TRUE /obj/item/clothing/suit/space/hardsuit/dropped(mob/user) ..() RemoveHelmet() -/obj/item/clothing/suit/space/hardsuit/proc/ToggleHelmet() +/obj/item/clothing/suit/space/hardsuit/proc/ToggleHelmet(message = TRUE) var/mob/living/carbon/human/H = loc if(!helmettype) return @@ -192,15 +194,19 @@ if(!suittoggled) if(ishuman(src.loc)) if(H.wear_suit != src) - to_chat(H, "You must be wearing [src] to engage the helmet!") + if(message) + to_chat(H, "You must be wearing [src] to engage the helmet!") return if(H.head) - to_chat(H, "You're already wearing something on your head!") + if(message) + to_chat(H, "You're already wearing something on your head!") return else if(H.equip_to_slot_if_possible(helmet,SLOT_HEAD,0,0,1)) - to_chat(H, "You engage the helmet on the hardsuit.") + if(message) + to_chat(H, "You engage the helmet on the hardsuit.") suittoggled = TRUE H.update_inv_wear_suit() playsound(src.loc, 'sound/mecha/mechmove03.ogg', 50, 1) + return TRUE else - RemoveHelmet() + return RemoveHelmet(message) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 8451dc4060..a2d53f6f0a 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -227,25 +227,27 @@ SEND_SIGNAL(src, COMSIG_CARBON_EMBED_RIP, I, L) return if(href_list["toggle_helmet"]) - var/hardsuit_head = head && istype(head, /obj/item/clothing/head/helmet/space/hardsuit) + if(!istype(head, /obj/item/clothing/head/helmet/space/hardsuit)) + return + var/obj/item/clothing/head/helmet/space/hardsuit/hardsuit_head = head visible_message("[usr] tries to [hardsuit_head ? "retract" : "extend"] [src]'s helmet.", \ "[usr] tries to [hardsuit_head ? "retract" : "extend"] [src]'s helmet.", \ target = usr, target_message = "You try to [hardsuit_head ? "retract" : "extend"] [src]'s helmet.") - if(!do_mob(usr, src, POCKET_STRIP_DELAY)) + if(!do_mob(usr, src, hardsuit_head ? head.strip_delay : POCKET_STRIP_DELAY)) return - visible_message("[usr] [hardsuit_head ? "retract" : "extend"] [src]'s helmet", \ - "[usr] [hardsuit_head ? "retract" : "extend"] [src]'s helmet", \ - target = usr, target_message = "You [hardsuit_head ? "retract" : "extend"] [src]'s helmet.") - if(!istype(wear_suit, /obj/item/clothing/suit/space/hardsuit)) + if(!istype(wear_suit, /obj/item/clothing/suit/space/hardsuit) || (hardsuit_head ? (!head || head != hardsuit_head) : head)) return var/obj/item/clothing/suit/space/hardsuit/hardsuit = wear_suit //This should be an hardsuit given all our checks - hardsuit.ToggleHelmet() + if(hardsuit.ToggleHelmet(FALSE)) + visible_message("[usr] [hardsuit_head ? "retract" : "extend"] [src]'s helmet", \ + "[usr] [hardsuit_head ? "retract" : "extend"] [src]'s helmet", \ + target = usr, target_message = "You [hardsuit_head ? "retract" : "extend"] [src]'s helmet.") return if(href_list["item"]) var/slot = text2num(href_list["item"]) if(slot in check_obscured_slots()) to_chat(usr, "You can't reach that! Something is covering it.") - return + return if(href_list["pockets"]) var/strip_mod = 1 var/strip_silence = FALSE From 396989f143673ffa7c253b98d6a3d550f311242a Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Fri, 3 Jul 2020 01:52:03 +0200 Subject: [PATCH 44/64] Fixes items' used skills list keys missing associated base traits. --- code/_onclick/item_attack.dm | 4 ++-- code/game/objects/items.dm | 7 ++++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 106db7f40a..2084ad4c4f 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -123,7 +123,7 @@ if(totitemdamage) totitemdamage = user.mind.item_action_skills_mod(I, totitemdamage, I.skill_difficulty, SKILL_ATTACK_OBJ, bad_trait) for(var/skill in I.used_skills) - if(!(I.used_skills[skill] & SKILL_TRAIN_ATTACK_OBJ)) + if(!(SKILL_TRAIN_ATTACK_OBJ in I.used_skills[skill])) continue user.mind.auto_gain_experience(skill, I.skill_gain) @@ -192,7 +192,7 @@ if(.) . = user.mind.item_action_skills_mod(I, ., I.skill_difficulty, SKILL_ATTACK_MOB, bad_trait) for(var/skill in I.used_skills) - if(!(I.used_skills[skill] & SKILL_TRAIN_ATTACK_MOB)) + if(!(SKILL_TRAIN_ATTACK_MOB in I.used_skills[skill])) continue user.mind.auto_gain_experience(skill, I.skill_gain) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 9f1b830cf0..d6596581a8 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -179,6 +179,11 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb if(damtype == "brute") hitsound = "swing_hit" + if(used_skills) + for(var/path in used_skills) + var/datum/skill/S = GLOB.skill_datums[path] + LAZYADD(used_skills[path], S.skill_traits) + /obj/item/Destroy() item_flags &= ~DROPDEL //prevent reqdels if(ismob(loc)) @@ -880,7 +885,7 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb for(var/skill in used_skills) if(!(SKILL_TRAINING_TOOL in used_skills[skill])) continue - user.mind.auto_gain_experience(skill, gain*skill_gain_mult, GET_STANDARD_LVL(max_level)) + user.mind.auto_gain_experience(skill, gain*skill_gain_mult, max_level) return TRUE From f5ffd7d2a998d78c9618cf5506dac3af3f350df6 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Fri, 3 Jul 2020 03:00:33 +0200 Subject: [PATCH 45/64] Easing fine tuning of the system. --- code/__DEFINES/skills/defines.dm | 13 +++++++------ code/_onclick/item_attack.dm | 3 ++- code/datums/skills/_skill.dm | 8 ++++++++ code/datums/skills/_skill_holder.dm | 10 ++++------ code/game/objects/items.dm | 5 +++-- code/game/objects/items/grenades/chem_grenade.dm | 2 +- code/game/objects/items/stacks/sheets/glass.dm | 2 +- code/modules/hydroponics/plant_genes.dm | 2 +- code/modules/mining/ores_coins.dm | 2 +- code/modules/mob/living/silicon/robot/robot.dm | 2 +- code/modules/power/lighting.dm | 2 +- code/modules/projectiles/guns/ballistic/revolver.dm | 2 +- code/modules/projectiles/guns/ballistic/shotgun.dm | 2 +- 13 files changed, 32 insertions(+), 23 deletions(-) diff --git a/code/__DEFINES/skills/defines.dm b/code/__DEFINES/skills/defines.dm index 60d2321927..47aaeeb1dc 100644 --- a/code/__DEFINES/skills/defines.dm +++ b/code/__DEFINES/skills/defines.dm @@ -8,12 +8,6 @@ /// Levels #define SKILL_PROGRESSION_LEVEL 4 - -/// Max value of skill for numerical skills -#define SKILL_NUMERICAL_MAX 100 -/// Min value of skill for numerical skills -#define SKILL_NUMERICAL_MIN 0 - // Standard values for job starting skills #define STARTING_SKILL_SURGERY_MEDICAL 35 //out of SKILL_NUMERICAL_MAX @@ -26,6 +20,13 @@ #define DEF_SKILL_GAIN 1 #define SKILL_GAIN_SURGERY_PER_STEP 0.25 +#define STD_USE_TOOL_MULT 1 +#define EASY_USE_TOOL_MULT 0.75 +#define TRIVIAL_USE_TOOL_MULT 0.5 +#define BARE_USE_TOOL_MULT 0.25 + +//multiplier of the difference of max_value and min_value. Mostly for balance purposes between numerical and level-based skills. +#define STD_NUM_SKILL_ITEM_GAIN_MULTI 0.002 //An extra point for each few seconds of delay when using a tool. Before the multiplier. #define SKILL_GAIN_DELAY_DIVISOR 3 SECONDS diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 2084ad4c4f..bef06a69e9 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -194,7 +194,8 @@ for(var/skill in I.used_skills) if(!(SKILL_TRAIN_ATTACK_MOB in I.used_skills[skill])) continue - user.mind.auto_gain_experience(skill, I.skill_gain) + var/datum/skill/S = GLOB.skill_datums[skill] + user.mind.auto_gain_experience(skill, I.skill_gain*S.item_skill_gain_multi) // Proximity_flag is 1 if this afterattack was called on something adjacent, in your square, or on your person. // Click parameters is the params string from byond Click() code, see that documentation. diff --git a/code/datums/skills/_skill.dm b/code/datums/skills/_skill.dm index e3f1d00ae6..eecf416b1b 100644 --- a/code/datums/skills/_skill.dm +++ b/code/datums/skills/_skill.dm @@ -33,6 +33,10 @@ GLOBAL_LIST_INIT_TYPED(skill_datums, /datum/skill, init_skill_datums()) var/base_multiplier = 1 /// Value added to the base multiplier depending on overall competency compared to maximum value/level. var/competency_multiplier = 1 + /// Experience gain multiplier gained from using items. + var/item_skill_gain_multi = 1 + /// Skill gain quantisation + var/skill_gain_quantisation = 0.1 /// A list of ways this skill can affect or be affected through actions and skill modifiers. var/list/skill_traits = list(SKILL_SANITY, SKILL_INTELLIGENCE) /// Index of this skill in the UI @@ -108,6 +112,10 @@ GLOBAL_LIST_INIT_TYPED(skill_datums, /datum/skill, init_skill_datums()) /// Min value of this skill var/min_value = 0 +/datum/skill/numerical/New() + ..() + skill_gain_quantisation = item_skill_gain_multi = item_skill_gain_multi * (max_value - min_value) * STD_NUM_SKILL_ITEM_GAIN_MULTI + /datum/skill/numerical/sanitize_value(new_value) return clamp(new_value, min_value, max_value) diff --git a/code/datums/skills/_skill_holder.dm b/code/datums/skills/_skill_holder.dm index 8357211463..73748417c3 100644 --- a/code/datums/skills/_skill_holder.dm +++ b/code/datums/skills/_skill_holder.dm @@ -91,10 +91,10 @@ CRASH("Invalid set_skill_value call. Use skill typepaths.") //until a time when we somehow need text ids for dynamic skills, I'm enforcing this. var/datum/skill/S = GLOB.skill_datums[skill] value = S.sanitize_value(value) - skill_holder.need_static_data_update = TRUE if(!isnull(value)) LAZYINITLIST(skill_holder.skills) S.set_skill_value(skill_holder, value, src, silent) + skill_holder.need_static_data_update = TRUE return TRUE return FALSE @@ -120,11 +120,9 @@ CRASH("You cannot auto increment a non numerical(experience skill!") var/current = get_skill_value(skill, FALSE) var/affinity = get_skill_affinity(skill) - var/target_value = current + (value * affinity) - if(maximum) - target_value = min(target_value, maximum) - if(target_value == maximum) //no more experience to gain, early return. - return + var/target_value = round(current + (value * affinity), S.skill_gain_quantisation) + if(maximum && target_value >= maximum) //no more experience to gain, early return. + return boost_skill_value_to(skill, target_value, silent, current) /** diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index d6596581a8..3f44876678 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -840,7 +840,7 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb // Called when a mob tries to use the item as a tool. // Handles most checks. -/obj/item/proc/use_tool(atom/target, mob/living/user, delay, amount=0, volume=0, datum/callback/extra_checks, skill_gain_mult = 1, max_level = INFINITY) +/obj/item/proc/use_tool(atom/target, mob/living/user, delay, amount=0, volume=0, datum/callback/extra_checks, skill_gain_mult = STD_USE_TOOL_MULT) // No delay means there is no start message, and no reason to call tool_start_check before use_tool. // Run the start check here so we wouldn't have to call it manually. if(!delay && !tool_start_check(user, amount)) @@ -885,7 +885,8 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb for(var/skill in used_skills) if(!(SKILL_TRAINING_TOOL in used_skills[skill])) continue - user.mind.auto_gain_experience(skill, gain*skill_gain_mult, max_level) + var/datum/skill/S = GLOB.skill_datums[skill] + user.mind.auto_gain_experience(skill, gain*skill_gain_mult*S.item_skill_gain_multi) return TRUE diff --git a/code/game/objects/items/grenades/chem_grenade.dm b/code/game/objects/items/grenades/chem_grenade.dm index 4ce0e811c3..f06dd634c6 100644 --- a/code/game/objects/items/grenades/chem_grenade.dm +++ b/code/game/objects/items/grenades/chem_grenade.dm @@ -97,7 +97,7 @@ to_chat(user, "You add [A] to the [initial(name)] assembly.") else if(stage == EMPTY && istype(I, /obj/item/stack/cable_coil)) - if (I.use_tool(src, user, 0, 1, max_level = JOB_SKILL_BASIC)) + if (I.use_tool(src, user, 0, 1, skill_gain_mult = TRIVIAL_USE_TOOL_MULT)) det_time = 50 // In case the cable_coil was removed and readded. stage_change(WIRED) to_chat(user, "You rig the [initial(name)] assembly.") diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index 57af862b69..d4baea2487 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -69,7 +69,7 @@ GLOBAL_LIST_INIT(glass_recipes, list ( \ if (get_amount() < 1 || CC.get_amount() < 5) to_chat(user, "You attach wire to the [name].") var/obj/item/stack/light_w/new_tile = new(user.loc) diff --git a/code/modules/hydroponics/plant_genes.dm b/code/modules/hydroponics/plant_genes.dm index b18f4396d6..a666a36099 100644 --- a/code/modules/hydroponics/plant_genes.dm +++ b/code/modules/hydroponics/plant_genes.dm @@ -392,7 +392,7 @@ /datum/plant_gene/trait/battery/on_attackby(obj/item/reagent_containers/food/snacks/grown/G, obj/item/I, mob/user) if(istype(I, /obj/item/stack/cable_coil)) - if(I.use_tool(src, user, 0, 5, max_level = JOB_SKILL_EXPERT)) + if(I.use_tool(src, user, 0, 5, skill_gain_mult = TRIVIAL_USE_TOOL_MULT)) to_chat(user, "You add some cable to [G] and slide it inside the battery encasing.") var/obj/item/stock_parts/cell/potato/pocell = new /obj/item/stock_parts/cell/potato(user.loc) pocell.icon_state = G.icon_state diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm index b3462773d8..8bc9cc4512 100644 --- a/code/modules/mining/ores_coins.dm +++ b/code/modules/mining/ores_coins.dm @@ -390,7 +390,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ to_chat(user, "There already is a string attached to this coin!") return - if (W.use_tool(src, user, 0, 1, max_level = JOB_SKILL_BASIC)) + if (W.use_tool(src, user, 0, 1, skill_gain_mult = BARE_USE_TOOL_MULT)) add_overlay("coin_string_overlay") string_attached = 1 to_chat(user, "You attach a string to the coin.") diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 633135b3d2..51cff93ceb 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -315,7 +315,7 @@ if (getFireLoss() > 0 || getToxLoss() > 0) if(src == user) to_chat(user, "You start fixing yourself...") - if(!W.use_tool(src, user, 50, 1, max_level = JOB_SKILL_TRAINED)) + if(!W.use_tool(src, user, 50, 1, skill_gain_mult = TRIVIAL_USE_TOOL_MULT)) to_chat(user, "You need more cable to repair [src]!") return adjustFireLoss(-10) diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index c18eebbb55..f911a6a4e4 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -118,7 +118,7 @@ return if(istype(W, /obj/item/stack/cable_coil)) - if(W.use_tool(src, user, 0, 1, max_level = JOB_SKILL_TRAINED)) + if(W.use_tool(src, user, 0, 1, skill_gain_mult = TRIVIAL_USE_TOOL_MULT)) icon_state = "[fixture_type]-construct-stage2" stage = 2 user.visible_message("[user.name] adds wires to [src].", \ diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm index f34dbc6abc..b64b1c74ba 100644 --- a/code/modules/projectiles/guns/ballistic/revolver.dm +++ b/code/modules/projectiles/guns/ballistic/revolver.dm @@ -336,7 +336,7 @@ /obj/item/gun/ballistic/revolver/doublebarrel/improvised/attackby(obj/item/A, mob/user, params) ..() if(istype(A, /obj/item/stack/cable_coil) && !sawn_off) - if(A.use_tool(src, user, 0, 10, max_level = JOB_SKILL_BASIC)) + if(A.use_tool(src, user, 0, 10, skill_gain_mult = EASY_USE_TOOL_MULT)) slot_flags = ITEM_SLOT_BACK to_chat(user, "You tie the lengths of cable to the shotgun, making a sling.") slung = TRUE diff --git a/code/modules/projectiles/guns/ballistic/shotgun.dm b/code/modules/projectiles/guns/ballistic/shotgun.dm index a4a4065959..873b129c8f 100644 --- a/code/modules/projectiles/guns/ballistic/shotgun.dm +++ b/code/modules/projectiles/guns/ballistic/shotgun.dm @@ -156,7 +156,7 @@ /obj/item/gun/ballistic/shotgun/boltaction/improvised/attackby(obj/item/A, mob/user, params) ..() if(istype(A, /obj/item/stack/cable_coil) && !sawn_off) - if(A.use_tool(src, user, 0, 10, max_level = JOB_SKILL_BASIC)) + if(A.use_tool(src, user, 0, 10, skill_gain_mult = EASY_USE_TOOL_MULT)) slot_flags = ITEM_SLOT_BACK to_chat(user, "You tie the lengths of cable to the rifle, making a sling.") slung = TRUE From 05591ee04c9aed13034b2774f5ed4f06e86fe1e4 Mon Sep 17 00:00:00 2001 From: kappa-sama <44128284+kappa-sama@users.noreply.github.com> Date: Fri, 3 Jul 2020 05:40:18 -0400 Subject: [PATCH 46/64] better --- code/modules/projectiles/guns/ballistic/bow.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/projectiles/guns/ballistic/bow.dm b/code/modules/projectiles/guns/ballistic/bow.dm index 4bd7d34fe2..dbf249b3f8 100644 --- a/code/modules/projectiles/guns/ballistic/bow.dm +++ b/code/modules/projectiles/guns/ballistic/bow.dm @@ -59,7 +59,7 @@ /obj/item/gun/ballistic/bow/pipe name = "pipe bow" - desc = "Some sort of pipe made projectile weapon made of a durathread string and lots of bending. Used to fire arrows." + desc = "Some sort of pipe-based projectile weapon made of string and lots of bending. Used to fire arrows." icon_state = "pipebow" item_state = "pipebow" - force = 0 + force = 2 From ea8662572b08dc723ca0f69542865159ff4d7973 Mon Sep 17 00:00:00 2001 From: Ghom <42542238+Ghommie@users.noreply.github.com> Date: Fri, 3 Jul 2020 17:37:03 +0200 Subject: [PATCH 47/64] Silences the skill panel check_rights() call. --- code/datums/skills/_check_skills.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/datums/skills/_check_skills.dm b/code/datums/skills/_check_skills.dm index 2421bd36ff..d02a716b8a 100644 --- a/code/datums/skills/_check_skills.dm +++ b/code/datums/skills/_check_skills.dm @@ -40,7 +40,7 @@ . = list() .["playername"] = owner.name .["see_skill_mods"] = see_skill_mods - .["admin"] = check_rights(R_DEBUG) + .["admin"] = check_rights(R_DEBUG, FALSE) /datum/skill_holder/ui_act(action, params) . = ..() From bde80eb1fb4d2a9fedebe9cbbe65f60410acdbdc Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Fri, 3 Jul 2020 19:02:20 +0200 Subject: [PATCH 48/64] Fixing obscured inventory slots (un)equip block, for real. --- code/game/objects/items.dm | 15 ++++++++++++++- .../mob/living/carbon/alien/humanoid/inventory.dm | 5 ----- tgstation.dme | 1 - 3 files changed, 14 insertions(+), 7 deletions(-) delete mode 100644 code/modules/mob/living/carbon/alien/humanoid/inventory.dm diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 9f1b830cf0..e998cf69bd 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -68,6 +68,7 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb var/click_delay = CLICK_CD_MELEE var/slot_flags = 0 //This is used to determine on which slots an item can fit. + var/current_equipped_slot pass_flags = PASSTABLE pressure_resistance = 4 var/obj/item/master = null @@ -315,6 +316,10 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb return if(anchored) return + if(loc == user && current_equipped_slot && current_equipped_slot != SLOT_HANDS) + if(current_equipped_slot in user.check_obscured_slots()) + to_chat(src, "You are unable to unequip that while wearing other garments over it!") + return FALSE if(resistance_flags & ON_FIRE) var/mob/living/carbon/C = user @@ -336,7 +341,7 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb C.update_damage_overlays() return - if(acid_level > 20 && !ismob(loc))// so we can still remove the clothes on us that have acid. + if(acid_level > 20 && ismob(loc))// so we can still remove the clothes on us that have acid. var/mob/living/carbon/C = user if(istype(C)) if(!C.gloves || (!(C.gloves.resistance_flags & (UNACIDABLE|ACID_PROOF)))) @@ -379,6 +384,11 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb return if(anchored) return + if(loc == user && current_equipped_slot && current_equipped_slot != SLOT_HANDS) + if(current_equipped_slot in user.check_obscured_slots()) + to_chat(src, "You are unable to unequip that while wearing other garments over it!") + return FALSE + SEND_SIGNAL(loc, COMSIG_TRY_STORAGE_TAKE, src, user.loc, TRUE) @@ -423,6 +433,7 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb /obj/item/proc/dropped(mob/user) SHOULD_CALL_PARENT(TRUE) + current_equipped_slot = null for(var/X in actions) var/datum/action/A = X A.Remove(user) @@ -470,7 +481,9 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb // for items that can be placed in multiple slots // note this isn't called during the initial dressing of a player /obj/item/proc/equipped(mob/user, slot) + SHOULD_CALL_PARENT(TRUE) . = SEND_SIGNAL(src, COMSIG_ITEM_EQUIPPED, user, slot) + current_equipped_slot = slot if(!(. & COMPONENT_NO_GRANT_ACTIONS)) for(var/X in actions) var/datum/action/A = X diff --git a/code/modules/mob/living/carbon/alien/humanoid/inventory.dm b/code/modules/mob/living/carbon/alien/humanoid/inventory.dm deleted file mode 100644 index e2537f0f4f..0000000000 --- a/code/modules/mob/living/carbon/alien/humanoid/inventory.dm +++ /dev/null @@ -1,5 +0,0 @@ -/mob/living/carbon/alien/humanoid/doUnEquip(obj/item/I) - . = ..() - if(!. || !I) - return - diff --git a/tgstation.dme b/tgstation.dme index c43a6de0e4..736c9de89d 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -2415,7 +2415,6 @@ #include "code\modules\mob\living\carbon\alien\humanoid\death.dm" #include "code\modules\mob\living\carbon\alien\humanoid\humanoid.dm" #include "code\modules\mob\living\carbon\alien\humanoid\humanoid_defense.dm" -#include "code\modules\mob\living\carbon\alien\humanoid\inventory.dm" #include "code\modules\mob\living\carbon\alien\humanoid\life.dm" #include "code\modules\mob\living\carbon\alien\humanoid\queen.dm" #include "code\modules\mob\living\carbon\alien\humanoid\update_icons.dm" From e3b1ca49426d3d8471e3c3c1743b25b918d52c93 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Fri, 3 Jul 2020 19:57:38 +0200 Subject: [PATCH 49/64] Linter. --- code/_onclick/telekinesis.dm | 3 +-- code/datums/martial/boxing.dm | 6 ++---- code/datums/martial/krav_maga.dm | 5 ++--- code/datums/martial/wrestling.dm | 8 +++----- code/game/objects/items/cigs_lighters.dm | 1 + code/game/objects/items/robot/robot_items.dm | 1 + code/modules/awaymissions/mission_code/Academy.dm | 2 ++ .../modules/mob/living/carbon/alien/special/facehugger.dm | 3 ++- 8 files changed, 14 insertions(+), 15 deletions(-) diff --git a/code/_onclick/telekinesis.dm b/code/_onclick/telekinesis.dm index 6cf01ec8ff..f95ebf82b5 100644 --- a/code/_onclick/telekinesis.dm +++ b/code/_onclick/telekinesis.dm @@ -102,9 +102,8 @@ //stops TK grabs being equipped anywhere but into hands /obj/item/tk_grab/equipped(mob/user, slot) if(slot == SLOT_HANDS) - return + return ..() qdel(src) - return /obj/item/tk_grab/examine(user) if (focus) diff --git a/code/datums/martial/boxing.dm b/code/datums/martial/boxing.dm index e3c7726d61..4682595aec 100644 --- a/code/datums/martial/boxing.dm +++ b/code/datums/martial/boxing.dm @@ -58,12 +58,10 @@ var/datum/martial_art/boxing/style = new /obj/item/clothing/gloves/boxing/equipped(mob/user, slot) - if(!ishuman(user)) - return - if(slot == SLOT_GLOVES) + . = ..() + if(ishuman(user) && slot == SLOT_GLOVES) var/mob/living/carbon/human/H = user style.teach(H,TRUE) - return /obj/item/clothing/gloves/boxing/dropped(mob/user) . = ..() diff --git a/code/datums/martial/krav_maga.dm b/code/datums/martial/krav_maga.dm index 50438d9d8d..c2fe24a20d 100644 --- a/code/datums/martial/krav_maga.dm +++ b/code/datums/martial/krav_maga.dm @@ -196,9 +196,8 @@ var/datum/martial_art/krav_maga/style = new /obj/item/clothing/gloves/krav_maga/equipped(mob/user, slot) - if(!ishuman(user)) - return - if(slot == SLOT_GLOVES) + . = ..() + if(ishuman(user) && slot == SLOT_GLOVES) var/mob/living/carbon/human/H = user style.teach(H,1) diff --git a/code/datums/martial/wrestling.dm b/code/datums/martial/wrestling.dm index 87fcf78964..18fd8e7b18 100644 --- a/code/datums/martial/wrestling.dm +++ b/code/datums/martial/wrestling.dm @@ -377,7 +377,7 @@ var/turf/ST = null var/falling = 0 var/damage = damage_roll(A,D) - + for (var/obj/O in oview(1, A)) if (O.density == 1) if (O == A) @@ -472,12 +472,10 @@ var/datum/martial_art/wrestling/style = new /obj/item/storage/belt/champion/wrestling/equipped(mob/user, slot) - if(!ishuman(user)) - return - if(slot == SLOT_BELT) + . = ..() + if(ishuman(user) && slot == SLOT_BELT) var/mob/living/carbon/human/H = user style.teach(H,1) - return /obj/item/storage/belt/champion/wrestling/dropped(mob/user) . = ..() diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm index bfbacb1a34..de32375642 100644 --- a/code/game/objects/items/cigs_lighters.dm +++ b/code/game/objects/items/cigs_lighters.dm @@ -794,6 +794,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM reagents.clear_reagents() /obj/item/clothing/mask/vape/equipped(mob/user, slot) + . = ..() if(slot == SLOT_WEAR_MASK) if(!screw) to_chat(user, "You start puffing on the vape.") diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm index 4b8728e426..1f69cdae2e 100644 --- a/code/game/objects/items/robot/robot_items.dm +++ b/code/game/objects/items/robot/robot_items.dm @@ -355,6 +355,7 @@ emaggedhitdamage = 0 /obj/item/borg/lollipop/equipped() + . = ..() check_amount() /obj/item/borg/lollipop/dropped(mob/user) diff --git a/code/modules/awaymissions/mission_code/Academy.dm b/code/modules/awaymissions/mission_code/Academy.dm index f714a86f22..129e6d7a2b 100644 --- a/code/modules/awaymissions/mission_code/Academy.dm +++ b/code/modules/awaymissions/mission_code/Academy.dm @@ -189,6 +189,8 @@ if(!ishuman(user) || !user.mind || (user.mind in SSticker.mode.wizards)) to_chat(user, "You feel the magic of the dice is restricted to ordinary humans! You should leave it alone.") user.dropItemToGround(src) + return + return ..() /obj/item/dice/d20/fate/proc/effect(var/mob/living/carbon/human/user,roll) diff --git a/code/modules/mob/living/carbon/alien/special/facehugger.dm b/code/modules/mob/living/carbon/alien/special/facehugger.dm index eb1b38b9ff..e35c905539 100644 --- a/code/modules/mob/living/carbon/alien/special/facehugger.dm +++ b/code/modules/mob/living/carbon/alien/special/facehugger.dm @@ -88,6 +88,7 @@ Die() /obj/item/clothing/mask/facehugger/equipped(mob/M) + . = ..() Attach(M) /obj/item/clothing/mask/facehugger/Crossed(atom/target) @@ -254,7 +255,7 @@ return FALSE if(AmBloodsucker(M)) return FALSE - + if(ismonkey(M)) return 1 From 7c21f7bd4ee1e01a6334304e37821f0dba6d6b7a Mon Sep 17 00:00:00 2001 From: BlackMajor Date: Sat, 4 Jul 2020 17:17:34 +1200 Subject: [PATCH 50/64] [s] Don't give these to your kids for christmas Someone did a fucky wucky. --- code/game/objects/items/toys.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index aa2c6d1c88..870bf5fe07 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -451,7 +451,7 @@ /obj/item/dualsaber/toy/ComponentInitialize() . = ..() - AddComponent(/datum/component/two_handed, wieldsound='sound/weapons/saberon.ogg', unwieldsound='sound/weapons/saberoff.ogg') + AddComponent(/datum/component/two_handed, force_unwielded=0, force_wielded=0, wieldsound='sound/weapons/saberon.ogg', unwieldsound='sound/weapons/saberoff.ogg') /obj/item/dualsaber/toy/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return) return BLOCK_NONE @@ -469,9 +469,9 @@ slowdown_wielded = 0 sharpness = IS_BLUNT -/obj/item/dualsaber/toy/ComponentInitialize() +/obj/item/dualsaber/hypereutactic/toy/ComponentInitialize() . = ..() - AddComponent(/datum/component/two_handed, wieldsound='sound/weapons/saberon.ogg', unwieldsound='sound/weapons/saberoff.ogg') + AddComponent(/datum/component/two_handed, force_unwielded=0, force_wielded=0, wieldsound='sound/weapons/saberon.ogg', unwieldsound='sound/weapons/saberoff.ogg') /obj/item/dualsaber/hypereutactic/toy/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return) return BLOCK_NONE From cece7ecaad855d51e92df1fe2ee95ebfe4406408 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 4 Jul 2020 02:10:33 -0500 Subject: [PATCH 51/64] Automatic changelog generation for PR #12685 [ci skip] --- html/changelogs/AutoChangeLog-pr-12685.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-12685.yml diff --git a/html/changelogs/AutoChangeLog-pr-12685.yml b/html/changelogs/AutoChangeLog-pr-12685.yml new file mode 100644 index 0000000000..09f58d55c2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-12685.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Opening the View Skill Panel shouldn't trigger messages about insufficient admin priviledges anymore." From fdfe76d0a0618b5d0bad805eff9ed8b72117aae8 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 4 Jul 2020 02:11:12 -0500 Subject: [PATCH 52/64] Automatic changelog generation for PR #12658 [ci skip] --- html/changelogs/AutoChangeLog-pr-12658.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-12658.yml diff --git a/html/changelogs/AutoChangeLog-pr-12658.yml b/html/changelogs/AutoChangeLog-pr-12658.yml new file mode 100644 index 0000000000..593cc48c54 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-12658.yml @@ -0,0 +1,4 @@ +author: "timothyteakettle" +delete-after: True +changes: + - tweak: "cooking oil is now far less lethal, requiring a higher volume of the reagent to deal more damage" From 671b955b4b473578ea32353f623cf7af0162a415 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 4 Jul 2020 02:11:48 -0500 Subject: [PATCH 53/64] Automatic changelog generation for PR #12662 [ci skip] --- html/changelogs/AutoChangeLog-pr-12662.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-12662.yml diff --git a/html/changelogs/AutoChangeLog-pr-12662.yml b/html/changelogs/AutoChangeLog-pr-12662.yml new file mode 100644 index 0000000000..a7401a308f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-12662.yml @@ -0,0 +1,6 @@ +author: "kappa-sama" +delete-after: True +changes: + - rscadd: "cloth string to replace durathread string" + - rscdel: "durathread string" + - balance: "All bows and arrows have had crafting times significantly reduced, coming out at up to 6 times faster crafting speeds. Improvised bows no longer require durathread; instead, they use cloth materials." From f3f942925744333329ba616e16d2a9b363489208 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 4 Jul 2020 02:12:40 -0500 Subject: [PATCH 54/64] Automatic changelog generation for PR #12677 [ci skip] --- html/changelogs/AutoChangeLog-pr-12677.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-12677.yml diff --git a/html/changelogs/AutoChangeLog-pr-12677.yml b/html/changelogs/AutoChangeLog-pr-12677.yml new file mode 100644 index 0000000000..769426f492 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-12677.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "You can now actually gain wiring experience from using cable coils." From ae5fb008c737759defbdf9e2c385ad370e9c95fe Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Sat, 4 Jul 2020 00:13:34 -0700 Subject: [PATCH 55/64] Update client_defines.dm --- code/modules/client/client_defines.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/client/client_defines.dm b/code/modules/client/client_defines.dm index 0402dc683f..0901c110b9 100644 --- a/code/modules/client/client_defines.dm +++ b/code/modules/client/client_defines.dm @@ -19,6 +19,8 @@ ///Next tick to reset the total message counter var/total_count_reset = 0 var/ircreplyamount = 0 + /// last time they tried to do an autobunker auth + var/autobunker_last_try = 0 ///////// //OTHER// From 03aa8fcc2be56615e5f8b8e1f89d4f72c6d5726e Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Sat, 4 Jul 2020 00:14:32 -0700 Subject: [PATCH 56/64] Update autobunker.dm --- code/modules/client/verbs/autobunker.dm | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/code/modules/client/verbs/autobunker.dm b/code/modules/client/verbs/autobunker.dm index 8954901eef..03200c5f0b 100644 --- a/code/modules/client/verbs/autobunker.dm +++ b/code/modules/client/verbs/autobunker.dm @@ -3,11 +3,10 @@ set desc = "Authorizes your account in the panic bunker of any servers connected to this function." set category = "OOC" - var/static/lastuse = 0 - if(lastuse + 5 SECONDS > world.time) + if(autobunker_last_try + 5 SECONDS > world.time) to_chat(src, "Function on cooldown, try again in 5 seconds.") return - lastuse = world.time + autobunker_last_try = world.time world.send_cross_server_bunker_overrides(key, src) @@ -24,9 +23,7 @@ if(!length(servers)) to_chat(C, "AUTOBUNKER: No servers are configured to receive from this one.") return - var/logtext = "[key] ([key_name(C)]) has initiated an autobunker authentication with linked servers." - message_admins(logtext) - log_admin(logtext) + log_admin("[key] ([key_name(C)]) has initiated an autobunker authentication with linked servers.") for(var/name in servers) var/returned = world.Export("[servers[name]]?[list2params(message)]") switch(returned) From afdf8c698a4cd123088dbcc0bc026ed944c6286b Mon Sep 17 00:00:00 2001 From: BlackMajor Date: Sat, 4 Jul 2020 19:30:20 +1200 Subject: [PATCH 57/64] fuck --- code/game/objects/items/toys.dm | 2 -- 1 file changed, 2 deletions(-) diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 870bf5fe07..bf1eca01f9 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -450,7 +450,6 @@ sharpness = IS_BLUNT /obj/item/dualsaber/toy/ComponentInitialize() - . = ..() AddComponent(/datum/component/two_handed, force_unwielded=0, force_wielded=0, wieldsound='sound/weapons/saberon.ogg', unwieldsound='sound/weapons/saberoff.ogg') /obj/item/dualsaber/toy/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return) @@ -470,7 +469,6 @@ sharpness = IS_BLUNT /obj/item/dualsaber/hypereutactic/toy/ComponentInitialize() - . = ..() AddComponent(/datum/component/two_handed, force_unwielded=0, force_wielded=0, wieldsound='sound/weapons/saberon.ogg', unwieldsound='sound/weapons/saberoff.ogg') /obj/item/dualsaber/hypereutactic/toy/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return) From ca6fc8d81307cd7d6f6a9e96e7c16bc09bc3ad95 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Sat, 4 Jul 2020 06:48:00 -0700 Subject: [PATCH 58/64] Update revenant.dm --- code/modules/antagonists/revenant/revenant.dm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/code/modules/antagonists/revenant/revenant.dm b/code/modules/antagonists/revenant/revenant.dm index 3ddb4e67ee..c8119818b1 100644 --- a/code/modules/antagonists/revenant/revenant.dm +++ b/code/modules/antagonists/revenant/revenant.dm @@ -38,7 +38,7 @@ response_harm_continuous = "punches through" response_harm_simple = "punch through" unsuitable_atmos_damage = 0 - damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 0, CLONE = 0, STAMINA = 0, OXY = 0) //I don't know how you'd apply those, but revenants no-sell them anyway. + damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 0, CLONE = 0, STAMINA = 0, OXY = 0) //I down't know how you'd apply those, but revenants no-sell them anyway. atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 maxbodytemp = INFINITY @@ -108,8 +108,7 @@ //Life, Stat, Hud Updates, and Say /mob/living/simple_animal/revenant/BiologicalLife(seconds, times_fired) - if(!(. = ..())) - return + . = ..() if(stasis) return if(revealed && essence <= 0) From c5b94a4d0021340d3c13beae38442058ae083ba1 Mon Sep 17 00:00:00 2001 From: Ghom <42542238+Ghommie@users.noreply.github.com> Date: Sat, 4 Jul 2020 18:30:01 +0200 Subject: [PATCH 59/64] Update code/modules/antagonists/revenant/revenant.dm --- code/modules/antagonists/revenant/revenant.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/antagonists/revenant/revenant.dm b/code/modules/antagonists/revenant/revenant.dm index c8119818b1..4e08ad2382 100644 --- a/code/modules/antagonists/revenant/revenant.dm +++ b/code/modules/antagonists/revenant/revenant.dm @@ -38,7 +38,7 @@ response_harm_continuous = "punches through" response_harm_simple = "punch through" unsuitable_atmos_damage = 0 - damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 0, CLONE = 0, STAMINA = 0, OXY = 0) //I down't know how you'd apply those, but revenants no-sell them anyway. + damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 0, CLONE = 0, STAMINA = 0, OXY = 0) //I don't know how you'd apply those, but revenants no-sell them anyway. atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 maxbodytemp = INFINITY From c5a88f1cb700862dd918b07c98adc9bd28d72ef4 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 4 Jul 2020 11:35:25 -0500 Subject: [PATCH 60/64] Automatic changelog generation for PR #12660 [ci skip] --- html/changelogs/AutoChangeLog-pr-12660.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-12660.yml diff --git a/html/changelogs/AutoChangeLog-pr-12660.yml b/html/changelogs/AutoChangeLog-pr-12660.yml new file mode 100644 index 0000000000..6e82ac9553 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-12660.yml @@ -0,0 +1,7 @@ +author: "Yakumo Chen, kappa-sama" +delete-after: True +changes: + - rscdel: "Removes improvised handguns" + - rscdel: "removed handsaws, improvised gun barrels (you can use atmos pipes again)" + - balance: "Guncrafting is less time and resource intensive" + - tweak: "Item names in guncrafting are user-friendly." From 21209ada0352946203cb024ffdb79900d2b51807 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 4 Jul 2020 11:37:02 -0500 Subject: [PATCH 61/64] Automatic changelog generation for PR #12593 [ci skip] --- html/changelogs/AutoChangeLog-pr-12593.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-12593.yml diff --git a/html/changelogs/AutoChangeLog-pr-12593.yml b/html/changelogs/AutoChangeLog-pr-12593.yml new file mode 100644 index 0000000000..97e505ad86 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-12593.yml @@ -0,0 +1,4 @@ +author: "silicons" +delete-after: True +changes: + - rscadd: "auto bunker override verb has been added" From 27d4bcab18d531af42ea5cd0bf445112848c342a Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 4 Jul 2020 14:12:46 -0500 Subject: [PATCH 62/64] Automatic changelog generation for PR #12652 [ci skip] --- html/changelogs/AutoChangeLog-pr-12652.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-12652.yml diff --git a/html/changelogs/AutoChangeLog-pr-12652.yml b/html/changelogs/AutoChangeLog-pr-12652.yml new file mode 100644 index 0000000000..8afd951deb --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-12652.yml @@ -0,0 +1,4 @@ +author: "silicons" +delete-after: True +changes: + - rscadd: "Cybernetic implant shields will auto-extend and be used to block if the user has no item to block with" From 3200bbb6db974e7c6d628290cb0535b4babf8bb1 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 4 Jul 2020 14:13:21 -0500 Subject: [PATCH 63/64] Automatic changelog generation for PR #12650 [ci skip] --- html/changelogs/AutoChangeLog-pr-12650.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-12650.yml diff --git a/html/changelogs/AutoChangeLog-pr-12650.yml b/html/changelogs/AutoChangeLog-pr-12650.yml new file mode 100644 index 0000000000..f0187f97c4 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-12650.yml @@ -0,0 +1,4 @@ +author: "silicons" +delete-after: True +changes: + - tweak: "active blocking now has a toggle keybind" From 4f5d262ee31ccc0b8b519b88f1d4f298c75eca11 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 4 Jul 2020 14:16:09 -0500 Subject: [PATCH 64/64] Automatic changelog generation for PR #12651 [ci skip] --- html/changelogs/AutoChangeLog-pr-12651.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-12651.yml diff --git a/html/changelogs/AutoChangeLog-pr-12651.yml b/html/changelogs/AutoChangeLog-pr-12651.yml new file mode 100644 index 0000000000..018674e83a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-12651.yml @@ -0,0 +1,4 @@ +author: "silicons" +delete-after: True +changes: + - balance: "shields take 2.5 stam instead of 3.5 stam per second to maintain block"