mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 02:09:41 +00:00
371 lines
12 KiB
Plaintext
371 lines
12 KiB
Plaintext
/obj/item/clothing/mask/chewable
|
|
name = "chewable item master"
|
|
desc = "If you are seeing this, ahelp it."
|
|
icon = 'icons/inventory/face/item.dmi'
|
|
drop_sound = 'sound/items/drop/food.ogg'
|
|
body_parts_covered = 0
|
|
|
|
var/type_butt = null
|
|
var/chem_volume = 0
|
|
var/chewtime = 0
|
|
var/brand
|
|
var/list/filling = list()
|
|
var/wrapped = FALSE
|
|
|
|
/obj/item/clothing/mask/chewable/attack_self(mob/user)
|
|
if(wrapped)
|
|
wrapped = FALSE
|
|
to_chat(user, span_notice("You unwrap \the [name]."))
|
|
playsound(src.loc, 'sound/items/drop/wrapper.ogg', 50, 1)
|
|
slot_flags = SLOT_EARS | SLOT_MASK
|
|
update_icon()
|
|
|
|
/obj/item/clothing/mask/chewable/update_icon()
|
|
cut_overlays()
|
|
if(wrapped)
|
|
add_overlay("[initial(icon_state)]_wrapper")
|
|
|
|
/obj/item/clothing/mask/chewable/Initialize(mapload)
|
|
. = ..()
|
|
flags |= NOREACT // so it doesn't react until you light it
|
|
create_reagents(chem_volume) // making the cigarrete a chemical holder with a maximum volume of 15
|
|
for(var/R in filling)
|
|
reagents.add_reagent(R, filling[R])
|
|
if(wrapped)
|
|
slot_flags = null
|
|
|
|
/obj/item/clothing/mask/chewable/equipped(var/mob/living/user, var/slot)
|
|
..()
|
|
if(slot == slot_wear_mask)
|
|
var/mob/living/carbon/human/C = user
|
|
if(C.check_has_mouth())
|
|
START_PROCESSING(SSprocessing, src)
|
|
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)
|
|
STOP_PROCESSING(SSprocessing, src)
|
|
..()
|
|
|
|
/obj/item/clothing/mask/chewable/Destroy()
|
|
. = ..()
|
|
STOP_PROCESSING(SSprocessing, src)
|
|
|
|
/obj/item/clothing/mask/chewable/proc/chew()
|
|
chewtime--
|
|
if(reagents && reagents.total_volume)
|
|
if(ishuman(loc))
|
|
var/mob/living/carbon/human/C = loc
|
|
if (src == C.wear_mask && C.check_has_mouth())
|
|
reagents.trans_to_mob(C, REM, CHEM_INGEST, 0.2)
|
|
else
|
|
STOP_PROCESSING(SSprocessing, src)
|
|
|
|
/obj/item/clothing/mask/chewable/process()
|
|
chew()
|
|
if(chewtime < 1)
|
|
spitout()
|
|
|
|
/obj/item/clothing/mask/chewable/tobacco
|
|
name = "wad"
|
|
desc = "A chewy wad of tobacco. Cut in long strands and treated with syrup so it doesn't taste like an ash-tray when you stuff it into your face."
|
|
throw_speed = 0.5
|
|
icon_state = "chew"
|
|
type_butt = /obj/item/trash/spitwad
|
|
w_class = 1
|
|
slot_flags = SLOT_EARS | SLOT_MASK
|
|
chem_volume = 50
|
|
chewtime = 300
|
|
brand = "tobacco"
|
|
|
|
|
|
/obj/item/clothing/mask/chewable/proc/spitout(var/transfer_color = 1, var/no_message = 0)
|
|
if(type_butt)
|
|
var/obj/item/butt = new type_butt(src.loc)
|
|
transfer_fingerprints_to(butt)
|
|
if(transfer_color)
|
|
butt.color = color
|
|
if(brand)
|
|
butt.desc += " This one is \a [brand]."
|
|
if(ismob(loc))
|
|
var/mob/living/M = loc
|
|
if(!no_message)
|
|
to_chat(M, span_notice("The [name] runs out of flavor."))
|
|
if(M.wear_mask)
|
|
M.remove_from_mob(src) //un-equip it so the overlays can update
|
|
M.update_inv_wear_mask(0)
|
|
if(!M.equip_to_slot_if_possible(butt, slot_wear_mask))
|
|
M.update_inv_l_hand(0)
|
|
M.update_inv_r_hand(1)
|
|
M.put_in_hands(butt)
|
|
STOP_PROCESSING(SSprocessing, src)
|
|
qdel(src)
|
|
|
|
/obj/item/clothing/mask/chewable/tobacco/cheap
|
|
name = "chewing tobacco"
|
|
desc = "A chewy wad of tobacco. Cut in long strands and treated with syrup so it tastes less like an ash-tray when you stuff it into your face."
|
|
filling = list(REAGENT_ID_NICOTINE = 2)
|
|
|
|
/obj/item/clothing/mask/chewable/tobacco/fine
|
|
name = "deluxe chewing tobacco"
|
|
desc = "A chewy wad of fine tobacco. Cut in long strands and treated with syrup so it doesn't taste like an ash-tray when you stuff it into your face."
|
|
filling = list(REAGENT_ID_NICOTINE = 3)
|
|
|
|
/obj/item/clothing/mask/chewable/tobacco/nico
|
|
name = "nicotine gum"
|
|
desc = "A chewy wad of synthetic rubber, laced with nicotine. Possibly the least disgusting method of nicotine delivery."
|
|
icon_state = "nic_gum"
|
|
type_butt = /obj/item/trash/spitgum
|
|
wrapped = TRUE
|
|
|
|
/obj/item/clothing/mask/chewable/tobacco/nico/Initialize(mapload)
|
|
. = ..()
|
|
reagents.add_reagent(REAGENT_ID_NICOTINE, 2)
|
|
color = reagents.get_color()
|
|
|
|
/obj/item/storage/chewables
|
|
name = "box of chewing wads master"
|
|
desc = "A generic brand of Waffle Co Wads, unflavored chews. Why do these exist?"
|
|
icon = 'icons/obj/cigarettes.dmi'
|
|
icon_state = "cigpacket"
|
|
item_state = "cigpacket"
|
|
drop_sound = 'sound/items/drop/shovel.ogg'
|
|
use_sound = 'sound/items/storage/pillbottle.ogg'
|
|
w_class = 2
|
|
throwforce = 2
|
|
slot_flags = SLOT_BELT
|
|
starts_with = list(/obj/item/clothing/mask/chewable/tobacco = 6)
|
|
|
|
/obj/item/storage/chewables/Initialize(mapload)
|
|
. = ..()
|
|
make_exact_fit()
|
|
|
|
//Tobacco Tins
|
|
|
|
/obj/item/storage/chewables/tobacco
|
|
name = "tin of Al Mamun Smooth chewing tobacco"
|
|
desc = "Packaged and shipped straight from Kishar, popularised by the biosphere farmers of Kanondaga."
|
|
icon_state = "chew_generic"
|
|
item_state = "cigpacket"
|
|
starts_with = list(/obj/item/clothing/mask/chewable/tobacco/cheap = 6)
|
|
storage_slots = 6
|
|
|
|
/obj/item/storage/chewables/tobacco/fine
|
|
name = "tin of Suamalie chewing tobacco"
|
|
desc = "Once reserved for the first-class tourists of Oasis, this premium blend has been released for the public to enjoy."
|
|
icon_state = "chew_fine"
|
|
item_state = "Dpacket"
|
|
starts_with = list(/obj/item/clothing/mask/chewable/tobacco/fine = 6)
|
|
|
|
/obj/item/storage/box/fancy/chewables/tobacco/nico
|
|
name = "box of Nico-Tine gum"
|
|
desc = "A government doctor approved brand of nicotine gum. Cut out the middleman for your addiction fix."
|
|
icon = 'icons/obj/cigarettes.dmi'
|
|
icon_state = "chew_nico"
|
|
item_state = "Epacket"
|
|
starts_with = list(/obj/item/clothing/mask/chewable/tobacco/nico = 6)
|
|
storage_slots = 6
|
|
drop_sound = 'sound/items/drop/box.ogg'
|
|
use_sound = 'sound/items/storage/box.ogg'
|
|
var/open = 0
|
|
var/open_state
|
|
var/closed_state
|
|
|
|
/obj/item/storage/box/fancy/chewables/tobacco/nico/Initialize(mapload)
|
|
if(!open_state)
|
|
open_state = "[initial(icon_state)]0"
|
|
if(!closed_state)
|
|
closed_state = "[initial(icon_state)]"
|
|
. = ..()
|
|
|
|
/obj/item/storage/box/fancy/chewables/tobacco/nico/update_icon()
|
|
cut_overlays()
|
|
if(open)
|
|
icon_state = open_state
|
|
if(contents.len >= 1)
|
|
add_overlay("chew_nico[contents.len]")
|
|
else
|
|
icon_state = closed_state
|
|
|
|
/obj/item/storage/box/fancy/chewables/tobacco/nico/open(mob/user as mob)
|
|
if(open)
|
|
return
|
|
open = TRUE
|
|
if(contents.len == 0)
|
|
icon_state = "[initial(icon_state)]_empty"
|
|
else
|
|
update_icon()
|
|
..()
|
|
|
|
/obj/item/storage/box/fancy/chewables/tobacco/nico/close(mob/user as mob)
|
|
open = FALSE
|
|
if(contents.len == 0)
|
|
icon_state = "[initial(icon_state)]_empty"
|
|
else
|
|
update_icon()
|
|
..()
|
|
|
|
/obj/item/clothing/mask/chewable/candy
|
|
name = "wad"
|
|
desc = "A chewy wad of wadding material."
|
|
throw_speed = 0.5
|
|
icon_state = "chew"
|
|
type_butt = /obj/item/trash/spitgum
|
|
w_class = 1
|
|
slot_flags = SLOT_EARS | SLOT_MASK
|
|
chem_volume = 50
|
|
chewtime = 300
|
|
filling = list(REAGENT_ID_SUGAR = 2)
|
|
|
|
/obj/item/clothing/mask/chewable/candy/gum
|
|
name = "chewing gum"
|
|
desc = "A chewy wad of fine synthetic rubber and artificial flavoring. Be sure to unwrap it, genius."
|
|
icon_state = "gum"
|
|
item_state = "gum"
|
|
wrapped = TRUE
|
|
|
|
/obj/item/clothing/mask/chewable/candy/gum/Initialize(mapload)
|
|
. = ..()
|
|
reagents.add_reagent(pick(REAGENT_ID_BANANA,REAGENT_ID_BERRYJUICE,REAGENT_ID_GRAPEJUICE,REAGENT_ID_LEMONJUICE,REAGENT_ID_LIMEJUICE,REAGENT_ID_ORANGEJUICE,REAGENT_ID_WATERMELONJUICE),10)
|
|
color = reagents.get_color()
|
|
update_icon()
|
|
|
|
/obj/item/storage/box/gum
|
|
name = "\improper Frooty-Choos flavored gum"
|
|
desc = "A small pack of chewing gum in various flavors."
|
|
description_fluff = "Frooty-Choos is NanoTrasen's top-selling brand of artificially flavoured fruit-adjacent non-swallowable chew-product. This extremely specific definition places sales figures safely away from competing 'gum' brands."
|
|
icon = 'icons/obj/food_snacks.dmi'
|
|
icon_state = "gum_pack"
|
|
item_state = "candy"
|
|
slot_flags = SLOT_EARS
|
|
w_class = 1
|
|
starts_with = list(/obj/item/clothing/mask/chewable/candy/gum = 5)
|
|
can_hold = list(/obj/item/clothing/mask/chewable/candy/gum,
|
|
/obj/item/trash/spitgum)
|
|
use_sound = 'sound/items/drop/paper.ogg'
|
|
drop_sound = 'sound/items/drop/wrapper.ogg'
|
|
max_storage_space = 5
|
|
foldable = null
|
|
trash = /obj/item/trash/gumpack
|
|
|
|
/obj/item/clothing/mask/chewable/candy/lolli
|
|
name = "lollipop"
|
|
desc = "A simple artificially flavored sphere of sugar on a handle, colloquially known as a sucker. Allegedly one is born every minute. Make sure to unwrap it, genius."
|
|
type_butt = /obj/item/trash/lollibutt
|
|
icon_state = "lollipop"
|
|
item_state = "lollipop"
|
|
wrapped = TRUE
|
|
var/list/victims = null // CHOMPAdd
|
|
|
|
/obj/item/clothing/mask/chewable/candy/lolli/process()
|
|
chew()
|
|
if(chewtime < 1)
|
|
spitout(0)
|
|
|
|
// CHOMPAdd Start
|
|
|
|
/obj/item/clothing/mask/chewable/candy/lolli/container_resist(mob/living/M)
|
|
if(istype(M, /mob/living/voice)) return
|
|
if(victims)
|
|
victims -= M
|
|
to_chat(M, span_warning("You manage to pull yourself free of \the [src]."))
|
|
M.forceMove(get_turf(src))
|
|
|
|
/obj/item/clothing/mask/chewable/candy/lolli/chew()
|
|
if(victims && victims.len && prob(2))
|
|
for(var/mob/living/F in victims)
|
|
var/message = pick(
|
|
"The tongue swishes you around and presses you against the candy!",
|
|
"You get tossed about in the mouth, between candy and tongue!",
|
|
"The sweet drool of your captor permeates you...",
|
|
"The candy sticks to you, not allowing you to leave the mouth at all!",
|
|
"You get squeezed under the candy, against the tongue!")
|
|
to_chat(F, span_notice(message))
|
|
return ..()
|
|
|
|
/obj/item/clothing/mask/chewable/candy/lolli/spitout()
|
|
if(victims && victims.len)
|
|
var/mob/living/M = loc
|
|
if(M.can_be_drop_pred && M.food_vore && M.vore_selected)
|
|
for(var/mob/living/F in victims)
|
|
if(!F.can_be_drop_prey || !F.food_vore)
|
|
to_chat(F, span_warning("You manage to pull yourself free of \the [src] at the last second!"))
|
|
to_chat(M, span_notice("[F] barely escapes from your mouth!"))
|
|
F.forceMove(get_turf(src))
|
|
else
|
|
F.forceMove(M.vore_selected)
|
|
victims -= F
|
|
return ..()
|
|
|
|
/obj/item/clothing/mask/chewable/candy/lolli/attackby(obj/item/W as obj, mob/user as mob)
|
|
if(istype(W, /obj/item/holder))
|
|
if(!(istype(W, /obj/item/holder/micro) || istype(W, /obj/item/holder/mouse)))
|
|
. = ..()
|
|
return
|
|
|
|
if(wrapped)
|
|
to_chat(user, span_warning("You cannot stick [W] to \the [src] without unwrapping it!"))
|
|
return
|
|
|
|
var/obj/item/holder/H = W
|
|
|
|
if(!victims)
|
|
victims = list()
|
|
|
|
var/mob/living/M = H.held_mob
|
|
|
|
M.forceMove(src)
|
|
H.held_mob = null
|
|
user.drop_from_inventory(H)
|
|
qdel(H)
|
|
|
|
victims += M
|
|
|
|
to_chat(user, span_notice("You stick [M] to \the [src]."))
|
|
to_chat(M, span_warning("[user] sticks you to \the [src]!"))
|
|
return
|
|
|
|
/obj/item/clothing/mask/chewable/candy/lolli/examine(mob/user)
|
|
. = ..()
|
|
if(Adjacent(user))
|
|
if(victims && victims.len)
|
|
. += span_notice("It has [english_list(victims)] stuck on it.")
|
|
|
|
// CHOMPAdd End
|
|
|
|
/obj/item/clothing/mask/chewable/candy/lolli/Initialize(mapload)
|
|
. = ..()
|
|
reagents.add_reagent(pick(REAGENT_ID_BANANA,REAGENT_ID_BERRYJUICE,REAGENT_ID_GRAPEJUICE,REAGENT_ID_LEMONJUICE,REAGENT_ID_LIMEJUICE,REAGENT_ID_ORANGEJUICE,REAGENT_ID_WATERMELONJUICE),20)
|
|
color = reagents.get_color()
|
|
update_icon()
|
|
|
|
/obj/item/storage/box/pocky
|
|
name = "\improper Totemo yoi Pocky"
|
|
desc = "A bundle of chocolate-coated bisquit sticks."
|
|
icon = 'icons/obj/food_snacks.dmi'
|
|
icon_state = "pockys"
|
|
item_state = "pocky"
|
|
w_class = 1
|
|
starts_with = list(/obj/item/clothing/mask/chewable/candy/pocky = 8)
|
|
can_hold = list(/obj/item/clothing/mask/chewable/candy/pocky)
|
|
use_sound = 'sound/items/drop/paper.ogg'
|
|
drop_sound = 'sound/items/drop/wrapper.ogg'
|
|
max_storage_space = 8
|
|
foldable = null
|
|
trash = /obj/item/trash/pocky
|
|
|
|
/obj/item/clothing/mask/chewable/candy/pocky
|
|
name = "chocolate pocky"
|
|
desc = "A chocolate-coated biscuit stick."
|
|
icon_state = "pockystick"
|
|
item_state = "pocky"
|
|
filling = list(REAGENT_ID_SUGAR = 2, REAGENT_ID_CHOCOLATE = 5)
|
|
type_butt = null
|
|
|
|
/obj/item/clothing/mask/chewable/candy/pocky/process()
|
|
chew()
|
|
if(chewtime < 1)
|
|
if(ismob(loc))
|
|
to_chat(loc, span_notice("There's no more of \the [name] left!"))
|
|
spitout(0)
|