whole lotta stuff

This commit is contained in:
Metis
2024-09-12 23:53:35 -04:00
parent f268e5655f
commit 8fd779ef02
232 changed files with 8793 additions and 0 deletions
@@ -0,0 +1,34 @@
/obj/item/bluespace_belt
name = "bluespace belt"
desc = "A belt made using bluespace technology. The power of space and time, used to hide the fact you are fat."
icon = 'GainStation13/icons/obj/clothing/bluespace_belt.dmi'
icon_state = "bluespace_belt"
item_state = "bluespace_belt"
slot_flags = ITEM_SLOT_BELT
equip_sound = 'sound/items/equip/toolbelt_equip.ogg'
drop_sound = 'sound/items/handling/toolbelt_drop.ogg'
pickup_sound = 'sound/items/handling/toolbelt_pickup.ogg'
/obj/item/bluespace_belt/equipped(mob/user, slot)
..()
if(!iscarbon(user))
return
var/mob/living/carbon/U = user
if(slot == SLOT_BELT)
to_chat(U, "<span class='notice'>You put the belt around your waist and your mass begins to shrink...</span>")
U.hider_add(src)
else
to_chat(user, "<span class='notice'>The belt is opened, letting your mass flow out!</span>")
U.hider_remove(src)
/obj/item/bluespace_belt/dropped(mob/user)
..()
if(!iscarbon(user))
return
var/mob/living/carbon/U = user
to_chat(U, "<span class='warning'>The belt is opened, letting your mass flow out!</span>")
U.hider_remove(src)
/obj/item/bluespace_belt/proc/fat_hide(var/mob/living/carbon/user)
return -(user.fatness_real - 1)
+30
View File
@@ -0,0 +1,30 @@
/obj/item/integrated_circuit/input/fat_scanner
name = "integrated body fat analyzer"
desc = "A very small version of the common medical analyser adjusted to scan a target's weight."
icon_state = "medscan"
complexity = 4
inputs = list("target" = IC_PINTYPE_REF)
outputs = list(
"weight (pounds)" = IC_PINTYPE_NUMBER,
"weight (BFI)" = IC_PINTYPE_NUMBER
)
activators = list("scan" = IC_PINTYPE_PULSE_IN, "on scanned" = IC_PINTYPE_PULSE_OUT)
spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH
power_draw_per_use = 40
/obj/item/integrated_circuit/input/fat_scanner/do_work()
var/mob/living/carbon/fatty = get_pin_data_as_type(IC_INPUT, 1, /mob/living)
if(!istype(fatty)) //Invalid input
return
if(!fatty.Adjacent(get_turf(src))) // Like normal analysers, it can't be used at range.
return
var/weight_in_pounds = fatty.calculate_weight_in_pounds()
var/weight_in_fatness = fatty.fatness
set_pin_data(IC_OUTPUT, 1, weight_in_pounds)
set_pin_data(IC_OUTPUT, 2, weight_in_fatness)
push_data()
activate_pin(2)
+93
View File
@@ -0,0 +1,93 @@
/obj/item/nullrod/attack(mob/target, mob/living/user)
. = ..()
if(iscarbon(target))
var/mob/living/carbon/T = target
for(var/hider in T.fat_hiders)
if(isitem(hider))
var/obj/item/O = hider
T.dropItemToGround(O)
if(T.cursed_fat == 1)
T.cursed_fat = 0
T.fattening_steps_left = 0
/obj/item/storage/book/bible/attack(mob/living/M, mob/living/carbon/human/user, heal_mode = TRUE)
. = ..()
if(iscarbon(M))
var/mob/living/carbon/T = M
for(var/hider in T.fat_hiders)
if(isitem(hider))
var/obj/item/O = hider
T.dropItemToGround(O)
if(T.cursed_fat == 1)
T.cursed_fat = 0
T.fattening_steps_left = 0
/datum/reagent/water/holywater/on_mob_life(mob/living/carbon/M)
. = ..()
for(var/hider in M.fat_hiders)
if(isitem(hider))
var/obj/item/O = hider
M.dropItemToGround(O)
if(M.cursed_fat == 1)
M.cursed_fat = 0
M.fattening_steps_left = 0
/obj/item/nullrod/dream_breaker
name = "dream breaker"
desc = "A cross-shaped weapon emitting a faint, dream-like light. Its blows will wake any dreamer."
icon = 'GainStation13/icons/obj/dreambreaker.dmi'
icon_state = "dreambreaker"
item_state = "dreambreaker"
lefthand_file = 'GainStation13/icons/obj/dreambreaker_left.dmi'
righthand_file = 'GainStation13/icons/obj/dreambreaker_right.dmi'
actions_types = list(/datum/action/item_action/db_slide)
var/slidedistance = 2
var/slidespeed = 3
var/stamina_cost = 34
force = 20
throwforce = 25
throw_range = 10
throw_speed = 2
var/click_delay = 2
slot_flags = ITEM_SLOT_BACK
sharpness = IS_BLUNT
w_class = WEIGHT_CLASS_BULKY
attack_verb = list("smashed", "whacked", "smacked", "bonked")
hitsound = "swing_hit"
var/l_range = 3
var/l_power = 0.8
light_color = "#FFCC66"
/obj/item/nullrod/dream_breaker/Initialize(mapload)
. = ..()
set_light(l_range, l_power, light_color)
/obj/item/nullrod/dream_breaker/attack(mob/living/target, mob/living/user)
. = ..()
user.changeNext_move(CLICK_CD_MELEE * click_delay)
/obj/item/nullrod/dream_breaker/ui_action_click(mob/user, action)
if(!isliving(user))
return
var/atom/target = get_edge_target_turf(user, user.dir) //gets the user's direction
user.resting = TRUE
if(user:getStaminaLoss() < 100)
if (user.throw_at(target, slidedistance, slidespeed, spin = FALSE, diagonals_first = TRUE))
user:adjustStaminaLoss(stamina_cost) //reduce stamina loss by 0.3 per tick, 6 per 2 seconds
user.visible_message("<span class='warning'>[usr] slides forward!</span>")
user.resting = FALSE
else
to_chat(user, "<span class='warning'>Something prevents you from sliding forward!</span>")
else
to_chat(user, "<span class='warning'>You fall down when attempting to slide!</span>")
/datum/action/item_action/db_slide
name = "Dream Breaker Slide"
desc = "Use dream-like atheletics to slide forward, but don't wear yourself out!."
icon_icon = 'GainStation13/icons/obj/dreambreaker.dmi'
button_icon_state = "dreambreaker"
+171
View File
@@ -0,0 +1,171 @@
/////GS13 - miscellanous items. If it's a small item, a container or something
/////then it should land here, instead of making a seperate .dm file
//fatoray research scraps (maintloot)
/obj/item/trash/fatoray_scrap1
name = "raygun scraps"
icon = 'GainStation13/icons/obj/fatoray.dmi'
icon_state = "fatoray_scrap1"
desc = "Small parts that seemingly once belonged to some sort of a raygun."
/obj/item/trash/fatoray_scrap2
name = "raygun scraps"
icon = 'GainStation13/icons/obj/fatoray.dmi'
icon_state = "fatoray_scrap2"
desc = "Small parts that seemingly once belonged to some sort of a raygun."
// GS13 fatty liquid beakers defs, for admin stuff and mapping junk
/obj/item/reagent_containers/glass/beaker/lipoifier
list_reagents = list(/datum/reagent/consumable/lipoifier = 50)
/obj/item/reagent_containers/glass/beaker/cornoil
list_reagents = list(/datum/reagent/consumable/cornoil = 50)
/obj/item/reagent_containers/glass/beaker/blueberry_juice
list_reagents = list(/datum/reagent/blueberry_juice = 50)
/obj/item/reagent_containers/glass/beaker/fizulphite
list_reagents = list(/datum/reagent/consumable/fizulphite = 50)
/obj/item/reagent_containers/glass/beaker/extilphite
list_reagents = list(/datum/reagent/consumable/extilphite = 50)
/obj/item/reagent_containers/glass/beaker/calorite_blessing
list_reagents = list(/datum/reagent/consumable/caloriteblessing = 50)
/obj/item/reagent_containers/glass/beaker/flatulose
list_reagents = list(/datum/reagent/consumable/flatulose = 50)
//blueberry gum snack
/obj/item/reagent_containers/food/snacks/blueberry_gum
name = "blueberry gum"
icon = 'GainStation13/icons/obj/gum.dmi'
icon_state = "gum_wrapped"
desc = "Doesn't cause anything more than some discoloration... probably."
trash = /obj/item/trash/blueberry_gum
list_reagents = list(/datum/reagent/blueberry_juice = 50)
bitesize = 5
filling_color = "#001aff"
tastes = list("blueberry gum" = 1)
foodtype = FRUIT
price = 5
//blueberry gum trash
/obj/item/trash/blueberry_gum
name = "chewed gum"
icon = 'GainStation13/icons/obj/gum.dmi'
icon_state = "gum_chewed"
// nutriment pump turbo
/obj/item/autosurgeon/nutripump_turbo
desc = "A single use autosurgeon that contains a turbo version of the nutriment pump. A screwdriver can be used to remove it, but implants can't be placed back in."
uses = 1
starting_organ = /obj/item/organ/cyberimp/chest/nutriment/turbo
/obj/item/autosurgeon/fat_mobility
desc = "A single use autosurgeon that contains a mobility nanite core. A screwdriver can be used to remove it, but implants can't be placed back in."
uses = 1
starting_organ = /obj/item/organ/cyberimp/chest/mobility
//fast food restaurant - closed / open signs
/obj/item/holosign_creator/restaurant
name = "Holosign Projector - Restaurant Adverts"
desc = "A holo-sign maker, used for placing signs that advertises the local fast food restaurant."
icon = 'GainStation13/icons/obj/holosign.dmi'
icon_state = "holo_fastfood"
holosign_type = /obj/structure/holosign/restaurant
creation_time = 0
max_signs = 6
/obj/item/holosign_creator/closed
name = "Holosign Projector - Closing Sign"
desc = "A holo-sign maker, used for placing signs that inform people of a location being closed off."
icon = 'GainStation13/icons/obj/holosign.dmi'
icon_state = "holo_closed"
holosign_type = /obj/structure/holosign/barrier/closed
creation_time = 0
max_signs = 6
//holosigns used by the holosign creators
/obj/structure/holosign/restaurant
name = "The Restaurant is OPEN! Come visit!"
desc = "A holographic projector that displays a sign advertising the nearby Fast Food Restaurant."
icon = 'GainStation13/icons/obj/holosign.dmi'
icon_state = "holosign_ad"
/obj/structure/holosign/barrier/closed
name = "This Location is Closed!"
desc = "A short holographic barrier used to close off areas. Can be passed by walking."
icon = 'GainStation13/icons/obj/holosign.dmi'
icon_state = "holosign_closed"
//ID for fastfood wagies so they can use the tele
/obj/item/card/id/silver/restaurant
name = "silver identification card"
desc = "A silver ID, given to the GATO's fast food restaurant workers. Doesn't grant much besides teleporter access."
access = list(ACCESS_MAINT_TUNNELS, ACCESS_TELEPORTER)
//gato decal, should be moved elsewhere tbh
/obj/effect/decal/big_gato //96x96 px sprite
name = "GATO"
desc = "Your employer! Probably."
icon = 'GainStation13/icons/turf/96x96.dmi'
icon_state = "gato"
layer = ABOVE_OPEN_TURF_LAYER
pixel_x = -32
pixel_y = -32
/obj/effect/decal/medium_gato //64x64 px sprite
name = "GATO"
desc = "Your employer! Probably."
icon = 'GainStation13/icons/turf/64x64.dmi'
icon_state = "gato"
layer = ABOVE_OPEN_TURF_LAYER
pixel_y = -16
pixel_x = -16
//collar voice modulators, based on cow/pig masks
/obj/item/clothing/mask/pig/gag //this one only lets you say "oink" and similar
name = "Voice modulator - pig"
desc = "A small gag, used to silence people in a rather 'original' way."
icon_state = "ballgag"
item_state = "ballgag"
flags_inv = HIDEFACE
clothing_flags = VOICEBOX_TOGGLABLE
w_class = WEIGHT_CLASS_SMALL
modifies_speech = TRUE
/obj/item/clothing/mask/cowmask/gag //this one only lets you say "moo" and similar
name = "Voice modulator - cow"
desc = "A small gag, used to silence people in a rather 'original' way."
icon = 'icons/obj/clothing/masks.dmi'
icon_state = "ballgag"
item_state = "ballgag"
flags_inv = HIDEFACE
/obj/item/service_sign
name = "service sign"
desc = "A sign that reads 'closed'"
icon = 'GainStation13/icons/obj/service_sign.dmi'
icon_state = "sign_closed"
/obj/item/service_sign/attack_self()
if(icon_state == "sign_closed")
icon_state = "sign_open"
desc = "A sign that reads 'open'"
else
icon_state = "sign_closed"
desc = "A sign that reads 'closed'"
/obj/item/trash/odd_disk
name = "odd disk"
icon = 'icons/obj/module.dmi'
icon_state = "datadisk0"
desc = "A dusty disk, desconstruction will be needed to recover data."
@@ -0,0 +1,47 @@
/obj/item/clothing/accessory/pride_pin
name = "pride pin"
desc = "A pride pin."
icon_state = "pride"
item_color = "pride"
/obj/item/clothing/accessory/pride_pin/bi
name = "bisexual pride pin"
desc = "A bisexual pride pin."
icon_state = "pride_bi"
item_color = "pride_bi"
/obj/item/clothing/accessory/pride_pin/trans
name = "transgender pride pin"
desc = "A transgender pride pin."
icon_state = "pride_trans"
item_color = "pride_trans"
/obj/item/clothing/accessory/pride_pin/ace
name = "asexual pride pin"
desc = "A asexual pride pin."
icon_state = "pride_ace"
item_color = "pride_ace"
/obj/item/clothing/accessory/pride_pin/enby
name = "non-binary pride pin"
desc = "A non-binary pride pin."
icon_state = "pride_enby"
item_color = "pride_enby"
/obj/item/clothing/accessory/pride_pin/pan
name = "pansexual pride pin"
desc = "A pansexual pride pin."
icon_state = "pride_pan"
item_color = "pride_pan"
/obj/item/clothing/accessory/pride_pin/lesbian
name = "lesbian pride pin"
desc = "A lesbian pride pin."
icon_state = "pride_lesbian"
item_color = "pride_lesbian"
/obj/item/clothing/accessory/pride_pin/intersex
name = "intersex pride pin"
desc = "A intersex pride pin."
icon_state = "pride_intersex"
item_color = "pride_intersex"
@@ -0,0 +1,79 @@
/obj/item/assembly/infra/fat
name = "fatness infrared emitter"
desc = "Emits a visible or invisible beam and is triggered when the beam is interrupted. This one checks if the person tripping it is above or below a certain level of fatness."
var/fatness_to_trigger = 0
var/trigger_below = FALSE
/obj/item/assembly/infra/fat/examine(mob/user)
. = ..()
. += "<span class='notice'>The infrared trigger is set to trigger when the target is [trigger_below?"above":"below"] being [get_fatness_level_name(fatness_to_trigger)].</span>"
/obj/item/assembly/infra/fat/ui_interact(mob/user)//TODO: change this this to the wire control panel
if(!is_secured(user))
return
user.set_machine(src)
var/dat = "<TT><B>Fatness Infrared Laser</B></TT>"
dat += "<BR><B>Status</B>: [on ? "<A href='?src=[REF(src)];state=0'>On</A>" : "<A href='?src=[REF(src)];state=1'>Off</A>"]"
dat += "<BR><B>Visibility</B>: [visible ? "<A href='?src=[REF(src)];visible=0'>Visible</A>" : "<A href='?src=[REF(src)];visible=1'>Invisible</A>"]"
dat += "<BR><B>Fatness level to trigger:</B><A href='?src=[REF(src)];fatness_to_trigger=1'>[get_fatness_level_name(fatness_to_trigger)]</A>"
dat += "<BR><B>Trigger above or below the target fatness level:</B><A href='?src=[REF(src)];trigger_below=1'>[trigger_below ? "Below" : "Above"]</A>"
dat += "<BR><BR><A href='?src=[REF(src)];refresh=1'>Refresh</A>"
dat += "<BR><BR><A href='?src=[REF(src)];close=1'>Close</A>"
user << browse(dat, "window=infra")
onclose(user, "infra")
return
/obj/item/assembly/infra/fat/Topic(href, href_list)
..()
if(href_list["trigger_below"])
trigger_below = !(trigger_below)
update_icon()
refreshBeam()
if(href_list["fatness_to_trigger"])
var/fatness_type = input(usr,
"What level of fatness do you wish to alert above/under at?",
src, "None") as null|anything in list(
"None", "Fat", "Fatter", "Very Fat", "Obese", "Morbidly Obese", "Extremely Obese", "Barely Mobile", "Immobile", "Blob")
if(!fatness_type)
return
var/fatness_amount = 0
switch(fatness_type)
if("Fat")
fatness_amount = FATNESS_LEVEL_FAT
if("Fatter")
fatness_amount = FATNESS_LEVEL_FATTER
if("Very Fat")
fatness_amount = FATNESS_LEVEL_VERYFAT
if("Obese")
fatness_amount = FATNESS_LEVEL_OBESE
if("Morbidly Obese")
fatness_amount = FATNESS_LEVEL_MORBIDLY_OBESE
if("Extremely Obese")
fatness_amount = FATNESS_LEVEL_EXTREMELY_OBESE
if("Barely Mobile")
fatness_amount = FATNESS_LEVEL_BARELYMOBILE
if("Immobile")
fatness_amount = FATNESS_LEVEL_IMMOBILE
if("Blob")
fatness_amount = FATNESS_LEVEL_BLOB
fatness_to_trigger = fatness_amount
update_icon()
refreshBeam()
/obj/item/assembly/infra/fat/trigger_beam(atom/movable/AM, turf/location)
var/mob/living/carbon/crossed_fatty = AM
if(!istype(crossed_fatty))
return FALSE
if(trigger_below && (crossed_fatty.fatness >= fatness_to_trigger))
return FALSE
if(!trigger_below && (crossed_fatty.fatness < fatness_to_trigger))
return FALSE
return ..() // I love using inheritence so much.