mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-25 04:57:12 +01:00
Thrown mobs cant move until the throw ends (#23775)
* if you being throwed, you're not moving * throw block_movement variable * forgot arg here * tether might keep movement * Update code/controllers/subsystem/SSthrowing.dm Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> --------- Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com>
This commit is contained in:
@@ -70,6 +70,8 @@ SUBSYSTEM_DEF(throwing)
|
||||
var/last_move = 0
|
||||
///When this variable is false, non dense mobs will be hit by a thrown item. useful for things that you dont want to be cheesed by crawling, EG. gravitational anomalies
|
||||
var/dodgeable = TRUE
|
||||
/// Can a thrown mob move themselves to stop the throw?
|
||||
var/block_movement = TRUE
|
||||
|
||||
/datum/thrownthing/proc/tick()
|
||||
var/atom/movable/AM = thrownthing
|
||||
|
||||
@@ -394,7 +394,7 @@
|
||||
step(src, AM.dir)
|
||||
..()
|
||||
|
||||
/atom/movable/proc/throw_at(atom/target, range, speed, mob/thrower, spin = TRUE, diagonals_first = FALSE, datum/callback/callback, force = INFINITY, dodgeable = TRUE)
|
||||
/atom/movable/proc/throw_at(atom/target, range, speed, mob/thrower, spin = TRUE, diagonals_first = FALSE, datum/callback/callback, force = INFINITY, dodgeable = TRUE, block_movement = TRUE)
|
||||
if(!target || (flags & NODROP) || speed <= 0)
|
||||
return 0
|
||||
|
||||
@@ -435,6 +435,7 @@
|
||||
TT.diagonals_first = diagonals_first
|
||||
TT.callback = callback
|
||||
TT.dodgeable = dodgeable
|
||||
TT.block_movement = block_movement
|
||||
|
||||
var/dist_x = abs(target.x - src.x)
|
||||
var/dist_y = abs(target.y - src.y)
|
||||
|
||||
@@ -1116,7 +1116,7 @@
|
||||
if("lighting_alpha")
|
||||
sync_lighting_plane_alpha()
|
||||
|
||||
/mob/living/throw_at(atom/target, range, speed, mob/thrower, spin, diagonals_first, datum/callback/callback, force, dodgeable)
|
||||
/mob/living/throw_at(atom/target, range, speed, mob/thrower, spin, diagonals_first, datum/callback/callback, force, dodgeable, block_movement)
|
||||
stop_pulling()
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -68,6 +68,9 @@
|
||||
if(mob.notransform)
|
||||
return 0 //This is sota the goto stop mobs from moving var
|
||||
|
||||
if(mob.throwing && mob.throwing.block_movement)
|
||||
return
|
||||
|
||||
if(mob.control_object)
|
||||
return Move_object(direct)
|
||||
|
||||
@@ -182,9 +185,8 @@
|
||||
mob.setDir(get_dir(mob, mob.pulling)) // Face welding tanks and stuff when pulling
|
||||
|
||||
moving = 0
|
||||
if(mob && .)
|
||||
if(mob.throwing)
|
||||
mob.throwing.finalize(FALSE)
|
||||
if(mob && . && mob.throwing)
|
||||
mob.throwing.finalize(FALSE)
|
||||
|
||||
for(var/obj/O in mob)
|
||||
O.on_mob_move(direct, mob)
|
||||
|
||||
@@ -145,7 +145,7 @@
|
||||
if(firer && isliving(firer))
|
||||
var/mob/living/L = firer
|
||||
L.apply_status_effect(STATUS_EFFECT_IMPACT_IMMUNE)
|
||||
L.throw_at(target, 15, 1, L, FALSE, FALSE, callback = CALLBACK(L, TYPE_PROC_REF(/mob/living, remove_status_effect), STATUS_EFFECT_IMPACT_IMMUNE))
|
||||
L.throw_at(target, 15, 1, L, FALSE, FALSE, callback = CALLBACK(L, TYPE_PROC_REF(/mob/living, remove_status_effect), STATUS_EFFECT_IMPACT_IMMUNE), block_movement = FALSE)
|
||||
|
||||
/obj/item/projectile/tether/Destroy()
|
||||
QDEL_NULL(chain)
|
||||
|
||||
Reference in New Issue
Block a user