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:
kane-f
2021-06-26 17:53:24 +01:00
committed by GitHub
parent 9742e8aa88
commit 1386662e7c
6 changed files with 82 additions and 71 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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"

View File

@@ -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)

View File

@@ -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"