From 4f87b970f477fb69ae4698732024d12ea496b457 Mon Sep 17 00:00:00 2001 From: jjpark-kb <55967837+jjpark-kb@users.noreply.github.com> Date: Wed, 30 Jun 2021 16:05:54 -0400 Subject: [PATCH] [modular] wirebrush (#6521) * [modular] wirebrush * code cleanup and better --- code/modules/research/techweb/all_nodes.dm | 5 + .../code/game/objects/items/wirebrush.dm | 39 +++++++ .../kitchen_machinery/microwave.dm | 99 ++++++++++++++++++ .../modules/research/designs/misc_designs.dm | 23 ++++ .../wirebrush_rust/icons/obj/wirebrush.dmi | Bin 0 -> 408 bytes .../modules/wirebrush_rust/readme.md | 19 ++++ .../wirebrush_rust/sound/items/wirebrush.ogg | Bin 0 -> 24892 bytes tgstation.dme | 3 + 8 files changed, 188 insertions(+) create mode 100644 modular_skyrat/modules/wirebrush_rust/code/game/objects/items/wirebrush.dm create mode 100644 modular_skyrat/modules/wirebrush_rust/code/modules/food_and_drinks/kitchen_machinery/microwave.dm create mode 100644 modular_skyrat/modules/wirebrush_rust/code/modules/research/designs/misc_designs.dm create mode 100644 modular_skyrat/modules/wirebrush_rust/icons/obj/wirebrush.dmi create mode 100644 modular_skyrat/modules/wirebrush_rust/readme.md create mode 100644 modular_skyrat/modules/wirebrush_rust/sound/items/wirebrush.ogg diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index 032af1b4305..e44c749d033 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -162,6 +162,7 @@ "bowl", "drinking_glass", "shot_glass", + "wirebrush", //SKYRAT EDIT END - RESEARCH DESIGNS ) @@ -1225,6 +1226,10 @@ "light_replacer", "paint_remover", "spraybottle", + + //SKYRAT EDIT START - RESEARCH DESIGNS + "wirebrush_adv", + //SKYRAT EDIT END - RESEARCH DESIGNS ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 4000) discount_experiments = list(/datum/experiment/scanning/random/janitor_trash = 3000) //75% discount for scanning some trash, seems fair right? diff --git a/modular_skyrat/modules/wirebrush_rust/code/game/objects/items/wirebrush.dm b/modular_skyrat/modules/wirebrush_rust/code/game/objects/items/wirebrush.dm new file mode 100644 index 00000000000..30a1c5c8331 --- /dev/null +++ b/modular_skyrat/modules/wirebrush_rust/code/game/objects/items/wirebrush.dm @@ -0,0 +1,39 @@ +/obj/item/wirebrush + name = "wirebrush" + desc = "A tool that is used to scrub the rust thoroughly off walls. Not for hair or fur!" + icon = 'modular_skyrat/modules/wirebrush_rust/icons/obj/wirebrush.dmi' + icon_state = "wirebrush" + ///variable that determines how long it takes to "clean" (read: replace(?)) rusted walls. + var/clean_speed = 30 //3 seconds + +/obj/item/wirebrush/proc/attempt_clean(c_target, c_user, c_path) + var/turf/rustedTurf = c_target + if(!do_after(c_user, clean_speed, target = rustedTurf)) + to_chat(c_user, span_warning("You stop cleaning, leaving the [rustedTurf] still rusty!")) + return + rustedTurf.ChangeTurf(c_path) + playsound(c_user, 'modular_skyrat/modules/wirebrush_rust/sound/items/wirebrush.ogg', 100, TRUE) + to_chat(c_user, span_notice("You clean \the [rustedTurf].")) + return + +/obj/item/wirebrush/afterattack(atom/target, mob/user, proximity_flag, click_parameters) + . = ..() + if(get_dist(target, user) > 1) + return + if(!isturf(target)) + return + if(istype(target, /turf/open/floor/plating/rust)) + attempt_clean(target, user, /turf/open/floor/plating) + else if(istype(target, /turf/closed/wall/rust)) + attempt_clean(target, user, /turf/closed/wall) + else if(istype(target, /turf/closed/wall/r_wall/rust)) + attempt_clean(target, user, /turf/closed/wall/r_wall) + else + to_chat(user, span_warning("You may only use this tool on walls or floors with rust!")) + +/obj/item/wirebrush/advanced + name = "advanced wirebrush" + desc = "A tool that is slightly better than its basic version; cleans much faster. Not for hair or fur!" + icon_state = "wirebrush_adv" + + clean_speed = 0 //no wait time essentially diff --git a/modular_skyrat/modules/wirebrush_rust/code/modules/food_and_drinks/kitchen_machinery/microwave.dm b/modular_skyrat/modules/wirebrush_rust/code/modules/food_and_drinks/kitchen_machinery/microwave.dm new file mode 100644 index 00000000000..65f32d0a6c2 --- /dev/null +++ b/modular_skyrat/modules/wirebrush_rust/code/modules/food_and_drinks/kitchen_machinery/microwave.dm @@ -0,0 +1,99 @@ +/obj/machinery/microwave/attackby(obj/item/O, mob/living/user, params) + if(operating) + return + if(default_deconstruction_crowbar(O)) + return + + if(dirty < 100) + if(default_deconstruction_screwdriver(user, icon_state, icon_state, O) || default_unfasten_wrench(user, O)) + update_appearance() + return + + if(panel_open && is_wire_tool(O)) + wires.interact(user) + return TRUE + + if(broken > 0) + if(broken == 2 && O.tool_behaviour == TOOL_WIRECUTTER) // If it's broken and they're using a screwdriver + user.visible_message(span_notice("[user] starts to fix part of \the [src]."), span_notice("You start to fix part of \the [src]...")) + if(O.use_tool(src, user, 20)) + user.visible_message(span_notice("[user] fixes part of \the [src]."), span_notice("You fix part of \the [src].")) + broken = 1 // Fix it a bit + else if(broken == 1 && O.tool_behaviour == TOOL_WELDER) // If it's broken and they're doing the wrench + user.visible_message(span_notice("[user] starts to fix part of \the [src]."), span_notice("You start to fix part of \the [src]...")) + if(O.use_tool(src, user, 20)) + user.visible_message(span_notice("[user] fixes \the [src]."), span_notice("You fix \the [src].")) + broken = 0 + update_appearance() + return FALSE //to use some fuel + else + to_chat(user, span_warning("It's broken!")) + return TRUE + return + + if(istype(O, /obj/item/reagent_containers/spray)) + var/obj/item/reagent_containers/spray/clean_spray = O + if(clean_spray.reagents.has_reagent(/datum/reagent/space_cleaner, clean_spray.amount_per_transfer_from_this)) + clean_spray.reagents.remove_reagent(/datum/reagent/space_cleaner, clean_spray.amount_per_transfer_from_this,1) + playsound(loc, 'sound/effects/spray3.ogg', 50, TRUE, -6) + user.visible_message(span_notice("[user] cleans \the [src]."), span_notice("You clean \the [src].")) + dirty = 0 + update_appearance() + else + to_chat(user, span_warning("You need more space cleaner!")) + return TRUE + + if(istype(O, /obj/item/soap) || istype(O, /obj/item/reagent_containers/glass/rag)) + var/cleanspeed = 50 + if(istype(O, /obj/item/soap)) + var/obj/item/soap/used_soap = O + cleanspeed = used_soap.cleanspeed + user.visible_message(span_notice("[user] starts to clean \the [src]."), span_notice("You start to clean \the [src]...")) + if(do_after(user, cleanspeed, target = src)) + user.visible_message(span_notice("[user] cleans \the [src]."), span_notice("You clean \the [src].")) + dirty = 0 + update_appearance() + return TRUE + + if(istype(O, /obj/item/wirebrush)) + var/obj/item/wirebrush/usedObj = O + user.visible_message(span_notice("[user] starts to clean \the [src]."), span_notice("You start to clean \the [src]...")) + if(do_after(user, usedObj.clean_speed, target = src)) + user.visible_message(span_notice("[user] cleans \the [src]."), span_notice("You clean \the [src].")) + dirty = 0 + update_appearance() + return TRUE + + if(dirty == 100) // The microwave is all dirty so can't be used! + to_chat(user, span_warning("\The [src] is dirty!")) + return TRUE + + if(istype(O, /obj/item/storage/bag/tray)) + var/obj/item/storage/T = O + var/loaded = 0 + for(var/obj/S in T.contents) + if(!IS_EDIBLE(S)) + continue + if(ingredients.len >= max_n_of_items) + to_chat(user, span_warning("\The [src] is full, you can't put anything in!")) + return TRUE + if(SEND_SIGNAL(T, COMSIG_TRY_STORAGE_TAKE, S, src)) + loaded++ + ingredients += S + if(loaded) + to_chat(user, span_notice("You insert [loaded] items into \the [src].")) + return + + if(O.w_class <= WEIGHT_CLASS_NORMAL && !istype(O, /obj/item/storage) && !user.combat_mode) + if(ingredients.len >= max_n_of_items) + to_chat(user, span_warning("\The [src] is full, you can't put anything in!")) + return TRUE + if(!user.transferItemToLoc(O, src)) + to_chat(user, span_warning("\The [O] is stuck to your hand!")) + return FALSE + + ingredients += O + user.visible_message(span_notice("[user] adds \a [O] to \the [src]."), span_notice("You add [O] to \the [src].")) + return + + ..() diff --git a/modular_skyrat/modules/wirebrush_rust/code/modules/research/designs/misc_designs.dm b/modular_skyrat/modules/wirebrush_rust/code/modules/research/designs/misc_designs.dm new file mode 100644 index 00000000000..95a1670dab9 --- /dev/null +++ b/modular_skyrat/modules/wirebrush_rust/code/modules/research/designs/misc_designs.dm @@ -0,0 +1,23 @@ +///////////////////////////////////////// +////////////Janitor Designs////////////// +///////////////////////////////////////// + +/datum/design/wirebrush + name = "Wirebrush" + desc = "A tool to start removing rust from walls." + id = "wirebrush" + build_type = PROTOLATHE | AWAY_LATHE + materials = list(/datum/material/iron = 200, /datum/material/glass = 200) + build_path = /obj/item/wirebrush + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_SERVICE + +/datum/design/wirebrush_adv + name = "Advanced Wirebrush" + desc = "An advanced tool to start removing rust from walls." + id = "wirebrush_adv" + build_type = PROTOLATHE | AWAY_LATHE + materials = list(/datum/material/iron = 200, /datum/material/glass = 200, /datum/material/uranium = 200, /datum/material/plasma = 200) + build_path = /obj/item/wirebrush/advanced + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_SERVICE diff --git a/modular_skyrat/modules/wirebrush_rust/icons/obj/wirebrush.dmi b/modular_skyrat/modules/wirebrush_rust/icons/obj/wirebrush.dmi new file mode 100644 index 0000000000000000000000000000000000000000..8396c78191ddd524a00d28c6fbe4037e5aaf6e76 GIT binary patch literal 408 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