diff --git a/aurorastation.dme b/aurorastation.dme index 03906c909a9..1966d8575bb 100644 --- a/aurorastation.dme +++ b/aurorastation.dme @@ -422,6 +422,7 @@ #include "code\game\antagonist\outsider\commando.dm" #include "code\game\antagonist\outsider\deathsquad.dm" #include "code\game\antagonist\outsider\ert.dm" +#include "code\game\antagonist\outsider\loner.dm" #include "code\game\antagonist\outsider\mercenary.dm" #include "code\game\antagonist\outsider\ninja.dm" #include "code\game\antagonist\outsider\raider.dm" @@ -528,6 +529,7 @@ #include "code\game\gamemodes\events\holidays\Other.dm" #include "code\game\gamemodes\extended\extended.dm" #include "code\game\gamemodes\heist\heist.dm" +#include "code\game\gamemodes\loner\loner.dm" #include "code\game\gamemodes\malfunction\malf_hardware.dm" #include "code\game\gamemodes\malfunction\malf_research.dm" #include "code\game\gamemodes\malfunction\malf_research_ability.dm" diff --git a/code/__defines/gamemode.dm b/code/__defines/gamemode.dm index 45db04ff5e6..8c9c892aac1 100644 --- a/code/__defines/gamemode.dm +++ b/code/__defines/gamemode.dm @@ -46,6 +46,7 @@ #define MODE_RAIDER_MAGE "raider mage" #define MODE_RAIDER "raider" #define MODE_BURGLAR "burglar" +#define MODE_LONER "loner" #define MODE_WIZARD "wizard" #define MODE_CHANGELING "changeling" #define MODE_CULTIST "cultist" diff --git a/code/datums/outfits/outfit_antag.dm b/code/datums/outfits/outfit_antag.dm index f0149f82987..4236f868f52 100644 --- a/code/datums/outfits/outfit_antag.dm +++ b/code/datums/outfits/outfit_antag.dm @@ -166,6 +166,21 @@ if(!H.shoes) H.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots/toeless(H), slot_shoes) +/datum/outfit/admin/syndicate/mercenary/loner + name = "Loner" + + head = /obj/item/clothing/head/helmet/space/psi_amp/lesser + l_ear = /obj/item/device/radio/headset/syndicate + r_pocket = /obj/item/device/special_uplink/burglar + + backpack_contents = list( + /obj/item/storage/box/syndie_kit/space = 1, + /obj/item/gun/projectile/shotgun/foldable = 1, + /obj/item/device/multitool/hacktool = 1 + ) + + id_access = "Lone Operative" + /datum/outfit/admin/syndicate/raider name = "Raider" allow_backbag_choice = FALSE diff --git a/code/game/antagonist/outsider/loner.dm b/code/game/antagonist/outsider/loner.dm new file mode 100644 index 00000000000..f45f5f7ed61 --- /dev/null +++ b/code/game/antagonist/outsider/loner.dm @@ -0,0 +1,46 @@ +var/datum/antagonist/loner/loners + +/datum/antagonist/loner + id = MODE_LONER + role_text = "Loner" + role_text_plural = "Loners" + bantype = "loner" + antag_indicator = "loner" + landmark_id = "lonerspawn" + welcome_text = "You are a Loner, someone underequipped to deal with the station. You will probably not survive for the whole round, so don't sweat it if you die!
\ + You are equipped with a lesser cerebro-enhancer, which allows you to unlock your psionic potential. Use it in-hand to choose your boosted faculty, then install it on your head." + flags = ANTAG_OVERRIDE_JOB | ANTAG_CLEAR_EQUIPMENT | ANTAG_CHOOSE_NAME | ANTAG_VOTABLE | ANTAG_SET_APPEARANCE + antaghud_indicator = "hudloner" + required_age = 7 + + hard_cap = 1 + hard_cap_round = 1 + initial_spawn_req = 1 + initial_spawn_target = 1 + + faction = "syndicate" + + id_type = /obj/item/card/id/syndicate + +/datum/antagonist/loner/New() + ..() + loners = src + +/datum/antagonist/loner/equip(var/mob/living/carbon/human/player) + if(!..()) + return FALSE + + for(var/obj/item/I in player) + if(istype(I, /obj/item/implant)) + continue + player.drop_from_inventory(I) + if(I.loc != player) + qdel(I) + + player.preEquipOutfit(/datum/outfit/admin/syndicate/mercenary/loner, FALSE) + player.equipOutfit(/datum/outfit/admin/syndicate/mercenary/loner, FALSE) + player.force_update_limbs() + player.update_eyes() + player.regenerate_icons() + + return TRUE \ No newline at end of file diff --git a/code/game/gamemodes/loner/loner.dm b/code/game/gamemodes/loner/loner.dm new file mode 100644 index 00000000000..000e294e451 --- /dev/null +++ b/code/game/gamemodes/loner/loner.dm @@ -0,0 +1,10 @@ +/datum/game_mode/loner + name = "loner" + config_tag = "loner" + max_players = 8 + required_enemies = 1 + required_players = 5 + round_description = "Does anyone else hear a whistling noise...?" + extended_round_description = "A lone operative with a very large brain plans on dropping in and paying the crew a visit." + end_on_antag_death = FALSE + antag_tags = list(MODE_LONER) \ No newline at end of file diff --git a/code/modules/psionics/equipment/cerebro_enhancers.dm b/code/modules/psionics/equipment/cerebro_enhancers.dm index 684a3c53aa0..0fb48ce86d5 100644 --- a/code/modules/psionics/equipment/cerebro_enhancers.dm +++ b/code/modules/psionics/equipment/cerebro_enhancers.dm @@ -2,6 +2,7 @@ /obj/item/clothing/head/helmet/space/psi_amp name = "cerebro-energetic enhancer" desc = "A matte-black, eyeless cerebro-energetic enhancement helmet. It uses highly sophisticated, and illegal, techniques to drill into your brain and install psi-infected AIs into the fluid cavities between your lobes." + desc_info = "Due to the nature of this headgear, it will also protect you from the pressure of space. When installing the boosters, your chosen faculties will be boosted to the headgear's maximum potential, but the unchosen faculties will also be boosted somewhat." action_button_name = "Install Boosters" icon_state = "amp" diff --git a/config/example/config.txt b/config/example/config.txt index 47d71d6088c..983fbb02585 100644 --- a/config/example/config.txt +++ b/config/example/config.txt @@ -128,6 +128,7 @@ PROBABILITY S EXTENDED 1 PROBABILITY S MALFUNCTION 1 PROBABILITY S MERCENARY 1 PROBABILITY S WIZARD 1 +PROBABILITY S LONER 1 PROBABILITY S CHANGELING 1 PROBABILITY S CULT 1 PROBABILITY S BURGLARS 1 diff --git a/html/changelogs/geeves-merc_man.yml b/html/changelogs/geeves-merc_man.yml new file mode 100644 index 00000000000..11c66466df3 --- /dev/null +++ b/html/changelogs/geeves-merc_man.yml @@ -0,0 +1,6 @@ +author: Geeves + +delete-after: True + +changes: + - rscadd: "Added a new gamemode, Loner. It features a single psionic operative." \ No newline at end of file diff --git a/icons/mob/hud.dmi b/icons/mob/hud.dmi index 8b8c3ed71af..de06497115b 100644 Binary files a/icons/mob/hud.dmi and b/icons/mob/hud.dmi differ diff --git a/icons/mob/mob.dmi b/icons/mob/mob.dmi index ea14b09c603..8c5ae482f7b 100644 Binary files a/icons/mob/mob.dmi and b/icons/mob/mob.dmi differ diff --git a/icons/turf/areas.dmi b/icons/turf/areas.dmi index 6e715860775..0f8e2ab1369 100755 Binary files a/icons/turf/areas.dmi and b/icons/turf/areas.dmi differ diff --git a/maps/_common/areas/special.dm b/maps/_common/areas/special.dm index 30a35cd7514..2d859d63745 100644 --- a/maps/_common/areas/special.dm +++ b/maps/_common/areas/special.dm @@ -132,6 +132,10 @@ name = "Burglar Hideout" icon_state = "burglar" +/area/antag/loner + name = "Loner Basement" + icon_state = "loner" + /area/antag/wizard name = "Wizard Mind Palace" icon_state = "wizard" diff --git a/maps/aurora/aurora-1_centcomm.dmm b/maps/aurora/aurora-1_centcomm.dmm index fb4a3567d1c..d826f790e4b 100644 --- a/maps/aurora/aurora-1_centcomm.dmm +++ b/maps/aurora/aurora-1_centcomm.dmm @@ -7155,6 +7155,12 @@ name = "military corvette" }, /area/shuttle/administration) +"bco" = ( +/obj/machinery/light{ + icon_state = "tube1" + }, +/turf/unsimulated/floor, +/area/antag/loner) "bcu" = ( /obj/machinery/light/small{ brightness_power = 0.5; @@ -8166,6 +8172,16 @@ icon_state = "wood" }, /area/centcom/distress_prep) +"bEH" = ( +/obj/effect/floor_decal/spline/plain{ + dir = 9 + }, +/obj/structure/table/stone/marble, +/obj/random/booze, +/turf/unsimulated/floor{ + icon_state = "wood" + }, +/area/antag/loner) "bGo" = ( /obj/machinery/door/airlock/centcom{ locked = 1; @@ -9438,6 +9454,9 @@ icon_state = "dark2" }, /area/centcom/holding) +"cAa" = ( +/turf/unsimulated/wall/steel, +/area/antag/loner) "cAr" = ( /obj/structure/flora/ausbushes/sparsegrass, /obj/structure/flora/ausbushes/leafybush, @@ -12199,6 +12218,15 @@ /obj/structure/sign/directions/cryo, /turf/unsimulated/wall/darkshuttlewall, /area/centcom/ferry) +"ejT" = ( +/obj/machinery/vending/zora{ + density = 0; + name = "Jacked Zo'ra Soda"; + pixel_y = -22; + prices = list() + }, +/turf/unsimulated/floor, +/area/antag/loner) "ejY" = ( /turf/simulated/wall/shuttle/unique/hapt{ desc = "A scary armed military corvette. Carries no branding or emblem of any sort. This thing looks mean."; @@ -12366,6 +12394,14 @@ }, /turf/unsimulated/floor/plating, /area/shuttle/administration) +"erO" = ( +/obj/effect/map_effect/wingrille_spawn/reinforced/crescent, +/obj/structure/sign/pods{ + desc = "A direction sign which reads 'DROPPODS'."; + name = "\improper DROPPODS" + }, +/turf/unsimulated/floor/plating, +/area/antag/loner) "erT" = ( /obj/structure/shuttle_part/raider{ icon_state = "16,1" @@ -17928,6 +17964,15 @@ icon_state = "4,0" }, /area/shuttle/transport1) +"hOv" = ( +/obj/effect/map_effect/wingrille_spawn/reinforced/crescent, +/obj/structure/sign/double/map/left{ + desc = "A framed picture of a station."; + pixel_x = 16; + pixel_y = 32 + }, +/turf/unsimulated/floor/plating, +/area/antag/loner) "hOC" = ( /obj/item/device/radio/intercom{ broadcasting = 1; @@ -19490,6 +19535,21 @@ }, /turf/unsimulated/floor, /area/centcom/spawning) +"iKt" = ( +/obj/machinery/door/airlock/external{ + frequency = 1337; + icon_state = "door_locked"; + id_tag = "loner_basement_hatch"; + locked = 1; + name = "Hangar Access" + }, +/obj/machinery/door/blast/odin{ + dir = 2; + id = "loner_basement"; + name = "Hangar Access" + }, +/turf/unsimulated/floor, +/area/antag/mercenary) "iKK" = ( /obj/effect/floor_decal/industrial/warning/corner{ dir = 4 @@ -20378,7 +20438,7 @@ /area/centcom/legion/hangar5) "jsh" = ( /obj/machinery/door/airlock/external{ - frequency = 1331; + frequency = 1337; icon_state = "door_locked"; id_tag = "burglar_hideout_hatch"; locked = 1; @@ -20404,6 +20464,16 @@ icon_state = "ramptop" }, /area/antag/ninja) +"jur" = ( +/obj/effect/floor_decal/spline/plain{ + dir = 5 + }, +/obj/structure/table/stone/marble, +/obj/machinery/chemical_dispenser/bar_alc/full, +/turf/unsimulated/floor{ + icon_state = "wood" + }, +/area/antag/loner) "juP" = ( /obj/structure/flora/pottedplant/random{ anchored = 1; @@ -26497,6 +26567,21 @@ icon_state = "carpet6-2" }, /area/centcom/specops) +"nme" = ( +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/obj/machinery/embedded_controller/radio/simple_docking_controller{ + frequency = 1337; + id_tag = "loner_basement"; + name = "hangar controller"; + pixel_x = 26; + pixel_y = -1; + tag_door = "loner_basement_hatch" + }, +/turf/unsimulated/floor, +/area/antag/loner) "nmJ" = ( /obj/effect/floor_decal/corner/red/diagonal{ dir = 8 @@ -27422,6 +27507,19 @@ icon_state = "new_reinforced" }, /area/centcom/legion) +"nNQ" = ( +/obj/effect/floor_decal/industrial/loading/yellow{ + dir = 1 + }, +/obj/machinery/door/blast/odin/open{ + _wifi_id = "loner_droppod_1"; + layer = 2.8; + name = "Pod L" + }, +/turf/unsimulated/floor{ + icon_state = "new_reinforced" + }, +/area/antag/loner) "nOh" = ( /turf/unsimulated/wall/darkshuttlewall, /area/tdome/tdome1) @@ -28297,6 +28395,14 @@ icon_state = "wood-broken6" }, /area/centcom/distress_prep) +"oqg" = ( +/obj/vehicle/droppod/syndie{ + connected_blastdoor = "loner_droppod_1" + }, +/turf/unsimulated/floor{ + icon_state = "dark2" + }, +/area/antag/loner) "oqo" = ( /obj/structure/sign/poster{ pixel_y = 32 @@ -29552,6 +29658,14 @@ icon_state = "3,2" }, /area/shuttle/merchant) +"pne" = ( +/obj/structure/table/rack, +/obj/item/storage/box/stunshells, +/obj/item/storage/box/practiceshells, +/obj/item/storage/box/trackingslugs, +/obj/effect/decal/warning_stripes, +/turf/unsimulated/floor, +/area/antag/loner) "pnp" = ( /turf/simulated/wall/shuttle/unique/mercenary{ icon_state = "5,2" @@ -30582,6 +30696,15 @@ }, /turf/simulated/floor/tiled/dark, /area/shuttle/mercenary) +"pRB" = ( +/obj/effect/map_effect/wingrille_spawn/reinforced/crescent, +/obj/structure/sign/double/map/right{ + desc = "A framed picture of a station."; + pixel_x = -16; + pixel_y = 32 + }, +/turf/unsimulated/floor/plating, +/area/antag/loner) "pRX" = ( /obj/structure/window/shuttle/unique/merchant{ icon_state = "20,2" @@ -30947,6 +31070,20 @@ }, /turf/unsimulated/floor/plating, /area/shuttle/specops) +"qfT" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/button/remote/blast_door{ + dir = 4; + id = "loner_basement"; + name = "external hangar access"; + pixel_x = -23; + pixel_y = 4; + req_access = list(150) + }, +/turf/unsimulated/floor/plating, +/area/antag/mercenary) "qfW" = ( /obj/structure/bed/chair{ dir = 4 @@ -35273,6 +35410,10 @@ icon_state = "4,18" }, /area/shuttle/mercenary) +"tpC" = ( +/obj/machinery/recharge_station, +/turf/unsimulated/floor, +/area/antag/loner) "tqh" = ( /turf/simulated/floor/tiled/dark, /area/shuttle/legion) @@ -39242,6 +39383,9 @@ icon_state = "dark2" }, /area/centcom/control) +"vXo" = ( +/turf/unsimulated/floor, +/area/antag/loner) "vXT" = ( /turf/simulated/wall/shuttle/unique/distress{ icon_state = "2,0" @@ -39684,6 +39828,13 @@ }, /turf/simulated/floor/tiled/dark, /area/centcom/spawning) +"wlB" = ( +/obj/item/stool/bar/padded, +/obj/effect/landmark{ + name = "lonerspawn" + }, +/turf/unsimulated/floor, +/area/antag/loner) "wlG" = ( /obj/structure/table/rack, /obj/effect/floor_decal/industrial/outline/yellow, @@ -41608,6 +41759,16 @@ icon_state = "lino_grey" }, /area/centcom/bar) +"xkS" = ( +/obj/machinery/vending/snack{ + density = 0; + name = "Jacked Getmore Chocolate Corp"; + pixel_y = -22; + prices = list(); + random_itemcount = 0 + }, +/turf/unsimulated/floor, +/area/antag/loner) "xmf" = ( /turf/simulated/wall/shuttle/dark/corner/underlay{ dir = 6 @@ -52898,12 +53059,12 @@ lnj yhJ aaM aaM -aaM -ahV -ahV -ahV -ahV ahV +cAa +cAa +cAa +cAa +cAa xVl xVl xVl @@ -53155,11 +53316,11 @@ gCr gCr aaM aaM -aaM -ahV -ahV -ahV ahV +cAa +bEH +wlB +tpC xVl xVl rWF @@ -53412,11 +53573,11 @@ gCr aaM aaM aaM -aaM -ahV -ahV -ahV ahV +cAa +jur +vXo +bco xVl rMK rXN @@ -53669,11 +53830,11 @@ aaM aaM aaM aaM -aaM -ahV -ahV -ahV ahV +cAa +hOv +erO +xkS xVl rNY rXN @@ -53926,11 +54087,11 @@ aaM aaM aaM aaM -aaM -ahV -ahV -ahV ahV +cAa +oqg +nNQ +ejT xVl rPi rXN @@ -54183,11 +54344,11 @@ aaM aaM aaM aaM -aaM -ahV -ahV -ahV ahV +cAa +pRB +erO +vXo xVl xVl rZy @@ -54440,12 +54601,12 @@ aaM aaM aaM aaM -aaM -ahV -ahV -ahV -ahV ahV +cAa +pne +nme +vXo +cAa xVl xVl xVl @@ -54701,7 +54862,7 @@ aaM xVl xVl xVl -xVl +iKt xVl xVl xVl @@ -54959,7 +55120,7 @@ tZx vYd yjy vYd -vYd +qfT vYd vYd vYd @@ -63440,11 +63601,11 @@ aaM aaM aaM aaM -aaM -aaM -aaM -aaM -aaM +ahV +ahV +ahV +ahV +ahV ahV ahV ahV @@ -63697,11 +63858,11 @@ aaM aaM aaM aaM -aaM -aaM -aaM -aaM -aaM +ahV +ahV +ahV +ahV +ahV ahV ahV ahV