diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index 9e922d0d228f..a1a29d8d3cf1 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -608,6 +608,11 @@ /obj/machinery/portable_atmospherics/canister/oxygen, /turf/open/floor/plating, /area/centcom/syndicate_mothership/expansion_bombthreat) +"bK" = ( +/obj/item/clothing/mask/facehugger/dead, +/obj/structure/fans/tiny/invisible, +/turf/open/floor/plating, +/area/centcom/central_command_areas/admin) "bM" = ( /turf/open/floor/glass/reinforced, /area/centcom/central_command_areas/evacuation) @@ -1203,10 +1208,9 @@ /turf/open/floor/mineral/plastitanium, /area/centcom/syndicate_mothership/control) "ds" = ( -/obj/structure/table/wood, -/obj/item/paper_bin, -/obj/item/pen/fourcolor, -/turf/open/floor/stone, +/obj/effect/decal/cleanable/garbage, +/obj/structure/fans/tiny/invisible, +/turf/open/floor/iron, /area/centcom/central_command_areas/admin) "dt" = ( /obj/structure/window/reinforced/tinted/frosted, @@ -1623,6 +1627,16 @@ }, /turf/open/floor/iron/dark/herringbone, /area/centcom/central_command_areas/admin) +"eB" = ( +/obj/structure/disposalpipe/loafer{ + dir = 4 + }, +/obj/structure/fans/tiny/invisible, +/obj/machinery/light/very_dim/directional{ + dir = 1 + }, +/turf/open/floor/plating, +/area/centcom/central_command_areas/admin) "eC" = ( /obj/effect/turf_decal/tile/dark/opposingcorners, /obj/structure/table/reinforced, @@ -1907,7 +1921,9 @@ /turf/open/floor/wood/large, /area/centcom/central_command_areas/admin_hangout) "fC" = ( -/turf/open/floor/stone, +/obj/effect/gibspawner/human/bodypartless, +/obj/structure/fans/tiny/invisible, +/turf/open/floor/iron, /area/centcom/central_command_areas/admin) "fD" = ( /obj/machinery/light/neon_lining{ @@ -2601,9 +2617,9 @@ /turf/open/floor/wood/large, /area/centcom/central_command_areas/borbop) "hF" = ( -/obj/structure/table/wood, -/obj/machinery/computer/records/medical/laptop, -/turf/open/floor/stone, +/obj/structure/falsewall/reinforced, +/obj/structure/fans/tiny/invisible, +/turf/open/floor/plating, /area/centcom/central_command_areas/admin) "hG" = ( /obj/structure/chair/sofa/bench/right{ @@ -3738,10 +3754,12 @@ /turf/open/floor/iron/dark, /area/centcom/central_command_areas/admin_hangout) "ll" = ( -/obj/machinery/door/airlock/wood{ - name = "Gabbie's Office" +/obj/machinery/door/airlock/centcom{ + dir = 4; + name = "Glyphee's Garbage Dump" }, -/turf/open/floor/wood, +/obj/structure/fans/tiny/invisible, +/turf/open/floor/iron, /area/centcom/central_command_areas/admin) "lm" = ( /obj/structure/window/plasma/spawner/directional/north, @@ -3778,6 +3796,13 @@ /obj/structure/flora/bush/flowers_yw/style_random, /turf/open/floor/grass, /area/centcom/central_command_areas/hall) +"lv" = ( +/obj/effect/spawner/random/trash/garbage, +/obj/effect/spawner/random/maintenance/two, +/obj/machinery/recycler/deathtrap, +/obj/structure/fans/tiny/invisible, +/turf/open/floor/plating, +/area/centcom/central_command_areas/admin) "lw" = ( /obj/structure/sign/poster/contraband/lizard{ pixel_x = -32 @@ -4099,10 +4124,11 @@ /turf/open/floor/catwalk_floor/iron_smooth, /area/centcom/syndicate_mothership/control) "mv" = ( -/obj/machinery/door/poddoor/shutters/indestructible/preopen{ +/obj/structure/disposalpipe/trunk{ dir = 4 }, -/turf/closed/indestructible/fakeglass, +/obj/structure/fans/tiny/invisible, +/turf/open/floor/iron, /area/centcom/central_command_areas/admin) "mx" = ( /obj/machinery/power/shuttle_engine/heater{ @@ -5818,9 +5844,8 @@ /turf/open/floor/mineral/plastitanium, /area/centcom/syndicate_mothership/expansion_chemicalwarfare) "rD" = ( -/obj/structure/table/wood, -/obj/machinery/light/floor/has_bulb, -/turf/open/floor/carpet/red, +/obj/structure/fans/tiny/invisible, +/turf/open/floor/carpet/green, /area/centcom/central_command_areas/admin) "rF" = ( /obj/structure/chair/sofa/right{ @@ -5839,6 +5864,13 @@ }, /turf/open/floor/iron/dark, /area/centcom/central_command_areas/evacuation/ship) +"rI" = ( +/obj/effect/spawner/random/trash/garbage, +/obj/effect/spawner/random/structure/closet_maintenance, +/obj/structure/fans/tiny/invisible, +/obj/machinery/light/very_dim/directional, +/turf/open/floor/iron, +/area/centcom/central_command_areas/admin) "rJ" = ( /obj/structure/lattice/catwalk, /obj/machinery/atmospherics/components/tank/nitrogen, @@ -6048,6 +6080,13 @@ /obj/machinery/light/directional/south, /turf/open/floor/iron/dark/herringbone, /area/centcom/central_command_areas/evacuation/ship) +"sn" = ( +/obj/machinery/computer/camera_advanced{ + dir = 4 + }, +/obj/structure/fans/tiny/invisible, +/turf/open/floor/carpet/green, +/area/centcom/central_command_areas/admin) "so" = ( /obj/effect/turf_decal/siding/green{ dir = 9 @@ -7750,10 +7789,12 @@ /turf/open/misc/asteroid/snow/airless, /area/centcom/syndicate_mothership) "xF" = ( -/obj/structure/chair/office{ - dir = 8 +/obj/structure/sign/painting/library{ + pixel_x = 32 }, -/turf/open/floor/stone, +/obj/structure/fans/tiny/invisible, +/obj/machinery/light/floor/has_bulb, +/turf/open/floor/carpet/green, /area/centcom/central_command_areas/admin) "xG" = ( /obj/effect/turf_decal/tile/dark/opposingcorners, @@ -9885,8 +9926,11 @@ /area/centcom/wizard_station) "Ef" = ( /obj/structure/table/wood, -/obj/machinery/computer/security/wooden_tv, -/turf/open/floor/carpet/red, +/obj/item/mod/control/pre_equipped/chrono{ + desc = "It smells freshly laundered." + }, +/obj/structure/fans/tiny/invisible, +/turf/open/floor/carpet/green, /area/centcom/central_command_areas/admin) "Eg" = ( /obj/machinery/door/airlock{ @@ -10284,6 +10328,10 @@ }, /turf/open/floor/carpet/royalblue, /area/centcom/central_command_areas/admin) +"Fn" = ( +/obj/structure/fans/tiny/invisible, +/turf/open/floor/iron, +/area/centcom/central_command_areas/admin) "Fo" = ( /obj/effect/turf_decal/tile/dark/opposingcorners, /obj/machinery/vending/wardrobe/law_wardrobe, @@ -10337,7 +10385,9 @@ }, /area/centcom/syndicate_mothership/expansion_fridgerummage) "Fy" = ( -/turf/open/chasm, +/obj/effect/gibspawner/human/bodypartless, +/obj/structure/fans/tiny/invisible, +/turf/open/floor/plating, /area/centcom/central_command_areas/admin) "Fz" = ( /turf/open/floor/mineral/plastitanium/red, @@ -10470,12 +10520,8 @@ /turf/open/floor/wood/large, /area/centcom/central_command_areas/borbop) "FQ" = ( -/obj/structure/table/wood, -/obj/machinery/fax{ - fax_name = "Gabbie's Fax"; - name = "Gabbie's Fax Machine" - }, -/turf/open/floor/stone, +/obj/structure/fans/tiny/invisible, +/turf/open/chasm, /area/centcom/central_command_areas/admin) "FS" = ( /obj/machinery/computer/records/medical/laptop{ @@ -10556,6 +10602,11 @@ /obj/item/stack/medical/ointment, /turf/open/floor/engine/cult, /area/centcom/wizard_station) +"Gg" = ( +/obj/effect/spawner/random/trash/garbage, +/obj/structure/fans/tiny/invisible, +/turf/open/floor/plating, +/area/centcom/central_command_areas/admin) "Gh" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -10931,6 +10982,14 @@ /obj/machinery/light/directional/east, /turf/open/floor/iron/dark, /area/centcom/central_command_areas/hall) +"Hj" = ( +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/machinery/disposal/delivery_chute, +/obj/structure/fans/tiny/invisible, +/turf/open/floor/plating, +/area/centcom/central_command_areas/admin) "Hk" = ( /obj/effect/turf_decal/loading_area{ dir = 4 @@ -13451,11 +13510,11 @@ /turf/open/misc/asteroid/snow/icemoon, /area/centcom/syndicate_mothership/control) "Ou" = ( -/obj/structure/table/wood, -/obj/machinery/modular_computer/console/preset/id/centcom{ +/obj/structure/chair/comfy/lime{ dir = 8 }, -/turf/open/floor/carpet/red, +/obj/structure/fans/tiny/invisible, +/turf/open/floor/carpet/green, /area/centcom/central_command_areas/admin) "Ov" = ( /obj/structure/chair/wood/wings, @@ -13692,6 +13751,12 @@ /obj/structure/flora/bush/flowers_pp/style_random, /turf/open/floor/grass, /area/centcom/central_command_areas/hall) +"Pf" = ( +/obj/effect/turf_decal/siding/dark/end{ + dir = 1 + }, +/turf/closed/indestructible/riveted, +/area/centcom/central_command_areas/admin) "Pg" = ( /obj/structure/fake_stairs/wood/directional/north, /turf/open/indestructible/hotelwood, @@ -14083,6 +14148,30 @@ /obj/item/storage/toolbox/mechanical, /turf/open/floor/iron/smooth_large, /area/centcom/central_command_areas/evacuation/ship) +"Qu" = ( +/obj/structure/table/reinforced/titaniumglass, +/obj/machinery/door/window/left/directional/west{ + name = "Secret Stuff"; + req_access = list("robotics"); + dir = 4 + }, +/obj/item/reagent_containers/pill/adminordrazine{ + list_reagents = list(/datum/reagent/medicine/adminordrazine = 99999); + name = "sv_cheats 1"; + desc = "god"; + color = "#fcba03" + }, +/obj/structure/fans/tiny/invisible, +/obj/item/tank/internals/oxygen/yellow{ + pixel_x = -7; + pixel_y = 7 + }, +/obj/item/tank/internals/oxygen/yellow{ + pixel_y = -7; + pixel_x = 7 + }, +/turf/open/floor/carpet/green, +/area/centcom/central_command_areas/admin) "Qv" = ( /obj/machinery/light/floor/has_bulb, /obj/effect/turf_decal/siding/wood{ @@ -14742,6 +14831,34 @@ /obj/structure/fake_stairs/wood/directional/south, /turf/open/floor/iron/dark, /area/centcom/tdome/observation) +"Su" = ( +/obj/structure/table/reinforced/titaniumglass, +/obj/structure/window/reinforced/survival_pod/spawner/directional{ + dir = 1 + }, +/obj/machinery/door/window/left/directional/west{ + name = "Secret Stuff"; + req_access = list("robotics"); + dir = 4 + }, +/obj/item/melee/powerfist{ + name = "Iron"; + desc = "You load sixteen tons..."; + force = 1000; + pixel_y = 4; + color = "#fcba03" + }, +/obj/structure/fans/tiny/invisible, +/obj/machinery/light/floor/has_bulb, +/obj/item/melee/powerfist{ + name = "Steel"; + desc = "Another day older and deeper in debt..."; + force = 1000; + pixel_y = -4; + color = "#fcba03" + }, +/turf/open/floor/carpet/green, +/area/centcom/central_command_areas/admin) "Sv" = ( /obj/effect/turf_decal/trimline/blue, /turf/open/floor/iron/dark, @@ -15513,6 +15630,13 @@ }, /turf/open/floor/mineral/titanium, /area/centcom/syndicate_mothership/control) +"UR" = ( +/obj/structure/sign/painting/library{ + pixel_x = 32 + }, +/obj/structure/fans/tiny/invisible, +/turf/open/floor/carpet/green, +/area/centcom/central_command_areas/admin) "US" = ( /obj/structure/window/plasma/spawner/directional/north, /turf/open/indestructible/hotelwood, @@ -15658,7 +15782,10 @@ /turf/open/floor/iron, /area/centcom/central_command_areas/supplypod/loading/three) "Vo" = ( -/turf/open/floor/carpet/red, +/obj/effect/spawner/random/trash/garbage, +/obj/effect/spawner/random/structure/closet_maintenance, +/obj/structure/fans/tiny/invisible, +/turf/open/floor/iron, /area/centcom/central_command_areas/admin) "Vp" = ( /obj/effect/turf_decal/tile/dark/diagonal_edge, @@ -15779,7 +15906,9 @@ }, /area/centcom/syndicate_mothership/control) "VD" = ( -/turf/closed/wall/mineral/iron, +/obj/item/fish/chasm_crab, +/obj/structure/fans/tiny/invisible, +/turf/open/floor/iron, /area/centcom/central_command_areas/admin) "VE" = ( /obj/structure/table/reinforced, @@ -16309,9 +16438,13 @@ /turf/open/floor/iron, /area/centcom/central_command_areas/supplypod/loading/four) "Xi" = ( -/obj/structure/table/wood, -/obj/machinery/computer/records/security/laptop, -/turf/open/floor/stone, +/obj/machinery/door/airlock/centcom{ + dir = 4; + name = "Glyphee's Secret Office" + }, +/obj/effect/mapping_helpers/airlock/access/any/admin/captain, +/obj/structure/fans/tiny/invisible, +/turf/open/floor/carpet/green, /area/centcom/central_command_areas/admin) "Xj" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -16369,7 +16502,8 @@ /turf/open/floor/iron/dark, /area/centcom/central_command_areas/evacuation/ship) "Xq" = ( -/turf/open/floor/wood, +/obj/structure/fans/tiny/invisible, +/turf/open/floor/plating, /area/centcom/central_command_areas/admin) "Xr" = ( /obj/machinery/keycard_auth/directional/south, @@ -16474,10 +16608,13 @@ /turf/open/floor/iron/dark/herringbone, /area/centcom/central_command_areas/supply) "XG" = ( -/obj/structure/chair/comfy/black{ - dir = 4 +/obj/machinery/modular_computer/console/preset/id/centcom{ + dir = 4; + desc = "A specialized console to connect to gaming computers to be able to broadcast live. Seriously, where does Ook find this stuff?" }, -/turf/open/floor/carpet/red, +/obj/structure/fans/tiny/invisible, +/obj/machinery/light/floor/has_bulb, +/turf/open/floor/carpet/green, /area/centcom/central_command_areas/admin) "XH" = ( /obj/effect/turf_decal/stripes/end{ @@ -16678,11 +16815,13 @@ /turf/open/floor/iron, /area/centcom/central_command_areas/supply) "Yl" = ( -/obj/machinery/door/airlock/wood{ - name = "Gabbie's Office" +/obj/structure/table/wood, +/obj/machinery/fax{ + name = "Glyphee's Fax Machine"; + fax_name = "Glyphee's Spam Mail" }, -/obj/effect/mapping_helpers/airlock/access/any/admin/captain, -/turf/open/floor/wood, +/obj/structure/fans/tiny/invisible, +/turf/open/floor/carpet/green, /area/centcom/central_command_areas/admin) "Yn" = ( /turf/closed/indestructible/riveted, @@ -45928,10 +46067,10 @@ aa aa aa On -Zf -Zf -Zf -Zf +On +On +On +On On On On @@ -46185,11 +46324,11 @@ aa aa aa On -Vo +Yl XG -Vo -Vo -fC +sn +Su +Qu On bF KB @@ -46445,8 +46584,8 @@ On Ef rD Ou -Vo -fC +rD +rD On lm Zn @@ -46699,11 +46838,11 @@ nO uk hp On -fC +rD xF -Vo -Vo -fC +UR +xF +rD On TQ AS @@ -46957,10 +47096,10 @@ uk RK On Xi -fC -Vo -fC -ds +On +On +On +On On TQ FI @@ -47214,7 +47353,7 @@ RZ yw On hF -fC +On Vo fC FQ @@ -47470,11 +47609,11 @@ Ji uk xP On +mv +bK +Fy VD -VD -Yl -VD -VD +rI On TQ FI @@ -47727,11 +47866,11 @@ Ji uk uk On -Fy -Fy +eB +Fn Xq -Fy -Fy +Xq +ds On TQ AS @@ -47984,11 +48123,11 @@ Ji uk dU On -Fy -Fy +Hj +Gg Xq Fy -Fy +lv On aO qx @@ -48241,12 +48380,12 @@ bO IS On On -mv -mv +On +On ll -mv -mv -bF +On +On +Pf qZ qZ qZ diff --git a/code/modules/events/_event.dm b/code/modules/events/_event.dm index 54a10b81e224..e9f0bd8d40db 100644 --- a/code/modules/events/_event.dm +++ b/code/modules/events/_event.dm @@ -333,7 +333,7 @@ Runs the event return message_admins("[key_name_admin(usr)] force scheduled event [src.name].") log_admin_private("[key_name(usr)] force scheduled event [src.name].") - SSgamemode.forced_next_events[src.track] += src + SSgamemode.forced_next_events[src.track] = src //monkestation addition ends - STORYTELLERS diff --git a/code/modules/hydroponics/grown/berries.dm b/code/modules/hydroponics/grown/berries.dm index 0a5c28c9a3ee..c8f19237ae26 100644 --- a/code/modules/hydroponics/grown/berries.dm +++ b/code/modules/hydroponics/grown/berries.dm @@ -187,3 +187,33 @@ juice_results = list(/datum/reagent/consumable/toechtauese_juice = 0) tastes = list("fiery itchy pain" = 1) distill_reagent = /datum/reagent/toxin/itching_powder + +/obj/item/seeds/lanternfruit + name = "pack of lanternfruit seeds" + desc = "These seeds grow into lanternfruit pods." + icon_state = "seed-lanternfruit" + species = "lanternfruit" + plantname = "Lanternfruit Pod" + product = /obj/item/food/grown/lanternfruit + lifespan = 50 + endurance = 30 + maturation = 25 + production = 25 + growthstages = 3 + growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi' + icon_grow = "lanternfruit-grow" + icon_dead = "lanternfruit-dead" + icon_harvest = "lanternfruit-harvest" + genes = list(/datum/plant_gene/trait/glow/yellow) + mutatelist = null + reagents_add = list(/datum/reagent/sulfur = 0.07, /datum/reagent/consumable/sugar = 0.07, /datum/reagent/consumable/liquidelectricity = 0.07) + graft_gene = /datum/plant_gene/trait/glow/yellow + +/obj/item/food/grown/lanternfruit + seed = /obj/item/seeds/lanternfruit + name = "lanternfruits" + desc = "A sofly glowing fruit with a handle-shaped stem, an Ethereal favorite!" + icon_state = "lanternfruit" + foodtypes = FRUIT + tastes = list("tv static" = 1, "sour pear" = 1, "grapefruit" = 1) + distill_reagent = /datum/reagent/consumable/ethanol/fruit_wine diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm index c2b7e27c2487..e12f690813bd 100644 --- a/code/modules/mob/living/emote.dm +++ b/code/modules/mob/living/emote.dm @@ -224,6 +224,16 @@ message = "jumps!" hands_use_check = TRUE +/datum/emote/living/jump/run_emote(mob/living/user, params, type_override, intentional) + . = ..() + if(!.) + return FALSE + animate(user, pixel_y = user.pixel_y + 4, time = 0.1 SECONDS) + animate(pixel_y = user.pixel_y - 4, time = 0.1 SECONDS) + +/datum/emote/living/jump/get_sound(mob/living/user) + return 'sound/weapons/thudswoosh.ogg' + /datum/emote/living/kiss key = "kiss" key_third_person = "kisses" @@ -347,6 +357,18 @@ key_third_person = "shiver" message = "shivers." +#define SHIVER_LOOP_DURATION (1 SECONDS) +/datum/emote/living/shiver/run_emote(mob/living/user, params, type_override, intentional) + . = ..() + if(!.) + return FALSE + animate(user, pixel_x = user.pixel_x + 1, time = 0.1 SECONDS) + for(var/i in 1 to SHIVER_LOOP_DURATION / (0.2 SECONDS)) //desired total duration divided by the iteration duration to give the necessary iteration count + animate(pixel_x = user.pixel_x - 1, time = 0.1 SECONDS) + animate(pixel_x = user.pixel_x + 1, time = 0.1 SECONDS) + animate(pixel_x = user.pixel_x - 1, time = 0.1 SECONDS) +#undef SHIVER_LOOP_DURATION + /datum/emote/living/sigh key = "sigh" key_third_person = "sighs" @@ -437,6 +459,16 @@ key_third_person = "sways" message = "sways around dizzily." +/datum/emote/living/sway/run_emote(mob/living/user, params, type_override, intentional) + . = ..() + if(!.) + return FALSE + animate(user, pixel_x = user.pixel_x + 2, time = 0.5 SECONDS) + for(var/i in 1 to 2) + animate(pixel_x = user.pixel_x - 4, time = 1.0 SECONDS) + animate(pixel_x = user.pixel_x + 4, time = 1.0 SECONDS) + animate(pixel_x = user.pixel_x - 2, time = 0.5 SECONDS) + /datum/emote/living/tilt key = "tilt" key_third_person = "tilts" @@ -447,15 +479,44 @@ key_third_person = "trembles" message = "trembles in fear!" +#define TREMBLE_LOOP_DURATION (4.4 SECONDS) +/datum/emote/living/tremble/run_emote(mob/living/user, params, type_override, intentional) + . = ..() + if(!.) + return FALSE + animate(user, pixel_x = user.pixel_x + 2, time = 0.2 SECONDS) + for(var/i in 1 to TREMBLE_LOOP_DURATION / (0.4 SECONDS)) //desired total duration divided by the iteration duration to give the necessary iteration count + animate(pixel_x = user.pixel_x - 2, time = 0.2 SECONDS) + animate(pixel_x = user.pixel_x + 2, time = 0.2 SECONDS) + animate(pixel_x = user.pixel_x - 2, time = 0.2 SECONDS) +#undef TREMBLE_LOOP_DURATION + /datum/emote/living/twitch key = "twitch" key_third_person = "twitches" message = "twitches violently." +/datum/emote/living/twitch/run_emote(mob/living/user, params, type_override, intentional) + . = ..() + if(!.) + return FALSE + animate(user, pixel_x = user.pixel_x - 1, time = 0.1 SECONDS) + animate(pixel_x = user.pixel_x + 1, time = 0.1 SECONDS) + animate(time = 0.1 SECONDS) + animate(pixel_x = user.pixel_x - 1, time = 0.1 SECONDS) + animate(pixel_x = user.pixel_x + 1, time = 0.1 SECONDS) + /datum/emote/living/twitch_s key = "twitch_s" message = "twitches." +/datum/emote/living/twitch_s/run_emote(mob/living/user, params, type_override, intentional) + . = ..() + if(!.) + return FALSE + animate(user, pixel_x = user.pixel_x - 1, time = 0.1 SECONDS) + animate(pixel_x = user.pixel_x + 1, time = 0.1 SECONDS) + /datum/emote/living/wave key = "wave" key_third_person = "waves" diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm index 51db8247b89f..cb22ef43b849 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm @@ -138,9 +138,7 @@ if(target) H.original = target H.fire(set_angle) - if(is_trishot) - shoot_projectile(marker, set_angle + 15, FALSE, FALSE) - shoot_projectile(marker, set_angle - 15, FALSE, FALSE) + //monke edit - removed heralds shotgun BS from his tri shot /mob/living/simple_animal/hostile/asteroid/elite/herald/proc/herald_trishot(target) ranged_cooldown = world.time + 30 diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index 91dd646455b8..c0e0f5194f82 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -255,7 +255,7 @@ return to_chat(user,span_notice("You start manually releasing the low-pressure gauge...")) - if(!do_after(user, 0.5 SECONDS, affected_mob, interaction_key = DOAFTER_SOURCE_SURVIVALPEN)) + if(!do_after(user, 10 SECONDS, affected_mob, interaction_key = DOAFTER_SOURCE_SURVIVALPEN)) return amount_per_transfer_from_this = initial(amount_per_transfer_from_this) * 0.5 diff --git a/code/modules/vending/clothesmate.dm b/code/modules/vending/clothesmate.dm index 7d8a9477af0e..a0cc45debc0b 100644 --- a/code/modules/vending/clothesmate.dm +++ b/code/modules/vending/clothesmate.dm @@ -21,6 +21,7 @@ /obj/item/clothing/neck/scarf = 6, /obj/item/clothing/neck/large_scarf = 6, /obj/item/clothing/neck/infinity_scarf = 6, + /obj/item/clothing/neck/ascot = 6, /obj/item/clothing/neck/tie = 6, /obj/item/clothing/head/rasta = 3, /obj/item/clothing/head/chaplain/kippah = 3, diff --git a/code/modules/vending/megaseed.dm b/code/modules/vending/megaseed.dm index c58c8cba1726..56b642f2ea47 100644 --- a/code/modules/vending/megaseed.dm +++ b/code/modules/vending/megaseed.dm @@ -20,6 +20,7 @@ /obj/item/seeds/cocoapod = 3, /obj/item/seeds/eggplant = 3, /obj/item/seeds/grape = 3, + /obj/item/seeds/lanternfruit = 3, /obj/item/seeds/lemon = 3, /obj/item/seeds/lime = 3, /obj/item/seeds/olive = 3, diff --git a/code/modules/vending/security.dm b/code/modules/vending/security.dm index 01fff9bdf6db..220bd1acdb7d 100644 --- a/code/modules/vending/security.dm +++ b/code/modules/vending/security.dm @@ -32,6 +32,9 @@ /obj/item/watertank/pepperspray = 2, /obj/item/storage/belt/holster/energy = 4, /obj/item/ammo_box/magazine/m35 = 5, //monkestation edit: Paco sec + /obj/item/clothing/head/guardmanhelmet = 1, //monkestation edit: Guardman + /obj/item/clothing/under/guardmanuniform = 1, //monkestation edit: Guardman + /obj/item/clothing/suit/armor/guardmanvest = 1, //monkestation edit: Guardman ) refill_canister = /obj/item/vending_refill/security default_price = PAYCHECK_CREW diff --git a/html/changelogs/AutoChangeLog-pr-513.yml b/html/changelogs/AutoChangeLog-pr-513.yml new file mode 100644 index 000000000000..cd4545e308ff --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-513.yml @@ -0,0 +1,9 @@ +author: "KittyNoodle" +delete-after: True +changes: + - rscadd: "Nuke ops have been authorized for a new experimental combat implant." + - qol: "Stacking hardlight spears now stores it in only one spell. And it looks really cool." + - qol: "Hardlight spears no longer delete themselves after 10 seconds." + - balance: "Hardlight spears now do much more damage." + - image: "resprited the hardlight spear" + - refactor: "Hardlight spears use projectiles instead of throws now." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-553.yml b/html/changelogs/AutoChangeLog-pr-553.yml new file mode 100644 index 000000000000..3a2d0b29babe --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-553.yml @@ -0,0 +1,5 @@ +author: "Bidlink1" +delete-after: True +changes: + - rscadd: "Lanternfruit to Megaservitor (courtesy of MrMelbert)" + - rscadd: "Adds Sulfur and Liquid Electricity production as a gene in Lantern fruit" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-574.yml b/html/changelogs/AutoChangeLog-pr-574.yml new file mode 100644 index 000000000000..bd9de0bbc437 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-574.yml @@ -0,0 +1,4 @@ +author: "NicoDeLuna" +delete-after: True +changes: + - bugfix: "adjusting sprites of the ascot" \ No newline at end of file diff --git a/html/changelogs/archive/2023-11.yml b/html/changelogs/archive/2023-11.yml index 20475386f996..3e13b326c57c 100644 --- a/html/changelogs/archive/2023-11.yml +++ b/html/changelogs/archive/2023-11.yml @@ -57,3 +57,29 @@ - rscadd: new bar wraith-54321: - rscadd: map template for contests +2023-11-14: + lmenvs: + - rscadd: TTNT's donator item set! +2023-11-15: + Glyphee: + - bugfix: changed atmos on the dirt tiles to `"o2=22;n2=82;TEMP=293.15"` + wraith-54321: + - bugfix: Admins can now actually force events + - bugfix: fixed some midrounds spawning without their antag datum +2023-11-18: + Glyphee: + - rscadd: Changed how my office looks :p + - bugfix: Fixed a typo in the medbay of CC ("all in one medial fabricator" -> "all + in one medical fabricator") + NicoDeLuna: + - rscadd: ' Added Ascots to Loadout and Clothesmate' + - rscadd: Add new Guardman's uniform, vest and helmet to the sectech vendor + Salted-Zen: + - balance: Herald triple shot no longer shotgun fans. Its just three projectiles. + kawoppi, gboster: + - rscadd: 'kawoppi: added animations to the *jump, *shiver, *sway, *tremble, *twitch + and *twitch_s emotes' + - rscadd: 'kawoppi: the *jump emote now plays a sound' + wraith-54321: + - balance: Reverts our change making miner medipens take only half a second to use + on station diff --git a/icons/obj/hydroponics/growing_fruits.dmi b/icons/obj/hydroponics/growing_fruits.dmi index 7e535cdaf9b3..d52fa6568bdb 100644 Binary files a/icons/obj/hydroponics/growing_fruits.dmi and b/icons/obj/hydroponics/growing_fruits.dmi differ diff --git a/icons/obj/hydroponics/harvest.dmi b/icons/obj/hydroponics/harvest.dmi index 517edbba0677..d41a8f22def3 100644 Binary files a/icons/obj/hydroponics/harvest.dmi and b/icons/obj/hydroponics/harvest.dmi differ diff --git a/icons/obj/hydroponics/seeds.dmi b/icons/obj/hydroponics/seeds.dmi index d6e70af1a428..21430781ace2 100644 Binary files a/icons/obj/hydroponics/seeds.dmi and b/icons/obj/hydroponics/seeds.dmi differ diff --git a/monkestation/_maps/RandomBars/Tram/tram_slum_bar.dmm b/monkestation/_maps/RandomBars/Tram/tram_slum_bar.dmm index b96ae701e5f2..be30d1525c04 100644 --- a/monkestation/_maps/RandomBars/Tram/tram_slum_bar.dmm +++ b/monkestation/_maps/RandomBars/Tram/tram_slum_bar.dmm @@ -156,7 +156,9 @@ /area/station/service/kitchen) "hb" = ( /obj/machinery/light/dim/directional/west, -/turf/open/misc/dirt, +/turf/open/misc/dirt{ + initial_gas_mix = "o2=22;n2=82;TEMP=293.15" + }, /area/station/commons/lounge) "he" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -547,7 +549,9 @@ /area/station/service/theater) "vb" = ( /obj/effect/landmark/start/hangover, -/turf/open/misc/dirt, +/turf/open/misc/dirt{ + initial_gas_mix = "o2=22;n2=82;TEMP=293.15" + }, /area/station/commons/lounge) "vA" = ( /obj/structure/chair/stool/directional/east, @@ -742,7 +746,9 @@ /turf/open/floor/wood/tile, /area/station/service/bar/atrium) "Co" = ( -/turf/open/misc/dirt, +/turf/open/misc/dirt{ + initial_gas_mix = "o2=22;n2=82;TEMP=293.15" + }, /area/station/commons/lounge) "Cs" = ( /obj/effect/decal/cleanable/dirt, @@ -783,7 +789,9 @@ /area/station/service/theater) "Eu" = ( /obj/effect/landmark/start/assistant, -/turf/open/misc/dirt, +/turf/open/misc/dirt{ + initial_gas_mix = "o2=22;n2=82;TEMP=293.15" + }, /area/station/commons/lounge) "EE" = ( /obj/effect/decal/cleanable/dirt, @@ -1114,7 +1122,9 @@ /area/station/service/theater) "RK" = ( /obj/machinery/light/dim/directional/north, -/turf/open/misc/dirt, +/turf/open/misc/dirt{ + initial_gas_mix = "o2=22;n2=82;TEMP=293.15" + }, /area/station/commons/lounge) "RT" = ( /obj/structure/table/wood, diff --git a/monkestation/code/game/objects/items/implants/hardlight.dm b/monkestation/code/game/objects/items/implants/hardlight.dm index e0c5c5bbd24d..94e5a5becbe2 100644 --- a/monkestation/code/game/objects/items/implants/hardlight.dm +++ b/monkestation/code/game/objects/items/implants/hardlight.dm @@ -1,27 +1,79 @@ /obj/item/implant/hard_spear name = "hardlight spear implant" - icon = 'monkestation/icons/obj/implants.dmi' - icon_state = "lightspear" //Shows up as the action button icon + actions_types = null implant_color = "b" - uses = -1 - COOLDOWN_DECLARE(hardlight_implant_cooldown) + allow_multiple = TRUE + var/timerid + var/deltime = 3 SECONDS + /// The typepath of the spell we give to people. (yes this is copy pasted from spell implants, yes this has different functionality) + var/datum/action/cooldown/spell/spell_type = /datum/action/cooldown/spell/conjure_item/hardlight_spear + /// The actual spell we give to the person on implant + var/datum/action/cooldown/spell/spell_to_give + /// Does this implant contain a spell + var/spell_inside = FALSE + /// What is the level of the spell inside + var/spell_inside_level = 1 -/obj/item/implant/hard_spear/activate() - if(!COOLDOWN_FINISHED(src, hardlight_implant_cooldown)) //Thanks implant_abductor.dm for the help <3 - to_chat(imp_in, "You must wait [COOLDOWN_TIMELEFT(src, hardlight_implant_cooldown)*0.1] seconds to use [src] again!") +/obj/item/implant/hard_spear/Initialize(mapload) + . = ..() + if(!spell_type) return - var/obj/item/spear/hardlight_spear/summoned_spear - summoned_spear = new /obj/item/spear/hardlight_spear(imp_in.loc) - if(imp_in.put_in_hands(summoned_spear,TRUE)) - to_chat(imp_in, "A spear manifests in your hand.") - playsound(imp_in, 'sound/weapons/saberon.ogg', 35, 1) - QDEL_IN(summoned_spear, 10 SECONDS) - COOLDOWN_START(src, hardlight_implant_cooldown, 20 SECONDS) - else - to_chat(imp_in, "You must have a free hand to summon a spear!") + spell_to_give = new spell_type(src) + +/obj/item/implant/hard_spear/implant(mob/living/target, mob/user, silent = FALSE, force = FALSE) + . = ..() + if (!.) return + if (!spell_to_give) + return FALSE + + var/datum/action/cooldown/spell/existing = locate(spell_to_give) in user.actions + if(existing) + if(!existing.level_spell()) + to_chat(target, span_boldnotice("The implant is unable to upgrade your hardlight spear further")) + return FALSE + timerid = QDEL_IN_STOPPABLE(src, deltime) + return TRUE + spell_inside = TRUE + spell_to_give.Grant(target) + return TRUE + +/obj/item/implant/hard_spear/removed(mob/living/source, silent, special) + . = ..() + if (!.) + return FALSE + + if(spell_inside) + if(spell_to_give) + spell_inside_level = spell_to_give.spell_level + spell_to_give.Remove(source) + if(source.stat != DEAD && !silent) + to_chat(source, span_boldnotice("")) + + if(timerid) + deltimer(timerid) + timerid = null + + +/obj/item/implant/hard_spear/Destroy() + QDEL_NULL(spell_to_give) + return ..() + +/obj/item/implant/hard_spear/get_data() + var/dat = {"Implant Specifications:
+ Name: Aetherofusion Hardlight Weapons Platform
+ Life: 67 years in a dead host.
+ Important Notes: The insertion of additional copies of this implant will upgrade the orignal one. Efficacy not shown after 5 upgrades.
+
+ Implant Details:
+ Function: Preforms and maintains a series of classified modifications to the body.
+ Special Features: Allows the implantee to control a single hardlight spear, further implants will allow for up to 4 additional spears.
+ System Resonance: Internal resonance level suggests a [spell_to_give] is contained within.
+ Integrity: Implant acquires waste material in the blood for self-repair, giving it an unlimited lifespan in a living host."} + return dat + /obj/item/implanter/hard_spear name = "implanter (hardlight spear)" imp_type = /obj/item/implant/hard_spear @@ -31,42 +83,215 @@ desc = "A glass case containing a hardlight spear implant." imp_type = /obj/item/implant/hard_spear -/obj/item/spear/hardlight_spear + +/obj/item/implant/hard_spear/max + name = "hardlight spear implant" + spell_type = /datum/action/cooldown/spell/conjure_item/hardlight_spear/max + allow_multiple = FALSE + +/obj/item/implant/hard_spear/get_data() + var/dat = {"Implant Specifications:
+ Name: Aetherofusion Experimental Resonance System
+ Life: 8 millennia in a dead host.
+ Important Notes: The insertion of additional copies of this implant will do nothing, you cannot improve on perfection.
+
+ Implant Details:
+ Function: CLASSIFIED.
+ Special Features: Allows the implantee to control seven hardlight spears.
+ System Resonance: Internal resonance level is above readable levels.
+ Integrity: Implant acquires waste material in the blood for self-repair, giving it an unlimited lifespan in a living host."} + return dat + +/obj/item/implanter/hard_spear/max + name = "implanter (hardlight spear)" + imp_type = /obj/item/implant/hard_spear/max + +/obj/item/implantcase/hard_spear/max + name = "implant case - 'Hardlight Spear'" + desc = "A glass case containing a hardlight spear implant." + imp_type = /obj/item/implant/hard_spear/max + +/datum/action/cooldown/spell/conjure_item/hardlight_spear + name = "Hardlight Spear" + desc = "Summon a spear of light to strike down your foes." + button_icon = 'monkestation/icons/obj/items_and_weapons.dmi' + button_icon_state = "lightspear" + check_flags = AB_CHECK_CONSCIOUS|AB_CHECK_HANDS_BLOCKED|AB_CHECK_INCAPACITATED + sound = 'sound/weapons/saberon.ogg' + + school = SCHOOL_CONJURATION + cooldown_time = 20 SECONDS + invocation_type = INVOCATION_NONE + + spell_requirements = SPELL_REQUIRES_HUMAN + antimagic_flags = NONE + spell_max_level = 5 //max is actually 7(the point where the sprites stop working), but the implant can only reach 5 + + delete_old = FALSE + item_type = /obj/item/gun/magic/hardlight_spear + +/datum/action/cooldown/spell/conjure_item/hardlight_spear/before_cast(mob/living/cast_on) + . = ..() + for(var/I in cast_on.get_contents()) + if(istype(I, /obj/item/gun/magic/hardlight_spear)) + return . | SPELL_CANCEL_CAST + + +/datum/action/cooldown/spell/conjure_item/hardlight_spear/make_item() + . = ..() + var/obj/item/gun/magic/hardlight_spear/made_spear = . + made_spear.spears_left = spell_level-1 + +/datum/action/cooldown/spell/conjure_item/hardlight_spear/get_spell_title() + switch(spell_level) + if(2) + return "Upgraded " + if(3) + return "Recursive " + if(4) + return "Resonant " + if(5) + return "Ascended " + if(6) + return "Overwhelming " + if(7) + return "Commmanding " + + return "" + +/datum/action/cooldown/spell/conjure_item/hardlight_spear/max + name = "Commmanding Hardlight Spear" + cooldown_time = 10 SECONDS + spell_level = 7 + +/datum/action/cooldown/spell/conjure_item/hardlight_spear/max/get_spell_title() + return "" //commanding commanding + +/obj/item/gun/magic/hardlight_spear //listen man + name = "hardlight spear" + desc = "A spear made out of hardened light." + fire_sound = 'sound/weapons/fwoosh.ogg' + pinless = TRUE + force = 25 + wound_bonus = -5 + bare_wound_bonus = 20 + armour_penetration = 18 + block_chance = 0 + sharpness = SHARP_POINTY + w_class = WEIGHT_CLASS_HUGE + antimagic_flags = NONE + hitsound = 'sound/weapons/blade1.ogg' icon = 'monkestation/icons/obj/items_and_weapons.dmi' icon_state = "lightspear" inhand_icon_state = "lightspear" - icon_prefix = "lightspear" worn_icon_state = "none" lefthand_file = 'monkestation/icons/mob/inhands/polearms_lefthand.dmi' righthand_file = 'monkestation/icons/mob/inhands/polearms_righthand.dmi' - name = "hardlight spear" - desc = "A spear made out of hardened light." - force = 15 - w_class = WEIGHT_CLASS_BULKY - slot_flags = NONE + slot_flags = null + can_charge = FALSE //ITS A SPEAR + item_flags = NEEDS_PERMIT | DROPDEL | ABSTRACT | NO_MAT_REDEMPTION + resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF light_system = MOVABLE_LIGHT light_outer_range = 3 light_power = 1 - throwforce = 25 - throw_speed = 6 - armour_penetration = 18 - hitsound = 'sound/weapons/blade1.ogg' - sharpness = SHARP_POINTY + max_charges = 1 + var/spears_left = 5 + ammo_type = /obj/item/ammo_casing/magic/hardlight_spear -/obj/item/spear/hardlight_spear/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) +/obj/item/gun/magic/hardlight_spear/Initialize(mapload) . = ..() - if(hit_atom && !QDELETED(hit_atom)) - if(istype(hit_atom, /mob/living)) //Living mobs handle hit sounds differently. - var/volume = get_volume_by_throwforce_and_or_w_class() - playsound(hit_atom, 'sound/weapons/genhit.ogg',volume, TRUE, -1) - else - playsound(src, drop_sound, 60, ignore_walls = FALSE) - qdel(src) //Deletes when it gets thrown at somethign - return hit_atom.hitby(src, 0, 0, throwingdatum=throwingdatum) - -/obj/item/spear/hardlight_spear/unembedded() + AddComponent(/datum/component/jousting) + + AddComponent(/datum/component/butchering, \ + speed = 10 SECONDS, \ + effectiveness = 70, \ + ) + + block_chance = 5+spears_left*5 + +/obj/item/gun/magic/hardlight_spear/worn_overlays(mutable_appearance/standing, isinhands) . = ..() - QDEL_NULL(src) //Deletes itself when unembedded + if(!isinhands) //HOW ARE YOU DOING THIS + return + if(!spears_left) + return + var/mutable_appearance/back_spear_overlay + switch(spears_left) + if(0) + return + if(1) + back_spear_overlay = mutable_appearance('monkestation/icons/effects/hardlightspear.dmi', "spear1", MOB_SHIELD_LAYER) + if(2) + back_spear_overlay = mutable_appearance('monkestation/icons/effects/hardlightspear.dmi', "spear2", MOB_SHIELD_LAYER) + if(3) + back_spear_overlay = mutable_appearance('monkestation/icons/effects/hardlightspear.dmi', "spear3", MOB_SHIELD_LAYER) + if(4) + back_spear_overlay = mutable_appearance('monkestation/icons/effects/hardlightspear.dmi', "spear4", MOB_SHIELD_LAYER) + if(5) + back_spear_overlay = mutable_appearance('monkestation/icons/effects/hardlightspear.dmi', "spear5", MOB_SHIELD_LAYER) + if(6) + back_spear_overlay = mutable_appearance('monkestation/icons/effects/hardlightspear.dmi', "spear6", MOB_SHIELD_LAYER) + back_spear_overlay.pixel_x = -32 + . += back_spear_overlay + + +/obj/item/gun/magic/hardlight_spear/can_trigger_gun(mob/living/user, akimbo_usage) // This isn't really a gun, so it shouldn't be checking for TRAIT_NOGUNS, a firing pin (pinless), or a trigger guard (guardless) + if(akimbo_usage) + return FALSE //this would be kinda weird while shooting someone down. return TRUE +/obj/item/gun/magic/hardlight_spear/process_fire(atom/target, mob/living/user, message = TRUE, params = null, zone_override = "", bonus_spread = 0) + . = ..() + if(!.) + return + if(spears_left) + var/obj/item/gun/magic/hardlight_spear/spear = new type + spear.spears_left = spears_left - 1 + qdel(src) + user.put_in_hands(spear) + else + user.dropItemToGround(src, TRUE) + +/obj/item/ammo_casing/magic/hardlight_spear + name = "please god report this" + desc = "Why god why" + slot_flags = null + projectile_type = /obj/projectile/bullet/hardlight_spear + heavy_metal = FALSE + +/obj/item/ammo_casing/magic/hardlight_spear/ready_proj(atom/target, mob/living/user, quiet, zone_override, atom/fired_from) + if(!loaded_projectile) + return + + if(isliving(target)) + loaded_projectile.homing = TRUE + loaded_projectile.homing_turn_speed = 40 + loaded_projectile.set_homing_target(target) + + return ..() + +/obj/projectile/bullet/hardlight_spear + name = "hardlight spear" + icon = 'monkestation/icons/obj/guns/projectiles.dmi' + icon_state = "lightspear" + damage = 45 + armour_penetration = 10 + wound_bonus = 5 + bare_wound_bonus = 60 + wound_falloff_tile = 0 + embed_falloff_tile = 0 + speed = 0.4 //lower = faster + shrapnel_type = /obj/item/shrapnel/bullet/spear + hitsound = 'sound/weapons/bladeslice.ogg' + hitsound_wall = 'sound/weapons/parry.ogg' + embedding = list(embed_chance=100, fall_chance=2, jostle_chance=4, ignore_throwspeed_threshold=TRUE, pain_stam_pct=0.5, pain_mult=5, jostle_pain_mult=6, rip_time=10) +/obj/item/shrapnel/bullet/spear + name = "hardlight spear" + icon = 'monkestation/icons/obj/items_and_weapons.dmi' + icon_state = "lightspear" + +/obj/item/shrapnel/bullet/spear/unembedded() + . = ..() + QDEL_NULL(src) //Deletes itself when unembedded + return TRUE diff --git a/monkestation/code/game/objects/items/storage/uplink_kits.dm b/monkestation/code/game/objects/items/storage/uplink_kits.dm index aabb3983d513..71ca4839d822 100644 --- a/monkestation/code/game/objects/items/storage/uplink_kits.dm +++ b/monkestation/code/game/objects/items/storage/uplink_kits.dm @@ -4,6 +4,12 @@ /obj/item/storage/box/syndie_kit/imp_hard_spear/PopulateContents() new /obj/item/implanter/hard_spear(src) +/obj/item/storage/box/syndie_kit/imp_hard_spear/max + name = "commanding hardlight spear implant box" + +/obj/item/storage/box/syndie_kit/imp_hard_spear/max/PopulateContents() + new /obj/item/implanter/hard_spear/max(src) + /obj/item/storage/box/syndimaid diff --git a/monkestation/code/modules/antagonists/uplink_items/weapons.dm b/monkestation/code/modules/antagonists/uplink_items/weapons.dm index c55ee090e9e0..c8bd42c70038 100644 --- a/monkestation/code/modules/antagonists/uplink_items/weapons.dm +++ b/monkestation/code/modules/antagonists/uplink_items/weapons.dm @@ -1,9 +1,19 @@ /datum/uplink_item/implants/hardlight name = "Hardlight Spear Implant" - desc = "An implant injected into the body, and later activated at the user's will. It will summon a spear \ - made out of hardlight that the user can use to wreak havoc." + desc = "An implant that allows you to summon and control a hardlight spear. \ + Adding additional implants to your body will further refine the spear summoning process, allowing you to control up to 5 spears. \ + Wait a minimum of three seconds between injections. Exact mechanism for spear summoning is classified under Aetherofusion NDA." item = /obj/item/storage/box/syndie_kit/imp_hard_spear - cost = 10 + cost = 7 + +/datum/uplink_item/implants/hardlight/max + name = "Commanding Hardlight Spear Implant" + desc = "An implant that allows you to summon and control seven hardlight spears. \ + Additional implants will do nothing, you cannot improve on perfection. Side effects may include: Uncontrollable telepathy, formation of subconscious hiveminds, anamnesis, levitation, and hallucinations of music. \ + Aetherofusion is not responsable for any damages this may cause." + purchasable_from = UPLINK_NUKE_OPS + item = /obj/item/storage/box/syndie_kit/imp_hard_spear/max + cost = 40 /datum/uplink_item/dangerous/laser_musket name = "Syndicate Laser Musket" diff --git a/monkestation/code/modules/clothing/head/costume.dm b/monkestation/code/modules/clothing/head/costume.dm index 30373848e4b0..74bc8674fbea 100644 --- a/monkestation/code/modules/clothing/head/costume.dm +++ b/monkestation/code/modules/clothing/head/costume.dm @@ -38,3 +38,10 @@ worn_icon = 'monkestation/icons/mob/clothing/head.dmi' icon_state = "knowingclownhat" worn_y_offset = 6 + +/obj/item/clothing/head/guardmanhelmet + name = "guardman's helmet" + desc = "Keeps your brain intact when fighting heretics" + icon = 'monkestation/icons/obj/clothing/hats.dmi' + worn_icon = 'monkestation/icons/mob/clothing/head.dmi' + icon_state = "guardman_helmet" \ No newline at end of file diff --git a/monkestation/code/modules/clothing/neck/cloaks.dm b/monkestation/code/modules/clothing/neck/cloaks.dm index e6192b163ca0..ff8f5a000c82 100644 --- a/monkestation/code/modules/clothing/neck/cloaks.dm +++ b/monkestation/code/modules/clothing/neck/cloaks.dm @@ -41,3 +41,11 @@ worn_icon = 'monkestation/icons/mob/clothing/neck.dmi' icon_state = "beecloak" worn_icon_state = "beecloak" + +/obj/item/clothing/neck/ascot + name = "Ascot" + desc = "A fancy scarf to keep your neck warm and ward off sharp objects" + icon = 'monkestation/icons/obj/clothing/necks.dmi' + worn_icon = 'monkestation/icons/mob/clothing/neck.dmi' + icon_state = "ascot" + worn_icon_state = "ascot" diff --git a/monkestation/code/modules/clothing/suits/coats.dm b/monkestation/code/modules/clothing/suits/coats.dm index 32bbb248acfb..5b5eaef23c23 100644 --- a/monkestation/code/modules/clothing/suits/coats.dm +++ b/monkestation/code/modules/clothing/suits/coats.dm @@ -96,6 +96,14 @@ 'monkestation/sound/voice/screams/misc/HL1 Scientist/scream_sci1.ogg', 'monkestation/sound/voice/screams/misc/HL1 Scientist/scream_sci2.ogg') +/obj/item/clothing/suit/armor/guardmanvest + name = "guardman's vest" + desc = "It keeps your guts intact, thats really all that matters" + icon = 'monkestation/icons/obj/clothing/suits.dmi' + worn_icon = 'monkestation/icons/mob/clothing/suit.dmi' + icon_state = "guardman_vest" + + //Only basic and scientist labcoats get to STAPH /obj/item/clothing/suit/toggle/labcoat/cmo @@ -181,4 +189,4 @@ /obj/item/clothing/suit/armor/secduster/science name = "science security duster" icon_state = "cowboy_sec_science" - masktype = /obj/item/clothing/mask/breath/sec_bandana/science + masktype = /obj/item/clothing/mask/breath/sec_bandana/science \ No newline at end of file diff --git a/monkestation/code/modules/clothing/under/undersuit.dm b/monkestation/code/modules/clothing/under/undersuit.dm index 59b81bdc13ed..9cc681910a3f 100644 --- a/monkestation/code/modules/clothing/under/undersuit.dm +++ b/monkestation/code/modules/clothing/under/undersuit.dm @@ -75,3 +75,10 @@ icon_state = "wonka" worn_icon = 'monkestation/icons/mob/clothing/uniform.dmi' worn_icon_state = "wonka" + +/obj/item/clothing/under/guardmanuniform + name = "guardman's uniform" + desc = "The red color is meant to hide either your blood or the xeno's blood, do xenos even have red blood?" + icon = 'monkestation/icons/obj/clothing/uniforms.dmi' + icon_state = "guardman_uniform" + worn_icon = 'monkestation/icons/mob/clothing/uniform.dmi' \ No newline at end of file diff --git a/monkestation/code/modules/donator/code/item/clothing.dm b/monkestation/code/modules/donator/code/item/clothing.dm index ed3e75d1076f..2fd3ec1eec21 100644 --- a/monkestation/code/modules/donator/code/item/clothing.dm +++ b/monkestation/code/modules/donator/code/item/clothing.dm @@ -160,41 +160,3 @@ icon_state = "kriegmask" inhand_icon_state = null flags_inv = HIDEFACE - -/obj/item/clothing/suit/hooded/aotcloak - name = "survey corps cloak" - desc = "A lightweight but durable cloak with an emblem emblazoned on the back." - icon = 'monkestation/code/modules/donator/icons/obj/clothing.dmi' - worn_icon = 'monkestation/code/modules/donator/icons/mob/clothing.dmi' - icon_state = "aotcloak" - body_parts_covered = CHEST|ARMS - cold_protection = CHEST|ARMS - allowed = list() - armor_type = /datum/armor/hooded_wintercoat - hoodtype = /obj/item/clothing/head/hooded/aotcloak - layer = NECK_LAYER - -/obj/item/clothing/suit/hooded/aotcloak/Initialize(mapload) - . = ..() - allowed += list( - /obj/item/flashlight, - /obj/item/lighter, - /obj/item/modular_computer/pda, - /obj/item/radio, - /obj/item/storage/bag/books, - /obj/item/storage/fancy/cigarettes, - /obj/item/tank/internals/emergency_oxygen, - /obj/item/tank/internals/plasmaman, - /obj/item/toy, - ) - -/obj/item/clothing/head/hooded/aotcloak - name = "survey corps cloak hood" - desc = "A cozy winter hood attached to a heavy winter jacket." - icon = 'monkestation/code/modules/donator/icons/obj/clothing.dmi' - worn_icon = 'monkestation/code/modules/donator/icons/mob/clothing.dmi' - icon_state = "aotcloak_hood" - body_parts_covered = HEAD - cold_protection = HEAD - flags_inv = HIDEHAIR|HIDEEARS - armor_type = /datum/armor/hooded_winterhood diff --git a/monkestation/code/modules/loadouts/items/neck.dm b/monkestation/code/modules/loadouts/items/neck.dm index eb86bf4fc417..c12588cea1e9 100644 --- a/monkestation/code/modules/loadouts/items/neck.dm +++ b/monkestation/code/modules/loadouts/items/neck.dm @@ -90,6 +90,11 @@ GLOBAL_LIST_INIT(loadout_necks, generate_loadout_items(/datum/loadout_item/neck) name = "Infinity Scarf" item_path = /obj/item/clothing/neck/infinity_scarf +/datum/loadout_item/neck/ascot + name = "Ascot" + item_path = /obj/item/clothing/neck/ascot + requires_purchase = FALSE + /* * NECKTIES */ diff --git a/monkestation/code/modules/storytellers/converted_events/_base_event.dm b/monkestation/code/modules/storytellers/converted_events/_base_event.dm index 0a4a88a2587c..17157e44bf6a 100644 --- a/monkestation/code/modules/storytellers/converted_events/_base_event.dm +++ b/monkestation/code/modules/storytellers/converted_events/_base_event.dm @@ -229,11 +229,10 @@ if(!candidate.mind) candidate.mind = new /datum/mind(candidate.key) - setup_minds += candidate.mind var/mob/living/carbon/human/new_human = make_body(candidate) - candidate.mind.set_current(new_human) - candidate.mind.special_role = antag_flag - candidate.mind.restricted_roles = restricted_roles + new_human.mind.special_role = antag_flag + new_human.mind.restricted_roles = restricted_roles + setup_minds += new_human.mind setup = TRUE diff --git a/monkestation/icons/effects/hardlightspear.dmi b/monkestation/icons/effects/hardlightspear.dmi new file mode 100644 index 000000000000..c0f4fd367a2a Binary files /dev/null and b/monkestation/icons/effects/hardlightspear.dmi differ diff --git a/monkestation/icons/mob/clothing/head.dmi b/monkestation/icons/mob/clothing/head.dmi index d900f7ca1b74..5905870683a4 100644 Binary files a/monkestation/icons/mob/clothing/head.dmi and b/monkestation/icons/mob/clothing/head.dmi differ diff --git a/monkestation/icons/mob/clothing/neck.dmi b/monkestation/icons/mob/clothing/neck.dmi index 58f7f310228b..0b81b3d7df77 100644 Binary files a/monkestation/icons/mob/clothing/neck.dmi and b/monkestation/icons/mob/clothing/neck.dmi differ diff --git a/monkestation/icons/mob/clothing/suit.dmi b/monkestation/icons/mob/clothing/suit.dmi index b205f37c5e4e..08b398e6c981 100644 Binary files a/monkestation/icons/mob/clothing/suit.dmi and b/monkestation/icons/mob/clothing/suit.dmi differ diff --git a/monkestation/icons/mob/clothing/uniform.dmi b/monkestation/icons/mob/clothing/uniform.dmi index ad0c552ff500..f1430ba85536 100644 Binary files a/monkestation/icons/mob/clothing/uniform.dmi and b/monkestation/icons/mob/clothing/uniform.dmi differ diff --git a/monkestation/icons/mob/inhands/polearms_lefthand.dmi b/monkestation/icons/mob/inhands/polearms_lefthand.dmi index bd7e8dea452a..02980e6ad74c 100644 Binary files a/monkestation/icons/mob/inhands/polearms_lefthand.dmi and b/monkestation/icons/mob/inhands/polearms_lefthand.dmi differ diff --git a/monkestation/icons/mob/inhands/polearms_righthand.dmi b/monkestation/icons/mob/inhands/polearms_righthand.dmi index 1f63e5eb78c2..48213a6c1dbb 100644 Binary files a/monkestation/icons/mob/inhands/polearms_righthand.dmi and b/monkestation/icons/mob/inhands/polearms_righthand.dmi differ diff --git a/monkestation/icons/obj/clothing/hats.dmi b/monkestation/icons/obj/clothing/hats.dmi index abf2d81a471a..740eef80cb52 100644 Binary files a/monkestation/icons/obj/clothing/hats.dmi and b/monkestation/icons/obj/clothing/hats.dmi differ diff --git a/monkestation/icons/obj/clothing/necks.dmi b/monkestation/icons/obj/clothing/necks.dmi index ab4701b0dfa2..b210c03cd5e2 100644 Binary files a/monkestation/icons/obj/clothing/necks.dmi and b/monkestation/icons/obj/clothing/necks.dmi differ diff --git a/monkestation/icons/obj/clothing/suits.dmi b/monkestation/icons/obj/clothing/suits.dmi index 7881728374fe..e4a71324d665 100644 Binary files a/monkestation/icons/obj/clothing/suits.dmi and b/monkestation/icons/obj/clothing/suits.dmi differ diff --git a/monkestation/icons/obj/clothing/uniforms.dmi b/monkestation/icons/obj/clothing/uniforms.dmi index f175393dc57c..722dc1587b30 100644 Binary files a/monkestation/icons/obj/clothing/uniforms.dmi and b/monkestation/icons/obj/clothing/uniforms.dmi differ diff --git a/monkestation/icons/obj/guns/projectiles.dmi b/monkestation/icons/obj/guns/projectiles.dmi index 49bd316da0a2..22bc28134ae9 100644 Binary files a/monkestation/icons/obj/guns/projectiles.dmi and b/monkestation/icons/obj/guns/projectiles.dmi differ diff --git a/monkestation/icons/obj/implants.dmi b/monkestation/icons/obj/implants.dmi deleted file mode 100644 index e26ffc828b2f..000000000000 Binary files a/monkestation/icons/obj/implants.dmi and /dev/null differ diff --git a/monkestation/icons/obj/items_and_weapons.dmi b/monkestation/icons/obj/items_and_weapons.dmi index a3df06e95990..919998aba182 100644 Binary files a/monkestation/icons/obj/items_and_weapons.dmi and b/monkestation/icons/obj/items_and_weapons.dmi differ