mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2026-01-06 15:32:52 +00:00
Added survivalist job, wilderness spawn and checkpoint spawn to Cynosure.
This commit is contained in:
@@ -2,9 +2,9 @@ GLOBAL_LIST_INIT(speech_toppings, list("|" = "i", "+" = "b", "_" = "u"))
|
||||
GLOBAL_LIST_EMPTY(meteor_list)
|
||||
|
||||
/// List of wire colors for each object type of that round. One for airlocks, one for vendors, etc.
|
||||
GLOBAL_LIST_EMPTY(wire_color_directory) // This is an associative list with the `holder_type` as the key, and a list of colors as the value.
|
||||
GLOBAL_LIST_EMPTY(wire_color_directory) // This is an associative list with the `holder_type` as the key, and a list of colors as the value.
|
||||
|
||||
// Reference list for disposal sort junctions. Filled up by sorting junction's New()
|
||||
GLOBAL_LIST_EMPTY(tagger_locations)
|
||||
|
||||
GLOBAL_LIST_EMPTY(crafting_recipes) //list of all table craft recipes
|
||||
GLOBAL_LIST_EMPTY(crafting_recipes) //list of all table craft recipes
|
||||
|
||||
@@ -15,12 +15,13 @@
|
||||
|
||||
/decl/hierarchy/outfit/job/equip_id(mob/living/carbon/human/H, rank, assignment)
|
||||
var/obj/item/card/id/C = ..()
|
||||
var/datum/job/J = job_master.GetJob(rank)
|
||||
if(J)
|
||||
C.access = J.get_access()
|
||||
if(H.mind)
|
||||
var/datum/mind/M = H.mind
|
||||
if(M.initial_account)
|
||||
var/datum/money_account/A = M.initial_account
|
||||
C.associated_account_number = A.account_number
|
||||
if(C)
|
||||
var/datum/job/J = job_master.GetJob(rank)
|
||||
if(J)
|
||||
C.access = J.get_access()
|
||||
if(H.mind)
|
||||
var/datum/mind/M = H.mind
|
||||
if(M.initial_account)
|
||||
var/datum/money_account/A = M.initial_account
|
||||
C.associated_account_number = A.account_number
|
||||
return C
|
||||
|
||||
@@ -34,11 +34,11 @@
|
||||
var/outfit_type // What outfit datum does this job use in its default title?
|
||||
|
||||
var/offmap_spawn = FALSE // Do we require weird and special spawning and datacore handling?
|
||||
var/substitute_announce_title // Set this to replace the actual job title in join/leave messages (for 'gamey' jobs like Survivalist)
|
||||
var/mob_type = JOB_CARBON // Bitflags representing mob type this job spawns
|
||||
|
||||
// Description of the job's role and minimum responsibilities.
|
||||
var/job_description = "This Job doesn't have a description! Please report it!"
|
||||
|
||||
/datum/job/New()
|
||||
. = ..()
|
||||
department_accounts = department_accounts || departments_managed
|
||||
@@ -177,4 +177,4 @@
|
||||
if(species_name in banned_job_species)
|
||||
return TRUE
|
||||
if(brain_type in banned_job_species)
|
||||
return TRUE
|
||||
return TRUE
|
||||
|
||||
@@ -618,10 +618,8 @@ var/global/datum/controller/occupations/job_master
|
||||
/datum/controller/occupations/proc/LateSpawn(var/client/C, var/rank)
|
||||
|
||||
var/datum/spawnpoint/spawnpos
|
||||
var/fail_deadly = FALSE
|
||||
|
||||
var/datum/job/J = SSjob.get_job(rank)
|
||||
fail_deadly = J?.offmap_spawn
|
||||
var/fail_deadly = !!(J?.offmap_spawn)
|
||||
|
||||
//Spawn them at their preferred one
|
||||
if(C && C.prefs.spawnpoint)
|
||||
@@ -639,9 +637,9 @@ var/global/datum/controller/occupations/job_master
|
||||
. = list("turf","msg")
|
||||
if(spawnpos && istype(spawnpos) && spawnpos.turfs.len)
|
||||
if(spawnpos.check_job_spawning(rank))
|
||||
.["turf"] = spawnpos.get_spawn_position()
|
||||
.["msg"] = spawnpos.msg
|
||||
.["channel"] = spawnpos.announce_channel
|
||||
.["turf"] = spawnpos.get_spawn_position()
|
||||
.["msg"] = spawnpos.msg
|
||||
.["channel"] = spawnpos.announce_channel
|
||||
else
|
||||
if(fail_deadly)
|
||||
to_chat(C, "<span class='warning'>Your chosen spawnpoint ([spawnpos.display_name]) is unavailable for your chosen job. Please correct your spawn point choice.</span>")
|
||||
|
||||
@@ -43,6 +43,7 @@ var/global/const/LAWYER =(1<<9)
|
||||
var/global/const/CHAPLAIN =(1<<10)
|
||||
var/global/const/ASSISTANT =(1<<11)
|
||||
var/global/const/BRIDGE =(1<<12)
|
||||
var/global/const/HERMIT =(1<<13)
|
||||
|
||||
/proc/guest_jobbans(var/job)
|
||||
return ( (job in SSjob.get_job_titles_in_department(DEPARTMENT_COMMAND)) || (job in SSjob.get_job_titles_in_department(DEPARTMENT_SYNTHETIC)) || (job in SSjob.get_job_titles_in_department(DEPARTMENT_SECURITY)) )
|
||||
|
||||
@@ -483,7 +483,8 @@
|
||||
control_computer._admin_logs += "[key_name(to_despawn)] ([to_despawn.mind.role_alt_title]) at [stationtime2text()]"
|
||||
log_and_message_admins("[key_name(to_despawn)] ([to_despawn.mind.role_alt_title]) entered cryostorage.")
|
||||
|
||||
announce.autosay("[to_despawn.real_name], [to_despawn.mind.role_alt_title], [on_store_message]", "[on_store_name]", announce_channel, using_map.get_map_levels(z, TRUE, om_range = DEFAULT_OVERMAP_RANGE))
|
||||
var/datum/job/J = SSjob.get_job(job)
|
||||
announce.autosay("[to_despawn.real_name], [J?.substitute_announce_title || to_despawn.mind.role_alt_title], [on_store_message]", "[on_store_name]", announce_channel, using_map.get_map_levels(z, TRUE, om_range = DEFAULT_OVERMAP_RANGE))
|
||||
visible_message("<span class='notice'>\The [initial(name)] [on_store_visible_message_1] [to_despawn.real_name] [on_store_visible_message_2]</span>", 3)
|
||||
|
||||
//This should guarantee that ghosts don't spawn.
|
||||
|
||||
@@ -31,6 +31,9 @@
|
||||
if("JoinLateCheckpoint")
|
||||
latejoin_checkpoint += loc
|
||||
delete_me = 1
|
||||
if("JoinLateWilderness")
|
||||
latejoin_wilderness += loc
|
||||
delete_me = 1
|
||||
if("JoinLateCryo")
|
||||
latejoin_cryo += loc
|
||||
delete_me = 1
|
||||
|
||||
@@ -62,6 +62,7 @@ var/global/list/latejoin_elevator = list()
|
||||
var/global/list/latejoin_cryo = list()
|
||||
var/global/list/latejoin_cyborg = list()
|
||||
var/global/list/latejoin_checkpoint = list()
|
||||
var/global/list/latejoin_wilderness = list()
|
||||
|
||||
var/global/list/prisonwarp = list() // Prisoners go to these
|
||||
var/global/list/holdingfacility = list() // Captured people go here
|
||||
|
||||
@@ -377,4 +377,3 @@
|
||||
corpseshoes = /obj/item/clothing/shoes/boots/tactical
|
||||
corpseid = 1
|
||||
corpseidjob = "Hedberg-Hammarstrom Enforcer"
|
||||
|
||||
|
||||
@@ -270,17 +270,16 @@
|
||||
/datum/category_item/player_setup_item/occupation/proc/SetJob(mob/user, role, level)
|
||||
var/datum/job/job = job_master.GetJob(role)
|
||||
if(!job)
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
if(job.type == /datum/job/assistant)
|
||||
if(pref.job_civilian_low & job.flag)
|
||||
pref.job_civilian_low &= ~job.flag
|
||||
else
|
||||
pref.job_civilian_low |= job.flag
|
||||
return 1
|
||||
|
||||
return TRUE
|
||||
SetJobDepartment(job, level)
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/datum/category_item/player_setup_item/occupation/proc/reset_jobhigh()
|
||||
pref.job_civilian_med |= pref.job_civilian_high
|
||||
@@ -293,7 +292,7 @@
|
||||
// Level is equal to the desired new level of the job. So for a value of 4, we want to disable the job.
|
||||
/datum/category_item/player_setup_item/occupation/proc/SetJobDepartment(var/datum/job/job, var/level)
|
||||
if(!job || !level)
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
switch(job.department_flag)
|
||||
if(CIVILIAN)
|
||||
@@ -332,7 +331,7 @@
|
||||
pref.job_engsec_med |= job.flag
|
||||
if(3)
|
||||
pref.job_engsec_low |= job.flag
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/datum/category_item/player_setup_item/occupation/proc/ResetJobs()
|
||||
pref.job_civilian_high = 0
|
||||
|
||||
@@ -12,27 +12,23 @@ var/global/list/spawntypes = list()
|
||||
var/display_name //Name used in preference setup.
|
||||
var/list/restrict_job = null
|
||||
var/list/disallow_job = null
|
||||
var/list/permit_offsite_job = null
|
||||
var/announce_channel = "Common"
|
||||
var/allowed_mob_types = JOB_SILICON|JOB_CARBON
|
||||
|
||||
/datum/spawnpoint/proc/check_job_spawning(job)
|
||||
if(restrict_job && !(job in restrict_job))
|
||||
return 0
|
||||
|
||||
if(disallow_job && (job in disallow_job))
|
||||
return 0
|
||||
|
||||
var/datum/job/J = SSjob.get_job(job)
|
||||
if(!J) // Couldn't find, admin shenanigans? Allow it
|
||||
return 1
|
||||
|
||||
if(J.offmap_spawn && !(job in restrict_job))
|
||||
return 0
|
||||
|
||||
return TRUE
|
||||
if(J.offmap_spawn && !(job in permit_offsite_job) && !(job in restrict_job))
|
||||
return FALSE
|
||||
if(restrict_job && !(job in restrict_job))
|
||||
return FALSE
|
||||
if(disallow_job && (job in disallow_job))
|
||||
return FALSE
|
||||
if(!(J.mob_type & allowed_mob_types))
|
||||
return 0
|
||||
|
||||
return 1
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/datum/spawnpoint/proc/get_spawn_position()
|
||||
return get_turf(pick(turfs))
|
||||
@@ -85,4 +81,12 @@ var/global/list/spawntypes = list()
|
||||
|
||||
/datum/spawnpoint/cyborg/New()
|
||||
..()
|
||||
turfs = latejoin_cyborg
|
||||
turfs = latejoin_cyborg
|
||||
|
||||
/datum/spawnpoint/wilderness
|
||||
display_name = "Wilderness"
|
||||
msg = null
|
||||
|
||||
/datum/spawnpoint/wilderness/New()
|
||||
..()
|
||||
turfs = latejoin_wilderness
|
||||
|
||||
@@ -837,7 +837,7 @@
|
||||
if(accessory.AltClick(user))
|
||||
return TRUE
|
||||
. = ..()
|
||||
|
||||
|
||||
/obj/item/clothing/under/attack_hand(var/mob/user)
|
||||
if(LAZYLEN(accessories))
|
||||
..()
|
||||
|
||||
@@ -405,7 +405,7 @@
|
||||
var/join_message = join_props["msg"]
|
||||
var/announce_channel = join_props["channel"] || "Common"
|
||||
|
||||
if(!T || !join_message)
|
||||
if(!T)
|
||||
return 0
|
||||
|
||||
spawning = 1
|
||||
@@ -451,9 +451,11 @@
|
||||
ticker.mode.latespawn(character)
|
||||
|
||||
if(J.mob_type & JOB_SILICON)
|
||||
AnnounceCyborg(character, rank, join_message, announce_channel, character.z)
|
||||
if(join_message && announce_channel)
|
||||
AnnounceCyborg(character, rank, join_message, announce_channel, character.z)
|
||||
else
|
||||
AnnounceArrival(character, rank, join_message, announce_channel, character.z)
|
||||
if(join_message && announce_channel)
|
||||
AnnounceArrival(character, J?.substitute_announce_title || rank, join_message, announce_channel, character.z)
|
||||
data_core.manifest_inject(character)
|
||||
ticker.minds += character.mind//Cyborgs and AIs handle this in the transform proc. //TODO!!!!! ~Carn
|
||||
|
||||
@@ -647,4 +649,4 @@
|
||||
return
|
||||
var/decl/music_track/new_track = using_map.get_lobby_track(using_map.lobby_track.type)
|
||||
if(new_track)
|
||||
new_track.play_to(src)
|
||||
new_track.play_to(src)
|
||||
|
||||
@@ -401,7 +401,7 @@
|
||||
|
||||
if(muzzle_flash)
|
||||
set_light(0)
|
||||
|
||||
|
||||
user.hud_used.update_ammo_hud(user, src)
|
||||
|
||||
// Similar to the above proc, but does not require a user, which is ideal for things like turrets.
|
||||
@@ -746,16 +746,16 @@
|
||||
|
||||
/obj/item/gun/proc/get_ammo_count()
|
||||
return FALSE
|
||||
|
||||
|
||||
/obj/item/gun/equipped(mob/living/user, slot) // When a gun is equipped to your hands, we'll add the HUD to the user. Pending porting over TGMC guncode where wielding is far more sensible.
|
||||
if(slot == slot_l_hand || slot == slot_r_hand)
|
||||
user.hud_used.add_ammo_hud(user, src)
|
||||
else
|
||||
user.hud_used.remove_ammo_hud(user, src)
|
||||
|
||||
if(user?.hud_used)
|
||||
if(slot == slot_l_hand || slot == slot_r_hand)
|
||||
user.hud_used.add_ammo_hud(user, src)
|
||||
else
|
||||
user.hud_used.remove_ammo_hud(user, src)
|
||||
return ..()
|
||||
|
||||
/obj/item/gun/dropped(mob/living/user) // Ditto as above, we remove the HUD. Pending porting TGMC code to clean up this fucking nightmare of spaghetti.
|
||||
user.hud_used.remove_ammo_hud(user, src)
|
||||
|
||||
..()
|
||||
|
||||
/obj/item/gun/dropped(mob/living/user) // Ditto as above, we remove the HUD. Pending porting TGMC code to clean up this fucking nightmare of spaghetti.
|
||||
if(user?.hud_used)
|
||||
user.hud_used.remove_ammo_hud(user, src)
|
||||
..()
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -9,6 +9,13 @@
|
||||
"bE" = (
|
||||
/turf/unsimulated/wall/planetary/sif,
|
||||
/area/surface/outside/wilderness/mountains)
|
||||
"bW" = (
|
||||
/obj/effect/landmark{
|
||||
name = "JoinLateWilderness"
|
||||
},
|
||||
/obj/structure/bed,
|
||||
/turf/simulated/floor/wood/sif,
|
||||
/area/surface/wilderness/shack)
|
||||
"ct" = (
|
||||
/turf/simulated/floor/outdoors/grass/sif,
|
||||
/area/surface/outside/wilderness/normal)
|
||||
@@ -18,10 +25,23 @@
|
||||
},
|
||||
/turf/simulated/floor/outdoors/mask,
|
||||
/area/surface/outside/wilderness/mountains)
|
||||
"dj" = (
|
||||
/obj/vehicle/boat/sifwood,
|
||||
/turf/simulated/floor/outdoors/mask,
|
||||
/area/surface/outside/wilderness/normal)
|
||||
"eZ" = (
|
||||
/turf/simulated/wall/sifwood,
|
||||
/area/surface/wilderness/shack)
|
||||
"fy" = (
|
||||
/obj/structure/cliff/automatic,
|
||||
/turf/simulated/floor/outdoors/mask,
|
||||
/area/surface/outside/wilderness/mountains)
|
||||
"fP" = (
|
||||
/obj/structure/table/sifwoodentable,
|
||||
/obj/item/storage/firstaid,
|
||||
/obj/item/stack/medical/splint,
|
||||
/turf/simulated/floor/wood/sif,
|
||||
/area/surface/wilderness/shack)
|
||||
"gl" = (
|
||||
/obj/structure/cliff/automatic{
|
||||
dir = 9
|
||||
@@ -97,12 +117,21 @@
|
||||
},
|
||||
/turf/simulated/floor/outdoors/mask,
|
||||
/area/surface/outside/wilderness/mountains)
|
||||
"qr" = (
|
||||
/obj/structure/kitchenspike,
|
||||
/turf/simulated/floor/wood/sif,
|
||||
/area/surface/wilderness/shack)
|
||||
"qT" = (
|
||||
/obj/effect/map_effect/portal/master/side_b/wilderness_to_plains/river{
|
||||
dir = 1
|
||||
},
|
||||
/turf/simulated/floor/outdoors/grass/sif,
|
||||
/area/surface/outside/river/gautelfr)
|
||||
"sn" = (
|
||||
/obj/structure/table/sifwoodentable,
|
||||
/obj/item/flashlight/lamp,
|
||||
/turf/simulated/floor/wood/sif,
|
||||
/area/surface/wilderness/shack)
|
||||
"ta" = (
|
||||
/obj/structure/showcase/sign{
|
||||
icon_state = "wilderness2";
|
||||
@@ -110,6 +139,10 @@
|
||||
},
|
||||
/turf/simulated/wall/sifwood,
|
||||
/area/surface/outside/wilderness/normal)
|
||||
"tC" = (
|
||||
/obj/structure/simple_door/sifwood,
|
||||
/turf/simulated/floor/wood/sif,
|
||||
/area/surface/wilderness/shack)
|
||||
"tM" = (
|
||||
/turf/simulated/floor/water,
|
||||
/area/surface/outside/river/gautelfr)
|
||||
@@ -119,6 +152,9 @@
|
||||
},
|
||||
/turf/simulated/floor/outdoors/dirt/sif,
|
||||
/area/surface/outside/path/wilderness)
|
||||
"uk" = (
|
||||
/turf/simulated/floor/wood/sif,
|
||||
/area/surface/wilderness/shack)
|
||||
"uP" = (
|
||||
/turf/simulated/floor/outdoors/grass/sif/random{
|
||||
tree_chance = 0
|
||||
@@ -227,9 +263,19 @@
|
||||
tree_chance = 0
|
||||
},
|
||||
/area/surface/outside/wilderness/deep)
|
||||
"JU" = (
|
||||
/obj/effect/wingrille_spawn,
|
||||
/turf/simulated/floor/wood/sif,
|
||||
/area/surface/wilderness/shack)
|
||||
"KZ" = (
|
||||
/turf/simulated/floor/wood/sif,
|
||||
/area/surface/outside/path/wilderness)
|
||||
"LN" = (
|
||||
/obj/effect/landmark/start{
|
||||
name = "Survivalist"
|
||||
},
|
||||
/turf/simulated/floor/wood/sif,
|
||||
/area/surface/wilderness/shack)
|
||||
"Mf" = (
|
||||
/obj/structure/cliff/automatic/corner{
|
||||
dir = 6
|
||||
@@ -262,10 +308,19 @@
|
||||
},
|
||||
/turf/simulated/floor/outdoors/grass/sif,
|
||||
/area/surface/outside/path/wilderness)
|
||||
"RA" = (
|
||||
/obj/structure/table/sifwoodentable,
|
||||
/obj/item/material/fishing_rod/built,
|
||||
/obj/item/stack/cable_coil/white,
|
||||
/turf/simulated/floor/wood/sif,
|
||||
/area/surface/wilderness/shack)
|
||||
"Sa" = (
|
||||
/obj/effect/zone_divider,
|
||||
/turf/simulated/floor/water,
|
||||
/area/surface/outside/river/gautelfr)
|
||||
"Sc" = (
|
||||
/turf/simulated/floor/wood/sif/broken,
|
||||
/area/surface/wilderness/shack)
|
||||
"Sl" = (
|
||||
/turf/simulated/floor/outdoors/mud/sif/planetuse,
|
||||
/area/surface/outside/wilderness/normal)
|
||||
@@ -273,6 +328,10 @@
|
||||
/obj/effect/zone_divider,
|
||||
/turf/simulated/floor/outdoors/snow/sif/planetuse,
|
||||
/area/surface/outside/wilderness/mountains)
|
||||
"Tc" = (
|
||||
/obj/structure/bookcase,
|
||||
/turf/simulated/floor/wood/sif,
|
||||
/area/surface/wilderness/shack)
|
||||
"TP" = (
|
||||
/obj/structure/railing{
|
||||
dir = 8
|
||||
@@ -53952,12 +54011,12 @@ Ax
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
eZ
|
||||
eZ
|
||||
eZ
|
||||
eZ
|
||||
eZ
|
||||
eZ
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
@@ -54209,12 +54268,12 @@ Ax
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
eZ
|
||||
Tc
|
||||
bW
|
||||
LN
|
||||
bW
|
||||
eZ
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
@@ -54466,12 +54525,12 @@ Ax
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
eZ
|
||||
RA
|
||||
Sc
|
||||
uk
|
||||
LN
|
||||
JU
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
@@ -54723,12 +54782,12 @@ Ax
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
JU
|
||||
sn
|
||||
uk
|
||||
uk
|
||||
LN
|
||||
JU
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
@@ -54980,12 +55039,12 @@ Ax
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
JU
|
||||
fP
|
||||
qr
|
||||
uk
|
||||
bW
|
||||
eZ
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
@@ -55237,12 +55296,12 @@ Ax
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
eZ
|
||||
eZ
|
||||
eZ
|
||||
tC
|
||||
eZ
|
||||
eZ
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
@@ -56525,7 +56584,7 @@ tM
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
dj
|
||||
Ax
|
||||
Ax
|
||||
Ax
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
|
||||
#include "datums/supplypacks/munitions.dm"
|
||||
#include "datums/random_map.dm"
|
||||
#include "datums/spawn.dm"
|
||||
|
||||
#include "items/encryptionkey_cyno.dm"
|
||||
#include "items/headset_cyno.dm"
|
||||
#include "items/clothing/cyno_suit.dm"
|
||||
@@ -42,4 +44,4 @@
|
||||
|
||||
#warn A map has already been included, ignoring Cynosure
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -1974,4 +1974,11 @@
|
||||
icon_state = "shuttle"
|
||||
|
||||
/area/shuttle/large_escape_pod2/transit
|
||||
icon_state = "shuttle"
|
||||
icon_state = "shuttle"
|
||||
|
||||
// Wilderness spawn areas.
|
||||
/area/surface/wilderness/shack
|
||||
name = "Wilderness Shack"
|
||||
|
||||
/area/surface/outpost/checkpoint
|
||||
name = "Exterior Checkpoint"
|
||||
|
||||
@@ -83,7 +83,13 @@
|
||||
NETWORK_SUPPLY
|
||||
)
|
||||
usable_email_tlds = list("freemail.nt")
|
||||
allowed_spawns = list("Arrivals Shuttle", "Cryogenic Storage", "Cyborg Storage")
|
||||
allowed_spawns = list(
|
||||
"Arrivals Shuttle",
|
||||
"Cryogenic Storage",
|
||||
"Cyborg Storage",
|
||||
"Checkpoint",
|
||||
"Wilderness"
|
||||
)
|
||||
|
||||
|
||||
use_overmap = TRUE
|
||||
@@ -373,4 +379,4 @@
|
||||
|
||||
// Putting this here in order to not disrupt existing maps/downstreams.
|
||||
/turf/simulated/open
|
||||
dynamic_lighting = TRUE
|
||||
dynamic_lighting = TRUE
|
||||
|
||||
@@ -56,4 +56,25 @@ var/global/const/access_explorer = 43
|
||||
access_tox_storage, access_teleporter, access_sec_doors,
|
||||
access_research, access_robotics, access_xenobiology, access_ai_upload, access_tech_storage,
|
||||
access_RC_announce, access_keycard_auth, access_tcomsat, access_gateway, access_xenoarch,
|
||||
access_network, access_maint_tunnels, access_explorer, access_eva, access_external_airlocks)
|
||||
access_network, access_maint_tunnels, access_explorer, access_eva, access_external_airlocks)
|
||||
|
||||
/datum/job/survivalist
|
||||
title = "Survivalist"
|
||||
departments = list(DEPARTMENT_PLANET)
|
||||
department_flag = CIVILIAN
|
||||
flag = HERMIT
|
||||
selection_color = "#6085a8"
|
||||
total_positions = 3
|
||||
spawn_positions = 3
|
||||
faction = "Station"
|
||||
supervisors = "your conscience"
|
||||
economic_modifier = 1
|
||||
access = list()
|
||||
minimal_access = list()
|
||||
outfit_type = /decl/hierarchy/outfit/job/survivalist
|
||||
job_description = "There are a few small groups of people living in the wilderness of Sif, and they occasionally venture to the Cynosure to trade, ask for help, or just have someone to talk to."
|
||||
assignable = FALSE
|
||||
has_headset = FALSE
|
||||
account_allowed = FALSE
|
||||
offmap_spawn = TRUE
|
||||
substitute_announce_title = "Colonist"
|
||||
|
||||
5
maps/cynosure/datums/spawn.dm
Normal file
5
maps/cynosure/datums/spawn.dm
Normal file
@@ -0,0 +1,5 @@
|
||||
/datum/spawnpoint/wilderness
|
||||
restrict_job = list("Survivalist") // Nobody except survivalists.
|
||||
|
||||
/datum/spawnpoint/checkpoint
|
||||
permit_offsite_job = list("Survivalist") // Survivalists can spawn here but not on the other 'civilized' spawns.
|
||||
@@ -62,4 +62,28 @@ Keep outfits simple. Spawn with basic uniforms and minimal gear. Gear instead go
|
||||
pda_slot = slot_l_store
|
||||
id_type = /obj/item/card/id/medical
|
||||
id_pda_assignment = "Search and Rescue"
|
||||
flags = OUTFIT_HAS_BACKPACK|OUTFIT_EXTENDED_SURVIVAL|OUTFIT_COMPREHENSIVE_SURVIVAL
|
||||
flags = OUTFIT_HAS_BACKPACK|OUTFIT_EXTENDED_SURVIVAL|OUTFIT_COMPREHENSIVE_SURVIVAL
|
||||
|
||||
/decl/hierarchy/outfit/job/survivalist
|
||||
name = OUTFIT_JOB_NAME("Survivalist")
|
||||
l_ear = null
|
||||
r_ear = null
|
||||
pda_slot = null
|
||||
pda_type = null
|
||||
id_slot = null
|
||||
id_type = null
|
||||
mask = /obj/item/clothing/mask/gas
|
||||
r_pocket = /obj/item/tank/emergency/oxygen/double
|
||||
l_pocket = /obj/item/radio
|
||||
uniform = /obj/item/clothing/under/ascetic
|
||||
shoes = /obj/item/clothing/shoes/boots/winter
|
||||
suit = /obj/item/clothing/suit/storage/hooded/wintercoat
|
||||
belt = /obj/item/gun/energy/phasegun/pistol // better make that cell count
|
||||
|
||||
/decl/hierarchy/outfit/job/survivalist/equip(mob/living/carbon/human/H, rank, assignment)
|
||||
. = ..()
|
||||
if(H && H.shoes)
|
||||
var/obj/item/clothing/shoes/shoes = H.shoes
|
||||
if(istype(shoes) && !shoes.holding && shoes.can_hold_knife)
|
||||
shoes.holding = new /obj/item/material/knife/tacknife/survival(H)
|
||||
shoes.update_icon()
|
||||
|
||||
Reference in New Issue
Block a user