mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 10:12:45 +00:00
- Heavy rework of the wilderness, minor adjustments to mining and outpost z-levels. To get to the wilderness you now have to travel through the mine z-level to do so, follow the green flagged path through the mine. - Shuttles can now land at a site near the entrance to the wilderness. Removal of the mine shuttle landing pad to move it to the wilderness. - New addition of warning sign, thanks to Schnayy. - Bugfixes for Heist shuttle not going back to raider post, light overlays on shuttle areas, and certain shuttles not leaving behind floor tiles when they should.
240 lines
6.9 KiB
Plaintext
240 lines
6.9 KiB
Plaintext
/obj/structure/signpost
|
|
icon = 'icons/obj/stationobjs.dmi'
|
|
icon_state = "signpost"
|
|
anchored = 1
|
|
density = 1
|
|
|
|
attackby(obj/item/weapon/W as obj, mob/user as mob)
|
|
return attack_hand(user)
|
|
|
|
attack_hand(mob/user as mob)
|
|
switch(alert("Travel back to ss13?",,"Yes","No"))
|
|
if("Yes")
|
|
if(user.z != src.z) return
|
|
user.forceMove(pick(latejoin))
|
|
if("No")
|
|
return
|
|
|
|
/obj/effect/mark
|
|
var/mark = ""
|
|
icon = 'icons/misc/mark.dmi'
|
|
icon_state = "blank"
|
|
anchored = 1
|
|
layer = 99
|
|
mouse_opacity = 0
|
|
unacidable = 1//Just to be sure.
|
|
|
|
/obj/effect/beam
|
|
name = "beam"
|
|
density = 0
|
|
unacidable = 1//Just to be sure.
|
|
var/def_zone
|
|
flags = PROXMOVE
|
|
pass_flags = PASSTABLE
|
|
|
|
|
|
/obj/effect/begin
|
|
name = "begin"
|
|
icon = 'icons/obj/stationobjs.dmi'
|
|
icon_state = "begin"
|
|
anchored = 1.0
|
|
unacidable = 1
|
|
|
|
/*
|
|
* This item is completely unused, but removing it will break something in R&D and Radio code causing PDA and Ninja code to fail on compile
|
|
*/
|
|
|
|
/var/list/acting_rank_prefixes = list("acting", "temporary", "interim", "provisional")
|
|
|
|
/proc/make_list_rank(rank)
|
|
for(var/prefix in acting_rank_prefixes)
|
|
if(findtext(rank, "[prefix] ", 1, 2+length(prefix)))
|
|
return copytext(rank, 2+length(prefix))
|
|
return rank
|
|
|
|
|
|
/*
|
|
We can't just insert in HTML into the nanoUI so we need the raw data to play with.
|
|
Instead of creating this list over and over when someone leaves their PDA open to the page
|
|
we'll only update it when it changes. The PDA_Manifest global list is zeroed out upon any change
|
|
using /datum/datacore/proc/manifest_inject( ), or manifest_insert( )
|
|
*/
|
|
|
|
var/global/list/PDA_Manifest = list()
|
|
|
|
/datum/datacore/proc/get_manifest_list()
|
|
if(PDA_Manifest.len)
|
|
return
|
|
var/list/heads = list()
|
|
var/list/sec = list()
|
|
var/list/eng = list()
|
|
var/list/med = list()
|
|
var/list/sci = list()
|
|
var/list/car = list()
|
|
var/list/pla = list() // Planetside crew: Explorers, Pilots, S&S
|
|
var/list/civ = list()
|
|
var/list/bot = list()
|
|
var/list/misc = list()
|
|
for(var/datum/data/record/t in data_core.general)
|
|
var/name = sanitize(t.fields["name"])
|
|
var/rank = sanitize(t.fields["rank"])
|
|
var/real_rank = make_list_rank(t.fields["real_rank"])
|
|
|
|
var/isactive = t.fields["p_stat"]
|
|
var/department = 0
|
|
var/depthead = 0 // Department Heads will be placed at the top of their lists.
|
|
if(real_rank in command_positions)
|
|
heads[++heads.len] = list("name" = name, "rank" = rank, "active" = isactive)
|
|
department = 1
|
|
depthead = 1
|
|
if(rank=="Colony Director" && heads.len != 1)
|
|
heads.Swap(1,heads.len)
|
|
|
|
if(real_rank in security_positions)
|
|
sec[++sec.len] = list("name" = name, "rank" = rank, "active" = isactive)
|
|
department = 1
|
|
if(depthead && sec.len != 1)
|
|
sec.Swap(1,sec.len)
|
|
|
|
if(real_rank in engineering_positions)
|
|
eng[++eng.len] = list("name" = name, "rank" = rank, "active" = isactive)
|
|
department = 1
|
|
if(depthead && eng.len != 1)
|
|
eng.Swap(1,eng.len)
|
|
|
|
if(real_rank in medical_positions)
|
|
med[++med.len] = list("name" = name, "rank" = rank, "active" = isactive)
|
|
department = 1
|
|
if(depthead && med.len != 1)
|
|
med.Swap(1,med.len)
|
|
|
|
if(real_rank in science_positions)
|
|
sci[++sci.len] = list("name" = name, "rank" = rank, "active" = isactive)
|
|
department = 1
|
|
if(depthead && sci.len != 1)
|
|
sci.Swap(1,sci.len)
|
|
|
|
if(real_rank in planet_positions)
|
|
pla[++pla.len] = list("name" = name, "rank" = rank, "active" = isactive)
|
|
department = 1
|
|
|
|
if(real_rank in cargo_positions)
|
|
car[++car.len] = list("name" = name, "rank" = rank, "active" = isactive)
|
|
department = 1
|
|
if(depthead && car.len != 1)
|
|
car.Swap(1,car.len)
|
|
|
|
if(real_rank in civilian_positions)
|
|
civ[++civ.len] = list("name" = name, "rank" = rank, "active" = isactive)
|
|
department = 1
|
|
if(depthead && civ.len != 1)
|
|
civ.Swap(1,civ.len)
|
|
|
|
if(real_rank in nonhuman_positions)
|
|
bot[++bot.len] = list("name" = name, "rank" = rank, "active" = isactive)
|
|
department = 1
|
|
|
|
if(!department && !(name in heads))
|
|
misc[++misc.len] = list("name" = name, "rank" = rank, "active" = isactive)
|
|
|
|
// Synthetics don't have actual records, so we will pull them from here.
|
|
// Synths don't have records, which is the means by which isactive is retrieved, so I'm hardcoding it to active, don't really have any better means
|
|
for(var/mob/living/silicon/ai/ai in mob_list)
|
|
bot[++bot.len] = list("name" = ai.real_name, "rank" = "Artificial Intelligence", "active" = "Active")
|
|
|
|
for(var/mob/living/silicon/robot/robot in mob_list)
|
|
// No combat/syndicate cyborgs, no drones.
|
|
if(robot.module && robot.module.hide_on_manifest)
|
|
continue
|
|
|
|
bot[++bot.len] = list("name" = robot.real_name, "rank" = "[robot.modtype] [robot.braintype]", "active" = "Active")
|
|
|
|
|
|
PDA_Manifest = list(
|
|
list("cat" = "Command", "elems" = heads),
|
|
list("cat" = "Security", "elems" = sec),
|
|
list("cat" = "Engineering", "elems" = eng),
|
|
list("cat" = "Medical", "elems" = med),
|
|
list("cat" = "Science", "elems" = sci),
|
|
list("cat" = "Cargo", "elems" = car),
|
|
list("cat" = "Planetside", "elems" = pla),
|
|
list("cat" = "Civilian", "elems" = civ),
|
|
list("cat" = "Silicon", "elems" = bot),
|
|
list("cat" = "Miscellaneous", "elems" = misc)
|
|
)
|
|
return
|
|
|
|
|
|
|
|
/obj/effect/laser
|
|
name = "laser"
|
|
desc = "IT BURNS!!!"
|
|
icon = 'icons/obj/projectiles.dmi'
|
|
var/damage = 0.0
|
|
var/range = 10.0
|
|
|
|
|
|
/obj/effect/list_container
|
|
name = "list container"
|
|
|
|
/obj/effect/list_container/mobl
|
|
name = "mobl"
|
|
var/master = null
|
|
|
|
var/list/container = list( )
|
|
|
|
/obj/effect/projection
|
|
name = "Projection"
|
|
desc = "This looks like a projection of something."
|
|
anchored = 1.0
|
|
|
|
|
|
/obj/effect/shut_controller
|
|
name = "shut controller"
|
|
var/moving = null
|
|
var/list/parts = list( )
|
|
|
|
/obj/structure/showcase
|
|
name = "Showcase"
|
|
icon = 'icons/obj/stationobjs.dmi'
|
|
icon_state = "showcase_1"
|
|
desc = "A stand with the empty body of a cyborg bolted to it."
|
|
density = 1
|
|
anchored = 1
|
|
unacidable = 1//temporary until I decide whether the borg can be removed. -veyveyr
|
|
|
|
/obj/structure/showcase/sign
|
|
name = "WARNING: WILDERNESS"
|
|
icon = 'icons/obj/stationobjs.dmi'
|
|
icon_state = "wilderness1"
|
|
desc = "This appears to be a sign warning people that the other side is dangerous. It also says that NanoTrasen cannot guarantee your safety beyond this point."
|
|
|
|
/obj/item/mouse_drag_pointer = MOUSE_ACTIVE_POINTER
|
|
|
|
/obj/item/weapon/beach_ball
|
|
icon = 'icons/misc/beach.dmi'
|
|
icon_state = "beachball"
|
|
name = "beach ball"
|
|
density = 0
|
|
anchored = 0
|
|
w_class = ITEMSIZE_LARGE
|
|
force = 0.0
|
|
throwforce = 0.0
|
|
throw_speed = 1
|
|
throw_range = 20
|
|
flags = CONDUCT
|
|
|
|
afterattack(atom/target as mob|obj|turf|area, mob/user as mob)
|
|
user.drop_item()
|
|
src.throw_at(target, throw_range, throw_speed, user)
|
|
|
|
/obj/effect/stop
|
|
var/victim = null
|
|
icon_state = "empty"
|
|
name = "Geas"
|
|
desc = "You can't resist."
|
|
// name = ""
|
|
|
|
/obj/effect/spawner
|
|
name = "object spawner"
|