diff --git a/hyperstation/code/modules/client/loadout/gloves.dm b/hyperstation/code/modules/client/loadout/gloves.dm new file mode 100644 index 00000000..ad12c3e3 --- /dev/null +++ b/hyperstation/code/modules/client/loadout/gloves.dm @@ -0,0 +1,11 @@ +/datum/gear/syntech/ring + name = "Normalizer Ring" + category = SLOT_GLOVES + path = /obj/item/clothing/gloves/ring/syntech + cost = 6 + +/datum/gear/syntech/band + name = "Normalizer Band" + category = SLOT_GLOVES + path = /obj/item/clothing/gloves/ring/syntech/band + cost = 6 diff --git a/hyperstation/code/modules/client/loadout/neck.dm b/hyperstation/code/modules/client/loadout/neck.dm new file mode 100644 index 00000000..a21c8743 --- /dev/null +++ b/hyperstation/code/modules/client/loadout/neck.dm @@ -0,0 +1,17 @@ +/datum/gear/syntech/pendant + name = "Normalizer Pendant" + category = SLOT_NECK + path = /obj/item/clothing/neck/syntech + cost = 6 + +/datum/gear/syntech/choker + name = "Normalizer Choker" + category = SLOT_NECK + path = /obj/item/clothing/neck/syntech/choker + cost = 6 + +/datum/gear/syntech/collar + name = "Normalizer Collar" + category = SLOT_NECK + path = /obj/item/clothing/neck/syntech/collar + cost = 6 diff --git a/hyperstation/code/modules/clothing/sizeaccessories.dm b/hyperstation/code/modules/clothing/sizeaccessories.dm new file mode 100644 index 00000000..9b617ee4 --- /dev/null +++ b/hyperstation/code/modules/clothing/sizeaccessories.dm @@ -0,0 +1,115 @@ +//Clothing vars and procs +/obj/item/clothing + var/normalize_size = RESIZE_NORMAL //This number is used as the "normal" height people will be given when wearing one of these accessories + var/natural_size = null //The value of the wearer's body_size var in prefs. Unused for now. + var/recorded_size = null //the user's height prior to equipping + +//For applying a normalization +/obj/item/clothing/proc/normalize_mob_size(mob/living/carbon/human/H) + if(H.normalized) //First we make a check to see if they're already normalized, from wearing another article of SynTech jewelry + to_chat(H, "This accessory buzzes, being overwritten by another.") + playsound(H, 'sound/machines/buzz-sigh.ogg', 50, 1) + return + recorded_size = H.get_effective_size() //If not, grab their current size + playsound(H, 'sound/effects/magic.ogg', 50, 1) + flash_lighting_fx(3, 3, LIGHT_COLOR_PURPLE) + H.visible_message("A flash of purple light engulfs [H], before they change to normal!","You feel warm for a moment, before everything scales to your size...") + H.resize(normalize_size) //Then apply the size + H.normalized = TRUE //And set normalization + +//For removing a normalization, and reverting back to normal +/obj/item/clothing/proc/denormalize_mob_size(mob/living/carbon/human/H) + if(H.normalized) //sanity check + playsound(H,'sound/weapons/emitter2.ogg', 50, 1) + flash_lighting_fx(3, 3, LIGHT_COLOR_YELLOW) + H.visible_message("Golden light engulfs [H], and they shoot back to their default height!","Energy rushes through your body, and you return to normal.") + H.resize(recorded_size) + H.normalized = FALSE + + +//For storing normalization on mobs +/mob/living + var/normalized = FALSE + //normalized is a check for instances where more than one accessory of jewelry is worn. For all intensive purposes, only the first worn accessory stores the user's size. + //Anything else is just extra. + +//Clothing below. Code could be compressed more, but until I make jewelry slots, this will do. -Dahl + +//GLOVE SLOT ITEMS... +//SynTech ring +/obj/item/clothing/gloves/ring/syntech + name = "normalizer ring" + desc = "An expensive, shimmering SynTech ring gilded with golden GATO markings. It will 'normalize' the size of the user to a specified height approved for work-conditions, as long as it is equipped. The artificial violet gem inside twinkles ominously." + icon = 'hyperstation/icons/obj/clothing/sizeaccessories.dmi' + icon_state = "ring" + item_state = "sring" //No use in a unique sprite since it's just one pixel + w_class = WEIGHT_CLASS_TINY + body_parts_covered = 0 + transfer_prints = TRUE + strip_delay = 40 + //These are already defined under the parent ring, but I wanna leave em here for reference purposes + +//For glove slots +/obj/item/clothing/gloves/ring/syntech/equipped(mob/living/user, slot) + if(ishuman(user)) + var/mob/living/carbon/human/human_target = user + if(slot == SLOT_GLOVES) + + if(human_target.custom_body_size) + normalize_mob_size(human_target) + +/obj/item/clothing/gloves/ring/syntech/dropped(mob/living/user, slot) + if(ishuman(user)) + var/mob/living/carbon/human/human_target = user + + if(human_target.normalized) + denormalize_mob_size(human_target) + + + +//SynTech Wristband +/obj/item/clothing/gloves/ring/syntech/band + name = "normalizer wristband" + desc = "An expensive technological wristband cast in SynTech purples with shimmering GATO hues. It will 'normalize' the size of the user to a specified height for approved work-conditions, as long as it is equipped. There is a small screen buzzing with information." + icon_state = "wristband" + item_state = "syntechband" + + +//NECK SLOT ITEMS... +//Syntech Pendant +/obj/item/clothing/neck/syntech + name = "normalizer pendant" + desc = "A vibrant violet jewel cast in silvery-gold metals, sporting the elegance of GATO with SynTech prowess. It will 'normalize' the size of the user to a specified height for approved work-conditions, as long as it is equipped. The artificial violet gem inside twinkles ominously." + icon = 'hyperstation/icons/obj/clothing/sizeaccessories.dmi' + icon_state = "pendant" + item_state = "pendant" + +//For neck items +/obj/item/clothing/neck/syntech/equipped(mob/living/user, slot) + if(ishuman(user)) + var/mob/living/carbon/human/human_target = user + if(slot == SLOT_NECK) + + if(human_target.custom_body_size) + normalize_mob_size(human_target) + +/obj/item/clothing/neck/syntech/dropped(mob/living/user, slot) + if(ishuman(user)) + var/mob/living/carbon/human/human_target = user + + if(human_target.normalized) + denormalize_mob_size(human_target) + +//Syntech Choker +/obj/item/clothing/neck/syntech/choker + name = "normalizer choker" + desc = "A sleek, tight-fitting choker embezzled with silver to gold, adorned with vibrant purple studs; combined technology of GATO and SynTech. It will 'normalize' the size of the user to a specified height for approved work-conditions, as long as it is equipped. There is a small screen buzzing with information." + icon_state = "choker" + item_state = "collar" + +//Syntech Collar +/obj/item/clothing/neck/syntech/collar + name = "normalizer collar" + desc = "A cute pet collar, technologically designed with vibrant purples and smooth silvers. There is a small gem bordered by gold at the front, reading 'SYNTECH' engraved within the metal. It will 'normalize' the size of the user to a specified height for approved work-conditions, as long as it is equipped. The artificial violet gem inside twinkles ominously." + icon_state = "collar" + item_state = "collar" diff --git a/hyperstation/icons/obj/clothing/sizeaccessories.dmi b/hyperstation/icons/obj/clothing/sizeaccessories.dmi new file mode 100644 index 00000000..b9079b35 Binary files /dev/null and b/hyperstation/icons/obj/clothing/sizeaccessories.dmi differ diff --git a/tgstation.dme b/tgstation.dme index bc359fba..b6c4a58a 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -6,6 +6,253 @@ // BEGIN_FILE_DIR #define FILE_DIR . +#define FILE_DIR "code" +#define FILE_DIR "code/modules" +#define FILE_DIR "code/modules/research" +#define FILE_DIR "code/modules/research/xenoarch" +#define FILE_DIR "code/modules/research/xenoarch/xenobotany" +#define FILE_DIR "code/modules/research/xenoarch/xenobotany/icons" +#define FILE_DIR "config" +#define FILE_DIR "config/jukebox_music" +#define FILE_DIR "config/jukebox_music/sounds" +#define FILE_DIR "config/title_screens" +#define FILE_DIR "GainStation13" +#define FILE_DIR "GainStation13/icons" +#define FILE_DIR "GainStation13/icons/mob" +#define FILE_DIR "GainStation13/icons/mob/uniforms" +#define FILE_DIR "GainStation13/icons/obj" +#define FILE_DIR "GainStation13/icons/obj/clothing" +#define FILE_DIR "GainStation13/icons/obj/lavaland_demone" +#define FILE_DIR "GainStation13/icons/obj/spells" +#define FILE_DIR "GainStation13/icons/obj/sugarland" +#define FILE_DIR "GainStation13/icons/turf" +#define FILE_DIR "GainStation13/sound" +#define FILE_DIR "GainStation13/sound/voice" +#define FILE_DIR "goon" +#define FILE_DIR "goon/icons" +#define FILE_DIR "goon/icons/obj" +#define FILE_DIR "goon/sound" +#define FILE_DIR "goon/sound/effects" +#define FILE_DIR "goon/sound/machinery" +#define FILE_DIR "html" +#define FILE_DIR "hyperstation" +#define FILE_DIR "hyperstation/icons" +#define FILE_DIR "hyperstation/icons/chat" +#define FILE_DIR "hyperstation/icons/decals" +#define FILE_DIR "hyperstation/icons/effects" +#define FILE_DIR "hyperstation/icons/mob" +#define FILE_DIR "hyperstation/icons/mob/clothes" +#define FILE_DIR "hyperstation/icons/mobs" +#define FILE_DIR "hyperstation/icons/mobs/dancer" +#define FILE_DIR "hyperstation/icons/obj" +#define FILE_DIR "hyperstation/icons/obj/cargo" +#define FILE_DIR "hyperstation/icons/obj/cargo/sweatshop" +#define FILE_DIR "hyperstation/icons/obj/clothing" +#define FILE_DIR "hyperstation/icons/obj/genitals" +#define FILE_DIR "hyperstation/icons/obj/machinery" +#define FILE_DIR "hyperstation/icons/obj/structures" +#define FILE_DIR "hyperstation/sound" +#define FILE_DIR "hyperstation/sound/ambience" +#define FILE_DIR "hyperstation/sound/creatures" +#define FILE_DIR "hyperstation/sound/creatures/mimic" +#define FILE_DIR "hyperstation/sound/effects" +#define FILE_DIR "hyperstation/sound/effects/rbmk" +#define FILE_DIR "hyperstation/sound/effects/ship" +#define FILE_DIR "hyperstation/sound/effects/ship/freespace2" +#define FILE_DIR "hyperstation/sound/effects/ship/reactor" +#define FILE_DIR "hyperstation/sound/halflife" +#define FILE_DIR "hyperstation/sound/machines" +#define FILE_DIR "hyperstation/sound/machines/sm" +#define FILE_DIR "hyperstation/sound/machines/sm/accent" +#define FILE_DIR "hyperstation/sound/machines/sm/accent/normal" +#define FILE_DIR "hyperstation/sound/misc" +#define FILE_DIR "icons" +#define FILE_DIR "icons/ass" +#define FILE_DIR "icons/effects" +#define FILE_DIR "icons/mecha" +#define FILE_DIR "icons/minimaps" +#define FILE_DIR "icons/misc" +#define FILE_DIR "icons/mob" +#define FILE_DIR "icons/mob/actions" +#define FILE_DIR "icons/mob/augmentation" +#define FILE_DIR "icons/mob/inhands" +#define FILE_DIR "icons/mob/inhands/antag" +#define FILE_DIR "icons/mob/inhands/equipment" +#define FILE_DIR "icons/mob/inhands/misc" +#define FILE_DIR "icons/mob/inhands/weapons" +#define FILE_DIR "icons/mob/jungle" +#define FILE_DIR "icons/mob/large-worn-icons" +#define FILE_DIR "icons/mob/large-worn-icons/64x64" +#define FILE_DIR "icons/mob/lavaland" +#define FILE_DIR "icons/obj" +#define FILE_DIR "icons/obj/assemblies" +#define FILE_DIR "icons/obj/atmospherics" +#define FILE_DIR "icons/obj/atmospherics/components" +#define FILE_DIR "icons/obj/atmospherics/pipes" +#define FILE_DIR "icons/obj/clothing" +#define FILE_DIR "icons/obj/doors" +#define FILE_DIR "icons/obj/doors/airlocks" +#define FILE_DIR "icons/obj/doors/airlocks/abductor" +#define FILE_DIR "icons/obj/doors/airlocks/centcom" +#define FILE_DIR "icons/obj/doors/airlocks/clockwork" +#define FILE_DIR "icons/obj/doors/airlocks/cult" +#define FILE_DIR "icons/obj/doors/airlocks/cult/runed" +#define FILE_DIR "icons/obj/doors/airlocks/cult/unruned" +#define FILE_DIR "icons/obj/doors/airlocks/external" +#define FILE_DIR "icons/obj/doors/airlocks/glass_large" +#define FILE_DIR "icons/obj/doors/airlocks/hatch" +#define FILE_DIR "icons/obj/doors/airlocks/highsec" +#define FILE_DIR "icons/obj/doors/airlocks/shuttle" +#define FILE_DIR "icons/obj/doors/airlocks/station" +#define FILE_DIR "icons/obj/doors/airlocks/station2" +#define FILE_DIR "icons/obj/doors/airlocks/survival" +#define FILE_DIR "icons/obj/doors/airlocks/vault" +#define FILE_DIR "icons/obj/flora" +#define FILE_DIR "icons/obj/food" +#define FILE_DIR "icons/obj/guns" +#define FILE_DIR "icons/obj/hydroponics" +#define FILE_DIR "icons/obj/lavaland" +#define FILE_DIR "icons/obj/machines" +#define FILE_DIR "icons/obj/power_cond" +#define FILE_DIR "icons/obj/smooth_structures" +#define FILE_DIR "icons/obj/smooth_structures/alien" +#define FILE_DIR "icons/obj/tesla_engine" +#define FILE_DIR "icons/pda_icons" +#define FILE_DIR "icons/program_icons" +#define FILE_DIR "icons/rooms" +#define FILE_DIR "icons/rooms/box" +#define FILE_DIR "icons/stamp_icons" +#define FILE_DIR "icons/Testing" +#define FILE_DIR "icons/turf" +#define FILE_DIR "icons/turf/floors" +#define FILE_DIR "icons/turf/walls" +#define FILE_DIR "icons/UI_Icons" +#define FILE_DIR "icons/UI_Icons/chat" +#define FILE_DIR "icons/UI_Icons/minesweeper_tiles" +#define FILE_DIR "icons/UI_Icons/Pills" +#define FILE_DIR "icons/vending_icons" +#define FILE_DIR "modular_citadel" +#define FILE_DIR "modular_citadel/code" +#define FILE_DIR "modular_citadel/code/game" +#define FILE_DIR "modular_citadel/code/game/area" +#define FILE_DIR "modular_citadel/icons" +#define FILE_DIR "modular_citadel/icons/effects" +#define FILE_DIR "modular_citadel/icons/eutactic" +#define FILE_DIR "modular_citadel/icons/eutactic/item" +#define FILE_DIR "modular_citadel/icons/eutactic/mob" +#define FILE_DIR "modular_citadel/icons/lavaknight" +#define FILE_DIR "modular_citadel/icons/lavaknight/item" +#define FILE_DIR "modular_citadel/icons/lavaknight/mob" +#define FILE_DIR "modular_citadel/icons/misc" +#define FILE_DIR "modular_citadel/icons/mob" +#define FILE_DIR "modular_citadel/icons/mob/actions" +#define FILE_DIR "modular_citadel/icons/mob/citadel" +#define FILE_DIR "modular_citadel/icons/mob/citadel_refs" +#define FILE_DIR "modular_citadel/icons/mob/clothing" +#define FILE_DIR "modular_citadel/icons/mob/inhands" +#define FILE_DIR "modular_citadel/icons/obj" +#define FILE_DIR "modular_citadel/icons/obj/clothing" +#define FILE_DIR "modular_citadel/icons/obj/food" +#define FILE_DIR "modular_citadel/icons/obj/genitals" +#define FILE_DIR "modular_citadel/icons/obj/guns" +#define FILE_DIR "modular_citadel/icons/polyclothes" +#define FILE_DIR "modular_citadel/icons/polyclothes/item" +#define FILE_DIR "modular_citadel/icons/polyclothes/mob" +#define FILE_DIR "modular_citadel/icons/ui" +#define FILE_DIR "modular_citadel/sound" +#define FILE_DIR "modular_citadel/sound/misc" +#define FILE_DIR "modular_citadel/sound/voice" +#define FILE_DIR "modular_citadel/sound/weapons" +#define FILE_DIR "nsv13" +#define FILE_DIR "nsv13/icons" +#define FILE_DIR "nsv13/icons/obj" +#define FILE_DIR "nsv13/sound" +#define FILE_DIR "nsv13/sound/effects" +#define FILE_DIR "nsv13/sound/effects/computer" +#define FILE_DIR "sound" +#define FILE_DIR "sound/AI" +#define FILE_DIR "sound/alien" +#define FILE_DIR "sound/alien/Effects" +#define FILE_DIR "sound/alien/Voice" +#define FILE_DIR "sound/ambience" +#define FILE_DIR "sound/ambience/antag" +#define FILE_DIR "sound/arcade" +#define FILE_DIR "sound/bloodsucker" +#define FILE_DIR "sound/chatter" +#define FILE_DIR "sound/creatures" +#define FILE_DIR "sound/effects" +#define FILE_DIR "sound/effects/footstep" +#define FILE_DIR "sound/FermiChem" +#define FILE_DIR "sound/hallucinations" +#define FILE_DIR "sound/health" +#define FILE_DIR "sound/instruments" +#define FILE_DIR "sound/instruments/accordion" +#define FILE_DIR "sound/instruments/bikehorn" +#define FILE_DIR "sound/instruments/eguitar" +#define FILE_DIR "sound/instruments/glockenspiel" +#define FILE_DIR "sound/instruments/guitar" +#define FILE_DIR "sound/instruments/harmonica" +#define FILE_DIR "sound/instruments/piano" +#define FILE_DIR "sound/instruments/recorder" +#define FILE_DIR "sound/instruments/saxophone" +#define FILE_DIR "sound/instruments/trombone" +#define FILE_DIR "sound/instruments/violin" +#define FILE_DIR "sound/instruments/xylophone" +#define FILE_DIR "sound/items" +#define FILE_DIR "sound/items/equip" +#define FILE_DIR "sound/items/geiger" +#define FILE_DIR "sound/items/handling" +#define FILE_DIR "sound/lavaland" +#define FILE_DIR "sound/lewd" +#define FILE_DIR "sound/machines" +#define FILE_DIR "sound/machines/clockcult" +#define FILE_DIR "sound/machines/fryer" +#define FILE_DIR "sound/machines/generator" +#define FILE_DIR "sound/machines/microwave" +#define FILE_DIR "sound/machines/nuke" +#define FILE_DIR "sound/machines/shower" +#define FILE_DIR "sound/machines/sm" +#define FILE_DIR "sound/magic" +#define FILE_DIR "sound/magic/clockwork" +#define FILE_DIR "sound/mecha" +#define FILE_DIR "sound/misc" +#define FILE_DIR "sound/music" +#define FILE_DIR "sound/roundend" +#define FILE_DIR "sound/spookoween" +#define FILE_DIR "sound/vehicles" +#define FILE_DIR "sound/voice" +#define FILE_DIR "sound/voice/beepsky" +#define FILE_DIR "sound/voice/catpeople" +#define FILE_DIR "sound/voice/complionator" +#define FILE_DIR "sound/voice/firebot" +#define FILE_DIR "sound/voice/human" +#define FILE_DIR "sound/voice/medbot" +#define FILE_DIR "sound/voice/scream" +#define FILE_DIR "sound/vore" +#define FILE_DIR "sound/vore/pred" +#define FILE_DIR "sound/vore/prey" +#define FILE_DIR "sound/vox_fem" +#define FILE_DIR "sound/weapons" +#define FILE_DIR "sound/weapons/effects" +#define FILE_DIR "sound/weather" +#define FILE_DIR "sound/weather/ashstorm" +#define FILE_DIR "sound/weather/ashstorm/inside" +#define FILE_DIR "sound/weather/ashstorm/outside" +#define FILE_DIR "sound/weather/oxygenrain" +#define FILE_DIR "sound/weather/oxygenrain/inside" +#define FILE_DIR "sound/weather/oxygenrain/outside" +#define FILE_DIR "tools" +#define FILE_DIR "tools/HumanScissors" +#define FILE_DIR "tools/SS13SmoothingCutter" +#define FILE_DIR "yogstation" +#define FILE_DIR "yogstation/icons" +#define FILE_DIR "yogstation/icons/obj" +#define FILE_DIR "yogstation/icons/obj/clothing" +#define FILE_DIR "yogstation/icons/turf" +#define FILE_DIR "yogstation/sound" +#define FILE_DIR "yogstation/sound/effects" +#define FILE_DIR "yogstation/sound/misc" +#define FILE_DIR "yogstation/sound/voice" // END_FILE_DIR // BEGIN_PREFERENCES @@ -3141,8 +3388,11 @@ #include "hyperstation\code\modules\cargo\sweatshop\wooden.dm" #include "hyperstation\code\modules\client\loadout\glasses.dm" #include "hyperstation\code\modules\client\loadout\tablet.dm" +#include "hyperstation\code\modules\client\loadout\neck.dm" +#include "hyperstation\code\modules\client\loadout\gloves.dm" #include "hyperstation\code\modules\clothing\gloves.dm" #include "hyperstation\code\modules\clothing\head.dm" +#include "hyperstation\code\modules\clothing\sizeaccessories.dm" #include "hyperstation\code\modules\clothing\glasses\polychromic_glasses.dm" #include "hyperstation\code\modules\clothing\spacesuits\hardsuit.dm" #include "hyperstation\code\modules\clothing\suits\misc.dm"