diff --git a/baystation12.dme b/baystation12.dme index 9ac1078324..0cb07b916e 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -1263,10 +1263,6 @@ #include "code\modules\surgery\ribcage.dm" #include "code\modules\surgery\robolimbs.dm" #include "code\modules\surgery\surgery.dm" -#include "code\modules\telesci\bscrystal.dm" -#include "code\modules\telesci\gps.dm" -#include "code\modules\telesci\telepad.dm" -#include "code\modules\telesci\telesci_computer.dm" #include "code\modules\virus2\analyser.dm" #include "code\modules\virus2\antibodies.dm" #include "code\modules\virus2\centrifuge.dm" diff --git a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm index 4c386f44ec..60d6f741af 100644 --- a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm +++ b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm @@ -104,7 +104,7 @@ var/datum/gas_mixture/environment = loc.return_air() if(scrubbing) - if((environment.toxins>0) || (environment.carbon_dioxide>0) || (environment.trace_gases.len>0)) + if((environment.toxins>0.001) || (environment.carbon_dioxide>0.001) || (environment.trace_gases.len>0)) var/transfer_moles = min(1, volume_rate/environment.volume)*environment.total_moles() //Take a gas sample diff --git a/code/ATMOSPHERICS/datum_pipe_network.dm b/code/ATMOSPHERICS/datum_pipe_network.dm index bff2d0ee5e..83b269f660 100644 --- a/code/ATMOSPHERICS/datum_pipe_network.dm +++ b/code/ATMOSPHERICS/datum_pipe_network.dm @@ -54,8 +54,6 @@ datum/pipe_network for(var/datum/pipeline/line_member in giver.line_members) line_member.network = src - del(giver) - update_network_gases() return 1 diff --git a/code/TriDimension/Turfs.dm b/code/TriDimension/Turfs.dm index 94114c9a9e..ae7bf8202e 100644 --- a/code/TriDimension/Turfs.dm +++ b/code/TriDimension/Turfs.dm @@ -53,6 +53,13 @@ H:updatehealth() return ..() +/turf/proc/hasbelow() + var/turf/controllerlocation = locate(1, 1, z) + for(var/obj/effect/landmark/zcontroller/controller in controllerlocation) + if(controller.down) + return 1 + return 0 + /turf/simulated/floor/open/proc/getbelow() var/turf/controllerlocation = locate(1, 1, z) for(var/obj/effect/landmark/zcontroller/controller in controllerlocation) @@ -73,7 +80,7 @@ //overwrite the attackby of space to transform it to openspace if necessary /turf/space/attackby(obj/item/C as obj, mob/user as mob) - if (istype(C, /obj/item/weapon/cable_coil)) + if (istype(C, /obj/item/weapon/cable_coil) && src.hasbelow()) var/turf/simulated/floor/open/W = src.ChangeTurf(/turf/simulated/floor/open) W.attackby(C, user) return diff --git a/code/WorkInProgress/Ported/Bureaucracy/filing.dm b/code/WorkInProgress/Ported/Bureaucracy/filing.dm index 9e5a990f55..bf01c6dd27 100644 --- a/code/WorkInProgress/Ported/Bureaucracy/filing.dm +++ b/code/WorkInProgress/Ported/Bureaucracy/filing.dm @@ -8,7 +8,7 @@ /obj/structure/filingcabinet/attackby(obj/item/weapon/paper/P,mob/M) if(istype(P)) - M << "You put the [P] in the [src]." + M << "You put \the [P] in the [src]." M.drop_item() P.loc = src else diff --git a/code/ZAS/Turf.dm b/code/ZAS/Turf.dm index fece782aa7..e989d65455 100644 --- a/code/ZAS/Turf.dm +++ b/code/ZAS/Turf.dm @@ -173,7 +173,6 @@ if(connections) connections.update_all() /turf/assume_air(datum/gas_mixture/giver) //use this for machines to adjust air - del(giver) return 0 /turf/return_air() diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index ee2f220d9f..12941e7cc6 100755 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -5,7 +5,7 @@ //BIG NOTE: Don't add living things to crates, that's bad, it will break the shuttle. //NEW NOTE: Do NOT set the price of any crates below 7 points. Doing so allows infinite points. -var/list/all_supply_groups = list("Operations","Security","Hospitality","Engineering","Medical / Science","Hydroponics") +var/list/all_supply_groups = list("Operations","Security","Hospitality","Engineering","Medical / Science","Hydroponics", "Supply", "Miscellaneous") /datum/supply_packs var/name = null @@ -44,7 +44,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee hidden = 1 /datum/supply_packs/food - name = "Food crate" + name = "Kitchen supply crate" contains = list(/obj/item/weapon/reagent_containers/food/snacks/flour, /obj/item/weapon/reagent_containers/food/snacks/flour, /obj/item/weapon/reagent_containers/food/snacks/flour, @@ -61,7 +61,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee cost = 10 containertype = /obj/structure/closet/crate/freezer containername = "Food crate" - group = "Hospitality" + group = "Supply" /datum/supply_packs/monkey name = "Monkey crate" @@ -113,7 +113,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee group = "Security" /datum/supply_packs/toner - name = "Toner Cartridges" + name = "Toner cartridges" contains = list(/obj/item/device/toner, /obj/item/device/toner, /obj/item/device/toner, @@ -122,8 +122,8 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee /obj/item/device/toner) cost = 10 containertype = /obj/structure/closet/crate - containername = "Toner Cartridges" - group = "Operations" + containername = "Toner cartridges" + group = "Supply" /datum/supply_packs/party name = "Party equipment" @@ -176,7 +176,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee /obj/item/clothing/mask/gas) cost = 35 containertype = /obj/structure/closet/crate/internals - containername = "Emergency Crate" + containername = "Emergency crate" group = "Engineering" /datum/supply_packs/evacuation @@ -208,7 +208,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee cost = 10 containertype = /obj/structure/closet/crate containername = "Janitorial supplies" - group = "Operations" + group = "Supply" /datum/supply_packs/lightbulbs name = "Replacement lights" @@ -229,7 +229,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee cost = 20 containertype = /obj/structure/closet/crate containername = "Wizard costume crate" - group = "Operations" + group = "Miscellaneous" /datum/supply_packs/mule name = "MULEbot Crate" @@ -266,38 +266,39 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee //farm animals - useless and annoying, but potentially a good source of food /datum/supply_packs/cow - name = "Cow Crate" + name = "Cow crate" cost = 30 containertype = /obj/structure/largecrate/cow - containername = "Cow Crate" + containername = "Cow crate" access = access_hydroponics + group = "Hydroponics" /datum/supply_packs/goat - name = "Goat Crate" + name = "Goat crate" cost = 25 containertype = /obj/structure/largecrate/goat - containername = "Goat Crate" + containername = "Goat crate" access = access_hydroponics group = "Hydroponics" /datum/supply_packs/chicken - name = "Chicken Crate" + name = "Chicken crate" cost = 20 containertype = /obj/structure/largecrate/chick - containername = "Chicken Crate" + containername = "Chicken crate" access = access_hydroponics group = "Hydroponics" /datum/supply_packs/lisa - name = "Corgi Crate" + name = "Corgi crate" contains = list() cost = 50 containertype = /obj/structure/largecrate/lisa - containername = "Corgi Crate" + containername = "Corgi crate" group = "Hydroponics" /datum/supply_packs/seeds - name = "Seeds Crate" + name = "Seeds crate" contains = list(/obj/item/seeds/chiliseed, /obj/item/seeds/berryseed, /obj/item/seeds/cornseed, @@ -322,7 +323,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee group = "Hydroponics" /datum/supply_packs/weedcontrol - name = "Weed Control Crate" + name = "Weed control crate" contains = list(/obj/item/weapon/scythe, /obj/item/clothing/mask/gas, /obj/item/weapon/grenade/chem_grenade/antiweed, @@ -334,7 +335,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee group = "Hydroponics" /datum/supply_packs/exoticseeds - name = "Exotic Seeds Crate" + name = "Exotic seeds crate" contains = list(/obj/item/seeds/nettleseed, /obj/item/seeds/replicapod, /obj/item/seeds/replicapod, @@ -373,7 +374,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee group = "Medical / Science" /datum/supply_packs/virus - name = "Virus crate" + name = "Virus sample crate" /* contains = list(/obj/item/weapon/reagent_containers/glass/bottle/flu_virion, /obj/item/weapon/reagent_containers/glass/bottle/cold, /obj/item/weapon/reagent_containers/glass/bottle/epiglottis_virion, @@ -392,12 +393,12 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee /obj/item/weapon/virusdish/random) cost = 25 containertype = "/obj/structure/closet/crate/secure" - containername = "Virus crate" + containername = "Virus sample crate" access = access_cmo group = "Medical / Science" /datum/supply_packs/metal50 - name = "50 Metal Sheets" + name = "50 metal sheets" contains = list(/obj/item/stack/sheet/metal) amount = 50 cost = 10 @@ -406,7 +407,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee group = "Engineering" /datum/supply_packs/glass50 - name = "50 Glass Sheets" + name = "50 glass sheets" contains = list(/obj/item/stack/sheet/glass) amount = 50 cost = 10 @@ -415,7 +416,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee group = "Engineering" /datum/supply_packs/wood50 - name = "50 Wooden Planks" + name = "50 wooden planks" contains = list(/obj/item/stack/sheet/wood) amount = 50 cost = 10 @@ -506,7 +507,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee /obj/item/weapon/paper/solar) cost = 20 containertype = /obj/structure/closet/crate - containername = "solar pack crate" + containername = "Solar pack crate" group = "Engineering" /datum/supply_packs/engine @@ -582,7 +583,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee /datum/supply_packs/robotics - name = "Robotics Assembly Crate" + name = "Robotics assembly crate" contains = list(/obj/item/device/assembly/prox_sensor, /obj/item/device/assembly/prox_sensor, /obj/item/device/assembly/prox_sensor, @@ -595,7 +596,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee /obj/item/weapon/cell/high) cost = 10 containertype = /obj/structure/closet/crate/secure/gear - containername = "Robotics Assembly" + containername = "Robotics assembly" access = access_robotics group = "Engineering" @@ -764,14 +765,14 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee group = "Security" /datum/supply_packs/securitybarriers - name = "Security Barriers" + name = "Security barrier crate" contains = list(/obj/machinery/deployable/barrier, /obj/machinery/deployable/barrier, /obj/machinery/deployable/barrier, /obj/machinery/deployable/barrier) cost = 20 containertype = /obj/structure/closet/crate/secure/gear - containername = "Security Barriers crate" + containername = "Security barrier crate" group = "Security" /datum/supply_packs/securitybarriers @@ -812,7 +813,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee cost = 200 containertype = /obj/structure/closet/crate containername = "Collectable hats crate! Brought to you by Bass.inc!" - group = "Operations" + group = "Miscellaneous" /datum/supply_packs/randomised/New() manifest += "Contains any [num_contained] of:" @@ -858,7 +859,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee group = "Operations" /datum/supply_packs/boxes - name = "Empty Box supplies" + name = "Empty boxes" contains = list(/obj/item/weapon/storage/box, /obj/item/weapon/storage/box, /obj/item/weapon/storage/box, @@ -871,8 +872,8 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee /obj/item/weapon/storage/box) cost = 10 containertype = "/obj/structure/closet/crate" - containername = "Empty Box crate" - group = "Operations" + containername = "Empty box crate" + group = "Supply" /datum/supply_packs/surgery name = "Surgery crate" @@ -910,7 +911,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee /obj/item/pizzabox/mushroom, /obj/item/pizzabox/meat, /obj/item/pizzabox/vegetable) - name = "Surprise pack of five dozen pizzas" + name = "Surprise pack of five pizzas" cost = 15 containertype = /obj/structure/closet/crate/freezer containername = "Pizza crate" @@ -950,7 +951,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee containertype = /obj/structure/closet/crate/secure containername = "Actor Costumes" access = access_theatre - group = "Operations" + group = "Miscellaneous" /datum/supply_packs/formal_wear contains = list(/obj/item/clothing/head/bowler, @@ -971,7 +972,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee cost = 30 containertype = /obj/structure/closet containername = "Formalwear for the best occasions." - group = "Operations" + group = "Miscellaneous" /datum/supply_packs/rust_injector contains = list(/obj/machinery/power/rust_fuel_injector) @@ -1052,7 +1053,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee cost = 10 containertype = /obj/structure/closet/crate containername = "EFTPOS crate" - group = "Operations" + group = "Miscellaneous" /datum/supply_packs/teg contains = list(/obj/machinery/power/generator) @@ -1091,7 +1092,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee access = access_atmospherics /datum/supply_packs/bee_keeper - name = "Beekeeping Crate" + name = "Beekeeping crate" contains = list(/obj/item/beezeez, /obj/item/weapon/bee_net, /obj/item/apiary, diff --git a/code/defines/obj/hydro.dm b/code/defines/obj/hydro.dm index 9357b7f308..443ba95b09 100644 --- a/code/defines/obj/hydro.dm +++ b/code/defines/obj/hydro.dm @@ -1167,7 +1167,7 @@ attackby(obj/item/weapon/W as obj, mob/user as mob) if(istype(W, /obj/item/weapon/circular_saw) || istype(W, /obj/item/weapon/hatchet) || (istype(W, /obj/item/weapon/twohanded/fireaxe) && W:wielded) || istype(W, /obj/item/weapon/melee/energy)) - user.show_message("You make planks out of the [src]!", 1) + user.show_message("You make planks out of \the [src]!", 1) for(var/i=0,i<2,i++) var/obj/item/stack/sheet/wood/NG = new (user.loc) for (var/obj/item/stack/sheet/wood/G in user.loc) diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index bfe3393359..da5deae96f 100755 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -1382,10 +1382,6 @@ var/list/ghostteleportlocs = list() name = "\improper Miscellaneous Research" icon_state = "toxmisc" -/area/toxins/telesci - name = "\improper Telescience Lab" - icon_state = "toxmisc" - /area/toxins/server name = "\improper Server Room" icon_state = "server" diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 0799d9faa0..917ecfe9a3 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -44,7 +44,6 @@ /atom/proc/assume_air(datum/gas_mixture/giver) - del(giver) return null /atom/proc/remove_air(amount) diff --git a/code/game/gamemodes/changeling/changeling_powers.dm b/code/game/gamemodes/changeling/changeling_powers.dm index 9652a90978..fb01c76588 100644 --- a/code/game/gamemodes/changeling/changeling_powers.dm +++ b/code/game/gamemodes/changeling/changeling_powers.dm @@ -57,7 +57,7 @@ return if(changeling.geneticdamage > max_genetic_damage) - src << "Our geneomes are still reassembling. We need time to recover first." + src << "Our genomes are still reassembling. We need time to recover first." return return changeling diff --git a/code/game/gamemodes/changeling/modularchangling.dm b/code/game/gamemodes/changeling/modularchangling.dm index 8c65605cbc..9d1d94adf3 100644 --- a/code/game/gamemodes/changeling/modularchangling.dm +++ b/code/game/gamemodes/changeling/modularchangling.dm @@ -119,11 +119,11 @@ var/list/datum/power/changeling/powerinstances = list() genomecost = 10 verbpath = /mob/proc/changeling_DEATHsting -/datum/power/changeling/unfat_sting - name = "Unfat Sting" - desc = "We silently sting a human, forcing them to rapidly metobolize their fat." - genomecost = 1 - verbpath = /mob/proc/changeling_unfat_sting +///datum/power/changeling/unfat_sting +// name = "Unfat Sting" +// desc = "We silently sting a human, forcing them to rapidly metabolize their fat." +// genomecost = 1 +// verbpath = /mob/proc/changeling_unfat_sting /datum/power/changeling/boost_range name = "Boost Range" diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index fdc669a0c4..a9217cd00f 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -811,7 +811,7 @@ var/list/sacrificed = list() if (cultist == user) //just to be sure. return if(cultist.buckled || cultist.handcuffed || (!isturf(cultist.loc) && !istype(cultist.loc, /obj/structure/closet))) - user << "\red You cannot summon the [cultist], for his shackles of blood are strong" + user << "\red You cannot summon \the [cultist], for his shackles of blood are strong." return fizzle() cultist.loc = src.loc cultist.lying = 1 diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 565edc8e17..6a65e4812a 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -16,7 +16,7 @@ var/global/list/autolathe_recipes = list( \ new /obj/item/weapon/stock_parts/console_screen(), \ new /obj/item/weapon/airlock_electronics(), \ new /obj/item/weapon/airalarm_electronics(), \ - new /obj/item/weapon/firealarm_electronics(), \ + new /obj/item/weapon/firealarm_electronics(), \ new /obj/item/weapon/module/power_control(), \ new /obj/item/stack/sheet/metal(), \ new /obj/item/stack/sheet/glass(), \ @@ -262,9 +262,42 @@ var/global/list/autolathe_recipes_hidden = list( \ if (!busy) if(href_list["make"]) var/turf/T = get_step(src.loc, get_dir(src,usr)) - var/obj/template = locate(href_list["make"]) + + // critical exploit fix start -walter0o + var/obj/item/template = null + var/attempting_to_build = locate(href_list["make"]) + + if(!attempting_to_build) + return + + if(locate(attempting_to_build, src.L) || locate(attempting_to_build, src.LL)) // see if the requested object is in one of the construction lists, if so, it is legit -walter0o + template = attempting_to_build + + else // somebody is trying to exploit, alert admins -walter0o + + var/turf/LOC = get_turf(usr) + message_admins("[key_name_admin(usr)] tried to exploit an autolathe to duplicate [attempting_to_build] ! ([LOC ? "JMP" : "null"])", 0) + log_admin("EXPLOIT : [key_name(usr)] tried to exploit an autolathe to duplicate [attempting_to_build] !") + return + + // now check for legit multiplier, also only stacks should pass with one to prevent raw-materials-manipulation -walter0o + var/multiplier = text2num(href_list["multiplier"]) + if (!multiplier) multiplier = 1 + var/max_multiplier = 1 + + if(istype(template, /obj/item/stack)) // stacks are the only items which can have a multiplier higher than 1 -walter0o + var/obj/item/stack/S = template + max_multiplier = min(S.max_amount, S.m_amt?round(m_amount/S.m_amt):INFINITY, S.g_amt?round(g_amount/S.g_amt):INFINITY) // pasta from regular_win() to make sure the numbers match -walter0o + + if( (multiplier > max_multiplier) || (multiplier <= 0) ) // somebody is trying to exploit, alert admins-walter0o + + var/turf/LOC = get_turf(usr) + message_admins("[key_name_admin(usr)] tried to exploit an autolathe with multiplier set to [multiplier] on [template] ! ([LOC ? "JMP" : "null"])" , 0) + log_admin("EXPLOIT : [key_name(usr)] tried to exploit an autolathe with multiplier set to [multiplier] on [template] !") + return + var/power = max(2000, (template.m_amt+template.g_amt)*multiplier/5) if(src.m_amount >= template.m_amt*multiplier && src.g_amount >= template.g_amt*multiplier) busy = 1 diff --git a/code/game/machinery/bees_items.dm b/code/game/machinery/bees_items.dm index 01ed5bfa40..e02a0a1a23 100644 --- a/code/game/machinery/bees_items.dm +++ b/code/game/machinery/bees_items.dm @@ -102,21 +102,22 @@ h1 {font-size: 18px; margin: 15px 0px 5px;} h2 {font-size: 15px; margin: 15px 0px 5px;} li {margin: 2px 0px 2px 15px;} - ul {list-style: none; margin: 5px; padding: 0px;} + ul {margin: 5px; padding: 0px;} ol {margin: 5px; padding: 0px 15px;} + body {font-size: 13px; font-family: Verdana;} -

Raising Bees

+

Raising Bees

Bees are loving but fickle creatures. Don't mess with their hive and stay away from any clusters of them, and you'll avoid their ire. Sometimes, you'll need to dig around in there for those delicious sweeties though - in that case make sure you wear sealed protection gear and carry an extinguisher or smoker with you - any bees chasing you, once calmed down, can thusly be netted and returned safely to the hive. - Beezeez is a cure-all panacea for them, but use it too much and the hive may grow to apocalyptic proportions. Other than that, bees are excellent pets + BeezEez is a cure-all panacea for them, but use it too much and the hive may grow to apocalyptic proportions. Other than that, bees are excellent pets for all the family and are excellent caretakers of one's garden: having a hive or two around will aid in the longevity and growth rate of plants, and aid them in fighting off poisons and disease. - - "} + + "} diff --git a/code/game/machinery/computer/HolodeckControl.dm b/code/game/machinery/computer/HolodeckControl.dm index e02d0de1f0..f4a80c0a41 100644 --- a/code/game/machinery/computer/HolodeckControl.dm +++ b/code/game/machinery/computer/HolodeckControl.dm @@ -315,7 +315,7 @@ if(world.time < (last_change + 15))//To prevent super-spam clicking, reduced process size and annoyance -Sieve return for(var/mob/M in range(3,src)) - M.show_message("\b ERROR. Recalibrating projetion apparatus.") + M.show_message("\b ERROR. Recalibrating projection apparatus.") last_change = world.time return @@ -447,6 +447,8 @@ if(isrobot(user)) return + + ..() /obj/structure/table/holotable/wood name = "table" @@ -489,7 +491,7 @@ damtype = HALLOSS /obj/item/weapon/holo/esword - desc = "May the force be within you. Sorta" + desc = "May the force be within you. Sorta." icon_state = "sword0" force = 3.0 throw_speed = 1 @@ -607,11 +609,11 @@ power_channel = ENVIRON /obj/machinery/readybutton/attack_ai(mob/user as mob) - user << "The station AI is not to interact with these devices" + user << "The station AI is not to interact with these devices!" return /obj/machinery/readybutton/attack_paw(mob/user as mob) - user << "You are too primitive to use this device" + user << "You are too primitive to use this device." return /obj/machinery/readybutton/New() diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm index 05d0ccea8d..d2bf8a1661 100644 --- a/code/game/machinery/computer/camera.dm +++ b/code/game/machinery/computer/camera.dm @@ -180,7 +180,7 @@ /obj/machinery/computer/security/telescreen/entertainment name = "entertainment monitor" - desc = "Damn, they better have /tg/thechannel on these things." + desc = "Damn, why do they never have anything interesting on these things?" icon = 'icons/obj/status_display.dmi' icon_state = "entertainment" @@ -206,4 +206,4 @@ name = "Mission Monitor" desc = "Used to access the built-in cameras in helmets." icon_state = "syndicam" - network = list("NUKE") \ No newline at end of file + network = list("NUKE") diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm index 1d724b83cd..74c6d3f8e7 100644 --- a/code/game/machinery/computer/card.dm +++ b/code/game/machinery/computer/card.dm @@ -255,7 +255,7 @@ if (authenticated) var/t1 = href_list["assign_target"] if(t1 == "Custom") - var/temp_t = copytext(sanitize(input("Enter a custom job assignment.","Assignment")),1,MAX_MESSAGE_LEN) + var/temp_t = copytext(sanitize(input("Enter a custom job assignment.","Assignment")),1,45) //let custom jobs function as an impromptu alt title, mainly for sechuds if(temp_t && modify) modify.assignment = temp_t diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm index 70010a74d5..42b23c5d7f 100644 --- a/code/game/machinery/deployable.dm +++ b/code/game/machinery/deployable.dm @@ -68,11 +68,11 @@ for reference: attackby(obj/item/W as obj, mob/user as mob) if (istype(W, /obj/item/stack/sheet/wood)) if (src.health < src.maxhealth) - visible_message("\red [user] begins to repair the [src]!") + visible_message("\red [user] begins to repair \the [src]!") if(do_after(user,20)) src.health = src.maxhealth W:use(1) - visible_message("\red [user] repairs the [src]!") + visible_message("\red [user] repairs \the [src]!") return else return @@ -181,7 +181,7 @@ for reference: if (src.emagged == 0) src.emagged = 1 src.req_access = null - user << "You break the ID authentication lock on the [src]." + user << "You break the ID authentication lock on \the [src]." var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(2, 1, src) s.start() @@ -189,7 +189,7 @@ for reference: return else if (src.emagged == 1) src.emagged = 2 - user << "You short out the anchoring mechanism on the [src]." + user << "You short out the anchoring mechanism on \the [src]." var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(2, 1, src) s.start() @@ -200,12 +200,12 @@ for reference: src.health = src.maxhealth src.emagged = 0 src.req_access = list(access_security) - visible_message("\red [user] repairs the [src]!") + visible_message("\red [user] repairs \the [src]!") return else if (src.emagged > 0) src.emagged = 0 src.req_access = list(access_security) - visible_message("\red [user] repairs the [src]!") + visible_message("\red [user] repairs \the [src]!") return return else diff --git a/code/game/machinery/hydroponics.dm b/code/game/machinery/hydroponics.dm index 97621cd30a..ef86fa4c3b 100644 --- a/code/game/machinery/hydroponics.dm +++ b/code/game/machinery/hydroponics.dm @@ -783,6 +783,15 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) del(src) return +/obj/machinery/hydroponics/attack_tk(mob/user as mob) + if(harvest) + myseed.harvest(src) + else if(dead) + planted = 0 + dead = 0 + usr << text("You remove the dead plant from the [src].") + del(myseed) + updateicon() /obj/machinery/hydroponics/attack_hand(mob/user as mob) if(istype(usr,/mob/living/silicon)) //How does AI know what plant is? diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm index d358e39c67..8364a5a666 100644 --- a/code/game/machinery/requests_console.dm +++ b/code/game/machinery/requests_console.dm @@ -8,7 +8,7 @@ var/list/obj/machinery/requests_console/allConsoles = list() /obj/machinery/requests_console name = "Requests Console" - desc = "A console intended to send requests to diferent departments on the station." + desc = "A console intended to send requests to different departments on the station." anchored = 1 icon = 'icons/obj/terminals.dmi' icon_state = "req_comp0" diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index 972066d1fb..439d31d57d 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -48,7 +48,7 @@ if (src.health <= 0) - visible_message("\blue The [src] dissapates") + visible_message("\blue The [src] dissipates!") del(src) return @@ -61,7 +61,7 @@ src.health -= max_health*0.75 //3/4 health as damage if(src.health <= 0) - visible_message("\blue The [src] dissapates") + visible_message("\blue The [src] dissipates!") del(src) return @@ -73,7 +73,7 @@ health -= Proj.damage ..() if(health <=0) - visible_message("\blue The [src] dissapates") + visible_message("\blue The [src] dissipates!") del(src) return opacity = 1 @@ -122,7 +122,7 @@ //Handle the destruction of the shield if (src.health <= 0) - visible_message("\blue The [src] dissapates") + visible_message("\blue The [src] dissipates!") del(src) return @@ -500,7 +500,7 @@ else src.add_fingerprint(user) - visible_message("\red The [src.name] has been hit with the [W.name] by [user.name]!") + visible_message("\red The [src.name] has been hit with \the [W.name] by [user.name]!") /obj/machinery/shieldwallgen/proc/cleanup(var/NSEW) var/obj/machinery/shieldwall/F diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 5eb4601be8..9dc9716e63 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -648,7 +648,7 @@ /obj/machinery/vending/snack name = "Getmore Chocolate Corp" - desc = "A snack machine courtesy of the Getmore Chocolate Corporation, based out of Mars" + desc = "A snack machine courtesy of the Getmore Chocolate Corporation, based out of Mars." product_slogans = "Try our new nougat bar!;Twice the calories for half the price!" product_ads = "The healthiest!;Award-winning chocolate bars!;Mmm! So good!;Oh my god it's so juicy!;Have a snack.;Snacks are good for you!;Have some more Getmore!;Best quality snacks straight from mars.;We love chocolate!;Try our new jerky!" icon_state = "snack" @@ -681,7 +681,7 @@ //This one's from bay12 /obj/machinery/vending/cart name = "PTech" - desc = "Cartridges for PDAs" + desc = "Cartridges for PDAs." product_slogans = "Carts to go!" icon_state = "cart" icon_deny = "cart-deny" @@ -692,7 +692,7 @@ /obj/machinery/vending/cigarette name = "Cigarette machine" //OCD had to be uppercase to look nice with the new formating - desc = "If you want to get cancer, might as well do it in style" + desc = "If you want to get cancer, might as well do it in style!" product_slogans = "Space cigs taste good like a cigarette should.;I'd rather toolbox than switch.;Smoke!;Don't believe the reports - smoke today!" product_ads = "Probably not bad for you!;Don't believe the scientists!;It's good for you!;Don't quit, buy more!;Smoke!;Nicotine heaven.;Best cigarettes since 2150.;Award-winning cigs." vend_delay = 34 @@ -750,7 +750,7 @@ /obj/machinery/vending/security name = "SecTech" - desc = "A security equipment vendor" + desc = "A security equipment vendor." product_ads = "Crack capitalist skulls!;Beat some heads in!;Don't forget - harm is good!;Your weapons are right here.;Handcuffs!;Freeze, scumbag!;Don't tase me bro!;Tase them, bro.;Why not have a donut?" icon_state = "sec" icon_deny = "sec-deny" @@ -761,7 +761,7 @@ /obj/machinery/vending/hydronutrients name = "NutriMax" - desc = "A plant nutrients vendor" + desc = "A plant nutrients vendor." product_slogans = "Aren't you glad you don't have to fertilize the natural way?;Now with 50% less stink!;Plants are people too!" product_ads = "We like plants!;Don't you want some?;The greenest thumbs ever.;We like big plants.;Soft soil..." icon_state = "nutri" @@ -779,7 +779,7 @@ products = list(/obj/item/seeds/bananaseed = 3,/obj/item/seeds/berryseed = 3,/obj/item/seeds/carrotseed = 3,/obj/item/seeds/chantermycelium = 3,/obj/item/seeds/chiliseed = 3, /obj/item/seeds/cornseed = 3, /obj/item/seeds/eggplantseed = 3, /obj/item/seeds/potatoseed = 3, /obj/item/seeds/replicapod = 3,/obj/item/seeds/soyaseed = 3, /obj/item/seeds/sunflowerseed = 3,/obj/item/seeds/tomatoseed = 3,/obj/item/seeds/towermycelium = 3,/obj/item/seeds/wheatseed = 3,/obj/item/seeds/appleseed = 3, - /obj/item/seeds/poppyseed = 3,/obj/item/seeds/ambrosiavulgarisseed = 3,/obj/item/seeds/whitebeetseed = 3,/obj/item/seeds/watermelonseed = 3,/obj/item/seeds/limeseed = 3, + /obj/item/seeds/poppyseed = 3,/obj/item/seeds/sugarcaneseed = 3,/obj/item/seeds/ambrosiavulgarisseed = 3,/obj/item/seeds/whitebeetseed = 3,/obj/item/seeds/watermelonseed = 3,/obj/item/seeds/limeseed = 3, /obj/item/seeds/lemonseed = 3,/obj/item/seeds/orangeseed = 3,/obj/item/seeds/grassseed = 3,/obj/item/seeds/cocoapodseed = 3,/obj/item/seeds/plumpmycelium = 2, /obj/item/seeds/cabbageseed = 3,/obj/item/seeds/grapeseed = 3,/obj/item/seeds/pumpkinseed = 3,/obj/item/seeds/cherryseed = 3,/obj/item/seeds/plastiseed = 3,/obj/item/seeds/riceseed = 3) contraband = list(/obj/item/seeds/amanitamycelium = 2,/obj/item/seeds/glowshroom = 2,/obj/item/seeds/libertymycelium = 2,/obj/item/seeds/mtearseed = 2, @@ -800,7 +800,7 @@ /obj/machinery/vending/dinnerware name = "Dinnerware" - desc = "A kitchen and restaurant equipment vendor" + desc = "A kitchen and restaurant equipment vendor." product_ads = "Mm, food stuffs!;Food and food accessories.;Get your plates!;You like forks?;I like forks.;Woo, utensils.;You don't really need these..." icon_state = "dinnerware" products = list(/obj/item/weapon/tray = 8,/obj/item/weapon/kitchen/utensil/fork = 6,/obj/item/weapon/kitchenknife = 3,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass = 8,/obj/item/clothing/suit/chef/classic = 2) @@ -808,7 +808,7 @@ /obj/machinery/vending/sovietsoda name = "BODA" - desc = "Old sweet water vending machine" + desc = "An old sweet water vending machine,how did this end up here?" icon_state = "sovietsoda" product_ads = "For Tsar and Country.;Have you fulfilled your nutrition quota today?;Very nice!;We are simple people, for this is all we eat.;If there is a person, there is a problem. If there is no person, then there is no problem." products = list(/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/soda = 30) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 77807c2ca1..53bf77ce57 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -628,7 +628,7 @@ /obj/mecha/proc/dynattackby(obj/item/weapon/W as obj, mob/user as mob) src.log_message("Attacked by [W]. Attacker - [user]") if(prob(src.deflect_chance)) - user << "\red The [W] bounces off [src.name] armor." + user << "\red \The [W] bounces off [src.name]." src.log_append_to_last("Armor saved.") /* for (var/mob/V in viewers(src)) diff --git a/code/game/objects/closets/walllocker.dm b/code/game/objects/closets/walllocker.dm index abf2288ae7..2f5715288e 100644 --- a/code/game/objects/closets/walllocker.dm +++ b/code/game/objects/closets/walllocker.dm @@ -15,17 +15,17 @@ /obj/structure/closet/walllocker/emerglocker name = "emergency locker" - desc = "A wall mounted locker with emergency supplies" + desc = "A wall mounted locker with emergency supplies." var/list/spawnitems = list(/obj/item/weapon/tank/emergency_oxygen,/obj/item/clothing/mask/breath) var/amount = 2 // spawns each items X times. icon_state = "emerg" /obj/structure/closet/walllocker/emerglocker/toggle(mob/user as mob) src.attack_hand(user) - return + return /obj/structure/closet/walllocker/emerglocker/attackby(obj/item/weapon/W as obj, mob/user as mob) - return + return /obj/structure/closet/walllocker/emerglocker/attack_hand(mob/user as mob) if (istype(user, /mob/living/silicon/ai)) //Added by Strumpetplaya - AI shouldn't be able to diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index d0afa8a576..f2b5e850f4 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -237,6 +237,18 @@ /obj/item/proc/equipped(var/mob/user, var/slot) return +//returns 1 if the item is equipped by a mob, 0 otherwise. +//This might need some error trapping, not sure if get_equipped_items() is safe for non-human mobs. +/obj/item/proc/is_equipped() + if(!ismob(loc)) + return 0 + + var/mob/M = loc + if(src in M.get_equipped_items()) + return 1 + else + return 0 + //the mob M is attempting to equip this item into the slot passed through as 'slot'. Return 1 if it can do this and 0 if it can't. //If you are making custom procs but would like to retain partial or complete functionality of this one, include a 'return ..()' to where you want this to happen. //Set disable_warning to 1 if you wish it to not give you outputs. diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm index 24a999cb69..e0963d08cc 100644 --- a/code/game/objects/items/stacks/tiles/tile_types.dm +++ b/code/game/objects/items/stacks/tiles/tile_types.dm @@ -11,7 +11,7 @@ /obj/item/stack/tile/grass name = "grass tile" singular_name = "grass floor tile" - desc = "A patch of grass like they often use on golf courses" + desc = "A patch of grass like they often use on golf courses." icon_state = "tile_grass" w_class = 3.0 force = 1.0 @@ -28,7 +28,7 @@ /obj/item/stack/tile/wood name = "wood floor tile" singular_name = "wood floor tile" - desc = "an easy to fit wood floor tile" + desc = "An easy to fit wooden floor tile." icon_state = "tile-wood" w_class = 3.0 force = 1.0 @@ -44,7 +44,7 @@ /obj/item/stack/tile/carpet name = "carpet" singular_name = "carpet" - desc = "A piece of carpet. It is the same size as a floor tile" + desc = "A piece of carpet. It is the same size as a normal floor tile!" icon_state = "tile-carpet" w_class = 3.0 force = 1.0 @@ -52,4 +52,4 @@ throw_speed = 5 throw_range = 20 flags = FPRINT | TABLEPASS | CONDUCT - max_amount = 60 + max_amount = 60 diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm index a08d856b68..5ec7f97d6d 100644 --- a/code/game/objects/items/weapons/cigs_lighters.dm +++ b/code/game/objects/items/weapons/cigs_lighters.dm @@ -167,7 +167,12 @@ CIGARETTE PACKETS ARE IN FANCY.DM location.hotspot_expose(700, 5) if(reagents && reagents.total_volume) // check if it has any reagents at all if(iscarbon(loc) && (src == loc:wear_mask)) // if it's in the human/monkey mouth, transfer reagents to the mob + if(istype(loc, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = loc + if(H.species.flags & IS_SYNTHETIC) + return var/mob/living/carbon/C = loc + if(prob(15)) // so it's not an instarape in case of acid reagents.reaction(C, INGEST) reagents.trans_to(C, REAGENTS_METABOLISM) @@ -201,9 +206,9 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/clothing/mask/cigarette/cigar name = "premium cigar" desc = "A brown roll of tobacco and... well, you're not quite sure. This thing's huge!" - icon_state = "cigaroff" - icon_on = "cigaron" - icon_off = "cigaroff" + icon_state = "cigar2off" + icon_on = "cigar2on" + icon_off = "cigar2off" type_butt = /obj/item/weapon/cigbutt/cigarbutt throw_speed = 0.5 item_state = "cigaroff" @@ -219,7 +224,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/clothing/mask/cigarette/cigar/havana name = "premium Havanian cigar" - desc = "A cigar fit for only the best for the best." + desc = "A cigar fit for only the best of the best." icon_state = "cigar2off" icon_on = "cigar2on" icon_off = "cigar2off" @@ -247,10 +252,33 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/clothing/mask/cigarette/cigar/attackby(obj/item/weapon/W as obj, mob/user as mob) - if(istype(W, /obj/item/weapon/match)) - ..() - else - user << "\The [src] straight out REFUSES to be lit by such uncivilized means." + if(istype(W, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/WT = W + if(WT.isOn()) + light("[user] insults [name] by lighting it with [W].") + + else if(istype(W, /obj/item/weapon/lighter/zippo)) + var/obj/item/weapon/lighter/zippo/Z = W + if(Z.lit) + light("With a flick of their wrist, [user] lights their [name] with their [W].") + + else if(istype(W, /obj/item/weapon/lighter)) + var/obj/item/weapon/lighter/L = W + if(L.lit) + light("[user] manages to offend their [name] by lighting it with [W].") + + else if(istype(W, /obj/item/weapon/match)) + var/obj/item/weapon/match/M = W + if(M.lit) + light("[user] lights their [name] with their [W].") + + else if(istype(W, /obj/item/weapon/melee/energy/sword)) + var/obj/item/weapon/melee/energy/sword/S = W + if(S.active) + light("[user] swings their [W], barely missing their nose. They light their [name] in the process.") + + else if(istype(W, /obj/item/device/assembly/igniter)) + light("[user] fiddles with [W], and manages to light their [name] with the power of science.") ///////////////// //SMOKING PIPES// @@ -306,10 +334,28 @@ CIGARETTE PACKETS ARE IN FANCY.DM return /obj/item/clothing/mask/cigarette/pipe/attackby(obj/item/weapon/W as obj, mob/user as mob) - if(istype(W, /obj/item/weapon/match)) - ..() - else - user << "\The [src] straight out REFUSES to be lit by such means." + if(istype(W, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/WT = W + if(WT.isOn())// + light("[user] recklessly lights [name] with [W].") + + else if(istype(W, /obj/item/weapon/lighter/zippo)) + var/obj/item/weapon/lighter/zippo/Z = W + if(Z.lit) + light("With much care, [user] lights their [name] with their [W].") + + else if(istype(W, /obj/item/weapon/lighter)) + var/obj/item/weapon/lighter/L = W + if(L.lit) + light("[user] manages to light their [name] with [W].") + + else if(istype(W, /obj/item/weapon/match)) + var/obj/item/weapon/match/M = W + if(M.lit) + light("[user] lights their [name] with their [W].") + + else if(istype(W, /obj/item/device/assembly/igniter)) + light("[user] fiddles with [W], and manages to light their [name] with the power of science.") /obj/item/clothing/mask/cigarette/pipe/cobpipe name = "corn cob pipe" @@ -423,4 +469,4 @@ CIGARETTE PACKETS ARE IN FANCY.DM if(lit) user.SetLuminosity(user.luminosity-2) SetLuminosity(2) - return + return diff --git a/code/game/objects/items/weapons/manuals.dm b/code/game/objects/items/weapons/manuals.dm index 0f24c403cd..ed51855f21 100644 --- a/code/game/objects/items/weapons/manuals.dm +++ b/code/game/objects/items/weapons/manuals.dm @@ -19,7 +19,7 @@ - + @@ -38,16 +38,18 @@ -

Experienced user's guide

+

Experienced User's Guide

-

Setting up

+

Setting up the accelerator

  1. Wrench all pieces to the floor
  2. @@ -55,7 +57,7 @@
  3. Close all the panels with your screwdriver
-

Use

+

Using the accelerator

  1. Open the control panel
  2. @@ -66,7 +68,8 @@
- "} + + "} /obj/item/weapon/book/manual/supermatter_engine @@ -75,87 +78,109 @@ author = "Waleed Asad" title = "Supermatter Engine User's Guide" - dat = {"Engineering notes on single-stage Supermatter engine,
- -Waleed Asad
+ dat = {" + + + + +
+ Engineering notes on the single-stage supermatter engine,
+ -Waleed Asad

- Station,
- Exodus
+ Station,
+ Exodus

- A word of caution, do not enter the engine room, for any reason, without radiation protection and mesons on. The status of the engine may be unpredictable even when you believe it is .off.. This is an important level of personal protection.

+ A word of caution, do not enter the engine room for any reason without radiation protection and meson scanners on. The status of the engine may be unpredictable even when you believe it is 'off.' This is an important level of personal protection.

- The engine has two basic modes of functionality. He has observed that it is capable of both a safe level of operation and a modified, high output mode.

+ The engine has two basic modes of functionality. It has been observed that it is capable of both a safe level of operation and a modified, high output mode.

-
Notes on starting the basic function mode, dubbed .Heat-Primary Mode..


+

Heat-Primary Mode

+ Notes on starting the basic function mode +
    +
  1. Prepare collector arrays: As is standard, begin by wrenching them down, filling six plasma tanks with a plasma canister, and inserting the tank into the collectors one by one. Finally, initialize each collector.
  2. - 1. Prepare collector arrays. This is done standard to any text on their function by wrenching them down, filling six plasma tanks with a plasma canister, and inserting the tank into the collectors one by one. Finally, initialize each collector.

    +
  3. Prepare gas system: Before introducing any gas into the supermatter engine room, it is important to remember the small, but vital steps to preparing this section. First, set the input gas pump and output gas flow pump to 4500 kPa, or maximum flow. Second, switch the digital switching valve into the 'up' position, so the green light is on north side of the valve, in order to circulate the gas back toward the coolers and collectors.
  4. - 2. Prepare gas system. Before introducing any gas to the Supermatter engine room, it is important to remember the small but vital steps to preparing this section. First, set the input gas pump and output gas flow pump to 4500, or maximum flow. Second, switch the digital switching valve into the .up. position, in order to circulate the gas back toward the coolers and collectors.

    +
  5. Apply N2 gas: Retrieve the two N2 canisters from storage and bring them to the engine room. Attach one of them to the input section of the engine gas system located next to the collectors. Keep it attached until the N2 pressure is low enough to turn the canister light red. Replace it with the second canister to keep N2 pressure at optimal levels.
  6. - 3. Apply N2 gas. Retrieve the two N2 canisters from storage and bring them to the engine room. Attach one of them to the input section of the engine gas system located next to the collectors. Keep it attached until the N2 pressure is low enough to turn the canister light red. Replace it with the second canister to keep N2 pressure at optimal levels.

    +
  7. Open supermatter shielding: This button is located in the engine room, to the left of the engine monitoring room blast doors. At this point, the supermatter chamber is mostly a gas mixture of N2 and is producing no radiation. It is considered 'safe' up until this point. Do not forget radiation shielding and meson scanners.
  8. - 4. Open Supermatter shielding. This button is located on the far right of the engine room. At this point, the Supermatter chamber is mostly a gas mix of N2 and is producing no radiation. It is considered .safe. up until this point. Do not forget radiation shielding and mesons.

    +
  9. Begin primary emitter burst series: Begin by firing four shots into the supermatter using the emitter. It is important to move to this step quickly. The onboard SMES units may not have enough power to run the emitters if left alone too long on-station. This engine can produce enough power on its own to run the entire station, ignoring the SMES units completely, and is wired to do so.
  10. - 5. Begin primary emitter burst series. This means firing a single emitter for its first four shots. It is important to move to this step quickly. The onboard SMES units may not have enough power to run the emitters if left alone too long on-station. This engine can produce enough power on its own to run the entire station, ignoring the SMES units completely, and is wired to do so.

    +
  11. Switch SMES units to primary settings: Maximize input and set the devices to automatically charge, additionally turn their outputs on if they are off unless power is to be saved (Which can be useful in case of later failures).
  12. - 6. Switch SMES units to primary settings. Maximize input and set the devices to automatically charge, additionally turn their outputs on if they are off unless power is to be saved (Which can be useful in case of later failures.)

    +
  13. Begin secondary emitter burst series: Before firing the emitter again, check the power in the line with a multimeter (Do not forget electrical gloves). The engine is running at high efficiency when the value exceeds 200,000 power units.
  14. - 7. Begin secondary emitter burst series. Before firing the emitter again, check the power in the line with a multimeter (Do not forget electrical gloves.) The engine is running at high efficiency when the value exceeds 200,000 power units.

    - - 8. Maintain engine power. When power in the lines gets low, add an additional emitter burst series to bring power to normal levels.


    +
  15. Maintain engine power: When power in the lines get low, add an additional emitter burst series to bring power to normal levels.
  16. +
+

O2-Reaction Mode

+ + The second mode for running the engine uses a gas mixture to produce a reaction within the supermatter. This mode requires the CE's or Atmospheric's help to set up. This is called 'O2-Reaction Mode.'

-
The second mode for running the engine uses a gas mix to produce a reaction within the Supermatter. This mode requires CE or Atmospheric help to setup. This has been dubbed the .O2-Reaction Mode..


+ THIS MODE CAN CAUSE A RUNAWAY REACTION, LEADING TO CATASTROPHIC FAILURE IF NOT MAINTAINED. NEVER FORGET ABOUT THE ENGINE IN THIS MODE.

- THIS MODE CAN CAUSE A RUNAWAY REACTION, LEADING TO CATASTROPHIC FAILURE IF NOT MAINTAINED. NEVER FORGET ABOUT THE ENGINE IN THIS MODE.

+ Additionally, this mode can be used for what is called a 'Cold Start.' If the station has no power in the SMES to run the emitters, using this mode will allow enough power output to run them, and quickly reach an acceptable level of power output.

- Additionally, this mode can be used for what is called a .Cold Start.. If the station has no power in the SMES to run the emitters, using this mode will allow enough power output to run them, and quickly reach an acceptable level of power output.

+
    +
  1. Prepare collector arrays: As is standard, begin by wrenching them down, filling six plasma tanks with a plasma canister, and inserting the tank into the collectors one by one. Finally, initialize each collector.
  2. - 1. Prepare collector arrays. This is done standard to any text on their function by wrenching them down, filling six plasma tanks with a plasma canister, and inserting the tank into the collectors one by one. Finally, initialize each collector.

    +
  3. Prepare gas system: Before introducing any gas into the supermatter engine room, it is important to remember the small, but vital steps to preparing this section. First, set the input gas pump and output gas flow pump to 4500 kPa, or maximum flow. Second, switch the digital switching valve into the 'up' position, so the green light is on north side of the valve, in order to circulate the gas back toward the coolers and collectors.
  4. - 2. Prepare gas system. Before introducing any gas to the Supermatter engine room, it is important to remember the small but vital steps to preparing this section. First, set the input gas pump and output gas flow pump to 4500, or maximum flow. Second, switch the digital switching valve into the .up. position, in order to circulate the gas back toward the coolers and collectors.

    +
  5. Modify the engine room filters: Unlike the Heat-Primary Mode, it is important to change the filters attached to the gas system to stop filtering O2, and start filtering carbon molecules. O2-Reaction Mode produces far more plasma than Heat-Primary, therefore filtering it off is essential.
  6. - 3. Modify the engine room filters. Unlike the Heat-Primary Mode, it is important to change the filters attached to the gas system to stop filtering O2, and start filtering Carbon Molecules. O2-Reaction Mode produces far more plasma than Heat-Primary, therefor filtering it off is essential.

    +
  7. Switch SMES units to primary settings: Maximize input and set the devices to automatically charge, additionally turn their outputs on if they are off unless power is to be saved (Which can be useful in case of later failures). If you check the power in the system lines at this point, you will find that it is constantly going up. Indeed, with just the addition of O2 to the supermatter, it will begin outputting power.
  8. - 4. Switch SMES units to primary settings. Maximize input and set the devices to automatically charge, additionally turn their outputs on if they are off unless power is to be saved (Which can be useful in case of later failures.) If you check the power in the system lines at this point you will find that it is constantly going up. Indeed, with just the addition of O2 to the Supermatter, it will begin outputting power.

    +
  9. Begin primary emitter burst series: Begin by firing four shots into the supermatter using the emitter. Do not over power the supermatter. The reaction is self sustaining and propagating. As long as O2 is in the chamber, it will continue outputting MORE power.
  10. - 5. Begin primary emitter burst series. Fire a single emitter for a series of four pulses, or a single series, and turn it off. Do not over power the Supermatter. The reaction is self sustaining and propagating. As long as O2 is in the chamber, it will continue outputting MORE power.

    +
  11. Maintain follow up operations: Remember to check the temperature of the core gas and switch to the Heat-Primary function, or vent the core room when problems begin if required.
  12. +

- 6. Maintain follow up operations. Remember to check the temp of the core gas and switch to the Heat-Primary function, or vent the core room when problems begin if required.

+

Notes on Supermatter Reaction Function and Drawbacks

- Notes on Supermatter Reaction Function and Drawbacks-

+ After several hours of observation, an interesting phenomenon was witnessed. The supermatter undergoes a constant, self-sustaining reaction when given an extremely high O2 concentration. Anything about 80% or higher typically will cause this reaction. The supermatter will continue to react whenever this gas mixture is in the same room as the supermatter.

- After several hours of observation an interesting phenomenon was witnessed. The Supermatter undergoes a constant self-sustaining reaction when given an extremely high O2 concentration. Anything about 80% or higher typically will cause this reaction. The Supermatter will continue to react whenever this gas mix is in the same room as the Supermatter.

+ To understand why O2-Reaction mode is dangerous, the core principle of the supermatter must be understood. The supermatter emits three things when 'not safe,' that is any time it is giving off power. These things are:
- To understand why O2-Reaction mode is dangerous, the core principle of the Supermatter must be understood. The Supermatter emits three things when .not safe,. that is any time it is giving off power. These things are:

+
- *Radiation (which is converted into power by the collectors,)
- *Heat (which is removed via the gas exchange system and coolers,)
- *External gas (in the form of plasma and O2.)
+ When in Heat-Primary mode, far more heat and plasma are produced than radiation. In O2-Reaction mode, very little heat and only moderate amounts of plasma are produced, however HUGE amounts of energy leaving the supermatter is in the form of radiation.

- When in Heat-Primary mode, far more heat and plasma are produced than radiation. In O2-Reaction mode, very little heat and only moderate amounts of plasma are produced, however HUGE amounts of energy leaving the Supermatter is in the form of radiation.

+ The O2-Reaction engine mode has a single drawback which has been eluded to more than once so far and that is very simple. The engine room will continue to grow hotter as the constant reaction continues. Eventually, there will be what is called a 'critical gas mixture.' This is the point at which the constant adding of plasma to the mixture of air around the supermatter changes the gas concentration to below the tolerance. When this happens, two things occur. First, the supermatter switches to its primary mode of operation wherein huge amounts of heat are produced by the engine rather than low amounts with high power output. Second, an uncontrollable increase in heat within the supermatter chamber will occur. This will lead to a spark-up, igniting the plasma in the supermatter chamber, wildly increasing both pressure and temperature.

- The O2-Reaction engine mode has a single drawback which has been eluded to more than once so far and that is very simple. The engine room will continue to grow hotter as the constant reaction continues. Eventually, there will be what he calls the .critical gas mix.. This is the point at which the constant adding of plasma to the mix of air around the Supermatter changes the gas concentration to below the tolerance. When this happens, two things occur. First, the Supermatter switches to its primary mode of operation where in huge amounts of heat are produced by the engine rather than low amounts with high power output. Second, an uncontrollable increase in heat within the Supermatter chamber will occur. This will lead to a spark-up, igniting the plasma in the Supermatter chamber, wildly increasing both pressure and temperature.

- - While the O2-Reaction mode is dangerous, it does produce heavy amounts of energy. Consider using this mode only in short amounts to fill the SMES, and switch back later in the shift to keep things flowing normally.

+ While the O2-Reaction mode is dangerous, it does produce heavy amounts of energy. Consider using this mode only in short amounts to fill the SMES, and switch back later in the shift to keep things flowing normally.

- Notes on Supermatter Containment and Emergency Procedures-

+

Notes on Supermatter Containment and Emergency Procedures

- While a constant vigil on the Supermatter is not required, regular checkups are important. Verify the temp of gas leaving the Supermatter chamber for unsafe levels, and ensure that the plasma in the chamber is at a safe concentration. Of course, also make sure the chamber is not on fire. A fire in the core chamber is very difficult to put out. As any Toxin scientist can tell you, even low amounts of plasma can burn at very high temperatures. This burning creates a huge increase in pressure and more importantly, temperature of the crystal itself.

+ While a constant vigil on the supermatter is not required, regular checkups are important. Check the temperature of gas leaving the supermatter chamber for unsafe levels and ensure that the plasma in the chamber is at a safe concentration. Of course, also make sure the chamber is not on fire. A fire in the core chamber is very difficult to put out. As any toxin scientist can tell you, even low amounts of plasma can burn at very high temperatures. This burning creates a huge increase in pressure and more importantly, temperature of the crystal itself.

- The Supermatter is strong, but not invincible. When the Supermatter is heated too much, its crystal structure will attempt to liquify. The change in atomic structure of the Supermatter leads to a single reaction, a massive explosion. The computer chip attached to the Supermatter core will warn the station when stability is threatened. It will then offer a second warning, when things have become dangerously close to total destruction of the core.

+ The supermatter is strong, but not invincible. When the supermatter is heated too much, its crystal structure will attempt to liquefy. The change in atomic structure of the supermatter leads to a single reaction, a massive explosion. The computer chip attached to the supermatter core will warn the station when stability is threatened. It will then offer a second warning, when things have become dangerously close to total destruction of the core.

- Located both within the CE office and engine room is the vent control button. This button allows the Core Vent Controls to be accessed, venting the room to space. Remember however, that this process takes time. If a fire is raging, and the pressure is higher than fathomable, it will take a great deal of time to vent the room. Also located in the CE.s office is the emergency core eject button. A new core can be ordered from cargo. It is often not worth the lives of the crew to hold on to it, not to mention the structural damage. However, if by some mistake the Supermatter is pushed off or removed from the mass ejector it sits on, manual reposition will be required. Which is very dangerous and often leads to death.

+ Located both within the CE office and engine room is the engine ventilatory control button. This button allows the core vent controls to be accessed, venting the room to space. Remember however, that this process takes time. If a fire is raging, and the pressure is higher than fathomable, it will take a great deal of time to vent the room. Also located in the CE's office is the emergency core eject button. A new core can be ordered from cargo. It is often not worth the lives of the crew to hold on to it, not to mention the structural damage. However, if by some mistake the supermatter is pushed off or removed from the mass driver it sits on, manual reposition will be required. Which is very dangerous and often leads to death.

- The Supermatter is extremely dangerous. More dangerous than people give it credit for. It can destroy you in an instant, without hesitation, reducing you to a pile of dust. When working closely with Supermatter it is.. suggested to get a genetic backup and do not wear any items of value to you. The Supermatter core can be pulled if grabbed properly by the base, but pushing is not possible.


+ The supermatter is extremely dangerous. More dangerous than people give it credit for. It can destroy you in an instant, without hesitation, reducing you to a pile of dust. When working closely with supermatter, it is suggested to get a genetic backup and do not wear any items of value to you. The supermatter core can be pulled if grabbed properly by the base, but pushing is not possible.

- In Closing-

+

In Closing

- Remember that the Supermatter is dangerous, and the core is dangerous still. Venting the core room is always an option if you are even remotely worried, utilizing Atmospherics to properly ready the room once more for core function. It is always a good idea to check up regularly on the temperature of gas leaving the chamber, as well as the power in the system lines. Lastly, once again remember, never touch the Supermatter with anything. Ever.

+ Remember that the supermatter is dangerous, and the core is dangerous still. Venting the core room is always an option if you are even remotely worried, utilizing Atmospherics to properly ready the room once more for core function. It is always a good idea to check up regularly on the temperature of gas leaving the chamber, as well as the power in the system lines. Lastly, once again remember, never touch the supermatter with anything. Ever.

- -Waleed Asad, Senior Engine Technician."} + -Waleed Asad, Senior Engine Technician + + "} /obj/item/weapon/book/manual/engineering_hacking name = "Hacking" @@ -189,48 +214,51 @@ h1 {font-size: 18px; margin: 15px 0px 5px;} h2 {font-size: 15px; margin: 15px 0px 5px;} li {margin: 2px 0px 2px 15px;} - ul {list-style: none; margin: 5px; padding: 0px;} + ul {margin: 5px; padding: 0px;} ol {margin: 5px; padding: 0px 15px;} + body {font-size: 13px; font-family: Verdana;} -

Singularity Safety in Special Circumstances

+

Singularity Safety in Special Circumstances

-

Power outage

+

Power outage

- A power problem has made the entire station loose power? Could be station-wide wiring problems or syndicate power sinks. In any case follow these steps: -

- Step one: PANIC!
- Step two: Get your ass over to engineering! QUICKLY!!!
- Step three: Get to the Area Power Controller which controls the power to the emitters.
- Step four: Swipe it with your ID card - if it doesn't unlock, continue with step 15.
- Step five: Open the console and disengage the cover lock.
- Step six: Pry open the APC with a Crowbar.
- Step seven: Take out the empty power cell.
- Step eight: Put in the new, full power cell - if you don't have one, continue with step 15.
- Step nine: Quickly put on a Radiation suit.
- Step ten: Check if the singularity field generators withstood the down-time - if they didn't, continue with step 15.
- Step eleven: Since disaster was averted you now have to ensure it doesn't repeat. If it was a powersink which caused it and if the engineering apc is wired to the same powernet, - which the powersink is on, you have to remove the piece of wire which links the apc to the powernet. If it wasn't a powersink which caused it, then skip to step 14.
- Step twelve: Grab your crowbar and pry away the tile closest to the APC.
- Step thirteen: Use the wirecutters to cut the wire which is conecting the grid to the terminal.
- Step fourteen: Go to the bar and tell the guys how you saved them all. Stop reading this guide here.
- Step fifteen: GET THE FUCK OUT OF THERE!!!
-

+ A power problem has made the entire station lose power? Could be station-wide wiring problems or syndicate power sinks. In any case follow these steps: + +
    +
  1. PANIC!
  2. +
  3. Get your ass over to engineering! QUICKLY!!!
  4. +
  5. Get to the Area Power Controller which controls the power to the emitters.
  6. +
  7. Swipe it with your ID card - if it doesn't unlock, continue with step 15.
  8. +
  9. Open the console and disengage the cover lock.
  10. +
  11. Pry open the APC with a Crowbar.
  12. +
  13. Take out the empty power cell.
  14. +
  15. Put in the new, full power cell - if you don't have one, continue with step 15.
  16. +
  17. Quickly put on a Radiation suit.
  18. +
  19. Check if the singularity field generators withstood the down-time - if they didn't, continue with step 15.
  20. +
  21. Since disaster was averted you now have to ensure it doesn't repeat. If it was a powersink which caused it and if the engineering APC is wired to the same powernet, which the powersink is on, you have to remove the piece of wire which links the APC to the powernet. If it wasn't a powersink which caused it, then skip to step 14.
  22. +
  23. Grab your crowbar and pry away the tile closest to the APC.
  24. +
  25. Use the wirecutters to cut the wire which is connecting the grid to the terminal.
  26. +
  27. Go to the bar and tell the guys how you saved them all. Stop reading this guide here.
  28. +
  29. GET THE FUCK OUT OF THERE!!!
  30. +
-

Shields get damaged

+

Shields get damaged

- Step one: GET THE FUCK OUT OF THERE!!! FORGET THE WOMEN AND CHILDREN, SAVE YOURSELF!!!
+
    +
  1. GET THE FUCK OUT OF THERE!!! FORGET THE WOMEN AND CHILDREN, SAVE YOURSELF!!!
  2. +
- - "} + + "} /obj/item/weapon/book/manual/hydroponics_pod_people - name = "The Diona Harvest - From seed to market" + name = "The Diona Harvest - From Seed to Market" icon_state ="bookHydroponicsPodPeople" author = "Farmer John" - title = "The Diona Harvest - From seed to market" + title = "The Diona Harvest - From Seed to Market" dat = {" @@ -238,20 +266,25 @@ h1 {font-size: 18px; margin: 15px 0px 5px;} h2 {font-size: 15px; margin: 15px 0px 5px;} li {margin: 2px 0px 2px 15px;} - ul {list-style: none; margin: 5px; padding: 0px;} + ul {margin: 5px; padding: 0px;} ol {margin: 5px; padding: 0px 15px;} + body {font-size: 13px; font-family: Verdana;} -

Growing Diona

+

Growing a Diona

- Growing Diona is easy! + Growing a Diona is easy!

    -
  1. Plant the seeds.
  2. -
  3. Tend to the plants water and nutrition levels until it is time to harvest the Diona.
  4. +
  5. Take a syringe of blood from the body you wish to turn into a Diona.
  6. +
  7. Inject 5 units of blood into the pack of dionaea-replicant seeds.
  8. +
  9. Plant the seeds.
  10. +
  11. Tend to the plants water and nutrition levels until it is time to harvest the Diona.

+ Note that for a successful harvest, the body from which the blood was taken from must be dead BEFORE harvesting the pod, however the pod can be growing while they are still alive. Otherwise, the soul would not be able to migrate to the new Diona body.

+ It really is that easy! Good luck! @@ -260,27 +293,29 @@ /obj/item/weapon/book/manual/medical_cloning - name = "Cloning techniques of the 26th century" + name = "Cloning Techniques of the 26th Century" icon_state ="bookCloning" author = "Medical Journal, volume 3" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned - title = "Cloning techniques of the 26th century" + title = "Cloning Techniques of the 26th Century" dat = {" -

How to Clone People

- So there’s 50 dead people lying on the floor, chairs are spinning like no tomorrow and you haven’t the foggiest idea of what to do? Not to worry! - This guide is intended to teach you how to clone people and how to do it right, in a simple step-by-step process! If at any point of the guide you have a mental meltdown, - genetics probably isn’t for you and you should get a job-change as soon as possible before you’re sued for malpractice. +

How to Clone People

+ So there are 50 dead people lying on the floor, chairs are spinning like no tomorrow and you haven't the foggiest idea of what to do? Not to worry! + This guide is intended to teach you how to clone people and how to do it right, in a simple, step-by-step process! If at any point of the guide you have a mental meltdown, + genetics probably isn't for you and you should get a job-change as soon as possible before you're sued for malpractice.
  1. Acquire body
  2. @@ -288,7 +323,7 @@
  3. Put body in cloning machine
  4. Scan body
  5. Clone body
  6. -
  7. Get clean Structurel Enzymes for the body
  8. +
  9. Get clean Structural Enzymes for the body
  10. Put body in morgue
  11. Await cloned body
  12. Cryo and use the clean SE injector
  13. @@ -296,54 +331,54 @@
  14. Send person on their way
-

Step 1: Acquire body

+

Step 1: Acquire body

This is pretty much vital for the process because without a body, you cannot clone it. Usually, bodies will be brought to you, so you do not need to worry so much about this step. If you already have a body, great! Move on to the next step. -

Step 2: Strip body

- The cloning machine does not like abiotic items. What this means is you can’t clone anyone if they’re wearing clothes, so take all of it off. If it’s just one person, it’s courteous to put their possessions in the closet. - If you have about seven people awaiting cloning, just leave the piles where they are, but don’t mix them around and for God’s sake don’t let people in to steal them. +

Step 2: Strip body

+ The cloning machine does not like abiotic items. What this means is you can't clone anyone if they're wearing clothes or holding things, so take all of it off. If it's just one person, it's courteous to put their possessions in the closet. + If you have about seven people awaiting cloning, just leave the piles where they are, but don't mix them around and for God's sake don't let people in to steal them. -

Step 3: Put body in cloning machine

+

Step 3: Put body in cloning machine

Grab the body and then put it inside the DNA modifier. If you cannot do this, then you messed up at Step 2. Go back and check you took EVERYTHING off - a commonly missed item is their headset. -

Step 4: Scan body

- Go onto the computer and scan the body by pressing ‘Scan - ’. If you’re successful, they will be added to the records (note that this can be done at any time, even with living people, - so that they can be cloned without a body in the event that they are lying dead on port solars and didn‘t turn on their suit sensors)! - If not, and it says “Error: Mental interface failure.”, then they have left their bodily confines and are one with the spirits. If this happens, just shout at them to get back in their body, - click ‘Refresh‘ and try scanning them again. If there’s no success, threaten them with gibbing. - Still no success? Skip over to Step 7 and don‘t continue after it, as you have an unresponsive body and it cannot be cloned. - If you got “Error: Unable to locate valid genetic data.“, you are trying to clone a monkey - start over. +

Step 4: Scan body

+ Go onto the computer and scan the body by pressing 'Scan - <Subject Name Here>.' If you're successful, they will be added to the records (note that this can be done at any time, even with living people, + so that they can be cloned without a body in the event that they are lying dead on port solars and didn't turn on their suit sensors)! + If not, and it says "Error: Mental interface failure.", then they have left their bodily confines and are one with the spirits. If this happens, just shout at them to get back in their body, + click 'Refresh' and try scanning them again. If there's no success, threaten them with gibbing. + Still no success? Skip over to Step 7 and don't continue after it, as you have an unresponsive body and it cannot be cloned. + If you got "Error: Unable to locate valid genetic data.", you are trying to clone a monkey - start over. -

Step 5: Clone body

- Now that the body has a record, click ’View Records’, click the subject’s name, and then click ‘Clone’ to start the cloning process. Congratulations! You’re halfway there. - Remember not to ‘Eject’ the cloning pod as this will kill the developing clone and you’ll have to start the process again. +

Step 5: Clone body

+ Now that the body has a record, click 'View Records,' click the subject's name, and then click 'Clone' to start the cloning process. Congratulations! You're halfway there. + Remember not to 'Eject' the cloning pod as this will kill the developing clone and you'll have to start the process again. -

Step 6: Get clean SEs for body

+

Step 6: Get clean SEs for body

Cloning is a finicky and unreliable process. Whilst it will most certainly bring someone back from the dead, they can have any number of nasty disabilities given to them during the cloning process! - For this reason, you need to prepare a clean, defect-free Structural Enzyme (SE) injection for when they’re done. If you’re a competent Geneticist, you will already have one ready on your working computer. + For this reason, you need to prepare a clean, defect-free Structural Enzyme (SE) injection for when they're done. If you're a competent Geneticist, you will already have one ready on your working computer. If, for any reason, you do not, then eject the body from the DNA modifier (NOT THE CLONING POD) and take it next door to the Genetics research room. Put the body in one of those DNA modifiers and then go onto the console. - Go into View/Edit/Transfer Buffer, find an open slot and click “SE“ to save it. Then click ‘Injector’ to get the SEs in syringe form. Put this in your pocket or something for when the body is done. + Go into View/Edit/Transfer Buffer, find an open slot and click "SE" to save it. Then click 'Injector' to get the SEs in syringe form. Put this in your pocket or something for when the body is done. -

Step 7: Put body in morgue

+

Step 7: Put body in morgue

Now that the cloning process has been initiated and you have some clean Structural Enzymes, you no longer need the body! Drag it to the morgue and tell the Chef over the radio that they have some fresh meat waiting for them in there. - To put a body in a morgue bed, simply open the tray, grab the body, put it on the open tray, then close the tray again. Use one of the nearby pens to label the bed “CHEF MEAT” in order to avoid confusion. + To put a body in a morgue bed, simply open the tray, grab the body, put it on the open tray, then close the tray again. Use one of the nearby pens to label the bed "CHEF MEAT" in order to avoid confusion. -

Step 8: Await cloned body

- Now go back to the lab and wait for your patient to be cloned. It won’t be long now, I promise. +

Step 8: Await cloned body

+ Now go back to the lab and wait for your patient to be cloned. It won't be long now, I promise. -

Step 9: Cyo and clean clean SE injector on person

- Has your body been cloned yet? Great! As soon as the guy pops out, grab them and stick them in cryo. Clonexadone and Cryoxadone help rebuild their genetic material. Then grab your cleanr SE injector and jab it in them. Once you’ve injected them, +

Step 9: Cryo and clean SE injector on person

+ Has your body been cloned yet? Great! As soon as the guy pops out, grab them and stick them in cryo. Clonexadone and Cryoxadone help rebuild their genetic material. Then grab your clean SE injector and jab it in them. Once you've injected them, they now have clean Structural Enzymes and their defects, if any, will disappear in a short while. -

Step 10: Give person clothes back

- Obviously the person will be naked after they have been cloned. Provided you weren’t an irresponsible little shit, you should have protected their possessions from thieves and should be able to give them back to the patient. - No matter how cruel you are, it’s simply against protocol to force your patients to walk outside naked. +

Step 10: Give person clothes back

+ Obviously the person will be naked after they have been cloned. Provided you weren't an irresponsible little shit, you should have protected their possessions from thieves and should be able to give them back to the patient. + No matter how cruel you are, it's simply against protocol to force your patients to walk outside naked. -

Step 11: Send person on their way

- Give the patient one last check-over - make sure they don’t still have any defects and that they have all their possessions. Ask them how they died, if they know, so that you can report any foul play over the radio. - Once you’re done, your patient is ready to go back to work! Chances are they do not have Medbay access, so you should let them out of Genetics and the Medbay main entrance. +

Step 11: Send person on their way

+ Give the patient one last check-over - make sure they don't still have any defects and that they have all their possessions. Ask them how they died, if they know, so that you can report any foul play over the radio. + Once you're done, your patient is ready to go back to work! Chances are they do not have Medbay access, so you should let them out of Genetics and the Medbay main entrance. -

If you’ve gotten this far, congratulations! You have mastered the art of cloning. Now, the real problem is how to resurrect yourself after that traitor had his way with you for cloning his target. +

If you've gotten this far, congratulations! You have mastered the art of cloning. Now, the real problem is how to resurrect yourself after that traitor had his way with you for cloning his target. @@ -362,17 +397,20 @@ h1 {font-size: 18px; margin: 15px 0px 5px;} h2 {font-size: 15px; margin: 15px 0px 5px;} li {margin: 2px 0px 2px 15px;} - ul {list-style: none; margin: 5px; padding: 0px;} + ul {margin: 5px; padding: 0px;} + ul.a {list-style-type: none; margin: 5px; padding: 0px;} ol {margin: 5px; padding: 0px 15px;} + body {font-size: 13px; font-family: Verdana;}

+
Weyland-Yutani - Building Better Worlds

Autonomous Power Loader Unit \"Ripley\"

Specifications:

-