mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-27 23:27:34 +01:00
About The Pull Request Cargo exports will now start deleting the thing and its contents only after everything has been sold and hopefully stop objects from being deleted before getting sold (no export datum actually deletes anything on sell_object()). This PR also removes a variable only used in one place (an admin only item created by ExcessiveUseOfCobblestone, who probably didn't know there's an argument that stops unsold items from getting deleted) and that may be source of harddels. Why It's Good For The Game This will fix #62644, perhaps some harddels and other oddities. Changelog cl fix: Cargo exports will now start deleting items only after everything is sold. This will fix issues such as unachievable exports (like machine ones) and getting less credits than what export scanners says. /cl
276 lines
9.2 KiB
Plaintext
276 lines
9.2 KiB
Plaintext
/obj/item/clothing/neck
|
|
name = "necklace"
|
|
icon = 'icons/obj/clothing/neck.dmi'
|
|
body_parts_covered = NECK
|
|
slot_flags = ITEM_SLOT_NECK
|
|
strip_delay = 40
|
|
equip_delay_other = 40
|
|
|
|
/obj/item/clothing/neck/worn_overlays(mutable_appearance/standing, isinhands = FALSE)
|
|
. = ..()
|
|
if(isinhands)
|
|
return
|
|
|
|
if(body_parts_covered & HEAD)
|
|
if(damaged_clothes)
|
|
. += mutable_appearance('icons/effects/item_damage.dmi', "damagedmask")
|
|
if(HAS_BLOOD_DNA(src))
|
|
. += mutable_appearance('icons/effects/blood.dmi', "maskblood")
|
|
|
|
/obj/item/clothing/neck/tie
|
|
name = "tie"
|
|
desc = "A neosilk clip-on tie."
|
|
icon = 'icons/obj/clothing/neck.dmi'
|
|
icon_state = "bluetie"
|
|
inhand_icon_state = "" //no inhands
|
|
w_class = WEIGHT_CLASS_SMALL
|
|
custom_price = PAYCHECK_EASY
|
|
|
|
/obj/item/clothing/neck/tie/blue
|
|
name = "blue tie"
|
|
icon_state = "bluetie"
|
|
|
|
/obj/item/clothing/neck/tie/red
|
|
name = "red tie"
|
|
icon_state = "redtie"
|
|
|
|
/obj/item/clothing/neck/tie/black
|
|
name = "black tie"
|
|
icon_state = "blacktie"
|
|
|
|
/obj/item/clothing/neck/tie/horrible
|
|
name = "horrible tie"
|
|
desc = "A neosilk clip-on tie. This one is disgusting."
|
|
icon_state = "horribletie"
|
|
|
|
/obj/item/clothing/neck/tie/detective
|
|
name = "loose tie"
|
|
desc = "A loosely tied necktie, a perfect accessory for the over-worked detective."
|
|
icon_state = "detective"
|
|
|
|
/obj/item/clothing/neck/stethoscope
|
|
name = "stethoscope"
|
|
desc = "An outdated medical apparatus for listening to the sounds of the human body. It also makes you look like you know what you're doing."
|
|
icon_state = "stethoscope"
|
|
|
|
/obj/item/clothing/neck/stethoscope/suicide_act(mob/living/carbon/user)
|
|
user.visible_message(span_suicide("[user] puts \the [src] to [user.p_their()] chest! It looks like [user.p_they()] won't hear much!"))
|
|
return OXYLOSS
|
|
|
|
/obj/item/clothing/neck/stethoscope/attack(mob/living/M, mob/living/user)
|
|
if(!ishuman(M) || !isliving(user))
|
|
return ..()
|
|
if(user.combat_mode)
|
|
return
|
|
|
|
var/mob/living/carbon/carbon_patient = M
|
|
var/body_part = parse_zone(user.zone_selected)
|
|
|
|
var/heart_strength = span_danger("no")
|
|
var/lung_strength = span_danger("no")
|
|
|
|
var/obj/item/organ/heart/heart = carbon_patient.getorganslot(ORGAN_SLOT_HEART)
|
|
var/obj/item/organ/lungs/lungs = carbon_patient.getorganslot(ORGAN_SLOT_LUNGS)
|
|
|
|
if(carbon_patient.stat != DEAD && !(HAS_TRAIT(carbon_patient, TRAIT_FAKEDEATH)))
|
|
if(istype(heart))
|
|
heart_strength = (heart.beating ? "a healthy" : span_danger("an unstable"))
|
|
if(istype(lungs))
|
|
lung_strength = ((carbon_patient.failed_last_breath || carbon_patient.losebreath) ? span_danger("strained") : "healthy")
|
|
|
|
user.visible_message(span_notice("[user] places [src] against [carbon_patient]'s [body_part] and listens attentively."), ignored_mobs = user)
|
|
|
|
var/diagnosis = (body_part == BODY_ZONE_CHEST ? "You hear [heart_strength] pulse and [lung_strength] respiration" : "You faintly hear [heart_strength] pulse")
|
|
if(!user.can_hear())
|
|
diagnosis = "Fat load of good it does you though, since you can't hear"
|
|
|
|
to_chat(user, span_notice("You place [src] against [carbon_patient]'s [body_part]. [diagnosis]."))
|
|
|
|
///////////
|
|
//SCARVES//
|
|
///////////
|
|
|
|
/obj/item/clothing/neck/scarf //Default white color, same functionality as beanies.
|
|
name = "white scarf"
|
|
icon_state = "scarf"
|
|
desc = "A stylish scarf. The perfect winter accessory for those with a keen fashion sense, and those who just can't handle a cold breeze on their necks."
|
|
w_class = WEIGHT_CLASS_TINY
|
|
dog_fashion = /datum/dog_fashion/head
|
|
custom_price = PAYCHECK_EASY
|
|
|
|
/obj/item/clothing/neck/scarf/black
|
|
name = "black scarf"
|
|
icon_state = "scarf"
|
|
color = "#4A4A4B" //Grey but it looks black
|
|
|
|
/obj/item/clothing/neck/scarf/pink
|
|
name = "pink scarf"
|
|
icon_state = "scarf"
|
|
color = "#F699CD" //Pink
|
|
|
|
/obj/item/clothing/neck/scarf/red
|
|
name = "red scarf"
|
|
icon_state = "scarf"
|
|
color = "#D91414" //Red
|
|
|
|
/obj/item/clothing/neck/scarf/green
|
|
name = "green scarf"
|
|
icon_state = "scarf"
|
|
color = "#5C9E54" //Green
|
|
|
|
/obj/item/clothing/neck/scarf/darkblue
|
|
name = "dark blue scarf"
|
|
icon_state = "scarf"
|
|
color = "#1E85BC" //Blue
|
|
|
|
/obj/item/clothing/neck/scarf/purple
|
|
name = "purple scarf"
|
|
icon_state = "scarf"
|
|
color = "#9557C5" //Purple
|
|
|
|
/obj/item/clothing/neck/scarf/yellow
|
|
name = "yellow scarf"
|
|
icon_state = "scarf"
|
|
color = "#E0C14F" //Yellow
|
|
|
|
/obj/item/clothing/neck/scarf/orange
|
|
name = "orange scarf"
|
|
icon_state = "scarf"
|
|
color = "#C67A4B" //Orange
|
|
|
|
/obj/item/clothing/neck/scarf/cyan
|
|
name = "cyan scarf"
|
|
icon_state = "scarf"
|
|
color = "#54A3CE" //Cyan
|
|
|
|
|
|
//Striped scarves get their own icons
|
|
|
|
/obj/item/clothing/neck/scarf/zebra
|
|
name = "zebra scarf"
|
|
icon_state = "zebrascarf"
|
|
|
|
/obj/item/clothing/neck/scarf/christmas
|
|
name = "christmas scarf"
|
|
icon_state = "christmasscarf"
|
|
|
|
//The three following scarves don't have the scarf subtype
|
|
//This is because Ian can equip anything from that subtype
|
|
//However, these 3 don't have corgi versions of their sprites
|
|
/obj/item/clothing/neck/stripedredscarf
|
|
name = "striped red scarf"
|
|
icon_state = "stripedredscarf"
|
|
custom_price = PAYCHECK_ASSISTANT * 0.2
|
|
|
|
/obj/item/clothing/neck/stripedgreenscarf
|
|
name = "striped green scarf"
|
|
icon_state = "stripedgreenscarf"
|
|
custom_price = PAYCHECK_ASSISTANT * 0.2
|
|
|
|
/obj/item/clothing/neck/stripedbluescarf
|
|
name = "striped blue scarf"
|
|
icon_state = "stripedbluescarf"
|
|
custom_price = PAYCHECK_ASSISTANT * 0.2
|
|
|
|
/obj/item/clothing/neck/petcollar
|
|
name = "pet collar"
|
|
desc = "It's for pets."
|
|
icon_state = "petcollar"
|
|
var/tagname = null
|
|
|
|
/obj/item/clothing/neck/petcollar/mob_can_equip(mob/M, mob/living/equipper, slot, disable_warning = FALSE, bypass_equip_delay_self = FALSE)
|
|
if(!ismonkey(M))
|
|
return FALSE
|
|
return ..()
|
|
|
|
/obj/item/clothing/neck/petcollar/attack_self(mob/user)
|
|
tagname = sanitize_name(stripped_input(user, "Would you like to change the name on the tag?", "Name your new pet", "Spot", MAX_NAME_LEN))
|
|
name = "[initial(name)] - [tagname]"
|
|
|
|
//////////////
|
|
//DOPE BLING//
|
|
//////////////
|
|
|
|
/obj/item/clothing/neck/necklace/dope
|
|
name = "gold necklace"
|
|
desc = "Damn, it feels good to be a gangster."
|
|
icon = 'icons/obj/clothing/neck.dmi'
|
|
icon_state = "bling"
|
|
|
|
/obj/item/clothing/neck/necklace/dope/merchant
|
|
desc = "Don't ask how it works, the proof is in the holochips!"
|
|
/// scales the amount received in case an admin wants to emulate taxes/fees.
|
|
var/profit_scaling = 1
|
|
/// toggles between sell (TRUE) and get price post-fees (FALSE)
|
|
var/selling = FALSE
|
|
|
|
/obj/item/clothing/neck/necklace/dope/merchant/attack_self(mob/user)
|
|
. = ..()
|
|
selling = !selling
|
|
to_chat(user, span_notice("[src] has been set to [selling ? "'Sell'" : "'Get Price'"] mode."))
|
|
|
|
/obj/item/clothing/neck/necklace/dope/merchant/afterattack(obj/item/I, mob/user, proximity)
|
|
. = ..()
|
|
if(!proximity)
|
|
return
|
|
var/datum/export_report/ex = export_item_and_contents(I, delete_unsold = selling, dry_run = !selling)
|
|
var/price = 0
|
|
for(var/x in ex.total_amount)
|
|
price += ex.total_value[x]
|
|
|
|
if(price)
|
|
var/true_price = round(price*profit_scaling)
|
|
to_chat(user, span_notice("[selling ? "Sold" : "Getting the price of"] [I], value: <b>[true_price]</b> credits[I.contents.len ? " (exportable contents included)" : ""].[profit_scaling < 1 && selling ? "<b>[round(price-true_price)]</b> credit\s taken as processing fee\s." : ""]"))
|
|
if(selling)
|
|
new /obj/item/holochip(get_turf(user),true_price)
|
|
else
|
|
to_chat(user, span_warning("There is no export value for [I] or any items within it."))
|
|
|
|
|
|
/obj/item/clothing/neck/neckerchief
|
|
icon = 'icons/obj/clothing/masks.dmi' //In order to reuse the bandana sprite
|
|
w_class = WEIGHT_CLASS_TINY
|
|
var/sourceBandanaType
|
|
|
|
/obj/item/clothing/neck/neckerchief/worn_overlays(mutable_appearance/standing, isinhands)
|
|
. = ..()
|
|
if(!isinhands)
|
|
var/mutable_appearance/realOverlay = mutable_appearance('icons/mob/clothing/mask.dmi', icon_state)
|
|
realOverlay.pixel_y = -3
|
|
. += realOverlay
|
|
|
|
/obj/item/clothing/neck/neckerchief/AltClick(mob/user)
|
|
. = ..()
|
|
if(iscarbon(user))
|
|
var/mob/living/carbon/C = user
|
|
if(C.get_item_by_slot(ITEM_SLOT_NECK) == src)
|
|
to_chat(user, span_warning("You can't untie [src] while wearing it!"))
|
|
return
|
|
if(user.is_holding(src))
|
|
var/obj/item/clothing/mask/bandana/newBand = new sourceBandanaType(user)
|
|
var/currentHandIndex = user.get_held_index_of_item(src)
|
|
var/oldName = src.name
|
|
qdel(src)
|
|
user.put_in_hand(newBand, currentHandIndex)
|
|
user.visible_message(span_notice("You untie [oldName] back into a [newBand.name]."), span_notice("[user] unties [oldName] back into a [newBand.name]."))
|
|
else
|
|
to_chat(user, span_warning("You must be holding [src] in order to untie it!"))
|
|
|
|
/obj/item/clothing/neck/beads
|
|
name = "plastic bead necklace"
|
|
desc = "A cheap, plastic bead necklace. Show team spirit! Collect them! Throw them away! The posibilites are endless!"
|
|
icon = 'icons/obj/clothing/neck.dmi'
|
|
icon_state = "beads"
|
|
color = "#ffffff"
|
|
custom_price = PAYCHECK_ASSISTANT * 0.2
|
|
custom_materials = (list(/datum/material/plastic = 500))
|
|
|
|
/obj/item/clothing/neck/beads/Initialize(mapload)
|
|
. = ..()
|
|
color = color = pick("#ff0077","#d400ff","#2600ff","#00ccff","#00ff2a","#e5ff00","#ffae00","#ff0000", "#ffffff")
|
|
|
|
/obj/item/clothing/neck/tie/disco
|
|
name = "horrific necktie"
|
|
icon_state = "eldritch_tie"
|
|
desc = "The necktie is adorned with a garish pattern. It's disturbingly vivid. Somehow you feel as if it would be wrong to ever take it off. It's your friend now. You will betray it if you change it for some boring scarf."
|