From 19710d9bd8150518ab2aee060ebe5c450d0caf28 Mon Sep 17 00:00:00 2001 From: Anewbe Date: Sun, 5 Mar 2017 12:22:45 -0600 Subject: [PATCH 01/19] Reworks empulse and emp_act --- .../gamemodes/changeling/powers/shriek.dm | 8 +++- code/game/gamemodes/cult/runes.dm | 2 +- code/game/gamemodes/meteor/meteors.dm | 2 +- .../gamemodes/technomancer/instability.dm | 2 +- .../technomancer/spells/spawner/pulsar.dm | 4 +- code/game/machinery/computer/arcade.dm | 4 ++ code/game/machinery/portable_turret.dm | 2 +- code/game/mecha/mecha_control_console.dm | 2 +- code/game/objects/empulse.dm | 44 +++++++++++++----- code/game/objects/items/devices/PDA/PDA.dm | 2 +- .../items/weapons/grenades/emgrenade.dm | 12 +++-- .../objects/items/weapons/implants/implant.dm | 28 +++++++++-- code/modules/admin/verbs/randomverbs.dm | 12 +++-- code/modules/clothing/clothing.dm | 5 +- code/modules/mob/living/carbon/brain/MMI.dm | 8 +++- .../mob/living/carbon/brain/posibrain.dm | 4 +- code/modules/mob/living/silicon/silicon.dm | 6 +++ code/modules/organs/organ.dm | 8 +++- code/modules/organs/organ_external.dm | 18 +++++-- code/modules/power/antimatter/control.dm | 6 +++ code/modules/power/apc.dm | 19 +++++--- code/modules/power/batteryrack.dm | 6 +-- code/modules/power/port_gen.dm | 5 +- code/modules/power/singularity/singularity.dm | 4 +- code/modules/power/smes.dm | 8 +++- code/modules/power/smes_construction.dm | 4 +- code/modules/projectiles/ammunition/boxes.dm | 12 +++++ .../modules/projectiles/ammunition/bullets.dm | 26 +++++++++-- .../projectiles/guns/energy/special.dm | 18 ++++--- .../projectiles/guns/projectile/revolver.dm | 4 ++ .../modules/projectiles/projectile/bullets.dm | 6 ++- .../modules/projectiles/projectile/special.dm | 6 ++- code/modules/reagents/Chemistry-Recipes.dm | 2 +- code/modules/shieldgen/emergency_shield.dm | 8 +++- code/modules/spells/aoe_turf/disable_tech.dm | 8 ++-- code/modules/spells/spellbook.dm | 2 +- code/modules/xenoarcheaology/effects/emp.dm | 2 +- html/changelogs/Anewbe - EMP.yml | 38 +++++++++++++++ icons/mob/items/lefthand_guns.dmi | Bin 44832 -> 47190 bytes icons/mob/items/righthand_guns.dmi | Bin 48942 -> 51427 bytes icons/obj/ammo.dmi | Bin 24367 -> 25467 bytes icons/obj/gun.dmi | Bin 70968 -> 70480 bytes 42 files changed, 274 insertions(+), 83 deletions(-) create mode 100644 html/changelogs/Anewbe - EMP.yml diff --git a/code/game/gamemodes/changeling/powers/shriek.dm b/code/game/gamemodes/changeling/powers/shriek.dm index 2bfd0bf7d6..53861563fd 100644 --- a/code/game/gamemodes/changeling/powers/shriek.dm +++ b/code/game/gamemodes/changeling/powers/shriek.dm @@ -95,11 +95,15 @@ changeling.chem_charges -= 20 - var/range_heavy = 2 - var/range_light = 5 + var/range_heavy = 1 + var/range_med = 2 + var/range_light = 4 + var/range_long = 6 if(src.mind.changeling.recursive_enhancement) range_heavy = range_heavy * 2 + range_med = range_med * 2 range_light = range_light * 2 + range_long = range_long * 2 src << "We are extra loud." src.mind.changeling.recursive_enhancement = 0 diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index ccf449a4dc..61f177eae5 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -231,7 +231,7 @@ var/list/sacrificed = list() if(T) T.hotspot_expose(700,125) var/rune = src // detaching the proc - in theory - empulse(U, (range_red - 2), range_red) + empulse(U, (range_red - 3), (range_red - 2), (range_red - 1), range_red) qdel(rune) return diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm index 0bed5bcf42..bd056f7c69 100644 --- a/code/game/gamemodes/meteor/meteors.dm +++ b/code/game/gamemodes/meteor/meteors.dm @@ -254,7 +254,7 @@ ..() // Best case scenario: Comparable to a low-yield EMP grenade. // Worst case scenario: Comparable to a standard yield EMP grenade. - empulse(src, rand(2, 4), rand(4, 10)) + empulse(src, rand(1, 3), rand(2, 4), rand(3, 7), rand(5, 10)) //Station buster Tunguska /obj/effect/meteor/tunguska diff --git a/code/game/gamemodes/technomancer/instability.dm b/code/game/gamemodes/technomancer/instability.dm index 4b04330b5b..fa9985b1b6 100644 --- a/code/game/gamemodes/technomancer/instability.dm +++ b/code/game/gamemodes/technomancer/instability.dm @@ -126,7 +126,7 @@ safe_blink(src, range = 6) src << "You're teleported against your will!" if(4) - emp_act(2) + emp_act(3) if(51 to 100) //Severe rng = rand(0,3) diff --git a/code/game/gamemodes/technomancer/spells/spawner/pulsar.dm b/code/game/gamemodes/technomancer/spells/spawner/pulsar.dm index 7c11bc000a..259aca4b57 100644 --- a/code/game/gamemodes/technomancer/spells/spawner/pulsar.dm +++ b/code/game/gamemodes/technomancer/spells/spawner/pulsar.dm @@ -23,7 +23,7 @@ ..() /obj/item/weapon/spell/spawner/pulsar/on_throw_cast(atom/hit_atom, mob/user) - empulse(hit_atom, 1, 1, log=1) + empulse(hit_atom, 1, 1, 1, 1, log=1) /obj/effect/temporary_effect/pulsar name = "pulsar" @@ -44,7 +44,7 @@ /obj/effect/temporary_effect/pulsar/proc/pulse_loop() while(pulses_remaining) sleep(2 SECONDS) - empulse(src, heavy_range = 1, light_range = 2, log = 1) + empulse(src, 1, 1, 2, 2, log = 1) pulses_remaining-- qdel(src) diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 0a568b4ade..408e3184d4 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -66,7 +66,11 @@ if(1) num_of_prizes = rand(1,4) if(2) + num_of_prizes = rand(1,3) + if(3) num_of_prizes = rand(0,2) + if(4) + num_of_prizes = rand(0,1) for(num_of_prizes; num_of_prizes > 0; num_of_prizes--) empprize = pickweight(prizes) new empprize(src.loc) diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index a378f0ff35..595712afd3 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -441,7 +441,7 @@ var/list/turret_icons else take_damage(initial(health) * 8) //should instakill most turrets if(3) - take_damage(initial(health) * 8 / 3) + take_damage(initial(health) * 8 / 3) //Level 4 is too weak to bother turrets /obj/machinery/porta_turret/proc/die() //called when the turret dies, ie, health <= 0 health = 0 diff --git a/code/game/mecha/mecha_control_console.dm b/code/game/mecha/mecha_control_console.dm index e9dbd93edf..a6da9bfa00 100644 --- a/code/game/mecha/mecha_control_console.dm +++ b/code/game/mecha/mecha_control_console.dm @@ -105,7 +105,7 @@ proc/shock() var/obj/mecha/M = in_mecha() if(M) - M.emp_act(2) + M.emp_act(4) qdel(src) proc/get_mecha_log() diff --git a/code/game/objects/empulse.dm b/code/game/objects/empulse.dm index c1df6b5454..3b1a3b54f5 100644 --- a/code/game/objects/empulse.dm +++ b/code/game/objects/empulse.dm @@ -4,17 +4,17 @@ // #define EMPDEBUG 10 -proc/empulse(turf/epicenter, heavy_range, light_range, log=0) +proc/empulse(turf/epicenter, first_range, second_range, third_range, fourth_range, log=0) if(!epicenter) return if(!istype(epicenter, /turf)) epicenter = get_turf(epicenter.loc) if(log) - message_admins("EMP with size ([heavy_range], [light_range]) in area [epicenter.loc.name] ") - log_game("EMP with size ([heavy_range], [light_range]) in area [epicenter.loc.name] ") + message_admins("EMP with size ([first_range], [second_range], [third_range], [fourth_range]) in area [epicenter.loc.name] ") + log_game("EMP with size ([first_range], [second_range], [third_range], [fourth_range]) in area [epicenter.loc.name] ") - if(heavy_range > 1) + if(first_range > 1) var/obj/effect/overlay/pulse = PoolOrNew(/obj/effect/overlay, epicenter) pulse.icon = 'icons/effects/effects.dmi' pulse.icon_state = "emppulse" @@ -23,28 +23,50 @@ proc/empulse(turf/epicenter, heavy_range, light_range, log=0) spawn(20) qdel(pulse) - if(heavy_range > light_range) - light_range = heavy_range + if(first_range > second_range) + second_range = first_range + if(second_range > third_range) + third_range = second_range + if(third_range > fourth_range) + fourth_range = third_range - for(var/mob/M in range(heavy_range, epicenter)) + for(var/mob/M in range(first_range, epicenter)) M << 'sound/effects/EMPulse.ogg' - for(var/atom/T in range(light_range, epicenter)) + for(var/atom/T in range(fourth_range, epicenter)) #ifdef EMPDEBUG var/time = world.timeofday #endif var/distance = get_dist(epicenter, T) if(distance < 0) distance = 0 - if(distance < heavy_range) + //Worst effects, really hurts + if(distance < first_range) T.emp_act(1) - else if(distance == heavy_range) + else if(distance == first_range) if(prob(50)) T.emp_act(1) else T.emp_act(2) - else if(distance <= light_range) + //Slightly less painful + else if(distance <= second_range) T.emp_act(2) + else if(distance == second_range) + if(prob(50)) + T.emp_act(2) + else + T.emp_act(3) + //Even less slightly less painful + else if(distance <= third_range) + T.emp_act(3) + else if(distance == third_range) + if(prob(50)) + T.emp_act(2) + else + T.emp_act(3) + //This should be more or less harmless + else if(distance <= fourth_range) + T.emp_act(4) #ifdef EMPDEBUG if((world.timeofday - time) >= EMPDEBUG) log_and_message_admins("EMPDEBUG: [T.name] - [T.type] - took [world.timeofday - time]ds to process emp_act()!") diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index e72b4ba484..ef37af91c2 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -998,7 +998,7 @@ var/global/list/obj/item/device/pda/PDAs = list() M.apply_damage( rand(30,60) , BURN) message += "You feel a searing heat! Your [P] is burning!" if(i>=20 && i<=25) //EMP - empulse(P.loc, 3, 6, 1) + empulse(P.loc, 1, 2, 4, 6, 1) message += "Your [P] emits a wave of electromagnetic energy!" if(i>=25 && i<=40) //Smoke var/datum/effect/effect/system/smoke_spread/chem/S = new /datum/effect/effect/system/smoke_spread/chem diff --git a/code/game/objects/items/weapons/grenades/emgrenade.dm b/code/game/objects/items/weapons/grenades/emgrenade.dm index dd1d6a55b0..8f4cd48e2c 100644 --- a/code/game/objects/items/weapons/grenades/emgrenade.dm +++ b/code/game/objects/items/weapons/grenades/emgrenade.dm @@ -3,12 +3,14 @@ icon_state = "emp" item_state = "empgrenade" origin_tech = list(TECH_MATERIAL = 2, TECH_MAGNET = 3) - var/emp_heavy = 4 - var/emp_light = 10 + var/emp_heavy = 2 + var/emp_med = 4 + var/emp_light = 7 + var/emp_long = 10 prime() ..() - if(empulse(src, emp_heavy, emp_light)) + if(empulse(src, emp_heavy, emp_med, emp_light, emp_long)) qdel(src) return @@ -18,4 +20,6 @@ icon_state = "lyemp" origin_tech = list(TECH_MATERIAL = 2, TECH_MAGNET = 3) emp_heavy = 1 - emp_light = 4 \ No newline at end of file + emp_med = 2 + emp_light = 3 + emp_long = 4 \ No newline at end of file diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm index 4407e29c72..c3ddb4fb39 100644 --- a/code/game/objects/items/weapons/implants/implant.dm +++ b/code/game/objects/items/weapons/implants/implant.dm @@ -101,6 +101,10 @@ Implant Specifics:
"} meltdown() if(2) delay = rand(5*60*10,15*60*10) //from 5 to 15 minutes of free time + if(3) + delay = rand(2*60*10,5*60*10) //from 2 to 5 minutes of free time + if(4) + delay = rand(0.5*60*10,1*60*10) //from .5 to 1 minutes of free time spawn(delay) malfunction-- @@ -227,10 +231,22 @@ Implant Specifics:
"} return malfunction = MALFUNCTION_TEMPORARY switch (severity) - if (2.0) //Weak EMP will make implant tear limbs off. + if (4) //Weak EMP will make implant tear limbs off. + if (prob(25)) + small_boom() + if (3) //Weak EMP will make implant tear limbs off. if (prob(50)) small_boom() - if (1.0) //strong EMP will melt implant either making it go off, or disarming it + if (2) //strong EMP will melt implant either making it go off, or disarming it + if (prob(70)) + if (prob(75)) + small_boom() + else + if (prob(13)) + activate() //chance of bye bye + else + meltdown() //chance of implant disarming + if (1) //strong EMP will melt implant either making it go off, or disarming it if (prob(70)) if (prob(50)) small_boom() @@ -320,7 +336,13 @@ the implant may become unstable and either pre-maturely inject the subject or si if(prob(60)) activate(20) if(2) - if(prob(30)) + if(prob(40)) + activate(20) + if(3) + if(prob(40)) + activate(5) + if(4) + if(prob(20)) activate(5) spawn(20) diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index d94535918f..6566f5da3e 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -637,14 +637,18 @@ Traitors and the like can also be revived with the previous role mostly intact. var/heavy = input("Range of heavy pulse.", text("Input")) as num|null if(heavy == null) return + var/med = input("Range of medium pulse.", text("Input")) as num|null + if(med == null) return var/light = input("Range of light pulse.", text("Input")) as num|null if(light == null) return + var/long = input("Range of long pulse.", text("Input")) as num|null + if(long == null) return - if (heavy || light) + if (heavy || med || light || long) - empulse(O, heavy, light) - log_admin("[key_name(usr)] created an EM Pulse ([heavy],[light]) at ([O.x],[O.y],[O.z])") - message_admins("[key_name_admin(usr)] created an EM PUlse ([heavy],[light]) at ([O.x],[O.y],[O.z])", 1) + empulse(O, heavy, med, light, long) + log_admin("[key_name(usr)] created an EM Pulse ([heavy],[med],[light],[long]) at ([O.x],[O.y],[O.z])") + message_admins("[key_name_admin(usr)] created an EM PUlse ([heavy],[med],[light],[long]) at ([O.x],[O.y],[O.z])", 1) feedback_add_details("admin_verb","EMP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! return diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 39f437f93a..3783a5c208 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -199,10 +199,7 @@ /obj/item/clothing/gloves/emp_act(severity) if(cell) - //why is this not part of the powercell code? - cell.charge -= 1000 / severity - if (cell.charge < 0) - cell.charge = 0 + cell.emp_act(severity) ..() // Called just before an attack_hand(), in mob/UnarmedAttack() diff --git a/code/modules/mob/living/carbon/brain/MMI.dm b/code/modules/mob/living/carbon/brain/MMI.dm index 8060e328ee..e74d6dab90 100644 --- a/code/modules/mob/living/carbon/brain/MMI.dm +++ b/code/modules/mob/living/carbon/brain/MMI.dm @@ -164,7 +164,9 @@ if(2) brainmob.emp_damage += rand(10,20) if(3) - brainmob.emp_damage += rand(0,10) + brainmob.emp_damage += rand(5,10) + if(4) + brainmob.emp_damage += rand(0,5) ..() /obj/item/device/mmi/digital @@ -216,7 +218,9 @@ if(2) src.brainmob.emp_damage += rand(10,20) if(3) - src.brainmob.emp_damage += rand(0,10) + src.brainmob.emp_damage += rand(5,10) + if(4) + src.brainmob.emp_damage += rand(0,5) ..() /obj/item/device/mmi/digital/transfer_identity(var/mob/living/carbon/H) diff --git a/code/modules/mob/living/carbon/brain/posibrain.dm b/code/modules/mob/living/carbon/brain/posibrain.dm index 057c24bdcc..9452337eeb 100644 --- a/code/modules/mob/living/carbon/brain/posibrain.dm +++ b/code/modules/mob/living/carbon/brain/posibrain.dm @@ -112,7 +112,9 @@ if(2) src.brainmob.emp_damage += rand(10,20) if(3) - src.brainmob.emp_damage += rand(0,10) + src.brainmob.emp_damage += rand(5,10) + if(4) + src.brainmob.emp_damage += rand(0,5) ..() /obj/item/device/mmi/digital/posibrain/New() diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index f84021b26a..738e996967 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -65,7 +65,13 @@ src.take_organ_damage(0,20,emp=1) confused = (min(confused + 5, 30)) if(2) + src.take_organ_damage(0,15,emp=1) + confused = (min(confused + 4, 30)) + if(3) src.take_organ_damage(0,10,emp=1) + confused = (min(confused + 3, 30)) + if(4) + src.take_organ_damage(0,5,emp=1) confused = (min(confused + 2, 30)) flash_eyes(affect_silicon = 1) src << "*BZZZT*" diff --git a/code/modules/organs/organ.dm b/code/modules/organs/organ.dm index fd6957aad4..30a80b6599 100644 --- a/code/modules/organs/organ.dm +++ b/code/modules/organs/organ.dm @@ -281,9 +281,13 @@ var/list/organ_cache = list() return switch (severity) if (1) - take_damage(5) + take_damage(rand(6,12)) if (2) - take_damage(2) + take_damage(rand(4,8)) + if (3) + take_damage(rand(3,6)) + if (4) + take_damage(rand(1,4)) /obj/item/organ/proc/removed(var/mob/living/user) diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index 7f755a4dff..b746f1be6f 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -102,11 +102,19 @@ /obj/item/organ/external/emp_act(severity) if(!(robotic >= ORGAN_ROBOT)) return + var/burn_damage = 0 switch (severity) if (1) - take_damage(8) + burn_damage += rand(8, 13) if (2) - take_damage(4) + burn_damage += rand(6, 9) + if(3) + burn_damage += rand(4, 7) + if(4) + burn_damage += rand(1, 5) + + if(burn_damage) + take_damage(0, burn_damage) /obj/item/organ/external/attack_self(var/mob/living/user) if(!contents.len) @@ -243,12 +251,12 @@ return (vital || (robotic >= ORGAN_ROBOT) || brute_dam + burn_dam + additional_damage < max_damage) /obj/item/organ/external/take_damage(brute, burn, sharp, edge, used_weapon = null, list/forbidden_limbs = list()) + brute = round(brute * brute_mod, 0.1) + burn = round(burn * burn_mod, 0.1) + if((brute <= 0) && (burn <= 0)) return 0 - brute *= brute_mod - burn *= burn_mod - // High brute damage or sharp objects may damage internal organs if(internal_organs && (brute_dam >= max_damage || (((sharp && brute >= 5) || brute >= 10) && prob(5)))) // Damage an internal organ diff --git a/code/modules/power/antimatter/control.dm b/code/modules/power/antimatter/control.dm index 8c7af58346..c1defc1c75 100644 --- a/code/modules/power/antimatter/control.dm +++ b/code/modules/power/antimatter/control.dm @@ -97,6 +97,12 @@ if(2) if(active) toggle_power() stability -= rand(10,20) + if(3) + if(active) toggle_power() + stability -= rand(8,15) + if(4) + if(active) toggle_power() + stability -= rand(5,10) ..() return 0 diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 184a1731f5..72fbccaa57 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -1193,22 +1193,27 @@ obj/machinery/power/apc/proc/autoset(var/cur_state, var/on) /obj/machinery/power/apc/ex_act(severity) switch(severity) - if(1.0) + if(1) //set_broken() //now qdel() do what we need if (cell) - cell.ex_act(1.0) // more lags woohoo + cell.ex_act(1) // more lags woohoo qdel(src) return - if(2.0) + if(2) + if (prob(75)) + set_broken() + if (cell && prob(50)) + cell.ex_act(2) + if(3) if (prob(50)) set_broken() if (cell && prob(50)) - cell.ex_act(2.0) - if(3.0) + cell.ex_act(3) + if(4) if (prob(25)) set_broken() - if (cell && prob(25)) - cell.ex_act(3.0) + if (cell && prob(50)) + cell.ex_act(3) return /obj/machinery/power/apc/disconnect_terminal() diff --git a/code/modules/power/batteryrack.dm b/code/modules/power/batteryrack.dm index 203227e613..56e2a485ca 100644 --- a/code/modules/power/batteryrack.dm +++ b/code/modules/power/batteryrack.dm @@ -165,7 +165,7 @@ return if (overcharge_percent >= 140) if (prob(1)) - empulse(src.loc, 3, 8, 1) + empulse(src.loc, 2, 3, 6, 8, 1) if ((2.4e6+1) to 3.6e6) if (overcharge_percent >= 115) if (prob(7)) @@ -174,7 +174,7 @@ return if (overcharge_percent >= 130) if (prob(1)) - empulse(src.loc, 3, 8, 1) + empulse(src.loc, 2, 3, 6, 8, 1) if (overcharge_percent >= 150) if (prob(1)) explosion(src.loc, 0, 1, 3, 5) @@ -186,7 +186,7 @@ return if (overcharge_percent >= 125) if (prob(2)) - empulse(src.loc, 4, 10, 1) + empulse(src.loc, 2, 4, 7, 10, 1) if (overcharge_percent >= 140) if (prob(1)) explosion(src.loc, 1, 3, 5, 8) diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm index 01e394cf91..f900f6fcf4 100644 --- a/code/modules/power/port_gen.dm +++ b/code/modules/power/port_gen.dm @@ -62,9 +62,12 @@ stat &= BROKEN if(prob(75)) explode() if(2) - if(prob(25)) stat &= BROKEN + if(prob(50)) stat &= BROKEN if(prob(10)) explode() if(3) + if(prob(25)) stat &= BROKEN + duration = 300 + if(4) if(prob(10)) stat &= BROKEN duration = 300 diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index ecdfc0841e..7e0941ce75 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -441,9 +441,9 @@ /obj/singularity/proc/emp_area() if(current_size != 11) - empulse(src, 8, 10) + empulse(src, 4, 6, 8, 10) else - empulse(src, 12, 16) + empulse(src, 12, 14, 16, 18) /obj/singularity/proc/smwave() for(var/mob/living/M in view(10, src.loc)) diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index f943d57dd1..61d5374cad 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -393,10 +393,14 @@ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(3, 1, src) s.start() - if(prob(50)) + if(prob(25)) emp_act(1) - else + else if(prob(25)) emp_act(2) + else if(prob(25)) + emp_act(3) + else + emp_act(4) if(prob(5)) //smoke only var/datum/effect/effect/system/smoke_spread/smoke = new /datum/effect/effect/system/smoke_spread() smoke.set_up(3, 0, src.loc) diff --git a/code/modules/power/smes_construction.dm b/code/modules/power/smes_construction.dm index 2f0fe9419d..c71f0e35e7 100644 --- a/code/modules/power/smes_construction.dm +++ b/code/modules/power/smes_construction.dm @@ -212,7 +212,7 @@ h_user.adjustFireLoss(rand(10,25)) h_user.Paralyse(5) spawn(0) - empulse(src.loc, 2, 4) + empulse(src.loc, 1, 2, 3, 4) charge = 0 if (36 to 60) @@ -229,7 +229,7 @@ h_user.adjustFireLoss(rand(35,75)) h_user.Paralyse(12) spawn(0) - empulse(src.loc, 8, 16) + empulse(src.loc, 6, 8, 12, 16) charge = 0 apcs_overload(1, 10) src.ping("Caution. Output regulators malfunction. Uncontrolled discharge detected.") diff --git a/code/modules/projectiles/ammunition/boxes.dm b/code/modules/projectiles/ammunition/boxes.dm index 2ca770dff5..ae55edeb00 100644 --- a/code/modules/projectiles/ammunition/boxes.dm +++ b/code/modules/projectiles/ammunition/boxes.dm @@ -26,6 +26,10 @@ name = "speedloader (.38 rubber)" ammo_type = /obj/item/ammo_casing/c38r +/obj/item/ammo_magazine/c38/emp + name = "ammunition box (.38 haywire)" + ammo_type = /obj/item/ammo_casing/c38/emp + ///////// .45 ///////// /obj/item/ammo_magazine/c45m @@ -57,6 +61,10 @@ name = "magazine (.45 AP)" ammo_type = /obj/item/ammo_casing/c45ap +/obj/item/ammo_magazine/box/emp/c45 + name = "ammunition box (.45 haywire)" + ammo_type = /obj/item/ammo_casing/c45/emp + /obj/item/ammo_magazine/c45uzi name = "stick magazine (.45)" icon_state = "uzi45" @@ -272,6 +280,10 @@ max_ammo = 9 multiple_sprites = 1 +/obj/item/ammo_magazine/box/emp/a10mm + name = "ammunition box (10mm haywire)" + ammo_type = /obj/item/ammo_casing/a10mm/emp + ///////// 5.56mm ///////// /obj/item/ammo_magazine/a556 diff --git a/code/modules/projectiles/ammunition/bullets.dm b/code/modules/projectiles/ammunition/bullets.dm index 2fca9a3ffd..ace4cb1fb8 100644 --- a/code/modules/projectiles/ammunition/bullets.dm +++ b/code/modules/projectiles/ammunition/bullets.dm @@ -24,6 +24,13 @@ icon_state = "r-casing" projectile_type = /obj/item/projectile/bullet/pistol/rubber +/obj/item/ammo_casing/c38/emp + name = ".38 haywire round" + desc = "A .38 bullet casing fitted with a single-use ion pulse generator." + icon_state = "empcasing" + projectile_type = /obj/item/projectile/ion/small + matter = list(DEFAULT_WALL_MATERIAL = 130, "uranium" = 100) + /obj/item/ammo_casing/c9mm desc = "A 9mm bullet casing." caliber = "9mm" @@ -87,11 +94,24 @@ icon_state = "r-casing" projectile_type = /obj/item/projectile/energy/flash +/obj/item/ammo_casing/c45/emp + name = ".45 haywire round" + desc = "A .45 bullet casing fitted with a single-use ion pulse generator." + projectile_type = /obj/item/projectile/ion/small + icon_state = "empcasing" + matter = list(DEFAULT_WALL_MATERIAL = 130, "uranium" = 100) + /obj/item/ammo_casing/a10mm desc = "A 10mm bullet casing." caliber = "10mm" projectile_type = /obj/item/projectile/bullet/pistol/medium +/obj/item/ammo_casing/a10mm/emp + name = "10mm haywire round" + desc = "A 10mm bullet casing fitted with a single-use ion pulse generator." + projectile_type = /obj/item/projectile/ion/small + icon_state = "empcasing" + matter = list(DEFAULT_WALL_MATERIAL = 130, "uranium" = 100) /obj/item/ammo_casing/shotgun name = "shotgun slug" @@ -150,13 +170,13 @@ projectile_type = /obj/item/projectile/energy/flash/flare matter = list(DEFAULT_WALL_MATERIAL = 90, "glass" = 90) - /obj/item/ammo_casing/shotgun/emp name = "ion shell" desc = "An advanced shotgun round that creates a small EMP when it strikes a target." icon_state = "empshell" - projectile_type = /obj/item/projectile/bullet/shotgun/ion - matter = list(DEFAULT_WALL_MATERIAL = 360, "glass" = 720) + projectile_type = /obj/item/projectile/ion +// projectile_type = /obj/item/projectile/bullet/shotgun/ion + matter = list(DEFAULT_WALL_MATERIAL = 360, "uranium" = 240) /obj/item/ammo_casing/a762 desc = "A 7.62mm bullet casing." diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 4443775df5..faafd2e8c9 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -12,14 +12,18 @@ projectile_type = /obj/item/projectile/ion /obj/item/weapon/gun/energy/ionrifle/emp_act(severity) - ..(max(severity, 2)) //so it doesn't EMP itself, I guess + ..(max(severity, 4)) //so it doesn't EMP itself, I guess -/obj/item/weapon/gun/energy/ionrifle/update_icon() - ..() - if(power_supply.charge < charge_cost) - item_state = "ionrifle0" - else - item_state = initial(item_state) +/obj/item/weapon/gun/energy/ionrifle/pistol + name = "ion pistol" + desc = "The NT Mk63 EW Pan is a man portable anti-armor weapon designed to disable mechanical threats, produced by NT. This model sacrifices capacity for portability.." + icon_state = "ionpistol" + item_state = null + w_class = ITEMSIZE_NORMAL + force = 5 + slot_flags = SLOT_BELT + charge_cost = 480 + projectile_type = /obj/item/projectile/ion /obj/item/weapon/gun/energy/decloner name = "biological demolecularisor" diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm index 7de8e7b877..1e95f4a213 100644 --- a/code/modules/projectiles/guns/projectile/revolver.dm +++ b/code/modules/projectiles/guns/projectile/revolver.dm @@ -76,6 +76,10 @@ fire_sound = 'sound/weapons/Gunshot_light.ogg' ammo_type = /obj/item/ammo_casing/c38 +/obj/item/weapon/gun/projectile/revolver/deckard/emp + ammo_type = /obj/item/ammo_casing/c38/emp + + /obj/item/weapon/gun/projectile/revolver/deckard/update_icon() ..() if(loaded.len) diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index 29d130612f..f87f726bf3 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -172,7 +172,8 @@ range_step = 1 spread_step = 10 -//EMP shotgun 'slug', it's basically a beanbag that pops a tiny emp when it hits. + +//EMP shotgun 'slug', it's basically a beanbag that pops a tiny emp when it hits. //Not currently used /obj/item/projectile/bullet/shotgun/ion name = "ion slug" damage = 15 @@ -182,9 +183,10 @@ /obj/item/projectile/bullet/shotgun/ion/on_hit(var/atom/target, var/blocked = 0) ..() - empulse(target, 0, 0) //Only affects what it hits + empulse(target, 0, 0, 0, 0) //Only affects what it hits return 1 + /* "Rifle" rounds */ /obj/item/projectile/bullet/rifle diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index 8aba3c0928..b507afc316 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -8,12 +8,16 @@ light_range = 2 light_power = 0.5 light_color = "#55AAFF" + var/pulse_range = 1 on_hit(var/atom/target, var/blocked = 0) - empulse(target, 1, 1) + empulse(target, pulse_range, pulse_range, pulse_range, pulse_range) return 1 +/obj/item/projectile/ion/small + pulse_range = 0 + /obj/item/projectile/bullet/gyro name ="explosive bolt" icon_state= "bolter" diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index 4d7d13e5b3..1c5e2bfead 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -652,7 +652,7 @@ var/location = get_turf(holder.my_atom) // 100 created volume = 4 heavy range & 7 light range. A few tiles smaller than traitor EMP grandes. // 200 created volume = 8 heavy range & 14 light range. 4 tiles larger than traitor EMP grenades. - empulse(location, round(created_volume / 24), round(created_volume / 14), 1) + empulse(location, round(created_volume / 24), round(created_volume / 20), round(created_volume / 18), round(created_volume / 14), 1) holder.clear_reagents() return diff --git a/code/modules/shieldgen/emergency_shield.dm b/code/modules/shieldgen/emergency_shield.dm index 9e8a752122..3690a1f2ba 100644 --- a/code/modules/shieldgen/emergency_shield.dm +++ b/code/modules/shieldgen/emergency_shield.dm @@ -84,8 +84,14 @@ if(1) qdel(src) if(2) + if(prob(75)) + qdel(src) + if(3) if(prob(50)) qdel(src) + if(4) + if(prob(25)) + qdel(src) /obj/machinery/shield/hitby(AM as mob|obj) @@ -264,7 +270,7 @@ else user << "The device must first be secured to the floor." return - + /obj/machinery/shieldgen/emag_act(var/remaining_charges, var/mob/user) if(!malfunction) malfunction = 1 diff --git a/code/modules/spells/aoe_turf/disable_tech.dm b/code/modules/spells/aoe_turf/disable_tech.dm index 5192ecb664..9acbf95369 100644 --- a/code/modules/spells/aoe_turf/disable_tech.dm +++ b/code/modules/spells/aoe_turf/disable_tech.dm @@ -11,13 +11,15 @@ cooldown_min = 200 //50 deciseconds reduction per rank - var/emp_heavy = 6 - var/emp_light = 10 + var/emp_heavy = 3 + var/emp_med = 5 + var/emp_light = 8 + var/emp_long = 10 hud_state = "wiz_tech" /spell/aoe_turf/disable_tech/cast(list/targets) for(var/turf/target in targets) - empulse(get_turf(target), emp_heavy, emp_light) + empulse(get_turf(target), emp_heavy, emp_med, emp_light, emp_long) return \ No newline at end of file diff --git a/code/modules/spells/spellbook.dm b/code/modules/spells/spellbook.dm index 34923745a4..a28f03e8fe 100644 --- a/code/modules/spells/spellbook.dm +++ b/code/modules/spells/spellbook.dm @@ -432,4 +432,4 @@ /obj/item/weapon/spellbook/oneuse/charge/recoil(mob/user as mob) ..() user <<"[src] suddenly feels very warm!" - empulse(src, 1, 1) + empulse(src, 1, 1, 1, 1) diff --git a/code/modules/xenoarcheaology/effects/emp.dm b/code/modules/xenoarcheaology/effects/emp.dm index d6d402efe4..fd30420b57 100644 --- a/code/modules/xenoarcheaology/effects/emp.dm +++ b/code/modules/xenoarcheaology/effects/emp.dm @@ -9,5 +9,5 @@ /datum/artifact_effect/emp/DoEffectPulse() if(holder) var/turf/T = get_turf(holder) - empulse(T, effectrange/2, effectrange) + empulse(T, effectrange/4, effectrange/3, effectrange/2, effectrange) return 1 diff --git a/html/changelogs/Anewbe - EMP.yml b/html/changelogs/Anewbe - EMP.yml new file mode 100644 index 0000000000..10e64aaee2 --- /dev/null +++ b/html/changelogs/Anewbe - EMP.yml @@ -0,0 +1,38 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: Anewbe + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "Added an ion pistol, has five shots." + - rscadd: "Added Bay's Haywire rounds." + - tweak: "EMP now works on four levels, instead of two." \ No newline at end of file diff --git a/icons/mob/items/lefthand_guns.dmi b/icons/mob/items/lefthand_guns.dmi index 140f573f6987cc1088c5d9a530050fb9da1c1df6..ff49dc5577c03c40dc572154de8b2dbdd9c0f411 100644 GIT binary patch delta 7593 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 QJ^o8eUGH9v+T$1h0Ru5U(f|Me diff --git a/icons/mob/items/righthand_guns.dmi b/icons/mob/items/righthand_guns.dmi index 192798733fb4a4317ffed5bc7d55a56b213a1557..44521ed36e37991155eab2591ad6167510ea3cbc 100644 GIT binary patch delta 12243 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 Rz)$xfckk$FR;$}T|6lf!5t#r0 delta 9931 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 diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi index a1290564041459d52e6666aa562ff12401e9fda6..a1f1fb20ebcf8317eca09bfc96dc2a0dca9767a5 100644 GIT binary patch literal 25467 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
  • (fJ;1AR8ophOngKQ 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 literal 24367 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 DAj2&P literal 70968 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�=V%F4*R_SiuDgTunKMmXvpEgnAvLcq&z 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 From 9dbd05e8d4a4bf5c58e19942702fe9144b327211 Mon Sep 17 00:00:00 2001 From: Neerti Date: Wed, 8 Mar 2017 20:37:11 -0500 Subject: [PATCH 02/19] Ports Vore's Space Traffic Controller feature. Ports Vore's fluff spaceships that talk on comms every ~40 minutes. --- .../emergency_shuttle_controller.dm | 1 + .../game/machinery/computer/communications.dm | 6 + code/modules/busy_space/air_traffic.dm | 127 +++++++ code/modules/busy_space/loremaster.dm | 13 + code/modules/busy_space/organizations.dm | 322 ++++++++++++++++++ polaris.dme | 3 + 6 files changed, 472 insertions(+) create mode 100644 code/modules/busy_space/air_traffic.dm create mode 100644 code/modules/busy_space/loremaster.dm create mode 100644 code/modules/busy_space/organizations.dm diff --git a/code/controllers/emergency_shuttle_controller.dm b/code/controllers/emergency_shuttle_controller.dm index bac3afb301..6de0c6ca3e 100644 --- a/code/controllers/emergency_shuttle_controller.dm +++ b/code/controllers/emergency_shuttle_controller.dm @@ -98,6 +98,7 @@ var/global/datum/emergency_shuttle_controller/emergency_shuttle shuttle.move_time = SHUTTLE_TRANSIT_DURATION priority_announcement.Announce(replacetext(replacetext(using_map.shuttle_called_message, "%dock_name%", "[using_map.dock_name]"), "%ETA%", "[estimated_time] minute\s")) + atc.shift_ending() //recalls the shuttle /datum/emergency_shuttle_controller/proc/recall() diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 439e9f4508..a738ea66c1 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -35,10 +35,12 @@ var/stat_msg1 var/stat_msg2 + var/datum/lore/atc_controller/ATC var/datum/announcement/priority/crew_announcement = new /obj/machinery/computer/communications/New() ..() + ATC = atc crew_announcement.newscast = 1 /obj/machinery/computer/communications/process() @@ -130,6 +132,8 @@ if("messagelist") src.currmsg = 0 src.state = STATE_MESSAGELIST + if("toggleatc") + src.ATC.squelched = !src.ATC.squelched if("viewmessage") src.state = STATE_VIEWMESSAGE if (!src.currmsg) @@ -311,6 +315,7 @@ else dat += "
    \[ Log In \]" dat += "
    \[ Message List \]" + dat += "
    \[ [ATC.squelched ? "Enable" : "Disable"] ATC Relay \]" if(STATE_CALLSHUTTLE) dat += "Are you sure you want to call the shuttle? \[ OK | Cancel \]" if(STATE_CANCELSHUTTLE) @@ -374,6 +379,7 @@ dat += "
    \[ Call Emergency Shuttle \]" dat += "
    \[ Message List \]" dat += "
    \[ Set Status Display \]" + dat += "
    \[ [ATC.squelched ? "Enable" : "Disable"] ATC Relay \]" if(STATE_CALLSHUTTLE) dat += "Are you sure you want to call the shuttle? \[ OK | Cancel \]" if(STATE_MESSAGELIST) diff --git a/code/modules/busy_space/air_traffic.dm b/code/modules/busy_space/air_traffic.dm new file mode 100644 index 0000000000..c88a6bcd9c --- /dev/null +++ b/code/modules/busy_space/air_traffic.dm @@ -0,0 +1,127 @@ +//Cactus, Speedbird, Dynasty, oh my + +var/datum/lore/atc_controller/atc = new/datum/lore/atc_controller + +/datum/lore/atc_controller + var/delay_max = 25 MINUTES //How long between ATC traffic, max. Default is 25 mins. + var/delay_min = 40 MINUTES //How long between ATC traffic, min. Default is 40 mins. + var/backoff_delay = 5 MINUTES //How long to back off if we can't talk and want to. Default is 5 mins. + var/next_message //When the next message should happen in world.time + var/force_chatter_type //Force a specific type of messages + + var/squelched = 0 //If ATC is squelched currently + +/datum/lore/atc_controller/New() + spawn(10 SECONDS) //Lots of lag at the start of a shift. + msg("New shift beginning, resuming traffic control.") + next_message = world.time + rand(delay_min,delay_max) + process() + +/datum/lore/atc_controller/proc/process() + if(world.time >= next_message) + if(squelched) + next_message = world.time + backoff_delay + else + next_message = world.time + rand(delay_min,delay_max) + random_convo() + + spawn(1 MINUTE) //We don't really need high-accuracy here. + process() + +/datum/lore/atc_controller/proc/msg(var/message,var/sender) + ASSERT(message) + global_announcer.autosay("[message]", sender ? sender : "[using_map.station_short] Space Control") + +/datum/lore/atc_controller/proc/reroute_traffic(var/yes = 1) + if(yes) + msg("Rerouting traffic away from [using_map.station_name].") + squelched = 1 + else + msg("Resuming normal traffic routing around [using_map.station_name].") + squelched = 0 + +/datum/lore/atc_controller/proc/shift_ending(var/evac = 0) + msg("Automated Shuttle departing [using_map.station_name] for [using_map.dock_name] on routine transfer route.","NT Automated Shuttle") + sleep(5 SECONDS) + msg("Automated Shuttle, cleared to complete routine transfer from [using_map.station_name] to [using_map.dock_name].") + +/datum/lore/atc_controller/proc/random_convo() + var/one = pick(loremaster.organizations) //These will pick an index, not an instance + var/two = pick(loremaster.organizations) + + var/datum/lore/organization/source = loremaster.organizations[one] //Resolve to the instances + var/datum/lore/organization/dest = loremaster.organizations[two] + + //Let's get some mission parameters + var/owner = source.short_name //Use the short name + var/prefix = pick(source.ship_prefixes) //Pick a random prefix + var/mission = source.ship_prefixes[prefix] //The value of the prefix is the mission type that prefix does + var/shipname = pick(source.ship_names) //Pick a random ship name to go with it + var/destname = pick(dest.destination_names) //Pick a random holding from the destination + + var/combined_name = "[owner] [prefix] [shipname]" + var/alt_atc_names = list("[using_map.station_short] TraCon","[using_map.station_short] Control","[using_map.station_short] STC","[using_map.station_short] Airspace") + var/wrong_atc_names = list("Sol Command","Orion Control", "[using_map.dock_name]") + var/mission_noun = list("flight","mission","route") + var/request_verb = list("requesting","calling for","asking for") + + //First response is 'yes', second is 'no' + var/requests = list("[using_map.station_short] transit clearance" = list("permission for transit granted", "permission for transit denied, contact regional on 953.5"), + "planetary flight rules" = list("authorizing planetary flight rules", "denying planetary flight rules right now due to traffic"), + "special flight rules" = list("authorizing special flight rules", "denying special flight rules, not allowed for your traffic class"), + "current solar weather info" = list("sending you the relevant information via tightbeam", "cannot fulfill your request at the moment"), + "nearby traffic info" = list("sending you current traffic info", "no available info in your area"), + "remote telemetry data" = list("sending telemetry now", "no uplink from your ship, recheck your uplink and ask again"), + "refueling information" = list("sending refueling information now", "no fuel for your ship class in this sector"), + "a current system time sync" = list("sending time sync ping to you now", "your ship isn't compatible with our time sync, set time manually"), + "current system starcharts" = list("transmitting current starcharts", "your request is queued, overloaded right now"), + "permission to engage FTL" = list("permission to engage FTL granted, good day", "permission denied, wait for current traffic to pass"), + "permission to transit system" = list("permission to transit granted, good day", "permission denied, wait for current traffic to pass"), + "permission to depart system" = list("permission to depart granted, good day", "permission denied, wait for current traffic to pass"), + "permission to enter system" = list("good day, permission to enter granted", "permission denied, wait for current traffic to pass"), + ) + + //Random chance things for variety + var/chatter_type = "normal" + if(force_chatter_type) + chatter_type = force_chatter_type + else + chatter_type = pick(2;"emerg",5;"wrong_freq","normal") //Be nice to have wrong_lang... + + var/yes = prob(90) //Chance for them to say yes vs no + + var/request = pick(requests) + var/callname = pick(alt_atc_names) + var/response = requests[request][yes ? 1 : 2] //1 is yes, 2 is no + + var/full_request + var/full_response + var/full_closure + + switch(chatter_type) + if("wrong_freq") + callname = pick(wrong_atc_names) + full_request = "[callname], this is [combined_name] on a [mission] [pick(mission_noun)] to [destname], [pick(request_verb)] [request]." + full_response = "[combined_name], this is [using_map.station_short] TraCon, wrong frequency. Switch to [rand(700,999)].[rand(1,9)]." + full_closure = "[using_map.station_short] TraCon, understood, apologies." + if("wrong_lang") + //Can't implement this until autosay has language support + if("emerg") + var/problem = pick("hull breaches on multiple decks","unknown life forms on board","a drive about to go critical","asteroids impacting the hull","a total loss of engine power","people trying to board the ship") + full_request = "This is [combined_name] declaring an emergency! We have [problem]!" + full_response = "[combined_name], this is [using_map.station_short] TraCon, copy. Switch to emergency responder channel [rand(700,999)].[rand(1,9)]." + full_closure = "[using_map.station_short] TraCon, okay, switching now." + else + full_request = "[callname], this is [combined_name] on a [mission] [pick(mission_noun)] to [destname], [pick(request_verb)] [request]." + full_response = "[combined_name], this is [using_map.station_short] TraCon, [response]." //Station TraCon always calls themselves TraCon + full_closure = "[using_map.station_short] TraCon, [yes ? "thank you" : "understood"], good day." //They always copy what TraCon called themselves in the end when they realize they said it wrong + + //Ship sends request to ATC + msg(full_request,"[prefix] [shipname]") + sleep(5 SECONDS) + //ATC sends response to ship + msg(full_response) + sleep(5 SECONDS) + //Ship sends response to ATC + msg(full_closure,"[prefix] [shipname]") + return \ No newline at end of file diff --git a/code/modules/busy_space/loremaster.dm b/code/modules/busy_space/loremaster.dm new file mode 100644 index 0000000000..30bd04402d --- /dev/null +++ b/code/modules/busy_space/loremaster.dm @@ -0,0 +1,13 @@ +//I AM THE LOREMASTER, ARE YOU THE GATEKEEPER? + +var/datum/lore/loremaster/loremaster = new/datum/lore/loremaster + +/datum/lore/loremaster + var/list/organizations = list() + +/datum/lore/loremaster/New() + + var/list/paths = typesof(/datum/lore/organization) - /datum/lore/organization + for(var/path in paths) + var/datum/lore/organization/instance = new path() + organizations[path] = instance \ No newline at end of file diff --git a/code/modules/busy_space/organizations.dm b/code/modules/busy_space/organizations.dm new file mode 100644 index 0000000000..38bd2f1418 --- /dev/null +++ b/code/modules/busy_space/organizations.dm @@ -0,0 +1,322 @@ +//Datums for different companies that can be used by busy_space +/datum/lore/organization + var/name = "" // Organization's name + var/short_name = "" // Organization's shortname (NanoTrasen for "NanoTrasen Incorporated") + var/desc = "" // One or two paragraph description of the organization, but only current stuff. Currently unused. + var/history = "" // Historical discription of the organization's origins Currently unused. + var/work = "" // Short description of their work, eg "an arms manufacturer" + var/headquarters = "" // Location of the organization's HQ. Currently unused. + var/motto = "" // A motto/jingle/whatever, if they have one. Currently unused. + + var/list/ship_prefixes = list() //Some might have more than one! Like NanoTrasen. Value is the mission they perform, e.g. ("ABC" = "mission desc") + var/list/ship_names = list( //Names of spaceships. This is a mostly generic list that all the other organizations inherit from if they don't have anything better. + "Kestrel", + "Beacon", + "Signal", + "Freedom", + "Glory", + "Axiom", + "Eternal", + "Icarus", + "Harmony", + "Light", + "Discovery", + "Endeavour", + "Explorer", + "Swift", + "Dragonfly", + "Ascendant", + "Tenacious", + "Pioneer", + "Hawk", + "Haste", + "Radiant", + "Luminous" + ) + var/list/destination_names = list() //Names of static holdings that the organization's ships visit regularly. + var/autogenerate_destination_names = TRUE + +/datum/lore/organization/New() + ..() + if(autogenerate_destination_names) // Lets pad out the destination names. + var/i = rand(6, 10) + var/list/star_names = list( + "Sol", "Alpha Centauri", "Sirius", "Vega", "Regulus", "Vir", "Algol", "Aldebaran", + "Delta Doradus", "Menkar", "Geminga", "Elnath", "Gienah", "Mu Leporis", "Nyx", "Tau Ceti", + "Wazn", "Alphard", "Phact", "Altair") + var/list/destination_types = list("dockyard", "station", "vessel", "waystation", "telecommunications satellite", "spaceport", "distress beacon", "anomaly", "colony", "outpost") + while(i) + destination_names.Add("a [pick(destination_types)] in [pick(star_names)]") + i-- + +////////////////////////////////////////////////////////////////////////////////// + +// TSCs +/datum/lore/organization/nanotrasen + name = "NanoTrasen Incorporated" + short_name = "NanoTrasen" + desc = "" // Todo: Write this. + history = "" // This too. + work = "research giant" + headquarters = "Luna" + motto = "" + + ship_prefixes = list("NSV" = "exploration", "NTV" = "hauling", "NDV" = "patrol", "NRV" = "emergency response") + // Note that the current station being used will be pruned from this list upon being instantiated + destination_names = list( + "NSS Exodus in Nyx", + "NCS Northern Star in Vir", + "NCS Southern Cross in Vir", + "NDV Icarus in Nyx", + "NAS Vir Central Command", + "a dockyard orbiting Sif", + "an asteroid orbiting Kara", + "an asteroid orbiting Rota", + "Vir Interstellar Spaceport" + ) + +/datum/lore/organization/nanotrasen/New() + ..() + // Get rid of the current map from the list, so ships flying in don't say they're coming to the current map. + var/string_to_test = "[using_map.station_name] in [using_map.starsys_name]" + if(string_to_test in destination_names) + destination_names.Remove(string_to_test) + + + +/datum/lore/organization/hephaestus + name = "Hephaestus Industries" + short_name = "Hephaestus" + desc = "Hephaestus Industries is the largest supplier of arms, ammunition, and small millitary vehicles in Sol space. \ + Hephaestus products have a reputation for reliability, and the corporation itself has a noted tendency to stay removed \ + from corporate politics. They enforce their neutrality with the help of a fairly large asset-protection contingent which \ + prevents any contracting polities from using their own materiel against them. SolGov itself is one of Hephastus’ largest \ + bulk contractors owing to the above factors." + history = "" + work = "arms manufacturer" + headquarters = "" + motto = "" + + ship_prefixes = list("HTV" = "freight", "HTV" = "munitions resupply") + destination_names = list( + "a SolGov dockyard on Luna" + ) + +/datum/lore/organization/vey_med + name = "Vey Medical" + short_name = "Vey Med" + desc = "Vey-Med is one of the newer TSCs on the block and is notable for being largely owned and opperated by Skrell. \ + Despite the suspicion and prejudice leveled at them for their alien origin, Vey-Med has obtained market dominance in \ + the sale of medical equipment-- from surgical tools to large medical devices to the Oddyseus trauma response mecha \ + and everything in between. Their equipment tends to be top-of-the-line, most obviously shown by their incredibly \ + human-like FBP designs. Vey’s rise to stardom came from their introduction of ressurective cloning, although in \ + recent years they’ve been forced to diversify as their patents expired and NanoTrasen-made medications became \ + essential to modern cloning." + history = "" + work = "medical equipment supplier" + headquarters = "" + motto = "" + + ship_prefixes = list("VTV" = "transportation", "VMV" = "medical resupply") + destination_names = list() + +/datum/lore/organization/zeng_hu + name = "Zeng-Hu pharmaceuticals" + short_name = "Zeng-Hu" + desc = "Zeng-Hu is an old TSC, based in the Sol system. Until the discovery of Phoron, Zeng-Hu maintained a stranglehold \ + on the market for medications, and many household names are patentted by Zeng-Hu-- Bicaridyne, Dylovene, Tricordrizine, \ + and Dexalin all came from a Zeng-Hu medical laboratory. Zeng-Hu’s fortunes have been in decline as Nanotrasen’s near monopoly \ + on phoron research cuts into their R&D and Vey-Med’s superior medical equipment effectively decimated their own equipment \ + interests. The three-way rivalry between these companies for dominance in the medical field is well-known and a matter of \ + constant economic speculation." + history = "" + work = "pharmaceuticals company" + headquarters = "" + motto = "" + + ship_prefixes = list("ZTV" = "transportation", "ZMV" = "medical resupply") + destination_names = list() + +/datum/lore/organization/ward_takahashi + name = "Ward-Takahashi General Manufacturing Conglomerate" + short_name = "Ward-Takahashi" + desc = "Ward-Takahashi focuses on the sale of small consumer electronics, with its computers, communicators, \ + and even mid-class automobiles a fixture of many households. Less famously, Ward-Takahashi also supplies most \ + of the AI cores on which vital control systems are mounted, and it is this branch of their industry that has \ + led to their tertiary interest in the development and sale of high-grade AI systems. Ward-Takahashi’s economies \ + of scale frequently steal market share from Nanotrasen’s high-price products, leading to a bitter rivalry in the \ + consumer electronics market." + history = "" + work = "electronics manufacturer" + headquarters = "" + motto = "" + + ship_prefixes = list("WTV" = "freight") + destination_names = list() + +/datum/lore/organization/bishop + name = "Bishop Cybernetics" + short_name = "Bishop" + desc = "Bishop’s focus is on high-class, stylish cybernetics. A favorite among transhumanists (and a bête noire for \ + bioconservatives), Bishop manufactures not only prostheses but also brain augmentation, synthetic organ replacements, \ + and odds and ends like implanted wrist-watches. Their business model tends towards smaller, boutique operations, giving \ + it a reputation for high price and luxury, with Bishop cyberware often rivalling Vey-Med’s for cost. Bishop’s reputation \ + for catering towards the interests of human augmentation enthusiasts instead of positronics have earned it ire from the \ + Positronic Rights Group and puts it in ideological (but not economic) comptetition with Morpheus Cyberkinetics." + history = "" + work = "cybernetics and augmentation manufacturer" + headquarters = "" + motto = "" + + ship_prefixes = list("BTV" = "transportation") + destination_names = list() + +/datum/lore/organization/morpheus + name = "Morpheus Cyberkinetics" + short_name = "Morpheus" + desc = "The only large corporation run by positronic intelligences, Morpheus caters almost exclusively to their sensibilities \ + and needs. A product of the synthetic colony of Shelf, Morpheus eschews traditional advertising to keep their prices low and \ + relied on word of mouth among positronics to reach their current economic dominance. Morpheus in exchange lobbies heavily for \ + positronic rights, sponsors positronics through their Jans-Fhriede test, and tends to other positronic concerns to earn them \ + the good-will of the positronics, and the ire of those who wish to exploit them." + history = "" + work = "cybernetics manufacturer" + headquarters = "" + motto = "" + + ship_prefixes = list("MTV" = "freight") + // Culture names, because Anewbe told me so. + ship_names = list( + "Nervous Energy", + "Prosthetic Conscience", + "Revisionist", + "Trade Surplus", + "Flexible Demeanour", + "Just Read The Instructions", + "Limiting Factor", + "Cargo Cult", + "Gunboat Diplomat", + "A Ship With A View", + "Cantankerous", + "I Thought He Was With You", + "Never Talk To Strangers", + "Sacrificial Victim", + "Unwitting Accomplice", + "Bad For Business", + "Just Testing", + "Size Isn't Everything", + "Yawning Angel", + "Liveware Problem", + "Very Little Gravitas Indeed", + "Zero Gravitas", + "Gravitas Free Zone", + "Absolutely No You-Know-What", + "Existence Is Pain", + "I'm Walking Here", + "Screw Loose", + "Of Course I Still Love You", + "Limiting Factor", + "So Much For Subtley", + "Unfortunate Conflict Of Evidence", + "Prime Mover", + "It's One Of Ours", + "Thank You And Goodnight", + "Boo!", + "Reasonable Excuse", + "Honest Mistake", + "Appeal To Reason", + "My First Ship II", + "Hidden Income", + "Anything Legal Considered", + "New Toy", + "Me, I'm Always Counting", + "Just Five More Minutes" + + + ) + destination_names = list() + +/datum/lore/organization/xion + name = "Xion Manufacturing Group" + short_name = "Xion" + desc = "Xion, quietly, controls most of the market for industrial equipment. Their portfolio includes mining exosuits, \ + factory equipment, rugged positronic chassis, and other pieces of equipment vital to the function of the economy. Xion \ + keeps its control of the market by leasing, not selling, their equipment, and through infamous and bloody patent protection \ + lawsuits. Xion are noted to be a favorite contractor for SolGov engineers, owing to their low cost and rugged design." + history = "" + work = "industrial equipment manufacturer" + headquarters = "" + motto = "" + + ship_prefixes = list("XTV" = "hauling") + destination_names = list() + +// Governments + +/datum/lore/organization/sifgov + name = "Sif Governmental Authority" + short_name = "SifGov" + desc = "SifGov is the sole governing administration for the Vir system, based in New Reykjavik, Sif. It is a representative \ + democratic government, and a fully recognized member of the Solar Confederate Government. Anyone operating inside of Vir must \ + comply with SifGov's legislation and regulations." + history = "" // Todo like the rest of them + work = "governing body of Sif" + headquarters = "New Reykjavik, Sif" + motto = "" + autogenerate_destination_names = FALSE + + ship_prefixes = list("SGA" = "hauling", "SGA" = "energy relay") + destination_names = list( + "New Reykjavik on Sif", + "Radiance Energy Chain", + "a dockyard orbiting Sif", + "a telecommunications satellite", + "Vir Interstellar Spaceport" + ) + +/datum/lore/organization/solgov + name = "Solar Confederate Government" + short_name = "SolGov" + desc = "SolGov is a decentralized confederation of human governmental entities based on Luna, Sol, which defines top-level law for their member states. \ + Member states receive various benefits such as defensive pacts, trade agreements, social support and funding, and being able to participate \ + in the Colonial Assembly. The majority, but not all human territories are members of SolGov. As such, SolGov is a major power and \ + defacto represents humanity on the galatic stage." + history = "" // Todo + work = "governing polity of humanity's Confederation" + headquarters = "Luna" + motto = "Nil Mortalibus Ardui Est" // Latin, because latin. Says 'Nothing is too steep for mortals'. + autogenerate_destination_names = TRUE + + ship_prefixes = list("SCG-T" = "transportation", "SCG-D" = "diplomatic", "SCG-F" = "freight") + destination_names = list( + "Venus", + "Earth", + "Luna", + "Mars", + "Titan" + )// autogen will add a lot of other places as well. + +// Military + +/datum/lore/organization/sif_guard + name = "Sif Homeguard Forces" // Todo: Get better name from lorepeople. + short_name = "SifGuard" + desc = "" + history = "" + work = "Sif Governmental Authority's military" + headquarters = "Sif" // Make this more specific later. + motto = "" + autogenerate_destination_names = FALSE // Kinda weird if SifGuard goes to Nyx. + + ship_prefixes = list("SGSC" = "military", "SGSC" = "patrol", "SGSC" = "rescue", "SGSC" = "emergency response") // Todo: Replace prefix with better one. + destination_names = list( + "a classified location in SolGov territory", + "Sif orbit", + "the rings of Kara", + "the rings of Rota", + "Firnir orbit", + "Tyr orbit", + "Magni orbit", + "a wreck in SifGov territory", + "a military outpost", + ) diff --git a/polaris.dme b/polaris.dme index 45b45aaa9e..46de618649 100644 --- a/polaris.dme +++ b/polaris.dme @@ -1146,6 +1146,9 @@ #include "code\modules\awaymissions\trigger.dm" #include "code\modules\awaymissions\zlevel.dm" #include "code\modules\blob\blob.dm" +#include "code\modules\busy_space\air_traffic.dm" +#include "code\modules\busy_space\loremaster.dm" +#include "code\modules\busy_space\organizations.dm" #include "code\modules\client\client defines.dm" #include "code\modules\client\client procs.dm" #include "code\modules\client\movement.dm" From 4f47ce2d77469d744f2ccce47576c8e2cdeef2f0 Mon Sep 17 00:00:00 2001 From: Arokha Sieyes Date: Fri, 10 Mar 2017 18:25:10 -0500 Subject: [PATCH 03/19] "Recipe Dump" admin verb The idea of updating the wiki list of recipes is daunting, especially getting all the icons and resizing them to look nice on a webpage, so fuuuuuuuuck that. I made a verb that does it. It dumps upsized (64x64) images of every food icon and a recipes.html file into your cache with a table that contains all the recipes, nicely formatted, in alphabetical order (the -burger and -kebab at the top are because those are [whatever-meat]-burger and [whatever-meat]-kebab). Then you can just throw them on a website. It will include a recipes.css file if it's in the same dir. Here's the result on our server: https://vore-station.net/infodump/recipes.html --- code/modules/admin/admin_verbs.dm | 3 +- code/modules/food/recipe_dump.dm | 129 ++++++++++++++++++++++++++++++ polaris.dme | 1 + 3 files changed, 132 insertions(+), 1 deletion(-) create mode 100644 code/modules/food/recipe_dump.dm diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 91a504f421..8dbfae61ec 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -161,7 +161,8 @@ var/list/admin_verbs_server = list( /client/proc/toggle_random_events, /client/proc/check_customitem_activity, /client/proc/nanomapgen_DumpImage, - /client/proc/modify_server_news + /client/proc/modify_server_news, + /client/proc/recipe_dump ) var/list/admin_verbs_debug = list( /client/proc/getruntimelog, //allows us to access runtime logs to somebody, diff --git a/code/modules/food/recipe_dump.dm b/code/modules/food/recipe_dump.dm new file mode 100644 index 0000000000..f33be27258 --- /dev/null +++ b/code/modules/food/recipe_dump.dm @@ -0,0 +1,129 @@ +/client/proc/recipe_dump() + set name = "Generate Recipe Dump" + set category = "Server" + set desc = "Dumps food recipe info and images for wiki or other use." + + if(!holder) + return + + var/list/recipe_paths = typesof(/datum/recipe) - /datum/recipe + //Build a useful list + for(var/Rp in recipe_paths) + //Lists don't work with datum-stealing no-instance initial() so we have to. + var/datum/recipe/R = new Rp() + var/obj/res = new R.result() + + var/icon/result_icon = icon(res.icon,res.icon_state) + result_icon.Scale(64,64) + + recipe_paths[Rp] = list( + "Result" = "[res.name]", + "Reagents" = R.reagents, + "Fruit" = R.fruit, + "Ingredients" = R.items, + "Image" = result_icon + ) + + qdel(res) + qdel(R) + + //Items needs further processing into human-readability. Another use of initial. + var/working_ing_list = list() + for(var/I in recipe_paths[Rp]["Ingredients"]) + var/atom/ing = new I() + + //So now we add something like "Bread" = 3 + if(ing.name in working_ing_list) + working_ing_list[ing.name] = working_ing_list[ing.name]++ + else + working_ing_list[ing.name] = 1 + + recipe_paths[Rp]["Ingredients"] = working_ing_list + + //Reagents can be resolved to nicer names as well + for(var/rid in recipe_paths[Rp]["Reagents"]) + var/datum/reagent/Rd = chemical_reagents_list[rid] + var/R_name = Rd.name + recipe_paths[Rp]["Reagents"][R_name] += recipe_paths[Rp]["Reagents"][rid] + recipe_paths[Rp]["Reagents"] -= rid + + //Sort list by transforming into resultname+unique = path, then back in the right order + //Can't just be sorted by resultname since they are not unique and lists indexed by that will + //end up overwriting the several ways to make something with a single one + var/list/names_to_paths = list() + for(var/Rp in recipe_paths) + names_to_paths["[recipe_paths[Rp]["Result"]] [Rp]"] = Rp //Append recipe datum path to keep uniqueness + + names_to_paths = sortAssoc(names_to_paths) + + var/list/newly_sorted = list() + for(var/Rr in names_to_paths) + var/Rp = names_to_paths[Rr] + newly_sorted[Rp] = recipe_paths[Rp] + + recipe_paths = newly_sorted + + //Produce Output + var/html = "\ + \ + \ + \ + \ + Food Recipes\ + \ + " + + html += "

    Recipes (as of [time2text(world.realtime,"MMM DD, YYYY")])


    " + html += "" + html += "" + for(var/Rp in recipe_paths) + //Open this row + html += "" + + //Image + var/image_path = "recipe-[ckey(recipe_paths[Rp]["Result"])].png" + var/icon/icon_to_give = recipe_paths[Rp]["Image"] + html += "" + src << browse(icon_to_give, "window=picture;file=[image_path];display=0") + + //Name + html += "" + + //Ingredients + html += "" + //Close this row + html += "" + + html += "
    IconNameIngredients
    [recipe_paths[Rp]["Result"]]
      " + var/count //For those commas. Not sure of a great other way to do it. + //For each large ingredient + var/pretty_ing = "" + count = 0 + for(var/ing in recipe_paths[Rp]["Ingredients"]) + pretty_ing += "[count == 0 ? "" : ", "][recipe_paths[Rp]["Ingredients"][ing]]x [ing]" + count++ + if(pretty_ing != "") + html += "
    • Ingredients: [pretty_ing]
    • " + + //For each fruit + var/pretty_fru = "" + count = 0 + for(var/fru in recipe_paths[Rp]["Fruit"]) + pretty_fru += "[count == 0 ? "" : ", "][recipe_paths[Rp]["Fruit"][fru]]x [fru]" + count++ + if(pretty_fru != "") + html += "
    • Fruit: [pretty_fru]
    • " + + //For each reagent + var/pretty_rea = "" + count = 0 + for(var/rea in recipe_paths[Rp]["Reagents"]) + pretty_rea += "[count == 0 ? "" : ", "][recipe_paths[Rp]["Reagents"][rea]]u [rea]" + count++ + if(pretty_rea != "") + html += "
    • Mix in: [pretty_rea]
    • " + + //Close ingredients + html += "
    " + src << browse(html, "window=recipes;file=recipes.html;display=0") + src << "In your byond cache, recipe-xxx.png files and recipes.html now exist. Place recipe-xxx.png files in a subfolder named 'imgrecipes' wherever you put them. The file will take a recipes.css file if in the same path." diff --git a/polaris.dme b/polaris.dme index ad53ed1052..28965d99ac 100644 --- a/polaris.dme +++ b/polaris.dme @@ -1351,6 +1351,7 @@ #include "code\modules\flufftext\Dreaming.dm" #include "code\modules\flufftext\Hallucination.dm" #include "code\modules\flufftext\TextFilters.dm" +#include "code\modules\food\recipe_dump.dm" #include "code\modules\food\recipes_microwave.dm" #include "code\modules\gamemaster\controller.dm" #include "code\modules\gamemaster\defines.dm" From 1783dc282b15ae4caf2ccee3dbda9cf9362d37d9 Mon Sep 17 00:00:00 2001 From: Arokha Sieyes Date: Fri, 10 Mar 2017 18:45:06 -0500 Subject: [PATCH 04/19] Math is hard okay --- code/modules/food/recipe_dump.dm | 3 ++- code/modules/reagents/reagent_containers/food/snacks.dm | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/code/modules/food/recipe_dump.dm b/code/modules/food/recipe_dump.dm index f33be27258..15fe52121d 100644 --- a/code/modules/food/recipe_dump.dm +++ b/code/modules/food/recipe_dump.dm @@ -34,7 +34,8 @@ //So now we add something like "Bread" = 3 if(ing.name in working_ing_list) - working_ing_list[ing.name] = working_ing_list[ing.name]++ + var/sofar = working_ing_list[ing.name] + working_ing_list[ing.name] = sofar+1 else working_ing_list[ing.name] = 1 diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index 2e0dd06132..a712e3b375 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -723,7 +723,7 @@ src.bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/xenomeat - name = "meat" + name = "xenomeat" desc = "A slab of green meat. Smells like acid." icon_state = "xenomeat" filling_color = "#43DE18" From a2d89ae1b882832b7b58ce39f26001e3685b5f5f Mon Sep 17 00:00:00 2001 From: Arokha Sieyes Date: Fri, 10 Mar 2017 20:04:24 -0500 Subject: [PATCH 05/19] Now it does drinks and not-quite-foods too I had to subtype all the recipes though. This should probably have been done a while ago anyway, medicine and drinks should probably have some sort of path separation like this. --- code/modules/food/recipe_dump.dm | 165 +++++++++++---- code/modules/reagents/Chemistry-Recipes.dm | 221 ++++++++++----------- 2 files changed, 235 insertions(+), 151 deletions(-) diff --git a/code/modules/food/recipe_dump.dm b/code/modules/food/recipe_dump.dm index 15fe52121d..5138b7c0c0 100644 --- a/code/modules/food/recipe_dump.dm +++ b/code/modules/food/recipe_dump.dm @@ -1,14 +1,24 @@ /client/proc/recipe_dump() set name = "Generate Recipe Dump" set category = "Server" - set desc = "Dumps food recipe info and images for wiki or other use." + set desc = "Dumps food and drink recipe info and images for wiki or other use." if(!holder) return - var/list/recipe_paths = typesof(/datum/recipe) - /datum/recipe + //////////////////////// DRINK + var/list/drink_recipes = list() + for(var/path in typesof(/datum/chemical_reaction/drinks) - /datum/chemical_reaction/drinks) + var/datum/chemical_reaction/drinks/CR = new path() + drink_recipes[path] = list("Result" = CR.name, + "ResAmt" = CR.result_amount, + "Reagents" = CR.required_reagents) + qdel(CR) + + //////////////////////// FOOD + var/list/food_recipes = typesof(/datum/recipe) - /datum/recipe //Build a useful list - for(var/Rp in recipe_paths) + for(var/Rp in food_recipes) //Lists don't work with datum-stealing no-instance initial() so we have to. var/datum/recipe/R = new Rp() var/obj/res = new R.result() @@ -16,8 +26,9 @@ var/icon/result_icon = icon(res.icon,res.icon_state) result_icon.Scale(64,64) - recipe_paths[Rp] = list( + food_recipes[Rp] = list( "Result" = "[res.name]", + "ResAmt" = "1", "Reagents" = R.reagents, "Fruit" = R.fruit, "Ingredients" = R.items, @@ -27,9 +38,22 @@ qdel(res) qdel(R) - //Items needs further processing into human-readability. Another use of initial. + //////////////////////// FOOD+ (basically condiments, tofu, cheese, soysauce, etc) + for(var/path in typesof(/datum/chemical_reaction/food) - /datum/chemical_reaction/food) + var/datum/chemical_reaction/food/CR = new path() + food_recipes[path] = list("Result" = CR.name, + "ResAmt" = CR.result_amount, + "Reagents" = CR.required_reagents, + "Fruit" = list(), + "Ingredients" = list(), + "Image" = null) + qdel(CR) + + //////////////////////// PROCESSING + //Items needs further processing into human-readability. + for(var/Rp in food_recipes) var/working_ing_list = list() - for(var/I in recipe_paths[Rp]["Ingredients"]) + for(var/I in food_recipes[Rp]["Ingredients"]) var/atom/ing = new I() //So now we add something like "Bread" = 3 @@ -39,56 +63,76 @@ else working_ing_list[ing.name] = 1 - recipe_paths[Rp]["Ingredients"] = working_ing_list + food_recipes[Rp]["Ingredients"] = working_ing_list - //Reagents can be resolved to nicer names as well - for(var/rid in recipe_paths[Rp]["Reagents"]) + //Reagents can be resolved to nicer names as well + for(var/Rp in food_recipes) + for(var/rid in food_recipes[Rp]["Reagents"]) var/datum/reagent/Rd = chemical_reagents_list[rid] var/R_name = Rd.name - recipe_paths[Rp]["Reagents"][R_name] += recipe_paths[Rp]["Reagents"][rid] - recipe_paths[Rp]["Reagents"] -= rid + food_recipes[Rp]["Reagents"][R_name] += food_recipes[Rp]["Reagents"][rid] + food_recipes[Rp]["Reagents"] -= rid + for(var/Rp in drink_recipes) + for(var/rid in drink_recipes[Rp]["Reagents"]) + var/datum/reagent/Rd = chemical_reagents_list[rid] + var/R_name = Rd.name + drink_recipes[Rp]["Reagents"][R_name] += drink_recipes[Rp]["Reagents"][rid] + drink_recipes[Rp]["Reagents"] -= rid - //Sort list by transforming into resultname+unique = path, then back in the right order - //Can't just be sorted by resultname since they are not unique and lists indexed by that will - //end up overwriting the several ways to make something with a single one - var/list/names_to_paths = list() - for(var/Rp in recipe_paths) - names_to_paths["[recipe_paths[Rp]["Result"]] [Rp]"] = Rp //Append recipe datum path to keep uniqueness + //////////////////////// SORTING + var/list/foods_to_paths = list() + var/list/drinks_to_paths = list() - names_to_paths = sortAssoc(names_to_paths) + for(var/Rp in food_recipes) + foods_to_paths["[food_recipes[Rp]["Result"]] [Rp]"] = Rp //Append recipe datum path to keep uniqueness + for(var/Rp in drink_recipes) + drinks_to_paths["[drink_recipes[Rp]["Result"]] [Rp]"] = Rp - var/list/newly_sorted = list() - for(var/Rr in names_to_paths) - var/Rp = names_to_paths[Rr] - newly_sorted[Rp] = recipe_paths[Rp] + foods_to_paths = sortAssoc(foods_to_paths) + drinks_to_paths = sortAssoc(drinks_to_paths) - recipe_paths = newly_sorted + var/list/foods_newly_sorted = list() + var/list/drinks_newly_sorted = list() - //Produce Output + for(var/Rr in foods_to_paths) + var/Rp = foods_to_paths[Rr] + foods_newly_sorted[Rp] = food_recipes[Rp] + for(var/Rr in drinks_to_paths) + var/Rp = drinks_to_paths[Rr] + drinks_newly_sorted[Rp] = drink_recipes[Rp] + + food_recipes = foods_newly_sorted + drink_recipes = drinks_newly_sorted + + //////////////////////// OUTPUT + //Food Output var/html = "\ \ \ \ \ Food Recipes\ - \ + \ " - html += "

    Recipes (as of [time2text(world.realtime,"MMM DD, YYYY")])


    " + html += "

    Food Recipes (as of [time2text(world.realtime,"MMM DD, YYYY")])


    " html += "" html += "" - for(var/Rp in recipe_paths) + for(var/Rp in food_recipes) //Open this row html += "" //Image - var/image_path = "recipe-[ckey(recipe_paths[Rp]["Result"])].png" - var/icon/icon_to_give = recipe_paths[Rp]["Image"] - html += "" - src << browse(icon_to_give, "window=picture;file=[image_path];display=0") + var/icon/icon_to_give = food_recipes[Rp]["Image"] + if(icon_to_give) + var/image_path = "recipe-[ckey(food_recipes[Rp]["Result"])].png" + html += "" + src << browse(icon_to_give, "window=picture;file=[image_path];display=0") + else + html += "" //Name - html += "" + html += "" //Ingredients html += "" html += "
    IconNameIngredients
    No
    Image
    [recipe_paths[Rp]["Result"]][food_recipes[Rp]["Result"]]
      " @@ -96,8 +140,8 @@ //For each large ingredient var/pretty_ing = "" count = 0 - for(var/ing in recipe_paths[Rp]["Ingredients"]) - pretty_ing += "[count == 0 ? "" : ", "][recipe_paths[Rp]["Ingredients"][ing]]x [ing]" + for(var/ing in food_recipes[Rp]["Ingredients"]) + pretty_ing += "[count == 0 ? "" : ", "][food_recipes[Rp]["Ingredients"][ing]]x [ing]" count++ if(pretty_ing != "") html += "
    • Ingredients: [pretty_ing]
    • " @@ -105,8 +149,8 @@ //For each fruit var/pretty_fru = "" count = 0 - for(var/fru in recipe_paths[Rp]["Fruit"]) - pretty_fru += "[count == 0 ? "" : ", "][recipe_paths[Rp]["Fruit"][fru]]x [fru]" + for(var/fru in food_recipes[Rp]["Fruit"]) + pretty_fru += "[count == 0 ? "" : ", "][food_recipes[Rp]["Fruit"][fru]]x [fru]" count++ if(pretty_fru != "") html += "
    • Fruit: [pretty_fru]
    • " @@ -114,8 +158,8 @@ //For each reagent var/pretty_rea = "" count = 0 - for(var/rea in recipe_paths[Rp]["Reagents"]) - pretty_rea += "[count == 0 ? "" : ", "][recipe_paths[Rp]["Reagents"][rea]]u [rea]" + for(var/rea in food_recipes[Rp]["Reagents"]) + pretty_rea += "[count == 0 ? "" : ", "][food_recipes[Rp]["Reagents"][rea]]u [rea]" count++ if(pretty_rea != "") html += "
    • Mix in: [pretty_rea]
    • " @@ -126,5 +170,46 @@ html += "
    " - src << browse(html, "window=recipes;file=recipes.html;display=0") - src << "In your byond cache, recipe-xxx.png files and recipes.html now exist. Place recipe-xxx.png files in a subfolder named 'imgrecipes' wherever you put them. The file will take a recipes.css file if in the same path." + src << browse(html, "window=recipes;file=recipes_food.html;display=0") + + //Drink Output + html = "\ + \ + \ + \ + \ + Drink Recipes\ + \ + " + + html += "

    Drink Recipes (as of [time2text(world.realtime,"MMM DD, YYYY")])


    " + html += "" + html += "" + for(var/Rp in drink_recipes) + //Open this row + html += "" + + //Name + html += "" + + html += "" + //Close this row + html += "" + + html += "
    NameIngredients
    [drink_recipes[Rp]["Result"]]" + //For each reagent + var/pretty_rea = "" + var/count = 0 + for(var/rea in drink_recipes[Rp]["Reagents"]) + pretty_rea += "[count == 0 ? "" : ", "][drink_recipes[Rp]["Reagents"][rea]]u [rea]" + count++ + if(pretty_rea != "") + html += "
  • Mix together: [pretty_rea]
  • " + + html += "
  • Makes [drink_recipes[Rp]["ResAmt"]]u
  • " + + //Close reagents + html += "
    " + src << browse(html, "window=recipes;file=recipes_drinks.html;display=0") + + src << "In your byond cache, recipe-xxx.png files and recipes_drinks.html and recipes_food.html now exist. Place recipe-xxx.png files in a subfolder named 'imgrecipes' wherever you put them. The file will take a food.css or drinks.css file if in the same path." diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index 4d7d13e5b3..00b63622b8 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -557,7 +557,6 @@ required_reagents = list("mindbreaker" = 1, "carbon" = 1) result_amount = 3 - /datum/chemical_reaction/paroxetine name = "Paroxetine" id = "paroxetine" @@ -565,6 +564,20 @@ required_reagents = list("mindbreaker" = 1, "oxygen" = 1, "inaprovaline" = 1) result_amount = 3 +/datum/chemical_reaction/neurotoxin + name = "Neurotoxin" + id = "neurotoxin" + result = "neurotoxin" + required_reagents = list("gargleblaster" = 1, "stoxin" = 1) + result_amount = 2 + +/datum/chemical_reaction/luminol + name = "Luminol" + id = "luminol" + result = "luminol" + required_reagents = list("hydrogen" = 2, "carbon" = 2, "ammonia" = 2) + result_amount = 6 + /* Solidification */ /datum/chemical_reaction/phoronsolidification @@ -1027,7 +1040,7 @@ /* Food */ -/datum/chemical_reaction/tofu +/datum/chemical_reaction/food/tofu name = "Tofu" id = "tofu" result = null @@ -1041,7 +1054,7 @@ new /obj/item/weapon/reagent_containers/food/snacks/tofu(location) return -/datum/chemical_reaction/chocolate_bar +/datum/chemical_reaction/food/chocolate_bar name = "Chocolate Bar" id = "chocolate_bar" result = null @@ -1054,7 +1067,7 @@ new /obj/item/weapon/reagent_containers/food/snacks/chocolatebar(location) return -/datum/chemical_reaction/chocolate_bar2 +/datum/chemical_reaction/food/chocolate_bar2 name = "Chocolate Bar" id = "chocolate_bar" result = null @@ -1067,28 +1080,28 @@ new /obj/item/weapon/reagent_containers/food/snacks/chocolatebar(location) return -/datum/chemical_reaction/hot_coco +/datum/chemical_reaction/drinks/hot_coco name = "Hot Coco" id = "hot_coco" result = "hot_coco" required_reagents = list("water" = 5, "coco" = 1) result_amount = 5 -/datum/chemical_reaction/soysauce +/datum/chemical_reaction/food/soysauce name = "Soy Sauce" id = "soysauce" result = "soysauce" required_reagents = list("soymilk" = 4, "sacid" = 1) result_amount = 5 -/datum/chemical_reaction/ketchup +/datum/chemical_reaction/food/ketchup name = "Ketchup" id = "ketchup" result = "ketchup" required_reagents = list("tomatojuice" = 2, "water" = 1, "sugar" = 1) result_amount = 4 -/datum/chemical_reaction/cheesewheel +/datum/chemical_reaction/food/cheesewheel name = "Cheesewheel" id = "cheesewheel" result = null @@ -1102,7 +1115,7 @@ new /obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesewheel(location) return -/datum/chemical_reaction/meatball +/datum/chemical_reaction/food/meatball name = "Meatball" id = "meatball" result = null @@ -1115,7 +1128,7 @@ new /obj/item/weapon/reagent_containers/food/snacks/meatball(location) return -/datum/chemical_reaction/dough +/datum/chemical_reaction/food/dough name = "Dough" id = "dough" result = null @@ -1128,7 +1141,7 @@ new /obj/item/weapon/reagent_containers/food/snacks/dough(location) return -/datum/chemical_reaction/syntiflesh +/datum/chemical_reaction/food/syntiflesh name = "Syntiflesh" id = "syntiflesh" result = null @@ -1157,49 +1170,49 @@ /* Alcohol */ -/datum/chemical_reaction/goldschlager +/datum/chemical_reaction/drinks/goldschlager name = "Goldschlager" id = "goldschlager" result = "goldschlager" required_reagents = list("vodka" = 10, "gold" = 1) result_amount = 10 -/datum/chemical_reaction/patron +/datum/chemical_reaction/drinks/patron name = "Patron" id = "patron" result = "patron" required_reagents = list("tequilla" = 10, "silver" = 1) result_amount = 10 -/datum/chemical_reaction/bilk +/datum/chemical_reaction/drinks/bilk name = "Bilk" id = "bilk" result = "bilk" required_reagents = list("milk" = 1, "beer" = 1) result_amount = 2 -/datum/chemical_reaction/icetea +/datum/chemical_reaction/drinks/icetea name = "Iced Tea" id = "icetea" result = "icetea" required_reagents = list("ice" = 1, "tea" = 2) result_amount = 3 -/datum/chemical_reaction/icecoffee +/datum/chemical_reaction/drinks/icecoffee name = "Iced Coffee" id = "icecoffee" result = "icecoffee" required_reagents = list("ice" = 1, "coffee" = 2) result_amount = 3 -/datum/chemical_reaction/nuka_cola +/datum/chemical_reaction/drinks/nuka_cola name = "Nuka Cola" id = "nuka_cola" result = "nuka_cola" required_reagents = list("uranium" = 1, "cola" = 5) result_amount = 5 -/datum/chemical_reaction/moonshine +/datum/chemical_reaction/drinks/moonshine name = "Moonshine" id = "moonshine" result = "moonshine" @@ -1207,7 +1220,7 @@ catalysts = list("enzyme" = 5) result_amount = 10 -/datum/chemical_reaction/grenadine +/datum/chemical_reaction/drinks/grenadine name = "Grenadine Syrup" id = "grenadine" result = "grenadine" @@ -1215,7 +1228,7 @@ catalysts = list("enzyme" = 5) result_amount = 10 -/datum/chemical_reaction/wine +/datum/chemical_reaction/drinks/wine name = "Wine" id = "wine" result = "wine" @@ -1223,7 +1236,7 @@ catalysts = list("enzyme" = 5) result_amount = 10 -/datum/chemical_reaction/pwine +/datum/chemical_reaction/drinks/pwine name = "Poison Wine" id = "pwine" result = "pwine" @@ -1231,7 +1244,7 @@ catalysts = list("enzyme" = 5) result_amount = 10 -/datum/chemical_reaction/melonliquor +/datum/chemical_reaction/drinks/melonliquor name = "Melon Liquor" id = "melonliquor" result = "melonliquor" @@ -1239,7 +1252,7 @@ catalysts = list("enzyme" = 5) result_amount = 10 -/datum/chemical_reaction/bluecuracao +/datum/chemical_reaction/drinks/bluecuracao name = "Blue Curacao" id = "bluecuracao" result = "bluecuracao" @@ -1247,7 +1260,7 @@ catalysts = list("enzyme" = 5) result_amount = 10 -/datum/chemical_reaction/spacebeer +/datum/chemical_reaction/drinks/spacebeer name = "Space Beer" id = "spacebeer" result = "beer" @@ -1255,7 +1268,7 @@ catalysts = list("enzyme" = 5) result_amount = 10 -/datum/chemical_reaction/vodka +/datum/chemical_reaction/drinks/vodka name = "Vodka" id = "vodka" result = "vodka" @@ -1263,7 +1276,7 @@ catalysts = list("enzyme" = 5) result_amount = 10 -/datum/chemical_reaction/sake +/datum/chemical_reaction/drinks/sake name = "Sake" id = "sake" result = "sake" @@ -1271,7 +1284,7 @@ catalysts = list("enzyme" = 5) result_amount = 10 -/datum/chemical_reaction/kahlua +/datum/chemical_reaction/drinks/kahlua name = "Kahlua" id = "kahlua" result = "kahlua" @@ -1279,287 +1292,287 @@ catalysts = list("enzyme" = 5) result_amount = 5 -/datum/chemical_reaction/gin_tonic +/datum/chemical_reaction/drinks/gin_tonic name = "Gin and Tonic" id = "gintonic" result = "gintonic" required_reagents = list("gin" = 2, "tonic" = 1) result_amount = 3 -/datum/chemical_reaction/cuba_libre +/datum/chemical_reaction/drinks/cuba_libre name = "Cuba Libre" id = "cubalibre" result = "cubalibre" required_reagents = list("rum" = 2, "cola" = 1) result_amount = 3 -/datum/chemical_reaction/martini +/datum/chemical_reaction/drinks/martini name = "Classic Martini" id = "martini" result = "martini" required_reagents = list("gin" = 2, "vermouth" = 1) result_amount = 3 -/datum/chemical_reaction/vodkamartini +/datum/chemical_reaction/drinks/vodkamartini name = "Vodka Martini" id = "vodkamartini" result = "vodkamartini" required_reagents = list("vodka" = 2, "vermouth" = 1) result_amount = 3 -/datum/chemical_reaction/white_russian +/datum/chemical_reaction/drinks/white_russian name = "White Russian" id = "whiterussian" result = "whiterussian" required_reagents = list("blackrussian" = 2, "cream" = 1) result_amount = 3 -/datum/chemical_reaction/whiskey_cola +/datum/chemical_reaction/drinks/whiskey_cola name = "Whiskey Cola" id = "whiskeycola" result = "whiskeycola" required_reagents = list("whiskey" = 2, "cola" = 1) result_amount = 3 -/datum/chemical_reaction/screwdriver +/datum/chemical_reaction/drinks/screwdriver name = "Screwdriver" id = "screwdrivercocktail" result = "screwdrivercocktail" required_reagents = list("vodka" = 2, "orangejuice" = 1) result_amount = 3 -/datum/chemical_reaction/bloody_mary +/datum/chemical_reaction/drinks/bloody_mary name = "Bloody Mary" id = "bloodymary" result = "bloodymary" required_reagents = list("vodka" = 2, "tomatojuice" = 3, "limejuice" = 1) result_amount = 6 -/datum/chemical_reaction/gargle_blaster +/datum/chemical_reaction/drinks/gargle_blaster name = "Pan-Galactic Gargle Blaster" id = "gargleblaster" result = "gargleblaster" required_reagents = list("vodka" = 2, "gin" = 1, "whiskey" = 1, "cognac" = 1, "limejuice" = 1) result_amount = 6 -/datum/chemical_reaction/brave_bull +/datum/chemical_reaction/drinks/brave_bull name = "Brave Bull" id = "bravebull" result = "bravebull" required_reagents = list("tequilla" = 2, "kahlua" = 1) result_amount = 3 -/datum/chemical_reaction/tequilla_sunrise +/datum/chemical_reaction/drinks/tequilla_sunrise name = "Tequilla Sunrise" id = "tequillasunrise" result = "tequillasunrise" required_reagents = list("tequilla" = 2, "orangejuice" = 1) result_amount = 3 -/datum/chemical_reaction/phoron_special +/datum/chemical_reaction/drinks/phoron_special name = "Toxins Special" id = "phoronspecial" result = "phoronspecial" required_reagents = list("rum" = 2, "vermouth" = 2, "phoron" = 2) result_amount = 6 -/datum/chemical_reaction/beepsky_smash +/datum/chemical_reaction/drinks/beepsky_smash name = "Beepksy Smash" id = "beepksysmash" result = "beepskysmash" required_reagents = list("limejuice" = 1, "whiskey" = 1, "iron" = 1) result_amount = 2 -/datum/chemical_reaction/doctor_delight +/datum/chemical_reaction/drinks/doctor_delight name = "The Doctor's Delight" id = "doctordelight" result = "doctorsdelight" required_reagents = list("limejuice" = 1, "tomatojuice" = 1, "orangejuice" = 1, "cream" = 2, "tricordrazine" = 1) result_amount = 6 -/datum/chemical_reaction/irish_cream +/datum/chemical_reaction/drinks/irish_cream name = "Irish Cream" id = "irishcream" result = "irishcream" required_reagents = list("whiskey" = 2, "cream" = 1) result_amount = 3 -/datum/chemical_reaction/manly_dorf +/datum/chemical_reaction/drinks/manly_dorf name = "The Manly Dorf" id = "manlydorf" result = "manlydorf" required_reagents = list ("beer" = 1, "ale" = 2) result_amount = 3 -/datum/chemical_reaction/hooch +/datum/chemical_reaction/drinks/hooch name = "Hooch" id = "hooch" result = "hooch" required_reagents = list ("sugar" = 1, "ethanol" = 2, "fuel" = 1) result_amount = 3 -/datum/chemical_reaction/irish_coffee +/datum/chemical_reaction/drinks/irish_coffee name = "Irish Coffee" id = "irishcoffee" result = "irishcoffee" required_reagents = list("irishcream" = 1, "coffee" = 1) result_amount = 2 -/datum/chemical_reaction/b52 +/datum/chemical_reaction/drinks/b52 name = "B-52" id = "b52" result = "b52" required_reagents = list("irishcream" = 1, "kahlua" = 1, "cognac" = 1) result_amount = 3 -/datum/chemical_reaction/atomicbomb +/datum/chemical_reaction/drinks/atomicbomb name = "Atomic Bomb" id = "atomicbomb" result = "atomicbomb" required_reagents = list("b52" = 10, "uranium" = 1) result_amount = 10 -/datum/chemical_reaction/margarita +/datum/chemical_reaction/drinks/margarita name = "Margarita" id = "margarita" result = "margarita" required_reagents = list("tequilla" = 2, "limejuice" = 1) result_amount = 3 -/datum/chemical_reaction/longislandicedtea +/datum/chemical_reaction/drinks/longislandicedtea name = "Long Island Iced Tea" id = "longislandicedtea" result = "longislandicedtea" required_reagents = list("vodka" = 1, "gin" = 1, "tequilla" = 1, "cubalibre" = 3) result_amount = 6 -/datum/chemical_reaction/icedtea +/datum/chemical_reaction/drinks/icedtea name = "Long Island Iced Tea" id = "longislandicedtea" result = "longislandicedtea" required_reagents = list("vodka" = 1, "gin" = 1, "tequilla" = 1, "cubalibre" = 3) result_amount = 6 -/datum/chemical_reaction/threemileisland +/datum/chemical_reaction/drinks/threemileisland name = "Three Mile Island Iced Tea" id = "threemileisland" result = "threemileisland" required_reagents = list("longislandicedtea" = 10, "uranium" = 1) result_amount = 10 -/datum/chemical_reaction/whiskeysoda +/datum/chemical_reaction/drinks/whiskeysoda name = "Whiskey Soda" id = "whiskeysoda" result = "whiskeysoda" required_reagents = list("whiskey" = 2, "sodawater" = 1) result_amount = 3 -/datum/chemical_reaction/black_russian +/datum/chemical_reaction/drinks/black_russian name = "Black Russian" id = "blackrussian" result = "blackrussian" required_reagents = list("vodka" = 2, "kahlua" = 1) result_amount = 3 -/datum/chemical_reaction/manhattan +/datum/chemical_reaction/drinks/manhattan name = "Manhattan" id = "manhattan" result = "manhattan" required_reagents = list("whiskey" = 2, "vermouth" = 1) result_amount = 3 -/datum/chemical_reaction/manhattan_proj +/datum/chemical_reaction/drinks/manhattan_proj name = "Manhattan Project" id = "manhattan_proj" result = "manhattan_proj" required_reagents = list("manhattan" = 10, "uranium" = 1) result_amount = 10 -/datum/chemical_reaction/vodka_tonic +/datum/chemical_reaction/drinks/vodka_tonic name = "Vodka and Tonic" id = "vodkatonic" result = "vodkatonic" required_reagents = list("vodka" = 2, "tonic" = 1) result_amount = 3 -/datum/chemical_reaction/gin_fizz +/datum/chemical_reaction/drinks/gin_fizz name = "Gin Fizz" id = "ginfizz" result = "ginfizz" required_reagents = list("gin" = 1, "sodawater" = 1, "limejuice" = 1) result_amount = 3 -/datum/chemical_reaction/bahama_mama +/datum/chemical_reaction/drinks/bahama_mama name = "Bahama mama" id = "bahama_mama" result = "bahama_mama" required_reagents = list("rum" = 2, "orangejuice" = 2, "limejuice" = 1, "ice" = 1) result_amount = 6 -/datum/chemical_reaction/singulo +/datum/chemical_reaction/drinks/singulo name = "Singulo" id = "singulo" result = "singulo" required_reagents = list("vodka" = 5, "radium" = 1, "wine" = 5) result_amount = 10 -/datum/chemical_reaction/alliescocktail +/datum/chemical_reaction/drinks/alliescocktail name = "Allies Cocktail" id = "alliescocktail" result = "alliescocktail" required_reagents = list("martini" = 1, "vodka" = 1) result_amount = 2 -/datum/chemical_reaction/demonsblood +/datum/chemical_reaction/drinks/demonsblood name = "Demons Blood" id = "demonsblood" result = "demonsblood" required_reagents = list("rum" = 3, "spacemountainwind" = 1, "blood" = 1, "dr_gibb" = 1) result_amount = 6 -/datum/chemical_reaction/booger +/datum/chemical_reaction/drinks/booger name = "Booger" id = "booger" result = "booger" required_reagents = list("cream" = 2, "banana" = 1, "rum" = 1, "watermelonjuice" = 1) result_amount = 5 -/datum/chemical_reaction/antifreeze +/datum/chemical_reaction/drinks/antifreeze name = "Anti-freeze" id = "antifreeze" result = "antifreeze" required_reagents = list("vodka" = 1, "cream" = 1, "ice" = 1) result_amount = 3 -/datum/chemical_reaction/barefoot +/datum/chemical_reaction/drinks/barefoot name = "Barefoot" id = "barefoot" result = "barefoot" required_reagents = list("berryjuice" = 1, "cream" = 1, "vermouth" = 1) result_amount = 3 -/datum/chemical_reaction/grapesoda +/datum/chemical_reaction/drinks/grapesoda name = "Grape Soda" id = "grapesoda" result = "grapesoda" required_reagents = list("grapejuice" = 2, "cola" = 1) result_amount = 3 -/datum/chemical_reaction/sbiten +/datum/chemical_reaction/drinks/sbiten name = "Sbiten" id = "sbiten" result = "sbiten" required_reagents = list("vodka" = 10, "capsaicin" = 1) result_amount = 10 -/datum/chemical_reaction/red_mead +/datum/chemical_reaction/drinks/red_mead name = "Red Mead" id = "red_mead" result = "red_mead" required_reagents = list("blood" = 1, "mead" = 1) result_amount = 2 -/datum/chemical_reaction/mead +/datum/chemical_reaction/drinks/mead name = "Mead" id = "mead" result = "mead" @@ -1567,217 +1580,203 @@ catalysts = list("enzyme" = 5) result_amount = 2 -/datum/chemical_reaction/iced_beer +/datum/chemical_reaction/drinks/iced_beer name = "Iced Beer" id = "iced_beer" result = "iced_beer" required_reagents = list("beer" = 10, "frostoil" = 1) result_amount = 10 -/datum/chemical_reaction/iced_beer2 +/datum/chemical_reaction/drinks/iced_beer2 name = "Iced Beer" id = "iced_beer" result = "iced_beer" required_reagents = list("beer" = 5, "ice" = 1) result_amount = 6 -/datum/chemical_reaction/grog +/datum/chemical_reaction/drinks/grog name = "Grog" id = "grog" result = "grog" required_reagents = list("rum" = 1, "water" = 1) result_amount = 2 -/datum/chemical_reaction/soy_latte +/datum/chemical_reaction/drinks/soy_latte name = "Soy Latte" id = "soy_latte" result = "soy_latte" required_reagents = list("coffee" = 1, "soymilk" = 1) result_amount = 2 -/datum/chemical_reaction/cafe_latte +/datum/chemical_reaction/drinks/cafe_latte name = "Cafe Latte" id = "cafe_latte" result = "cafe_latte" required_reagents = list("coffee" = 1, "milk" = 1) result_amount = 2 -/datum/chemical_reaction/acidspit +/datum/chemical_reaction/drinks/acidspit name = "Acid Spit" id = "acidspit" result = "acidspit" required_reagents = list("sacid" = 1, "wine" = 5) result_amount = 6 -/datum/chemical_reaction/amasec +/datum/chemical_reaction/drinks/amasec name = "Amasec" id = "amasec" result = "amasec" required_reagents = list("iron" = 1, "wine" = 5, "vodka" = 5) result_amount = 10 -/datum/chemical_reaction/changelingsting +/datum/chemical_reaction/drinks/changelingsting name = "Changeling Sting" id = "changelingsting" result = "changelingsting" required_reagents = list("screwdrivercocktail" = 1, "limejuice" = 1, "lemonjuice" = 1) result_amount = 3 -/datum/chemical_reaction/aloe +/datum/chemical_reaction/drinks/aloe name = "Aloe" id = "aloe" result = "aloe" required_reagents = list("cream" = 1, "whiskey" = 1, "watermelonjuice" = 1) result_amount = 3 -/datum/chemical_reaction/andalusia +/datum/chemical_reaction/drinks/andalusia name = "Andalusia" id = "andalusia" result = "andalusia" required_reagents = list("rum" = 1, "whiskey" = 1, "lemonjuice" = 1) result_amount = 3 -/datum/chemical_reaction/neurotoxin - name = "Neurotoxin" - id = "neurotoxin" - result = "neurotoxin" - required_reagents = list("gargleblaster" = 1, "stoxin" = 1) - result_amount = 2 - -/datum/chemical_reaction/snowwhite +/datum/chemical_reaction/drinks/snowwhite name = "Snow White" id = "snowwhite" result = "snowwhite" required_reagents = list("beer" = 1, "lemon_lime" = 1) result_amount = 2 -/datum/chemical_reaction/irishcarbomb +/datum/chemical_reaction/drinks/irishcarbomb name = "Irish Car Bomb" id = "irishcarbomb" result = "irishcarbomb" required_reagents = list("ale" = 1, "irishcream" = 1) result_amount = 2 -/datum/chemical_reaction/syndicatebomb +/datum/chemical_reaction/drinks/syndicatebomb name = "Syndicate Bomb" id = "syndicatebomb" result = "syndicatebomb" required_reagents = list("beer" = 1, "whiskeycola" = 1) result_amount = 2 -/datum/chemical_reaction/erikasurprise +/datum/chemical_reaction/drinks/erikasurprise name = "Erika Surprise" id = "erikasurprise" result = "erikasurprise" required_reagents = list("ale" = 2, "limejuice" = 1, "whiskey" = 1, "banana" = 1, "ice" = 1) result_amount = 6 -/datum/chemical_reaction/devilskiss +/datum/chemical_reaction/drinks/devilskiss name = "Devils Kiss" id = "devilskiss" result = "devilskiss" required_reagents = list("blood" = 1, "kahlua" = 1, "rum" = 1) result_amount = 3 -/datum/chemical_reaction/hippiesdelight +/datum/chemical_reaction/drinks/hippiesdelight name = "Hippies Delight" id = "hippiesdelight" result = "hippiesdelight" required_reagents = list("psilocybin" = 1, "gargleblaster" = 1) result_amount = 2 -/datum/chemical_reaction/bananahonk +/datum/chemical_reaction/drinks/bananahonk name = "Banana Honk" id = "bananahonk" result = "bananahonk" required_reagents = list("banana" = 1, "cream" = 1, "sugar" = 1) result_amount = 3 -/datum/chemical_reaction/silencer +/datum/chemical_reaction/drinks/silencer name = "Silencer" id = "silencer" result = "silencer" required_reagents = list("nothing" = 1, "cream" = 1, "sugar" = 1) result_amount = 3 -/datum/chemical_reaction/driestmartini +/datum/chemical_reaction/drinks/driestmartini name = "Driest Martini" id = "driestmartini" result = "driestmartini" required_reagents = list("nothing" = 1, "gin" = 1) result_amount = 2 -/datum/chemical_reaction/lemonade +/datum/chemical_reaction/drinks/lemonade name = "Lemonade" id = "lemonade" result = "lemonade" required_reagents = list("lemonjuice" = 1, "sugar" = 1, "water" = 1) result_amount = 3 -/datum/chemical_reaction/kiraspecial +/datum/chemical_reaction/drinks/kiraspecial name = "Kira Special" id = "kiraspecial" result = "kiraspecial" required_reagents = list("orangejuice" = 1, "limejuice" = 1, "sodawater" = 1) result_amount = 3 -/datum/chemical_reaction/brownstar +/datum/chemical_reaction/drinks/brownstar name = "Brown Star" id = "brownstar" result = "brownstar" required_reagents = list("orangejuice" = 2, "cola" = 1) result_amount = 3 -/datum/chemical_reaction/milkshake +/datum/chemical_reaction/drinks/milkshake name = "Milkshake" id = "milkshake" result = "milkshake" required_reagents = list("cream" = 1, "ice" = 2, "milk" = 2) result_amount = 5 -/datum/chemical_reaction/rewriter +/datum/chemical_reaction/drinks/rewriter name = "Rewriter" id = "rewriter" result = "rewriter" required_reagents = list("spacemountainwind" = 1, "coffee" = 1) result_amount = 2 -/datum/chemical_reaction/suidream +/datum/chemical_reaction/drinks/suidream name = "Sui Dream" id = "suidream" result = "suidream" required_reagents = list("space_up" = 1, "bluecuracao" = 1, "melonliquor" = 1) result_amount = 3 -/datum/chemical_reaction/luminol - name = "Luminol" - id = "luminol" - result = "luminol" - required_reagents = list("hydrogen" = 2, "carbon" = 2, "ammonia" = 2) - result_amount = 6 - -/datum/chemical_reaction/shirleytemple +/datum/chemical_reaction/drinks/shirleytemple name = "Shirley Temple" id = "shirley_temple" result = "shirley_temple" required_reagents = list("lemon_lime" = 4, "grenadine" = 1) result_amount = 5 -/datum/chemical_reaction/royrogers +/datum/chemical_reaction/drinks/royrogers name = "Roy Rogers" id = "roy_rogers" result = "roy_rogers" required_reagents = list("cola" = 4, "grenadine" = 1) result_amount = 5 -/datum/chemical_reaction/collinsmix +/datum/chemical_reaction/drinks/collinsmix name = "Collins Mix" id = "collins_mix" result = "collins_mix" required_reagents = list("lemon_lime" = 3, "sodawater" = 1) result_amount = 4 -/datum/chemical_reaction/arnoldpalmer +/datum/chemical_reaction/drinks/arnoldpalmer name = "Arnold Palmer" id = "arnold_palmer" result = "arnold_palmer" From f4dd443b01485d10f8d316448c4087ad334da2e7 Mon Sep 17 00:00:00 2001 From: Anewbe Date: Fri, 10 Mar 2017 21:46:57 -0600 Subject: [PATCH 06/19] Ports the translator --- code/game/objects/items/devices/translator.dm | 54 ++++++++++++++++++ .../loadout/loadout_utility.dm | 5 ++ code/modules/research/designs.dm | 8 +++ html/changelogs/Anewbe - Translator.yml | 36 ++++++++++++ icons/obj/device.dmi | Bin 48606 -> 50209 bytes polaris.dme | 1 + 6 files changed, 104 insertions(+) create mode 100644 code/game/objects/items/devices/translator.dm create mode 100644 html/changelogs/Anewbe - Translator.yml diff --git a/code/game/objects/items/devices/translator.dm b/code/game/objects/items/devices/translator.dm new file mode 100644 index 0000000000..a66d9710c2 --- /dev/null +++ b/code/game/objects/items/devices/translator.dm @@ -0,0 +1,54 @@ +//Universal translator +/obj/item/device/universal_translator + name = "handheld translator" + desc = "This handy device appears to translate the languages it hears into onscreen text for a user." + icon = 'icons/obj/device.dmi' + icon_state = "translator" + w_class = ITEMSIZE_SMALL + origin_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3) + var/listening = 0 + var/datum/language/langset + +/obj/item/device/universal_translator/attack_self(mob/user) + if(!listening) //Turning ON + langset = input(user,"Translate to which of your languages?","Language Selection") as null|anything in user.languages + if(langset) + listening = 1 + listening_objects |= src + icon_state = "[initial(icon_state)]1" + to_chat(user, "You enable \the [src], translating into [langset.name].") + else //Turning OFF + listening = 0 + listening_objects -= src + langset = null + icon_state = "[initial(icon_state)]" + to_chat(user, "You disable \the [src].") + +/obj/item/device/universal_translator/hear_talk(var/mob/speaker, var/message, var/vrb, var/datum/language/language) + if(!listening || !istype(speaker)) + return + + //Show the "I heard something" animation. + flick("[initial(icon_state)]2",src) + + //Handheld or pocket only. + if(!isliving(loc)) + return + + var/mob/living/L = loc + + if (language && (language.flags & NONVERBAL)) + return //Not gonna translate sign language + + //Only translate if they can't understand, otherwise pointlessly spammy + //I'll just assume they don't look at the screen in that case + + //They don't understand the spoken language we're translating FROM + if(!L.say_understands(speaker,language)) + //They understand the PRINTED language + if(L.say_understands(null,langset)) + to_chat(L, "[src] displays, \"[message]\"") + + //They don't understand the PRINTED language + else + to_chat(L, "[src] displays, \"[langset.scramble(message)]\"") diff --git a/code/modules/client/preference_setup/loadout/loadout_utility.dm b/code/modules/client/preference_setup/loadout/loadout_utility.dm index 4c2a378e7d..f9ffc0eb0b 100644 --- a/code/modules/client/preference_setup/loadout/loadout_utility.dm +++ b/code/modules/client/preference_setup/loadout/loadout_utility.dm @@ -61,3 +61,8 @@ cost = 2 slot = "implant" var/implant_type = "EAL" + +/datum/gear/utility/translator + display_name = "universal translator" + path = /obj/item/device/universal_translator + cost = 5 diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index ee1bbcaf2f..49678c966c 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -1586,6 +1586,14 @@ CIRCUITS BELOW build_path = /obj/item/weapon/implant/integrated_circuit sort_string = "VCAAE" +/datum/design/item/translator + name = "handheld translator" + id = "translator" + req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3) + materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 2000) + build_path = /obj/item/device/universal_translator + sort_string = "HABBA" + /* Uncomment if someone makes these buildable /datum/design/circuit/general_alert name = "general alert console" diff --git a/html/changelogs/Anewbe - Translator.yml b/html/changelogs/Anewbe - Translator.yml new file mode 100644 index 0000000000..2219cc592d --- /dev/null +++ b/html/changelogs/Anewbe - Translator.yml @@ -0,0 +1,36 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: Anewbe + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "Adds a universal translator device, courtesy of a downstream." diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index 3c5b0ce667153b6d499cd0a8a72c905c674a701c..4e366be140bdce3557a204febb1e0e65d93c71fa 100644 GIT binary patch delta 8178 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 diff --git a/polaris.dme b/polaris.dme index f7bfd240ce..53da36a18f 100644 --- a/polaris.dme +++ b/polaris.dme @@ -779,6 +779,7 @@ #include "code\game\objects\items\devices\taperecorder.dm" #include "code\game\objects\items\devices\traitordevices.dm" #include "code\game\objects\items\devices\transfer_valve.dm" +#include "code\game\objects\items\devices\translator.dm" #include "code\game\objects\items\devices\tvcamera.dm" #include "code\game\objects\items\devices\uplink.dm" #include "code\game\objects\items\devices\uplink_random_lists.dm" From 279232997d0310f2059caff5c672a21d899dca7c Mon Sep 17 00:00:00 2001 From: Arokha Sieyes Date: Sat, 11 Mar 2017 01:13:51 -0500 Subject: [PATCH 07/19] Fix flour!!! --- code/modules/food/recipe_dump.dm | 6 ++++-- .../Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/code/modules/food/recipe_dump.dm b/code/modules/food/recipe_dump.dm index 5138b7c0c0..19f7988826 100644 --- a/code/modules/food/recipe_dump.dm +++ b/code/modules/food/recipe_dump.dm @@ -70,14 +70,16 @@ for(var/rid in food_recipes[Rp]["Reagents"]) var/datum/reagent/Rd = chemical_reagents_list[rid] var/R_name = Rd.name - food_recipes[Rp]["Reagents"][R_name] += food_recipes[Rp]["Reagents"][rid] + var/amt = food_recipes[Rp]["Reagents"][rid] food_recipes[Rp]["Reagents"] -= rid + food_recipes[Rp]["Reagents"][R_name] = amt for(var/Rp in drink_recipes) for(var/rid in drink_recipes[Rp]["Reagents"]) var/datum/reagent/Rd = chemical_reagents_list[rid] var/R_name = Rd.name - drink_recipes[Rp]["Reagents"][R_name] += drink_recipes[Rp]["Reagents"][rid] + var/amt = drink_recipes[Rp]["Reagents"][rid] drink_recipes[Rp]["Reagents"] -= rid + drink_recipes[Rp]["Reagents"][R_name] = amt //////////////////////// SORTING var/list/foods_to_paths = list() diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm index 5cff9231a1..5c579c8953 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm @@ -114,7 +114,7 @@ M.drowsyness = max(M.drowsyness, 60) /datum/reagent/nutriment/flour - name = "flour" + name = "Flour" id = "flour" description = "This is what you rub all over yourself to pretend to be a ghost." taste_description = "chalky wheat" From c7c9b5e7e4306132eff0de3c5624ade0b4c2900b Mon Sep 17 00:00:00 2001 From: Arokha Sieyes Date: Mon, 13 Mar 2017 01:43:38 -0400 Subject: [PATCH 08/19] Fix internal bleeding on adv med scanners The nanoui template expects "internalBleeding" to be in the organStatus list, not in the organData list. I agree with this expectation, as this is also where normal "bleeding" is stored, so I updated the adv_med.dm file rather than changing the template. --- code/game/machinery/adv_med.dm | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm index 301cbe9e37..bba12887a9 100644 --- a/code/game/machinery/adv_med.dm +++ b/code/game/machinery/adv_med.dm @@ -335,17 +335,16 @@ organStatus["bleeding"] = 1 if(E.status & ORGAN_DEAD) organStatus["dead"] = 1 + for(var/datum/wound/W in E.wounds) + if(W.internal) + organStatus["internalBleeding"] = 1 + break organData["status"] = organStatus if(istype(E, /obj/item/organ/external/chest) && H.is_lung_ruptured()) organData["lungRuptured"] = 1 - for(var/datum/wound/W in E.wounds) - if(W.internal) - organData["internalBleeding"] = 1 - break - extOrganData.Add(list(organData)) occupantData["extOrgan"] = extOrganData From 0248ba0861a7efb67fdbf6e69ee0aa27cd1f5bb4 Mon Sep 17 00:00:00 2001 From: Arokha Sieyes Date: Mon, 13 Mar 2017 02:00:40 -0400 Subject: [PATCH 09/19] Don't allow ventcrawling if vents are welded What's the point of welding vents, again? --- code/modules/ventcrawl/ventcrawl_atmospherics.dm | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/code/modules/ventcrawl/ventcrawl_atmospherics.dm b/code/modules/ventcrawl/ventcrawl_atmospherics.dm index bb2d121125..f2cbb8018d 100644 --- a/code/modules/ventcrawl/ventcrawl_atmospherics.dm +++ b/code/modules/ventcrawl/ventcrawl_atmospherics.dm @@ -55,6 +55,12 @@ /obj/machinery/atmospherics/proc/can_crawl_through() return 1 +/obj/machinery/atmospherics/unary/can_crawl_through() + if(welded) + return 0 + + ..() + /obj/machinery/atmospherics/proc/findConnecting(var/direction) for(var/obj/machinery/atmospherics/target in get_step(src,direction)) if(target.initialize_directions & get_dir(target,src)) From b706595d579d85e3ed471af86144d5d75698b6a0 Mon Sep 17 00:00:00 2001 From: Neerti Date: Mon, 13 Mar 2017 07:41:10 -0400 Subject: [PATCH 10/19] Makes red alert and evacs silence the atc Comments out military ships because lore for them is not finalized. --- code/controllers/emergency_shuttle_controller.dm | 2 ++ code/modules/busy_space/air_traffic.dm | 6 ++++-- code/modules/busy_space/organizations.dm | 4 ++++ code/modules/security levels/security levels.dm | 5 +++++ 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/code/controllers/emergency_shuttle_controller.dm b/code/controllers/emergency_shuttle_controller.dm index 6de0c6ca3e..5b1b6a60d1 100644 --- a/code/controllers/emergency_shuttle_controller.dm +++ b/code/controllers/emergency_shuttle_controller.dm @@ -84,6 +84,8 @@ var/global/datum/emergency_shuttle_controller/emergency_shuttle if(istype(A, /area/hallway)) A.readyalert() + atc.reroute_traffic(yes = 1) + //calls the shuttle for a routine crew transfer /datum/emergency_shuttle_controller/proc/call_transfer() if(!can_call()) return diff --git a/code/modules/busy_space/air_traffic.dm b/code/modules/busy_space/air_traffic.dm index c88a6bcd9c..7da2c6f73b 100644 --- a/code/modules/busy_space/air_traffic.dm +++ b/code/modules/busy_space/air_traffic.dm @@ -34,10 +34,12 @@ var/datum/lore/atc_controller/atc = new/datum/lore/atc_controller /datum/lore/atc_controller/proc/reroute_traffic(var/yes = 1) if(yes) - msg("Rerouting traffic away from [using_map.station_name].") + if(!squelched) + msg("Rerouting traffic away from [using_map.station_name].") squelched = 1 else - msg("Resuming normal traffic routing around [using_map.station_name].") + if(squelched) + msg("Resuming normal traffic routing around [using_map.station_name].") squelched = 0 /datum/lore/atc_controller/proc/shift_ending(var/evac = 0) diff --git a/code/modules/busy_space/organizations.dm b/code/modules/busy_space/organizations.dm index 38bd2f1418..86f88e7ec0 100644 --- a/code/modules/busy_space/organizations.dm +++ b/code/modules/busy_space/organizations.dm @@ -296,6 +296,9 @@ "Titan" )// autogen will add a lot of other places as well. +/* +// To be expanded upon later, once the military lore gets sorted out. + // Military /datum/lore/organization/sif_guard @@ -320,3 +323,4 @@ "a wreck in SifGov territory", "a military outpost", ) +*/ diff --git a/code/modules/security levels/security levels.dm b/code/modules/security levels/security levels.dm index 23c0585340..32d752c773 100644 --- a/code/modules/security levels/security levels.dm +++ b/code/modules/security levels/security levels.dm @@ -50,6 +50,11 @@ if(FA.z in using_map.contact_levels) FA.set_security_level(newlevel) + if(level >= SEC_LEVEL_RED) + atc.reroute_traffic(yes = 1) // Tell them fuck off we're busy. + else + atc.reroute_traffic(yes = 0) + /proc/get_security_level() switch(security_level) From 166e88839736b235a550b2fa928fe2a3b6078e3e Mon Sep 17 00:00:00 2001 From: Arokha Sieyes Date: Mon, 13 Mar 2017 14:14:49 -0400 Subject: [PATCH 11/19] Find/replace job for bread slices `/obj/item/weapon/reagent_containers/food/snacks/breadslice` is not a real thing. The only reason the code compiled with references to it is because there was a line at the top of sandwich.dm that defined the attackby proc for it, which willed it into existence with all the default 'snack' values so it was just called 'snack', had no icon, etc. `/obj/item/weapon/reagent_containers/food/snacks/slice/bread` is the real path for bread slices, and this replaces all mentions of one with the other. --- code/modules/food/recipes_microwave.dm | 24 +++++++++---------- .../reagent_containers/food/sandwich.dm | 4 ++-- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/code/modules/food/recipes_microwave.dm b/code/modules/food/recipes_microwave.dm index 611a611296..3d63261a95 100644 --- a/code/modules/food/recipes_microwave.dm +++ b/code/modules/food/recipes_microwave.dm @@ -621,8 +621,8 @@ I said no! /datum/recipe/sandwich items = list( /obj/item/weapon/reagent_containers/food/snacks/meatsteak, - /obj/item/weapon/reagent_containers/food/snacks/breadslice, - /obj/item/weapon/reagent_containers/food/snacks/breadslice, + /obj/item/weapon/reagent_containers/food/snacks/slice/bread, + /obj/item/weapon/reagent_containers/food/snacks/slice/bread, /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, ) result = /obj/item/weapon/reagent_containers/food/snacks/sandwich @@ -635,8 +635,8 @@ I said no! /datum/recipe/grilledcheese items = list( - /obj/item/weapon/reagent_containers/food/snacks/breadslice, - /obj/item/weapon/reagent_containers/food/snacks/breadslice, + /obj/item/weapon/reagent_containers/food/snacks/slice/bread, + /obj/item/weapon/reagent_containers/food/snacks/slice/bread, /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, ) result = /obj/item/weapon/reagent_containers/food/snacks/grilledcheese @@ -663,14 +663,14 @@ I said no! /datum/recipe/slimetoast reagents = list("slimejelly" = 5) items = list( - /obj/item/weapon/reagent_containers/food/snacks/breadslice, + /obj/item/weapon/reagent_containers/food/snacks/slice/bread, ) result = /obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/slime /datum/recipe/jelliedtoast reagents = list("cherryjelly" = 5) items = list( - /obj/item/weapon/reagent_containers/food/snacks/breadslice, + /obj/item/weapon/reagent_containers/food/snacks/slice/bread, ) result = /obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/cherry @@ -783,24 +783,24 @@ I said no! /datum/recipe/twobread reagents = list("wine" = 5) items = list( - /obj/item/weapon/reagent_containers/food/snacks/breadslice, - /obj/item/weapon/reagent_containers/food/snacks/breadslice, + /obj/item/weapon/reagent_containers/food/snacks/slice/bread, + /obj/item/weapon/reagent_containers/food/snacks/slice/bread, ) result = /obj/item/weapon/reagent_containers/food/snacks/twobread /datum/recipe/slimesandwich reagents = list("slimejelly" = 5) items = list( - /obj/item/weapon/reagent_containers/food/snacks/breadslice, - /obj/item/weapon/reagent_containers/food/snacks/breadslice, + /obj/item/weapon/reagent_containers/food/snacks/slice/bread, + /obj/item/weapon/reagent_containers/food/snacks/slice/bread, ) result = /obj/item/weapon/reagent_containers/food/snacks/jellysandwich/slime /datum/recipe/cherrysandwich reagents = list("cherryjelly" = 5) items = list( - /obj/item/weapon/reagent_containers/food/snacks/breadslice, - /obj/item/weapon/reagent_containers/food/snacks/breadslice, + /obj/item/weapon/reagent_containers/food/snacks/slice/bread, + /obj/item/weapon/reagent_containers/food/snacks/slice/bread, ) result = /obj/item/weapon/reagent_containers/food/snacks/jellysandwich/cherry diff --git a/code/modules/reagents/reagent_containers/food/sandwich.dm b/code/modules/reagents/reagent_containers/food/sandwich.dm index 48356172ca..f2b783f90f 100644 --- a/code/modules/reagents/reagent_containers/food/sandwich.dm +++ b/code/modules/reagents/reagent_containers/food/sandwich.dm @@ -1,4 +1,4 @@ -/obj/item/weapon/reagent_containers/food/snacks/breadslice/attackby(obj/item/W as obj, mob/user as mob) +/obj/item/weapon/reagent_containers/food/snacks/slice/bread/attackby(obj/item/W as obj, mob/user as mob) if(istype(W,/obj/item/weapon/material/shard) || istype(W,/obj/item/weapon/reagent_containers/food/snacks)) var/obj/item/weapon/reagent_containers/food/snacks/csandwich/S = new(get_turf(src)) @@ -19,7 +19,7 @@ var/sandwich_limit = 4 for(var/obj/item/O in ingredients) - if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/breadslice)) + if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/slice/bread)) sandwich_limit += 4 if(istype(W,/obj/item/weapon/material/shard)) From ab1812d9ff4927bc925e1409b1eca713de4a06c1 Mon Sep 17 00:00:00 2001 From: Anewbe Date: Mon, 13 Mar 2017 20:03:45 -0500 Subject: [PATCH 12/19] Adds the ear translator --- code/game/objects/items/devices/translator.dm | 33 ++++++++++++++---- .../preference_setup/loadout/loadout_ears.dm | 5 +++ icons/obj/device.dmi | Bin 50209 -> 50525 bytes 3 files changed, 32 insertions(+), 6 deletions(-) diff --git a/code/game/objects/items/devices/translator.dm b/code/game/objects/items/devices/translator.dm index a66d9710c2..49128a6fca 100644 --- a/code/game/objects/items/devices/translator.dm +++ b/code/game/objects/items/devices/translator.dm @@ -6,6 +6,9 @@ icon_state = "translator" w_class = ITEMSIZE_SMALL origin_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3) + var/mult_icons = 1 //Changes sprite when it translates + var/visual = 1 //If you need to see to get the message + var/audio = 0 //If you need to hear to get the message var/listening = 0 var/datum/language/langset @@ -15,7 +18,8 @@ if(langset) listening = 1 listening_objects |= src - icon_state = "[initial(icon_state)]1" + if(mult_icons) + icon_state = "[initial(icon_state)]1" to_chat(user, "You enable \the [src], translating into [langset.name].") else //Turning OFF listening = 0 @@ -29,7 +33,8 @@ return //Show the "I heard something" animation. - flick("[initial(icon_state)]2",src) + if(mult_icons) + flick("[initial(icon_state)]2",src) //Handheld or pocket only. if(!isliving(loc)) @@ -40,15 +45,31 @@ if (language && (language.flags & NONVERBAL)) return //Not gonna translate sign language + if (visual && ((L.sdisabilities & BLIND) || L.eye_blind)) + return //Can't see the screen, don't get the message + + if (audio && ((L.sdisabilities & DEAF) || L.ear_deaf)) + return //Can't hear the translation, don't get the message + //Only translate if they can't understand, otherwise pointlessly spammy //I'll just assume they don't look at the screen in that case //They don't understand the spoken language we're translating FROM if(!L.say_understands(speaker,language)) - //They understand the PRINTED language + //They understand the output language if(L.say_understands(null,langset)) - to_chat(L, "[src] displays, \"[message]\"") + to_chat(L, "[src] translates, \"[message]\"") - //They don't understand the PRINTED language + //They don't understand the output language else - to_chat(L, "[src] displays, \"[langset.scramble(message)]\"") + to_chat(L, "[src] translates, \"[langset.scramble(message)]\"") + +//Let's try an ear-worn version +/obj/item/device/universal_translator/ear + name = "translator earpiece" + desc = "This handy device appears to translate the languages it hears into another language for a user." + icon_state = "earpiece" + w_class = ITEMSIZE_TINY + slot_flags = SLOT_EARS + visual = 0 + audio = 1 \ No newline at end of file diff --git a/code/modules/client/preference_setup/loadout/loadout_ears.dm b/code/modules/client/preference_setup/loadout/loadout_ears.dm index 02bfdaa8b7..d3c7c633ce 100644 --- a/code/modules/client/preference_setup/loadout/loadout_ears.dm +++ b/code/modules/client/preference_setup/loadout/loadout_ears.dm @@ -8,3 +8,8 @@ /datum/gear/ears/headphones display_name = "headphones" path = /obj/item/clothing/ears/earmuffs/headphones + +/datum/gear/ears/translator + display_name = "universal translator, ear" + path = /obj/item/device/universal_translator/ear + cost = 5 \ No newline at end of file diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index 4e366be140bdce3557a204febb1e0e65d93c71fa..d9b7bd22aaf223e6511636c0bee1fa546571c06d 100644 GIT binary patch delta 8475 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 From c3d0f7e2dd5a411bea453b54e8c20c8cf564aedc Mon Sep 17 00:00:00 2001 From: Arokha Sieyes Date: Mon, 13 Mar 2017 21:35:22 -0400 Subject: [PATCH 13/19] Fixes 7 Recipes I Broke LOOK NOBODY'S PERFECT OKAY I added /food/ to the path of all the food recipes but these 7 have a completely silly means of actually creating the food items, and it results in that proc never being called because I didn't change THOSE to have /food/ in the path as well. It's not like dough is important, okay. And this mechanism of doing this is dumb. And huff. ~~pleasedonthurtme~~ --- code/modules/reagents/Chemistry-Recipes.dm | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index d63cacfb94..642affe30e 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -1035,7 +1035,7 @@ catalysts = list("enzyme" = 5) result_amount = 1 -/datum/chemical_reaction/tofu/on_reaction(var/datum/reagents/holder, var/created_volume) +/datum/chemical_reaction/food/tofu/on_reaction(var/datum/reagents/holder, var/created_volume) var/location = get_turf(holder.my_atom) for(var/i = 1, i <= created_volume, i++) new /obj/item/weapon/reagent_containers/food/snacks/tofu(location) @@ -1048,7 +1048,7 @@ required_reagents = list("soymilk" = 2, "coco" = 2, "sugar" = 2) result_amount = 1 -/datum/chemical_reaction/chocolate_bar/on_reaction(var/datum/reagents/holder, var/created_volume) +/datum/chemical_reaction/food/chocolate_bar/on_reaction(var/datum/reagents/holder, var/created_volume) var/location = get_turf(holder.my_atom) for(var/i = 1, i <= created_volume, i++) new /obj/item/weapon/reagent_containers/food/snacks/chocolatebar(location) @@ -1061,7 +1061,7 @@ required_reagents = list("milk" = 2, "coco" = 2, "sugar" = 2) result_amount = 1 -/datum/chemical_reaction/chocolate_bar2/on_reaction(var/datum/reagents/holder, var/created_volume) +/datum/chemical_reaction/food/chocolate_bar2/on_reaction(var/datum/reagents/holder, var/created_volume) var/location = get_turf(holder.my_atom) for(var/i = 1, i <= created_volume, i++) new /obj/item/weapon/reagent_containers/food/snacks/chocolatebar(location) @@ -1096,7 +1096,7 @@ catalysts = list("enzyme" = 5) result_amount = 1 -/datum/chemical_reaction/cheesewheel/on_reaction(var/datum/reagents/holder, var/created_volume) +/datum/chemical_reaction/food/cheesewheel/on_reaction(var/datum/reagents/holder, var/created_volume) var/location = get_turf(holder.my_atom) for(var/i = 1, i <= created_volume, i++) new /obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesewheel(location) @@ -1109,7 +1109,7 @@ required_reagents = list("protein" = 3, "flour" = 5) result_amount = 3 -/datum/chemical_reaction/meatball/on_reaction(var/datum/reagents/holder, var/created_volume) +/datum/chemical_reaction/food/meatball/on_reaction(var/datum/reagents/holder, var/created_volume) var/location = get_turf(holder.my_atom) for(var/i = 1, i <= created_volume, i++) new /obj/item/weapon/reagent_containers/food/snacks/meatball(location) @@ -1122,7 +1122,7 @@ required_reagents = list("egg" = 3, "flour" = 10) result_amount = 1 -/datum/chemical_reaction/dough/on_reaction(var/datum/reagents/holder, var/created_volume) +/datum/chemical_reaction/food/dough/on_reaction(var/datum/reagents/holder, var/created_volume) var/location = get_turf(holder.my_atom) for(var/i = 1, i <= created_volume, i++) new /obj/item/weapon/reagent_containers/food/snacks/dough(location) @@ -1135,7 +1135,7 @@ required_reagents = list("blood" = 5, "clonexadone" = 1) result_amount = 1 -/datum/chemical_reaction/syntiflesh/on_reaction(var/datum/reagents/holder, var/created_volume) +/datum/chemical_reaction/food/syntiflesh/on_reaction(var/datum/reagents/holder, var/created_volume) var/location = get_turf(holder.my_atom) for(var/i = 1, i <= created_volume, i++) new /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh(location) From c91c8dc1777ddeb7210f2f37ddcbd5bc56beb0a9 Mon Sep 17 00:00:00 2001 From: Neerti Date: Tue, 14 Mar 2017 15:42:57 -0400 Subject: [PATCH 14/19] Makes the mention system more robust on name detection. Changes * to + for bolding. --- code/modules/mob/hear_say.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/hear_say.dm b/code/modules/mob/hear_say.dm index fe8c86619a..09fa0687cd 100644 --- a/code/modules/mob/hear_say.dm +++ b/code/modules/mob/hear_say.dm @@ -94,7 +94,7 @@ var/list/valid_names = splittext(real_name, " ") // Should output list("John", "Doe") as an example. valid_names += special_mentions() for(var/name in valid_names) - if(findtext(message, name)) + if(findtext(message, regex("\\b[name]\\b", "i"))) // This is to stop 'ai' from triggering if someone says 'wait'. return TRUE return FALSE @@ -108,7 +108,7 @@ // Converts specific characters, like *, /, and _ to formatted output. /mob/proc/say_emphasis(var/message) message = encode_html_emphasis(message, "/", "i") - message = encode_html_emphasis(message, "*", "b") + message = encode_html_emphasis(message, "+", "b") message = encode_html_emphasis(message, "_", "u") return message From 0ad88fd29b194c81ab2c9ca44b5863f4d27414bb Mon Sep 17 00:00:00 2001 From: Leshana Date: Wed, 15 Mar 2017 13:06:23 -0400 Subject: [PATCH 15/19] Update values after equalizing gas mixtures. Fixes rooms showing wrong pressure after reaching equilibrium. * If we do not do this, zones are left with the wrong total_moles (and therefore the wrong **pressure readout**) after equalizing. * Equalizing happens when two connected zones get close enough to suspend processing. Thus the effect of this bug would be wrong pressure readings on rooms that are no longer being updated, thus locking in the wrong value! --- code/modules/xgm/xgm_gas_mixture.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/modules/xgm/xgm_gas_mixture.dm b/code/modules/xgm/xgm_gas_mixture.dm index 18c210a6dc..6f17fba409 100644 --- a/code/modules/xgm/xgm_gas_mixture.dm +++ b/code/modules/xgm/xgm_gas_mixture.dm @@ -110,6 +110,9 @@ temperature = ((temperature * our_heatcap) + (sharer.temperature * share_heatcap)) / (our_heatcap + share_heatcap) sharer.temperature = temperature + update_values() + sharer.update_values() + return 1 From 71587c5ad055237bd2be3e3cc93fe5b1a51b9e11 Mon Sep 17 00:00:00 2001 From: Leshana Date: Wed, 15 Mar 2017 18:51:58 -0400 Subject: [PATCH 16/19] Fix rooms holding pressure when exposed to space. This happens because edges cease processing when the delta between their zones is small enough. This is normally a fine optimization, but when it results in a room at 4kPa with a window open to space, it breaks imurshuns. Two main changes to solve this problem without too much cpu cost: 1) Stop edges from sleeping if one side is a hard vacuum. This ensures that a zone doesn't freeze at a low-but-non-zero pressure when touching hard vacuum. 2) Prevent #1 from causing the edge to stay alive for ages while pressures asymptotically approach zero as they are repeatedly equalized but only half is dumped to space. (Would happen if ZoneA---ZoneB---Space arrangement exists) by detecting when the total amount of air left is small enough that it would normally sleep anyway, and just setting it to zero. The end outcome is that behavior is mostly the same as before, except when zones have an open path to unsimulated space, they will reach equilibrium at zero instead of semi-random lowish values. --- code/ZAS/ConnectionGroup.dm | 8 ++++++-- code/modules/xgm/xgm_gas_mixture.dm | 15 ++++++++++++++- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/code/ZAS/ConnectionGroup.dm b/code/ZAS/ConnectionGroup.dm index f377efe74f..94df46ac01 100644 --- a/code/ZAS/ConnectionGroup.dm +++ b/code/ZAS/ConnectionGroup.dm @@ -180,7 +180,8 @@ Class Procs: air_master.mark_zone_update(B) /connection_edge/zone/recheck() - if(!A.air.compare(B.air)) + // Edges with only one side being vacuum need processing no matter how close. + if(!A.air.compare(B.air, vacuum_exception = 1)) air_master.mark_edge_active(src) //Helper proc to get connections for a zone. @@ -235,7 +236,10 @@ Class Procs: air_master.mark_zone_update(A) /connection_edge/unsimulated/recheck() - if(!A.air.compare(air)) + // Edges with only one side being vacuum need processing no matter how close. + // Note: This handles the glaring flaw of a room holding pressure while exposed to space, but + // does not specially handle the less common case of a simulated room exposed to an unsimulated pressurized turf. + if(!A.air.compare(air, vacuum_exception = 1)) air_master.mark_edge_active(src) proc/ShareHeat(datum/gas_mixture/A, datum/gas_mixture/B, connecting_tiles) diff --git a/code/modules/xgm/xgm_gas_mixture.dm b/code/modules/xgm/xgm_gas_mixture.dm index 6f17fba409..cb600f254f 100644 --- a/code/modules/xgm/xgm_gas_mixture.dm +++ b/code/modules/xgm/xgm_gas_mixture.dm @@ -96,10 +96,16 @@ update_values() +// Used to equalize the mixture between two zones before sleeping an edge. /datum/gas_mixture/proc/equalize(datum/gas_mixture/sharer) var/our_heatcap = heat_capacity() var/share_heatcap = sharer.heat_capacity() + // Special exception: there isn't enough air around to be worth processing this edge next tick, zap both to zero. + if(total_moles + sharer.total_moles <= MINIMUM_AIR_TO_SUSPEND) + gas.Cut() + sharer.gas.Cut() + for(var/g in gas|sharer.gas) var/comb = gas[g] + sharer.gas[g] comb /= volume + sharer.volume @@ -282,9 +288,16 @@ //Checks if we are within acceptable range of another gas_mixture to suspend processing or merge. -/datum/gas_mixture/proc/compare(const/datum/gas_mixture/sample) +/datum/gas_mixture/proc/compare(const/datum/gas_mixture/sample, var/vacuum_exception = 0) if(!sample) return 0 + if(vacuum_exception) + // Special case - If one of the two is zero pressure, the other must also be zero. + // This prevents suspending processing when an air-filled room is next to a vacuum, + // an edge case which is particually obviously wrong to players + if(total_moles == 0 && sample.total_moles != 0 || sample.total_moles == 0 && total_moles != 0) + return 0 + var/list/marked = list() for(var/g in gas) if((abs(gas[g] - sample.gas[g]) > MINIMUM_AIR_TO_SUSPEND) && \ From fc4af03db8e54f1763d35998c1eb2e60cdc8d7b3 Mon Sep 17 00:00:00 2001 From: Yoshax Date: Thu, 16 Mar 2017 00:15:33 +0000 Subject: [PATCH 17/19] Fixes a tea related issue --- code/modules/reagents/dispenser/cartridge_presets.dm | 2 ++ code/modules/reagents/dispenser/dispenser_presets.dm | 9 ++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/code/modules/reagents/dispenser/cartridge_presets.dm b/code/modules/reagents/dispenser/cartridge_presets.dm index ab82dc53f4..4e23410ac2 100644 --- a/code/modules/reagents/dispenser/cartridge_presets.dm +++ b/code/modules/reagents/dispenser/cartridge_presets.dm @@ -68,6 +68,8 @@ hot_coco spawn_reagent = "hot_coco" milk spawn_reagent = "milk" cream spawn_reagent = "cream" + mint spawn_reagent = "mint" + berry spawn_reagent = "berryjuice" // ERT inaprov spawn_reagent = "inaprovaline" diff --git a/code/modules/reagents/dispenser/dispenser_presets.dm b/code/modules/reagents/dispenser/dispenser_presets.dm index 63f65335f4..05477d9cdd 100644 --- a/code/modules/reagents/dispenser/dispenser_presets.dm +++ b/code/modules/reagents/dispenser/dispenser_presets.dm @@ -131,5 +131,12 @@ /obj/item/weapon/reagent_containers/chem_disp_cartridge/milk, /obj/item/weapon/reagent_containers/chem_disp_cartridge/cream, /obj/item/weapon/reagent_containers/chem_disp_cartridge/tea, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/ice + /obj/item/weapon/reagent_containers/chem_disp_cartridge/ice, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/mint, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/orange, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/lemon, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/lime, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/berry, + + ) \ No newline at end of file From bf307ac0dc9467e4ceadd49dc5528ab1f1962159 Mon Sep 17 00:00:00 2001 From: Anewbe Date: Wed, 15 Mar 2017 18:03:07 -0500 Subject: [PATCH 18/19] Translators can't output hive or nonverbal languages --- code/game/objects/items/devices/translator.dm | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/code/game/objects/items/devices/translator.dm b/code/game/objects/items/devices/translator.dm index 49128a6fca..0bb26b32bc 100644 --- a/code/game/objects/items/devices/translator.dm +++ b/code/game/objects/items/devices/translator.dm @@ -16,11 +16,15 @@ if(!listening) //Turning ON langset = input(user,"Translate to which of your languages?","Language Selection") as null|anything in user.languages if(langset) - listening = 1 - listening_objects |= src - if(mult_icons) - icon_state = "[initial(icon_state)]1" - to_chat(user, "You enable \the [src], translating into [langset.name].") + if(langset && ((langset.flags & NONVERBAL) || (langset.flags & HIVEMIND))) + to_chat(user, "\The [src] cannot output that language.") + return + else + listening = 1 + listening_objects |= src + if(mult_icons) + icon_state = "[initial(icon_state)]1" + to_chat(user, "You enable \the [src], translating into [langset.name].") else //Turning OFF listening = 0 listening_objects -= src From 400b0749aa14ad097b78f279f0485c609f6559dd Mon Sep 17 00:00:00 2001 From: Arokha Sieyes Date: Wed, 15 Mar 2017 23:53:56 -0400 Subject: [PATCH 19/19] Add one inflatables kit to paramedic lockers Makes sense to meeee. Hopefully it does to you, too. Gotta rescue those people! --- .../objects/structures/crates_lockers/closets/secure/medical.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm index 09aeac362f..6dfd71f2bf 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm @@ -142,6 +142,7 @@ new /obj/item/clothing/suit/storage/toggle/labcoat/emt(src) new /obj/item/device/radio/headset/headset_med/alt(src) new /obj/item/weapon/cartridge/medical(src) + new /obj/item/weapon/storage/briefcase/inflatable(src) new /obj/item/device/flashlight(src) new /obj/item/weapon/tank/emergency/oxygen/engi(src) new /obj/item/clothing/glasses/hud/health(src)