diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm index 87b78259593..dcac994c7c7 100644 --- a/code/_onclick/other_mobs.dm +++ b/code/_onclick/other_mobs.dm @@ -12,6 +12,11 @@ if(proximity && istype(G) && G.Touch(A, 1)) return + if(HULK in mutations) + if(proximity) //no telekinetic hulk attack + if(A.attack_hulk(src)) + return + A.attack_hand(src) /atom/proc/attack_hand(mob/user as mob) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 19af319aa20..9d6114bd0e6 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -143,6 +143,12 @@ /atom/proc/setDir(newdir) dir = newdir +/atom/proc/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE) + if(does_attack_animation) + user.changeNext_move(CLICK_CD_MELEE) + add_attack_logs(user, src, "punched with hulk powers") + user.do_attack_animation(src, ATTACK_EFFECT_SMASH) + /atom/proc/CheckParts(list/parts_list) for(var/A in parts_list) if(istype(A, /datum/reagent)) diff --git a/code/game/gamemodes/blob/theblob.dm b/code/game/gamemodes/blob/theblob.dm index e53a74c8daa..15a3b2e222f 100644 --- a/code/game/gamemodes/blob/theblob.dm +++ b/code/game/gamemodes/blob/theblob.dm @@ -147,6 +147,9 @@ ..() take_damage(power/400, BURN) +/obj/structure/blob/hulk_damage() + return 15 + /obj/structure/blob/attackby(var/obj/item/W, var/mob/living/user, params) user.changeNext_move(CLICK_CD_MELEE) user.do_attack_animation(src) diff --git a/code/game/machinery/OpTable.dm b/code/game/machinery/OpTable.dm index 3c9c27f1590..f7925fecda5 100644 --- a/code/game/machinery/OpTable.dm +++ b/code/game/machinery/OpTable.dm @@ -54,13 +54,12 @@ if(prob(75)) qdel(src) -/obj/machinery/optable/attack_hand(mob/user as mob) - if(HULK in usr.mutations) - to_chat(usr, text("You destroy the table.")) - visible_message("[usr] destroys the operating table!") - src.density = 0 +/obj/machinery/optable/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE) + if(user.a_intent == INTENT_HARM) + ..(user, TRUE) + visible_message("[user] destroys the operating table!") qdel(src) - return + return TRUE /obj/machinery/optable/CanPass(atom/movable/mover, turf/target, height=0) if(height==0) return 1 diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 23134bc3144..9ac98e2c5d3 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -470,19 +470,10 @@ /obj/mecha/attack_hand(mob/living/user) user.changeNext_move(CLICK_CD_MELEE) log_message("Attack by hand/paw. Attacker - [user].",1) - - if((HULK in user.mutations) && !prob(deflect_chance)) - do_attack_animation(src, ATTACK_EFFECT_SMASH) - take_damage(15) - check_for_internal_damage(list(MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST)) - user.visible_message("[user] hits [name], doing some damage.", - "You hit [name] with all your might. The metal creaks and bends.") - else - user.do_attack_animation(src, ATTACK_EFFECT_PUNCH) - playsound(loc, 'sound/weapons/tap.ogg', 40, 1, -1) - user.visible_message("[user] hits [name]. Nothing happens","You hit [name] with no visible effect.") - log_append_to_last("Armor saved.") - return + user.do_attack_animation(src, ATTACK_EFFECT_PUNCH) + playsound(loc, 'sound/weapons/tap.ogg', 40, 1, -1) + user.visible_message("[user] hits [name]. Nothing happens","You hit [name] with no visible effect.") + log_append_to_last("Armor saved.") /obj/mecha/attack_alien(mob/living/user) @@ -526,6 +517,16 @@ user.create_attack_log("attacked [name]") return +/obj/mecha/hulk_damage() + return 15 + +/obj/mecha/attack_hulk(mob/living/carbon/human/user) + . = ..() + if(.) + check_for_internal_damage(list(MECHA_INT_TEMP_CONTROL, MECHA_INT_TANK_BREACH, MECHA_INT_CONTROL_LOST)) + log_message("Attack by hulk. Attacker - [user].", 1) + add_attack_logs(user, src, "punched with hulk powers") + /obj/mecha/hitby(atom/movable/A) //wrapper ..() log_message("Hit by [A].",1) diff --git a/code/game/objects/effects/effect_system/effects_foam.dm b/code/game/objects/effects/effect_system/effects_foam.dm index 93763c464e7..cb86086199c 100644 --- a/code/game/objects/effects/effect_system/effects_foam.dm +++ b/code/game/objects/effects/effect_system/effects_foam.dm @@ -205,11 +205,12 @@ /obj/structure/foamedmetal/attack_hand(mob/user) user.changeNext_move(CLICK_CD_MELEE) user.do_attack_animation(src, ATTACK_EFFECT_PUNCH) - if((HULK in user.mutations) || (prob(75 - metal*25))) + if(prob(75 - metal * 25)) user.visible_message("[user] smashes through \the [src].", "You smash through \the [src].") qdel(src) else to_chat(user, "You hit the metal foam but bounce off it.") + playsound(src.loc, 'sound/weapons/tap.ogg', 100, 1) /obj/structure/foamedmetal/attackby(obj/item/I, mob/user, params) user.changeNext_move(CLICK_CD_MELEE) diff --git a/code/game/objects/effects/effects.dm b/code/game/objects/effects/effects.dm index 467858ad670..0e8bd6691f2 100644 --- a/code/game/objects/effects/effects.dm +++ b/code/game/objects/effects/effects.dm @@ -11,4 +11,7 @@ return /obj/effect/fire_act() - return \ No newline at end of file + return + +/obj/effect/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE) + return FALSE \ No newline at end of file diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 21bc0453500..70df8f18cfa 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -550,3 +550,6 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d /obj/item/proc/on_trip(mob/living/carbon/human/H) if(H.slip(src, trip_stun, trip_weaken, trip_tiles, trip_walksafe, trip_any, trip_verb)) return TRUE + +/obj/item/attack_hulk(mob/living/carbon/human/user) + return FALSE \ No newline at end of file diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm index 7bae5139b27..31f193e3ae8 100644 --- a/code/game/objects/items/weapons/twohanded.dm +++ b/code/game/objects/items/weapons/twohanded.dm @@ -247,6 +247,11 @@ return ..() return 0 +/obj/item/twohanded/dualsaber/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE) //In case thats just so happens that it is still activated on the groud, prevents hulk from picking it up + if(wielded) + to_chat(user, "You can't pick up such dangerous item with your meaty hands without losing fingers, better not to!") + return TRUE + /obj/item/twohanded/dualsaber/green blade_color = "green" diff --git a/code/game/objects/obj_defense.dm b/code/game/objects/obj_defense.dm index fcd233318d5..d31338dfe06 100644 --- a/code/game/objects/obj_defense.dm +++ b/code/game/objects/obj_defense.dm @@ -71,6 +71,22 @@ visible_message("[src] is hit by \a [P]!") take_damage(P.damage, P.damage_type, P.flag, 0, turn(P.dir, 180), P.armour_penetration) +/obj/proc/hulk_damage() + return 150 //the damage hulks do on punches to this object, is affected by melee armor + +/obj/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE) + if(user.a_intent == INTENT_HARM) + ..(user, TRUE) + visible_message("[user] smashes [src]!") + if(density) + playsound(src, 'sound/effects/meteorimpact.ogg', 100, 1) + user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" )) + else + playsound(src, 'sound/effects/bang.ogg', 50, 1) + take_damage(hulk_damage(), BRUTE, "melee", 0, get_dir(src, user)) + return TRUE + return FALSE + /obj/blob_act(obj/structure/blob/B) if(isturf(loc)) var/turf/T = loc diff --git a/code/game/objects/structures/aliens.dm b/code/game/objects/structures/aliens.dm index 76deeac93e8..429ff2f89ab 100644 --- a/code/game/objects/structures/aliens.dm +++ b/code/game/objects/structures/aliens.dm @@ -112,14 +112,6 @@ health -= tforce healthcheck() -/obj/structure/alien/resin/attack_hand(mob/living/user) - if(HULK in user.mutations) - user.do_attack_animation(src) - user.visible_message("[user] destroys [src]!") - health = 0 - healthcheck() - - /obj/structure/alien/resin/attack_alien(mob/living/user) user.changeNext_move(CLICK_CD_MELEE) user.do_attack_animation(src) diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index 0c0c3c1aa0c..b502b255d3b 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -69,18 +69,23 @@ if(ismob(user)) shock(user, 70) +/obj/structure/grille/hulk_damage() + return 60 + +/obj/structure/grille/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE) + if(user.a_intent == INTENT_HARM) + if(!shock(user, 70)) + ..(user, TRUE) + return TRUE + /obj/structure/grille/attack_hand(mob/living/user) + . = ..() + if(.) + return user.changeNext_move(CLICK_CD_MELEE) user.do_attack_animation(src, ATTACK_EFFECT_KICK) - user.visible_message("[user] kicks [src].", \ - "You kick [src].", \ - "You hear twisting metal.") - - if(shock(user, 70)) - return - if(HULK in user.mutations) - take_damage(60, BRUTE, "melee", 1) - else + user.visible_message("[user] hits [src].") + if(!shock(user, 70)) take_damage(rand(5,10), BRUTE, "melee", 1) /obj/structure/grille/attack_alien(mob/living/user) diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 4fedc99f0c5..91f348d0106 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -83,14 +83,7 @@ qdel(src) /obj/structure/table/attack_hand(mob/living/user) - if(HULK in user.mutations) - user.do_attack_animation(src) - visible_message("[user] smashes [src] apart!") - playsound(loc, 'sound/effects/bang.ogg', 50, 1) - user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" )) - deconstruct(FALSE) - else - ..() + ..() if(climber) climber.Weaken(2) climber.visible_message("[climber.name] has been knocked off the table", "You've been knocked off the table", "You see [climber.name] get knocked off the table") diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index aebd111ad26..950c0ded3d7 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -127,13 +127,8 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f if(health <= 0) destroy() - -/obj/structure/window/attack_hand(mob/user as mob) - if(HULK in user.mutations) - user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!")) - user.visible_message("[user] smashes through [src]!") - destroy() - else if(user.a_intent == INTENT_HARM) +/obj/structure/window/attack_hand(mob/user) + if(user.a_intent == INTENT_HARM) user.changeNext_move(CLICK_CD_MELEE) playsound(get_turf(src), 'sound/effects/glassknock.ogg', 80, 1) user.visible_message("[user.name] bangs against the [src.name]!", \ @@ -145,8 +140,6 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f user.visible_message("[user.name] knocks on the [src.name].", \ "You knock on the [src.name].", \ "You hear a knocking sound.") - return - /obj/structure/window/attack_generic(mob/living/user, damage = 0) //used by attack_alien, attack_animal, and attack_slime user.changeNext_move(CLICK_CD_MELEE) diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index b1cbf84493f..cd589873343 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -229,20 +229,19 @@ to_chat(M, "You push the wall but nothing happens!") return -/turf/simulated/wall/attack_hand(mob/user as mob) - user.changeNext_move(CLICK_CD_MELEE) - if(HULK in user.mutations) - if(prob(hardness) || rotting) - playsound(src, 'sound/effects/meteorimpact.ogg', 100, 1) - to_chat(user, text("You smash through the wall.")) - user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" )) - dismantle_wall(1) - return - else - playsound(src, 'sound/effects/bang.ogg', 50, 1) - to_chat(user, text("You punch the wall.")) - return +/turf/simulated/wall/attack_hulk(mob/user, does_attack_animation = FALSE) + ..(user, TRUE) + if(prob(hardness) || rotting) + playsound(src, 'sound/effects/meteorimpact.ogg', 100, 1) + user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" )) + dismantle_wall(TRUE) + else + playsound(src, 'sound/effects/bang.ogg', 50, 1) + to_chat(user, text("You punch the wall.")) + return TRUE +/turf/simulated/wall/attack_hand(mob/user) + user.changeNext_move(CLICK_CD_MELEE) if(rotting) if(hardness <= 10) to_chat(user, "This wall feels rather unstable.") @@ -254,9 +253,8 @@ to_chat(user, "You push the wall but nothing happens!") playsound(src, 'sound/weapons/Genhit.ogg', 25, 1) - src.add_fingerprint(user) + add_fingerprint(user) ..() - return /turf/simulated/wall/attackby(obj/item/W as obj, mob/user as mob, params) user.changeNext_move(CLICK_CD_MELEE) diff --git a/code/modules/fish/fishtank.dm b/code/modules/fish/fishtank.dm index 584fdd5b93c..73b029c5972 100644 --- a/code/modules/fish/fishtank.dm +++ b/code/modules/fish/fishtank.dm @@ -313,7 +313,7 @@ egg_list.Cut() //Destroy any excess eggs, clearing the egg_list /obj/machinery/fishtank/proc/harvest_fish(var/mob/user) - if(fish_count <= 0) //Can't catch non-existant fish! + if(fish_count <= 0) //Can't catch non-existant fish! to_chat(usr, "There are no fish in \the [src] to catch!") return var/list/fish_names_list = list() @@ -574,11 +574,7 @@ attack_generic(user, rand(10, 15)) /obj/machinery/fishtank/attack_hand(mob/user as mob) - if(HULK in user.mutations) - user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!")) - user.visible_message("[user] smashes through [src]!") - destroy() - else if(usr.a_intent == INTENT_HARM) + if(usr.a_intent == INTENT_HARM) user.changeNext_move(CLICK_CD_MELEE) playsound(get_turf(src), 'sound/effects/glassknock.ogg', 80, 1) usr.visible_message("[usr.name] bangs against the [src.name]!", \ @@ -590,7 +586,6 @@ usr.visible_message("[usr.name] taps on the [src.name].", \ "You tap on the [src.name].", \ "You hear a knocking sound.") - return /obj/machinery/fishtank/proc/hit(var/damage, var/sound_effect = 1) cur_health = max(0, cur_health - damage) diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid_defense.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid_defense.dm index 41ebc8d8247..86d0344e715 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/humanoid_defense.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid_defense.dm @@ -1,16 +1,23 @@ +/mob/living/carbon/alien/humanoid/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE) + if(user.a_intent == INTENT_HARM) + ..(user, TRUE) + adjustBruteLoss(15) + var/hitverb = "punched" + if(mob_size < MOB_SIZE_LARGE) + step_away(src, user, 15) + sleep(1) + step_away(src, user, 15) + hitverb = "slammed" + playsound(loc, "punch", 25, 1, -1) + visible_message("[user] has [hitverb] [src]!", "[user] has [hitverb] [src]!") + return TRUE + /mob/living/carbon/alien/humanoid/attack_hand(mob/living/carbon/human/M) if(..()) switch(M.a_intent) if(INTENT_HARM) var/damage = rand(1, 9) if(prob(90)) - if(HULK in M.mutations)//HULK SMASH - damage = 15 - spawn(0) - Paralyse(1) - step_away(src, M, 15) - sleep(3) - step_away(src, M, 15) playsound(loc, "punch", 25, 1, -1) visible_message("[M] has punched [src]!", \ "[M] has punched [src]!") diff --git a/code/modules/mob/living/carbon/alien/larva/larva_defense.dm b/code/modules/mob/living/carbon/alien/larva/larva_defense.dm index ef38327b5ee..919eecee8d8 100644 --- a/code/modules/mob/living/carbon/alien/larva/larva_defense.dm +++ b/code/modules/mob/living/carbon/alien/larva/larva_defense.dm @@ -2,13 +2,6 @@ if(..()) var/damage = rand(1, 9) if(prob(90)) - if(HULK in M.mutations) - damage += 5 - spawn(0) - Paralyse(1) - step_away(src, M, 15) - sleep(3) - step_away(src, M, 15) playsound(loc, "punch", 25, 1, -1) add_attack_logs(M, src, "Melee attacked with fists") visible_message("[M] has kicked [src]!", \ @@ -23,6 +16,18 @@ visible_message("[M] has attempted to kick [src]!", \ "[M] has attempted to kick [src]!") + +/mob/living/carbon/alien/larva/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE) + if(user.a_intent == INTENT_HARM) + ..(user, TRUE) + adjustBruteLoss(5 + rand(1, 9)) + spawn(0) + Paralyse(1) + step_away(src, user, 15) + sleep(3) + step_away(src, user, 15) + return TRUE + /mob/living/carbon/alien/larva/do_attack_animation(atom/A, visual_effect_icon, obj/item/used_item, no_effect, end_pixel_y) if(!no_effect && !visual_effect_icon) visual_effect_icon = ATTACK_EFFECT_BITE diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index c45154e4931..5b78b450357 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -348,6 +348,18 @@ emp_act if(penetrated_dam) SS.create_breaches(damtype, penetrated_dam) +/mob/living/carbon/human/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE) + if(user.a_intent == INTENT_HARM) + var/hulk_verb = pick("smash", "pummel") + if(check_shields(user, 15, "the [hulk_verb]ing")) + return + ..(user, TRUE) + playsound(loc, user.species.unarmed.attack_sound, 25, 1, -1) + var/message = "[user] has [hulk_verb]ed [src]!" + visible_message("[message]", "[message]") + adjustBruteLoss(15) + return TRUE + /mob/living/carbon/human/attack_hand(mob/user) if(..()) //to allow surgery to return properly. return diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 25d3fd342c5..4de74d63e5a 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -21,7 +21,7 @@ var/primitive_form // Lesser form, if any (ie. monkey for humans) var/greater_form // Greater form, if any, ie. human for monkeys. var/tail // Name of tail image in species effects icon file. - var/unarmed //For empty hand harm-intent attack + var/datum/unarmed_attack/unarmed //For empty hand harm-intent attack var/unarmed_type = /datum/unarmed_attack var/slowdown = 0 // Passive movement speed malus (or boost, if negative) var/silent_steps = 0 // Stops step noises @@ -375,9 +375,6 @@ var/obj/item/organ/external/affecting = target.get_organ(ran_zone(user.zone_sel.selecting)) var/armor_block = target.run_armor_check(affecting, "melee") - if(HULK in user.mutations) - target.adjustBruteLoss(15) - playsound(target.loc, attack.attack_sound, 25, 1, -1) target.visible_message("[user] [pick(attack.attack_verb)]ed [target]!") diff --git a/code/modules/mob/living/carbon/slime/slime.dm b/code/modules/mob/living/carbon/slime/slime.dm index 79bcd54775b..506cc804bd3 100644 --- a/code/modules/mob/living/carbon/slime/slime.dm +++ b/code/modules/mob/living/carbon/slime/slime.dm @@ -234,6 +234,24 @@ adjustBruteLoss(damage) updatehealth() +/mob/living/carbon/slime/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE) + if(user.a_intent == INTENT_HARM) + if(Victim || Target) + Victim = null + Target = null + anchored = 0 + if(prob(80) && !client) + Discipline++ + spawn(0) + step_away(src, user, 15) + sleep(3) + step_away(src, user, 15) + ..(user, TRUE) + playsound(loc, "punch", 25, 1, -1) + visible_message("[user] has punched [src]!", "[user] has punched [src]!") + adjustBruteLoss(15) + return TRUE + /mob/living/carbon/slime/attack_hand(mob/living/carbon/human/M) if(Victim) M.do_attack_animation(src, ATTACK_EFFECT_DISARM) @@ -301,20 +319,6 @@ var/damage = rand(1, 9) attacked += 10 if(prob(90)) - if(HULK in M.mutations) - damage += 15 - if(Victim || Target) - Victim = null - Target = null - anchored = 0 - if(prob(80) && !client) - Discipline++ - spawn(0) - step_away(src,M,15) - sleep(3) - step_away(src,M,15) - - playsound(loc, "punch", 25, 1, -1) add_attack_logs(M, src, "Melee attacked with fists") visible_message("[M] has punched [src]!", \ diff --git a/code/modules/mob/living/silicon/silicon_defense.dm b/code/modules/mob/living/silicon/silicon_defense.dm index 070ed327163..a903b6999dc 100644 --- a/code/modules/mob/living/silicon/silicon_defense.dm +++ b/code/modules/mob/living/silicon/silicon_defense.dm @@ -41,6 +41,15 @@ if(L.a_intent == INTENT_HELP) visible_message("[L.name] rubs its head against [src].") +/mob/living/silicon/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE) + if(user.a_intent == INTENT_HARM) + ..(user, TRUE) + adjustBruteLoss(rand(10, 15)) + playsound(loc, "punch", 25, 1, -1) + visible_message("[user] has punched [src]!", "[user] has punched [src]!") + return TRUE + return FALSE + /mob/living/silicon/attack_hand(mob/living/carbon/human/M) switch(M.a_intent) if(INTENT_HELP) @@ -51,15 +60,6 @@ else M.do_attack_animation(src, ATTACK_EFFECT_PUNCH) playsound(loc, 'sound/effects/bang.ogg', 10, 1) - if(HULK in M.mutations) - var/damage = rand(10,15) - adjustBruteLoss(damage) - add_attack_logs(M, src, "Melee attacked with fists") - playsound(loc, "punch", 25, 1, -1) - visible_message("[M] has punched [src]!", \ - "[M] has punched [src]!") - return 1 - else - visible_message("[M] punches [src], but doesn't leave a dent.", \ + visible_message("[M] punches [src], but doesn't leave a dent.", \ "[M] punches [src], but doesn't leave a dent.!") - return 0 + return FALSE diff --git a/code/modules/mob/living/simple_animal/animal_defense.dm b/code/modules/mob/living/simple_animal/animal_defense.dm index 972759812b4..309a13468a3 100644 --- a/code/modules/mob/living/simple_animal/animal_defense.dm +++ b/code/modules/mob/living/simple_animal/animal_defense.dm @@ -19,6 +19,14 @@ updatehealth() return 1 +/mob/living/simple_animal/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE) + if(user.a_intent == INTENT_HARM) + ..(user, TRUE) + playsound(loc, "punch", 25, 1, -1) + visible_message("[user] has punched [src]!", "[user] has punched [src]!") + adjustBruteLoss(15) + return TRUE + /mob/living/simple_animal/attack_alien(mob/living/carbon/alien/humanoid/M) if(..()) //if harm or disarm intent. var/damage = rand(15, 30)