diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm index b2277c74cf..d17b69f93f 100644 --- a/code/modules/power/singularity/emitter.dm +++ b/code/modules/power/singularity/emitter.dm @@ -200,6 +200,25 @@ user << "You need more welding fuel to complete this task." return + if(istype(W, /obj/item/stack/material) && W.get_material_name() == DEFAULT_WALL_MATERIAL) + var/amt = Ceiling(( initial(integrity) - integrity)/10) + if(!amt) + user << "\The [src] is already fully repaired." + return + var/obj/item/stack/P = W + if(P.amount < amt) + user << "You don't have enough sheets to repair this! You need at least [amt] sheets." + return + user << "You begin repairing \the [src]..." + if(do_after(user, 30)) + if(P.use(amt)) + user << "You have repaired \the [src]." + integrity = initial(integrity) + return + else + user << "You don't have enough sheets to repair this! You need at least [amt] sheets." + return + if(istype(W, /obj/item/weapon/card/id) || istype(W, /obj/item/device/pda)) if(emagged) user << "The lock seems to be broken." @@ -225,10 +244,25 @@ return 1 /obj/machinery/power/emitter/bullet_act(var/obj/item/projectile/P) - if(!P || !P.damage || (!P.damage_type == BRUTE || !P.damage_type == BURN) ) + if(!P || !P.damage || P.get_structure_damage() <= 0 ) return integrity = integrity - P.damage - if(integrity >= 0) - explosion(get_turf(src), 1, 2, 4) + if(integrity <= 0) + if(powernet && avail(active_power_usage)) // If it's powered, it goes boom if killed. + visible_message(src, "\The [src] explodes violently!", "You hear an explosion!") + explosion(get_turf(src), 1, 2, 4) + else + src.visible_message("\The [src] crumples apart!", "You hear metal collapsing.") qdel(src) + +/obj/machinery/power/emitter/examine(mob/user) + ..() + var/integrity_percentage = round((integrity / initial(integrity)) * 100) + switch(integrity_percentage) + if(0 to 30) + user << "\The [src] is close to falling apart!" + if(31 to 70) + user << "\The [src] is damaged." + if(77 to 99) + user << "\The [src] is slightly damaged." diff --git a/html/changelogs/Neerti - EmitterTweaks.yml b/html/changelogs/Neerti - EmitterTweaks.yml new file mode 100644 index 0000000000..b2331a29e2 --- /dev/null +++ b/html/changelogs/Neerti - EmitterTweaks.yml @@ -0,0 +1,38 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: Neerti + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "Emitters can be examined to see if they are damaged. They can also be repaired by applying metal sheets to them." + - tweak: "Emitters now only explode on death if they are on a powered wire with significant power flowing through it." + - bugfix: "Emitters don't explode in one hit, or by tasers or non-damaging projectiles anymore."