This commit is contained in:
Seris02
2019-11-21 13:08:23 +08:00
159 changed files with 1504 additions and 1004 deletions
@@ -339,10 +339,6 @@ Credit where due:
CLOCKCULTCHANGELOG\
</ul>\
<hr>\
<li><b>Zelus oil:</b> A new reagent. It can be used to heal the faithful to Ratvar, or kill heretics and moreso stun blood cultists,\
or splashed onto metal sheets to make brass. This chemical can be found in minimal quantities by grinding brass sheets.\
<li><b>Brass Flasks:</b>Intended to store Zelus Oil in, but can also be used as fragile single use throwing weapons in a pinch! \
These are crafted with a single sheet of brass and fit in the Clockwork Cuirass' suit storage.\
<b>Good luck!</b>"
/obj/item/paper/servant_primer/Initialize()
@@ -143,7 +143,6 @@
repeatable_weight_decrease = 2
requirements = list(60,50,40,30,30,30,30,30,30,30)
high_population_requirement = 30
repeatable = TRUE
/datum/dynamic_ruleset/event/meteor_wave/ready()
if(mode.threat_level > 40 && mode.threat >= 25 && prob(20))
@@ -107,11 +107,11 @@
candidates = pollGhostCandidates("The mode is looking for volunteers to become a [name]", antag_flag, SSticker.mode, antag_flag, poll_time = 300)
if(!candidates || candidates.len <= 0)
message_admins("The ruleset [name] received no applications.")
log_game("DYNAMIC: The ruleset [name] received no applications.")
if(!candidates || candidates.len <= required_candidates)
message_admins("The ruleset [name] did not receive enough applications.")
log_game("DYNAMIC: The ruleset [name] did not receive enough applications.")
mode.refund_threat(cost)
mode.log_threat("Rule [name] refunded [cost] (no applications)",verbose=TRUE)
mode.log_threat("Rule [name] refunded [cost] (not receive enough applications)",verbose=TRUE)
mode.executed_rules -= src
return
@@ -150,7 +150,7 @@
finish_setup(new_character, i)
assigned += applicant
notify_ghosts("[new_character] has been picked for the ruleset [name]!", source = new_character, action = NOTIFY_ORBIT, header="Something Interesting!")
notify_ghosts("[new_character] has been picked for the ruleset [name]!", source = new_character, action = NOTIFY_ORBIT)
/datum/dynamic_ruleset/midround/from_ghosts/proc/generate_ruleset_body(mob/applicant)
var/mob/living/carbon/human/new_character = makeBody(applicant)
@@ -283,6 +283,7 @@
/datum/dynamic_ruleset/midround/from_ghosts/wizard
name = "Wizard"
config_tag = "midround_wizard"
persistent = TRUE
antag_datum = /datum/antagonist/wizard
antag_flag = ROLE_WIZARD
enemy_roles = list("Security Officer","Detective","Head of Security", "Captain")
@@ -293,6 +294,7 @@
requirements = list(90,90,70,50,50,50,50,40,30,30)
high_population_requirement = 30
repeatable = TRUE
var/datum/mind/wizard
/datum/dynamic_ruleset/midround/from_ghosts/wizard/ready(forced = FALSE)
if (required_candidates > (dead_players.len + list_observers.len))
@@ -307,6 +309,20 @@
..()
new_character.forceMove(pick(GLOB.wizardstart))
/datum/dynamic_ruleset/midround/from_ghosts/wizard/rule_process() // i can literally copy this from are_special_antags_dead it's great
if(isliving(wizard.current) && wizard.current.stat!=DEAD)
return FALSE
for(var/obj/item/phylactery/P in GLOB.poi_list) //TODO : IsProperlyDead()
if(P.mind && P.mind.has_antag_datum(/datum/antagonist/wizard))
return FALSE
if(SSevents.wizardmode) //If summon events was active, turn it off
SSevents.toggleWizardmode()
SSevents.resetFrequency()
return RULESET_STOP_PROCESSING
//////////////////////////////////////////////
// //
// NUCLEAR OPERATIVES (MIDROUND) //
@@ -149,6 +149,7 @@
/datum/dynamic_ruleset/roundstart/wizard
name = "Wizard"
config_tag = "wizard"
persistent = TRUE
antag_flag = ROLE_WIZARD
antag_datum = /datum/antagonist/wizard
minimum_required_age = 14
@@ -183,8 +184,25 @@
for(var/datum/mind/M in assigned)
M.current.forceMove(pick(GLOB.wizardstart))
M.add_antag_datum(new antag_datum())
roundstart_wizards += M
return TRUE
/datum/dynamic_ruleset/roundstart/wizard/rule_process() // i can literally copy this from are_special_antags_dead it's great
for(var/datum/mind/wizard in roundstart_wizards)
if(isliving(wizard.current) && wizard.current.stat!=DEAD)
return FALSE
for(var/obj/item/phylactery/P in GLOB.poi_list) //TODO : IsProperlyDead()
if(P.mind && P.mind.has_antag_datum(/datum/antagonist/wizard))
return FALSE
if(SSevents.wizardmode) //If summon events was active, turn it off
SSevents.toggleWizardmode()
SSevents.resetFrequency()
return RULESET_STOP_PROCESSING
//////////////////////////////////////////////
// //
// BLOOD CULT //
@@ -263,7 +281,7 @@
requirements = list(100,90,80,70,60,50,50,50,50,50)
high_population_requirement = 50
flags = HIGHLANDER_RULESET
antag_cap = list(2,2,2,3,3,3,4,4,5,5)
antag_cap = list(1,1,2,3,4,5,5,5,5,5)
var/datum/team/nuclear/nuke_team
/datum/dynamic_ruleset/roundstart/nuclear/ready(forced = FALSE)
@@ -19,7 +19,7 @@
return
to_chat(user, "<span class='notice'>You start deconstructing the frame...</span>")
if(P.use_tool(src, user, 20, volume=50))
if(P.use_tool(src, user, 20, volume=50) && state == 0)
to_chat(user, "<span class='notice'>You deconstruct the frame.</span>")
var/obj/item/stack/sheet/metal/M = new (drop_location(), 5)
M.add_fingerprint(user)
@@ -28,7 +28,7 @@
if(1)
if(istype(P, /obj/item/wrench))
to_chat(user, "<span class='notice'>You start to unfasten the frame...</span>")
if(P.use_tool(src, user, 20, volume=50))
if(P.use_tool(src, user, 20, volume=50) && state == 1)
to_chat(user, "<span class='notice'>You unfasten the frame.</span>")
setAnchored(FALSE)
state = 0
@@ -72,9 +72,7 @@
if(!P.tool_start_check(user, amount=5))
return
to_chat(user, "<span class='notice'>You start adding cables to the frame...</span>")
if(P.use_tool(src, user, 20, volume=50, amount=5))
if(state != 2)
return
if(P.use_tool(src, user, 20, 5, 50, CALLBACK(src, .proc/check_state, 2)))
to_chat(user, "<span class='notice'>You add cables to the frame.</span>")
state = 3
icon_state = "3"
@@ -94,9 +92,7 @@
return
playsound(src, 'sound/items/deconstruct.ogg', 50, 1)
to_chat(user, "<span class='notice'>You start to put in the glass panel...</span>")
if(P.use_tool(src, user, 20, amount=2))
if(state != 3)
return
if(P.use_tool(src, user, 20, 2, 0, CALLBACK(src, .proc/check_state, 3)))
to_chat(user, "<span class='notice'>You put in the glass panel.</span>")
state = 4
src.icon_state = "4"
@@ -121,6 +117,11 @@
if(user.a_intent == INTENT_HARM)
return ..()
//callback proc used on stacks use_tool to stop unnecessary amounts being wasted from spam clicking.
/obj/structure/frame/computer/proc/check_state(target_state)
if(state == target_state)
return TRUE
return FALSE
/obj/structure/frame/computer/deconstruct(disassembled = TRUE)
if(!(flags_1 & NODECONSTRUCT_1))
+33 -31
View File
@@ -56,33 +56,34 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
/obj/machinery/computer/card/centcom/get_jobs()
return get_all_centcom_jobs()
/obj/machinery/computer/card/Initialize()
. = ..()
change_position_cooldown = CONFIG_GET(number/id_console_jobslot_delay)
/obj/machinery/computer/card/examine(mob/user)
. = ..()
if(inserted_scan_id || inserted_modify_id)
to_chat(user, "<span class='notice'>Alt-click to eject the ID card.</span>")
/obj/machinery/computer/card/Initialize()
. = ..()
change_position_cooldown = CONFIG_GET(number/id_console_jobslot_delay)
/obj/machinery/computer/card/attackby(obj/I, mob/user, params)
if(isidcard(I))
if(check_access(I) && !inserted_scan_id)
if(id_insert(user, I, inserted_scan_id))
inserted_scan_id = I
updateUsrDialog()
else if(!inserted_modify_id)
if(id_insert(user, I, inserted_modify_id))
inserted_modify_id = I
updateUsrDialog()
else if(id_insert(user, I, inserted_modify_id))
inserted_modify_id = I
updateUsrDialog()
else
return ..()
/obj/machinery/computer/card/Destroy()
if(inserted_scan_id)
QDEL_NULL(inserted_scan_id)
qdel(inserted_scan_id)
inserted_scan_id = null
if(inserted_modify_id)
QDEL_NULL(inserted_modify_id)
qdel(inserted_modify_id)
inserted_modify_id = null
return ..()
/obj/machinery/computer/card/handle_atom_del(atom/A)
@@ -106,7 +107,6 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
/obj/machinery/computer/card/proc/job_blacklisted(jobtitle)
return (jobtitle in blacklisted)
//Logic check for Topic() if you can open the job
/obj/machinery/computer/card/proc/can_open_job(datum/job/job)
if(job)
@@ -131,6 +131,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
return JOB_MAX_POSITIONS
return JOB_DENIED
/obj/machinery/computer/card/proc/id_insert(mob/user, obj/item/inserting_item, obj/item/target)
var/obj/item/card/id/card_to_insert = inserting_item
var/holder_item = FALSE
@@ -202,8 +203,8 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
if(job.title in blacklisted)
continue
dat += {"<td>[job.title]</td>
<td>[job.current_positions]/[job.total_positions]</td>
<td>"}
<td>[job.current_positions]/[job.total_positions]</td>
<td>"}
switch(can_open_job(job))
if(JOB_ALLOWED)
if(authenticated == 2)
@@ -224,7 +225,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
dat += "<a href='?src=[REF(src)];choice=make_job_unavailable;job=[job.title]'>Close Position</a>"
else
dat += "Close Position"
if(-JOB_COOLDOWN)
if(JOB_COOLDOWN)
var/time_to_wait = round(change_position_cooldown - ((world.time / 10) - GLOB.time_last_changed_position), 1)
var/mins = round(time_to_wait / 60)
var/seconds = time_to_wait - (60*mins)
@@ -251,6 +252,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
dat += "</table>"
else
var/list/header = list()
var/scan_name = inserted_scan_id ? html_encode(inserted_scan_id.name) : "--------"
var/target_name = inserted_modify_id ? html_encode(inserted_modify_id.name) : "--------"
var/target_owner = (inserted_modify_id && inserted_modify_id.registered_name) ? html_encode(inserted_modify_id.registered_name) : "--------"
@@ -261,7 +263,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
Target: <a href='?src=[REF(src)];choice=inserted_modify_id'>[target_name]</a><br>
Confirm Identity: <a href='?src=[REF(src)];choice=inserted_scan_id'>[scan_name]</a><br>"}
else
header += {"<div align='center'><br>"
header += {"<div align='center'><br>
Target: <a href='?src=[REF(src)];choice=inserted_modify_id'>Remove [target_name]</a> ||
Confirm Identity: <a href='?src=[REF(src)];choice=inserted_scan_id'>Remove [scan_name]</a><br>
<a href='?src=[REF(src)];choice=mode;mode_target=1'>Access Crew Manifest</a><br>
@@ -297,7 +299,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
allJobsSlot.innerHTML = "<a href='#' onclick='showAll()'>show</a>";
}
</script>"}
carddesc += {"<form name='cardcomp' action='?src=[REF(src)]' method='get'>"
carddesc += {"<form name='cardcomp' action='?src=[REF(src)]' method='get'>
<input type='hidden' name='src' value='[REF(src)]'>
<input type='hidden' name='choice' value='reg'>
<b>registered name:</b> <input type='text' id='namefield' name='reg' value='[target_owner]' style='width:250px; background-color:white;' onchange='markRed()'>
@@ -312,7 +314,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
jobs += "<b>Assignment:</b> [target_rank] (<a href='?src=[REF(src)];choice=demote'>Demote</a>)</span>"
var/list/accesses = list()
if(istype(src, /obj/machinery/computer/card/centcom)) //REE
if(istype(src, /obj/machinery/computer/card/centcom)) // REE
accesses += "<h5>Central Command:</h5>"
for(var/A in get_all_centcom_access())
if(A in inserted_modify_id.access)
@@ -340,13 +342,13 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
accesses += "<br>"
accesses += "</td>"
accesses += "</tr></table>"
body = "[carddesc.Join()]<br>[jobs]<br><br>[accesses.Join()]<hr>" //CHECK THIS
body = "[carddesc.Join()]<br>[jobs.Join()]<br><br>[accesses.Join()]<hr>" //CHECK THIS
else if (!authenticated)
body = {"<a href='?src=[REF(src)];choice=auth'>Log In</a> <br><hr>
body = {"<a href='?src=[REF(src)];choice=auth'>Log In</a><br><hr>
<a href='?src=[REF(src)];choice=mode;mode_target=1'>Access Crew Manifest</a><br><hr>"}
if(!target_dept)
body += "<br><hr><a href='?src=[REF(src)];choice=mode;mode_target=2'>Job Management</a><hr>"
body += "<a href='?src=[REF(src)];choice=mode;mode_target=2'>Job Management</a><hr>"
dat = list("<tt>", header.Join(), body, "<br></tt>")
var/datum/browser/popup = new(user, "id_com", src.name, 900, 620)
@@ -366,7 +368,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
usr.set_machine(src)
switch(href_list["choice"])
if ("inserted_modify_id")
if (inserted_modify_id && !usr.get_active_held_item())
if(inserted_modify_id && !usr.get_active_held_item())
if(id_eject(usr, inserted_modify_id))
inserted_modify_id = null
updateUsrDialog()
@@ -378,7 +380,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
inserted_modify_id = id_to_insert
updateUsrDialog()
if ("inserted_scan_id")
if (inserted_scan_id && !usr.get_active_held_item())
if(inserted_scan_id && !usr.get_active_held_item())
if(id_eject(usr, inserted_scan_id))
inserted_scan_id = null
updateUsrDialog()
@@ -386,7 +388,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
if(usr.get_id_in_hand())
var/obj/item/held_item = usr.get_active_held_item()
var/obj/item/card/id/id_to_insert = held_item.GetID()
if(id_insert(usr, held_item, inserted_modify_id))
if(id_insert(usr, held_item, inserted_scan_id))
inserted_scan_id = id_to_insert
updateUsrDialog()
if ("auth")
@@ -462,7 +464,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
updateUsrDialog()
break
if(!jobdatum)
to_chat(usr, "<span class='error'>No log exists for this job.</span>")
to_chat(usr, "<span class='alert'>No log exists for this job.</span>")
updateUsrDialog()
return
@@ -475,7 +477,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
inserted_modify_id.assignment = "Unassigned"
playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, FALSE)
else
to_chat(usr, "<span class='error'>You are not authorized to demote this position.</span>")
to_chat(usr, "<span class='alert'>You are not authorized to demote this position.</span>")
if ("reg")
if (authenticated)
var/t2 = inserted_modify_id
@@ -485,7 +487,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
inserted_modify_id.registered_name = newName
playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, FALSE)
else
to_chat(usr, "<span class='error'>Invalid name entered.</span>")
to_chat(usr, "<span class='alert'>Invalid name entered.</span>")
updateUsrDialog()
return
if ("mode")
@@ -498,7 +500,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
if("make_job_available")
// MAKE ANOTHER JOB POSITION AVAILABLE FOR LATE JOINERS
if(authenticated && (ACCESS_CHANGE_IDS in inserted_scan_id.access) && !target_dept)
if(authenticated && !target_dept)
var/edit_job_target = href_list["job"]
var/datum/job/j = SSjob.GetJob(edit_job_target)
if(!j)
@@ -515,7 +517,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
if("make_job_unavailable")
// MAKE JOB POSITION UNAVAILABLE FOR LATE JOINERS
if(authenticated && (ACCESS_CHANGE_IDS in inserted_scan_id.access) && !target_dept)
if(authenticated && !target_dept)
var/edit_job_target = href_list["job"]
var/datum/job/j = SSjob.GetJob(edit_job_target)
if(!j)
@@ -533,7 +535,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
if ("prioritize_job")
// TOGGLE WHETHER JOB APPEARS AS PRIORITIZED IN THE LOBBY
if(authenticated && (ACCESS_CHANGE_IDS in inserted_scan_id.access) && !target_dept)
if(authenticated && !target_dept)
var/priority_target = href_list["job"]
var/datum/job/j = SSjob.GetJob(priority_target)
if(!j)
@@ -549,7 +551,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
return
else
SSjob.prioritized_jobs += j
to_chat(usr, "<span class='notice'>[j.title] has been successfully [priority ? "prioritized" : "unprioritized"]. Potential employees will notice your request.</span>")
to_chat(usr, "<span class='notice'>[j.title] has been successfully [priority ? "prioritized" : "unprioritized"]. Potential employees will notice your request.</span>")
playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, FALSE)
if ("print")
@@ -625,4 +627,4 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
#undef JOB_ALLOWED
#undef JOB_COOLDOWN
#undef JOB_MAX_POSITIONS
#undef JOB_DENIED
#undef JOB_DENIED
+1 -1
View File
@@ -9,7 +9,7 @@
/turf/open/floor/mech_bay_recharge_floor/airless
icon_state = "recharge_floor_asteroid"
initial_gas_mix = "TEMP=2.7"
initial_gas_mix = AIRLESS_ATMOS
/obj/machinery/mech_bay_recharge_port
name = "mech bay power port"
+10 -3
View File
@@ -17,8 +17,15 @@
hud.add_hud_to(H)
/obj/mecha/medical/odysseus/go_out()
if(ishuman(occupant))
var/mob/living/carbon/human/H = occupant
if(isliving(occupant))
var/mob/living/carbon/human/L = occupant
var/datum/atom_hud/hud = GLOB.huds[DATA_HUD_MEDICAL_ADVANCED]
hud.remove_hud_from(H)
hud.remove_hud_from(L)
..()
/obj/mecha/medical/odysseus/mmi_moved_inside(obj/item/mmi/mmi_as_oc, mob/user)
. = ..()
if(.)
var/datum/atom_hud/hud = GLOB.huds[DATA_HUD_MEDICAL_ADVANCED]
var/mob/living/brain/B = mmi_as_oc.brainmob
hud.add_hud_to(B)
+14 -11
View File
@@ -163,8 +163,6 @@ RLD
var/use_one_access = 0 //If the airlock should require ALL or only ONE of the listed accesses.
var/delay_mod = 1
var/canRturf = FALSE //Variable for R walls to deconstruct them
var/adjacency_check = TRUE //Wheter it checks if the tool has to be in our hands or not. Wsed for the aux base construction drone's internal RCD
/obj/item/construction/rcd/suicide_act(mob/user)
user.visible_message("<span class='suicide'>[user] sets the RCD to 'Wall' and points it down [user.p_their()] throat! It looks like [user.p_theyre()] trying to commit suicide..</span>")
@@ -227,11 +225,10 @@ RLD
t1 += "<p><a href='?src=[REF(src)];close=1'>Close</a></p>\n"
var/datum/browser/popup = new(user, "rcd_access", "Access Control", 900, 500)
var/datum/browser/popup = new(user, "rcd_access", "Access Control", 900, 500, src)
popup.set_content(t1)
popup.set_title_image(user.browse_rsc_icon(icon, icon_state))
popup.open()
onclose(user, "rcd_access")
/obj/item/construction/rcd/Topic(href, href_list)
..()
@@ -275,7 +272,7 @@ RLD
/obj/item/construction/rcd/proc/check_menu(mob/living/user)
if(!istype(user))
return FALSE
if(user.incapacitated() || (adjacency_check && !user.Adjacent(src)))
if(user.incapacitated() || !user.Adjacent(src))
return FALSE
return TRUE
@@ -288,7 +285,7 @@ RLD
"SOUTH" = image(icon = 'icons/mob/radial.dmi', icon_state = "csouth"),
"WEST" = image(icon = 'icons/mob/radial.dmi', icon_state = "cwest")
)
var/computerdirs = show_radial_menu(user, src, computer_dirs, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = adjacency_check, tooltips = TRUE)
var/computerdirs = show_radial_menu(user, src, computer_dirs, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE, tooltips = TRUE)
if(!check_menu(user))
return
switch(computerdirs)
@@ -347,13 +344,13 @@ RLD
"External Maintenance" = get_airlock_image(/obj/machinery/door/airlock/maintenance/external/glass)
)
var/airlockcat = show_radial_menu(user, src, solid_or_glass_choices, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = adjacency_check)
var/airlockcat = show_radial_menu(user, src, solid_or_glass_choices, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE)
if(!check_menu(user))
return
switch(airlockcat)
if("Solid")
if(advanced_airlock_setting == 1)
var/airlockpaint = show_radial_menu(user, src, solid_choices, radius = 42, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = adjacency_check)
var/airlockpaint = show_radial_menu(user, src, solid_choices, radius = 42, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE)
if(!check_menu(user))
return
switch(airlockpaint)
@@ -398,7 +395,7 @@ RLD
if("Glass")
if(advanced_airlock_setting == 1)
var/airlockpaint = show_radial_menu(user, src , glass_choices, radius = 42, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = adjacency_check)
var/airlockpaint = show_radial_menu(user, src , glass_choices, radius = 42, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE)
if(!check_menu(user))
return
switch(airlockpaint)
@@ -557,6 +554,7 @@ RLD
desc = "A device used to rapidly build walls and floors."
canRturf = TRUE
upgrade = TRUE
var/energyfactor = 72
/obj/item/construction/rcd/borg/useResource(amount, mob/user)
@@ -567,7 +565,7 @@ RLD
if(user)
to_chat(user, no_ammo_message)
return 0
. = borgy.cell.use(amount * 72) //borgs get 1.3x the use of their RCDs
. = borgy.cell.use(amount * energyfactor) //borgs get 1.3x the use of their RCDs
if(!. && user)
to_chat(user, no_ammo_message)
return .
@@ -580,11 +578,16 @@ RLD
if(user)
to_chat(user, no_ammo_message)
return 0
. = borgy.cell.charge >= (amount * 72)
. = borgy.cell.charge >= (amount * energyfactor)
if(!. && user)
to_chat(user, no_ammo_message)
return .
/obj/item/construction/rcd/borg/syndicate
icon_state = "ircd"
item_state = "ircd"
energyfactor = 66
/obj/item/construction/rcd/loaded
matter = 160
+19 -3
View File
@@ -9,10 +9,10 @@
// Possible restyles for the cutout;
// add an entry in change_appearance() if you add to here
var/list/possible_appearances = list("Assistant", "Clown", "Mime",
"Traitor", "Nuke Op", "Cultist", "Clockwork Cultist",
"Traitor", "Nuke Op", "Cultist", "Brass Cultist", "Clockwork Cultist",
"Revolutionary", "Wizard", "Shadowling", "Xenomorph", "Xenomorph Maid", "Swarmer",
"Ash Walker", "Deathsquad Officer", "Ian", "Slaughter Demon",
"Laughter Demon", "Private Security Officer")
"Laughter Demon", "Private Security Officer", "Securitron", "Gondola", "Monkey")
var/pushed_over = FALSE //If the cutout is pushed over and has to be righted
var/deceptive = FALSE //If the cutout actually appears as what it portray and not a discolored version
@@ -123,10 +123,14 @@
name = "Unknown"
desc = "A cardboard cutout of a cultist."
icon_state = "cutout_cultist"
if("Brass Cultist")
name = "[pick(GLOB.first_names_male)] [pick(GLOB.last_names)]"
desc = "A cardboard cutout of a \"servant\" of Ratvar."
icon_state = "cutout_servant"
if("Clockwork Cultist")
name = "[pick(GLOB.first_names_male)] [pick(GLOB.last_names)]"
desc = "A cardboard cutout of a servant of Ratvar."
icon_state = "cutout_servant"
icon_state = "cutout_new_servant"
if("Revolutionary")
name = "Unknown"
desc = "A cardboard cutout of a revolutionary."
@@ -179,6 +183,18 @@
name = "Private Security Officer"
desc = "A cardboard cutout of a private security officer."
icon_state = "cutout_ntsec"
if("Securitron")
name = "[pick("Officer", "Oftiser", "Sergeant", "General")][pick(" Genesky", " Pingsky", " Beepsky", " Pipsqueak", "-at-Armsky")]"
desc = "A cardboard cutout of a securitron."
icon_state = "cutout_law"
if("Gondola")
name = "gondola"
desc = "A cardboard cutout of a gondola."
icon_state = "cutout_gondola"
if("Monkey")
name = "monkey ([rand(1, 999)])"
desc = "A cardboard cutout of a monkey."
icon_state = "cutout_monky"
return 1
/obj/item/cardboard_cutout/setDir(newdir)
+18 -6
View File
@@ -111,13 +111,15 @@
throw_speed = 3
throw_range = 7
attack_verb = list("HONKED")
var/moodlet = "honk" //used to define which kind of moodlet is added to the honked target
var/honksound = 'sound/items/bikehorn.ogg'
/obj/item/bikehorn/Initialize()
. = ..()
AddComponent(/datum/component/squeak, list('sound/items/bikehorn.ogg'=1), 50)
AddComponent(/datum/component/squeak, list(honksound=1), 50)
/obj/item/bikehorn/attack(mob/living/carbon/M, mob/living/carbon/user)
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "honk", /datum/mood_event/honk)
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, moodlet, /datum/mood_event/honk)
return ..()
/obj/item/bikehorn/suicide_act(mob/user)
@@ -130,10 +132,7 @@
name = "air horn"
desc = "Damn son, where'd you find this?"
icon_state = "air_horn"
/obj/item/bikehorn/airhorn/Initialize()
. = ..()
AddComponent(/datum/component/squeak, list('sound/items/airhorn2.ogg'=1), 50)
honksound = 'sound/items/airhorn2.ogg'
//golden bikehorn
/obj/item/bikehorn/golden
@@ -163,6 +162,19 @@
M.emote("flip")
flip_cooldown = world.time + 7
/obj/item/bikehorn/silver
name = "silver bike horn"
desc = "A shiny bike horn handcrafted in the artisan workshops of Mars, with superior kevlar-reinforced rubber bulb attached to a polished plasteel reed horn."
attack_verb = list("elegantly HONKED")
icon_state = "silverhorn"
/obj/item/bikehorn/bluespacehonker
name = "bluespace bike horn"
desc = "A normal bike horn colored blue and has bluespace dust held in to reed horn allowing for silly honks through space and time, into your in childhood."
attack_verb = list("HONKED in bluespace", "HONKED", "quantumly HONKED")
icon_state = "bluespacehonker"
moodlet = "bshonk"
//canned laughter
/obj/item/reagent_containers/food/drinks/soda_cans/canned_laughter
name = "Canned Laughter"
@@ -134,7 +134,6 @@
var/voracious = hound ? TRUE : FALSE
var/list/targets = target && hound ? list(target) : contents
if(hound)
hound.setClickCooldown(50)
if(!hound.client || !(hound.client.prefs.cit_toggles & MEDIHOUND_SLEEPER))
voracious = FALSE
else
@@ -447,7 +446,7 @@
if (!target.devourable)
to_chat(user, "The target registers an error code. Unable to insert into [src].")
return
if(target)
if(patient)
to_chat(user,"<span class='warning'>Your [src] is already occupied.</span>")
return
if(target.buckled)
@@ -524,3 +523,7 @@
update_gut()
user.visible_message("<span class='warning'>[hound.name]'s garbage processor groans lightly as [trashman] slips inside.</span>", "<span class='notice'>Your garbage compactor groans lightly as [trashman] slips inside.</span>")
playsound(hound, 'sound/effects/bin_close.ogg', 80, 1)
/obj/item/dogborg/sleeper/K9/flavour
name = "Mobile Sleeper"
desc = "A mounted, underslung sleeper, intended for holding willing occupants for leisurely purposes."
@@ -247,6 +247,8 @@
/obj/item/multitool/cyborg
name = "multitool"
desc = "Optimised and stripped-down version of a regular multitool."
icon = 'icons/obj/items_cyborg.dmi'
icon_state = "multitool_cyborg"
toolspeed = 0.5
/obj/item/multitool/abductor
+44
View File
@@ -755,3 +755,47 @@
righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi'
w_class = WEIGHT_CLASS_NORMAL
attack_verb = list("bashes", "smacks", "whacks")
/obj/item/nullrod/rosary
icon_state = "rosary"
item_state = null
name = "prayer beads"
desc = "A set of prayer beads used by many of the more traditional religions in space"
force = 4
throwforce = 0
attack_verb = list("whipped", "repented", "lashed", "flagellated")
var/praying = FALSE
var/deity_name = "Coderbus" //This is the default, hopefully won't actually appear if the religion subsystem is running properly
/obj/item/nullrod/rosary/Initialize()
.=..()
if(GLOB.deity)
deity_name = GLOB.deity
/obj/item/nullrod/rosary/attack(mob/living/M, mob/living/user)
if(user.a_intent == INTENT_HARM)
return ..()
if(!user.mind || user.mind.assigned_role != "Chaplain")
to_chat(user, "<span class='notice'>You are not close enough with [deity_name] to use [src].</span>")
return
if(praying)
to_chat(user, "<span class='notice'>You are already using [src].</span>")
return
user.visible_message("<span class='info'>[user] kneels[M == user ? null : " next to [M]"] and begins to utter a prayer to [deity_name].</span>", \
"<span class='info'>You kneel[M == user ? null : " next to [M]"] and begin a prayer to [deity_name].</span>")
praying = TRUE
if(do_after(user, 20, target = M))
M.reagents?.add_reagent("holywater", 5)
to_chat(M, "<span class='notice'>[user]'s prayer to [deity_name] has eased your pain!</span>")
M.adjustToxLoss(-5, TRUE, TRUE)
M.adjustOxyLoss(-5)
M.adjustBruteLoss(-5)
M.adjustFireLoss(-5)
praying = FALSE
else
to_chat(user, "<span class='notice'>Your prayer to [deity_name] was interrupted.</span>")
praying = FALSE
+6
View File
@@ -1014,3 +1014,9 @@
icon_state = "maya"
item_state = "maya"
attack_verb = list("nuked", "arrested", "harmbatonned")
/obj/item/toy/plush/catgirl/marisa
desc = "An adorable stuffed toy that resembles a crew member, or maybe a witch. Having it makes you feel you can win."
icon_state = "marisa"
item_state = "marisa"
attack_verb = list("blasted", "sparked", "dazzled")
@@ -203,7 +203,7 @@
desc = "A trash bag of holding replacement for the janiborg's standard trash bag."
icon_state = "cyborg_upgrade3"
require_module = 1
module_type = list(/obj/item/robot_module/janitor, /obj/item/robot_module/scrubpup)
module_type = list(/obj/item/robot_module/butler)
/obj/item/borg/upgrade/tboh/action(mob/living/silicon/robot/R)
. = ..()
@@ -230,7 +230,7 @@
desc = "An advanced mop replacement for the janiborg's standard mop."
icon_state = "cyborg_upgrade3"
require_module = 1
module_type = list(/obj/item/robot_module/janitor, /obj/item/robot_module/scrubpup)
module_type = list(/obj/item/robot_module/butler)
/obj/item/borg/upgrade/amop/action(mob/living/silicon/robot/R)
. = ..()
@@ -522,8 +522,7 @@
module_type = list(
/obj/item/robot_module/medical,
/obj/item/robot_module/syndicate_medical,
/obj/item/robot_module/medihound,
/obj/item/robot_module/borgi)
/obj/item/robot_module/medihound)
/obj/item/borg/upgrade/advhealth/action(mob/living/silicon/robot/R, user = usr)
. = ..()
@@ -607,7 +606,7 @@
icon = 'icons/obj/storage.dmi'
icon_state = "borg_BS_RPED"
require_module = TRUE
module_type = list(/obj/item/robot_module/engineering)
module_type = list(/obj/item/robot_module/engineering, /obj/item/robot_module/saboteur)
/obj/item/borg/upgrade/rped/action(mob/living/silicon/robot/R, user = usr)
. = ..()
@@ -191,6 +191,12 @@ GLOBAL_LIST_INIT(wood_recipes, list ( \
new/datum/stack_recipe("wood floor tile", /obj/item/stack/tile/wood, 1, 4, 20), \
new/datum/stack_recipe("wood table frame", /obj/structure/table_frame/wood, 2, time = 10), \
null, \
new/datum/stack_recipe_list("pews", list(
new /datum/stack_recipe("pew (middle)", /obj/structure/chair/pew, 3, one_per_turf = TRUE, on_floor = TRUE),\
new /datum/stack_recipe("pew (left)", /obj/structure/chair/pew/left, 3, one_per_turf = TRUE, on_floor = TRUE),\
new /datum/stack_recipe("pew (right)", /obj/structure/chair/pew/right, 3, one_per_turf = TRUE, on_floor = TRUE),\
)),
null, \
new/datum/stack_recipe("rifle stock", /obj/item/weaponcrafting/stock, 10, time = 40), \
new/datum/stack_recipe("rolling pin", /obj/item/kitchen/rollingpin, 2, time = 30), \
new/datum/stack_recipe("wooden buckler", /obj/item/shield/riot/buckler, 20, time = 40), \
+2
View File
@@ -63,6 +63,8 @@
/obj/item/crowbar/cyborg
name = "hydraulic crowbar"
desc = "A hydraulic prying tool, compact but powerful. Designed to replace crowbar in construction cyborgs."
icon = 'icons/obj/items_cyborg.dmi'
icon_state = "crowbar_cyborg"
usesound = 'sound/items/jaws_pry.ogg'
force = 10
toolspeed = 0.5
+5 -1
View File
@@ -138,10 +138,14 @@
user.put_in_active_hand(b_drill)
/obj/item/screwdriver/cyborg
name = "powered screwdriver"
name = "automated screwdriver"
desc = "An electrical screwdriver, designed to be both precise and quick."
icon = 'icons/obj/items_cyborg.dmi'
icon_state = "screwdriver_cyborg"
hitsound = 'sound/items/drill_hit.ogg'
usesound = 'sound/items/drill_use.ogg'
toolspeed = 0.5
random_color = FALSE
/obj/item/screwdriver/advanced
name = "advanced screwdriver"
@@ -302,6 +302,8 @@
/obj/item/weldingtool/largetank/cyborg
name = "integrated welding tool"
desc = "An advanced welder designed to be used in robotic systems."
icon = 'icons/obj/items_cyborg.dmi'
icon_state = "indwelder_cyborg"
toolspeed = 0.5
/obj/item/weldingtool/largetank/flamethrower_screwdriver()
@@ -87,7 +87,10 @@
/obj/item/wirecutters/cyborg
name = "wirecutters"
desc = "This cuts wires."
icon = 'icons/obj/items_cyborg.dmi'
icon_state = "wirecutters_cyborg"
toolspeed = 0.5
random_color = FALSE
/obj/item/wirecutters/power
name = "jaws of life"
+2
View File
@@ -26,6 +26,8 @@
/obj/item/wrench/cyborg
name = "automatic wrench"
desc = "An advanced robotic wrench. Can be found in construction cyborgs."
icon = 'icons/obj/items_cyborg.dmi'
icon_state = "wrench_cyborg"
toolspeed = 0.5
/obj/item/wrench/brass
@@ -0,0 +1,72 @@
/obj/structure/chair/pew
name = "wooden pew"
desc = "Kneel here and pray."
icon = 'icons/obj/sofa.dmi'
icon_state = "pewmiddle"
resistance_flags = FLAMMABLE
max_integrity = 70
buildstacktype = /obj/item/stack/sheet/mineral/wood
buildstackamount = 3
item_chair = null
/obj/structure/chair/pew/left
name = "left wooden pew end"
icon_state = "pewend_left"
var/mutable_appearance/leftpewarmrest
/obj/structure/chair/pew/left/Initialize()
leftpewarmrest = GetLeftPewArmrest()
leftpewarmrest.layer = ABOVE_MOB_LAYER
return ..()
/obj/structure/chair/pew/left/proc/GetLeftPewArmrest()
return mutable_appearance('icons/obj/sofa.dmi', "pewend_left_armrest")
/obj/structure/chair/pew/left/Destroy()
QDEL_NULL(leftpewarmrest)
return ..()
/obj/structure/chair/pew/left/post_buckle_mob(mob/living/M)
. = ..()
update_leftpewarmrest()
/obj/structure/chair/pew/left/proc/update_leftpewarmrest()
if(has_buckled_mobs())
add_overlay(leftpewarmrest)
else
cut_overlay(leftpewarmrest)
/obj/structure/chair/pew/left/post_unbuckle_mob()
. = ..()
update_leftpewarmrest()
/obj/structure/chair/pew/right
name = "left wooden pew end"
icon_state = "pewend_right"
var/mutable_appearance/rightpewarmrest
/obj/structure/chair/pew/right/Initialize()
rightpewarmrest = GetRightPewArmrest()
rightpewarmrest.layer = ABOVE_MOB_LAYER
return ..()
/obj/structure/chair/pew/right/proc/GetRightPewArmrest()
return mutable_appearance('icons/obj/sofa.dmi', "pewend_right_armrest")
/obj/structure/chair/pew/right/Destroy()
QDEL_NULL(rightpewarmrest)
return ..()
/obj/structure/chair/pew/right/post_buckle_mob(mob/living/M)
. = ..()
update_rightpewarmrest()
/obj/structure/chair/pew/right/proc/update_rightpewarmrest()
if(has_buckled_mobs())
add_overlay(rightpewarmrest)
else
cut_overlay(rightpewarmrest)
/obj/structure/chair/pew/right/post_unbuckle_mob()
. = ..()
update_rightpewarmrest()
+2 -2
View File
@@ -111,7 +111,7 @@
icon_state = "necro[rand(2,3)]"
/turf/open/indestructible/necropolis/air
initial_gas_mix = "o2=22;n2=82;TEMP=293.15"
initial_gas_mix = OPENTURF_DEFAULT_ATMOS
/turf/open/indestructible/boss //you put stone tiles on this and use it as a base
name = "necropolis floor"
@@ -121,7 +121,7 @@
initial_gas_mix = LAVALAND_DEFAULT_ATMOS
/turf/open/indestructible/boss/air
initial_gas_mix = "o2=22;n2=82;TEMP=293.15"
initial_gas_mix = OPENTURF_DEFAULT_ATMOS
/turf/open/indestructible/hierophant
icon = 'icons/turf/floors/hierophant_floor.dmi'
@@ -65,7 +65,7 @@
temperature = 255.37
/turf/open/floor/wood/airless
initial_gas_mix = "TEMP=2.7"
initial_gas_mix = AIRLESS_ATMOS
/turf/open/floor/grass
name = "grass patch"
@@ -105,7 +105,7 @@
ore_type = /obj/item/stack/sheet/mineral/snow
planetary_atmos = TRUE
floor_tile = null
initial_gas_mix = "o2=22;n2=82;TEMP=180"
initial_gas_mix = FROZEN_ATMOS
slowdown = 2
bullet_sizzle = TRUE
footstep = FOOTSTEP_SAND
@@ -84,31 +84,31 @@
broken_states = list("titanium_dam1","titanium_dam2","titanium_dam3","titanium_dam4","titanium_dam5")
/turf/open/floor/mineral/titanium/airless
initial_gas_mix = "TEMP=2.7"
initial_gas_mix = AIRLESS_ATMOS
/turf/open/floor/mineral/titanium/yellow
icon_state = "titanium_yellow"
/turf/open/floor/mineral/titanium/yellow/airless
initial_gas_mix = "TEMP=2.7"
initial_gas_mix = AIRLESS_ATMOS
/turf/open/floor/mineral/titanium/blue
icon_state = "titanium_blue"
/turf/open/floor/mineral/titanium/blue/airless
initial_gas_mix = "TEMP=2.7"
initial_gas_mix = AIRLESS_ATMOS
/turf/open/floor/mineral/titanium/white
icon_state = "titanium_white"
/turf/open/floor/mineral/titanium/white/airless
initial_gas_mix = "TEMP=2.7"
initial_gas_mix = AIRLESS_ATMOS
/turf/open/floor/mineral/titanium/purple
icon_state = "titanium_purple"
/turf/open/floor/mineral/titanium/purple/airless
initial_gas_mix = "TEMP=2.7"
initial_gas_mix = AIRLESS_ATMOS
//PLASTITANIUM (syndieshuttle)
/turf/open/floor/mineral/plastitanium
@@ -118,13 +118,13 @@
broken_states = list("plastitanium_dam1","plastitanium_dam2","plastitanium_dam3","plastitanium_dam4","plastitanium_dam5")
/turf/open/floor/mineral/plastitanium/airless
initial_gas_mix = "TEMP=2.7"
initial_gas_mix = AIRLESS_ATMOS
/turf/open/floor/mineral/plastitanium/red
icon_state = "plastitanium_red"
/turf/open/floor/mineral/plastitanium/red/airless
initial_gas_mix = "TEMP=2.7"
initial_gas_mix = AIRLESS_ATMOS
/turf/open/floor/mineral/plastitanium/red/brig
name = "brig floor"
@@ -170,7 +170,7 @@
spam_flag = world.time + 10
/turf/open/floor/mineral/bananium/airless
initial_gas_mix = "TEMP=2.7"
initial_gas_mix = AIRLESS_ATMOS
//DIAMOND
@@ -45,10 +45,10 @@
on = FALSE
/turf/open/floor/circuit/airless
initial_gas_mix = "TEMP=2.7"
initial_gas_mix = AIRLESS_ATMOS
/turf/open/floor/circuit/telecomms
initial_gas_mix = "n2=100;TEMP=80"
initial_gas_mix = TCOMMS_ATMOS
/turf/open/floor/circuit/telecomms/mainframe
name = "mainframe base"
@@ -72,10 +72,10 @@
floor_tile = /obj/item/stack/tile/circuit/green/anim
/turf/open/floor/circuit/green/airless
initial_gas_mix = "TEMP=2.7"
initial_gas_mix = AIRLESS_ATMOS
/turf/open/floor/circuit/green/telecomms
initial_gas_mix = "n2=100;TEMP=80"
initial_gas_mix = TCOMMS_ATMOS
/turf/open/floor/circuit/green/telecomms/mainframe
name = "mainframe base"
@@ -96,10 +96,10 @@
floor_tile = /obj/item/stack/tile/circuit/red/anim
/turf/open/floor/circuit/red/airless
initial_gas_mix = "TEMP=2.7"
initial_gas_mix = AIRLESS_ATMOS
/turf/open/floor/circuit/red/telecomms
initial_gas_mix = "n2=100;TEMP=80"
initial_gas_mix = TCOMMS_ATMOS
/turf/open/floor/pod
name = "pod floor"
@@ -16,17 +16,17 @@
/turf/open/floor/plasteel/airless
initial_gas_mix = "TEMP=2.7"
initial_gas_mix = AIRLESS_ATMOS
/turf/open/floor/plasteel/telecomms
initial_gas_mix = "n2=100;TEMP=80"
initial_gas_mix = TCOMMS_ATMOS
/turf/open/floor/plasteel/dark
icon_state = "darkfull"
/turf/open/floor/plasteel/dark/airless
initial_gas_mix = "TEMP=2.7"
initial_gas_mix = AIRLESS_ATMOS
/turf/open/floor/plasteel/dark/telecomms
initial_gas_mix = "n2=100;TEMP=80"
initial_gas_mix = TCOMMS_ATMOS
/turf/open/floor/plasteel/airless/dark
icon_state = "darkfull"
/turf/open/floor/plasteel/dark/side
@@ -50,7 +50,7 @@
/turf/open/floor/plasteel/airless/white/corner
icon_state = "whitecorner"
/turf/open/floor/plasteel/white/telecomms
initial_gas_mix = "n2=100;TEMP=80"
initial_gas_mix = TCOMMS_ATMOS
/turf/open/floor/plasteel/yellowsiding
@@ -82,7 +82,7 @@
/turf/open/floor/plasteel/freezer
icon_state = "freezerfloor"
/turf/open/floor/plasteel/freezer/airless
initial_gas_mix = "TEMP=2.7"
initial_gas_mix = AIRLESS_ATMOS
/turf/open/floor/plasteel/grimy
icon_state = "grimy"
@@ -111,7 +111,7 @@
/turf/open/floor/plasteel/cult/narsie_act()
return
/turf/open/floor/plasteel/cult/airless
initial_gas_mix = "TEMP=2.7"
initial_gas_mix = AIRLESS_ATMOS
/turf/open/floor/plasteel/stairs
@@ -103,7 +103,7 @@
/turf/open/floor/plating/asteroid/basalt/airless
baseturfs = /turf/open/floor/plating/asteroid/airless
initial_gas_mix = "TEMP=2.7"
initial_gas_mix = AIRLESS_ATMOS
/turf/open/floor/plating/asteroid/basalt/Initialize()
. = ..()
@@ -131,7 +131,7 @@
/turf/open/floor/plating/asteroid/airless
initial_gas_mix = "TEMP=2.7"
initial_gas_mix = AIRLESS_ATMOS
turf_type = /turf/open/floor/plating/asteroid/airless
@@ -307,7 +307,7 @@
baseturfs = /turf/open/floor/plating/asteroid/snow
icon_state = "snow"
icon_plating = "snow"
initial_gas_mix = "o2=22;n2=82;TEMP=180"
initial_gas_mix = FROZEN_ATMOS
slowdown = 2
environment_type = "snow"
flags_1 = NONE
@@ -344,11 +344,11 @@
return FALSE
/turf/open/floor/plating/asteroid/snow/airless
initial_gas_mix = "TEMP=2.7"
initial_gas_mix = AIRLESS_ATMOS
/turf/open/floor/plating/asteroid/snow/temperatre
initial_gas_mix = "o2=22;n2=82;TEMP=255.37"
/turf/open/floor/plating/asteroid/snow/atmosphere
initial_gas_mix = "o2=22;n2=82;TEMP=180"
initial_gas_mix = FROZEN_ATMOS
planetary_atmos = FALSE
@@ -1,7 +1,7 @@
/turf/open/floor/plating/airless
icon_state = "plating"
initial_gas_mix = "TEMP=2.7"
initial_gas_mix = AIRLESS_ATMOS
/turf/open/floor/plating/abductor
name = "alien floor"
@@ -172,7 +172,7 @@
desc = "A sheet of solid ice. Looks slippery."
icon = 'icons/turf/floors/ice_turf.dmi'
icon_state = "unsmooth"
initial_gas_mix = "o2=22;n2=82;TEMP=180"
initial_gas_mix = FROZEN_ATMOS
temperature = 180
planetary_atmos = TRUE
baseturfs = /turf/open/floor/plating/ice
@@ -215,7 +215,7 @@
desc = "A section of heated plating, helps keep the snow from stacking up too high."
icon = 'icons/turf/snow.dmi'
icon_state = "snowplating"
initial_gas_mix = "o2=22;n2=82;TEMP=180"
initial_gas_mix = FROZEN_ATMOS
temperature = 180
attachment_holes = FALSE
planetary_atmos = TRUE
@@ -17,7 +17,7 @@
to_chat(user, "<span class='notice'>The reinforcement rods are <b>wrenched</b> firmly in place.</span>")
/turf/open/floor/engine/airless
initial_gas_mix = "TEMP=2.7"
initial_gas_mix = AIRLESS_ATMOS
/turf/open/floor/engine/break_tile()
return //unbreakable
@@ -98,28 +98,28 @@
/turf/open/floor/engine/n2o
article = "an"
name = "\improper N2O floor"
initial_gas_mix = "n2o=6000;TEMP=293.15"
initial_gas_mix = ATMOS_TANK_N2O
/turf/open/floor/engine/co2
name = "\improper CO2 floor"
initial_gas_mix = "co2=50000;TEMP=293.15"
initial_gas_mix = ATMOS_TANK_CO2
/turf/open/floor/engine/plasma
name = "plasma floor"
initial_gas_mix = "plasma=70000;TEMP=293.15"
initial_gas_mix = ATMOS_TANK_PLASMA
/turf/open/floor/engine/o2
name = "\improper O2 floor"
initial_gas_mix = "o2=100000;TEMP=293.15"
initial_gas_mix = ATMOS_TANK_O2
/turf/open/floor/engine/n2
article = "an"
name = "\improper N2 floor"
initial_gas_mix = "n2=100000;TEMP=293.15"
initial_gas_mix = ATMOS_TANK_N2
/turf/open/floor/engine/air
name = "air floor"
initial_gas_mix = "o2=2644;n2=10580;TEMP=293.15"
initial_gas_mix = ATMOS_TANK_AIRMIX
@@ -159,8 +159,8 @@
addtimer(CALLBACK(src, /atom/proc/update_atom_colour), 8)
/turf/open/floor/engine/cult/airless
initial_gas_mix = "TEMP=2.7"
initial_gas_mix = AIRLESS_ATMOS
/turf/open/floor/engine/vacuum
name = "vacuum floor"
initial_gas_mix = "TEMP=2.7"
initial_gas_mix = AIRLESS_ATMOS
+2 -2
View File
@@ -30,7 +30,7 @@
return
/turf/open/lava/airless
initial_gas_mix = "TEMP=2.7"
initial_gas_mix = AIRLESS_ATMOS
/turf/open/lava/Entered(atom/movable/AM)
if(burn_stuff(AM))
@@ -158,4 +158,4 @@
baseturfs = /turf/open/lava/smooth/lava_land_surface
/turf/open/lava/smooth/airless
initial_gas_mix = "TEMP=2.7"
initial_gas_mix = AIRLESS_ATMOS
+5 -5
View File
@@ -8,7 +8,7 @@
smooth = SMOOTH_MORE|SMOOTH_BORDER
canSmoothWith = null
baseturfs = /turf/open/floor/plating/asteroid/airless
initial_gas_mix = "TEMP=2.7"
initial_gas_mix = AIRLESS_ATMOS
opacity = 1
density = TRUE
blocks_air = 1
@@ -241,7 +241,7 @@
smooth_icon = 'icons/turf/walls/icerock_wall.dmi'
turf_type = /turf/open/floor/plating/asteroid/snow/ice
baseturfs = /turf/open/floor/plating/asteroid/snow/ice
initial_gas_mix = "o2=22;n2=82;TEMP=180"
initial_gas_mix = FROZEN_ATMOS
defer_change = TRUE
@@ -278,7 +278,7 @@
smooth_icon = 'icons/turf/walls/icerock_wall.dmi'
turf_type = /turf/open/floor/plating/asteroid/snow/ice
baseturfs = /turf/open/floor/plating/asteroid/snow/ice
initial_gas_mix = "o2=22;n2=82;TEMP=180"
initial_gas_mix = FROZEN_ATMOS
defer_change = TRUE
@@ -343,7 +343,7 @@
smooth_icon = 'icons/turf/walls/icerock_wall.dmi'
turf_type = /turf/open/floor/plating/asteroid/snow/ice
baseturfs = /turf/open/floor/plating/asteroid/snow/ice
initial_gas_mix = "o2=22;n2=82;TEMP=180"
initial_gas_mix = FROZEN_ATMOS
defer_change = TRUE
@@ -404,7 +404,7 @@
smooth = SMOOTH_MORE|SMOOTH_BORDER
canSmoothWith = list (/turf/closed)
baseturfs = /turf/open/floor/plating/asteroid/snow
initial_gas_mix = "o2=22;n2=82;TEMP=180"
initial_gas_mix = FROZEN_ATMOS
environment_type = "snow"
turf_type = /turf/open/floor/plating/asteroid/snow
defer_change = TRUE