diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 5a4e6d7255..101e699507 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -270,9 +270,9 @@ Class Procs: if(temp_apc && temp_apc.terminal && temp_apc.terminal.powernet) temp_apc.terminal.powernet.trigger_warning() - return 1 - else - return 0 + if(user.stunned) + return 1 + return 0 /obj/machinery/proc/default_deconstruction_crowbar(var/mob/user, var/obj/item/weapon/crowbar/C) if(!istype(C)) diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index 984da10be6..917d244afa 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -30,7 +30,8 @@ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(5, 1, src) s.start() - return 2 + if(usr.stunned) + return 2 playsound(src.loc, 'sound/machines/click.ogg', 15, 1, -3) for(var/obj/O in src) diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index c78754c7ed..b6407fd376 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -68,12 +68,12 @@ //Flimsy grilles aren't so great at stopping projectiles. However they can absorb some of the impact var/damage = Proj.damage var/passthrough = 0 - + //20% chance that the grille provides a bit more cover than usual. Support structure for example might take up 20% of the grille's area. //If they click on the grille itself then we assume they are aiming at the grille itself and the extra cover behaviour is always used. switch(Proj.damage_type) if(BRUTE) - //bullets + //bullets if(Proj.original == src || prob(20)) Proj.damage *= between(0, Proj.damage/60, 0.5) if(prob(max((damage-10)/25, 0))*100) @@ -86,11 +86,11 @@ if(!(Proj.original == src || prob(20))) Proj.damage *= 0.5 passthrough = 1 - + if(passthrough) . = -1 damage = between(0, (damage - Proj.damage)*(Proj.damage_type == BRUTE? 0.4 : 1), 10) //if the bullet passes through then the grille avoids most of the damage - + src.health -= damage*0.2 spawn(0) healthcheck() //spawn to make sure we return properly if the grille is deleted @@ -139,7 +139,7 @@ if(WINDOW.dir == dir_to_set)//checking this for a 2nd time to check if a window was made while we were waiting. user << "There is already a window facing this way there." return - + var/wtype = ST.created_window if (ST.use(1)) var/obj/structure/window/WD = new wtype(loc, dir_to_set, 1) @@ -197,7 +197,8 @@ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(3, 1, src) s.start() - return 1 + if(user.stunned) + return 1 else return 0 return 0 diff --git a/code/modules/clothing/spacesuits/rig/rig.dm b/code/modules/clothing/spacesuits/rig/rig.dm index d003d64d59..cf0bf7ef79 100644 --- a/code/modules/clothing/spacesuits/rig/rig.dm +++ b/code/modules/clothing/spacesuits/rig/rig.dm @@ -688,27 +688,28 @@ //Todo /obj/item/weapon/rig/proc/malfunction() - return 0 - + return 0 + /obj/item/weapon/rig/emp_act(severity_class) //set malfunctioning if(emp_protection < 30) //for ninjas, really. malfunctioning += 10 if(malfunction_delay <= 0) - malfunction_delay = max(malfunction_delay, round(30/severity_class)) - + malfunction_delay = max(malfunction_delay, round(30/severity_class)) + //drain some charge if(cell) cell.emp_act(severity_class + 15) - + //possibly damage some modules - take_hit((100/severity_class), "electrical pulse", 1) + take_hit((100/severity_class), "electrical pulse", 1) /obj/item/weapon/rig/proc/shock(mob/user) if (electrocute_mob(user, cell, src)) spark_system.start() - return 1 + if(user.stunned) + return 1 return 0 - + /obj/item/weapon/rig/proc/take_hit(damage, source, is_emp=0) if(!installed_modules.len) @@ -740,7 +741,7 @@ dam_module = pick(damaged_modules) else if(valid_modules.len) dam_module = pick(valid_modules) - + if(!dam_module) return dam_module.damage++ @@ -748,11 +749,11 @@ if(!source) source = "hit" - if(wearer) + if(wearer) if(dam_module.damage >= 2) wearer << "The [source] has disabled your [dam_module.interface_name]!" else - wearer << "The [source] has damaged your [dam_module.interface_name]!" + wearer << "The [source] has damaged your [dam_module.interface_name]!" dam_module.deactivate() /obj/item/weapon/rig/proc/malfunction_check(var/mob/living/carbon/human/user) diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 0e98e462b2..6bd96439ce 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -535,7 +535,8 @@ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(5, 1, src) s.start() - return + if(user.stunned) + return C.use(10) user.visible_message(\ "[user.name] has added cables to the APC frame!",\ @@ -555,7 +556,8 @@ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(5, 1, src) s.start() - return + if(usr.stunned) + return new /obj/item/stack/cable_coil(loc,10) user << "You cut the cables and dismantle the power terminal." del(terminal) // qdel diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index 4c0d9dfbf7..d73d60926e 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -193,9 +193,9 @@ By design, d1 is the smallest direction and d2 is the highest var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(5, 1, src) s.start() - return 1 - else - return 0 + if(usr.stunned) + return 1 + return 0 //explosion handling /obj/structure/cable/ex_act(severity) diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index deeeed0084..eec21c1a28 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -275,7 +275,8 @@ s.set_up(5, 1, src) s.start() building_terminal = 0 - return 0 + if(usr.stunned) + return 0 new /obj/item/stack/cable_coil(loc,10) user.visible_message(\ "[user.name] cut the cables and dismantled the power terminal.",\