mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-07-12 15:47:04 +01:00
Magboot and glove fix (#19415)
* Magboot and glove fix * Update armblade.dm * Update leash.dm
This commit is contained in:
@@ -182,9 +182,6 @@
|
||||
#define COMSIG_OBSERVER_TURF_ENTERED "observer_turf_entered"
|
||||
#define COMSIG_OBSERVER_TURF_EXITED "observer_turf_exited"
|
||||
#define COMSIG_OBSERVER_Z_MOVED "observer_z_moved"
|
||||
#define COMSIG_OBSERVER_ITEM_EQUIPPED "observer_item_equipped"
|
||||
#define COMSIG_OBSERVER_MOB_UNEQUIPPED "observer_mob_unequipped"
|
||||
#define COMSIG_OBSERVER_ITEM_UNEQUIPPED "observer_item_unequipped"
|
||||
#define COMSIG_OBSERVER_GLOBALMOVED "observer_global_move"
|
||||
|
||||
///called when teleporting into a protected turf: (channel, turf/origin)
|
||||
|
||||
@@ -310,7 +310,6 @@
|
||||
#define COMSIG_GHOST_QUERY_COMPLETE "ghost_query_complete"
|
||||
/// COMSIG used to get messages where they need to go
|
||||
#define COMSIG_VISIBLE_MESSAGE "visible_message"
|
||||
#define COMSIG_OBSERVER_MOB_EQUIPPED "observer_mob_equipped"
|
||||
///from end of revival_healing_action(): ()
|
||||
#define COMSIG_LIVING_AHEAL "living_post_aheal"
|
||||
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
var/mob/living/host = null
|
||||
item_flags = DROPDEL | NOSTRIP
|
||||
|
||||
/obj/item/tk_grab/dropped(mob/user)
|
||||
/obj/item/tk_grab/dropped(mob/user, equipping, slot)
|
||||
..()
|
||||
if(focus && user && loc != user && loc != user.loc) // drop_item() gets called when you tk-attack a table/closet with an item
|
||||
if(focus.Adjacent(loc))
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
desc = "A grotesque weapon made out of bone and flesh that cleaves through people as a hot knife through butter."
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
icon_state = "arm_blade"
|
||||
w_class = ITEMSIZE_HUGE
|
||||
w_class = ITEMSIZE_NO_CONTAINER
|
||||
force = 5
|
||||
throwforce = 0 //Just to be on the safe side
|
||||
throw_range = 0
|
||||
@@ -81,12 +81,12 @@
|
||||
span_warningplain("You hear organic matter ripping and tearing!"))
|
||||
src.creator = loc
|
||||
|
||||
/obj/item/melee/changeling/dropped(mob/user)
|
||||
..()
|
||||
/obj/item/melee/changeling/dropped(mob/user, equipping, slot)
|
||||
visible_message(span_warning("With a sickening crunch, [creator] reforms their arm!"),
|
||||
span_notice("We assimilate the weapon back into our body."),
|
||||
span_warningplain("You hear organic matter ripping and tearing!"))
|
||||
playsound(src, 'sound/effects/blobattack.ogg', 30, 1)
|
||||
..()
|
||||
|
||||
/obj/item/melee/changeling/Destroy()
|
||||
creator = null
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
icon_state = "electric_hand"
|
||||
show_examine = FALSE
|
||||
w_class = ITEMSIZE_NO_CONTAINER
|
||||
item_flags = DROPDEL | NOSTRIP
|
||||
|
||||
/obj/item/finger_lockpick/Initialize(mapload)
|
||||
@@ -38,7 +39,9 @@
|
||||
if(ismob(loc))
|
||||
to_chat(loc, span_notice("We shape our finger to fit inside electronics, and are ready to force them open."))
|
||||
|
||||
/obj/item/finger_lockpick/dropped(mob/user)
|
||||
/obj/item/finger_lockpick/dropped(mob/user, equipping, slot)
|
||||
if(equipping)
|
||||
return ..()
|
||||
..()
|
||||
to_chat(user, span_notice("We discreetly shape our finger back to a less suspicious form."))
|
||||
|
||||
|
||||
@@ -1,40 +0,0 @@
|
||||
// Observer Pattern Implementation: Equipped
|
||||
// Registration type: /mob
|
||||
//
|
||||
// Raised when: A mob equips an item.
|
||||
//
|
||||
// Arguments that the called proc should expect:
|
||||
// /mob/equipper: The mob that equipped the item.
|
||||
// /obj/item/item: The equipped item.
|
||||
// slot: The slot equipped to.
|
||||
/*
|
||||
GLOBAL_DATUM_INIT(mob_equipped_event, /datum/decl/observ/mob_equipped, new)
|
||||
|
||||
/datum/decl/observ/mob_equipped
|
||||
name = "Mob Equipped"
|
||||
expected_type = /mob
|
||||
|
||||
// Observer Pattern Implementation: Equipped
|
||||
// Registration type: /obj/item
|
||||
//
|
||||
// Raised when: A mob equips an item.
|
||||
//
|
||||
// Arguments that the called proc should expect:
|
||||
// /obj/item/item: The equipped item.
|
||||
// /mob/equipper: The mob that equipped the item.
|
||||
// slot: The slot equipped to.
|
||||
GLOBAL_DATUM_INIT(item_equipped_event, /datum/decl/observ/item_equipped, new)
|
||||
|
||||
/datum/decl/observ/item_equipped
|
||||
name = "Item Equipped"
|
||||
expected_type = /obj/item
|
||||
*/
|
||||
//Deprecated in favor of comsigs
|
||||
/********************
|
||||
* Equipped Handling *
|
||||
********************/
|
||||
|
||||
/obj/item/equipped(var/mob/user, var/slot)
|
||||
. = ..()
|
||||
SEND_SIGNAL(user, COMSIG_OBSERVER_MOB_EQUIPPED, src, slot)
|
||||
SEND_SIGNAL(src, COMSIG_OBSERVER_ITEM_EQUIPPED, user, slot)
|
||||
@@ -1,45 +0,0 @@
|
||||
// Observer Pattern Implementation: Unequipped (dropped)
|
||||
// Registration type: /mob
|
||||
//
|
||||
// Raised when: A mob unequips/drops an item.
|
||||
//
|
||||
// Arguments that the called proc should expect:
|
||||
// /mob/equipped: The mob that unequipped/dropped the item.
|
||||
// /obj/item/item: The unequipped item.
|
||||
/*
|
||||
GLOBAL_DATUM_INIT(mob_unequipped_event, /datum/decl/observ/mob_unequipped, new)
|
||||
|
||||
/datum/decl/observ/mob_unequipped
|
||||
name = "Mob Unequipped"
|
||||
expected_type = /mob
|
||||
|
||||
// Observer Pattern Implementation: Unequipped (dropped)
|
||||
// Registration type: /obj/item
|
||||
//
|
||||
// Raised when: A mob unequips/drops an item.
|
||||
//
|
||||
// Arguments that the called proc should expect:
|
||||
// /obj/item/item: The unequipped item.
|
||||
// /mob/equipped: The mob that unequipped/dropped the item.
|
||||
|
||||
GLOBAL_DATUM_INIT(item_unequipped_event, /datum/decl/observ/item_unequipped, new)
|
||||
|
||||
/datum/decl/observ/item_unequipped
|
||||
name = "Item Unequipped"
|
||||
expected_type = /obj/item
|
||||
*/
|
||||
//Deprecated in favor of comsigs
|
||||
|
||||
/**********************
|
||||
* Unequipped Handling *
|
||||
**********************/
|
||||
|
||||
/obj/item/dropped(var/mob/user)
|
||||
. = ..(user)
|
||||
//SEND_SIGNAL(user, COMSIG_OBSERVER_MOB_UNEQUIPPED, src)
|
||||
//SEND_SIGNAL(src, COMSIG_OBSERVER_ITEM_UNEQUIPPED, user)
|
||||
if(user) // Cannot always guarantee that user won't be null
|
||||
SEND_SIGNAL(user, COMSIG_OBSERVER_MOB_UNEQUIPPED, src)
|
||||
SEND_SIGNAL(src, COMSIG_OBSERVER_ITEM_UNEQUIPPED, user)
|
||||
else
|
||||
SEND_SIGNAL(src, COMSIG_OBSERVER_ITEM_UNEQUIPPED)
|
||||
@@ -50,7 +50,7 @@
|
||||
..()
|
||||
|
||||
// Removes the spell buttons from the HUD.
|
||||
/obj/item/technomancer_core/dropped(mob/user)
|
||||
/obj/item/technomancer_core/dropped(mob/user, equipping, slot)
|
||||
for(var/atom/movable/screen/ability/obj_based/technomancer/A in wearer.ability_master.ability_objects)
|
||||
wearer.ability_master.remove_ability(A)
|
||||
wearer = null
|
||||
|
||||
@@ -30,12 +30,14 @@
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/clothing/gloves/regen/dropped(var/mob/user)
|
||||
/obj/item/clothing/gloves/regen/dropped(mob/user, equipping, slot)
|
||||
if(equipping)
|
||||
return ..()
|
||||
|
||||
..()
|
||||
|
||||
if(!ishuman(user))
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(H.can_feel_pain())
|
||||
to_chat(H, span_danger("You feel the hypodermic needles as you slide \the [src] off!"))
|
||||
|
||||
@@ -66,7 +66,7 @@ Buildable meters
|
||||
if(make_from.mirrored)
|
||||
do_a_flip()
|
||||
|
||||
/obj/item/pipe/dropped(mob/user)
|
||||
/obj/item/pipe/dropped(mob/user, equipping, slot)
|
||||
if(loc)
|
||||
setPipingLayer(piping_layer)
|
||||
return ..()
|
||||
@@ -271,7 +271,7 @@ Buildable meters
|
||||
to_chat(user, span_notice("You fasten the meter to the pipe."))
|
||||
qdel(src)
|
||||
|
||||
/obj/item/pipe_meter/dropped(mob/user)
|
||||
/obj/item/pipe_meter/dropped(mob/user, equipping, slot)
|
||||
. = ..()
|
||||
if(loc)
|
||||
setAttachLayer(piping_layer)
|
||||
|
||||
@@ -432,18 +432,25 @@
|
||||
playsound(src, drop_sound, 30, preference = /datum/preference/toggle/drop_sounds)
|
||||
|
||||
// apparently called whenever an item is removed from a slot, container, or anything else.
|
||||
/obj/item/proc/dropped(mob/user)
|
||||
// TO NOTE:
|
||||
// Putting an item from your HAND into a POCKET = equipping
|
||||
// Putting an item from your HAND to ANY INVENTORY SLOT = equipping
|
||||
// DROPPING an item (from hand or inventory slot) = NOT equipping
|
||||
// Putting an item from your POCKET into a HAND = NOT equipping
|
||||
// If you have an item you want an effect when DROPPED but NOT put in the user's inventory, do a loc == user check.
|
||||
// This whole things needs to be completely replaced by tg's dropped stuff but we're a long way off from that.
|
||||
/obj/item/proc/dropped(mob/user, equipping, slot)
|
||||
SHOULD_CALL_PARENT(TRUE)
|
||||
appearance_flags &= ~NO_CLIENT_COLOR
|
||||
// Remove any item actions we temporary gave out.
|
||||
for(var/datum/action/action_item_has as anything in actions)
|
||||
action_item_has.Remove(user)
|
||||
|
||||
if((item_flags & DROPDEL) && loc != user && !QDELETED(src))
|
||||
qdel(src)
|
||||
|
||||
SEND_SIGNAL(src, COMSIG_ITEM_DROPPED, user)
|
||||
SEND_SIGNAL(user, COMSIG_MOB_DROPPED_ITEM, src)
|
||||
if(!equipping) //We ONLY send these signals when we ACTUALLY drop the item. Because our item code is stupid, swapping items between your hand is 'dropping' them.
|
||||
SEND_SIGNAL(src, COMSIG_ITEM_DROPPED, user)
|
||||
SEND_SIGNAL(user, COMSIG_MOB_DROPPED_ITEM, src)
|
||||
if((item_flags & DROPDEL) && loc != user && !QDELETED(src))
|
||||
qdel(src)
|
||||
|
||||
if(my_augment && !QDELETED(src))
|
||||
forceMove(my_augment)
|
||||
@@ -538,8 +545,9 @@ GLOBAL_LIST_INIT(slot_flags_enumeration, list(
|
||||
//the mob M is attempting to equip this item into the slot passed through as 'slot'. Return 1 if it can do this and 0 if it can't.
|
||||
//If you are making custom procs but would like to retain partial or complete functionality of this one, include a 'return ..()' to where you want this to happen.
|
||||
//Set disable_warning to 1 if you wish it to not give you outputs.
|
||||
//Set go_over_slot to TRUE if the item can go over an item (ex: magboots going over normal boots)
|
||||
//Should probably move the bulk of this into mob code some time, as most of it is related to the definition of slots and not item-specific
|
||||
/obj/item/proc/mob_can_equip(M as mob, slot, disable_warning = FALSE, var/ignore_obstruction = FALSE)
|
||||
/obj/item/proc/mob_can_equip(mob/M, slot, disable_warning = FALSE, ignore_obstruction = FALSE, go_over_slot)
|
||||
if(!slot) return 0
|
||||
if(!M) return 0
|
||||
|
||||
@@ -560,7 +568,7 @@ GLOBAL_LIST_INIT(slot_flags_enumeration, list(
|
||||
return 0
|
||||
|
||||
//Next check that the slot is free
|
||||
if(H.get_equipped_item(slot))
|
||||
if(H.get_equipped_item(slot) && !go_over_slot)
|
||||
return 0
|
||||
|
||||
//Next check if the slot is accessible.
|
||||
|
||||
@@ -333,7 +333,7 @@
|
||||
usr.client.images.Remove(i)
|
||||
|
||||
// Make sure to turn off the colors when we drop the blueprints.
|
||||
/obj/item/blueprints/dropped(mob/user)
|
||||
/obj/item/blueprints/dropped(mob/user, equipping, slot)
|
||||
if(areaColor_turfs.len)
|
||||
seeAreaColors_remove()
|
||||
return ..()
|
||||
|
||||
@@ -332,27 +332,27 @@
|
||||
if(message)
|
||||
to_chat(user, message)
|
||||
*/
|
||||
/obj/item/areaeditor/blueprints/dropped(mob/user)
|
||||
/obj/item/areaeditor/blueprints/dropped(mob/user, equipping, slot)
|
||||
if(equipping)
|
||||
return ..()
|
||||
..()
|
||||
//clear_viewer()
|
||||
if(areaColor_turfs.len)
|
||||
seeAreaColors_remove()
|
||||
legend = FALSE
|
||||
|
||||
|
||||
|
||||
/obj/item/areaeditor/proc/get_area_type(area/A)
|
||||
if (!A)
|
||||
if(!A)
|
||||
A = get_area(usr)
|
||||
if(A.outdoors)
|
||||
return AREA_SPACE
|
||||
|
||||
for (var/type in GLOB.BUILDABLE_AREA_TYPES)
|
||||
if ( istype(A,type) )
|
||||
for(var/type in GLOB.BUILDABLE_AREA_TYPES)
|
||||
if(istype(A,type))
|
||||
return AREA_SPACE
|
||||
|
||||
for (var/type in GLOB.SPECIALS)
|
||||
if ( istype(A,type) )
|
||||
for(var/type in GLOB.SPECIALS)
|
||||
if(istype(A,type))
|
||||
return AREA_SPECIAL
|
||||
return AREA_STATION
|
||||
|
||||
@@ -776,16 +776,6 @@
|
||||
if(i.icon_state == "blueprints")
|
||||
usr.client.images.Remove(i)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//GLOBAL VERB FOR PAPER TO ENABLE ANYONE TO MAKE AN AREA IN BUILDABLE AREAS.
|
||||
//THIS IS 70 TILES. ANYTHING LARGER SHOULD USE ACTUAL BLUEPRINTS.
|
||||
|
||||
|
||||
@@ -18,7 +18,9 @@
|
||||
pickup_sound = 'sound/items/pickup/device.ogg'
|
||||
drop_sound = 'sound/items/drop/device.ogg'
|
||||
|
||||
/obj/item/chameleon/dropped(mob/user)
|
||||
/obj/item/chameleon/dropped(mob/user, equipping, slot)
|
||||
if(equipping)
|
||||
return ..()
|
||||
disrupt()
|
||||
..()
|
||||
|
||||
|
||||
@@ -100,7 +100,7 @@
|
||||
|
||||
RegisterSignal(user, COMSIG_IN_RANGE_OF_IRRADIATION, PROC_REF(on_pre_potential_irradiation))
|
||||
|
||||
/obj/item/geiger/dropped(mob/user)
|
||||
/obj/item/geiger/dropped(mob/user, equipping, slot)
|
||||
. = ..()
|
||||
|
||||
UnregisterSignal(user, COMSIG_IN_RANGE_OF_IRRADIATION)
|
||||
|
||||
@@ -81,7 +81,7 @@ GLOBAL_LIST_EMPTY(GPS_list)
|
||||
. = ..()
|
||||
update_holder()
|
||||
|
||||
/obj/item/gps/dropped(mob/user)
|
||||
/obj/item/gps/dropped(mob/user, equipping, slot)
|
||||
. = ..()
|
||||
update_holder()
|
||||
|
||||
|
||||
@@ -360,7 +360,7 @@
|
||||
|
||||
return 0
|
||||
|
||||
/obj/item/personal_shield_generator/dropped(mob/user)
|
||||
/obj/item/personal_shield_generator/dropped(mob/user, equipping, slot)
|
||||
..()
|
||||
reattach_gun(user) //A gun attached to a base unit should never exist outside of their base unit or the mob equipping the base unit
|
||||
|
||||
@@ -432,7 +432,7 @@
|
||||
return 0
|
||||
return 1
|
||||
|
||||
/obj/item/gun/energy/gun/generator/dropped(mob/user)
|
||||
/obj/item/gun/energy/gun/generator/dropped(mob/user, equipping, slot)
|
||||
..() //update twohanding
|
||||
if(shield_generator)
|
||||
shield_generator.reattach_gun(user)
|
||||
|
||||
@@ -133,7 +133,9 @@
|
||||
|
||||
user_client = new_client
|
||||
|
||||
/obj/item/t_scanner/dropped(mob/user)
|
||||
/obj/item/t_scanner/dropped(mob/user, equipping, slot)
|
||||
if(equipping)
|
||||
return ..()
|
||||
set_user_client(null)
|
||||
..()
|
||||
|
||||
|
||||
@@ -333,8 +333,8 @@
|
||||
.=..()
|
||||
icon_state = "sucker-[vac_power]"
|
||||
|
||||
/obj/item/vac_attachment/dropped(mob/user as mob)
|
||||
.=..()
|
||||
/obj/item/vac_attachment/dropped(mob/user, equipping, slot)
|
||||
. = ..()
|
||||
icon_state = "sucker_drop"
|
||||
|
||||
/obj/item/vac_attachment/verb/hide_pack()
|
||||
|
||||
@@ -161,7 +161,7 @@
|
||||
for(var/i in 3 to get_dist(leash_pet, leash_master)) // Move the pet to a minimum of 2 tiles away from the master, so the pet trails behind them.
|
||||
step_towards(leash_pet, leash_master)
|
||||
|
||||
/obj/item/leash/dropped(mob/user)
|
||||
/obj/item/leash/dropped(mob/user, equipping, slot)
|
||||
//Drop the leash, and the leash effects stop
|
||||
. = ..()
|
||||
if(!leash_pet || !leash_master) //There is no pet. Stop this silliness
|
||||
|
||||
@@ -460,7 +460,7 @@
|
||||
/obj/item/stack/proc/combine_in_loc()
|
||||
return //STUBBED for now, as it seems to randomly delete stacks
|
||||
|
||||
/obj/item/stack/dropped(atom/old_loc)
|
||||
/obj/item/stack/dropped(mob/user, equipping, slot)
|
||||
. = ..()
|
||||
if(isturf(loc))
|
||||
combine_in_loc()
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
else
|
||||
to_chat(user, span_notice("You don't have a mouth, and can't make much use of \the [src]."))
|
||||
|
||||
/obj/item/clothing/mask/chewable/dropped(mob/user)
|
||||
/obj/item/clothing/mask/chewable/dropped(mob/user, equipping, slot)
|
||||
STOP_PROCESSING(SSprocessing, src)
|
||||
..()
|
||||
|
||||
|
||||
@@ -47,12 +47,14 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
location.hotspot_expose(700, 5)
|
||||
return
|
||||
|
||||
/obj/item/flame/match/dropped(mob/user)
|
||||
/obj/item/flame/match/dropped(mob/user, equipping, slot)
|
||||
if(equipping)
|
||||
return ..()
|
||||
//If dropped, put ourselves out
|
||||
//not before lighting up the turf we land on, though.
|
||||
if(lit)
|
||||
spawn(0)
|
||||
var/turf/location = src.loc
|
||||
var/turf/location = loc
|
||||
if(istype(location))
|
||||
location.hotspot_expose(700, 5)
|
||||
burn_out()
|
||||
|
||||
@@ -307,7 +307,9 @@
|
||||
if(user) //A ranged legcuff, until proper implementation as items it remains a projectile-only thing.
|
||||
return 1
|
||||
|
||||
/obj/item/handcuffs/legcuffs/bola/dropped(mob/user)
|
||||
/obj/item/handcuffs/legcuffs/bola/dropped(mob/user, equipping, slot)
|
||||
if(equipping)
|
||||
return ..()
|
||||
..()
|
||||
visible_message(span_infoplain(span_bold("\The [src]") + " falls apart!"))
|
||||
|
||||
|
||||
@@ -72,7 +72,9 @@
|
||||
icon_state = "[base_icon][wielded]"
|
||||
item_state = icon_state
|
||||
|
||||
/obj/item/material/twohanded/dropped(mob/user)
|
||||
/obj/item/material/twohanded/dropped(mob/user, equipping, slot)
|
||||
if(equipping)
|
||||
return ..()
|
||||
..()
|
||||
if(wielded)
|
||||
spawn(0)
|
||||
|
||||
@@ -562,7 +562,7 @@
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/obj/item/medigun_backpack/dropped(mob/user)
|
||||
/obj/item/medigun_backpack/dropped(mob/user, equipping, slot)
|
||||
..()
|
||||
replace_icon()
|
||||
|
||||
|
||||
@@ -263,7 +263,6 @@
|
||||
* Energy Sword
|
||||
*/
|
||||
/obj/item/melee/energy/sword
|
||||
color
|
||||
name = "energy sword"
|
||||
desc = "May the force be within you."
|
||||
icon_state = "esword"
|
||||
@@ -285,7 +284,7 @@
|
||||
|
||||
projectile_parry_chance = 65
|
||||
|
||||
/obj/item/melee/energy/sword/dropped(mob/user)
|
||||
/obj/item/melee/energy/sword/dropped(mob/user, equipping, slot)
|
||||
..()
|
||||
if(!istype(loc,/mob))
|
||||
deactivate(user)
|
||||
|
||||
@@ -145,7 +145,7 @@
|
||||
else
|
||||
set_light(0)
|
||||
|
||||
/obj/item/melee/shock_maul/dropped(mob/user)
|
||||
/obj/item/melee/shock_maul/dropped(mob/user, equipping, slot)
|
||||
..()
|
||||
if(status)
|
||||
status = 0
|
||||
|
||||
@@ -125,7 +125,7 @@ GLOBAL_LIST_EMPTY(tape_roll_applications)
|
||||
add_overlay(overlay)
|
||||
|
||||
|
||||
/obj/item/taperoll/dropped(mob/user)
|
||||
/obj/item/taperoll/dropped(mob/user, equipping, slot)
|
||||
update_icon()
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
..(user, slot)
|
||||
|
||||
/*
|
||||
/obj/item/storage/backpack/dropped(mob/user)
|
||||
/obj/item/storage/backpack/dropped(mob/user, equipping, slot)
|
||||
if (loc == user && src.use_sound)
|
||||
if(isbelly(user.loc))
|
||||
var/obj/belly/B = user.loc
|
||||
@@ -560,7 +560,7 @@
|
||||
var/taurtype = /datum/sprite_accessory/tail/taur/horse //Acceptable taur type to be wearing this
|
||||
var/no_message = "You aren't the appropriate taur type to wear this!"
|
||||
|
||||
/obj/item/storage/backpack/saddlebag/mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
|
||||
/obj/item/storage/backpack/saddlebag/mob_can_equip(mob/living/carbon/human/H, slot, disable_warning = FALSE, ignore_obstruction, go_over_slot = FALSE)
|
||||
if(..())
|
||||
if(istype(H) && istype(H.tail_style, taurtype))
|
||||
return 1
|
||||
@@ -586,7 +586,7 @@
|
||||
slowdown = 0.5 //And are slower, too...
|
||||
var/no_message = "You aren't the appropriate taur type to wear this!"
|
||||
|
||||
/obj/item/storage/backpack/saddlebag_common/mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
|
||||
/obj/item/storage/backpack/saddlebag_common/mob_can_equip(mob/living/carbon/human/H, slot, disable_warning = FALSE, ignore_obstruction, go_over_slot = FALSE)
|
||||
if(..())
|
||||
if(!istype(H))//Error, non HUMAN.
|
||||
log_runtime("[H] was not a valid human!")
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
/obj/item/storage/internal/attack_hand()
|
||||
return //make sure this is never picked up
|
||||
|
||||
/obj/item/storage/internal/mob_can_equip(M as mob, slot, disable_warning = FALSE)
|
||||
/obj/item/storage/internal/mob_can_equip(mob/M, slot, disable_warning = FALSE, ignore_obstruction, go_over_slot = FALSE)
|
||||
return 0 //make sure this is never picked up
|
||||
|
||||
//Helper procs to cleanly implement internal storages - storage items that provide inventory slots for other items.
|
||||
@@ -32,7 +32,7 @@
|
||||
//items that use internal storage have the option of calling this to emulate default storage MouseDrop behaviour.
|
||||
//returns 1 if the master item's parent's MouseDrop() should be called, 0 otherwise. It's strange, but no other way of
|
||||
//doing it without the ability to call another proc's parent, really.
|
||||
/obj/item/storage/internal/proc/handle_mousedrop(mob/user as mob, obj/over_object as obj)
|
||||
/obj/item/storage/internal/proc/handle_mousedrop(mob/user, obj/over_object)
|
||||
if (ishuman(user) || issmall(user)) //so monkeys can take off their backpacks -- Urist
|
||||
|
||||
if (istype(user.loc,/obj/mecha)) // stops inventory actions in a mech
|
||||
@@ -65,7 +65,7 @@
|
||||
//items that use internal storage have the option of calling this to emulate default storage attack_hand behaviour.
|
||||
//returns 1 if the master item's parent's attack_hand() should be called, 0 otherwise.
|
||||
//It's strange, but no other way of doing it without the ability to call another proc's parent, really.
|
||||
/obj/item/storage/internal/proc/handle_attack_hand(mob/user as mob)
|
||||
/obj/item/storage/internal/proc/handle_attack_hand(mob/user)
|
||||
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/storage/laundry_basket/dropped(mob/user)
|
||||
/obj/item/storage/laundry_basket/dropped(mob/user, equipping, slot)
|
||||
if(linked)
|
||||
QDEL_NULL(linked)
|
||||
return ..()
|
||||
@@ -78,7 +78,7 @@
|
||||
name = "second hand"
|
||||
use_to_pickup = FALSE
|
||||
|
||||
/obj/item/storage/laundry_basket/offhand/dropped(mob/user)
|
||||
/obj/item/storage/laundry_basket/offhand/dropped(mob/user, equipping, slot)
|
||||
SHOULD_CALL_PARENT(FALSE)
|
||||
if(user.isEquipped(linked))
|
||||
user.drop_from_inventory(linked)
|
||||
|
||||
@@ -147,7 +147,7 @@
|
||||
user.AddComponent(/datum/component/recursive_move)
|
||||
RegisterSignal(user, COMSIG_MOVABLE_ATTEMPTED_MOVE, /obj/item/ore_bag/proc/autoload)
|
||||
|
||||
/obj/item/ore_bag/dropped(mob/user)
|
||||
/obj/item/ore_bag/dropped(mob/user, equipping, slot)
|
||||
..()
|
||||
UnregisterSignal(user, COMSIG_MOVABLE_ATTEMPTED_MOVE)
|
||||
|
||||
|
||||
@@ -97,7 +97,7 @@
|
||||
else
|
||||
set_light(0)
|
||||
|
||||
/obj/item/melee/baton/dropped(mob/user)
|
||||
/obj/item/melee/baton/dropped(mob/user, equipping, slot)
|
||||
..()
|
||||
if(status && grip_safety && !taped_safety)
|
||||
status = 0
|
||||
|
||||
@@ -507,9 +507,9 @@
|
||||
|
||||
..()
|
||||
|
||||
/obj/item/weldingtool/tubefed/dropped(mob/user)
|
||||
/obj/item/weldingtool/tubefed/dropped(mob/user, equipping, slot)
|
||||
..()
|
||||
if(src.loc != user)
|
||||
if(loc != user)
|
||||
mounted_pack.return_nozzle()
|
||||
to_chat(user, span_notice("\The [src] retracts to its fueltank."))
|
||||
|
||||
|
||||
@@ -13,6 +13,6 @@
|
||||
remove_verb(H, /mob/living/proc/shred_limb_temp)
|
||||
..()
|
||||
|
||||
/obj/item/beartrap/dropped(mob/user)
|
||||
/obj/item/beartrap/dropped(mob/user, equipping, slot)
|
||||
remove_verb(user, /mob/living/proc/shred_limb_temp)
|
||||
..()
|
||||
|
||||
@@ -152,18 +152,20 @@
|
||||
Img.color = O.color
|
||||
add_overlay(Img)
|
||||
|
||||
/obj/item/tray/dropped(mob/user)
|
||||
/obj/item/tray/dropped(mob/user, equipping, slot)
|
||||
if(equipping)
|
||||
return ..() //Don't bother searching if we're just being put in a pocket/in hands.
|
||||
..()
|
||||
var/noTable = null
|
||||
|
||||
spawn() //Allows the tray to udpate location, rather than just checking against mob's location
|
||||
if(isturf(src.loc) && !(locate(/obj/structure/table) in src.loc))
|
||||
spawn() //Allows the tray to update location, rather than just checking against mob's location
|
||||
if(isturf(loc) && !(locate(/obj/structure/table) in loc))
|
||||
noTable = 1
|
||||
|
||||
if(isturf(loc) && !(locate(/mob/living) in src.loc))
|
||||
if(isturf(loc) && !(locate(/mob/living) in loc))
|
||||
cut_overlays()
|
||||
for(var/obj/item/I in carrying)
|
||||
I.forceMove(src.loc)
|
||||
I.forceMove(loc)
|
||||
carrying.Remove(I)
|
||||
if(noTable)
|
||||
for(var/i = 1, i <= rand(1,2), i++)
|
||||
|
||||
@@ -77,11 +77,7 @@
|
||||
throwforce = 0
|
||||
force = 0
|
||||
var/net_type = /obj/effect/energy_net
|
||||
|
||||
/obj/item/energy_net/dropped(mob/user)
|
||||
..()
|
||||
spawn(10)
|
||||
if(src) qdel(src)
|
||||
item_flags = DROPDEL
|
||||
|
||||
/obj/item/energy_net/throw_impact(atom/hit_atom)
|
||||
..()
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
nozzle = null
|
||||
return ..()
|
||||
|
||||
/obj/item/weldpack/dropped(mob/user)
|
||||
/obj/item/weldpack/dropped(mob/user, equipping, slot)
|
||||
..()
|
||||
if(nozzle)
|
||||
user.remove_from_mob(nozzle)
|
||||
|
||||
@@ -89,7 +89,7 @@
|
||||
return TRUE
|
||||
tgui_interact(user)
|
||||
|
||||
/obj/item/canvas/dropped(mob/user)
|
||||
/obj/item/canvas/dropped(mob/user, equipping, slot)
|
||||
pixel_x = initial(pixel_x)
|
||||
pixel_y = initial(pixel_y)
|
||||
return ..()
|
||||
|
||||
@@ -22,12 +22,13 @@
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
. = ..()
|
||||
|
||||
/obj/item/deadringer/dropped(mob/user)
|
||||
/obj/item/deadringer/dropped(mob/user, equipping, slot)
|
||||
if(equipping)
|
||||
return ..() //Don't break cloak if we're being put in a pocket.
|
||||
..()
|
||||
if(timer > 20)
|
||||
reveal()
|
||||
watchowner = null
|
||||
return
|
||||
|
||||
/obj/item/deadringer/attack_self(mob/user)
|
||||
. = ..(user)
|
||||
|
||||
@@ -113,7 +113,7 @@
|
||||
. = ..()
|
||||
update_icon()
|
||||
|
||||
/obj/item/telecube/dropped(mob/user)
|
||||
/obj/item/telecube/dropped(mob/user, equipping, slot)
|
||||
. = ..()
|
||||
update_icon()
|
||||
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
toggle_scan()
|
||||
time = initial(time)
|
||||
|
||||
/obj/item/assembly/prox_sensor/dropped(mob/user)
|
||||
/obj/item/assembly/prox_sensor/dropped(mob/user, equipping, slot)
|
||||
..()
|
||||
sense()
|
||||
|
||||
|
||||
@@ -1535,7 +1535,7 @@
|
||||
|
||||
/*
|
||||
//TODO - make this not trigger when the flag is returned to its original location
|
||||
/obj/item/laserdome_flag/dropped(mob/user)
|
||||
/obj/item/laserdome_flag/dropped(mob/user, equipping, slot)
|
||||
. = ..()
|
||||
GLOB.global_announcer.autosay("[src] dropped!","Laserdome Announcer","Entertainment")
|
||||
*/
|
||||
@@ -1700,7 +1700,7 @@
|
||||
|
||||
/*
|
||||
//TODO- make this not trigger when the ball is thrown or dunked, only when it's actually dropped
|
||||
/obj/item/laserdome_hyperball/dropped(mob/user)
|
||||
/obj/item/laserdome_hyperball/dropped(mob/user, equipping, slot)
|
||||
. = ..()
|
||||
GLOB.global_announcer.autosay("[capitalize(last_team)] fumble!","Laserdome Announcer","Entertainment")
|
||||
*/
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
setUniqueSpeciesSprite()
|
||||
..(S, user)
|
||||
|
||||
/obj/item/clothing/accessory/choker/dropped(mob/user)
|
||||
/obj/item/clothing/accessory/choker/dropped(mob/user, equipping, slot)
|
||||
..()
|
||||
icon_override = icon_previous_override
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
setUniqueSpeciesSprite()
|
||||
..(S, user)
|
||||
|
||||
/obj/item/clothing/accessory/collar/dropped(mob/user)
|
||||
/obj/item/clothing/accessory/collar/dropped(mob/user, equipping, slot)
|
||||
..()
|
||||
icon_override = icon_previous_override
|
||||
|
||||
|
||||
@@ -202,7 +202,7 @@
|
||||
icon_override = 'icons/inventory/accessory/mob.dmi'
|
||||
update_clothing_icon()
|
||||
|
||||
/obj/item/clothing/accessory/poncho/dropped(mob/user) //Resets the override to prevent the wrong .dmi from being used because equipped only triggers when wearing ponchos as suits.
|
||||
/obj/item/clothing/accessory/poncho/dropped(mob/user, equipping, slot) //Resets the override to prevent the wrong .dmi from being used because equipped only triggers when wearing ponchos as suits.
|
||||
..()
|
||||
icon_override = null
|
||||
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
for(var/trait in clothing_traits)
|
||||
ADD_CLOTHING_TRAIT(user, trait)
|
||||
|
||||
/obj/item/clothing/dropped(mob/user)
|
||||
/obj/item/clothing/dropped(mob/user, equipping, slot)
|
||||
..()
|
||||
if(enables_planes)
|
||||
user.recalculate_vis()
|
||||
@@ -70,7 +70,7 @@
|
||||
REMOVE_CLOTHING_TRAIT(user, trait)
|
||||
|
||||
//BS12: Species-restricted clothing check.
|
||||
/obj/item/clothing/mob_can_equip(M as mob, slot, disable_warning = FALSE)
|
||||
/obj/item/clothing/mob_can_equip(mob/M, slot, disable_warning = FALSE, ignore_obstruction, go_over_slot)
|
||||
|
||||
//if we can't equip the item anyway, don't bother with species_restricted (cuts down on spam)
|
||||
if (!..())
|
||||
@@ -375,55 +375,70 @@
|
||||
transfer_blood = 0
|
||||
update_icon()
|
||||
|
||||
/obj/item/clothing/gloves/mob_can_equip(mob/user, slot, disable_warning = FALSE)
|
||||
/obj/item/clothing/gloves/mob_can_equip(mob/user, slot, disable_warning = FALSE, ignore_obstruction, go_over_slot = TRUE)
|
||||
var/mob/living/carbon/human/H = user
|
||||
|
||||
if(slot && slot == slot_gloves)
|
||||
var/obj/item/clothing/G = H.gloves
|
||||
if(istype(G))
|
||||
ring = H.gloves
|
||||
//Check glove_level, which both accessories and gloves share.
|
||||
if(istype(G, /obj/item/clothing/accessory) || istype(G, /obj/item/clothing/gloves))
|
||||
ring = H.gloves //Ring or gloves both work here. They both have the glove_level var.
|
||||
if(ring.glove_level >= src.glove_level)
|
||||
to_chat(user, "You are unable to wear \the [src] as \the [H.gloves] are in the way.")
|
||||
ring = null
|
||||
return 0
|
||||
else
|
||||
H.drop_from_inventory(ring) //Remove the ring (or other under-glove item in the hand slot?) so you can put on the gloves.
|
||||
ring.forceMove(src)
|
||||
to_chat(user, "You slip \the [src] on over \the [src.ring].")
|
||||
if(!(flags & THICKMATERIAL))
|
||||
punch_force += ring.punch_force
|
||||
else
|
||||
return FALSE
|
||||
ring = null
|
||||
|
||||
if(!..())
|
||||
if(ring) //Put the ring back on if the check fails.
|
||||
if(H.equip_to_slot_if_possible(ring, slot_gloves))
|
||||
src.ring = null
|
||||
punch_force = initial(punch_force)
|
||||
return 0
|
||||
//Check overgloves, which only gloves have.
|
||||
if(istype(G, /obj/item/clothing/gloves))
|
||||
gloves = H.gloves
|
||||
if(gloves.overgloves)
|
||||
gloves = null
|
||||
return FALSE
|
||||
gloves = null
|
||||
|
||||
wearer = WEAKREF(H)
|
||||
return 1
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/gloves/dropped(mob/user)
|
||||
/obj/item/clothing/gloves/equipped(mob/user, slot)
|
||||
wearer = WEAKREF(user)
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/gloves/dropped(mob/user, equipping, slot)
|
||||
..()
|
||||
|
||||
punch_force = initial(punch_force)
|
||||
wearer = null
|
||||
if(!ishuman(user))
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(gloves) //We have nested gloves! Gloves under our gloves!
|
||||
|
||||
//Equipping to our glove slot? Cover our former gloves, if applicable.
|
||||
if(equipping && slot && slot == slot_gloves)
|
||||
var/obj/item/clothing/G = H.gloves
|
||||
if(istype(G))
|
||||
if(istype(G, /obj/item/clothing/gloves))
|
||||
gloves = H.gloves
|
||||
H.unEquip(gloves, TRUE, src)
|
||||
to_chat(user, "You slip \the [src] on over \the [gloves].")
|
||||
else if(istype(G, /obj/item/clothing/accessory))
|
||||
ring = H.gloves
|
||||
H.unEquip(ring, TRUE, src)
|
||||
to_chat(user, "You slip \the [src] on over \the [ring].")
|
||||
if(!(flags & THICKMATERIAL))
|
||||
punch_force += gloves.punch_force
|
||||
return
|
||||
|
||||
//Taking our gloves off? Put our former gloves / ring on.
|
||||
if(gloves)
|
||||
if(!H.equip_to_slot_if_possible(gloves, slot_gloves))
|
||||
gloves.forceMove(get_turf(src))
|
||||
if(ring)
|
||||
gloves.ring = ring
|
||||
src.gloves = null
|
||||
else if(ring && istype(H)) //We do NOT have gloves under our gloves but have a ring under our glove instead!
|
||||
gloves = null
|
||||
return
|
||||
|
||||
if(ring) //We do NOT have gloves under our gloves but have a ring under our glove instead!
|
||||
if(!H.equip_to_slot_if_possible(ring, slot_gloves))
|
||||
ring.forceMove(get_turf(src))
|
||||
src.ring = null
|
||||
ring = null
|
||||
return
|
||||
|
||||
/obj/item/clothing/gloves
|
||||
var/datum/unarmed_attack/special_attack = null //do the gloves have a special unarmed attack?
|
||||
@@ -972,7 +987,7 @@
|
||||
RemoveHood()
|
||||
..()
|
||||
|
||||
/obj/item/clothing/suit/dropped(mob/user)
|
||||
/obj/item/clothing/suit/dropped(mob/user, equipping, slot)
|
||||
RemoveHood()
|
||||
..()
|
||||
|
||||
|
||||
@@ -85,7 +85,7 @@
|
||||
QDEL_NULL(tgarscreen)
|
||||
. = ..()
|
||||
|
||||
/obj/item/clothing/glasses/omnihud/dropped(mob/user)
|
||||
/obj/item/clothing/glasses/omnihud/dropped(mob/user, equipping, slot)
|
||||
if(tgarscreen)
|
||||
SStgui.close_uis(src)
|
||||
..()
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
pickup_sound = 'sound/items/pickup/axe.ogg'
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/item/clothing/gloves/arm_guard/mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = FALSE)
|
||||
/obj/item/clothing/gloves/arm_guard/mob_can_equip(mob/living/carbon/human/H, slot, disable_warning = FALSE, ignore_obstruction, go_over_slot = TRUE)
|
||||
if(..()) //This will only run if no other problems occured when equiping.
|
||||
if(H.wear_suit)
|
||||
if(H.wear_suit.body_parts_covered & ARMS)
|
||||
|
||||
@@ -13,28 +13,3 @@
|
||||
overgloves = 1
|
||||
punch_force = 5
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/item/clothing/gloves/gauntlets/mob_can_equip(mob/user, slot, disable_warning = FALSE)
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(H.gloves)
|
||||
gloves = H.gloves
|
||||
if(!istype(gloves))
|
||||
to_chat(user, "You are unable to wear \the [src] as \the [H.gloves] are in the way.")
|
||||
gloves = null
|
||||
return 0
|
||||
if(gloves.overgloves)
|
||||
to_chat(user, "You are unable to wear \the [src] as \the [H.gloves] are in the way.")
|
||||
gloves = null
|
||||
return 0
|
||||
H.drop_from_inventory(gloves)
|
||||
gloves.forceMove(src)
|
||||
|
||||
if(!..())
|
||||
if(gloves)
|
||||
if(H.equip_to_slot_if_possible(gloves, slot_gloves))
|
||||
gloves = null
|
||||
return 0
|
||||
if(gloves)
|
||||
to_chat(user, "You slip \the [src] on over \the [gloves].")
|
||||
wearer = WEAKREF(H)
|
||||
return 1
|
||||
|
||||
@@ -279,23 +279,25 @@
|
||||
to_chat(wearer, span_danger("The inside of your head hurts..."))
|
||||
wearer.adjustBrainLoss(brainloss_cost)
|
||||
|
||||
/obj/item/clothing/head/psy_crown/equipped(var/mob/living/carbon/human/H)
|
||||
/obj/item/clothing/head/psy_crown/equipped(mob/living/carbon/human/user)
|
||||
..()
|
||||
if(istype(H) && H.head == src && H.is_sentient())
|
||||
if(istype(user) && user.head == src && user.is_sentient())
|
||||
START_PROCESSING(SSobj, src)
|
||||
if(flavor_equip)
|
||||
to_chat(H, flavor_equip)
|
||||
to_chat(user, flavor_equip)
|
||||
|
||||
/obj/item/clothing/head/psy_crown/dropped(var/mob/living/carbon/human/H)
|
||||
/obj/item/clothing/head/psy_crown/dropped(mob/living/carbon/human/user, equipping, slot)
|
||||
if(equipping || loc == user)
|
||||
return ..()
|
||||
..()
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
if(H.is_sentient())
|
||||
if(loc == H) // Still inhand.
|
||||
if(user.is_sentient())
|
||||
if(loc == user) // Still inhand.
|
||||
if(flavor_unequip)
|
||||
to_chat(H, flavor_unequip)
|
||||
to_chat(user, flavor_unequip)
|
||||
return
|
||||
if(flavor_drop)
|
||||
to_chat(H, flavor_drop)
|
||||
to_chat(user, flavor_drop)
|
||||
|
||||
/obj/item/clothing/head/psy_crown/Destroy()
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
|
||||
@@ -177,7 +177,7 @@
|
||||
user.client.screen |= pilot_hud
|
||||
user.client.images |= raw_images
|
||||
|
||||
/obj/item/clothing/head/pilot/dropped(mob/user)
|
||||
/obj/item/clothing/head/pilot/dropped(mob/user, equipping, slot)
|
||||
. = ..()
|
||||
if(user.client)
|
||||
user.client.screen -= pilot_hud
|
||||
|
||||
@@ -8,7 +8,9 @@
|
||||
body_parts_covered = 0
|
||||
special_handling = TRUE
|
||||
|
||||
/obj/item/clothing/head/soft/dropped(mob/user)
|
||||
/obj/item/clothing/head/soft/dropped(mob/user, equipping, slot)
|
||||
if(equipping)
|
||||
return ..()
|
||||
icon_state = initial(icon_state)
|
||||
flipped = FALSE
|
||||
..()
|
||||
|
||||
@@ -246,7 +246,7 @@
|
||||
c.remove(eye)
|
||||
eye.setLoc(user)
|
||||
|
||||
/obj/item/clothing/mask/ai/dropped(mob/user)
|
||||
/obj/item/clothing/mask/ai/dropped(mob/user, equipping, slot)
|
||||
..()
|
||||
if(eye.owner == user)
|
||||
for(var/datum/chunk/c in eye.visibleChunks)
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
icon_state = GLOB.monitor_states[monitor_state_index]
|
||||
to_chat(H, span_notice("\The [src] connects to your display output."))
|
||||
|
||||
/obj/item/clothing/mask/monitor/dropped(mob/user)
|
||||
/obj/item/clothing/mask/monitor/dropped(mob/user, equipping, slot)
|
||||
canremove = TRUE
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -16,22 +16,22 @@
|
||||
..()
|
||||
var/mob/living/carbon/human/H = loc
|
||||
if(istype(H) && H.wear_mask == src)
|
||||
canremove = 0
|
||||
canremove = FALSE
|
||||
maskmaster = H
|
||||
START_PROCESSING(SSprocessing, src)
|
||||
|
||||
/obj/item/clothing/mask/synthfacemask/dropped(mob/user)
|
||||
canremove = 1
|
||||
/obj/item/clothing/mask/synthfacemask/dropped(mob/user, equipping, slot)
|
||||
canremove = TRUE
|
||||
maskmaster = null
|
||||
STOP_PROCESSING(SSprocessing, src)
|
||||
return ..()
|
||||
..()
|
||||
|
||||
/obj/item/clothing/mask/synthfacemask/Destroy()
|
||||
maskmaster = null
|
||||
. = ..()
|
||||
STOP_PROCESSING(SSprocessing, src)
|
||||
|
||||
/obj/item/clothing/mask/synthfacemask/mob_can_equip(var/mob/living/carbon/human/user, var/slot, var/disable_warning = FALSE)
|
||||
/obj/item/clothing/mask/synthfacemask/mob_can_equip(mob/living/carbon/human/user, slot, disable_warning = FALSE, ignore_obstruction, go_over_slot = FALSE)
|
||||
if (!..())
|
||||
return 0
|
||||
if(istype(user))
|
||||
|
||||
@@ -11,17 +11,17 @@
|
||||
pickup_sound = 'sound/items/pickup/boots.ogg'
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/item/clothing/shoes/leg_guard/mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = FALSE)
|
||||
/obj/item/clothing/shoes/leg_guard/mob_can_equip(mob/living/carbon/human/H, slot, disable_warning = FALSE, ignore_obstruction, go_over_slot = TRUE)
|
||||
if(..()) //This will only run if no other problems occured when equiping.
|
||||
if(H.wear_suit)
|
||||
if(H.wear_suit.body_parts_covered & LEGS)
|
||||
to_chat(H, span_warning("You can't wear \the [src] with \the [H.wear_suit], it's in the way."))
|
||||
return 0
|
||||
return FALSE
|
||||
for(var/obj/item/clothing/accessory/A in H.wear_suit)
|
||||
if(A.body_parts_covered & LEGS)
|
||||
to_chat(H, span_warning("You can't wear \the [src] with \the [H.wear_suit]'s [A], it's in the way."))
|
||||
return 0
|
||||
return 1
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/obj/item/clothing/shoes/leg_guard/laserproof
|
||||
name = "ablative leg guards"
|
||||
|
||||
@@ -64,44 +64,49 @@
|
||||
user.update_inv_shoes() //so our mob-overlays update
|
||||
user.update_mob_action_buttons()
|
||||
|
||||
/obj/item/clothing/shoes/magboots/mob_can_equip(mob/user, slot, disable_warning = FALSE)
|
||||
/obj/item/clothing/shoes/magboots/mob_can_equip(mob/user, slot, disable_warning = FALSE, ignore_obstruction, go_over_slot = TRUE)
|
||||
|
||||
var/mob/living/carbon/human/H = user
|
||||
|
||||
if(H.shoes)
|
||||
shoes = H.shoes
|
||||
if(istype(shoes, /obj/item/clothing/shoes) && shoes.overshoes)
|
||||
if(slot && slot == slot_shoes)
|
||||
if(slot && slot == slot_shoes && !disable_warning)
|
||||
to_chat(user, "You are unable to wear \the [src] as \the [H.shoes] are in the way.")
|
||||
shoes = null
|
||||
return 0
|
||||
H.drop_from_inventory(shoes) //Remove the old shoes so you can put on the magboots.
|
||||
shoes.forceMove(src)
|
||||
return FALSE
|
||||
shoes = null
|
||||
return ..()
|
||||
|
||||
if(!..())
|
||||
if(shoes) //Put the old shoes back on if the check fails.
|
||||
if(H.equip_to_slot_if_possible(shoes, slot_shoes))
|
||||
src.shoes = null
|
||||
return 0
|
||||
/obj/item/clothing/shoes/magboots/equipped(mob/user, slot)
|
||||
|
||||
if (shoes)
|
||||
if(slot && slot == slot_shoes)
|
||||
to_chat(user, "You slip \the [src] on over \the [shoes].")
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(slot && slot != slot_shoes)
|
||||
return ..()
|
||||
set_slowdown()
|
||||
wearer = WEAKREF(H)
|
||||
return 1
|
||||
..()
|
||||
|
||||
/obj/item/clothing/shoes/magboots/dropped(mob/user)
|
||||
/obj/item/clothing/shoes/magboots/dropped(mob/user, equipping, slot)
|
||||
..()
|
||||
wearer = null
|
||||
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(!ishuman(H) || !shoes)
|
||||
if(!ishuman(H))
|
||||
return
|
||||
|
||||
if(!H.equip_to_slot_if_possible(shoes, slot_shoes))
|
||||
shoes.forceMove(get_turf(src))
|
||||
shoes = null
|
||||
//Equipping shoes. If you put it so you can put your shoes somewhere BUT your shoe slot, make sure this shit works.
|
||||
if(equipping && (slot == slot_shoes))
|
||||
if(H.shoes && H.shoes != src)
|
||||
shoes = H.shoes
|
||||
H.unEquip(shoes, TRUE, src)
|
||||
to_chat(user, "You slip \the [src] on over \the [shoes].")
|
||||
return
|
||||
|
||||
if(shoes)
|
||||
if(!H.equip_to_slot_if_possible(shoes, slot_shoes, FALSE, TRUE, TRUE, TRUE))
|
||||
shoes.forceMove(get_turf(src))
|
||||
shoes = null
|
||||
|
||||
/obj/item/clothing/shoes/magboots/examine(mob/user)
|
||||
. = ..()
|
||||
@@ -125,12 +130,12 @@
|
||||
return //voxboots suffer no slowdown penalties!
|
||||
|
||||
//In case they somehow come off while enabled.
|
||||
/obj/item/clothing/shoes/magboots/vox/dropped(mob/user)
|
||||
..(user)
|
||||
if(src.magpulse)
|
||||
/obj/item/clothing/shoes/magboots/vox/dropped(mob/user, equipping, slot)
|
||||
..()
|
||||
if(magpulse)
|
||||
user.visible_message("The [src] go limp as they are removed from [user]'s feet.", "The [src] go limp as they are removed from your feet.")
|
||||
item_flags &= ~NOSLIP
|
||||
magpulse = 0
|
||||
magpulse = FALSE
|
||||
canremove = TRUE
|
||||
|
||||
/obj/item/clothing/shoes/magboots/vox/examine(mob/user)
|
||||
|
||||
@@ -802,7 +802,7 @@
|
||||
for(var/piece in list("helmet","gauntlets","chest","boots"))
|
||||
toggle_piece(piece, H, ONLY_DEPLOY)
|
||||
|
||||
/obj/item/rig/dropped(mob/user)
|
||||
/obj/item/rig/dropped(mob/user, equipping, slot)
|
||||
. = ..(user)
|
||||
// So the next user will see the boot animation
|
||||
tgui_shared_states?.Cut()
|
||||
|
||||
@@ -104,7 +104,7 @@
|
||||
check_limb_support(M)
|
||||
..()
|
||||
|
||||
/obj/item/clothing/suit/space/dropped(mob/user)
|
||||
/obj/item/clothing/suit/space/dropped(mob/user, equipping, slot)
|
||||
check_limb_support(user)
|
||||
..()
|
||||
|
||||
|
||||
@@ -103,7 +103,7 @@
|
||||
to_chat(M, "Your suit's cooling unit deploys.")
|
||||
cooler.canremove = FALSE
|
||||
|
||||
/obj/item/clothing/suit/space/void/dropped(mob/user)
|
||||
/obj/item/clothing/suit/space/void/dropped(mob/user, equipping, slot)
|
||||
..()
|
||||
|
||||
var/mob/living/carbon/human/H
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
siemens_coefficient = 0.6
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/item/clothing/suit/mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = FALSE)
|
||||
/obj/item/clothing/suit/mob_can_equip(mob/living/carbon/human/H, slot, disable_warning = FALSE, ignore_obstruction, go_over_slot = FALSE)
|
||||
if(..()) //This will only run if no other problems occured when equiping.
|
||||
for(var/obj/item/clothing/I in list(H.gloves, H.shoes))
|
||||
if(I && (src.body_parts_covered & ARMS && I.body_parts_covered & ARMS) )
|
||||
@@ -538,7 +538,7 @@
|
||||
|ACCESSORY_SLOT_ARMOR_M)
|
||||
blood_overlay_type = "armor"
|
||||
|
||||
/obj/item/clothing/suit/armor/pcarrier/mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = FALSE)
|
||||
/obj/item/clothing/suit/armor/pcarrier/mob_can_equip(mob/living/carbon/human/H, slot, disable_warning = FALSE, ignore_obstruction, go_over_slot = FALSE)
|
||||
if(..()) //This will only run if no other problems occured when equiping.
|
||||
if(H.gloves)
|
||||
if(H.gloves.body_parts_covered & ARMS)
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
icon_state = "wolf_item"
|
||||
item_state = "heavy_wolf_armor"
|
||||
|
||||
/obj/item/clothing/suit/armor/vest/wolftaur/mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
|
||||
/obj/item/clothing/suit/armor/vest/wolftaur/mob_can_equip(mob/living/carbon/human/H, slot, disable_warning = FALSE, ignore_obstruction, go_over_slot = FALSE)
|
||||
if(..())
|
||||
if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/wolf))
|
||||
return ..()
|
||||
|
||||
@@ -89,7 +89,7 @@
|
||||
else
|
||||
user.visible_message(span_notice("[src]'s healing function has been turned off!"))
|
||||
|
||||
/obj/item/clothing/suit/lasertag/dropped()
|
||||
/obj/item/clothing/suit/lasertag/dropped(mob/user, equipping, slot)
|
||||
..()
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
visible_message(span_notice("[src] is unequipped, its health going back to full!"))
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
pixel_x = -16
|
||||
|
||||
/obj/item/clothing/suit/drake_cloak/mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
|
||||
/obj/item/clothing/suit/drake_cloak/mob_can_equip(mob/living/carbon/human/H, slot, disable_warning = FALSE, ignore_obstruction, go_over_slot = FALSE)
|
||||
if(..())
|
||||
if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/drake))
|
||||
return ..()
|
||||
@@ -47,7 +47,7 @@
|
||||
pixel_x = -16
|
||||
armor = list(melee = 5, bullet = 5, laser = 5, energy = 5, bomb = 5, bio = 0, rad = 0)//Minor armor for fluff.
|
||||
|
||||
/obj/item/clothing/suit/barding/mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
|
||||
/obj/item/clothing/suit/barding/mob_can_equip(mob/living/carbon/human/H, slot, disable_warning = FALSE, ignore_obstruction, go_over_slot = FALSE)
|
||||
if(..())
|
||||
if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/horse))
|
||||
return ..()
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
if(user.hud_used && user.hud_used.move_intent)
|
||||
user.hud_used.move_intent.icon_state = "walking"
|
||||
|
||||
/obj/item/clothing/suit/shibari/dropped(var/mob/living/user)
|
||||
/obj/item/clothing/suit/shibari/dropped(mob/user, equipping, slot)
|
||||
..()
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
/obj/item/reagent_containers/glass/bottle/dropped(mob/user)
|
||||
/obj/item/reagent_containers/glass/bottle/dropped(mob/user, equipping, slot)
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
|
||||
@@ -567,7 +567,7 @@
|
||||
i++
|
||||
|
||||
|
||||
/obj/item/hand/dropped(mob/user)
|
||||
/obj/item/hand/dropped(mob/user, equipping, slot)
|
||||
..()
|
||||
if(locate(/obj/structure/table, loc))
|
||||
src.update_icon(user.dir)
|
||||
|
||||
@@ -120,7 +120,7 @@
|
||||
|
||||
return ..()
|
||||
|
||||
/obj/item/mapping_unit/dropped(mob/user)
|
||||
/obj/item/mapping_unit/dropped(mob/user, equipping, slot)
|
||||
..()
|
||||
if(loc != user) // Not just a juggle
|
||||
hide_device()
|
||||
|
||||
@@ -115,7 +115,7 @@
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/watertank/dropped(mob/user)
|
||||
/obj/item/watertank/dropped(mob/user, equipping, slot)
|
||||
..()
|
||||
remove_noz(user)
|
||||
|
||||
|
||||
@@ -104,7 +104,7 @@
|
||||
wearer = WEAKREF(user)
|
||||
..()
|
||||
|
||||
/obj/item/clothing/under/circuitry/dropped(mob/user) // Remove wearer var.
|
||||
/obj/item/clothing/under/circuitry/dropped(mob/user, equipping, slot) // Remove wearer var.
|
||||
wearer = null
|
||||
..()
|
||||
|
||||
@@ -125,7 +125,7 @@
|
||||
wearer = WEAKREF(user)
|
||||
..()
|
||||
|
||||
/obj/item/clothing/gloves/circuitry/dropped(mob/user)
|
||||
/obj/item/clothing/gloves/circuitry/dropped(mob/user, equipping, slot)
|
||||
wearer = null
|
||||
..()
|
||||
|
||||
@@ -146,7 +146,7 @@
|
||||
wearer = WEAKREF(user)
|
||||
..()
|
||||
|
||||
/obj/item/clothing/glasses/circuitry/dropped(mob/user)
|
||||
/obj/item/clothing/glasses/circuitry/dropped(mob/user, equipping, slot)
|
||||
wearer = null
|
||||
..()
|
||||
|
||||
@@ -167,7 +167,7 @@
|
||||
wearer = WEAKREF(user)
|
||||
..()
|
||||
|
||||
/obj/item/clothing/shoes/circuitry/dropped(mob/user)
|
||||
/obj/item/clothing/shoes/circuitry/dropped(mob/user, equipping, slot)
|
||||
wearer = null
|
||||
..()
|
||||
|
||||
@@ -188,7 +188,7 @@
|
||||
wearer = WEAKREF(user)
|
||||
..()
|
||||
|
||||
/obj/item/clothing/head/circuitry/dropped(mob/user)
|
||||
/obj/item/clothing/head/circuitry/dropped(mob/user, equipping, slot)
|
||||
wearer = null
|
||||
..()
|
||||
|
||||
@@ -211,7 +211,7 @@
|
||||
wearer = WEAKREF(user)
|
||||
..()
|
||||
|
||||
/obj/item/clothing/ears/circuitry/dropped(mob/user)
|
||||
/obj/item/clothing/ears/circuitry/dropped(mob/user, equipping, slot)
|
||||
wearer = null
|
||||
..()
|
||||
|
||||
@@ -232,6 +232,6 @@
|
||||
wearer = WEAKREF(user)
|
||||
..()
|
||||
|
||||
/obj/item/clothing/suit/circuitry/dropped(mob/user)
|
||||
/obj/item/clothing/suit/circuitry/dropped(mob/user, equipping, slot)
|
||||
wearer = null
|
||||
..()
|
||||
|
||||
@@ -232,7 +232,7 @@
|
||||
. = ..()
|
||||
START_PROCESSING(SSprocessing, src)
|
||||
|
||||
/obj/item/kinetic_crusher/machete/gauntlets/dropped(mob/user)
|
||||
/obj/item/kinetic_crusher/machete/gauntlets/dropped(mob/user, equipping, slot)
|
||||
ready_toggle(TRUE)
|
||||
STOP_PROCESSING(SSprocessing, src)
|
||||
. = ..()
|
||||
@@ -290,7 +290,7 @@
|
||||
/obj/item/offhand/crushergauntlets
|
||||
var/obj/item/kinetic_crusher/machete/gauntlets/linked
|
||||
|
||||
/obj/item/offhand/crushergauntlets/dropped(mob/user)
|
||||
/obj/item/offhand/crushergauntlets/dropped(mob/user, equipping, slot)
|
||||
SHOULD_CALL_PARENT(FALSE)
|
||||
if(linked.wielded)
|
||||
linked.ready_toggle(TRUE)
|
||||
@@ -299,7 +299,7 @@
|
||||
name = "\improper mounted proto-kinetic gear"
|
||||
var/obj/item/rig_module/gauntlets/storing_module
|
||||
|
||||
/obj/item/kinetic_crusher/machete/gauntlets/rig/dropped(mob/user)
|
||||
/obj/item/kinetic_crusher/machete/gauntlets/rig/dropped(mob/user, equipping, slot)
|
||||
. = ..(user)
|
||||
if(storing_module)
|
||||
src.forceMove(storing_module)
|
||||
|
||||
@@ -52,7 +52,7 @@ GLOBAL_LIST_INIT(slot_equipment_priority, list(
|
||||
|
||||
/* Inventory manipulation */
|
||||
|
||||
/mob/proc/put_in_any_hand_if_possible(obj/item/W as obj, del_on_fail = 0, disable_warning = 1, redraw_mob = 1)
|
||||
/mob/proc/put_in_any_hand_if_possible(obj/item/W, del_on_fail = 0, disable_warning = 1, redraw_mob = 1)
|
||||
if(equip_to_slot_if_possible(W, slot_l_hand, del_on_fail, disable_warning, redraw_mob))
|
||||
return 1
|
||||
else if(equip_to_slot_if_possible(W, slot_r_hand, del_on_fail, disable_warning, redraw_mob))
|
||||
@@ -63,7 +63,7 @@ GLOBAL_LIST_INIT(slot_equipment_priority, list(
|
||||
//set del_on_fail to have it delete W if it fails to equip
|
||||
//set disable_warning to disable the 'you are unable to equip that' warning.
|
||||
//unset redraw_mob to prevent the mob from being redrawn at the end.
|
||||
/mob/proc/equip_to_slot_if_possible(obj/item/W as obj, slot, del_on_fail = 0, disable_warning = 0, redraw_mob = 1, ignore_obstructions = 1)
|
||||
/mob/proc/equip_to_slot_if_possible(obj/item/W, slot, del_on_fail = 0, disable_warning = 0, redraw_mob = 1, ignore_obstructions = 1)
|
||||
if(!W)
|
||||
return 0
|
||||
if(!W.mob_can_equip(src, slot, disable_warning, ignore_obstructions))
|
||||
@@ -80,19 +80,19 @@ GLOBAL_LIST_INIT(slot_equipment_priority, list(
|
||||
|
||||
//This is an UNSAFE proc. It merely handles the actual job of equipping. All the checks on whether you can or can't eqip need to be done before! Use mob_can_equip() for that task.
|
||||
//In most cases you will want to use equip_to_slot_if_possible()
|
||||
/mob/proc/equip_to_slot(obj/item/W as obj, slot)
|
||||
/mob/proc/equip_to_slot(obj/item/W, slot)
|
||||
return
|
||||
|
||||
//This is just a commonly used configuration for the equip_to_slot_if_possible() proc, used to equip people when the rounds tarts and when events happen and such.
|
||||
/mob/proc/equip_to_slot_or_del(obj/item/W as obj, slot, ignore_obstructions = 1)
|
||||
/mob/proc/equip_to_slot_or_del(obj/item/W, slot, ignore_obstructions = 1)
|
||||
return equip_to_slot_if_possible(W, slot, 1, 1, 0, ignore_obstructions)
|
||||
|
||||
//hurgh. these feel hacky, but they're the only way I could get the damn thing to work. I guess they could be handy for antag spawners too?
|
||||
/mob/proc/equip_voidsuit_to_slot_or_del_with_refit(obj/item/clothing/suit/space/void/W as obj, slot, species = SPECIES_HUMAN)
|
||||
/mob/proc/equip_voidsuit_to_slot_or_del_with_refit(obj/item/clothing/suit/space/void/W, slot, species = SPECIES_HUMAN)
|
||||
W.refit_for_species(species)
|
||||
return equip_to_slot_if_possible(W, slot, 1, 1, 0)
|
||||
|
||||
/mob/proc/equip_voidhelm_to_slot_or_del_with_refit(obj/item/clothing/head/helmet/space/void/W as obj, slot, species = SPECIES_HUMAN)
|
||||
/mob/proc/equip_voidhelm_to_slot_or_del_with_refit(obj/item/clothing/head/helmet/space/void/W, slot, species = SPECIES_HUMAN)
|
||||
W.refit_for_species(species)
|
||||
return equip_to_slot_if_possible(W, slot, 1, 1, 0)
|
||||
|
||||
@@ -164,7 +164,7 @@ GLOBAL_LIST_INIT(slot_equipment_priority, list(
|
||||
return 0
|
||||
I.forceMove(drop_location())
|
||||
I.reset_plane_and_layer()
|
||||
has_unequipped(I)
|
||||
has_unequipped(I, FALSE)
|
||||
return 0
|
||||
|
||||
// Removes an item from inventory and places it in the target atom.
|
||||
@@ -178,9 +178,10 @@ GLOBAL_LIST_INIT(slot_equipment_priority, list(
|
||||
return remove_from_mob(W, target)
|
||||
|
||||
/// This proc is called after an item has been removed from a mob but before it has been officially deslotted.
|
||||
/mob/proc/has_unequipped(obj/item/item) //, silent = FALSE) //TODO: Add silent some other time.
|
||||
/// equipping = true tells the item we are EQUIPPING it.
|
||||
/mob/proc/has_unequipped(obj/item/item, equipping, slot) //, silent = FALSE) //TODO: Add silent some other time.
|
||||
SHOULD_CALL_PARENT(TRUE)
|
||||
item.dropped(src) //, silent)
|
||||
item.dropped(src, equipping, slot) //, silent)
|
||||
//update_equipment_speed_mods()
|
||||
return TRUE
|
||||
|
||||
@@ -261,7 +262,7 @@ GLOBAL_LIST_INIT(slot_equipment_priority, list(
|
||||
item_dropping.forceMove(target)
|
||||
else
|
||||
item_dropping.dropInto(drop_location())
|
||||
has_unequipped(item_dropping)
|
||||
has_unequipped(item_dropping, FALSE)
|
||||
//SEND_SIGNAL(item_dropping, COMSIG_ITEM_POST_UNEQUIP, item_dropping, target)
|
||||
SEND_SIGNAL(src, COMSIG_MOB_UNEQUIPPED_ITEM, item_dropping, target)
|
||||
return TRUE
|
||||
|
||||
@@ -224,7 +224,7 @@ This saves us from having to call add_fingerprint() any time something is put in
|
||||
|
||||
|
||||
//This is an UNSAFE proc. Use mob_can_equip() before calling this one! Or rather use equip_to_slot_if_possible() or advanced_equip_to_slot_if_possible()
|
||||
/mob/living/carbon/human/equip_to_slot(obj/item/W as obj, slot)
|
||||
/mob/living/carbon/human/equip_to_slot(obj/item/W, slot)
|
||||
|
||||
if(!slot)
|
||||
return
|
||||
@@ -236,7 +236,7 @@ This saves us from having to call add_fingerprint() any time something is put in
|
||||
return
|
||||
|
||||
W.loc = src
|
||||
has_unequipped(W) //TG calls attempt_insert -> transferItemToLoc -> doUnEquip -> has_unequipped. This is where we do it instead since we don't have storage datums.
|
||||
has_unequipped(W, TRUE, slot) //TG calls attempt_insert -> transferItemToLoc -> doUnEquip -> has_unequipped. This is where we do it instead since we don't have storage datums.
|
||||
switch(slot)
|
||||
if(slot_back)
|
||||
src.back = W
|
||||
|
||||
@@ -118,7 +118,7 @@
|
||||
color = chosen_item.color
|
||||
selected_item = chosen_item
|
||||
|
||||
/obj/item/robotic_multibelt/dropped(mob/user)
|
||||
/obj/item/robotic_multibelt/dropped(mob/user, equipping, slot)
|
||||
..()
|
||||
//We go back to our initial values.
|
||||
original_state()
|
||||
|
||||
@@ -562,7 +562,7 @@
|
||||
loot_list = list(/obj/item/material/knife/tacknife/combatknife = 100)
|
||||
|
||||
/mob/living/simple_mob/humanoid/merc/melee/sword/poi
|
||||
loot_list = list(/obj/item/melee/energy/sword/color = 20,
|
||||
loot_list = list(/obj/item/melee/energy/sword = 20,
|
||||
/obj/item/shield/energy = 40
|
||||
)
|
||||
|
||||
|
||||
@@ -335,7 +335,7 @@
|
||||
icon = 'icons/mob/vacpack_swoop.dmi'
|
||||
item_state = null
|
||||
|
||||
/obj/item/vac_attachment/swoopie/dropped(mob/user) //This should fix it sitting on the ground until the next life() tick
|
||||
/obj/item/vac_attachment/swoopie/dropped(mob/user, equipping, slot) //This should fix it sitting on the ground until the next life() tick
|
||||
. = ..()
|
||||
if(!vac_owner)
|
||||
return
|
||||
|
||||
@@ -818,7 +818,7 @@
|
||||
|
||||
return ..()
|
||||
|
||||
/obj/item/gun/dropped(mob/living/user) // Ditto as above, we remove the HUD. Pending porting TGMC code to clean up this fucking nightmare of spaghetti.
|
||||
/obj/item/gun/dropped(mob/user, equipping, slot) // Ditto as above, we remove the HUD. Pending porting TGMC code to clean up this fucking nightmare of spaghetti.
|
||||
user.hud_used.remove_ammo_hud(user, src)
|
||||
|
||||
..()
|
||||
|
||||
@@ -180,7 +180,7 @@
|
||||
if(power_supply.charge < charge_cost)
|
||||
attempt_reload()
|
||||
|
||||
/obj/item/gun/energy/kinetic_accelerator/dropped(mob/user)
|
||||
/obj/item/gun/energy/kinetic_accelerator/dropped(mob/user, equipping, slot)
|
||||
. = ..()
|
||||
if(!QDELING(src) && !holds_charge)
|
||||
// Put it on a delay because moving item from slot to hand
|
||||
|
||||
@@ -187,7 +187,7 @@
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
/obj/item/reagent_containers/glass/beaker/dropped(mob/user)
|
||||
/obj/item/reagent_containers/glass/beaker/dropped(mob/user, equipping, slot)
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
/obj/item/reagent_containers/syringe/dropped(mob/user)
|
||||
/obj/item/reagent_containers/syringe/dropped(mob/user, equipping, slot)
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
|
||||
@@ -502,7 +502,7 @@
|
||||
|
||||
species_restricted = null
|
||||
|
||||
/obj/item/clothing/head/helmet/space/void/engineering/hazmat/fluff/screehelm/mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
|
||||
/obj/item/clothing/head/helmet/space/void/engineering/hazmat/fluff/screehelm/mob_can_equip(mob/living/carbon/human/H, slot, disable_warning = FALSE, ignore_obstruction, go_over_slot = FALSE)
|
||||
if(..())
|
||||
if(H.ckey != "scree")
|
||||
to_chat(H, span_warning("Your face and whoever is meant for this helmet are too different."))
|
||||
@@ -524,7 +524,7 @@
|
||||
|
||||
species_restricted = null
|
||||
|
||||
/obj/item/clothing/suit/space/void/engineering/hazmat/fluff/screespess/mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
|
||||
/obj/item/clothing/suit/space/void/engineering/hazmat/fluff/screespess/mob_can_equip(mob/living/carbon/human/H, slot, disable_warning = FALSE, ignore_obstruction, go_over_slot = FALSE)
|
||||
if(..())
|
||||
if(H.ckey != "scree")
|
||||
to_chat(H, span_warning("The gloves only have three fingers, not to mention the accommodation for extra limbs."))
|
||||
@@ -556,7 +556,7 @@
|
||||
slot_head_str = 'icons/vore/custom_onmob_32x48_vr.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/head/fluff/avida/mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
|
||||
/obj/item/clothing/head/fluff/avida/mob_can_equip(mob/living/carbon/human/H, slot, disable_warning = FALSE, ignore_obstruction, go_over_slot = FALSE)
|
||||
if(..())
|
||||
var/static/list/allowed_ear_names = list("Bnnuy Ears", "Bnnuy Ears 2")
|
||||
//check if wearer's ear sprite is compatible with trimmed icon
|
||||
@@ -577,7 +577,7 @@
|
||||
default_worn_icon = 'icons/vore/custom_clothes_mob.dmi'
|
||||
item_state_slots = list(slot_r_hand_str = "alurane-vines_r", slot_l_hand_str = "alurane-vines_l")
|
||||
|
||||
/obj/item/clothing/under/fluff/aluranevines/mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
|
||||
/obj/item/clothing/under/fluff/aluranevines/mob_can_equip(mob/living/carbon/human/H, slot, disable_warning = FALSE, ignore_obstruction, go_over_slot = FALSE)
|
||||
if(..())
|
||||
if(H.ckey != "natje")
|
||||
to_chat(H, span_warning("Wrapping vines around yourself is a quite an... Odd idea. You decide otherwise."))
|
||||
@@ -719,7 +719,7 @@
|
||||
|
||||
light_overlay = "helmet_light"
|
||||
|
||||
/obj/item/clothing/head/helmet/space/fluff/joan/mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
|
||||
/obj/item/clothing/head/helmet/space/fluff/joan/mob_can_equip(mob/living/carbon/human/H, slot, disable_warning = FALSE, ignore_obstruction, go_over_slot = FALSE)
|
||||
if(..())
|
||||
if(H.ckey != "joanrisu")
|
||||
to_chat(H, span_warning("You try to fit on the helmet, but it doesn't fit."))
|
||||
@@ -745,7 +745,7 @@
|
||||
|
||||
default_worn_icon = 'icons/vore/custom_clothes_mob.dmi'
|
||||
|
||||
/obj/item/clothing/suit/space/fluff/joan/mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
|
||||
/obj/item/clothing/suit/space/fluff/joan/mob_can_equip(mob/living/carbon/human/H, slot, disable_warning = FALSE, ignore_obstruction, go_over_slot = FALSE)
|
||||
if(..())
|
||||
if(H.ckey != "joanrisu")
|
||||
to_chat(H, span_warning("You try to fit into the suit, to no avail."))
|
||||
@@ -1150,7 +1150,7 @@ Departamental Swimsuits, for general use
|
||||
icon = 'icons/mob/taursuits_wolf.dmi'
|
||||
icon_state = "jessiecoat"
|
||||
|
||||
/obj/item/clothing/suit/storage/hooded/wintercoat/jessie/mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
|
||||
/obj/item/clothing/suit/storage/hooded/wintercoat/jessie/mob_can_equip(mob/living/carbon/human/H, slot, disable_warning = FALSE, ignore_obstruction, go_over_slot = FALSE)
|
||||
if(..())
|
||||
if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/wolf))
|
||||
return ..()
|
||||
@@ -1167,7 +1167,7 @@ Departamental Swimsuits, for general use
|
||||
icon_state = "katesuit"
|
||||
item_state_slots = null
|
||||
|
||||
/obj/item/clothing/suit/armor/vest/wolftaur/kate/mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
|
||||
/obj/item/clothing/suit/armor/vest/wolftaur/kate/mob_can_equip(mob/living/carbon/human/H, slot, disable_warning = FALSE, ignore_obstruction, go_over_slot = FALSE)
|
||||
if(..())
|
||||
if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/wolf))
|
||||
return ..()
|
||||
@@ -1197,7 +1197,7 @@ Departamental Swimsuits, for general use
|
||||
light_overlay = "helmet_light"
|
||||
species_restricted = null
|
||||
|
||||
/obj/item/clothing/head/helmet/space/fluff/kate/mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
|
||||
/obj/item/clothing/head/helmet/space/fluff/kate/mob_can_equip(mob/living/carbon/human/H, slot, disable_warning = FALSE, ignore_obstruction, go_over_slot = FALSE)
|
||||
if(..())
|
||||
if(H.ckey != "samanthafyre")
|
||||
to_chat(H, span_warning("You try to fit on the helmet, but it doesn't fit."))
|
||||
@@ -1521,7 +1521,7 @@ Departamental Swimsuits, for general use
|
||||
default_worn_icon = 'icons/vore/custom_clothes_mob.dmi'
|
||||
species_restricted = null
|
||||
|
||||
/obj/item/clothing/head/helmet/space/void/security/hasd/mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
|
||||
/obj/item/clothing/head/helmet/space/void/security/hasd/mob_can_equip(mob/living/carbon/human/H, slot, disable_warning = FALSE, ignore_obstruction, go_over_slot = FALSE)
|
||||
if(..())
|
||||
if(H.ckey != "silencedmp5a5")
|
||||
to_chat(H, span_warning("...The faceplate is clearly not made for your anatomy, thus, does not fit."))
|
||||
@@ -1538,7 +1538,7 @@ Departamental Swimsuits, for general use
|
||||
icon_state = "hasd_suit"
|
||||
pixel_x = -16
|
||||
|
||||
/obj/item/clothing/suit/space/void/security/hasd/mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
|
||||
/obj/item/clothing/suit/space/void/security/hasd/mob_can_equip(mob/living/carbon/human/H, slot, disable_warning = FALSE, ignore_obstruction, go_over_slot = FALSE)
|
||||
if(..() && istype(H) && H.ckey == "silencedmp5a5")
|
||||
return 1
|
||||
else
|
||||
@@ -1649,12 +1649,11 @@ Departamental Swimsuits, for general use
|
||||
|
||||
species_restricted = list("exclude", SPECIES_TESHARI)
|
||||
|
||||
/obj/item/clothing/under/fluff/slime_skeleton/mob_can_equip(M as mob, slot, disable_warning = FALSE)
|
||||
/obj/item/clothing/under/fluff/slime_skeleton/mob_can_equip(mob/living/carbon/human/H, slot, disable_warning = FALSE, ignore_obstruction, go_over_slot = FALSE)
|
||||
if(!..())
|
||||
return 0
|
||||
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(ishuman(H))
|
||||
if(!(H.get_species() == SPECIES_PROMETHEAN)) //Only wearable by slimes, since species_restricted actually checks bodytype, not species
|
||||
return 0
|
||||
|
||||
@@ -1704,7 +1703,7 @@ Departamental Swimsuits, for general use
|
||||
icon_override = 'icons/vore/custom_clothes_mob.dmi'
|
||||
update_clothing_icon()
|
||||
|
||||
/obj/item/clothing/accessory/poncho/roles/cloak/hop/fluff/pip/dropped()
|
||||
/obj/item/clothing/accessory/poncho/roles/cloak/hop/fluff/pip/dropped(mob/user, equipping, slot)
|
||||
..()
|
||||
icon_override = 'icons/vore/custom_clothes_mob.dmi'
|
||||
|
||||
@@ -1781,7 +1780,7 @@ Departamental Swimsuits, for general use
|
||||
icon_state = "nikki_outfit"
|
||||
sensor_mode = 3 // I'm a dumbass and forget these all the time please understand :(
|
||||
|
||||
/obj/item/clothing/under/skirt/outfit/fluff/nikki/mob_can_equip(var/mob/living/carbon/human/M, slot, disable_warning = 0)
|
||||
/obj/item/clothing/under/skirt/outfit/fluff/nikki/mob_can_equip(mob/living/carbon/human/M, slot, disable_warning = FALSE, ignore_obstruction, go_over_slot = FALSE)
|
||||
if(..())
|
||||
if (M.ckey == "ryumi")
|
||||
return 1
|
||||
@@ -1796,7 +1795,7 @@ Departamental Swimsuits, for general use
|
||||
default_worn_icon = 'icons/vore/custom_clothes_mob.dmi'
|
||||
icon_state = "nikki_boots"
|
||||
|
||||
/obj/item/clothing/shoes/fluff/nikki/mob_can_equip(var/mob/living/carbon/human/M, slot, disable_warning = 0)
|
||||
/obj/item/clothing/shoes/fluff/nikki/mob_can_equip(mob/living/carbon/human/M, slot, disable_warning = FALSE, ignore_obstruction, go_over_slot = FALSE)
|
||||
if(..())
|
||||
if (M.ckey == "ryumi")
|
||||
return 1
|
||||
@@ -2055,7 +2054,7 @@ Departamental Swimsuits, for general use
|
||||
icon_override = 'icons/vore/custom_clothes_mob.dmi'
|
||||
update_clothing_icon()
|
||||
|
||||
/obj/item/clothing/accessory/poncho/roles/cloak/fluff/cloakglowing/dropped(mob/user)
|
||||
/obj/item/clothing/accessory/poncho/roles/cloak/fluff/cloakglowing/dropped(mob/user, equipping, slot)
|
||||
..()
|
||||
icon_override = 'icons/vore/custom_clothes_mob.dmi'
|
||||
|
||||
|
||||
@@ -458,7 +458,7 @@
|
||||
item_state = "serdy_armor"
|
||||
body_parts_covered = CHEST|LEGS|ARMS //It's a full body suit, minus hands and feet. Arms and legs should be protected, not just the torso. Retains normal security armor values still.
|
||||
|
||||
/obj/item/clothing/suit/armor/vest/wolftaur/serdy/mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
|
||||
/obj/item/clothing/suit/armor/vest/wolftaur/serdy/mob_can_equip(mob/living/carbon/human/H, slot, disable_warning = FALSE, ignore_obstruction, go_over_slot = FALSE)
|
||||
if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/wolf))
|
||||
return ..()
|
||||
else
|
||||
@@ -1000,12 +1000,11 @@
|
||||
else
|
||||
set_light(0)
|
||||
|
||||
/obj/item/melee/baton/fluff/stunstaff/dropped(mob/user)
|
||||
/obj/item/melee/baton/fluff/stunstaff/dropped(mob/user, equipping, slot)
|
||||
..()
|
||||
if(wielded)
|
||||
wielded = 0
|
||||
spawn(0)
|
||||
update_held_icon()
|
||||
wielded = FALSE
|
||||
update_held_icon()
|
||||
|
||||
/obj/item/melee/baton/fluff/stunstaff/attack_self(mob/user)
|
||||
. = ..(user)
|
||||
@@ -1119,7 +1118,7 @@
|
||||
allowed = list(/obj/item/shield/fluff/wolfgirlshield)
|
||||
damtype = HALLOSS
|
||||
|
||||
/obj/item/melee/fluffstuff/wolfgirlsword/dropped(mob/user)
|
||||
/obj/item/melee/fluffstuff/wolfgirlsword/dropped(mob/user, equipping, slot)
|
||||
..()
|
||||
if(!istype(loc,/mob))
|
||||
deactivate(user)
|
||||
@@ -1215,7 +1214,7 @@
|
||||
icon_override = 'icons/vore/custom_clothes_vr.dmi'
|
||||
icon_state = "tiemgogs"
|
||||
|
||||
/obj/item/clothing/glasses/welding/tiemgogs/mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
|
||||
/obj/item/clothing/glasses/welding/tiemgogs/mob_can_equip(mob/living/carbon/human/H, slot, disable_warning = FALSE, ignore_obstruction, go_over_slot = FALSE)
|
||||
if(..())
|
||||
if(H.ckey != "radiantaurora")
|
||||
to_chat(H, span_warning("These don't look like they were made to fit you..."))
|
||||
@@ -1255,12 +1254,12 @@
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/rig/nikki/mob_can_equip(var/mob/living/carbon/human/M, slot, disable_warning = 0) // Feel free to (try to) put Nikki's hat on! The necklace though is a flat-out no-go.
|
||||
/obj/item/rig/nikki/mob_can_equip(mob/living/carbon/human/H, slot, disable_warning = FALSE, ignore_obstruction, go_over_slot = FALSE) // Feel free to (try to) put Nikki's hat on! The necklace though is a flat-out no-go.
|
||||
if(..())
|
||||
if (M.ckey == "ryumi")
|
||||
if(H.ckey == "ryumi")
|
||||
return 1
|
||||
else if (M.get_active_hand() == src)
|
||||
to_chat(M, span_warning("For some reason, the necklace seems to never quite get past your head when you try to put it on... Weird, it looked like it would fit."))
|
||||
else if (H.get_active_hand() == src)
|
||||
to_chat(H, span_warning("For some reason, the necklace seems to never quite get past your head when you try to put it on... Weird, it looked like it would fit."))
|
||||
return 0
|
||||
|
||||
//Nickcrazy - Damon Bones Xrim
|
||||
@@ -1641,7 +1640,7 @@
|
||||
slot_flags = SLOT_MASK | SLOT_OCLOTHING
|
||||
replacementType = /obj/item/remote_scene_tool/tally_doll
|
||||
|
||||
/obj/item/remote_scene_tool/tally_necklace/mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
|
||||
/obj/item/remote_scene_tool/tally_necklace/mob_can_equip(mob/living/carbon/human/H, slot, disable_warning = FALSE, ignore_obstruction, go_over_slot = FALSE)
|
||||
if(..())
|
||||
if(H.ckey != "bricker98")
|
||||
if(!disable_warning)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/obj/item/holder/dropped(mob/user)
|
||||
if (held_mob?.loc != src || isturf(loc))
|
||||
/obj/item/holder/dropped(mob/user, equipping, slot)
|
||||
if(held_mob?.loc != src || isturf(loc))
|
||||
var/held = held_mob
|
||||
dump_mob()
|
||||
held_mob = held
|
||||
|
||||
@@ -243,7 +243,7 @@ i just hope whatever happens, she finds the mercy we werent equipped to give her
|
||||
say_list_type = /datum/say_list/merc/drone/tanker_escort
|
||||
corpse = /obj/effect/landmark/mobcorpse/syndicatesoldier/drone/tanker
|
||||
loot_list = list(/obj/item/poi/broken_drone_circuit/phoron_tanker = 100,
|
||||
/obj/item/shield/energy = 100, /obj/item/melee/energy/sword/color = 20)
|
||||
/obj/item/shield/energy = 100, /obj/item/melee/energy/sword = 20)
|
||||
min_oxy = 0
|
||||
max_oxy = 0
|
||||
min_tox = 0
|
||||
|
||||
@@ -913,14 +913,12 @@
|
||||
#include "code\datums\managed_browsers\feedback_form.dm"
|
||||
#include "code\datums\managed_browsers\feedback_viewer.dm"
|
||||
#include "code\datums\observation\destroyed.dm"
|
||||
#include "code\datums\observation\equipped.dm"
|
||||
#include "code\datums\observation\helpers.dm"
|
||||
#include "code\datums\observation\moved.dm"
|
||||
#include "code\datums\observation\power_change.dm"
|
||||
#include "code\datums\observation\shuttle_added.dm"
|
||||
#include "code\datums\observation\stat_set.dm"
|
||||
#include "code\datums\observation\turf_enterexit.dm"
|
||||
#include "code\datums\observation\unequipped.dm"
|
||||
#include "code\datums\outfits\_defines.dm"
|
||||
#include "code\datums\outfits\horror_killers.dm"
|
||||
#include "code\datums\outfits\misc.dm"
|
||||
|
||||
Reference in New Issue
Block a user