diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_lust.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_lust.dmm new file mode 100644 index 00000000..fb7c958f --- /dev/null +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_lust.dmm @@ -0,0 +1,748 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"b" = ( +/obj/structure/table/gmushroom/gmushroompoker{ + desc = "You have a feeling this was used for more than dining."; + name = "dining table" + }, +/obj/item/trash/plate{ + pixel_x = 10; + pixel_y = 2 + }, +/obj/item/reagent_containers/food/snacks/grown/mushroom/plumphelmet{ + pixel_x = 16; + pixel_y = 8 + }, +/obj/structure/light_prism/spectral, +/turf/open/floor/gmushroom, +/area/ruin/unpowered) +"c" = ( +/obj/structure/gmushroomdresser, +/turf/open/floor/gmushroom, +/area/ruin/unpowered) +"d" = ( +/turf/closed/wall/mineral/gmushroom, +/area/ruin/unpowered) +"e" = ( +/obj/structure/lewdfountain/lust, +/turf/open/floor/grass/fairy/red, +/area/ruin/unpowered) +"f" = ( +/obj/structure/chair/gmushroom{ + dir = 8 + }, +/turf/open/floor/gmushroom, +/area/ruin/unpowered) +"g" = ( +/obj/effect/decal/cleanable/femcum, +/obj/effect/decal/cleanable/milk, +/obj/structure/chair/gmushroom{ + dir = 8 + }, +/turf/open/floor/gmushroom, +/area/ruin/unpowered) +"h" = ( +/obj/effect/decal/cleanable/semen, +/turf/open/floor/gmushroom, +/area/ruin/unpowered) +"i" = ( +/turf/closed/mineral/volcanic/lava_land_surface, +/area/lavaland/surface/outdoors) +"j" = ( +/obj/effect/decal/cleanable/semen, +/obj/item/dildo/custom, +/turf/open/floor/gmushroom, +/area/ruin/unpowered) +"k" = ( +/obj/item/grown/log/gmushroom, +/turf/open/floor/grass/fairy/purple{ + initial_gas_mix = "o2=14;n2=23;TEMP=300"; + planetary_atmos = 1 + }, +/area/lavaland/surface/outdoors) +"l" = ( +/obj/machinery/door/airlock/cult/friendly, +/obj/structure/fans/tiny/invisible, +/turf/open/floor/gmushroom, +/area/ruin/unpowered) +"m" = ( +/obj/structure/chair/gmushroom{ + dir = 4 + }, +/turf/open/floor/gmushroom, +/area/ruin/unpowered) +"o" = ( +/turf/open/floor/grass/fairy/green{ + initial_gas_mix = "o2=14;n2=23;TEMP=300"; + planetary_atmos = 1 + }, +/area/lavaland/surface/outdoors) +"p" = ( +/obj/effect/decal/cleanable/femcum, +/obj/structure/chair/gmushroom{ + dir = 4 + }, +/turf/open/floor/gmushroom, +/area/ruin/unpowered) +"q" = ( +/obj/effect/decal/cleanable/femcum, +/obj/structure/bed/gmushroomdogbed, +/turf/open/floor/gmushroom, +/area/ruin/unpowered) +"s" = ( +/obj/structure/light_prism/spectral, +/turf/open/floor/gmushroom, +/area/ruin/unpowered) +"t" = ( +/obj/effect/decal/cleanable/semen, +/obj/item/fleshlight, +/turf/open/floor/gmushroom, +/area/ruin/unpowered) +"u" = ( +/obj/effect/mapping_helpers/no_lava, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"v" = ( +/obj/structure/flora/redgrass/redg, +/turf/open/floor/grass/fairy/purple{ + initial_gas_mix = "o2=14;n2=23;TEMP=300"; + planetary_atmos = 1 + }, +/area/lavaland/surface/outdoors) +"w" = ( +/obj/effect/decal/cleanable/semen, +/obj/structure/table/gmushroom/gmushroompoker{ + desc = "You have a feeling this was used for more than dining."; + name = "dining table" + }, +/obj/item/trash/plate{ + pixel_x = 10; + pixel_y = 2 + }, +/obj/item/reagent_containers/food/snacks/pizzaslice/mushroom{ + pixel_x = 9; + pixel_y = 4 + }, +/turf/open/floor/gmushroom, +/area/ruin/unpowered) +"x" = ( +/obj/effect/decal/cleanable/femcum, +/obj/structure/table/gmushroom/gmushroompoker{ + desc = "You have a feeling this was used for more than dining."; + name = "dining table" + }, +/turf/open/floor/gmushroom, +/area/ruin/unpowered) +"y" = ( +/obj/structure/flora/gmushroom/gggmushroom{ + desc = "Mushroom! We're rich!" + }, +/obj/effect/mapping_helpers/no_lava, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"z" = ( +/obj/effect/decal/cleanable/femcum, +/obj/structure/chair/gmushroom{ + dir = 8 + }, +/turf/open/floor/gmushroom, +/area/ruin/unpowered) +"A" = ( +/obj/effect/decal/cleanable/femcum, +/obj/item/portallight, +/turf/open/floor/gmushroom, +/area/ruin/unpowered) +"B" = ( +/obj/structure/gmushroom/gmushroomstump, +/turf/open/floor/grass/fairy/green{ + initial_gas_mix = "o2=14;n2=23;TEMP=300"; + planetary_atmos = 1 + }, +/area/lavaland/surface/outdoors) +"C" = ( +/obj/structure/reagent_dispensers/keg/aphro, +/turf/open/floor/gmushroom, +/area/ruin/unpowered) +"D" = ( +/obj/structure/bonfire/prelit, +/turf/open/floor/grass/fairy/purple{ + initial_gas_mix = "o2=14;n2=23;TEMP=300"; + planetary_atmos = 1 + }, +/area/lavaland/surface/outdoors) +"E" = ( +/obj/structure/table/gmushroom/gmushroompoker{ + desc = "You have a feeling this was used for more than dining."; + name = "dining table" + }, +/obj/item/trash/plate{ + pixel_x = -10; + pixel_y = 2 + }, +/turf/open/floor/gmushroom, +/area/ruin/unpowered) +"F" = ( +/obj/structure/reagent_dispensers/keg/aphro/strong, +/turf/open/floor/gmushroom, +/area/ruin/unpowered) +"G" = ( +/obj/structure/table/gmushroom/gmushroompoker{ + desc = "You have a feeling this was used for more than dining."; + name = "dining table" + }, +/obj/item/trash/plate{ + pixel_x = -10; + pixel_y = 2 + }, +/obj/item/reagent_containers/food/snacks/grown/mushroom/amanita{ + pixel_x = -10; + pixel_y = 7 + }, +/turf/open/floor/gmushroom, +/area/ruin/unpowered) +"I" = ( +/obj/item/reagent_containers/food/snacks/grown/mushroom/jupitercup, +/turf/open/floor/gmushroom, +/area/ruin/unpowered) +"J" = ( +/obj/structure/flora/gmushroom/gggmushroom{ + desc = "Mushroom! We're rich!" + }, +/obj/effect/decal/remains/human{ + desc = "He ate the popeyes biscuit with no drink..."; + name = "Dusty Remains" + }, +/turf/open/floor/grass/fairy/blue{ + initial_gas_mix = "o2=14;n2=23;TEMP=300"; + planetary_atmos = 1 + }, +/area/lavaland/surface/outdoors) +"K" = ( +/obj/item/dildo/custom, +/turf/open/floor/gmushroom, +/area/ruin/unpowered) +"L" = ( +/turf/open/floor/gmushroom, +/area/ruin/unpowered) +"M" = ( +/obj/effect/decal/cleanable/femcum, +/obj/item/portalpanties, +/turf/open/floor/gmushroom, +/area/ruin/unpowered) +"N" = ( +/obj/effect/decal/cleanable/milk, +/obj/structure/light_prism/spectral, +/turf/open/floor/gmushroom, +/area/ruin/unpowered) +"O" = ( +/obj/effect/decal/cleanable/femcum, +/turf/open/floor/gmushroom, +/area/ruin/unpowered) +"P" = ( +/obj/structure/flora/gmushroom/gggmushroom{ + desc = "Mushroom! We're rich!" + }, +/turf/open/floor/grass/fairy/purple{ + initial_gas_mix = "o2=14;n2=23;TEMP=300"; + planetary_atmos = 1 + }, +/area/lavaland/surface/outdoors) +"Q" = ( +/obj/structure/flora/redgrass/redg, +/turf/open/floor/grass/fairy/green{ + initial_gas_mix = "o2=14;n2=23;TEMP=300"; + planetary_atmos = 1 + }, +/area/lavaland/surface/outdoors) +"S" = ( +/obj/structure/flora/gmushroom/gggmushroom{ + desc = "Mushroom! We're rich!" + }, +/turf/open/floor/grass/fairy/blue{ + initial_gas_mix = "o2=14;n2=23;TEMP=300"; + planetary_atmos = 1 + }, +/area/lavaland/surface/outdoors) +"T" = ( +/turf/open/floor/grass/fairy/blue{ + initial_gas_mix = "o2=14;n2=23;TEMP=300"; + planetary_atmos = 1 + }, +/area/lavaland/surface/outdoors) +"U" = ( +/obj/item/fleshlight, +/turf/open/floor/gmushroom, +/area/ruin/unpowered) +"V" = ( +/turf/open/floor/grass/fairy/purple{ + initial_gas_mix = "o2=14;n2=23;TEMP=300"; + planetary_atmos = 1 + }, +/area/lavaland/surface/outdoors) +"W" = ( +/obj/item/grown/log/gmushroom, +/turf/open/floor/grass/fairy/green{ + initial_gas_mix = "o2=14;n2=23;TEMP=300"; + planetary_atmos = 1 + }, +/area/lavaland/surface/outdoors) +"X" = ( +/obj/effect/decal/cleanable/semen, +/obj/structure/chair/gmushroom{ + dir = 4 + }, +/turf/open/floor/gmushroom, +/area/ruin/unpowered) +"Y" = ( +/obj/structure/flora/gmushroom/gggmushroom{ + desc = "Mushroom! We're rich!" + }, +/turf/open/floor/grass/fairy/green{ + initial_gas_mix = "o2=14;n2=23;TEMP=300"; + planetary_atmos = 1 + }, +/area/lavaland/surface/outdoors) +"Z" = ( +/obj/item/dildo/flared/gigantic, +/turf/open/floor/gmushroom, +/area/ruin/unpowered) + +(1,1,1) = {" +i +i +i +i +u +u +T +i +i +i +u +u +u +i +i +i +u +i +i +i +"} +(2,1,1) = {" +i +i +i +u +S +T +V +P +V +T +P +V +u +V +i +o +Q +u +i +i +"} +(3,1,1) = {" +i +S +i +V +V +o +v +T +T +V +V +T +V +V +T +Y +o +o +S +u +"} +(4,1,1) = {" +i +V +T +V +V +o +o +o +T +P +V +V +V +P +V +V +o +o +V +u +"} +(5,1,1) = {" +u +V +T +P +V +o +P +V +V +V +V +Q +o +o +V +o +o +Y +V +V +"} +(6,1,1) = {" +V +v +T +V +o +V +V +V +Q +o +V +Y +o +o +P +Q +o +T +T +v +"} +(7,1,1) = {" +V +S +T +o +o +Q +o +o +V +V +o +o +o +o +V +o +o +o +V +V +"} +(8,1,1) = {" +i +i +i +d +d +d +d +d +d +d +d +d +d +d +d +d +d +d +V +S +"} +(9,1,1) = {" +i +i +d +d +d +C +N +L +L +j +L +U +L +L +N +L +q +d +V +V +"} +(10,1,1) = {" +i +d +d +d +F +L +K +A +m +m +X +m +p +m +L +U +Z +d +u +V +"} +(11,1,1) = {" +i +d +d +e +L +h +I +K +G +x +b +E +G +w +O +L +h +l +o +u +"} +(12,1,1) = {" +i +d +d +d +F +L +K +M +f +f +g +f +f +z +h +U +Z +d +o +u +"} +(13,1,1) = {" +i +i +d +d +d +C +s +h +L +L +t +L +j +L +s +L +c +d +o +V +"} +(14,1,1) = {" +i +T +o +d +d +d +d +d +d +d +d +d +d +d +d +d +d +d +Y +v +"} +(15,1,1) = {" +T +J +T +Q +o +o +o +o +Y +o +o +o +o +W +o +o +o +Q +V +V +"} +(16,1,1) = {" +i +V +T +T +T +o +S +V +V +V +V +B +V +D +V +V +o +o +o +u +"} +(17,1,1) = {" +i +o +o +P +o +T +T +v +V +T +v +T +o +k +V +V +o +P +V +u +"} +(18,1,1) = {" +i +V +V +u +T +V +u +V +T +T +S +V +v +V +V +u +V +V +i +S +"} +(19,1,1) = {" +V +P +T +T +u +S +V +u +i +T +u +i +i +u +u +u +u +i +i +i +"} +(20,1,1) = {" +V +u +T +u +u +T +T +u +i +i +i +i +i +i +y +i +u +i +i +i +"} diff --git a/_maps/map_files/LayeniaStation/LayeniaStation.dmm b/_maps/map_files/LayeniaStation/LayeniaStation.dmm index 2d63af9b..9b9bd8b1 100644 --- a/_maps/map_files/LayeniaStation/LayeniaStation.dmm +++ b/_maps/map_files/LayeniaStation/LayeniaStation.dmm @@ -3319,7 +3319,7 @@ "jJq" = (/obj/machinery/door/poddoor/shutters/preopen{id = "robotics2"; name = "robotics lab shutters"},/obj/effect/spawner/structure/window,/obj/machinery/door/poddoor/shutters/preopen{id = "robotics2"; name = "robotics lab shutters"},/turf/open/floor/plating,/area/science/robotics/lab) "jJs" = (/obj/item/reagent_containers/food/snacks/grown/poppy,/turf/open/floor/carpet,/area/chapel/main) "jJv" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/button/door{id = "Disposal Exit 2"; name = "Disposal Exit Vent Control"; pixel_x = 25; pixel_y = -5; req_access_txt = "12"},/obj/machinery/button/massdriver{id = "Disposal Exit 1"; name = "Disposal Bay Vent Control"; pixel_x = 25; pixel_y = 4},/turf/open/floor/plasteel/dark,/area/maintenance/disposal) -"jJF" = (/obj/structure/table/wood,/obj/item/nullrod,/turf/open/floor/plasteel/grimy,/area/chapel/office) +"jJF" = (/obj/structure/table/wood,/obj/item/nullrod,/obj/item/book/granter/spell/smoke{name = "Mysterious Old Book of Cloud-Chasing"},/turf/open/floor/plasteel/grimy,/area/chapel/office) "jKa" = (/obj/structure/closet/firecloset,/obj/effect/turf_decal/stripes/line{dir = 4},/turf/open/floor/plasteel/dark,/area/science/misc_lab) "jKd" = (/obj/machinery/door/airlock/maintenance{name = "Law Office Maintenance"; req_access_txt = "38"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{name = "scrubbers pipe"},/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer3{name = "air supply pipe"},/turf/open/floor/plating,/area/lawoffice) "jKu" = (/obj/structure/table,/obj/item/camera_film,/obj/item/camera,/obj/machinery/light{dir = 1; pixel_y = 16},/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer1{name = "air scrubber"},/turf/open/floor/plasteel,/area/crew_quarters/fitness) diff --git a/code/__DEFINES/dcs/signals.dm b/code/__DEFINES/dcs/signals.dm index 06fc14fb..10aa54ee 100644 --- a/code/__DEFINES/dcs/signals.dm +++ b/code/__DEFINES/dcs/signals.dm @@ -731,3 +731,11 @@ // ///from datum/action/cyborg_small_sprite and sends when a cyborg changes modules #define COMSIG_CYBORG_MODULE_CHANGE "cyborg_module_change" + + +/* Attack signals. They should share the returned flags, to standardize the attack chain. */ +/// tool_act -> pre_attack -> target.attackby (item.attack) -> afterattack + ///Ends the attack chain. If sent early might cause posterior attacks not to happen. + #define COMPONENT_CANCEL_ATTACK_CHAIN (1<<0) + ///Skips the specific attack step, continuing for the next one to happen. + #define COMPONENT_SKIP_ATTACK (1<<1) \ No newline at end of file diff --git a/code/datums/ruins/lavaland.dm b/code/datums/ruins/lavaland.dm index ec69fdb9..c12b4cdc 100644 --- a/code/datums/ruins/lavaland.dm +++ b/code/datums/ruins/lavaland.dm @@ -89,6 +89,12 @@ description = "When you get what they have, then you'll finally be happy." suffix = "lavaland_surface_envy.dmm" +/datum/map_template/ruin/lavaland/sin/lust + name = "Ruin of Lust" + id = "lust" + description = "Get your rocks off, even if it costs your soul." + suffix = "lavaland_surface_lust.dmm" + /datum/map_template/ruin/lavaland/sin/gluttony name = "Ruin of Gluttony" id = "gluttony" diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm index fef340e1..ac441556 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm @@ -11,7 +11,7 @@ new /obj/item/clothing/under/rank/chief_engineer/skirt(src) new /obj/item/clothing/head/hardhat/white(src) new /obj/item/clothing/head/hardhat/weldhat/white(src) - new /obj/item/clothing/gloves/color/yellow(src) + new /obj/item/clothing/gloves/color/yellow/ce(src) new /obj/item/clothing/shoes/sneakers/brown(src) new /obj/item/tank/jetpack/suit(src) new /obj/item/cartridge/ce(src) diff --git a/code/modules/clothing/gloves/color.dm b/code/modules/clothing/gloves/color.dm index 80bee72c..653a72ac 100644 --- a/code/modules/clothing/gloves/color.dm +++ b/code/modules/clothing/gloves/color.dm @@ -10,6 +10,20 @@ var/can_be_cut = 1 price = 10 +/obj/item/clothing/gloves/color/yellow/ce //funky looking, basically combat gloves + desc = "Special Insulated gloves with pricy thermal shielding normally only found in combat gloves." + name = "Chief Engineer Insulated Gloves" + icon_state = "ce_insuls" + item_state = "combat" + siemens_coefficient = 0 + permeability_coefficient = 0.05 + strip_delay = 80 + cold_protection = HANDS + min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT + heat_protection = HANDS + max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT + resistance_flags = NONE + /obj/item/clothing/gloves/color/fyellow //Cheap Chinese Crap desc = "These gloves are cheap knockoffs of the coveted ones - no way this can end badly." name = "budget insulated gloves" diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index 96c9f9ff..d2423a3f 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -406,6 +406,36 @@ Contains: icon_state = "hardsuit0-beserker" item_state = "hardsuit0-beserker" +/obj/item/clothing/suit/space/hardsuit/ert/paranormal/inquisitor/miner + name = "inquisitor's hardsuit" + icon_state = "hardsuit-inq" + item_state = "hardsuit-inq" + helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal/inquisitor/miner + armor = list("melee" = 70, "bullet" = 20, "laser" = 20, "energy" = 20, "bomb" = 60, "bio" = 100, "rad" = 100, "fire" = 80, "acid" = 80) + slowdown = 1 + +/obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal/inquisitor/miner + name = "inquisitor's helmet" + icon_state = "hardsuit0-inq" + item_state = "hardsuit0-inq" + armor = list("melee" = 70, "bullet" = 20, "laser" = 20, "energy" = 20, "bomb" = 60, "bio" = 100, "rad" = 100, "fire" = 80, "acid" = 80) + +/obj/item/clothing/suit/space/hardsuit/ert/paranormal/beserker/miner + name = "champion's hardsuit" + desc = "Voices echo from the hardsuit, driving the user insane." + icon_state = "hardsuit-beserker" + item_state = "hardsuit-beserker" + helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal/beserker/miner + armor = list("melee" = 70, "bullet" = 20, "laser" = 20, "energy" = 20, "bomb" = 60, "bio" = 100, "rad" = 100, "fire" = 80, "acid" = 80) + slowdown = 1 + +/obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal/beserker/miner + name = "champion's helmet" + desc = "Peering into the eyes of the helmet is enough to seal damnation." + icon_state = "hardsuit0-beserker" + item_state = "hardsuit0-beserker" + armor = list("melee" = 70, "bullet" = 20, "laser" = 20, "energy" = 20, "bomb" = 60, "bio" = 100, "rad" = 100, "fire" = 80, "acid" = 80) + /obj/item/clothing/head/helmet/space/fragile name = "emergency space helmet" desc = "A bulky, air-tight helmet meant to protect the user during emergency situations. It doesn't look very durable." diff --git a/code/modules/mining/equipment/regenerative_core.dm b/code/modules/mining/equipment/regenerative_core.dm index de1fc11f..a12f1491 100644 --- a/code/modules/mining/equipment/regenerative_core.dm +++ b/code/modules/mining/equipment/regenerative_core.dm @@ -58,7 +58,7 @@ if(inert) to_chat(owner, "[src] breaks down as it tries to activate.") else - owner.revive(full_heal = 1) + owner.legion_heal() qdel(src) /obj/item/organ/regenerative_core/on_life() @@ -78,12 +78,13 @@ to_chat(user, "[src] are useless on the dead.") return if(H != user) - H.visible_message("[user] forces [H] to apply [src]... they quickly regenerate all injuries!") + H.visible_message("[user] forces [H] to apply [src]... Black tendrils entangle and reinforce [H.p_them()].") SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[type]", "used", "other")) else - to_chat(user, "You start to smear [src] on yourself. It feels and smells disgusting, but you feel amazingly refreshed in mere moments.") + to_chat(user, "You start to smear [src] on yourself. Disgusting tendrils hold you together and allow you to keep moving, but for how long?") SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[type]", "used", "self")) - H.revive(full_heal = 1) + H.legion_heal() + SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "legion", /datum/mood_event/healsbadman) qdel(src) /obj/item/organ/regenerative_core/Insert(mob/living/carbon/M, special = 0, drop_if_replaced = TRUE) diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index c0c77efa..cf5b8199 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -18,7 +18,7 @@ if(2) new /obj/item/clothing/suit/space/hardsuit/cult(src) if(3) - new /obj/item/soulstone/anybody(src) + new /obj/item/nullrod(src) if(4) new /obj/item/katana/cursed(src) if(5) @@ -39,7 +39,7 @@ if(11) new /obj/item/ship_in_a_bottle(src) if(12) - new /obj/item/clothing/suit/space/hardsuit/ert/paranormal/beserker(src) + new /obj/item/clothing/suit/space/hardsuit/ert/paranormal/beserker/miner(src) if(13) new /obj/item/jacobs_ladder(src) if(14) @@ -60,14 +60,14 @@ if(20) new /obj/item/immortality_talisman(src) if(21) - new /obj/item/gun/magic/hook(src) + new /obj/item/gun/medbeam(src) if(22) - new /obj/item/voodoo(src) + new /obj/item/circuitboard/machine/plantgenes/vault if(23) - new /obj/item/grenade/clusterbuster/inferno(src) + new /obj/item/grenade/clusterbuster/soap(src) if(24) new /obj/item/reagent_containers/food/drinks/bottle/holywater/hell(src) - new /obj/item/clothing/suit/space/hardsuit/ert/paranormal/inquisitor(src) + new /obj/item/clothing/suit/space/hardsuit/ert/paranormal/inquisitor/miner(src) if(25) new /obj/item/book/granter/spell/summonitem(src) if(26) @@ -77,6 +77,8 @@ new /obj/item/bedsheet/cult(src) if(28) new /obj/item/clothing/neck/necklace/memento_mori(src) +// if(29) +// new /obj/item/clothing/gloves/gauntlets(src) //KA modkit design discs /obj/item/disk/design_disk/modkit_disc @@ -1423,3 +1425,43 @@ attack_self(user) return ..() + +//Concussive Gauntlets +/obj/item/clothing/gloves/gauntlets + name = "concussive gauntlets" + desc = "Pickaxes... for your hands!" + icon_state = "concussive_gauntlets" + item_state = "concussive_gauntlets" + toolspeed = 0.1 + strip_delay = 40 + equip_delay_other = 20 + cold_protection = HANDS + min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT + heat_protection = HANDS + max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT + resistance_flags = LAVA_PROOF | FIRE_PROOF //they are from lavaland after all + armor = list("melee" = 15, "bullet" = 25, "laser" = 15, "energy" = 15, "bomb" = 100, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 30) //mostly bone bracer armor + +/obj/item/clothing/gloves/gauntlets/equipped(mob/user, slot) + . = ..() + if(slot == ITEM_SLOT_GLOVES) + tool_behaviour = TOOL_MINING + RegisterSignal(user, COMSIG_HUMAN_EARLY_UNARMED_ATTACK, .proc/rocksmash) + RegisterSignal(user, COMSIG_MOVABLE_BUMP, .proc/rocksmash) + else + stopmining(user) + +/obj/item/clothing/gloves/gauntlets/dropped(mob/user) + . = ..() + stopmining(user) + +/obj/item/clothing/gloves/gauntlets/proc/stopmining(mob/user) + tool_behaviour = initial(tool_behaviour) + UnregisterSignal(user, COMSIG_HUMAN_EARLY_UNARMED_ATTACK) + UnregisterSignal(user, COMSIG_MOVABLE_BUMP) + +/obj/item/clothing/gloves/gauntlets/proc/rocksmash(mob/living/carbon/human/H, atom/A, proximity) + if(!istype(A, /turf/closed/mineral)) + return + A.attackby(src, H) + return COMPONENT_CANCEL_ATTACK_CHAIN \ No newline at end of file diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index affafe34..5b8bf4bc 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -544,6 +544,20 @@ O.setOrganDamage(0) SEND_SIGNAL(src, COMSIG_LIVING_FULLY_HEAL, admin_revive) +//fuck shitcode I hate shitcode +/mob/living/proc/legion_heal() + restore_blood() + setStaminaLoss(0, 0) + SetUnconscious(0, FALSE) + SetStun(0, FALSE) + SetKnockdown(0, FALSE) + SetSleeping(0, FALSE) + bodytemperature = BODYTEMP_NORMAL + heal_overall_damage(INFINITY, INFINITY, INFINITY, FALSE, FALSE, TRUE) //heal brute and burn dmg on both organic and robotic limbs, and update health right away. + ExtinguishMob() + fire_stacks = 0 + update_canmove() + SEND_SIGNAL(src, COMSIG_LIVING_FULLY_HEAL) //proc called by revive(), to check if we can actually ressuscitate the mob (we don't want to revive him and have him instantly die again) /mob/living/proc/can_be_revived() diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm index f6761dd1..dc112ab6 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm @@ -269,7 +269,7 @@ H.dna.add_mutation(DWARFISM) /obj/effect/mob_spawn/human/corpse/damaged/legioninfested/Initialize() - var/type = pickweight(list("Miner" = 66, "Ashwalker" = 10, "Golem" = 10,"Clown" = 10, pick(list("Shadow", "YeOlde","Operative", "Cultist", "Lavaknight")) = 4)) //CIT CHANGE: Lavaknights + var/type = pickweight(list("Miner" = 66, "Ashwalker" = 10, "Golem" = 10,"Clown" = 10, pick(list("Shadow", "YeOlde", "Cultist", "Lavaknight")) = 4)) //CIT CHANGE: Lavaknights switch(type) if("Miner") mob_species = pickweight(list(/datum/species/human = 70, /datum/species/lizard = 26, /datum/species/fly = 2, /datum/species/plasmaman = 2)) @@ -346,9 +346,6 @@ belt = /obj/item/nullrod/claymore r_pocket = /obj/item/tank/internals/emergency_oxygen mask = /obj/item/clothing/mask/breath - if("Operative") - id_job = "Operative" - outfit = /datum/outfit/syndicatecommandocorpse if("Shadow") mob_species = /datum/species/shadow r_pocket = /obj/item/reagent_containers/pill/shadowtoxin diff --git a/code/modules/research/xenobiology/crossbreeding/_clothing.dm b/code/modules/research/xenobiology/crossbreeding/_clothing.dm index b8bdffba..1dac2d42 100644 --- a/code/modules/research/xenobiology/crossbreeding/_clothing.dm +++ b/code/modules/research/xenobiology/crossbreeding/_clothing.dm @@ -142,3 +142,19 @@ Slimecrossing Armor return TRUE else return FALSE + +/obj/structure/light_prism/spectral + name = "spectral light prism" + desc = "You could barely see this, huh!" + icon = 'icons/obj/slimecrossing.dmi' + icon_state = "" + density = FALSE + anchored = TRUE + max_integrity = 10 + var/newcolor = "#ff66ff" + +/obj/structure/light_prism/Initialize(mapload, var/newcolor) + . = ..() + color = newcolor + light_color = newcolor + set_light(5) \ No newline at end of file diff --git a/code/modules/ruins/objects_and_mobs/sin_ruins.dm b/code/modules/ruins/objects_and_mobs/sin_ruins.dm index 2b4d8747..18e90b3a 100644 --- a/code/modules/ruins/objects_and_mobs/sin_ruins.dm +++ b/code/modules/ruins/objects_and_mobs/sin_ruins.dm @@ -144,3 +144,154 @@ user.size_multiplier = H.size_multiplier user.visible_message("[user]'s appearance shifts into [H]'s!", \ "[H.p_they(TRUE)] think[H.p_s()] [H.p_theyre()] sooo much better than you. Not anymore, [H.p_they()] won't.") + +/obj/item/reagent_containers/chalice + name = "Curse of Lust" + desc = "You shouldn't see this! If you do, tell the gods something is wrong." + icon = 'icons/obj/drinks.dmi' + icon_state = "cumchalice" + +/obj/item/reagent_containers/chalice/lust + name = "Golden Chalice of Lust" + desc = "A beautiful golden chalice, centered with a gleaming pink jewel of unknown origin. It is still slightly damp with aphrodisiac. It smells faintly of strawberries and roofies." + icon = 'icons/obj/drinks.dmi' + icon_state = "cumchalice" + w_class = WEIGHT_CLASS_SMALL + force = 1 + throwforce = 1 + amount_per_transfer_from_this = 5 + volume = 15 + flags_1 = CONDUCT_1 + spillable = TRUE + resistance_flags = INDESTRUCTIBLE + reagent_flags = AMOUNT_VISIBLE + +/obj/item/reagent_containers/chalice/lust/Initialize() //just in case + beaker_weakness_bitflag &= ~PH_WEAK + . = ..() + +/obj/item/reagent_containers/chalice/lust/attack_self(mob/living/carbon/human/user) + var/thecostofhorny = 0 + var/truecostofhorny = 0 + var/choicechem = /datum/reagent/water + var/choice = "Water" + var/free = src.reagents.maximum_volume - src.reagents.total_volume + if(free <= 0) + return + + if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + return + + choice = input(user, "Go ahead, pick your poison~", "Boon of Lust") as null|anything in list("Crocin", "Hexacrocin","Succubus Milk", "Incubus Draft", "Prospacillin", "Diminicillin", "Semen", "Femcum", "Milk", "Alien Honey") + + switch(choice) + if("Crocin") + choicechem = /datum/reagent/drug/aphrodisiac + thecostofhorny = 5 + if("Hexacrocin") + choicechem = /datum/reagent/drug/aphrodisiacplus + thecostofhorny = 5 + if("Succubus Milk") + choicechem = /datum/reagent/fermi/breast_enlarger + thecostofhorny = 5 + if("Incubus Draft") + choicechem = /datum/reagent/fermi/penis_enlarger + thecostofhorny = 5 + if("Prospacillin") + choicechem = /datum/reagent/growthchem + thecostofhorny = 40 //Rare chem, should be very expensive + if("Diminicillin") + choicechem = /datum/reagent/shrinkchem + thecostofhorny = 40 //Rare chem, should be very expensive + if("Semen") + choicechem = /datum/reagent/consumable/semen + thecostofhorny = 1 + if("Femcum") + choicechem = /datum/reagent/consumable/femcum + thecostofhorny = 1 + if("Milk") + choicechem = /datum/reagent/consumable/milk + thecostofhorny = 3 //fuck you chef + if("Alien Honey") + choicechem = /datum/reagent/consumable/alienhoney + thecostofhorny = 1 + + var/makechems = alert(user, "Are you sure you want to make [choice]?", "Boon of Lust", "Yes", "No") + switch(makechems) + if("Yes") + src.reagents.add_reagent(choicechem, 5) + truecostofhorny = (thecostofhorny*user.size_multiplier) + user.adjustCloneLoss(truecostofhorny, 1) + user.adjustArousalLoss(100, 1) + to_chat(user, "You feel part of your body ripped from you violently, before the beaker fills itself with [choice].") + if("No") + return + + +/obj/item/reagent_containers/chalice/lust/attack(mob/M, mob/user, obj/target) + if(!canconsume(M, user)) + return + + if(!spillable) + return + + if(!reagents || !reagents.total_volume) + to_chat(user, "[src] is empty!") + return + + if(istype(M)) + if(user.a_intent == INTENT_HARM) + M.visible_message("[user] splashes the contents of [src] onto [M]!", \ + "[user] splashes the contents of [src] onto [M]!") + var/R = reagents?.log_list() + if(isturf(target) && reagents.reagent_list.len && thrownby) + log_combat(thrownby, target, "splashed (thrown) [english_list(reagents.reagent_list)]") + message_admins("[ADMIN_LOOKUPFLW(thrownby)] splashed (thrown) [english_list(reagents.reagent_list)] on [target] at [ADMIN_VERBOSEJMP(target)].") + reagents.reaction(M, TOUCH) + log_combat(user, M, "splashed", R) + reagents.clear_reagents() + else + if(M != user) + M.visible_message("[user] attemped to feed something to [M], but failed!") + return + else + to_chat(user, "You swallow a gulp of [src].") + var/fraction = min(5/reagents.total_volume, 1) + reagents.reaction(M, INGEST, fraction) + addtimer(CALLBACK(reagents, /datum/reagents.proc/trans_to, M, 5), 5) + playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1) + +/obj/structure/lewdfountain + name = "Lewd Fountain" + desc = "You shouldn't see this!" + icon = 'icons/obj/hand_of_god_structures.dmi' + icon_state = "fountain" + anchored = TRUE + density = TRUE + +/obj/structure/lewdfountain/lust + name = "fountain of lust" + desc = "A beautiful hand carved fountain, with a carved golden cup atop it. The cup seems to be constantly overflowing with a pink fluid that smells like liquid desire. Just looking at it makes you turned on." + icon = 'icons/obj/hand_of_god_structures.dmi' + icon_state = "fountain" + anchored = TRUE + density = TRUE + var/chalice_taken = 0 + +/obj/structure/lewdfountain/lust/attack_hand(mob/living/user) + . = ..() + if(.) + return + if(chalice_taken == 1) + to_chat(user, "You hear a voice in your head... \"My chalice has already been taken, dear. I cannot give you another...\"") + return + if(user.getArousalLoss() < 100) + to_chat(user, "You hear a voice in your head... \"You are not horny enough to receive my blessing, dear~\"") + return + if (ishuman(user) && user.has_dna()) + user.mob_climax(forced_climax=TRUE) + to_chat(user, "You hear a voice in your head... \"You are worth of my blessing dear~\"") + to_chat(user, "You feel overpowering pleasure surge through your entire body.") + var/A = new /obj/item/reagent_containers/chalice/lust + user.put_in_hands(A) + chalice_taken = 1 \ No newline at end of file diff --git a/config/lavaRuinBlacklist.txt b/config/lavaRuinBlacklist.txt index 2691f317..18a83d61 100644 --- a/config/lavaRuinBlacklist.txt +++ b/config/lavaRuinBlacklist.txt @@ -7,7 +7,7 @@ #_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm #_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm #_maps/RandomRuins/LavaRuins/lavaland_biodome_clown_planet.dmm -#_maps/RandomRuins/LavaRuins/lavaland_surface_cube.dmm +_maps/RandomRuins/LavaRuins/lavaland_surface_cube.dmm ##RESPAWN #_maps/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm @@ -21,6 +21,7 @@ #_maps/RandomRuins/LavaRuins/lavaland_surface_greed.dmm #_maps/RandomRuins/LavaRuins/lavaland_surface_pride.dmm #_maps/RandomRuins/LavaRuins/lavaland_surface_sloth.dmm +#_maps/RandomRuins/LavaRuins/lavaland_surface_lust.dmm ##MISC #_maps/RandomRuins/LavaRuins/lavaland_surface_automated_trade_outpost.dmm diff --git a/hyperstation/code/datums/mood_events/events.dm b/hyperstation/code/datums/mood_events/events.dm index 2a5e66f8..6ef7c115 100644 --- a/hyperstation/code/datums/mood_events/events.dm +++ b/hyperstation/code/datums/mood_events/events.dm @@ -16,4 +16,9 @@ /datum/mood_event/deathsaw description = "I saw someone die!\n" mood_change = -8 - timeout = 20 MINUTES //takes a long time to get over \ No newline at end of file + timeout = 20 MINUTES //takes a long time to get over + +/datum/mood_event/healsbadman + description = "I feel like I'm held together by flimsy string, and could fall apart at any moment!\n" + mood_change = -4 + timeout = 2 MINUTES \ No newline at end of file diff --git a/icons/mob/hands.dmi b/icons/mob/hands.dmi index fea1cd54..1339c6a3 100644 Binary files a/icons/mob/hands.dmi and b/icons/mob/hands.dmi differ diff --git a/icons/obj/clothing/gloves.dmi b/icons/obj/clothing/gloves.dmi index 53612571..e75cf091 100644 Binary files a/icons/obj/clothing/gloves.dmi and b/icons/obj/clothing/gloves.dmi differ diff --git a/icons/obj/drinks.dmi b/icons/obj/drinks.dmi index b38bc4a1..b0fc76df 100644 Binary files a/icons/obj/drinks.dmi and b/icons/obj/drinks.dmi differ