diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm index 33e27edd..0f2fd353 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm @@ -409,7 +409,7 @@ "jf" = (/obj/effect/mob_spawn/human/lavaland_syndicate{dir = 4; icon_state = "sleeper_s"},/obj/machinery/airalarm/syndicate{pixel_y = 24},/turf/open/floor/plasteel/grimy,/area/ruin/unpowered/syndicate_lava_base/dormitories) "jg" = (/obj/effect/mapping_helpers/no_lava,/obj/effect/turf_decal/stripes/line{dir = 8},/turf/open/floor/plating{baseturfs = /turf/open/lava/smooth/lava_land_surface; initial_gas_mix = "o2=14;n2=23;TEMP=300"},/area/ruin/unpowered/syndicate_lava_base/outdoors) "jh" = (/obj/effect/decal/cleanable/dirt,/obj/effect/turf_decal/stripes/line{dir = 4},/obj/machinery/light/small{dir = 1},/turf/open/floor/plating{baseturfs = /turf/open/lava/smooth/lava_land_surface; initial_gas_mix = "o2=14;n2=23;TEMP=300"},/area/ruin/unpowered/syndicate_lava_base/arrivals) -"ji" = (/obj/machinery/vending/snack/random{extended_inventory = 1},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/effect/turf_decal/tile/red{dir = 1},/obj/effect/turf_decal/tile/red{dir = 4},/obj/effect/turf_decal/tile/red{dir = 8},/turf/open/floor/plasteel,/area/ruin/unpowered/syndicate_lava_base/main) +"ji" = (/obj/machinery/vending/snack/random{extended_inventory = 1; free = 1},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/effect/turf_decal/tile/red{dir = 1},/obj/effect/turf_decal/tile/red{dir = 4},/obj/effect/turf_decal/tile/red{dir = 8},/turf/open/floor/plasteel,/area/ruin/unpowered/syndicate_lava_base/main) "jj" = (/obj/structure/cable/yellow{icon_state = "1-2"},/obj/machinery/atmospherics/components/unary/vent_pump/on,/obj/effect/turf_decal/tile/red{dir = 1},/turf/open/floor/plasteel,/area/ruin/unpowered/syndicate_lava_base/main) "jk" = (/obj/effect/turf_decal/stripes/line{dir = 8},/obj/effect/mapping_helpers/no_lava,/turf/open/floor/plating{baseturfs = /turf/open/lava/smooth/lava_land_surface; initial_gas_mix = "o2=14;n2=23;TEMP=300"},/area/ruin/unpowered/syndicate_lava_base/outdoors) "jl" = (/turf/open/floor/plasteel,/area/ruin/unpowered/syndicate_lava_base/main) @@ -418,7 +418,7 @@ "jp" = (/obj/effect/decal/cleanable/dirt,/obj/effect/turf_decal/tile/red,/obj/effect/turf_decal/tile/red{dir = 4},/obj/effect/turf_decal/tile/red{dir = 8},/turf/open/floor/plasteel,/area/ruin/unpowered/syndicate_lava_base/main) "jq" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{dir = 1},/obj/structure/bed,/obj/effect/spawner/lootdrop/bedsheet,/turf/open/floor/plasteel/grimy,/area/ruin/unpowered/syndicate_lava_base/dormitories) "jr" = (/obj/machinery/atmospherics/components/unary/vent_pump/on{dir = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3,/turf/open/floor/plasteel/grimy,/area/ruin/unpowered/syndicate_lava_base/dormitories) -"js" = (/obj/machinery/vending/cola/random{extended_inventory = 1},/obj/effect/decal/cleanable/dirt,/obj/effect/turf_decal/tile/red{dir = 1},/obj/effect/turf_decal/tile/red{dir = 8},/turf/open/floor/plasteel,/area/ruin/unpowered/syndicate_lava_base/main) +"js" = (/obj/machinery/vending/cola/random{extended_inventory = 1; free = 1},/obj/effect/decal/cleanable/dirt,/obj/effect/turf_decal/tile/red{dir = 1},/obj/effect/turf_decal/tile/red{dir = 8},/turf/open/floor/plasteel,/area/ruin/unpowered/syndicate_lava_base/main) "jt" = (/obj/structure/cable/yellow{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/open/floor/plasteel,/area/ruin/unpowered/syndicate_lava_base/main) "ju" = (/turf/closed/wall/mineral/plastitanium/nodiagonal,/area/ruin/unpowered/syndicate_lava_base/engineering) "jv" = (/obj/effect/turf_decal/delivery,/obj/machinery/door/firedoor,/obj/structure/cable/yellow{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{dir = 4},/obj/machinery/door/airlock/engineering{dir = 4; name = "Engineering"; req_access_txt = "150"},/turf/open/floor/plasteel,/area/ruin/unpowered/syndicate_lava_base/engineering) @@ -577,7 +577,7 @@ "mS" = (/turf/closed/wall/mineral/plastitanium/explosive,/area/ruin/unpowered/syndicate_lava_base/telecomms) "mT" = (/turf/closed/wall/mineral/plastitanium/nodiagonal,/area/ruin/unpowered/syndicate_lava_base/arrivals) "mU" = (/obj/effect/decal/cleanable/dirt,/obj/effect/turf_decal/tile/red{dir = 1},/obj/effect/turf_decal/tile/red{dir = 4},/turf/open/floor/plasteel,/area/ruin/unpowered/syndicate_lava_base/arrivals) -"mX" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{dir = 4},/obj/structure/cable/yellow{icon_state = "4-8"},/obj/effect/turf_decal/tile/red{dir = 1},/obj/effect/turf_decal/tile/red{dir = 4},/obj/machinery/vending/kink,/turf/open/floor/plasteel,/area/ruin/unpowered/syndicate_lava_base/arrivals) +"mX" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{dir = 4},/obj/structure/cable/yellow{icon_state = "4-8"},/obj/effect/turf_decal/tile/red{dir = 1},/obj/effect/turf_decal/tile/red{dir = 4},/obj/machinery/vending/kink{free = 1},/turf/open/floor/plasteel,/area/ruin/unpowered/syndicate_lava_base/arrivals) "mY" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 1},/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{dir = 1},/obj/structure/cable/yellow{icon_state = "4-8"},/obj/effect/turf_decal/tile/red{dir = 1},/turf/open/floor/plasteel,/area/ruin/unpowered/syndicate_lava_base/arrivals) "mZ" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{dir = 4},/obj/structure/cable/yellow{icon_state = "4-8"},/obj/machinery/door/airlock/medical/glass{dir = 4; name = "Medbay"},/turf/open/floor/plasteel/white,/area/ruin/unpowered/syndicate_lava_base/medbay) "na" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{dir = 4},/obj/structure/cable/yellow{icon_state = "4-8"},/turf/open/floor/plasteel/white/side{dir = 8},/area/ruin/unpowered/syndicate_lava_base/medbay) @@ -690,6 +690,7 @@ "JA" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{dir = 1},/obj/structure/cable/yellow{icon_state = "4-8"},/obj/effect/turf_decal/tile/red{dir = 1},/obj/effect/turf_decal/tile/red{dir = 4},/turf/open/floor/plasteel,/area/ruin/unpowered/syndicate_lava_base/arrivals) "LX" = (/obj/machinery/hydroponics/constructable,/obj/effect/turf_decal/loading_area{dir = 1; icon_state = "drain"; name = "drain"},/obj/effect/decal/cleanable/dirt,/turf/open/floor/plasteel/dark,/area/ruin/unpowered/syndicate_lava_base/arrivals) "Mn" = (/turf/closed/wall/mineral/plastitanium/explosive,/area/ruin/unpowered/syndicate_lava_base/bar) +"MY" = (/obj/effect/decal/cleanable/dirt,/obj/effect/turf_decal/tile/red{dir = 1},/obj/effect/turf_decal/tile/red{dir = 4},/obj/machinery/atm{pixel_y = 30},/turf/open/floor/plasteel,/area/ruin/unpowered/syndicate_lava_base/arrivals) "NH" = (/obj/machinery/air_sensor{frequency = 1442; id_tag = "syndie_lavaland_tox_sensor"},/turf/open/floor/plating/airless,/area/ruin/unpowered/syndicate_lava_base/engineering) "NZ" = (/obj/structure/table,/obj/item/storage/toolbox/syndicate,/obj/item/multitool,/obj/machinery/button/door{id = "lavalandsyndi_telecomms"; name = "Telecomms Blast Door Control"; pixel_x = 26; req_access_txt = "150"},/turf/open/floor/plasteel/dark,/area/ruin/unpowered/syndicate_lava_base/telecomms) "Ov" = (/obj/effect/decal/cleanable/dirt,/obj/effect/mapping_helpers/no_lava,/obj/effect/turf_decal/stripes/line{dir = 6},/turf/open/floor/plating{baseturfs = /turf/open/lava/smooth/lava_land_surface; initial_gas_mix = "o2=14;n2=23;TEMP=300"},/area/ruin/unpowered/syndicate_lava_base/outdoors) @@ -760,7 +761,7 @@ aaabababababababababababdGleopjyorjZjNlhlilZlkouovllozjyjDkQaDlnmElooAnclqlrlslt aaabababababababababababhalwlwjyjyoHjZlzlAlBlCaklElFuBjyjDkQlHlImElKkQlLlMlNlOEZlPSulQlRnGjuabababaa aaababababmnmnmnRuRuRuRumnlTgsmOjynSlVlWlXlYlZmajymcjyjyTpkQmeUgmfYjkUncmhmimjmkmlDGjujujujuabababaa aaabababiimnmMmnmpmpIaNZmnmsmsmTjymvmumvjyvxmxjyjyjyjymzocmAmBmCmEmEutncmGmHmImJmKnjjuababababababaa -aaabababmnmMmMmPTimQmRWtmSzVzVyqmUmUEFZvjyjyMnjyvDXamXmYzymZnauXnbnbRancjuneRVngsZNHjuababababababaa +aaabababmnmMmMmPTimQmRWtmSzVzVyqMYmUEFZvjyjyMnjyvDXamXmYzymZnauXnbnbRancjuneRVngsZNHjuababababababaa aaabababmnFbnkaEnknlnmmonnrFnonpBkamnrpiQmjPJAnsntRsfDnwhWnynzloRYmECDZInDnEtWnFnGRDjuababababababaa aaabababmnmMmMmnnInJnKnLmnmTnQmTfPfPaoarPanTnUnXnXnXfKauhXmTobfkaVcDszjujuofOYjujujuhBababababababaa aaabababgmmnmMmnoiojokmnmnmTGYPaPaPaPaJccIPamTgWgWgWgWgXmTmTmTmTmTmTmTmTotFlFRpVabababababababababaa diff --git a/_maps/RandomRuins/SpaceRuins/listeningstation.dmm b/_maps/RandomRuins/SpaceRuins/listeningstation.dmm index 902f182e..0478a690 100644 --- a/_maps/RandomRuins/SpaceRuins/listeningstation.dmm +++ b/_maps/RandomRuins/SpaceRuins/listeningstation.dmm @@ -42,13 +42,13 @@ "aP" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/components/unary/vent_pump/on{dir = 1},/obj/structure/extinguisher_cabinet{pixel_y = -29},/turf/open/floor/plasteel,/area/ruin/space/has_grav/listeningstation) "aQ" = (/obj/effect/decal/cleanable/dirt,/obj/effect/turf_decal/tile/green{dir = 1},/obj/effect/turf_decal/tile/green{dir = 4},/obj/effect/turf_decal/tile/green,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/open/floor/plasteel,/area/ruin/space/has_grav/listeningstation) "aR" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4; piping_layer = 3; pixel_x = 5; pixel_y = 5},/obj/machinery/door/airlock{dir = 4; name = "Personal Quarters"},/turf/open/floor/plasteel,/area/ruin/space/has_grav/listeningstation) -"aS" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4; piping_layer = 3; pixel_x = 5; pixel_y = 5},/obj/effect/turf_decal/tile/red{dir = 4},/turf/open/floor/plasteel,/area/ruin/space/has_grav/listeningstation) +"aS" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4; piping_layer = 3; pixel_x = 5; pixel_y = 5},/obj/effect/turf_decal/tile/red{dir = 4},/obj/machinery/atm{pixel_y = 30},/turf/open/floor/plasteel,/area/ruin/space/has_grav/listeningstation) "aT" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden,/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 2; piping_layer = 3; pixel_x = 5; pixel_y = 5},/obj/effect/turf_decal/tile/red{dir = 1},/obj/effect/turf_decal/tile/red{dir = 4},/turf/open/floor/plasteel,/area/ruin/space/has_grav/listeningstation) "aU" = (/obj/effect/turf_decal/stripes/red/corner{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{piping_layer = 3; pixel_x = 5; pixel_y = 5},/turf/open/floor/plasteel,/area/ruin/space/has_grav/listeningstation) "aV" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4; piping_layer = 3; pixel_x = 5; pixel_y = 5},/obj/effect/turf_decal/tile/red{dir = 1},/obj/effect/turf_decal/tile/red{dir = 4},/obj/structure/sign/poster/contraband/random{pixel_y = 30},/turf/open/floor/plasteel,/area/ruin/space/has_grav/listeningstation) "aW" = (/obj/machinery/light/small{dir = 1},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 1; piping_layer = 3; pixel_x = 5; pixel_y = 5},/obj/effect/turf_decal/tile/red{dir = 1},/obj/effect/turf_decal/tile/red{dir = 4},/turf/open/floor/plasteel,/area/ruin/space/has_grav/listeningstation) "aX" = (/obj/structure/closet/firecloset/full{anchored = 1},/obj/effect/turf_decal/loading_area{icon_state = "drain"; name = "drain"},/turf/open/floor/mineral/plastitanium,/area/ruin/space/has_grav/listeningstation) -"aY" = (/obj/machinery/vending/snack/random{extended_inventory = 1},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/structure/sign/poster/contraband/random{pixel_x = 32},/obj/effect/turf_decal/tile/red{dir = 1},/turf/open/floor/plasteel,/area/ruin/space/has_grav/listeningstation) +"aY" = (/obj/machinery/vending/snack/random{extended_inventory = 1; free = 1},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/structure/sign/poster/contraband/random{pixel_x = 32},/obj/effect/turf_decal/tile/red{dir = 1},/turf/open/floor/plasteel,/area/ruin/space/has_grav/listeningstation) "aZ" = (/turf/closed/mineral/random,/area/ruin/space/has_grav/listeningstation) "ba" = (/obj/machinery/vending/boozeomat/syndicate_access,/turf/closed/wall/mineral/plastitanium/nodiagonal,/area/ruin/space/has_grav/listeningstation) "bb" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/airlock/public/glass{dir = 4; name = "Botany"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4; piping_layer = 3; pixel_x = 5; pixel_y = 5},/turf/open/floor/plasteel/dark,/area/ruin/space/has_grav/listeningstation) @@ -71,7 +71,7 @@ "bs" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/plasteel,/area/ruin/space/has_grav/listeningstation) "bt" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4; piping_layer = 3; pixel_x = 5; pixel_y = 5},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/open/floor/wood,/area/ruin/space/has_grav/listeningstation) "bu" = (/obj/machinery/atmospherics/components/unary/vent_scrubber/on{dir = 8; piping_layer = 3; pixel_x = 5; pixel_y = 5},/turf/open/floor/wood,/area/ruin/space/has_grav/listeningstation) -"bv" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/machinery/vending/cola/shamblers,/turf/open/floor/plasteel,/area/ruin/space/has_grav/listeningstation) +"bv" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/machinery/vending/cola/shamblers{free = 1},/turf/open/floor/plasteel,/area/ruin/space/has_grav/listeningstation) "bw" = (/obj/structure/closet/secure_closet/hydroponics{req_access = null},/obj/item/reagent_containers/spray/pestspray{pixel_x = 3; pixel_y = 4},/obj/item/shovel/spade,/obj/effect/decal/cleanable/dirt,/obj/item/storage/bag/plants,/obj/effect/turf_decal/tile/green{dir = 8},/obj/effect/turf_decal/tile/green{dir = 1},/obj/effect/turf_decal/tile/green,/turf/open/floor/plasteel,/area/ruin/space/has_grav/listeningstation) "bx" = (/obj/effect/turf_decal/tile/green,/obj/effect/turf_decal/tile/green{dir = 8},/turf/open/floor/plasteel,/area/ruin/space/has_grav/listeningstation) "by" = (/obj/machinery/power/terminal{dir = 1},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1},/obj/structure/reagent_dispensers/fueltank,/obj/item/clothing/head/welding,/obj/item/weldingtool/largetank,/obj/effect/decal/cleanable/dirt,/turf/open/floor/plating,/area/ruin/space/has_grav/listeningstation) diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index 6a47ebdb..a5806b0f 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -1670,7 +1670,7 @@ "aGf" = (/obj/machinery/shower{pixel_y = 19},/obj/effect/turf_decal/loading_area{dir = 1; icon_state = "drain"; name = "drain"},/turf/open/floor/plasteel/freezer,/area/crew_quarters/toilet) "aGg" = (/obj/machinery/cryopod{dir = 4},/obj/effect/turf_decal/stripes/line{dir = 4},/turf/open/floor/plasteel/freezer,/area/crew_quarters/cryopod) "aGh" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/open/floor/plasteel/yellowsiding{dir = 1},/area/crew_quarters/fitness/pool) -"aGi" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{icon_state = "4-8"},/turf/open/floor/plating,/area/maintenance/starboard/fore) +"aGi" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/plating,/area/maintenance/starboard/fore) "aGj" = (/obj/machinery/light{dir = 1; pixel_y = 16},/turf/open/floor/carpet,/area/crew_quarters/theatre) "aGk" = (/obj/structure/cable{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable{icon_state = "2-4"},/obj/structure/disposalpipe/sorting/mail{dir = 4; sortType = 19},/turf/open/floor/plating,/area/maintenance/starboard/fore) "aGl" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/effect/turf_decal/tile/neutral,/obj/effect/turf_decal/tile/neutral{dir = 4},/turf/open/floor/plasteel,/area/crew_quarters/dorms) @@ -2047,7 +2047,7 @@ "aNs" = (/turf/open/floor/plasteel/showroomfloor,/area/crew_quarters/kitchen) "aNt" = (/obj/structure/cable{icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/vault{req_access_txt = "53"},/turf/open/floor/plasteel/dark,/area/ai_monitored/turret_protected/ai_upload) "aNu" = (/obj/machinery/atmospherics/components/unary/vent_scrubber/on{dir = 1},/turf/open/floor/plasteel,/area/hallway/primary/central) -"aNv" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/plasticflaps/opaque,/obj/machinery/navbeacon{codes_txt = "delivery;dir=2"; freq = 1400; location = "Kitchen"},/obj/machinery/navbeacon{codes_txt = "delivery;dir=2"; freq = 1400; location = "Kitchen"},/turf/open/floor/plating,/area/crew_quarters/kitchen) +"aNv" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/plasticflaps/opaque,/obj/machinery/navbeacon{codes_txt = "delivery;dir=2"; freq = 1400; location = "Kitchen"},/turf/open/floor/plating,/area/crew_quarters/kitchen) "aNw" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/closed/wall,/area/crew_quarters/kitchen) "aNx" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/plasticflaps/opaque,/obj/machinery/navbeacon{codes_txt = "delivery;dir=2"; freq = 1400; location = "Hydroponics"},/obj/effect/turf_decal/bot,/turf/open/floor/plasteel,/area/maintenance/starboard/fore) "aNy" = (/obj/effect/turf_decal/loading_area{dir = 8; icon_state = "drain"; name = "drain"},/obj/structure/disposalpipe/segment{dir = 5},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/structure/cable{icon_state = "1-4"},/turf/open/floor/plasteel,/area/hallway/primary/central) diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index b345d475..b26e26c8 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -20165,7 +20165,6 @@ }, /area/hallway/secondary/exit/departure_lounge) "aOh" = ( -/obj/structure/chair, /obj/machinery/light{ dir = 1 }, @@ -20176,6 +20175,9 @@ /obj/effect/turf_decal/tile/neutral{ dir = 4 }, +/obj/machinery/atm{ + pixel_y = 30 + }, /turf/open/floor/plasteel{ heat_capacity = 1e+006 }, @@ -25501,9 +25503,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/structure/extinguisher_cabinet{ - pixel_y = 30 - }, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -25514,6 +25513,9 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/machinery/atm{ + pixel_y = 30 + }, /turf/open/floor/plasteel/dark, /area/crew_quarters/bar) "aZb" = ( @@ -41964,6 +41966,9 @@ /obj/effect/turf_decal/tile/purple{ dir = 4 }, +/obj/machinery/atm{ + pixel_y = 30 + }, /turf/open/floor/plasteel, /area/hallway/primary/aft) "bHn" = ( @@ -53371,9 +53376,7 @@ /turf/open/floor/plasteel, /area/crew_quarters/dorms) "coo" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /obj/machinery/airalarm{ dir = 1; pixel_y = -22 @@ -58566,6 +58569,13 @@ /obj/structure/grille, /turf/open/space/basic, /area/space/nearstation) +"gZw" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atm{ + pixel_y = 30 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) "heC" = ( /obj/machinery/power/apc/highcap/five_k{ dir = 8; @@ -59568,6 +59578,12 @@ }, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) +"jKu" = ( +/obj/machinery/atm{ + pixel_y = 30 + }, +/turf/open/floor/plasteel/dark, +/area/chapel/main/monastery) "jLW" = ( /obj/machinery/atmospherics/pipe/simple/purple/visible, /turf/closed/wall/r_wall, @@ -59765,6 +59781,20 @@ icon_state = "platingdmg3" }, /area/maintenance/department/crew_quarters/dorms) +"kks" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/machinery/atm{ + pixel_y = 30 + }, +/turf/open/floor/plasteel/white/corner{ + dir = 1 + }, +/area/hallway/secondary/entry) "kkQ" = ( /obj/machinery/vending/cola/pwr_game, /turf/open/floor/plating{ @@ -61151,6 +61181,21 @@ }, /turf/open/floor/plating, /area/science/xenobiology) +"nFk" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/machinery/atm{ + pixel_y = 30 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) "nGi" = ( /obj/structure/chair{ dir = 4 @@ -63383,6 +63428,15 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/aft) +"tcR" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atm{ + pixel_y = 30 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) "tcY" = ( /obj/structure/cable{ icon_state = "4-8" @@ -82030,7 +82084,7 @@ bOw bQg bQe bWV -bXJ +jKu bXJ bZm bYB @@ -84797,7 +84851,7 @@ aIC pvK aKD gmO -aQt +aHz aOh aWK aRE @@ -86351,7 +86405,7 @@ azW abG aHz aYG -aZA +kks aGp bbR bbR @@ -86363,7 +86417,7 @@ aaa aaa aaa aYG -bbR +tcR bbR aJu baK @@ -93530,7 +93584,7 @@ aEz aFx aGk awR -aHQ +nFk aIO aJO aKT @@ -103804,7 +103858,7 @@ aym awr aAO aBP -com +coo apX aET aaH @@ -104318,9 +104372,9 @@ ayn azv col aBR -coo +bns apX -aGV +gZw aDZ aGD aDZ diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index ff2a7786..1a5e715e 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -12900,6 +12900,23 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/ferry) +"Cl" = ( +/obj/structure/flora/ausbushes/grassybush, +/obj/structure/flora/ausbushes/sparsegrass, +/obj/structure/flora/ausbushes/fernybush, +/obj/item/storage/backpack/duffelbag/drone{ + pixel_y = 2 + }, +/obj/effect/decal/cleanable/ash{ + name = "ashes of drone (760)" + }, +/obj/item/clothing/head/hardhat/weldhat, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "asteroid8"; + name = "sand" + }, +/area/centcom/control) "Cn" = ( /obj/structure/table/reinforced, /obj/machinery/chem_dispenser/drinks/beer/fullupgrade, @@ -18945,6 +18962,9 @@ /obj/structure/table/wood, /obj/structure/window/reinforced/spawner/north, /obj/structure/window/reinforced/spawner/west, +/obj/item/rupee{ + desc = "A gift, right?" + }, /turf/open/floor/plasteel/grimy, /area/centcom/ferry) "RD" = ( @@ -62724,7 +62744,7 @@ io io io qw -WI +Cl Wk WI lN diff --git a/code/__DEFINES/admin.dm b/code/__DEFINES/admin.dm index 22a76fd8..d8b5ab0b 100644 --- a/code/__DEFINES/admin.dm +++ b/code/__DEFINES/admin.dm @@ -79,6 +79,7 @@ #define ADMIN_PUNISHMENT_FAKEBWOINK "Fake Bwoink" #define ADMIN_PUNISHMENT_NUGGET "Nugget" #define ADMIN_PUNISHMENT_BREADIFY ":b:read" +#define ADMIN_PUNISHMENT_BOOKIFY "Bookify" #define AHELP_ACTIVE 1 #define AHELP_CLOSED 2 diff --git a/code/__DEFINES/colors.dm b/code/__DEFINES/colors.dm index fd29e892..90c73dac 100644 --- a/code/__DEFINES/colors.dm +++ b/code/__DEFINES/colors.dm @@ -17,6 +17,7 @@ #define COLOR_FLOORTILE_GRAY "#8D8B8B" #define COLOR_ALMOST_BLACK "#333333" +#define COLOR_SILVER "#C0C0C0" #define COLOR_BLACK "#000000" #define COLOR_RED "#FF0000" #define COLOR_RED_LIGHT "#FF3333" @@ -63,4 +64,4 @@ #define COLOR_ASSEMBLY_LBLUE "#5D99BE" #define COLOR_ASSEMBLY_BLUE "#38559E" #define COLOR_ASSEMBLY_PURPLE "#6F6192" -#define COLOR_ASSEMBLY_PINK "#ff4adc" \ No newline at end of file +#define COLOR_ASSEMBLY_PINK "#ff4adc" diff --git a/code/__DEFINES/layers.dm b/code/__DEFINES/layers.dm index 4598932b..c1648d34 100644 --- a/code/__DEFINES/layers.dm +++ b/code/__DEFINES/layers.dm @@ -6,6 +6,10 @@ #define PLANE_SPACE -95 #define PLANE_SPACE_PARALLAX -90 +#define OPENSPACE_LAYER 17 //Openspace layer over all +#define OPENSPACE_PLANE -4 //Openspace plane below all turfs +#define OPENSPACE_BACKDROP_PLANE -3 //Black square just over openspace plane to guaranteed cover all in openspace turf + #define FLOOR_PLANE -2 #define GAME_PLANE -1 #define BLACKNESS_PLANE 0 //To keep from conflicts with SEE_BLACKNESS internals @@ -87,9 +91,6 @@ #define ABOVE_LIGHTING_PLANE 16 #define ABOVE_LIGHTING_LAYER 16 -#define FLOOR_OPENSPACE_PLANE 17 -#define OPENSPACE_LAYER 17 - #define BYOND_LIGHTING_PLANE 18 #define BYOND_LIGHTING_LAYER 18 diff --git a/code/_onclick/hud/parallax.dm b/code/_onclick/hud/parallax.dm index 8592383a..f1c428cf 100644 --- a/code/_onclick/hud/parallax.dm +++ b/code/_onclick/hud/parallax.dm @@ -8,7 +8,7 @@ var/last_parallax_shift //world.time of last update var/parallax_throttle = 0 //ds between updates var/parallax_movedir = 0 - var/parallax_layers_max = 3 + var/parallax_layers_max = 4 var/parallax_animate_timer /datum/hud/proc/create_parallax(mob/viewmob) @@ -22,6 +22,8 @@ C.parallax_layers_cached += new /obj/screen/parallax_layer/layer_1(null, C.view) C.parallax_layers_cached += new /obj/screen/parallax_layer/layer_2(null, C.view) C.parallax_layers_cached += new /obj/screen/parallax_layer/planet(null, C.view) + if(SSparallax.random_layer) + C.parallax_layers_cached += new SSparallax.random_layer C.parallax_layers_cached += new /obj/screen/parallax_layer/layer_3(null, C.view) C.parallax_layers = C.parallax_layers_cached.Copy() @@ -64,12 +66,12 @@ switch(C.prefs.parallax) if (PARALLAX_INSANE) C.parallax_throttle = FALSE - C.parallax_layers_max = 4 + C.parallax_layers_max = 5 return TRUE if (PARALLAX_MED) C.parallax_throttle = PARALLAX_DELAY_MED - C.parallax_layers_max = 2 + C.parallax_layers_max = 3 return TRUE if (PARALLAX_LOW) @@ -81,7 +83,7 @@ return FALSE C.parallax_throttle = PARALLAX_DELAY_DEFAULT - C.parallax_layers_max = 3 + C.parallax_layers_max = 4 return TRUE /datum/hud/proc/update_parallax_pref(mob/viewmob) @@ -167,7 +169,7 @@ /datum/hud/proc/update_parallax() var/client/C = mymob.client var/turf/posobj = get_turf(C.eye) - if(!posobj) + if(!posobj) return var/area/areaobj = posobj.loc @@ -296,6 +298,23 @@ speed = 1.4 layer = 3 +/obj/screen/parallax_layer/random + blend_mode = BLEND_OVERLAY + speed = 3 + layer = 3 + +/obj/screen/parallax_layer/random/space_gas + icon_state = "space_gas" + +/obj/screen/parallax_layer/random/space_gas/Initialize(mapload, view) + src.add_atom_colour(SSparallax.random_parallax_color, ADMIN_COLOUR_PRIORITY) + +/obj/screen/parallax_layer/random/asteroids + icon_state = "asteroids" + +/obj/screen/parallax_layer/random/nebula + icon_state = "nebula1" + /obj/screen/parallax_layer/planet icon_state = "planet" blend_mode = BLEND_OVERLAY @@ -304,11 +323,11 @@ layer = 30 /obj/screen/parallax_layer/planet/update_status(mob/M) - var/turf/T = get_turf(M) - if(is_station_level(T.z)) - invisibility = 0 - else - invisibility = INVISIBILITY_ABSTRACT + var/client/C = M.client + var/turf/posobj = get_turf(C.eye) + if(!posobj) + return + invisibility = is_station_level(posobj.z) ? 0 : INVISIBILITY_ABSTRACT /obj/screen/parallax_layer/planet/update_o() return //Shit wont move diff --git a/code/_onclick/hud/plane_master.dm b/code/_onclick/hud/plane_master.dm index b2bc0592..ac749409 100644 --- a/code/_onclick/hud/plane_master.dm +++ b/code/_onclick/hud/plane_master.dm @@ -18,7 +18,7 @@ /obj/screen/plane_master/openspace name = "open space plane master" - plane = FLOOR_OPENSPACE_PLANE + plane = OPENSPACE_BACKDROP_PLANE appearance_flags = PLANE_MASTER blend_mode = BLEND_MULTIPLY alpha = 255 diff --git a/code/controllers/subsystem/parallax.dm b/code/controllers/subsystem/parallax.dm index 64299fda..f7c21c76 100644 --- a/code/controllers/subsystem/parallax.dm +++ b/code/controllers/subsystem/parallax.dm @@ -7,9 +7,15 @@ SUBSYSTEM_DEF(parallax) var/list/currentrun var/planet_x_offset = 128 var/planet_y_offset = 128 + var/random_layer + var/random_parallax_color -/datum/controller/subsystem/parallax/Initialize(timeofday) +//These are cached per client so needs to be done asap so people joining at roundstart do not miss these. +/datum/controller/subsystem/parallax/PreInit() . = ..() + if(prob(70)) //70% chance to pick a special extra layer + random_layer = pick(/obj/screen/parallax_layer/random/space_gas, /obj/screen/parallax_layer/random/asteroids, /obj/screen/parallax_layer/random/nebula) + random_parallax_color = pick(COLOR_TEAL, COLOR_GREEN, COLOR_SILVER, COLOR_YELLOW, COLOR_CYAN, COLOR_ORANGE, COLOR_PURPLE)//Special color for random_layer1. Has to be done here so everyone sees the same color. planet_y_offset = rand(100, 160) planet_x_offset = rand(100, 160) diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index d9948b8e..656bbc51 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -31,6 +31,8 @@ var/renamedByPlayer = FALSE //set when a player uses a pen on a renamable object + vis_flags = VIS_INHERIT_PLANE //when this be added to vis_contents of something it inherit something.plane, important for visualisation of obj in openspace. + /obj/vv_edit_var(vname, vval) switch(vname) if("anchored") diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index 420a92ff..2536c22b 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -453,6 +453,7 @@ H.update_inv_wear_mask() else H.lip_style = null + H.nail_style = null H.update_body() if(H.glasses && washglasses && wash_obj(H.glasses)) H.update_inv_glasses() diff --git a/code/game/turfs/openspace/openspace.dm b/code/game/turfs/openspace/openspace.dm index e68aabcd..ede97c0b 100644 --- a/code/game/turfs/openspace/openspace.dm +++ b/code/game/turfs/openspace/openspace.dm @@ -1,7 +1,20 @@ +GLOBAL_DATUM_INIT(openspace_backdrop_one_for_all, /atom/movable/openspace_backdrop, new) + +/atom/movable/openspace_backdrop + name = "openspace_backdrop" + + anchored = TRUE + + icon = 'icons/turf/floors.dmi' + icon_state = "grey" + plane = OPENSPACE_BACKDROP_PLANE + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + layer = SPLASHSCREEN_LAYER + /turf/open/openspace name = "open space" desc = "Watch your step!" - icon_state = "grey" + icon_state = "transparent" baseturfs = /turf/open/openspace CanAtmosPassVertical = ATMOS_PASS_YES //mouse_opacity = MOUSE_OPACITY_TRANSPARENT @@ -14,8 +27,11 @@ /turf/open/openspace/Initialize() // handle plane and layer here so that they don't cover other obs/turfs in Dream Maker . = ..() - plane = FLOOR_OPENSPACE_PLANE + plane = OPENSPACE_PLANE layer = OPENSPACE_LAYER + + vis_contents += GLOB.openspace_backdrop_one_for_all //Special grey square for projecting backdrop darkness filter on it. + return INITIALIZE_HINT_LATELOAD /turf/open/openspace/LateInitialize() diff --git a/code/game/turfs/space/space.dm b/code/game/turfs/space/space.dm index 983f37d1..d415e230 100644 --- a/code/game/turfs/space/space.dm +++ b/code/game/turfs/space/space.dm @@ -18,7 +18,7 @@ light_power = 0.25 dynamic_lighting = DYNAMIC_LIGHTING_DISABLED bullet_bounce_sound = null - + vis_flags = VIS_INHERIT_ID //when this be added to vis_contents of something it be associated with something on clicking, important for visualisation of turf in openspace and interraction with openspace that show you turf. /turf/open/space/basic/New() //Do not convert to Initialize //This is used to optimize the map loader diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index d1394e7c..ff47a484 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -32,6 +32,8 @@ //IE if the turf is supposed to be water, set TRUE. var/tiled_dirt = FALSE // use smooth tiled dirt decal + + vis_flags = VIS_INHERIT_PLANE|VIS_INHERIT_ID //when this be added to vis_contents of something it inherit something.plane and be associated with something on clicking, important for visualisation of turf in openspace and interraction with openspace that show you turf. /turf/vv_edit_var(var_name, new_value) var/static/list/banned_edits = list("x", "y", "z") diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 0aaa34e8..1f780448 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -1247,6 +1247,11 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits var/obj/item/reagent_containers/food/snacks/store/bread/plain/funnyBread = new(get_turf(target)) target.forceMove(funnyBread) +/client/proc/bookify(atom/movable/target) + var/obj/item/reagent_containers/food/snacks/store/book/funnyBook = new(get_turf(target)) + target.forceMove(funnyBook) + funnyBook.name = "Book of " + target.name + /client/proc/smite(mob/living/carbon/human/target as mob) set name = "Smite" set category = "Fun" @@ -1268,7 +1273,8 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits ADMIN_PUNISHMENT_TABLETIDESTATIONWIDE, ADMIN_PUNISHMENT_FAKEBWOINK, ADMIN_PUNISHMENT_NUGGET, - ADMIN_PUNISHMENT_BREADIFY) + ADMIN_PUNISHMENT_BREADIFY, + ADMIN_PUNISHMENT_BOOKIFY) var/punishment = input("Choose a punishment", "DIVINE SMITING") as null|anything in punishment_list @@ -1379,6 +1385,14 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits target.transformation_animation(bread_appearance, time = BREADIFY_TIME, transform_overlay=transform_scanline, reset_after=TRUE) addtimer(CALLBACK(GLOBAL_PROC, .proc/breadify, target), BREADIFY_TIME) #undef BREADIFY_TIME + if(ADMIN_PUNISHMENT_BOOKIFY) + #define BOOKIFY_TIME (2 SECONDS) + var/mutable_appearance/book_appearance = mutable_appearance('icons/obj/library.dmi', "book") + var/mutable_appearance/transform_scanline = mutable_appearance('icons/effects/effects.dmi', "transform_effect") + target.transformation_animation(book_appearance, time = BOOKIFY_TIME, transform_overlay=transform_scanline, reset_after=TRUE) + addtimer(CALLBACK(GLOBAL_PROC, .proc/bookify, target), BOOKIFY_TIME) + playsound(target, 'hyperstation/sound/misc/bookify.ogg', 60, 1) + #undef BOOKIFY_TIME punish_log(target, punishment) diff --git a/code/modules/atmospherics/gasmixtures/gas_types.dm b/code/modules/atmospherics/gasmixtures/gas_types.dm index 06a62f52..9bd41404 100644 --- a/code/modules/atmospherics/gasmixtures/gas_types.dm +++ b/code/modules/atmospherics/gasmixtures/gas_types.dm @@ -203,6 +203,7 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/g anchored = TRUE // should only appear in vis_contents, but to be safe layer = FLY_LAYER appearance_flags = TILE_BOUND + vis_flags = NONE /obj/effect/overlay/gas/New(state, alph) . = ..() diff --git a/code/modules/events/aurora_caelus.dm b/code/modules/events/aurora_caelus.dm index a32532d1..8e1319f1 100644 --- a/code/modules/events/aurora_caelus.dm +++ b/code/modules/events/aurora_caelus.dm @@ -25,7 +25,7 @@ for(var/V in GLOB.player_list) var/mob/M = V if((M.client.prefs.toggles & SOUND_MIDI) && is_station_level(M.z)) - M.playsound_local(M, 'sound/ambience/aurora_caelus_new.ogg', 40, FALSE, pressure_affected = FALSE) //ogg is "The Fire is Gone" by Heaven Pierce Her, used in the videogame ULTRAKILL. All respects and credits to the equivalent artists who worked on it. + M.playsound_local(M, pick('sound/ambience/aurora_caelus_new.ogg','sound/ambience/aurora_caelus.ogg'), 40, FALSE, pressure_affected = FALSE) //ogg is "The Fire is Gone" by Heaven Pierce Her, used in the videogame ULTRAKILL. All respects and credits to the equivalent artists who worked on it. start_checking() /datum/round_event/aurora_caelus/proc/start_checking() diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm index be09a91d..22106266 100644 --- a/code/modules/food_and_drinks/food/snacks.dm +++ b/code/modules/food_and_drinks/food/snacks.dm @@ -378,3 +378,16 @@ All foods are distributed among various categories. Use common sense. TB.MouseDrop(over) else return ..() + +/obj/item/reagent_containers/food/snacks/store/book + name = "book" + desc = "Could it be? A LoR reference? And is it... Edible?" + icon = 'icons/obj/library.dmi' + icon_state = "book" + tastes = list("broken dreams and promises" = 10) + foodtype = GROSS + dunkable = TRUE + volume = 80 + bitesize = 4 + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1) + list_reagents = list(/datum/reagent/consumable/sodiumchloride = 1) diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index fd9fdcb5..021094fc 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -24,6 +24,9 @@ var/lip_style = null //no lipstick by default- arguably misleading, as it could be used for general makeup var/lip_color = "white" + var/nail_style = null + var/nail_color = "white" + var/age = 30 //Player's age var/underwear = "Nude" //Which underwear the player wants diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index e822b381..74a38d3e 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -550,6 +550,12 @@ GLOBAL_LIST_EMPTY(roundstart_races) MA.color = "#[H.socks_color]" standing += MA + // nail paint (hyper) + if(H.nail_style) + var/mutable_appearance/nail_overlay = mutable_appearance('hyperstation/icons/mobs/nails.dmi', "nails", -HANDS_PART_LAYER) + nail_overlay.color = H.nail_color + standing += nail_overlay + if(standing.len) H.overlays_standing[BODY_LAYER] = standing diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index ed901ee6..3a56fcff 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -142,3 +142,5 @@ var/typing_indicator_timerid /// Current state of our typing indicator. Used for cut overlay, DO NOT RUNTIME ASSIGN OTHER THAN FROM SHOW/CLEAR. Used to absolutely ensure we do not get stuck overlays. var/mutable_appearance/typing_indicator_current + + vis_flags = VIS_INHERIT_PLANE //when this be added to vis_contents of something it inherit something.plane, important for visualisation of mob in openspace. diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm index d2e6ece7..9e6cef6e 100644 --- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm +++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm @@ -465,7 +465,7 @@ has_panel_overlay = FALSE amount = 10 pixel_y = 6 - layer = WALL_OBJ_LAYER + layer = 4 circuit = /obj/item/circuitboard/machine/chem_dispenser/drinks working_state = null nopower_state = null diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index 18f2c761..4fefc0fd 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -14,7 +14,7 @@ taste_description = "alcohol" var/boozepwr = 65 //Higher numbers equal higher hardness, higher hardness equals more intense alcohol poisoning pH = 7.33 - hydration = 1 * REAGENTS_METABOLISM + hydration = 1 /* Boozepwr Chart diff --git a/code/modules/reagents/chemistry/reagents/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drink_reagents.dm index d250f025..ed5fba9d 100644 --- a/code/modules/reagents/chemistry/reagents/drink_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drink_reagents.dm @@ -11,7 +11,7 @@ glass_icon_state = "glass_orange" glass_name = "glass of orange juice" glass_desc = "Vitamins! Yay!" - hydration = 4 * REAGENTS_METABOLISM + hydration = 4 pH = 3.3 /datum/reagent/consumable/orangejuice/on_mob_life(mob/living/carbon/M) @@ -28,7 +28,7 @@ glass_icon_state = "glass_red" glass_name = "glass of tomato juice" glass_desc = "Are you sure this is tomato juice?" - hydration = 4 * REAGENTS_METABOLISM + hydration = 4 /datum/reagent/consumable/tomatojuice/on_mob_life(mob/living/carbon/M) if(M.getFireLoss() && prob(20)) @@ -45,7 +45,7 @@ glass_name = "glass of lime juice" glass_desc = "A glass of sweet-sour lime juice." pH = 2.2 - hydration = 3 * REAGENTS_METABOLISM + hydration = 4 /datum/reagent/consumable/limejuice/on_mob_life(mob/living/carbon/M) if(M.getToxLoss() && prob(20)) @@ -61,7 +61,7 @@ glass_icon_state = "carrotjuice" glass_name = "glass of carrot juice" glass_desc = "It's just like a carrot but without crunching." - hydration = 4 * REAGENTS_METABOLISM + hydration = 4 /datum/reagent/consumable/carrotjuice/on_mob_life(mob/living/carbon/M) M.adjust_blurriness(-1) @@ -83,7 +83,7 @@ glass_icon_state = "berryjuice" glass_name = "glass of berry juice" glass_desc = "Berry juice. Or maybe it's jam. Who cares?" - hydration = 4 * REAGENTS_METABOLISM + hydration = 4 /datum/reagent/consumable/applejuice name = "Apple Juice" @@ -91,7 +91,7 @@ color = "#ECFF56" // rgb: 236, 255, 86 taste_description = "apples" pH = 3.2 // ~ 2.7 -> 3.7 - hydration = 4 * REAGENTS_METABOLISM + hydration = 4 /datum/reagent/consumable/poisonberryjuice name = "Poison Berry Juice" @@ -101,7 +101,7 @@ glass_icon_state = "poisonberryjuice" glass_name = "glass of berry juice" glass_desc = "Berry juice. Or maybe it's poison. Who cares?" - hydration = 2 * REAGENTS_METABOLISM + hydration = 4 /datum/reagent/consumable/poisonberryjuice/on_mob_life(mob/living/carbon/M) M.adjustToxLoss(1, 0) @@ -116,7 +116,7 @@ glass_icon_state = "glass_red" glass_name = "glass of watermelon juice" glass_desc = "A glass of watermelon juice." - hydration = 4 * REAGENTS_METABOLISM + hydration = 4 /datum/reagent/consumable/lemonjuice name = "Lemon Juice" @@ -127,7 +127,7 @@ glass_name = "glass of lemon juice" glass_desc = "Sour..." pH = 2 - hydration = 4 * REAGENTS_METABOLISM + hydration = 4 /datum/reagent/consumable/strawberryjuice name = "Strawberry Juice" @@ -136,7 +136,7 @@ taste_description = "strawberry" glass_name = "glass of strawberry juice" glass_desc = "Refreshing seasonal summer drink." - hydration = 4 * REAGENTS_METABOLISM + hydration = 4 /datum/reagent/consumable/banana name = "Banana Juice" @@ -146,7 +146,7 @@ glass_icon_state = "banana" glass_name = "glass of banana juice" glass_desc = "The raw essence of a banana. HONK." - hydration = 1 * REAGENTS_METABOLISM + hydration = 4 /datum/reagent/consumable/banana/on_mob_life(mob/living/carbon/M) if((ishuman(M) && M.job == "Clown") || ismonkey(M)) @@ -210,7 +210,7 @@ description = "The juice of a bunch of grapes. Guaranteed non-alcoholic." color = "#290029" // dark purple taste_description = "grape soda" - hydration = 2 * REAGENTS_METABOLISM + hydration = 4 /datum/reagent/consumable/milk name = "Milk" @@ -221,7 +221,7 @@ glass_name = "milk drum" glass_desc = "White and nutritious goodness!" pH = 6.5 - hydration = 2 * REAGENTS_METABOLISM + hydration = 3 /datum/reagent/consumable/milk/on_mob_life(mob/living/carbon/M) if(HAS_TRAIT(M, TRAIT_CALCIUM_HEALER)) @@ -243,7 +243,7 @@ glass_icon_state = "glass_white" glass_name = "glass of soy milk" glass_desc = "White and nutritious soy goodness!" - hydration = 2 * REAGENTS_METABOLISM + hydration = 3 /datum/reagent/consumable/soymilk/on_mob_life(mob/living/carbon/M) if(M.getBruteLoss() && prob(20)) @@ -260,7 +260,7 @@ glass_icon_state = "glass_white" glass_name = "glass of coconut milk" glass_desc = "White and nutritious goodness!" - hydration = 4 * REAGENTS_METABOLISM + hydration = 3 /datum/reagent/consumable/coconutmilk/on_mob_life(mob/living/carbon/M) if(M.getBruteLoss() && prob(20)) @@ -276,7 +276,7 @@ glass_icon_state = "glass_white" glass_name = "glass of cream" glass_desc = "Ewwww..." - hydration = 2 * REAGENTS_METABOLISM + hydration = 3 /datum/reagent/consumable/cream/on_mob_life(mob/living/carbon/M) if(M.getBruteLoss() && prob(20)) @@ -294,7 +294,7 @@ glass_icon_state = "glass_brown" glass_name = "glass of coffee" glass_desc = "Don't drop it, or you'll send scalding liquid and glass shards everywhere." - hydration = 2 * REAGENTS_METABOLISM + hydration = 3 /datum/reagent/consumable/coffee/overdose_process(mob/living/M) M.Jitter(5) @@ -320,7 +320,7 @@ glass_icon_state = "teaglass" glass_name = "glass of tea" glass_desc = "Drinking it from here would not seem right." - hydration = 2 * REAGENTS_METABOLISM + hydration = 4 /datum/reagent/consumable/tea/on_mob_life(mob/living/carbon/M) M.dizziness = max(0,M.dizziness-2) @@ -341,7 +341,7 @@ glass_icon_state = "lemonpitcher" glass_name = "pitcher of lemonade" glass_desc = "This drink leaves you feeling nostalgic for some reason." - hydration = 4 * REAGENTS_METABOLISM + hydration = 4 /datum/reagent/consumable/tea/arnold_palmer name = "Arnold Palmer" @@ -353,7 +353,7 @@ glass_icon_state = "arnold_palmer" glass_name = "Arnold Palmer" glass_desc = "You feel like taking a few golf swings after a few swigs of this." - hydration = 4 * REAGENTS_METABOLISM + hydration = 4 /datum/reagent/consumable/tea/arnold_palmer/on_mob_life(mob/living/carbon/M) if(prob(5)) @@ -370,7 +370,7 @@ glass_icon_state = "icedcoffeeglass" glass_name = "iced coffee" glass_desc = "A drink to perk you up and refresh you!" - hydration = 2 * REAGENTS_METABOLISM + hydration = 3 /datum/reagent/consumable/icecoffee/on_mob_life(mob/living/carbon/M) M.dizziness = max(0,M.dizziness-5) @@ -390,7 +390,7 @@ glass_icon_state = "icedteaglass" glass_name = "iced tea" glass_desc = "All natural, antioxidant-rich flavour sensation." - hydration = 2 * REAGENTS_METABOLISM + hydration = 3 /datum/reagent/consumable/icetea/on_mob_life(mob/living/carbon/M) M.dizziness = max(0,M.dizziness-2) @@ -410,7 +410,7 @@ glass_icon_state = "glass_brown" glass_name = "glass of Space Cola" glass_desc = "A glass of refreshing Space Cola." - hydration = 2 * REAGENTS_METABOLISM + hydration = 3 /datum/reagent/consumable/space_cola/on_mob_life(mob/living/carbon/M) M.drowsyness = max(0,M.drowsyness-5) @@ -426,7 +426,7 @@ glass_icon_state = "nuka_colaglass" glass_name = "glass of Nuka Cola" glass_desc = "Don't cry, Don't raise your eye, It's only nuclear wasteland." - hydration = 2 * REAGENTS_METABOLISM + hydration = 3 /datum/reagent/consumable/nuka_cola/on_mob_metabolize(mob/living/L) ..() @@ -471,7 +471,7 @@ glass_icon_state = "dr_gibb_glass" glass_name = "glass of Dr. Gibb" glass_desc = "Dr. Gibb. Not as dangerous as the glass_name might imply." - hydration = 2 * REAGENTS_METABOLISM + hydration = 3 /datum/reagent/consumable/dr_gibb/on_mob_life(mob/living/carbon/M) M.drowsyness = max(0,M.drowsyness-6) @@ -486,7 +486,7 @@ glass_icon_state = "space-up_glass" glass_name = "glass of Space-Up" glass_desc = "Space-up. It helps you keep your cool." - hydration = 5 * REAGENTS_METABOLISM + hydration = 3 /datum/reagent/consumable/space_up/on_mob_life(mob/living/carbon/M) M.adjust_bodytemperature(-8 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) @@ -500,7 +500,7 @@ glass_icon_state = "glass_yellow" glass_name = "glass of lemon-lime" glass_desc = "You're pretty certain a real fruit has never actually touched this." - hydration = 2 * REAGENTS_METABOLISM + hydration = 3 /datum/reagent/consumable/lemon_lime/on_mob_life(mob/living/carbon/M) M.adjust_bodytemperature(-8 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) @@ -514,7 +514,7 @@ glass_icon_state = "glass_red" glass_name = "glass of Pwr Game" glass_desc = "Goes well with a Vlad's salad." - hydration = 2 * REAGENTS_METABOLISM + hydration = 3 /datum/reagent/consumable/pwr_game/on_mob_life(mob/living/carbon/M) M.adjust_bodytemperature(-8 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) @@ -528,7 +528,7 @@ glass_icon_state = "glass_red" glass_name = "glass of Shambler's juice" glass_desc = "Mmm mm, shambly." - hydration = 2 * REAGENTS_METABOLISM + hydration = 3 /datum/reagent/consumable/shamblers/on_mob_life(mob/living/carbon/M) M.adjust_bodytemperature(-8 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) @@ -543,7 +543,7 @@ glass_icon_state = "grey_bull_glass" glass_name = "glass of Grey Bull" glass_desc = "Surprisingly it isnt grey." - hydration = 2 * REAGENTS_METABOLISM + hydration = 3 /datum/reagent/consumable/grey_bull/on_mob_metabolize(mob/living/L) ..() @@ -569,7 +569,7 @@ glass_icon_state = "glass_clear" glass_name = "glass of soda water" glass_desc = "Soda water. Why not make a scotch and soda?" - hydration = 4 * REAGENTS_METABOLISM + hydration = 4 /datum/reagent/consumable/sodawater/on_mob_life(mob/living/carbon/M) M.dizziness = max(0,M.dizziness-5) @@ -585,7 +585,7 @@ glass_icon_state = "glass_clear" glass_name = "glass of tonic water" glass_desc = "Quinine tastes funny, but at least it'll keep that Space Malaria away." - hydration = 4 * REAGENTS_METABOLISM + hydration = 4 /datum/reagent/consumable/tonic/on_mob_life(mob/living/carbon/M) M.dizziness = max(0,M.dizziness-5) @@ -604,7 +604,7 @@ glass_icon_state = "iceglass" glass_name = "glass of ice" glass_desc = "Generally, you're supposed to put something else in there too..." - hydration = 5 * REAGENTS_METABOLISM //ice is water dummy, just as good. + hydration = 5 /datum/reagent/consumable/ice/on_mob_life(mob/living/carbon/M) M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) @@ -619,7 +619,7 @@ glass_icon_state = "soy_latte" glass_name = "soy latte" glass_desc = "A nice and refreshing beverage while you're reading." - hydration = 2 * REAGENTS_METABOLISM + hydration = 3 /datum/reagent/consumable/soy_latte/on_mob_life(mob/living/carbon/M) M.dizziness = max(0,M.dizziness-5) @@ -641,7 +641,7 @@ glass_icon_state = "cafe_latte" glass_name = "cafe latte" glass_desc = "A nice, strong and refreshing beverage while you're reading." - hydration = 2 * REAGENTS_METABOLISM + hydration = 3 /datum/reagent/consumable/cafe_latte/on_mob_life(mob/living/carbon/M) M.dizziness = max(0,M.dizziness-5) @@ -663,7 +663,7 @@ glass_icon_state = "doctorsdelightglass" glass_name = "Doctor's Delight" glass_desc = "The space doctor's favorite. Guaranteed to restore bodily injury; side effects include cravings and hunger." - hydration = 2 * REAGENTS_METABOLISM + hydration = 3 /datum/reagent/consumable/doctor_delight/on_mob_life(mob/living/carbon/M) M.adjustBruteLoss(-0.5, 0) @@ -730,7 +730,7 @@ glass_icon_state = "pumpkin_latte" glass_name = "pumpkin latte" glass_desc = "A mix of coffee and pumpkin juice." - hydration = 2 * REAGENTS_METABOLISM + hydration = 3 /datum/reagent/consumable/gibbfloats name = "Gibb Floats" @@ -742,14 +742,14 @@ glass_icon_state = "gibbfloats" glass_name = "Gibbfloat" glass_desc = "Dr. Gibb with ice cream on top." - hydration = 3 * REAGENTS_METABOLISM + hydration = 3 /datum/reagent/consumable/pumpkinjuice name = "Pumpkin Juice" description = "Juiced from real pumpkin." color = "#FFA500" taste_description = "pumpkin" - hydration = 2 * REAGENTS_METABOLISM + hydration = 3 /datum/reagent/consumable/blumpkinjuice name = "Blumpkin Juice" @@ -766,7 +766,7 @@ glass_icon_state = "triplecitrus" //needs own sprite mine are trash glass_name = "glass of triple citrus" glass_desc = "A mixture of citrus juices. Tangy, yet smooth." - hydration = 2 * REAGENTS_METABOLISM + hydration = 3 /datum/reagent/consumable/grape_soda name = "Grape soda" @@ -775,7 +775,7 @@ taste_description = "grape soda" glass_name = "glass of grape juice" glass_desc = "It's grape (soda)!" - hydration = 2 * REAGENTS_METABOLISM + hydration = 3 /datum/reagent/consumable/grape_soda/on_mob_life(mob/living/carbon/M) M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) @@ -788,7 +788,7 @@ color = "#7D4E29" quality = DRINK_NICE taste_description = "chocolate milk" - hydration = 2 * REAGENTS_METABOLISM + hydration = 3 /datum/reagent/consumable/menthol name = "Menthol" @@ -810,7 +810,7 @@ taste_description = "sweet pomegranates" glass_name = "glass of grenadine" glass_desc = "Delicious flavored syrup." - hydration = 1 * REAGENTS_METABOLISM + hydration = 4 /datum/reagent/consumable/parsnipjuice name = "Parsnip Juice" @@ -818,7 +818,7 @@ color = "#FFA500" taste_description = "parsnip" glass_name = "glass of parsnip juice" - hydration = 1 * REAGENTS_METABOLISM + hydration = 4 /datum/reagent/consumable/pineapplejuice name = "Pineapple Juice" @@ -827,7 +827,7 @@ taste_description = "pineapple" glass_name = "glass of pineapple juice" glass_desc = "Tart, tropical, and hotly debated." - hydration = 2 * REAGENTS_METABOLISM + hydration = 4 /datum/reagent/consumable/peachjuice //Intended to be extremely rare due to being the limiting ingredients in the blazaam drink name = "Peach Juice" @@ -835,7 +835,7 @@ color = "#E78108" taste_description = "peaches" glass_name = "glass of peach juice" - hydration = 2 * REAGENTS_METABOLISM + hydration = 4 /datum/reagent/consumable/cream_soda name = "Cream Soda" @@ -846,7 +846,7 @@ glass_icon_state = "cream_soda" glass_name = "Cream Soda" glass_desc = "A classic space-American vanilla flavored soft drink." - hydration = 2 * REAGENTS_METABOLISM + hydration = 4 /datum/reagent/consumable/cream_soda/on_mob_life(mob/living/carbon/M) M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) @@ -888,7 +888,7 @@ taste_description = "sweet strawberry and milk cream" glass_name = "tall glass of strawberry milk" glass_desc = "Delicious flavored strawberry syrup mixed with milk." - hydration = 3 * REAGENTS_METABOLISM + hydration = 4 /datum/reagent/consumable/pinkmilk/on_mob_life(mob/living/carbon/M) if(prob(15)) @@ -905,7 +905,7 @@ taste_description = "sweet tea with a hint of strawberry" glass_name = "mug of strawberry tea" glass_desc = "Delicious traditional tea flavored with strawberries." - hydration = 2 * REAGENTS_METABOLISM + hydration = 4 /datum/reagent/consumable/tea/pinktea/on_mob_life(mob/living/carbon/M) if(prob(10)) @@ -921,7 +921,7 @@ glass_icon_state = "monkey_energy_glass" glass_name = "glass of Monkey Energy" glass_desc = "You can unleash the ape, but without the pop of the can?" - hydration = 1 * REAGENTS_METABOLISM + hydration = 4 /datum/reagent/consumable/monkey_energy/on_mob_life(mob/living/carbon/M) M.Jitter(20) @@ -939,7 +939,7 @@ glass_icon_state = "glass_yellow" glass_name = "glass of bungo juice" glass_desc = "Exotic! You feel like you are on vacation already." - hydration = 1 * REAGENTS_METABOLISM + hydration = 5 /datum/reagent/consumable/aloejuice name = "Aloe Juice" @@ -949,7 +949,7 @@ glass_icon_state = "glass_yellow" glass_name = "glass of aloe juice" glass_desc = "A healthy and refreshing juice." - hydration = 2 * REAGENTS_METABOLISM + hydration = 5 /datum/reagent/consumable/aloejuice/on_mob_life(mob/living/M) if(prob(30)) @@ -984,7 +984,7 @@ glass_icon_state = "wockyslush" glass_name = "Wocky Slush" glass_desc = "That thang bleedin' to the-... ya know I mean?" - hydration = 3 * REAGENTS_METABOLISM + hydration = 3 /datum/reagent/consumable/wockyslush/on_mob_life(mob/living/carbon/M) M.emote(pick("twitch","giggle","stare")) diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm index bb200cdc..b5384f8a 100644 --- a/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -18,6 +18,7 @@ /datum/reagent/consumable/on_mob_life(mob/living/carbon/M) current_cycle++ M.nutrition += nutriment_factor + M.thirst += hydration holder.remove_reagent(type, metabolization_rate) /datum/reagent/consumable/reaction_mob(mob/living/M, method=TOUCH, reac_volume) diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index 3c82ea56..6272d377 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -221,7 +221,8 @@ . = ..() if(iscarbon(M)) var/mob/living/carbon/patient = M - if(reac_volume >= 5 && HAS_TRAIT_FROM(patient, TRAIT_HUSK, "burn") && patient.getFireLoss() < THRESHOLD_UNHUSK) //One carp yields 12u rezadone. + var/vol = reac_volume + M.reagents.get_reagent_amount(/datum/reagent/medicine/rezadone) + if(vol >= 5 && HAS_TRAIT_FROM(patient, TRAIT_HUSK, "burn") && patient.getFireLoss() < THRESHOLD_UNHUSK) //One carp yields 12u rezadone. patient.cure_husk("burn") patient.visible_message("[patient]'s body rapidly absorbs moisture from the enviroment, taking on a more healthy appearance.") @@ -428,7 +429,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) overdose_threshold = 40 value = 6 -/datum/reagent/medicine/synthflesh/reaction_mob(mob/living/M, method=TOUCH, reac_volume,show_message = 1) +/datum/reagent/medicine/synthflesh/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message = 1) if(iscarbon(M)) if (M.stat == DEAD) show_message = 0 @@ -445,8 +446,9 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) if(show_message) to_chat(M, "You feel your burns and bruises healing! It stings like hell!") SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "painful_medicine", /datum/mood_event/painful_medicine) + var/vol = reac_volume + M.reagents.get_reagent_amount(/datum/reagent/medicine/synthflesh) //Has to be at less than THRESHOLD_UNHUSK burn damage and have 100 synthflesh before unhusking. Corpses dont metabolize. - if(HAS_TRAIT_FROM(M, TRAIT_HUSK, "burn") && M.getFireLoss() < THRESHOLD_UNHUSK && M.reagents.has_reagent(/datum/reagent/medicine/synthflesh, 100)) + if(HAS_TRAIT_FROM(M, TRAIT_HUSK, "burn") && M.getFireLoss() < THRESHOLD_UNHUSK && (vol >= 100)) M.cure_husk("burn") M.visible_message("Most of [M]'s burnt off or charred flesh has been restored.") ..() diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index aa87217b..b6094aae 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -258,7 +258,7 @@ glass_name = "glass of water" glass_desc = "The father of all refreshments." shot_glass_icon_state = "shotglassclear" - hydration = 10 * REAGENTS_METABOLISM + hydration = 5 /* * Water reaction to turf @@ -1242,6 +1242,7 @@ var/mob/living/carbon/human/H = M if(H.lip_style) H.lip_style = null + H.nail_style = null H.update_body() for(var/obj/item/I in C.held_items) SEND_SIGNAL(I, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm index 6bc9dbda..dae73f48 100644 --- a/code/modules/research/xenobiology/xenobiology.dm +++ b/code/modules/research/xenobiology/xenobiology.dm @@ -854,10 +854,10 @@ var/obj/vehicle/V = C var/datum/component/riding/R = V.GetComponent(/datum/component/riding) if(R) - if(R.vehicle_move_delay <= 1 ) + if(R.vehicle_move_delay <= 2 ) to_chat(user, "The [C] can't be made any faster!") return ..() - R.vehicle_move_delay = 1 + R.vehicle_move_delay = 2 to_chat(user, "You slather the red gunk over the [C], making it faster.") C.remove_atom_colour(WASHABLE_COLOUR_PRIORITY) diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm index f7a618fe..4319215c 100644 --- a/code/modules/uplink/uplink_items.dm +++ b/code/modules/uplink/uplink_items.dm @@ -1773,7 +1773,7 @@ datum/uplink_item/stealthy_weapons/taeclowndo_shoes cost = 2 restricted_roles = list("Curator") limited_stock = 1 //please don't spam deadchat - +/* Disabled because this is waaaay too chaotic for hyper /datum/uplink_item/role_restricted/his_grace name = "His Grace" desc = "An incredibly dangerous weapon recovered from a station overcome by the grey tide. Once activated, He will thirst for blood and must be used to kill to sate that thirst. \ @@ -1784,24 +1784,24 @@ datum/uplink_item/stealthy_weapons/taeclowndo_shoes cost = 20 restricted_roles = list("Chaplain") surplus = 5 //Very low chance to get it in a surplus crate even without being the chaplain - -///datum/uplink_item/role_restricted/clockwork_slab -/datum/uplink_item/dangerous/clockwork_slab +*/ +/datum/uplink_item/role_restricted/clockwork_slab name = "Clockwork Slab" desc = "A reverse engineered clockwork slab. Is this really a good idea?" item = /obj/item/clockwork/slab/traitor cost = 20 refundable = TRUE - //restricted_roles = list("Chaplain","Curator") + restricted_roles = list("Chaplain","Curator") + cant_discount = TRUE -///datum/uplink_item/role_restricted/arcane_tome -/datum/uplink_item/dangerous/arcane_tome +/datum/uplink_item/role_restricted/arcane_tome name = "Arcane Tome" desc = "A 'replica' of a Nar'sian tome. This is probably a bad idea..." item = /obj/item/tome/traitor cost = 20 refundable = TRUE - //restricted_roles = list("Chaplain","Curator") + restricted_roles = list("Chaplain","Curator") + cant_discount = TRUE /datum/uplink_item/role_restricted/explosive_hot_potato name = "Exploding Hot Potato" diff --git a/code/modules/vending/clothesmate.dm b/code/modules/vending/clothesmate.dm index 92d5b25a..9c6caf8c 100644 --- a/code/modules/vending/clothesmate.dm +++ b/code/modules/vending/clothesmate.dm @@ -102,6 +102,7 @@ /obj/item/clothing/suit/toggle/jacket_purple = 3, /obj/item/clothing/suit/toggle/jacket_white = 3, /obj/item/clothing/suit/jacket/letterman_red = 3, + /obj/item/clothing/suit/fluffyhalfcrop = 3, /obj/item/clothing/ears/headphones = 10, /obj/item/clothing/suit/apron/purple_bartender = 4, /obj/item/clothing/under/rank/bartender/purple = 4, diff --git a/hyperstation/code/controllers/subsystem/economy.dm b/hyperstation/code/controllers/subsystem/economy.dm index b69e29c8..e30e05c7 100644 --- a/hyperstation/code/controllers/subsystem/economy.dm +++ b/hyperstation/code/controllers/subsystem/economy.dm @@ -3,7 +3,8 @@ SUBSYSTEM_DEF(economy) wait = 5 MINUTES init_order = INIT_ORDER_ECONOMY runlevels = RUNLEVEL_GAME + flags = SS_NO_FIRE //Let's not forget this. This subsystem does not use fire and was needlessly using CPU. var/roundstart_paychecks = 5 var/budget_pool = 35000 var/list/generated_accounts = list() - var/list/bank_accounts = list() //List of normal accounts (not department accounts) \ No newline at end of file + var/list/bank_accounts = list() //List of normal accounts (not department accounts) diff --git a/hyperstation/code/game/objects/items/cosmetics.dm b/hyperstation/code/game/objects/items/cosmetics.dm new file mode 100644 index 00000000..e3026747 --- /dev/null +++ b/hyperstation/code/game/objects/items/cosmetics.dm @@ -0,0 +1,77 @@ +//hyperstation 13 nail polish + +/obj/item/nailpolish + name = "nail polish" + desc = "Paint with a fine brush to do your nails, or someone elses." + icon = 'hyperstation/icons/obj/cosmetic.dmi' + icon_state = "nailcap" + item_state = "nailpolish" + w_class = WEIGHT_CLASS_SMALL + var/paint = "black" + price = 5 + var/mutable_appearance/bottle //show the colour on the bottle. + +/obj/item/nailpolish/red + name = "red nail polish" + paint = "red" + +/obj/item/nailpolish/blue + name = "blue nail polish" + paint = "blue" + +/obj/item/nailpolish/aqua + name = "cyan nail polish" + paint = "aqua" + +/obj/item/nailpolish/black + name = "black nail polish" + paint = "black" + +/obj/item/nailpolish/white + name = "white nail polish" + paint = "white" + +/obj/item/nailpolish/navy + name = "navy nail polish" + paint = "navy" + +/obj/item/nailpolish/yellow + name = "yellow nail polish" + paint = "yellow" + +/obj/item/nailpolish/purple + name = "purple nail polish" + paint = "purple" + +/obj/item/nailpolish/Initialize() + . = ..() + bottle = mutable_appearance('hyperstation/icons/obj/cosmetic.dmi', "nailpolish") + bottle.color = paint + add_overlay(bottle) + + +/obj/item/nailpolish/attack(mob/M, mob/user) + if(!ismob(M)) + return + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(H.nail_style) //to stop stacking bugs + to_chat(user, "Remove the old nail polish first!") + + if(H == user) + user.visible_message("[user] does [user.p_their()] nails with \the [src].", \ + "You take a moment to apply \the [src]. Perfect!") + H.nail_style = "nails" + H.nail_color = paint + H.update_body() + else + user.visible_message("[user] begins to do [H]'s nails with \the [src].", \ + "You begin to apply \the [src] on [H]'s nails...") + if(do_after(user, 20, target = H)) + user.visible_message("[user] does [H]'s nails with \the [src].", \ + "You apply \the [src] on [H]'s nails.") + H.nail_style = "nails" + H.nail_color = paint + H.update_body() + else + to_chat(user, "Where are the nail on that?") \ No newline at end of file diff --git a/hyperstation/code/modules/arousal/arousalhud.dm b/hyperstation/code/modules/arousal/arousalhud.dm index d5c609ea..faafdb4c 100644 --- a/hyperstation/code/modules/arousal/arousalhud.dm +++ b/hyperstation/code/modules/arousal/arousalhud.dm @@ -54,7 +54,7 @@ dat += "Remove sounding rod (penis)
" for(var/obj/item/organ/genital/G in U.internal_organs) if(G.equipment) //they have equipment - dat += "Remove [G.equipment.name] ([G.name]).
" + dat += "Remove [G.equipment.name] ([G.name])
" dat += {"
"}//Newline for the objects //bottom options @@ -201,6 +201,9 @@ var/obj/item/organ/genital/vagina/O = usr.getorganslot("vagina") var/obj/item/I = O.equipment usr.put_in_hands(I) + if(istype(I, /obj/item/portalpanties)) + var/obj/item/portalpanties/P = I + P.remove() O.equipment = null if(href_list["removeequipmentbelly"]) diff --git a/hyperstation/code/obj/fleshlight.dm b/hyperstation/code/obj/fleshlight.dm new file mode 100644 index 00000000..7a12d3bf --- /dev/null +++ b/hyperstation/code/obj/fleshlight.dm @@ -0,0 +1,297 @@ +//Hyperstation 13 fleshlight +//Humbley request this doesnt get ported to other code bases, we strive to make things unique on our server and we dont have alot of coders +//but if you absolutely must. please give us some credit~ <3 + +/obj/item/fleshlight + name = "fleshlight" + desc = "A sex toy disguised as a flashlight, used to stimulate someones penis, complete with colour changing sleeve." + icon = 'hyperstation/icons/obj/fleshlight.dmi' + icon_state = "fleshlight_base" + item_state = "fleshlight" + w_class = WEIGHT_CLASS_SMALL + var/sleevecolor = "#ffcbd4" //pink + price = 8 + var/mutable_appearance/sleeve + var/inuse = 0 + +/obj/item/fleshlight/examine(mob/user) + . = ..() + . += "Alt-Click \the [src.name] to customize it." + +/obj/item/fleshlight/Initialize() + . = ..() + sleeve = mutable_appearance('hyperstation/icons/obj/fleshlight.dmi', "vagina") + sleeve.color = sleevecolor + add_overlay(sleeve) + +/obj/item/fleshlight/AltClick(mob/user) + . = ..() + var/style = input(usr, "Choose style", "Customize Fleshlight", "vagina") in list("vagina", "anus") + var/new_color = input(user, "Choose color.", "Customize Fleshlight", sleevecolor) as color|null + if(new_color) + cut_overlays() + sleeve = mutable_appearance('hyperstation/icons/obj/fleshlight.dmi', style) + sleevecolor = new_color + sleeve.color = new_color + add_overlay(sleeve) + return TRUE + +/obj/item/fleshlight/attack(mob/living/carbon/C, mob/living/user) + var/obj/item/organ/genital/penis/P = C.getorganslot("penis") + if(inuse == 1) //just to stop stacking and causing people to cum instantly + return + if(P&&P.is_exposed()) + inuse = 1 + if(!(C == user)) //if we are targeting someone else. + C.visible_message("[user] is trying to use [src] on [C]'s penis.", "[user] is trying to use [src] on your penis.") + + if(!do_mob(user, C, 3 SECONDS)) //3 second delay + inuse = 0 + return + + //checked if not used on yourself, if not, carry on. + playsound(src, 'sound/lewd/slaps.ogg', 30, 1, -1) //slapping sound + inuse = 0 + if(!(C == user)) //lewd flavour text + C.visible_message("[user] pumps [src] on [C]'s penis.", "[user] pumps [src] up and down on your penis.") + else + user.visible_message("[user] pumps [src] on their penis.", "You pump the fleshlight on your penis.") + + if(prob(30)) //30% chance to make them moan. + C.emote("moan") + + C.do_jitter_animation() + C.adjustArousalLoss(20) //make the target more aroused. + if (C.getArousalLoss() >= 100 && ishuman(C) && C.has_dna()) + C.mob_climax(forced_climax=TRUE) //make them cum if they are over the edge. + + return + + else + to_chat(user, "You don't see anywhere to use this on.") + + inuse = 0 + ..() + + +//Hyperstation 13 portal fleshlight +//kinky! + +/obj/item/portallight + name = "portal fleshlight" + desc = "A silver love(TM) fleshlight, used to stimulate someones penis, with bluespace tech that allows lovers to hump at a distance." + icon = 'hyperstation/icons/obj/fleshlight.dmi' + icon_state = "unpaired" + item_state = "fleshlight" + w_class = WEIGHT_CLASS_SMALL + var/partnercolor = "#ffcbd4" + var/partnerbase = "normal" + var/partnerorgan = "portal_vag" + price = 20 + var/mutable_appearance/sleeve + var/mutable_appearance/organ + var/inuse = 0 + var/paired = 0 + var/obj/item/portalunderwear + var/useable = FALSE + var/option = "" + +/obj/item/portallight/examine(mob/user) + . = ..() + if(!portalunderwear) + . += "The device is unpaired, to pair, swipe against a pair of portal panties(TM). " + else + . += "The device is paired, and awaiting input. " + +/obj/item/portallight/attack(mob/living/carbon/C, mob/living/user) //use portallight! nearly the same as the fleshlight apart from you have a buddy! + var/obj/item/organ/genital/penis/P = C.getorganslot("penis") + + if(inuse) //just to stop stacking and causing people to cum instantly + return + if(!useable) + to_chat(user, "It seems the device has failed or your partner is not wearing their device.") + + if(C == user)//if your using it on yourself, more options! otherwise, just fuck. + option = input(usr, "Choose action", "Portal Fleshlight", "Fuck") in list("Fuck", "Lick", "Touch") + else + option = "Fuck" + + var/obj/item/organ/genital/vagina/V = portalunderwear.loc + if(!V) + return + var/mob/living/carbon/human/M = V.owner + + if(option == "Fuck"&&!P.is_exposed()) //we are trying to fuck with no penis! + to_chat(user, "You don't see anywhere to use this on.") + return + else //other options dont need checks + inuse = 1 + if(!(C == user)) //if we are targeting someone else. + C.visible_message("[user] is trying to use [src] on [C]'s penis.", "[user] is trying to use [src] on your penis.") + + if(!do_mob(user, C, 3 SECONDS)) //3 second delay + inuse = 0 + return + + //checked if not used on yourself, if not, carry on. + if(option == "Fuck") + playsound(src, 'sound/lewd/slaps.ogg', 30, 1, -1) //slapping sound for fuck. + + inuse = 0 + if(!(C == user)) + C.visible_message("[user] pumps [src] on [C]'s penis.", "[user] pumps [src] up and down on your penis.") + else + if(option == "Fuck") + user.visible_message("[user] pumps [src] on their penis.", "You pump the fleshlight on your penis.") + if(option == "Lick") + user.visible_message("[user] licks into [src].", "You lick into [src].") + if(option == "Touch") + user.visible_message("[user] touches softly against [src].", "You touch softly on [src].") + + + if(prob(30)) //30% chance to make your partner moan. + M.emote("moan") + + if(option == "Fuck")// normal fuck + to_chat(M, "You feel a [P.shape] shaped penis pumping through the portal into your vagina.")//message your partner and kinky! + if(prob(30)) //30% chance to make them moan. + C.emote("moan") + if(prob(30)) //30% chance to make your partner moan. + M.emote("moan") + C.adjustArousalLoss(20) + M.adjustArousalLoss(20) + M.do_jitter_animation() //make your partner shake too! + if(option == "Lick") + to_chat(M, "You feel a tongue lick you through the portal against your vagina.") + M.adjustArousalLoss(10) + if(option == "Touch") + to_chat(M, "You feel someone touching your vagina through the portal.") + M.adjustArousalLoss(5) + + if (C.getArousalLoss() >= 100 && ishuman(C) && C.has_dna()) + var/mob/living/carbon/human/O = C + O.mob_climax_partner(P, M, TRUE, FALSE, FALSE, TRUE) //climax with their partner remotely! + return + ..() + +/obj/item/portallight/proc/updatesleeve() + //get their looks and vagina colour! + cut_overlays()//remove current overlays + + var/obj/item/organ/genital/vagina/V = portalunderwear.loc + var/mob/living/carbon/human/H = V.owner + + if(H) //if the portal panties are on someone. + sleeve = mutable_appearance('hyperstation/icons/obj/fleshlight.dmi', "portal_sleeve_normal") + if(H.dna.species.name == "Lizardperson") // lizard nerd + sleeve = mutable_appearance('hyperstation/icons/obj/fleshlight.dmi', "portal_sleeve_lizard") + + if(H.dna.species.name == "Slimeperson") // slime nerd + sleeve = mutable_appearance('hyperstation/icons/obj/fleshlight.dmi', "portal_sleeve_slime") + + sleeve.color = "#" + H.dna.features["mcolor"] + add_overlay(sleeve) + + organ = mutable_appearance('hyperstation/icons/obj/fleshlight.dmi', "portal_vag") + organ.color = portalunderwear.loc.color + + useable = TRUE + add_overlay(organ) + else + useable = FALSE + +//Hyperstation 13 portal underwear +//can be attached to vagina, just like the vibrator, still requires pairing with the portallight + +/obj/item/portalpanties + name = "portal panties" + desc = "A silver love(TM) pair of portal underwear, with bluespace tech allows lovers to hump at a distance. Needs to be paired with a portal fleshlight before use." + icon = 'hyperstation/icons/obj/fleshlight.dmi' + icon_state = "portalpanties" + item_state = "fleshlight" + w_class = WEIGHT_CLASS_SMALL + var/obj/item/portallight + var/attached = FALSE + +/obj/item/portalpanties/examine(mob/user) + . = ..() + if(!portallight) + . += "The device is unpaired, to pair, swipe the fleshlight against this pair of portal panties(TM). " + else + . += "The device is paired, and awaiting attachment. " + + +/obj/item/portalpanties/attackby(obj/item/I, mob/living/user) //pairing + if(istype(I, /obj/item/portallight)) + var/obj/item/portallight/P = I + if(!P.portalunderwear) //make sure it aint linked to someone else + portallight = P //pair the fleshlight + P.portalunderwear = src //pair the panties on the fleshlight. + P.icon_state = "paired" //we are paired! + playsound(src, 'sound/machines/ping.ogg', 50, FALSE) + to_chat(user, "[P] has been linked up successfully.") + else + to_chat(user, "[P] has already been linked to another pair of underwear.") + else + ..() //just allows people to hit it with other objects, if they so wished. + +/obj/item/portalpanties/attack(mob/living/carbon/C, mob/living/user) + + if(!portallight) //we arent paired yet! noobie trap, let them know. + to_chat(user, "[src] can only be attached once paired with a portal fleshlight.") + return + + var/obj/item/organ/genital/picked_organ + var/mob/living/carbon/human/S = user + var/mob/living/carbon/human/T = C + picked_organ = S.target_genitals(T) //allowing to pick organ for anus down the line + if(picked_organ) + C.visible_message("[user] is trying to attach [src] to [T]!",\ + "[user] is trying to put [src] on you!") + if(!do_mob(user, C, 5 SECONDS))//warn them and have a delay of 5 seconds to apply. + return + + if(!(picked_organ.name == "vagina")) //only fits on a vagina + to_chat(user, "[src] can only be attached to a vagina.") + return + + if(!picked_organ.equipment) + to_chat(user, "You wrap [src] around [T]'s [picked_organ.name].") + else + to_chat(user, "They already have a [picked_organ.equipment.name] there.") + return + + if(!user.transferItemToLoc(src, picked_organ)) //check if you can put it in + return + src.attached = TRUE + picked_organ.equipment = src + + var/obj/item/portallight/P = portallight + //now we need to send what they look like, but saddly if the person changes colour for what ever reason, it wont update. but dont tell people shh. + if(P) //just to make sure + P.updatesleeve() + + else + to_chat(user, "You don't see anywhere to attach this.") + +/obj/item/portalpanties/proc/remove() //if taken off update it. + if(portallight) + var/obj/item/portallight/P = portallight + P.updatesleeve() + +/obj/item/storage/box/portallight + name = "Portal Fleshlight and Underwear" + icon = 'hyperstation/icons/obj/fleshlight.dmi' + desc = "A small silver box with Silver Love Co embossed." + icon_state = "box" + price = 15 + +// portal fleshlight box +/obj/item/storage/box/portallight/PopulateContents() + new /obj/item/portallight/(src) + new /obj/item/portalpanties/(src) + new /obj/item/paper/fluff/portallight(src) + +/obj/item/paper/fluff/portallight + name = "Portal Fleshlight Instructions" + info = "Thank you for purchasing the Silver Love Portal Fleshlight!
To use, simply register your new portal fleshlight with the provided underwear to link them together. The ask your lover to wear the underwear.
Have fun lovers,

Wilhelmina Steiner." \ No newline at end of file diff --git a/hyperstation/code/obj/kinkyclothes.dm b/hyperstation/code/obj/kinkyclothes.dm index 8fd9c43d..4c9f61ea 100644 --- a/hyperstation/code/obj/kinkyclothes.dm +++ b/hyperstation/code/obj/kinkyclothes.dm @@ -39,7 +39,7 @@ //the classic click clack obj/item/clothing/neck/stole - name = "white stole" + name = "white boa" desc = "Fluffy neck wear to keep you warm, and attract others." icon = 'hyperstation/icons/obj/clothing/neck.dmi' w_class = WEIGHT_CLASS_SMALL @@ -48,11 +48,22 @@ obj/item/clothing/neck/stole price = 3 obj/item/clothing/neck/stole/black - name = "black stole" + name = "black boa" desc = "Fluffy neck wear to keep you warm, and attract others." icon = 'hyperstation/icons/obj/clothing/neck.dmi' w_class = WEIGHT_CLASS_SMALL icon_state = "stole" item_state = "" //no inhands color = "#3d3d3d" - price = 3 \ No newline at end of file + price = 3 + +/obj/item/clothing/suit/fluffyhalfcrop + name = "fluffy half-crop jacket" + desc = "A fluffy synthetic fur half-cropped jacket, less about warmth, more about style!" + icon_state = "fluffy" + item_state = "fluffy" + icon = 'hyperstation/icons/obj/clothing/suits.dmi' + alternate_worn_icon = 'hyperstation/icons/mobs/suits.dmi' + body_parts_covered = CHEST|LEGS|ARMS + min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT + mutantrace_variation = NO_MUTANTRACE_VARIATION diff --git a/hyperstation/icons/mobs/nails.dmi b/hyperstation/icons/mobs/nails.dmi new file mode 100644 index 00000000..575b5132 Binary files /dev/null and b/hyperstation/icons/mobs/nails.dmi differ diff --git a/hyperstation/icons/mobs/suits.dmi b/hyperstation/icons/mobs/suits.dmi index 1fee3289..cd3335dd 100644 Binary files a/hyperstation/icons/mobs/suits.dmi and b/hyperstation/icons/mobs/suits.dmi differ diff --git a/hyperstation/icons/obj/clothing/suits.dmi b/hyperstation/icons/obj/clothing/suits.dmi index b3e25949..3c73887c 100644 Binary files a/hyperstation/icons/obj/clothing/suits.dmi and b/hyperstation/icons/obj/clothing/suits.dmi differ diff --git a/hyperstation/icons/obj/cosmetic.dmi b/hyperstation/icons/obj/cosmetic.dmi new file mode 100644 index 00000000..2c329e9c Binary files /dev/null and b/hyperstation/icons/obj/cosmetic.dmi differ diff --git a/hyperstation/icons/obj/fleshlight.dmi b/hyperstation/icons/obj/fleshlight.dmi new file mode 100644 index 00000000..434d9aca Binary files /dev/null and b/hyperstation/icons/obj/fleshlight.dmi differ diff --git a/hyperstation/sound/misc/bookify.ogg b/hyperstation/sound/misc/bookify.ogg new file mode 100644 index 00000000..bba99ace Binary files /dev/null and b/hyperstation/sound/misc/bookify.ogg differ diff --git a/icons/effects/parallax.dmi b/icons/effects/parallax.dmi index 22f091ff..abea71f2 100644 Binary files a/icons/effects/parallax.dmi and b/icons/effects/parallax.dmi differ diff --git a/icons/obj/doors/blastdoor.dmi b/icons/obj/doors/blastdoor.dmi index c72d29b5..30847afa 100644 Binary files a/icons/obj/doors/blastdoor.dmi and b/icons/obj/doors/blastdoor.dmi differ diff --git a/modular_citadel/code/game/machinery/vending.dm b/modular_citadel/code/game/machinery/vending.dm index b65088a8..88c7e553 100644 --- a/modular_citadel/code/game/machinery/vending.dm +++ b/modular_citadel/code/game/machinery/vending.dm @@ -65,6 +65,8 @@ /obj/item/clothing/under/jabroni = 3, /obj/item/electropack/vibrator/small = 2, /obj/item/electropack/vibrator = 2, + /obj/item/fleshlight = 2, + /obj/item/storage/box/portallight = 1, ) contraband = list( /obj/item/clothing/under/gear_harness = 3, diff --git a/modular_citadel/code/modules/arousal/arousal.dm b/modular_citadel/code/modules/arousal/arousal.dm index a4518e6f..a9a5ca23 100644 --- a/modular_citadel/code/modules/arousal/arousal.dm +++ b/modular_citadel/code/modules/arousal/arousal.dm @@ -321,7 +321,7 @@ setArousalLoss(min_arousal) -/mob/living/carbon/human/proc/mob_climax_partner(obj/item/organ/genital/G, mob/living/L, spillage = TRUE, impreg = FALSE,cover = FALSE, mb_time = 30) //Used for climaxing with any living thing +/mob/living/carbon/human/proc/mob_climax_partner(obj/item/organ/genital/G, mob/living/L, spillage = TRUE, impreg = FALSE,cover = FALSE,remote = FALSE, mb_time = 30) //Used for climaxing with any living thing var/total_fluids = 0 var/datum/reagents/fluid_source = null @@ -369,7 +369,9 @@ setArousalLoss(min_arousal) if(spillage && !cover) - if(do_after(src, mb_time, target = src) && in_range(src, L)) + if(do_after(src, mb_time, target = src)) + if(!in_range(src, L) && !remote) + return fluid_source.trans_to(L, total_fluids*G.fluid_transfer_factor) total_fluids -= total_fluids*G.fluid_transfer_factor if(total_fluids > 5) @@ -408,6 +410,7 @@ if (L.mind == obj.target) L.mind.sexed = TRUE //sexed to_chat(src, "You feel deep satisfaction with yourself.") + //Hyper - remote if(impreg) //Role them odds, only people with the dicks can send the chance to the person with the settings enabled at the momment. @@ -491,7 +494,7 @@ if(!G.dontlist) genitals_list += G if(genitals_list.len) - ret_organ = input(src, "", "Gentials", null) as null|obj in genitals_list + ret_organ = input(src, "", "Genitals", null) as null|obj in genitals_list return ret_organ return null //error stuff diff --git a/modular_citadel/code/modules/arousal/organs/genitals.dm b/modular_citadel/code/modules/arousal/organs/genitals.dm index 82d295a0..af313a3d 100644 --- a/modular_citadel/code/modules/arousal/organs/genitals.dm +++ b/modular_citadel/code/modules/arousal/organs/genitals.dm @@ -430,12 +430,12 @@ //otherwise, appear under clothing if(G.slot == "penis" || G.slot == "testicles") if(G.size < 3) //is actually "less than 11 inches" - genital_overlay.layer = -GENITALS_UNDER_LAYER + genital_overlay.layer = -GENITALS_UNDER_LAYER if(G.slot == "breasts") var/obj/item/organ/genital/breasts/B = G if(B.cached_size < 8) //anything smaller than a g-cup genital_overlay.layer = -GENITALS_UNDER_LAYER - + //Get the icon genital_overlay.icon_state = "[G.slot]_[S.icon_state]_[size]_[aroused_state]_[layertext]" colourcode = S.color_src diff --git a/modular_citadel/code/modules/client/loadout/backpack.dm b/modular_citadel/code/modules/client/loadout/backpack.dm index adb1d42a..7a257bdb 100644 --- a/modular_citadel/code/modules/client/loadout/backpack.dm +++ b/modular_citadel/code/modules/client/loadout/backpack.dm @@ -175,12 +175,12 @@ name = "Teal Lipstick" category = SLOT_IN_BACKPACK path = /obj/item/lipstick/teal - + /datum/gear/lipstick_fuchsia name = "Fuchsia Lipstick" category = SLOT_IN_BACKPACK path = /obj/item/lipstick/fuchsia - + /datum/gear/lipstick_navy name = "Navy Blue Lipstick" category = SLOT_IN_BACKPACK @@ -196,6 +196,46 @@ category = SLOT_IN_BACKPACK path = /obj/item/lipstick/white +/datum/gear/nailpolish_red + name = "Red Nail Polish" + category = SLOT_IN_BACKPACK + path = /obj/item/nailpolish/red + +/datum/gear/nailpolish_blue + name = "Blue Nail Polish" + category = SLOT_IN_BACKPACK + path = /obj/item/nailpolish/blue + +/datum/gear/nailpolish_aqua + name = "Cyan Nail Polish" + category = SLOT_IN_BACKPACK + path = /obj/item/nailpolish/aqua + +/datum/gear/nailpolish_black + name = "Black Nail Polish" + category = SLOT_IN_BACKPACK + path = /obj/item/nailpolish/black + +/datum/gear/nailpolish_white + name = "White Nail Polish" + category = SLOT_IN_BACKPACK + path = /obj/item/nailpolish/white + +/datum/gear/nailpolish_navy + name = "Navy Nail Polish" + category = SLOT_IN_BACKPACK + path = /obj/item/nailpolish/navy + +/datum/gear/nailpolish_yellow + name = "Yellow Nail Polish" + category = SLOT_IN_BACKPACK + path = /obj/item/nailpolish/yellow + +/datum/gear/nailpolish_purple + name = "Purple Nail Polish" + category = SLOT_IN_BACKPACK + path = /obj/item/nailpolish/purple + /datum/gear/condom name = "Condom" category = SLOT_IN_BACKPACK diff --git a/modular_citadel/code/modules/mob/dead/new_player/sprite_accessories.dm b/modular_citadel/code/modules/mob/dead/new_player/sprite_accessories.dm index bf5b49fb..6312c697 100644 --- a/modular_citadel/code/modules/mob/dead/new_player/sprite_accessories.dm +++ b/modular_citadel/code/modules/mob/dead/new_player/sprite_accessories.dm @@ -1558,6 +1558,14 @@ datum/sprite_accessory/mam_tails/insect name = "Wolf" icon_state = "wolf" +/datum/sprite_accessory/mam_tails/spade + name = "Demon Spade" + icon_state = "spade" + +/datum/sprite_accessory/mam_tails_animated/spade + name = "Demon Spade" + icon_state = "spade" + /datum/sprite_accessory/mam_tails/synthliz recommended_species = list("synthliz") color_src = MUTCOLORS diff --git a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm index 7f8b9d47..5bce8969 100644 --- a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm +++ b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm @@ -12,7 +12,6 @@ glass_icon_state = "semen" glass_name = "chalice of semen" glass_desc = "In the Sumerian mythology, Enki - the God of water, was believed to have created the Tigris and Euphrates rivers by masturbating and ejaculating into their empty riverbeds." - hydration = 2 * REAGENTS_METABOLISM //thats one way to stay hydrated... /datum/reagent/consumable/semen/reaction_turf(turf/T, reac_volume) if(!istype(T)) @@ -56,7 +55,6 @@ color = "#AAAAAA77" can_synth = FALSE nutriment_factor = 0.5 * REAGENTS_METABOLISM - hydration = 1 * REAGENTS_METABOLISM //thats one way to stay hydrated... /obj/effect/decal/cleanable/femcum name = "female ejaculate" diff --git a/modular_citadel/icons/mob/mam_tails.dmi b/modular_citadel/icons/mob/mam_tails.dmi index 5db55a6b..583772d8 100644 Binary files a/modular_citadel/icons/mob/mam_tails.dmi and b/modular_citadel/icons/mob/mam_tails.dmi differ diff --git a/sound/lewd/slaps.ogg b/sound/lewd/slaps.ogg new file mode 100644 index 00000000..78cf4eca Binary files /dev/null and b/sound/lewd/slaps.ogg differ diff --git a/tgstation.dme b/tgstation.dme index 652cffdd..63f3f9ed 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3036,6 +3036,7 @@ #include "hyperstation\code\datums\ruins\lavaland.dm" #include "hyperstation\code\datums\traits\good.dm" #include "hyperstation\code\datums\traits\neutral.dm" +#include "hyperstation\code\game\objects\items\cosmetics.dm" #include "hyperstation\code\game\objects\structures\ghost_role_spawners.dm" #include "hyperstation\code\gamemode\traitor_lewd.dm" #include "hyperstation\code\gamemode\traitor_thief.dm" @@ -3089,6 +3090,7 @@ #include "hyperstation\code\obj\condom.dm" #include "hyperstation\code\obj\decal.dm" #include "hyperstation\code\obj\economy.dm" +#include "hyperstation\code\obj\fleshlight.dm" #include "hyperstation\code\obj\fluff.dm" #include "hyperstation\code\obj\kinkyclothes.dm" #include "hyperstation\code\obj\leash.dm"