mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-02-03 12:50:36 +00:00
More tweaks to IPC fixes. Merge resolution/compile fixes. Further work on properly integrating, updating and fixing prosthetic options. Repathed internal organs to organ/internal. More work on full synthetics, changelings, overheating. Working on getting organs to qdel properly and spawn properly when robotized. Finalized some overheating values, added remaining prosthetic icons. Finalizing the testing version of the full prosthetic bodies branch. Added suit cyclers to the autolathe and map. Fixing runtime errors. Fixing errors. Changelog. Replacing limb and organ strings with constants. Prevented brainless species from becoming full cyborgs. Fixed issues with brain/MMIs renaming themselves inappropriately. Various fixes and oversights.
316 lines
10 KiB
Plaintext
316 lines
10 KiB
Plaintext
/*
|
|
* The 'fancy' path is for objects like donut boxes that show how many items are in the storage item on the sprite itself
|
|
* .. Sorry for the shitty path name, I couldnt think of a better one.
|
|
*
|
|
* WARNING: var/icon_type is used for both examine text and sprite name. Please look at the procs below and adjust your sprite names accordingly
|
|
*
|
|
* Contains:
|
|
* Donut Box
|
|
* Egg Box
|
|
* Candle Box
|
|
* Crayon Box
|
|
* Cigarette Box
|
|
*/
|
|
|
|
/obj/item/weapon/storage/fancy/
|
|
icon = 'icons/obj/food.dmi'
|
|
icon_state = "donutbox6"
|
|
name = "donut box"
|
|
var/icon_type = "donut"
|
|
|
|
/obj/item/weapon/storage/fancy/update_icon(var/itemremoved = 0)
|
|
var/total_contents = src.contents.len - itemremoved
|
|
src.icon_state = "[src.icon_type]box[total_contents]"
|
|
return
|
|
|
|
/obj/item/weapon/storage/fancy/examine(mob/user)
|
|
if(!..(user, 1))
|
|
return
|
|
|
|
if(contents.len <= 0)
|
|
user << "There are no [src.icon_type]s left in the box."
|
|
else if(contents.len == 1)
|
|
user << "There is one [src.icon_type] left in the box."
|
|
else
|
|
user << "There are [src.contents.len] [src.icon_type]s in the box."
|
|
|
|
return
|
|
|
|
/*
|
|
* Egg Box
|
|
*/
|
|
|
|
/obj/item/weapon/storage/fancy/egg_box
|
|
icon = 'icons/obj/food.dmi'
|
|
icon_state = "eggbox"
|
|
icon_type = "egg"
|
|
name = "egg box"
|
|
storage_slots = 12
|
|
can_hold = list(
|
|
/obj/item/weapon/reagent_containers/food/snacks/egg,
|
|
/obj/item/weapon/reagent_containers/food/snacks/boiledegg
|
|
)
|
|
|
|
/obj/item/weapon/storage/fancy/egg_box/New()
|
|
..()
|
|
for(var/i=1; i <= storage_slots; i++)
|
|
new /obj/item/weapon/reagent_containers/food/snacks/egg(src)
|
|
return
|
|
|
|
/*
|
|
* Candle Box
|
|
*/
|
|
|
|
/obj/item/weapon/storage/fancy/candle_box
|
|
name = "candle pack"
|
|
desc = "A pack of red candles."
|
|
icon = 'icons/obj/candle.dmi'
|
|
icon_state = "candlebox5"
|
|
icon_type = "candle"
|
|
item_state = "candlebox5"
|
|
storage_slots = 5
|
|
throwforce = 2
|
|
slot_flags = SLOT_BELT
|
|
|
|
|
|
/obj/item/weapon/storage/fancy/candle_box/New()
|
|
..()
|
|
for(var/i=1; i <= storage_slots; i++)
|
|
new /obj/item/weapon/flame/candle(src)
|
|
return
|
|
|
|
/*
|
|
* Crayon Box
|
|
*/
|
|
|
|
/obj/item/weapon/storage/fancy/crayons
|
|
name = "box of crayons"
|
|
desc = "A box of crayons for all your rune drawing needs."
|
|
icon = 'icons/obj/crayons.dmi'
|
|
icon_state = "crayonbox"
|
|
w_class = 2.0
|
|
storage_slots = 6
|
|
icon_type = "crayon"
|
|
can_hold = list(
|
|
/obj/item/weapon/pen/crayon
|
|
)
|
|
|
|
/obj/item/weapon/storage/fancy/crayons/New()
|
|
..()
|
|
new /obj/item/weapon/pen/crayon/red(src)
|
|
new /obj/item/weapon/pen/crayon/orange(src)
|
|
new /obj/item/weapon/pen/crayon/yellow(src)
|
|
new /obj/item/weapon/pen/crayon/green(src)
|
|
new /obj/item/weapon/pen/crayon/blue(src)
|
|
new /obj/item/weapon/pen/crayon/purple(src)
|
|
update_icon()
|
|
|
|
/obj/item/weapon/storage/fancy/crayons/update_icon()
|
|
overlays = list() //resets list
|
|
overlays += image('icons/obj/crayons.dmi',"crayonbox")
|
|
for(var/obj/item/weapon/pen/crayon/crayon in contents)
|
|
overlays += image('icons/obj/crayons.dmi',crayon.colourName)
|
|
|
|
/obj/item/weapon/storage/fancy/crayons/attackby(obj/item/W as obj, mob/user as mob)
|
|
if(istype(W,/obj/item/weapon/pen/crayon))
|
|
switch(W:colourName)
|
|
if("mime")
|
|
usr << "This crayon is too sad to be contained in this box."
|
|
return
|
|
if("rainbow")
|
|
usr << "This crayon is too powerful to be contained in this box."
|
|
return
|
|
..()
|
|
|
|
////////////
|
|
//CIG PACK//
|
|
////////////
|
|
/obj/item/weapon/storage/fancy/cigarettes
|
|
name = "\improper pack of Trans-Stellar Duty-frees"
|
|
desc = "A ubiquitous brand of cigarettes, found in every major spacefaring corporation in the universe. As mild and flavorless as it gets."
|
|
icon = 'icons/obj/cigarettes.dmi'
|
|
icon_state = "cigpacket"
|
|
item_state = "cigpacket"
|
|
w_class = 1
|
|
throwforce = 2
|
|
slot_flags = SLOT_BELT
|
|
storage_slots = 6
|
|
can_hold = list(/obj/item/clothing/mask/smokable/cigarette, /obj/item/weapon/flame/lighter)
|
|
icon_type = "cigarette"
|
|
|
|
/obj/item/weapon/storage/fancy/cigarettes/New()
|
|
..()
|
|
flags |= NOREACT
|
|
for(var/i = 1 to storage_slots)
|
|
new /obj/item/clothing/mask/smokable/cigarette(src)
|
|
create_reagents(15 * storage_slots)//so people can inject cigarettes without opening a packet, now with being able to inject the whole one
|
|
|
|
/obj/item/weapon/storage/fancy/cigarettes/update_icon()
|
|
icon_state = "[initial(icon_state)][contents.len]"
|
|
return
|
|
|
|
/obj/item/weapon/storage/fancy/cigarettes/remove_from_storage(obj/item/W as obj, atom/new_location)
|
|
var/obj/item/clothing/mask/smokable/cigarette/C = W
|
|
if(!istype(C)) return // what
|
|
reagents.trans_to_obj(C, (reagents.total_volume/contents.len))
|
|
..()
|
|
|
|
/obj/item/weapon/storage/fancy/cigarettes/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
|
|
if(!istype(M, /mob))
|
|
return
|
|
|
|
if(M == user && user.zone_sel.selecting == O_MOUTH && contents.len > 0 && !user.wear_mask)
|
|
var/obj/item/clothing/mask/smokable/cigarette/W = new /obj/item/clothing/mask/smokable/cigarette(user)
|
|
reagents.trans_to_obj(W, (reagents.total_volume/contents.len))
|
|
user.equip_to_slot_if_possible(W, slot_wear_mask)
|
|
reagents.maximum_volume = 15 * contents.len
|
|
contents.len--
|
|
user << "<span class='notice'>You take a cigarette out of the pack.</span>"
|
|
update_icon()
|
|
else
|
|
..()
|
|
|
|
/obj/item/weapon/storage/fancy/cigarettes/dromedaryco
|
|
name = "\improper DromedaryCo packet"
|
|
desc = "A packet of six imported DromedaryCo cancer sticks. A label on the packaging reads, \"Wouldn't a slow death make a change?\""
|
|
icon_state = "Dpacket"
|
|
item_state = "Dpacket"
|
|
|
|
/obj/item/weapon/storage/fancy/cigarettes/killthroat
|
|
name = "\improper AcmeCo packet"
|
|
desc = "A packet of six AcmeCo cigarettes. For those who somehow want to obtain the record for the most amount of cancerous tumors."
|
|
icon_state = "Bpacket"
|
|
item_state = "Bpacket" //Doesn't have an inhand state, but neither does dromedary, so, ya know..
|
|
|
|
New()
|
|
..()
|
|
fill_cigarre_package(src,list("fuel" = 15))
|
|
|
|
// New exciting ways to kill your lungs! - Earthcrusher //
|
|
|
|
/obj/item/weapon/storage/fancy/cigarettes/luckystars
|
|
name = "\improper pack of Lucky Stars"
|
|
desc = "A mellow blend made from synthetic, pod-grown tobacco. The commercial jingle is guaranteed to get stuck in your head."
|
|
icon_state = "LSpacket"
|
|
item_state = "Dpacket" //I actually don't mind cig packs not showing up in the hand. whotf doesn't just keep them in their pockets/coats //
|
|
|
|
/obj/item/weapon/storage/fancy/cigarettes/jerichos
|
|
name = "\improper pack of Jerichos"
|
|
desc = "Typically seen dangling from the lips of Martian soldiers and border world hustlers. Tastes like hickory smoke, feels like warm liquid death down your lungs."
|
|
icon_state = "Jpacket"
|
|
item_state = "Dpacket"
|
|
|
|
/obj/item/weapon/storage/fancy/cigarettes/menthols
|
|
name = "\improper pack of Temperamento Menthols"
|
|
desc = "With a sharp and natural organic menthol flavor, these Temperamentos are a favorite of NDV crews. Hardly anyone knows they make 'em in non-menthol!"
|
|
icon_state = "TMpacket"
|
|
item_state = "Dpacket"
|
|
|
|
/obj/item/weapon/storage/fancy/cigarettes/carcinomas
|
|
name = "\improper pack of Carcinoma Angels"
|
|
desc = "This unknown brand was slated for the chopping block, until they were publicly endorsed by an old Earthling gonzo journalist. The rest is history. They sell a variety for cats, too."
|
|
icon_state = "CApacket"
|
|
item_state = "Dpacket"
|
|
|
|
/obj/item/weapon/storage/fancy/cigarettes/professionals
|
|
name = "\improper pack of Professional 120s"
|
|
desc = "Let's face it - if you're smoking these, you're either trying to look upper-class or you're 80 years old. That's the only excuse. They taste disgusting, too."
|
|
icon_state = "P100packet"
|
|
item_state = "Dpacket"
|
|
|
|
/obj/item/weapon/storage/fancy/cigar
|
|
name = "cigar case"
|
|
desc = "A case for holding your cigars when you are not smoking them."
|
|
icon_state = "cigarcase"
|
|
item_state = "cigarcase"
|
|
icon = 'icons/obj/cigarettes.dmi'
|
|
w_class = 1
|
|
throwforce = 2
|
|
slot_flags = SLOT_BELT
|
|
storage_slots = 7
|
|
can_hold = list(/obj/item/clothing/mask/smokable/cigarette/cigar)
|
|
icon_type = "cigar"
|
|
|
|
/obj/item/weapon/storage/fancy/cigar/New()
|
|
..()
|
|
flags |= NOREACT
|
|
for(var/i = 1 to storage_slots)
|
|
new /obj/item/clothing/mask/smokable/cigarette/cigar(src)
|
|
create_reagents(15 * storage_slots)
|
|
|
|
/obj/item/weapon/storage/fancy/cigar/update_icon()
|
|
icon_state = "[initial(icon_state)][contents.len]"
|
|
return
|
|
|
|
/obj/item/weapon/storage/fancy/cigar/remove_from_storage(obj/item/W as obj, atom/new_location)
|
|
var/obj/item/clothing/mask/smokable/cigarette/cigar/C = W
|
|
if(!istype(C)) return
|
|
reagents.trans_to_obj(C, (reagents.total_volume/contents.len))
|
|
..()
|
|
|
|
/obj/item/weapon/storage/fancy/cigar/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
|
|
if(!istype(M, /mob))
|
|
return
|
|
|
|
if(M == user && user.zone_sel.selecting == O_MOUTH && contents.len > 0 && !user.wear_mask)
|
|
var/obj/item/clothing/mask/smokable/cigarette/cigar/W = new /obj/item/clothing/mask/smokable/cigarette/cigar(user)
|
|
reagents.trans_to_obj(W, (reagents.total_volume/contents.len))
|
|
user.equip_to_slot_if_possible(W, slot_wear_mask)
|
|
reagents.maximum_volume = 15 * contents.len
|
|
contents.len--
|
|
user << "<span class='notice'>You take a cigar out of the case.</span>"
|
|
update_icon()
|
|
else
|
|
..()
|
|
|
|
/*
|
|
* Vial Box
|
|
*/
|
|
|
|
/obj/item/weapon/storage/fancy/vials
|
|
icon = 'icons/obj/vialbox.dmi'
|
|
icon_state = "vialbox6"
|
|
icon_type = "vial"
|
|
name = "vial storage box"
|
|
storage_slots = 6
|
|
can_hold = list(/obj/item/weapon/reagent_containers/glass/beaker/vial)
|
|
|
|
|
|
/obj/item/weapon/storage/fancy/vials/New()
|
|
..()
|
|
for(var/i=1; i <= storage_slots; i++)
|
|
new /obj/item/weapon/reagent_containers/glass/beaker/vial(src)
|
|
return
|
|
|
|
/obj/item/weapon/storage/lockbox/vials
|
|
name = "secure vial storage box"
|
|
desc = "A locked box for keeping things away from children."
|
|
icon = 'icons/obj/vialbox.dmi'
|
|
icon_state = "vialbox0"
|
|
item_state = "syringe_kit"
|
|
max_w_class = 2
|
|
can_hold = list(/obj/item/weapon/reagent_containers/glass/beaker/vial)
|
|
max_storage_space = 12 //The sum of the w_classes of all the items in this storage item.
|
|
storage_slots = 6
|
|
req_access = list(access_virology)
|
|
|
|
/obj/item/weapon/storage/lockbox/vials/New()
|
|
..()
|
|
update_icon()
|
|
|
|
/obj/item/weapon/storage/lockbox/vials/update_icon(var/itemremoved = 0)
|
|
var/total_contents = src.contents.len - itemremoved
|
|
src.icon_state = "vialbox[total_contents]"
|
|
src.overlays.Cut()
|
|
if (!broken)
|
|
overlays += image(icon, src, "led[locked]")
|
|
if(locked)
|
|
overlays += image(icon, src, "cover")
|
|
else
|
|
overlays += image(icon, src, "ledb")
|
|
return
|
|
|
|
/obj/item/weapon/storage/lockbox/vials/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
|
..()
|
|
update_icon()
|