From def4b38a467e3595416db66c42b30512be69fabf Mon Sep 17 00:00:00 2001
From: BlueWildrose <57083662+BlueWildrose@users.noreply.github.com>
Date: Wed, 11 Oct 2023 13:52:03 -0600
Subject: [PATCH] Revert "[DNM] Updates firemanning, throwing stuff"
---
code/__DEFINES/dcs/signals/signals_global.dm | 2 -
.../signals/signals_mob/signals_mob_main.dm | 2 -
code/__HELPERS/pronouns.dm | 15 ---
code/datums/components/riding.dm | 9 --
code/datums/elements/mob_holder.dm | 75 +++++-------
code/game/objects/buckling.dm | 25 +---
code/game/objects/items.dm | 12 --
code/game/objects/items/cigs_lighters.dm | 1 -
.../structures/beds_chairs/alien_nest.dm | 2 +-
code/game/objects/structures/kitchen_spike.dm | 2 +-
code/game/objects/structures/manned_turret.dm | 2 +-
code/game/objects/structures/morgue.dm | 11 --
code/game/objects/structures/tables_racks.dm | 34 +-----
.../clock_structures/traps/brass_skewer.dm | 2 +-
.../antagonists/devil/true_devil/inventory.dm | 2 +-
code/modules/mob/inventory.dm | 16 +--
.../living/carbon/alien/larva/inventory.dm | 2 +-
code/modules/mob/living/carbon/carbon.dm | 111 +++++++++---------
.../simple_animal/guardian/types/dextrous.dm | 2 +-
.../mob/living/simple_animal/simple_animal.dm | 2 +-
.../mob/living/simple_animal/slime/slime.dm | 2 +-
code/modules/power/singularity/emitter.dm | 2 +-
tgstation.dme | 2 -
23 files changed, 106 insertions(+), 229 deletions(-)
delete mode 100644 code/__DEFINES/dcs/signals/signals_global.dm
delete mode 100644 code/__DEFINES/dcs/signals/signals_mob/signals_mob_main.dm
diff --git a/code/__DEFINES/dcs/signals/signals_global.dm b/code/__DEFINES/dcs/signals/signals_global.dm
deleted file mode 100644
index 3e0e1d2296..0000000000
--- a/code/__DEFINES/dcs/signals/signals_global.dm
+++ /dev/null
@@ -1,2 +0,0 @@
-/// a person somewhere has thrown something : (mob/living/carbon/carbon_thrower, target)
-#define COMSIG_GLOB_CARBON_THROW_THING "!throw_thing"
diff --git a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_main.dm b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_main.dm
deleted file mode 100644
index e6c3464ff7..0000000000
--- a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_main.dm
+++ /dev/null
@@ -1,2 +0,0 @@
-/// from mob/proc/dropItemToGround()
-#define COMSIG_MOB_DROPPING_ITEM "mob_dropping_item"
diff --git a/code/__HELPERS/pronouns.dm b/code/__HELPERS/pronouns.dm
index fd15c05c64..bfe09ba370 100644
--- a/code/__HELPERS/pronouns.dm
+++ b/code/__HELPERS/pronouns.dm
@@ -39,21 +39,6 @@
/datum/proc/p_es(temp_gender)
. = "es"
-/datum/proc/plural_s(pluralize)
- switch(copytext_char(pluralize, -2))
- if ("ss")
- return "es"
- if ("sh")
- return "es"
- if ("ch")
- return "es"
- else
- switch(copytext_char(pluralize, -1))
- if("s", "x", "z")
- return "es"
- else
- return "s"
-
//like clients, which do have gender.
/client/p_they(capitalized, temp_gender)
if(!temp_gender)
diff --git a/code/datums/components/riding.dm b/code/datums/components/riding.dm
index 49b8f7f7f0..a074fe6f5f 100644
--- a/code/datums/components/riding.dm
+++ b/code/datums/components/riding.dm
@@ -392,12 +392,3 @@
if(rider in AM.buckled_mobs)
AM.unbuckle_mob(rider)
. = ..()
-
-/obj/item/riding_offhand/on_thrown(mob/living/carbon/user, atom/target)
- if(rider == user)
- return //Piggyback user.
- user.unbuckle_mob(rider)
- if(HAS_TRAIT(user, TRAIT_PACIFISM))
- to_chat(user, span_notice("You gently let go of [rider]."))
- return
- return rider
diff --git a/code/datums/elements/mob_holder.dm b/code/datums/elements/mob_holder.dm
index 82f42d69b3..5f57b4fce3 100644
--- a/code/datums/elements/mob_holder.dm
+++ b/code/datums/elements/mob_holder.dm
@@ -61,7 +61,7 @@
return FALSE
source.visible_message("[user] starts picking up [source].", \
"[user] starts picking you up!")
- if(!do_after(user, 2 SECONDS, target = source) || source.buckled)
+ if(!do_after(user, 20, target = source) || source.buckled)
return FALSE
source.visible_message("[user] picks up [source]!", \
@@ -95,7 +95,6 @@
dynamic_hair_suffix = ""
var/mob/living/held_mob
var/escape_on_find
- var/destroying = FALSE
/obj/item/clothing/head/mob_holder/Initialize(mapload, mob/living/target, worn_state, alt_worn, right_hand, left_hand, slots = NONE)
. = ..()
@@ -135,54 +134,45 @@
w_class = WEIGHT_CLASS_HUGE
/obj/item/clothing/head/mob_holder/Destroy()
- destroying = TRUE
if(held_mob)
- release(FALSE)
+ release()
return ..()
/obj/item/clothing/head/mob_holder/examine(mob/user)
return held_mob?.examine(user) || ..()
-/obj/item/clothing/head/mob_holder/on_thrown(mob/living/carbon/user, atom/target)
- if((item_flags & ABSTRACT) || HAS_TRAIT(src, TRAIT_NODROP))
- return
- if(HAS_TRAIT(user, TRAIT_PACIFISM))
- to_chat(user, span_notice("You set [src] down gently on the ground."))
- release()
- return
+/obj/item/clothing/head/mob_holder/Exited(atom/movable/AM, atom/newloc)
+ . = ..()
+ if(AM == held_mob)
+ held_mob.reset_perspective()
+ held_mob = null
+ QDEL_IN(src, 1) //To avoid a qdel loop.
- var/mob/living/throw_mob = held_mob
- release()
- return throw_mob
+/obj/item/clothing/head/mob_holder/Entered(atom/movable/AM, atom/newloc)
+ . = ..()
+ if(AM != held_mob)
+ var/destination = loc
+ if(isliving(loc)) //the mob is held or worn, drop things on the floor
+ destination = get_turf(loc)
+ AM.forceMove(destination)
/obj/item/clothing/head/mob_holder/dropped(mob/user)
. = ..()
- if(held_mob && isturf(loc))
+ if(held_mob && !ismob(loc) && !istype(loc,/obj/item/storage))//don't release on soft-drops
release()
-/obj/item/clothing/head/mob_holder/proc/release(del_on_release = TRUE, display_messages = TRUE)
- if(!held_mob)
- if(del_on_release && !destroying)
- qdel(src)
- return FALSE
- var/mob/living/released_mob = held_mob
- held_mob = null // stops the held mob from being release()'d twice.
- if(isliving(loc))
- var/mob/living/L = loc
- if(display_messages)
- to_chat(L, span_warning("[released_mob] wriggles free!"))
- L.dropItemToGround(src)
- released_mob.forceMove(drop_location())
- released_mob.reset_perspective()
- released_mob.setDir(SOUTH)
- if(display_messages)
- released_mob.visible_message(span_warning("[released_mob] uncurls!"))
- if(del_on_release && !destroying)
+/obj/item/clothing/head/mob_holder/proc/release()
+ if(held_mob)
+ var/mob/living/L = held_mob
+ held_mob = null
+ L.forceMove(get_turf(L))
+ L.reset_perspective()
+ L.setDir(SOUTH)
+ if(!QDELETED(src))
qdel(src)
- return TRUE
-/obj/item/clothing/head/mob_holder/relaymove(mob/living/user, direction)
- container_resist()
+/obj/item/clothing/head/mob_holder/relaymove(mob/user)
+ return
/obj/item/clothing/head/mob_holder/container_resist()
if(isliving(loc))
@@ -190,11 +180,6 @@
L.visible_message("[held_mob] escapes from [L]!", "[held_mob] escapes your grip!")
release()
-/obj/item/clothing/head/mob_holder/Exited(atom/movable/gone, direction)
- . = ..()
- if(held_mob && held_mob == gone)
- release()
-
/obj/item/clothing/head/mob_holder/mob_can_equip(M, equipper, slot, disable_warning, bypass_equip_delay_self)
if(M == held_mob || !ishuman(M)) //monkeys holding monkeys holding monkeys...
return FALSE
@@ -247,9 +232,7 @@
return location.transfer_air(taker, ratio)
// escape when found if applicable
-/obj/item/clothing/head/mob_holder/on_found(mob/finder)
+/obj/item/clothing/head/mob_holder/on_found(mob/living/finder)
if(escape_on_find)
- to_chat(finder, span_warning("\A [held_mob.name] pops out! "))
- finder.visible_message(span_warning("\A [held_mob.name] pops out of the container [finder] is opening!"), ignored_mobs = finder)
- release(TRUE, FALSE)
- return
+ finder.visible_message("[finder] accidentally releases the [held_mob]!")
+ release()
diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm
index aae6cbaa5c..afc4312779 100644
--- a/code/game/objects/buckling.dm
+++ b/code/game/objects/buckling.dm
@@ -25,32 +25,11 @@
if(user_unbuckle_mob(buckled_mobs[1],user))
return 1
-/atom/movable/attackby(obj/item/attacking_item, mob/user, params)
- if(!can_buckle || !istype(attacking_item, /obj/item/riding_offhand) || !user.Adjacent(src))
- return ..()
-
- var/obj/item/riding_offhand/riding_item = attacking_item
- var/mob/living/carried_mob = riding_item.rider
- if(carried_mob == user) //Piggyback user.
- return
- user.unbuckle_mob(carried_mob)
- carried_mob.forceMove(get_turf(src))
- return mouse_buckle_handling(carried_mob, user)
-
/atom/movable/MouseDrop_T(mob/living/M, mob/living/user)
. = ..()
- return mouse_buckle_handling(M, user)
-
-/**
- * Does some typechecks and then calls user_buckle_mob
- *
- * Arguments:
- * M - The mob being buckled to src
- * user - The mob buckling M to src
- */
-/atom/movable/proc/mouse_buckle_handling(mob/living/M, mob/living/user)
if(can_buckle && istype(M) && istype(user))
- return user_buckle_mob(M, user, check_loc = FALSE)
+ if(user_buckle_mob(M, user))
+ return 1
/atom/movable/proc/has_buckled_mobs()
if(!buckled_mobs)
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index e63f809a5e..7a953089a5 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -177,8 +177,6 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb
var/canMouseDown = FALSE
- /// Used if we want to have a custom verb text for throwing. "John Spaceman flicks the ciggerate" for example.
- var/throw_verb
/obj/item/Initialize(mapload)
@@ -1118,16 +1116,6 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb
QDEL_NULL(src)
return TRUE
-///Called by the carbon throw_item() proc. Returns null if the item negates the throw, or a reference to the thing to suffer the throw else.
-/obj/item/proc/on_thrown(mob/living/carbon/user, atom/target)
- if((item_flags & ABSTRACT) || HAS_TRAIT(src, TRAIT_NODROP))
- return
- user.dropItemToGround(src, silent = TRUE)
- if(throwforce && HAS_TRAIT(user, TRAIT_PACIFISM))
- to_chat(user, span_notice("You set [src] down gently on the ground."))
- return
- return src
-
/**
diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm
index a52bbb75f3..518772c771 100644
--- a/code/game/objects/items/cigs_lighters.dm
+++ b/code/game/objects/items/cigs_lighters.dm
@@ -108,7 +108,6 @@ CIGARETTE PACKETS ARE IN FANCY.DM
w_class = WEIGHT_CLASS_TINY
body_parts_covered = null
grind_results = list()
- throw_verb = "flick"
var/lit = FALSE
var/starts_lit = FALSE
var/icon_on = "cigon" //Note - these are in masks.dmi not in cigarette.dmi
diff --git a/code/game/objects/structures/beds_chairs/alien_nest.dm b/code/game/objects/structures/beds_chairs/alien_nest.dm
index 762331c40e..eff87d3955 100644
--- a/code/game/objects/structures/beds_chairs/alien_nest.dm
+++ b/code/game/objects/structures/beds_chairs/alien_nest.dm
@@ -48,7 +48,7 @@
unbuckle_mob(M)
add_fingerprint(user)
-/obj/structure/bed/nest/user_buckle_mob(mob/living/M, mob/living/carbon/user, check_loc)
+/obj/structure/bed/nest/user_buckle_mob(mob/living/M, mob/living/carbon/user)
if ( !ismob(M) || (get_dist(src, user) > 1) || (M.loc != src.loc) || !user.cuff_resist_check() || M.buckled )
return
diff --git a/code/game/objects/structures/kitchen_spike.dm b/code/game/objects/structures/kitchen_spike.dm
index 8c2655dd64..a37797045f 100644
--- a/code/game/objects/structures/kitchen_spike.dm
+++ b/code/game/objects/structures/kitchen_spike.dm
@@ -97,7 +97,7 @@
-/obj/structure/kitchenspike/user_buckle_mob(mob/living/M, mob/living/user, check_loc) //Don't want them getting put on the rack other than by spiking
+/obj/structure/kitchenspike/user_buckle_mob(mob/living/M, mob/living/user) //Don't want them getting put on the rack other than by spiking
return
/obj/structure/kitchenspike/user_unbuckle_mob(mob/living/buckled_mob, mob/living/carbon/human/user)
diff --git a/code/game/objects/structures/manned_turret.dm b/code/game/objects/structures/manned_turret.dm
index 3f1cb5f4c1..f70510e173 100644
--- a/code/game/objects/structures/manned_turret.dm
+++ b/code/game/objects/structures/manned_turret.dm
@@ -43,7 +43,7 @@
. = ..()
STOP_PROCESSING(SSfastprocess, src)
-/obj/machinery/manned_turret/user_buckle_mob(mob/living/M, mob/living/carbon/user, check_loc)
+/obj/machinery/manned_turret/user_buckle_mob(mob/living/M, mob/living/carbon/user)
if(user.incapacitated() || !istype(user))
return
M.forceMove(get_turf(src))
diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm
index c39b3f64b1..69206f0d08 100644
--- a/code/game/objects/structures/morgue.dm
+++ b/code/game/objects/structures/morgue.dm
@@ -330,17 +330,6 @@ GLOBAL_LIST_EMPTY(crematoriums)
else
to_chat(user, "That's not connected to anything!")
-/obj/structure/tray/attackby(obj/P, mob/user, params)
- if(!istype(P, /obj/item/riding_offhand))
- return ..()
-
- var/obj/item/riding_offhand/riding_item = P
- var/mob/living/carried_mob = riding_item.rider
- if(carried_mob == user) //Piggyback user.
- return
- user.unbuckle_mob(carried_mob)
- MouseDrop_T(carried_mob, user)
-
/obj/structure/tray/MouseDrop_T(atom/movable/O as mob|obj, mob/user)
if(!ismovable(O) || O.anchored || !Adjacent(user) || !user.Adjacent(O) || O.loc == user)
return
diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm
index 12799b4370..b7642f4658 100644
--- a/code/game/objects/structures/tables_racks.dm
+++ b/code/game/objects/structures/tables_racks.dm
@@ -124,11 +124,11 @@
. = . || (caller.pass_flags & PASSTABLE)
/obj/structure/table/proc/tableplace(mob/living/user, mob/living/pushed_mob)
- pushed_mob.forceMove(loc)
- pushed_mob.set_resting(TRUE, TRUE)
- pushed_mob.visible_message(span_notice("[user] places [pushed_mob] onto [src]."), \
- span_notice("[user] places [pushed_mob] onto [src]."))
- log_combat(user, pushed_mob, "places", null, "onto [src]")
+ pushed_mob.forceMove(src.loc)
+ pushed_mob.set_resting(TRUE, FALSE)
+ pushed_mob.visible_message("[user] places [pushed_mob] onto [src].", \
+ "[user] places [pushed_mob] onto [src].")
+ log_combat(user, pushed_mob, "placed")
/obj/structure/table/proc/tablepush(mob/living/user, mob/living/pushed_mob)
if(HAS_TRAIT(user, TRAIT_PACIFISM))
@@ -205,30 +205,6 @@
return
// If the tray IS empty, continue on (tray will be placed on the table like other items)
- if(istype(I, /obj/item/riding_offhand))
- var/obj/item/riding_offhand/riding_item = I
- var/mob/living/carried_mob = riding_item.rider
- if(carried_mob == user) //Piggyback user.
- return
- if(user.a_intent == INTENT_HARM)
- user.unbuckle_mob(carried_mob)
- tablelimbsmash(user, carried_mob)
- else
- var/tableplace_delay = 3.5 SECONDS
- var/skills_space = ""
- if(HAS_TRAIT(user, TRAIT_QUICKER_CARRY))
- tableplace_delay = 2 SECONDS
- skills_space = " expertly"
- else if(HAS_TRAIT(user, TRAIT_QUICK_CARRY))
- tableplace_delay = 2.75 SECONDS
- skills_space = " quickly"
- carried_mob.visible_message(span_notice("[user] begins to[skills_space] place [carried_mob] onto [src]..."),
- span_userdanger("[user] begins to[skills_space] place [carried_mob] onto [src]..."))
- if(do_after(user, tableplace_delay, target = carried_mob))
- user.unbuckle_mob(carried_mob)
- tableplace(user, carried_mob)
- return TRUE
-
if(user.a_intent != INTENT_HARM && !(I.item_flags & ABSTRACT))
if(user.transferItemToLoc(I, drop_location()))
var/list/click_params = params2list(params)
diff --git a/code/modules/antagonists/clockcult/clock_structures/traps/brass_skewer.dm b/code/modules/antagonists/clockcult/clock_structures/traps/brass_skewer.dm
index ac8dc0bffb..a7c1f81f06 100644
--- a/code/modules/antagonists/clockcult/clock_structures/traps/brass_skewer.dm
+++ b/code/modules/antagonists/clockcult/clock_structures/traps/brass_skewer.dm
@@ -81,7 +81,7 @@
density = TRUE //Skewers are one-use only
desc = "A vicious brass spike protruding from the ground like a stala[pick("gm", "ct")]ite. It makes you sick to look at." //is stalagmite the ground one? or the ceiling one? who can ever remember?
-/obj/structure/destructible/clockwork/trap/brass_skewer/user_buckle_mob(check_loc)
+/obj/structure/destructible/clockwork/trap/brass_skewer/user_buckle_mob()
return
/obj/structure/destructible/clockwork/trap/brass_skewer/post_buckle_mob(mob/living/L)
diff --git a/code/modules/antagonists/devil/true_devil/inventory.dm b/code/modules/antagonists/devil/true_devil/inventory.dm
index 8856838a34..e98cb5ca72 100644
--- a/code/modules/antagonists/devil/true_devil/inventory.dm
+++ b/code/modules/antagonists/devil/true_devil/inventory.dm
@@ -1,4 +1,4 @@
-/mob/living/carbon/true_devil/doUnEquip(obj/item/I, force, invdrop, silent = FALSE)
+/mob/living/carbon/true_devil/doUnEquip(obj/item/I, force, silent = FALSE)
if(..())
update_inv_hands()
return 1
diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm
index 79a0ccda77..51659a2904 100644
--- a/code/modules/mob/inventory.dm
+++ b/code/modules/mob/inventory.dm
@@ -292,18 +292,10 @@
//The following functions are the same save for one small difference
-/**
- * Used to drop an item (if it exists) to the ground.
- * * Will pass as TRUE is successfully dropped, or if there is no item to drop.
- * * Will pass FALSE if the item can not be dropped due to TRAIT_NODROP via doUnEquip()
- * If the item can be dropped, it will be forceMove()'d to the ground and the turf's Entered() will be called.
-*/
-/mob/proc/dropItemToGround(obj/item/I, force = FALSE, silent = FALSE, invdrop = TRUE)
- if (isnull(I))
- return TRUE
-
- SEND_SIGNAL(src, COMSIG_MOB_DROPPING_ITEM)
- . = doUnEquip(I, force, drop_location(), FALSE, invdrop = invdrop, silent = silent)
+//for when you want the item to end up on the ground
+//will force move the item to the ground and call the turf's Entered
+/mob/proc/dropItemToGround(obj/item/I, force = FALSE)
+ return doUnEquip(I, force, drop_location(), FALSE)
//for when the item will be immediately placed in a loc other than the ground
/mob/proc/transferItemToLoc(obj/item/I, newloc = null, force = FALSE, silent = TRUE)
diff --git a/code/modules/mob/living/carbon/alien/larva/inventory.dm b/code/modules/mob/living/carbon/alien/larva/inventory.dm
index 5b49c3abb0..b07bd180f6 100644
--- a/code/modules/mob/living/carbon/alien/larva/inventory.dm
+++ b/code/modules/mob/living/carbon/alien/larva/inventory.dm
@@ -1,3 +1,3 @@
//can't unequip since it can't equip anything
-/mob/living/carbon/alien/larva/doUnEquip(obj/item/W, invdrop, silent = FALSE)
+/mob/living/carbon/alien/larva/doUnEquip(obj/item/W, silent = FALSE)
return
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index e9f4f61556..419a75eff2 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -141,28 +141,26 @@
/mob/living/carbon/proc/throw_mode_off()
- in_throw_mode = FALSE
+ in_throw_mode = 0
if(client && hud_used)
hud_used.throw_icon.icon_state = "act_throw_off"
/mob/living/carbon/proc/throw_mode_on()
- in_throw_mode = TRUE
+ in_throw_mode = 1
if(client && hud_used)
hud_used.throw_icon.icon_state = "act_throw_on"
/mob/proc/throw_item(atom/target)
SEND_SIGNAL(src, COMSIG_MOB_THROW, target)
- SEND_GLOBAL_SIGNAL(COMSIG_GLOB_CARBON_THROW_THING, src, target)
- return TRUE
+ return
/mob/living/carbon/throw_item(atom/target)
- . = ..()
throw_mode_off()
if(!target || !isturf(loc))
- return FALSE
+ return
if(istype(target, /atom/movable/screen))
- return FALSE
+ return
//CIT CHANGES - makes it impossible to throw while in stamina softcrit
if(IS_STAMCRIT(src))
@@ -172,56 +170,59 @@
var/random_turn = a_intent == INTENT_HARM
//END OF CIT CHANGES
- var/atom/movable/thrown_thing
- var/obj/item/held_item = get_active_held_item()
- var/verb_text = pick("throw", "toss", "hurl", "chuck", "fling")
- if(prob(0.5))
- verb_text = "yeet"
+ var/obj/item/I = get_active_held_item()
- var/neckgrab_throw = FALSE
- if(!held_item)
- if(pulling && isliving(pulling) && grab_state >= GRAB_AGGRESSIVE)
- var/mob/living/throwable_mob = pulling
- if(!throwable_mob.buckled)
- thrown_thing = throwable_mob
- if(grab_state >= GRAB_NECK)
- neckgrab_throw = TRUE
+ var/atom/movable/thrown_thing
+ var/mob/living/throwable_mob
+
+ if(istype(I, /obj/item/clothing/head/mob_holder))
+ var/obj/item/clothing/head/mob_holder/holder = I
+ if(holder.held_mob)
+ throwable_mob = holder.held_mob
+ holder.release()
+
+ if(!I || throwable_mob)
+ if(!throwable_mob && pulling && isliving(pulling) && grab_state >= GRAB_AGGRESSIVE)
+ throwable_mob = pulling
+
+ if(throwable_mob && !throwable_mob.buckled)
+ thrown_thing = throwable_mob
+ if(pulling)
stop_pulling()
- if(HAS_TRAIT(src, TRAIT_PACIFISM))
- to_chat(src, span_notice("You gently let go of [throwable_mob]."))
- return FALSE
- if(!UseStaminaBuffer(STAM_COST_THROW_MOB * ((throwable_mob.mob_size+1)**2), TRUE))
- return FALSE
- else
- thrown_thing = held_item.on_thrown(src, target)
- if(!thrown_thing)
- return FALSE
- if(isliving(thrown_thing))
- var/turf/start_T = get_turf(loc) //Get the start and target tile for the descriptors
- var/turf/end_T = get_turf(target)
- if(start_T && end_T)
- log_combat(src, thrown_thing, "thrown", addition="grab from tile in [AREACOORD(start_T)] towards tile at [AREACOORD(end_T)]")
- var/power_throw = 0
- if(HAS_TRAIT(src, TRAIT_HULK))
- power_throw++
- if(HAS_TRAIT(src, TRAIT_DWARF))
- power_throw--
- if(HAS_TRAIT(thrown_thing, TRAIT_DWARF))
- power_throw++
- if(neckgrab_throw)
- power_throw++
- if(isitem(thrown_thing))
- var/obj/item/thrown_item = thrown_thing
- if(thrown_item.throw_verb)
- verb_text = thrown_item.throw_verb
- visible_message(span_danger("[src] [verb_text][plural_s(verb_text)] [thrown_thing][power_throw ? " really hard!" : "."]"), \
- span_danger("You [verb_text] [thrown_thing][power_throw ? " really hard!" : "."]"))
- log_message("has thrown [thrown_thing] [power_throw > 0 ? "really hard" : ""]", LOG_ATTACK)
- do_attack_animation(target, no_effect = 1)
- var/extra_throw_range = 0 // HAS_TRAIT(src, TRAIT_THROWINGARM) ? 2 : 0
- playsound(loc, 'sound/weapons/punchmiss.ogg', 50, 1, -1)
- newtonian_move(get_dir(target, src))
- thrown_thing.safe_throw_at(target, thrown_thing.throw_range + extra_throw_range, max(1,thrown_thing.throw_speed + power_throw), src, null, null, null, move_force, random_turn)
+ if(HAS_TRAIT(src, TRAIT_PACIFISM))
+ to_chat(src, "You gently let go of [throwable_mob].")
+ return
+ if(!UseStaminaBuffer(STAM_COST_THROW_MOB * ((throwable_mob.mob_size+1)**2), TRUE))
+ return
+ var/turf/start_T = get_turf(loc) //Get the start and target tile for the descriptors
+ var/turf/end_T = get_turf(target)
+ if(start_T && end_T)
+ log_combat(src, throwable_mob, "thrown", addition="grab from tile in [AREACOORD(start_T)] towards tile at [AREACOORD(end_T)]")
+
+ else if(!(I.item_flags & ABSTRACT) && !HAS_TRAIT(I, TRAIT_NODROP))
+ thrown_thing = I
+ dropItemToGround(I)
+
+ if(HAS_TRAIT(src, TRAIT_PACIFISM) && I.throwforce)
+ to_chat(src, "You set [I] down gently on the ground.")
+ return
+
+ if(!UseStaminaBuffer(I.getweight(src, STAM_COST_THROW_MULT, SKILL_THROW_STAM_COST), warn = TRUE))
+ return
+
+ if(thrown_thing)
+ var/power_throw = 0
+ if(HAS_TRAIT(src, TRAIT_HULK))
+ power_throw++
+ if(pulling && grab_state >= GRAB_NECK)
+ power_throw++
+ visible_message("[src] throws [thrown_thing][power_throw ? " really hard!" : "."]", \
+ "You throw [thrown_thing][power_throw ? " really hard!" : "."]")
+ log_message("has thrown [thrown_thing] [power_throw ? "really hard" : ""]", LOG_ATTACK)
+ do_attack_animation(target, no_effect = 1)
+ playsound(loc, 'sound/weapons/punchmiss.ogg', 50, 1, -1)
+ newtonian_move(get_dir(target, src))
+ thrown_thing.safe_throw_at(target, thrown_thing.throw_range, thrown_thing.throw_speed + power_throw, src, null, null, null, move_force, random_turn)
/mob/living/carbon/restrained(ignore_grab)
. = (handcuffed || (!ignore_grab && pulledby && pulledby.grab_state >= GRAB_AGGRESSIVE))
diff --git a/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm b/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm
index 4e57aa1562..1fd1e623db 100644
--- a/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm
+++ b/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm
@@ -41,7 +41,7 @@
..() //lose items, then return
//SLOT HANDLING BULLSHIT FOR INTERNAL STORAGE
-/mob/living/simple_animal/hostile/guardian/dextrous/doUnEquip(obj/item/I, force, invdrop, silent = FALSE)
+/mob/living/simple_animal/hostile/guardian/dextrous/doUnEquip(obj/item/I, force, silent = FALSE)
if(..())
update_inv_hands()
if(I == internal_storage)
diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm
index 151cc70a27..f226a911d8 100644
--- a/code/modules/mob/living/simple_animal/simple_animal.dm
+++ b/code/modules/mob/living/simple_animal/simple_animal.dm
@@ -587,7 +587,7 @@
//ANIMAL RIDING
-/mob/living/simple_animal/user_buckle_mob(mob/living/M, mob/user, check_loc)
+/mob/living/simple_animal/user_buckle_mob(mob/living/M, mob/user)
var/datum/component/riding/riding_datum = GetComponent(/datum/component/riding)
if(riding_datum)
if(user.incapacitated())
diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm
index 2b267c4d01..dc9d6ff6a3 100644
--- a/code/modules/mob/living/simple_animal/slime/slime.dm
+++ b/code/modules/mob/living/simple_animal/slime/slime.dm
@@ -252,7 +252,7 @@
Feedon(Food)
return ..()
-/mob/living/simple_animal/slime/doUnEquip(obj/item/W, invdrop, silent = FALSE)
+/mob/living/simple_animal/slime/doUnEquip(obj/item/W, silent = FALSE)
return
/mob/living/simple_animal/slime/start_pulling(atom/movable/AM, state, force = move_force, supress_message = FALSE)
diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm
index be03e8a9c9..8f9a7805c6 100644
--- a/code/modules/power/singularity/emitter.dm
+++ b/code/modules/power/singularity/emitter.dm
@@ -383,7 +383,7 @@
auto.Remove(buckled_mob)
. = ..()
-/obj/machinery/power/emitter/prototype/user_buckle_mob(mob/living/M, mob/living/carbon/user, check_loc)
+/obj/machinery/power/emitter/prototype/user_buckle_mob(mob/living/M, mob/living/carbon/user)
if(user.incapacitated() || !istype(user))
return
for(var/atom/movable/A in get_turf(src))
diff --git a/tgstation.dme b/tgstation.dme
index 15028c7f40..54a485b1a3 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -160,7 +160,6 @@
#include "code\__DEFINES\dcs\flags.dm"
#include "code\__DEFINES\dcs\helpers.dm"
#include "code\__DEFINES\dcs\signals.dm"
-#include "code\__DEFINES\dcs\signals\signals_global.dm"
#include "code\__DEFINES\dcs\signals\signals_hud.dm"
#include "code\__DEFINES\dcs\signals\signals_medical.dm"
#include "code\__DEFINES\dcs\signals\signals_mod.dm"
@@ -170,7 +169,6 @@
#include "code\__DEFINES\dcs\signals\signals_subsystem.dm"
#include "code\__DEFINES\dcs\signals\signals_atom\signals_atom_movement.dm"
#include "code\__DEFINES\dcs\signals\signals_mob\signals_mob_living.dm"
-#include "code\__DEFINES\dcs\signals\signals_mob\signals_mob_main.dm"
#include "code\__DEFINES\mapping\maploader.dm"
#include "code\__DEFINES\material\worth.dm"
#include "code\__DEFINES\mobs\innate_abilities.dm"