From 17b01fac195db65fe8841a472863fd508e925976 Mon Sep 17 00:00:00 2001 From: "morikou@gmail.com" Date: Thu, 24 Feb 2011 06:27:45 +0000 Subject: [PATCH] Wakka Wakka update - PACMAN-type portable power generator now producable through the R&D system. You insert solid plasma coins (minted from solid plasma which you get from miners) into the generator and when you turn it on, it produces power (~5000 for a baseline model). Useful for powering small powernets/rooms. More powerful generators will be added eventually. To unlock the design, you need Plasma Technology 2 and Power Storage 3. To construct, it's 5 metal (Machine Frame) => cable => PACMAN board => 1 matter bin, 1 micro laser, 2 pieces of cable, and a capacitor => Screwdriver to finish. Screwdriver => Crowbar to start the deconstruction process. If not 100% reliable, the device will break down eventually. - R&D console disk commands now actually work. Derp. - In the R&D console settings menu, you can reset the console's R&D database to the default data. Make sure to backup data onto disk if you don't want to lose it! - Instruction manuals in mech_construction.dm and mining.dm moved to code\game\objects\items\weapons\manuals.dm to make them easier to find. Condensed down some of the redundant code. - R&Dinstruction manual added to the R&D lab. - Fixed a pair of Destructive Analyzer bugs. If an object contains a mob (such as an intellicard with an AI in it), it runs the death routine for that mob. - Protolathe now accepts uranium. GO FORTH, COMRADES. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1114 316c924e-a436-60f5-8080-3fe189b3f50e --- code/WorkInProgress/mining.dm | 698 ------------------ code/game/machinery/constructable_frame.dm | 26 +- code/game/mecha/mecha_construction.dm | 69 -- code/game/objects/items/weapons/manuals.dm | 802 +++++++++++++++++++++ code/game/research/designs.dm | 10 + code/game/research/protolathe.dm | 5 +- code/game/research/rdconsole.dm | 36 +- code/modules/power/port_gen.dm | 137 +++- icons/obj/library.dmi | Bin 16276 -> 10697 bytes maps/tgstation.2.0.3.dmm | 4 +- tgstation.dme | 1 + 11 files changed, 1010 insertions(+), 778 deletions(-) create mode 100644 code/game/objects/items/weapons/manuals.dm diff --git a/code/WorkInProgress/mining.dm b/code/WorkInProgress/mining.dm index 36167f10fe2..7ce68870fb3 100644 --- a/code/WorkInProgress/mining.dm +++ b/code/WorkInProgress/mining.dm @@ -230,704 +230,6 @@ proc/check_craftlathe_recipe(var/list/param_recipe) return -/*********************MANUALS (BOOKS)***********************/ - -/obj/item/weapon/book/manual/engineering_construction - name = "Station Repairs and Construction" - icon = 'library.dmi' - icon_state ="bookEngineering" - due_date = 0 // Game time in 1/10th seconds - author = "Engineering Encyclopedia" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned - unique = 1 // 0 - Normal book, 1 - Should not be treated as normal book, unable to be copied, unable to be modified - -//big pile of shit below. - - dat = {" - - - - -

Construction

- -

Advanced Materials

- -

Rods

- - Use metal and click "2x metal rods" (makes two sets of rods) - -

Floor tiles

- - Use metal and click "4x floor tiles" (makes 4 floor tiles) - - -

Reinforced Glass

- - Use rods on glass - -

Reinforced Metal

- - Click the metal in your hand to open the construction panel, -
Choose 'Reinforced sheets' form the list - -

Floor

- - Use the rods on space -
Use the floor tile on space with lattice -
Use another floor tile on the plating -
Alternate method - Click on
floor tile in hand while on top of an area of space. No need for rods with this method. - -

Walls

- - Click the metal in your hand to open the construction panel, -
Choose 'Build wall girders' form the list -
Use the remaining 2 sheets of metal on the girders - -

Reinforced walls

- - Click the metal in your hand to open the construction panel, -
Choose 'Build wall girders' form the list -
Use the reinforced metal on the girders to reinforce them -
Use the last reinforced metal sheet reinforced girders to finish the wall - - -

Grille

- - Stand where you wish the grille to be placed -
Click on the stack of 2 rods with the hand you have them in - -

Glass panels

- -

One directional

- - Click the glass pane -
Click the "one direct" button -
Right-click the new pane and rotate it -
Use the screwdriver to fasten it down - -

Full

- - Click the glass pane -
Click the "full" button -
Use the screwdriver to fasten it down - -

Reinforced glass panels

- -

One directional

- - Click the reinforced glass pane -
Click the "one direct" button -
Right-click the new pane and rotate it -
Screwdriver (Unsecure pane.) -
Crowbar (Pane out of frame.) -
Screwdriver (Secure frame to floor.) -
Crowbar (Pop pane in.) -
Screwdriver (Secure pane.) - -

Full

- - Click the reinforced glass pane -
Click the "full" button -
Screwdriver -
Crowbar -
Screwdriver - -

Hidden Door

- - Click the metal in your hand to open the construction panel, -
Choose 'Build wall girders' form the list -
Use crowbar on girders and wait a few seconds for the girders to dislodge. -
Use the remaining 2 sheets of metal on the girders - - To turn a wall into a hidden door, follow the deconstruction guide for the wall type until the final wrenching, and instead proceed from the "Use crowbar on girders" line above. - -

Reinforced

- - Click the metal in your hand to open the construction panel, -
Choose 'Build wall girders' form the list -
Use crowbar on girders and wait a few seconds for the girders to dislodge. -
Use the reinforced metal on the dislodged girders twice to finish it - -

APC

- - Use the metal and make an APC Assembly -
Use the assembly on the wall you want the APC on. -
Fit it with the wire coil. -
Fit it with the Power Control Module. -
Screwdriver the electronics into place. -
Add the Power Cell. -
Crowbar shut. It starts ID locked, with the cover engaged and the main switch turned off. - -

Airlock

- - Use the metal and make an Airlock Assembly -
Wrench it inplace -
Add reinforced glass (Only if you wish to make a glass airlock) -
Add wires -
Unlock the airlock electronic board with an ID -
Use the airlock electronic board and set the access level -
Add the airlock electronic board to the airlock frame. -
Screwdriver to finish - -

Computers

- - Use the metal to open the construction panel -
Choose Computer frame -
Wrench it inplace -
Insert Circuitboard -
Screwdriver -
Wires -
glass -
Screwdriver to finish - -

AI Core

- - Build Frame from 4 reinforced sheets -
Wrench into place -
Add Circuit board -
Screwdriver -
Add wires -
Add brain (only if you want a NEW AI) -
Add reinforced glass -
Screwdriver - -

Deconstruction

- -

Walls

- - Wdlder -
Wrench - -

Reinforced walls

- - Wirecutters. -
Screwdriver. -
Welder. -
Crowbar. -
Wrench. -
Welder. -
Crowbar. -
Screwdriver. -
Wirecutters. -
Wrench. - -

Grille

- - Wirecutters -
Welder (to destroy it) -
or -
screwdriver (to unfasten it) - -

Glass panels

- - The first method destroys it, the second gives a pullable pane of glass. - -
Welding glass shards creates a pane of glass. - -

Reinforced glass panels

- - Screwdriver to loosen the pane. -
Crowbar to pop it out. -
Screwdriver to unscrew the frame. -
Crowbar to pop the pane in. -
Screwdriver to secure it. - - Hitting the pane repeatedly with a blunt item will smash it into one set of metal rods and a glass shard. - -

Hidden Door (Regular or Reinforced)

- - Screwdriver -
Welder -
Wrench - -

APC

- - Swipe Card to unlock APC. -
Remove Power Cell. -
Screwdriver to unsecure electronics. -
Wirecutters to remove cables. -
Crowbar to remove Power Control Board. -
Welder to remover from wall. -
Wrenching the frame that is now detached from the wall de-constructs it to two metal sheets. - -

Airlock

- - Screwdriver the door. -
Use multitool and wirecutters to disable everything except the doorbolts as detailed in books on hacking. Doorbolts must be up for this to work. -
Weld the door shut. -
Crowbar the electronics out. -
Wirecut the wires out. -
Unsecure it with a wrench. -
Weld it to deconstruct to metal plates. - - Cannot be done to emagged airlock. RCD deconstruction must be used for that. - -

Computers

- - Screwdriver. -
Crowbar. -
Wirecutters. -
Screwdriver. -
Wrench. -
Welder. "} - -/obj/item/weapon/book/manual/engineering_particle_accelerator - name = "Particle Accelerator User's Guide" - icon = 'library.dmi' - icon_state ="bookParticleAccelerator" - due_date = 0 // Game time in 1/10th seconds - author = "Engineering Encyclopedia" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned - unique = 1 // 0 - Normal book, 1 - Should not be treated as normal book, unable to be copied, unable to be modified - -//big pile of shit below. - - dat = {" - - - - - -

Experienced user's guide

- -

Setting up

- -
    -
  1. Wrench all pieces to the floor
  2. -
  3. Add wires to all the pieces
  4. -
  5. Close all the panels with your screwdriver
  6. -
- -

Use

- -
    -
  1. Open the control panel
  2. -
  3. Set the speed to 2
  4. -
  5. Start firing at the singularity generator
  6. -
  7. When the singularity reaches a large enough size so it starts moving on it's own set the speed down to 0, but don't shut it off
  8. -
  9. Remember to wear a radiation suit when working with this machine... we did tell you that at the start, right?
  10. -
- - - "} - - -/obj/item/weapon/book/manual/engineering_hacking - name = "Hacking" - icon = 'library.dmi' - icon_state ="bookHacking" - due_date = 0 // Game time in 1/10th seconds - author = "Engineering Encyclopedia" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned - unique = 1 // 0 - Normal book, 1 - Should not be treated as normal book, unable to be copied, unable to be modified - -//big pile of shit below. - - dat = {" - - - - -

What you'll need

- - -

Important Hackables

- -

Airlocks

- Both internal and external access airlocks are hackable, despite the fact that external ones look a lot like firelocks, which are not hackable. Wires are randomized at the start of each round, but are standardized throughout the station, e.g., every orange wire might toggle the bolts. This is probably where you'll be doing the most of your hacking. Remember, cutting power to the door will stop everything else from working. -
    -
  1. Screwdriver in hand, click on the airlock to open the panel and expose the wiring
  2. -
  3. With multitool, wirecutters, or an empty hand, click on the airlock to access the wiring.
  4. -
  5. Fiddle with the wires by pulsing to test each one and cutting what you need to.
  6. - -
  7. Screwdriver the door again to shut the panel. Otherwise, trying to open the door will always give you the wiring popup.
  8. -
- -

Airlock Strategies

- - -

APCs

- Used to control power to a certain room. Nice to know when a rogue AI or douchebag engineers keep turning off your power. All APC breakers can be accessed via Power Monitoring Computers regardless of the lock status, so hope that whoever's fucking with the power isn't paying attention -
    -
  1. Screwdriver in hand, click on APC to open the panel and expose the wiring
  2. -
  3. Click with an empty hand to access the wiring
  4. -
  5. Fiddle with the wires by pulsing to test each one and cutting what you need to.
  6. - -
  7. Screwdriver it back up to toggle lighting, equipment, and atmospherics as you see fit (unless you've killed the power)
  8. -
- -

Autolathe

-
    -
  1. Click on the autolathe to open it
  2. -
  3. Click on the autolathe with an empty hand to access the wiring, then get a tool in your hand
  4. -
  5. The window is glitched and won't show what wires are cut, so you better track what wires you modify. There are three important wires, which are randomized. Cutting them toggles their light permanently, pulsing does so temporarily(30 secs or something). Red light is power, green light is electrocution and blue is hacked options.
  6. -
  7. Have fun accessing some new options
  8. - -
- -

Air alarm/Fire alarm/Cameras

- Use wirecutters to enable/disable. Disabled air alarms will show no lights, fire alarms will not automatically trigger firelocks, and cameras will show a red light and prevent anyone from viewing the room through a console (including AI). - - -

MULE

- No better way to get away from it all with a joyride on a MULE! And run over some people with it too. -
    -
  1. Unlock the controls with a Quartermaster's ID.
  2. -
  3. Unscrew the maintenance panel with the screwdriver.
  4. -
  5. Pulse various wires with a multitool. Pay attention to the reaction the MULE gives.
  6. -
      -
    1. Cutting the wire that causes the loading bay to thunk will remove cargo restrictions.
    2. -
    3. Cutting the wire that leads to the safety light will awaken its thirst for blood and cause it to run over people in its path. DO NOT DO THIS UNLESS YOU ARE A TRAITOR OR LOVE GETTING THE SHIT ROBUSTED OUT OF YOU.
    4. -
    5. Cutting one of the wires that makes the motor whine will safely speed up the MULE. Cutting both will immobilize it.
    6. -
    -
  7. Screw the panel back on.
  8. -
- -

Minor Hackables

- I haven't a clue why you'd ever want to hack any of these things, but you can! - -

Radio/Signaler

-
    -
  1. Screwdriver in hand, click on the offending radio so it can be modified or attached -
  2. The usual radio use panel will pop up, but now with access to the wiring. If you've closed it by accident, just click on the radio as if you were going to change the settings on it. -
  3. There are three wires. Two have apparent uses; the third is pretty much useless. -
      -
    • Output wire will disengage the speakers (or signal-receiving on a signaler) -
    • Input wire will permanently disengage the microphone (or signal-sending on a signaler) -
    -
- Interestingly, tracking beacons and station intercoms also count as radios. - -

Secure Briefcase, Safes

- seriously who is dumb enough to use these things anyway god damn -
    -
  1. Screwdriver in hand, click on the (briefcase/safe) to open the panel and expose the wiring
  2. -
  3. Multi-tool-spam the (briefcase/safe) until you get a confirmation that the memory is reset.
  4. -
  5. The memory is now reset. Punch in your favorite code and hit E to set it.
  6. -
  7. Screwdriver the panel shut.
  8. -
- -

Vending machines

- The only thing worth hacking! - - Four wires -
    -
  1. Firing wire when cut fires stuff at people. When pulsed will do so. Controlled by the blinking light.
  2. -
  3. Contraband wire does nothing when cut, when pulsed unlocks illegal or rare goods. Wire is unknown.
  4. -
  5. Access wire when cut it turns on a yellow light, allowing for ID restricted machines(med machines, sec machines, possibly botany machines) to be used by anyone.
  6. -
  7. Shock wire Like the firing wire in effects from hacking, except it shocks instead of shoots.
  8. -
-"} - - - -/obj/item/weapon/book/manual/engineering_guide - name = "Engineering Textbook" - icon = 'library.dmi' - icon_state ="bookEngineering2" - due_date = 0 // Game time in 1/10th seconds - author = "Engineering Encyclopedia" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned - unique = 1 // 0 - Normal book, 1 - Should not be treated as normal book, unable to be copied, unable to be modified - -//big pile of shit below. - - dat = {" - - - - - So, you're an Engineer, fresh from the academy, eh? Well here is a guide for you, then. Engineering, the Space station 13 way! - -

How much game experience do i need to be a good engineer?

- - Engineering is rather complex, but in itself teaches you many of the station's core mechanics. Even someone with very little experience, who can pick up and empty a toolbox is able to become a good engineer. - -

Before we start

- -

Engineering equipment

- - This is an image of the tools every engineer should be trusted to have on him at all times: - -

- -

- - - - - - - - - - - - - - - - - - - -
Container pictureContainer nameContents
Utility belt
Backpack
Box
- -

Note that some of these are for roleplay reasons only. Although you can wear a welding mask all the time it makes little to no sense to do that from a roleplay standpoint. Same applies to keeping a pen (but you will not start with a pen). You'll need it very rarely, but a time will come when you'll actually need it. Roleplay too determines if you're a good engineer or not. - -

The engine, solars and power

- -

Generating power

- - The primary purpose of engineering is to maintain the station's power. To do this, you will need to start the Singularity Engine. Please read the book entitled: 'Singularity engine' for details on this. - -

The solars are the next thing you need to worry about. As starting the singularity can be a bit risky, you should watch others do it before you attempt it alone. In the mean time, you can do the wiring of the solars. To do this you will need the RIG suit as well as internals (oxygen tank and gas mask), all of which can be found in engineering. Note that it is a good idea to return the RIG suit once you're done. More on wiring solars can be found in the book entitled 'Solar Panels on Space Stations' - -

Wiring

- - If a part of the station looses power it is likely wires have been cut somewhere. To search for cut wires under floors you will need a T-Ray Scanner. To cut wires, use the wirecutters and to place new ones click on the floor where you'd like them to be placed. The wire will be placed on the targeted tile from the tile you're standing on. You can also place wires on the tile you're currently on by clicking the tile. the wire will be placed in the direction you're currently facing. To place smooth wires, click on the red dot (end point) of an existing wire with more wire in your hand. - -

Wiring intersections demand special mention. Making an intersection requires all the wire pieces to be end-points. If you make a smooth wire going south to north and place a half-wire going east, they will not be connected. To connect them you have to remove the smooth wire and replace it with two half-wires. Once all of them are placed, if you right click the tile you should see three wire pieces, all of which meet in the center. - -

Power monitoring and distribution

- - an APC or Area Power Controller is located in every room. It is usually locked, but you can unlock it by swiping your ID on it. It contains a power cell. You can shut off a room's power or disable or enable lighting, equipment or atmospheric systems with it. Every room can have only one APC. The guide to their construction and deconstruction can be found in the book entitled 'Station repairs and construction'. APC's can also be hacked (More on that in the book entitled 'Hacking'). It's also a good idea to know how to do that. DO NOT PRACTICE ON THE ENGINE APCs! If you mess up, you can destroy it through hacking which can set the singularity free if you do it in engineering! You know this warning is here because it happened before. - -

Station structural integrity

- - An educated word which basically means wall repairs. - -

The secrets surrounding walls

- - Walls come in two forms: Regular and reinforced. Building a regular wall is a two step process: constructing girders and adding plating. To construct a girder have a stack of two or more sheets of metal on you (right click the metal and examine it to see how many sheets are in the stack). Left click the metal for a construction window to appear. choose "Construct wall girders" from the list and wait a few seconds while they're built. Once they're built, click on the girders with another stack of two or more metal to add the plating. Note that only fully built walls will prevent air from escaping freely through them. Reinforced walls share the first step: the building of the girders. after this, you'll need 4 sheets of metal. In the same way as you built the girders, create two reinforced sheets. Use one of them on the girders to create reinforced girders and the other on the reinforced girders to finalize them. Reinforced walls are much stronger than regular walls and take much longer to get through using regular tools. - -

For more on construction read the book entitled 'Station Repairs and Construction' - -

Pretty glass

- - Notice how most of the glass around the station is built as a double pane, which surrounds a grille. Making this by hand can be a bit tricky at first, but is simple once you get the hang of it. To build such a wall, you'll need 4 sheets of glass and 3 sheets of metal, alternatively you can have 6 sets of rods. You'll also need a screwdriver and crowbar, tho having wirecutters and a welder with you is a good idea, as you'll likely get it wrong the first time and will need those to dismantle the grille. First you have to prepare your materials. Use the metal on itself and create 6 sets of rods (2 are made each time). Now pick the rods up (you can stack them, but don't click too quickly or the game might think you wanted to build a grille). After this, use 4 of the rods on 4 sheets of glass to create 4 sheets of reinforced glass. Now pick up all your tools (put them on your utility belt if you have one or in your backpack) and pick up the remaining two rods in one hand and the 4 sheets of reinforced glass in your other (remember, you can stack glass too). Now stand where you'd like the glass to be. Use the rods on themselves and this will create a grille. DO NOT MOVE! Now use the glass on itself 4 times and create a single paned glass every time. Right click on the glass to rotate it until you have 3 of the 4 sides covered. The remaining side is your escape route. use the combination of screwdriver - crowbar - screwdriver on each of the 3 panes which are already in place to secure them. Now move out of the grille and rotate the last window so it covers the last side. Fasten that with the same screwdriver - crowbar - screwdriver combination. Congratulations. You've just made a proper window. You're already better at construction than most. - -

For more on construction read the book entitled 'Station Repairs and Construction' - -

Robots, Artificial Intelligence and Computers

- - As an engineer, it is required of you to understand how most computers are operated, how they work, how they're created, dismantled and repaired. You're also the best equipped station employee to prevent the AI from taking a life of it's own. - -

Computers

- - Computers are everywhere on SS13. Engineering has a power monitoring computer, several solar computers and a general alerts computer. Almost everything you can control is done through a computer. Making them is described in the book entitled 'Station Repairs and Construction', as is their dissasembly (for those which can be deconstructed). To learn how to operate different computer you'll need to start using them and find out how they work while doing so. There are too many to explain them all here. - -

Artificial int... stupidity

- - More often than not, the AI will be rogue. This means it has laws which are harmful. It will try it's best to kill any crew members by flooding the halls with toxic plasma, sparking fires, overloading APC's, electrifying doors, etc. At such a time you have two choices: Destroy it or reset it. As said, the AI works on a principle of laws. People can upload new ones to it and if these are harmful, you'll first want to try to reset it. In technical storage (in the maintenance hallway between assistant's storage and EVA) you have an AI upload card and an AI reset module. To reset the AI, first create an AI upload computer and once it is created, click on it to choose the rogue AI and use the module on it to reset it. If the person has uploaded a core law, then it's a bit harder. A core law cannot be reset with the AI reset module. You'll need to override it with another AI core module. These can be found in the AI upload area under lock and key. But if the person who uploaded the traitorous law got in, you can get in too, right? The often preferred alternative is to simply kill the AI. Tear down the walls and shoot it, blow it up, use the chemist to prepare something. There are many ways of doing this. Note that if hostile runtimes are reported, you'll have to get to the AI satellite, as the rogue AI is there. - -

Blowing up cyborgs is normally done by the roboticist or Research Director, but you may need to help them create a robotics console at some point. One of these can be found in tech storage, but is usually stolen quickly. - -

The alternative methods to being helpful included hacking APCs and doors, usually to disable the AI control. This is especially important anywhere near a robotics control, engine, or any of the SMES rooms. The AI has no reason to have control over these anyway. - -

Getting the man out of danger... alive!

- - It's your job to save lives when they cry out for help. - -

Firefighting

- - Engineers get access to maintenance hallways, which contain several firesuits and extinguishers. If a fire breaks out somewhere, put it out. Firesuits allow you to walk in almost any fire. Extinguishers have a limited capacity. Refill them with water tanks, which can be found all around the station. - -

Physical rescue

- - If someone cries that he can't get out of somewhere and no one can get him out, then it's your job to do so. Hacking airlocks, deconstructing walls, basically whatever it takes to get to them. I don't need to point out that you should never put others or yourself at risk in doing so! - -

Space recovery

- - A body's been spaced? Well now it's your job to recover it. Ask the AI or captain to get a jetpack and space suit from EVA and go after the body. You'll most frequently find bodies either somewhere near the derelict or the AI satellite. Drag them to a teleporter and get them back to the station. The use of lockers will help greatly, as lockers do not drift like bodies do, but cannot travel across Z-levels. ALWAYS have tools, glass and metal with you when doing this! Some teleporters need to be rebuilt and some bodies float around randomly and need floor tiles to be build in their path to actually stop - -

Space exploration

- - Space exploration can be fun. Although there are not too many things to see in space at the moment, but things change sometimes. You may also get some things which could come in handy. - - - "} - -/obj/item/weapon/book/manual/engineering_singularity_safety - name = "Singularity Safety in Special Circumstances" - icon = 'library.dmi' - icon_state ="bookEngineeringSingularitySafety" - due_date = 0 // Game time in 1/10th seconds - author = "Engineering Encyclopedia" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned - unique = 1 // 0 - Normal book, 1 - Should not be treated as normal book, unable to be copied, unable to be modified - -//big pile of shit below. - - dat = {" - - - - -

Singularity Safety in Special Circumstances

- -

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!!!
-

- -

Shields get damaged

- - Step one: GET THE FUCK OUT OF THERE!!! FORGET THE WOMEN AND CHILDREN, SAVE YOURSELF!!!
- - - "} - -/obj/item/weapon/book/manual/medical_cloning - name = "Cloning techniques of the 26th century" - icon = 'library.dmi' - icon_state ="bookCloning" - due_date = 0 // Game time in 1/10th seconds - author = "Medical Journal, volume 3" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned - unique = 1 // 0 - Normal book, 1 - Should not be treated as normal book, unable to be copied, unable to be modified - -//big pile of shit below. - - 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. - -
    -
  1. Acquire body
  2. -
  3. Strip body
  4. -
  5. Put body in cloning machine
  6. -
  7. Scan body
  8. -
  9. Clone body
  10. -
  11. Get clean Structurel Enzymes for the body
  12. -
  13. Put body in morgue
  14. -
  15. Await cloned body
  16. -
  17. Use the clean SW injector
  18. -
  19. Give person clothes back
  20. -
  21. Send person on their way
  22. -
- -

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 the Clown in to steal them. - -

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 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

- 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. 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. - -

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. - -

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: Use the clean SE injector on person

- Has your body been cloned yet? Great! As soon as the guy pops out, grab your 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 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. - - - - - - "} - - /**********************Light************************/ diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index f5ff00d1d40..5aa292b65d2 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -17,6 +17,9 @@ To Do: Add deconstruct code to constructable machines. A marvelous idea, I know. /obj/machinery/constructable_frame/machine_frame attackby(obj/item/P as obj, mob/user as mob) + if(P.crit_fail) + user << "\red This part is faulty, you cannot add this to the machine!" + return switch(state) if(1) if(istype(P, /obj/item/weapon/cable_coil)) @@ -97,12 +100,20 @@ To Do: Add deconstruct code to constructable machines. A marvelous idea, I know. if(istype(P, /obj/item/weapon)) for(var/I in req_components) if(istype(P, text2path(I)) && (req_components[I] > 0)) + if(istype(P, /obj/item/weapon/cable_coil)) + var/obj/item/weapon/cable_coil/CP = P + if(CP.amount > 1) + var/obj/item/weapon/cable_coil/CC = new /obj/item/weapon/cable_coil(src) + CC.amount = 1 + components += CC + req_components[I]-- + break user.drop_item() P.loc = src components += P req_components[I]-- break - if(P.loc != src) + if(P.loc != src && !istype(P, /obj/item/weapon/cable_coil)) user << "\red You cannot add that component to the machine!" @@ -151,4 +162,15 @@ to destroy them and players will be able to make replacements. req_components = list( "/obj/item/weapon/stock_parts/matter_bin" = 1, "/obj/item/weapon/stock_parts/micro_manipulator" = 1, - "/obj/item/weapon/reagent_containers/glass/beaker" = 2) \ No newline at end of file + "/obj/item/weapon/reagent_containers/glass/beaker" = 2) + +/obj/item/weapon/circuitboard/pacman + name = "Circuit Board (PACMAN-type Generator)" + build_path = "/obj/machinery/power/port_gen/pacman" + board_type = "machine" + origin_tech = "powerstorage=3;plasmatech=2" + req_components = list( + "/obj/item/weapon/stock_parts/matter_bin" = 1, + "/obj/item/weapon/stock_parts/micro_laser" = 1, + "/obj/item/weapon/cable_coil" = 2, + "/obj/item/weapon/stock_parts/capacitor" = 1) \ No newline at end of file diff --git a/code/game/mecha/mecha_construction.dm b/code/game/mecha/mecha_construction.dm index de335b81eaa..22b13f1629e 100644 --- a/code/game/mecha/mecha_construction.dm +++ b/code/game/mecha/mecha_construction.dm @@ -632,72 +632,3 @@ -/obj/item/weapon/book/manual/ripley_build_and_repair - name = "APLU \"Ripley\" Construction and Operation Manual" - icon = 'library.dmi' - icon_state ="book" - due_date = 0 // Game time in 1/10th seconds - author = "Weyland-Yutani Corp" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned - unique = 1 // 0 - Normal book, 1 - Should not be treated as normal book, unable to be copied, unable to be modified - -//big pile of shit below. - - dat = {" - - - - -

- Weyland-Yutani - Building Better Worlds -

Autonomous Power Loader Unit \"Ripley\"

-
-

Specifications:

- - -

Construction:

-
    -
  1. Connect all exosuit parts to the chassis frame
  2. -
  3. Connect all hydraulic fittings and tighten them up with a wrench
  4. -
  5. Adjust the servohydraulics with a screwdriver
  6. -
  7. Wire the chassis. (Cable is not included.)
  8. -
  9. Use the wirecutters to remove the excess cable if needed.
  10. -
  11. Install the central control module (Not included. Use supplied datadisk to create one).
  12. -
  13. Secure the mainboard with a screwdriver.
  14. -
  15. Install the peripherals control module (Not included. Use supplied datadisk to create one).
  16. -
  17. Secure the peripherals control module with a screwdriver
  18. -
  19. Install the internal armor plating (Not included due to Nanotrasen regulations. Can be made using 5 metal sheets.)
  20. -
  21. Secure the internal armor plating with a wrench
  22. -
  23. Weld the internal armor plating to the chassis
  24. -
  25. Install the external reinforced armor plating (Not included due to Nanotrasen regulations. Can be made using 5 reinforced metal sheets.)
  26. -
  27. Secure the external reinforced armor plating with a wrench
  28. -
  29. Weld the external reinforced armor plating to the chassis
  30. -
- - - -

Operation

- Coming soon... - "} diff --git a/code/game/objects/items/weapons/manuals.dm b/code/game/objects/items/weapons/manuals.dm new file mode 100644 index 00000000000..998e79ea435 --- /dev/null +++ b/code/game/objects/items/weapons/manuals.dm @@ -0,0 +1,802 @@ +/*********************MANUALS (BOOKS)***********************/ + +/obj/item/weapon/book/manual + icon = 'library.dmi' + due_date = 0 // Game time in 1/10th seconds + unique = 1 // 0 - Normal book, 1 - Should not be treated as normal book, unable to be copied, unable to be modified + + +/obj/item/weapon/book/manual/engineering_construction + name = "Station Repairs and Construction" + icon_state ="bookEngineering" + author = "Engineering Encyclopedia" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned + +//big pile of shit below. + + dat = {" + + + + +

Construction

+ +

Advanced Materials

+ +

Rods

+ + Use metal and click "2x metal rods" (makes two sets of rods) + +

Floor tiles

+ + Use metal and click "4x floor tiles" (makes 4 floor tiles) + + +

Reinforced Glass

+ + Use rods on glass + +

Reinforced Metal

+ + Click the metal in your hand to open the construction panel, +
Choose 'Reinforced sheets' form the list + +

Floor

+ + Use the rods on space +
Use the floor tile on space with lattice +
Use another floor tile on the plating +
Alternate method - Click on
floor tile in hand while on top of an area of space. No need for rods with this method. + +

Walls

+ + Click the metal in your hand to open the construction panel, +
Choose 'Build wall girders' form the list +
Use the remaining 2 sheets of metal on the girders + +

Reinforced walls

+ + Click the metal in your hand to open the construction panel, +
Choose 'Build wall girders' form the list +
Use the reinforced metal on the girders to reinforce them +
Use the last reinforced metal sheet reinforced girders to finish the wall + + +

Grille

+ + Stand where you wish the grille to be placed +
Click on the stack of 2 rods with the hand you have them in + +

Glass panels

+ +

One directional

+ + Click the glass pane +
Click the "one direct" button +
Right-click the new pane and rotate it +
Use the screwdriver to fasten it down + +

Full

+ + Click the glass pane +
Click the "full" button +
Use the screwdriver to fasten it down + +

Reinforced glass panels

+ +

One directional

+ + Click the reinforced glass pane +
Click the "one direct" button +
Right-click the new pane and rotate it +
Screwdriver (Unsecure pane.) +
Crowbar (Pane out of frame.) +
Screwdriver (Secure frame to floor.) +
Crowbar (Pop pane in.) +
Screwdriver (Secure pane.) + +

Full

+ + Click the reinforced glass pane +
Click the "full" button +
Screwdriver +
Crowbar +
Screwdriver + +

Hidden Door

+ + Click the metal in your hand to open the construction panel, +
Choose 'Build wall girders' form the list +
Use crowbar on girders and wait a few seconds for the girders to dislodge. +
Use the remaining 2 sheets of metal on the girders + + To turn a wall into a hidden door, follow the deconstruction guide for the wall type until the final wrenching, and instead proceed from the "Use crowbar on girders" line above. + +

Reinforced

+ + Click the metal in your hand to open the construction panel, +
Choose 'Build wall girders' form the list +
Use crowbar on girders and wait a few seconds for the girders to dislodge. +
Use the reinforced metal on the dislodged girders twice to finish it + +

APC

+ + Use the metal and make an APC Assembly +
Use the assembly on the wall you want the APC on. +
Fit it with the wire coil. +
Fit it with the Power Control Module. +
Screwdriver the electronics into place. +
Add the Power Cell. +
Crowbar shut. It starts ID locked, with the cover engaged and the main switch turned off. + +

Airlock

+ + Use the metal and make an Airlock Assembly +
Wrench it inplace +
Add reinforced glass (Only if you wish to make a glass airlock) +
Add wires +
Unlock the airlock electronic board with an ID +
Use the airlock electronic board and set the access level +
Add the airlock electronic board to the airlock frame. +
Screwdriver to finish + +

Computers

+ + Use the metal to open the construction panel +
Choose Computer frame +
Wrench it inplace +
Insert Circuitboard +
Screwdriver +
Wires +
glass +
Screwdriver to finish + +

AI Core

+ + Build Frame from 4 reinforced sheets +
Wrench into place +
Add Circuit board +
Screwdriver +
Add wires +
Add brain (only if you want a NEW AI) +
Add reinforced glass +
Screwdriver + +

Deconstruction

+ +

Walls

+ + Wdlder +
Wrench + +

Reinforced walls

+ + Wirecutters. +
Screwdriver. +
Welder. +
Crowbar. +
Wrench. +
Welder. +
Crowbar. +
Screwdriver. +
Wirecutters. +
Wrench. + +

Grille

+ + Wirecutters +
Welder (to destroy it) +
or +
screwdriver (to unfasten it) + +

Glass panels

+ + The first method destroys it, the second gives a pullable pane of glass. + +
Welding glass shards creates a pane of glass. + +

Reinforced glass panels

+ + Screwdriver to loosen the pane. +
Crowbar to pop it out. +
Screwdriver to unscrew the frame. +
Crowbar to pop the pane in. +
Screwdriver to secure it. + + Hitting the pane repeatedly with a blunt item will smash it into one set of metal rods and a glass shard. + +

Hidden Door (Regular or Reinforced)

+ + Screwdriver +
Welder +
Wrench + +

APC

+ + Swipe Card to unlock APC. +
Remove Power Cell. +
Screwdriver to unsecure electronics. +
Wirecutters to remove cables. +
Crowbar to remove Power Control Board. +
Welder to remover from wall. +
Wrenching the frame that is now detached from the wall de-constructs it to two metal sheets. + +

Airlock

+ + Screwdriver the door. +
Use multitool and wirecutters to disable everything except the doorbolts as detailed in books on hacking. Doorbolts must be up for this to work. +
Weld the door shut. +
Crowbar the electronics out. +
Wirecut the wires out. +
Unsecure it with a wrench. +
Weld it to deconstruct to metal plates. + + Cannot be done to emagged airlock. RCD deconstruction must be used for that. + +

Computers

+ + Screwdriver. +
Crowbar. +
Wirecutters. +
Screwdriver. +
Wrench. +
Welder. "} + +/obj/item/weapon/book/manual/engineering_particle_accelerator + name = "Particle Accelerator User's Guide" + icon_state ="bookParticleAccelerator" + author = "Engineering Encyclopedia" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned + +//big pile of shit below. + + dat = {" + + + + + +

Experienced user's guide

+ +

Setting up

+ +
    +
  1. Wrench all pieces to the floor
  2. +
  3. Add wires to all the pieces
  4. +
  5. Close all the panels with your screwdriver
  6. +
+ +

Use

+ +
    +
  1. Open the control panel
  2. +
  3. Set the speed to 2
  4. +
  5. Start firing at the singularity generator
  6. +
  7. When the singularity reaches a large enough size so it starts moving on it's own set the speed down to 0, but don't shut it off
  8. +
  9. Remember to wear a radiation suit when working with this machine... we did tell you that at the start, right?
  10. +
+ + + "} + + +/obj/item/weapon/book/manual/engineering_hacking + name = "Hacking" + icon_state ="bookHacking" + author = "Engineering Encyclopedia" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned + +//big pile of shit below. + + dat = {" + + + + +

What you'll need

+ + +

Important Hackables

+ +

Airlocks

+ Both internal and external access airlocks are hackable, despite the fact that external ones look a lot like firelocks, which are not hackable. Wires are randomized at the start of each round, but are standardized throughout the station, e.g., every orange wire might toggle the bolts. This is probably where you'll be doing the most of your hacking. Remember, cutting power to the door will stop everything else from working. +
    +
  1. Screwdriver in hand, click on the airlock to open the panel and expose the wiring
  2. +
  3. With multitool, wirecutters, or an empty hand, click on the airlock to access the wiring.
  4. +
  5. Fiddle with the wires by pulsing to test each one and cutting what you need to.
  6. +
      +
    • ID wire: Pulsing will flash the 'access denied' red light; cutting will prevent anyone from opening the door if it's a restricted door; otherwise, it does nothing.
    • +
    • AI control wire: Pulsing will flash the 'AI control light' off and on quickly; cutting will prevent the AI from accessing the door unless s/he hacks the power wires
    • +
    • Main power wire: Pulsing will turn off the 'test light' and kill the power for 1 minute; cutting will kill the power for 10 seconds before backup power kicks in.
    • +
    • Backup power wire: Pulsing will turn off the 'test light' kill the power for 1 minute of the main power is out, otherwise, nothing. Cutting will obviously disable the backup power.
    • +
    • Bolt control wire: Pulsing will toggle the bolts; cutting will drop the bolts.
    • +
    • Door control wire: If the door is ID restricted, this is pretty much useless. If not, Pulsing will open/close the door and cutting will keep it that way, sortof like bolting.
    • +
    • Electrifying wire: Pulsing will electrify the door for 30 seconds; cutting will permanently electrify it until mended. I haven't a clue how to find this wire out except through trial and painful error. Obviously useless if there is no power to the door.
    • +
    +
  7. Screwdriver the door again to shut the panel. Otherwise, trying to open the door will always give you the wiring popup.
  8. +
+ +

Airlock Strategies

+ + +

APCs

+ Used to control power to a certain room. Nice to know when a rogue AI or douchebag engineers keep turning off your power. All APC breakers can be accessed via Power Monitoring Computers regardless of the lock status, so hope that whoever's fucking with the power isn't paying attention +
    +
  1. Screwdriver in hand, click on APC to open the panel and expose the wiring
  2. +
  3. Click with an empty hand to access the wiring
  4. +
  5. Fiddle with the wires by pulsing to test each one and cutting what you need to.
  6. +
      +
    • Power wires (2): Pulse will short out the APC. You must cut and mend the wire to restore power. Not repairing the short will render the main breaker moot, even if accessed remotely.
    • +
    • AI control wire: Like the airlock, pulsing will flash the light off and on quickly; cutting will disable AI control
    • +
    +
  7. Screwdriver it back up to toggle lighting, equipment, and atmospherics as you see fit (unless you've killed the power)
  8. +
+ +

Autolathe

+
    +
  1. Click on the autolathe to open it
  2. +
  3. Click on the autolathe with an empty hand to access the wiring, then get a tool in your hand
  4. +
  5. The window is glitched and won't show what wires are cut, so you better track what wires you modify. There are three important wires, which are randomized. Cutting them toggles their light permanently, pulsing does so temporarily(30 secs or something). Red light is power, green light is electrocution and blue is hacked options.
  6. +
  7. Have fun accessing some new options
  8. +
      +
    • RCD supplies
    • +
    • Infrared beam (security)
    • +
    • Infrared sensor
    • +
    • Bullets
    • +
    • Other shit
    • +
    +
+ +

Air alarm/Fire alarm/Cameras

+ Use wirecutters to enable/disable. Disabled air alarms will show no lights, fire alarms will not automatically trigger firelocks, and cameras will show a red light and prevent anyone from viewing the room through a console (including AI). + + +

MULE

+ No better way to get away from it all with a joyride on a MULE! And run over some people with it too. +
    +
  1. Unlock the controls with a Quartermaster's ID.
  2. +
  3. Unscrew the maintenance panel with the screwdriver.
  4. +
  5. Pulse various wires with a multitool. Pay attention to the reaction the MULE gives.
  6. +
      +
    1. Cutting the wire that causes the loading bay to thunk will remove cargo restrictions.
    2. +
    3. Cutting the wire that leads to the safety light will awaken its thirst for blood and cause it to run over people in its path. DO NOT DO THIS UNLESS YOU ARE A TRAITOR OR LOVE GETTING THE SHIT ROBUSTED OUT OF YOU.
    4. +
    5. Cutting one of the wires that makes the motor whine will safely speed up the MULE. Cutting both will immobilize it.
    6. +
    +
  7. Screw the panel back on.
  8. +
+ +

Minor Hackables

+ I haven't a clue why you'd ever want to hack any of these things, but you can! + +

Radio/Signaler

+
    +
  1. Screwdriver in hand, click on the offending radio so it can be modified or attached +
  2. The usual radio use panel will pop up, but now with access to the wiring. If you've closed it by accident, just click on the radio as if you were going to change the settings on it. +
  3. There are three wires. Two have apparent uses; the third is pretty much useless. +
      +
    • Output wire will disengage the speakers (or signal-receiving on a signaler) +
    • Input wire will permanently disengage the microphone (or signal-sending on a signaler) +
    +
+ Interestingly, tracking beacons and station intercoms also count as radios. + +

Secure Briefcase, Safes

+ seriously who is dumb enough to use these things anyway god damn +
    +
  1. Screwdriver in hand, click on the (briefcase/safe) to open the panel and expose the wiring
  2. +
  3. Multi-tool-spam the (briefcase/safe) until you get a confirmation that the memory is reset.
  4. +
  5. The memory is now reset. Punch in your favorite code and hit E to set it.
  6. +
  7. Screwdriver the panel shut.
  8. +
+ +

Vending machines

+ The only thing worth hacking! + + Four wires +
    +
  1. Firing wire when cut fires stuff at people. When pulsed will do so. Controlled by the blinking light.
  2. +
  3. Contraband wire does nothing when cut, when pulsed unlocks illegal or rare goods. Wire is unknown.
  4. +
  5. Access wire when cut it turns on a yellow light, allowing for ID restricted machines(med machines, sec machines, possibly botany machines) to be used by anyone.
  6. +
  7. Shock wire Like the firing wire in effects from hacking, except it shocks instead of shoots.
  8. +
+"} + + + +/obj/item/weapon/book/manual/engineering_guide + name = "Engineering Textbook" + icon_state ="bookEngineering2" + author = "Engineering Encyclopedia" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned + +//big pile of shit below. + + dat = {" + + + + + So, you're an Engineer, fresh from the academy, eh? Well here is a guide for you, then. Engineering, the Space station 13 way! + +

How much game experience do i need to be a good engineer?

+ + Engineering is rather complex, but in itself teaches you many of the station's core mechanics. Even someone with very little experience, who can pick up and empty a toolbox is able to become a good engineer. + +

Before we start

+ +

Engineering equipment

+ + This is an image of the tools every engineer should be trusted to have on him at all times: + +

+ +

+ + + + + + + + + + + + + + + + + + + +
Container pictureContainer nameContents
Utility belt
Backpack
Box
+ +

Note that some of these are for roleplay reasons only. Although you can wear a welding mask all the time it makes little to no sense to do that from a roleplay standpoint. Same applies to keeping a pen (but you will not start with a pen). You'll need it very rarely, but a time will come when you'll actually need it. Roleplay too determines if you're a good engineer or not. + +

The engine, solars and power

+ +

Generating power

+ + The primary purpose of engineering is to maintain the station's power. To do this, you will need to start the Singularity Engine. Please read the book entitled: 'Singularity engine' for details on this. + +

The solars are the next thing you need to worry about. As starting the singularity can be a bit risky, you should watch others do it before you attempt it alone. In the mean time, you can do the wiring of the solars. To do this you will need the RIG suit as well as internals (oxygen tank and gas mask), all of which can be found in engineering. Note that it is a good idea to return the RIG suit once you're done. More on wiring solars can be found in the book entitled 'Solar Panels on Space Stations' + +

Wiring

+ + If a part of the station looses power it is likely wires have been cut somewhere. To search for cut wires under floors you will need a T-Ray Scanner. To cut wires, use the wirecutters and to place new ones click on the floor where you'd like them to be placed. The wire will be placed on the targeted tile from the tile you're standing on. You can also place wires on the tile you're currently on by clicking the tile. the wire will be placed in the direction you're currently facing. To place smooth wires, click on the red dot (end point) of an existing wire with more wire in your hand. + +

Wiring intersections demand special mention. Making an intersection requires all the wire pieces to be end-points. If you make a smooth wire going south to north and place a half-wire going east, they will not be connected. To connect them you have to remove the smooth wire and replace it with two half-wires. Once all of them are placed, if you right click the tile you should see three wire pieces, all of which meet in the center. + +

Power monitoring and distribution

+ + an APC or Area Power Controller is located in every room. It is usually locked, but you can unlock it by swiping your ID on it. It contains a power cell. You can shut off a room's power or disable or enable lighting, equipment or atmospheric systems with it. Every room can have only one APC. The guide to their construction and deconstruction can be found in the book entitled 'Station repairs and construction'. APC's can also be hacked (More on that in the book entitled 'Hacking'). It's also a good idea to know how to do that. DO NOT PRACTICE ON THE ENGINE APCs! If you mess up, you can destroy it through hacking which can set the singularity free if you do it in engineering! You know this warning is here because it happened before. + +

Station structural integrity

+ + An educated word which basically means wall repairs. + +

The secrets surrounding walls

+ + Walls come in two forms: Regular and reinforced. Building a regular wall is a two step process: constructing girders and adding plating. To construct a girder have a stack of two or more sheets of metal on you (right click the metal and examine it to see how many sheets are in the stack). Left click the metal for a construction window to appear. choose "Construct wall girders" from the list and wait a few seconds while they're built. Once they're built, click on the girders with another stack of two or more metal to add the plating. Note that only fully built walls will prevent air from escaping freely through them. Reinforced walls share the first step: the building of the girders. after this, you'll need 4 sheets of metal. In the same way as you built the girders, create two reinforced sheets. Use one of them on the girders to create reinforced girders and the other on the reinforced girders to finalize them. Reinforced walls are much stronger than regular walls and take much longer to get through using regular tools. + +

For more on construction read the book entitled 'Station Repairs and Construction' + +

Pretty glass

+ + Notice how most of the glass around the station is built as a double pane, which surrounds a grille. Making this by hand can be a bit tricky at first, but is simple once you get the hang of it. To build such a wall, you'll need 4 sheets of glass and 3 sheets of metal, alternatively you can have 6 sets of rods. You'll also need a screwdriver and crowbar, tho having wirecutters and a welder with you is a good idea, as you'll likely get it wrong the first time and will need those to dismantle the grille. First you have to prepare your materials. Use the metal on itself and create 6 sets of rods (2 are made each time). Now pick the rods up (you can stack them, but don't click too quickly or the game might think you wanted to build a grille). After this, use 4 of the rods on 4 sheets of glass to create 4 sheets of reinforced glass. Now pick up all your tools (put them on your utility belt if you have one or in your backpack) and pick up the remaining two rods in one hand and the 4 sheets of reinforced glass in your other (remember, you can stack glass too). Now stand where you'd like the glass to be. Use the rods on themselves and this will create a grille. DO NOT MOVE! Now use the glass on itself 4 times and create a single paned glass every time. Right click on the glass to rotate it until you have 3 of the 4 sides covered. The remaining side is your escape route. use the combination of screwdriver - crowbar - screwdriver on each of the 3 panes which are already in place to secure them. Now move out of the grille and rotate the last window so it covers the last side. Fasten that with the same screwdriver - crowbar - screwdriver combination. Congratulations. You've just made a proper window. You're already better at construction than most. + +

For more on construction read the book entitled 'Station Repairs and Construction' + +

Robots, Artificial Intelligence and Computers

+ + As an engineer, it is required of you to understand how most computers are operated, how they work, how they're created, dismantled and repaired. You're also the best equipped station employee to prevent the AI from taking a life of it's own. + +

Computers

+ + Computers are everywhere on SS13. Engineering has a power monitoring computer, several solar computers and a general alerts computer. Almost everything you can control is done through a computer. Making them is described in the book entitled 'Station Repairs and Construction', as is their dissasembly (for those which can be deconstructed). To learn how to operate different computer you'll need to start using them and find out how they work while doing so. There are too many to explain them all here. + +

Artificial int... stupidity

+ + More often than not, the AI will be rogue. This means it has laws which are harmful. It will try it's best to kill any crew members by flooding the halls with toxic plasma, sparking fires, overloading APC's, electrifying doors, etc. At such a time you have two choices: Destroy it or reset it. As said, the AI works on a principle of laws. People can upload new ones to it and if these are harmful, you'll first want to try to reset it. In technical storage (in the maintenance hallway between assistant's storage and EVA) you have an AI upload card and an AI reset module. To reset the AI, first create an AI upload computer and once it is created, click on it to choose the rogue AI and use the module on it to reset it. If the person has uploaded a core law, then it's a bit harder. A core law cannot be reset with the AI reset module. You'll need to override it with another AI core module. These can be found in the AI upload area under lock and key. But if the person who uploaded the traitorous law got in, you can get in too, right? The often preferred alternative is to simply kill the AI. Tear down the walls and shoot it, blow it up, use the chemist to prepare something. There are many ways of doing this. Note that if hostile runtimes are reported, you'll have to get to the AI satellite, as the rogue AI is there. + +

Blowing up cyborgs is normally done by the roboticist or Research Director, but you may need to help them create a robotics console at some point. One of these can be found in tech storage, but is usually stolen quickly. + +

The alternative methods to being helpful included hacking APCs and doors, usually to disable the AI control. This is especially important anywhere near a robotics control, engine, or any of the SMES rooms. The AI has no reason to have control over these anyway. + +

Getting the man out of danger... alive!

+ + It's your job to save lives when they cry out for help. + +

Firefighting

+ + Engineers get access to maintenance hallways, which contain several firesuits and extinguishers. If a fire breaks out somewhere, put it out. Firesuits allow you to walk in almost any fire. Extinguishers have a limited capacity. Refill them with water tanks, which can be found all around the station. + +

Physical rescue

+ + If someone cries that he can't get out of somewhere and no one can get him out, then it's your job to do so. Hacking airlocks, deconstructing walls, basically whatever it takes to get to them. I don't need to point out that you should never put others or yourself at risk in doing so! + +

Space recovery

+ + A body's been spaced? Well now it's your job to recover it. Ask the AI or captain to get a jetpack and space suit from EVA and go after the body. You'll most frequently find bodies either somewhere near the derelict or the AI satellite. Drag them to a teleporter and get them back to the station. The use of lockers will help greatly, as lockers do not drift like bodies do, but cannot travel across Z-levels. ALWAYS have tools, glass and metal with you when doing this! Some teleporters need to be rebuilt and some bodies float around randomly and need floor tiles to be build in their path to actually stop + +

Space exploration

+ + Space exploration can be fun. Although there are not too many things to see in space at the moment, but things change sometimes. You may also get some things which could come in handy. + + + "} + +/obj/item/weapon/book/manual/engineering_singularity_safety + name = "Singularity Safety in Special Circumstances" + icon_state ="bookEngineeringSingularitySafety" + author = "Engineering Encyclopedia" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned + +//big pile of shit below. + + dat = {" + + + + +

Singularity Safety in Special Circumstances

+ +

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!!!
+

+ +

Shields get damaged

+ + Step one: GET THE FUCK OUT OF THERE!!! FORGET THE WOMEN AND CHILDREN, SAVE YOURSELF!!!
+ + + "} + +/obj/item/weapon/book/manual/medical_cloning + 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 + +//big pile of shit below. + + 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. + +
    +
  1. Acquire body
  2. +
  3. Strip body
  4. +
  5. Put body in cloning machine
  6. +
  7. Scan body
  8. +
  9. Clone body
  10. +
  11. Get clean Structurel Enzymes for the body
  12. +
  13. Put body in morgue
  14. +
  15. Await cloned body
  16. +
  17. Use the clean SW injector
  18. +
  19. Give person clothes back
  20. +
  21. Send person on their way
  22. +
+ +

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 the Clown in to steal them. + +

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 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

+ 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. 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. + +

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. + +

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: Use the clean SE injector on person

+ Has your body been cloned yet? Great! As soon as the guy pops out, grab your 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 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. + + + + + + "} + + +/obj/item/weapon/book/manual/ripley_build_and_repair + name = "APLU \"Ripley\" Construction and Operation Manual" + icon_state ="book" + author = "Weyland-Yutani Corp" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned + +//big pile of shit below. + + dat = {" + + + + +

+ Weyland-Yutani - Building Better Worlds +

Autonomous Power Loader Unit \"Ripley\"

+
+

Specifications:

+ + +

Construction:

+
    +
  1. Connect all exosuit parts to the chassis frame
  2. +
  3. Connect all hydraulic fittings and tighten them up with a wrench
  4. +
  5. Adjust the servohydraulics with a screwdriver
  6. +
  7. Wire the chassis. (Cable is not included.)
  8. +
  9. Use the wirecutters to remove the excess cable if needed.
  10. +
  11. Install the central control module (Not included. Use supplied datadisk to create one).
  12. +
  13. Secure the mainboard with a screwdriver.
  14. +
  15. Install the peripherals control module (Not included. Use supplied datadisk to create one).
  16. +
  17. Secure the peripherals control module with a screwdriver
  18. +
  19. Install the internal armor plating (Not included due to Nanotrasen regulations. Can be made using 5 metal sheets.)
  20. +
  21. Secure the internal armor plating with a wrench
  22. +
  23. Weld the internal armor plating to the chassis
  24. +
  25. Install the external reinforced armor plating (Not included due to Nanotrasen regulations. Can be made using 5 reinforced metal sheets.)
  26. +
  27. Secure the external reinforced armor plating with a wrench
  28. +
  29. Weld the external reinforced armor plating to the chassis
  30. +
+ + + +

Operation

+ Coming soon... + "} + + +/obj/item/weapon/book/manual/research_and_development + name = "Research and Development 101" + icon_state = "rdbook" + author = "Dr. L. Ight" + + dat = {" + + + + + +

Science For Dummies

+ So you want to further SCIENCE? Good man/woman/thing! However, SCIENCE is a complicated process even though it's quite easy. For the most part, it's a three step process: +
    +
  1. 1) Deconstruct items in the Destructive Analyzer to advance technology or improve the design.
  2. +
  3. 2) Build unlocked designs in the Protolathe and Circuit Imprinter
  4. +
  5. 3) Repeat!
  6. +
+ + Those are the basic steps to furthing science. What do you do science with, however? Well, you have four major tools: R&D Console, the Destructive Analyzer, the Protolathe, and the Circuit Imprinter. + +

The R&D Console

+ The R&D console is the cornerstone of any research lab. It is the central system from which the Destructive Analyzer, Protolathe, and Circuit Imprinter (your R&D systems) are controled. More on those systems in their own sections. On it's own, the R&D console acts as a database for all your technological gains and new devices you discover. So long as the R&D console remains intact, you'll retain all that SCIENCE you've discovered. Protect it though, because if it gets damaged, you'll lose your data! In addition to this important purpose, the R&D console has a disk menu that lets you transfer data from the database onto disk or from the disk into the database. It also has a settings menu that lets you re-sync with nearby R&D devices (if they've become disconnected), lock the console from the unworthy, upload the data to all other R&D consoles in the network (all R&D consoles are networked by default), connect/disconnect from the network, and purge all data from the database. + NOTE: The technology list screen, circuit imprinter, and protolathe menus are accessible by non-scientists. This is intended to allow 'public' systems for the plebians to utilize some new devices. + +

Destructive Analyzer

+ This is the source of all technology. Whenever you put a handheld object in it, it analyzes it and determines what sort of technological advancements you can discover from it. If the technology of the object is equal or higher then your current knowledge, you can destroy the object to further those sciences. Some devices (notably, some devices made from the protolathe and circuit imprinter) aren't 100% reliable when you first discover them. If these devices break down, you can put them into the Destructive Analyzer and improve their reliability rather then futher science. If their reliability is high enough ,it'll also advance their related technologies. + +

Circuit Imprinter

+ This machine, along with the Protolathe, is used to actually produce new devices. The Circuit Imprinter takes glass and various chemicals (depends on the design) to produce new circuit boards to build new machines or computers. It can even be used to print AI modules. + +

Protolathe

+ This machine is an advanced form of the Autolathe that produce non-circuit designs. Unlike the Autolathe, it can use processed metal, glass, solid plasma, silver, gold, and diamonds along with a variety of chemicals to produce devices. The downside is that, again, not all devices you make are 100% reliable when you first discover them. + +

Reliability and You

+ As it has been stated, many devices when they're first discovered do not have a 100% reliablity when you first discover them. Instead, the reliablity of the device is dependent upon a base reliability value, whatever improvements to the design you've discovered through the Destructive Analyzer, and any advancements you've made with the device's source technologies. To be able to improve the reliability of a device, you have to use the device until it breaks beyond repair. Once that happens, you can analyze it in a Destructive Analyzer. Once the device reachs a certain minimum reliability, you'll gain tech advancements from it. + +

Building a Better Machine

+ Many machines produces from circuit boards and inserted into a machine frame require a variety of parts to construct. These are parts like capacitors, batteries, matter bins, and so forth. As your knowledge of science improves, more advanced versions are unlocked. If you use these parts when constructing something, it's attributes may be improved. For example, if you use an advanced matter bin when constructing an autolathe (rather then a regular one), it'll hold more materials. Experiment around with stock parts of various qualities to see how they affect the end results! Be warned, however: Tier 3 and higher stock parts don't have 100% reliability and their low reliability may affect the reliability of the end machine. + + + "} diff --git a/code/game/research/designs.dm b/code/game/research/designs.dm index 1fdff5dccaf..3b20235920b 100644 --- a/code/game/research/designs.dm +++ b/code/game/research/designs.dm @@ -609,6 +609,16 @@ datum materials = list("$glass" = 2000, "acid" = 20) build_path = "/obj/machinery/autolathe" + pacman + name = "PACMAN-type Generator Board" + desc = "The circuit board that for a PACMAN-type portable generator." + id = "pacman" + req_tech = list("plasmatech" = 2, "powerstorage" = 3) + build_type = IMPRINTER + reliability_base = 80 + materials = list("$glass" = 2000, "acid" = 20) + build_path = "/obj/item/weapon/circuitboard/pacman" + ///////////////////////////////////////// ////////////Medical Tools//////////////// ///////////////////////////////////////// diff --git a/code/game/research/protolathe.dm b/code/game/research/protolathe.dm index 615934c1d78..98f6951aae0 100644 --- a/code/game/research/protolathe.dm +++ b/code/game/research/protolathe.dm @@ -18,6 +18,7 @@ Note: Must be placed west/left of and R&D console to function. gold_amount = 0.0 silver_amount = 0.0 plasma_amount = 0.0 + uranium_amount = 0.0 diamond_amount = 0.0 clown_amount = 0.0 @@ -35,7 +36,7 @@ Note: Must be placed west/left of and R&D console to function. RefreshParts() proc/TotalMaterials() //returns the total of all the stored materials. Makes code neater. - return m_amount + g_amount + gold_amount + silver_amount + plasma_amount + diamond_amount + clown_amount + return m_amount + g_amount + gold_amount + silver_amount + plasma_amount + uranium_amount + diamond_amount + clown_amount RefreshParts() var/T = 0 @@ -129,6 +130,8 @@ Note: Must be placed west/left of and R&D console to function. silver_amount += amount * 3750 else if(istype(stack, /obj/item/stack/sheet/plasma)) plasma_amount += amount * 3750 + else if(istype(stack, /obj/item/stack/sheet/uranium)) + uranium_amount += amount * 3750 else if(istype(stack, /obj/item/stack/sheet/diamond)) diamond_amount += amount * 3750 else if(istype(stack, /obj/item/stack/sheet/clown)) diff --git a/code/game/research/rdconsole.dm b/code/game/research/rdconsole.dm index a59b42cecf7..7db8cd836e8 100644 --- a/code/game/research/rdconsole.dm +++ b/code/game/research/rdconsole.dm @@ -253,7 +253,9 @@ won't update every console in existence) but it's more of a hassle to do. Also, linked_lathe.m_amount = min((linked_lathe.max_material_storage - linked_lathe.TotalMaterials()), (linked_destroy.loaded_item.m_amt*linked_destroy.decon_mod)) linked_lathe.g_amount = min((linked_lathe.max_material_storage - linked_lathe.TotalMaterials()), (linked_destroy.loaded_item.g_amt*linked_destroy.decon_mod)) linked_destroy.loaded_item = null - for(var/I in contents) + for(var/obj/I in linked_destroy.contents) + for(var/mob/M in I.contents) + M.death() del(I) use_power(250) linked_destroy.icon_state = "d_analyzer" @@ -310,6 +312,8 @@ won't update every console in existence) but it's more of a hassle to do. Also, linked_lathe.silver_amount = max(0, (linked_lathe.silver_amount-being_built.materials[M])) if("$plasma") linked_lathe.plasma_amount = max(0, (linked_lathe.plasma_amount-being_built.materials[M])) + if("$uranium") + linked_lathe.uranium_amount = max(0, (linked_lathe.uranium_amount-being_built.materials[M])) if("$diamond") linked_lathe.diamond_amount = max(0, (linked_lathe.diamond_amount-being_built.materials[M])) if("$clown") @@ -386,6 +390,9 @@ won't update every console in existence) but it's more of a hassle to do. Also, if("plasma") new /obj/item/stack/sheet/plasma(linked_lathe.loc, text2num(href_list["ejectsheet_amt"])) linked_lathe.plasma_amount = max(0, (linked_lathe.plasma_amount-(text2num(href_list["ejectsheet_amt"]) * 3750))) + if("uranium") + new /obj/item/stack/sheet/uranium(linked_lathe.loc, text2num(href_list["ejectsheet_amt"])) + linked_lathe.uranium_amount = max(0, (linked_lathe.uranium_amount-(text2num(href_list["ejectsheet_amt"]) * 3750))) if("diamond") new /obj/item/stack/sheet/diamond(linked_lathe.loc, text2num(href_list["ejectsheet_amt"])) linked_lathe.diamond_amount = max(0, (linked_lathe.diamond_amount-(text2num(href_list["ejectsheet_amt"]) * 3750))) @@ -412,6 +419,15 @@ won't update every console in existence) but it's more of a hassle to do. Also, linked_imprinter.linked_console = null linked_imprinter = null + else if(href_list["reset"]) //Reset the R&D console's database. + var/choice = alert("R&D Console Database Reset", "Are you sure you want to reset the R&D console's database? Data lost cannot be recovered.", "Continue", "Cancel") + if(choice == "Continue") + screen = 0.0 + del(files) + files = new /datum/research(src) + spawn(20) + screen = 1.6 + updateUsrDialog() updateUsrDialog() return @@ -477,7 +493,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, if(t_disk.stored == null) dat += "The disk has no data stored on it.
" dat += "Operations: " - dat += "
Load Tech to Disk || " + dat += "Load Tech to Disk || " else dat += "Name: [t_disk.stored.name]
" dat += "Level: [t_disk.stored.level]
" @@ -494,13 +510,13 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "[T.name] " dat += "(Copy to Disk)
" dat += "

Main Menu || " - dat += "Return to Disk Operations" + dat += "Return to Disk Operations" if(1.4) //Design Disk menu. if(d_disk.blueprint == null) dat += "The disk has no data stored on it.
" dat += "Operations: " - dat += "Load Design to Disk || " + dat += "Load Design to Disk || " else dat += "Name: [d_disk.blueprint.name]
" dat += "Level: [between(0, (d_disk.blueprint.reliability + rand(-15,15)), 100)]
" @@ -524,7 +540,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "[D.name] " dat += "(Copy to Disk)
" dat += "
Main Menu || " - dat += "Return to Disk Operations" + dat += "Return to Disk Operations" if(1.6) //R&D console settings dat += "R&D Console Setting:

" @@ -533,6 +549,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, else dat += "Connect to Research Network
" dat += "Device Linkage Menu
" dat += "Lock Console
" + dat += "Reset R&D Database.
" dat += "
Main Menu" if(1.7) //R&D device linkage @@ -602,6 +619,8 @@ won't update every console in existence) but it's more of a hassle to do. Also, if(D.materials[M] > linked_lathe.silver_amount) check_materials = 0 if("$plasma") if(D.materials[M] > linked_lathe.plasma_amount) check_materials = 0 + if("$uranium") + if(D.materials[M] > linked_lathe.uranium_amount) check_materials = 0 if("$diamond") if(D.materials[M] > linked_lathe.diamond_amount) check_materials = 0 if("$clown") @@ -653,6 +672,13 @@ won't update every console in existence) but it's more of a hassle to do. Also, if(linked_lathe.plasma_amount > 18750) dat += "(5 Sheets) " if(linked_lathe.plasma_amount > 3750) dat += "(Max Sheets)" dat += "
" + //Uranium + dat += "* [linked_lathe.uranium_amount] cm3 of Uranium || " + dat += "Eject: " + if(linked_lathe.uranium_amount > 3750) dat += "(1 Sheet) " + if(linked_lathe.uranium_amount > 18750) dat += "(5 Sheets) " + if(linked_lathe.uranium_amount > 3750) dat += "(Max Sheets)" + dat += "
" //Diamond dat += "* [linked_lathe.diamond_amount] cm3 of Diamond || " dat += "Eject: " diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm index d5fade9cb3d..61575e6fc30 100644 --- a/code/modules/power/port_gen.dm +++ b/code/modules/power/port_gen.dm @@ -33,4 +33,139 @@ turn on/off /obj/machinery/power/port_gen/examine() display round(lastgen) and plasmatank amount -*/ \ No newline at end of file +*/ + +//Previous code been here forever, adding new framework for portable generators + + +//Baseline portable generator. Has all the default handling. Not intended to be used on it's own (since it generates unlimited power). +/obj/machinery/power/port_gen + name = "protable generator" + desc = "A portable generator for emergency backup power" + icon = 'power.dmi' + icon_state = "portgen0" + density = 1 + anchored = 0 + directwired = 1 + use_power = 0 + var + active = 0 + power_gen = 5000 + open = 0 + recent_fault = 0 + + proc + HasFuel() //Placeholder for fuel check. + return 1 + + UseFuel() //Placeholder for fuel use. + return + + process() + if(active && HasFuel() && !crit_fail && powernet) + if(prob(reliability)) add_avail(power_gen) + else if(!recent_fault) recent_fault = 1 + else crit_fail = 1 + UseFuel() + else + active = 0 + icon_state = initial(icon_state) + + attack_hand(mob/user as mob) + if(..()) + return + if(!anchored) + return + + examine() + set src in oview(1) + if(active) + usr << "\blue The generator is on." + else + usr << "\blue The generator is off." + +/obj/machinery/power/port_gen/pacman + name = "P.A.C.M.A.N.-type Portable Generator" + var + plasma_coins = 0 + max_coins = 120 + + New() + ..() + component_parts = list() + component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) + component_parts += new /obj/item/weapon/stock_parts/micro_laser(src) + component_parts += new /obj/item/weapon/cable_coil(src) + component_parts += new /obj/item/weapon/cable_coil(src) + component_parts += new /obj/item/weapon/stock_parts/capacitor(src) + component_parts += new /obj/item/weapon/circuitboard/pacman(src) + RefreshParts() + + RefreshParts() + var/temp_rating = 0 + var/temp_reliability = 0 + for(var/obj/item/weapon/stock_parts/SP in component_parts) + if(istype(SP, /obj/item/weapon/stock_parts/matter_bin)) + max_coins = SP.rating * SP.rating * 120 + else if(istype(SP, /obj/item/weapon/stock_parts/micro_laser) || istype(SP, /obj/item/weapon/stock_parts/capacitor)) + temp_rating += SP.rating + for(var/obj/item/weapon/CP in component_parts) + temp_reliability += CP.reliability + reliability = min(round(temp_reliability / 4), 100) + power_gen = round(5000 * (max(2, temp_rating) / 2)) + + examine() + ..() + usr << "\blue The generator has [plasma_coins] units of fuel left, producing [power_gen] per cycle." + if(crit_fail) usr << "\red The generator seems to have broken down." + + HasFuel() + if(plasma_coins) + return 1 + return 0 + + UseFuel() + if(plasma_coins) + plasma_coins-- + return + + attackby(var/obj/item/O as obj, var/mob/user as mob) + if(istype(O, /obj/item/weapon/coin/plasma)) + if(plasma_coins >= max_coins) + user << "\red The generator already has it's maximum amount of fuel!" + return + plasma_coins++ + user.drop_item() + del(O) + user << "\blue You add a coin to the generator." + + else if(!active) + if(istype(O, /obj/item/weapon/wrench)) + anchored = !anchored + if(anchored) + user << "\blue The generator is locked into place." + else + user << "\blue The generator is unbolted from the floor." + makepowernets() + else if(istype(O, /obj/item/weapon/screwdriver)) + open = !open + else if(istype(O, /obj/item/weapon/crowbar) && !open) + var/obj/machinery/constructable_frame/machine_frame/new_frame = new /obj/machinery/constructable_frame/machine_frame(src.loc) + for(var/obj/item/I in component_parts) + if(I.reliability < 100) + I.crit_fail = 1 + I.loc = src.loc + new_frame.state = 2 + new_frame.icon_state = "box_1" + del(src) + + attack_hand(mob/user as mob) + ..() + if(!active && HasFuel() && !crit_fail && powernet) + active = 1 + icon_state = "portgen1" + user << "\blue The generator is on." + else if(active) + active = 0 + icon_state = "portgen0" + user << "\blue The generator is off." diff --git a/icons/obj/library.dmi b/icons/obj/library.dmi index 437ee6c7a4ad7c2907448a744239417fce31f537..7404f6faf4dc648c40a15f6075e5f1de8383ba85 100644 GIT binary patch literal 10697 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

}Z5LiXzp5646k@hCC!4;6~; zXcR&C!Dn%h#%*u?UOgSaLuP@@`dpPZAc=BwA3l)cOB!JbOGjD+e%S!tyclLw;MI!2!IV=6w@bbJU#z7W=g3gI*Od*`%ei{&YjQtm|HIa@UXfEl1geI1-LX{8ZI%NN0H;tSK zRbB$~UcpMC4D8H*q{8W5!HzuB&oE(ac-~(?ywPBy8B||ZB7C3S7+hl9ffYfQ-v-Nd z^(_XmL+|}I8xs?W{l61d`O*u-pPeHT;F7jX5Z=$RBCR^~0a`+!3jfDYr!{<+C`HWR zN+<=c_gAO2)rf2!RPwZ|4*UO8muWlqm4u^hCF^u3bvZi!hUHC?`7tA07n^FvF->{3 z-!-6btS#c7u&g#9?c{_l#SeS_IYtG^XFUevaeY*W?bwuldv}@L_`tZsr`v}Dp}af5 zknSgXb~c4>+ufs6*Pe3ov+~@)kMal z1QGsW)mlUtKea4m=m)PuX&`1eIJ|8f)bjenNH>CbfMP*@;Ux~HOI285a=EuOy|)2p z^N61ogR%780rkLg&EDeg98{sAi)iZ(4&o>RzJ~Q|uW!JVLefBTP!p~JI41moX+CeN W^7t!mIO^Z*0Sa=evQ_WRL;nY{(0kng diff --git a/maps/tgstation.2.0.3.dmm b/maps/tgstation.2.0.3.dmm index e156ca950de..f35b2c94195 100644 --- a/maps/tgstation.2.0.3.dmm +++ b/maps/tgstation.2.0.3.dmm @@ -4286,7 +4286,7 @@ "bEv" = (/obj/machinery/atmospherics/pipe/simple{color = "red"; dir = 4; icon_state = "intact-r"; layer = 3; level = 2},/obj/machinery/atmospherics/binary/pump{color = "blue"; dir = 1; icon_state = "intact_on"; name = "Distribution Loop Inlet Pump"; on = 1; target_pressure = 1000},/turf/simulated/floor,/area/atmos) "bEw" = (/obj/machinery/atmospherics/pipe/simple{color = "red"; dir = 4; icon_state = "intact-r"; layer = 3; level = 2},/obj/grille,/obj/window/reinforced{tag = "icon-rwindow (EAST)"; icon_state = "rwindow"; dir = 4},/obj/window/reinforced{tag = "icon-rwindow (WEST)"; icon_state = "rwindow"; dir = 8},/turf/simulated/floor/plating,/area/atmos) "bEx" = (/obj/lattice,/obj/machinery/atmospherics/pipe/simple{color = "red"; dir = 9; icon_state = "intact-r"; layer = 3; level = 2},/turf/space,/area) -"bEy" = (/obj/table{dir = 1; icon_state = "tabledir"},/obj/item/device/flashlight,/obj/item/device/flashlight,/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) +"bEy" = (/obj/table{dir = 1; icon_state = "tabledir"},/obj/item/weapon/book/manual/research_and_development,/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "bEz" = (/obj/table{dir = 1; icon_state = "tabledir"},/obj/item/weapon/hand_labeler,/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "bEA" = (/obj/table{dir = 1; icon_state = "tabledir"},/obj/machinery/light,/obj/item/weapon/paper_bin,/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "bEB" = (/obj/table{dir = 5; icon_state = "tabledir"},/obj/item/weapon/pen,/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) @@ -4728,7 +4728,7 @@ "bMV" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/item/device/radio/intercom{pixel_x = -25},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "bMW" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "bMX" = (/obj/table{dir = 10; icon_state = "tabledir"},/obj/item/device/prox_sensor{pixel_x = -4; pixel_y = 1},/obj/item/device/prox_sensor{pixel_x = 0; pixel_y = 2},/obj/item/device/prox_sensor{pixel_x = 8; pixel_y = 9},/obj/item/device/prox_sensor{pixel_x = 9; pixel_y = -2},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) -"bMY" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/obj/table{icon_state = "tabledir"; dir = 6; pixel_x = 0},/obj/item/device/multitool,/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) +"bMY" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/obj/table{icon_state = "tabledir"; dir = 6; pixel_x = 0},/obj/item/device/multitool,/obj/item/device/flashlight,/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "bMZ" = (/obj/grille,/obj/window/reinforced{tag = "icon-rwindow (EAST)"; icon_state = "rwindow"; dir = 4},/obj/window/reinforced,/obj/window/reinforced{tag = "icon-rwindow (WEST)"; icon_state = "rwindow"; dir = 8},/obj/machinery/atmospherics/pipe/simple{color = "blue"; icon_state = "intact-b-f"; level = 1; name = "pipe"},/turf/simulated/floor/plating,/area/crew_quarters/hor) "bNa" = (/obj/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/hor) "bNb" = (/obj/stool/chair{dir = 1},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/obj/landmark/start{name = "Research Director"},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/hor) diff --git a/tgstation.dme b/tgstation.dme index d72b875f868..91baa8b45df 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -532,6 +532,7 @@ #include "code\game\objects\items\weapons\hydroponics.dm" #include "code\game\objects\items\weapons\implants.dm" #include "code\game\objects\items\weapons\kitchen.dm" +#include "code\game\objects\items\weapons\manuals.dm" #include "code\game\objects\items\weapons\medical.dm" #include "code\game\objects\items\weapons\misc.dm" #include "code\game\objects\items\weapons\mops_cleaners.dm"