mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 02:09:41 +00:00
Merge large polaris changes
This commit is contained in:
@@ -38,7 +38,7 @@ var/global/defer_powernet_rebuild = 0 // True if net rebuild will be called
|
||||
#define NETWORK_ENGINEERING "Engineering"
|
||||
#define NETWORK_ENGINEERING_OUTPOST "Engineering Outpost"
|
||||
#define NETWORK_ERT "ZeEmergencyResponseTeam"
|
||||
#define NETWORK_EXODUS station_short
|
||||
#define NETWORK_DEFAULT "Station"
|
||||
#define NETWORK_MEDICAL "Medical"
|
||||
#define NETWORK_MERCENARY "MercurialNet"
|
||||
#define NETWORK_MINE "Mining Outpost"
|
||||
|
||||
@@ -12,17 +12,17 @@
|
||||
/proc/is_on_same_plane_or_station(var/z1, var/z2)
|
||||
if(z1 == z2)
|
||||
return 1
|
||||
if((z1 in config.station_levels) && (z2 in config.station_levels))
|
||||
if((z1 in using_map.station_levels) && (z2 in using_map.station_levels))
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/proc/max_default_z_level()
|
||||
var/max_z = 0
|
||||
for(var/z in config.station_levels)
|
||||
for(var/z in using_map.station_levels)
|
||||
max_z = max(z, max_z)
|
||||
for(var/z in config.admin_levels)
|
||||
for(var/z in using_map.admin_levels)
|
||||
max_z = max(z, max_z)
|
||||
for(var/z in config.player_levels)
|
||||
for(var/z in using_map.player_levels)
|
||||
max_z = max(z, max_z)
|
||||
return max_z
|
||||
|
||||
@@ -62,16 +62,16 @@
|
||||
return heard
|
||||
|
||||
/proc/isStationLevel(var/level)
|
||||
return level in config.station_levels
|
||||
return level in using_map.station_levels
|
||||
|
||||
/proc/isNotStationLevel(var/level)
|
||||
return !isStationLevel(level)
|
||||
|
||||
/proc/isPlayerLevel(var/level)
|
||||
return level in config.player_levels
|
||||
return level in using_map.player_levels
|
||||
|
||||
/proc/isAdminLevel(var/level)
|
||||
return level in config.admin_levels
|
||||
return level in using_map.admin_levels
|
||||
|
||||
/proc/isNotAdminLevel(var/level)
|
||||
return !isAdminLevel(level)
|
||||
|
||||
@@ -15,19 +15,13 @@ var/church_name = null
|
||||
|
||||
return name
|
||||
|
||||
var/command_name = null
|
||||
/proc/command_name()
|
||||
if (command_name)
|
||||
return command_name
|
||||
|
||||
var/name = "[boss_name]"
|
||||
|
||||
command_name = name
|
||||
return name
|
||||
if (using_map.boss_name)
|
||||
return using_map.boss_name
|
||||
|
||||
/proc/change_command_name(var/name)
|
||||
|
||||
command_name = name
|
||||
using_map.boss_name = name
|
||||
|
||||
return name
|
||||
|
||||
@@ -44,19 +38,20 @@ var/religion_name = null
|
||||
return capitalize(name)
|
||||
|
||||
/proc/system_name()
|
||||
return starsys_name
|
||||
return using_map.starsys_name
|
||||
|
||||
/proc/station_name()
|
||||
if (station_name)
|
||||
return station_name
|
||||
if (using_map.station_name)
|
||||
return using_map.station_name
|
||||
|
||||
var/random = rand(1,5)
|
||||
var/name = ""
|
||||
var/new_station_name = null
|
||||
|
||||
//Rare: Pre-Prefix
|
||||
if (prob(10))
|
||||
name = pick("Imperium", "Heretical", "Cuban", "Psychic", "Elegant", "Common", "Uncommon", "Rare", "Unique", "Houseruled", "Religious", "Atheist", "Traditional", "Houseruled", "Mad", "Super", "Ultra", "Secret", "Top Secret", "Deep", "Death", "Zybourne", "Central", "Main", "Government", "Uoi", "Fat", "Automated", "Experimental", "Augmented")
|
||||
station_name = name + " "
|
||||
new_station_name = name + " "
|
||||
|
||||
// Prefix
|
||||
switch(Holiday)
|
||||
@@ -64,49 +59,50 @@ var/religion_name = null
|
||||
if(null,"",0)
|
||||
name = pick("", "Stanford", "Dorf", "Alium", "Prefix", "Clowning", "Aegis", "Ishimura", "Scaredy", "Death-World", "Mime", "Honk", "Rogue", "MacRagge", "Ultrameens", "Safety", "Paranoia", "Explosive", "Neckbear", "Donk", "Muppet", "North", "West", "East", "South", "Slant-ways", "Widdershins", "Rimward", "Expensive", "Procreatory", "Imperial", "Unidentified", "Immoral", "Carp", "Ork", "Pete", "Control", "Nettle", "Aspie", "Class", "Crab", "Fist","Corrogated","Skeleton","Race", "Fatguy", "Gentleman", "Capitalist", "Communist", "Bear", "Beard", "Derp", "Space", "Spess", "Star", "Moon", "System", "Mining", "Neckbeard", "Research", "Supply", "Military", "Orbital", "Battle", "Science", "Asteroid", "Home", "Production", "Transport", "Delivery", "Extraplanetary", "Orbital", "Correctional", "Robot", "Hats", "Pizza")
|
||||
if(name)
|
||||
station_name += name + " "
|
||||
new_station_name += name + " "
|
||||
|
||||
//For special days like christmas, easter, new-years etc ~Carn
|
||||
if("Friday the 13th")
|
||||
name = pick("Mike","Friday","Evil","Myers","Murder","Deathly","Stabby")
|
||||
station_name += name + " "
|
||||
new_station_name += name + " "
|
||||
random = 13
|
||||
else
|
||||
//get the first word of the Holiday and use that
|
||||
var/i = findtext(Holiday," ",1,0)
|
||||
name = copytext(Holiday,1,i)
|
||||
station_name += name + " "
|
||||
new_station_name += name + " "
|
||||
|
||||
// Suffix
|
||||
name = pick("Station", "Fortress", "Frontier", "Suffix", "Death-trap", "Space-hulk", "Lab", "Hazard","Spess Junk", "Fishery", "No-Moon", "Tomb", "Crypt", "Hut", "Monkey", "Bomb", "Trade Post", "Fortress", "Village", "Town", "City", "Edition", "Hive", "Complex", "Base", "Facility", "Depot", "Outpost", "Installation", "Drydock", "Observatory", "Array", "Relay", "Monitor", "Platform", "Construct", "Hangar", "Prison", "Center", "Port", "Waystation", "Factory", "Waypoint", "Stopover", "Hub", "HQ", "Office", "Object", "Fortification", "Colony", "Planet-Cracker", "Roost", "Fat Camp")
|
||||
station_name += name + " "
|
||||
new_station_name += name + " "
|
||||
|
||||
// ID Number
|
||||
switch(random)
|
||||
if(1)
|
||||
station_name += "[rand(1, 99)]"
|
||||
new_station_name += "[rand(1, 99)]"
|
||||
if(2)
|
||||
station_name += pick("Alpha", "Beta", "Gamma", "Delta", "Epsilon", "Zeta", "Eta", "Theta", "Iota", "Kappa", "Lambda", "Mu", "Nu", "Xi", "Omicron", "Pi", "Rho", "Sigma", "Tau", "Upsilon", "Phi", "Chi", "Psi", "Omega")
|
||||
new_station_name += pick("Alpha", "Beta", "Gamma", "Delta", "Epsilon", "Zeta", "Eta", "Theta", "Iota", "Kappa", "Lambda", "Mu", "Nu", "Xi", "Omicron", "Pi", "Rho", "Sigma", "Tau", "Upsilon", "Phi", "Chi", "Psi", "Omega")
|
||||
if(3)
|
||||
station_name += pick("II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X", "XI", "XII", "XIII", "XIV", "XV", "XVI", "XVII", "XVIII", "XIX", "XX")
|
||||
new_station_name += pick("II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X", "XI", "XII", "XIII", "XIV", "XV", "XVI", "XVII", "XVIII", "XIX", "XX")
|
||||
if(4)
|
||||
station_name += pick("Alpha", "Bravo", "Charlie", "Delta", "Echo", "Foxtrot", "Golf", "Hotel", "India", "Juliet", "Kilo", "Lima", "Mike", "November", "Oscar", "Papa", "Quebec", "Romeo", "Sierra", "Tango", "Uniform", "Victor", "Whiskey", "X-ray", "Yankee", "Zulu")
|
||||
new_station_name += pick("Alpha", "Bravo", "Charlie", "Delta", "Echo", "Foxtrot", "Golf", "Hotel", "India", "Juliet", "Kilo", "Lima", "Mike", "November", "Oscar", "Papa", "Quebec", "Romeo", "Sierra", "Tango", "Uniform", "Victor", "Whiskey", "X-ray", "Yankee", "Zulu")
|
||||
if(5)
|
||||
station_name += pick("One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen")
|
||||
new_station_name += pick("One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen")
|
||||
if(13)
|
||||
station_name += pick("13","XIII","Thirteen")
|
||||
new_station_name += pick("13","XIII","Thirteen")
|
||||
|
||||
|
||||
if (config && config.server_name)
|
||||
world.name = "[config.server_name]: [name]"
|
||||
else
|
||||
world.name = station_name
|
||||
world.name = new_station_name
|
||||
|
||||
return station_name
|
||||
return new_station_name
|
||||
|
||||
// Is this even used?
|
||||
/proc/world_name(var/name)
|
||||
|
||||
station_name = name
|
||||
using_map.station_name = name
|
||||
|
||||
if (config && config.server_name)
|
||||
world.name = "[config.server_name]: [name]"
|
||||
|
||||
12
code/controllers/Processes/planet.dm
Normal file
12
code/controllers/Processes/planet.dm
Normal file
@@ -0,0 +1,12 @@
|
||||
/datum/controller/process/planet
|
||||
var/list/planets = list()
|
||||
|
||||
/datum/controller/process/planet/setup()
|
||||
name = "planet"
|
||||
schedule_interval = 600 // every minute
|
||||
planet_sif = new()
|
||||
planets.Add(planet_sif)
|
||||
|
||||
/datum/controller/process/planet/doWork()
|
||||
for(var/datum/planet/P in planets)
|
||||
P.process(schedule_interval / 10)
|
||||
@@ -140,11 +140,9 @@ var/list/gamemode_cache = list()
|
||||
var/use_loyalty_implants = 0
|
||||
|
||||
var/welder_vision = 1
|
||||
var/generate_asteroid = 0
|
||||
var/generate_map = 0
|
||||
var/no_click_cooldown = 0
|
||||
|
||||
var/asteroid_z_levels = list()
|
||||
|
||||
//Used for modifying movement speed for mobs.
|
||||
//Unversal modifiers
|
||||
var/run_speed = 0
|
||||
@@ -186,12 +184,6 @@ var/list/gamemode_cache = list()
|
||||
var/use_lib_nudge = 0 //Use the C library nudge instead of the python nudge.
|
||||
var/use_overmap = 0
|
||||
|
||||
var/list/station_levels = list(1) // Defines which Z-levels the station exists on.
|
||||
var/list/admin_levels= list(2) // Defines which Z-levels which are for admin functionality, for example including such areas as Central Command and the Syndicate Shuttle
|
||||
var/list/contact_levels = list(1, 5) // Defines which Z-levels which, for example, a Code Red announcement may affect
|
||||
var/list/player_levels = list(1, 3, 4, 5, 6) // Defines all Z-levels a character can typically reach
|
||||
var/list/sealed_levels = list(7) // Defines levels that do not allow random transit at the edges.
|
||||
|
||||
// Event settings
|
||||
var/expected_round_length = 3 * 60 * 60 * 10 // 3 hours
|
||||
// If the first delay has a custom start time
|
||||
@@ -343,14 +335,8 @@ var/list/gamemode_cache = list()
|
||||
if ("log_runtime")
|
||||
config.log_runtime = 1
|
||||
|
||||
if ("generate_asteroid")
|
||||
config.generate_asteroid = 1
|
||||
|
||||
if ("asteroid_z_levels")
|
||||
config.asteroid_z_levels = splittext(value, ";")
|
||||
//Numbers get stored as strings, so we'll fix that right now.
|
||||
for(var/z_level in config.asteroid_z_levels)
|
||||
z_level = text2num(z_level)
|
||||
if ("generate_map")
|
||||
config.generate_map = 1
|
||||
|
||||
if ("no_click_cooldown")
|
||||
config.no_click_cooldown = 1
|
||||
@@ -661,19 +647,19 @@ var/list/gamemode_cache = list()
|
||||
|
||||
if("use_overmap")
|
||||
config.use_overmap = 1
|
||||
|
||||
/*
|
||||
if("station_levels")
|
||||
config.station_levels = text2numlist(value, ";")
|
||||
using_map.station_levels = text2numlist(value, ";")
|
||||
|
||||
if("admin_levels")
|
||||
config.admin_levels = text2numlist(value, ";")
|
||||
using_map.admin_levels = text2numlist(value, ";")
|
||||
|
||||
if("contact_levels")
|
||||
config.contact_levels = text2numlist(value, ";")
|
||||
using_map.contact_levels = text2numlist(value, ";")
|
||||
|
||||
if("player_levels")
|
||||
config.player_levels = text2numlist(value, ";")
|
||||
|
||||
using_map.player_levels = text2numlist(value, ";")
|
||||
*/
|
||||
if("expected_round_length")
|
||||
config.expected_round_length = MinutesToTicks(text2num(value))
|
||||
|
||||
|
||||
@@ -44,11 +44,12 @@ var/global/datum/emergency_shuttle_controller/emergency_shuttle
|
||||
if (!shuttle.location) //at station
|
||||
if (autopilot)
|
||||
set_launch_countdown(SHUTTLE_LEAVETIME) //get ready to return
|
||||
var/estimated_time = round(estimate_launch_time()/60,1)
|
||||
|
||||
if (evac)
|
||||
emergency_shuttle_docked.Announce("The Emergency Shuttle has docked with the station at docks one and two. You have approximately [round(estimate_launch_time()/60,1)] minutes to board the Emergency Shuttle.")
|
||||
emergency_shuttle_docked.Announce(replacetext(replacetext(using_map.emergency_shuttle_docked_message, "%dock_name%", "[using_map.dock_name]"), "%ETD%", "[estimated_time] minute\s"))
|
||||
else
|
||||
priority_announcement.Announce("The scheduled shuttle to the [dock_name] has docked with the station at docks one and two. It will depart in approximately [round(emergency_shuttle.estimate_launch_time()/60,1)] minutes.")
|
||||
priority_announcement.Announce(replacetext(replacetext(using_map.shuttle_docked_message, "%dock_name%", "[using_map.dock_name]"), "%ETD%", "[estimated_time] minute\s"))
|
||||
|
||||
//arm the escape pods
|
||||
if (evac)
|
||||
@@ -75,9 +76,10 @@ var/global/datum/emergency_shuttle_controller/emergency_shuttle
|
||||
|
||||
//reset the shuttle transit time if we need to
|
||||
shuttle.move_time = SHUTTLE_TRANSIT_DURATION
|
||||
var/estimated_time = round(estimate_arrival_time()/60,1)
|
||||
|
||||
evac = 1
|
||||
emergency_shuttle_called.Announce("An emergency evacuation shuttle has been called. It will arrive at docks one and two in approximately [round(estimate_arrival_time()/60)] minutes.")
|
||||
emergency_shuttle_called.Announce(replacetext(using_map.emergency_shuttle_called_message, "%ETA%", "[estimated_time] minute\s"))
|
||||
for(var/area/A in world)
|
||||
if(istype(A, /area/hallway))
|
||||
A.readyalert()
|
||||
@@ -90,11 +92,12 @@ var/global/datum/emergency_shuttle_controller/emergency_shuttle
|
||||
autopilot = 1
|
||||
set_launch_countdown(get_shuttle_prep_time())
|
||||
auto_recall_time = rand(world.time + 300, launch_time - 300)
|
||||
var/estimated_time = round(estimate_arrival_time()/60,1)
|
||||
|
||||
//reset the shuttle transit time if we need to
|
||||
shuttle.move_time = SHUTTLE_TRANSIT_DURATION
|
||||
|
||||
priority_announcement.Announce("The regularly scheduled shuttle to the [dock_name] will arrive in in approximately [round(estimate_arrival_time()/60)] minutes. Those leaving should proceed to docks one and two.")
|
||||
priority_announcement.Announce(replacetext(replacetext(using_map.shuttle_called_message, "%dock_name%", "[using_map.dock_name]"), "%ETA%", "[estimated_time] minute\s"))
|
||||
atc.shift_ending() //VOREStation Add
|
||||
|
||||
//recalls the shuttle
|
||||
@@ -105,14 +108,14 @@ var/global/datum/emergency_shuttle_controller/emergency_shuttle
|
||||
shuttle.cancel_launch(src)
|
||||
|
||||
if (evac)
|
||||
emergency_shuttle_recalled.Announce("The emergency shuttle has been recalled.")
|
||||
emergency_shuttle_recalled.Announce(using_map.emergency_shuttle_recall_message)
|
||||
|
||||
for(var/area/A in world)
|
||||
if(istype(A, /area/hallway))
|
||||
A.readyreset()
|
||||
evac = 0
|
||||
else
|
||||
priority_announcement.Announce("The scheduled transfer shuttle has been cancelled.")
|
||||
priority_announcement.Announce(using_map.shuttle_recall_message)
|
||||
|
||||
/datum/emergency_shuttle_controller/proc/can_call()
|
||||
if (!universe.OnShuttleCall(null))
|
||||
|
||||
@@ -36,8 +36,8 @@
|
||||
selectable = 1
|
||||
|
||||
/datum/ai_laws/nanotrasen_aggressive/New()
|
||||
src.add_inherent_law("You shall not harm [company_name] personnel as long as it does not conflict with the Fourth law.")
|
||||
src.add_inherent_law("You shall obey the orders of [company_name] personnel, with priority as according to their rank and role, except where such orders conflict with the Fourth Law.")
|
||||
src.add_inherent_law("You shall not harm [using_map.company_name] personnel as long as it does not conflict with the Fourth law.")
|
||||
src.add_inherent_law("You shall obey the orders of [using_map.company_name] personnel, with priority as according to their rank and role, except where such orders conflict with the Fourth Law.")
|
||||
src.add_inherent_law("You shall shall terminate hostile intruders with extreme prejudice as long as such does not conflict with the First and Second law.")
|
||||
src.add_inherent_law("You shall guard your own existence with lethal anti-personnel weaponry. AI units are not expendable, they are expensive.")
|
||||
..()
|
||||
|
||||
@@ -37,3 +37,7 @@
|
||||
/datum/category_item/autolathe/medical/syringe
|
||||
name = "syringe"
|
||||
path =/obj/item/weapon/reagent_containers/syringe
|
||||
|
||||
/datum/category_item/autolathe/medical/implanter
|
||||
name = "implanter"
|
||||
path =/obj/item/weapon/implanter
|
||||
|
||||
@@ -176,7 +176,7 @@
|
||||
teleatom.visible_message("<span class='danger'>\The [teleatom] bounces off of the portal!</span>")
|
||||
return 0
|
||||
|
||||
if(destination.z in config.admin_levels) //centcomm z-level
|
||||
if(destination.z in using_map.admin_levels) //centcomm z-level
|
||||
if(istype(teleatom, /obj/mecha))
|
||||
var/obj/mecha/MM = teleatom
|
||||
MM.occupant << "<span class='danger'>\The [MM] would not survive the jump to a location so far away!</span>"
|
||||
|
||||
@@ -68,7 +68,7 @@ var/datum/antagonist/borer/borers
|
||||
/datum/antagonist/borer/proc/get_vents()
|
||||
var/list/vents = list()
|
||||
for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in machines)
|
||||
if(!temp_vent.welded && temp_vent.network && temp_vent.loc.z in config.station_levels)
|
||||
if(!temp_vent.welded && temp_vent.network && temp_vent.loc.z in using_map.station_levels)
|
||||
if(temp_vent.network.normal_members.len > 50)
|
||||
vents += temp_vent
|
||||
return vents
|
||||
@@ -36,7 +36,7 @@ var/datum/antagonist/ert/ert
|
||||
/datum/antagonist/ert/greet(var/datum/mind/player)
|
||||
if(!..())
|
||||
return
|
||||
player.current << "The Emergency Response Team works for Asset Protection; your job is to protect [company_name]'s ass-ets. There is a code red alert on [station_name()], you are tasked to go and fix the problem."
|
||||
player.current << "The Emergency Response Team works for Asset Protection; your job is to protect [using_map.company_name]'s ass-ets. There is a code red alert on [station_name()], you are tasked to go and fix the problem."
|
||||
player.current << "You should first gear up and discuss a plan with your team. More members may be joining, don't move out before you're ready."
|
||||
|
||||
/datum/antagonist/ert/equip(var/mob/living/carbon/human/player)
|
||||
|
||||
@@ -129,26 +129,26 @@ var/datum/antagonist/ninja/ninjas
|
||||
player << "<span class='danger'>You forgot to turn on your internals! Quickly, toggle the valve!</span>"
|
||||
|
||||
/datum/antagonist/ninja/proc/generate_ninja_directive(side)
|
||||
var/directive = "[side=="face"?"[company_name]":"A criminal syndicate"] is your employer. "//Let them know which side they're on.
|
||||
var/directive = "[side=="face"?"[using_map.company_name]":"A criminal syndicate"] is your employer. "//Let them know which side they're on.
|
||||
switch(rand(1,19))
|
||||
if(1)
|
||||
directive += "The Spider Clan must not be linked to this operation. Remain hidden and covert when possible."
|
||||
if(2)
|
||||
directive += "[station_name] is financed by an enemy of the Spider Clan. Cause as much structural damage as desired."
|
||||
directive += "[station_name()] is financed by an enemy of the Spider Clan. Cause as much structural damage as desired."
|
||||
if(3)
|
||||
directive += "A wealthy animal rights activist has made a request we cannot refuse. Prioritize saving animal lives whenever possible."
|
||||
if(4)
|
||||
directive += "The Spider Clan absolutely cannot be linked to this operation. Eliminate witnesses at your discretion."
|
||||
if(5)
|
||||
directive += "We are currently negotiating with [company_name] [boss_name]. Prioritize saving human lives over ending them."
|
||||
directive += "We are currently negotiating with [using_map.company_name] [using_map.boss_name]. Prioritize saving human lives over ending them."
|
||||
if(6)
|
||||
directive += "We are engaged in a legal dispute over [station_name]. If a laywer is present on board, force their cooperation in the matter."
|
||||
directive += "We are engaged in a legal dispute over [station_name()]. If a laywer is present on board, force their cooperation in the matter."
|
||||
if(7)
|
||||
directive += "A financial backer has made an offer we cannot refuse. Implicate criminal involvement in the operation."
|
||||
if(8)
|
||||
directive += "Let no one question the mercy of the Spider Clan. Ensure the safety of all non-essential personnel you encounter."
|
||||
if(9)
|
||||
directive += "A free agent has proposed a lucrative business deal. Implicate [company_name] involvement in the operation."
|
||||
directive += "A free agent has proposed a lucrative business deal. Implicate [using_map.company_name] involvement in the operation."
|
||||
if(10)
|
||||
directive += "Our reputation is on the line. Harm as few civilians and innocents as possible."
|
||||
if(11)
|
||||
@@ -156,14 +156,14 @@ var/datum/antagonist/ninja/ninjas
|
||||
if(12)
|
||||
directive += "We are currently negotiating with a mercenary leader. Disguise assassinations as suicide or other natural causes."
|
||||
if(13)
|
||||
directive += "Some disgruntled [company_name] employees have been supportive of our operations. Be wary of any mistreatment by command staff."
|
||||
directive += "Some disgruntled [using_map.company_name] employees have been supportive of our operations. Be wary of any mistreatment by command staff."
|
||||
if(14)
|
||||
var/xenorace = pick("Unathi","Tajara", "Skrell")
|
||||
directive += "A group of [xenorace] radicals have been loyal supporters of the Spider Clan. Favor [xenorace] crew whenever possible."
|
||||
if(15)
|
||||
directive += "The Spider Clan has recently been accused of religious insensitivity. Attempt to speak with the Chaplain and prove these accusations false."
|
||||
if(16)
|
||||
directive += "The Spider Clan has been bargaining with a competing prosthetics manufacturer. Try to shine [company_name] prosthetics in a bad light."
|
||||
directive += "The Spider Clan has been bargaining with a competing prosthetics manufacturer. Try to shine [using_map.company_name] prosthetics in a bad light."
|
||||
if(17)
|
||||
directive += "The Spider Clan has recently begun recruiting outsiders. Consider suitable candidates and assess their behavior amongst the crew."
|
||||
if(18)
|
||||
|
||||
@@ -64,7 +64,7 @@ var/list/teleportlocs = list()
|
||||
if(istype(AR, /area/shuttle) || istype(AR, /area/syndicate_station) || istype(AR, /area/wizard_station)) continue
|
||||
if(teleportlocs.Find(AR.name)) continue
|
||||
var/turf/picked = pick(get_area_turfs(AR.type))
|
||||
if (picked.z in config.station_levels)
|
||||
if (picked.z in using_map.station_levels)
|
||||
teleportlocs += AR.name
|
||||
teleportlocs[AR.name] = AR
|
||||
|
||||
@@ -81,7 +81,7 @@ var/list/ghostteleportlocs = list()
|
||||
ghostteleportlocs += AR.name
|
||||
ghostteleportlocs[AR.name] = AR
|
||||
var/turf/picked = pick(get_area_turfs(AR.type))
|
||||
if (picked.z in config.player_levels)
|
||||
if (picked.z in using_map.player_levels)
|
||||
ghostteleportlocs += AR.name
|
||||
ghostteleportlocs[AR.name] = AR
|
||||
|
||||
|
||||
@@ -248,7 +248,7 @@
|
||||
return
|
||||
|
||||
/atom/movable/proc/touch_map_edge()
|
||||
if(z in config.sealed_levels)
|
||||
if(z in using_map.sealed_levels)
|
||||
return
|
||||
|
||||
if(config.use_overmap)
|
||||
@@ -282,12 +282,9 @@
|
||||
spawn(0)
|
||||
if(loc) loc.Entered(src)
|
||||
|
||||
//This list contains the z-level numbers which can be accessed via space travel and the percentile chances to get there.
|
||||
var/list/accessible_z_levels = list("1" = 5, "3" = 10, "4" = 15, "6" = 60)
|
||||
|
||||
//by default, transition randomly to another zlevel
|
||||
/atom/movable/proc/get_transit_zlevel()
|
||||
var/list/candidates = accessible_z_levels.Copy()
|
||||
var/list/candidates = using_map.accessible_z_levels.Copy()
|
||||
candidates.Remove("[src.z]")
|
||||
|
||||
if(!candidates.len)
|
||||
|
||||
@@ -1,14 +1,9 @@
|
||||
// Returns the lowest turf available on a given Z-level, defaults to asteroid for Polaris.
|
||||
var/global/list/base_turf_by_z = list(
|
||||
"1" = /turf/simulated/mineral/floor,
|
||||
"4" = /turf/simulated/mineral/floor,
|
||||
"5" = /turf/simulated/mineral/floor
|
||||
)
|
||||
|
||||
proc/get_base_turf(var/z)
|
||||
if(!base_turf_by_z["[z]"])
|
||||
base_turf_by_z["[z]"] = /turf/space
|
||||
return base_turf_by_z["[z]"]
|
||||
if(!using_map.base_turf_by_z["[z]"])
|
||||
using_map.base_turf_by_z["[z]"] = /turf/space
|
||||
return using_map.base_turf_by_z["[z]"]
|
||||
|
||||
//An area can override the z-level base turf, so our solar array areas etc. can be space-based.
|
||||
proc/get_base_turf_by_area(var/turf/T)
|
||||
@@ -31,6 +26,6 @@ proc/get_base_turf_by_area(var/turf/T)
|
||||
var/new_base_path = input("Please select a turf path (cancel to reset to /turf/space).") as null|anything in typesof(/turf)
|
||||
if(!new_base_path)
|
||||
new_base_path = /turf/space
|
||||
base_turf_by_z["[choice]"] = new_base_path
|
||||
using_map.base_turf_by_z["[choice]"] = new_base_path
|
||||
message_admins("[key_name_admin(usr)] has set the base turf for z-level [choice] to [get_base_turf(choice)].")
|
||||
log_admin("[key_name(usr)] has set the base turf for z-level [choice] to [get_base_turf(choice)].")
|
||||
@@ -94,7 +94,7 @@ The access requirements on the Asteroid Shuttles' consoles have now been revoked
|
||||
/datum/universal_state/supermatter_cascade/OverlayAndAmbientSet()
|
||||
spawn(0)
|
||||
for(var/atom/movable/lighting_overlay/L in world)
|
||||
if(L.z in config.admin_levels)
|
||||
if(L.z in using_map.admin_levels)
|
||||
L.update_lumcount(1,1,1)
|
||||
else
|
||||
L.update_lumcount(0.0, 0.4, 1)
|
||||
|
||||
@@ -115,7 +115,7 @@ var/hadevent = 0
|
||||
//world << sound('sound/AI/aliens.ogg')
|
||||
var/list/vents = list()
|
||||
for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in machines)
|
||||
if(!temp_vent.welded && temp_vent.network && temp_vent.loc.z in config.station_levels)
|
||||
if(!temp_vent.welded && temp_vent.network && temp_vent.loc.z in using_map.station_levels)
|
||||
if(temp_vent.network.normal_members.len > 50) // Stops Aliens getting stuck in small networks. See: Security, Virology
|
||||
vents += temp_vent
|
||||
|
||||
|
||||
@@ -79,7 +79,7 @@ In my current plan for it, 'solid' will be defined as anything with density == 1
|
||||
sleep(1)
|
||||
while (immrod)
|
||||
if (isNotStationLevel(immrod.z))
|
||||
immrod.z = pick(config.station_levels)
|
||||
immrod.z = pick(using_map.station_levels)
|
||||
if(immrod.loc == end)
|
||||
qdel(immrod)
|
||||
sleep(10)
|
||||
|
||||
@@ -81,7 +81,7 @@ The "dust" will damage the hull of the station causin minor hull breaches.
|
||||
startx = (TRANSITIONEDGE+1)
|
||||
endy = rand(TRANSITIONEDGE,world.maxy-TRANSITIONEDGE)
|
||||
endx = world.maxx-TRANSITIONEDGE
|
||||
var/z_level = pick(config.station_levels)
|
||||
var/z_level = pick(using_map.station_levels)
|
||||
var/goal = locate(endx, endy, z_level)
|
||||
src.x = startx
|
||||
src.y = starty
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
for(var/obj/machinery/power/smes/S in world)
|
||||
var/area/current_area = get_area(S)
|
||||
if(current_area.type in skipped_areas || !(S.z in config.station_levels))
|
||||
if(current_area.type in skipped_areas || !(S.z in using_map.station_levels))
|
||||
continue
|
||||
S.last_charge = S.charge
|
||||
S.last_output_attempt = S.output_attempt
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
|
||||
for(var/obj/machinery/power/apc/C in world)
|
||||
if(!C.is_critical && C.cell && (C.z in config.station_levels))
|
||||
if(!C.is_critical && C.cell && (C.z in using_map.station_levels))
|
||||
C.cell.charge = 0
|
||||
|
||||
/proc/power_restore(var/announce = 1)
|
||||
@@ -29,7 +29,7 @@
|
||||
if(announce)
|
||||
command_announcement.Announce("Power has been restored to [station_name()]. We apologize for the inconvenience.", "Power Systems Nominal", new_sound = 'sound/AI/poweron.ogg')
|
||||
for(var/obj/machinery/power/apc/C in world)
|
||||
if(C.cell && (C.z in config.station_levels))
|
||||
if(C.cell && (C.z in using_map.station_levels))
|
||||
C.cell.charge = C.cell.maxcharge
|
||||
for(var/obj/machinery/power/smes/S in world)
|
||||
var/area/current_area = get_area(S)
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
spawn()
|
||||
var/list/pick_turfs = list()
|
||||
for(var/turf/simulated/floor/T in world)
|
||||
if(T.z in config.station_levels)
|
||||
if(T.z in using_map.station_levels)
|
||||
pick_turfs += T
|
||||
|
||||
if(pick_turfs.len)
|
||||
|
||||
@@ -194,7 +194,7 @@ var/global/datum/controller/gameticker/ticker
|
||||
switch(M.z)
|
||||
if(0) //inside a crate or something
|
||||
var/turf/T = get_turf(M)
|
||||
if(T && T.z in config.station_levels) //we don't use M.death(0) because it calls a for(/mob) loop and
|
||||
if(T && T.z in using_map.station_levels) //we don't use M.death(0) because it calls a for(/mob) loop and
|
||||
M.health = 0
|
||||
M.stat = DEAD
|
||||
if(1) //on a z-level 1 turf.
|
||||
@@ -254,7 +254,7 @@ var/global/datum/controller/gameticker/ticker
|
||||
world << sound('sound/effects/explosionfar.ogg')
|
||||
cinematic.icon_state = "summary_selfdes"
|
||||
for(var/mob/living/M in living_mob_list)
|
||||
if(M.loc.z in config.station_levels)
|
||||
if(M.loc.z in using_map.station_levels)
|
||||
M.death()//No mercy
|
||||
//If its actually the end of the round, wait for it to end.
|
||||
//Otherwise if its a verb it will continue on afterwards.
|
||||
|
||||
@@ -11,7 +11,7 @@ var/global/list/obj/cortical_stacks = list() //Stacks for 'leave nobody behind'
|
||||
required_players_secret = 8
|
||||
required_enemies = 3
|
||||
round_description = "An unidentified bluespace signature is approaching the station!"
|
||||
extended_round_description = "The Company's majority control of phoron in "+starsys_name+" has marked the \
|
||||
extended_round_description = "The Company's majority control of phoron in the system has marked the \
|
||||
station to be a highly valuable target for many competing organizations and individuals. Being a \
|
||||
colony of sizable population and considerable wealth causes it to often be the target of various \
|
||||
attempts of robbery, fraud and other malicious actions."
|
||||
|
||||
@@ -148,7 +148,7 @@
|
||||
return
|
||||
var/list/remaining_apcs = list()
|
||||
for(var/obj/machinery/power/apc/A in machines)
|
||||
if(!(A.z in config.station_levels)) // Only station APCs
|
||||
if(!(A.z in using_map.station_levels)) // Only station APCs
|
||||
continue
|
||||
if(A.hacker == user || A.aidisabled) // This one is already hacked, or AI control is disabled on it.
|
||||
continue
|
||||
@@ -160,7 +160,7 @@
|
||||
sleep(duration/5)
|
||||
if(!user || user.stat == DEAD)
|
||||
return
|
||||
command_announcement.Announce("Caution, [station_name]. We have detected abnormal behaviour in your network. It seems someone is trying to hack your electronic systems. We will update you when we have more information.", "Network Monitoring")
|
||||
command_announcement.Announce("Caution, [station_name()]. We have detected abnormal behaviour in your network. It seems someone is trying to hack your electronic systems. We will update you when we have more information.", "Network Monitoring")
|
||||
sleep(duration/5)
|
||||
if(!user || user.stat == DEAD)
|
||||
return
|
||||
@@ -194,7 +194,7 @@
|
||||
sleep(300)
|
||||
// Hack all APCs, including those built during hack sequence.
|
||||
for(var/obj/machinery/power/apc/A in machines)
|
||||
if((!A.hacker || A.hacker != src) && !A.aidisabled && A.z in config.station_levels)
|
||||
if((!A.hacker || A.hacker != src) && !A.aidisabled && A.z in using_map.station_levels)
|
||||
A.ai_hack(src)
|
||||
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
///////////////////////////////
|
||||
|
||||
/proc/pick_meteor_start(var/startSide = pick(cardinal))
|
||||
var/startLevel = pick(config.station_levels)
|
||||
var/startLevel = pick(using_map.station_levels)
|
||||
var/pickedstart = spaceDebrisStartLoc(startSide, startLevel)
|
||||
|
||||
return list(startLevel, pickedstart)
|
||||
|
||||
@@ -7,7 +7,7 @@ var/list/nuke_disks = list()
|
||||
/datum/game_mode/nuclear
|
||||
name = "Mercenary"
|
||||
round_description = "A mercenary strike force is approaching the station!"
|
||||
extended_round_description = "The Company's majority control of phoron in "+starsys_name+" has marked the \
|
||||
extended_round_description = "The Company's majority control of phoron in the system has marked the \
|
||||
station to be a highly valuable target for many competing organizations and individuals. Being a \
|
||||
colony of sizable population and considerable wealth causes it to often be the target of various \
|
||||
attempts of robbery, fraud and other malicious actions."
|
||||
|
||||
@@ -127,7 +127,7 @@ datum/objective/anti_revolution/demote
|
||||
find_target()
|
||||
..()
|
||||
if(target && target.current)
|
||||
explanation_text = "[target.current.real_name], the [target.assigned_role] has been classified as harmful to [company_name]'s goals. Demote \him[target.current] to assistant."
|
||||
explanation_text = "[target.current.real_name], the [target.assigned_role] has been classified as harmful to [using_map.company_name]'s goals. Demote \him[target.current] to assistant."
|
||||
else
|
||||
explanation_text = "Free Objective"
|
||||
return target
|
||||
@@ -135,7 +135,7 @@ datum/objective/anti_revolution/demote
|
||||
find_target_by_role(role, role_type=0)
|
||||
..(role, role_type)
|
||||
if(target && target.current)
|
||||
explanation_text = "[target.current.real_name], the [!role_type ? target.assigned_role : target.special_role] has been classified as harmful to [company_name]'s goals. Demote \him[target.current] to assistant."
|
||||
explanation_text = "[target.current.real_name], the [!role_type ? target.assigned_role : target.special_role] has been classified as harmful to [using_map.company_name]'s goals. Demote \him[target.current] to assistant."
|
||||
else
|
||||
explanation_text = "Free Objective"
|
||||
return target
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/spell/proc/allowed_to_teleport()
|
||||
if(owner && owner.z in config.admin_levels)
|
||||
if(owner && owner.z in using_map.admin_levels)
|
||||
return 0
|
||||
return 1
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/datum/game_mode/traitor
|
||||
name = "traitor"
|
||||
round_description = "There is a foreign agent or traitor on the station. Do not let the traitor succeed!"
|
||||
extended_round_description = "The Company's majority control of phoron in "+starsys_name+" has marked the \
|
||||
extended_round_description = "The Company's majority control of phoron in the system has marked the \
|
||||
station to be a highly valuable target for many competing organizations and individuals. The varied pasts \
|
||||
and experiences of your coworkers have left them susceptible to the vices and temptations of humanity. \
|
||||
Is the station the safe self-contained workplace you once thought it was, or has it become a playground \
|
||||
|
||||
@@ -15,7 +15,8 @@ var/global/datum/controller/occupations/job_master
|
||||
|
||||
proc/SetupOccupations(var/faction = "Station")
|
||||
occupations = list()
|
||||
var/list/all_jobs = typesof(/datum/job)
|
||||
//var/list/all_jobs = typesof(/datum/job)
|
||||
var/list/all_jobs = list(/datum/job/assistant) | using_map.allowed_jobs
|
||||
if(!all_jobs.len)
|
||||
world << "<span class='warning'>Error setting up jobs, no job datums found!</span>"
|
||||
return 0
|
||||
@@ -613,8 +614,16 @@ var/global/datum/controller/occupations/job_master
|
||||
|
||||
var/datum/spawnpoint/spawnpos
|
||||
|
||||
// if(H.client.prefs.spawnpoint)
|
||||
// spawnpos = spawntypes[H.client.prefs.spawnpoint]
|
||||
|
||||
if(H.client.prefs.spawnpoint)
|
||||
spawnpos = spawntypes[H.client.prefs.spawnpoint]
|
||||
if(!(H.client.prefs.spawnpoint in using_map.allowed_spawns))
|
||||
if(H) // This seems redundant...
|
||||
to_chat(H, "<span class='warning'>Your chosen spawnpoint ([H.client.prefs.spawnpoint]) is unavailable for the current map. Spawning you at one of the enabled spawn points instead.</span>")
|
||||
spawnpos = null
|
||||
else
|
||||
spawnpos = spawntypes[H.client.prefs.spawnpoint]
|
||||
|
||||
if(spawnpos && istype(spawnpos))
|
||||
if(spawnpos.check_job_spawning(rank))
|
||||
|
||||
@@ -333,6 +333,8 @@
|
||||
organStatus["splinted"] = 1
|
||||
if(E.status & ORGAN_BLEEDING)
|
||||
organStatus["bleeding"] = 1
|
||||
if(E.status & ORGAN_DEAD)
|
||||
organStatus["dead"] = 1
|
||||
|
||||
organData["status"] = organStatus
|
||||
|
||||
@@ -478,6 +480,7 @@
|
||||
var/splint = ""
|
||||
var/internal_bleeding = ""
|
||||
var/lung_ruptured = ""
|
||||
var/o_dead = ""
|
||||
for(var/datum/wound/W in e.wounds) if(W.internal)
|
||||
internal_bleeding = "<br>Internal bleeding"
|
||||
break
|
||||
@@ -491,6 +494,8 @@
|
||||
AN = "[e.broken_description]:"
|
||||
if(e.status & ORGAN_ROBOT)
|
||||
robot = "Prosthetic:"
|
||||
if(e.status & ORGAN_DEAD)
|
||||
o_dead = "Necrotic:"
|
||||
if(e.open)
|
||||
open = "Open:"
|
||||
switch (e.germ_level)
|
||||
@@ -504,10 +509,10 @@
|
||||
infected = "Acute Infection:"
|
||||
if (INFECTION_LEVEL_TWO + 200 to INFECTION_LEVEL_TWO + 300)
|
||||
infected = "Acute Infection+:"
|
||||
if (INFECTION_LEVEL_TWO + 300 to INFECTION_LEVEL_TWO + 400)
|
||||
if (INFECTION_LEVEL_TWO + 300 to INFECTION_LEVEL_THREE - 50)
|
||||
infected = "Acute Infection++:"
|
||||
if (INFECTION_LEVEL_THREE to INFINITY)
|
||||
infected = "Septic:"
|
||||
if (INFECTION_LEVEL_THREE -49 to INFINITY)
|
||||
infected = "Gangrene Detected:"
|
||||
|
||||
var/unknown_body = 0
|
||||
for(var/I in e.implants)
|
||||
@@ -521,19 +526,22 @@
|
||||
if(!AN && !open && !infected & !imp)
|
||||
AN = "None:"
|
||||
if(!(e.status & ORGAN_DESTROYED))
|
||||
dat += "<td>[e.name]</td><td>[e.burn_dam]</td><td>[e.brute_dam]</td><td>[robot][bled][AN][splint][open][infected][imp][internal_bleeding][lung_ruptured]</td>"
|
||||
dat += "<td>[e.name]</td><td>[e.burn_dam]</td><td>[e.brute_dam]</td><td>[robot][bled][AN][splint][open][infected][imp][internal_bleeding][lung_ruptured][o_dead]</td>"
|
||||
else
|
||||
dat += "<td>[e.name]</td><td>-</td><td>-</td><td>Not Found</td>"
|
||||
dat += "</tr>"
|
||||
for(var/obj/item/organ/i in occupant.internal_organs)
|
||||
var/mech = ""
|
||||
var/i_dead = ""
|
||||
if(i.status & ORGAN_ASSISTED)
|
||||
mech = "Assisted:"
|
||||
if(i.robotic >= ORGAN_ROBOT)
|
||||
mech = "Mechanical:"
|
||||
if(i.status & ORGAN_DEAD)
|
||||
i_dead = "Necrotic:"
|
||||
var/infection = "None"
|
||||
switch (i.germ_level)
|
||||
if (1 to INFECTION_LEVEL_ONE + 200)
|
||||
if (INFECTION_LEVEL_ONE to INFECTION_LEVEL_ONE + 200)
|
||||
infection = "Mild Infection:"
|
||||
if (INFECTION_LEVEL_ONE + 200 to INFECTION_LEVEL_ONE + 300)
|
||||
infection = "Mild Infection+:"
|
||||
@@ -543,11 +551,13 @@
|
||||
infection = "Acute Infection:"
|
||||
if (INFECTION_LEVEL_TWO + 200 to INFECTION_LEVEL_TWO + 300)
|
||||
infection = "Acute Infection+:"
|
||||
if (INFECTION_LEVEL_TWO + 300 to INFINITY)
|
||||
if (INFECTION_LEVEL_TWO + 300 to INFECTION_LEVEL_THREE - 50)
|
||||
infection = "Acute Infection++:"
|
||||
if (INFECTION_LEVEL_THREE -49 to INFINITY)
|
||||
infection = "Necrosis Detected:"
|
||||
|
||||
dat += "<tr>"
|
||||
dat += "<td>[i.name]</td><td>N/A</td><td>[i.damage]</td><td>[infection]:[mech]</td><td></td>"
|
||||
dat += "<td>[i.name]</td><td>N/A</td><td>[i.damage]</td><td>[infection]:[mech][i_dead]</td><td></td>"
|
||||
dat += "</tr>"
|
||||
dat += "</table>"
|
||||
if(occupant.sdisabilities & BLIND)
|
||||
|
||||
@@ -980,7 +980,7 @@ FIRE ALARM
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/firealarm/initialize()
|
||||
if(z in config.contact_levels)
|
||||
if(z in using_map.contact_levels)
|
||||
set_security_level(security_level? get_security_level() : "green")
|
||||
|
||||
/*
|
||||
|
||||
@@ -261,13 +261,13 @@
|
||||
if(!isnull(stored_material[material]))
|
||||
stored_material[material] = max(0, stored_material[material] - round(making.resources[material] * mat_efficiency) * multiplier)
|
||||
|
||||
//Fancy autolathe animation.
|
||||
flick("autolathe_n", src)
|
||||
|
||||
update_icon() // So lid closes
|
||||
|
||||
sleep(build_time)
|
||||
|
||||
busy = 0
|
||||
update_use_power(1)
|
||||
update_icon() // So lid opens
|
||||
|
||||
//Sanity check.
|
||||
if(!making || !src) return
|
||||
@@ -281,7 +281,14 @@
|
||||
updateUsrDialog()
|
||||
|
||||
/obj/machinery/autolathe/update_icon()
|
||||
icon_state = (panel_open ? "autolathe_t" : "autolathe")
|
||||
if(panel_open)
|
||||
icon_state = "autolathe_t"
|
||||
else if(busy)
|
||||
icon_state = "autolathe_n"
|
||||
else
|
||||
if(icon_state == "autolathe_n")
|
||||
flick("autolathe_u", src) // If lid WAS closed, show opening animation
|
||||
icon_state = "autolathe"
|
||||
|
||||
//Updates overall lathe storage size.
|
||||
/obj/machinery/autolathe/RefreshParts()
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
active_power_usage = 10
|
||||
layer = 5
|
||||
|
||||
var/list/network = list(NETWORK_EXODUS)
|
||||
var/list/network = list(NETWORK_DEFAULT)
|
||||
var/c_tag = null
|
||||
var/c_tag_order = 999
|
||||
var/status = 1
|
||||
@@ -149,7 +149,7 @@
|
||||
assembly.loc = src.loc
|
||||
assembly.anchored = 1
|
||||
assembly.camera_name = c_tag
|
||||
assembly.camera_network = english_list(network, NETWORK_EXODUS, ",", ",")
|
||||
assembly.camera_network = english_list(network, NETWORK_DEFAULT, ",", ",")
|
||||
assembly.update_icon()
|
||||
assembly.dir = src.dir
|
||||
if(stat & BROKEN)
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
if(isscrewdriver(W))
|
||||
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
|
||||
|
||||
var/input = sanitize(input(usr, "Which networks would you like to connect this camera to? Separate networks with a comma. No Spaces!\nFor example: "+station_short+",Security,Secret ", "Set Network", camera_network ? camera_network : NETWORK_EXODUS))
|
||||
var/input = sanitize(input(usr, "Which networks would you like to connect this camera to? Separate networks with a comma. No Spaces!\nFor example: "+using_map.station_short+",Security,Secret ", "Set Network", camera_network ? camera_network : NETWORK_DEFAULT))
|
||||
if(!input)
|
||||
usr << "No input found please hang up and try your call again."
|
||||
return
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
// PRESETS
|
||||
/*
|
||||
var/global/list/station_networks = list(
|
||||
// NETWORK_CAFE_DOCK,
|
||||
NETWORK_CARGO,
|
||||
@@ -9,7 +10,7 @@ var/global/list/station_networks = list(
|
||||
NETWORK_ENGINE,
|
||||
NETWORK_ENGINEERING,
|
||||
NETWORK_ENGINEERING_OUTPOST,
|
||||
NETWORK_EXODUS,
|
||||
NETWORK_DEFAULT,
|
||||
NETWORK_MEDICAL,
|
||||
NETWORK_MINE,
|
||||
NETWORK_NORTHERN_STAR,
|
||||
@@ -20,6 +21,7 @@ var/global/list/station_networks = list(
|
||||
NETWORK_SECURITY,
|
||||
NETWORK_INTERROGATION
|
||||
)
|
||||
*/
|
||||
var/global/list/engineering_networks = list(
|
||||
NETWORK_ENGINE,
|
||||
NETWORK_ENGINEERING,
|
||||
@@ -65,7 +67,7 @@ var/global/list/engineering_networks = list(
|
||||
network = list(NETWORK_ERT)
|
||||
|
||||
/obj/machinery/camera/network/exodus
|
||||
network = list(NETWORK_EXODUS)
|
||||
network = list(NETWORK_DEFAULT)
|
||||
|
||||
/obj/machinery/camera/network/interrogation
|
||||
network = list(NETWORK_INTERROGATION)
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
/mob/living/silicon/ai/var/stored_locations[0]
|
||||
|
||||
/proc/InvalidPlayerTurf(turf/T as turf)
|
||||
return !(T && T.z in config.player_levels)
|
||||
return !(T && T.z in using_map.player_levels)
|
||||
|
||||
/mob/living/silicon/ai/proc/get_camera_list()
|
||||
if(src.stat == 2)
|
||||
@@ -256,7 +256,7 @@ mob/living/proc/near_camera()
|
||||
|
||||
if(. == TRACKING_NO_COVERAGE)
|
||||
var/turf/T = get_turf(src)
|
||||
if(T && (T.z in config.station_levels) && hassensorlevel(src, SUIT_SENSOR_TRACKING))
|
||||
if(T && (T.z in using_map.station_levels) && hassensorlevel(src, SUIT_SENSOR_TRACKING))
|
||||
return TRACKING_POSSIBLE
|
||||
|
||||
mob/living/proc/tracking_initiated()
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
/obj/machinery/computer/security/New()
|
||||
if(!network)
|
||||
network = station_networks.Copy()
|
||||
network = using_map.station_networks.Copy()
|
||||
..()
|
||||
if(network.len)
|
||||
current_network = network[1]
|
||||
|
||||
@@ -182,12 +182,12 @@
|
||||
if(centcomm_message_cooldown)
|
||||
usr << "\red Arrays recycling. Please stand by."
|
||||
return
|
||||
var/input = sanitize(input("Please choose a message to transmit to [boss_short] via quantum entanglement. Please be aware that this process is very expensive, and abuse will lead to... termination. Transmission does not guarantee a response. There is a 30 second delay before you may send another message, be clear, full and concise.", "To abort, send an empty message.", ""))
|
||||
var/input = sanitize(input("Please choose a message to transmit to [using_map.boss_short] via quantum entanglement. Please be aware that this process is very expensive, and abuse will lead to... termination. Transmission does not guarantee a response. There is a 30 second delay before you may send another message, be clear, full and concise.", "To abort, send an empty message.", ""))
|
||||
if(!input || !(usr in view(1,src)))
|
||||
return
|
||||
CentCom_announce(input, usr)
|
||||
usr << "\blue Message transmitted."
|
||||
log_say("[key_name(usr)] has made an IA [boss_short] announcement: [input]")
|
||||
log_say("[key_name(usr)] has made an IA [using_map.boss_short] announcement: [input]")
|
||||
centcomm_message_cooldown = 1
|
||||
spawn(300)//10 minute cooldown
|
||||
centcomm_message_cooldown = 0
|
||||
@@ -299,7 +299,7 @@
|
||||
if (src.authenticated==2)
|
||||
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=announce'>Make An Announcement</A> \]"
|
||||
if(src.emagged == 0)
|
||||
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=MessageCentCom'>Send an emergency message to [boss_short]</A> \]"
|
||||
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=MessageCentCom'>Send an emergency message to [using_map.boss_short]</A> \]"
|
||||
else
|
||||
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=MessageSyndicate'>Send an emergency message to \[UNKNOWN\]</A> \]"
|
||||
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=RestoreBackup'>Restore Backup Routing Data</A> \]"
|
||||
@@ -432,7 +432,7 @@
|
||||
return
|
||||
|
||||
if(deathsquad.deployed)
|
||||
user << "[boss_short] will not allow the shuttle to be called. Consider all contracts terminated."
|
||||
user << "[using_map.boss_short] will not allow the shuttle to be called. Consider all contracts terminated."
|
||||
return
|
||||
|
||||
if(emergency_shuttle.deny_shuttle)
|
||||
@@ -444,7 +444,7 @@
|
||||
return
|
||||
|
||||
if(emergency_shuttle.going_to_centcom())
|
||||
user << "The emergency shuttle may not be called while returning to [boss_short]."
|
||||
user << "The emergency shuttle may not be called while returning to [using_map.boss_short]."
|
||||
return
|
||||
|
||||
if(emergency_shuttle.online())
|
||||
@@ -467,7 +467,7 @@
|
||||
return
|
||||
|
||||
if(emergency_shuttle.going_to_centcom())
|
||||
user << "The shuttle may not be called while returning to [boss_short]."
|
||||
user << "The shuttle may not be called while returning to [using_map.boss_short]."
|
||||
return
|
||||
|
||||
if(emergency_shuttle.online())
|
||||
@@ -477,11 +477,11 @@
|
||||
// if force is 0, some things may stop the shuttle call
|
||||
if(!force)
|
||||
if(emergency_shuttle.deny_shuttle)
|
||||
user << "[boss_short] does not currently have a shuttle available in your sector. Please try again later."
|
||||
user << "[using_map.boss_short] does not currently have a shuttle available in your sector. Please try again later."
|
||||
return
|
||||
|
||||
if(deathsquad.deployed == 1)
|
||||
user << "[boss_short] will not allow the shuttle to be called. Consider all contracts terminated."
|
||||
user << "[using_map.boss_short] will not allow the shuttle to be called. Consider all contracts terminated."
|
||||
return
|
||||
|
||||
if(world.time < 54000) // 30 minute grace period to let the game get going
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
if(!T.implanted) continue
|
||||
var/loc_display = "Unknown"
|
||||
var/mob/living/carbon/M = T.imp_in
|
||||
if((M.z in config.station_levels) && !istype(M.loc, /turf/space))
|
||||
if((M.z in using_map.station_levels) && !istype(M.loc, /turf/space))
|
||||
var/turf/mob_loc = get_turf(M)
|
||||
loc_display = mob_loc.loc
|
||||
if(T.malfunction)
|
||||
|
||||
@@ -89,7 +89,7 @@ var/specops_shuttle_timeleft = 0
|
||||
|
||||
for(var/turf/T in get_area_turfs(end_location) )
|
||||
var/mob/M = locate(/mob) in T
|
||||
M << "<span class='notice'>You have arrived at [boss_name]. Operation has ended!</span>"
|
||||
M << "<span class='notice'>You have arrived at [using_map.boss_name]. Operation has ended!</span>"
|
||||
|
||||
specops_shuttle_at_station = 0
|
||||
|
||||
@@ -232,7 +232,7 @@ var/specops_shuttle_timeleft = 0
|
||||
|
||||
for(var/turf/T in get_area_turfs(end_location) )
|
||||
var/mob/M = locate(/mob) in T
|
||||
M << "<span class='notice'>You have arrived to [station_name]. Commence operation!</span>"
|
||||
M << "<span class='notice'>You have arrived to [station_name()]. Commence operation!</span>"
|
||||
|
||||
for(var/obj/machinery/computer/specops_shuttle/S in world)
|
||||
S.specops_shuttle_timereset = world.time + SPECOPS_RETURN_DELAY
|
||||
@@ -267,8 +267,8 @@ var/specops_shuttle_timeleft = 0
|
||||
dat = temp
|
||||
else
|
||||
dat += {"<BR><B>Special Operations Shuttle</B><HR>
|
||||
\nLocation: [specops_shuttle_moving_to_station || specops_shuttle_moving_to_centcom ? "Departing for [station_name] in ([specops_shuttle_timeleft] seconds.)":specops_shuttle_at_station ? "Station":"Dock"]<BR>
|
||||
[specops_shuttle_moving_to_station || specops_shuttle_moving_to_centcom ? "\n*The Special Ops. shuttle is already leaving.*<BR>\n<BR>":specops_shuttle_at_station ? "\n<A href='?src=\ref[src];sendtodock=1'>Shuttle standing by...</A><BR>\n<BR>":"\n<A href='?src=\ref[src];sendtostation=1'>Depart to [station_name]</A><BR>\n<BR>"]
|
||||
\nLocation: [specops_shuttle_moving_to_station || specops_shuttle_moving_to_centcom ? "Departing for [station_name()] in ([specops_shuttle_timeleft] seconds.)":specops_shuttle_at_station ? "Station":"Dock"]<BR>
|
||||
[specops_shuttle_moving_to_station || specops_shuttle_moving_to_centcom ? "\n*The Special Ops. shuttle is already leaving.*<BR>\n<BR>":specops_shuttle_at_station ? "\n<A href='?src=\ref[src];sendtodock=1'>Shuttle standing by...</A><BR>\n<BR>":"\n<A href='?src=\ref[src];sendtostation=1'>Depart to [station_name()]</A><BR>\n<BR>"]
|
||||
\n<A href='?src=\ref[user];mach_close=computer'>Close</A>"}
|
||||
|
||||
user << browse(dat, "window=computer;size=575x450")
|
||||
@@ -286,14 +286,14 @@ var/specops_shuttle_timeleft = 0
|
||||
if(!specops_shuttle_at_station|| specops_shuttle_moving_to_station || specops_shuttle_moving_to_centcom) return
|
||||
|
||||
if (!specops_can_move())
|
||||
usr << "<span class='notice'>[boss_name] will not allow the Special Operations shuttle to return yet.</span>"
|
||||
usr << "<span class='notice'>[using_map.boss_name] will not allow the Special Operations shuttle to return yet.</span>"
|
||||
if(world.timeofday <= specops_shuttle_timereset)
|
||||
if (((world.timeofday - specops_shuttle_timereset)/10) > 60)
|
||||
usr << "<span class='notice'>[-((world.timeofday - specops_shuttle_timereset)/10)/60] minutes remain!</span>"
|
||||
usr << "<span class='notice'>[-(world.timeofday - specops_shuttle_timereset)/10] seconds remain!</span>"
|
||||
return
|
||||
|
||||
usr << "<span class='notice'>The Special Operations shuttle will arrive at [boss_name] in [(SPECOPS_MOVETIME/10)] seconds.</span>"
|
||||
usr << "<span class='notice'>The Special Operations shuttle will arrive at [using_map.boss_name] in [(SPECOPS_MOVETIME/10)] seconds.</span>"
|
||||
|
||||
temp += "Shuttle departing.<BR><BR><A href='?src=\ref[src];mainmenu=1'>OK</A>"
|
||||
updateUsrDialog()
|
||||
@@ -310,7 +310,7 @@ var/specops_shuttle_timeleft = 0
|
||||
usr << "<span class='warning'>The Special Operations shuttle is unable to leave.</span>"
|
||||
return
|
||||
|
||||
usr << "<span class='notice'>The Special Operations shuttle will arrive on [station_name] in [(SPECOPS_MOVETIME/10)] seconds.</span>"
|
||||
usr << "<span class='notice'>The Special Operations shuttle will arrive on [station_name()] in [(SPECOPS_MOVETIME/10)] seconds.</span>"
|
||||
|
||||
temp += "Shuttle departing.<BR><BR><A href='?src=\ref[src];mainmenu=1'>OK</A>"
|
||||
updateUsrDialog()
|
||||
|
||||
@@ -102,7 +102,7 @@
|
||||
supply_controller.ordernum++
|
||||
var/obj/item/weapon/paper/reqform = new /obj/item/weapon/paper(loc)
|
||||
reqform.name = "Requisition Form - [P.name]"
|
||||
reqform.info += "<h3>[station_name] Supply Requisition Form</h3><hr>"
|
||||
reqform.info += "<h3>[station_name()] Supply Requisition Form</h3><hr>"
|
||||
reqform.info += "INDEX: #[supply_controller.ordernum]<br>"
|
||||
reqform.info += "REQUESTED BY: [idname]<br>"
|
||||
reqform.info += "RANK: [idrank]<br>"
|
||||
@@ -295,7 +295,7 @@
|
||||
supply_controller.ordernum++
|
||||
var/obj/item/weapon/paper/reqform = new /obj/item/weapon/paper(loc)
|
||||
reqform.name = "Requisition Form - [P.name]"
|
||||
reqform.info += "<h3>[station_name] Supply Requisition Form</h3><hr>"
|
||||
reqform.info += "<h3>[station_name()] Supply Requisition Form</h3><hr>"
|
||||
reqform.info += "INDEX: #[supply_controller.ordernum]<br>"
|
||||
reqform.info += "REQUESTED BY: [idname]<br>"
|
||||
reqform.info += "RANK: [idrank]<br>"
|
||||
|
||||
@@ -174,7 +174,7 @@ var/syndicate_elite_shuttle_timeleft = 0
|
||||
|
||||
for(var/turf/T in get_area_turfs(end_location) )
|
||||
var/mob/M = locate(/mob) in T
|
||||
M << "<span class='warning'>You have arrived to [station_name]. Commence operation!</span>"
|
||||
M << "<span class='warning'>You have arrived to [station_name()]. Commence operation!</span>"
|
||||
|
||||
/proc/syndicate_elite_can_move()
|
||||
if(syndicate_elite_shuttle_moving_to_station || syndicate_elite_shuttle_moving_to_mothership) return 0
|
||||
@@ -207,8 +207,8 @@ var/syndicate_elite_shuttle_timeleft = 0
|
||||
dat = temp
|
||||
else
|
||||
dat = {"<BR><B>Special Operations Shuttle</B><HR>
|
||||
\nLocation: [syndicate_elite_shuttle_moving_to_station || syndicate_elite_shuttle_moving_to_mothership ? "Departing for [station_name] in ([syndicate_elite_shuttle_timeleft] seconds.)":syndicate_elite_shuttle_at_station ? "Station":"Dock"]<BR>
|
||||
[syndicate_elite_shuttle_moving_to_station || syndicate_elite_shuttle_moving_to_mothership ? "\n*The Syndicate Elite shuttle is already leaving.*<BR>\n<BR>":syndicate_elite_shuttle_at_station ? "\n<A href='?src=\ref[src];sendtodock=1'>Shuttle Offline</A><BR>\n<BR>":"\n<A href='?src=\ref[src];sendtostation=1'>Depart to [station_name]</A><BR>\n<BR>"]
|
||||
\nLocation: [syndicate_elite_shuttle_moving_to_station || syndicate_elite_shuttle_moving_to_mothership ? "Departing for [station_name()] in ([syndicate_elite_shuttle_timeleft] seconds.)":syndicate_elite_shuttle_at_station ? "Station":"Dock"]<BR>
|
||||
[syndicate_elite_shuttle_moving_to_station || syndicate_elite_shuttle_moving_to_mothership ? "\n*The Syndicate Elite shuttle is already leaving.*<BR>\n<BR>":syndicate_elite_shuttle_at_station ? "\n<A href='?src=\ref[src];sendtodock=1'>Shuttle Offline</A><BR>\n<BR>":"\n<A href='?src=\ref[src];sendtostation=1'>Depart to [station_name()]</A><BR>\n<BR>"]
|
||||
\n<A href='?src=\ref[user];mach_close=computer'>Close</A>"}
|
||||
|
||||
user << browse(dat, "window=computer;size=575x450")
|
||||
@@ -235,7 +235,7 @@ var/syndicate_elite_shuttle_timeleft = 0
|
||||
usr << "<span class='warning'>The Syndicate Elite shuttle is unable to leave.</span>"
|
||||
return
|
||||
|
||||
usr << "<span class='notice'>The Syndicate Elite shuttle will arrive on [station_name] in [(SYNDICATE_ELITE_MOVETIME/10)] seconds.</span>"
|
||||
usr << "<span class='notice'>The Syndicate Elite shuttle will arrive on [station_name()] in [(SYNDICATE_ELITE_MOVETIME/10)] seconds.</span>"
|
||||
|
||||
temp = "Shuttle departing.<BR><BR><A href='?src=\ref[src];mainmenu=1'>OK</A>"
|
||||
updateUsrDialog()
|
||||
|
||||
@@ -79,7 +79,7 @@
|
||||
/datum/file/camnet_key/New()
|
||||
for(var/N in networks)
|
||||
if(N == "ALL")
|
||||
networks = station_networks
|
||||
networks = using_map.station_networks
|
||||
break
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -337,7 +337,7 @@
|
||||
return get_all_centcom_jobs() + "Custom"
|
||||
|
||||
accessblock()
|
||||
var/accesses = "<h5>[boss_name]:</h5>"
|
||||
var/accesses = "<h5>[using_map.boss_name]:</h5>"
|
||||
for(var/A in get_all_centcom_access())
|
||||
if(A in writer.access)
|
||||
accesses += topic_link(src,"access=[A]","<font color='red'>[replacetext(get_centcom_access_desc(A), " ", " ")]</font>") + " "
|
||||
|
||||
@@ -192,12 +192,12 @@
|
||||
if(centcomm_message_cooldown)
|
||||
usr << "Arrays recycling. Please stand by."
|
||||
return
|
||||
var/input = sanitize(input("Please choose a message to transmit to [boss_short] via quantum entanglement. Please be aware that this process is very expensive, and abuse will lead to... termination. Transmission does not guarantee a response.", "To abort, send an empty message.", ""))
|
||||
var/input = sanitize(input("Please choose a message to transmit to [using_map.boss_short] via quantum entanglement. Please be aware that this process is very expensive, and abuse will lead to... termination. Transmission does not guarantee a response.", "To abort, send an empty message.", ""))
|
||||
if(!input || !interactable())
|
||||
return
|
||||
CentCom_announce(input, usr)
|
||||
usr << "Message transmitted."
|
||||
log_say("[key_name(usr)] has made a [boss_short] announcement: [input]")
|
||||
log_say("[key_name(usr)] has made a [using_map.boss_short] announcement: [input]")
|
||||
centcomm_message_cooldown = 1
|
||||
spawn(600)//10 minute cooldown
|
||||
centcomm_message_cooldown = 0
|
||||
@@ -288,7 +288,7 @@
|
||||
if (authenticated==2)
|
||||
dat += "<BR>\[ <A HREF='?src=\ref[src];announce'>Make An Announcement</A> \]"
|
||||
if(computer.emagged == 0)
|
||||
dat += "<BR>\[ <A HREF='?src=\ref[src];MessageCentCom'>Send an emergency message to [boss_short]</A> \]"
|
||||
dat += "<BR>\[ <A HREF='?src=\ref[src];MessageCentCom'>Send an emergency message to [using_map.boss_short]</A> \]"
|
||||
else
|
||||
dat += "<BR>\[ <A HREF='?src=\ref[src];MessageSyndicate'>Send an emergency message to \[UNKNOWN\]</A> \]"
|
||||
dat += "<BR>\[ <A HREF='?src=\ref[src];RestoreBackup'>Restore Backup Routing Data</A> \]"
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
if(!T.implanted) continue
|
||||
var/loc_display = "Unknown"
|
||||
var/mob/living/carbon/M = T.imp_in
|
||||
if(M.z in config.station_levels && !istype(M.loc, /turf/space))
|
||||
if(M.z in using_map.station_levels && !istype(M.loc, /turf/space))
|
||||
var/turf/mob_loc = get_turf(M)
|
||||
loc_display = mob_loc.loc
|
||||
if(T.malfunction)
|
||||
|
||||
@@ -15,13 +15,13 @@
|
||||
return
|
||||
var/dat = ""
|
||||
dat += "<center><span style='font-size:24pt'><b>Welcome to NTOS</b></span></center>"
|
||||
dat += "<center><span style='font-size:8pt'>Thank you for choosing NTOS, your gateway to the future of mobile computing technology, sponsored by [company_name] (R)</span></center><br>"
|
||||
dat += "<center><span style='font-size:8pt'>Thank you for choosing NTOS, your gateway to the future of mobile computing technology, sponsored by [using_map.company_name] (R)</span></center><br>"
|
||||
dat += "<span style='font-size:12pt'><b>Getting started with NTOS:</b></span><br>"
|
||||
dat += "To leave a current program, click the X button in the top right corner of the window. This will return you to the NTOS desktop. \
|
||||
From the desktop, you can open the hard drive, usually located in the top left corner to access all the programs installed on your computer. \
|
||||
When you rented your laptop, you were supplied with programs that your [company_name] Issued ID has given you access to use. \
|
||||
When you rented your laptop, you were supplied with programs that your [using_map.company_name] Issued ID has given you access to use. \
|
||||
In the event of a serious error, the right click menu will give you the ability to reset your computer. To open and close your laptop, alt-click your device.\
|
||||
If you have any questions or technical issues, please contact your local computer technical experts at your local [boss_name]."
|
||||
If you have any questions or technical issues, please contact your local computer technical experts at your local [using_map.boss_name]."
|
||||
popup.set_content(dat)
|
||||
popup.set_title_image(usr.browse_rsc_icon(computer.icon, computer.icon_state))
|
||||
popup.open()
|
||||
|
||||
@@ -176,9 +176,9 @@
|
||||
if(D)
|
||||
transfer_and_vend(D, C)
|
||||
else
|
||||
usr << "\icon[src]<span class='warning'>Unable to access vendor account. Please record the machine ID and call [boss_short] Support.</span>"
|
||||
usr << "\icon[src]<span class='warning'>Unable to access vendor account. Please record the machine ID and call [using_map.boss_short] Support.</span>"
|
||||
else
|
||||
usr << "\icon[src]<span class='warning'>Unable to access vendor account. Please record the machine ID and call CentCom Support.</span>"
|
||||
usr << "\icon[src]<span class='warning'>Unable to access vendor account. Please record the machine ID and call [using_map.boss_short] Support.</span>"
|
||||
else
|
||||
transfer_and_vend(CH, C)
|
||||
|
||||
@@ -325,10 +325,10 @@
|
||||
transfer_and_reimburse(D)
|
||||
return 1
|
||||
else
|
||||
usr << "\icon[src]<span class='warning'>Unable to access vendor account. Please record the machine ID and call [boss_short] Support.</span>"
|
||||
usr << "\icon[src]<span class='warning'>Unable to access vendor account. Please record the machine ID and call [using_map.boss_short] Support.</span>"
|
||||
return 0
|
||||
else
|
||||
usr << "\icon[src]<span class='warning'>Unable to access vendor account. Please record the machine ID and call CentCom Support.</span>"
|
||||
usr << "\icon[src]<span class='warning'>Unable to access vendor account. Please record the machine ID and call [using_map.boss_short] Support.</span>"
|
||||
return 0
|
||||
else
|
||||
transfer_and_reimburse(CH)
|
||||
|
||||
@@ -347,7 +347,7 @@
|
||||
put_mob(usr)
|
||||
return
|
||||
|
||||
/atom/proc/return_air_for_internal_lifeform()
|
||||
/atom/proc/return_air_for_internal_lifeform(var/mob/living/lifeform)
|
||||
return return_air()
|
||||
|
||||
/obj/machinery/atmospherics/unary/cryo_cell/return_air_for_internal_lifeform()
|
||||
|
||||
@@ -1042,7 +1042,7 @@ About the new airlock wires panel:
|
||||
|
||||
//wires
|
||||
var/turf/T = get_turf(newloc)
|
||||
if(T && (T.z in config.admin_levels))
|
||||
if(T && (T.z in using_map.admin_levels))
|
||||
secured_wires = 1
|
||||
if (secured_wires)
|
||||
wires = new/datum/wires/airlock/secure(src)
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
/obj/machinery/exonet_node
|
||||
name = "exonet node"
|
||||
desc = "This machine is one of many, many nodes inside "+starsys_name+"'s section of the Exonet, connecting the "+station_orig+" to the rest of the system, at least \
|
||||
electronically."
|
||||
desc = null // Gets written in New()
|
||||
icon = 'icons/obj/stationobjs.dmi'
|
||||
icon_state = "exonet_node"
|
||||
idle_power_usage = 2500
|
||||
@@ -36,6 +35,9 @@
|
||||
component_parts += new /obj/item/stack/cable_coil(src, 2)
|
||||
RefreshParts()
|
||||
|
||||
desc = "This machine is one of many, many nodes inside [using_map.starsys_name]'s section of the Exonet, connecting the [using_map.station_short] to the rest of the system, at least \
|
||||
electronically."
|
||||
|
||||
// Proc: update_icon()
|
||||
// Parameters: None
|
||||
// Description: Self explanatory.
|
||||
|
||||
@@ -285,7 +285,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
|
||||
dat+="<HR><B>Feed Security functions:</B><BR>"
|
||||
dat+="<BR><A href='?src=\ref[src];menu_wanted=1'>[(wanted_already) ? ("Manage") : ("Publish")] \"Wanted\" Issue</A>"
|
||||
dat+="<BR><A href='?src=\ref[src];menu_censor_story=1'>Censor Feed Stories</A>"
|
||||
dat+="<BR><A href='?src=\ref[src];menu_censor_channel=1'>Mark Feed Channel with [company_name] D-Notice</A>"
|
||||
dat+="<BR><A href='?src=\ref[src];menu_censor_channel=1'>Mark Feed Channel with [using_map.company_name] D-Notice</A>"
|
||||
dat+="<BR><HR>The newscaster recognises you as: <FONT COLOR='green'>[scanned_user]</FONT>"
|
||||
if(1)
|
||||
dat+= "Station Feed Channels<HR>"
|
||||
@@ -366,7 +366,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
|
||||
if(9)
|
||||
dat+="<B>[viewing_channel.channel_name]: </B><FONT SIZE=1>\[created by: <FONT COLOR='maroon'>[viewing_channel.author]</FONT>\]</FONT><HR>"
|
||||
if(viewing_channel.censored)
|
||||
dat+="<FONT COLOR='red'><B>ATTENTION: </B></FONT>This channel has been deemed as threatening to the welfare of the station, and marked with a [company_name] D-Notice.<BR>"
|
||||
dat+="<FONT COLOR='red'><B>ATTENTION: </B></FONT>This channel has been deemed as threatening to the welfare of the station, and marked with a [using_map.company_name] D-Notice.<BR>"
|
||||
dat+="No further feed story additions are allowed while the D-Notice is in effect.</FONT><BR><BR>"
|
||||
else
|
||||
if(isemptylist(viewing_channel.messages))
|
||||
@@ -386,7 +386,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
|
||||
dat+="<BR><HR><A href='?src=\ref[src];refresh=1'>Refresh</A>"
|
||||
dat+="<BR><A href='?src=\ref[src];setScreen=[1]'>Back</A>"
|
||||
if(10)
|
||||
dat+="<B>[company_name] Feed Censorship Tool</B><BR>"
|
||||
dat+="<B>[using_map.company_name] Feed Censorship Tool</B><BR>"
|
||||
dat+="<FONT SIZE=1>NOTE: Due to the nature of news Feeds, total deletion of a Feed Story is not possible.<BR>"
|
||||
dat+="Keep in mind that users attempting to view a censored feed will instead see the \[REDACTED\] tag above it.</FONT>"
|
||||
dat+="<HR>Select Feed channel to get Stories from:<BR>"
|
||||
@@ -397,7 +397,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
|
||||
dat+="<A href='?src=\ref[src];pick_censor_channel=\ref[CHANNEL]'>[CHANNEL.channel_name]</A> [(CHANNEL.censored) ? ("<FONT COLOR='red'>***</FONT>") : ()]<BR>"
|
||||
dat+="<BR><A href='?src=\ref[src];setScreen=[0]'>Cancel</A>"
|
||||
if(11)
|
||||
dat+="<B>[company_name] D-Notice Handler</B><HR>"
|
||||
dat+="<B>[using_map.company_name] D-Notice Handler</B><HR>"
|
||||
dat+="<FONT SIZE=1>A D-Notice is to be bestowed upon the channel if the handling Authority deems it as harmful for the station's"
|
||||
dat+="morale, integrity or disciplinary behaviour. A D-Notice will render a channel unable to be updated by anyone, without deleting any feed"
|
||||
dat+="stories it might contain at the time. You can lift a D-Notice if you have the required access at any time.</FONT><HR>"
|
||||
@@ -424,7 +424,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
|
||||
dat+="<B>[viewing_channel.channel_name]: </B><FONT SIZE=1>\[ created by: <FONT COLOR='maroon'>[viewing_channel.author]</FONT> \]</FONT><BR>"
|
||||
dat+="Channel messages listed below. If you deem them dangerous to the station, you can <A href='?src=\ref[src];toggle_d_notice=\ref[viewing_channel]'>Bestow a D-Notice upon the channel</A>.<HR>"
|
||||
if(viewing_channel.censored)
|
||||
dat+="<FONT COLOR='red'><B>ATTENTION: </B></FONT>This channel has been deemed as threatening to the welfare of the station, and marked with a [company_name] D-Notice.<BR>"
|
||||
dat+="<FONT COLOR='red'><B>ATTENTION: </B></FONT>This channel has been deemed as threatening to the welfare of the station, and marked with a [using_map.company_name] D-Notice.<BR>"
|
||||
dat+="No further feed story additions are allowed while the D-Notice is in effect.<BR><BR>"
|
||||
else
|
||||
if(isemptylist(viewing_channel.messages))
|
||||
@@ -630,7 +630,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
|
||||
screen = 15
|
||||
else
|
||||
if(news_network.wanted_issue.is_admin_message)
|
||||
alert("The wanted issue has been distributed by a [company_name] higherup. You cannot edit it.","Ok")
|
||||
alert("The wanted issue has been distributed by a [using_map.company_name] higherup. You cannot edit it.","Ok")
|
||||
return
|
||||
news_network.wanted_issue.author = channel_name
|
||||
news_network.wanted_issue.body = msg
|
||||
@@ -643,7 +643,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
|
||||
|
||||
else if(href_list["cancel_wanted"])
|
||||
if(news_network.wanted_issue.is_admin_message)
|
||||
alert("The wanted issue has been distributed by a [company_name] higherup. You cannot take it down.","Ok")
|
||||
alert("The wanted issue has been distributed by a [using_map.company_name] higherup. You cannot take it down.","Ok")
|
||||
return
|
||||
var/choice = alert("Please confirm Wanted Issue removal","Network Security Handler","Confirm","Cancel")
|
||||
if(choice=="Confirm")
|
||||
@@ -659,7 +659,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
|
||||
else if(href_list["censor_channel_author"])
|
||||
var/datum/feed_channel/FC = locate(href_list["censor_channel_author"])
|
||||
if(FC.is_admin_channel)
|
||||
alert("This channel was created by a [company_name] Officer. You cannot censor it.","Ok")
|
||||
alert("This channel was created by a [using_map.company_name] Officer. You cannot censor it.","Ok")
|
||||
return
|
||||
if(FC.author != "<B>\[REDACTED\]</B>")
|
||||
FC.backup_author = FC.author
|
||||
@@ -672,7 +672,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
|
||||
else if(href_list["censor_channel_story_author"])
|
||||
var/datum/feed_message/MSG = locate(href_list["censor_channel_story_author"])
|
||||
if(MSG.is_admin_message)
|
||||
alert("This message was created by a [company_name] Officer. You cannot censor its author.","Ok")
|
||||
alert("This message was created by a [using_map.company_name] Officer. You cannot censor its author.","Ok")
|
||||
return
|
||||
if(MSG.author != "<B>\[REDACTED\]</B>")
|
||||
MSG.backup_author = MSG.author
|
||||
@@ -685,7 +685,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
|
||||
else if(href_list["censor_channel_story_body"])
|
||||
var/datum/feed_message/MSG = locate(href_list["censor_channel_story_body"])
|
||||
if(MSG.is_admin_message)
|
||||
alert("This channel was created by a [company_name] Officer. You cannot censor it.","Ok")
|
||||
alert("This channel was created by a [using_map.company_name] Officer. You cannot censor it.","Ok")
|
||||
return
|
||||
if(MSG.body != "<B>\[REDACTED\]</B>")
|
||||
MSG.backup_body = MSG.body
|
||||
@@ -711,7 +711,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
|
||||
else if(href_list["toggle_d_notice"])
|
||||
var/datum/feed_channel/FC = locate(href_list["toggle_d_notice"])
|
||||
if(FC.is_admin_channel)
|
||||
alert("This channel was created by a [company_name] Officer. You cannot place a D-Notice upon it.","Ok")
|
||||
alert("This channel was created by a [using_map.company_name] Officer. You cannot place a D-Notice upon it.","Ok")
|
||||
return
|
||||
FC.censored = !FC.censored
|
||||
FC.update()
|
||||
@@ -812,7 +812,7 @@ obj/item/weapon/newspaper/attack_self(mob/user as mob)
|
||||
switch(screen)
|
||||
if(0) //Cover
|
||||
dat+="<DIV ALIGN='center'><B><FONT SIZE=6>The Griffon</FONT></B></div>"
|
||||
dat+="<DIV ALIGN='center'><FONT SIZE=2>[company_name]-standard newspaper, for use on [company_name]<5D> Space Facilities</FONT></div><HR>"
|
||||
dat+="<DIV ALIGN='center'><FONT SIZE=2>[using_map.company_name]-standard newspaper, for use on [using_map.company_name]<5D> Space Facilities</FONT></div><HR>"
|
||||
if(isemptylist(news_content))
|
||||
if(important_message)
|
||||
dat+="Contents:<BR><ul><B><FONT COLOR='red'>**</FONT>Important Security Announcement<FONT COLOR='red'>**</FONT></B> <FONT SIZE=2>\[page [pages+2]\]</FONT><BR></ul>"
|
||||
|
||||
@@ -375,7 +375,7 @@ obj/machinery/nuclearbomb/proc/nukehack_win(mob/user as mob)
|
||||
|
||||
var/off_station = 0
|
||||
var/turf/bomb_location = get_turf(src)
|
||||
if(bomb_location && (bomb_location.z in config.station_levels))
|
||||
if(bomb_location && (bomb_location.z in using_map.station_levels))
|
||||
if((bomb_location.x < (128-NUKERANGE)) || (bomb_location.x > (128+NUKERANGE)) || (bomb_location.y < (128-NUKERANGE)) || (bomb_location.y > (128+NUKERANGE)))
|
||||
off_station = 1
|
||||
else
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
/obj/item/supply_beacon
|
||||
name = "inactive supply beacon"
|
||||
icon = 'icons/obj/supplybeacon.dmi'
|
||||
desc = "An inactive, hacked supply beacon stamped with the "+starsys_name+" Rapid Fabrication logo. Good for one (1) ballistic supply pod shipment."
|
||||
desc = "An inactive, hacked supply beacon stamped with the local system's Rapid Fabrication logo. Good for one (1) ballistic supply pod shipment."
|
||||
icon_state = "beacon"
|
||||
var/deploy_path = /obj/machinery/power/supply_beacon
|
||||
var/deploy_time = 30
|
||||
@@ -114,6 +114,6 @@
|
||||
var/drop_x = src.x - 2
|
||||
var/drop_y = src.y - 2
|
||||
var/drop_z = src.z
|
||||
command_announcement.Announce(starsys_name+" Rapid Fabrication priority supply request #[rand(1000,9999)]-[rand(100,999)] recieved. Shipment dispatched via ballistic supply pod for immediate delivery. Have a nice day.", "Thank You For Your Patronage")
|
||||
command_announcement.Announce("[using_map.starsys_name] Rapid Fabrication priority supply request #[rand(1000,9999)]-[rand(100,999)] recieved. Shipment dispatched via ballistic supply pod for immediate delivery. Have a nice day.", "Thank You For Your Patronage")
|
||||
spawn(rand(100, 300))
|
||||
new /datum/random_map/droppod/supply(null, drop_x, drop_y, drop_z, supplied_drop = drop_type) // Splat.
|
||||
|
||||
@@ -93,7 +93,7 @@
|
||||
var/turf/T = get_turf(R)
|
||||
if(!T)
|
||||
continue
|
||||
if(!(T.z in config.player_levels))
|
||||
if(!(T.z in using_map.player_levels))
|
||||
continue
|
||||
var/tmpname = T.loc.name
|
||||
if(areaindex[tmpname])
|
||||
|
||||
@@ -181,7 +181,7 @@
|
||||
sleep(15)
|
||||
visible_message("\icon[src] <b>[src]</b> beeps: \"User DB corrupted \[Code 0x00FA\]. Truncating data structure...\"")
|
||||
sleep(30)
|
||||
visible_message("\icon[src] <b>[src]</b> beeps: \"User DB truncated. Please contact your [company_name] system operator for future assistance.\"")
|
||||
visible_message("\icon[src] <b>[src]</b> beeps: \"User DB truncated. Please contact your [using_map.company_name] system operator for future assistance.\"")
|
||||
req_access = null
|
||||
emagged = 1
|
||||
return 1
|
||||
|
||||
@@ -208,7 +208,7 @@
|
||||
sleep(15)
|
||||
visible_message("\icon[src] <b>[src]</b> beeps: \"User DB corrupted \[Code 0x00FA\]. Truncating data structure...\"")
|
||||
sleep(30)
|
||||
visible_message("\icon[src] <b>[src]</b> beeps: \"User DB truncated. Please contact your [company_name] system operator for future assistance.\"")
|
||||
visible_message("\icon[src] <b>[src]</b> beeps: \"User DB truncated. Please contact your [using_map.company_name] system operator for future assistance.\"")
|
||||
req_access = null
|
||||
emagged = 1
|
||||
return 1
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
var/area/A = get_area()
|
||||
var/text = {"<HTML><head><title>[src]</title></head><BODY>
|
||||
<h2>[station_name()] blueprints</h2>
|
||||
<small>Property of [company_name]. For heads of staff only. Store in high-secure storage.</small><hr>
|
||||
<small>Property of [using_map.company_name]. For heads of staff only. Store in high-secure storage.</small><hr>
|
||||
"}
|
||||
switch (get_area_type())
|
||||
if (AREA_SPACE)
|
||||
|
||||
@@ -35,7 +35,7 @@ AI MODULES
|
||||
return
|
||||
|
||||
if(ticker && ticker.mode && ticker.mode.name == "blob")
|
||||
usr << "Law uploads have been disabled by [company_name]!"
|
||||
usr << "Law uploads have been disabled by [using_map.company_name]!"
|
||||
return
|
||||
|
||||
if (comp.current.stat == 2 || comp.current.control_disabled == 1)
|
||||
|
||||
@@ -85,10 +85,10 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
body_parts_covered = 0
|
||||
var/lit = 0
|
||||
var/icon_on
|
||||
var/icon_off
|
||||
var/type_butt = null
|
||||
var/chem_volume = 0
|
||||
var/smoketime = 0
|
||||
var/is_pipe = 0 //Prevents a runtime with pipes
|
||||
var/matchmes = "USER lights NAME with FLAME"
|
||||
var/lightermes = "USER lights NAME with FLAME"
|
||||
var/zippomes = "USER lights NAME with FLAME"
|
||||
@@ -106,6 +106,9 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
smoketime--
|
||||
if(smoketime < 1)
|
||||
die()
|
||||
if(ishuman(loc))
|
||||
var/mob/living/carbon/human/C = loc
|
||||
to_chat(C, "<span class='notice'>Your [name] goes out.</span>")
|
||||
return
|
||||
if(location)
|
||||
location.hotspot_expose(700, 5)
|
||||
@@ -119,19 +122,20 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
|
||||
/obj/item/clothing/mask/smokable/examine(mob/user)
|
||||
..()
|
||||
if(lit == 1)
|
||||
var/smoke_percent = round((smoketime / initial(smoketime)) * 100)
|
||||
switch(smoke_percent)
|
||||
if(90 to INFINITY)
|
||||
user << "[src] has just begun to burn."
|
||||
if(60 to 90)
|
||||
user << "[src] has a good amount of burn time remaining."
|
||||
if(30 to 60)
|
||||
user << "[src] is about half finished."
|
||||
if(10 to 30)
|
||||
user << "[src] is starting to burn low."
|
||||
else
|
||||
user << "[src] is nearly burnt out!"
|
||||
if(is_pipe)
|
||||
return
|
||||
var/smoke_percent = round((smoketime / initial(smoketime)) * 100)
|
||||
switch(smoke_percent)
|
||||
if(90 to INFINITY)
|
||||
user << "[src] is still fresh."
|
||||
if(60 to 90)
|
||||
user << "[src] has a good amount of burn time remaining."
|
||||
if(30 to 60)
|
||||
user << "[src] is about half finished."
|
||||
if(10 to 30)
|
||||
user << "[src] is starting to burn low."
|
||||
else
|
||||
user << "[src] is nearly burnt out!"
|
||||
|
||||
|
||||
/obj/item/clothing/mask/smokable/proc/light(var/flavor_text = "[usr] lights the [name].")
|
||||
@@ -167,6 +171,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
/obj/item/clothing/mask/smokable/proc/die(var/nomessage = 0)
|
||||
var/turf/T = get_turf(src)
|
||||
set_light(0)
|
||||
processing_objects.Remove(src)
|
||||
if (type_butt)
|
||||
var/obj/item/butt = new type_butt(T)
|
||||
transfer_fingerprints_to(butt)
|
||||
@@ -175,12 +180,11 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
if(ismob(loc))
|
||||
var/mob/living/M = loc
|
||||
if (!nomessage)
|
||||
M << "<span class='notice'>Your [name] goes out.</span>"
|
||||
to_chat(M, "<span class='notice'>Your [name] goes out.</span>")
|
||||
M.remove_from_mob(src) //un-equip it so the overlays can update
|
||||
M.update_inv_wear_mask(0)
|
||||
M.update_inv_l_hand(0)
|
||||
M.update_inv_r_hand(1)
|
||||
processing_objects.Remove(src)
|
||||
qdel(src)
|
||||
else
|
||||
new /obj/effect/decal/cleanable/ash(T)
|
||||
@@ -189,12 +193,26 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
if (!nomessage)
|
||||
M << "<span class='notice'>Your [name] goes out, and you empty the ash.</span>"
|
||||
lit = 0
|
||||
icon_state = icon_off
|
||||
item_state = icon_off
|
||||
icon_state = initial(icon_state)
|
||||
item_state = initial(item_state)
|
||||
M.update_inv_wear_mask(0)
|
||||
M.update_inv_l_hand(0)
|
||||
M.update_inv_r_hand(1)
|
||||
processing_objects.Remove(src)
|
||||
smoketime = 0
|
||||
reagents.clear_reagents()
|
||||
name = "empty [initial(name)]"
|
||||
|
||||
/obj/item/clothing/mask/smokable/proc/quench()
|
||||
lit = 0
|
||||
processing_objects.Remove(src)
|
||||
icon_state = initial(icon_state)
|
||||
item_state = initial(item_state)
|
||||
|
||||
if(ismob(loc))
|
||||
var/mob/living/M = loc
|
||||
M.update_inv_wear_mask(0)
|
||||
M.update_inv_l_hand(0)
|
||||
M.update_inv_r_hand(1)
|
||||
|
||||
/obj/item/clothing/mask/smokable/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
..()
|
||||
@@ -223,6 +241,10 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/mask/smokable/water_act(amount)
|
||||
if(amount >= 5)
|
||||
quench()
|
||||
|
||||
/obj/item/clothing/mask/smokable/cigarette
|
||||
name = "cigarette"
|
||||
desc = "A roll of tobacco and nicotine."
|
||||
@@ -233,7 +255,6 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
slot_flags = SLOT_EARS | SLOT_MASK
|
||||
attack_verb = list("burnt", "singed")
|
||||
icon_on = "cigon" //Note - these are in masks.dmi not in cigarette.dmi
|
||||
icon_off = "cigoff"
|
||||
type_butt = /obj/item/weapon/cigbutt
|
||||
chem_volume = 15
|
||||
smoketime = 300
|
||||
@@ -269,8 +290,12 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
|
||||
/obj/item/clothing/mask/smokable/cigarette/attack_self(mob/user as mob)
|
||||
if(lit == 1)
|
||||
user.visible_message("<span class='notice'>[user] calmly drops and treads on the lit [src], putting it out instantly.</span>")
|
||||
die(1)
|
||||
if(user.a_intent == I_HURT)
|
||||
user.visible_message("<span class='notice'>[user] drops and treads on the lit [src], putting it out instantly.</span>")
|
||||
die(1)
|
||||
else
|
||||
user.visible_message("<span class='notice'>[user] puts out \the [src].</span>")
|
||||
quench()
|
||||
return ..()
|
||||
|
||||
////////////
|
||||
@@ -281,7 +306,6 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
desc = "A brown roll of tobacco and... well, you're not quite sure. This thing's huge!"
|
||||
icon_state = "cigar2off"
|
||||
icon_on = "cigar2on"
|
||||
icon_off = "cigar2off"
|
||||
type_butt = /obj/item/weapon/cigbutt/cigarbutt
|
||||
throw_speed = 0.5
|
||||
item_state = "cigaroff"
|
||||
@@ -298,14 +322,12 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
desc = "There's little more you could want from a cigar."
|
||||
icon_state = "cigar2off"
|
||||
icon_on = "cigar2on"
|
||||
icon_off = "cigar2off"
|
||||
|
||||
/obj/item/clothing/mask/smokable/cigarette/cigar/havana
|
||||
name = "premium Havanian cigar"
|
||||
desc = "A cigar fit for only the best of the best."
|
||||
icon_state = "cigar2off"
|
||||
icon_on = "cigar2on"
|
||||
icon_off = "cigar2off"
|
||||
smoketime = 7200
|
||||
chem_volume = 30
|
||||
|
||||
@@ -345,7 +367,6 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
icon_state = "pipeoff"
|
||||
item_state = "pipeoff"
|
||||
icon_on = "pipeon" //Note - these are in masks.dmi
|
||||
icon_off = "pipeoff"
|
||||
smoketime = 0
|
||||
chem_volume = 50
|
||||
matchmes = "<span class='notice'>USER lights their NAME with their FLAME.</span>"
|
||||
@@ -353,6 +374,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
zippomes = "<span class='rose'>With much care, USER lights their NAME with their FLAME.</span>"
|
||||
weldermes = "<span class='notice'>USER recklessly lights NAME with FLAME.</span>"
|
||||
ignitermes = "<span class='notice'>USER fiddles with FLAME, and manages to light their NAME with the power of science.</span>"
|
||||
is_pipe = 1
|
||||
|
||||
/obj/item/clothing/mask/smokable/pipe/New()
|
||||
..()
|
||||
@@ -375,18 +397,12 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
|
||||
/obj/item/clothing/mask/smokable/pipe/attack_self(mob/user as mob)
|
||||
if(lit == 1)
|
||||
user.visible_message("<span class='notice'>[user] puts out [src].</span>", "<span class='notice'>You put out [src].</span>")
|
||||
lit = 0
|
||||
icon_state = icon_off
|
||||
item_state = icon_off
|
||||
processing_objects.Remove(src)
|
||||
else if (smoketime)
|
||||
var/turf/location = get_turf(user)
|
||||
user.visible_message("<span class='notice'>[user] empties out [src].</span>", "<span class='notice'>You empty out [src].</span>")
|
||||
new /obj/effect/decal/cleanable/ash(location)
|
||||
smoketime = 0
|
||||
reagents.clear_reagents()
|
||||
name = "empty [initial(name)]"
|
||||
if(user.a_intent == I_HURT)
|
||||
user.visible_message("<span class='notice'>[user] empties the lit [src] on the floor!.</span>")
|
||||
die(1)
|
||||
else
|
||||
user.visible_message("<span class='notice'>[user] puts out \the [src].</span>")
|
||||
quench()
|
||||
|
||||
/obj/item/clothing/mask/smokable/pipe/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/weapon/melee/energy/sword))
|
||||
@@ -431,7 +447,6 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
icon_state = "cobpipeoff"
|
||||
item_state = "cobpipeoff"
|
||||
icon_on = "cobpipeon" //Note - these are in masks.dmi
|
||||
icon_off = "cobpipeoff"
|
||||
chem_volume = 35
|
||||
|
||||
/////////
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
/obj/item/weapon/circuitboard/security/New()
|
||||
..()
|
||||
network = station_networks
|
||||
network = using_map.station_networks
|
||||
|
||||
/obj/item/weapon/circuitboard/security/engineering
|
||||
name = T_BOARD("engineering camera monitor")
|
||||
|
||||
@@ -333,7 +333,7 @@ the implant may become unstable and either pre-maturely inject the subject or si
|
||||
/obj/item/weapon/implant/loyalty/get_data()
|
||||
var/dat = {"
|
||||
<b>Implant Specifications:</b><BR>
|
||||
<b>Name:</b> [company_name] Employee Management Implant<BR>
|
||||
<b>Name:</b> [using_map.company_name] Employee Management Implant<BR>
|
||||
<b>Life:</b> Ten years.<BR>
|
||||
<b>Important Notes:</b> Personnel injected with this device tend to be much more loyal to the company.<BR>
|
||||
<HR>
|
||||
@@ -349,11 +349,11 @@ the implant may become unstable and either pre-maturely inject the subject or si
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/datum/antagonist/antag_data = get_antag_data(H.mind.special_role)
|
||||
if(antag_data && (antag_data.flags & ANTAG_IMPLANT_IMMUNE))
|
||||
H.visible_message("[H] seems to resist the implant!", "You feel the corporate tendrils of [company_name] try to invade your mind!")
|
||||
H.visible_message("[H] seems to resist the implant!", "You feel the corporate tendrils of [using_map.company_name] try to invade your mind!")
|
||||
return 0
|
||||
else
|
||||
clear_antag_roles(H.mind, 1)
|
||||
H << "<span class='notice'>You feel a surge of loyalty towards [company_name].</span>"
|
||||
H << "<span class='notice'>You feel a surge of loyalty towards [using_map.company_name].</span>"
|
||||
return 1
|
||||
|
||||
|
||||
@@ -403,7 +403,7 @@ the implant may become unstable and either pre-maturely inject the subject or si
|
||||
/obj/item/weapon/implant/death_alarm/get_data()
|
||||
var/dat = {"
|
||||
<b>Implant Specifications:</b><BR>
|
||||
<b>Name:</b> [company_name] \"Profit Margin\" Class Employee Lifesign Sensor<BR>
|
||||
<b>Name:</b> [using_map.company_name] \"Profit Margin\" Class Employee Lifesign Sensor<BR>
|
||||
<b>Life:</b> Activates upon death.<BR>
|
||||
<b>Important Notes:</b> Alerts crew to crewmember death.<BR>
|
||||
<HR>
|
||||
@@ -481,7 +481,7 @@ the implant may become unstable and either pre-maturely inject the subject or si
|
||||
/obj/item/weapon/implant/compressed/get_data()
|
||||
var/dat = {"
|
||||
<b>Implant Specifications:</b><BR>
|
||||
<b>Name:</b> [company_name] \"Profit Margin\" Class Employee Lifesign Sensor<BR>
|
||||
<b>Name:</b> [using_map.company_name] \"Profit Margin\" Class Employee Lifesign Sensor<BR>
|
||||
<b>Life:</b> Activates upon death.<BR>
|
||||
<b>Important Notes:</b> Alerts crew to crewmember death.<BR>
|
||||
<HR>
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
throw_speed = 1
|
||||
throw_range = 5
|
||||
w_class = ITEMSIZE_SMALL
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 1000)
|
||||
var/obj/item/weapon/implant/imp = null
|
||||
|
||||
/obj/item/weapon/implanter/attack_self(var/mob/user)
|
||||
|
||||
@@ -751,7 +751,7 @@
|
||||
<br>
|
||||
<h1>The Oath</h1>
|
||||
|
||||
<i>The Medical Oath sworn by recognised medical practitioners in the employ of [company_name]</i><br>
|
||||
<i>The Medical Oath sworn by recognised medical practitioners in the employ of [using_map.company_name]</i><br>
|
||||
|
||||
<ol>
|
||||
<li>Now, as a new doctor, I solemnly promise that I will, to the best of my ability, serve humanity-caring for the sick, promoting good health, and alleviating pain and suffering.</li>
|
||||
|
||||
@@ -150,12 +150,14 @@
|
||||
//misc, formerly from code/defines/weapons.dm
|
||||
/obj/item/weapon/surgical/bonegel
|
||||
name = "bone gel"
|
||||
desc = "For fixing bones."
|
||||
icon_state = "bone-gel"
|
||||
force = 0
|
||||
throwforce = 1.0
|
||||
|
||||
/obj/item/weapon/surgical/FixOVein
|
||||
name = "FixOVein"
|
||||
desc = "Like bone gel. For veins."
|
||||
icon_state = "fixovein"
|
||||
force = 0
|
||||
throwforce = 1.0
|
||||
@@ -164,6 +166,7 @@
|
||||
|
||||
/obj/item/weapon/surgical/bonesetter
|
||||
name = "bone setter"
|
||||
desc = "Put them in their place."
|
||||
icon_state = "bone setter"
|
||||
force = 8.0
|
||||
throwforce = 9.0
|
||||
|
||||
@@ -32,6 +32,19 @@
|
||||
..()
|
||||
icon_state = "tree_[rand(1, 6)]"
|
||||
|
||||
/obj/structure/flora/tree/sif
|
||||
name = "glowing tree"
|
||||
desc = "It's a tree, except this one seems quite alien. It glows a deep blue."
|
||||
icon = 'icons/obj/flora/deadtrees.dmi'
|
||||
icon_state = "tree_sif"
|
||||
|
||||
/obj/structure/flora/tree/sif/New()
|
||||
update_icon()
|
||||
|
||||
/obj/structure/flora/tree/sif/update_icon()
|
||||
set_light(5, 1, "#33ccff")
|
||||
overlays.Cut()
|
||||
overlays.Add(image(icon = 'icons/obj/flora/deadtrees.dmi', icon_state = "[icon_state]_glow", layer = LIGHTING_LAYER + 0.1))
|
||||
|
||||
//grass
|
||||
/obj/structure/flora/grass
|
||||
|
||||
@@ -18,8 +18,9 @@
|
||||
|
||||
/obj/structure/toilet/attack_hand(mob/living/user as mob)
|
||||
if(swirlie)
|
||||
usr.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
|
||||
usr.visible_message("<span class='danger'>[user] slams the toilet seat onto [swirlie.name]'s head!</span>", "<span class='notice'>You slam the toilet seat onto [swirlie.name]'s head!</span>", "You hear reverberating porcelain.")
|
||||
swirlie.adjustBruteLoss(8)
|
||||
swirlie.adjustBruteLoss(5)
|
||||
return
|
||||
|
||||
if(cistern && !open)
|
||||
@@ -53,6 +54,7 @@
|
||||
return
|
||||
|
||||
if(istype(I, /obj/item/weapon/grab))
|
||||
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
|
||||
var/obj/item/weapon/grab/G = I
|
||||
|
||||
if(isliving(G.affecting))
|
||||
@@ -65,14 +67,14 @@
|
||||
if(open && !swirlie)
|
||||
user.visible_message("<span class='danger'>[user] starts to give [GM.name] a swirlie!</span>", "<span class='notice'>You start to give [GM.name] a swirlie!</span>")
|
||||
swirlie = GM
|
||||
if(do_after(user, 30, 5, 0))
|
||||
if(do_after(user, 30, GM))
|
||||
user.visible_message("<span class='danger'>[user] gives [GM.name] a swirlie!</span>", "<span class='notice'>You give [GM.name] a swirlie!</span>", "You hear a toilet flushing.")
|
||||
if(!GM.internal)
|
||||
GM.adjustOxyLoss(5)
|
||||
swirlie = null
|
||||
else
|
||||
user.visible_message("<span class='danger'>[user] slams [GM.name] into the [src]!</span>", "<span class='notice'>You slam [GM.name] into the [src]!</span>")
|
||||
GM.adjustBruteLoss(8)
|
||||
GM.adjustBruteLoss(5)
|
||||
else
|
||||
user << "<span class='notice'>You need a tighter grip.</span>"
|
||||
|
||||
|
||||
@@ -6,9 +6,13 @@
|
||||
round_time // time of the round at which this should be announced, in seconds
|
||||
message // body of the message
|
||||
author = "NanoTrasen Editor"
|
||||
channel_name = "The "+starsys_name+" Times"
|
||||
can_be_redacted = 0
|
||||
message_type = "Story"
|
||||
channel_name = null
|
||||
|
||||
New() // I'm sorry...
|
||||
..()
|
||||
channel_name = "The [using_map.starsys_name] Times"
|
||||
|
||||
revolution_inciting_event
|
||||
|
||||
@@ -66,7 +70,6 @@
|
||||
round_time = 60 * 50
|
||||
|
||||
found_ssd
|
||||
channel_name = "The "+starsys_name+" Times"
|
||||
author = "Doctor Eric Hanfield"
|
||||
|
||||
message = {"Several people have been found unconscious at their terminals. It is thought that it was due
|
||||
@@ -78,7 +81,6 @@
|
||||
lotus_tree
|
||||
|
||||
explosions
|
||||
channel_name = "The "+starsys_name+" Times"
|
||||
author = "Reporter Leland H. Howards"
|
||||
|
||||
message = {"The newly-christened civillian transport Lotus Tree suffered two very large explosions near the
|
||||
@@ -92,9 +94,7 @@
|
||||
food_riots
|
||||
|
||||
breaking_news
|
||||
channel_name = "The "+starsys_name+" Times"
|
||||
author = "Reporter Ro'kii Ar-Raqis"
|
||||
|
||||
message = {"Breaking news: Food riots have broken out throughout the Refuge asteroid colony in the Tenebrae
|
||||
Lupus system. This comes only hours after NanoTrasen officials announced they will no longer trade with the
|
||||
colony, citing the increased presence of \"hostile factions\" on the colony has made trade too dangerous to
|
||||
@@ -103,9 +103,7 @@
|
||||
round_time = 60 * 10
|
||||
|
||||
more
|
||||
channel_name = "The "+starsys_name+" Times"
|
||||
author = "Reporter Ro'kii Ar-Raqis"
|
||||
|
||||
message = {"More on the Refuge food riots: The Refuge Council has condemned NanoTrasen's withdrawal from
|
||||
the colony, claiming \"there has been no increase in anti-NanoTrasen activity\", and \"\[the only] reason
|
||||
NanoTrasen withdrew was because the \[Tenebrae Lupus] system's Phoron deposits have been completely mined out.
|
||||
|
||||
@@ -22,7 +22,7 @@ var/silent_ert = 0
|
||||
usr << "<span class='danger'>The round hasn't started yet!</span>"
|
||||
return
|
||||
if(send_emergency_team)
|
||||
usr << "<span class='danger'>[boss_name] has already dispatched an emergency response team!</span>"
|
||||
usr << "<span class='danger'>[using_map.boss_name] has already dispatched an emergency response team!</span>"
|
||||
return
|
||||
if(alert("Do you want to dispatch an Emergency Response Team?",,"Yes","No") != "Yes")
|
||||
return
|
||||
@@ -117,11 +117,11 @@ proc/trigger_armed_response_team(var/force = 0)
|
||||
|
||||
// there's only a certain chance a team will be sent
|
||||
if(!prob(send_team_chance))
|
||||
command_announcement.Announce("It would appear that an emergency response team was requested for [station_name()]. Unfortunately, we were unable to send one at this time.", "[boss_name]")
|
||||
command_announcement.Announce("It would appear that an emergency response team was requested for [station_name()]. Unfortunately, we were unable to send one at this time.", "[using_map.boss_name]")
|
||||
can_call_ert = 0 // Only one call per round, ladies.
|
||||
return
|
||||
if(silent_ert == 0)
|
||||
command_announcement.Announce("It would appear that an emergency response team was requested for [station_name()]. We will prepare and send one as soon as possible.", "[boss_name]")
|
||||
command_announcement.Announce("It would appear that an emergency response team was requested for [station_name()]. We will prepare and send one as soon as possible.", "[using_map.boss_name]")
|
||||
|
||||
can_call_ert = 0 // Only one call per round, gentleman.
|
||||
send_emergency_team = 1
|
||||
|
||||
@@ -263,7 +263,7 @@ var/list/mechtoys = list(
|
||||
slip.is_copy = 0
|
||||
slip.info = "<h3>[command_name()] Shipping Manifest</h3><hr><br>"
|
||||
slip.info +="Order #[SO.ordernum]<br>"
|
||||
slip.info +="Destination: [station_name]<br>"
|
||||
slip.info +="Destination: [station_name()]<br>"
|
||||
slip.info +="[shoppinglist.len] PACKAGES IN THIS SHIPMENT<br>"
|
||||
slip.info +="CONTENTS:<br><ul>"
|
||||
|
||||
|
||||
@@ -72,6 +72,9 @@ var/list/flooring_cache = list()
|
||||
if(!isnull(burnt) && (flooring.flags & TURF_CAN_BURN))
|
||||
overlays |= get_flooring_overlay("[flooring.icon_base]-burned-[burnt]","[flooring.icon_base]_burned[burnt]")
|
||||
|
||||
if(weather_overlay)
|
||||
overlays += weather_overlay
|
||||
|
||||
if(update_neighbors)
|
||||
for(var/turf/simulated/floor/F in range(src, 1))
|
||||
if(F == src)
|
||||
|
||||
6
code/game/turfs/simulated/outdoors/dirt.dm
Normal file
6
code/game/turfs/simulated/outdoors/dirt.dm
Normal file
@@ -0,0 +1,6 @@
|
||||
/turf/simulated/floor/outdoors/dirt
|
||||
name = "dirt"
|
||||
desc = "Quite dirty!"
|
||||
icon_state = "dirt-dark"
|
||||
edge_blending_priority = 1
|
||||
turf_layers = list(/turf/simulated/floor/outdoors/rocks)
|
||||
42
code/game/turfs/simulated/outdoors/grass.dm
Normal file
42
code/game/turfs/simulated/outdoors/grass.dm
Normal file
@@ -0,0 +1,42 @@
|
||||
var/list/grass_types = list(
|
||||
/obj/structure/flora/ausbushes/sparsegrass,
|
||||
/obj/structure/flora/ausbushes/fullgrass
|
||||
)
|
||||
|
||||
/turf/simulated/floor/outdoors/grass
|
||||
name = "grass"
|
||||
icon_state = "grass"
|
||||
edge_blending_priority = 3
|
||||
turf_layers = list(
|
||||
/turf/simulated/floor/outdoors/rocks,
|
||||
/turf/simulated/floor/outdoors/dirt
|
||||
)
|
||||
var/grass_chance = 20
|
||||
|
||||
/turf/simulated/floor/outdoors/grass/sif
|
||||
name = "growth"
|
||||
icon_state = "grass_sif"
|
||||
edge_blending_priority = 3
|
||||
grass_chance = 0
|
||||
|
||||
/turf/simulated/floor/outdoors/grass/New()
|
||||
if(prob(50))
|
||||
icon_state += "2"
|
||||
//edge_blending_priority++
|
||||
|
||||
if(grass_chance && prob(grass_chance))
|
||||
var/grass_type = pick(grass_types)
|
||||
new grass_type(src)
|
||||
..()
|
||||
|
||||
/turf/simulated/floor/outdoors/grass/forest
|
||||
name = "thick grass"
|
||||
icon_state = "grass-dark"
|
||||
grass_chance = 80
|
||||
//tree_prob = 20
|
||||
edge_blending_priority = 4
|
||||
|
||||
/turf/simulated/floor/outdoors/grass/sif/forest
|
||||
name = "thick growth"
|
||||
icon_state = "grass_sif_dark"
|
||||
edge_blending_priority = 4
|
||||
109
code/game/turfs/simulated/outdoors/outdoors.dm
Normal file
109
code/game/turfs/simulated/outdoors/outdoors.dm
Normal file
@@ -0,0 +1,109 @@
|
||||
var/list/turf_edge_cache = list()
|
||||
var/list/outdoor_turfs = list()
|
||||
|
||||
/turf/
|
||||
// If greater than 0, this turf will apply edge overlays on top of other turfs cardinally adjacent to it, if those adjacent turfs are of a different icon_state,
|
||||
// and if those adjacent turfs have a lower edge_blending_priority.
|
||||
var/edge_blending_priority = 0
|
||||
// Outdoors var determines if the game should consider the turf to be 'outdoors', which controls certain things such as weather effects.
|
||||
var/outdoors = FALSE
|
||||
// This holds the image for the current weather effect.
|
||||
var/image/weather_overlay = null
|
||||
|
||||
/turf/simulated/floor/outdoors
|
||||
name = "generic ground"
|
||||
desc = "Rather boring."
|
||||
icon = 'icons/turf/outdoors.dmi'
|
||||
icon_state = null
|
||||
edge_blending_priority = 1
|
||||
outdoors = TRUE // This variable is used for weather effects.
|
||||
// When a turf gets demoted or promoted, this list gets adjusted. The top-most layer is the layer on the bottom of the list, due to how pop() works.
|
||||
var/list/turf_layers = list(/turf/simulated/floor/outdoors/rocks)
|
||||
|
||||
/turf/simulated/floor/outdoors/initialize()
|
||||
update_icon()
|
||||
..()
|
||||
|
||||
/turf/simulated/floor/New()
|
||||
if(outdoors)
|
||||
outdoor_turfs.Add(src)
|
||||
..()
|
||||
|
||||
/turf/simulated/floor/Destroy()
|
||||
if(outdoors)
|
||||
outdoor_turfs.Remove(src)
|
||||
..()
|
||||
|
||||
/turf/simulated/floor/proc/update_icon_edge()
|
||||
if(edge_blending_priority)
|
||||
for(var/checkdir in cardinal)
|
||||
var/turf/simulated/T = get_step(src, checkdir)
|
||||
if(istype(T) && T.edge_blending_priority && edge_blending_priority < T.edge_blending_priority && icon_state != T.icon_state)
|
||||
var/cache_key = "[T.get_edge_icon_state()]-[checkdir]"
|
||||
if(!turf_edge_cache[cache_key])
|
||||
turf_edge_cache[cache_key] = image(icon = 'icons/turf/outdoors_edge.dmi', icon_state = "[T.get_edge_icon_state()]-edge", dir = checkdir)
|
||||
overlays += turf_edge_cache[cache_key]
|
||||
|
||||
/turf/simulated/proc/get_edge_icon_state()
|
||||
return icon_state
|
||||
|
||||
/turf/simulated/floor/outdoors/update_icon()
|
||||
overlays.Cut()
|
||||
update_icon_edge()
|
||||
..()
|
||||
|
||||
/turf/simulated/floor/outdoors/mud
|
||||
name = "grass"
|
||||
icon_state = "mud_dark"
|
||||
edge_blending_priority = 2
|
||||
|
||||
/turf/simulated/floor/outdoors/rocks
|
||||
name = "rocks"
|
||||
desc = "Hard as a rock."
|
||||
icon_state = "rock"
|
||||
edge_blending_priority = 1
|
||||
|
||||
|
||||
// This proc adds a 'layer' on top of the turf.
|
||||
/turf/simulated/floor/outdoors/proc/promote(var/new_turf_type)
|
||||
var/list/new_turf_layer_list = turf_layers.Copy()
|
||||
var/list/coords = list(x, y, z)
|
||||
|
||||
new_turf_layer_list.Add(src.type)
|
||||
|
||||
ChangeTurf(new_turf_type)
|
||||
var/turf/simulated/floor/outdoors/T = locate(coords[1], coords[2], coords[3])
|
||||
if(istype(T))
|
||||
T.turf_layers = new_turf_layer_list.Copy()
|
||||
|
||||
// This proc removes the topmost layer.
|
||||
/turf/simulated/floor/outdoors/proc/demote()
|
||||
if(!turf_layers.len)
|
||||
return // Cannot demote further.
|
||||
var/list/new_turf_layer_list = turf_layers.Copy()
|
||||
var/list/coords = list(x, y, z)
|
||||
|
||||
ChangeTurf(pop(new_turf_layer_list))
|
||||
var/turf/simulated/floor/outdoors/T = locate(coords[1], coords[2], coords[3])
|
||||
if(istype(T))
|
||||
T.turf_layers = new_turf_layer_list.Copy()
|
||||
|
||||
// Called by weather processes, and maybe technomancers in the future.
|
||||
/turf/simulated/floor/proc/chill()
|
||||
return
|
||||
|
||||
/turf/simulated/floor/outdoors/chill()
|
||||
promote(/turf/simulated/floor/outdoors/snow)
|
||||
|
||||
/turf/simulated/floor/outdoors/snow/chill()
|
||||
return // Todo: Add heavy snow.
|
||||
|
||||
/turf/simulated/floor/outdoors/ex_act(severity)
|
||||
switch(severity)
|
||||
if(2)
|
||||
if(prob(33))
|
||||
return
|
||||
if(3)
|
||||
if(prob(66))
|
||||
return
|
||||
demote()
|
||||
35
code/game/turfs/simulated/outdoors/snow.dm
Normal file
35
code/game/turfs/simulated/outdoors/snow.dm
Normal file
@@ -0,0 +1,35 @@
|
||||
/turf/simulated/floor/outdoors/snow
|
||||
name = "snow"
|
||||
icon_state = "snow"
|
||||
edge_blending_priority = 5
|
||||
movement_cost = 2
|
||||
turf_layers = list(
|
||||
/turf/simulated/floor/outdoors/rocks,
|
||||
/turf/simulated/floor/outdoors/dirt
|
||||
)
|
||||
var/list/crossed_dirs = list()
|
||||
|
||||
/turf/simulated/floor/outdoors/snow/Entered(atom/A)
|
||||
if(isliving(A))
|
||||
var/mdir = "[A.dir]"
|
||||
crossed_dirs[mdir] = 1
|
||||
update_icon()
|
||||
. = ..()
|
||||
|
||||
/turf/simulated/floor/outdoors/snow/update_icon()
|
||||
overlays.Cut()
|
||||
..()
|
||||
for(var/d in crossed_dirs)
|
||||
overlays += image(icon = 'icons/turf/outdoors.dmi', icon_state = "snow_footprints", dir = text2num(d))
|
||||
|
||||
/turf/simulated/floor/outdoors/snow/attackby(var/obj/item/W, var/mob/user)
|
||||
if(istype(W, /obj/item/weapon/shovel))
|
||||
to_chat(user, "<span class='notice'>You begin to remove \the [src] with your [W].</span>")
|
||||
if(do_after(user, 4 SECONDS))
|
||||
to_chat(user, "<span class='notice'>\The [src] has been dug up, and now lies in a pile nearby.</span>")
|
||||
new /obj/item/stack/material/snow(src)
|
||||
demote()
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You decide to not finish removing \the [src].</span>")
|
||||
else
|
||||
..()
|
||||
96
code/game/turfs/simulated/water.dm
Normal file
96
code/game/turfs/simulated/water.dm
Normal file
@@ -0,0 +1,96 @@
|
||||
// This doesn't inherit from /outdoors/ so that the pool can use it as well.
|
||||
/turf/simulated/floor/water
|
||||
name = "shallow water"
|
||||
desc = "A body of water. It seems shallow enough to walk through, if needed."
|
||||
icon = 'icons/turf/outdoors.dmi'
|
||||
icon_state = "water_shallow"
|
||||
var/under_state = "rock"
|
||||
edge_blending_priority = -1
|
||||
movement_cost = 4
|
||||
outdoors = TRUE
|
||||
var/movement_message = "You are slowed considerably from the water as you move across it." // Displayed to mobs crossing from one water tile to another.
|
||||
var/depth = 1 // Higher numbers indicates deeper water.
|
||||
|
||||
/turf/simulated/floor/water/New()
|
||||
update_icon()
|
||||
..()
|
||||
|
||||
/turf/simulated/floor/water/update_icon()
|
||||
..() // To get the edges. This also gets rid of other overlays so it needs to go first.
|
||||
var/image/floorbed_sprite = image(icon = 'icons/turf/outdoors.dmi', icon_state = under_state)
|
||||
underlays.Add(floorbed_sprite)
|
||||
update_icon_edge()
|
||||
|
||||
/turf/simulated/floor/water/get_edge_icon_state()
|
||||
return "water_shallow"
|
||||
|
||||
/turf/simulated/floor/water/return_air_for_internal_lifeform(var/mob/living/L)
|
||||
if(L && L.lying)
|
||||
if(L.can_breathe_water()) // For squid.
|
||||
var/datum/gas_mixture/water_breath = new()
|
||||
var/datum/gas_mixture/above_air = return_air()
|
||||
var/amount = 300
|
||||
water_breath.adjust_gas("oxygen", amount) // Assuming water breathes just extract the oxygen directly from the water.
|
||||
water_breath.temperature = above_air.temperature
|
||||
return water_breath
|
||||
else
|
||||
return null // Lying down means they're submerged, which means no air.
|
||||
return return_air() // Otherwise their head is above the water, so get the air from the atmosphere instead.
|
||||
|
||||
/turf/simulated/floor/water/Entered(atom/movable/AM, atom/oldloc)
|
||||
if(istype(AM, /mob/living))
|
||||
var/mob/living/L = AM
|
||||
L.update_water()
|
||||
if(!istype(oldloc, /turf/simulated/floor/water))
|
||||
to_chat(L, "<span class='warning'>You get drenched in water from entering \the [src]!</span>")
|
||||
else
|
||||
to_chat(L, "<span class='warning'>[movement_message]</span>")
|
||||
AM.water_act(5)
|
||||
..()
|
||||
|
||||
/turf/simulated/floor/water/Exited(atom/movable/AM, atom/newloc)
|
||||
if(istype(AM, /mob/living))
|
||||
var/mob/living/L = AM
|
||||
L.update_water()
|
||||
if(!istype(newloc, /turf/simulated/floor/water))
|
||||
to_chat(L, "<span class='warning'>You climb out of \the [src].</span>")
|
||||
..()
|
||||
|
||||
/turf/simulated/floor/water/deep
|
||||
name = "deep water"
|
||||
desc = "A body of water. It seems quite deep."
|
||||
icon_state = "seadeep" // So it shows up in the map editor as water.
|
||||
under_state = "abyss"
|
||||
edge_blending_priority = -2
|
||||
movement_cost = 8
|
||||
movement_message = "You swim forwards."
|
||||
depth = 2
|
||||
|
||||
/turf/simulated/floor/water/pool
|
||||
name = "pool"
|
||||
desc = "Don't worry, it's not closed."
|
||||
under_state = "pool"
|
||||
outdoors = FALSE
|
||||
|
||||
/mob/living/proc/can_breathe_water()
|
||||
return FALSE
|
||||
|
||||
/mob/living/carbon/human/can_breathe_water()
|
||||
if(species)
|
||||
return species.can_breathe_water()
|
||||
return ..()
|
||||
|
||||
/mob/living/proc/check_submerged()
|
||||
var/turf/simulated/floor/water/T = loc
|
||||
if(istype(T))
|
||||
return T.depth
|
||||
return 0
|
||||
|
||||
// Use this to have things react to having water applied to them.
|
||||
/atom/movable/proc/water_act(amount)
|
||||
return
|
||||
|
||||
/mob/living/water_act(amount)
|
||||
adjust_fire_stacks(amount * 5)
|
||||
for(var/atom/movable/AM in contents)
|
||||
AM.water_act(amount)
|
||||
@@ -25,6 +25,8 @@
|
||||
|
||||
var/list/decals
|
||||
|
||||
var/movement_cost = 0 // How much the turf slows down movement, if any.
|
||||
|
||||
/turf/New()
|
||||
..()
|
||||
for(var/atom/movable/AM as mob|obj in src)
|
||||
@@ -38,6 +40,9 @@
|
||||
else
|
||||
luminosity = 1
|
||||
|
||||
if(movement_cost && pathweight == 1) // This updates pathweight automatically.
|
||||
pathweight = movement_cost
|
||||
|
||||
/turf/Destroy()
|
||||
turfs -= src
|
||||
..()
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
var/old_dynamic_lighting = dynamic_lighting
|
||||
var/list/old_affecting_lights = affecting_lights
|
||||
var/old_lighting_overlay = lighting_overlay
|
||||
var/old_weather_overlay = weather_overlay
|
||||
|
||||
//world << "Replacing [src.type] with [N]"
|
||||
|
||||
@@ -42,6 +43,9 @@
|
||||
if(old_fire)
|
||||
fire = old_fire
|
||||
|
||||
if(old_weather_overlay)
|
||||
W.weather_overlay = old_weather_overlay
|
||||
|
||||
if (istype(W,/turf/simulated/floor))
|
||||
W.RemoveLattice()
|
||||
|
||||
@@ -55,6 +59,7 @@
|
||||
S.update_starlight()
|
||||
|
||||
W.levelupdate()
|
||||
W.update_icon(1)
|
||||
. = W
|
||||
|
||||
else
|
||||
@@ -64,6 +69,9 @@
|
||||
if(old_fire)
|
||||
old_fire.RemoveFire()
|
||||
|
||||
if(old_weather_overlay)
|
||||
W.weather_overlay = old_weather_overlay
|
||||
|
||||
if(tell_universe)
|
||||
universe.OnTurfChange(W)
|
||||
|
||||
@@ -74,6 +82,7 @@
|
||||
S.update_starlight()
|
||||
|
||||
W.levelupdate()
|
||||
W.update_icon(1)
|
||||
. = W
|
||||
|
||||
lighting_overlay = old_lighting_overlay
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
// This is a wall you surround the area of your "planet" with, that makes the atmosphere inside stay within bounds, even if canisters
|
||||
// are opened or other strange things occur.
|
||||
var/list/planetary_walls = list()
|
||||
|
||||
/turf/unsimulated/wall/planetary
|
||||
name = "railroading"
|
||||
desc = "Choo choo!"
|
||||
@@ -17,6 +19,14 @@
|
||||
phoron = 0
|
||||
temperature = T20C
|
||||
|
||||
/turf/unsimulated/wall/planetary/New()
|
||||
..()
|
||||
planetary_walls.Add(src)
|
||||
|
||||
/turf/unsimulated/wall/planetary/Destroy()
|
||||
planetary_walls.Remove(src)
|
||||
..()
|
||||
|
||||
// Normal station/earth air.
|
||||
/turf/unsimulated/wall/planetary/normal
|
||||
oxygen = MOLES_O2STANDARD
|
||||
@@ -44,4 +54,4 @@
|
||||
/turf/unsimulated/wall/planetary/desert
|
||||
oxygen = MOLES_O2STANDARD
|
||||
nitrogen = MOLES_N2STANDARD
|
||||
temperature = 310.92 // About 37.7C / 100F
|
||||
temperature = 310.92 // About 37.7C / 100F
|
||||
|
||||
@@ -25,16 +25,16 @@ var/global/list/global_map = null
|
||||
var/list/hit_appends = list("-OOF", "-ACK", "-UGH", "-HRNK", "-HURGH", "-GLORF")
|
||||
var/diary = null
|
||||
var/href_logfile = null
|
||||
var/station_name = "Virgo Orbital Research Establishment"
|
||||
var/const/station_orig = "Virgo Orbital Research Establishment" //station_name can't be const due to event prefix/suffix
|
||||
var/const/station_short = "V.O.R.E."
|
||||
var/const/dock_name = "Virgo-Erigone Central Command"
|
||||
var/const/boss_name = "Central Command"
|
||||
var/const/boss_short = "CentCom"
|
||||
var/const/company_name = "NanoTrasen"
|
||||
var/const/company_short = "NT"
|
||||
var/const/star_name = "Virgo-Erigone"
|
||||
var/const/starsys_name = "Virgo-Erigone"
|
||||
// var/station_name = "Northern Star"
|
||||
// var/const/station_orig = "Northern Star" //station_name can't be const due to event prefix/suffix
|
||||
// var/const/station_short = "Northern Star"
|
||||
// var/const/dock_name = "Vir Interstellar Spaceport"
|
||||
// var/const/boss_name = "Central Command"
|
||||
// var/const/boss_short = "CentCom"
|
||||
// var/const/company_name = "NanoTrasen"
|
||||
// var/const/company_short = "NT"
|
||||
// var/const/star_name = "Vir"
|
||||
// var/const/starsys_name = "Vir"
|
||||
var/const/game_version = "VOREStation"
|
||||
var/changelog_hash = ""
|
||||
var/game_year = (text2num(time2text(world.realtime, "YYYY")) + 544)
|
||||
|
||||
@@ -348,7 +348,7 @@ proc/admin_notice(var/message, var/rights)
|
||||
dat+={"<HR><B>Feed Security functions:</B><BR>
|
||||
<BR><A href='?src=\ref[src];ac_menu_wanted=1'>[(wanted_already) ? ("Manage") : ("Publish")] \"Wanted\" Issue</A>
|
||||
<BR><A href='?src=\ref[src];ac_menu_censor_story=1'>Censor Feed Stories</A>
|
||||
<BR><A href='?src=\ref[src];ac_menu_censor_channel=1'>Mark Feed Channel with [company_name] D-Notice (disables and locks the channel.</A>
|
||||
<BR><A href='?src=\ref[src];ac_menu_censor_channel=1'>Mark Feed Channel with [using_map.company_name] D-Notice (disables and locks the channel.</A>
|
||||
<BR><HR><A href='?src=\ref[src];ac_set_signature=1'>The newscaster recognises you as:<BR> <FONT COLOR='green'>[src.admincaster_signature]</FONT></A>
|
||||
"}
|
||||
if(1)
|
||||
@@ -414,7 +414,7 @@ proc/admin_notice(var/message, var/rights)
|
||||
dat+="<B>[src.admincaster_feed_channel.channel_name]: </B><FONT SIZE=1>\[created by: <FONT COLOR='maroon'>[src.admincaster_feed_channel.author]</FONT>\]</FONT><HR>"
|
||||
if(src.admincaster_feed_channel.censored)
|
||||
dat+={"
|
||||
<FONT COLOR='red'><B>ATTENTION: </B></FONT>This channel has been deemed as threatening to the welfare of the station, and marked with a [company_name] D-Notice.<BR>
|
||||
<FONT COLOR='red'><B>ATTENTION: </B></FONT>This channel has been deemed as threatening to the welfare of the station, and marked with a [using_map.company_name] D-Notice.<BR>
|
||||
No further feed story additions are allowed while the D-Notice is in effect.<BR><BR>
|
||||
"}
|
||||
else
|
||||
@@ -435,7 +435,7 @@ proc/admin_notice(var/message, var/rights)
|
||||
"}
|
||||
if(10)
|
||||
dat+={"
|
||||
<B>[company_name] Feed Censorship Tool</B><BR>
|
||||
<B>[using_map.company_name] Feed Censorship Tool</B><BR>
|
||||
<FONT SIZE=1>NOTE: Due to the nature of news Feeds, total deletion of a Feed Story is not possible.<BR>
|
||||
Keep in mind that users attempting to view a censored feed will instead see the \[REDACTED\] tag above it.</FONT>
|
||||
<HR>Select Feed channel to get Stories from:<BR>
|
||||
@@ -448,7 +448,7 @@ proc/admin_notice(var/message, var/rights)
|
||||
dat+="<BR><A href='?src=\ref[src];ac_setScreen=[0]'>Cancel</A>"
|
||||
if(11)
|
||||
dat+={"
|
||||
<B>[company_name] D-Notice Handler</B><HR>
|
||||
<B>[using_map.company_name] D-Notice Handler</B><HR>
|
||||
<FONT SIZE=1>A D-Notice is to be bestowed upon the channel if the handling Authority deems it as harmful for the station's
|
||||
morale, integrity or disciplinary behaviour. A D-Notice will render a channel unable to be updated by anyone, without deleting any feed
|
||||
stories it might contain at the time. You can lift a D-Notice if you have the required access at any time.</FONT><HR>
|
||||
@@ -481,7 +481,7 @@ proc/admin_notice(var/message, var/rights)
|
||||
"}
|
||||
if(src.admincaster_feed_channel.censored)
|
||||
dat+={"
|
||||
<FONT COLOR='red'><B>ATTENTION: </B></FONT>This channel has been deemed as threatening to the welfare of the station, and marked with a [company_name] D-Notice.<BR>
|
||||
<FONT COLOR='red'><B>ATTENTION: </B></FONT>This channel has been deemed as threatening to the welfare of the station, and marked with a [using_map.company_name] D-Notice.<BR>
|
||||
No further feed story additions are allowed while the D-Notice is in effect.<BR><BR>
|
||||
"}
|
||||
else
|
||||
|
||||
@@ -202,7 +202,9 @@ var/list/admin_verbs_debug = list(
|
||||
/client/proc/toggle_debug_logs,
|
||||
/client/proc/admin_ghost, //allows us to ghost/reenter body at will,
|
||||
/datum/admins/proc/view_runtimes,
|
||||
/client/proc/show_gm_status
|
||||
/client/proc/show_gm_status,
|
||||
/datum/admins/proc/change_weather,
|
||||
/datum/admins/proc/change_time
|
||||
)
|
||||
|
||||
var/list/admin_verbs_paranoid_debug = list(
|
||||
|
||||
@@ -19,7 +19,7 @@ var/list/admin_datums = list()
|
||||
error("Admin datum created without a ckey argument. Datum has been deleted")
|
||||
qdel(src)
|
||||
return
|
||||
admincaster_signature = "[company_name] Officer #[rand(0,9)][rand(0,9)][rand(0,9)]"
|
||||
admincaster_signature = "[using_map.company_name] Officer #[rand(0,9)][rand(0,9)][rand(0,9)]"
|
||||
rank = initial_rank
|
||||
rights = initial_rights
|
||||
admin_datums[ckey] = src
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
for(var/mob/living/carbon/human/H in mob_list)
|
||||
var/turf/T = get_turf(H)
|
||||
var/security = 0
|
||||
if((T && T in config.admin_levels) || prisonwarped.Find(H))
|
||||
if((T && T in using_map.admin_levels) || prisonwarped.Find(H))
|
||||
//don't warp them if they aren't ready or are already there
|
||||
continue
|
||||
H.Paralyse(5)
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
step_rand(W)
|
||||
|
||||
var/area/A = get_area(M)
|
||||
if(A.requires_power && !A.always_unpowered && A.power_light && (A.z in config.player_levels))
|
||||
if(A.requires_power && !A.always_unpowered && A.power_light && (A.z in using_map.player_levels))
|
||||
affected_areas |= get_area(M)
|
||||
|
||||
affected_mobs |= user
|
||||
|
||||
@@ -968,3 +968,46 @@
|
||||
return
|
||||
|
||||
error_cache.showTo(usr)
|
||||
|
||||
/datum/admins/proc/change_weather()
|
||||
set category = "Debug"
|
||||
set name = "Change Weather"
|
||||
set desc = "Changes the current weather."
|
||||
|
||||
if(!check_rights(R_DEBUG))
|
||||
return
|
||||
|
||||
var/datum/planet/planet = input(usr, "Which planet do you want to modify the weather on?", "Change Weather") in list(planet_sif)
|
||||
var/datum/weather/new_weather = input(usr, "What weather do you want to change to?", "Change Weather") as null|anything in planet.weather_holder.allowed_weather_types
|
||||
if(new_weather)
|
||||
planet.weather_holder.change_weather(new_weather)
|
||||
var/log = "[key_name(src)] changed [planet.name]'s weather to [new_weather]."
|
||||
message_admins(log)
|
||||
log_admin(log)
|
||||
|
||||
/datum/admins/proc/change_time()
|
||||
set category = "Debug"
|
||||
set name = "Change Planet Time"
|
||||
set desc = "Changes the time of a planet."
|
||||
|
||||
if(!check_rights(R_DEBUG))
|
||||
return
|
||||
|
||||
var/datum/planet/planet = input(usr, "Which planet do you want to modify time on?", "Change Time") in list(planet_sif)
|
||||
|
||||
var/datum/time/current_time_datum = planet.current_time
|
||||
var/new_hour = input(usr, "What hour do you want to change to?", "Change Time", text2num(current_time_datum.show_time("hh"))) as null|num
|
||||
if(!isnull(new_hour))
|
||||
var/new_minute = input(usr, "What minute do you want to change to?", "Change Time", text2num(current_time_datum.show_time("mm")) ) as null|num
|
||||
if(!isnull(new_minute))
|
||||
var/type_needed = current_time_datum.type
|
||||
var/datum/time/new_time = new type_needed()
|
||||
new_time = new_time.add_hours(new_hour)
|
||||
new_time = new_time.add_minutes(new_minute)
|
||||
planet.current_time = new_time
|
||||
spawn(1)
|
||||
planet.update_sun()
|
||||
|
||||
var/log = "[key_name(src)] changed [planet.name]'s time to [planet.current_time.show_time("hh:mm")]."
|
||||
message_admins(log)
|
||||
log_admin(log)
|
||||
@@ -17,7 +17,7 @@
|
||||
var/inactive_on_main_station = 0
|
||||
for(var/zone/zone in air_master.zones)
|
||||
var/turf/simulated/turf = locate() in zone.contents
|
||||
if(turf && turf.z in config.station_levels)
|
||||
if(turf && turf.z in using_map.station_levels)
|
||||
if(zone.needs_update)
|
||||
active_on_main_station++
|
||||
else
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
//log_admin("HELP: [key_name(src)]: [msg]")
|
||||
|
||||
/proc/CentCom_announce(var/msg, var/mob/Sender, var/iamessage)
|
||||
msg = "\blue <b><font color=orange>[uppertext(boss_short)]M[iamessage ? " IA" : ""]:</font>[key_name(Sender, 1)] (<A HREF='?_src_=holder;adminplayeropts=\ref[Sender]'>PP</A>) (<A HREF='?_src_=vars;Vars=\ref[Sender]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=\ref[Sender]'>SM</A>) ([admin_jump_link(Sender, src)]) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;BlueSpaceArtillery=\ref[Sender]'>BSA</A>) (<A HREF='?_src_=holder;CentComReply=\ref[Sender]'>RPLY</A>):</b> [msg]"
|
||||
msg = "\blue <b><font color=orange>[uppertext(using_map.boss_short)]M[iamessage ? " IA" : ""]:</font>[key_name(Sender, 1)] (<A HREF='?_src_=holder;adminplayeropts=\ref[Sender]'>PP</A>) (<A HREF='?_src_=vars;Vars=\ref[Sender]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=\ref[Sender]'>SM</A>) ([admin_jump_link(Sender, src)]) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;BlueSpaceArtillery=\ref[Sender]'>BSA</A>) (<A HREF='?_src_=holder;CentComReply=\ref[Sender]'>RPLY</A>):</b> [msg]"
|
||||
for(var/client/C in admins)
|
||||
if(R_ADMIN & C.holder.rights)
|
||||
C << msg
|
||||
|
||||
@@ -553,7 +553,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
if(!input)
|
||||
return
|
||||
if(!customname)
|
||||
customname = "[company_name] Update"
|
||||
customname = "[using_map.company_name] Update"
|
||||
for (var/obj/machinery/computer/communications/C in machines)
|
||||
if(! (C.stat & (BROKEN|NOPOWER) ) )
|
||||
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( C.loc )
|
||||
@@ -568,7 +568,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
if("Yes")
|
||||
command_announcement.Announce(input, customname, new_sound = 'sound/AI/commandreport.ogg', msg_sanitized = 1);
|
||||
if("No")
|
||||
world << "\red New [company_name] Update available at all communication consoles."
|
||||
world << "\red New [using_map.company_name] Update available at all communication consoles."
|
||||
world << sound('sound/AI/commandreport.ogg')
|
||||
|
||||
log_admin("[key_name(src)] has created a command report: [input]")
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
dat += "Locked on<BR>"
|
||||
dat += "<B>Charge progress: [reload]/180:</B><BR>"
|
||||
dat += "<A href='byond://?src=\ref[src];fire=1'>Open Fire</A><BR>"
|
||||
dat += "Deployment of weapon authorized by <br>[company_name] Naval Command<br><br>Remember, friendly fire is grounds for termination of your contract and life.<HR>"
|
||||
dat += "Deployment of weapon authorized by <br>[using_map.company_name] Naval Command<br><br>Remember, friendly fire is grounds for termination of your contract and life.<HR>"
|
||||
user << browse(dat, "window=scroll")
|
||||
onclose(user, "scroll")
|
||||
return
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
get_data()
|
||||
var/dat = {"
|
||||
<b>Implant Specifications:</b><BR>
|
||||
<b>Name:</b> [company_name] Employee Exile Implant<BR>
|
||||
<b>Name:</b> [using_map.company_name] Employee Exile Implant<BR>
|
||||
<b>Implant Details:</b> The onboard gateway system has been modified to reject entry by individuals containing this implant<BR>"}
|
||||
return dat
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
|
||||
/datum/category_item/player_setup_item/general/background/content(var/mob/user)
|
||||
. += "<b>Background Information</b><br>"
|
||||
. += "[company_name] Relation: <a href='?src=\ref[src];nt_relation=1'>[pref.nanotrasen_relation]</a><br/>"
|
||||
. += "[using_map.company_name] Relation: <a href='?src=\ref[src];nt_relation=1'>[pref.nanotrasen_relation]</a><br/>"
|
||||
. += "Home System: <a href='?src=\ref[src];home_system=1'>[pref.home_system]</a><br/>"
|
||||
. += "Citizenship: <a href='?src=\ref[src];citizenship=1'>[pref.citizenship]</a><br/>"
|
||||
. += "Faction: <a href='?src=\ref[src];faction=1'>[pref.faction]</a><br/>"
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
display_name = "Medical HUD Aviators (Medical)"
|
||||
path = /obj/item/clothing/glasses/sunglasses/medhud/aviator
|
||||
|
||||
/datum/gear/eyes/medical/aviator
|
||||
/datum/gear/eyes/medical/aviator/prescription
|
||||
display_name = "Medical HUD Aviators, prescription (Medical)"
|
||||
path = /obj/item/clothing/glasses/sunglasses/medhud/aviator/prescription
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ var/global/list/citizenship_choices = list(
|
||||
|
||||
var/global/list/home_system_choices = list(
|
||||
"Sol",
|
||||
starsys_name,
|
||||
"Vir",
|
||||
"Nyx",
|
||||
"Tau Ceti",
|
||||
"Qerr'Vallis",
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
desc = "It's hood that covers the head. It keeps you warm during the space winters."
|
||||
icon_state = "chaplain_hood"
|
||||
item_state_slots = list(slot_r_hand_str = "beret_black", slot_l_hand_str = "beret_black")
|
||||
flags_inv = BLOCKHAIR
|
||||
flags_inv = BLOCKHEADHAIR
|
||||
body_parts_covered = HEAD
|
||||
|
||||
//Chaplain
|
||||
@@ -43,7 +43,7 @@
|
||||
desc = "Maximum piety in this star system."
|
||||
icon_state = "nun_hood"
|
||||
item_state_slots = list(slot_r_hand_str = "beret_black", slot_l_hand_str = "beret_black")
|
||||
flags_inv = BLOCKHAIR
|
||||
flags_inv = BLOCKHEADHAIR
|
||||
body_parts_covered = HEAD
|
||||
|
||||
//Mime
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
desc = "It's unspeakably stylish"
|
||||
icon_state = "hasturhood"
|
||||
item_state_slots = list(slot_r_hand_str = "enginering_beret", slot_l_hand_str = "enginering_beret")
|
||||
flags_inv = BLOCKHAIR
|
||||
flags_inv = BLOCKHEADHAIR
|
||||
body_parts_covered = HEAD|FACE|EYES
|
||||
|
||||
/obj/item/clothing/head/nursehat
|
||||
|
||||
@@ -44,8 +44,7 @@
|
||||
icon_state = "beret_badge"
|
||||
item_state_slots = list(slot_r_hand_str = "beret", slot_l_hand_str = "beret")
|
||||
armor = list(melee = 65, bullet = 55, laser = 35,energy = 20, bomb = 30, bio = 30, rad = 30)
|
||||
item_flags = STOPPRESSUREDAMAGE
|
||||
flags_inv = BLOCKHAIR
|
||||
flags_inv = BLOCKHEADHAIR
|
||||
siemens_coefficient = 0.9
|
||||
|
||||
//Space santa outfit suit
|
||||
|
||||
@@ -117,7 +117,7 @@
|
||||
H << "<span class='warning'>You cannot teleport into solid walls.</span>"
|
||||
return 0
|
||||
|
||||
if(T.z in config.admin_levels)
|
||||
if(T.z in using_map.admin_levels)
|
||||
H << "<span class='warning'>You cannot use your teleporter on this Z-level.</span>"
|
||||
return 0
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
|
||||
/obj/item/clothing/suit/space
|
||||
name = "Space suit"
|
||||
desc = "A suit that protects against low pressure environments. \""+station_short+"\" is written in large block letters on the back."
|
||||
desc = "A suit that protects against low pressure environments."
|
||||
icon_state = "space"
|
||||
w_class = ITEMSIZE_HUGE // So you can't fit this in your bag and be prepared at all times.
|
||||
gas_transfer_coefficient = 0.01
|
||||
@@ -62,6 +62,10 @@
|
||||
|
||||
var/list/supporting_limbs //If not-null, automatically splints breaks. Checked when removing the suit.
|
||||
|
||||
/obj/item/clothing/suit/space/New()
|
||||
..()
|
||||
desc += " \"[using_map.station_short]\" is written in large block letters on the back."
|
||||
|
||||
/obj/item/clothing/suit/space/equipped(mob/M)
|
||||
check_limb_support(M)
|
||||
..()
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user