everything but mob stuff
This commit is contained in:
@@ -387,8 +387,8 @@
|
||||
desc = "A pair of black shoes."
|
||||
permeability_coefficient = 0.05
|
||||
resistance_flags = NONE
|
||||
pockets = /obj/item/storage/internal/pocket/shoes
|
||||
armor = list("melee" = 10, "bullet" = 10, "laser" = 10, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
|
||||
pocket_storage_component_path = /datum/component/storage/concrete/pockets/shoes
|
||||
|
||||
var/datum/action/item_action/chameleon/change/chameleon_action
|
||||
|
||||
@@ -579,16 +579,21 @@
|
||||
/obj/item/storage/belt/chameleon
|
||||
name = "toolbelt"
|
||||
desc = "Holds tools."
|
||||
silent = TRUE
|
||||
var/datum/action/item_action/chameleon/change/chameleon_action
|
||||
|
||||
/obj/item/storage/belt/chameleon/Initialize()
|
||||
. = ..()
|
||||
|
||||
chameleon_action = new(src)
|
||||
chameleon_action.chameleon_type = /obj/item/storage/belt
|
||||
chameleon_action.chameleon_name = "Belt"
|
||||
chameleon_action.initialize_disguises()
|
||||
|
||||
/obj/item/storage/belt/chameleon/ComponentInitialize()
|
||||
. = ..()
|
||||
GET_COMPONENT(STR, /datum/component/storage)
|
||||
STR.silent = TRUE
|
||||
|
||||
/obj/item/storage/belt/chameleon/emp_act(severity)
|
||||
chameleon_action.emp_randomise()
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
var/list/user_vars_to_edit = list() //VARNAME = VARVALUE eg: "name" = "butts"
|
||||
var/list/user_vars_remembered = list() //Auto built by the above + dropped() + equipped()
|
||||
|
||||
var/obj/item/storage/internal/pocket/pockets = null
|
||||
var/pocket_storage_component_path
|
||||
|
||||
//These allow head/mask items to dynamically alter the user's hair
|
||||
// and facial hair, checking hair_extensions.dmi and facialhair_extensions.dmi
|
||||
@@ -37,17 +37,15 @@
|
||||
var/dynamic_hair_suffix = ""//head > mask for head hair
|
||||
var/dynamic_fhair_suffix = ""//mask > head for facial hair
|
||||
|
||||
/obj/item/clothing/New()
|
||||
..()
|
||||
if(ispath(pockets))
|
||||
pockets = new pockets(src)
|
||||
/obj/item/clothing/Initialize()
|
||||
. = ..()
|
||||
if(ispath(pocket_storage_component_path))
|
||||
LoadComponent(pocket_storage_component_path)
|
||||
|
||||
/obj/item/clothing/MouseDrop(atom/over_object)
|
||||
. = ..()
|
||||
var/mob/M = usr
|
||||
|
||||
if(pockets && over_object == M)
|
||||
return pockets.MouseDrop(over_object)
|
||||
|
||||
if(ismecha(M.loc)) // stops inventory actions in a mech
|
||||
return
|
||||
|
||||
@@ -56,25 +54,6 @@
|
||||
if(M.putItemFromInventoryInHandIfPossible(src, H.held_index))
|
||||
add_fingerprint(usr)
|
||||
|
||||
/obj/item/clothing/throw_at(atom/target, range, speed, mob/thrower, spin=1, diagonals_first = 0, datum/callback/callback)
|
||||
if(pockets)
|
||||
pockets.close_all()
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/attack_hand(mob/user)
|
||||
if(pockets && pockets.priority && ismob(loc))
|
||||
//If we already have the pockets open, close them.
|
||||
if (user.s_active == pockets)
|
||||
pockets.close(user)
|
||||
//Close whatever the user has open and show them the pockets.
|
||||
else
|
||||
if (user.s_active)
|
||||
user.s_active.close(user)
|
||||
pockets.orient2hud(user)
|
||||
pockets.show_to(user)
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/attackby(obj/item/W, mob/user, params)
|
||||
if(damaged_clothes && istype(W, /obj/item/stack/sheet/cloth))
|
||||
var/obj/item/stack/sheet/cloth/C = W
|
||||
@@ -83,36 +62,12 @@
|
||||
obj_integrity = max_integrity
|
||||
to_chat(user, "<span class='notice'>You fix the damage on [src] with [C].</span>")
|
||||
return 1
|
||||
if(pockets)
|
||||
var/i = pockets.attackby(W, user, params)
|
||||
if(i)
|
||||
return i
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/AltClick(mob/user)
|
||||
if(istype(user) && user.canUseTopic(src, BE_CLOSE, ismonkey(user)) && pockets && pockets.quickdraw && pockets.contents.len)
|
||||
var/obj/item/I = pockets.contents[1]
|
||||
if(!I)
|
||||
return
|
||||
pockets.remove_from_storage(I, get_turf(src))
|
||||
|
||||
if(!user.put_in_hands(I))
|
||||
to_chat(user, "<span class='notice'>You fumble for [I] and it falls on the floor.</span>")
|
||||
return 1
|
||||
user.visible_message("<span class='warning'>[user] draws [I] from [src]!</span>", "<span class='notice'>You draw [I] from [src].</span>")
|
||||
return 1
|
||||
else
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/item/clothing/Destroy()
|
||||
if(pockets)
|
||||
qdel(pockets)
|
||||
pockets = null
|
||||
user_vars_remembered = null //Oh god somebody put REFERENCES in here? not to worry, we'll clean it up
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/item/clothing/dropped(mob/user)
|
||||
..()
|
||||
if(!istype(user))
|
||||
@@ -124,7 +79,6 @@
|
||||
user.vars[variable] = user_vars_remembered[variable]
|
||||
user_vars_remembered = list()
|
||||
|
||||
|
||||
/obj/item/clothing/equipped(mob/user, slot)
|
||||
..()
|
||||
|
||||
@@ -134,18 +88,18 @@
|
||||
user_vars_remembered[variable] = user.vars[variable]
|
||||
user.vars[variable] = user_vars_to_edit[variable]
|
||||
|
||||
|
||||
/obj/item/clothing/examine(mob/user)
|
||||
..()
|
||||
if(damaged_clothes)
|
||||
to_chat(user, "<span class='warning'>It looks damaged!</span>")
|
||||
GET_COMPONENT(pockets, /datum/component/storage)
|
||||
if(pockets)
|
||||
var/list/how_cool_are_your_threads = list("<span class='notice'>")
|
||||
if(pockets.priority)
|
||||
if(pockets.attack_hand_interact)
|
||||
how_cool_are_your_threads += "[src]'s storage opens when clicked.\n"
|
||||
else
|
||||
how_cool_are_your_threads += "[src]'s storage opens when dragged to yourself.\n"
|
||||
how_cool_are_your_threads += "[src] can store [pockets.storage_slots] item\s.\n"
|
||||
how_cool_are_your_threads += "[src] can store [pockets.max_items] item\s.\n"
|
||||
how_cool_are_your_threads += "[src] can store items that are [weightclass2text(pockets.max_w_class)] or smaller.\n"
|
||||
if(pockets.quickdraw)
|
||||
how_cool_are_your_threads += "You can quickly remove an item from [src] using Alt-Click.\n"
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
#define MODE_MESON "meson"
|
||||
#define MODE_TRAY "t-ray"
|
||||
#define MODE_RAD "radiation"
|
||||
#define MODE_SHUTTLE "shuttle"
|
||||
|
||||
/obj/item/clothing/glasses/meson/engine
|
||||
name = "engineering scanner goggles"
|
||||
@@ -63,10 +64,13 @@
|
||||
var/mob/living/carbon/human/user = loc
|
||||
if(user.glasses != src || !user.client)
|
||||
return
|
||||
if(mode == MODE_TRAY)
|
||||
t_ray_scan(user, 8, range)
|
||||
else if(mode == MODE_RAD)
|
||||
show_rads()
|
||||
switch(mode)
|
||||
if(MODE_TRAY)
|
||||
t_ray_scan(user, 8, range)
|
||||
if(MODE_RAD)
|
||||
show_rads()
|
||||
if(MODE_SHUTTLE)
|
||||
show_shuttle()
|
||||
|
||||
/obj/item/clothing/glasses/meson/engine/proc/show_rads()
|
||||
var/mob/living/carbon/human/user = loc
|
||||
@@ -93,6 +97,24 @@
|
||||
pic.appearance = MA
|
||||
flick_overlay(pic, list(user.client), 8)
|
||||
|
||||
/obj/item/clothing/glasses/meson/engine/proc/show_shuttle()
|
||||
var/mob/living/carbon/human/user = loc
|
||||
var/obj/docking_port/mobile/port = SSshuttle.get_containing_shuttle(user)
|
||||
if(!port)
|
||||
return
|
||||
var/list/shuttle_areas = port.shuttle_areas
|
||||
for(var/r in shuttle_areas)
|
||||
var/area/region = r
|
||||
for(var/turf/place in region.contents)
|
||||
if(get_dist(user, place) > 7)
|
||||
continue
|
||||
var/image/pic
|
||||
if(isshuttleturf(place))
|
||||
pic = new('icons/turf/overlays.dmi', place, "greenOverlay", AREA_LAYER)
|
||||
else
|
||||
pic = new('icons/turf/overlays.dmi', place, "redOverlay", AREA_LAYER)
|
||||
flick_overlay(pic, list(user.client), 8)
|
||||
|
||||
/obj/item/clothing/glasses/meson/engine/update_icon()
|
||||
icon_state = "trayson-[mode]"
|
||||
update_mob()
|
||||
@@ -115,7 +137,16 @@
|
||||
|
||||
modes = list(MODE_NONE = MODE_TRAY, MODE_TRAY = MODE_NONE)
|
||||
|
||||
/obj/item/clothing/glasses/meson/engine/shuttle
|
||||
name = "shuttle region scanner"
|
||||
icon_state = "trayson-shuttle"
|
||||
item_state = "trayson-shuttle"
|
||||
desc = "Used to see the boundaries of shuttle regions."
|
||||
|
||||
modes = list(MODE_NONE = MODE_SHUTTLE, MODE_SHUTTLE = MODE_NONE)
|
||||
|
||||
#undef MODE_NONE
|
||||
#undef MODE_MESON
|
||||
#undef MODE_TRAY
|
||||
#undef MODE_RAD
|
||||
#undef MODE_SHUTTLE
|
||||
|
||||
@@ -79,9 +79,13 @@
|
||||
desc = "There's only one man who can sniff out the dirty stench of crime, and he's likely wearing this hat."
|
||||
icon_state = "detective"
|
||||
var/candy_cooldown = 0
|
||||
pockets = /obj/item/storage/internal/pocket/small/detective
|
||||
pocket_storage_component_path = /datum/component/storage/concrete/pockets/small/detective
|
||||
dog_fashion = /datum/dog_fashion/head/detective
|
||||
|
||||
/obj/item/clothing/head/fedora/Initialize()
|
||||
. = ..()
|
||||
new /obj/item/reagent_containers/food/drinks/flask/det(src)
|
||||
|
||||
/obj/item/clothing/head/fedora/det_hat/examine(mob/user)
|
||||
..()
|
||||
to_chat(user, "<span class='notice'>Alt-click to take a candy corn.</span>")
|
||||
|
||||
@@ -187,7 +187,7 @@
|
||||
item_state = "fedora"
|
||||
armor = list("melee" = 25, "bullet" = 5, "laser" = 25, "energy" = 10, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 30, "acid" = 50)
|
||||
desc = "A really cool hat if you're a mobster. A really lame hat if you're not."
|
||||
pockets = /obj/item/storage/internal/pocket/small
|
||||
pocket_storage_component_path = /datum/component/storage/concrete/pockets/small
|
||||
|
||||
/obj/item/clothing/head/fedora/suicide_act(mob/user)
|
||||
if(user.gender == FEMALE)
|
||||
|
||||
@@ -26,6 +26,5 @@
|
||||
|
||||
var/obj/item/storage/backpack/bag = H.back
|
||||
var/obj/item/a_gift/gift = new(H)
|
||||
while(bag.can_be_inserted(gift, 1))
|
||||
bag.handle_item_insertion(gift, 1)
|
||||
while(bag.SendSignal(COMSIG_TRY_STORAGE_INSERT, gift, null, TRUE, FALSE))
|
||||
gift = new(H)
|
||||
|
||||
@@ -182,11 +182,11 @@
|
||||
for(var/obj/item/briefcase_item in sec_briefcase)
|
||||
qdel(briefcase_item)
|
||||
for(var/i = 3 to 0 step -1)
|
||||
sec_briefcase.handle_item_insertion(new /obj/item/stack/spacecash/c1000,1)
|
||||
sec_briefcase.handle_item_insertion(new /obj/item/gun/energy/kinetic_accelerator/crossbow,1)
|
||||
sec_briefcase.handle_item_insertion(new /obj/item/gun/ballistic/revolver/mateba,1)
|
||||
sec_briefcase.handle_item_insertion(new /obj/item/ammo_box/a357,1)
|
||||
sec_briefcase.handle_item_insertion(new /obj/item/grenade/plastic/x4,1)
|
||||
sec_briefcase.SendSignal(COMSIG_TRY_STORAGE_INSERT, new /obj/item/stack/spacecash/c1000, null, TRUE, TRUE)
|
||||
sec_briefcase.SendSignal(COMSIG_TRY_STORAGE_INSERT, new /obj/item/gun/energy/kinetic_accelerator/crossbow, null, TRUE, TRUE)
|
||||
sec_briefcase.SendSignal(COMSIG_TRY_STORAGE_INSERT, new /obj/item/gun/ballistic/revolver/mateba, null, TRUE, TRUE)
|
||||
sec_briefcase.SendSignal(COMSIG_TRY_STORAGE_INSERT, new /obj/item/ammo_box/a357, null, TRUE, TRUE)
|
||||
sec_briefcase.SendSignal(COMSIG_TRY_STORAGE_INSERT, new /obj/item/grenade/plastic/x4, null, TRUE, TRUE)
|
||||
|
||||
var/obj/item/device/pda/heads/pda = H.belt
|
||||
pda.owner = H.real_name
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
strip_delay = 70
|
||||
resistance_flags = NONE
|
||||
permeability_coefficient = 0.05 //Thick soles, and covers the ankle
|
||||
pockets = /obj/item/storage/internal/pocket/shoes
|
||||
pocket_storage_component_path = /datum/component/storage/concrete/pockets/shoes
|
||||
|
||||
/obj/item/clothing/shoes/combat/swat //overpowered boots for death squads
|
||||
name = "\improper SWAT boots"
|
||||
@@ -73,7 +73,7 @@
|
||||
item_state = "clown_shoes"
|
||||
slowdown = SHOES_SLOWDOWN+1
|
||||
item_color = "clown"
|
||||
pockets = /obj/item/storage/internal/pocket/shoes/clown
|
||||
pocket_storage_component_path = /datum/component/storage/concrete/pockets/shoes/clown
|
||||
|
||||
/obj/item/clothing/shoes/clown_shoes/Initialize()
|
||||
. = ..()
|
||||
@@ -106,7 +106,7 @@
|
||||
equip_delay_other = 50
|
||||
resistance_flags = NONE
|
||||
permeability_coefficient = 0.05 //Thick soles, and covers the ankle
|
||||
pockets = /obj/item/storage/internal/pocket/shoes
|
||||
pocket_storage_component_path = /datum/component/storage/concrete/pockets/shoes
|
||||
|
||||
/obj/item/clothing/shoes/jackboots/fast
|
||||
slowdown = -1
|
||||
@@ -121,7 +121,7 @@
|
||||
min_cold_protection_temperature = SHOES_MIN_TEMP_PROTECT
|
||||
heat_protection = FEET|LEGS
|
||||
max_heat_protection_temperature = SHOES_MAX_TEMP_PROTECT
|
||||
pockets = /obj/item/storage/internal/pocket/shoes
|
||||
pocket_storage_component_path = /datum/component/storage/concrete/pockets/shoes
|
||||
|
||||
/obj/item/clothing/shoes/workboots
|
||||
name = "work boots"
|
||||
@@ -133,7 +133,7 @@
|
||||
permeability_coefficient = 0.15
|
||||
strip_delay = 40
|
||||
equip_delay_other = 40
|
||||
pockets = /obj/item/storage/internal/pocket/shoes
|
||||
pocket_storage_component_path = /datum/component/storage/concrete/pockets/shoes
|
||||
|
||||
/obj/item/clothing/shoes/workboots/mining
|
||||
name = "mining boots"
|
||||
@@ -184,7 +184,7 @@
|
||||
desc = "A pair of costume boots fashioned after bird talons."
|
||||
icon_state = "griffinboots"
|
||||
item_state = "griffinboots"
|
||||
pockets = /obj/item/storage/internal/pocket/shoes
|
||||
pocket_storage_component_path = /datum/component/storage/concrete/pockets/shoes
|
||||
|
||||
/obj/item/clothing/shoes/bhop
|
||||
name = "jump boots"
|
||||
@@ -193,7 +193,7 @@
|
||||
item_state = "jetboots"
|
||||
item_color = "hosred"
|
||||
resistance_flags = FIRE_PROOF
|
||||
pockets = /obj/item/storage/internal/pocket/shoes
|
||||
pocket_storage_component_path = /datum/component/storage/concrete/pockets/shoes
|
||||
actions_types = list(/datum/action/item_action/bhop)
|
||||
permeability_coefficient = 0.05
|
||||
var/jumpdistance = 5 //-1 from to see the actual distance, e.g 4 goes over 3 tiles
|
||||
|
||||
@@ -823,13 +823,13 @@
|
||||
if(shoes)
|
||||
shoes.relink_suit(src)
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/flightsuit/attack_hand(mob/user)
|
||||
/obj/item/clothing/suit/space/hardsuit/flightsuit/allow_attack_hand_drop(user)
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(src == H.wear_suit && locked)
|
||||
usermessage("You can not take a locked hardsuit off! Unlock it first!", "boldwarning")
|
||||
return
|
||||
..()
|
||||
return FALSE
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/flightsuit/dropped()
|
||||
if(deployedpack)
|
||||
|
||||
@@ -9,15 +9,15 @@
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
var/above_suit = FALSE
|
||||
var/minimize_when_attached = TRUE // TRUE if shown as a small icon in corner, FALSE if overlayed
|
||||
var/datum/component/storage/detached_pockets
|
||||
|
||||
/obj/item/clothing/accessory/proc/attach(obj/item/clothing/under/U, user)
|
||||
if(pockets) // Attach storage to jumpsuit
|
||||
if(U.pockets) // storage items conflict
|
||||
GET_COMPONENT(storage, /datum/component/storage)
|
||||
if(storage)
|
||||
if(U.SendSignal(COMSIG_CONTAINS_STORAGE))
|
||||
return FALSE
|
||||
|
||||
pockets.forceMove(U)
|
||||
U.pockets = pockets
|
||||
|
||||
U.TakeComponent(storage)
|
||||
detached_pockets = storage
|
||||
U.attached_accessory = src
|
||||
forceMove(U)
|
||||
layer = FLOAT_LAYER
|
||||
@@ -41,11 +41,9 @@
|
||||
|
||||
return TRUE
|
||||
|
||||
|
||||
/obj/item/clothing/accessory/proc/detach(obj/item/clothing/under/U, user)
|
||||
if(pockets && pockets == U.pockets)
|
||||
pockets.forceMove(src)
|
||||
U.pockets = null
|
||||
if(detached_pockets && detached_pockets.parent == U)
|
||||
TakeComponent(detached_pockets)
|
||||
|
||||
U.armor = U.armor.detachArmor(armor)
|
||||
|
||||
@@ -301,14 +299,18 @@
|
||||
desc = "Can protect your clothing from ink stains, but you'll look like a nerd if you're using one."
|
||||
icon_state = "pocketprotector"
|
||||
item_color = "pocketprotector"
|
||||
pockets = /obj/item/storage/internal/pocket/pocketprotector
|
||||
pocket_storage_component_path = /datum/component/storage/concrete/pockets/pocketprotector
|
||||
|
||||
/obj/item/clothing/accessory/pocketprotector/full
|
||||
pockets = /obj/item/storage/internal/pocket/pocketprotector/full
|
||||
|
||||
/obj/item/clothing/accessory/pocketprotector/cosmetology
|
||||
pockets = /obj/item/storage/internal/pocket/pocketprotector/cosmetology
|
||||
/obj/item/clothing/accessory/pocketprotector/full/Initialize()
|
||||
. = ..()
|
||||
new /obj/item/pen/red(src)
|
||||
new /obj/item/pen(src)
|
||||
new /obj/item/pen/blue(src)
|
||||
|
||||
/obj/item/clothing/accessory/pocketprotector/cosmetology/Initialize()
|
||||
. = ..()
|
||||
for(var/i in 1 to 3)
|
||||
new /obj/item/lipstick/random(src)
|
||||
|
||||
////////////////
|
||||
//OONGA BOONGA//
|
||||
@@ -321,7 +323,6 @@
|
||||
item_color = "talisman"
|
||||
armor = list("melee" = 5, "bullet" = 5, "laser" = 5, "energy" = 5, "bomb" = 20, "bio" = 20, "rad" = 5, "fire" = 0, "acid" = 25)
|
||||
|
||||
|
||||
/obj/item/clothing/accessory/skullcodpiece
|
||||
name = "skull codpiece"
|
||||
desc = "A skull shaped ornament, intended to protect the important things in life."
|
||||
|
||||
Reference in New Issue
Block a user