mirror of
https://github.com/KabKebab/GS13.git
synced 2026-08-27 15:06:14 +01:00
Merge pull request #9380 from Ghommie/Ghommie_cit212
refactoring and fixing altdisarm() exploits (ergo pushing people over directional windows etc).
This commit is contained in:
@@ -119,14 +119,7 @@
|
||||
stuff_mob_in(target, user)
|
||||
|
||||
/obj/machinery/disposal/proc/stuff_mob_in(mob/living/target, mob/living/user)
|
||||
if(!iscarbon(user) && !user.ventcrawler) //only carbon and ventcrawlers can climb into disposal by themselves.
|
||||
return
|
||||
if(!isturf(user.loc)) //No magically doing it from inside closets
|
||||
return
|
||||
if(target.buckled || target.has_buckled_mobs())
|
||||
return
|
||||
if(target.mob_size > MOB_SIZE_HUMAN)
|
||||
to_chat(user, "<span class='warning'>[target] doesn't fit inside [src]!</span>")
|
||||
if(!can_stuff_mob_in(target, user))
|
||||
return
|
||||
add_fingerprint(user)
|
||||
if(user == target)
|
||||
@@ -145,6 +138,19 @@
|
||||
target.LAssailant = user
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/disposal/proc/can_stuff_mob_in(mob/living/target, mob/living/user, pushing = FALSE)
|
||||
if(!pushing && !iscarbon(user) && !user.ventcrawler) //only carbon and ventcrawlers can climb into disposal by themselves.
|
||||
return FALSE
|
||||
if(!isturf(user.loc)) //No magically doing it from inside closets
|
||||
return FALSE
|
||||
if(target.buckled || target.has_buckled_mobs())
|
||||
return FALSE
|
||||
if(target.mob_size > MOB_SIZE_HUMAN)
|
||||
if(!pushing)
|
||||
to_chat(user, "<span class='warning'>[target] doesn't fit inside [src]!</span>")
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/disposal/relaymove(mob/user)
|
||||
attempt_escape(user)
|
||||
|
||||
@@ -273,6 +279,7 @@
|
||||
desc = "A pneumatic waste disposal unit."
|
||||
icon_state = "disposal"
|
||||
var/datum/oracle_ui/themed/nano/ui
|
||||
obj_flags = CAN_BE_HIT | USES_TGUI | SHOVABLE_ONTO
|
||||
|
||||
/obj/machinery/disposal/bin/Initialize(mapload, obj/structure/disposalconstruct/make_from)
|
||||
. = ..()
|
||||
@@ -313,7 +320,7 @@
|
||||
if(Adjacent(user))
|
||||
return TRUE
|
||||
return ..()
|
||||
|
||||
|
||||
|
||||
/obj/machinery/disposal/bin/oui_data(mob/user)
|
||||
var/list/data = list()
|
||||
@@ -368,6 +375,17 @@
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/machinery/disposal/bin/shove_act(mob/living/target, mob/living/user)
|
||||
if(can_stuff_mob_in(target, user, TRUE))
|
||||
target.Knockdown(SHOVE_KNOCKDOWN_SOLID)
|
||||
target.forceMove(src)
|
||||
user.visible_message("<span class='danger'>[user.name] shoves [target.name] into \the [src]!</span>",
|
||||
"<span class='danger'>You shove [target.name] into \the [src]!</span>", null, COMBAT_MESSAGE_RANGE)
|
||||
log_combat(user, target, "shoved", "into [src] (disposal bin)")
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
|
||||
/obj/machinery/disposal/bin/flush()
|
||||
..()
|
||||
full_pressure = FALSE
|
||||
|
||||
Reference in New Issue
Block a user