From 2d8739a2797bd1d547863b0eaaaafee62883ae42 Mon Sep 17 00:00:00 2001 From: inselc Date: Sat, 25 Mar 2017 22:47:04 +0100 Subject: [PATCH] Bugfixes: Fax machines (again), crew record formatting, RnD machines and wallets (#1987) Trying to work off some of the older bugs on the issues list: Fix faxmachine getting stuck on "0 seconds remaining". There may be a process scheduler issue which causes a long polling interval for the faxmachine's process()-method. Replace newline in crew record notes with
when generating the records in the filing cabinets. Surround crew record notes with "preformatted text" HTML tags on PDA / pAI screens. When constructing protolathes or circuit imprinters, transfer the reagents contained in the beakers to internal reagent container upon completion. Fix suspension field generator not clearing the qdel'd suspension_field reference. This fixes being unable to unwrench the generator, too. Fix wallet sprite still showing an empty wallet when inserting a guest pass. --- .../objects/items/weapons/storage/wallets.dm | 3 +++ code/modules/paperwork/faxmachine.dm | 20 ++++++++++--------- code/modules/paperwork/filingcabinet.dm | 6 +++--- code/modules/research/circuitprinter.dm | 9 +++++++++ code/modules/research/protolathe.dm | 8 ++++++++ .../tools/suspension_generator.dm | 1 + html/changelogs/inselc-PR-1987.yml | 10 ++++++++++ nano/templates/pai_medrecords.tmpl | 2 +- nano/templates/pai_secrecords.tmpl | 2 +- nano/templates/pda.tmpl | 4 ++-- 10 files changed, 49 insertions(+), 16 deletions(-) create mode 100644 html/changelogs/inselc-PR-1987.yml 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 += "
\n
Security 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
\n
Comments/Log

" + P.info += "
\n
Security 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
\n
Comments/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 += "
\n
Medical 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
\n
Comments/Log

" + + info += "
\n
Medical 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
\n
Comments/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}}
+
{{: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}}
+
{{: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!