Merge branch 'Safety-Tether' of https://github.com/haha26315/Hyper-Station-13 into Safety-Tether

This commit is contained in:
Haha26315
2022-09-12 16:27:49 -04:00
20 changed files with 3526 additions and 91688 deletions
+171 -177
View File
@@ -8536,6 +8536,7 @@
dir = 1;
name = "air scrubber"
},
/obj/machinery/iv_drip,
/turf/open/floor/plasteel/white,
/area/medical/patients_rooms/room_b)
"bfl" = (
@@ -9024,12 +9025,17 @@
},
/area/medical/virology)
"bje" = (
/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
dir = 4;
name = "air supply pipe"
/obj/machinery/door/airlock{
dir = 1;
name = "Kitchen";
req_access_txt = "28"
},
/turf/open/floor/plating,
/area/maintenance/aft)
/turf/open/floor/plasteel{
dir = 8;
icon_plating = "floor";
icon_state = "floor_whole_alt"
},
/area/crew_quarters/kitchen)
"bjh" = (
/obj/effect/turf_decal/loading_area{
dir = 6;
@@ -10007,7 +10013,6 @@
icon_state = "steel_panel";
name = "steel pannel"
},
/obj/structure/disposalpipe/segment,
/obj/effect/landmark/start/cook,
/turf/open/floor/plasteel/cafeteria,
/area/crew_quarters/kitchen)
@@ -17908,6 +17913,7 @@
dir = 1;
name = "air scrubber"
},
/obj/machinery/iv_drip,
/turf/open/floor/plasteel/white,
/area/medical/patients_rooms/room_a)
"cMF" = (
@@ -21196,6 +21202,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
name = "scrubbers pipe"
},
/obj/effect/landmark/start/prisoner,
/turf/open/floor/plasteel/dark,
/area/security/prison)
"drb" = (
@@ -25558,9 +25565,6 @@
/turf/open/floor/plating/layenia,
/area/layenia)
"egH" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer3{
name = "air supply pipe"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
dir = 9;
name = "scrubbers pipe"
@@ -25571,6 +25575,10 @@
/obj/structure/disposalpipe/segment{
dir = 9
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer3{
dir = 9;
name = "air supply pipe"
},
/turf/open/floor/plating,
/area/maintenance/aft)
"egI" = (
@@ -28034,15 +28042,14 @@
},
/area/engine/atmos)
"eAc" = (
/obj/machinery/vending/cola/random,
/obj/machinery/light{
dir = 1;
pixel_y = 16
},
/obj/structure/sign/directions/evac{
dir = 4;
pixel_y = 24
},
/obj/machinery/light{
dir = 1;
pixel_y = 16
},
/turf/open/floor/plasteel/dark{
dir = 1;
icon_state = "darkfull_plate"
@@ -33572,8 +33579,8 @@
/obj/effect/turf_decal/tile/green{
dir = 10
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer1{
dir = 4;
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
dir = 9;
name = "scrubbers pipe"
},
/turf/open/floor/plasteel{
@@ -36366,10 +36373,6 @@
/obj/effect/turf_decal/weather/grass/line{
dir = 6
},
/obj/item/toy/plush/bird/kenk{
pixel_x = -8;
pixel_y = -13
},
/turf/open/water/jungle,
/area/crew_quarters/dorms/upper)
"fOH" = (
@@ -67018,9 +67021,6 @@
},
/area/crew_quarters/dorms/upper)
"ksc" = (
/obj/structure/disposalpipe/segment{
dir = 4
},
/obj/machinery/holopad,
/turf/open/floor/plasteel/cafeteria,
/area/crew_quarters/kitchen)
@@ -70713,14 +70713,6 @@
/turf/open/floor/plasteel/dark,
/area/hydroponics)
"kVZ" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
dir = 4;
name = "scrubbers pipe"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer3{
dir = 8;
name = "air supply pipe"
},
/turf/open/floor/plasteel/stairs/medium{
dir = 4
},
@@ -70753,19 +70745,16 @@
/turf/open/floor/plasteel/dark,
/area/security/range)
"kWi" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer3{
name = "air supply pipe"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
dir = 9;
name = "scrubbers pipe"
},
/obj/effect/turf_decal/tile/green{
dir = 6
},
/obj/effect/turf_decal/tile/green{
dir = 1
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer3{
dir = 5;
name = "air supply pipe"
},
/turf/open/floor/plasteel{
icon_state = "floor_plate"
},
@@ -75356,6 +75345,9 @@
dir = 10;
name = "air supply pipe"
},
/obj/structure/disposalpipe/segment{
dir = 4
},
/turf/open/floor/plasteel/cafeteria,
/area/crew_quarters/kitchen)
"lJs" = (
@@ -75363,6 +75355,10 @@
dir = 4;
pixel_x = 7
},
/obj/machinery/disposal/bin,
/obj/structure/disposalpipe/trunk{
dir = 8
},
/turf/open/floor/plasteel/cafeteria,
/area/crew_quarters/kitchen)
"lJv" = (
@@ -77441,9 +77437,6 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer3{
name = "air supply pipe"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
name = "scrubbers pipe"
},
/obj/effect/turf_decal/tile/green{
dir = 10
},
@@ -78832,14 +78825,14 @@
/turf/open/floor/plasteel/dark,
/area/maintenance/starboard/central/upper)
"mmz" = (
/obj/effect/turf_decal/loading_area{
dir = 4;
icon_state = "steel_panel";
name = "steel pannel"
/obj/machinery/light{
pixel_y = -1
},
/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel/cafeteria,
/area/crew_quarters/kitchen)
/obj/machinery/vending/cola/random,
/turf/open/floor/plasteel/dark{
icon_state = "darkfull_plate"
},
/area/hallway/primary/port)
"mmH" = (
/obj/structure/cable{
icon_state = "1-8"
@@ -93996,6 +93989,7 @@
icon_state = "drain";
name = "drain"
},
/obj/machinery/iv_drip,
/turf/open/floor/plasteel/freezer,
/area/medical/surgery)
"ovb" = (
@@ -111737,11 +111731,14 @@
/turf/open/floor/plating/snowed,
/area/layenia)
"qQm" = (
/obj/structure/disposalpipe/segment{
dir = 5
/obj/effect/turf_decal/tile/blue{
dir = 6
},
/turf/open/floor/plasteel/cafeteria,
/area/crew_quarters/kitchen)
/obj/machinery/iv_drip,
/turf/open/floor/plasteel/white{
icon_state = "plaswhite_plate"
},
/area/medical/medbay/central)
"qQw" = (
/obj/item/screwdriver{
pixel_y = 10
@@ -116699,10 +116696,12 @@
dir = 5;
name = "air supply pipe"
},
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
name = "scrubbers pipe"
},
/obj/structure/disposalpipe/segment{
dir = 5
},
/turf/open/floor/plasteel/cafeteria,
/area/crew_quarters/kitchen)
"rxd" = (
@@ -128704,6 +128703,7 @@
dir = 1;
pixel_y = 16
},
/obj/item/toy/plush/bird/kenk,
/turf/open/transparent/openspace/layenia,
/area/crew_quarters/theatre)
"tew" = (
@@ -130246,6 +130246,9 @@
dir = 8;
name = "air supply pipe"
},
/obj/structure/disposalpipe/segment{
dir = 4
},
/turf/open/floor/plasteel/cafeteria,
/area/crew_quarters/kitchen)
"tqv" = (
@@ -133292,14 +133295,10 @@
/turf/open/floor/plating,
/area/crew_quarters/heads/cmo)
"tKC" = (
/obj/machinery/disposal/bin,
/obj/machinery/light{
dir = 4;
pixel_x = 7
},
/obj/structure/disposalpipe/trunk{
dir = 8
},
/turf/open/floor/plasteel/cafeteria,
/area/crew_quarters/kitchen)
"tKH" = (
@@ -139639,11 +139638,14 @@
/turf/open/floor/plasteel,
/area/crew_quarters/bar/cafe/storage)
"uEK" = (
/obj/structure/disposalpipe/segment{
dir = 4
/obj/structure/lattice/catwalk,
/obj/structure/railing{
dir = 1
},
/turf/open/floor/plasteel/cafeteria,
/area/crew_quarters/kitchen)
/obj/structure/closet/crate,
/obj/effect/spawner/lootdrop/maintenance,
/turf/open/chasm/cloud,
/area/layenia/cloudlayer)
"uEM" = (
/obj/structure/table/wood,
/obj/machinery/chem_dispenser/drinks/beer,
@@ -139662,9 +139664,6 @@
c_tag = "Kitchen South";
dir = 1
},
/obj/structure/disposalpipe/segment{
dir = 4
},
/turf/open/floor/plasteel/cafeteria,
/area/crew_quarters/kitchen)
"uET" = (
@@ -141211,7 +141210,7 @@
name = "kitchen shutters"
},
/obj/item/storage/fancy/donut_box{
pixel_y = 8
pixel_y = 1
},
/turf/open/floor/plasteel/dark{
icon_state = "darkfull_whole_alt"
@@ -142944,11 +142943,11 @@
/turf/open/floor/plating,
/area/maintenance/port/aft)
"vdk" = (
/obj/item/twohanded/required/kirbyplants/random,
/obj/machinery/light{
dir = 1;
pixel_y = 16
},
/obj/machinery/vending/snack/random,
/turf/open/floor/plasteel/dark{
dir = 1;
icon_state = "darkfull_plate"
@@ -143162,9 +143161,6 @@
/obj/structure/cable{
icon_state = "2-8"
},
/obj/structure/cable{
icon_state = "0-8"
},
/obj/structure/disposalpipe/segment{
dir = 10
},
@@ -143869,7 +143865,6 @@
icon_state = "steel_panel";
name = "steel pannel"
},
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
dir = 9;
name = "scrubbers pipe"
@@ -146360,11 +146355,13 @@
},
/area/medical/medbay/central)
"vCo" = (
/obj/machinery/atmospherics/pipe/layer_manifold{
dir = 4
/obj/structure/lattice/catwalk,
/obj/structure/railing{
dir = 1
},
/turf/closed/wall,
/area/maintenance/aft)
/obj/item/cigbutt,
/turf/open/chasm/cloud,
/area/layenia/cloudlayer)
"vCt" = (
/obj/machinery/camera{
c_tag = "HOP Line";
@@ -146517,29 +146514,26 @@
/turf/open/floor/plasteel,
/area/science/misc_lab)
"vDh" = (
/obj/structure/chair/stool,
/obj/effect/turf_decal/stripes/line{
dir = 9
/obj/structure/lattice/catwalk,
/obj/structure/railing{
dir = 1
},
/obj/machinery/atmospherics/components/binary/pump{
/obj/structure/railing{
dir = 4
},
/turf/open/floor/plating,
/area/maintenance/aft)
/obj/structure/trash_pile,
/turf/open/chasm/cloud,
/area/layenia/cloudlayer)
"vDp" = (
/obj/item/wrench,
/obj/machinery/light/small{
dir = 1;
pixel_y = 16
/obj/structure/lattice/catwalk,
/obj/structure/railing{
dir = 8
},
/obj/effect/turf_decal/stripes/line{
dir = 1
/obj/structure/chair/foldingchair{
dir = 4
},
/obj/machinery/atmospherics/pipe/manifold/cyan/visible{
dir = 1
},
/turf/open/floor/plating,
/area/maintenance/aft)
/turf/open/chasm/cloud,
/area/layenia/cloudlayer)
"vDq" = (
/obj/machinery/atmospherics/components/unary/thermomachine/heater{
dir = 4
@@ -146582,14 +146576,10 @@
},
/area/security/range)
"vDx" = (
/obj/machinery/atmospherics/components/unary/tank/air{
dir = 8
},
/obj/effect/turf_decal/stripes/line{
dir = 5
},
/turf/open/floor/plating,
/area/maintenance/aft)
/obj/structure/lattice/catwalk,
/obj/item/trash/carbonnanotube_noodles,
/turf/open/chasm/cloud,
/area/layenia/cloudlayer)
"vDD" = (
/obj/machinery/button/door{
id = "DormF";
@@ -147171,17 +147161,14 @@
/turf/open/floor/plating,
/area/maintenance/fore/secondary)
"vHh" = (
/obj/machinery/door/airlock/atmos/abandoned{
dir = 4;
name = "Atmospherics Maintenance";
req_access_txt = "12;24"
/obj/structure/lattice/catwalk,
/obj/structure/railing{
dir = 8
},
/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
dir = 4;
name = "air supply pipe"
},
/turf/open/floor/plating,
/area/maintenance/aft)
/obj/structure/railing,
/obj/effect/spawner/lootdrop/maintenance,
/turf/open/chasm/cloud,
/area/layenia/cloudlayer)
"vHi" = (
/obj/structure/table,
/obj/effect/turf_decal/tile/neutral{
@@ -147196,14 +147183,11 @@
/turf/open/floor/plasteel/dark,
/area/security/brig/upper)
"vHk" = (
/obj/machinery/atmospherics/components/binary/valve/on{
dir = 4
},
/obj/effect/turf_decal/stripes/line{
dir = 10
},
/turf/open/floor/plating,
/area/maintenance/aft)
/obj/structure/lattice/catwalk,
/obj/structure/railing,
/obj/item/cigbutt,
/turf/open/chasm/cloud,
/area/layenia/cloudlayer)
"vHm" = (
/obj/machinery/porta_turret/ai{
dir = 4
@@ -147217,13 +147201,17 @@
},
/area/ai_monitored/turret_protected/ai)
"vHq" = (
/obj/machinery/meter,
/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
name = "air supply pipe"
/obj/structure/lattice/catwalk,
/obj/structure/railing{
dir = 1
},
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plating,
/area/maintenance/aft)
/obj/structure/railing{
dir = 8
},
/obj/structure/table,
/obj/item/stack/rods/fifty,
/turf/open/chasm/cloud,
/area/layenia/cloudlayer)
"vHA" = (
/obj/effect/turf_decal/weather/grass/line{
dir = 1
@@ -147258,15 +147246,14 @@
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"vHK" = (
/obj/machinery/atmospherics/components/unary/portables_connector/visible{
dir = 8
/obj/structure/lattice/catwalk,
/obj/structure/railing{
dir = 1
},
/obj/machinery/portable_atmospherics/canister/air,
/obj/effect/turf_decal/stripes/line{
dir = 6
},
/turf/open/floor/plating,
/area/maintenance/aft)
/obj/structure/table,
/obj/effect/spawner/lootdrop/maintenance,
/turf/open/chasm/cloud,
/area/layenia/cloudlayer)
"vHL" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
@@ -147582,11 +147569,17 @@
/turf/open/floor/plasteel/dark/corner,
/area/engine/atmos)
"vKi" = (
/obj/structure/lattice/catwalk,
/obj/structure/railing{
dir = 1
dir = 4
},
/turf/open/floor/plating,
/area/maintenance/aft)
/obj/structure/railing,
/obj/structure/closet/crate{
icon_state = "crateopen"
},
/obj/effect/spawner/lootdrop/maintenance,
/turf/open/chasm/cloud,
/area/layenia/cloudlayer)
"vKn" = (
/obj/structure/railing{
dir = 1
@@ -160649,6 +160642,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
name = "scrubbers pipe"
},
/obj/effect/landmark/start/prisoner,
/turf/open/floor/plasteel/dark,
/area/security/prison)
"xDB" = (
@@ -162209,6 +162203,9 @@
icon_state = "steel_panel";
name = "steel pannel"
},
/obj/structure/railing/handrail{
dir = 4
},
/turf/open/floor/plasteel/stairs/medium{
dir = 4;
icon_state = "stairs_darkfull_m";
@@ -165215,9 +165212,6 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer3{
name = "air supply pipe"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
name = "scrubbers pipe"
},
/obj/effect/turf_decal/tile/green{
dir = 10
},
@@ -195376,7 +195370,7 @@ vdk
eYf
dMk
vId
vTh
mmz
iMm
npB
nvs
@@ -195626,8 +195620,8 @@ xCg
rwT
vjA
bqN
mmz
qQm
nPL
tnY
uRJ
azl
cJP
@@ -195884,7 +195878,7 @@ tqo
mgf
mfE
mng
uEK
tnY
nco
azl
voZ
@@ -196398,7 +196392,7 @@ tqo
wwe
mhh
mng
uEK
tnY
nco
azl
hLd
@@ -196657,7 +196651,7 @@ mhn
lBZ
uES
vbt
moI
eAc
xJP
mPC
vIq
@@ -196913,8 +196907,8 @@ mhD
mhD
wEM
tKC
vbt
eAc
bje
nrv
hLd
aSp
nAY
@@ -199540,7 +199534,7 @@ mAk
nlk
qKP
lUW
vKi
lUW
xKx
gPq
foH
@@ -200053,7 +200047,7 @@ vfc
voo
hxU
egH
bje
lUW
vKt
xKx
gPq
@@ -200308,9 +200302,9 @@ rCc
xPL
lUW
qKP
nlk
vCo
vHh
xGb
xGb
xGb
xGb
xGb
afQ
@@ -200565,11 +200559,11 @@ hJu
xPL
iIf
qKP
nlk
vDh
vHk
xGb
gTW
gPq
gPq
gPq
gPq
gPq
foH
xej
@@ -200822,11 +200816,11 @@ hVJ
xPL
nlk
vox
nlk
vDp
xGb
gPq
vHq
xKx
gTW
vDp
vHh
gPq
foH
xej
@@ -201079,11 +201073,11 @@ ctK
xPL
vfg
voG
nlk
vDx
vHK
xGb
gTW
gPq
vHK
vDx
vHk
gPq
foH
xej
@@ -201337,12 +201331,12 @@ xPL
xGb
voH
xGb
xGb
xGb
xGb
afQ
gPq
foH
uEK
wOp
wOp
bxc
wOp
xej
gPq
gTW
@@ -201575,7 +201569,7 @@ fPS
vHJ
vHJ
stW
vMN
qQm
xQd
jgD
tur
@@ -201595,9 +201589,9 @@ iLb
lLx
fse
gPq
gPq
gTW
gTW
vCo
wOp
xej
gPq
foH
xej
@@ -201832,7 +201826,7 @@ oPP
vHJ
vHJ
sul
vMN
qQm
sKD
vAH
hrO
@@ -201852,9 +201846,9 @@ ohl
lLx
xej
gPq
gPq
gTW
gTW
vDh
wOp
vKi
gPq
foH
xej
@@ -202110,7 +202104,7 @@ lLx
xej
gPq
gPq
gPq
wnp
gPq
gPq
foH
@@ -202367,7 +202361,7 @@ lLx
wOp
iEg
iEg
iEg
wOp
iEg
iEg
wOp
File diff suppressed because it is too large Load Diff
+1
View File
@@ -49,6 +49,7 @@
#define ASSISTANT (1<<13)
#define BARBER (1<<14)
#define BARISTA (1<<15)
#define ROLEPLAY (1<<16)
#define JOB_AVAILABLE 0
#define JOB_UNAVAILABLE_GENERIC 1
+1
View File
@@ -413,6 +413,7 @@ GLOBAL_LIST_INIT(lighter_reskins, list(ZIPPO_SKIN_PLAIN = "plain", ZIPPO_SKIN_DA
#define DUMMY_HUMAN_SLOT_PREFERENCES "dummy_preference_preview"
#define DUMMY_HUMAN_SLOT_ADMIN "admintools"
#define DUMMY_HUMAN_SLOT_MANIFEST "dummy_manifest_generation"
#define DUMMY_HUMAN_SLOT_ROLEPLAY "dummy_roleplay_preview"
#define PR_ANNOUNCEMENTS_PER_ROUND 5 //The number of unique PR announcements allowed per round
//This makes sure that a single person can only spam 3 reopens and 3 closes before being ignored
+16 -14
View File
@@ -331,7 +331,7 @@ SUBSYSTEM_DEF(job)
if((job.title in GLOB.silly_positions) && (player.client.prefs.sillyroles == FALSE))
JobDebug("DO is not whitelisted, Player: [player], Job:[job.title]")
continue
continue
if(!job.player_old_enough(player.client))
JobDebug("DO player not old enough, Player: [player], Job:[job.title]")
@@ -392,7 +392,7 @@ SUBSYSTEM_DEF(job)
message_admins(message)
RejectPlayer(player)
//Gives the player the stuff he should have with his rank
/datum/controller/subsystem/job/proc/EquipRank(mob/M, rank, joined_late = FALSE)
/datum/controller/subsystem/job/proc/EquipRank(mob/M, rank, joined_late = FALSE,loadout = TRUE)
var/mob/dead/new_player/N
var/mob/living/H
if(!joined_late)
@@ -431,7 +431,9 @@ SUBSYSTEM_DEF(job)
//Job loadout, equipping, and flavortext when spawning
if(job)
var/list/handle_storage = equip_loadout(N, H) //Loadout gear
var/list/handle_storage
if(loadout)
handle_storage = equip_loadout(N, H) //Loadout gear
var/new_mob = job.equip(H, null, null, joined_late) //Job gear
if(ismob(new_mob)) //The above doesnt return a value, but we check this anyways or else everything breaks!
@@ -440,17 +442,17 @@ SUBSYSTEM_DEF(job)
N.new_character = H
else
M = H
if(LAZYLEN(handle_storage)) //equip_loadout returned a list. This list is backpack contents we should store, as by now we should have a backpack and a single reference mob
if(ishuman(H))
var/mob/living/carbon/human/_H = H
if(_H.back)
for(var/atom/movable/A in handle_storage)
if(!SEND_SIGNAL(_H.back, COMSIG_TRY_STORAGE_INSERT, A, null, TRUE, TRUE))
A.forceMove(get_turf(H)) //Try and store into the backpack. If the backpack is full, drop it to the ground
else //No backpack
for(var/atom/movable/A in handle_storage)
A.forceMove(get_turf(H))
if(loadout)
if(LAZYLEN(handle_storage)) //equip_loadout returned a list. This list is backpack contents we should store, as by now we should have a backpack and a single reference mob
if(ishuman(H))
var/mob/living/carbon/human/_H = H
if(_H.back)
for(var/atom/movable/A in handle_storage)
if(!SEND_SIGNAL(_H.back, COMSIG_TRY_STORAGE_INSERT, A, null, TRUE, TRUE))
A.forceMove(get_turf(H)) //Try and store into the backpack. If the backpack is full, drop it to the ground
else //No backpack
for(var/atom/movable/A in handle_storage)
A.forceMove(get_turf(H))
//Flavortext
var/display_rank = rank
+9 -3
View File
@@ -1354,10 +1354,13 @@ GLOBAL_LIST_EMPTY(preferences_datums)
continue
//Hyperstation Edit - Whitelisted roles
if((rank in GLOB.silly_positions) && (!sillyroles))
HTML += "<font color=red>[rank]</font></td><td><a href='?_src_=prefs;jobbancheck=[rank]'> WHITELIST</a></td></tr>"
HTML += "<font color=red>[rank]</font></td><td><font color=orange> \[WHITELIST]</font></td></tr>"
continue
if((rank in GLOB.important_positions) && (!importantroles)) //TODO: make whitelists a bit more accurate than "silly" and "important"
HTML += "<font color=red>[rank]</font></td><td><a href='?_src_=prefs;jobbancheck=[rank]'> WHITELIST</a></td></tr>"
if((rank in GLOB.important_positions) && (!importantroles))
HTML += "<font color=red>[rank]</font></td><td><font color=orange> \[WHITELIST]</font></td></tr>"
continue
if((rank in GLOB.roleplay_positions) && (!roleplayroles))
HTML += "<font color=red>[rank]</font></td><td><font color=orange> \[WHITELIST]</font></td></tr>"
continue
//Hyperstation Edit end
var/required_playtime_remaining = job.required_playtime_remaining(user.client)
@@ -2976,6 +2979,9 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if("save")
save_preferences()
save_character()
if(istype(user,/mob/dead/new_player)) //if the player is a new player at the menu.
var/mob/dead/new_player/np = user
np.refresh_player_panel() //update their player icons
if("load")
load_preferences()
+3
View File
@@ -66,6 +66,9 @@
//whitelisting
var/whitelist_type = ""
//load characters loadout on spawn
var loadout = TRUE
//Only override this proc
//H is usually a human unless an /equip override transformed it
/datum/job/proc/after_spawn(mob/living/H, mob/M, latejoin = FALSE)
+172 -44
View File
@@ -31,22 +31,41 @@
/mob/dead/new_player/prepare_huds()
return
/mob/dead/new_player/proc/new_player_panel()
var/output = "<center><p>Welcome, <b>[client ? client.prefs.real_name : "Unknown User"]</b></p>"
output += "<p><a href='byond://?src=[REF(src)];show_preferences=1'>Setup Character</a></p>"
/mob/dead/new_player/proc/refresh_player_panel()
new_player_panel()
/mob/dead/new_player/proc/new_player_panel()
src << browse(null, "window=playersetup") //closes the player setup window if its already open.
var/output = ""
if(SSticker.current_state <= GAME_STATE_PREGAME)
switch(ready)
if(PLAYER_NOT_READY)
output += "<p>\[ [LINKIFY_READY("Ready", PLAYER_READY_TO_PLAY)] | <b>Not Ready</b> | [LINKIFY_READY("Observe", PLAYER_READY_TO_OBSERVE)] \]</p>"
output += "<p><a style='background:#912c24;' href='byond://?src=[REF(src)];ready=[PLAYER_READY_TO_PLAY]'>[icon2html('hyperstation/icons/menu/menu_large.dmi', world, "notready")]Not Ready</a></p>"
if(PLAYER_READY_TO_PLAY)
output += "<p>\[ <b>Ready</b> | [LINKIFY_READY("Not Ready", PLAYER_NOT_READY)] | [LINKIFY_READY("Observe", PLAYER_READY_TO_OBSERVE)] \]</p>"
output += "<p><a style='background:#4CAF50;' href='byond://?src=[REF(src)];ready=[PLAYER_NOT_READY]'>[icon2html('hyperstation/icons/menu/menu_large.dmi', world, "ready")]Ready</a></p>"
if(PLAYER_READY_TO_OBSERVE)
output += "<p>\[ [LINKIFY_READY("Ready", PLAYER_READY_TO_PLAY)] | [LINKIFY_READY("Not Ready", PLAYER_NOT_READY)] | <b> Observe </b> \]</p>"
output += "<p><a href='byond://?src=[REF(src)];show_preferences=1'>[icon2html('hyperstation/icons/menu/menu_large.dmi', world, "settings")]Setup Character</a></p>"
else
output += "<p><a href='byond://?src=[REF(src)];manifest=1'>View the Crew Manifest</a></p>"
output += "<p><a href='byond://?src=[REF(src)];late_join=1'>Join Game!</a></p>"
output += "<p>[LINKIFY_READY("Observe", PLAYER_READY_TO_OBSERVE)]</p>"
//make menu preview
var/mob/living/carbon/human/dummy/mannequin = generate_or_wait_for_human_dummy(DUMMY_HUMAN_SLOT_ROLEPLAY)
var/icon/preview_icon = icon('icons/effects/effects.dmi', "nothing")
client.prefs.copy_to(mannequin)
COMPILE_OVERLAYS(mannequin)
var/icon/stamp = getFlatIcon(mannequin)
mannequin.setDir(SOUTH)
stamp = getFlatIcon(mannequin)
CHECK_TICK
preview_icon.Blend(stamp, ICON_OVERLAY, 0, 0)
CHECK_TICK
preview_icon.Scale(preview_icon.Width() * 2, preview_icon.Height() * 2)
CHECK_TICK
unset_busy_human_dummy(DUMMY_HUMAN_SLOT_ROLEPLAY)
output += "<p><a href='byond://?src=[REF(src)];late_join=1'>[icon2html(preview_icon, world, "preview")]Join Game >></a></p>"
output += "<p><a href='byond://?src=[REF(src)];roleplay_join=1'>[icon2html('hyperstation/icons/menu/menu_large.dmi', world, "roleplay")]Roleplay Roles</a></p>"
output += "<p><a href='byond://?src=[REF(src)];show_preferences=1'>[icon2html('hyperstation/icons/menu/menu_large.dmi', world, "settings")]Setup Character</a></p>"
output += "<p><a href='byond://?src=[REF(src)];manifest=1'>[icon2html('hyperstation/icons/menu/menu_large.dmi', world, "manifest")]View the Crew Manifest</a></p>"
output += "<p><a href='byond://?src=[REF(src)];ready=[PLAYER_READY_TO_OBSERVE]'>[icon2html('hyperstation/icons/menu/menu_large.dmi', world, "ghost")]Observe</a></p>"
if(!IsGuestKey(src.key))
if (SSdbcore.Connect())
@@ -61,18 +80,23 @@
newpoll = 1
if(newpoll)
output += "<p><b><a href='byond://?src=[rs];showpoll=1'>Show Player Polls</A> (NEW!)</b></p>"
output += "<p><b><a href='byond://?src=[rs];showpoll=1'>[icon2html('hyperstation/icons/menu/menu_large.dmi', world, "manifest")]Show Player Polls</A> (NEW!)</b></p>"
else
output += "<p><a href='byond://?src=[rs];showpoll=1'>Show Player Polls</A></p>"
output += "<p><a href='byond://?src=[rs];showpoll=1'>[icon2html('hyperstation/icons/menu/menu_large.dmi', world, "manifest")]Show Player Polls</A></p>"
qdel(query_get_new_polls)
if(QDELETED(src))
return
output += "</center>"
//src << browse(output,"window=playersetup;size=210x240;can_close=0")
var/datum/browser/popup = new(src, "playersetup", "<div align='center'>New Player Options</div>", 250, 265)
var/datum/browser/popup
if(SSticker.current_state <= GAME_STATE_PREGAME)
popup = new(src, "playersetup", "<div align='center'>New Player Options</div>", 268, 302)
else
popup = new(src, "playersetup", "<div align='center'>New Player Options</div>", 268, 542)
popup.set_window_options("can_close=0")
popup.add_stylesheet("playersetup", 'html/browser/mainmenu.css')
popup.set_content(output)
popup.open(0)
@@ -140,10 +164,38 @@
return
LateChoices()
if(href_list["roleplay_join"])
if(!SSticker || !SSticker.IsRoundInProgress())
to_chat(usr, "<span class='danger'>The round is either not ready, or has already finished...</span>")
return
if(href_list["late_join"] == "override")
LateChoices(TRUE)
return
if(client.prefs.real_name in client.pastcharacters) //if character has been spawned before
to_chat(usr, "<span class='notice'>You have played that character before this round, please select a new one!</span>")
return
if(SSticker.queued_players.len || (relevant_cap && living_player_count() >= relevant_cap && !(ckey(key) in GLOB.admin_datums)))
to_chat(usr, "<span class='danger'>[CONFIG_GET(string/hard_popcap_message)]</span>")
var/queue_position = SSticker.queued_players.Find(usr)
if(queue_position == 1)
to_chat(usr, "<span class='notice'>You are next in line to join the game. You will be notified when a slot opens up.</span>")
else if(queue_position)
to_chat(usr, "<span class='notice'>There are [queue_position-1] players in front of you in the queue to join the game.</span>")
else
SSticker.queued_players += usr
to_chat(usr, "<span class='notice'>You have been added to the queue to join the game. Your position in queue is [SSticker.queued_players.len].</span>")
return
LateChoices(TRUE)
if(href_list["manifest"])
ViewManifest()
if(href_list["SelectedJob"])
usr << browse(null, "window=roleplay") //closes the window
if(!SSticker || !SSticker.IsRoundInProgress())
var/msg = "[key_name(usr)] attempted to join the round using a href that shouldn't be available at this moment!"
log_admin(msg)
@@ -164,6 +216,63 @@
AttemptLateSpawn(href_list["SelectedJob"])
return
if(href_list["SelectedRoleplayJob"])
if(!SSticker || !SSticker.IsRoundInProgress())
var/msg = "[key_name(usr)] attempted to join the round using a href that shouldn't be available at this moment!"
log_admin(msg)
message_admins(msg)
to_chat(usr, "<span class='danger'>The round is either not ready, or has already finished...</span>")
return
if(!GLOB.enter_allowed)
to_chat(usr, "<span class='notice'>There is an administrative lock on entering the game!</span>")
return
if(SSticker.queued_players.len && !(ckey(key) in GLOB.admin_datums))
if((living_player_count() >= relevant_cap) || (src != SSticker.queued_players[1]))
to_chat(usr, "<span class='warning'>Server is full.</span>")
return
//make preview
var/mob/living/carbon/human/dummy/mannequin = generate_or_wait_for_human_dummy(DUMMY_HUMAN_SLOT_ROLEPLAY)
var/datum/job/roleplay/job = SSjob.GetJob(href_list["SelectedRoleplayJob"])
var/icon/preview_icon = icon('icons/effects/effects.dmi', "nothing")
job.equip(mannequin, TRUE)
client.prefs.copy_to(mannequin)
COMPILE_OVERLAYS(mannequin)
var/icon/stamp = getFlatIcon(mannequin)
mannequin.setDir(SOUTH)
stamp = getFlatIcon(mannequin)
CHECK_TICK
preview_icon.Blend(stamp, ICON_OVERLAY, 0, 0)
CHECK_TICK
preview_icon.Scale(preview_icon.Width() * 2, preview_icon.Height() * 2)
CHECK_TICK
unset_busy_human_dummy(DUMMY_HUMAN_SLOT_ROLEPLAY)
//make menu
var/dat = {"<B>[href_list["SelectedRoleplayJob"]]</B><BR><HR>"}
dat += "<center>[icon2html(preview_icon, world, "preview")]</center><BR><BR>"
if (length(job.info_text) > 0)
dat += "[job.info_text]<BR><BR>"
if (length(job.quest_info) > 0)
dat += {"<B>Role Job</B><BR><HR>"}
dat += "[job.quest_info]<BR><BR>"
if (length(job.failure_info) > 0)
dat += {"<B>Role Failure</B><BR><HR>"}
dat += "[job.failure_info]<BR><BR>"
if(client.prefs.roleplayroles)
dat += "<center><p><a href='byond://?src=[REF(src)];SelectedJob=[job.title]'>Play!</a></p></center>"
else
dat += "<center><p><span class='linkOff'>Whitelist Required</span></p></center>"
var/datum/browser/popup = new(usr, "roleplay", "Roleplay Panel")
popup.set_content(dat)
popup.set_title_image(usr.browse_rsc_icon(icon, icon_state), 500,600)
popup.open()
if(href_list["JoinAsGhostRole"])
if(!GLOB.enter_allowed)
to_chat(usr, "<span class='notice'> There is an administrative lock on entering the game!</span>")
@@ -361,6 +470,7 @@
return JOB_AVAILABLE
/mob/dead/new_player/proc/AttemptLateSpawn(rank)
var/datum/job/job = SSjob.GetJob(rank)
var/error = IsJobUnavailable(rank)
if(error != JOB_AVAILABLE)
alert(src, get_job_unavailable_error_message(error, rank))
@@ -388,12 +498,11 @@
SSjob.AssignRole(src, rank, 1)
var/mob/living/character = create_character(TRUE) //creates the human and transfers vars and mind
var/equip = SSjob.EquipRank(character, rank, TRUE)
var/equip = SSjob.EquipRank(character, rank, TRUE,job.loadout)
if(isliving(equip)) //Borgs get borged in the equip, so we need to make sure we handle the new mob.
character = equip
var/datum/job/job = SSjob.GetJob(rank)
if(job && !job.override_latejoin_spawn(character))
SSjob.SendToLateJoin(character)
if(!arrivals_docked)
@@ -454,7 +563,7 @@
employmentCabinet.addFile(employee)
/mob/dead/new_player/proc/LateChoices()
/mob/dead/new_player/proc/LateChoices(roleplayonly)
var/level = "green"
switch(GLOB.security_level)
@@ -479,8 +588,13 @@
var/available_job_count = 0
for(var/datum/job/job in SSjob.occupations)
if(job && IsJobUnavailable(job.title, TRUE) == JOB_AVAILABLE)
available_job_count++
if(!roleplayonly)
if(job && IsJobUnavailable(job.title, TRUE) == JOB_AVAILABLE)
available_job_count++
else
if(job && IsJobUnavailable(job.title, TRUE) == JOB_AVAILABLE)
if(job.department_flag == ROLEPLAY)
available_job_count++
for(var/spawner in GLOB.mob_spawners)
if(!LAZYLEN(spawner))
continue
@@ -494,26 +608,33 @@
dat += "<div class='notice red'>There are currently no open positions!</div>"
else
dat += "<div class='clearBoth'>Choose from the following open positions:</div><br>"
var/list/categorizedJobs = list(
"Command" = list(jobs = list(), titles = GLOB.command_positions, color = "#aac1ee"),
"Engineering" = list(jobs = list(), titles = GLOB.engineering_positions, color = "#ffd699"),
"Supply" = list(jobs = list(), titles = GLOB.supply_positions, color = "#ead4ae"),
"Miscellaneous" = list(jobs = list(), titles = list(), color = "#ffffff", colBreak = TRUE),
"Ghost Role" = list(jobs = list(), titles = GLOB.mob_spawners, color = "#ffffff"),
"Synthetic" = list(jobs = list(), titles = GLOB.nonhuman_positions, color = "#ccffcc"),
"Service" = list(jobs = list(), titles = GLOB.civilian_positions, color = "#cccccc"),
"Medical" = list(jobs = list(), titles = GLOB.medical_positions, color = "#99ffe6", colBreak = TRUE),
"Science" = list(jobs = list(), titles = GLOB.science_positions, color = "#e6b3e6"),
"Security" = list(jobs = list(), titles = GLOB.security_positions, color = "#ff9999"),
)
for(var/spawner in GLOB.mob_spawners)
if(!LAZYLEN(spawner))
continue
var/obj/effect/mob_spawn/S = pick(GLOB.mob_spawners[spawner])
if(!istype(S) || !S.can_latejoin())
continue
categorizedJobs["Ghost Role"]["jobs"] += spawner
var/list/categorizedJobs
if(!roleplayonly)
dat += "<div class='clearBoth'>Choose from the following open positions:</div><br>"
categorizedJobs = list(
"Command" = list(jobs = list(), titles = GLOB.command_positions, color = "#aac1ee"),
"Roleplay" = list(jobs = list(), titles = GLOB.roleplay_positions, color = "#aac1ee"),
"Engineering" = list(jobs = list(), titles = GLOB.engineering_positions, color = "#ffd699"),
"Supply" = list(jobs = list(), titles = GLOB.supply_positions, color = "#ead4ae"),
"Miscellaneous" = list(jobs = list(), titles = list(), color = "#ffffff", colBreak = TRUE),
"Ghost Role" = list(jobs = list(), titles = GLOB.mob_spawners, color = "#ffffff"),
"Synthetic" = list(jobs = list(), titles = GLOB.nonhuman_positions, color = "#ccffcc"),
"Service" = list(jobs = list(), titles = GLOB.civilian_positions, color = "#cccccc"),
"Medical" = list(jobs = list(), titles = GLOB.medical_positions, color = "#99ffe6", colBreak = TRUE),
"Science" = list(jobs = list(), titles = GLOB.science_positions, color = "#e6b3e6"),
"Security" = list(jobs = list(), titles = GLOB.security_positions, color = "#ff9999"),
)
else
dat += "<div class='clearBoth'>Choose from the following open positions:</div><br>"
categorizedJobs = list("Roleplay" = list(jobs = list(), titles = GLOB.roleplay_positions, color = "#aac1ee"))
if(!roleplayonly)
for(var/spawner in GLOB.mob_spawners)
if(!LAZYLEN(spawner))
continue
var/obj/effect/mob_spawn/S = pick(GLOB.mob_spawners[spawner])
if(!istype(S) || !S.can_latejoin())
continue
categorizedJobs["Ghost Role"]["jobs"] += spawner
for(var/datum/job/job in SSjob.occupations)
if(job && IsJobUnavailable(job.title, TRUE) == JOB_AVAILABLE)
@@ -522,6 +643,8 @@
var/list/jobs = categorizedJobs[jobcat]["jobs"]
if(job.title in categorizedJobs[jobcat]["titles"])
categorized = TRUE
if(jobcat == "Roleplay" && !roleplayonly)
continue //dont put roleplay jobs here
if(jobcat == "Command")
if(job.title == "Captain") // Put captain at top of command jobs
@@ -534,7 +657,8 @@
else
jobs += job
if(!categorized)
categorizedJobs["Miscellaneous"]["jobs"] += job
if(!roleplayonly)
categorizedJobs["Miscellaneous"]["jobs"] += job
dat += "<table><tr><td valign='top'>"
@@ -551,12 +675,15 @@
if(job.title in GLOB.command_positions)
position_class = "commandPosition"
var/jobline = ""
if(job in SSjob.prioritized_jobs)
jobline += "<a class='[position_class]' style='display:block;width:170px' href='byond://?src=[REF(src)];SelectedJob=[job.title]'><font color='lime'><b>[job.title] ([job.current_positions])</b></font></a>"
if(!roleplayonly)
if(job in SSjob.prioritized_jobs)
jobline += "<a class='[position_class]' style='display:block;width:170px' href='byond://?src=[REF(src)];SelectedJob=[job.title]'><font color='lime'><b>[job.title] ([job.current_positions])</b></font></a>"
else
jobline += "<a class='[position_class]' style='display:block;width:170px' href='byond://?src=[REF(src)];SelectedJob=[job.title]'>[job.title] ([job.current_positions])</a>"
if(client && client.prefs && client.prefs.alt_titles_preferences[job.title])
jobline += "<br><span style='color:#BBBBBB; font-style: italic;'>(as [client.prefs.alt_titles_preferences[job.title]])</span>"
else
jobline += "<a class='[position_class]' style='display:block;width:170px' href='byond://?src=[REF(src)];SelectedJob=[job.title]'>[job.title] ([job.current_positions])</a>"
if(client && client.prefs && client.prefs.alt_titles_preferences[job.title])
jobline += "<br><span style='color:#BBBBBB; font-style: italic;'>(as [client.prefs.alt_titles_preferences[job.title]])</span>"
jobline += "<a class='[position_class]' style='display:block;width:170px' href='byond://?src=[REF(src)];SelectedRoleplayJob=[job.title]'><font color='lime'><b>[job.title] ([job.current_positions])</b></font></a>"
dat += jobline
categorizedJobs[jobcat]["jobs"] -= job
@@ -638,3 +765,4 @@
src << browse(null, "window=preferences") //closes job selection
src << browse(null, "window=mob_occupation")
src << browse(null, "window=latechoices") //closes late job selection
@@ -3,7 +3,7 @@
/////////////////////////////
/datum/sprite_accessory/facial_hair
icon = 'icons/mob/human_face.dmi'
gender = MALE // barf (unless you're a dorf, dorfs dig chix w/ beards :P)
gender = NEUTER // barf (unless you're a dorf, dorfs dig chix w/ beards :P)
// please make sure they're sorted alphabetically and categorized
@@ -86,4 +86,3 @@
/datum/sprite_accessory/facial_hair/elvis
name = "Sideburns (Elvis)"
icon_state = "facial_elvis"
+33
View File
@@ -0,0 +1,33 @@
a, button, a:link, a:visited, a:active, .linkOn, .linkOff
{
text-align: center;
text-decoration: none;
display: inline-block;
vertical-align: middle;
align-items:center;
width: 95%;
border: 2px solid #161616;
}
.icon
{
width: 64px;
height: 64px;
vertical-align: middle;
}
.p {
margin-bottom: -10px; /* between paragraphs */
padding: -10px;
margin: 0px;
}
body
{
padding: 0;
margin: 0;
background-color: #272727;
font-size: 12px;
color: #ffffff;
line-height: 0%;
}
+33
View File
@@ -0,0 +1,33 @@
a, button, a:link, a:visited, a:active, .linkOn, .linkOff
{
text-align: center;
text-decoration: none;
display: inline-block;
vertical-align: middle;
align-items:center;
width: 95%;
border: 1px solid #161616;
}
.icon
{
width: 32px;
height: 32px;
vertical-align: middle;
}
.p {
margin-bottom: -10px; /* between paragraphs */
padding: -10px;
margin: 0px;
}
body
{
padding: 0;
margin: 0;
background-color: #272727;
font-size: 12px;
color: #ffffff;
line-height: 0%;
}
@@ -1,7 +1,19 @@
/*
Roleplay Jobs, Currently borked.
GLOBAL_LIST_INIT(roleplay_positions, list(
"Central Command Inspector",
"Prisoner"))
/datum/job/rpcentral
/datum/job/roleplay/
var/info_text = "Debug Text on What the Job does."
var/quest_info = "To be the very best, like noone ever was."
var/failure_info = "To suck."
department_flag = ROLEPLAY
loadout = FALSE
//Central Command Inspector
////////////////////////////////////////////
GLOBAL_LIST_EMPTY(rpcentralspawn) //required for late game spawning
/datum/job/roleplay/rpcentral
title = "Central Command Inspector"
faction = "Station"
total_positions = 1
@@ -9,5 +21,63 @@ Roleplay Jobs, Currently borked.
minimal_player_age = 1
supervisors = "central command"
selection_color = "#ffeef0"
custom_spawn_text = "You are from central command doing a routine inspection of the station, please fill out the provided information and submit it to central command by the end of the shift."
*/
info_text = "A offical from Central Command, performing a routine inspection of the station."
quest_info = "Complete a routine check of the station, And make a write up for your bosses. The information collected should be submitted to Central Command before the end of the shift. Notify the crew ahead of time for initating."
failure_info = "Failure to fill in the form correctly will face severe penalties from Command."
outfit = /datum/outfit/centcom_official
override_roundstart_spawn = /obj/effect/landmark/start/rpcentral
/datum/job/roleplay/rpcentral/override_latejoin_spawn()
return TRUE
/datum/job/roleplay/rpcentral/after_spawn(mob/H, mob/M, latejoin)
H.Move(pick(GLOB.rpcentralspawn))
H.forceMove(pick(GLOB.rpcentralspawn))
/obj/effect/landmark/start/rpcentral
name = "Central Command Inspector"
icon = 'icons/effects/landmarks_static.dmi'
icon_state = "snukeop_leader_spawn"
/obj/effect/landmark/start/rpcentral/Initialize(mapload)
..()
GLOB.rpcentralspawn += loc
return INITIALIZE_HINT_QDEL
//Prisoner
////////////////////////////////////////////
GLOBAL_LIST_EMPTY(prisionspawn)
/datum/job/roleplay/prisoner
title = "Prisoner"
faction = "Station"
total_positions = 3
spawn_positions = 1
minimal_player_age = 1
supervisors = "security"
selection_color = "#ffeef0"
info_text = "For one reason or another, you are a prisoner. Kinaris has chosen to temporarily hold you within Layenia Station's holding area, \
until the end of the shift. You do not permanently reside here, but you may end up in this place from shift to shift. It is highly recommended to \
make a unique character slot for this role. Kinaris would not neuter or otherwise remove identifying features that make you who you are; such as \
altering your name, features, or physical appearance. As a prisoner, you still uphold a decent amount of rights."
quest_info = "Do NOT attempt to break out, antagonize, or otherwise treat your role as anything to grief with. Should you find a scenario where you want to, AHELP."
failure_info = ""
outfit = /datum/outfit/prisoner
/datum/job/roleplay/prisoner/override_latejoin_spawn()
return TRUE
/datum/job/roleplay/prisoner/after_spawn(mob/H, mob/M, latejoin)
AnnounceArrival(H, title)
H.Move(pick(GLOB.prisionspawn))
H.forceMove(pick(GLOB.prisionspawn))
/obj/effect/landmark/start/prisoner
name = "Central Command Inspector"
icon = 'icons/effects/landmarks_static.dmi'
icon_state = "snukeop_leader_spawn"
/obj/effect/landmark/start/prisoner/Initialize(mapload)
..()
GLOB.prisionspawn += loc
return INITIALIZE_HINT_QDEL
@@ -437,7 +437,7 @@ from modular_citadel/code/modules/mob/dead/new_player/sprite_accessories.dm:
name = "RadDog (Hyper)"
icon_state = "chemlight"
icon = 'hyperstation/icons/mob/char_markings.dmi'
//racc do a code maybe it won't explode
/datum/sprite_accessory/mam_body_markings/raccalt
name = "RaccAlt (Hyper)"
@@ -543,7 +543,7 @@ from modular_citadel/code/modules/mob/dead/new_player/sprite_accessories.dm:
/datum/sprite_accessory/screen/visor/blue
name = "Blue Visor (Hyper)"
icon_state = "visor_blue"
/datum/sprite_accessory/screen/visor/green
name = "Green Visor (Hyper)"
icon_state = "visor_green"
@@ -559,7 +559,7 @@ from modular_citadel/code/modules/mob/dead/new_player/sprite_accessories.dm:
/datum/sprite_accessory/screen/visor/yellow
name = "Yellow Visor (Hyper)"
icon_state = "visor_yellow"
/*
HAIRSTYLES
@@ -601,3 +601,18 @@ from code/modules/mob/dead/new_player/sprite_accessories/hair_head.dm:
/datum/sprite_accessory/hair/emoh
name = "Emo (Hyper)"
icon_state = "hair_emoh"
/*
BEARDS
==========================================================
*/
/*
/datum/sprite_accessory/facial_hair
icon = 'icons/mob/human_face.dmi'
gender = MALE // barf (unless you're a dorf, dorfs dig chix w/ beards :P)
*/
/datum/sprite_accessory/facial_hair/mane
name = "Neckfluff (Hyper)"
icon_state = "facial_neckfluff"
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 174 KiB

After

Width:  |  Height:  |  Size: 175 KiB

@@ -3,7 +3,7 @@
id = "mammal"
default_color = "4B4B4B"
icon_limbs = DEFAULT_BODYPART_ICON_CITADEL
species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR,WINGCOLOR)
species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR,WINGCOLOR,FACEHAIR)
inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID
mutant_bodyparts = list("mam_tail", "mam_ears", "mam_body_markings", "mam_snouts", "taur", "legs", "deco_wings")
default_features = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF", "mam_snouts" = "Husky", "mam_tail" = "Husky", "mam_ears" = "Husky", "mam_body_markings" = "Husky", "taur" = "None", "legs" = "Normal Legs", "deco_wings" = "None")
@@ -54,7 +54,7 @@
say_mod = "chirps"
default_color = "BCAC9B"
icon_limbs = DEFAULT_BODYPART_ICON_CITADEL
species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR,WINGCOLOR)
species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR,WINGCOLOR,FACEHAIR)
inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID
mutant_bodyparts = list("mam_snouts", "wings", "taur", "mam_tail", "mam_body_markings", "taur", "deco_wings")
default_features = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF", "mam_snouts" = "Beak", "mam_body_markings" = "Hawk", "wings" = "None", "taur" = "None", "mam_tail" = "Hawk", "deco_wings" = "None")
@@ -100,7 +100,7 @@
id = "aquatic"
default_color = "BCAC9B"
icon_limbs = DEFAULT_BODYPART_ICON_CITADEL
species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR,WINGCOLOR)
species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR,WINGCOLOR,FACEHAIR)
inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID
mutant_bodyparts = list("mam_tail", "mam_ears","mam_body_markings", "taur", "mam_snouts", "deco_wings", "legs")
default_features = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF", "mam_tail" = "Shark", "mam_ears" = "None", "mam_body_markings" = "Shark", "mam_snouts" = "Round", "taur" = "None", "legs" = "Normal Legs", "deco_wings" = "None")
@@ -147,7 +147,7 @@
id = "insect"
default_color = "BCAC9B"
icon_limbs = DEFAULT_BODYPART_ICON_CITADEL
species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR)
species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR,FACEHAIR)
inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_BUG
mutant_bodyparts = list("mam_ears", "mam_body_markings", "mam_tail", "taur", "moth_wings","moth_markings", "mam_snouts", "moth_fluff", "legs")
default_features = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF", "mam_tail" = "None", "mam_ears" = "None", "moth_wings" = "Plain","moth_markings" = "None", "mam_snouts" = "Bug", "mam_body_markings" = "Moth", "taur" = "None", "moth_fluff" = "Plain", "legs" = "Normal Legs")
@@ -250,7 +250,7 @@
icon_limbs = DEFAULT_BODYPART_ICON_CITADEL
say_mod = "beeps"
default_color = "00FF00"
species_traits = list(MUTCOLORS,NOTRANSSTING,EYECOLOR,LIPS,HAIR)
species_traits = list(MUTCOLORS,NOTRANSSTING,EYECOLOR,LIPS,HAIR,FACEHAIR)
inherent_biotypes = MOB_ROBOTIC|MOB_HUMANOID
mutant_bodyparts = list("ipc_antenna", "mam_tail", "mam_snouts", "legs", "mam_body_markings", "taur")
default_features = list("ipc_antenna" = "Synthetic Lizard - Antennae","mam_tail" = "Synthetic Lizard", "mam_snouts" = "Synthetic Lizard - Snout", "legs" = "Digitigrade Legs", "mam_body_markings" = "Synthetic Lizard - Plates", "taur" = "None")
+2
View File
@@ -3199,6 +3199,7 @@
#include "hyperstation\code\modules\food_and_drinks\recipes\drinks_recipes.dm"
#include "hyperstation\code\modules\hydroponics\grown\kalyna.dm"
#include "hyperstation\code\modules\integrated_electronics\input.dm"
#include "hyperstation\code\modules\jobs\jobs.dm"
#include "hyperstation\code\modules\jobs\job_types\_job.dm"
#include "hyperstation\code\modules\jobs\job_types\civilian.dm"
#include "hyperstation\code\modules\jobs\job_types\job_alt_titles.dm"
@@ -3209,6 +3210,7 @@
#include "hyperstation\code\modules\mining\equipment\survival_pod.dm"
#include "hyperstation\code\modules\mob\mob_helpers.dm"
#include "hyperstation\code\modules\mob\dead\new_player\cosmetic_parts.dm"
#include "hyperstation\code\modules\mob\dead\new_player\roleplay.dm"
#include "hyperstation\code\modules\mob\dead\new_player\sprite_accessories.dm"
#include "hyperstation\code\modules\mob\living\status_indicators.dm"
#include "hyperstation\code\modules\mob\living\carbon\carbon.dm"