diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 6e30a57e964..2504be48099 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -73,7 +73,7 @@ var/atom/movable/pulling var/grab_state = GRAB_PASSIVE /// The strongest grab we can acomplish - var/max_grab = GRAB_KILL + var/max_grab = GRAB_PASSIVE var/throwforce = 0 var/datum/component/orbiter/orbiting diff --git a/code/modules/mob/living/basic/space_fauna/robot_customer.dm b/code/modules/mob/living/basic/space_fauna/robot_customer.dm index aa5e4635f58..667adb7d268 100644 --- a/code/modules/mob/living/basic/space_fauna/robot_customer.dm +++ b/code/modules/mob/living/basic/space_fauna/robot_customer.dm @@ -10,6 +10,7 @@ icon_state = "amerifat" icon_living = "amerifat" + max_grab = GRAB_AGGRESSIVE basic_mob_flags = DEL_ON_DEATH mob_biotypes = MOB_ROBOTIC|MOB_HUMANOID sentience_type = SENTIENCE_ARTIFICIAL diff --git a/code/modules/mob/living/basic/space_fauna/spider/giant_spider/giant_spiders.dm b/code/modules/mob/living/basic/space_fauna/spider/giant_spider/giant_spiders.dm index 90240d87b99..88a81763f84 100644 --- a/code/modules/mob/living/basic/space_fauna/spider/giant_spider/giant_spiders.dm +++ b/code/modules/mob/living/basic/space_fauna/spider/giant_spider/giant_spiders.dm @@ -20,6 +20,7 @@ gold_core_spawnable = HOSTILE_SPAWN ai_controller = /datum/ai_controller/basic_controller/giant_spider bite_injection_flags = INJECT_CHECK_PENETRATE_THICK + max_grab = GRAB_AGGRESSIVE /// Actions to grant on Initialize var/list/innate_actions = null diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index 9cb342105a5..27ad1a2ba7c 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -14,6 +14,7 @@ can_be_shoved_into = TRUE initial_language_holder = /datum/language_holder/empty // We get stuff from our species flags_1 = PREVENT_CONTENTS_EXPLOSION_1 + max_grab = GRAB_KILL maxHealth = HUMAN_MAXHEALTH //NOVA EDIT ADDITION health = HUMAN_MAXHEALTH //NOVA EDIT ADDITION diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index c438d301fe6..e1532766b97 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -258,22 +258,23 @@ /mob/living/proc/grabbedby(mob/living/user, supress_message = FALSE, grabbed_part) // NOVA EDIT CHANGE - ORIGINAL: /mob/living/proc/grabbedby(mob/living/user, supress_message = FALSE) if(user == src || anchored || !isturf(user.loc)) return FALSE + if(!user.pulling || user.pulling != src) user.start_pulling(src, supress_message = supress_message) return - // This line arbitrarily prevents any non-carbon from upgrading grabs - if(!iscarbon(user)) - return + if(!(status_flags & CANPUSH) || HAS_TRAIT(src, TRAIT_PUSHIMMUNE)) to_chat(user, span_warning("[src] can't be grabbed more aggressively!")) return FALSE + if(user.grab_state >= GRAB_AGGRESSIVE && HAS_TRAIT(user, TRAIT_PACIFISM)) to_chat(user, span_warning("You don't want to risk hurting [src]!")) return FALSE + grippedby(user) //proc to upgrade a simple pull into a more aggressive grab. -/mob/living/proc/grippedby(mob/living/carbon/user, instant = FALSE) +/mob/living/proc/grippedby(mob/living/user, instant = FALSE) if(user.grab_state >= user.max_grab) return user.changeNext_move(CLICK_CD_GRABBING)