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)