diff --git a/code/game/machinery/atmoalter/portable_atmospherics.dm b/code/game/machinery/atmoalter/portable_atmospherics.dm index f5bdfbacaa0..0041f75b666 100644 --- a/code/game/machinery/atmoalter/portable_atmospherics.dm +++ b/code/game/machinery/atmoalter/portable_atmospherics.dm @@ -150,3 +150,10 @@ atmosanalyzer_scan(air_contents, user) return + +/obj/machinery/portable_atmospherics/attacked_by(obj/item/I, mob/user) + if(I.force < 10 && !(stat & BROKEN)) + take_damage(0) + else + add_fingerprint(user) + ..() \ No newline at end of file diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 09604252b0d..1ef0434557d 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -837,26 +837,7 @@ to_chat(user, "You stop installing [M].") else - return attacked_by(W, user) - -/obj/mecha/attacked_by(obj/item/I, mob/user) - log_message("Attacked by [I]. Attacker - [user]") - user.changeNext_move(CLICK_CD_MELEE) - user.do_attack_animation(src) - var/deflection = deflect_chance - var/dam_coeff = 1 - for(var/obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster/B in equipment) - if(B.attack_react(user)) - deflection *= B.deflect_coeff - dam_coeff *= B.damage_coeff - break - if(prob(deflection)) - to_chat(user, "[I] bounces off [src]\s armor.") - log_append_to_last("Armor saved.") - else - user.visible_message("[user] hits [src] with [I].", "You hit [src] with [I].") - take_damage(round(I.force * dam_coeff), I.damtype) - check_for_internal_damage(list(MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST)) + return ..() /obj/mecha/mech_melee_attack(obj/mecha/M) if(!has_charge(melee_energy_drain)) diff --git a/code/game/objects/items/weapons/extinguisher.dm b/code/game/objects/items/weapons/extinguisher.dm index 2a7ad987f47..9ccbc3bffd5 100644 --- a/code/game/objects/items/weapons/extinguisher.dm +++ b/code/game/objects/items/weapons/extinguisher.dm @@ -19,6 +19,7 @@ var/max_water = 50 var/last_use = 1.0 var/safety = 1 + var/refilling = FALSE var/sprite_name = "fire_extinguisher" var/power = 5 //Maximum distance launched water will travel var/precision = 0 //By default, turfs picked from a spray are random, set to 1 to make it always have at least one water effect per row @@ -55,6 +56,13 @@ to_chat(user, "The safety is [safety ? "on" : "off"].") return +/obj/item/extinguisher/attack_obj(obj/O, mob/living/user) + if(AttemptRefill(O, user)) + refilling = TRUE + return FALSE + else + return ..() + /obj/item/extinguisher/proc/AttemptRefill(atom/target, mob/user) if(istype(target, /obj/structure/reagent_dispensers/watertank) && target.Adjacent(user)) var/safety_save = safety @@ -78,11 +86,15 @@ return 0 /obj/item/extinguisher/afterattack(atom/target, mob/user , flag) + . = ..() //TODO; Add support for reagents in water. if(target.loc == user)//No more spraying yourself when putting your extinguisher away return - if(AttemptRefill(target, user)) + + if(refilling) + refilling = FALSE return + if(!safety) if(src.reagents.total_volume < 1) to_chat(usr, "\The [src] is empty.") diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index 9de2294810f..f3a4b8a241c 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -197,15 +197,7 @@ W.state = WINDOW_OUT_OF_FRAME to_chat(user, "You place the [W] on [src].") W.update_nearby_icons() - return -/obj/structure/grille/attacked_by(obj/item/I, mob/living/user) - user.changeNext_move(CLICK_CD_MELEE) - user.do_attack_animation(src) - if(!(I.flags&NOBLUDGEON)) - if(I.force) - visible_message("[user] has hit [src] with [I]!") - take_damage(I.force * 0.3, I.damtype) /obj/structure/grille/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0) switch(damage_type) diff --git a/code/modules/mob/living/carbon/alien/special/facehugger.dm b/code/modules/mob/living/carbon/alien/special/facehugger.dm index 2c06923bac3..b77efc64ec8 100644 --- a/code/modules/mob/living/carbon/alien/special/facehugger.dm +++ b/code/modules/mob/living/carbon/alien/special/facehugger.dm @@ -18,11 +18,12 @@ var/const/MAX_ACTIVE_TIME = 400 flags = AIRTIGHT flags_cover = MASKCOVERSMOUTH | MASKCOVERSEYES layer = MOB_LAYER + max_integrity = 100 var/stat = CONSCIOUS //UNCONSCIOUS is the idle state in this case - var/sterile = 0 - var/real = 1 //0 for the toy, 1 for real. Sure I could istype, but fuck that. + var/sterile = FALSE + var/real = TRUE //0 for the toy, 1 for real. Sure I could istype, but fuck that. var/strength = 5 var/attached = 0 @@ -32,6 +33,9 @@ var/const/MAX_ACTIVE_TIME = 400 if(obj_integrity < 90) Die() +/obj/item/clothing/mask/facehugger/attackby(obj/item/O, mob/user, params) + return O.attack_obj(src, user) + /obj/item/clothing/mask/facehugger/attack_alien(mob/user) //can be picked up by aliens return attack_hand(user) @@ -57,10 +61,6 @@ var/const/MAX_ACTIVE_TIME = 400 if(sterile) . += "It looks like the proboscis has been removed." -/obj/item/clothing/mask/facehugger/attackby(obj/item/O,mob/m, params) - if(O.force) - Die() - /obj/item/clothing/mask/facehugger/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) ..() if(exposed_temperature > 300) @@ -234,9 +234,6 @@ var/const/MAX_ACTIVE_TIME = 400 /obj/item/clothing/mask/facehugger/lamarr name = "Lamarr" - desc = "The worst she might do is attempt to... couple with your head."//hope we don't get sued over a harmless reference, rite? + desc = "The worst she might do is attempt to... couple with your head." //hope we don't get sued over a harmless reference, rite? sterile = 1 - gender = FEMALE - -/obj/item/clothing/mask/facehugger/lamarr/New()//to prevent deleting it if aliums are disabled - return + gender = FEMALE \ No newline at end of file diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 695490a6c5b..b5611fbfc30 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -706,17 +706,12 @@ else return ..() -// called after an attack with a light item -// shatter light, unless it was an attempt to put it in a light socket -// now only shatter if the intent was harm - -/obj/item/light/afterattack(atom/target, mob/user, proximity) - if(!proximity) return - if(istype(target, /obj/machinery/light)) - return - if(user.a_intent != INTENT_HARM) - return +/obj/item/light/attack(mob/living/M, mob/living/user, def_zone) + ..() + shatter() +/obj/item/light/attack_obj(obj/O, mob/living/user) + ..() shatter() /obj/item/light/proc/shatter()