mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-25 21:19:44 +01:00
Merge pull request #1237 from Hubblenaut/grabpull
Removes people being able to pull from somebody's grab
This commit is contained in:
@@ -510,52 +510,38 @@ default behaviour is:
|
||||
if ((get_dist(src, pulling) > 1 || diag))
|
||||
if (isliving(pulling))
|
||||
var/mob/living/M = pulling
|
||||
var/ok = 1
|
||||
if (locate(/obj/item/weapon/grab, M.grabbed_by))
|
||||
if (prob(75))
|
||||
var/obj/item/weapon/grab/G = pick(M.grabbed_by)
|
||||
if (istype(G, /obj/item/weapon/grab))
|
||||
for(var/mob/O in viewers(M, null))
|
||||
O.show_message(text("\red [] has been pulled from []'s grip by []", G.affecting, G.assailant, src), 1)
|
||||
//G = null
|
||||
qdel(G)
|
||||
else
|
||||
ok = 0
|
||||
if (locate(/obj/item/weapon/grab, M.grabbed_by.len))
|
||||
ok = 0
|
||||
if (ok)
|
||||
var/atom/movable/t = M.pulling
|
||||
M.stop_pulling()
|
||||
var/atom/movable/t = M.pulling
|
||||
M.stop_pulling()
|
||||
|
||||
if(!istype(M.loc, /turf/space))
|
||||
var/area/A = get_area(M)
|
||||
if(A.has_gravity)
|
||||
//this is the gay blood on floor shit -- Added back -- Skie
|
||||
if (M.lying && (prob(M.getBruteLoss() / 6)))
|
||||
if(!istype(M.loc, /turf/space))
|
||||
var/area/A = get_area(M)
|
||||
if(A.has_gravity)
|
||||
//this is the gay blood on floor shit -- Added back -- Skie
|
||||
if (M.lying && (prob(M.getBruteLoss() / 6)))
|
||||
var/turf/location = M.loc
|
||||
if (istype(location, /turf/simulated))
|
||||
location.add_blood(M)
|
||||
//pull damage with injured people
|
||||
if(prob(25))
|
||||
M.adjustBruteLoss(1)
|
||||
visible_message("<span class='danger'>\The [M]'s [M.isSynthetic() ? "state worsens": "wounds open more"] from being dragged!</span>")
|
||||
if(M.pull_damage())
|
||||
if(prob(25))
|
||||
M.adjustBruteLoss(2)
|
||||
visible_message("<span class='danger'>\The [M]'s [M.isSynthetic() ? "state" : "wounds"] worsen terribly from being dragged!</span>")
|
||||
var/turf/location = M.loc
|
||||
if (istype(location, /turf/simulated))
|
||||
location.add_blood(M)
|
||||
//pull damage with injured people
|
||||
if(prob(25))
|
||||
M.adjustBruteLoss(1)
|
||||
visible_message("<span class='danger'>\The [M]'s [M.isSynthetic() ? "state worsens": "wounds open more"] from being dragged!</span>")
|
||||
if(M.pull_damage())
|
||||
if(prob(25))
|
||||
M.adjustBruteLoss(2)
|
||||
visible_message("<span class='danger'>\The [M]'s [M.isSynthetic() ? "state" : "wounds"] worsen terribly from being dragged!</span>")
|
||||
var/turf/location = M.loc
|
||||
if (istype(location, /turf/simulated))
|
||||
location.add_blood(M)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/blood_volume = round(H.vessel.get_reagent_amount("blood"))
|
||||
if(blood_volume > 0)
|
||||
H.vessel.remove_reagent("blood", 1)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/blood_volume = round(H.vessel.get_reagent_amount("blood"))
|
||||
if(blood_volume > 0)
|
||||
H.vessel.remove_reagent("blood", 1)
|
||||
|
||||
|
||||
step(pulling, get_dir(pulling.loc, T))
|
||||
if(t)
|
||||
M.start_pulling(t)
|
||||
step(pulling, get_dir(pulling.loc, T))
|
||||
if(t)
|
||||
M.start_pulling(t)
|
||||
else
|
||||
if (pulling)
|
||||
if (istype(pulling, /obj/structure/window))
|
||||
|
||||
+15
-3
@@ -546,21 +546,33 @@
|
||||
if(ismob(AM))
|
||||
|
||||
if(!can_pull_mobs || !can_pull_size)
|
||||
src << "<span class='warning'>It won't budge!</span>"
|
||||
src << "<span class='warning'>They won't budge!</span>"
|
||||
return
|
||||
|
||||
if((mob_size < M.mob_size) && (can_pull_mobs != MOB_PULL_LARGER))
|
||||
src << "<span class='warning'>It won't budge!</span>"
|
||||
src << "<span class='warning'>[M] is too large for you to move!</span>"
|
||||
return
|
||||
|
||||
if((mob_size == M.mob_size) && (can_pull_mobs == MOB_PULL_SMALLER))
|
||||
src << "<span class='warning'>It won't budge!</span>"
|
||||
src << "<span class='warning'>[M] is too heavy for you to move!</span>"
|
||||
return
|
||||
|
||||
// If your size is larger than theirs and you have some
|
||||
// kind of mob pull value AT ALL, you will be able to pull
|
||||
// them, so don't bother checking that explicitly.
|
||||
|
||||
if(M.grabbed_by.len)
|
||||
// Only start pulling when nobody else has a grab on them
|
||||
. = 1
|
||||
for(var/obj/item/weapon/grab/G in M.grabbed_by)
|
||||
if(G.assailant != usr)
|
||||
. = 0
|
||||
else
|
||||
qdel(G)
|
||||
if(!.)
|
||||
src << "<span class='warning'>Somebody has a grip on them!</span>"
|
||||
return
|
||||
|
||||
if(!iscarbon(src))
|
||||
M.LAssailant = null
|
||||
else
|
||||
|
||||
@@ -57,8 +57,14 @@
|
||||
G.dancing = 1
|
||||
G.adjust_position()
|
||||
dancing = 1
|
||||
|
||||
//stop pulling the affected
|
||||
if(assailant.pulling == affecting)
|
||||
assailant.stop_pulling()
|
||||
|
||||
adjust_position()
|
||||
|
||||
|
||||
//Used by throw code to hand over the mob, instead of throwing the grab. The grab is then deleted by the throw code.
|
||||
/obj/item/weapon/grab/proc/throw_held()
|
||||
if(affecting)
|
||||
@@ -91,9 +97,6 @@
|
||||
assailant.client.screen -= hud
|
||||
assailant.client.screen += hud
|
||||
|
||||
if(assailant.pulling == affecting)
|
||||
assailant.stop_pulling()
|
||||
|
||||
if(state <= GRAB_AGGRESSIVE)
|
||||
allow_upgrade = 1
|
||||
//disallow upgrading if we're grabbing more than one person
|
||||
|
||||
Reference in New Issue
Block a user