Merge remote-tracking branch 'refs/remotes/PolarisSS13/master' into aces-gun-stuff

This commit is contained in:
Spades
2017-05-26 17:07:17 -04:00
56 changed files with 447 additions and 128 deletions
+8
View File
@@ -0,0 +1,8 @@
// Z-level flags bitfield - Set these flags to determine the z level's purpose
#define MAP_LEVEL_STATION 0x001 // Z-levels the station exists on
#define MAP_LEVEL_ADMIN 0x002 // Z-levels for admin functionality (Centcom, shuttle transit, etc)
#define MAP_LEVEL_CONTACT 0x004 // Z-levels that can be contacted from the station, for eg announcements
#define MAP_LEVEL_PLAYER 0x008 // Z-levels a character can typically reach
#define MAP_LEVEL_SEALED 0x010 // Z-levels that don't allow random transit at edge
#define MAP_LEVEL_EMPTY 0x020 // Empty Z-levels that may be used for various things (currently used by bluespace jump)
#define MAP_LEVEL_CONSOLES 0x040 // Z-levels available to various consoles, such as the crew monitor (when that gets coded in). Defaults to station_levels if unset.
+5 -4
View File
@@ -7,12 +7,12 @@ var/global/datum/repository/crew/crew_repository = new()
cache_data = list()
..()
/datum/repository/crew/proc/health_data(var/turf/T)
/datum/repository/crew/proc/health_data(var/zLevel)
var/list/crewmembers = list()
if(!T)
if(!zLevel)
return crewmembers
var/z_level = "[T.z]"
var/z_level = "[zLevel]"
var/datum/cache_entry/cache_entry = cache_data[z_level]
if(!cache_entry)
cache_entry = new/datum/cache_entry
@@ -24,7 +24,7 @@ var/global/datum/repository/crew/crew_repository = new()
var/tracked = scan()
for(var/obj/item/clothing/under/C in tracked)
var/turf/pos = get_turf(C)
if((C) && (C.has_sensor) && (pos) && (T && pos.z == T.z) && (C.sensor_mode != SUIT_SENSOR_OFF))
if((C) && (C.has_sensor) && (pos) && (pos.z == zLevel) && (C.sensor_mode != SUIT_SENSOR_OFF))
if(istype(C.loc, /mob/living/carbon/human))
var/mob/living/carbon/human/H = C.loc
if(H.w_uniform != C)
@@ -51,6 +51,7 @@ var/global/datum/repository/crew/crew_repository = new()
crewmemberData["area"] = sanitize(A.name)
crewmemberData["x"] = pos.x
crewmemberData["y"] = pos.y
crewmemberData["z"] = pos.z
crewmembers[++crewmembers.len] = crewmemberData
+2
View File
@@ -9,6 +9,8 @@ var/datum/antagonist/traitor/traitors
/datum/antagonist/traitor/auto
id = MODE_AUTOTRAITOR
allow_latejoin = 1
hard_cap = 4
initial_spawn_target = 4
/datum/antagonist/traitor/New()
..()
+3 -1
View File
@@ -266,9 +266,11 @@ var/list/mob/living/forced_ambiance_list = new
if(istype(mob,/mob/living/carbon/human/))
var/mob/living/carbon/human/H = mob
if(H.buckled)
return // Being buckled to something solid keeps you in place.
if(istype(H.shoes, /obj/item/clothing/shoes/magboots) && (H.shoes.item_flags & NOSLIP))
return
if(H.m_intent == "run")
H.AdjustStunned(6)
H.AdjustWeakened(6)
+2 -2
View File
@@ -35,7 +35,6 @@
return viewflag
/obj/machinery/computer/security/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 1)
if(src.z > 6) return
if(stat & (NOPOWER|BROKEN)) return
if(user.stat) return
@@ -48,6 +47,7 @@
data["cameras"] = camera_repository.cameras_in_network(current_network)
if(current_camera)
switch_to_camera(user, current_camera)
data["map_levels"] = using_map.get_map_levels(src.z)
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
@@ -91,7 +91,7 @@
. = ..()
/obj/machinery/computer/security/attack_hand(var/mob/user as mob)
if (src.z > 6)
if (using_map && !(src.z in using_map.contact_levels))
user << "<span class='danger'>Unable to establish a connection:</span> You're too far away from the station!"
return
if(stat & (NOPOWER|BROKEN)) return
@@ -52,7 +52,7 @@
/obj/machinery/computer/communications/Topic(href, href_list)
if(..())
return 1
if (using_map && !(src.z in using_map.station_levels))
if (using_map && !(src.z in using_map.contact_levels))
usr << "\red <b>Unable to establish a connection</b>: \black You're too far away from the station!"
return
usr.set_machine(src)
@@ -274,7 +274,7 @@
/obj/machinery/computer/communications/attack_hand(var/mob/user as mob)
if(..())
return
if (src.z > 6)
if (using_map && !(src.z in using_map.contact_levels))
user << "\red <b>Unable to establish a connection</b>: \black You're too far away from the station!"
return
+1 -1
View File
@@ -26,7 +26,7 @@
attackby(obj/item/weapon/O as obj, mob/user as mob)
if (user.z > 6)
if (using_map && !(user.z in using_map.contact_levels))
user << "<span class='danger'>Unable to establish a connection:</span> You're too far away from the station!"
return
if(istype(O, /obj/item/weapon/aiModule))
+1 -1
View File
@@ -56,7 +56,7 @@
/obj/machinery/computer/secure_data/attack_hand(mob/user as mob)
if(..())
return
if (src.z > 6)
if (using_map && !(src.z in using_map.contact_levels))
user << "<span class='warning'>Unable to establish a connection:</span> You're too far away from the station!"
return
var/dat
+1 -1
View File
@@ -39,7 +39,7 @@
/obj/machinery/computer/skills/attack_hand(mob/user as mob)
if(..())
return
if (src.z > 6)
if (using_map && !(src.z in using_map.contact_levels))
user << "<span class='danger'>Unable to establish a connection:</span> You're too far away from the station!"
return
var/dat
+11 -5
View File
@@ -19,18 +19,24 @@
/obj/machinery/computer/teleporter/initialize()
..()
var/obj/machinery/teleport/station/station = locate(/obj/machinery/teleport/station, get_step(src, dir))
var/obj/machinery/teleport/station/station
var/obj/machinery/teleport/hub/hub
if(station)
hub = locate(/obj/machinery/teleport/hub, get_step(station, dir))
// Search surrounding turfs for the station, and then search the station's surrounding turfs for the hub.
for(var/direction in cardinal)
station = locate(/obj/machinery/teleport/station, get_step(src, direction))
if(station)
for(direction in cardinal)
hub = locate(/obj/machinery/teleport/hub, get_step(station, direction))
if(hub)
break
break
if(istype(station))
station.com = hub
station.set_dir(dir)
if(istype(hub))
hub.com = src
hub.set_dir(dir)
/obj/machinery/computer/teleporter/attackby(I as obj, mob/living/user as mob)
if(istype(I, /obj/item/weapon/card/data/))
+2
View File
@@ -42,6 +42,7 @@
M.facing_dir = null
M.set_dir(buckle_dir ? buckle_dir : dir)
M.update_canmove()
M.update_floating( M.Check_Dense_Object() )
buckled_mob = M
post_buckle_mob(M)
@@ -53,6 +54,7 @@
buckled_mob.buckled = null
buckled_mob.anchored = initial(buckled_mob.anchored)
buckled_mob.update_canmove()
buckled_mob.update_floating( buckled_mob.Check_Dense_Object() )
buckled_mob = null
post_buckle_mob(.)
+2
View File
@@ -176,6 +176,7 @@ var/list/admin_verbs_debug = list(
/client/proc/debug_controller,
/client/proc/debug_antagonist_template,
/client/proc/cmd_debug_mob_lists,
/client/proc/cmd_debug_using_map,
/client/proc/cmd_admin_delete,
/client/proc/cmd_debug_del_all,
/client/proc/cmd_debug_tog_aliens,
@@ -286,6 +287,7 @@ var/list/admin_verbs_hideable = list(
/client/proc/debug_controller,
/client/proc/startSinglo,
/client/proc/cmd_debug_mob_lists,
/client/proc/cmd_debug_using_map,
/client/proc/cmd_debug_del_all,
/client/proc/cmd_debug_tog_aliens,
/client/proc/air_report,
+9
View File
@@ -943,6 +943,15 @@
if("Clients")
usr << jointext(clients,",")
/client/proc/cmd_debug_using_map()
set category = "Debug"
set name = "Debug Map Datum"
set desc = "Debug the map metadata about the currently compiled in map."
if(!check_rights(R_DEBUG))
return
debug_variables(using_map)
// DNA2 - Admin Hax
/client/proc/cmd_admin_toggle_block(var/mob/M,var/block)
if(!ticker)
+2 -2
View File
@@ -326,12 +326,12 @@
// Military
/datum/lore/organization/mil/sif_guard
name = "Sif Homeguard Forces" // Todo: Get better name from lorepeople.
name = "Sif Defense Force" // Todo: Get better name from lorepeople.
short_name = "SifGuard"
desc = ""
history = ""
work = "Sif Governmental Authority's military"
headquarters = "Sif" // Make this more specific later.
headquarters = "New Reykjavik, Sif"
motto = ""
autogenerate_destination_names = FALSE // Kinda weird if SifGuard goes to Nyx.
@@ -383,4 +383,12 @@
/datum/gear/suit/miscellaneous/med_dep_jacket
display_name = "department jacket, medical"
path = /obj/item/clothing/suit/storage/toggle/med_dep_jacket
path = /obj/item/clothing/suit/storage/toggle/med_dep_jacket
/datum/gear/suit/miscellaneous/peacoat
display_name = "peacoat"
path = /obj/item/clothing/suit/storage/toggle/peacoat
/datum/gear/suit/miscellaneous/peacoat/New()
..()
gear_tweaks = list(gear_tweak_free_color_choice)
@@ -446,4 +446,16 @@
/datum/gear/uniform/yogapants/New()
..()
gear_tweaks = list(gear_tweak_free_color_choice)
gear_tweaks = list(gear_tweak_free_color_choice)
/datum/gear/uniform/black_corset
display_name = "black corset"
path = /obj/item/clothing/under/dress/black_corset
/datum/gear/uniform/flower_dress
display_name = "flower dress"
path = /obj/item/clothing/under/dress/flower_dress
/datum/gear/uniform/red_swept_dress
display_name = "red swept dress"
path = /obj/item/clothing/under/dress/red_swept_dress
+9 -14
View File
@@ -12,7 +12,7 @@
/obj/item/clothing/head/soft/sol/expedition
name = "\improper SifGuard cap"
desc = "It's a black ballcap bearing a Sif Homeguard Corps crest."
desc = "It's a black ballcap bearing a Sif Defense Force crest."
icon_state = "expeditionsoft"
item_state_slots = list(
slot_l_hand_str = "blacksoft",
@@ -115,12 +115,12 @@
/obj/item/clothing/head/dress/expedition
name = "\improper SifGuard dress cap"
desc = "A peaked grey dress uniform cap belonging to the Sif Homeguard Corps."
desc = "A peaked grey dress uniform cap belonging to the Sif Defense Force."
icon_state = "greydresscap"
/obj/item/clothing/head/dress/expedition/command
name = "\improper SifGuard command dress cap"
desc = "A peaked grey dress uniform cap belonging to the Sif Homeguard Corps. This one is trimmed in gold."
desc = "A peaked grey dress uniform cap belonging to the Sif Defense Force. This one is trimmed in gold."
icon_state = "greydresscap_com"
/obj/item/clothing/head/dress/fleet
@@ -150,11 +150,6 @@
desc = "A beret in Solar Confederate Government colors. For peacekeepers that are more inclined towards style than safety."
icon_state = "beret_lightblue"
/obj/item/clothing/head/beret/sol/homeguard
name = "home guard beret"
desc = "A red beret denoting service in the Sol Home Guard. For personnel that are more inclined towards style than safety."
icon_state = "beret_red"
/obj/item/clothing/head/beret/sol/gateway
name = "gateway administration beret"
desc = "An orange beret denoting service in the Gateway Administration. For personnel that are more inclined towards style than safety."
@@ -182,32 +177,32 @@
/obj/item/clothing/head/beret/sol/expedition
name = "\improper SifGuard beret"
desc = "A black beret belonging to the Sif Homeguard Corps. For personnel that are more inclined towards style than safety."
desc = "A black beret belonging to the Sif Defense Force. For personnel that are more inclined towards style than safety."
icon_state = "beret_black"
/obj/item/clothing/head/beret/sol/expedition/security
name = "\improper SifGuard security beret"
desc = "An Sif Homeguard Corps beret with a security crest. For personnel that are more inclined towards style than safety."
desc = "A Sif Defense Force beret with a security crest. For personnel that are more inclined towards style than safety."
icon_state = "beret_black_security"
/obj/item/clothing/head/beret/sol/expedition/medical
name = "\improper SifGuard medical beret"
desc = "An Sif Homeguard Corps beret with a medical crest. For personnel that are more inclined towards style than safety."
desc = "A Sif Defense Force beret with a medical crest. For personnel that are more inclined towards style than safety."
icon_state = "beret_black_medical"
/obj/item/clothing/head/beret/sol/expedition/engineering
name = "\improper SifGuard engineering beret"
desc = "An Sif Homeguard Corps beret with an engineering crest. For personnel that are more inclined towards style than safety."
desc = "A Sif Defense Force beret with an engineering crest. For personnel that are more inclined towards style than safety."
icon_state = "beret_black_engineering"
/obj/item/clothing/head/beret/sol/expedition/supply
name = "\improper SifGuard supply beret"
desc = "An Sif Homeguard Corps beret with a supply crest. For personnel that are more inclined towards style than safety."
desc = "A Sif Defense Force beret with a supply crest. For personnel that are more inclined towards style than safety."
icon_state = "beret_black_supply"
/obj/item/clothing/head/beret/sol/expedition/command
name = "\improper SifGuard command beret"
desc = "An Sif Homeguard Corps beret with a command crest. For personnel that are more inclined towards style than safety."
desc = "A Sif Defense Force beret with a command crest. For personnel that are more inclined towards style than safety."
icon_state = "beret_black_command"
/obj/item/clothing/head/beret/sol/fleet
@@ -340,6 +340,12 @@ obj/item/clothing/suit/kimono
item_state_slots = list(slot_r_hand_str = "leather_jacket", slot_l_hand_str = "leather_jacket")
flags_inv = HIDEHOLSTER
obj/item/clothing/suit/storage/toggle/peacoat
name = "peacoat"
desc = "A well-tailored, stylish peacoat."
icon_state = "peacoat"
item_state_slots = list(slot_r_hand_str = "peacoat", slot_l_hand_str = "peacoat")
flags_inv = HIDEHOLSTER
/*
* stripper
*/
+14 -14
View File
@@ -14,47 +14,47 @@
/obj/item/clothing/suit/storage/service/expeditionary
name = "\improper SifGuard jacket"
desc = "A uniform service jacket belonging to the Sif Homeguard Corps. It has silver buttons."
desc = "A uniform service jacket belonging to the Sif Defense Force. It has silver buttons."
icon_state = "blackservice_crew"
/obj/item/clothing/suit/storage/service/expeditionary/medical
name = "\improper SifGuard medical jacket"
desc = "A uniform service jacket belonging to the Sif Homeguard Corps. It has silver buttons and blue trim."
desc = "A uniform service jacket belonging to the Sif Defense Force. It has silver buttons and blue trim."
icon_state = "blackservice_med"
/obj/item/clothing/suit/storage/service/expeditionary/medical/command
name = "\improper SifGuard medical command jacket"
desc = "A uniform service jacket belonging to the Sif Homeguard Corps. It has gold buttons and blue trim."
desc = "A uniform service jacket belonging to the Sif Defense Force. It has gold buttons and blue trim."
icon_state = "blackservice_medcom"
/obj/item/clothing/suit/storage/service/expeditionary/engineering
name = "\improper SifGuard engineering jacket"
desc = "A uniform service jacket belonging to the Sif Homeguard Corps. It has silver buttons and orange trim."
desc = "A uniform service jacket belonging to the Sif Defense Force. It has silver buttons and orange trim."
icon_state = "blackservice_eng"
/obj/item/clothing/suit/storage/service/expeditionary/engineering/command
name = "\improper SifGuard engineering command jacket"
desc = "A uniform service jacket belonging to the Sif Homeguard Corps. It has gold buttons and orange trim."
desc = "A uniform service jacket belonging to the Sif Defense Force. It has gold buttons and orange trim."
icon_state = "blackservice_engcom"
/obj/item/clothing/suit/storage/service/expeditionary/supply
name = "\improper SifGuard supply jacket"
desc = "A uniform service jacket belonging to the Sif Homeguard Corps. It has silver buttons and brown trim."
desc = "A uniform service jacket belonging to the Sif Defense Force. It has silver buttons and brown trim."
icon_state = "blackservice_sup"
/obj/item/clothing/suit/storage/service/expeditionary/security
name = "\improper SifGuard security jacket"
desc = "A uniform service jacket belonging to the Sif Homeguard Corps. It has silver buttons and red trim."
desc = "A uniform service jacket belonging to the Sif Defense Force. It has silver buttons and red trim."
icon_state = "blackservice_sec"
/obj/item/clothing/suit/storage/service/expeditionary/security/command
name = "\improper SifGuard security command jacket"
desc = "A uniform service jacket belonging to the Sif Homeguard Corps. It has gold buttons and red trim."
desc = "A uniform service jacket belonging to the Sif Defense Force. It has gold buttons and red trim."
icon_state = "blackservice_seccom"
/obj/item/clothing/suit/storage/service/expeditionary/command
name = "\improper SifGuard command jacket"
desc = "A uniform service jacket belonging to the Sif Homeguard Corps. It has gold buttons and gold trim."
desc = "A uniform service jacket belonging to the Sif Defense Force. It has gold buttons and gold trim."
icon_state = "blackservice_com"
/obj/item/clothing/suit/storage/service/marine
@@ -115,13 +115,13 @@
allowed = list(/obj/item/weapon/tank/emergency/oxygen,/obj/item/device/flashlight,/obj/item/clothing/head/soft,/obj/item/clothing/head/beret,/obj/item/device/radio,/obj/item/weapon/pen)
/obj/item/clothing/suit/dress/expedition
name = "expeditionary dress jacket"
desc = "A silver and grey dress jacket belonging to the SCG Expeditionary Corps. Fashionable, for the 25th century at least."
name = "SifGuard dress jacket"
desc = "A silver and grey dress jacket belonging to the Sif Defense Force. Fashionable, for the 25th century at least."
icon_state = "greydress"
/obj/item/clothing/suit/dress/expedition/command
name = "expeditionary command dress jacket"
desc = "A gold and grey dress jacket belonging to the SCG Expeditionary Corps. The height of fashion."
name = "SifGuard command dress jacket"
desc = "A gold and grey dress jacket belonging to the Sif Defense Force. The height of fashion."
icon_state = "greydress_com"
/obj/item/clothing/suit/storage/toggle/dress
@@ -136,7 +136,7 @@
desc = "A crisp white SCG Fleet dress jacket with blue and gold accents. Don't get near pasta sauce or vox."
/obj/item/clothing/suit/storage/toggle/dress/fleet/command
name = "expeditionary command dress jacket"
name = "fleet command dress jacket"
desc = "A crisp white SCG Fleet dress jacket dripping with gold accents. So bright it's blinding."
icon_state = "whitedress_com"
item_state = "labcoat"
@@ -374,6 +374,21 @@
icon_state = "huresource"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
/obj/item/clothing/under/dress/black_corset
name = "black corset"
desc = "A black corset and skirt for those fancy nights out."
icon_state = "black_corset"
/obj/item/clothing/under/dress/flower_dress
name = "flower dress"
desc = "A beautiful dress with a skirt of flowers."
icon_state = "flower_dress"
/obj/item/clothing/under/dress/red_swept_dress
name = "red swept dress"
desc = "A red dress that sweeps to the side."
icon_state = "red_swept_dress"
/*
* wedding stuff
*/
+12 -12
View File
@@ -12,7 +12,7 @@
/obj/item/clothing/under/pt/expeditionary
name = "\improper SifGuard pt uniform"
desc = "A baggy shirt bearing the seal of the Sif Homeguard Corps and some dorky looking blue shorts."
desc = "A baggy shirt bearing the seal of the Sif Defense Force and some dorky looking blue shorts."
icon_state = "expeditionpt"
worn_state = "expeditionpt"
@@ -41,56 +41,56 @@
/obj/item/clothing/under/utility/expeditionary
name = "\improper SifGuard uniform"
desc = "The utility uniform of the Sif Homeguard Corps, made from biohazard resistant material. This one has silver trim."
desc = "The utility uniform of the Sif Defense Force, made from biohazard resistant material. This one has silver trim."
icon_state = "blackutility_crew"
worn_state = "blackutility_crew"
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 10)
/obj/item/clothing/under/utility/expeditionary/medical
name = "\improper SifGuard medical uniform"
desc = "The utility uniform of the Sif Homeguard Corps, made from biohazard resistant material. This one has silver trim and blue blazes."
desc = "The utility uniform of the Sif Defense Force, made from biohazard resistant material. This one has silver trim and blue blazes."
icon_state = "blackutility_med"
worn_state = "blackutility_med"
/obj/item/clothing/under/utility/expeditionary/medical/command
name = "\improper SifGuard medical command uniform"
desc = "The utility uniform of the Sif Homeguard Corps, made from biohazard resistant material. This one has gold trim and blue blazes."
desc = "The utility uniform of the Sif Defense Force, made from biohazard resistant material. This one has gold trim and blue blazes."
icon_state = "blackutility_medcom"
worn_state = "blackutility_medcom"
/obj/item/clothing/under/utility/expeditionary/engineering
name = "\improper SifGuard engineering uniform"
desc = "The utility uniform of the Sif Homeguard Corps, made from biohazard resistant material. This one has silver trim and organge blazes."
desc = "The utility uniform of the Sif Defense Force, made from biohazard resistant material. This one has silver trim and organge blazes."
icon_state = "blackutility_eng"
worn_state = "blackutility_eng"
/obj/item/clothing/under/utility/expeditionary/engineering/command
name = "\improper SifGuard engineering command uniform"
desc = "The utility uniform of the Sif Homeguard Corps, made from biohazard resistant material. This one has gold trim and organge blazes."
desc = "The utility uniform of the Sif Defense Force, made from biohazard resistant material. This one has gold trim and organge blazes."
icon_state = "blackutility_engcom"
worn_state = "blackutility_engcom"
/obj/item/clothing/under/utility/expeditionary/supply
name = "\improper SifGuard supply uniform"
desc = "The utility uniform of the Sif Homeguard Corps, made from biohazard resistant material. This one has silver trim and brown blazes."
desc = "The utility uniform of the Sif Defense Force, made from biohazard resistant material. This one has silver trim and brown blazes."
icon_state = "blackutility_sup"
worn_state = "blackutility_sup"
/obj/item/clothing/under/utility/expeditionary/security
name = "\improper SifGuard security uniform"
desc = "The utility uniform of the Sif Homeguard Corps, made from biohazard resistant material. This one has silver trim and red blazes."
desc = "The utility uniform of the Sif Defense Force, made from biohazard resistant material. This one has silver trim and red blazes."
icon_state = "blackutility_sec"
worn_state = "blackutility_sec"
/obj/item/clothing/under/utility/expeditionary/security/command
name = "\improper SifGuard security command uniform"
desc = "The utility uniform of the Sif Homeguard Corps, made from biohazard resistant material. This one has gold trim and red blazes."
desc = "The utility uniform of the Sif Defense Force, made from biohazard resistant material. This one has gold trim and red blazes."
icon_state = "blackutility_seccom"
worn_state = "blackutility_seccom"
/obj/item/clothing/under/utility/expeditionary/command
name = "\improper SifGuard command uniform"
desc = "The utility uniform of the Sif Homeguard Corps, made from biohazard resistant material. This one has gold trim and gold blazes."
desc = "The utility uniform of the Sif Defense Force, made from biohazard resistant material. This one has gold trim and gold blazes."
icon_state = "blackutility_com"
worn_state = "blackutility_com"
@@ -222,13 +222,13 @@
/obj/item/clothing/under/mildress/expeditionary
name = "\improper SifGuard dress uniform"
desc = "The dress uniform of the Sif Homeguard Corps in silver trim."
desc = "The dress uniform of the Sif Defense Force in silver trim."
icon_state = "greydress"
worn_state = "greydress"
/obj/item/clothing/under/mildress/expeditionary/command
name = "\improper SifGuard command dress uniform"
desc = "The dress uniform of the Sif Homeguard Corps in gold trim."
desc = "The dress uniform of the Sif Defense Force in gold trim."
icon_state = "greydress_com"
worn_state = "greydress_com"
@@ -274,6 +274,9 @@ var/global/list/damage_icon_parts = list()
if(part.robotic >= ORGAN_ROBOT)
icon_key += "2[part.model ? "-[part.model]": ""]"
robolimb_count++
if(part.organ_tag == BP_HEAD || part.organ_tag == BP_TORSO || part.organ_tag == BP_GROIN)
robobody_count ++
else if(part.status & ORGAN_DEAD)
icon_key += "3"
else
+13 -1
View File
@@ -32,15 +32,27 @@
/datum/nano_module/atmos_control/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/master_ui = null, var/datum/topic_state/state = default_state)
var/data[0]
var/alarms[0]
var/turf/T = get_turf(nano_host())
// TODO: Move these to a cache, similar to cameras
for(var/obj/machinery/alarm/alarm in (monitored_alarms.len ? monitored_alarms : machines))
alarms[++alarms.len] = list("name" = sanitize(alarm.name), "ref"= "\ref[alarm]", "danger" = max(alarm.danger_level, alarm.alarm_area.atmosalm))
alarms[++alarms.len] = list(
"name" = sanitize(alarm.name),
"ref"= "\ref[alarm]",
"danger" = max(alarm.danger_level, alarm.alarm_area.atmosalm),
"x" = alarm.x,
"y" = alarm.y,
"z" = alarm.z)
data["alarms"] = alarms
data["map_levels"] = using_map.get_map_levels(T.z)
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
if(!ui)
ui = new(user, src, ui_key, "atmos_control.tmpl", src.name, 625, 625, state = state)
// adding a template with the key "mapContent" enables the map ui functionality
ui.add_template("mapContent", "atmos_control_map_content.tmpl")
// adding a template with the key "mapHeader" replaces the map header content
ui.add_template("mapHeader", "atmos_control_map_header.tmpl")
ui.set_initial_data(data)
ui.open()
ui.set_auto_update(1)
+6 -1
View File
@@ -20,7 +20,10 @@
var/turf/T = get_turf(nano_host())
data["isAI"] = isAI(user)
data["crewmembers"] = crew_repository.health_data(T)
data["map_levels"] = using_map.get_map_levels(T.z, FALSE)
data["crewmembers"] = list()
for(var/z in (data["map_levels"] | T.z)) // Always show crew from the current Z even if we can't show a map
data["crewmembers"] += crew_repository.health_data(z)
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
if(!ui)
@@ -30,6 +33,8 @@
ui.add_template("mapContent", "crew_monitor_map_content.tmpl")
// adding a template with the key "mapHeader" replaces the map header content
ui.add_template("mapHeader", "crew_monitor_map_header.tmpl")
if(!(ui.map_z_level in data["map_levels"]))
ui.set_map_z_level(data["map_levels"][1])
ui.set_initial_data(data)
ui.open()
@@ -12,6 +12,7 @@
var/list/sensors = list()
// Focus: If it remains null if no sensor is selected and UI will display sensor list, otherwise it will display sensor reading.
var/obj/machinery/power/sensor/focus = null
var/turf/T = get_turf(nano_host())
// Build list of data from sensor readings.
for(var/obj/machinery/power/sensor/S in grid_sensors)
@@ -25,10 +26,15 @@
data["all_sensors"] = sensors
if(focus)
data["focus"] = focus.return_reading_data()
data["map_levels"] = using_map.get_map_levels(T.z)
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "power_monitor.tmpl", "Power Monitoring Console", 800, 500, state = state)
// adding a template with the key "mapContent" enables the map ui functionality
ui.add_template("mapContent", "power_monitor_map_content.tmpl")
// adding a template with the key "mapHeader" replaces the map header content
ui.add_template("mapHeader", "power_monitor_map_header.tmpl")
ui.set_initial_data(data)
ui.open()
ui.set_auto_update(1)
@@ -163,6 +163,10 @@
// Cell Status
APC_entry["cell_charge"] = A.cell ? round(A.cell.percent()) : "NO CELL"
APC_entry["cell_status"] = A.cell ? chg[A.charging+1] : "N"
// Location
APC_entry["x"] = A.x
APC_entry["y"] = A.y
APC_entry["z"] = A.z
// Other info
APC_entry["total_load"] = reading_to_text(A.lastused_total)
// Hopefully removes those goddamn \improper s which are screwing up the UI
@@ -2,29 +2,29 @@
/obj/item/weapon/gun/projectile/shotgun/pump/rifle
name = "bolt action rifle"
desc = "A reproduction of an almost ancient weapon design from the early 20th century. It's still popular among hunters and collectors due to its reliability. Uses 5.56mm rounds."
desc = "A reproduction of an almost ancient weapon design from the early 20th century. It's still popular among hunters and collectors due to its reliability. Uses 7.62mm rounds."
item_state = "boltaction"
icon_state = "boltaction"
fire_sound = 'sound/weapons/rifleshot.ogg'
max_shells = 5
caliber = "a556"
caliber = "a762"
origin_tech = list(TECH_COMBAT = 1)// Old as shit rifle doesn't have very good tech.
ammo_type = /obj/item/ammo_casing/a556
ammo_type = /obj/item/ammo_casing/a762
load_method = SINGLE_CASING|SPEEDLOADER
action_sound = 'sound/weapons/riflebolt.ogg'
/obj/item/weapon/gun/projectile/shotgun/pump/rifle/practice // For target practice
desc = "A bolt-action rifle with a lightweight synthetic wood stock, designed for competitive shooting. Comes shipped with practice rounds pre-loaded into the gun. Popular among professional marksmen. Uses 5.56mm rounds."
ammo_type = /obj/item/ammo_casing/a556p
desc = "A bolt-action rifle with a lightweight synthetic wood stock, designed for competitive shooting. Comes shipped with practice rounds pre-loaded into the gun. Popular among professional marksmen. Uses 7.62mm rounds."
ammo_type = /obj/item/ammo_casing/a762p
/obj/item/weapon/gun/projectile/shotgun/pump/rifle/ceremonial
name = "ceremonial bolt-action rifle"
desc = "A bolt-action rifle with a heavy, high-quality wood stock that has a beautiful finish. Clearly not intended to be used in combat. Uses 5.56mm rounds."
ammo_type = /obj/item/ammo_casing/a556/blank
ammo_type = /obj/item/ammo_casing/a762/blank
/obj/item/weapon/gun/projectile/shotgun/pump/rifle/mosin
name = "\improper Mosin Nagant"
desc = "Despite its age, the Mosin Nagant continues to be a favorite weapon among colonists, conscripts, and militias across the cosmos. Most today are built by Chen-Iltchenko Firearms, but it's hard to say who built this particular gun, considering the design has been ripped off by just about every arms manufacturer in the galaxy. Uses 5.56mm rounds."
desc = "Despite its age, the Mosin Nagant continues to be a favorite weapon among colonists, conscripts, and militias across the cosmos. Most today are built by Chen-Iltchenko Firearms, but it's hard to say who built this particular gun, considering the design has been ripped off by just about every arms manufacturer in the galaxy. Uses 7.62mm rounds."
icon_state = "mosin"
item_state = "mosin"
@@ -0,0 +1,4 @@
author: Leshana
delete-after: True
changes:
- tweak: "During the gravity failure event, you can now buckle yourself to a chair to prevent falling when gravity returns."
+4
View File
@@ -0,0 +1,4 @@
author: Leshana
delete-after: True
changes:
- rscadd: "Added an admin verb to debug the map datum."
@@ -0,0 +1,32 @@
################################
# Example Changelog File
#
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
#
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
# When it is, any changes listed below will disappear.
#
# Valid Prefixes:
# bugfix
# wip (For works in progress)
# tweak
# soundadd
# sounddel
# rscadd (general adding of nice things)
# rscdel (general deleting of nice things)
# imageadd
# imagedel
# maptweak
# spellcheck (typo fixes)
# experiment
#################################
author: Leshana
delete-after: True
changes:
- rscadd: "Added nanomap capability to the Power Monitoring Computer"
- rscadd: "Added nanomap capability to the Atmos Control Computer"
- tweak: "Expanded nanomap on Camera Console to all station z-levels by default."
- tweak: "Crew Monitoring nanomap will support crew monitors built on other station map z levels."
- imageadd: "Updated z1 nanomap for Northern Star"
- imageadd: "Generated z5 nanomap for Northern Star"
Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 424 KiB

After

Width:  |  Height:  |  Size: 457 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 350 KiB

After

Width:  |  Height:  |  Size: 353 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 146 KiB

After

Width:  |  Height:  |  Size: 161 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 100 KiB

After

Width:  |  Height:  |  Size: 101 KiB

+15 -21
View File
@@ -9,26 +9,7 @@
lobby_icon = 'icons/misc/title.dmi'
lobby_screens = list("mockingjay00")
station_levels = list(
Z_LEVEL_FIRST_EXAMPLE,
Z_LEVEL_SECOND_EXAMPLE
)
admin_levels = list()
contact_levels = list(
Z_LEVEL_FIRST_EXAMPLE,
Z_LEVEL_SECOND_EXAMPLE
)
player_levels = list(
Z_LEVEL_FIRST_EXAMPLE,
Z_LEVEL_SECOND_EXAMPLE
)
sealed_levels = list()
empty_levels = list()
accessible_z_levels = list("1" = 50, "2" = 50) // The defines can't be used here sadly.
base_turf_by_z = list("2" = /turf/simulated/open)
zlevel_datum_type = /datum/map_z_level/example
station_name = "The Funhouse"
station_short = "Funhouse"
@@ -46,4 +27,17 @@
emergency_shuttle_docked_message = "The Emergency Shuttle has docked with the station at docks one and two. You have approximately %ETD% to board the Emergency Shuttle."
emergency_shuttle_leaving_dock = "The Emergency Shuttle has left the station. Estimate %ETA% until the shuttle docks at %dock_name%."
emergency_shuttle_called_message = "An emergency evacuation shuttle has been called. It will arrive at docks one and two in approximately %ETA%"
emergency_shuttle_recall_message = "The emergency shuttle has been recalled."
emergency_shuttle_recall_message = "The emergency shuttle has been recalled."
/datum/map_z_level/example/first
z = Z_LEVEL_FIRST_EXAMPLE
name = "First Floor"
flags = MAP_LEVEL_STATION|MAP_LEVEL_CONTACT|MAP_LEVEL_PLAYER
transit_chance = 50
/datum/map_z_level/example/second
z = Z_LEVEL_SECOND_EXAMPLE
name = "Second Floor"
flags = MAP_LEVEL_STATION|MAP_LEVEL_CONTACT|MAP_LEVEL_PLAYER
transit_chance = 50
base_turf = /turf/simulated/open
+40 -29
View File
@@ -14,34 +14,7 @@
lobby_icon = 'icons/misc/title.dmi'
lobby_screens = list("mockingjay00")
station_levels = list(
Z_LEVEL_MAIN_NORTHERN_STAR,
Z_LEVEL_MINING_NORTHERN_STAR
)
admin_levels = list(Z_LEVEL_CENTCOM_NORTHERN_STAR)
contact_levels = list(
Z_LEVEL_MAIN_NORTHERN_STAR,
Z_LEVEL_CENTCOM_NORTHERN_STAR,
Z_LEVEL_MINING_NORTHERN_STAR
)
player_levels = list(
Z_LEVEL_MAIN_NORTHERN_STAR,
Z_LEVEL_TELECOMMS_NORTHERN_STAR,
Z_LEVEL_ABANDONED_ASTEROID_NORTHERN_STAR,
Z_LEVEL_MINING_NORTHERN_STAR,
Z_LEVEL_EMPTY_NORTHERN_STAR
)
sealed_levels = list()
empty_levels = list()
accessible_z_levels = list("1" = 5, "3" = 10, "4" = 15, "5" = 10, "6" = 60) // The defines can't be used here sadly.
base_turf_by_z = list(
"1" = /turf/simulated/mineral/floor,
"4" = /turf/simulated/mineral/floor,
"5" = /turf/simulated/mineral/floor
)
zlevel_datum_type = /datum/map_z_level/northern_star
station_name = "NCS Northern Star"
station_short = "Northern Star"
@@ -92,4 +65,42 @@
new /datum/random_map/automata/cave_system(null, 1, 1, Z_LEVEL_MINING_NORTHERN_STAR, world.maxx, world.maxy) // Create the mining Z-level.
new /datum/random_map/noise/ore(null, 1, 1, Z_LEVEL_MINING_NORTHERN_STAR, 64, 64) // Create the mining ore distribution map.
return 1
return 1
/datum/map_z_level/northern_star/main
z = Z_LEVEL_MAIN_NORTHERN_STAR
name = "Main"
flags = MAP_LEVEL_STATION|MAP_LEVEL_CONTACT|MAP_LEVEL_PLAYER
transit_chance = 5
base_turf = /turf/simulated/mineral/floor
/datum/map_z_level/northern_star/centcomm
z = Z_LEVEL_CENTCOM_NORTHERN_STAR
name = "Centcomm"
flags = MAP_LEVEL_ADMIN|MAP_LEVEL_CONTACT
/datum/map_z_level/northern_star/telecomms
z = Z_LEVEL_TELECOMMS_NORTHERN_STAR
name = "Telecomms"
flags = MAP_LEVEL_PLAYER
transit_chance = 10
/datum/map_z_level/northern_star/abandoned_asteroid
z = Z_LEVEL_ABANDONED_ASTEROID_NORTHERN_STAR
name = "Abandoned Asteroid"
flags = MAP_LEVEL_PLAYER
transit_chance = 15
base_turf = /turf/simulated/mineral/floor
/datum/map_z_level/northern_star/mining
z = Z_LEVEL_MINING_NORTHERN_STAR
name = "Mining"
flags = MAP_LEVEL_STATION|MAP_LEVEL_CONTACT|MAP_LEVEL_PLAYER
transit_chance = 10
base_turf = /turf/simulated/mineral/floor
/datum/map_z_level/northern_star/empty
z = Z_LEVEL_EMPTY_NORTHERN_STAR
name = "Empty"
flags = MAP_LEVEL_PLAYER
transit_chance = 60
+52 -1
View File
@@ -22,6 +22,9 @@ var/list/all_maps = list()
var/full_name = "Unnamed Map"
var/path
var/list/zlevels = list()
var/zlevel_datum_type // If populated, all subtypes of this type will be instantiated and used to populate the *_levels lists.
var/list/station_levels = list() // Z-levels the station exists on
var/list/admin_levels = list() // Z-levels for admin functionality (Centcom, shuttle transit, etc)
var/list/contact_levels = list() // Z-levels that can be contacted from the station, for eg announcements
@@ -73,6 +76,9 @@ var/list/all_maps = list()
/datum/map/New()
..()
if(zlevel_datum_type)
for(var/type in subtypesof(zlevel_datum_type))
new type(src)
if(!map_levels)
map_levels = station_levels.Copy()
if(!allowed_jobs || !allowed_jobs.len)
@@ -111,4 +117,49 @@ var/list/all_maps = list()
if(empty_levels == null)
world.maxz++
empty_levels = list(world.maxz)
return pick(empty_levels)
return pick(empty_levels)
// Get the list of zlevels that a computer on srcz can see maps of (for power/crew monitor, cameras, etc)
// The long_range parameter expands the coverage. Default is to return map_levels for long range otherwise just srcz.
// zLevels outside station_levels will return an empty list.
/datum/map/proc/get_map_levels(var/srcz, var/long_range = TRUE)
if (long_range && (srcz in map_levels))
return map_levels
else if (srcz in station_levels)
return list(srcz)
else
return list()
// Another way to setup the map datum that can be convenient. Just declare all your zlevels as subtypes of a common
// subtype of /datum/map_z_level and set zlevel_datum_type on /datum/map to have the lists auto-initialized.
// Structure to hold zlevel info together in one nice convenient package.
/datum/map_z_level
var/z = 0 // Actual z-index of the zlevel. This had better be right!
var/name // Friendly name of the zlevel
var/flags = 0 // Bitflag of which *_levels lists this z should be put into.
var/turf/base_turf // Type path of the base turf for this z
var/transit_chance = 0 // Percentile chance this z will be chosen for map-edge space transit.
// Default constructor applies itself to the parent map datum
/datum/map_z_level/New(var/datum/map/map)
if(!z) return
map.zlevels["[z]"] = src
if(flags & MAP_LEVEL_STATION) map.station_levels += z
if(flags & MAP_LEVEL_ADMIN) map.admin_levels += z
if(flags & MAP_LEVEL_CONTACT) map.contact_levels += z
if(flags & MAP_LEVEL_PLAYER) map.player_levels += z
if(flags & MAP_LEVEL_SEALED) map.sealed_levels += z
if(flags & MAP_LEVEL_EMPTY)
if(!map.empty_levels) map.empty_levels = list()
map.empty_levels += z
if(flags & MAP_LEVEL_CONSOLES)
if (!map.map_levels) map.map_levels = list()
map.map_levels += z
if(base_turf)
map.base_turf_by_z["[z]"] = base_turf
if(transit_chance)
map.accessible_z_levels["[z]"] = transit_chance
/datum/map_z_level/Destroy()
return TRUE // No.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 775 KiB

After

Width:  |  Height:  |  Size: 684 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 286 KiB

+5
View File
@@ -1,3 +1,8 @@
{{if data.map_levels.length}}
<div class="notice" style="height: 22px">
{{:helper.link('Show Air Alrms On Map', 'pin-s', {'showMap' : 1})}}
</div>
{{/if}}
<div class='item'>
{{for data.alarms}}
{{:helper.link(value.name, null, {'alarm' : value.ref}, null, value.danger == 2 ? 'redButton' : (value.danger == 1 ? 'yellowButton' : null))}}
@@ -0,0 +1,13 @@
<!--
Title: Atmos Control Console (Map Content)
Used In File(s): \code\modules\nano\modules\atmos_control.dm
-->
{{for data.alarms}}
{{if value.z == config.mapZLevel}}
<div class="mapIcon mapIcon16 linkActive {{:value.danger == 2 ? 'dead' : (value.danger == 1 ? 'deadish' : null)}}" style="left: {{:(value.x + 0.2)}}px; bottom: {{:(value.y - 14.75)}}px;" unselectable="on" data-href="{{: NanoUtility.generateHref({'alarm' : value.ref}) }}">
<div class="tooltip hidden">
<span>{{:value.name}}</span>
</div>
</div>
{{/if}}
{{/for}}
@@ -0,0 +1,20 @@
<!--
Title: Atmos Control Console (Map Header)
Used In File(s): \code\modules\nano\modules\atmos_control.dm
-->
{{:helper.link('Show List', 'script', {'showMap' : 0})}}
{{if data.map_levels.length > 1}}
<div style="float: right;">
<span style="float: left;">Z Level:&nbsp;</span>
{{for data.map_levels }}
{{:helper.link(value, null, {'mapZLevel' : value}, null, config.mapZLevel == value ? 'selected' : null)}}
{{/for}}
</div>
{{/if}}
<div style="float: right; width: 240px;">
<span style="float: left;">Zoom Level:&nbsp;</span>
<div unselectable="on" class="link zoomLink" data-zoom-level="4">x1.0</div>
<div unselectable="on" class="link zoomLink" data-zoom-level="6">x1.5</div>
<div unselectable="on" class="link zoomLink" data-zoom-level="8">x2.0</div>
<div unselectable="on" class="link zoomLink" data-zoom-level="12">x2.5</div>
</div>
+3 -1
View File
@@ -16,7 +16,9 @@ Used In File(s): \code\game\machinery\computer\crew.dm
}
</style>
{{:helper.link('Show Tracker Map', 'pin-s', {'showMap' : 1})}}
{{if data.map_levels.length}}
{{:helper.link('Show Tracker Map', 'pin-s', {'showMap' : 1})}}
{{/if}}
<table class='wideTable'><tbody>
{{for data.crewmembers}}
{{if value.sensor_type == 1}}
+1 -4
View File
@@ -3,7 +3,7 @@ Title: Crew Monitoring Console (Map content)
Used In File(s): \code\game\machinery\computer\crew.dm
-->
{{for data.crewmembers}}
{{if value.sensor_type == 3}}
{{if value.sensor_type == 3 && value.z == config.mapZLevel}}
<div class="mapIcon mapIcon16 rank-{{:value.rank.ckey()}} {{:value.dead ? 'dead' : 'alive'}}" style="left: {{:(value.x + 0.2)}}px; bottom: {{:(value.y - 14.75)}}px;" unselectable="on">
<div class="tooltip hidden">
{{:value.name}} ({{:value.assignment}}) ({{:value.dead ? "<span class='bad'>Deceased</span>" : "<span class='good'>Living</span>"}}) (<span class="oxyloss">{{:value.oxy}}</span>/<span class="toxin">{{:value.tox}}</span>/<span class="burn">{{:value.fire}}</span>/<span class="brute">{{:value.brute}}</span>) ({{:value.area}}: {{:value.x}}, {{:value.y}})
@@ -11,6 +11,3 @@ Used In File(s): \code\game\machinery\computer\crew.dm
</div>
{{/if}}
{{/for}}
<div class="mapIcon mapIcon16 rank-captain alive" style="left: 10px; bottom: 10px;" unselectable="on"></div>
<div style="position: absolute; width: 1px; height: 1px; background: #00ff00; left: 10px; bottom: 10px;" unselectable="on"></div>
@@ -3,6 +3,14 @@ Title: Crew Monitoring Console (Map header)
Used In File(s): \code\game\machinery\computer\crew.dm
-->
{{:helper.link('Show Detail List', 'script', {'showMap' : 0})}}
{{if data.map_levels.length > 1}}
<div style="float: right;">
<span style="float: left;">Z Level:&nbsp;</span>
{{for data.map_levels }}
{{:helper.link(value, null, {'mapZLevel' : value}, null, config.mapZLevel == value ? 'selected' : null)}}
{{/for}}
</div>
{{/if}}
<div style="float: right; width: 240px;">
<span style="float: left;">Zoom Level:&nbsp;</span>
<div unselectable="on" class="link zoomLink" data-zoom-level="4">x1.0</div>
+3
View File
@@ -2,6 +2,9 @@
<div class="notice" style="height: 22px">
{{:helper.link('Show List', 'cancel', { 'clear' : 1})}} Sensor selected: {{:data.focus.name}}
</div>
{{if data.map_levels.length}}
{{:helper.link('Show APCs On Map', 'pin-s', {'showMap' : 1})}}
{{/if}}
{{if data.focus.error}}
{{:data.focus.error}}
{{else}}
@@ -0,0 +1,33 @@
<!--
Title: Power Monitoring Console (Map Content)
Used In File(s): \code\modules\nano\modules\power_monitor.dm
-->
{{if data.focus}}
{{for data.focus.apc_data}}
{{if value.z == config.mapZLevel}}
<div class="mapIcon mapIcon16 {{:(value.cell_status == "N" ? 'batt_disc dead' : value.cell_status == "C" ? 'batt_chrg' : 'batt_full')}}" style="left: {{:(value.x + 0.2)}}px; bottom: {{:(value.y - 14.75)}}px;" unselectable="on">
<div class="tooltip hidden">
<span>{{:value.name}}</span><br>
<div>
<span><b>APC Load:</b> {{:value.total_load}}</span>
{{if value.cell_status == "N"}}
{{:helper.link(value.cell_charge + '%', 'batt_disc', null,'disabled', 'width75btn')}}
{{else value.cell_status == "C"}}
{{:helper.link(value.cell_charge + '%', 'batt_chrg', null,'disabled', 'width75btn')}}
{{else}}
{{:helper.link(value.cell_charge + '%', 'batt_full', null,'disabled', 'width75btn')}}
{{/if}}
</div>
<table style="clear: both">
<tr><th>Equip.</th><th>Lighting</th><th>Env.</th></tr>
<tr>
<td>{{:value.s_equipment}}</td>
<td>{{:value.s_lighting}}</td>
<td>{{:value.s_environment}}</td>
</tr>
</table>
</div>
</div>
{{/if}}
{{/for}}
{{/if}}
@@ -0,0 +1,33 @@
<!--
Title: Power Monitoring Console (Map header)
Used In File(s): \code\modules\nano\modules\power_monitor.dm
-->
{{:helper.link('Show Network Information', 'script', {'showMap' : 0})}}
{{if data.focus}}<span>Sensor selected: {{:data.focus.name}}</span>{{/if}}
{{if data.map_levels.length > 1}}
<div style="float: right;">
<span style="float: left;">Z Level:&nbsp;</span>
{{for data.map_levels }}
{{:helper.link(value, null, {'mapZLevel' : value}, null, config.mapZLevel == value ? 'selected' : null)}}
{{/for}}
</div>
{{/if}}
<div style="float: right; width: 240px;">
<span style="float: left;">Zoom Level:&nbsp;</span>
<div unselectable="on" class="link zoomLink" data-zoom-level="4">x1.0</div>
<div unselectable="on" class="link zoomLink" data-zoom-level="6">x1.5</div>
<div unselectable="on" class="link zoomLink" data-zoom-level="8">x2.0</div>
<div unselectable="on" class="link zoomLink" data-zoom-level="12">x2.5</div>
</div>
<div class='item'>
<div class='itemLabel'>Sensors:</div>
</div>
{{for data.all_sensors}}
{{if value.alarm}}
{{:helper.link(value.name, 'alert', { 'setsensor' : value.name})}}
{{else}}
{{:helper.link(value.name, '' , { 'setsensor' : value.name})}}
{{/if}}
{{empty}}
<b>WARN: No Sensors Detected!</b>
{{/for}}
+3 -1
View File
@@ -2,7 +2,9 @@
Title: Security Camera Console (Main content)
Used In File(s): \code\game\machinery\computer\camera.dm
-->
{{:helper.link('Show Map', 'pin-s', {'showMap' : 1})}}
{{if data.map_levels.length}}
{{:helper.link('Show Map', 'pin-s', {'showMap' : 1})}}
{{/if}}
{{:helper.link('Reset', 'refresh', {'reset' : 1})}}
<div style="float:left;">
<div class='item'>
+1 -1
View File
@@ -3,7 +3,7 @@ Title: Security Camera Console (Map content)
Used In File(s): \code\game\machinery\computer\camera.dm
-->
{{for data.cameras}}
{{if value.z == 1}}
{{if value.z == config.mapZLevel}}
<div class="mapIcon mapIcon16" style="left: {{:(value.x)}}px; bottom: {{:(value.y - 14.75)}}px;">
{{if data.current && value.name == data.current.name}}
{{:helper.link("#", '', {'switch_camera' : value.camera}, 'selected')}}
@@ -14,6 +14,14 @@ Used In File(s): \code\game\machinery\computer\camera.dm
{{/if}}
</div>
</div>
{{if data.map_levels.length > 1}}
<div style="float: right;">
<span style="float: left;">Z Level:&nbsp;</span>
{{for data.map_levels }}
{{:helper.link(value, null, {'mapZLevel' : value}, null, config.mapZLevel == value ? 'selected' : null)}}
{{/for}}
</div>
{{/if}}
<div style="float: right; width: 240px;">
<span style="float: left;">Zoom Level:&nbsp;</span>
<div unselectable="on" class="link zoomLink" data-zoom-level="4">x1.0</div>
+1
View File
@@ -29,6 +29,7 @@
#include "code\__defines\items_clothing.dm"
#include "code\__defines\lighting.dm"
#include "code\__defines\machinery.dm"
#include "code\__defines\map.dm"
#include "code\__defines\math_physics.dm"
#include "code\__defines\misc.dm"
#include "code\__defines\mobs.dm"