Merge branch 'master' of https://github.com/Citadel-Station-13/Citadel-Station-13 into wintergalorefix
This commit is contained in:
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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), \
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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()
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user