mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 02:16:05 +00:00
Various Space Hobo fixes (#29892)
* Various Space Hobo fixes * Removing from .dme * Logic fix * Test fix * Population cap * Adds confirmation prompt Co-authored-by: kanef <kanef9x@protonmail.com>
This commit is contained in:
@@ -151,6 +151,7 @@ var/global/universal_cult_chat = 0 //if set to 1, even human cultists can use cu
|
||||
var/datum/station_state/start_state = null
|
||||
var/datum/configuration/config = null
|
||||
|
||||
var/hoboamount = 0
|
||||
var/suspend_alert = 0
|
||||
|
||||
var/Debug = 0 // global debug switch
|
||||
|
||||
@@ -519,6 +519,68 @@
|
||||
)
|
||||
id_type = /obj/item/weapon/card/id/soviet_admiral
|
||||
|
||||
// ----- Space hobo
|
||||
|
||||
/datum/outfit/special/with_id/hobo
|
||||
|
||||
outfit_name = "Space Hobo"
|
||||
|
||||
backpack_types = list(
|
||||
BACKPACK_STRING = /obj/item/weapon/storage/backpack,
|
||||
SATCHEL_NORM_STRING = /obj/item/weapon/storage/backpack/satchel_norm,
|
||||
SATCHEL_ALT_STRING = /obj/item/weapon/storage/backpack/satchel,
|
||||
MESSENGER_BAG_STRING = /obj/item/weapon/storage/backpack/messenger,
|
||||
)
|
||||
|
||||
items_to_spawn = list(
|
||||
"Default" = list(
|
||||
slot_w_uniform_str = /obj/item/clothing/under/color/grey,
|
||||
slot_shoes_str = /obj/item/clothing/shoes/magboots,
|
||||
slot_wear_suit_str = /obj/item/clothing/suit/space/ghettorig,
|
||||
slot_head_str = /obj/item/clothing/head/helmet/space/ghetto,
|
||||
slot_wear_mask_str = /obj/item/clothing/mask/breath,
|
||||
),
|
||||
/datum/species/vox = list(
|
||||
slot_w_uniform_str =/obj/item/clothing/under/vox/vox_robes,
|
||||
slot_shoes_str = /obj/item/clothing/shoes/magboots/vox,
|
||||
slot_wear_suit_str = /obj/item/clothing/suit/space/vox/civ,
|
||||
slot_head_str = /obj/item/clothing/head/helmet/space/vox/civ,
|
||||
slot_wear_mask_str = /obj/item/clothing/mask/breath/vox,
|
||||
),
|
||||
/datum/species/mushroom = list(
|
||||
slot_w_uniform_str = /obj/item/clothing/under/stilsuit,
|
||||
slot_shoes_str = /obj/item/clothing/shoes/magboots,
|
||||
slot_wear_suit_str = /obj/item/clothing/suit/space/vox/civ/mushmen,
|
||||
slot_head_str = /obj/item/clothing/head/helmet/space/vox/civ/mushmen,
|
||||
slot_wear_mask_str = /obj/item/clothing/mask/breath,
|
||||
),
|
||||
/datum/species/tajaran = list(
|
||||
slot_w_uniform_str = /obj/item/clothing/under/color/grey,
|
||||
slot_shoes_str = /obj/item/clothing/shoes/sandal/catbeast,
|
||||
slot_wear_suit_str = /obj/item/clothing/suit/space/ghettorig,
|
||||
slot_head_str = /obj/item/clothing/head/helmet/space/ghetto,
|
||||
slot_wear_mask_str = /obj/item/clothing/mask/breath,
|
||||
),
|
||||
/datum/species/unathi = list(
|
||||
slot_w_uniform_str = /obj/item/clothing/under/color/grey,
|
||||
slot_wear_suit_str = /obj/item/clothing/suit/space/ghettorig,
|
||||
slot_head_str = /obj/item/clothing/head/helmet/space/ghetto,
|
||||
slot_wear_mask_str = /obj/item/clothing/mask/breath,
|
||||
),
|
||||
)
|
||||
|
||||
equip_survival_gear = list(
|
||||
/datum/species/human = /obj/item/weapon/storage/box/survival/engineer,
|
||||
/datum/species/plasmaman = /obj/item/weapon/storage/box/survival/engineer/plasmaman,
|
||||
/datum/species/diona = /obj/item/weapon/storage/box/survival/engineer,
|
||||
/datum/species/insectoid = /obj/item/weapon/storage/box/survival/engineer,
|
||||
/datum/species/vox = /obj/item/weapon/storage/box/survival/engineer/vox,
|
||||
/datum/species/grey = /obj/item/weapon/storage/box/survival/engineer,
|
||||
)
|
||||
|
||||
pda_type = null
|
||||
id_type = /obj/item/weapon/card/id/hobo
|
||||
|
||||
// ----- Antags
|
||||
|
||||
/datum/outfit/special/bomberman
|
||||
|
||||
@@ -1,59 +0,0 @@
|
||||
// -- Space hobo -kanef
|
||||
|
||||
/datum/outfit/hobo
|
||||
|
||||
outfit_name = "Space Hobo"
|
||||
|
||||
backpack_types = list(
|
||||
BACKPACK_STRING = /obj/item/weapon/storage/backpack,
|
||||
SATCHEL_NORM_STRING = /obj/item/weapon/storage/backpack/satchel_norm,
|
||||
SATCHEL_ALT_STRING = /obj/item/weapon/storage/backpack/satchel,
|
||||
MESSENGER_BAG_STRING = /obj/item/weapon/storage/backpack/messenger,
|
||||
)
|
||||
|
||||
items_to_spawn = list(
|
||||
"Default" = list(
|
||||
slot_w_uniform_str = /obj/item/clothing/under/color/grey,
|
||||
slot_shoes_str = /obj/item/clothing/shoes/magboots,
|
||||
slot_belt_str = /obj/item/device/radio,
|
||||
slot_wear_suit_str = /obj/item/clothing/suit/space/ghettorig,
|
||||
slot_head_str = /obj/item/clothing/head/helmet/space/ghetto,
|
||||
slot_wear_mask_str = /obj/item/clothing/mask/breath,
|
||||
),
|
||||
/datum/species/vox = list(
|
||||
slot_w_uniform_str =/obj/item/clothing/under/vox/vox_robes,
|
||||
slot_shoes_str = /obj/item/clothing/shoes/magboots/vox,
|
||||
slot_belt_str = /obj/item/device/radio,
|
||||
slot_wear_suit_str = /obj/item/clothing/suit/space/vox/civ,
|
||||
slot_head_str = /obj/item/clothing/head/helmet/space/vox/civ,
|
||||
slot_wear_mask_str = /obj/item/clothing/mask/breath/vox,
|
||||
),
|
||||
/datum/species/mushroom = list(
|
||||
slot_w_uniform_str = /obj/item/clothing/under/stilsuit,
|
||||
slot_shoes_str = /obj/item/clothing/shoes/magboots,
|
||||
slot_belt_str = /obj/item/device/radio,
|
||||
slot_wear_suit_str = /obj/item/clothing/suit/space/vox/civ/mushmen,
|
||||
slot_head_str = /obj/item/clothing/head/helmet/space/vox/civ/mushmen,
|
||||
slot_wear_mask_str = /obj/item/clothing/mask/breath,
|
||||
),
|
||||
/datum/species/tajaran = list(
|
||||
slot_w_uniform_str = /obj/item/clothing/under/color/grey,
|
||||
slot_shoes_str = /obj/item/clothing/shoes/sandal/catbeast,
|
||||
slot_belt_str = /obj/item/device/radio,
|
||||
slot_wear_suit_str = /obj/item/clothing/suit/space/ghettorig,
|
||||
slot_head_str = /obj/item/clothing/head/helmet/space/ghetto,
|
||||
slot_wear_mask_str = /obj/item/clothing/mask/breath,
|
||||
),
|
||||
)
|
||||
|
||||
equip_survival_gear = list(
|
||||
/datum/species/human = /obj/item/weapon/storage/box/survival/engineer,
|
||||
/datum/species/plasmaman = /obj/item/weapon/storage/box/survival/engineer/plasmaman,
|
||||
/datum/species/diona = /obj/item/weapon/storage/box/survival/engineer,
|
||||
/datum/species/insectoid = /obj/item/weapon/storage/box/survival/engineer,
|
||||
/datum/species/vox = /obj/item/weapon/storage/box/survival/engineer/vox,
|
||||
/datum/species/grey = /obj/item/weapon/storage/box/survival/engineer,
|
||||
)
|
||||
|
||||
pda_type = null
|
||||
id_type = /obj/item/weapon/card/id/hobo
|
||||
@@ -522,29 +522,37 @@
|
||||
/mob/dead/observer/verb/become_hobo()
|
||||
set name = "Become Space Hobo"
|
||||
set category = "Ghost"
|
||||
if(!can_reenter_corpse)
|
||||
if(!(mind && mind.current && can_reenter_corpse) || (mind.current.key && copytext(mind.current.key,1,2)!="@"))
|
||||
to_chat(src, "<span class='warning'>You must have had presence on this plane to become this.</span>")
|
||||
return
|
||||
if(!config.respawn_as_hobo)
|
||||
to_chat(src, "<span class='warning'>Respawning as Space Hobo is disabled.</span>")
|
||||
return
|
||||
|
||||
var/timedifference = world.time - client.time_died_as_mouse
|
||||
if(client.time_died_as_mouse && timedifference <= mouse_respawn_time * 600)
|
||||
var/timedifference_text
|
||||
timedifference_text = time2text(mouse_respawn_time * 600 - timedifference,"mm:ss")
|
||||
to_chat(src, "<span class='warning'>You may only spawn again as this role more than [mouse_respawn_time] minutes after your death. You have [timedifference_text] left.</span>")
|
||||
return
|
||||
if(hoboamount == hobostart.len)
|
||||
to_chat(src, "<span class='warning'>The world has enough of these as is.</span>")
|
||||
return
|
||||
|
||||
var/response = alert(src, "Are you -sure- you want to become a space hobo?","Are you sure you want to ramble?","Yeah!","Nope!")
|
||||
if(response != "Yeah!")
|
||||
return //Hit the wrong key...again.
|
||||
|
||||
//find a viable mouse candidate
|
||||
var/mob/living/carbon/human/hobo = Humanize(pick(200;"Human",50;"Vox",50;"Insectoid",25;"Diona",25;"Grey",1;"Tajaran",10;"Unathi"))
|
||||
hobo.forceMove(pick(hobostart))
|
||||
var/datum/outfit/hobo/hobo_outfit = new
|
||||
var/mob/living/carbon/human/hobo = new(pick(hobostart))
|
||||
hobo.key = src.key
|
||||
hobo.set_species(pick(200;"Human",50;"Vox",50;"Insectoid",25;"Diona",25;"Grey",1;"Tajaran",10;"Unathi"))
|
||||
var/datum/outfit/special/with_id/hobo/hobo_outfit = new
|
||||
hobo_outfit.equip(hobo)
|
||||
to_chat(hobo, "<B>You are a Space Hobo.</B>")
|
||||
// somewhat taken from CEV eris
|
||||
to_chat(hobo, "<b>The ID you wear likely not even your own. At least as far as you can remember. But this chunk of plastic still can be a rare oddity that can change your character. Find a way to stay out of trouble, and survive. Though this does not mean you have no home, as the asteroid is your home. Whatever planet you may have come from is now a distant memory.</b>")
|
||||
to_chat(hobo, "<b>Despite not being a member of the crew, by default you are <u>not</u> an antagonist. Cooperating with antagonists is allowed - within reason. Ask admins via adminhelp if you're not sure.</b>")
|
||||
hoboamount++
|
||||
|
||||
/mob/dead/observer/verb/pai_signup()
|
||||
set name = "Sign up as pAI"
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
"af" = (/obj/machinery/atmospherics/unary/tank/air{dir = 8},/turf/simulated/floor/plating{icon_state = "asteroidplating"},/area/shack)
|
||||
"cu" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden,/obj/effect/decal/cleanable/generic,/turf/simulated/floor/wood/floor_tile,/area/shack)
|
||||
"gK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor{icon_state = "showroomfloor"},/area/shack)
|
||||
"is" = (/obj/structure/dispenser/oxygen,/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 1},/turf/simulated/floor/plating{icon_state = "asteroidplating"},/area/shack)
|
||||
"is" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 1},/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating{icon_state = "asteroidplating"},/area/shack)
|
||||
"iu" = (/obj/effect/decal/warning_stripes{dir = 8; icon_state = "loading_area"; tag = "icon-loading_area (WEST)"},/turf/unsimulated/floor/airless{icon_state = "asteroidplating"},/area/mine/explored)
|
||||
"kz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating{icon_state = "asteroidplating"},/area/shack)
|
||||
"kI" = (/obj/structure/safe,/obj/abstract/map/spawner/safe/medical,/obj/abstract/map/spawner/safe/food,/turf/simulated/floor/wood/floor_tile,/area/shack)
|
||||
"kW" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/beer,/turf/simulated/floor/plating{icon_state = "asteroidfloor"},/area/shack)
|
||||
"kW" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/beer,/obj/item/weapon/reagent_containers/food/drinks/beer,/obj/item/weapon/reagent_containers/food/drinks/beer,/turf/simulated/floor/plating{icon_state = "asteroidfloor"},/area/shack)
|
||||
"li" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating{icon_state = "asteroidplating"},/area/shack)
|
||||
"lF" = (/turf/simulated/wall/mineral/wood,/area/shack)
|
||||
"lQ" = (/obj/structure/closet/cabinet,/obj/effect/decal/cleanable/cobweb2,/obj/item/weapon/reagent_containers/food/drinks/beer,/obj/item/weapon/reagent_containers/food/drinks/beer,/obj/item/weapon/reagent_containers/food/drinks/beer,/obj/item/stack/sheet/glass/glass/bigstack,/obj/item/stack/sheet/metal/bigstack,/obj/item/stack/rods,/obj/item/stack/sheet/wood/bigstack,/turf/simulated/floor/wood/floor_tile,/area/shack)
|
||||
@@ -22,9 +22,9 @@
|
||||
"wk" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/mineral/wood{name = "Wooden Door"},/turf/simulated/floor/plating{icon_state = "asteroidplating"},/area/shack)
|
||||
"wm" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/mineral/wood{name = "Wooden Door"},/turf/simulated/floor/wood/floor_tile,/area/shack)
|
||||
"wq" = (/obj/machinery/door/window{dir = 2},/obj/machinery/door/window{dir = 1},/turf/simulated/floor/plating{icon_state = "asteroidplating"},/area/shack)
|
||||
"wK" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/box/donkpockets,/obj/item/weapon/storage/wallet/random,/turf/simulated/floor/plating{icon_state = "asteroidplating"},/area/shack)
|
||||
"wK" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/box/donkpockets,/obj/item/weapon/storage/wallet/random,/obj/item/weapon/storage/wallet/random,/obj/item/weapon/storage/wallet/random,/turf/simulated/floor/plating{icon_state = "asteroidplating"},/area/shack)
|
||||
"yp" = (/obj/machinery/computer/stacking_unit{stacker_tag = "shack_stacker"},/turf/unsimulated/floor/airless{icon_state = "asteroidplating"},/area/mine/explored)
|
||||
"zr" = (/obj/structure/reagent_dispensers/fueltank,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{icon_state = "asteroidplating"},/area/shack)
|
||||
"zr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/portable_atmospherics/canister/nitrogen,/turf/simulated/floor/plating{icon_state = "asteroidplating"},/area/shack)
|
||||
"zH" = (/turf/simulated/wall/r_rock/porous,/area/shack)
|
||||
"Bt" = (/obj/machinery/power/port_gen/pacman{anchored = 1},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/item/stack/sheet/mineral/plasma{amount = 30},/turf/simulated/floor/plating{icon_state = "asteroidplating"},/area/shack)
|
||||
"BF" = (/obj/structure/ore_box,/turf/unsimulated/floor/airless{icon_state = "asteroidplating"},/area/mine/explored)
|
||||
@@ -40,14 +40,14 @@
|
||||
"Lo" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating{icon_state = "asteroidplating"},/area/shack)
|
||||
"LR" = (/turf/unsimulated/floor/asteroid,/area/mine/explored)
|
||||
"Od" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating{icon_state = "asteroidplating"},/area/shack)
|
||||
"QD" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/toolbox/mechanical,/obj/item/clothing/glasses/scanner/meson,/turf/simulated/floor/plating{icon_state = "asteroidplating"},/area/shack)
|
||||
"QD" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/toolbox/mechanical,/obj/item/clothing/glasses/scanner/meson,/obj/item/clothing/glasses/scanner/meson,/obj/item/clothing/glasses/scanner/meson,/obj/item/weapon/storage/toolbox/mechanical,/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor/plating{icon_state = "asteroidplating"},/area/shack)
|
||||
"Rz" = (/obj/machinery/computer/smelting{smelter_tag = "shack_smelter"},/turf/unsimulated/floor/airless{icon_state = "asteroidplating"},/area/mine/explored)
|
||||
"Ta" = (/obj/machinery/mineral/processing_unit{id_tag = "shack_smelter"; in_dir = 4; out_dir = 8},/turf/unsimulated/floor/airless{icon_state = "asteroidplating"},/area/mine/explored)
|
||||
"Ts" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plating{icon_state = "asteroidplating"},/area/shack)
|
||||
"Tw" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 8},/turf/simulated/floor/plating{icon_state = "asteroidfloor"},/area/shack)
|
||||
"WD" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating{icon_state = "asteroidfloor"},/area/shack)
|
||||
"XL" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating{icon_state = "asteroidplating"},/area/shack)
|
||||
"Yn" = (/obj/structure/rack,/obj/item/weapon/pickaxe,/obj/item/weapon/pickaxe/shovel,/obj/item/device/flashlight/lantern,/obj/item/weapon/storage/bag/ore,/obj/item/weapon/pickaxe/hand,/obj/item/weapon/storage/belt/mining,/turf/simulated/floor/plating{icon_state = "asteroidplating"},/area/shack)
|
||||
"Yn" = (/obj/structure/rack,/obj/item/weapon/pickaxe,/obj/item/weapon/pickaxe/shovel,/obj/item/device/flashlight/lantern,/obj/item/weapon/storage/bag/ore,/obj/item/weapon/pickaxe/hand,/obj/item/weapon/storage/belt/mining,/obj/item/weapon/pickaxe,/obj/item/weapon/pickaxe,/obj/item/weapon/pickaxe/hand,/obj/item/weapon/pickaxe/hand,/obj/item/weapon/storage/bag/ore,/obj/item/weapon/storage/bag/ore,/obj/item/weapon/storage/belt/mining,/obj/item/weapon/storage/belt/mining,/obj/item/weapon/pickaxe/shovel,/obj/item/weapon/pickaxe/shovel,/obj/item/device/flashlight/lantern,/obj/item/device/flashlight/lantern,/turf/simulated/floor/plating{icon_state = "asteroidplating"},/area/shack)
|
||||
"Yt" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating{icon_state = "asteroidplating"},/area/shack)
|
||||
"Zu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{icon_state = "asteroidfloor"},/area/shack)
|
||||
"ZK" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/wood{broken = 1; icon_state = "wood-broken4"},/area/shack)
|
||||
|
||||
@@ -485,7 +485,6 @@
|
||||
#include "code\datums\outfit\outfit.dm"
|
||||
#include "code\datums\outfit\science.dm"
|
||||
#include "code\datums\outfit\security.dm"
|
||||
#include "code\datums\outfit\spesshobo.dm"
|
||||
#include "code\datums\outfit\trader.dm"
|
||||
#include "code\datums\outfit\special_outfits\special.dm"
|
||||
#include "code\datums\outfit\striketeams\death_commando.dm"
|
||||
|
||||
Reference in New Issue
Block a user