diff --git a/code/game/mecha/combat/combat.dm b/code/game/mecha/combat/combat.dm index 7651766f3f0..77087ed32fc 100644 --- a/code/game/mecha/combat/combat.dm +++ b/code/game/mecha/combat/combat.dm @@ -2,7 +2,7 @@ force = 30 var/melee_cooldown = 10 var/melee_can_hit = 1 - var/list/destroyable_obj = list(/obj/mecha, /obj/structure/window, /obj/structure/grille, /turf/simulated/wall) + var/list/destroyable_obj = list(/obj/mecha, /obj/structure/window, /obj/structure/grille, /turf/simulated/wall, /obj/structure/girder) internal_damage_threshold = 50 maint_access = 0 //add_req_access = 0 @@ -95,14 +95,19 @@ if(istype(target, target_type) && hascall(target, "attackby")) src.occupant_message("You hit [target].") src.visible_message("[src.name] hits [target]") - if(!istype(target, /turf/simulated/wall)) + if(!istype(target, /turf/simulated/wall) && !istype(target, /obj/structure/girder)) target:attackby(src,src.occupant) else if(prob(5)) target:dismantle_wall(1) src.occupant_message("You smash through the wall.") src.visible_message("[src.name] smashes through the wall") playsound(src, 'sound/weapons/smash.ogg', 50, 1) + else if(istype(target, /turf/simulated/wall)) + target:take_damage(force) + else if(istype(target, /obj/structure/girder)) + target:take_damage(force * 3) //Girders have 200 health by default. Steel, non-reinforced walls take four punches, girders take (with this value-mod) two, girders took five without. melee_can_hit = 0 + if(do_after(melee_cooldown)) melee_can_hit = 1 break diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index ce84a6bcf4b..56149a254c2 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -873,10 +873,10 @@ /obj/mecha/proc/mmi_moved_inside(var/obj/item/device/mmi/mmi_as_oc as obj,mob/user as mob) if(mmi_as_oc && user in range(1)) if(!mmi_as_oc.brainmob || !mmi_as_oc.brainmob.client) - user << "Consciousness matrix not detected." + to_chat(user,"Consciousness matrix not detected.") return 0 else if(mmi_as_oc.brainmob.stat) - user << "Beta-rhythm below acceptable level." + to_chat(user,"Beta-rhythm below acceptable level.") return 0 user.drop_from_inventory(mmi_as_oc) var/mob/brainmob = mmi_as_oc.brainmob diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index 14a724e0291..37aeef7fd9f 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -125,6 +125,12 @@ else return ..() +/obj/structure/girder/proc/take_damage(var/damage) + health -= damage + + if(health <= 0) + dismantle() + /obj/structure/girder/proc/construct_wall(obj/item/stack/material/S, mob/user) var/amount_to_use = reinf_material ? 1 : 2 if(S.get_amount() < amount_to_use)