diff --git a/code/game/objects/items/weapons/storage/wallets.dm b/code/game/objects/items/weapons/storage/wallets.dm
index faf8a11c76c..86b0738f286 100644
--- a/code/game/objects/items/weapons/storage/wallets.dm
+++ b/code/game/objects/items/weapons/storage/wallets.dm
@@ -59,6 +59,9 @@
if("id")
icon_state = "walletid"
return
+ if("guest")
+ icon_state = "walletid"
+ return
if("silver")
icon_state = "walletid_silver"
return
diff --git a/code/modules/paperwork/faxmachine.dm b/code/modules/paperwork/faxmachine.dm
index 6f128c7d0e8..c8b9c2a6753 100644
--- a/code/modules/paperwork/faxmachine.dm
+++ b/code/modules/paperwork/faxmachine.dm
@@ -42,6 +42,7 @@ var/list/admin_departments = list("[boss_name]", "Tau Ceti Government", "Supply"
/obj/machinery/photocopier/faxmachine/attack_hand(mob/user as mob)
user.set_machine(src)
+ var/remaining_cooldown = get_remaining_cooldown()
var/dat = "Fax Machine
"
var/scan_name
@@ -65,8 +66,8 @@ var/list/admin_departments = list("[boss_name]", "Tau Ceti Government", "Supply"
if(copyitem)
dat += "Remove Item
"
- if(sendcooldown)
- dat += "Transmitter arrays realigning. Please stand by. [round(get_remaining_cooldown() / 10)] seconds remaining.
"
+ if(remaining_cooldown > 0)
+ dat += "Transmitter arrays realigning. Please stand by. [round(remaining_cooldown / 10)] seconds remaining.
"
else
@@ -75,9 +76,9 @@ var/list/admin_departments = list("[boss_name]", "Tau Ceti Government", "Supply"
dat += "Sending to: [destination]
"
else
- if(sendcooldown)
+ if(remaining_cooldown > 0)
dat += "Please insert paper to send via secure connection.
"
- dat += "Transmitter arrays realigning. Please stand by. [round(get_remaining_cooldown() / 10)] seconds remaining.
"
+ dat += "Transmitter arrays realigning. Please stand by. [round(remaining_cooldown / 10)] seconds remaining.
"
else
dat += "Please insert paper to send via secure connection.
"
@@ -98,7 +99,7 @@ var/list/admin_departments = list("[boss_name]", "Tau Ceti Government", "Supply"
user << browse(dat, "window=copier")
onclose(user, "copier")
- if (sendcooldown != 0)
+ if (remaining_cooldown > 0)
spawn(50)
// Auto-refresh every 5 seconds, if cooldown is active
updateUsrDialog()
@@ -107,7 +108,7 @@ var/list/admin_departments = list("[boss_name]", "Tau Ceti Government", "Supply"
/obj/machinery/photocopier/faxmachine/Topic(href, href_list)
if(href_list["send"])
- if (sendcooldown > 0)
+ if (get_remaining_cooldown() > 0)
// Rate-limit sending faxes
usr << "The fax machine isn't ready, yet!"
updateUsrDialog()
@@ -189,8 +190,7 @@ var/list/admin_departments = list("[boss_name]", "Tau Ceti Government", "Supply"
.=..()
var/static/ui_update_delay = 0
- var/current_time = world.time
- if (current_time > sendtime + sendcooldown)
+ if ((sendtime + sendcooldown) < world.time)
sendcooldown = 0
/*
@@ -231,11 +231,13 @@ var/list/admin_departments = list("[boss_name]", "Tau Ceti Government", "Supply"
if( F.department == destination )
success = F.recievefax(copyitem)
+ if (success)
+ set_cooldown(normalfax_cooldown)
+
if (display_message)
// Normal fax
if (success)
visible_message("[src] beeps, \"Message transmitted successfully.\"")
- sendcooldown = normalfax_cooldown
else
visible_message("[src] beeps, \"Error transmitting message.\"")
return success
diff --git a/code/modules/paperwork/filingcabinet.dm b/code/modules/paperwork/filingcabinet.dm
index 0fe4e674d44..322456dc9fe 100644
--- a/code/modules/paperwork/filingcabinet.dm
+++ b/code/modules/paperwork/filingcabinet.dm
@@ -114,7 +114,7 @@
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(src)
P.info = "
Security Record
"
P.info += "Name: [G.fields["name"]] ID: [G.fields["id"]]
\nSex: [G.fields["sex"]]
\nAge: [G.fields["age"]]
\nFingerprint: [G.fields["fingerprint"]]
\nPhysical Status: [G.fields["p_stat"]]
\nMental Status: [G.fields["m_stat"]]
"
- P.info += "
\nSecurity Data
\nCriminal Status: [S.fields["criminal"]]
\n
\nMinor Crimes: [S.fields["mi_crim"]]
\nDetails: [S.fields["mi_crim_d"]]
\n
\nMajor Crimes: [S.fields["ma_crim"]]
\nDetails: [S.fields["ma_crim_d"]]
\n
\nImportant Notes:
\n\t[S.fields["notes"]]
\n
\nComments/Log
"
+ P.info += "
\nSecurity Data
\nCriminal Status: [S.fields["criminal"]]
\n
\nMinor Crimes: [S.fields["mi_crim"]]
\nDetails: [S.fields["mi_crim_d"]]
\n
\nMajor Crimes: [S.fields["ma_crim"]]
\nDetails: [S.fields["ma_crim_d"]]
\n
\nImportant Notes:
\n\t[replacetext(S.fields["notes"], "\n", "
")]
\n
\nComments/Log
"
var/counter = 1
while(S.fields["com_[counter]"])
P.info += "[S.fields["com_[counter]"]]
"
@@ -151,8 +151,8 @@
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(src)
var/info = "Medical Record
"
info += "Name: [G.fields["name"]] ID: [G.fields["id"]]
\nSex: [G.fields["sex"]]
\nAge: [G.fields["age"]]
\nFingerprint: [G.fields["fingerprint"]]
\nPhysical Status: [G.fields["p_stat"]]
\nMental Status: [G.fields["m_stat"]]
"
-
- info += "
\nMedical Data
\nBlood Type: [M.fields["b_type"]]
\nDNA: [M.fields["b_dna"]]
\n
\nMinor Disabilities: [M.fields["mi_dis"]]
\nDetails: [M.fields["mi_dis_d"]]
\n
\nMajor Disabilities: [M.fields["ma_dis"]]
\nDetails: [M.fields["ma_dis_d"]]
\n
\nAllergies: [M.fields["alg"]]
\nDetails: [M.fields["alg_d"]]
\n
\nCurrent Diseases: [M.fields["cdi"]] (per disease info placed in log/comment section)
\nDetails: [M.fields["cdi_d"]]
\n
\nImportant Notes:
\n\t[M.fields["notes"]]
\n
\nComments/Log
"
+
+ info += "
\nMedical Data
\nBlood Type: [M.fields["b_type"]]
\nDNA: [M.fields["b_dna"]]
\n
\nMinor Disabilities: [M.fields["mi_dis"]]
\nDetails: [M.fields["mi_dis_d"]]
\n
\nMajor Disabilities: [M.fields["ma_dis"]]
\nDetails: [M.fields["ma_dis_d"]]
\n
\nAllergies: [M.fields["alg"]]
\nDetails: [M.fields["alg_d"]]
\n
\nCurrent Diseases: [M.fields["cdi"]] (per disease info placed in log/comment section)
\nDetails: [M.fields["cdi_d"]]
\n
\nImportant Notes:
\n\t[replacetext(M.fields["notes"], "\n", "
")]
\n
\nComments/Log
"
var/counter = 1
while(M.fields["com_[counter]"])
info += "[M.fields["com_[counter]"]]
"
diff --git a/code/modules/research/circuitprinter.dm b/code/modules/research/circuitprinter.dm
index c19483576da..9e1bad6ab37 100644
--- a/code/modules/research/circuitprinter.dm
+++ b/code/modules/research/circuitprinter.dm
@@ -58,13 +58,21 @@ using metal and glass, it uses glass and reagents (usually sulphuric acid).
update_icon()
/obj/machinery/r_n_d/circuit_imprinter/RefreshParts()
+ // Adjust reagent container volume to match combined volume of the inserted beakers
var/T = 0
for(var/obj/item/weapon/reagent_containers/glass/G in component_parts)
T += G.reagents.maximum_volume
create_reagents(T)
+ // Transfer all reagents from the beakers to internal reagent container
+ for(var/obj/item/weapon/reagent_containers/glass/G in component_parts)
+ G.reagents.trans_to_obj(src, G.reagents.total_volume)
+
+ // Adjust material storage capacity to scale with matter bin rating
max_material_storage = 0
for(var/obj/item/weapon/stock_parts/matter_bin/M in component_parts)
max_material_storage += M.rating * 75000
+
+ // Adjust production speed to increase with manipulator rating
T = 0
for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts)
T += M.rating
@@ -87,6 +95,7 @@ using metal and glass, it uses glass and reagents (usually sulphuric acid).
/obj/machinery/r_n_d/circuit_imprinter/dismantle()
for(var/obj/I in component_parts)
+ // This will distribute all reagents amongst the contained beakers
if(istype(I, /obj/item/weapon/reagent_containers/glass/beaker))
reagents.trans_to_obj(I, reagents.total_volume)
for(var/f in materials)
diff --git a/code/modules/research/protolathe.dm b/code/modules/research/protolathe.dm
index c91a22d89f5..bb6c989bcd9 100644
--- a/code/modules/research/protolathe.dm
+++ b/code/modules/research/protolathe.dm
@@ -61,13 +61,21 @@
return t
/obj/machinery/r_n_d/protolathe/RefreshParts()
+ // Adjust reagent container volume to match combined volume of the inserted beakers
var/T = 0
for(var/obj/item/weapon/reagent_containers/glass/G in component_parts)
T += G.reagents.maximum_volume
create_reagents(T)
+ // Transfer all reagents from the beakers to internal reagent container
+ for(var/obj/item/weapon/reagent_containers/glass/G in component_parts)
+ G.reagents.trans_to_obj(src, G.reagents.total_volume)
+
+ // Adjust material storage capacity to scale with matter bin rating
max_material_storage = 0
for(var/obj/item/weapon/stock_parts/matter_bin/M in component_parts)
max_material_storage += M.rating * 75000
+
+ // Adjust production speed to increase with manipulator rating
T = 0
for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts)
T += M.rating
diff --git a/code/modules/research/xenoarchaeology/tools/suspension_generator.dm b/code/modules/research/xenoarchaeology/tools/suspension_generator.dm
index 6b77e800eb3..ab738d6ec34 100644
--- a/code/modules/research/xenoarchaeology/tools/suspension_generator.dm
+++ b/code/modules/research/xenoarchaeology/tools/suspension_generator.dm
@@ -309,6 +309,7 @@
src.visible_message("\blue \icon[src] [src] deactivates with a gentle shudder.")
qdel(suspension_field)
+ suspension_field = null
icon_state = "suspension2"
/obj/machinery/suspension_gen/Destroy()
diff --git a/html/changelogs/inselc-PR-1987.yml b/html/changelogs/inselc-PR-1987.yml
new file mode 100644
index 00000000000..9be8f0e6a92
--- /dev/null
+++ b/html/changelogs/inselc-PR-1987.yml
@@ -0,0 +1,10 @@
+author: inselc
+
+delete-after: True
+
+changes:
+ - bugfix: "Fixed reagents disappearing from beakers when used to construct circuit imprinters and protolathes."
+ - bugfix: "Fixed fax machines getting stuck on '0 seconds remaining'."
+ - bugfix: "Suspension field generator can now be unwrenched again."
+ - bugfix: "Medical and security record notes formatting fixed to show line breaks for pAI on PDA, and on records in the filing cabinets."
+ - bugfix: "Wallet now showing correct sprite after inserting a guest pass."
diff --git a/nano/templates/pai_medrecords.tmpl b/nano/templates/pai_medrecords.tmpl
index 37b1d7061ca..c9cdcd27bb2 100644
--- a/nano/templates/pai_medrecords.tmpl
+++ b/nano/templates/pai_medrecords.tmpl
@@ -75,7 +75,7 @@ code/modules/mob/living/silicon/pai/software_modules.dm
Important Notes
-
{{:data.medical.notes}}
+
{{/if}}
diff --git a/nano/templates/pai_secrecords.tmpl b/nano/templates/pai_secrecords.tmpl
index e139034c0de..656a0720a36 100644
--- a/nano/templates/pai_secrecords.tmpl
+++ b/nano/templates/pai_secrecords.tmpl
@@ -65,7 +65,7 @@ code/modules/mob/living/silicon/pai/software_modules.dm
Important Notes
-
{{:data.security.notes}}
+
{{/if}}
diff --git a/nano/templates/pda.tmpl b/nano/templates/pda.tmpl
index bdb9f82f7d2..2befc5b0779 100644
--- a/nano/templates/pda.tmpl
+++ b/nano/templates/pda.tmpl
@@ -654,7 +654,7 @@ Used In File(s): \code\game\objects\items\devices\PDA\PDA.dm
Details: {{:data.records.medical.alg_d}}
Current Disease: {{:data.records.medical.cdi}}
Details: {{:data.records.medical.alg_d}}
- Important Notes: {{:data.records.medical.notes}}
+ Important Notes: {{:data.records.medical.notes}}
{{else}}
Medical Record Lost!
@@ -706,7 +706,7 @@ Used In File(s): \code\game\objects\items\devices\PDA\PDA.dm
Details: {{:data.records.security.mi_crim_d}}
Major Crimes: {{:data.records.security.ma_crim}}
Details: {{:data.records.security.ma_crim_d}}
- Important Notes: {{:data.records.security.notes}}
+ Important Notes: {{:data.records.security.notes}}
{{else}}
Security Record Lost!