<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://cm-ss13.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Drulikar</id>
	<title>CM-SS13 - Wiki - User contributions [en-gb]</title>
	<link rel="self" type="application/atom+xml" href="https://cm-ss13.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Drulikar"/>
	<link rel="alternate" type="text/html" href="https://cm-ss13.com/wiki/Special:Contributions/Drulikar"/>
	<updated>2026-04-13T09:57:48Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://cm-ss13.com/w/index.php?title=Template:Main_page/search&amp;diff=40234</id>
		<title>Template:Main page/search</title>
		<link rel="alternate" type="text/html" href="https://cm-ss13.com/w/index.php?title=Template:Main_page/search&amp;diff=40234"/>
		<updated>2026-01-28T05:59:17Z</updated>

		<summary type="html">&lt;p&gt;Drulikar: search button fix?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;home-header&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;citizen-search-trigger&amp;quot; class=&amp;quot;home-header__search citizen-search-trigger&amp;quot; role=&amp;quot;button&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;home-header__searchIcon&amp;quot;&amp;gt;[[File:WikimediaUI-Search.svg|16px|link=]]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;home-header__searchText&amp;quot;&amp;gt;Click here&amp;lt;span class=&amp;quot;desktoponly&amp;quot;&amp;gt; or press {{Key press|/}}&amp;lt;/span&amp;gt; to start searching&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;templatestyles src=&amp;quot;Template:Main page/search/styles.css&amp;quot;/&amp;gt;&amp;lt;noinclude&amp;gt;&amp;lt;!-- For preview only --&amp;gt;&amp;lt;templatestyles src=&amp;quot;Template:Main Page/Shared/Styles.css&amp;quot; /&amp;gt;{{/doc}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Drulikar</name></author>
	</entry>
	<entry>
		<id>https://cm-ss13.com/w/index.php?title=MediaWiki:Sidebar&amp;diff=39888</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://cm-ss13.com/w/index.php?title=MediaWiki:Sidebar&amp;diff=39888"/>
		<updated>2025-12-27T03:54:20Z</updated>

		<summary type="html">&lt;p&gt;Drulikar: Add PvE WIki links to sidebar&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* Main&lt;br /&gt;
** https://github.com/cmss13-devs/cmss13 | GitHub&lt;br /&gt;
** https://forum.cm-ss13.com | Forum&lt;br /&gt;
** https://www.cm-ss13.com/rules | Rules&lt;br /&gt;
** https://cm-ss13.com/wiki/PVE:Main_Page | PvE Wiki&lt;br /&gt;
** https://cm-ss13.com/wiki/HCW:Main_Page | PvE Halo Wiki&lt;br /&gt;
&lt;br /&gt;
* Marines&lt;br /&gt;
** https://cm-ss13.com/wiki/Marine_Quickstart_Guide | Quickstart Guide&lt;br /&gt;
** https://cm-ss13.com/wiki/Marines | About the Marines&lt;br /&gt;
** https://cm-ss13.com/wiki/Marine_Equipment | Marine Equipment&lt;br /&gt;
** https://cm-ss13.com/wiki/Requisitions | Requisitions&lt;br /&gt;
** https://cm-ss13.com/wiki/Standard_Operating_Procedure | Standard Operating Procedure&lt;br /&gt;
** https://cm-ss13.com/wiki/Marine_Law | Marine Law&lt;br /&gt;
** https://cm-ss13.com/wiki/Rank | Rank&lt;br /&gt;
&lt;br /&gt;
* Aliens&lt;br /&gt;
** https://cm-ss13.com/wiki/Xeno_Quickstart_Guide | Quickstart Guide&lt;br /&gt;
** https://cm-ss13.com/wiki/Aliens | About the Aliens&lt;br /&gt;
** https://cm-ss13.com/wiki/Hives | Hives&lt;br /&gt;
** https://cm-ss13.com/wiki/File:Evolution.png | Evolution Diagram&lt;br /&gt;
** https://cm-ss13.com/wiki/Strains | Strains&lt;br /&gt;
&lt;br /&gt;
* Maps&lt;br /&gt;
** https://webmap.affectedarc07.co.uk/ | Webmaps&lt;br /&gt;
** https://cm-ss13.com/wiki/USS_Almayer | USS Almayer&lt;br /&gt;
** https://cm-ss13.com/w/images/6/6f/LV624.png | LV-624&lt;br /&gt;
** https://cm-ss13.com/w/images/1/18/Map_icecolony.png | Shivas Snowball&lt;br /&gt;
** https://cm-ss13.com/w/images/7/78/Whiskey_outpost.png | Whiskey Outpost&lt;br /&gt;
** https://cm-ss13.com/w/images/9/9e/Solaris_Ridge.png | Solaris Ridge&lt;br /&gt;
** https://cm-ss13.com/w/images/4/4c/Map_Prison.png | Fiorina - Cellblocks&lt;br /&gt;
** https://cm-ss13.com/w/images/e/e0/Prison_Station_Science_Annex.png | Fiorina - Science Annex&lt;br /&gt;
** https://cm-ss13.com/w/images/9/92/Trijent_Dam.png | Trijent Dam&lt;br /&gt;
** https://cm-ss13.com/w/images/8/8e/CORSAT_Satellite.png | Corsat&lt;br /&gt;
** https://cm-ss13.com/w/images/2/21/Sorokyne_Wiki_Map.jpg | Sorokyne&lt;br /&gt;
** https://cm-ss13.com/w/images/0/0d/Kutjevo_a1.jpg | Kutjevo&lt;br /&gt;
** https://cm-ss13.com/w/images/b/bb/C_claim.png | Chance&#039;s Claim&lt;br /&gt;
** https://cm-ss13.com/w/images/9/94/New_Varadero.png | New Varadero&lt;br /&gt;
** https://cm-ss13.com/w/images/6/60/LV759_Hybrisa_Prospera.png | LV-759 Hybrisa Prospera&lt;br /&gt;
&lt;br /&gt;
* Lore&lt;br /&gt;
** https://cm-ss13.com/wiki/Lore_Home | Lore&lt;br /&gt;
* Wiki Editing&lt;br /&gt;
** https://cm-ss13.com/wiki/Special:RecentChanges | Recent Changes&lt;br /&gt;
** https://cm-ss13.com/wiki/Special:ActiveUsers | Active Users&lt;br /&gt;
** https://cm-ss13.com/wiki/Helping_Out | How to Wiki&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;/div&gt;</summary>
		<author><name>Drulikar</name></author>
	</entry>
	<entry>
		<id>https://cm-ss13.com/w/index.php?title=Researcher&amp;diff=39874</id>
		<title>Researcher</title>
		<link rel="alternate" type="text/html" href="https://cm-ss13.com/w/index.php?title=Researcher&amp;diff=39874"/>
		<updated>2025-12-25T06:15:14Z</updated>

		<summary type="html">&lt;p&gt;Drulikar: Added research tagged guides to User made information section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{JobPageHeader&lt;br /&gt;
|headerbgcolor = #2175d9&lt;br /&gt;
|headerfontcolor = white&lt;br /&gt;
|stafftype = MEDICAL / RESEARCH&lt;br /&gt;
|imagebgcolor = lightblue&lt;br /&gt;
|img = Sci.png&lt;br /&gt;
|jobtitle = Researcher&lt;br /&gt;
|difficulty = Medium&lt;br /&gt;
|rank = Doctor [under 10hrs], Assistant Professor [10hrs], Associate Professor [25hrs], Professor [70hrs], Regents Professor [175hrs]&lt;br /&gt;
|superior = [[Chief Medical Officer]], [[Commanding Officer]]/[[Executive Officer]]&lt;br /&gt;
|unlock = Five hours as medical roles.&lt;br /&gt;
|duties = Research and Development, inspect any xenobiological elements given to you by Marines. Develop new weaponry such as Chemical Grenades in cooperation with the Ordnance Technicians and discover new chemicals.&lt;br /&gt;
|guides = [[Chemistry | Guide to Chemistry]], [[Guide_to_Paperwork | Guide to Paperwork]]&lt;br /&gt;
|description = You&#039;re a medical researcher on loan to the USCM from Weyland-Yutani. You are tasked with researching and developing new medical treatments, helping your fellow doctors, and generally learning new things. Your role involves a lot of roleplaying, but you can perform the function of a regular doctor. Do not hand out things to Marines without getting permission from your supervisor. You do not answer to the Corporate Liaison.&lt;br /&gt;
}}&lt;br /&gt;
{{Header&lt;br /&gt;
 |PrimaryColor = #ad8407&lt;br /&gt;
 |SecondaryColor = #ffffff00&lt;br /&gt;
 |HeaderContent = &amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;Work in Progress&amp;lt;/span&amp;gt;&lt;br /&gt;
 |Image = Under_Construction.png&lt;br /&gt;
 |SubContent = Due to recent changes from the Research Rework, content on this page may be missing important information or be incorrect. This page has been designated as a work in progress. To locate any other work in progress pages head [[:Category:WiP | here]]&lt;br /&gt;
 |Category1 = WiP&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&amp;quot;I wish you could understand what we&#039;re trying to do here. The potential for this species goes way beyond urban pacification. New alloys, new vaccines. Nothing like this we&#039;ve ever seen on any world before.&amp;quot;&#039;&#039; ―Dr. Wren, &#039;&#039;Alien Resurrection&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Role ==&lt;br /&gt;
----&lt;br /&gt;
As the Medical Researcher it is your job to research and develop new technologies in the science lab and study anything xenobiological. The nature of the Researcher means the role is very open-ended, and can be played in several ways. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ultimately, your job is to focused around analyzing chemicals, alien blood/liquids, storing alien corpses. Synthesizing experimental drugs and creating prototype explosive grenades. Furthermore you are fully qualified to assist the Medical staff with surgeries, should Medbay be overwhelmed in triage.&lt;br /&gt;
&lt;br /&gt;
=Chemical Research: Pharmacology=&lt;br /&gt;
Research has its own chemistry lab that can be used to help out medical by pumping out useful healing chemicals. It is also possible to mix chemicals together to get multiple benefits; however, be aware that there are certain chemicals which will cause &#039;&#039;&#039;more harm&#039;&#039;&#039; if they are used together. Consult the [[Chemistry|chemistry guide]] for more details.&lt;br /&gt;
&lt;br /&gt;
==Researching Chemicals==&lt;br /&gt;
As a medical researcher on-board the USS Almayer you&#039;re tasked with creating new medications that might be useful to the marines. But what can you do that the silly doctor in chemistry downstairs can not? Discovering completely new medications of course! Every round there will be new chemicals for you to discover. You&#039;ll even start with a note in your old lab coat pocket to get you started. Researching a new chemical requires two important tasks to be completed: discovering the recipe and the properties of the chemical. The latter requiring either thorough testing or sufficient data clearance. So what are you waiting for? It is time to do SCIENCE!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A lot of your work will require a resource called &#039;&#039;&#039;Research Credits&#039;&#039;&#039;. These can currently be earned by identifying new chemicals, including xenomorph blood, or by gaining 5 points every 10 minutes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Company has provided your laboratory with an &#039;&#039;Advanced X-Ray Fluorescence Scanner&#039;&#039; to help you identify chemicals. On your journey, you will be expected to use this and analyze research samples received from colonies. If you identify a valuable chemical, The Company&#039;s interest in your lab will increase. They might even pay USCM High Command.&lt;br /&gt;
&lt;br /&gt;
===Research Machines===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;background-color:#A9A9A9; width:130px;&amp;quot;|Picture&lt;br /&gt;
! style=&amp;quot;background-color:#A9A9A9; width:150px;&amp;quot;|Name&lt;br /&gt;
! style=&amp;quot;background-color:#A9A9A9;&amp;quot;|Explanation&lt;br /&gt;
|-&lt;br /&gt;
|[[File:XRF.png|64px]]|| Advanced X-Ray Fluorescence Scanner || The A-XRF is an advanced spectrometer that can not only detect what a sample is, but also its chemical composition. It does this by nuking the sample with high energy radiation and detecting the emitted fluorescent x-ray patterns. By comparing this to the database it can identify the unique pattern of a sampled chemical, and the combination of chemicals that make the pattern possible. Although there might be chemicals which composition can&#039;t be fully identified. This means that you must acquire a sample of the unknown chemical first, and scan it with the XRF. Whenever the XRF scans something unknown, it will save that chemical&#039;s emission pattern to its database. &#039;&#039;&#039;Successfully identifying a chemical increases Company interests.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Samples are inserted using a vial filled with a pure chemical sample. After scanning, the XRF searches its database for any available information on the identified chemical. It is not actually able to figure out the properties of the chemical, that will require testing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
While the A-XRF can read data from the Company&#039;s private chemical database, your clearance level is limited and some information may be classified. Use the &#039;&#039;&#039;Research Data Terminal&#039;&#039;&#039; to purchase higher clearance or get a clearance grant by a corporate official.&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Chemical_Centrifuge.png|64px]]|| Chemical Centrifuge || The centrifuge is a research machine meant to assist working with the A-XRF and vial management. By using centrifugal forces it can separate chemicals from a beaker into a set of vials. To operate, insert any beaker with a mixture of chemicals and a vial box containing any amount of vials. The centrifuge will try to fill the vials with different chemicals from the beaker best possible. It will also label pure vials for you. &lt;br /&gt;
&lt;br /&gt;
Additionally the centrifuge also accepts autoinjectors. To do this, load empty autoinjectors into a vial storage box and insert the box into the centrifuge. The centrifuge will recharge the autoinjectors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The centrifuge operates under the following logic:&lt;br /&gt;
* Cycles through reagents in the input beaker starting from the top.&lt;br /&gt;
* Will fill pure vials containing the same reagent or an empty one. Purity of vials is first priority for the purpose of operating the A-XRF.&lt;br /&gt;
* Will &#039;&#039;not&#039;&#039; fill multiple vials with the same reagent. &#039;&#039;&#039;Unless the beaker only has a &#039;&#039;single&#039;&#039; reagent, then it will try to fill all as much as possible. This is useful for when filling autoinjectors.&#039;&#039;&#039;&lt;br /&gt;
* Will &#039;&#039;not&#039;&#039; transfer reagents from the input beaker if it is within an impure vial inside the box. Use this feature to make impure vials act as filters.&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Turingdispenser.png|64px]]|| Turing Dispenser || This advanced dispenser is only available to researchers and allows for a level of automation in chem production. While it is relatively complicated to use, it can become a powerful tool in the right hands. Use it to automate the production of advanced research chemicals or complicated drug mixes.&lt;br /&gt;
&lt;br /&gt;
The Turing Dispenser operates by following a set of instructions for what it should be dispensing. These instructions are provided by inserting a vial box, with the vial containing the amount of the chemical you want to dispense. The dispenser reads the vials in order from left to right. The dispenser will run until either: the output beaker is full, all program cycles has finished or a setting is changed while running.  &lt;br /&gt;
&lt;br /&gt;
Unlike the normal dispenser, the Turing Dispenser can directly dispense a wider range of chemicals. It can dispense any chemical the normal dispenser can with the exception of ethanol. In addition to any chemical available from the medical vendor with the exception of oxycodone. It can also directly dispense simple chemical compositions such as Sodium Chloride, Methane and Ammonia. Any other chemical requires the use of the &#039;&#039;Smartlink&#039;&#039; to be dispensed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Programs&#039;&#039;&#039;&lt;br /&gt;
The Turing Dispenser has two programs: &#039;&#039;Box&#039;&#039; and &#039;&#039;Memory&#039;&#039;. &#039;&#039;The Box Program&#039;&#039; is the currently inserted vial box, while &#039;&#039;The Memory Program&#039;&#039; is a Box Program that has been saved to the dispenser’s internal memory. The dispenser can run with just one of either program, or with both; in which case the Memory is run before the Box. This allows up to 12 dispensing steps to be configured (as each box can hold 6 vials). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Settings&#039;&#039;&#039;&lt;br /&gt;
* Program Multiplier: Multiplies the amount of the reagent that’s dispensed on each step. For example, a step with 20 water and a 3x multiplier will dispense 60 units of water.&lt;br /&gt;
* Program Cycles: How many times the full cycle of programs will be run before the dispenser goes to sleep.&lt;br /&gt;
* Autorun: If ON, then the dispenser will run the program automatically when both a vial box and a beaker is inserted.&lt;br /&gt;
* Smartlink: If ON, then the dispenser will check the nearby &#039;&#039;Smartfridge&#039;&#039; for the required chemicals before spending energy to dispense it. Additionally, this allows the dispenser to dispense &#039;&#039;exotic&#039;&#039; chemicals stored in the Smartfridge, making any recipe possible. If the required chemical can not be found and can not be dispensed using energy, then the dispenser will pause the program until the chemical is stored in the Smartfridge. Once available, the program will continue automatically. &#039;&#039;(Beware that, the dispenser will read the Smartfridge from top to bottom and use any beaker or bottle it finds containing the required chemical, even if that container is contaminated. This theoretically allows for more than 12 different chemicals to be dispensed in a cycle.)&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Researchterminal.png|64px]]|| Research Data Terminal || This terminal found inside the research study allows control of all research assets. It contains the database for all saved research documents, such as A-XRF scans and Synthesis reports. You can read the documents directly from the terminal, or print a copy. Additionally, the current status of research credits can be checked, and used for various functions. Any document can be added to the database by clicking it with a paper in hand.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Purchase Clearance&#039;&#039;&#039;&lt;br /&gt;
Upgrades the current clearance access by one level. Increasing the clearance level this way costs more the higher your clearance. Colony CLs can increase clearance for free, Up to a certain level. It also gives you one free research chemical each time you buy clearance to help you with your studies.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Disabled for now, Might be re-enabled so keeping this here&lt;br /&gt;
&#039;&#039;&#039;Transmit&#039;&#039;&#039;&lt;br /&gt;
If you want to pass on your science to the next generation of researchers, you can transmit your findings to the central research database of The Company. This way, other researchers may be able to continue your research, which may be useful if your duty ends early or if you become unable to continue your work for other reasons. But using this function is not free. The more positive properties there are in the chemical, the higher the cost of transmission, while a high number of properties and special rare properties also increase the cost. However, the cost is also lowered by neutral properties and twice as much by negative properties. &#039;&#039;What this function actually does is make the chem spawn in the next round, but with a new name and new recipe. It will also gain a new clearance access, depending on how high the transmission cost was.&#039;&#039;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Publish&#039;&#039;&#039;&lt;br /&gt;
The CMO&#039;s data terminal has the special function of publishing documents. This allows anyone with a HealthMate HUD to view the document remotely. Any paper scanned in the research terminal can be published in this way, even handwritten ones. It is thus a useful method for the CMO to provide precise information to medics on new chemicals that are being distributed in the field, or any other useful documentation. Be sure to ask your CMO to publish your hard work, and for him to announce over medical comms that a new paper has been published.&lt;br /&gt;
|-&lt;br /&gt;
|[[File:SynthesisSimulator.png|128px]]|| Synthesis Simulator || This computer uses advanced algorithms to perform simulations of reagent properties, for the purpose of calculating the synthesis required to make a new variant. It needs a complete data sheet from an A-XRF scan to function, meaning that all components and properties of the chemical must be known. All simulations requires research credits. Any time you modify a chemical property of a reagent, Its OD threshold will decrease. &#039;&#039;Mixing a chemical with another variant of itself will cause it to react back into its original form.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Amplify&#039;&#039;&#039;&lt;br /&gt;
This function increases the level of the selected property by one. The credit cost increases based on the level of the property.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Suppress&#039;&#039;&#039;&lt;br /&gt;
This function is the opposite of Amplify, meaning the level of the property is decreased. The credit cost for this function is always 2. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Relate&#039;&#039;&#039;&lt;br /&gt;
The relate function makes it possible to change the actual properties of the chemical. To do this, an A-XRF analysis of a reference chemical must also be inserted. The target and reference property must be of the exact same level for relation to be possible, and the target must have more than one property. The credit cost is equal to the level of the targeted property.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;&#039;Chemical Naming Conventions&#039;&#039;&#039; ====&lt;br /&gt;
When a chemical property is changed, the simulator will automatically label the chemical with a code telling you about the changes. The codes are three letter combinations followed by a number signifying the new level of the property.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Properties==&lt;br /&gt;
This is a list of all chemical properties and their effects. They are sorted in the same categories as in the code. &amp;lt;POTENCY&amp;gt; is half the level of the property. &lt;br /&gt;
&lt;br /&gt;
The DISABLED rarity means this property can&#039;t appear in randomly generated chems. The same goes for ADMIN, with the addition that very few non event exclusive reagents have properties with this rarity level.&lt;br /&gt;
&lt;br /&gt;
All effects are applied once per life tick. Life ticks happen once every two seconds.&lt;br /&gt;
&lt;br /&gt;
The Touch column indicates what this chemical will do when inhaled/sprayed upon a human or xenomorph.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- to add new properties, make a new page at Properties/[property name] and fill out the template on the root page Properties --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Positive===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 5%; margin: auto; background-color: #A9A9A92A;&amp;quot; |Code&lt;br /&gt;
! style=&amp;quot;width: 10%; margin: auto; background-color: #A9A9A92A;&amp;quot; |Name&lt;br /&gt;
! style=&amp;quot;width: 10%; margin: auto; background-color: #A9A9A92A;&amp;quot; |Rarity&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; style=&amp;quot;width: 20%; margin: auto; background-color: #A9A9A92A;&amp;quot; |Effect&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; style=&amp;quot;width: 20%; margin: auto; background-color: #A9A9A92A;&amp;quot; |OD&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; style=&amp;quot;width: 20%; margin: auto; background-color: #A9A9A92A;&amp;quot; |Crit OD&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; style=&amp;quot;width: 15%; margin: auto; background-color: #A9A9A92A;&amp;quot; |Touch&lt;br /&gt;
{{:Properties/Antitoxic}}&lt;br /&gt;
{{:Properties/Anticorrosive}}&lt;br /&gt;
{{:Properties/Neogenetic}}&lt;br /&gt;
{{:Properties/Repairing}}&lt;br /&gt;
{{:Properties/Hemogenic}}&lt;br /&gt;
{{:Properties/Neutralizing}}&lt;br /&gt;
{{:Properties/Disrupting}}&lt;br /&gt;
{{:Properties/Nervestimulating}}&lt;br /&gt;
{{:Properties/Musclestimulating}}&lt;br /&gt;
{{:Properties/Painkilling}}&lt;br /&gt;
{{:Properties/Hematopeutic}}&lt;br /&gt;
{{:Properties/Nephropeutic}}&lt;br /&gt;
{{:Properties/Pneumopeutic}}&lt;br /&gt;
{{:Properties/Oculopeutic}}&lt;br /&gt;
{{:Properties/Cardiopeutic}}&lt;br /&gt;
{{:Properties/Neuropeutic}}&lt;br /&gt;
{{:Properties/Bonemending}}&lt;br /&gt;
{{:Properties/Fluxing}}&lt;br /&gt;
{{:Properties/Neurocrygenic}}&lt;br /&gt;
{{:Properties/Crystallization}}&lt;br /&gt;
{{:Properties/Photosensitive}}&lt;br /&gt;
{{:Properties/Antiparasitic}}&lt;br /&gt;
{{:Properties/Organstabilizing}}&lt;br /&gt;
{{:Properties/Electrogenetic}}&lt;br /&gt;
{{:Properties/Defibrillating}}&lt;br /&gt;
{{:Properties/Hyperdensificating}}&lt;br /&gt;
{{:Properties/Neuroshielding}}&lt;br /&gt;
{{:Properties/Antiaddictive}}&lt;br /&gt;
{{:Properties/Transformative}}&lt;br /&gt;
{{:Properties/Fueling}}&lt;br /&gt;
{{:Properties/Oxidizing}}&lt;br /&gt;
{{:Properties/Flowing}}&lt;br /&gt;
{{:Properties/Explosive}}&lt;br /&gt;
{{:Properties/Cardiostabilizing}}&lt;br /&gt;
{{:Properties/Aiding}}&lt;br /&gt;
{{:Properties/Oxygenating}}&lt;br /&gt;
{{:Properties/Anticarcinogenic}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Neutral===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 5%; margin: auto; background-color: #A9A9A92A;&amp;quot; |Code&lt;br /&gt;
! style=&amp;quot;width: 10%; margin: auto; background-color: #A9A9A92A;&amp;quot; |Name&lt;br /&gt;
! style=&amp;quot;width: 10%; margin: auto; background-color: #A9A9A92A;&amp;quot; |Rarity&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; style=&amp;quot;width: 20%; margin: auto; background-color: #A9A9A92A;&amp;quot; |Effect&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; style=&amp;quot;width: 20%; margin: auto; background-color: #A9A9A92A;&amp;quot; |OD&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; style=&amp;quot;width: 20%; margin: auto; background-color: #A9A9A92A;&amp;quot; |Crit OD&lt;br /&gt;
{{:Properties/Cryometabolizing}}&lt;br /&gt;
{{:Properties/Thanatometabolizing}}&lt;br /&gt;
{{:Properties/Excreting}}&lt;br /&gt;
{{:Properties/Nutritious}}&lt;br /&gt;
{{:Properties/Ketogenic}}&lt;br /&gt;
{{:Properties/Neuroinhibiting}}&lt;br /&gt;
{{:Properties/Alcoholic}}&lt;br /&gt;
{{:Properties/Hallucinogenic}}&lt;br /&gt;
{{:Properties/Antispasmodic}}&lt;br /&gt;
{{:Properties/Hyperthermic}}&lt;br /&gt;
{{:Properties/Hypothermic}}&lt;br /&gt;
{{:Properties/Atrichogenic}}&lt;br /&gt;
{{:Properties/Trichogenic}}&lt;br /&gt;
{{:Properties/Allergenic}}&lt;br /&gt;
{{:Properties/Euphoric}}&lt;br /&gt;
{{:Properties/Emetic}}&lt;br /&gt;
{{:Properties/Psychostimulating}}&lt;br /&gt;
{{:Properties/Antihallucinogenic}}&lt;br /&gt;
{{:Properties/Hypometabolic}}&lt;br /&gt;
{{:Properties/Hypnotic}}&lt;br /&gt;
{{:Properties/Hyperthrottling}}&lt;br /&gt;
{{:Properties/Viscous}}&lt;br /&gt;
{{:Properties/Thermostabilizing}}&lt;br /&gt;
{{:Properties/Focusing}}&lt;br /&gt;
{{:Properties/Unknown}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Negative===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 5%; margin: auto; background-color: #A9A9A92A;&amp;quot; |Code&lt;br /&gt;
! style=&amp;quot;width: 10%; margin: auto; background-color: #A9A9A92A;&amp;quot; |Name&lt;br /&gt;
! style=&amp;quot;width: 10%; margin: auto; background-color: #A9A9A92A;&amp;quot; |Rarity&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; style=&amp;quot;width: 20%; margin: auto; background-color: #A9A9A92A;&amp;quot; |Effect&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; style=&amp;quot;width: 20%; margin: auto; background-color: #A9A9A92A;&amp;quot; |OD&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; style=&amp;quot;width: 20%; margin: auto; background-color: #A9A9A92A;&amp;quot; |Crit OD&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; style=&amp;quot;width: 15%; margin: auto; background-color: #A9A9A92A;&amp;quot; |Touch&lt;br /&gt;
{{:Properties/Hypoxemic}}&lt;br /&gt;
{{:Properties/Toxic}}&lt;br /&gt;
{{:Properties/Corrosive}}&lt;br /&gt;
{{:Properties/Biocidic}}&lt;br /&gt;
{{:Properties/Intravenous}}&lt;br /&gt;
{{:Properties/Neuropathic}}&lt;br /&gt;
{{:Properties/Hemolytic}}&lt;br /&gt;
{{:Properties/Hemmorrhaging}}&lt;br /&gt;
{{:Properties/Carcinogenic}}&lt;br /&gt;
{{:Properties/Hepatotoxic}}&lt;br /&gt;
{{:Properties/Nephrotoxic}}&lt;br /&gt;
{{:Properties/Pneumotoxic}}&lt;br /&gt;
{{:Properties/Oculotoxic}}&lt;br /&gt;
{{:Properties/Cardiotoxic}}&lt;br /&gt;
{{:Properties/Neurotoxic}}&lt;br /&gt;
{{:Properties/Hypermetabolic}}&lt;br /&gt;
{{:Properties/Addictive}}&lt;br /&gt;
{{:Properties/Hemositic}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Special===&lt;br /&gt;
{| class=&amp;quot;wikitable unsortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 5%; margin: auto; background-color: #A9A9A92A;&amp;quot; |Code&lt;br /&gt;
! style=&amp;quot;width: 10%; margin: auto; background-color: #A9A9A92A;&amp;quot; |Name&lt;br /&gt;
! style=&amp;quot;width: 10%; margin: auto; background-color: #A9A9A92A;&amp;quot; |Rarity&lt;br /&gt;
! style=&amp;quot;width: 20%; margin: auto; background-color: #A9A9A92A;&amp;quot; |Effect&lt;br /&gt;
! style=&amp;quot;width: 20%; margin: auto; background-color: #A9A9A92A;&amp;quot; |OD&lt;br /&gt;
! style=&amp;quot;width: 20%; margin: auto; background-color: #A9A9A92A;&amp;quot; |Crit OD&lt;br /&gt;
! style=&amp;quot;width: 15%; margin: auto; background-color: #A9A9A92A;&amp;quot; |Touch&lt;br /&gt;
{{:Properties/Boosting}}&lt;br /&gt;
{{:Properties/Regulating}}&lt;br /&gt;
{{:Properties/Hypergenetic}}&lt;br /&gt;
{{:Properties/Fire penetrating}}&lt;br /&gt;
{{:Properties/DNA disintegrating}}&lt;br /&gt;
{{:Properties/Ciphering}}&lt;br /&gt;
{{:Properties/Crossmetabolizing}}&lt;br /&gt;
{{:Properties/Embryonic}}&lt;br /&gt;
{{:Properties/Ravening}}&lt;br /&gt;
{{:Properties/Curing}}&lt;br /&gt;
{{:Properties/Omnipotent}}&lt;br /&gt;
{{:Properties/Radius}}&lt;br /&gt;
{{:Properties/Intensity}}&lt;br /&gt;
{{:Properties/Duration}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Property Combinations===&lt;br /&gt;
You can combine some properties to create special properties. You don&#039;t actually need to do anything to combine them. Just have them both on the same chemical. &lt;br /&gt;
{| class=&amp;quot;wikitable unsortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 10%; margin: auto;&amp;quot; |Name&lt;br /&gt;
! style=&amp;quot;width: 25%; margin: auto;&amp;quot; |Properties Required&lt;br /&gt;
|-&lt;br /&gt;
|[[Researcher#DFB|Defibrilating]]&lt;br /&gt;
|[[Researcher#MST|Muscle Stimulating]], [[Researcher#CDP|Cardiopeutic]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Researcher#TMB|Thanatometabolizing]]&lt;br /&gt;
|[[Researcher#HPX|Hypoxemic]], [[Researcher#CMB|Cryometabolizing]], [[Researcher#NRC|Neurocrygenic]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Researcher#HDN|Hyperdensificating]]&lt;br /&gt;
|[[Researcher#MST|Muscle Stimulating]], [[Researcher#BNM|Bonemending]], [[Researcher#CRG|Carcinogenic]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Researcher#HTR|Hyperthrottling]]&lt;br /&gt;
|[[Researcher#PST|Psychostimulating]], [[Researcher#HLG|Hallucinogenic]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Researcher#NRS|Neuroshielding]]&lt;br /&gt;
|[[Researcher#AOL|Alcoholic]], [[Researcher#BLD|Balding]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Researcher#AAD|Antiaddictive]]&lt;br /&gt;
|[[Researcher#PST|Psychostimulating]], [[Researcher#AHL|Antihallucinogenic]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Researcher#ADT|Addictive]]&lt;br /&gt;
|[[Researcher#PST|Psychostimulating]], [[Researcher#NRT|Neurotoxic]]&lt;br /&gt;
|-&lt;br /&gt;
|Abominations against god and man.&lt;br /&gt;
|[[Researcher#CIP|Ciphering]], [[Researcher#XMB|Crossmetabolizing]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Hints===&lt;br /&gt;
Dealing with an unknown chemical is like walking blindfolded. The chemical can have any combination of good and bad properties. Discovering what these are will require testing and organized procedures. How to best approach this will be up to the individual researcher. But here are some things to keep in mind:&lt;br /&gt;
*You need 30 units of a chemical for the XRF to work. If you don&#039;t have enough, you might want to save it until you know the recipe. If you scan a chemical with the XRF, you will know everything about the chemical&#039;s properties, given enough clearance.&lt;br /&gt;
*Pay attention to research notes brought back from the colony. Colony notes can describe chemicals that are much stronger than the ones you can discover in the lab.&lt;br /&gt;
*You can scan basic chemicals like Peridaxon and Oxycodone for properties like painkilling and organ-stabilizing.&lt;br /&gt;
*Scanning any new chemical without requested clearance will still give you points, including xenomorph blood.&lt;br /&gt;
*There are only 6 chemicals possible in hydroponics, 3 are clearance one and the other 3 are clearance two.&lt;br /&gt;
*Distributing a new chemical can still get you in trouble if you overlooked a really bad effect.&lt;br /&gt;
*If you can&#039;t rely on the marines to bring back research materials, you can try to kick-start your research by mutating plants in hydroponics.&lt;br /&gt;
*Your goal is not to get every single person a sample of your new drug, but to help as many as possible. Use the Turing Dispenser for mass production and persuade your superiors to assist with the distribution.&lt;br /&gt;
&lt;br /&gt;
==Chemical Distribution ==&lt;br /&gt;
While it might be fun to inject a monkey (or coworkers) with your wonder-drug, your ultimate goal should be to distribute it to where it is most needed. You should always seek the CMO&#039;s approval before performing mass distribution, because if an accident happens, it will be &#039;&#039;your&#039;&#039; medical license that is threatened otherwise. Below are some suggestions on how to distribute your chemicals.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;background-color:#A9A9A9; width:100px;&amp;quot; |Picture&lt;br /&gt;
! style=&amp;quot;background-color:#A9A9A9; width:150px;&amp;quot; |Name&lt;br /&gt;
! style=&amp;quot;background-color:#A9A9A9;&amp;quot; |Explanation&lt;br /&gt;
|-&lt;br /&gt;
|[[File:PillBottle.png|64px]]||Pill bottle ||The old classic, but also the slowest in terms of production and ingestion. It&#039;s an efficient way to store a lot of chemical volume, but that&#039;s the only upside, really.&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Hypospray.png|64px]]|| Hypospray||An experimental high-end chemical injector, used for instant injections. Can be unlocked using a screwdriver, to allow the vial capsule to be ejected as a magazine. Pairing a hypospray with a vial pouch can be an excellent way for one person to distribute a series of research chemicals in the field.&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Customautoinjector.png|64px]]||Custom Autoinjector|| If you have a lot of your experimental chemical on hand, then making custom autoinjectors is a good way to distribute it to the masses. A few boxes with empty autoinjectors can be found in your lab. You also can print more of them in Medilathe. You can fill a bunch of autoinjectors easily by loading them in a vial storage box and inserting it into the centrifuge for filling.&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Acid_harness.png|64px]]||ACID Harness||&#039;&#039;&#039;A&#039;&#039;&#039;utomated &#039;&#039;&#039;C&#039;&#039;&#039;hemical &#039;&#039;&#039;I&#039;&#039;&#039;ntegrated &#039;&#039;&#039;D&#039;&#039;&#039;elivery Harness. This is the most advanced form of chemical distribution available. Why rely on someone to know when your wonder-drug should be injected and then to actually do it, when you can leave all the work to a computer that does everything for you? The A.C.I.D. will monitor the vital status for its user constantly, and depending on your configuration, automatically inject the chemical from an internal vial into the user. Additionally the A.C.I.D. will never overdose its user. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
While the storage slots in the A.C.I.D. can technically be used for anything that would fit in the webbing, the A.C.I.D. specifically requires both a battery and a vial inside the storage slots in order to operate. A high capacity cell battery will last approximately 50 minutes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A couple of harnesses will be available in the test lab, but if you need more then you can make one by filling a black or brown vest webbing with the following items and then using a wirecutter on the webbing: hypospray, health analyzer, battery, radio, cables.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To configure the A.C.I.D., use a multitool/security access tuner on the webbing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;A.C.I.D. Core Configuration&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot;&lt;br /&gt;
! style=&amp;quot;background-color:#A9A9A9; width:120;&amp;quot; |Config&lt;br /&gt;
! style=&amp;quot;background-color:#A9A9A9;  width:250;&amp;quot; |Type&lt;br /&gt;
! style=&amp;quot;background-color:#A9A9A9;&amp;quot; |Description&lt;br /&gt;
|-&lt;br /&gt;
|Injection Amount || Setting|| How much to inject at a time. The A.C.I.D. will recheck its user&#039;s condition after 20 seconds for each unit injected to see if the conditions are still true. If it is, then it will proceed to inject again.&lt;br /&gt;
|-&lt;br /&gt;
|Damage Threshold||Setting||How much damage must be present in any &#039;&#039;damage type&#039;&#039; configuration. If no damage type configurations are enabled, this setting is not used. Damage type configurations are each considered their own condition.&lt;br /&gt;
|-&lt;br /&gt;
|AND / OR||Setting||To use AND or OR logic for the configuration. For OR configuration, it injects if any condition becomes true. For AND configuration, it injects only if all conditions are true at the same time.&lt;br /&gt;
|-&lt;br /&gt;
|Brute||Damage||External brute damage.&lt;br /&gt;
|-&lt;br /&gt;
|Burn || Damage||External burn damage.&lt;br /&gt;
|-&lt;br /&gt;
|Toxin||Damage ||Internal toxin damage.&lt;br /&gt;
|-&lt;br /&gt;
|Oxygen||Damage||Internal oxygen damage.&lt;br /&gt;
|-&lt;br /&gt;
|Genetic||Damage||Genetic cell damage.&lt;br /&gt;
|-&lt;br /&gt;
|Heart / Liver / Lungs / Kidneys / Brain ||Damage || Damage to the respective organ.&lt;br /&gt;
|-&lt;br /&gt;
|Vitals Level ||Condition||Whether or not to inject based on vitals type configuration. If this is not enabled, vitals type configurations are ignored.&lt;br /&gt;
|-&lt;br /&gt;
| Bleeding||Condition||Whether or not the user is bleeding.&lt;br /&gt;
|-&lt;br /&gt;
|Internal||Condition||Whether or not the user has internal bleeding.&lt;br /&gt;
|-&lt;br /&gt;
| Bloodloss||Condition||Whether or not the user has less than 40% blood.&lt;br /&gt;
|-&lt;br /&gt;
|Fracture ||Condition||Whether or not the user has a bone fracture. &lt;br /&gt;
|-&lt;br /&gt;
|Splinted ||Condition ||Whether or not the user is wearing a splint.&lt;br /&gt;
|-&lt;br /&gt;
|Organ damage||Condition|| Whether or not an organ has 10 or more damage.&lt;br /&gt;
|-&lt;br /&gt;
|Organ failure||Condition||Whether or not an organ has 30 or more damage.&lt;br /&gt;
|-&lt;br /&gt;
|Death||Condition||Whether or not the user is currently dead.&lt;br /&gt;
|-&lt;br /&gt;
|Defibrillation||Condition|| Whether or not the user has just been defibrillated.&lt;br /&gt;
|-&lt;br /&gt;
|Concussion|| Condition||Whether or not the user has been knocked down or knocked out.&lt;br /&gt;
|-&lt;br /&gt;
|Intoxication ||Condition|| Whether or not the user is dazed, slowed, confused, drowsy, dizzy or hallucinating. &lt;br /&gt;
|-&lt;br /&gt;
|Foreign Object||Condition|| Whether or not the user contain a foreign object.&lt;br /&gt;
|-&lt;br /&gt;
|Optimal||Vitals||User is 100% healthy.&lt;br /&gt;
|-&lt;br /&gt;
| Nominal||Vitals||User is between 80-100% healthy.&lt;br /&gt;
|-&lt;br /&gt;
|Low||Vitals||User is between 40-80% healthy. &lt;br /&gt;
|-&lt;br /&gt;
|Very Low||Vitals||User is between 10-40% healthy. &lt;br /&gt;
|-&lt;br /&gt;
|Critical||Vitals||User is between -10-10% healthy.&lt;br /&gt;
|-&lt;br /&gt;
| Emergency ||Vitals||User is less than -10% healthy, but not dead.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Delivery_med.png|64px]]||Requisitions Delivery Unit||If you want Requisitions to send your chemicals to the surface for you, then you can use this delivery chute to send any item directly down to the Requisitions.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Alien Research: Xenology=&lt;br /&gt;
The art of Xenology. Throughout the operation you will have the opportunity to conduct preliminary research on the Aliens. While this research is more esoteric in nature, providing technical data for the Marine Corps and the Company to use. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At its core, Xenology is accomplished by analyzing alien blood and other liquids, storing dead alien bodies in the research containers, and containing a live alien in the research pen.&lt;br /&gt;
&lt;br /&gt;
===Xenology Corpse Specimen Study===&lt;br /&gt;
Marines should be delivering corpses to the Almayer and subsequently to Research for storage and further study. Simply having dead Xenos in Containment will prove a boon to the USCM and generate Tech Points. But their blood and acidic heart will also prove useful subjects to research.&lt;br /&gt;
&lt;br /&gt;
Along with harvesting their blood you can also harvest their acidic heart, to do this you need to cut open their exoskeletons with the circular saw starting from the xenos head, further open up the cut with retractors, separate the organ from the various internal connections, and finally remove the organ using the hemostat. (Aim Head - [[File:1Saw.png|32px|link=|Saw]]-&amp;gt;[[File:1Retractor.png|32px|link=|Retractor]]-&amp;gt;[[File:1Scalpel.png|32px|link=|Scalpel]]-&amp;gt;[[File:1Hemostat.png|32px|link=|Hemostat]])The removed organ can then be analyzed in the analyzer near the cryotube for biomass points.&lt;br /&gt;
&lt;br /&gt;
Larger Xenos have thicker chitin on their exoskeletons, you need to use a laser scalpel (printable from the biomass analyzer) instead of the circular saw. (Aim Head -[[File:Laser scalpel basic.png|32x32px|Saw]] -&amp;gt;[[File:1Retractor.png|32px|link=|Retractor]]-&amp;gt;[[File:1Scalpel.png|32px|link=|Scalpel]]-&amp;gt;[[File:1Hemostat.png|32px|link=|Hemostat]])&lt;br /&gt;
&lt;br /&gt;
====Xenology Blood Research====&lt;br /&gt;
Each alien will have two or more unique liquids/blood samples to collect. To analyze alien blood you will need a corpse, an empty beaker, and either a syringe or an IV Drip. After collecting the blood sample, you can place it into a Chemical Centrifuge or the ChemMaster to split them. Afterwards, you can analyze the samples at the XRF Scanner. Each xenomorph has 560 &#039;units&#039; of blood - and it is split equally between whatever chemicals are present. For instance, a runner will have 280 units of catecholamine plasma, and 280 units of acidic blood. A queen will have 112 units of Dark Acidic Blood, 112 units of Pheromone Plasma, 112 units of Chitin Plasma, 112 units of Neurotoxin Plasma, and 112 units of Royal Plasma. Once this is drained, the xenomorph corpse is empty - if it is alive, however, it will slowly regenerate.&lt;br /&gt;
&lt;br /&gt;
=====Xeno Blood properties:=====&lt;br /&gt;
*Acidic Blood - Deals 3 burn damage.&lt;br /&gt;
*Dark Acidic Blood - Deals 6 burn damage.&lt;br /&gt;
*Pheromone Plasma - Makes you high, &#039;&#039;&#039;fixes stuttering, confusion, blurry vision, drowsiness, dizziness, and jitteriness.&#039;&#039;&#039; &lt;br /&gt;
*Catecholamine Plasma - &#039;&#039;&#039;Makes you faster&#039;&#039;&#039;.&lt;br /&gt;
*Chitin Plasma - &#039;&#039;&#039;Prevents fractures.&#039;&#039;&#039;&lt;br /&gt;
*Neurotoxin Plasma - Deals 7 brain damage, deals 1 toxin damage, makes you jittery and hallucinate.&lt;br /&gt;
*Anti-Neurotoxin - &#039;&#039;&#039;Neuro-Shielding, Prevents being stunned by all neurotoxin.&#039;&#039;&#039;&lt;br /&gt;
*Purple Plasma - Deals 2 brute damage.&lt;br /&gt;
*Egg Plasma - Infects with Xeno larva, &#039;&#039;&#039;useful in research&#039;&#039;&#039;.&lt;br /&gt;
*Royal Plasma - Makes you addicted, deals 4 brute damage, makes you hallucinate, makes you high, makes you jittery, &#039;&#039;&#039;useful in research&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Xenology Live Specimen Study ===&lt;br /&gt;
You will need the Marines&#039; assistance in securing egg samples, To grow a Xeno, you will need a monkey in a containment cell and an egg, plant the Egg In the containment cell, then wait. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HOWEVER,&#039;&#039;&#039; making Xenos on their own is not useful and is actually be more of a detriment. This might stall the game out, and if the proper precautions were not taken, Xenos may even break out of containment. Not very good.&lt;br /&gt;
&lt;br /&gt;
The better solution is making &#039;&#039;&#039;Corrupted Hive&#039;&#039;&#039;. These are &#039;&#039;&#039;&#039;&#039;potentially&#039;&#039;&#039;&#039;&#039; friendly Xenos that can be used to help in combat and ship security.&lt;br /&gt;
&lt;br /&gt;
====Materials====&lt;br /&gt;
*Clearance Level 5X&lt;br /&gt;
*Egg plasma - extracted from Xeno eggs&lt;br /&gt;
* Royal plasma - extracted from an Empress OR can be made by mixing Egg Plasma and Dark Acidic Blood (extracted from a praetorian)&lt;br /&gt;
&lt;br /&gt;
====Let&#039;s Start Making Xenos ====&lt;br /&gt;
*Make sure you have Level 5X clearance.&lt;br /&gt;
*Scan or re-scan Royal Plasma.&lt;br /&gt;
*Relate with a randomized chemical one unique property of Royal Plasma in the Synthesis Simulator, called Ciphering. It will cost 10 points. Different levels of unique properties will make different Xeno hives. Level 2 - Corrupt, Level 3 - Alpha and etc. Level 2, or Corrupt hives, are the only ones that can be made that are friendly.&lt;br /&gt;
*Make sure the monkey you are using is connected to a blood supply, such as an IV, as the monkey will lose a lot of blood in this process. It will also take some time to gestate.&lt;br /&gt;
*Infect monkey with an egg, or by injecting Egg plasma.&lt;br /&gt;
* Inject 5 units of your chemical containing Ciphering 2 before the larva hatches.&lt;br /&gt;
*Good work! This may take some time before the Corrupted Hive hatches so be patient. Do not try to speed up the process.&lt;br /&gt;
&lt;br /&gt;
=Dropship Upgrade=&lt;br /&gt;
&lt;br /&gt;
You have been provided tools and opportunity to create an upgrade for dropships. This upgrade, when done correctly, allows Pilots to see through their camera with night vision or with increased field of view. This is particularly beneficial for CAS as they can see what they are firing at.&lt;br /&gt;
&lt;br /&gt;
To start making it, you will need to find the property Photosensitive or Crystallization. The first gives night vision, the other gives an increase of view.&lt;br /&gt;
The power of matrix depends on the level of the properties, there can also be only one upgrade at a time, so choose carefully. After you found properties, print the matrix assembly at the autolathe, directly south of the medilathe. Insert the vial with the chemical in the matrix, make sure its full, free of any contaminants and contains the chemical with the said property, &#039;&#039;&#039;you cannot remove the vial after it`s inserted&#039;&#039;&#039; screw the matrix shut and tell a pilot to insert it into his weapons console. You can also insert an empty matrix to reset the upgrades.&lt;br /&gt;
&lt;br /&gt;
=Hydroponics Research=&lt;br /&gt;
&amp;lt;big&amp;gt;&#039;&#039;&#039;Note that hydroponics is currently undergoing a rework, much of the information here is subject to change.&#039;&#039;&#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hydroponics is the process of growing plants without soil. The Company has provided The USS Almayer&#039;s research wing with a hydroponics laboratory. Here, researchers can grow and experiment with plant genetics. &lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width: 100%; border: none&amp;quot;&lt;br /&gt;
| style=&amp;quot;width: 100%; vertical-align: top;&amp;quot; |&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Machines&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border: 2px solid black; class=&amp;quot;mw-collapsible&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;background-color:#A9A9A9; width:100;&amp;quot;|&#039;&#039;&#039;Machine:&#039;&#039;&#039;&lt;br /&gt;
 ! style=&amp;quot;background-color:#A9A9A9;&amp;quot;|&#039;&#039;&#039;Description:&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;border: 2px solid black; border-bottom: 2px solid black; padding: 5px;&amp;quot; |[[File:Hydroponicstray.png|64px]]&amp;lt;br&amp;gt;&#039;&#039;&#039;Hydroponics tray &#039;&#039;&#039;&amp;lt;br&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|style=&amp;quot;border: 2px solid black; border-bottom: 2px solid black; padding: 5px;&amp;quot; | A specialised tray to grow plants in. You may right-click the tray and select &#039;&#039;&#039;Flush Tray&#039;&#039;&#039; to reset it, removing everything including nutrients and refill it with water. The lights on the tray correspond to the state of the plant:&lt;br /&gt;
*&#039;&#039;&#039;Green:&#039;&#039;&#039; Plant is ready to be harvested.&lt;br /&gt;
*&#039;&#039;&#039;Red:&#039;&#039;&#039; Plant is unhealthy, old-aged or dead.&lt;br /&gt;
*&#039;&#039;&#039;Orange/Red flash:&#039;&#039;&#039; High amount of weeds or pests.&lt;br /&gt;
*&#039;&#039;&#039;Yellow:&#039;&#039;&#039; Low amounts of nutrients in the tray.&lt;br /&gt;
*&#039;&#039;&#039;Blue:&#039;&#039;&#039; Low amount of water in the tray. &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;border: 2px solid black; border-bottom: 2px solid black; padding: 5px;&amp;quot; |[[File:Seedvendor.png|64px]]&amp;lt;br&amp;gt;&#039;&#039;&#039;MegaSeed Servitor&#039;&#039;&#039;&lt;br /&gt;
|style=&amp;quot;border: 2px solid black; border-bottom: 2px solid black; padding: 5px;&amp;quot; | Vendor that contains the basic seeds needed to get started.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;border: 2px solid black; border-bottom: 2px solid black; padding: 5px;&amp;quot; |[[File:Seedextractor.png|64px]]&amp;lt;br&amp;gt;&#039;&#039;&#039;Seed extractor &amp;lt;br&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|style=&amp;quot;border: 2px solid black; border-bottom: 2px solid black; padding: 5px;&amp;quot; | Extracts seeds from harvested plants. Insert a plant sample to obtain seeds.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;border: 2px solid black; border-bottom: 2px solid black; padding: 5px;&amp;quot; |[[File:Centrifuge.png|64px]]&amp;lt;br&amp;gt;&#039;&#039;&#039;Lysis-isolation Centrifuge&#039;&#039;&#039;&lt;br /&gt;
|style=&amp;quot;border: 2px solid black; border-bottom: 2px solid black; padding: 5px;&amp;quot; | By inserting a flora data disk and any plant material (such as seeds or samples), this machine allows you to process the genome of said plant. The plant material is destroyed in the process. &lt;br /&gt;
&lt;br /&gt;
Once analyzed, a set of genes can be extracted. This can be done only a certain number of times before the genes decay completely. The extracted data is saved to the floral data disk. This disk can then be used in the Bioballistic delivery system. &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;border: 2px solid black; border-bottom: 2px solid black; padding: 5px;&amp;quot; |[[File:Bioballistic.png|64px]]&amp;lt;br&amp;gt;&#039;&#039;&#039;Bioballistic delivery system.&#039;&#039;&#039;&lt;br /&gt;
|style=&amp;quot;border: 2px solid black; border-bottom: 2px solid black; padding: 5px;&amp;quot; | Uses data disks with extracted genomes from the Lysis-isolation Centrifuge. By inserting a disk and a target plant sample, you can override the existing gene with the stored one. Use this to  positively select your plants. If you modify a sample genome too many times, the genome will decay completely. &lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Items&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border: 2px solid black; class=&amp;quot;mw-collapsible&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;background-color:#A9A9A9; width:100;&amp;quot;|&#039;&#039;&#039;Item:&#039;&#039;&#039;&lt;br /&gt;
 ! style=&amp;quot;background-color:#A9A9A9;&amp;quot;|&#039;&#039;&#039;Description:&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;border: 2px solid black; border-bottom: 2px solid black; padding: 5px;&amp;quot; |[[File:Floradisk.png|64px]]&amp;lt;br&amp;gt;&#039;&#039;&#039;Flora data disk &#039;&#039;&#039;&amp;lt;br&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|style=&amp;quot;border: 2px solid black; border-bottom: 2px solid black; padding: 5px;&amp;quot; | Data disk for storing plant genes. Used with the lysis-isolation centrifuge and bioballistic delivery system. Can only contain a single gene. Empty data disks can be found in the flora disk boxes inside the hydroponics locker. They can also be stored in the disk cabinet for better organization.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;border: 2px solid black; border-bottom: 2px solid black; padding: 5px;&amp;quot; |[[File:Plantanalyzer.png|64px]]&amp;lt;br&amp;gt;&#039;&#039;&#039;Plant analyzer &#039;&#039;&#039;&amp;lt;br&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|style=&amp;quot;border: 2px solid black; border-bottom: 2px solid black; padding: 5px;&amp;quot; | Used to analyze plants quickly and get a reading of its general properties.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;border: 2px solid black; border-bottom: 2px solid black; padding: 5px;&amp;quot; |[[File:Hoe.png|64px]]&amp;lt;br&amp;gt;&#039;&#039;&#039;Mini hoe &#039;&#039;&#039;&amp;lt;br&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|style=&amp;quot;border: 2px solid black; border-bottom: 2px solid black; padding: 5px;&amp;quot; | The mini garden hoe can be used to uproot weeds from hydroponics trays. Using the garden hoe will damage the plant slightly. &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;border: 2px solid black; border-bottom: 2px solid black; padding: 5px;&amp;quot; |[[File:Plantclipper.png|64px]]&amp;lt;br&amp;gt;&#039;&#039;&#039;Plant Clippers &#039;&#039;&#039;&amp;lt;br&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|style=&amp;quot;border: 2px solid black; border-bottom: 2px solid black; padding: 5px;&amp;quot; | A specialised clipping tool for taking samples off plants. Use this if you want a sample from a plant before maturity, or if you want to harvest without removing the plant completely. Alternatively, other cutting tools may be used.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;border: 2px solid black; border-bottom: 2px solid black; padding: 5px;&amp;quot; |[[File:Hatchet.png|64px]]&amp;lt;br&amp;gt;&#039;&#039;&#039;Hatchet &#039;&#039;&#039;&amp;lt;br&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|style=&amp;quot;border: 2px solid black; border-bottom: 2px solid black; padding: 5px;&amp;quot; | Used to cut down large plants into smaller parts. Usually wood. &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;border: 2px solid black; border-bottom: 2px solid black; padding: 5px;&amp;quot; |[[File:Spade.png|64px]]&amp;lt;br&amp;gt;&#039;&#039;&#039;Spade &#039;&#039;&#039;&amp;lt;br&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|style=&amp;quot;border: 2px solid black; border-bottom: 2px solid black; padding: 5px;&amp;quot; | Used to move dirt around. But we don&#039;t have dirt onboard, so it has little purpose right now. &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;border: 2px solid black; border-bottom: 2px solid black; padding: 5px;&amp;quot; |[[File:Bucket.png|64px]]&amp;lt;br&amp;gt;&#039;&#039;&#039;Bucket &#039;&#039;&#039;&amp;lt;br&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|style=&amp;quot;border: 2px solid black; border-bottom: 2px solid black; padding: 5px;&amp;quot; | Its a bucket. Fill it with water and pour it somewhere. &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;border: 2px solid black; border-bottom: 2px solid black; padding: 5px;&amp;quot; |[[File:Plantbag.png|64px]]&amp;lt;br&amp;gt;&#039;&#039;&#039;Plant bag &#039;&#039;&#039;&amp;lt;br&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|style=&amp;quot;border: 2px solid black; border-bottom: 2px solid black; padding: 5px;&amp;quot; | Lets you carry a large amount of plant goods around. Click on a tile to store all the plants on that tile in the bag. Use the bag again to drop everything on another tile. &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;border: 2px solid black; border-bottom: 2px solid black; padding: 5px;&amp;quot; |[[File:Hydroponicsspray.png|64px]]&amp;lt;br&amp;gt;&#039;&#039;&#039;Hydroponics spray &#039;&#039;&#039;&amp;lt;br&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|style=&amp;quot;border: 2px solid black; border-bottom: 2px solid black; padding: 5px;&amp;quot; | Functions similarly to a space cleaner spray. Comes with ammonia. You might want to empty it and fill it with your own special mixture. You can spray this on hydroponics trays to add chemicals to them.&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;How to do Hydroponics Research&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border: 2px solid black; class=&amp;quot;mw-collapsible&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;background-color:#A9A9A9; width:100;&amp;quot;|&#039;&#039;&#039;Subject:&#039;&#039;&#039;&lt;br /&gt;
 ! style=&amp;quot;background-color:#A9A9A9;&amp;quot;|&#039;&#039;&#039;Description:&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;border: 2px solid black; border-bottom: 2px solid black; padding: 5px;&amp;quot; | &amp;lt;br&amp;gt;&#039;&#039;&#039;Identifying Genes &#039;&#039;&#039;&amp;lt;br&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|style=&amp;quot;border: 2px solid black; border-bottom: 2px solid black; padding: 5px;&amp;quot; | Modifying your plants can require a lot of work and you may want to take notes during it. Gene labels are reordered and randomized each round, so identifying them requires some trial an error in figuring out which gene corresponds to what trait. Using the plant analyzer will be a great help during this. If you see a plant has a desired trait, try to extract one gene at a time from that plant and apply it to another. Once you see that the desired changes have occurred, you&#039;ve identified the gene. &#039;&#039;&#039;A gene label represents the same trait across all plants&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Some traits won&#039;t do much, while others can have drastic effects. &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;border: 2px solid black; border-bottom: 2px solid black; padding: 5px;&amp;quot; | &amp;lt;br&amp;gt;&#039;&#039;&#039;Mutating plants &#039;&#039;&#039;&amp;lt;br&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|style=&amp;quot;border: 2px solid black; border-bottom: 2px solid black; padding: 5px;&amp;quot; | Radioactive compounds might mutate your plants. Unlike the above process, this relies on RNG. It can kill the plant, change its properties or create an entirely new species. The plant might even start producing new chemicals. To mutate a plant, you need to put 60-120u of [[#mutagen|Unstable Mutagen]] in the hydroponics tray that contains the plant you wish to mutate.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;border: 2px solid black; border-bottom: 2px solid black; padding: 5px;&amp;quot; | &amp;lt;br&amp;gt;&#039;&#039;&#039;Keeping your plants alive &#039;&#039;&#039;&amp;lt;br&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|style=&amp;quot;border: 2px solid black; border-bottom: 2px solid black; padding: 5px;&amp;quot; | Plants are living things and they can die of old age or if not taken care of. Make sure to remove pests and weeds. Some chemicals are beneficial and provides nutrients, while others can be toxic. If your plant is unhealthy, it might contain a lot of toxins, be weeded or contain pests. Providing your plants with water and nutrients will make them slowly heal. &lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Your Skillset==&lt;br /&gt;
{{MarineSkills&lt;br /&gt;
|endurance=1&lt;br /&gt;
|medical=3&lt;br /&gt;
|surgery=2&lt;br /&gt;
|research=1&lt;br /&gt;
|intel=1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
To find out about how the skill system works head over to the [http://cm-ss13.com/wiki/The_Skill_System skills system page].&lt;br /&gt;
&lt;br /&gt;
= Additional User made information= &lt;br /&gt;
*[https://forum.cm-ss13.com/tag/guide:research Research tagged guides] on the CM Forums&lt;br /&gt;
*(Outdated) [https://cm-ss13.com/forums/showthread.php?3414-Magnus-Opus-on-Reasearch-by-Cory-Paulson Magnum Opus on Research] by Cory Paulson&lt;/div&gt;</summary>
		<author><name>Drulikar</name></author>
	</entry>
	<entry>
		<id>https://cm-ss13.com/w/index.php?title=Guide_to_Git&amp;diff=39498</id>
		<title>Guide to Git</title>
		<link rel="alternate" type="text/html" href="https://cm-ss13.com/w/index.php?title=Guide_to_Git&amp;diff=39498"/>
		<updated>2025-12-02T08:57:29Z</updated>

		<summary type="html">&lt;p&gt;Drulikar: /* Step 7: Finishing Up */  Add note about maybe uninstalling node&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Guide to Git = &lt;br /&gt;
&lt;br /&gt;
== Setting up your Coding Environment ==&lt;br /&gt;
&lt;br /&gt;
Though you can use DreamMaker, and external Git software, for modifying your code and maps, all modern SS13 tooling is set up for Visual Studio Code, so it is highly recommended. You can jump to variable definitions, procs and atoms with ease.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Download and Install Visual Studio Code ===&lt;br /&gt;
&lt;br /&gt;
Visual Studio Code is a free code editor (from Microsoft) that you can use to edit, test and publish your code to GitHub. &lt;br /&gt;
&lt;br /&gt;
You can download it from https://code.visualstudio.com/ and run the installer.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Forking the Repository === &lt;br /&gt;
&lt;br /&gt;
Go to https://github.com/cmss13-devs/cmss13, and at the top right, hit “Fork” - you’ll need a GitHub account for this.&lt;br /&gt;
&lt;br /&gt;
[[File:fork.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Follow the prompts that come up, and you’ll have your own copy of the code on GitHub.&lt;br /&gt;
&lt;br /&gt;
You will also likely want to disable actions running on your fork:&lt;br /&gt;
&lt;br /&gt;
[[File:Fork Actions Settings.png|alt=You can disable actions from running on your fork by going to settings, general under actions, disable actions, and save.|frameless|655x655px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Download and Install Git === &lt;br /&gt;
&lt;br /&gt;
You’ll need Git installed to make any changes to the repository. Download it from https://git-scm.com/downloads. &lt;br /&gt;
&lt;br /&gt;
=== Step 4: Clone Repository ===&lt;br /&gt;
Then, on Visual Studio Code, under the Source Control tab on the left bar - the third option down, you should be presented with the option to “Clone Repository”. &lt;br /&gt;
&lt;br /&gt;
[[File:clone_repo.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Paste the URL of your fork into the box that pops up - this should be in the format of &amp;lt;nowiki&amp;gt;https://github.com/&amp;lt;/nowiki&amp;gt;[YOURUSERNAME]/cmss13. Then, select a folder (see notes below) to download the repo into, and let it run. It may take awhile.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important&#039;&#039;&#039;: Be sure the folder you clone to is not a sub-directory of another repository (e.g. another copy of CM). Otherwise you may have problems building.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important&#039;&#039;&#039;: Be sure the folder you clone to is not a folder managed by OneDrive or any other cloud storage service else you are going to have a bad time ever OneDrive locks a file or offloads a file from your computer onto the cloud to save space. If you allowed your system to use OneDrive this likely means your entire User folder (including documents and desktop) are all managed by OneDrive.&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Download Extensions ===&lt;br /&gt;
&lt;br /&gt;
These extensions to Visual Studio Code will allow the program to read DreamMaker code intelligently and allow you to navigate through the code faster. &lt;br /&gt;
&lt;br /&gt;
You can get them by clicking on the extensions tab - probably the fourth or fifth option, it looks like three boxes with a fourth being added - and downloading all the “Recommended” extensions.&lt;br /&gt;
&lt;br /&gt;
[[File:recommended_extensions.png|400px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 6: Configuring Language Client ===&lt;br /&gt;
Debugging features like breakpoints rely on the language server to be installed and working.&lt;br /&gt;
&lt;br /&gt;
* Search for &amp;quot;@enabled Language Client&amp;quot; in extensions&lt;br /&gt;
* Click the gear and then Extension Settings&lt;br /&gt;
* Enable Auto Update&lt;br /&gt;
* If you installed Byond in a non-default location, add/update the Byond Path to your BYOND installation folder (will be a folder with unist.exe and 6 other folders)&lt;br /&gt;
* Restart Visual Studio Code&lt;br /&gt;
&lt;br /&gt;
Auto Update will ensure you have the latest version of the language server installed in a temporary folder for Visual Studio Code. A correct path to the BYOND installation folder will allow the language server to compile and parse the code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: As of writing, BYOND 515.1633+ is functional with the language client server (dm-langserver 1.8.0+19 using auxtools commit: v2.3.3). However, 516.1668+ do not currently have working breakpoints as of dm-langserver 1.10.0+22 using auxtools commit: v2.3.5.&lt;br /&gt;
[[File:Language Client Settings.png|655x655px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 7: Finishing Up ===&lt;br /&gt;
&lt;br /&gt;
You’ve now got a complete clone of the CM-SS13 codebase on your local computer!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; If you run into problems building (&amp;quot;Bun failed...&amp;quot;), and happen to have Node installed on your computer, try either updating Node or uninstalling Node.&lt;br /&gt;
&lt;br /&gt;
== Making a Change ==&lt;br /&gt;
&lt;br /&gt;
All changes you make to the code must be done on a new branch. &lt;br /&gt;
&lt;br /&gt;
A branch is another version of your codebase - made from your “master” branch - which should be identical to the “master” branch present on the main repo - which changes can be made to without affecting your “master” branch.&lt;br /&gt;
&lt;br /&gt;
A “commit” is a save of your changes to the code you’ve made. Every time you “commit” your changes to the branch, you are saving all your changes made so far. All code must be “committed” before it can be sent to the main repository.&lt;br /&gt;
&lt;br /&gt;
To start with making changes, you must make a new branch on your forked repository, from your master branch. Your master branch should never be committed to, and should be a clean state.&lt;br /&gt;
&lt;br /&gt;
Every PR you make should have a new branch. This allows for commits you make on different branches to not affect your other branches, letting you work on multiple projects at once.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Making a New Branch ===&lt;br /&gt;
&lt;br /&gt;
Press Control + Shift + P to bring up the Command Pallet. This allows you to control Visual Studio Control easily, but we want the command “Create branch from...”. Type that in and press enter to run it. Give your branch a name - like new-helmet. Select which branch to make it from - that will be your master branch. &lt;br /&gt;
&lt;br /&gt;
[[File:create_branch_from.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Then, switch to this branch. You can do this at the bottom of the Source Control tab, under the Branches title - you might have to click on it to show all your branches. Right click on your new branch, and select the option to switch to it.&lt;br /&gt;
&lt;br /&gt;
[[File:switch_branch.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Now, you can make whatever changes you like, and you can commit them to this branch without altering your master branch.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Modifying the Code ===&lt;br /&gt;
&lt;br /&gt;
Now, if you make any change to any file within the repo, Git will notice and add it to the modified files in the Source Control tab.&lt;br /&gt;
&lt;br /&gt;
You can make a simple change - such as altering an item description - just to see your code changes reflected in game. To find an item, use the Search tab on the left - the magnifying glass - and type in the name or description if the item as it is in game.&lt;br /&gt;
&lt;br /&gt;
[[File:searching.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once you’ve made this change, it’ll be noticed at the top of the Source Control tab.&lt;br /&gt;
&lt;br /&gt;
[[File:changes.png|400px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Testing your Code ===&lt;br /&gt;
&lt;br /&gt;
Press F5 - this will start your code with the debugger attached. This will automatically pause the server and tell you when an error - usually known as a runtime - occurs.&lt;br /&gt;
&lt;br /&gt;
You can press Control-F5 to start without the debugger.&lt;br /&gt;
&lt;br /&gt;
Then, at the bottom right of your Windows interface, click the chevron to view your hidden processes. Click on the green DreamDaemon circle, and you can see the server process that has booted up. Then, on the World tab at the top, press Join. This will log you in to the server, where you will automatically have full Admin permissions.&lt;br /&gt;
&lt;br /&gt;
Find your item in game - or spawn it in with the admin game-panel - and it should have the changes you’ve made in the code. If it doesn’t- you probably didn’t save the file. Terminate the server using the stop button on Visual Studio Code or by right clicking on the DreamDaemon process and pressing Stop.&lt;br /&gt;
&lt;br /&gt;
If you are making a change that doesn&#039;t require the ground map or ship map loaded, you can speed up the loading process by using a streamlined map. You can either do this using a debugging launch option or by adding/editing the next_map.json file in your data folder to load USS Runtime instead:&lt;br /&gt;
[[File:VSC Launch Options.png|right|frameless|423x423px]]&lt;br /&gt;
data/next_map.json:&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;map_name&amp;quot;: &amp;quot;USS Runtime&amp;quot;,&lt;br /&gt;
    &amp;quot;map_path&amp;quot;: &amp;quot;map_files/USS_Runtime&amp;quot;,&lt;br /&gt;
    &amp;quot;map_file&amp;quot;: &amp;quot;USS_Runtime.dmm&amp;quot;,&lt;br /&gt;
	&amp;quot;survivor_types&amp;quot;: [&lt;br /&gt;
        &amp;quot;/datum/equipment_preset/survivor/scientist/lv&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;traits&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Marine Main Ship&amp;quot;: true,&lt;br /&gt;
            &amp;quot;Up&amp;quot;: 1&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Marine Main Ship&amp;quot;: true,&lt;br /&gt;
            &amp;quot;Down&amp;quot;: -1&lt;br /&gt;
        }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;camouflage&amp;quot;: &amp;quot;classic&amp;quot;,&lt;br /&gt;
	&amp;quot;disable_ship_map&amp;quot;: true&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Setting up Git to Commit ===&lt;br /&gt;
In order to be able to commit changes, Git needs to know who you are. This requires an email and a username - in most cases, your username should be the same as your GitHub username. The email address can be either an email you&#039;re okay with people knowing - or the private email provided by GitHub. This can be obtained at [https://github.com/settings/email https://github.com/settings/emails] under the &amp;quot;Keep my email address private&amp;quot; setting. &lt;br /&gt;
&lt;br /&gt;
Then, you need to open a new Terminal window inside Visual Studio Code. Using the top bar, navigate to &#039;Terminal&#039; and &#039;New Terminal&#039;. A window should appear at the bottom of your screen, containing a command line interface. Run the following commands:&amp;lt;pre&amp;gt;&lt;br /&gt;
git config --global user.email &amp;quot;your@email.here&amp;quot;&lt;br /&gt;
git config --global user.name &amp;quot;yourusernamehere&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Committing your Changes ===&lt;br /&gt;
&lt;br /&gt;
At the top of the Source Control tab, your modified file should be under “Changes”. Hover over the file name you have modified, and press the Plus symbol - or do the same over the Changes button to “stage” your changes.&lt;br /&gt;
&lt;br /&gt;
[[File:example_commit.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once your changes have been “staged”, they have been selected to be committed. You should give it a commit message on the box with “Message” (otherwise a page will open requiring you to fill out a message that you need to save and close), and press the tick at the top to commit those changes.&lt;br /&gt;
&lt;br /&gt;
[[File:example_stage.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once this has been completed, you’ve committed your changes locally - but they have not been published to your GitHub fork.&lt;br /&gt;
&lt;br /&gt;
=== Step 6: Publishing to GitHub ===&lt;br /&gt;
&lt;br /&gt;
This is quite simple. On the Source Control tab, you should now see the “Publish Branch”. This will publish your branch, along with your changes, to your fork on GitHub. You can navigate to it on the web to see these changes.&lt;br /&gt;
&lt;br /&gt;
[[File:publish_branch.png|400px]]&lt;br /&gt;
&lt;br /&gt;
If you make any further changes to this branch and commit them, you will see the “Sync Changes” option instead. This does the same thing - “pushing” all your changes to your fork on GitHub.&lt;br /&gt;
&lt;br /&gt;
[[File:example_sync.png|400px]]&lt;br /&gt;
&lt;br /&gt;
== Making a Pull Request ==&lt;br /&gt;
&lt;br /&gt;
A “pull request” is a *request* for the main repository to *pull* - or more accurately, merge - the contents of your branch into the master branch. This process allows for code to be tested and reviewed by maintainers/developers, before being merged into the master branch.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Navigating the Web Interface ===&lt;br /&gt;
&lt;br /&gt;
Head to your repository on GitHub - not the main CM-SS13 repo. Then, click on “master” and type in the name of your branch. &lt;br /&gt;
&lt;br /&gt;
[[File:navigating_github_create_pr.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Hit “Contribute” on the right, and it’ll bring up the option to Create Pull Request. Clicking on this automatically sets the merge as being from your branch to the master branch at the main CM-SS13 repository.&lt;br /&gt;
&lt;br /&gt;
[[File:auto_merge.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Hopefully, there&#039;s no merge conflicts, and it gives the happy green &amp;quot;Able to automatically merge&amp;quot; - however, if someone else has changed code you&#039;re changing in your PR after you made the branch for this feature, you&#039;ll need to manually deconflict the files. Read on for more about merge conflicts.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Creating the Pull Request ===&lt;br /&gt;
&lt;br /&gt;
Give your PR a good title - this will be the message of the commit to the main branch containing all your code.&lt;br /&gt;
&lt;br /&gt;
[[File:title.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, fill in the PR description, including a descriptive changelog. Put your BYOND username next to the first :cl: to ensure you are accurately credited.&lt;br /&gt;
&lt;br /&gt;
[[File:changelog.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, hit Create Pull Request (or don’t, if you’re uselessly changing one description as a test). &lt;br /&gt;
&lt;br /&gt;
[[File:create_pull_request.png|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Code Review ===&lt;br /&gt;
&lt;br /&gt;
GitHub will automatically run some tests on your code, which may fail, resulting in you having to change your code. The developers will review your code, and may also request changes. That&#039;ll look like this.&lt;br /&gt;
&lt;br /&gt;
[[File:github_checks.png|800px]]&lt;br /&gt;
&lt;br /&gt;
In order to carry out the changes, simply make the changes on your branch on your local repository, and press “Sync Changes”, this will automatically update the PR.&lt;br /&gt;
&lt;br /&gt;
If a developer has marked your PR as a draft, you will have to mark it as being ready for review. You can do this at the bottom of the web interface on your PR.&lt;br /&gt;
&lt;br /&gt;
== Staying in Sync ==&lt;br /&gt;
&lt;br /&gt;
As other PRs are merged into the repository, your fork will slowly become out of date. This will become an issue over time, as you modify code that has been changed by another recent PR, and you find conflicts that didn’t need to happen.&lt;br /&gt;
&lt;br /&gt;
To avoid this, regularly go to your master branch of your fork on the web interface, and press “Sync fork” and &amp;quot;Update branch&amp;quot;, to add all the commits recently merged to your fork.&lt;br /&gt;
&lt;br /&gt;
[[File:update_branch.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, on Visual Studio Code, you can “Sync Changes” to update your local copy of the master branch.&lt;br /&gt;
&lt;br /&gt;
Do this regularly to ensure you don’t fall out of date with any changes.&lt;br /&gt;
&lt;br /&gt;
= Appendix =&lt;br /&gt;
&lt;br /&gt;
== Merge Conflicts ==&lt;br /&gt;
When your PR is conflicting with master, this means that there are places that both you and someone else have both altered and a decision has to be made to decide what that file or line of code should be. To begin the process to resolve this, you need to merge upstream/master into your branch. (VSC Source control has an Add Remotes option in the Remotes section of Source Control where you can add the link to the .git of the main repository). This will initiate any merge hooks automatically explained more below.&lt;br /&gt;
&lt;br /&gt;
=== Mapping Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Sometimes mapping conflicts can be handled automatically via a merge hook. Install the git hooks in tools/hooks by hitting “Install.bat” (Windows) or &amp;quot;Install.sh&amp;quot; (Linux). Should a single tile be altered by both you and someone else, a mapping conflict marker will be placed in that location that will cause lint errors and yell in chat. This will help during mapping conflicts by marking areas that are conflicting, allowing you to open an editor (such as StrongDMM) to look for the conflict markers and resolve the issue.&lt;br /&gt;
&lt;br /&gt;
Should a conflict like this occur, you should then open the map editor (StrongDMM) and look for the conflict markers. In text, it will look like the conflict has entirely disappeared - but it *hasn’t* - the MapMerger has just automatically dumped everything from the conflicting branches together in a mess that *you* have to fix. Everything above the merge conflict marker will be one side of the merge, and conversely everything below the merge conflict marker will be the other side of the merge.&lt;br /&gt;
&lt;br /&gt;
=== DMI (Icon File) Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Just like with mapping conflicts these conflicts can often be handled automatically via a merge hook. Install the git hooks in tools/hooks by hitting “Install.bat” (Windows) or &amp;quot;Install.sh&amp;quot; (Linux). More often than not any new icons that someone else added will just be appended to the end of the file. But if both you and someone else alter the same icon_state of something, that will have to be manually resolved. In this situation just open up the DMI file in either Dreamaker or VSC&#039;s DMI Editor and adjust it as needed. Ultimately use the IDB (Icon Diff Bot) checks to double check you haven&#039;t unintentionally removed a icon_state someone added.&lt;br /&gt;
&lt;br /&gt;
=== Code Conflicts ===&lt;br /&gt;
&lt;br /&gt;
There is no hook to automatically handle code conflicts. Find the conflict markers in conflicting files indicated with a bunch of &amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; and &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;. VSC should make this obvious, and in some cases, deconflict the files itself. Where it fails to do so, you will need to remove the conflict markers and add the code together from both branches as applicable. Be sure to test if the changes work. For more information see https://code.visualstudio.com/docs/sourcecontrol/overview#_merge-conflicts&lt;br /&gt;
&lt;br /&gt;
== Glossary ==&lt;br /&gt;
&lt;br /&gt;
=== Branch ===&lt;br /&gt;
&lt;br /&gt;
A version of your fork that you can freely commit changes to without affecting other branches.&lt;br /&gt;
&lt;br /&gt;
=== Commit ===&lt;br /&gt;
&lt;br /&gt;
A change to a branch, can be of any size from a single space added to one file to completely rewriting the entire repository.&lt;br /&gt;
&lt;br /&gt;
=== Fork ===&lt;br /&gt;
&lt;br /&gt;
A copy of the CM-SS13 repository that you own, and can make whatever changes to that you like without impacting the main repo.&lt;br /&gt;
&lt;br /&gt;
=== Repository ===&lt;br /&gt;
&lt;br /&gt;
Often known as a repo. Ours contains all of the code, maps and assets for CM-SS13.&lt;br /&gt;
&lt;br /&gt;
=== PR ===&lt;br /&gt;
&lt;br /&gt;
Pull Request - a request for the main repository to merge the changes present in one of the branches of your fork into the master branch of the main, upstream repository.&lt;br /&gt;
&lt;br /&gt;
=== Merge ===&lt;br /&gt;
&lt;br /&gt;
Where all the commits from a branch are applied to another branch. For example, merging your origin branch containing a new feature to an upstream master branch.&lt;br /&gt;
&lt;br /&gt;
=== Merge Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Where two branches from separate contributors have touched the same code, when one of them is merged, you will have a conflict preventing automatic merging. This involves manually fitting the code together, allowing both changes to exist without overwriting either.&lt;br /&gt;
&lt;br /&gt;
=== Remote ===&lt;br /&gt;
&lt;br /&gt;
A remote is a version of your repository that is not stored on your computer - such as on GitHub. This includes both your fork and the upstream, main CM-SS13 repo.&lt;br /&gt;
&lt;br /&gt;
=== Origin ===&lt;br /&gt;
&lt;br /&gt;
This will be your fork of the CM-SS13 repository.&lt;br /&gt;
&lt;br /&gt;
=== Upstream ===&lt;br /&gt;
&lt;br /&gt;
The upstream of your fork will be the main CM-SS13 repo. Think of changes flowing down a stream from the main repo to your fork when you “Fetch Upstream”.&lt;br /&gt;
&lt;br /&gt;
=== Git ===&lt;br /&gt;
&lt;br /&gt;
The version control system used by CM-SS13, allowing us to synchronise changes being made by many different contributor - and easily go back if something goes wrong.&lt;br /&gt;
&lt;br /&gt;
=== Diff ===&lt;br /&gt;
&lt;br /&gt;
Shows the changes between the current copy of the code and the new code that you have committed.&lt;br /&gt;
&lt;br /&gt;
=== VSC / VS Code === &lt;br /&gt;
&lt;br /&gt;
Visual Studio Code, the text editor we use for DM development.&lt;/div&gt;</summary>
		<author><name>Drulikar</name></author>
	</entry>
	<entry>
		<id>https://cm-ss13.com/w/index.php?title=Guide_to_Git&amp;diff=39116</id>
		<title>Guide to Git</title>
		<link rel="alternate" type="text/html" href="https://cm-ss13.com/w/index.php?title=Guide_to_Git&amp;diff=39116"/>
		<updated>2025-11-04T03:54:10Z</updated>

		<summary type="html">&lt;p&gt;Drulikar: /* Step 6: Configuring Language Client */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Guide to Git = &lt;br /&gt;
&lt;br /&gt;
== Setting up your Coding Environment ==&lt;br /&gt;
&lt;br /&gt;
Though you can use DreamMaker, and external Git software, for modifying your code and maps, all modern SS13 tooling is set up for Visual Studio Code, so it is highly recommended. You can jump to variable definitions, procs and atoms with ease.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Download and Install Visual Studio Code ===&lt;br /&gt;
&lt;br /&gt;
Visual Studio Code is a free code editor (from Microsoft) that you can use to edit, test and publish your code to GitHub. &lt;br /&gt;
&lt;br /&gt;
You can download it from https://code.visualstudio.com/ and run the installer.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Forking the Repository === &lt;br /&gt;
&lt;br /&gt;
Go to https://github.com/cmss13-devs/cmss13, and at the top right, hit “Fork” - you’ll need a GitHub account for this.&lt;br /&gt;
&lt;br /&gt;
[[File:fork.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Follow the prompts that come up, and you’ll have your own copy of the code on GitHub.&lt;br /&gt;
&lt;br /&gt;
You will also likely want to disable actions running on your fork:&lt;br /&gt;
&lt;br /&gt;
[[File:Fork Actions Settings.png|alt=You can disable actions from running on your fork by going to settings, general under actions, disable actions, and save.|frameless|655x655px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Download and Install Git === &lt;br /&gt;
&lt;br /&gt;
You’ll need Git installed to make any changes to the repository. Download it from https://git-scm.com/downloads. &lt;br /&gt;
&lt;br /&gt;
=== Step 4: Clone Repository ===&lt;br /&gt;
Then, on Visual Studio Code, under the Source Control tab on the left bar - the third option down, you should be presented with the option to “Clone Repository”. &lt;br /&gt;
&lt;br /&gt;
[[File:clone_repo.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Paste the URL of your fork into the box that pops up - this should be in the format of &amp;lt;nowiki&amp;gt;https://github.com/&amp;lt;/nowiki&amp;gt;[YOURUSERNAME]/cmss13. Then, select a folder (see notes below) to download the repo into, and let it run. It may take awhile.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important&#039;&#039;&#039;: Be sure the folder you clone to is not a sub-directory of another repository (e.g. another copy of CM). Otherwise you may have problems building.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important&#039;&#039;&#039;: Be sure the folder you clone to is not a folder managed by OneDrive or any other cloud storage service else you are going to have a bad time ever OneDrive locks a file or offloads a file from your computer onto the cloud to save space. If you allowed your system to use OneDrive this likely means your entire User folder (including documents and desktop) are all managed by OneDrive.&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Download Extensions ===&lt;br /&gt;
&lt;br /&gt;
These extensions to Visual Studio Code will allow the program to read DreamMaker code intelligently and allow you to navigate through the code faster. &lt;br /&gt;
&lt;br /&gt;
You can get them by clicking on the extensions tab - probably the fourth or fifth option, it looks like three boxes with a fourth being added - and downloading all the “Recommended” extensions.&lt;br /&gt;
&lt;br /&gt;
[[File:recommended_extensions.png|400px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 6: Configuring Language Client ===&lt;br /&gt;
Debugging features like breakpoints rely on the language server to be installed and working.&lt;br /&gt;
&lt;br /&gt;
* Search for &amp;quot;@enabled Language Client&amp;quot; in extensions&lt;br /&gt;
* Click the gear and then Extension Settings&lt;br /&gt;
* Enable Auto Update&lt;br /&gt;
* If you installed Byond in a non-default location, add/update the Byond Path to your BYOND installation folder (will be a folder with unist.exe and 6 other folders)&lt;br /&gt;
* Restart Visual Studio Code&lt;br /&gt;
&lt;br /&gt;
Auto Update will ensure you have the latest version of the language server installed in a temporary folder for Visual Studio Code. A correct path to the BYOND installation folder will allow the language server to compile and parse the code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: As of writing, BYOND 515.1633+ is functional with the language client server (dm-langserver 1.8.0+19 using auxtools commit: v2.3.3). However, 516.1668+ do not currently have working breakpoints as of dm-langserver 1.10.0+22 using auxtools commit: v2.3.5.&lt;br /&gt;
[[File:Language Client Settings.png|655x655px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 7: Finishing Up ===&lt;br /&gt;
&lt;br /&gt;
You’ve now got a complete clone of the CM-SS13 codebase on your local computer!&lt;br /&gt;
&lt;br /&gt;
== Making a Change ==&lt;br /&gt;
&lt;br /&gt;
All changes you make to the code must be done on a new branch. &lt;br /&gt;
&lt;br /&gt;
A branch is another version of your codebase - made from your “master” branch - which should be identical to the “master” branch present on the main repo - which changes can be made to without affecting your “master” branch.&lt;br /&gt;
&lt;br /&gt;
A “commit” is a save of your changes to the code you’ve made. Every time you “commit” your changes to the branch, you are saving all your changes made so far. All code must be “committed” before it can be sent to the main repository.&lt;br /&gt;
&lt;br /&gt;
To start with making changes, you must make a new branch on your forked repository, from your master branch. Your master branch should never be committed to, and should be a clean state.&lt;br /&gt;
&lt;br /&gt;
Every PR you make should have a new branch. This allows for commits you make on different branches to not affect your other branches, letting you work on multiple projects at once.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Making a New Branch ===&lt;br /&gt;
&lt;br /&gt;
Press Control + Shift + P to bring up the Command Pallet. This allows you to control Visual Studio Control easily, but we want the command “Create branch from...”. Type that in and press enter to run it. Give your branch a name - like new-helmet. Select which branch to make it from - that will be your master branch. &lt;br /&gt;
&lt;br /&gt;
[[File:create_branch_from.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Then, switch to this branch. You can do this at the bottom of the Source Control tab, under the Branches title - you might have to click on it to show all your branches. Right click on your new branch, and select the option to switch to it.&lt;br /&gt;
&lt;br /&gt;
[[File:switch_branch.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Now, you can make whatever changes you like, and you can commit them to this branch without altering your master branch.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Modifying the Code ===&lt;br /&gt;
&lt;br /&gt;
Now, if you make any change to any file within the repo, Git will notice and add it to the modified files in the Source Control tab.&lt;br /&gt;
&lt;br /&gt;
You can make a simple change - such as altering an item description - just to see your code changes reflected in game. To find an item, use the Search tab on the left - the magnifying glass - and type in the name or description if the item as it is in game.&lt;br /&gt;
&lt;br /&gt;
[[File:searching.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once you’ve made this change, it’ll be noticed at the top of the Source Control tab.&lt;br /&gt;
&lt;br /&gt;
[[File:changes.png|400px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Testing your Code ===&lt;br /&gt;
&lt;br /&gt;
Press F5 - this will start your code with the debugger attached. This will automatically pause the server and tell you when an error - usually known as a runtime - occurs.&lt;br /&gt;
&lt;br /&gt;
You can press Control-F5 to start without the debugger.&lt;br /&gt;
&lt;br /&gt;
Then, at the bottom right of your Windows interface, click the chevron to view your hidden processes. Click on the green DreamDaemon circle, and you can see the server process that has booted up. Then, on the World tab at the top, press Join. This will log you in to the server, where you will automatically have full Admin permissions.&lt;br /&gt;
&lt;br /&gt;
Find your item in game - or spawn it in with the admin game-panel - and it should have the changes you’ve made in the code. If it doesn’t- you probably didn’t save the file. Terminate the server using the stop button on Visual Studio Code or by right clicking on the DreamDaemon process and pressing Stop.&lt;br /&gt;
&lt;br /&gt;
If you are making a change that doesn&#039;t require the ground map or ship map loaded, you can speed up the loading process by using a streamlined map. You can either do this using a debugging launch option or by adding/editing the next_map.json file in your data folder to load USS Runtime instead:&lt;br /&gt;
[[File:VSC Launch Options.png|right|frameless|423x423px]]&lt;br /&gt;
data/next_map.json:&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;map_name&amp;quot;: &amp;quot;USS Runtime&amp;quot;,&lt;br /&gt;
    &amp;quot;map_path&amp;quot;: &amp;quot;map_files/USS_Runtime&amp;quot;,&lt;br /&gt;
    &amp;quot;map_file&amp;quot;: &amp;quot;USS_Runtime.dmm&amp;quot;,&lt;br /&gt;
	&amp;quot;survivor_types&amp;quot;: [&lt;br /&gt;
        &amp;quot;/datum/equipment_preset/survivor/scientist/lv&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;traits&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Marine Main Ship&amp;quot;: true,&lt;br /&gt;
            &amp;quot;Up&amp;quot;: 1&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Marine Main Ship&amp;quot;: true,&lt;br /&gt;
            &amp;quot;Down&amp;quot;: -1&lt;br /&gt;
        }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;camouflage&amp;quot;: &amp;quot;classic&amp;quot;,&lt;br /&gt;
	&amp;quot;disable_ship_map&amp;quot;: true&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Setting up Git to Commit ===&lt;br /&gt;
In order to be able to commit changes, Git needs to know who you are. This requires an email and a username - in most cases, your username should be the same as your GitHub username. The email address can be either an email you&#039;re okay with people knowing - or the private email provided by GitHub. This can be obtained at [https://github.com/settings/email https://github.com/settings/emails] under the &amp;quot;Keep my email address private&amp;quot; setting. &lt;br /&gt;
&lt;br /&gt;
Then, you need to open a new Terminal window inside Visual Studio Code. Using the top bar, navigate to &#039;Terminal&#039; and &#039;New Terminal&#039;. A window should appear at the bottom of your screen, containing a command line interface. Run the following commands:&amp;lt;pre&amp;gt;&lt;br /&gt;
git config --global user.email &amp;quot;your@email.here&amp;quot;&lt;br /&gt;
git config --global user.name &amp;quot;yourusernamehere&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Committing your Changes ===&lt;br /&gt;
&lt;br /&gt;
At the top of the Source Control tab, your modified file should be under “Changes”. Hover over the file name you have modified, and press the Plus symbol - or do the same over the Changes button to “stage” your changes.&lt;br /&gt;
&lt;br /&gt;
[[File:example_commit.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once your changes have been “staged”, they have been selected to be committed. You should give it a commit message on the box with “Message” (otherwise a page will open requiring you to fill out a message that you need to save and close), and press the tick at the top to commit those changes.&lt;br /&gt;
&lt;br /&gt;
[[File:example_stage.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once this has been completed, you’ve committed your changes locally - but they have not been published to your GitHub fork.&lt;br /&gt;
&lt;br /&gt;
=== Step 6: Publishing to GitHub ===&lt;br /&gt;
&lt;br /&gt;
This is quite simple. On the Source Control tab, you should now see the “Publish Branch”. This will publish your branch, along with your changes, to your fork on GitHub. You can navigate to it on the web to see these changes.&lt;br /&gt;
&lt;br /&gt;
[[File:publish_branch.png|400px]]&lt;br /&gt;
&lt;br /&gt;
If you make any further changes to this branch and commit them, you will see the “Sync Changes” option instead. This does the same thing - “pushing” all your changes to your fork on GitHub.&lt;br /&gt;
&lt;br /&gt;
[[File:example_sync.png|400px]]&lt;br /&gt;
&lt;br /&gt;
== Making a Pull Request ==&lt;br /&gt;
&lt;br /&gt;
A “pull request” is a *request* for the main repository to *pull* - or more accurately, merge - the contents of your branch into the master branch. This process allows for code to be tested and reviewed by maintainers/developers, before being merged into the master branch.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Navigating the Web Interface ===&lt;br /&gt;
&lt;br /&gt;
Head to your repository on GitHub - not the main CM-SS13 repo. Then, click on “master” and type in the name of your branch. &lt;br /&gt;
&lt;br /&gt;
[[File:navigating_github_create_pr.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Hit “Contribute” on the right, and it’ll bring up the option to Create Pull Request. Clicking on this automatically sets the merge as being from your branch to the master branch at the main CM-SS13 repository.&lt;br /&gt;
&lt;br /&gt;
[[File:auto_merge.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Hopefully, there&#039;s no merge conflicts, and it gives the happy green &amp;quot;Able to automatically merge&amp;quot; - however, if someone else has changed code you&#039;re changing in your PR after you made the branch for this feature, you&#039;ll need to manually deconflict the files. Read on for more about merge conflicts.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Creating the Pull Request ===&lt;br /&gt;
&lt;br /&gt;
Give your PR a good title - this will be the message of the commit to the main branch containing all your code.&lt;br /&gt;
&lt;br /&gt;
[[File:title.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, fill in the PR description, including a descriptive changelog. Put your BYOND username next to the first :cl: to ensure you are accurately credited.&lt;br /&gt;
&lt;br /&gt;
[[File:changelog.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, hit Create Pull Request (or don’t, if you’re uselessly changing one description as a test). &lt;br /&gt;
&lt;br /&gt;
[[File:create_pull_request.png|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Code Review ===&lt;br /&gt;
&lt;br /&gt;
GitHub will automatically run some tests on your code, which may fail, resulting in you having to change your code. The developers will review your code, and may also request changes. That&#039;ll look like this.&lt;br /&gt;
&lt;br /&gt;
[[File:github_checks.png|800px]]&lt;br /&gt;
&lt;br /&gt;
In order to carry out the changes, simply make the changes on your branch on your local repository, and press “Sync Changes”, this will automatically update the PR.&lt;br /&gt;
&lt;br /&gt;
If a developer has marked your PR as a draft, you will have to mark it as being ready for review. You can do this at the bottom of the web interface on your PR.&lt;br /&gt;
&lt;br /&gt;
== Staying in Sync ==&lt;br /&gt;
&lt;br /&gt;
As other PRs are merged into the repository, your fork will slowly become out of date. This will become an issue over time, as you modify code that has been changed by another recent PR, and you find conflicts that didn’t need to happen.&lt;br /&gt;
&lt;br /&gt;
To avoid this, regularly go to your master branch of your fork on the web interface, and press “Sync fork” and &amp;quot;Update branch&amp;quot;, to add all the commits recently merged to your fork.&lt;br /&gt;
&lt;br /&gt;
[[File:update_branch.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, on Visual Studio Code, you can “Sync Changes” to update your local copy of the master branch.&lt;br /&gt;
&lt;br /&gt;
Do this regularly to ensure you don’t fall out of date with any changes.&lt;br /&gt;
&lt;br /&gt;
= Appendix =&lt;br /&gt;
&lt;br /&gt;
== Merge Conflicts ==&lt;br /&gt;
When your PR is conflicting with master, this means that there are places that both you and someone else have both altered and a decision has to be made to decide what that file or line of code should be. To begin the process to resolve this, you need to merge upstream/master into your branch. (VSC Source control has an Add Remotes option in the Remotes section of Source Control where you can add the link to the .git of the main repository). This will initiate any merge hooks automatically explained more below.&lt;br /&gt;
&lt;br /&gt;
=== Mapping Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Sometimes mapping conflicts can be handled automatically via a merge hook. Install the git hooks in tools/hooks by hitting “Install.bat” (Windows) or &amp;quot;Install.sh&amp;quot; (Linux). Should a single tile be altered by both you and someone else, a mapping conflict marker will be placed in that location that will cause lint errors and yell in chat. This will help during mapping conflicts by marking areas that are conflicting, allowing you to open an editor (such as StrongDMM) to look for the conflict markers and resolve the issue.&lt;br /&gt;
&lt;br /&gt;
Should a conflict like this occur, you should then open the map editor (StrongDMM) and look for the conflict markers. In text, it will look like the conflict has entirely disappeared - but it *hasn’t* - the MapMerger has just automatically dumped everything from the conflicting branches together in a mess that *you* have to fix. Everything above the merge conflict marker will be one side of the merge, and conversely everything below the merge conflict marker will be the other side of the merge.&lt;br /&gt;
&lt;br /&gt;
=== DMI (Icon File) Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Just like with mapping conflicts these conflicts can often be handled automatically via a merge hook. Install the git hooks in tools/hooks by hitting “Install.bat” (Windows) or &amp;quot;Install.sh&amp;quot; (Linux). More often than not any new icons that someone else added will just be appended to the end of the file. But if both you and someone else alter the same icon_state of something, that will have to be manually resolved. In this situation just open up the DMI file in either Dreamaker or VSC&#039;s DMI Editor and adjust it as needed. Ultimately use the IDB (Icon Diff Bot) checks to double check you haven&#039;t unintentionally removed a icon_state someone added.&lt;br /&gt;
&lt;br /&gt;
=== Code Conflicts ===&lt;br /&gt;
&lt;br /&gt;
There is no hook to automatically handle code conflicts. Find the conflict markers in conflicting files indicated with a bunch of &amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; and &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;. VSC should make this obvious, and in some cases, deconflict the files itself. Where it fails to do so, you will need to remove the conflict markers and add the code together from both branches as applicable. Be sure to test if the changes work. For more information see https://code.visualstudio.com/docs/sourcecontrol/overview#_merge-conflicts&lt;br /&gt;
&lt;br /&gt;
== Glossary ==&lt;br /&gt;
&lt;br /&gt;
=== Branch ===&lt;br /&gt;
&lt;br /&gt;
A version of your fork that you can freely commit changes to without affecting other branches.&lt;br /&gt;
&lt;br /&gt;
=== Commit ===&lt;br /&gt;
&lt;br /&gt;
A change to a branch, can be of any size from a single space added to one file to completely rewriting the entire repository.&lt;br /&gt;
&lt;br /&gt;
=== Fork ===&lt;br /&gt;
&lt;br /&gt;
A copy of the CM-SS13 repository that you own, and can make whatever changes to that you like without impacting the main repo.&lt;br /&gt;
&lt;br /&gt;
=== Repository ===&lt;br /&gt;
&lt;br /&gt;
Often known as a repo. Ours contains all of the code, maps and assets for CM-SS13.&lt;br /&gt;
&lt;br /&gt;
=== PR ===&lt;br /&gt;
&lt;br /&gt;
Pull Request - a request for the main repository to merge the changes present in one of the branches of your fork into the master branch of the main, upstream repository.&lt;br /&gt;
&lt;br /&gt;
=== Merge ===&lt;br /&gt;
&lt;br /&gt;
Where all the commits from a branch are applied to another branch. For example, merging your origin branch containing a new feature to an upstream master branch.&lt;br /&gt;
&lt;br /&gt;
=== Merge Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Where two branches from separate contributors have touched the same code, when one of them is merged, you will have a conflict preventing automatic merging. This involves manually fitting the code together, allowing both changes to exist without overwriting either.&lt;br /&gt;
&lt;br /&gt;
=== Remote ===&lt;br /&gt;
&lt;br /&gt;
A remote is a version of your repository that is not stored on your computer - such as on GitHub. This includes both your fork and the upstream, main CM-SS13 repo.&lt;br /&gt;
&lt;br /&gt;
=== Origin ===&lt;br /&gt;
&lt;br /&gt;
This will be your fork of the CM-SS13 repository.&lt;br /&gt;
&lt;br /&gt;
=== Upstream ===&lt;br /&gt;
&lt;br /&gt;
The upstream of your fork will be the main CM-SS13 repo. Think of changes flowing down a stream from the main repo to your fork when you “Fetch Upstream”.&lt;br /&gt;
&lt;br /&gt;
=== Git ===&lt;br /&gt;
&lt;br /&gt;
The version control system used by CM-SS13, allowing us to synchronise changes being made by many different contributor - and easily go back if something goes wrong.&lt;br /&gt;
&lt;br /&gt;
=== Diff ===&lt;br /&gt;
&lt;br /&gt;
Shows the changes between the current copy of the code and the new code that you have committed.&lt;br /&gt;
&lt;br /&gt;
=== VSC / VS Code === &lt;br /&gt;
&lt;br /&gt;
Visual Studio Code, the text editor we use for DM development.&lt;/div&gt;</summary>
		<author><name>Drulikar</name></author>
	</entry>
	<entry>
		<id>https://cm-ss13.com/w/index.php?title=Guide_to_Git&amp;diff=39069</id>
		<title>Guide to Git</title>
		<link rel="alternate" type="text/html" href="https://cm-ss13.com/w/index.php?title=Guide_to_Git&amp;diff=39069"/>
		<updated>2025-10-28T02:11:21Z</updated>

		<summary type="html">&lt;p&gt;Drulikar: /* Step 5: Committing your Changes */  Mentioned commit message behavior&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Guide to Git = &lt;br /&gt;
&lt;br /&gt;
== Setting up your Coding Environment ==&lt;br /&gt;
&lt;br /&gt;
Though you can use DreamMaker, and external Git software, for modifying your code and maps, all modern SS13 tooling is set up for Visual Studio Code, so it is highly recommended. You can jump to variable definitions, procs and atoms with ease.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Download and Install Visual Studio Code ===&lt;br /&gt;
&lt;br /&gt;
Visual Studio Code is a free code editor (from Microsoft) that you can use to edit, test and publish your code to GitHub. &lt;br /&gt;
&lt;br /&gt;
You can download it from https://code.visualstudio.com/ and run the installer.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Forking the Repository === &lt;br /&gt;
&lt;br /&gt;
Go to https://github.com/cmss13-devs/cmss13, and at the top right, hit “Fork” - you’ll need a GitHub account for this.&lt;br /&gt;
&lt;br /&gt;
[[File:fork.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Follow the prompts that come up, and you’ll have your own copy of the code on GitHub.&lt;br /&gt;
&lt;br /&gt;
You will also likely want to disable actions running on your fork:&lt;br /&gt;
&lt;br /&gt;
[[File:Fork Actions Settings.png|alt=You can disable actions from running on your fork by going to settings, general under actions, disable actions, and save.|frameless|655x655px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Download and Install Git === &lt;br /&gt;
&lt;br /&gt;
You’ll need Git installed to make any changes to the repository. Download it from https://git-scm.com/downloads. &lt;br /&gt;
&lt;br /&gt;
=== Step 4: Clone Repository ===&lt;br /&gt;
Then, on Visual Studio Code, under the Source Control tab on the left bar - the third option down, you should be presented with the option to “Clone Repository”. &lt;br /&gt;
&lt;br /&gt;
[[File:clone_repo.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Paste the URL of your fork into the box that pops up - this should be in the format of &amp;lt;nowiki&amp;gt;https://github.com/&amp;lt;/nowiki&amp;gt;[YOURUSERNAME]/cmss13. Then, select a folder (see notes below) to download the repo into, and let it run. It may take awhile.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important&#039;&#039;&#039;: Be sure the folder you clone to is not a sub-directory of another repository (e.g. another copy of CM). Otherwise you may have problems building.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important&#039;&#039;&#039;: Be sure the folder you clone to is not a folder managed by OneDrive or any other cloud storage service else you are going to have a bad time ever OneDrive locks a file or offloads a file from your computer onto the cloud to save space. If you allowed your system to use OneDrive this likely means your entire User folder (including documents and desktop) are all managed by OneDrive.&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Download Extensions ===&lt;br /&gt;
&lt;br /&gt;
These extensions to Visual Studio Code will allow the program to read DreamMaker code intelligently and allow you to navigate through the code faster. &lt;br /&gt;
&lt;br /&gt;
You can get them by clicking on the extensions tab - probably the fourth or fifth option, it looks like three boxes with a fourth being added - and downloading all the “Recommended” extensions.&lt;br /&gt;
&lt;br /&gt;
[[File:recommended_extensions.png|400px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 6: Configuring Language Client ===&lt;br /&gt;
Debugging features like breakpoints rely on the language server to be installed and working.&lt;br /&gt;
&lt;br /&gt;
* Search for &amp;quot;@enabled Language Client&amp;quot; in extensions&lt;br /&gt;
* Click the gear and then Extension Settings&lt;br /&gt;
* Enable Auto Update&lt;br /&gt;
* If you installed Byond in a non-default location, add/update the Byond Path to your BYOND installation folder (will be a folder with unist.exe and 6 other folders)&lt;br /&gt;
* Restart Visual Studio Code&lt;br /&gt;
&lt;br /&gt;
Auto Update will ensure you have the latest version of the language server installed in a temporary folder for Visual Studio Code. A correct path to the BYOND installation folder will allow the language server to compile and parse the code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: As of writing, BYOND 515.1633+ is functional with the language client server (dm-langserver 1.8.0+19 using auxtools commit: v2.3.3). However, 516.1668 and 516.1669 do not currently have working breakpoints as of dm-langserver 1.10.0+22 using auxtools commit: v2.3.5.&lt;br /&gt;
[[File:Language Client Settings.png|655x655px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 7: Finishing Up ===&lt;br /&gt;
&lt;br /&gt;
You’ve now got a complete clone of the CM-SS13 codebase on your local computer!&lt;br /&gt;
&lt;br /&gt;
== Making a Change ==&lt;br /&gt;
&lt;br /&gt;
All changes you make to the code must be done on a new branch. &lt;br /&gt;
&lt;br /&gt;
A branch is another version of your codebase - made from your “master” branch - which should be identical to the “master” branch present on the main repo - which changes can be made to without affecting your “master” branch.&lt;br /&gt;
&lt;br /&gt;
A “commit” is a save of your changes to the code you’ve made. Every time you “commit” your changes to the branch, you are saving all your changes made so far. All code must be “committed” before it can be sent to the main repository.&lt;br /&gt;
&lt;br /&gt;
To start with making changes, you must make a new branch on your forked repository, from your master branch. Your master branch should never be committed to, and should be a clean state.&lt;br /&gt;
&lt;br /&gt;
Every PR you make should have a new branch. This allows for commits you make on different branches to not affect your other branches, letting you work on multiple projects at once.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Making a New Branch ===&lt;br /&gt;
&lt;br /&gt;
Press Control + Shift + P to bring up the Command Pallet. This allows you to control Visual Studio Control easily, but we want the command “Create branch from...”. Type that in and press enter to run it. Give your branch a name - like new-helmet. Select which branch to make it from - that will be your master branch. &lt;br /&gt;
&lt;br /&gt;
[[File:create_branch_from.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Then, switch to this branch. You can do this at the bottom of the Source Control tab, under the Branches title - you might have to click on it to show all your branches. Right click on your new branch, and select the option to switch to it.&lt;br /&gt;
&lt;br /&gt;
[[File:switch_branch.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Now, you can make whatever changes you like, and you can commit them to this branch without altering your master branch.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Modifying the Code ===&lt;br /&gt;
&lt;br /&gt;
Now, if you make any change to any file within the repo, Git will notice and add it to the modified files in the Source Control tab.&lt;br /&gt;
&lt;br /&gt;
You can make a simple change - such as altering an item description - just to see your code changes reflected in game. To find an item, use the Search tab on the left - the magnifying glass - and type in the name or description if the item as it is in game.&lt;br /&gt;
&lt;br /&gt;
[[File:searching.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once you’ve made this change, it’ll be noticed at the top of the Source Control tab.&lt;br /&gt;
&lt;br /&gt;
[[File:changes.png|400px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Testing your Code ===&lt;br /&gt;
&lt;br /&gt;
Press F5 - this will start your code with the debugger attached. This will automatically pause the server and tell you when an error - usually known as a runtime - occurs.&lt;br /&gt;
&lt;br /&gt;
You can press Control-F5 to start without the debugger.&lt;br /&gt;
&lt;br /&gt;
Then, at the bottom right of your Windows interface, click the chevron to view your hidden processes. Click on the green DreamDaemon circle, and you can see the server process that has booted up. Then, on the World tab at the top, press Join. This will log you in to the server, where you will automatically have full Admin permissions.&lt;br /&gt;
&lt;br /&gt;
Find your item in game - or spawn it in with the admin game-panel - and it should have the changes you’ve made in the code. If it doesn’t- you probably didn’t save the file. Terminate the server using the stop button on Visual Studio Code or by right clicking on the DreamDaemon process and pressing Stop.&lt;br /&gt;
&lt;br /&gt;
If you are making a change that doesn&#039;t require the ground map or ship map loaded, you can speed up the loading process by using a streamlined map. You can either do this using a debugging launch option or by adding/editing the next_map.json file in your data folder to load USS Runtime instead:&lt;br /&gt;
[[File:VSC Launch Options.png|right|frameless|423x423px]]&lt;br /&gt;
data/next_map.json:&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;map_name&amp;quot;: &amp;quot;USS Runtime&amp;quot;,&lt;br /&gt;
    &amp;quot;map_path&amp;quot;: &amp;quot;map_files/USS_Runtime&amp;quot;,&lt;br /&gt;
    &amp;quot;map_file&amp;quot;: &amp;quot;USS_Runtime.dmm&amp;quot;,&lt;br /&gt;
	&amp;quot;survivor_types&amp;quot;: [&lt;br /&gt;
        &amp;quot;/datum/equipment_preset/survivor/scientist/lv&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;traits&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Marine Main Ship&amp;quot;: true,&lt;br /&gt;
            &amp;quot;Up&amp;quot;: 1&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Marine Main Ship&amp;quot;: true,&lt;br /&gt;
            &amp;quot;Down&amp;quot;: -1&lt;br /&gt;
        }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;camouflage&amp;quot;: &amp;quot;classic&amp;quot;,&lt;br /&gt;
	&amp;quot;disable_ship_map&amp;quot;: true&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Setting up Git to Commit ===&lt;br /&gt;
In order to be able to commit changes, Git needs to know who you are. This requires an email and a username - in most cases, your username should be the same as your GitHub username. The email address can be either an email you&#039;re okay with people knowing - or the private email provided by GitHub. This can be obtained at [https://github.com/settings/email https://github.com/settings/emails] under the &amp;quot;Keep my email address private&amp;quot; setting. &lt;br /&gt;
&lt;br /&gt;
Then, you need to open a new Terminal window inside Visual Studio Code. Using the top bar, navigate to &#039;Terminal&#039; and &#039;New Terminal&#039;. A window should appear at the bottom of your screen, containing a command line interface. Run the following commands:&amp;lt;pre&amp;gt;&lt;br /&gt;
git config --global user.email &amp;quot;your@email.here&amp;quot;&lt;br /&gt;
git config --global user.name &amp;quot;yourusernamehere&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Committing your Changes ===&lt;br /&gt;
&lt;br /&gt;
At the top of the Source Control tab, your modified file should be under “Changes”. Hover over the file name you have modified, and press the Plus symbol - or do the same over the Changes button to “stage” your changes.&lt;br /&gt;
&lt;br /&gt;
[[File:example_commit.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once your changes have been “staged”, they have been selected to be committed. You should give it a commit message on the box with “Message” (otherwise a page will open requiring you to fill out a message that you need to save and close), and press the tick at the top to commit those changes.&lt;br /&gt;
&lt;br /&gt;
[[File:example_stage.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once this has been completed, you’ve committed your changes locally - but they have not been published to your GitHub fork.&lt;br /&gt;
&lt;br /&gt;
=== Step 6: Publishing to GitHub ===&lt;br /&gt;
&lt;br /&gt;
This is quite simple. On the Source Control tab, you should now see the “Publish Branch”. This will publish your branch, along with your changes, to your fork on GitHub. You can navigate to it on the web to see these changes.&lt;br /&gt;
&lt;br /&gt;
[[File:publish_branch.png|400px]]&lt;br /&gt;
&lt;br /&gt;
If you make any further changes to this branch and commit them, you will see the “Sync Changes” option instead. This does the same thing - “pushing” all your changes to your fork on GitHub.&lt;br /&gt;
&lt;br /&gt;
[[File:example_sync.png|400px]]&lt;br /&gt;
&lt;br /&gt;
== Making a Pull Request ==&lt;br /&gt;
&lt;br /&gt;
A “pull request” is a *request* for the main repository to *pull* - or more accurately, merge - the contents of your branch into the master branch. This process allows for code to be tested and reviewed by maintainers/developers, before being merged into the master branch.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Navigating the Web Interface ===&lt;br /&gt;
&lt;br /&gt;
Head to your repository on GitHub - not the main CM-SS13 repo. Then, click on “master” and type in the name of your branch. &lt;br /&gt;
&lt;br /&gt;
[[File:navigating_github_create_pr.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Hit “Contribute” on the right, and it’ll bring up the option to Create Pull Request. Clicking on this automatically sets the merge as being from your branch to the master branch at the main CM-SS13 repository.&lt;br /&gt;
&lt;br /&gt;
[[File:auto_merge.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Hopefully, there&#039;s no merge conflicts, and it gives the happy green &amp;quot;Able to automatically merge&amp;quot; - however, if someone else has changed code you&#039;re changing in your PR after you made the branch for this feature, you&#039;ll need to manually deconflict the files. Read on for more about merge conflicts.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Creating the Pull Request ===&lt;br /&gt;
&lt;br /&gt;
Give your PR a good title - this will be the message of the commit to the main branch containing all your code.&lt;br /&gt;
&lt;br /&gt;
[[File:title.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, fill in the PR description, including a descriptive changelog. Put your BYOND username next to the first :cl: to ensure you are accurately credited.&lt;br /&gt;
&lt;br /&gt;
[[File:changelog.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, hit Create Pull Request (or don’t, if you’re uselessly changing one description as a test). &lt;br /&gt;
&lt;br /&gt;
[[File:create_pull_request.png|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Code Review ===&lt;br /&gt;
&lt;br /&gt;
GitHub will automatically run some tests on your code, which may fail, resulting in you having to change your code. The developers will review your code, and may also request changes. That&#039;ll look like this.&lt;br /&gt;
&lt;br /&gt;
[[File:github_checks.png|800px]]&lt;br /&gt;
&lt;br /&gt;
In order to carry out the changes, simply make the changes on your branch on your local repository, and press “Sync Changes”, this will automatically update the PR.&lt;br /&gt;
&lt;br /&gt;
If a developer has marked your PR as a draft, you will have to mark it as being ready for review. You can do this at the bottom of the web interface on your PR.&lt;br /&gt;
&lt;br /&gt;
== Staying in Sync ==&lt;br /&gt;
&lt;br /&gt;
As other PRs are merged into the repository, your fork will slowly become out of date. This will become an issue over time, as you modify code that has been changed by another recent PR, and you find conflicts that didn’t need to happen.&lt;br /&gt;
&lt;br /&gt;
To avoid this, regularly go to your master branch of your fork on the web interface, and press “Sync fork” and &amp;quot;Update branch&amp;quot;, to add all the commits recently merged to your fork.&lt;br /&gt;
&lt;br /&gt;
[[File:update_branch.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, on Visual Studio Code, you can “Sync Changes” to update your local copy of the master branch.&lt;br /&gt;
&lt;br /&gt;
Do this regularly to ensure you don’t fall out of date with any changes.&lt;br /&gt;
&lt;br /&gt;
= Appendix =&lt;br /&gt;
&lt;br /&gt;
== Merge Conflicts ==&lt;br /&gt;
When your PR is conflicting with master, this means that there are places that both you and someone else have both altered and a decision has to be made to decide what that file or line of code should be. To begin the process to resolve this, you need to merge upstream/master into your branch. (VSC Source control has an Add Remotes option in the Remotes section of Source Control where you can add the link to the .git of the main repository). This will initiate any merge hooks automatically explained more below.&lt;br /&gt;
&lt;br /&gt;
=== Mapping Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Sometimes mapping conflicts can be handled automatically via a merge hook. Install the git hooks in tools/hooks by hitting “Install.bat” (Windows) or &amp;quot;Install.sh&amp;quot; (Linux). Should a single tile be altered by both you and someone else, a mapping conflict marker will be placed in that location that will cause lint errors and yell in chat. This will help during mapping conflicts by marking areas that are conflicting, allowing you to open an editor (such as StrongDMM) to look for the conflict markers and resolve the issue.&lt;br /&gt;
&lt;br /&gt;
Should a conflict like this occur, you should then open the map editor (StrongDMM) and look for the conflict markers. In text, it will look like the conflict has entirely disappeared - but it *hasn’t* - the MapMerger has just automatically dumped everything from the conflicting branches together in a mess that *you* have to fix. Everything above the merge conflict marker will be one side of the merge, and conversely everything below the merge conflict marker will be the other side of the merge.&lt;br /&gt;
&lt;br /&gt;
=== DMI (Icon File) Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Just like with mapping conflicts these conflicts can often be handled automatically via a merge hook. Install the git hooks in tools/hooks by hitting “Install.bat” (Windows) or &amp;quot;Install.sh&amp;quot; (Linux). More often than not any new icons that someone else added will just be appended to the end of the file. But if both you and someone else alter the same icon_state of something, that will have to be manually resolved. In this situation just open up the DMI file in either Dreamaker or VSC&#039;s DMI Editor and adjust it as needed. Ultimately use the IDB (Icon Diff Bot) checks to double check you haven&#039;t unintentionally removed a icon_state someone added.&lt;br /&gt;
&lt;br /&gt;
=== Code Conflicts ===&lt;br /&gt;
&lt;br /&gt;
There is no hook to automatically handle code conflicts. Find the conflict markers in conflicting files indicated with a bunch of &amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; and &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;. VSC should make this obvious, and in some cases, deconflict the files itself. Where it fails to do so, you will need to remove the conflict markers and add the code together from both branches as applicable. Be sure to test if the changes work. For more information see https://code.visualstudio.com/docs/sourcecontrol/overview#_merge-conflicts&lt;br /&gt;
&lt;br /&gt;
== Glossary ==&lt;br /&gt;
&lt;br /&gt;
=== Branch ===&lt;br /&gt;
&lt;br /&gt;
A version of your fork that you can freely commit changes to without affecting other branches.&lt;br /&gt;
&lt;br /&gt;
=== Commit ===&lt;br /&gt;
&lt;br /&gt;
A change to a branch, can be of any size from a single space added to one file to completely rewriting the entire repository.&lt;br /&gt;
&lt;br /&gt;
=== Fork ===&lt;br /&gt;
&lt;br /&gt;
A copy of the CM-SS13 repository that you own, and can make whatever changes to that you like without impacting the main repo.&lt;br /&gt;
&lt;br /&gt;
=== Repository ===&lt;br /&gt;
&lt;br /&gt;
Often known as a repo. Ours contains all of the code, maps and assets for CM-SS13.&lt;br /&gt;
&lt;br /&gt;
=== PR ===&lt;br /&gt;
&lt;br /&gt;
Pull Request - a request for the main repository to merge the changes present in one of the branches of your fork into the master branch of the main, upstream repository.&lt;br /&gt;
&lt;br /&gt;
=== Merge ===&lt;br /&gt;
&lt;br /&gt;
Where all the commits from a branch are applied to another branch. For example, merging your origin branch containing a new feature to an upstream master branch.&lt;br /&gt;
&lt;br /&gt;
=== Merge Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Where two branches from separate contributors have touched the same code, when one of them is merged, you will have a conflict preventing automatic merging. This involves manually fitting the code together, allowing both changes to exist without overwriting either.&lt;br /&gt;
&lt;br /&gt;
=== Remote ===&lt;br /&gt;
&lt;br /&gt;
A remote is a version of your repository that is not stored on your computer - such as on GitHub. This includes both your fork and the upstream, main CM-SS13 repo.&lt;br /&gt;
&lt;br /&gt;
=== Origin ===&lt;br /&gt;
&lt;br /&gt;
This will be your fork of the CM-SS13 repository.&lt;br /&gt;
&lt;br /&gt;
=== Upstream ===&lt;br /&gt;
&lt;br /&gt;
The upstream of your fork will be the main CM-SS13 repo. Think of changes flowing down a stream from the main repo to your fork when you “Fetch Upstream”.&lt;br /&gt;
&lt;br /&gt;
=== Git ===&lt;br /&gt;
&lt;br /&gt;
The version control system used by CM-SS13, allowing us to synchronise changes being made by many different contributor - and easily go back if something goes wrong.&lt;br /&gt;
&lt;br /&gt;
=== Diff ===&lt;br /&gt;
&lt;br /&gt;
Shows the changes between the current copy of the code and the new code that you have committed.&lt;br /&gt;
&lt;br /&gt;
=== VSC / VS Code === &lt;br /&gt;
&lt;br /&gt;
Visual Studio Code, the text editor we use for DM development.&lt;/div&gt;</summary>
		<author><name>Drulikar</name></author>
	</entry>
	<entry>
		<id>https://cm-ss13.com/w/index.php?title=Guide_to_Git&amp;diff=39068</id>
		<title>Guide to Git</title>
		<link rel="alternate" type="text/html" href="https://cm-ss13.com/w/index.php?title=Guide_to_Git&amp;diff=39068"/>
		<updated>2025-10-28T02:08:55Z</updated>

		<summary type="html">&lt;p&gt;Drulikar: Added mention of launch arguments for runtime map&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Guide to Git = &lt;br /&gt;
&lt;br /&gt;
== Setting up your Coding Environment ==&lt;br /&gt;
&lt;br /&gt;
Though you can use DreamMaker, and external Git software, for modifying your code and maps, all modern SS13 tooling is set up for Visual Studio Code, so it is highly recommended. You can jump to variable definitions, procs and atoms with ease.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Download and Install Visual Studio Code ===&lt;br /&gt;
&lt;br /&gt;
Visual Studio Code is a free code editor (from Microsoft) that you can use to edit, test and publish your code to GitHub. &lt;br /&gt;
&lt;br /&gt;
You can download it from https://code.visualstudio.com/ and run the installer.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Forking the Repository === &lt;br /&gt;
&lt;br /&gt;
Go to https://github.com/cmss13-devs/cmss13, and at the top right, hit “Fork” - you’ll need a GitHub account for this.&lt;br /&gt;
&lt;br /&gt;
[[File:fork.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Follow the prompts that come up, and you’ll have your own copy of the code on GitHub.&lt;br /&gt;
&lt;br /&gt;
You will also likely want to disable actions running on your fork:&lt;br /&gt;
&lt;br /&gt;
[[File:Fork Actions Settings.png|alt=You can disable actions from running on your fork by going to settings, general under actions, disable actions, and save.|frameless|655x655px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Download and Install Git === &lt;br /&gt;
&lt;br /&gt;
You’ll need Git installed to make any changes to the repository. Download it from https://git-scm.com/downloads. &lt;br /&gt;
&lt;br /&gt;
=== Step 4: Clone Repository ===&lt;br /&gt;
Then, on Visual Studio Code, under the Source Control tab on the left bar - the third option down, you should be presented with the option to “Clone Repository”. &lt;br /&gt;
&lt;br /&gt;
[[File:clone_repo.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Paste the URL of your fork into the box that pops up - this should be in the format of &amp;lt;nowiki&amp;gt;https://github.com/&amp;lt;/nowiki&amp;gt;[YOURUSERNAME]/cmss13. Then, select a folder (see notes below) to download the repo into, and let it run. It may take awhile.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important&#039;&#039;&#039;: Be sure the folder you clone to is not a sub-directory of another repository (e.g. another copy of CM). Otherwise you may have problems building.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important&#039;&#039;&#039;: Be sure the folder you clone to is not a folder managed by OneDrive or any other cloud storage service else you are going to have a bad time ever OneDrive locks a file or offloads a file from your computer onto the cloud to save space. If you allowed your system to use OneDrive this likely means your entire User folder (including documents and desktop) are all managed by OneDrive.&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Download Extensions ===&lt;br /&gt;
&lt;br /&gt;
These extensions to Visual Studio Code will allow the program to read DreamMaker code intelligently and allow you to navigate through the code faster. &lt;br /&gt;
&lt;br /&gt;
You can get them by clicking on the extensions tab - probably the fourth or fifth option, it looks like three boxes with a fourth being added - and downloading all the “Recommended” extensions.&lt;br /&gt;
&lt;br /&gt;
[[File:recommended_extensions.png|400px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 6: Configuring Language Client ===&lt;br /&gt;
Debugging features like breakpoints rely on the language server to be installed and working.&lt;br /&gt;
&lt;br /&gt;
* Search for &amp;quot;@enabled Language Client&amp;quot; in extensions&lt;br /&gt;
* Click the gear and then Extension Settings&lt;br /&gt;
* Enable Auto Update&lt;br /&gt;
* If you installed Byond in a non-default location, add/update the Byond Path to your BYOND installation folder (will be a folder with unist.exe and 6 other folders)&lt;br /&gt;
* Restart Visual Studio Code&lt;br /&gt;
&lt;br /&gt;
Auto Update will ensure you have the latest version of the language server installed in a temporary folder for Visual Studio Code. A correct path to the BYOND installation folder will allow the language server to compile and parse the code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: As of writing, BYOND 515.1633+ is functional with the language client server (dm-langserver 1.8.0+19 using auxtools commit: v2.3.3). However, 516.1668 and 516.1669 do not currently have working breakpoints as of dm-langserver 1.10.0+22 using auxtools commit: v2.3.5.&lt;br /&gt;
[[File:Language Client Settings.png|655x655px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 7: Finishing Up ===&lt;br /&gt;
&lt;br /&gt;
You’ve now got a complete clone of the CM-SS13 codebase on your local computer!&lt;br /&gt;
&lt;br /&gt;
== Making a Change ==&lt;br /&gt;
&lt;br /&gt;
All changes you make to the code must be done on a new branch. &lt;br /&gt;
&lt;br /&gt;
A branch is another version of your codebase - made from your “master” branch - which should be identical to the “master” branch present on the main repo - which changes can be made to without affecting your “master” branch.&lt;br /&gt;
&lt;br /&gt;
A “commit” is a save of your changes to the code you’ve made. Every time you “commit” your changes to the branch, you are saving all your changes made so far. All code must be “committed” before it can be sent to the main repository.&lt;br /&gt;
&lt;br /&gt;
To start with making changes, you must make a new branch on your forked repository, from your master branch. Your master branch should never be committed to, and should be a clean state.&lt;br /&gt;
&lt;br /&gt;
Every PR you make should have a new branch. This allows for commits you make on different branches to not affect your other branches, letting you work on multiple projects at once.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Making a New Branch ===&lt;br /&gt;
&lt;br /&gt;
Press Control + Shift + P to bring up the Command Pallet. This allows you to control Visual Studio Control easily, but we want the command “Create branch from...”. Type that in and press enter to run it. Give your branch a name - like new-helmet. Select which branch to make it from - that will be your master branch. &lt;br /&gt;
&lt;br /&gt;
[[File:create_branch_from.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Then, switch to this branch. You can do this at the bottom of the Source Control tab, under the Branches title - you might have to click on it to show all your branches. Right click on your new branch, and select the option to switch to it.&lt;br /&gt;
&lt;br /&gt;
[[File:switch_branch.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Now, you can make whatever changes you like, and you can commit them to this branch without altering your master branch.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Modifying the Code ===&lt;br /&gt;
&lt;br /&gt;
Now, if you make any change to any file within the repo, Git will notice and add it to the modified files in the Source Control tab.&lt;br /&gt;
&lt;br /&gt;
You can make a simple change - such as altering an item description - just to see your code changes reflected in game. To find an item, use the Search tab on the left - the magnifying glass - and type in the name or description if the item as it is in game.&lt;br /&gt;
&lt;br /&gt;
[[File:searching.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once you’ve made this change, it’ll be noticed at the top of the Source Control tab.&lt;br /&gt;
&lt;br /&gt;
[[File:changes.png|400px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Testing your Code ===&lt;br /&gt;
&lt;br /&gt;
Press F5 - this will start your code with the debugger attached. This will automatically pause the server and tell you when an error - usually known as a runtime - occurs.&lt;br /&gt;
&lt;br /&gt;
You can press Control-F5 to start without the debugger.&lt;br /&gt;
&lt;br /&gt;
Then, at the bottom right of your Windows interface, click the chevron to view your hidden processes. Click on the green DreamDaemon circle, and you can see the server process that has booted up. Then, on the World tab at the top, press Join. This will log you in to the server, where you will automatically have full Admin permissions.&lt;br /&gt;
&lt;br /&gt;
Find your item in game - or spawn it in with the admin game-panel - and it should have the changes you’ve made in the code. If it doesn’t- you probably didn’t save the file. Terminate the server using the stop button on Visual Studio Code or by right clicking on the DreamDaemon process and pressing Stop.&lt;br /&gt;
&lt;br /&gt;
If you are making a change that doesn&#039;t require the ground map or ship map loaded, you can speed up the loading process by using a streamlined map. You can either do this using a debugging launch option or by adding/editing the next_map.json file in your data folder to load USS Runtime instead:&lt;br /&gt;
[[File:VSC Launch Options.png|right|frameless|423x423px]]&lt;br /&gt;
data/next_map.json:&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;map_name&amp;quot;: &amp;quot;USS Runtime&amp;quot;,&lt;br /&gt;
    &amp;quot;map_path&amp;quot;: &amp;quot;map_files/USS_Runtime&amp;quot;,&lt;br /&gt;
    &amp;quot;map_file&amp;quot;: &amp;quot;USS_Runtime.dmm&amp;quot;,&lt;br /&gt;
	&amp;quot;survivor_types&amp;quot;: [&lt;br /&gt;
        &amp;quot;/datum/equipment_preset/survivor/scientist/lv&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;traits&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Marine Main Ship&amp;quot;: true,&lt;br /&gt;
            &amp;quot;Up&amp;quot;: 1&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Marine Main Ship&amp;quot;: true,&lt;br /&gt;
            &amp;quot;Down&amp;quot;: -1&lt;br /&gt;
        }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;camouflage&amp;quot;: &amp;quot;classic&amp;quot;,&lt;br /&gt;
	&amp;quot;disable_ship_map&amp;quot;: true&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Setting up Git to Commit ===&lt;br /&gt;
In order to be able to commit changes, Git needs to know who you are. This requires an email and a username - in most cases, your username should be the same as your GitHub username. The email address can be either an email you&#039;re okay with people knowing - or the private email provided by GitHub. This can be obtained at [https://github.com/settings/email https://github.com/settings/emails] under the &amp;quot;Keep my email address private&amp;quot; setting. &lt;br /&gt;
&lt;br /&gt;
Then, you need to open a new Terminal window inside Visual Studio Code. Using the top bar, navigate to &#039;Terminal&#039; and &#039;New Terminal&#039;. A window should appear at the bottom of your screen, containing a command line interface. Run the following commands:&amp;lt;pre&amp;gt;&lt;br /&gt;
git config --global user.email &amp;quot;your@email.here&amp;quot;&lt;br /&gt;
git config --global user.name &amp;quot;yourusernamehere&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Committing your Changes ===&lt;br /&gt;
&lt;br /&gt;
At the top of the Source Control tab, your modified file should be under “Changes”. Hover over the file name you have modified, and press the Plus symbol - or do the same over the Changes button to “stage” your changes.&lt;br /&gt;
&lt;br /&gt;
[[File:example_commit.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once your changes have been “staged”, they have been selected to be committed. You can give it a commit message on the box with “Message”, and press the tick at the top to commit those changes.&lt;br /&gt;
&lt;br /&gt;
[[File:example_stage.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once this has been completed, you’ve committed your changes locally - but they have not been published to your GitHub fork.&lt;br /&gt;
&lt;br /&gt;
=== Step 6: Publishing to GitHub ===&lt;br /&gt;
&lt;br /&gt;
This is quite simple. On the Source Control tab, you should now see the “Publish Branch”. This will publish your branch, along with your changes, to your fork on GitHub. You can navigate to it on the web to see these changes.&lt;br /&gt;
&lt;br /&gt;
[[File:publish_branch.png|400px]]&lt;br /&gt;
&lt;br /&gt;
If you make any further changes to this branch and commit them, you will see the “Sync Changes” option instead. This does the same thing - “pushing” all your changes to your fork on GitHub.&lt;br /&gt;
&lt;br /&gt;
[[File:example_sync.png|400px]]&lt;br /&gt;
&lt;br /&gt;
== Making a Pull Request ==&lt;br /&gt;
&lt;br /&gt;
A “pull request” is a *request* for the main repository to *pull* - or more accurately, merge - the contents of your branch into the master branch. This process allows for code to be tested and reviewed by maintainers/developers, before being merged into the master branch.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Navigating the Web Interface ===&lt;br /&gt;
&lt;br /&gt;
Head to your repository on GitHub - not the main CM-SS13 repo. Then, click on “master” and type in the name of your branch. &lt;br /&gt;
&lt;br /&gt;
[[File:navigating_github_create_pr.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Hit “Contribute” on the right, and it’ll bring up the option to Create Pull Request. Clicking on this automatically sets the merge as being from your branch to the master branch at the main CM-SS13 repository.&lt;br /&gt;
&lt;br /&gt;
[[File:auto_merge.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Hopefully, there&#039;s no merge conflicts, and it gives the happy green &amp;quot;Able to automatically merge&amp;quot; - however, if someone else has changed code you&#039;re changing in your PR after you made the branch for this feature, you&#039;ll need to manually deconflict the files. Read on for more about merge conflicts.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Creating the Pull Request ===&lt;br /&gt;
&lt;br /&gt;
Give your PR a good title - this will be the message of the commit to the main branch containing all your code.&lt;br /&gt;
&lt;br /&gt;
[[File:title.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, fill in the PR description, including a descriptive changelog. Put your BYOND username next to the first :cl: to ensure you are accurately credited.&lt;br /&gt;
&lt;br /&gt;
[[File:changelog.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, hit Create Pull Request (or don’t, if you’re uselessly changing one description as a test). &lt;br /&gt;
&lt;br /&gt;
[[File:create_pull_request.png|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Code Review ===&lt;br /&gt;
&lt;br /&gt;
GitHub will automatically run some tests on your code, which may fail, resulting in you having to change your code. The developers will review your code, and may also request changes. That&#039;ll look like this.&lt;br /&gt;
&lt;br /&gt;
[[File:github_checks.png|800px]]&lt;br /&gt;
&lt;br /&gt;
In order to carry out the changes, simply make the changes on your branch on your local repository, and press “Sync Changes”, this will automatically update the PR.&lt;br /&gt;
&lt;br /&gt;
If a developer has marked your PR as a draft, you will have to mark it as being ready for review. You can do this at the bottom of the web interface on your PR.&lt;br /&gt;
&lt;br /&gt;
== Staying in Sync ==&lt;br /&gt;
&lt;br /&gt;
As other PRs are merged into the repository, your fork will slowly become out of date. This will become an issue over time, as you modify code that has been changed by another recent PR, and you find conflicts that didn’t need to happen.&lt;br /&gt;
&lt;br /&gt;
To avoid this, regularly go to your master branch of your fork on the web interface, and press “Sync fork” and &amp;quot;Update branch&amp;quot;, to add all the commits recently merged to your fork.&lt;br /&gt;
&lt;br /&gt;
[[File:update_branch.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, on Visual Studio Code, you can “Sync Changes” to update your local copy of the master branch.&lt;br /&gt;
&lt;br /&gt;
Do this regularly to ensure you don’t fall out of date with any changes.&lt;br /&gt;
&lt;br /&gt;
= Appendix =&lt;br /&gt;
&lt;br /&gt;
== Merge Conflicts ==&lt;br /&gt;
When your PR is conflicting with master, this means that there are places that both you and someone else have both altered and a decision has to be made to decide what that file or line of code should be. To begin the process to resolve this, you need to merge upstream/master into your branch. (VSC Source control has an Add Remotes option in the Remotes section of Source Control where you can add the link to the .git of the main repository). This will initiate any merge hooks automatically explained more below.&lt;br /&gt;
&lt;br /&gt;
=== Mapping Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Sometimes mapping conflicts can be handled automatically via a merge hook. Install the git hooks in tools/hooks by hitting “Install.bat” (Windows) or &amp;quot;Install.sh&amp;quot; (Linux). Should a single tile be altered by both you and someone else, a mapping conflict marker will be placed in that location that will cause lint errors and yell in chat. This will help during mapping conflicts by marking areas that are conflicting, allowing you to open an editor (such as StrongDMM) to look for the conflict markers and resolve the issue.&lt;br /&gt;
&lt;br /&gt;
Should a conflict like this occur, you should then open the map editor (StrongDMM) and look for the conflict markers. In text, it will look like the conflict has entirely disappeared - but it *hasn’t* - the MapMerger has just automatically dumped everything from the conflicting branches together in a mess that *you* have to fix. Everything above the merge conflict marker will be one side of the merge, and conversely everything below the merge conflict marker will be the other side of the merge.&lt;br /&gt;
&lt;br /&gt;
=== DMI (Icon File) Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Just like with mapping conflicts these conflicts can often be handled automatically via a merge hook. Install the git hooks in tools/hooks by hitting “Install.bat” (Windows) or &amp;quot;Install.sh&amp;quot; (Linux). More often than not any new icons that someone else added will just be appended to the end of the file. But if both you and someone else alter the same icon_state of something, that will have to be manually resolved. In this situation just open up the DMI file in either Dreamaker or VSC&#039;s DMI Editor and adjust it as needed. Ultimately use the IDB (Icon Diff Bot) checks to double check you haven&#039;t unintentionally removed a icon_state someone added.&lt;br /&gt;
&lt;br /&gt;
=== Code Conflicts ===&lt;br /&gt;
&lt;br /&gt;
There is no hook to automatically handle code conflicts. Find the conflict markers in conflicting files indicated with a bunch of &amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; and &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;. VSC should make this obvious, and in some cases, deconflict the files itself. Where it fails to do so, you will need to remove the conflict markers and add the code together from both branches as applicable. Be sure to test if the changes work. For more information see https://code.visualstudio.com/docs/sourcecontrol/overview#_merge-conflicts&lt;br /&gt;
&lt;br /&gt;
== Glossary ==&lt;br /&gt;
&lt;br /&gt;
=== Branch ===&lt;br /&gt;
&lt;br /&gt;
A version of your fork that you can freely commit changes to without affecting other branches.&lt;br /&gt;
&lt;br /&gt;
=== Commit ===&lt;br /&gt;
&lt;br /&gt;
A change to a branch, can be of any size from a single space added to one file to completely rewriting the entire repository.&lt;br /&gt;
&lt;br /&gt;
=== Fork ===&lt;br /&gt;
&lt;br /&gt;
A copy of the CM-SS13 repository that you own, and can make whatever changes to that you like without impacting the main repo.&lt;br /&gt;
&lt;br /&gt;
=== Repository ===&lt;br /&gt;
&lt;br /&gt;
Often known as a repo. Ours contains all of the code, maps and assets for CM-SS13.&lt;br /&gt;
&lt;br /&gt;
=== PR ===&lt;br /&gt;
&lt;br /&gt;
Pull Request - a request for the main repository to merge the changes present in one of the branches of your fork into the master branch of the main, upstream repository.&lt;br /&gt;
&lt;br /&gt;
=== Merge ===&lt;br /&gt;
&lt;br /&gt;
Where all the commits from a branch are applied to another branch. For example, merging your origin branch containing a new feature to an upstream master branch.&lt;br /&gt;
&lt;br /&gt;
=== Merge Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Where two branches from separate contributors have touched the same code, when one of them is merged, you will have a conflict preventing automatic merging. This involves manually fitting the code together, allowing both changes to exist without overwriting either.&lt;br /&gt;
&lt;br /&gt;
=== Remote ===&lt;br /&gt;
&lt;br /&gt;
A remote is a version of your repository that is not stored on your computer - such as on GitHub. This includes both your fork and the upstream, main CM-SS13 repo.&lt;br /&gt;
&lt;br /&gt;
=== Origin ===&lt;br /&gt;
&lt;br /&gt;
This will be your fork of the CM-SS13 repository.&lt;br /&gt;
&lt;br /&gt;
=== Upstream ===&lt;br /&gt;
&lt;br /&gt;
The upstream of your fork will be the main CM-SS13 repo. Think of changes flowing down a stream from the main repo to your fork when you “Fetch Upstream”.&lt;br /&gt;
&lt;br /&gt;
=== Git ===&lt;br /&gt;
&lt;br /&gt;
The version control system used by CM-SS13, allowing us to synchronise changes being made by many different contributor - and easily go back if something goes wrong.&lt;br /&gt;
&lt;br /&gt;
=== Diff ===&lt;br /&gt;
&lt;br /&gt;
Shows the changes between the current copy of the code and the new code that you have committed.&lt;br /&gt;
&lt;br /&gt;
=== VSC / VS Code === &lt;br /&gt;
&lt;br /&gt;
Visual Studio Code, the text editor we use for DM development.&lt;/div&gt;</summary>
		<author><name>Drulikar</name></author>
	</entry>
	<entry>
		<id>https://cm-ss13.com/w/index.php?title=File:VSC_Launch_Options.png&amp;diff=39067</id>
		<title>File:VSC Launch Options.png</title>
		<link rel="alternate" type="text/html" href="https://cm-ss13.com/w/index.php?title=File:VSC_Launch_Options.png&amp;diff=39067"/>
		<updated>2025-10-28T02:04:19Z</updated>

		<summary type="html">&lt;p&gt;Drulikar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Debugging Launch Options in VSC&lt;/div&gt;</summary>
		<author><name>Drulikar</name></author>
	</entry>
	<entry>
		<id>https://cm-ss13.com/w/index.php?title=Guide_to_Git&amp;diff=39066</id>
		<title>Guide to Git</title>
		<link rel="alternate" type="text/html" href="https://cm-ss13.com/w/index.php?title=Guide_to_Git&amp;diff=39066"/>
		<updated>2025-10-28T02:00:31Z</updated>

		<summary type="html">&lt;p&gt;Drulikar: /* Step 5: Download Extensions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Guide to Git = &lt;br /&gt;
&lt;br /&gt;
== Setting up your Coding Environment ==&lt;br /&gt;
&lt;br /&gt;
Though you can use DreamMaker, and external Git software, for modifying your code and maps, all modern SS13 tooling is set up for Visual Studio Code, so it is highly recommended. You can jump to variable definitions, procs and atoms with ease.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Download and Install Visual Studio Code ===&lt;br /&gt;
&lt;br /&gt;
Visual Studio Code is a free code editor (from Microsoft) that you can use to edit, test and publish your code to GitHub. &lt;br /&gt;
&lt;br /&gt;
You can download it from https://code.visualstudio.com/ and run the installer.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Forking the Repository === &lt;br /&gt;
&lt;br /&gt;
Go to https://github.com/cmss13-devs/cmss13, and at the top right, hit “Fork” - you’ll need a GitHub account for this.&lt;br /&gt;
&lt;br /&gt;
[[File:fork.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Follow the prompts that come up, and you’ll have your own copy of the code on GitHub.&lt;br /&gt;
&lt;br /&gt;
You will also likely want to disable actions running on your fork:&lt;br /&gt;
&lt;br /&gt;
[[File:Fork Actions Settings.png|alt=You can disable actions from running on your fork by going to settings, general under actions, disable actions, and save.|frameless|655x655px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Download and Install Git === &lt;br /&gt;
&lt;br /&gt;
You’ll need Git installed to make any changes to the repository. Download it from https://git-scm.com/downloads. &lt;br /&gt;
&lt;br /&gt;
=== Step 4: Clone Repository ===&lt;br /&gt;
Then, on Visual Studio Code, under the Source Control tab on the left bar - the third option down, you should be presented with the option to “Clone Repository”. &lt;br /&gt;
&lt;br /&gt;
[[File:clone_repo.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Paste the URL of your fork into the box that pops up - this should be in the format of &amp;lt;nowiki&amp;gt;https://github.com/&amp;lt;/nowiki&amp;gt;[YOURUSERNAME]/cmss13. Then, select a folder (see notes below) to download the repo into, and let it run. It may take awhile.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important&#039;&#039;&#039;: Be sure the folder you clone to is not a sub-directory of another repository (e.g. another copy of CM). Otherwise you may have problems building.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important&#039;&#039;&#039;: Be sure the folder you clone to is not a folder managed by OneDrive or any other cloud storage service else you are going to have a bad time ever OneDrive locks a file or offloads a file from your computer onto the cloud to save space. If you allowed your system to use OneDrive this likely means your entire User folder (including documents and desktop) are all managed by OneDrive.&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Download Extensions ===&lt;br /&gt;
&lt;br /&gt;
These extensions to Visual Studio Code will allow the program to read DreamMaker code intelligently and allow you to navigate through the code faster. &lt;br /&gt;
&lt;br /&gt;
You can get them by clicking on the extensions tab - probably the fourth or fifth option, it looks like three boxes with a fourth being added - and downloading all the “Recommended” extensions.&lt;br /&gt;
&lt;br /&gt;
[[File:recommended_extensions.png|400px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 6: Configuring Language Client ===&lt;br /&gt;
Debugging features like breakpoints rely on the language server to be installed and working.&lt;br /&gt;
&lt;br /&gt;
* Search for &amp;quot;@enabled Language Client&amp;quot; in extensions&lt;br /&gt;
* Click the gear and then Extension Settings&lt;br /&gt;
* Enable Auto Update&lt;br /&gt;
* If you installed Byond in a non-default location, add/update the Byond Path to your BYOND installation folder (will be a folder with unist.exe and 6 other folders)&lt;br /&gt;
* Restart Visual Studio Code&lt;br /&gt;
&lt;br /&gt;
Auto Update will ensure you have the latest version of the language server installed in a temporary folder for Visual Studio Code. A correct path to the BYOND installation folder will allow the language server to compile and parse the code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: As of writing, BYOND 515.1633+ is functional with the language client server (dm-langserver 1.8.0+19 using auxtools commit: v2.3.3). However, 516.1668 and 516.1669 do not currently have working breakpoints as of dm-langserver 1.10.0+22 using auxtools commit: v2.3.5.&lt;br /&gt;
[[File:Language Client Settings.png|655x655px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 7: Finishing Up ===&lt;br /&gt;
&lt;br /&gt;
You’ve now got a complete clone of the CM-SS13 codebase on your local computer!&lt;br /&gt;
&lt;br /&gt;
== Making a Change ==&lt;br /&gt;
&lt;br /&gt;
All changes you make to the code must be done on a new branch. &lt;br /&gt;
&lt;br /&gt;
A branch is another version of your codebase - made from your “master” branch - which should be identical to the “master” branch present on the main repo - which changes can be made to without affecting your “master” branch.&lt;br /&gt;
&lt;br /&gt;
A “commit” is a save of your changes to the code you’ve made. Every time you “commit” your changes to the branch, you are saving all your changes made so far. All code must be “committed” before it can be sent to the main repository.&lt;br /&gt;
&lt;br /&gt;
To start with making changes, you must make a new branch on your forked repository, from your master branch. Your master branch should never be committed to, and should be a clean state.&lt;br /&gt;
&lt;br /&gt;
Every PR you make should have a new branch. This allows for commits you make on different branches to not affect your other branches, letting you work on multiple projects at once.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Making a New Branch ===&lt;br /&gt;
&lt;br /&gt;
Press Control + Shift + P to bring up the Command Pallet. This allows you to control Visual Studio Control easily, but we want the command “Create branch from...”. Type that in and press enter to run it. Give your branch a name - like new-helmet. Select which branch to make it from - that will be your master branch. &lt;br /&gt;
&lt;br /&gt;
[[File:create_branch_from.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Then, switch to this branch. You can do this at the bottom of the Source Control tab, under the Branches title - you might have to click on it to show all your branches. Right click on your new branch, and select the option to switch to it.&lt;br /&gt;
&lt;br /&gt;
[[File:switch_branch.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Now, you can make whatever changes you like, and you can commit them to this branch without altering your master branch.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Modifying the Code ===&lt;br /&gt;
&lt;br /&gt;
Now, if you make any change to any file within the repo, Git will notice and add it to the modified files in the Source Control tab.&lt;br /&gt;
&lt;br /&gt;
You can make a simple change - such as altering an item description - just to see your code changes reflected in game. To find an item, use the Search tab on the left - the magnifying glass - and type in the name or description if the item as it is in game.&lt;br /&gt;
&lt;br /&gt;
[[File:searching.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once you’ve made this change, it’ll be noticed at the top of the Source Control tab.&lt;br /&gt;
&lt;br /&gt;
[[File:changes.png|400px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Testing your Code ===&lt;br /&gt;
&lt;br /&gt;
Press F5 - this will start your code with the debugger attached. This will automatically pause the server and tell you when an error - usually known as a runtime - occurs.&lt;br /&gt;
&lt;br /&gt;
You can press Control-F5 to start without the debugger.&lt;br /&gt;
&lt;br /&gt;
Then, at the bottom right of your Windows interface, click the chevron to view your hidden processes. Click on the green DreamDaemon circle, and you can see the server process that has booted up. Then, on the World tab at the top, press Join. This will log you in to the server, where you will automatically have full Admin permissions.&lt;br /&gt;
&lt;br /&gt;
Find your item in game - or spawn it in with the admin game-panel - and it should have the changes you’ve made in the code. If it doesn’t- you probably didn’t save the file. Terminate the server using the stop button on Visual Studio Code or by right clicking on the DreamDaemon process and pressing Stop.&lt;br /&gt;
&lt;br /&gt;
If you are making a change that doesn&#039;t require the ground map or ship map loaded, you can speed up the loading process by using a streamlined next_map.json file in your data folder to load USS Runtime instead:&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;map_name&amp;quot;: &amp;quot;USS Runtime&amp;quot;,&lt;br /&gt;
    &amp;quot;map_path&amp;quot;: &amp;quot;map_files/USS_Runtime&amp;quot;,&lt;br /&gt;
    &amp;quot;map_file&amp;quot;: &amp;quot;USS_Runtime.dmm&amp;quot;,&lt;br /&gt;
	&amp;quot;survivor_types&amp;quot;: [&lt;br /&gt;
        &amp;quot;/datum/equipment_preset/survivor/scientist/lv&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;traits&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Marine Main Ship&amp;quot;: true,&lt;br /&gt;
            &amp;quot;Up&amp;quot;: 1&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Marine Main Ship&amp;quot;: true,&lt;br /&gt;
            &amp;quot;Down&amp;quot;: -1&lt;br /&gt;
        }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;camouflage&amp;quot;: &amp;quot;classic&amp;quot;,&lt;br /&gt;
	&amp;quot;disable_ship_map&amp;quot;: true&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Setting up Git to Commit ===&lt;br /&gt;
In order to be able to commit changes, Git needs to know who you are. This requires an email and a username - in most cases, your username should be the same as your GitHub username. The email address can be either an email you&#039;re okay with people knowing - or the private email provided by GitHub. This can be obtained at [https://github.com/settings/email https://github.com/settings/emails] under the &amp;quot;Keep my email address private&amp;quot; setting. &lt;br /&gt;
&lt;br /&gt;
Then, you need to open a new Terminal window inside Visual Studio Code. Using the top bar, navigate to &#039;Terminal&#039; and &#039;New Terminal&#039;. A window should appear at the bottom of your screen, containing a command line interface. Run the following commands:&amp;lt;pre&amp;gt;&lt;br /&gt;
git config --global user.email &amp;quot;your@email.here&amp;quot;&lt;br /&gt;
git config --global user.name &amp;quot;yourusernamehere&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Committing your Changes ===&lt;br /&gt;
&lt;br /&gt;
At the top of the Source Control tab, your modified file should be under “Changes”. Hover over the file name you have modified, and press the Plus symbol - or do the same over the Changes button to “stage” your changes.&lt;br /&gt;
&lt;br /&gt;
[[File:example_commit.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once your changes have been “staged”, they have been selected to be committed. You can give it a commit message on the box with “Message”, and press the tick at the top to commit those changes.&lt;br /&gt;
&lt;br /&gt;
[[File:example_stage.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once this has been completed, you’ve committed your changes locally - but they have not been published to your GitHub fork.&lt;br /&gt;
&lt;br /&gt;
=== Step 6: Publishing to GitHub ===&lt;br /&gt;
&lt;br /&gt;
This is quite simple. On the Source Control tab, you should now see the “Publish Branch”. This will publish your branch, along with your changes, to your fork on GitHub. You can navigate to it on the web to see these changes.&lt;br /&gt;
&lt;br /&gt;
[[File:publish_branch.png|400px]]&lt;br /&gt;
&lt;br /&gt;
If you make any further changes to this branch and commit them, you will see the “Sync Changes” option instead. This does the same thing - “pushing” all your changes to your fork on GitHub.&lt;br /&gt;
&lt;br /&gt;
[[File:example_sync.png|400px]]&lt;br /&gt;
&lt;br /&gt;
== Making a Pull Request ==&lt;br /&gt;
&lt;br /&gt;
A “pull request” is a *request* for the main repository to *pull* - or more accurately, merge - the contents of your branch into the master branch. This process allows for code to be tested and reviewed by maintainers/developers, before being merged into the master branch.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Navigating the Web Interface ===&lt;br /&gt;
&lt;br /&gt;
Head to your repository on GitHub - not the main CM-SS13 repo. Then, click on “master” and type in the name of your branch. &lt;br /&gt;
&lt;br /&gt;
[[File:navigating_github_create_pr.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Hit “Contribute” on the right, and it’ll bring up the option to Create Pull Request. Clicking on this automatically sets the merge as being from your branch to the master branch at the main CM-SS13 repository.&lt;br /&gt;
&lt;br /&gt;
[[File:auto_merge.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Hopefully, there&#039;s no merge conflicts, and it gives the happy green &amp;quot;Able to automatically merge&amp;quot; - however, if someone else has changed code you&#039;re changing in your PR after you made the branch for this feature, you&#039;ll need to manually deconflict the files. Read on for more about merge conflicts.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Creating the Pull Request ===&lt;br /&gt;
&lt;br /&gt;
Give your PR a good title - this will be the message of the commit to the main branch containing all your code.&lt;br /&gt;
&lt;br /&gt;
[[File:title.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, fill in the PR description, including a descriptive changelog. Put your BYOND username next to the first :cl: to ensure you are accurately credited.&lt;br /&gt;
&lt;br /&gt;
[[File:changelog.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, hit Create Pull Request (or don’t, if you’re uselessly changing one description as a test). &lt;br /&gt;
&lt;br /&gt;
[[File:create_pull_request.png|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Code Review ===&lt;br /&gt;
&lt;br /&gt;
GitHub will automatically run some tests on your code, which may fail, resulting in you having to change your code. The developers will review your code, and may also request changes. That&#039;ll look like this.&lt;br /&gt;
&lt;br /&gt;
[[File:github_checks.png|800px]]&lt;br /&gt;
&lt;br /&gt;
In order to carry out the changes, simply make the changes on your branch on your local repository, and press “Sync Changes”, this will automatically update the PR.&lt;br /&gt;
&lt;br /&gt;
If a developer has marked your PR as a draft, you will have to mark it as being ready for review. You can do this at the bottom of the web interface on your PR.&lt;br /&gt;
&lt;br /&gt;
== Staying in Sync ==&lt;br /&gt;
&lt;br /&gt;
As other PRs are merged into the repository, your fork will slowly become out of date. This will become an issue over time, as you modify code that has been changed by another recent PR, and you find conflicts that didn’t need to happen.&lt;br /&gt;
&lt;br /&gt;
To avoid this, regularly go to your master branch of your fork on the web interface, and press “Sync fork” and &amp;quot;Update branch&amp;quot;, to add all the commits recently merged to your fork.&lt;br /&gt;
&lt;br /&gt;
[[File:update_branch.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, on Visual Studio Code, you can “Sync Changes” to update your local copy of the master branch.&lt;br /&gt;
&lt;br /&gt;
Do this regularly to ensure you don’t fall out of date with any changes.&lt;br /&gt;
&lt;br /&gt;
= Appendix =&lt;br /&gt;
&lt;br /&gt;
== Merge Conflicts ==&lt;br /&gt;
When your PR is conflicting with master, this means that there are places that both you and someone else have both altered and a decision has to be made to decide what that file or line of code should be. To begin the process to resolve this, you need to merge upstream/master into your branch. (VSC Source control has an Add Remotes option in the Remotes section of Source Control where you can add the link to the .git of the main repository). This will initiate any merge hooks automatically explained more below.&lt;br /&gt;
&lt;br /&gt;
=== Mapping Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Sometimes mapping conflicts can be handled automatically via a merge hook. Install the git hooks in tools/hooks by hitting “Install.bat” (Windows) or &amp;quot;Install.sh&amp;quot; (Linux). Should a single tile be altered by both you and someone else, a mapping conflict marker will be placed in that location that will cause lint errors and yell in chat. This will help during mapping conflicts by marking areas that are conflicting, allowing you to open an editor (such as StrongDMM) to look for the conflict markers and resolve the issue.&lt;br /&gt;
&lt;br /&gt;
Should a conflict like this occur, you should then open the map editor (StrongDMM) and look for the conflict markers. In text, it will look like the conflict has entirely disappeared - but it *hasn’t* - the MapMerger has just automatically dumped everything from the conflicting branches together in a mess that *you* have to fix. Everything above the merge conflict marker will be one side of the merge, and conversely everything below the merge conflict marker will be the other side of the merge.&lt;br /&gt;
&lt;br /&gt;
=== DMI (Icon File) Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Just like with mapping conflicts these conflicts can often be handled automatically via a merge hook. Install the git hooks in tools/hooks by hitting “Install.bat” (Windows) or &amp;quot;Install.sh&amp;quot; (Linux). More often than not any new icons that someone else added will just be appended to the end of the file. But if both you and someone else alter the same icon_state of something, that will have to be manually resolved. In this situation just open up the DMI file in either Dreamaker or VSC&#039;s DMI Editor and adjust it as needed. Ultimately use the IDB (Icon Diff Bot) checks to double check you haven&#039;t unintentionally removed a icon_state someone added.&lt;br /&gt;
&lt;br /&gt;
=== Code Conflicts ===&lt;br /&gt;
&lt;br /&gt;
There is no hook to automatically handle code conflicts. Find the conflict markers in conflicting files indicated with a bunch of &amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; and &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;. VSC should make this obvious, and in some cases, deconflict the files itself. Where it fails to do so, you will need to remove the conflict markers and add the code together from both branches as applicable. Be sure to test if the changes work. For more information see https://code.visualstudio.com/docs/sourcecontrol/overview#_merge-conflicts&lt;br /&gt;
&lt;br /&gt;
== Glossary ==&lt;br /&gt;
&lt;br /&gt;
=== Branch ===&lt;br /&gt;
&lt;br /&gt;
A version of your fork that you can freely commit changes to without affecting other branches.&lt;br /&gt;
&lt;br /&gt;
=== Commit ===&lt;br /&gt;
&lt;br /&gt;
A change to a branch, can be of any size from a single space added to one file to completely rewriting the entire repository.&lt;br /&gt;
&lt;br /&gt;
=== Fork ===&lt;br /&gt;
&lt;br /&gt;
A copy of the CM-SS13 repository that you own, and can make whatever changes to that you like without impacting the main repo.&lt;br /&gt;
&lt;br /&gt;
=== Repository ===&lt;br /&gt;
&lt;br /&gt;
Often known as a repo. Ours contains all of the code, maps and assets for CM-SS13.&lt;br /&gt;
&lt;br /&gt;
=== PR ===&lt;br /&gt;
&lt;br /&gt;
Pull Request - a request for the main repository to merge the changes present in one of the branches of your fork into the master branch of the main, upstream repository.&lt;br /&gt;
&lt;br /&gt;
=== Merge ===&lt;br /&gt;
&lt;br /&gt;
Where all the commits from a branch are applied to another branch. For example, merging your origin branch containing a new feature to an upstream master branch.&lt;br /&gt;
&lt;br /&gt;
=== Merge Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Where two branches from separate contributors have touched the same code, when one of them is merged, you will have a conflict preventing automatic merging. This involves manually fitting the code together, allowing both changes to exist without overwriting either.&lt;br /&gt;
&lt;br /&gt;
=== Remote ===&lt;br /&gt;
&lt;br /&gt;
A remote is a version of your repository that is not stored on your computer - such as on GitHub. This includes both your fork and the upstream, main CM-SS13 repo.&lt;br /&gt;
&lt;br /&gt;
=== Origin ===&lt;br /&gt;
&lt;br /&gt;
This will be your fork of the CM-SS13 repository.&lt;br /&gt;
&lt;br /&gt;
=== Upstream ===&lt;br /&gt;
&lt;br /&gt;
The upstream of your fork will be the main CM-SS13 repo. Think of changes flowing down a stream from the main repo to your fork when you “Fetch Upstream”.&lt;br /&gt;
&lt;br /&gt;
=== Git ===&lt;br /&gt;
&lt;br /&gt;
The version control system used by CM-SS13, allowing us to synchronise changes being made by many different contributor - and easily go back if something goes wrong.&lt;br /&gt;
&lt;br /&gt;
=== Diff ===&lt;br /&gt;
&lt;br /&gt;
Shows the changes between the current copy of the code and the new code that you have committed.&lt;br /&gt;
&lt;br /&gt;
=== VSC / VS Code === &lt;br /&gt;
&lt;br /&gt;
Visual Studio Code, the text editor we use for DM development.&lt;/div&gt;</summary>
		<author><name>Drulikar</name></author>
	</entry>
	<entry>
		<id>https://cm-ss13.com/w/index.php?title=Guide_to_Git&amp;diff=39065</id>
		<title>Guide to Git</title>
		<link rel="alternate" type="text/html" href="https://cm-ss13.com/w/index.php?title=Guide_to_Git&amp;diff=39065"/>
		<updated>2025-10-28T01:59:44Z</updated>

		<summary type="html">&lt;p&gt;Drulikar: /* Step 1: Downloading Visual Studio Code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Guide to Git = &lt;br /&gt;
&lt;br /&gt;
== Setting up your Coding Environment ==&lt;br /&gt;
&lt;br /&gt;
Though you can use DreamMaker, and external Git software, for modifying your code and maps, all modern SS13 tooling is set up for Visual Studio Code, so it is highly recommended. You can jump to variable definitions, procs and atoms with ease.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Download and Install Visual Studio Code ===&lt;br /&gt;
&lt;br /&gt;
Visual Studio Code is a free code editor (from Microsoft) that you can use to edit, test and publish your code to GitHub. &lt;br /&gt;
&lt;br /&gt;
You can download it from https://code.visualstudio.com/ and run the installer.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Forking the Repository === &lt;br /&gt;
&lt;br /&gt;
Go to https://github.com/cmss13-devs/cmss13, and at the top right, hit “Fork” - you’ll need a GitHub account for this.&lt;br /&gt;
&lt;br /&gt;
[[File:fork.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Follow the prompts that come up, and you’ll have your own copy of the code on GitHub.&lt;br /&gt;
&lt;br /&gt;
You will also likely want to disable actions running on your fork:&lt;br /&gt;
&lt;br /&gt;
[[File:Fork Actions Settings.png|alt=You can disable actions from running on your fork by going to settings, general under actions, disable actions, and save.|frameless|655x655px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Download and Install Git === &lt;br /&gt;
&lt;br /&gt;
You’ll need Git installed to make any changes to the repository. Download it from https://git-scm.com/downloads. &lt;br /&gt;
&lt;br /&gt;
=== Step 4: Clone Repository ===&lt;br /&gt;
Then, on Visual Studio Code, under the Source Control tab on the left bar - the third option down, you should be presented with the option to “Clone Repository”. &lt;br /&gt;
&lt;br /&gt;
[[File:clone_repo.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Paste the URL of your fork into the box that pops up - this should be in the format of &amp;lt;nowiki&amp;gt;https://github.com/&amp;lt;/nowiki&amp;gt;[YOURUSERNAME]/cmss13. Then, select a folder (see notes below) to download the repo into, and let it run. It may take awhile.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important&#039;&#039;&#039;: Be sure the folder you clone to is not a sub-directory of another repository (e.g. another copy of CM). Otherwise you may have problems building.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important&#039;&#039;&#039;: Be sure the folder you clone to is not a folder managed by OneDrive or any other cloud storage service else you are going to have a bad time ever OneDrive locks a file or offloads a file from your computer onto the cloud to save space. If you allowed your system to use OneDrive this likely means your entire User folder (including documents and desktop) are all managed by OneDrive.&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Download Extensions ===&lt;br /&gt;
&lt;br /&gt;
These extensions to Visual Studio Code will allow the program to read DreamMaker code intelligently and allow you to navigate through the code faster. &lt;br /&gt;
&lt;br /&gt;
You can get them by clicking on the extensions tab - probably the fourth or fifth option, it looks like three boxes with a fourth being added - and downloading all the “Recommended” extensions.&lt;br /&gt;
&lt;br /&gt;
Also - search for and install GitLens. It makes using the source control features of Visual Studio Code much easier.&lt;br /&gt;
&lt;br /&gt;
[[File:recommended_extensions.png|400px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 6: Configuring Language Client ===&lt;br /&gt;
Debugging features like breakpoints rely on the language server to be installed and working.&lt;br /&gt;
&lt;br /&gt;
* Search for &amp;quot;@enabled Language Client&amp;quot; in extensions&lt;br /&gt;
* Click the gear and then Extension Settings&lt;br /&gt;
* Enable Auto Update&lt;br /&gt;
* If you installed Byond in a non-default location, add/update the Byond Path to your BYOND installation folder (will be a folder with unist.exe and 6 other folders)&lt;br /&gt;
* Restart Visual Studio Code&lt;br /&gt;
&lt;br /&gt;
Auto Update will ensure you have the latest version of the language server installed in a temporary folder for Visual Studio Code. A correct path to the BYOND installation folder will allow the language server to compile and parse the code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: As of writing, BYOND 515.1633+ is functional with the language client server (dm-langserver 1.8.0+19 using auxtools commit: v2.3.3). However, 516.1668 and 516.1669 do not currently have working breakpoints as of dm-langserver 1.10.0+22 using auxtools commit: v2.3.5.&lt;br /&gt;
[[File:Language Client Settings.png|655x655px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 7: Finishing Up ===&lt;br /&gt;
&lt;br /&gt;
You’ve now got a complete clone of the CM-SS13 codebase on your local computer!&lt;br /&gt;
&lt;br /&gt;
== Making a Change ==&lt;br /&gt;
&lt;br /&gt;
All changes you make to the code must be done on a new branch. &lt;br /&gt;
&lt;br /&gt;
A branch is another version of your codebase - made from your “master” branch - which should be identical to the “master” branch present on the main repo - which changes can be made to without affecting your “master” branch.&lt;br /&gt;
&lt;br /&gt;
A “commit” is a save of your changes to the code you’ve made. Every time you “commit” your changes to the branch, you are saving all your changes made so far. All code must be “committed” before it can be sent to the main repository.&lt;br /&gt;
&lt;br /&gt;
To start with making changes, you must make a new branch on your forked repository, from your master branch. Your master branch should never be committed to, and should be a clean state.&lt;br /&gt;
&lt;br /&gt;
Every PR you make should have a new branch. This allows for commits you make on different branches to not affect your other branches, letting you work on multiple projects at once.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Making a New Branch ===&lt;br /&gt;
&lt;br /&gt;
Press Control + Shift + P to bring up the Command Pallet. This allows you to control Visual Studio Control easily, but we want the command “Create branch from...”. Type that in and press enter to run it. Give your branch a name - like new-helmet. Select which branch to make it from - that will be your master branch. &lt;br /&gt;
&lt;br /&gt;
[[File:create_branch_from.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Then, switch to this branch. You can do this at the bottom of the Source Control tab, under the Branches title - you might have to click on it to show all your branches. Right click on your new branch, and select the option to switch to it.&lt;br /&gt;
&lt;br /&gt;
[[File:switch_branch.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Now, you can make whatever changes you like, and you can commit them to this branch without altering your master branch.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Modifying the Code ===&lt;br /&gt;
&lt;br /&gt;
Now, if you make any change to any file within the repo, Git will notice and add it to the modified files in the Source Control tab.&lt;br /&gt;
&lt;br /&gt;
You can make a simple change - such as altering an item description - just to see your code changes reflected in game. To find an item, use the Search tab on the left - the magnifying glass - and type in the name or description if the item as it is in game.&lt;br /&gt;
&lt;br /&gt;
[[File:searching.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once you’ve made this change, it’ll be noticed at the top of the Source Control tab.&lt;br /&gt;
&lt;br /&gt;
[[File:changes.png|400px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Testing your Code ===&lt;br /&gt;
&lt;br /&gt;
Press F5 - this will start your code with the debugger attached. This will automatically pause the server and tell you when an error - usually known as a runtime - occurs.&lt;br /&gt;
&lt;br /&gt;
You can press Control-F5 to start without the debugger.&lt;br /&gt;
&lt;br /&gt;
Then, at the bottom right of your Windows interface, click the chevron to view your hidden processes. Click on the green DreamDaemon circle, and you can see the server process that has booted up. Then, on the World tab at the top, press Join. This will log you in to the server, where you will automatically have full Admin permissions.&lt;br /&gt;
&lt;br /&gt;
Find your item in game - or spawn it in with the admin game-panel - and it should have the changes you’ve made in the code. If it doesn’t- you probably didn’t save the file. Terminate the server using the stop button on Visual Studio Code or by right clicking on the DreamDaemon process and pressing Stop.&lt;br /&gt;
&lt;br /&gt;
If you are making a change that doesn&#039;t require the ground map or ship map loaded, you can speed up the loading process by using a streamlined next_map.json file in your data folder to load USS Runtime instead:&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;map_name&amp;quot;: &amp;quot;USS Runtime&amp;quot;,&lt;br /&gt;
    &amp;quot;map_path&amp;quot;: &amp;quot;map_files/USS_Runtime&amp;quot;,&lt;br /&gt;
    &amp;quot;map_file&amp;quot;: &amp;quot;USS_Runtime.dmm&amp;quot;,&lt;br /&gt;
	&amp;quot;survivor_types&amp;quot;: [&lt;br /&gt;
        &amp;quot;/datum/equipment_preset/survivor/scientist/lv&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;traits&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Marine Main Ship&amp;quot;: true,&lt;br /&gt;
            &amp;quot;Up&amp;quot;: 1&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Marine Main Ship&amp;quot;: true,&lt;br /&gt;
            &amp;quot;Down&amp;quot;: -1&lt;br /&gt;
        }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;camouflage&amp;quot;: &amp;quot;classic&amp;quot;,&lt;br /&gt;
	&amp;quot;disable_ship_map&amp;quot;: true&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Setting up Git to Commit ===&lt;br /&gt;
In order to be able to commit changes, Git needs to know who you are. This requires an email and a username - in most cases, your username should be the same as your GitHub username. The email address can be either an email you&#039;re okay with people knowing - or the private email provided by GitHub. This can be obtained at [https://github.com/settings/email https://github.com/settings/emails] under the &amp;quot;Keep my email address private&amp;quot; setting. &lt;br /&gt;
&lt;br /&gt;
Then, you need to open a new Terminal window inside Visual Studio Code. Using the top bar, navigate to &#039;Terminal&#039; and &#039;New Terminal&#039;. A window should appear at the bottom of your screen, containing a command line interface. Run the following commands:&amp;lt;pre&amp;gt;&lt;br /&gt;
git config --global user.email &amp;quot;your@email.here&amp;quot;&lt;br /&gt;
git config --global user.name &amp;quot;yourusernamehere&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Committing your Changes ===&lt;br /&gt;
&lt;br /&gt;
At the top of the Source Control tab, your modified file should be under “Changes”. Hover over the file name you have modified, and press the Plus symbol - or do the same over the Changes button to “stage” your changes.&lt;br /&gt;
&lt;br /&gt;
[[File:example_commit.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once your changes have been “staged”, they have been selected to be committed. You can give it a commit message on the box with “Message”, and press the tick at the top to commit those changes.&lt;br /&gt;
&lt;br /&gt;
[[File:example_stage.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once this has been completed, you’ve committed your changes locally - but they have not been published to your GitHub fork.&lt;br /&gt;
&lt;br /&gt;
=== Step 6: Publishing to GitHub ===&lt;br /&gt;
&lt;br /&gt;
This is quite simple. On the Source Control tab, you should now see the “Publish Branch”. This will publish your branch, along with your changes, to your fork on GitHub. You can navigate to it on the web to see these changes.&lt;br /&gt;
&lt;br /&gt;
[[File:publish_branch.png|400px]]&lt;br /&gt;
&lt;br /&gt;
If you make any further changes to this branch and commit them, you will see the “Sync Changes” option instead. This does the same thing - “pushing” all your changes to your fork on GitHub.&lt;br /&gt;
&lt;br /&gt;
[[File:example_sync.png|400px]]&lt;br /&gt;
&lt;br /&gt;
== Making a Pull Request ==&lt;br /&gt;
&lt;br /&gt;
A “pull request” is a *request* for the main repository to *pull* - or more accurately, merge - the contents of your branch into the master branch. This process allows for code to be tested and reviewed by maintainers/developers, before being merged into the master branch.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Navigating the Web Interface ===&lt;br /&gt;
&lt;br /&gt;
Head to your repository on GitHub - not the main CM-SS13 repo. Then, click on “master” and type in the name of your branch. &lt;br /&gt;
&lt;br /&gt;
[[File:navigating_github_create_pr.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Hit “Contribute” on the right, and it’ll bring up the option to Create Pull Request. Clicking on this automatically sets the merge as being from your branch to the master branch at the main CM-SS13 repository.&lt;br /&gt;
&lt;br /&gt;
[[File:auto_merge.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Hopefully, there&#039;s no merge conflicts, and it gives the happy green &amp;quot;Able to automatically merge&amp;quot; - however, if someone else has changed code you&#039;re changing in your PR after you made the branch for this feature, you&#039;ll need to manually deconflict the files. Read on for more about merge conflicts.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Creating the Pull Request ===&lt;br /&gt;
&lt;br /&gt;
Give your PR a good title - this will be the message of the commit to the main branch containing all your code.&lt;br /&gt;
&lt;br /&gt;
[[File:title.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, fill in the PR description, including a descriptive changelog. Put your BYOND username next to the first :cl: to ensure you are accurately credited.&lt;br /&gt;
&lt;br /&gt;
[[File:changelog.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, hit Create Pull Request (or don’t, if you’re uselessly changing one description as a test). &lt;br /&gt;
&lt;br /&gt;
[[File:create_pull_request.png|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Code Review ===&lt;br /&gt;
&lt;br /&gt;
GitHub will automatically run some tests on your code, which may fail, resulting in you having to change your code. The developers will review your code, and may also request changes. That&#039;ll look like this.&lt;br /&gt;
&lt;br /&gt;
[[File:github_checks.png|800px]]&lt;br /&gt;
&lt;br /&gt;
In order to carry out the changes, simply make the changes on your branch on your local repository, and press “Sync Changes”, this will automatically update the PR.&lt;br /&gt;
&lt;br /&gt;
If a developer has marked your PR as a draft, you will have to mark it as being ready for review. You can do this at the bottom of the web interface on your PR.&lt;br /&gt;
&lt;br /&gt;
== Staying in Sync ==&lt;br /&gt;
&lt;br /&gt;
As other PRs are merged into the repository, your fork will slowly become out of date. This will become an issue over time, as you modify code that has been changed by another recent PR, and you find conflicts that didn’t need to happen.&lt;br /&gt;
&lt;br /&gt;
To avoid this, regularly go to your master branch of your fork on the web interface, and press “Sync fork” and &amp;quot;Update branch&amp;quot;, to add all the commits recently merged to your fork.&lt;br /&gt;
&lt;br /&gt;
[[File:update_branch.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, on Visual Studio Code, you can “Sync Changes” to update your local copy of the master branch.&lt;br /&gt;
&lt;br /&gt;
Do this regularly to ensure you don’t fall out of date with any changes.&lt;br /&gt;
&lt;br /&gt;
= Appendix =&lt;br /&gt;
&lt;br /&gt;
== Merge Conflicts ==&lt;br /&gt;
When your PR is conflicting with master, this means that there are places that both you and someone else have both altered and a decision has to be made to decide what that file or line of code should be. To begin the process to resolve this, you need to merge upstream/master into your branch. (VSC Source control has an Add Remotes option in the Remotes section of Source Control where you can add the link to the .git of the main repository). This will initiate any merge hooks automatically explained more below.&lt;br /&gt;
&lt;br /&gt;
=== Mapping Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Sometimes mapping conflicts can be handled automatically via a merge hook. Install the git hooks in tools/hooks by hitting “Install.bat” (Windows) or &amp;quot;Install.sh&amp;quot; (Linux). Should a single tile be altered by both you and someone else, a mapping conflict marker will be placed in that location that will cause lint errors and yell in chat. This will help during mapping conflicts by marking areas that are conflicting, allowing you to open an editor (such as StrongDMM) to look for the conflict markers and resolve the issue.&lt;br /&gt;
&lt;br /&gt;
Should a conflict like this occur, you should then open the map editor (StrongDMM) and look for the conflict markers. In text, it will look like the conflict has entirely disappeared - but it *hasn’t* - the MapMerger has just automatically dumped everything from the conflicting branches together in a mess that *you* have to fix. Everything above the merge conflict marker will be one side of the merge, and conversely everything below the merge conflict marker will be the other side of the merge.&lt;br /&gt;
&lt;br /&gt;
=== DMI (Icon File) Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Just like with mapping conflicts these conflicts can often be handled automatically via a merge hook. Install the git hooks in tools/hooks by hitting “Install.bat” (Windows) or &amp;quot;Install.sh&amp;quot; (Linux). More often than not any new icons that someone else added will just be appended to the end of the file. But if both you and someone else alter the same icon_state of something, that will have to be manually resolved. In this situation just open up the DMI file in either Dreamaker or VSC&#039;s DMI Editor and adjust it as needed. Ultimately use the IDB (Icon Diff Bot) checks to double check you haven&#039;t unintentionally removed a icon_state someone added.&lt;br /&gt;
&lt;br /&gt;
=== Code Conflicts ===&lt;br /&gt;
&lt;br /&gt;
There is no hook to automatically handle code conflicts. Find the conflict markers in conflicting files indicated with a bunch of &amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; and &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;. VSC should make this obvious, and in some cases, deconflict the files itself. Where it fails to do so, you will need to remove the conflict markers and add the code together from both branches as applicable. Be sure to test if the changes work. For more information see https://code.visualstudio.com/docs/sourcecontrol/overview#_merge-conflicts&lt;br /&gt;
&lt;br /&gt;
== Glossary ==&lt;br /&gt;
&lt;br /&gt;
=== Branch ===&lt;br /&gt;
&lt;br /&gt;
A version of your fork that you can freely commit changes to without affecting other branches.&lt;br /&gt;
&lt;br /&gt;
=== Commit ===&lt;br /&gt;
&lt;br /&gt;
A change to a branch, can be of any size from a single space added to one file to completely rewriting the entire repository.&lt;br /&gt;
&lt;br /&gt;
=== Fork ===&lt;br /&gt;
&lt;br /&gt;
A copy of the CM-SS13 repository that you own, and can make whatever changes to that you like without impacting the main repo.&lt;br /&gt;
&lt;br /&gt;
=== Repository ===&lt;br /&gt;
&lt;br /&gt;
Often known as a repo. Ours contains all of the code, maps and assets for CM-SS13.&lt;br /&gt;
&lt;br /&gt;
=== PR ===&lt;br /&gt;
&lt;br /&gt;
Pull Request - a request for the main repository to merge the changes present in one of the branches of your fork into the master branch of the main, upstream repository.&lt;br /&gt;
&lt;br /&gt;
=== Merge ===&lt;br /&gt;
&lt;br /&gt;
Where all the commits from a branch are applied to another branch. For example, merging your origin branch containing a new feature to an upstream master branch.&lt;br /&gt;
&lt;br /&gt;
=== Merge Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Where two branches from separate contributors have touched the same code, when one of them is merged, you will have a conflict preventing automatic merging. This involves manually fitting the code together, allowing both changes to exist without overwriting either.&lt;br /&gt;
&lt;br /&gt;
=== Remote ===&lt;br /&gt;
&lt;br /&gt;
A remote is a version of your repository that is not stored on your computer - such as on GitHub. This includes both your fork and the upstream, main CM-SS13 repo.&lt;br /&gt;
&lt;br /&gt;
=== Origin ===&lt;br /&gt;
&lt;br /&gt;
This will be your fork of the CM-SS13 repository.&lt;br /&gt;
&lt;br /&gt;
=== Upstream ===&lt;br /&gt;
&lt;br /&gt;
The upstream of your fork will be the main CM-SS13 repo. Think of changes flowing down a stream from the main repo to your fork when you “Fetch Upstream”.&lt;br /&gt;
&lt;br /&gt;
=== Git ===&lt;br /&gt;
&lt;br /&gt;
The version control system used by CM-SS13, allowing us to synchronise changes being made by many different contributor - and easily go back if something goes wrong.&lt;br /&gt;
&lt;br /&gt;
=== Diff ===&lt;br /&gt;
&lt;br /&gt;
Shows the changes between the current copy of the code and the new code that you have committed.&lt;br /&gt;
&lt;br /&gt;
=== VSC / VS Code === &lt;br /&gt;
&lt;br /&gt;
Visual Studio Code, the text editor we use for DM development.&lt;/div&gt;</summary>
		<author><name>Drulikar</name></author>
	</entry>
	<entry>
		<id>https://cm-ss13.com/w/index.php?title=Guide_to_Git&amp;diff=39064</id>
		<title>Guide to Git</title>
		<link rel="alternate" type="text/html" href="https://cm-ss13.com/w/index.php?title=Guide_to_Git&amp;diff=39064"/>
		<updated>2025-10-28T01:58:31Z</updated>

		<summary type="html">&lt;p&gt;Drulikar: /* Step 4: Clone Repository */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Guide to Git = &lt;br /&gt;
&lt;br /&gt;
== Setting up your Coding Environment ==&lt;br /&gt;
&lt;br /&gt;
Though you can use DreamMaker, and external Git software, for modifying your code and maps, all modern SS13 tooling is set up for Visual Studio Code, so it is highly recommended. You can jump to variable definitions, procs and atoms with ease.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Downloading Visual Studio Code ===&lt;br /&gt;
&lt;br /&gt;
Visual Studio Code is a free code editor (from Microsoft) that you can use to edit, test and publish your code to GitHub. &lt;br /&gt;
&lt;br /&gt;
You can download it from https://code.visualstudio.com/ and run the installer.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Forking the Repository === &lt;br /&gt;
&lt;br /&gt;
Go to https://github.com/cmss13-devs/cmss13, and at the top right, hit “Fork” - you’ll need a GitHub account for this.&lt;br /&gt;
&lt;br /&gt;
[[File:fork.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Follow the prompts that come up, and you’ll have your own copy of the code on GitHub.&lt;br /&gt;
&lt;br /&gt;
You will also likely want to disable actions running on your fork:&lt;br /&gt;
&lt;br /&gt;
[[File:Fork Actions Settings.png|alt=You can disable actions from running on your fork by going to settings, general under actions, disable actions, and save.|frameless|655x655px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Download and Install Git === &lt;br /&gt;
&lt;br /&gt;
You’ll need Git installed to make any changes to the repository. Download it from https://git-scm.com/downloads. &lt;br /&gt;
&lt;br /&gt;
=== Step 4: Clone Repository ===&lt;br /&gt;
Then, on Visual Studio Code, under the Source Control tab on the left bar - the third option down, you should be presented with the option to “Clone Repository”. &lt;br /&gt;
&lt;br /&gt;
[[File:clone_repo.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Paste the URL of your fork into the box that pops up - this should be in the format of &amp;lt;nowiki&amp;gt;https://github.com/&amp;lt;/nowiki&amp;gt;[YOURUSERNAME]/cmss13. Then, select a folder (see notes below) to download the repo into, and let it run. It may take awhile.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important&#039;&#039;&#039;: Be sure the folder you clone to is not a sub-directory of another repository (e.g. another copy of CM). Otherwise you may have problems building.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important&#039;&#039;&#039;: Be sure the folder you clone to is not a folder managed by OneDrive or any other cloud storage service else you are going to have a bad time ever OneDrive locks a file or offloads a file from your computer onto the cloud to save space. If you allowed your system to use OneDrive this likely means your entire User folder (including documents and desktop) are all managed by OneDrive.&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Download Extensions ===&lt;br /&gt;
&lt;br /&gt;
These extensions to Visual Studio Code will allow the program to read DreamMaker code intelligently and allow you to navigate through the code faster. &lt;br /&gt;
&lt;br /&gt;
You can get them by clicking on the extensions tab - probably the fourth or fifth option, it looks like three boxes with a fourth being added - and downloading all the “Recommended” extensions.&lt;br /&gt;
&lt;br /&gt;
Also - search for and install GitLens. It makes using the source control features of Visual Studio Code much easier.&lt;br /&gt;
&lt;br /&gt;
[[File:recommended_extensions.png|400px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 6: Configuring Language Client ===&lt;br /&gt;
Debugging features like breakpoints rely on the language server to be installed and working.&lt;br /&gt;
&lt;br /&gt;
* Search for &amp;quot;@enabled Language Client&amp;quot; in extensions&lt;br /&gt;
* Click the gear and then Extension Settings&lt;br /&gt;
* Enable Auto Update&lt;br /&gt;
* If you installed Byond in a non-default location, add/update the Byond Path to your BYOND installation folder (will be a folder with unist.exe and 6 other folders)&lt;br /&gt;
* Restart Visual Studio Code&lt;br /&gt;
&lt;br /&gt;
Auto Update will ensure you have the latest version of the language server installed in a temporary folder for Visual Studio Code. A correct path to the BYOND installation folder will allow the language server to compile and parse the code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: As of writing, BYOND 515.1633+ is functional with the language client server (dm-langserver 1.8.0+19 using auxtools commit: v2.3.3). However, 516.1668 and 516.1669 do not currently have working breakpoints as of dm-langserver 1.10.0+22 using auxtools commit: v2.3.5.&lt;br /&gt;
[[File:Language Client Settings.png|655x655px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 7: Finishing Up ===&lt;br /&gt;
&lt;br /&gt;
You’ve now got a complete clone of the CM-SS13 codebase on your local computer!&lt;br /&gt;
&lt;br /&gt;
== Making a Change ==&lt;br /&gt;
&lt;br /&gt;
All changes you make to the code must be done on a new branch. &lt;br /&gt;
&lt;br /&gt;
A branch is another version of your codebase - made from your “master” branch - which should be identical to the “master” branch present on the main repo - which changes can be made to without affecting your “master” branch.&lt;br /&gt;
&lt;br /&gt;
A “commit” is a save of your changes to the code you’ve made. Every time you “commit” your changes to the branch, you are saving all your changes made so far. All code must be “committed” before it can be sent to the main repository.&lt;br /&gt;
&lt;br /&gt;
To start with making changes, you must make a new branch on your forked repository, from your master branch. Your master branch should never be committed to, and should be a clean state.&lt;br /&gt;
&lt;br /&gt;
Every PR you make should have a new branch. This allows for commits you make on different branches to not affect your other branches, letting you work on multiple projects at once.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Making a New Branch ===&lt;br /&gt;
&lt;br /&gt;
Press Control + Shift + P to bring up the Command Pallet. This allows you to control Visual Studio Control easily, but we want the command “Create branch from...”. Type that in and press enter to run it. Give your branch a name - like new-helmet. Select which branch to make it from - that will be your master branch. &lt;br /&gt;
&lt;br /&gt;
[[File:create_branch_from.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Then, switch to this branch. You can do this at the bottom of the Source Control tab, under the Branches title - you might have to click on it to show all your branches. Right click on your new branch, and select the option to switch to it.&lt;br /&gt;
&lt;br /&gt;
[[File:switch_branch.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Now, you can make whatever changes you like, and you can commit them to this branch without altering your master branch.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Modifying the Code ===&lt;br /&gt;
&lt;br /&gt;
Now, if you make any change to any file within the repo, Git will notice and add it to the modified files in the Source Control tab.&lt;br /&gt;
&lt;br /&gt;
You can make a simple change - such as altering an item description - just to see your code changes reflected in game. To find an item, use the Search tab on the left - the magnifying glass - and type in the name or description if the item as it is in game.&lt;br /&gt;
&lt;br /&gt;
[[File:searching.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once you’ve made this change, it’ll be noticed at the top of the Source Control tab.&lt;br /&gt;
&lt;br /&gt;
[[File:changes.png|400px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Testing your Code ===&lt;br /&gt;
&lt;br /&gt;
Press F5 - this will start your code with the debugger attached. This will automatically pause the server and tell you when an error - usually known as a runtime - occurs.&lt;br /&gt;
&lt;br /&gt;
You can press Control-F5 to start without the debugger.&lt;br /&gt;
&lt;br /&gt;
Then, at the bottom right of your Windows interface, click the chevron to view your hidden processes. Click on the green DreamDaemon circle, and you can see the server process that has booted up. Then, on the World tab at the top, press Join. This will log you in to the server, where you will automatically have full Admin permissions.&lt;br /&gt;
&lt;br /&gt;
Find your item in game - or spawn it in with the admin game-panel - and it should have the changes you’ve made in the code. If it doesn’t- you probably didn’t save the file. Terminate the server using the stop button on Visual Studio Code or by right clicking on the DreamDaemon process and pressing Stop.&lt;br /&gt;
&lt;br /&gt;
If you are making a change that doesn&#039;t require the ground map or ship map loaded, you can speed up the loading process by using a streamlined next_map.json file in your data folder to load USS Runtime instead:&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;map_name&amp;quot;: &amp;quot;USS Runtime&amp;quot;,&lt;br /&gt;
    &amp;quot;map_path&amp;quot;: &amp;quot;map_files/USS_Runtime&amp;quot;,&lt;br /&gt;
    &amp;quot;map_file&amp;quot;: &amp;quot;USS_Runtime.dmm&amp;quot;,&lt;br /&gt;
	&amp;quot;survivor_types&amp;quot;: [&lt;br /&gt;
        &amp;quot;/datum/equipment_preset/survivor/scientist/lv&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;traits&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Marine Main Ship&amp;quot;: true,&lt;br /&gt;
            &amp;quot;Up&amp;quot;: 1&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Marine Main Ship&amp;quot;: true,&lt;br /&gt;
            &amp;quot;Down&amp;quot;: -1&lt;br /&gt;
        }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;camouflage&amp;quot;: &amp;quot;classic&amp;quot;,&lt;br /&gt;
	&amp;quot;disable_ship_map&amp;quot;: true&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Setting up Git to Commit ===&lt;br /&gt;
In order to be able to commit changes, Git needs to know who you are. This requires an email and a username - in most cases, your username should be the same as your GitHub username. The email address can be either an email you&#039;re okay with people knowing - or the private email provided by GitHub. This can be obtained at [https://github.com/settings/email https://github.com/settings/emails] under the &amp;quot;Keep my email address private&amp;quot; setting. &lt;br /&gt;
&lt;br /&gt;
Then, you need to open a new Terminal window inside Visual Studio Code. Using the top bar, navigate to &#039;Terminal&#039; and &#039;New Terminal&#039;. A window should appear at the bottom of your screen, containing a command line interface. Run the following commands:&amp;lt;pre&amp;gt;&lt;br /&gt;
git config --global user.email &amp;quot;your@email.here&amp;quot;&lt;br /&gt;
git config --global user.name &amp;quot;yourusernamehere&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Committing your Changes ===&lt;br /&gt;
&lt;br /&gt;
At the top of the Source Control tab, your modified file should be under “Changes”. Hover over the file name you have modified, and press the Plus symbol - or do the same over the Changes button to “stage” your changes.&lt;br /&gt;
&lt;br /&gt;
[[File:example_commit.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once your changes have been “staged”, they have been selected to be committed. You can give it a commit message on the box with “Message”, and press the tick at the top to commit those changes.&lt;br /&gt;
&lt;br /&gt;
[[File:example_stage.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once this has been completed, you’ve committed your changes locally - but they have not been published to your GitHub fork.&lt;br /&gt;
&lt;br /&gt;
=== Step 6: Publishing to GitHub ===&lt;br /&gt;
&lt;br /&gt;
This is quite simple. On the Source Control tab, you should now see the “Publish Branch”. This will publish your branch, along with your changes, to your fork on GitHub. You can navigate to it on the web to see these changes.&lt;br /&gt;
&lt;br /&gt;
[[File:publish_branch.png|400px]]&lt;br /&gt;
&lt;br /&gt;
If you make any further changes to this branch and commit them, you will see the “Sync Changes” option instead. This does the same thing - “pushing” all your changes to your fork on GitHub.&lt;br /&gt;
&lt;br /&gt;
[[File:example_sync.png|400px]]&lt;br /&gt;
&lt;br /&gt;
== Making a Pull Request ==&lt;br /&gt;
&lt;br /&gt;
A “pull request” is a *request* for the main repository to *pull* - or more accurately, merge - the contents of your branch into the master branch. This process allows for code to be tested and reviewed by maintainers/developers, before being merged into the master branch.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Navigating the Web Interface ===&lt;br /&gt;
&lt;br /&gt;
Head to your repository on GitHub - not the main CM-SS13 repo. Then, click on “master” and type in the name of your branch. &lt;br /&gt;
&lt;br /&gt;
[[File:navigating_github_create_pr.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Hit “Contribute” on the right, and it’ll bring up the option to Create Pull Request. Clicking on this automatically sets the merge as being from your branch to the master branch at the main CM-SS13 repository.&lt;br /&gt;
&lt;br /&gt;
[[File:auto_merge.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Hopefully, there&#039;s no merge conflicts, and it gives the happy green &amp;quot;Able to automatically merge&amp;quot; - however, if someone else has changed code you&#039;re changing in your PR after you made the branch for this feature, you&#039;ll need to manually deconflict the files. Read on for more about merge conflicts.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Creating the Pull Request ===&lt;br /&gt;
&lt;br /&gt;
Give your PR a good title - this will be the message of the commit to the main branch containing all your code.&lt;br /&gt;
&lt;br /&gt;
[[File:title.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, fill in the PR description, including a descriptive changelog. Put your BYOND username next to the first :cl: to ensure you are accurately credited.&lt;br /&gt;
&lt;br /&gt;
[[File:changelog.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, hit Create Pull Request (or don’t, if you’re uselessly changing one description as a test). &lt;br /&gt;
&lt;br /&gt;
[[File:create_pull_request.png|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Code Review ===&lt;br /&gt;
&lt;br /&gt;
GitHub will automatically run some tests on your code, which may fail, resulting in you having to change your code. The developers will review your code, and may also request changes. That&#039;ll look like this.&lt;br /&gt;
&lt;br /&gt;
[[File:github_checks.png|800px]]&lt;br /&gt;
&lt;br /&gt;
In order to carry out the changes, simply make the changes on your branch on your local repository, and press “Sync Changes”, this will automatically update the PR.&lt;br /&gt;
&lt;br /&gt;
If a developer has marked your PR as a draft, you will have to mark it as being ready for review. You can do this at the bottom of the web interface on your PR.&lt;br /&gt;
&lt;br /&gt;
== Staying in Sync ==&lt;br /&gt;
&lt;br /&gt;
As other PRs are merged into the repository, your fork will slowly become out of date. This will become an issue over time, as you modify code that has been changed by another recent PR, and you find conflicts that didn’t need to happen.&lt;br /&gt;
&lt;br /&gt;
To avoid this, regularly go to your master branch of your fork on the web interface, and press “Sync fork” and &amp;quot;Update branch&amp;quot;, to add all the commits recently merged to your fork.&lt;br /&gt;
&lt;br /&gt;
[[File:update_branch.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, on Visual Studio Code, you can “Sync Changes” to update your local copy of the master branch.&lt;br /&gt;
&lt;br /&gt;
Do this regularly to ensure you don’t fall out of date with any changes.&lt;br /&gt;
&lt;br /&gt;
= Appendix =&lt;br /&gt;
&lt;br /&gt;
== Merge Conflicts ==&lt;br /&gt;
When your PR is conflicting with master, this means that there are places that both you and someone else have both altered and a decision has to be made to decide what that file or line of code should be. To begin the process to resolve this, you need to merge upstream/master into your branch. (VSC Source control has an Add Remotes option in the Remotes section of Source Control where you can add the link to the .git of the main repository). This will initiate any merge hooks automatically explained more below.&lt;br /&gt;
&lt;br /&gt;
=== Mapping Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Sometimes mapping conflicts can be handled automatically via a merge hook. Install the git hooks in tools/hooks by hitting “Install.bat” (Windows) or &amp;quot;Install.sh&amp;quot; (Linux). Should a single tile be altered by both you and someone else, a mapping conflict marker will be placed in that location that will cause lint errors and yell in chat. This will help during mapping conflicts by marking areas that are conflicting, allowing you to open an editor (such as StrongDMM) to look for the conflict markers and resolve the issue.&lt;br /&gt;
&lt;br /&gt;
Should a conflict like this occur, you should then open the map editor (StrongDMM) and look for the conflict markers. In text, it will look like the conflict has entirely disappeared - but it *hasn’t* - the MapMerger has just automatically dumped everything from the conflicting branches together in a mess that *you* have to fix. Everything above the merge conflict marker will be one side of the merge, and conversely everything below the merge conflict marker will be the other side of the merge.&lt;br /&gt;
&lt;br /&gt;
=== DMI (Icon File) Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Just like with mapping conflicts these conflicts can often be handled automatically via a merge hook. Install the git hooks in tools/hooks by hitting “Install.bat” (Windows) or &amp;quot;Install.sh&amp;quot; (Linux). More often than not any new icons that someone else added will just be appended to the end of the file. But if both you and someone else alter the same icon_state of something, that will have to be manually resolved. In this situation just open up the DMI file in either Dreamaker or VSC&#039;s DMI Editor and adjust it as needed. Ultimately use the IDB (Icon Diff Bot) checks to double check you haven&#039;t unintentionally removed a icon_state someone added.&lt;br /&gt;
&lt;br /&gt;
=== Code Conflicts ===&lt;br /&gt;
&lt;br /&gt;
There is no hook to automatically handle code conflicts. Find the conflict markers in conflicting files indicated with a bunch of &amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; and &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;. VSC should make this obvious, and in some cases, deconflict the files itself. Where it fails to do so, you will need to remove the conflict markers and add the code together from both branches as applicable. Be sure to test if the changes work. For more information see https://code.visualstudio.com/docs/sourcecontrol/overview#_merge-conflicts&lt;br /&gt;
&lt;br /&gt;
== Glossary ==&lt;br /&gt;
&lt;br /&gt;
=== Branch ===&lt;br /&gt;
&lt;br /&gt;
A version of your fork that you can freely commit changes to without affecting other branches.&lt;br /&gt;
&lt;br /&gt;
=== Commit ===&lt;br /&gt;
&lt;br /&gt;
A change to a branch, can be of any size from a single space added to one file to completely rewriting the entire repository.&lt;br /&gt;
&lt;br /&gt;
=== Fork ===&lt;br /&gt;
&lt;br /&gt;
A copy of the CM-SS13 repository that you own, and can make whatever changes to that you like without impacting the main repo.&lt;br /&gt;
&lt;br /&gt;
=== Repository ===&lt;br /&gt;
&lt;br /&gt;
Often known as a repo. Ours contains all of the code, maps and assets for CM-SS13.&lt;br /&gt;
&lt;br /&gt;
=== PR ===&lt;br /&gt;
&lt;br /&gt;
Pull Request - a request for the main repository to merge the changes present in one of the branches of your fork into the master branch of the main, upstream repository.&lt;br /&gt;
&lt;br /&gt;
=== Merge ===&lt;br /&gt;
&lt;br /&gt;
Where all the commits from a branch are applied to another branch. For example, merging your origin branch containing a new feature to an upstream master branch.&lt;br /&gt;
&lt;br /&gt;
=== Merge Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Where two branches from separate contributors have touched the same code, when one of them is merged, you will have a conflict preventing automatic merging. This involves manually fitting the code together, allowing both changes to exist without overwriting either.&lt;br /&gt;
&lt;br /&gt;
=== Remote ===&lt;br /&gt;
&lt;br /&gt;
A remote is a version of your repository that is not stored on your computer - such as on GitHub. This includes both your fork and the upstream, main CM-SS13 repo.&lt;br /&gt;
&lt;br /&gt;
=== Origin ===&lt;br /&gt;
&lt;br /&gt;
This will be your fork of the CM-SS13 repository.&lt;br /&gt;
&lt;br /&gt;
=== Upstream ===&lt;br /&gt;
&lt;br /&gt;
The upstream of your fork will be the main CM-SS13 repo. Think of changes flowing down a stream from the main repo to your fork when you “Fetch Upstream”.&lt;br /&gt;
&lt;br /&gt;
=== Git ===&lt;br /&gt;
&lt;br /&gt;
The version control system used by CM-SS13, allowing us to synchronise changes being made by many different contributor - and easily go back if something goes wrong.&lt;br /&gt;
&lt;br /&gt;
=== Diff ===&lt;br /&gt;
&lt;br /&gt;
Shows the changes between the current copy of the code and the new code that you have committed.&lt;br /&gt;
&lt;br /&gt;
=== VSC / VS Code === &lt;br /&gt;
&lt;br /&gt;
Visual Studio Code, the text editor we use for DM development.&lt;/div&gt;</summary>
		<author><name>Drulikar</name></author>
	</entry>
	<entry>
		<id>https://cm-ss13.com/w/index.php?title=Guide_to_Git&amp;diff=39063</id>
		<title>Guide to Git</title>
		<link rel="alternate" type="text/html" href="https://cm-ss13.com/w/index.php?title=Guide_to_Git&amp;diff=39063"/>
		<updated>2025-10-28T01:57:35Z</updated>

		<summary type="html">&lt;p&gt;Drulikar: /* Step 4: Clone Repository */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Guide to Git = &lt;br /&gt;
&lt;br /&gt;
== Setting up your Coding Environment ==&lt;br /&gt;
&lt;br /&gt;
Though you can use DreamMaker, and external Git software, for modifying your code and maps, all modern SS13 tooling is set up for Visual Studio Code, so it is highly recommended. You can jump to variable definitions, procs and atoms with ease.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Downloading Visual Studio Code ===&lt;br /&gt;
&lt;br /&gt;
Visual Studio Code is a free code editor (from Microsoft) that you can use to edit, test and publish your code to GitHub. &lt;br /&gt;
&lt;br /&gt;
You can download it from https://code.visualstudio.com/ and run the installer.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Forking the Repository === &lt;br /&gt;
&lt;br /&gt;
Go to https://github.com/cmss13-devs/cmss13, and at the top right, hit “Fork” - you’ll need a GitHub account for this.&lt;br /&gt;
&lt;br /&gt;
[[File:fork.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Follow the prompts that come up, and you’ll have your own copy of the code on GitHub.&lt;br /&gt;
&lt;br /&gt;
You will also likely want to disable actions running on your fork:&lt;br /&gt;
&lt;br /&gt;
[[File:Fork Actions Settings.png|alt=You can disable actions from running on your fork by going to settings, general under actions, disable actions, and save.|frameless|655x655px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Download and Install Git === &lt;br /&gt;
&lt;br /&gt;
You’ll need Git installed to make any changes to the repository. Download it from https://git-scm.com/downloads. &lt;br /&gt;
&lt;br /&gt;
=== Step 4: Clone Repository ===&lt;br /&gt;
Then, on Visual Studio Code, under the Source Control tab on the left bar - the third option down, you should be presented with the option to “Clone Repository”. &lt;br /&gt;
&lt;br /&gt;
[[File:clone_repo.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Paste the URL of your fork into the box that pops up - this should be in the format of &amp;lt;nowiki&amp;gt;https://github.com/&amp;lt;/nowiki&amp;gt;[YOURUSERNAME]/cmss13. Select a folder to download the repo into, and let it run. It may take awhile.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important&#039;&#039;&#039;: Be sure the folder you clone to is not a sub-directory of another repository (e.g. another copy of CM). Otherwise you may have problems building.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important&#039;&#039;&#039;: Be sure the folder you clone to is not a folder managed by OneDrive or any other cloud storage service else you are going to have a bad time ever OneDrive locks a file or offloads a file from your computer onto the cloud to save space. If you allowed your system to use OneDrive this likely means your entire User folder (including documents and desktop) are all managed by OneDrive.&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Download Extensions ===&lt;br /&gt;
&lt;br /&gt;
These extensions to Visual Studio Code will allow the program to read DreamMaker code intelligently and allow you to navigate through the code faster. &lt;br /&gt;
&lt;br /&gt;
You can get them by clicking on the extensions tab - probably the fourth or fifth option, it looks like three boxes with a fourth being added - and downloading all the “Recommended” extensions.&lt;br /&gt;
&lt;br /&gt;
Also - search for and install GitLens. It makes using the source control features of Visual Studio Code much easier.&lt;br /&gt;
&lt;br /&gt;
[[File:recommended_extensions.png|400px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 6: Configuring Language Client ===&lt;br /&gt;
Debugging features like breakpoints rely on the language server to be installed and working.&lt;br /&gt;
&lt;br /&gt;
* Search for &amp;quot;@enabled Language Client&amp;quot; in extensions&lt;br /&gt;
* Click the gear and then Extension Settings&lt;br /&gt;
* Enable Auto Update&lt;br /&gt;
* If you installed Byond in a non-default location, add/update the Byond Path to your BYOND installation folder (will be a folder with unist.exe and 6 other folders)&lt;br /&gt;
* Restart Visual Studio Code&lt;br /&gt;
&lt;br /&gt;
Auto Update will ensure you have the latest version of the language server installed in a temporary folder for Visual Studio Code. A correct path to the BYOND installation folder will allow the language server to compile and parse the code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: As of writing, BYOND 515.1633+ is functional with the language client server (dm-langserver 1.8.0+19 using auxtools commit: v2.3.3). However, 516.1668 and 516.1669 do not currently have working breakpoints as of dm-langserver 1.10.0+22 using auxtools commit: v2.3.5.&lt;br /&gt;
[[File:Language Client Settings.png|655x655px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 7: Finishing Up ===&lt;br /&gt;
&lt;br /&gt;
You’ve now got a complete clone of the CM-SS13 codebase on your local computer!&lt;br /&gt;
&lt;br /&gt;
== Making a Change ==&lt;br /&gt;
&lt;br /&gt;
All changes you make to the code must be done on a new branch. &lt;br /&gt;
&lt;br /&gt;
A branch is another version of your codebase - made from your “master” branch - which should be identical to the “master” branch present on the main repo - which changes can be made to without affecting your “master” branch.&lt;br /&gt;
&lt;br /&gt;
A “commit” is a save of your changes to the code you’ve made. Every time you “commit” your changes to the branch, you are saving all your changes made so far. All code must be “committed” before it can be sent to the main repository.&lt;br /&gt;
&lt;br /&gt;
To start with making changes, you must make a new branch on your forked repository, from your master branch. Your master branch should never be committed to, and should be a clean state.&lt;br /&gt;
&lt;br /&gt;
Every PR you make should have a new branch. This allows for commits you make on different branches to not affect your other branches, letting you work on multiple projects at once.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Making a New Branch ===&lt;br /&gt;
&lt;br /&gt;
Press Control + Shift + P to bring up the Command Pallet. This allows you to control Visual Studio Control easily, but we want the command “Create branch from...”. Type that in and press enter to run it. Give your branch a name - like new-helmet. Select which branch to make it from - that will be your master branch. &lt;br /&gt;
&lt;br /&gt;
[[File:create_branch_from.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Then, switch to this branch. You can do this at the bottom of the Source Control tab, under the Branches title - you might have to click on it to show all your branches. Right click on your new branch, and select the option to switch to it.&lt;br /&gt;
&lt;br /&gt;
[[File:switch_branch.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Now, you can make whatever changes you like, and you can commit them to this branch without altering your master branch.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Modifying the Code ===&lt;br /&gt;
&lt;br /&gt;
Now, if you make any change to any file within the repo, Git will notice and add it to the modified files in the Source Control tab.&lt;br /&gt;
&lt;br /&gt;
You can make a simple change - such as altering an item description - just to see your code changes reflected in game. To find an item, use the Search tab on the left - the magnifying glass - and type in the name or description if the item as it is in game.&lt;br /&gt;
&lt;br /&gt;
[[File:searching.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once you’ve made this change, it’ll be noticed at the top of the Source Control tab.&lt;br /&gt;
&lt;br /&gt;
[[File:changes.png|400px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Testing your Code ===&lt;br /&gt;
&lt;br /&gt;
Press F5 - this will start your code with the debugger attached. This will automatically pause the server and tell you when an error - usually known as a runtime - occurs.&lt;br /&gt;
&lt;br /&gt;
You can press Control-F5 to start without the debugger.&lt;br /&gt;
&lt;br /&gt;
Then, at the bottom right of your Windows interface, click the chevron to view your hidden processes. Click on the green DreamDaemon circle, and you can see the server process that has booted up. Then, on the World tab at the top, press Join. This will log you in to the server, where you will automatically have full Admin permissions.&lt;br /&gt;
&lt;br /&gt;
Find your item in game - or spawn it in with the admin game-panel - and it should have the changes you’ve made in the code. If it doesn’t- you probably didn’t save the file. Terminate the server using the stop button on Visual Studio Code or by right clicking on the DreamDaemon process and pressing Stop.&lt;br /&gt;
&lt;br /&gt;
If you are making a change that doesn&#039;t require the ground map or ship map loaded, you can speed up the loading process by using a streamlined next_map.json file in your data folder to load USS Runtime instead:&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;map_name&amp;quot;: &amp;quot;USS Runtime&amp;quot;,&lt;br /&gt;
    &amp;quot;map_path&amp;quot;: &amp;quot;map_files/USS_Runtime&amp;quot;,&lt;br /&gt;
    &amp;quot;map_file&amp;quot;: &amp;quot;USS_Runtime.dmm&amp;quot;,&lt;br /&gt;
	&amp;quot;survivor_types&amp;quot;: [&lt;br /&gt;
        &amp;quot;/datum/equipment_preset/survivor/scientist/lv&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;traits&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Marine Main Ship&amp;quot;: true,&lt;br /&gt;
            &amp;quot;Up&amp;quot;: 1&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Marine Main Ship&amp;quot;: true,&lt;br /&gt;
            &amp;quot;Down&amp;quot;: -1&lt;br /&gt;
        }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;camouflage&amp;quot;: &amp;quot;classic&amp;quot;,&lt;br /&gt;
	&amp;quot;disable_ship_map&amp;quot;: true&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Setting up Git to Commit ===&lt;br /&gt;
In order to be able to commit changes, Git needs to know who you are. This requires an email and a username - in most cases, your username should be the same as your GitHub username. The email address can be either an email you&#039;re okay with people knowing - or the private email provided by GitHub. This can be obtained at [https://github.com/settings/email https://github.com/settings/emails] under the &amp;quot;Keep my email address private&amp;quot; setting. &lt;br /&gt;
&lt;br /&gt;
Then, you need to open a new Terminal window inside Visual Studio Code. Using the top bar, navigate to &#039;Terminal&#039; and &#039;New Terminal&#039;. A window should appear at the bottom of your screen, containing a command line interface. Run the following commands:&amp;lt;pre&amp;gt;&lt;br /&gt;
git config --global user.email &amp;quot;your@email.here&amp;quot;&lt;br /&gt;
git config --global user.name &amp;quot;yourusernamehere&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Committing your Changes ===&lt;br /&gt;
&lt;br /&gt;
At the top of the Source Control tab, your modified file should be under “Changes”. Hover over the file name you have modified, and press the Plus symbol - or do the same over the Changes button to “stage” your changes.&lt;br /&gt;
&lt;br /&gt;
[[File:example_commit.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once your changes have been “staged”, they have been selected to be committed. You can give it a commit message on the box with “Message”, and press the tick at the top to commit those changes.&lt;br /&gt;
&lt;br /&gt;
[[File:example_stage.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once this has been completed, you’ve committed your changes locally - but they have not been published to your GitHub fork.&lt;br /&gt;
&lt;br /&gt;
=== Step 6: Publishing to GitHub ===&lt;br /&gt;
&lt;br /&gt;
This is quite simple. On the Source Control tab, you should now see the “Publish Branch”. This will publish your branch, along with your changes, to your fork on GitHub. You can navigate to it on the web to see these changes.&lt;br /&gt;
&lt;br /&gt;
[[File:publish_branch.png|400px]]&lt;br /&gt;
&lt;br /&gt;
If you make any further changes to this branch and commit them, you will see the “Sync Changes” option instead. This does the same thing - “pushing” all your changes to your fork on GitHub.&lt;br /&gt;
&lt;br /&gt;
[[File:example_sync.png|400px]]&lt;br /&gt;
&lt;br /&gt;
== Making a Pull Request ==&lt;br /&gt;
&lt;br /&gt;
A “pull request” is a *request* for the main repository to *pull* - or more accurately, merge - the contents of your branch into the master branch. This process allows for code to be tested and reviewed by maintainers/developers, before being merged into the master branch.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Navigating the Web Interface ===&lt;br /&gt;
&lt;br /&gt;
Head to your repository on GitHub - not the main CM-SS13 repo. Then, click on “master” and type in the name of your branch. &lt;br /&gt;
&lt;br /&gt;
[[File:navigating_github_create_pr.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Hit “Contribute” on the right, and it’ll bring up the option to Create Pull Request. Clicking on this automatically sets the merge as being from your branch to the master branch at the main CM-SS13 repository.&lt;br /&gt;
&lt;br /&gt;
[[File:auto_merge.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Hopefully, there&#039;s no merge conflicts, and it gives the happy green &amp;quot;Able to automatically merge&amp;quot; - however, if someone else has changed code you&#039;re changing in your PR after you made the branch for this feature, you&#039;ll need to manually deconflict the files. Read on for more about merge conflicts.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Creating the Pull Request ===&lt;br /&gt;
&lt;br /&gt;
Give your PR a good title - this will be the message of the commit to the main branch containing all your code.&lt;br /&gt;
&lt;br /&gt;
[[File:title.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, fill in the PR description, including a descriptive changelog. Put your BYOND username next to the first :cl: to ensure you are accurately credited.&lt;br /&gt;
&lt;br /&gt;
[[File:changelog.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, hit Create Pull Request (or don’t, if you’re uselessly changing one description as a test). &lt;br /&gt;
&lt;br /&gt;
[[File:create_pull_request.png|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Code Review ===&lt;br /&gt;
&lt;br /&gt;
GitHub will automatically run some tests on your code, which may fail, resulting in you having to change your code. The developers will review your code, and may also request changes. That&#039;ll look like this.&lt;br /&gt;
&lt;br /&gt;
[[File:github_checks.png|800px]]&lt;br /&gt;
&lt;br /&gt;
In order to carry out the changes, simply make the changes on your branch on your local repository, and press “Sync Changes”, this will automatically update the PR.&lt;br /&gt;
&lt;br /&gt;
If a developer has marked your PR as a draft, you will have to mark it as being ready for review. You can do this at the bottom of the web interface on your PR.&lt;br /&gt;
&lt;br /&gt;
== Staying in Sync ==&lt;br /&gt;
&lt;br /&gt;
As other PRs are merged into the repository, your fork will slowly become out of date. This will become an issue over time, as you modify code that has been changed by another recent PR, and you find conflicts that didn’t need to happen.&lt;br /&gt;
&lt;br /&gt;
To avoid this, regularly go to your master branch of your fork on the web interface, and press “Sync fork” and &amp;quot;Update branch&amp;quot;, to add all the commits recently merged to your fork.&lt;br /&gt;
&lt;br /&gt;
[[File:update_branch.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, on Visual Studio Code, you can “Sync Changes” to update your local copy of the master branch.&lt;br /&gt;
&lt;br /&gt;
Do this regularly to ensure you don’t fall out of date with any changes.&lt;br /&gt;
&lt;br /&gt;
= Appendix =&lt;br /&gt;
&lt;br /&gt;
== Merge Conflicts ==&lt;br /&gt;
When your PR is conflicting with master, this means that there are places that both you and someone else have both altered and a decision has to be made to decide what that file or line of code should be. To begin the process to resolve this, you need to merge upstream/master into your branch. (VSC Source control has an Add Remotes option in the Remotes section of Source Control where you can add the link to the .git of the main repository). This will initiate any merge hooks automatically explained more below.&lt;br /&gt;
&lt;br /&gt;
=== Mapping Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Sometimes mapping conflicts can be handled automatically via a merge hook. Install the git hooks in tools/hooks by hitting “Install.bat” (Windows) or &amp;quot;Install.sh&amp;quot; (Linux). Should a single tile be altered by both you and someone else, a mapping conflict marker will be placed in that location that will cause lint errors and yell in chat. This will help during mapping conflicts by marking areas that are conflicting, allowing you to open an editor (such as StrongDMM) to look for the conflict markers and resolve the issue.&lt;br /&gt;
&lt;br /&gt;
Should a conflict like this occur, you should then open the map editor (StrongDMM) and look for the conflict markers. In text, it will look like the conflict has entirely disappeared - but it *hasn’t* - the MapMerger has just automatically dumped everything from the conflicting branches together in a mess that *you* have to fix. Everything above the merge conflict marker will be one side of the merge, and conversely everything below the merge conflict marker will be the other side of the merge.&lt;br /&gt;
&lt;br /&gt;
=== DMI (Icon File) Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Just like with mapping conflicts these conflicts can often be handled automatically via a merge hook. Install the git hooks in tools/hooks by hitting “Install.bat” (Windows) or &amp;quot;Install.sh&amp;quot; (Linux). More often than not any new icons that someone else added will just be appended to the end of the file. But if both you and someone else alter the same icon_state of something, that will have to be manually resolved. In this situation just open up the DMI file in either Dreamaker or VSC&#039;s DMI Editor and adjust it as needed. Ultimately use the IDB (Icon Diff Bot) checks to double check you haven&#039;t unintentionally removed a icon_state someone added.&lt;br /&gt;
&lt;br /&gt;
=== Code Conflicts ===&lt;br /&gt;
&lt;br /&gt;
There is no hook to automatically handle code conflicts. Find the conflict markers in conflicting files indicated with a bunch of &amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; and &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;. VSC should make this obvious, and in some cases, deconflict the files itself. Where it fails to do so, you will need to remove the conflict markers and add the code together from both branches as applicable. Be sure to test if the changes work. For more information see https://code.visualstudio.com/docs/sourcecontrol/overview#_merge-conflicts&lt;br /&gt;
&lt;br /&gt;
== Glossary ==&lt;br /&gt;
&lt;br /&gt;
=== Branch ===&lt;br /&gt;
&lt;br /&gt;
A version of your fork that you can freely commit changes to without affecting other branches.&lt;br /&gt;
&lt;br /&gt;
=== Commit ===&lt;br /&gt;
&lt;br /&gt;
A change to a branch, can be of any size from a single space added to one file to completely rewriting the entire repository.&lt;br /&gt;
&lt;br /&gt;
=== Fork ===&lt;br /&gt;
&lt;br /&gt;
A copy of the CM-SS13 repository that you own, and can make whatever changes to that you like without impacting the main repo.&lt;br /&gt;
&lt;br /&gt;
=== Repository ===&lt;br /&gt;
&lt;br /&gt;
Often known as a repo. Ours contains all of the code, maps and assets for CM-SS13.&lt;br /&gt;
&lt;br /&gt;
=== PR ===&lt;br /&gt;
&lt;br /&gt;
Pull Request - a request for the main repository to merge the changes present in one of the branches of your fork into the master branch of the main, upstream repository.&lt;br /&gt;
&lt;br /&gt;
=== Merge ===&lt;br /&gt;
&lt;br /&gt;
Where all the commits from a branch are applied to another branch. For example, merging your origin branch containing a new feature to an upstream master branch.&lt;br /&gt;
&lt;br /&gt;
=== Merge Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Where two branches from separate contributors have touched the same code, when one of them is merged, you will have a conflict preventing automatic merging. This involves manually fitting the code together, allowing both changes to exist without overwriting either.&lt;br /&gt;
&lt;br /&gt;
=== Remote ===&lt;br /&gt;
&lt;br /&gt;
A remote is a version of your repository that is not stored on your computer - such as on GitHub. This includes both your fork and the upstream, main CM-SS13 repo.&lt;br /&gt;
&lt;br /&gt;
=== Origin ===&lt;br /&gt;
&lt;br /&gt;
This will be your fork of the CM-SS13 repository.&lt;br /&gt;
&lt;br /&gt;
=== Upstream ===&lt;br /&gt;
&lt;br /&gt;
The upstream of your fork will be the main CM-SS13 repo. Think of changes flowing down a stream from the main repo to your fork when you “Fetch Upstream”.&lt;br /&gt;
&lt;br /&gt;
=== Git ===&lt;br /&gt;
&lt;br /&gt;
The version control system used by CM-SS13, allowing us to synchronise changes being made by many different contributor - and easily go back if something goes wrong.&lt;br /&gt;
&lt;br /&gt;
=== Diff ===&lt;br /&gt;
&lt;br /&gt;
Shows the changes between the current copy of the code and the new code that you have committed.&lt;br /&gt;
&lt;br /&gt;
=== VSC / VS Code === &lt;br /&gt;
&lt;br /&gt;
Visual Studio Code, the text editor we use for DM development.&lt;/div&gt;</summary>
		<author><name>Drulikar</name></author>
	</entry>
	<entry>
		<id>https://cm-ss13.com/w/index.php?title=Guide_to_Git&amp;diff=39062</id>
		<title>Guide to Git</title>
		<link rel="alternate" type="text/html" href="https://cm-ss13.com/w/index.php?title=Guide_to_Git&amp;diff=39062"/>
		<updated>2025-10-28T01:54:30Z</updated>

		<summary type="html">&lt;p&gt;Drulikar: Break up steps for cloning, note where not to clone, and note problems with 516.1668 and 516.1669&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Guide to Git = &lt;br /&gt;
&lt;br /&gt;
== Setting up your Coding Environment ==&lt;br /&gt;
&lt;br /&gt;
Though you can use DreamMaker, and external Git software, for modifying your code and maps, all modern SS13 tooling is set up for Visual Studio Code, so it is highly recommended. You can jump to variable definitions, procs and atoms with ease.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Downloading Visual Studio Code ===&lt;br /&gt;
&lt;br /&gt;
Visual Studio Code is a free code editor (from Microsoft) that you can use to edit, test and publish your code to GitHub. &lt;br /&gt;
&lt;br /&gt;
You can download it from https://code.visualstudio.com/ and run the installer.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Forking the Repository === &lt;br /&gt;
&lt;br /&gt;
Go to https://github.com/cmss13-devs/cmss13, and at the top right, hit “Fork” - you’ll need a GitHub account for this.&lt;br /&gt;
&lt;br /&gt;
[[File:fork.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Follow the prompts that come up, and you’ll have your own copy of the code on GitHub.&lt;br /&gt;
&lt;br /&gt;
You will also likely want to disable actions running on your fork:&lt;br /&gt;
&lt;br /&gt;
[[File:Fork Actions Settings.png|alt=You can disable actions from running on your fork by going to settings, general under actions, disable actions, and save.|frameless|655x655px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Download and Install Git === &lt;br /&gt;
&lt;br /&gt;
You’ll need Git installed to make any changes to the repository. Download it from https://git-scm.com/downloads. &lt;br /&gt;
&lt;br /&gt;
=== Step 4: Clone Repository ===&lt;br /&gt;
Then, on Visual Studio Code, under the Source Control tab on the left bar - the third option down, you should be presented with the option to “Clone Repository”. Be sure its not a OneDrive managed folder (see note below) nor a subdirectory of another repository (e.g. another copy of CM). &lt;br /&gt;
&lt;br /&gt;
[[File:clone_repo.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Paste the URL of your fork into the box that pops up - this should be in the format of &amp;lt;nowiki&amp;gt;https://github.com/&amp;lt;/nowiki&amp;gt;[YOURUSERNAME]/cmss13. Select a folder to download the repo into, and let it run. It may take awhile.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important&#039;&#039;&#039;: Be sure not to download and clone the repo into a folder managed by OneDrive or any other cloud storage service else you are going to have a bad time ever OneDrive locks a file or offloads a file from your computer onto the cloud to save space. If you allowed your system to use OneDrive this likely means your entire User folder (including documents and desktop) are all managed by OneDrive.&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Download Extensions ===&lt;br /&gt;
&lt;br /&gt;
These extensions to Visual Studio Code will allow the program to read DreamMaker code intelligently and allow you to navigate through the code faster. &lt;br /&gt;
&lt;br /&gt;
You can get them by clicking on the extensions tab - probably the fourth or fifth option, it looks like three boxes with a fourth being added - and downloading all the “Recommended” extensions.&lt;br /&gt;
&lt;br /&gt;
Also - search for and install GitLens. It makes using the source control features of Visual Studio Code much easier.&lt;br /&gt;
&lt;br /&gt;
[[File:recommended_extensions.png|400px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 6: Configuring Language Client ===&lt;br /&gt;
Debugging features like breakpoints rely on the language server to be installed and working.&lt;br /&gt;
&lt;br /&gt;
* Search for &amp;quot;@enabled Language Client&amp;quot; in extensions&lt;br /&gt;
* Click the gear and then Extension Settings&lt;br /&gt;
* Enable Auto Update&lt;br /&gt;
* If you installed Byond in a non-default location, add/update the Byond Path to your BYOND installation folder (will be a folder with unist.exe and 6 other folders)&lt;br /&gt;
* Restart Visual Studio Code&lt;br /&gt;
&lt;br /&gt;
Auto Update will ensure you have the latest version of the language server installed in a temporary folder for Visual Studio Code. A correct path to the BYOND installation folder will allow the language server to compile and parse the code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: As of writing, BYOND 515.1633+ is functional with the language client server (dm-langserver 1.8.0+19 using auxtools commit: v2.3.3). However, 516.1668 and 516.1669 do not currently have working breakpoints as of dm-langserver 1.10.0+22 using auxtools commit: v2.3.5.&lt;br /&gt;
[[File:Language Client Settings.png|655x655px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 7: Finishing Up ===&lt;br /&gt;
&lt;br /&gt;
You’ve now got a complete clone of the CM-SS13 codebase on your local computer!&lt;br /&gt;
&lt;br /&gt;
== Making a Change ==&lt;br /&gt;
&lt;br /&gt;
All changes you make to the code must be done on a new branch. &lt;br /&gt;
&lt;br /&gt;
A branch is another version of your codebase - made from your “master” branch - which should be identical to the “master” branch present on the main repo - which changes can be made to without affecting your “master” branch.&lt;br /&gt;
&lt;br /&gt;
A “commit” is a save of your changes to the code you’ve made. Every time you “commit” your changes to the branch, you are saving all your changes made so far. All code must be “committed” before it can be sent to the main repository.&lt;br /&gt;
&lt;br /&gt;
To start with making changes, you must make a new branch on your forked repository, from your master branch. Your master branch should never be committed to, and should be a clean state.&lt;br /&gt;
&lt;br /&gt;
Every PR you make should have a new branch. This allows for commits you make on different branches to not affect your other branches, letting you work on multiple projects at once.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Making a New Branch ===&lt;br /&gt;
&lt;br /&gt;
Press Control + Shift + P to bring up the Command Pallet. This allows you to control Visual Studio Control easily, but we want the command “Create branch from...”. Type that in and press enter to run it. Give your branch a name - like new-helmet. Select which branch to make it from - that will be your master branch. &lt;br /&gt;
&lt;br /&gt;
[[File:create_branch_from.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Then, switch to this branch. You can do this at the bottom of the Source Control tab, under the Branches title - you might have to click on it to show all your branches. Right click on your new branch, and select the option to switch to it.&lt;br /&gt;
&lt;br /&gt;
[[File:switch_branch.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Now, you can make whatever changes you like, and you can commit them to this branch without altering your master branch.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Modifying the Code ===&lt;br /&gt;
&lt;br /&gt;
Now, if you make any change to any file within the repo, Git will notice and add it to the modified files in the Source Control tab.&lt;br /&gt;
&lt;br /&gt;
You can make a simple change - such as altering an item description - just to see your code changes reflected in game. To find an item, use the Search tab on the left - the magnifying glass - and type in the name or description if the item as it is in game.&lt;br /&gt;
&lt;br /&gt;
[[File:searching.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once you’ve made this change, it’ll be noticed at the top of the Source Control tab.&lt;br /&gt;
&lt;br /&gt;
[[File:changes.png|400px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Testing your Code ===&lt;br /&gt;
&lt;br /&gt;
Press F5 - this will start your code with the debugger attached. This will automatically pause the server and tell you when an error - usually known as a runtime - occurs.&lt;br /&gt;
&lt;br /&gt;
You can press Control-F5 to start without the debugger.&lt;br /&gt;
&lt;br /&gt;
Then, at the bottom right of your Windows interface, click the chevron to view your hidden processes. Click on the green DreamDaemon circle, and you can see the server process that has booted up. Then, on the World tab at the top, press Join. This will log you in to the server, where you will automatically have full Admin permissions.&lt;br /&gt;
&lt;br /&gt;
Find your item in game - or spawn it in with the admin game-panel - and it should have the changes you’ve made in the code. If it doesn’t- you probably didn’t save the file. Terminate the server using the stop button on Visual Studio Code or by right clicking on the DreamDaemon process and pressing Stop.&lt;br /&gt;
&lt;br /&gt;
If you are making a change that doesn&#039;t require the ground map or ship map loaded, you can speed up the loading process by using a streamlined next_map.json file in your data folder to load USS Runtime instead:&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;map_name&amp;quot;: &amp;quot;USS Runtime&amp;quot;,&lt;br /&gt;
    &amp;quot;map_path&amp;quot;: &amp;quot;map_files/USS_Runtime&amp;quot;,&lt;br /&gt;
    &amp;quot;map_file&amp;quot;: &amp;quot;USS_Runtime.dmm&amp;quot;,&lt;br /&gt;
	&amp;quot;survivor_types&amp;quot;: [&lt;br /&gt;
        &amp;quot;/datum/equipment_preset/survivor/scientist/lv&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;traits&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Marine Main Ship&amp;quot;: true,&lt;br /&gt;
            &amp;quot;Up&amp;quot;: 1&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Marine Main Ship&amp;quot;: true,&lt;br /&gt;
            &amp;quot;Down&amp;quot;: -1&lt;br /&gt;
        }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;camouflage&amp;quot;: &amp;quot;classic&amp;quot;,&lt;br /&gt;
	&amp;quot;disable_ship_map&amp;quot;: true&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Setting up Git to Commit ===&lt;br /&gt;
In order to be able to commit changes, Git needs to know who you are. This requires an email and a username - in most cases, your username should be the same as your GitHub username. The email address can be either an email you&#039;re okay with people knowing - or the private email provided by GitHub. This can be obtained at [https://github.com/settings/email https://github.com/settings/emails] under the &amp;quot;Keep my email address private&amp;quot; setting. &lt;br /&gt;
&lt;br /&gt;
Then, you need to open a new Terminal window inside Visual Studio Code. Using the top bar, navigate to &#039;Terminal&#039; and &#039;New Terminal&#039;. A window should appear at the bottom of your screen, containing a command line interface. Run the following commands:&amp;lt;pre&amp;gt;&lt;br /&gt;
git config --global user.email &amp;quot;your@email.here&amp;quot;&lt;br /&gt;
git config --global user.name &amp;quot;yourusernamehere&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Committing your Changes ===&lt;br /&gt;
&lt;br /&gt;
At the top of the Source Control tab, your modified file should be under “Changes”. Hover over the file name you have modified, and press the Plus symbol - or do the same over the Changes button to “stage” your changes.&lt;br /&gt;
&lt;br /&gt;
[[File:example_commit.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once your changes have been “staged”, they have been selected to be committed. You can give it a commit message on the box with “Message”, and press the tick at the top to commit those changes.&lt;br /&gt;
&lt;br /&gt;
[[File:example_stage.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once this has been completed, you’ve committed your changes locally - but they have not been published to your GitHub fork.&lt;br /&gt;
&lt;br /&gt;
=== Step 6: Publishing to GitHub ===&lt;br /&gt;
&lt;br /&gt;
This is quite simple. On the Source Control tab, you should now see the “Publish Branch”. This will publish your branch, along with your changes, to your fork on GitHub. You can navigate to it on the web to see these changes.&lt;br /&gt;
&lt;br /&gt;
[[File:publish_branch.png|400px]]&lt;br /&gt;
&lt;br /&gt;
If you make any further changes to this branch and commit them, you will see the “Sync Changes” option instead. This does the same thing - “pushing” all your changes to your fork on GitHub.&lt;br /&gt;
&lt;br /&gt;
[[File:example_sync.png|400px]]&lt;br /&gt;
&lt;br /&gt;
== Making a Pull Request ==&lt;br /&gt;
&lt;br /&gt;
A “pull request” is a *request* for the main repository to *pull* - or more accurately, merge - the contents of your branch into the master branch. This process allows for code to be tested and reviewed by maintainers/developers, before being merged into the master branch.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Navigating the Web Interface ===&lt;br /&gt;
&lt;br /&gt;
Head to your repository on GitHub - not the main CM-SS13 repo. Then, click on “master” and type in the name of your branch. &lt;br /&gt;
&lt;br /&gt;
[[File:navigating_github_create_pr.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Hit “Contribute” on the right, and it’ll bring up the option to Create Pull Request. Clicking on this automatically sets the merge as being from your branch to the master branch at the main CM-SS13 repository.&lt;br /&gt;
&lt;br /&gt;
[[File:auto_merge.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Hopefully, there&#039;s no merge conflicts, and it gives the happy green &amp;quot;Able to automatically merge&amp;quot; - however, if someone else has changed code you&#039;re changing in your PR after you made the branch for this feature, you&#039;ll need to manually deconflict the files. Read on for more about merge conflicts.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Creating the Pull Request ===&lt;br /&gt;
&lt;br /&gt;
Give your PR a good title - this will be the message of the commit to the main branch containing all your code.&lt;br /&gt;
&lt;br /&gt;
[[File:title.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, fill in the PR description, including a descriptive changelog. Put your BYOND username next to the first :cl: to ensure you are accurately credited.&lt;br /&gt;
&lt;br /&gt;
[[File:changelog.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, hit Create Pull Request (or don’t, if you’re uselessly changing one description as a test). &lt;br /&gt;
&lt;br /&gt;
[[File:create_pull_request.png|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Code Review ===&lt;br /&gt;
&lt;br /&gt;
GitHub will automatically run some tests on your code, which may fail, resulting in you having to change your code. The developers will review your code, and may also request changes. That&#039;ll look like this.&lt;br /&gt;
&lt;br /&gt;
[[File:github_checks.png|800px]]&lt;br /&gt;
&lt;br /&gt;
In order to carry out the changes, simply make the changes on your branch on your local repository, and press “Sync Changes”, this will automatically update the PR.&lt;br /&gt;
&lt;br /&gt;
If a developer has marked your PR as a draft, you will have to mark it as being ready for review. You can do this at the bottom of the web interface on your PR.&lt;br /&gt;
&lt;br /&gt;
== Staying in Sync ==&lt;br /&gt;
&lt;br /&gt;
As other PRs are merged into the repository, your fork will slowly become out of date. This will become an issue over time, as you modify code that has been changed by another recent PR, and you find conflicts that didn’t need to happen.&lt;br /&gt;
&lt;br /&gt;
To avoid this, regularly go to your master branch of your fork on the web interface, and press “Sync fork” and &amp;quot;Update branch&amp;quot;, to add all the commits recently merged to your fork.&lt;br /&gt;
&lt;br /&gt;
[[File:update_branch.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, on Visual Studio Code, you can “Sync Changes” to update your local copy of the master branch.&lt;br /&gt;
&lt;br /&gt;
Do this regularly to ensure you don’t fall out of date with any changes.&lt;br /&gt;
&lt;br /&gt;
= Appendix =&lt;br /&gt;
&lt;br /&gt;
== Merge Conflicts ==&lt;br /&gt;
When your PR is conflicting with master, this means that there are places that both you and someone else have both altered and a decision has to be made to decide what that file or line of code should be. To begin the process to resolve this, you need to merge upstream/master into your branch. (VSC Source control has an Add Remotes option in the Remotes section of Source Control where you can add the link to the .git of the main repository). This will initiate any merge hooks automatically explained more below.&lt;br /&gt;
&lt;br /&gt;
=== Mapping Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Sometimes mapping conflicts can be handled automatically via a merge hook. Install the git hooks in tools/hooks by hitting “Install.bat” (Windows) or &amp;quot;Install.sh&amp;quot; (Linux). Should a single tile be altered by both you and someone else, a mapping conflict marker will be placed in that location that will cause lint errors and yell in chat. This will help during mapping conflicts by marking areas that are conflicting, allowing you to open an editor (such as StrongDMM) to look for the conflict markers and resolve the issue.&lt;br /&gt;
&lt;br /&gt;
Should a conflict like this occur, you should then open the map editor (StrongDMM) and look for the conflict markers. In text, it will look like the conflict has entirely disappeared - but it *hasn’t* - the MapMerger has just automatically dumped everything from the conflicting branches together in a mess that *you* have to fix. Everything above the merge conflict marker will be one side of the merge, and conversely everything below the merge conflict marker will be the other side of the merge.&lt;br /&gt;
&lt;br /&gt;
=== DMI (Icon File) Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Just like with mapping conflicts these conflicts can often be handled automatically via a merge hook. Install the git hooks in tools/hooks by hitting “Install.bat” (Windows) or &amp;quot;Install.sh&amp;quot; (Linux). More often than not any new icons that someone else added will just be appended to the end of the file. But if both you and someone else alter the same icon_state of something, that will have to be manually resolved. In this situation just open up the DMI file in either Dreamaker or VSC&#039;s DMI Editor and adjust it as needed. Ultimately use the IDB (Icon Diff Bot) checks to double check you haven&#039;t unintentionally removed a icon_state someone added.&lt;br /&gt;
&lt;br /&gt;
=== Code Conflicts ===&lt;br /&gt;
&lt;br /&gt;
There is no hook to automatically handle code conflicts. Find the conflict markers in conflicting files indicated with a bunch of &amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; and &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;. VSC should make this obvious, and in some cases, deconflict the files itself. Where it fails to do so, you will need to remove the conflict markers and add the code together from both branches as applicable. Be sure to test if the changes work. For more information see https://code.visualstudio.com/docs/sourcecontrol/overview#_merge-conflicts&lt;br /&gt;
&lt;br /&gt;
== Glossary ==&lt;br /&gt;
&lt;br /&gt;
=== Branch ===&lt;br /&gt;
&lt;br /&gt;
A version of your fork that you can freely commit changes to without affecting other branches.&lt;br /&gt;
&lt;br /&gt;
=== Commit ===&lt;br /&gt;
&lt;br /&gt;
A change to a branch, can be of any size from a single space added to one file to completely rewriting the entire repository.&lt;br /&gt;
&lt;br /&gt;
=== Fork ===&lt;br /&gt;
&lt;br /&gt;
A copy of the CM-SS13 repository that you own, and can make whatever changes to that you like without impacting the main repo.&lt;br /&gt;
&lt;br /&gt;
=== Repository ===&lt;br /&gt;
&lt;br /&gt;
Often known as a repo. Ours contains all of the code, maps and assets for CM-SS13.&lt;br /&gt;
&lt;br /&gt;
=== PR ===&lt;br /&gt;
&lt;br /&gt;
Pull Request - a request for the main repository to merge the changes present in one of the branches of your fork into the master branch of the main, upstream repository.&lt;br /&gt;
&lt;br /&gt;
=== Merge ===&lt;br /&gt;
&lt;br /&gt;
Where all the commits from a branch are applied to another branch. For example, merging your origin branch containing a new feature to an upstream master branch.&lt;br /&gt;
&lt;br /&gt;
=== Merge Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Where two branches from separate contributors have touched the same code, when one of them is merged, you will have a conflict preventing automatic merging. This involves manually fitting the code together, allowing both changes to exist without overwriting either.&lt;br /&gt;
&lt;br /&gt;
=== Remote ===&lt;br /&gt;
&lt;br /&gt;
A remote is a version of your repository that is not stored on your computer - such as on GitHub. This includes both your fork and the upstream, main CM-SS13 repo.&lt;br /&gt;
&lt;br /&gt;
=== Origin ===&lt;br /&gt;
&lt;br /&gt;
This will be your fork of the CM-SS13 repository.&lt;br /&gt;
&lt;br /&gt;
=== Upstream ===&lt;br /&gt;
&lt;br /&gt;
The upstream of your fork will be the main CM-SS13 repo. Think of changes flowing down a stream from the main repo to your fork when you “Fetch Upstream”.&lt;br /&gt;
&lt;br /&gt;
=== Git ===&lt;br /&gt;
&lt;br /&gt;
The version control system used by CM-SS13, allowing us to synchronise changes being made by many different contributor - and easily go back if something goes wrong.&lt;br /&gt;
&lt;br /&gt;
=== Diff ===&lt;br /&gt;
&lt;br /&gt;
Shows the changes between the current copy of the code and the new code that you have committed.&lt;br /&gt;
&lt;br /&gt;
=== VSC / VS Code === &lt;br /&gt;
&lt;br /&gt;
Visual Studio Code, the text editor we use for DM development.&lt;/div&gt;</summary>
		<author><name>Drulikar</name></author>
	</entry>
	<entry>
		<id>https://cm-ss13.com/w/index.php?title=Guide_to_Git&amp;diff=38842</id>
		<title>Guide to Git</title>
		<link rel="alternate" type="text/html" href="https://cm-ss13.com/w/index.php?title=Guide_to_Git&amp;diff=38842"/>
		<updated>2025-10-03T11:06:41Z</updated>

		<summary type="html">&lt;p&gt;Drulikar: /* Step 3: Download Git */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Guide to Git = &lt;br /&gt;
&lt;br /&gt;
== Setting up your Coding Environment ==&lt;br /&gt;
&lt;br /&gt;
Though you can use DreamMaker, and external Git software, for modifying your code and maps, all modern SS13 tooling is set up for Visual Studio Code, so it is highly recommended. You can jump to variable definitions, procs and atoms with ease.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Downloading Visual Studio Code ===&lt;br /&gt;
&lt;br /&gt;
Visual Studio Code is a free code editor (from Microsoft) that you can use to edit, test and publish your code to GitHub. &lt;br /&gt;
&lt;br /&gt;
You can download it from https://code.visualstudio.com/ and run the installer.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Forking the Repository === &lt;br /&gt;
&lt;br /&gt;
Go to https://github.com/cmss13-devs/cmss13, and at the top right, hit “Fork” - you’ll need a GitHub account for this.&lt;br /&gt;
&lt;br /&gt;
[[File:fork.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Follow the prompts that come up, and you’ll have your own copy of the code on GitHub.&lt;br /&gt;
&lt;br /&gt;
You will also likely want to disable actions running on your fork:&lt;br /&gt;
&lt;br /&gt;
[[File:Fork Actions Settings.png|alt=You can disable actions from running on your fork by going to settings, general under actions, disable actions, and save.|frameless|655x655px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Download Git === &lt;br /&gt;
&lt;br /&gt;
You’ll need Git installed to make any changes to the repository. Download it from https://git-scm.com/downloads. &lt;br /&gt;
&lt;br /&gt;
Then, on Visual Studio Code, under the Source Control tab on the left bar - the third option down, you should be presented with the option to “Clone Repository”. &lt;br /&gt;
&lt;br /&gt;
[[File:clone_repo.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Paste the URL of your fork into the box that pops up - this should be in the format of &amp;lt;nowiki&amp;gt;https://github.com/&amp;lt;/nowiki&amp;gt;[YOURUSERNAME]/cmss13. Select a folder to download the repo into, and let it run. It may take awhile.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important&#039;&#039;&#039;: Be sure not to download and clone the repo into a folder managed by OneDrive or any other cloud storage service else you are going to have a bad time ever OneDrive locks a file or offloads a file from your computer onto the cloud to save space. If you allowed your system to use OneDrive this likely means your entire User folder (including documents and desktop) are all managed by OneDrive.&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Download Extensions ===&lt;br /&gt;
&lt;br /&gt;
These extensions to Visual Studio Code will allow the program to read DreamMaker code intelligently and allow you to navigate through the code faster. &lt;br /&gt;
&lt;br /&gt;
You can get them by clicking on the extensions tab - probably the fourth or fifth option, it looks like three boxes with a fourth being added - and downloading all the “Recommended” extensions.&lt;br /&gt;
&lt;br /&gt;
Also - search for and install GitLens. It makes using the source control features of Visual Studio Code much easier.&lt;br /&gt;
&lt;br /&gt;
[[File:recommended_extensions.png|400px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Configuring Language Client ===&lt;br /&gt;
Debugging features like breakpoints rely on the language server to be installed and working.&lt;br /&gt;
&lt;br /&gt;
* Search for &amp;quot;@enabled Language Client&amp;quot; in extensions&lt;br /&gt;
* Click the gear and then Extension Settings&lt;br /&gt;
* Enable Auto Update&lt;br /&gt;
* Add/update the Byond Path to your BYOND installation folder (will be a folder with unist.exe and 6 other folders)&lt;br /&gt;
* Restart Visual Studio Code&lt;br /&gt;
&lt;br /&gt;
Auto Update will ensure you have the latest version of the language server installed in a temporary folder for Visual Studio Code. A correct path to the BYOND installation folder will allow the language server to compile and parse the code.&lt;br /&gt;
&lt;br /&gt;
NOTE: As of writing, BYOND 515.1633+ is functional with the language client server (dm-langserver 1.8.0+19 using auxtools commit: v2.3.3).&lt;br /&gt;
[[File:Language Client Settings.png|655x655px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 6: Finishing Up ===&lt;br /&gt;
&lt;br /&gt;
You’ve now got a complete clone of the CM-SS13 codebase on your local computer!&lt;br /&gt;
&lt;br /&gt;
== Making a Change ==&lt;br /&gt;
&lt;br /&gt;
All changes you make to the code must be done on a new branch. &lt;br /&gt;
&lt;br /&gt;
A branch is another version of your codebase - made from your “master” branch - which should be identical to the “master” branch present on the main repo - which changes can be made to without affecting your “master” branch.&lt;br /&gt;
&lt;br /&gt;
A “commit” is a save of your changes to the code you’ve made. Every time you “commit” your changes to the branch, you are saving all your changes made so far. All code must be “committed” before it can be sent to the main repository.&lt;br /&gt;
&lt;br /&gt;
To start with making changes, you must make a new branch on your forked repository, from your master branch. Your master branch should never be committed to, and should be a clean state.&lt;br /&gt;
&lt;br /&gt;
Every PR you make should have a new branch. This allows for commits you make on different branches to not affect your other branches, letting you work on multiple projects at once.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Making a New Branch ===&lt;br /&gt;
&lt;br /&gt;
Press Control + Shift + P to bring up the Command Pallet. This allows you to control Visual Studio Control easily, but we want the command “Create branch from...”. Type that in and press enter to run it. Give your branch a name - like new-helmet. Select which branch to make it from - that will be your master branch. &lt;br /&gt;
&lt;br /&gt;
[[File:create_branch_from.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Then, switch to this branch. You can do this at the bottom of the Source Control tab, under the Branches title - you might have to click on it to show all your branches. Right click on your new branch, and select the option to switch to it.&lt;br /&gt;
&lt;br /&gt;
[[File:switch_branch.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Now, you can make whatever changes you like, and you can commit them to this branch without altering your master branch.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Modifying the Code ===&lt;br /&gt;
&lt;br /&gt;
Now, if you make any change to any file within the repo, Git will notice and add it to the modified files in the Source Control tab.&lt;br /&gt;
&lt;br /&gt;
You can make a simple change - such as altering an item description - just to see your code changes reflected in game. To find an item, use the Search tab on the left - the magnifying glass - and type in the name or description if the item as it is in game.&lt;br /&gt;
&lt;br /&gt;
[[File:searching.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once you’ve made this change, it’ll be noticed at the top of the Source Control tab.&lt;br /&gt;
&lt;br /&gt;
[[File:changes.png|400px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Testing your Code ===&lt;br /&gt;
&lt;br /&gt;
Press F5 - this will start your code with the debugger attached. This will automatically pause the server and tell you when an error - usually known as a runtime - occurs.&lt;br /&gt;
&lt;br /&gt;
You can press Control-F5 to start without the debugger.&lt;br /&gt;
&lt;br /&gt;
Then, at the bottom right of your Windows interface, click the chevron to view your hidden processes. Click on the green DreamDaemon circle, and you can see the server process that has booted up. Then, on the World tab at the top, press Join. This will log you in to the server, where you will automatically have full Admin permissions.&lt;br /&gt;
&lt;br /&gt;
Find your item in game - or spawn it in with the admin game-panel - and it should have the changes you’ve made in the code. If it doesn’t- you probably didn’t save the file. Terminate the server using the stop button on Visual Studio Code or by right clicking on the DreamDaemon process and pressing Stop.&lt;br /&gt;
&lt;br /&gt;
If you are making a change that doesn&#039;t require the ground map or ship map loaded, you can speed up the loading process by using a streamlined next_map.json file in your data folder to load USS Runtime instead:&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;map_name&amp;quot;: &amp;quot;USS Runtime&amp;quot;,&lt;br /&gt;
    &amp;quot;map_path&amp;quot;: &amp;quot;map_files/USS_Runtime&amp;quot;,&lt;br /&gt;
    &amp;quot;map_file&amp;quot;: &amp;quot;USS_Runtime.dmm&amp;quot;,&lt;br /&gt;
	&amp;quot;survivor_types&amp;quot;: [&lt;br /&gt;
        &amp;quot;/datum/equipment_preset/survivor/scientist/lv&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;traits&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Marine Main Ship&amp;quot;: true,&lt;br /&gt;
            &amp;quot;Up&amp;quot;: 1&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Marine Main Ship&amp;quot;: true,&lt;br /&gt;
            &amp;quot;Down&amp;quot;: -1&lt;br /&gt;
        }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;camouflage&amp;quot;: &amp;quot;classic&amp;quot;,&lt;br /&gt;
	&amp;quot;disable_ship_map&amp;quot;: true&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Setting up Git to Commit ===&lt;br /&gt;
In order to be able to commit changes, Git needs to know who you are. This requires an email and a username - in most cases, your username should be the same as your GitHub username. The email address can be either an email you&#039;re okay with people knowing - or the private email provided by GitHub. This can be obtained at [https://github.com/settings/email https://github.com/settings/emails] under the &amp;quot;Keep my email address private&amp;quot; setting. &lt;br /&gt;
&lt;br /&gt;
Then, you need to open a new Terminal window inside Visual Studio Code. Using the top bar, navigate to &#039;Terminal&#039; and &#039;New Terminal&#039;. A window should appear at the bottom of your screen, containing a command line interface. Run the following commands:&amp;lt;pre&amp;gt;&lt;br /&gt;
git config --global user.email &amp;quot;your@email.here&amp;quot;&lt;br /&gt;
git config --global user.name &amp;quot;yourusernamehere&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Committing your Changes ===&lt;br /&gt;
&lt;br /&gt;
At the top of the Source Control tab, your modified file should be under “Changes”. Hover over the file name you have modified, and press the Plus symbol - or do the same over the Changes button to “stage” your changes.&lt;br /&gt;
&lt;br /&gt;
[[File:example_commit.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once your changes have been “staged”, they have been selected to be committed. You can give it a commit message on the box with “Message”, and press the tick at the top to commit those changes.&lt;br /&gt;
&lt;br /&gt;
[[File:example_stage.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once this has been completed, you’ve committed your changes locally - but they have not been published to your GitHub fork.&lt;br /&gt;
&lt;br /&gt;
=== Step 6: Publishing to GitHub ===&lt;br /&gt;
&lt;br /&gt;
This is quite simple. On the Source Control tab, you should now see the “Publish Branch”. This will publish your branch, along with your changes, to your fork on GitHub. You can navigate to it on the web to see these changes.&lt;br /&gt;
&lt;br /&gt;
[[File:publish_branch.png|400px]]&lt;br /&gt;
&lt;br /&gt;
If you make any further changes to this branch and commit them, you will see the “Sync Changes” option instead. This does the same thing - “pushing” all your changes to your fork on GitHub.&lt;br /&gt;
&lt;br /&gt;
[[File:example_sync.png|400px]]&lt;br /&gt;
&lt;br /&gt;
== Making a Pull Request ==&lt;br /&gt;
&lt;br /&gt;
A “pull request” is a *request* for the main repository to *pull* - or more accurately, merge - the contents of your branch into the master branch. This process allows for code to be tested and reviewed by maintainers/developers, before being merged into the master branch.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Navigating the Web Interface ===&lt;br /&gt;
&lt;br /&gt;
Head to your repository on GitHub - not the main CM-SS13 repo. Then, click on “master” and type in the name of your branch. &lt;br /&gt;
&lt;br /&gt;
[[File:navigating_github_create_pr.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Hit “Contribute” on the right, and it’ll bring up the option to Create Pull Request. Clicking on this automatically sets the merge as being from your branch to the master branch at the main CM-SS13 repository.&lt;br /&gt;
&lt;br /&gt;
[[File:auto_merge.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Hopefully, there&#039;s no merge conflicts, and it gives the happy green &amp;quot;Able to automatically merge&amp;quot; - however, if someone else has changed code you&#039;re changing in your PR after you made the branch for this feature, you&#039;ll need to manually deconflict the files. Read on for more about merge conflicts.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Creating the Pull Request ===&lt;br /&gt;
&lt;br /&gt;
Give your PR a good title - this will be the message of the commit to the main branch containing all your code.&lt;br /&gt;
&lt;br /&gt;
[[File:title.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, fill in the PR description, including a descriptive changelog. Put your BYOND username next to the first :cl: to ensure you are accurately credited.&lt;br /&gt;
&lt;br /&gt;
[[File:changelog.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, hit Create Pull Request (or don’t, if you’re uselessly changing one description as a test). &lt;br /&gt;
&lt;br /&gt;
[[File:create_pull_request.png|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Code Review ===&lt;br /&gt;
&lt;br /&gt;
GitHub will automatically run some tests on your code, which may fail, resulting in you having to change your code. The developers will review your code, and may also request changes. That&#039;ll look like this.&lt;br /&gt;
&lt;br /&gt;
[[File:github_checks.png|800px]]&lt;br /&gt;
&lt;br /&gt;
In order to carry out the changes, simply make the changes on your branch on your local repository, and press “Sync Changes”, this will automatically update the PR.&lt;br /&gt;
&lt;br /&gt;
If a developer has marked your PR as a draft, you will have to mark it as being ready for review. You can do this at the bottom of the web interface on your PR.&lt;br /&gt;
&lt;br /&gt;
== Staying in Sync ==&lt;br /&gt;
&lt;br /&gt;
As other PRs are merged into the repository, your fork will slowly become out of date. This will become an issue over time, as you modify code that has been changed by another recent PR, and you find conflicts that didn’t need to happen.&lt;br /&gt;
&lt;br /&gt;
To avoid this, regularly go to your master branch of your fork on the web interface, and press “Sync fork” and &amp;quot;Update branch&amp;quot;, to add all the commits recently merged to your fork.&lt;br /&gt;
&lt;br /&gt;
[[File:update_branch.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, on Visual Studio Code, you can “Sync Changes” to update your local copy of the master branch.&lt;br /&gt;
&lt;br /&gt;
Do this regularly to ensure you don’t fall out of date with any changes.&lt;br /&gt;
&lt;br /&gt;
= Appendix =&lt;br /&gt;
&lt;br /&gt;
== Merge Conflicts ==&lt;br /&gt;
When your PR is conflicting with master, this means that there are places that both you and someone else have both altered and a decision has to be made to decide what that file or line of code should be. To begin the process to resolve this, you need to merge upstream/master into your branch. (VSC Source control has an Add Remotes option in the Remotes section of Source Control where you can add the link to the .git of the main repository). This will initiate any merge hooks automatically explained more below.&lt;br /&gt;
&lt;br /&gt;
=== Mapping Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Sometimes mapping conflicts can be handled automatically via a merge hook. Install the git hooks in tools/hooks by hitting “Install.bat” (Windows) or &amp;quot;Install.sh&amp;quot; (Linux). Should a single tile be altered by both you and someone else, a mapping conflict marker will be placed in that location that will cause lint errors and yell in chat. This will help during mapping conflicts by marking areas that are conflicting, allowing you to open an editor (such as StrongDMM) to look for the conflict markers and resolve the issue.&lt;br /&gt;
&lt;br /&gt;
Should a conflict like this occur, you should then open the map editor (StrongDMM) and look for the conflict markers. In text, it will look like the conflict has entirely disappeared - but it *hasn’t* - the MapMerger has just automatically dumped everything from the conflicting branches together in a mess that *you* have to fix. Everything above the merge conflict marker will be one side of the merge, and conversely everything below the merge conflict marker will be the other side of the merge.&lt;br /&gt;
&lt;br /&gt;
=== DMI (Icon File) Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Just like with mapping conflicts these conflicts can often be handled automatically via a merge hook. Install the git hooks in tools/hooks by hitting “Install.bat” (Windows) or &amp;quot;Install.sh&amp;quot; (Linux). More often than not any new icons that someone else added will just be appended to the end of the file. But if both you and someone else alter the same icon_state of something, that will have to be manually resolved. In this situation just open up the DMI file in either Dreamaker or VSC&#039;s DMI Editor and adjust it as needed. Ultimately use the IDB (Icon Diff Bot) checks to double check you haven&#039;t unintentionally removed a icon_state someone added.&lt;br /&gt;
&lt;br /&gt;
=== Code Conflicts ===&lt;br /&gt;
&lt;br /&gt;
There is no hook to automatically handle code conflicts. Find the conflict markers in conflicting files indicated with a bunch of &amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; and &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;. VSC should make this obvious, and in some cases, deconflict the files itself. Where it fails to do so, you will need to remove the conflict markers and add the code together from both branches as applicable. Be sure to test if the changes work. For more information see https://code.visualstudio.com/docs/sourcecontrol/overview#_merge-conflicts&lt;br /&gt;
&lt;br /&gt;
== Glossary ==&lt;br /&gt;
&lt;br /&gt;
=== Branch ===&lt;br /&gt;
&lt;br /&gt;
A version of your fork that you can freely commit changes to without affecting other branches.&lt;br /&gt;
&lt;br /&gt;
=== Commit ===&lt;br /&gt;
&lt;br /&gt;
A change to a branch, can be of any size from a single space added to one file to completely rewriting the entire repository.&lt;br /&gt;
&lt;br /&gt;
=== Fork ===&lt;br /&gt;
&lt;br /&gt;
A copy of the CM-SS13 repository that you own, and can make whatever changes to that you like without impacting the main repo.&lt;br /&gt;
&lt;br /&gt;
=== Repository ===&lt;br /&gt;
&lt;br /&gt;
Often known as a repo. Ours contains all of the code, maps and assets for CM-SS13.&lt;br /&gt;
&lt;br /&gt;
=== PR ===&lt;br /&gt;
&lt;br /&gt;
Pull Request - a request for the main repository to merge the changes present in one of the branches of your fork into the master branch of the main, upstream repository.&lt;br /&gt;
&lt;br /&gt;
=== Merge ===&lt;br /&gt;
&lt;br /&gt;
Where all the commits from a branch are applied to another branch. For example, merging your origin branch containing a new feature to an upstream master branch.&lt;br /&gt;
&lt;br /&gt;
=== Merge Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Where two branches from separate contributors have touched the same code, when one of them is merged, you will have a conflict preventing automatic merging. This involves manually fitting the code together, allowing both changes to exist without overwriting either.&lt;br /&gt;
&lt;br /&gt;
=== Remote ===&lt;br /&gt;
&lt;br /&gt;
A remote is a version of your repository that is not stored on your computer - such as on GitHub. This includes both your fork and the upstream, main CM-SS13 repo.&lt;br /&gt;
&lt;br /&gt;
=== Origin ===&lt;br /&gt;
&lt;br /&gt;
This will be your fork of the CM-SS13 repository.&lt;br /&gt;
&lt;br /&gt;
=== Upstream ===&lt;br /&gt;
&lt;br /&gt;
The upstream of your fork will be the main CM-SS13 repo. Think of changes flowing down a stream from the main repo to your fork when you “Fetch Upstream”.&lt;br /&gt;
&lt;br /&gt;
=== Git ===&lt;br /&gt;
&lt;br /&gt;
The version control system used by CM-SS13, allowing us to synchronise changes being made by many different contributor - and easily go back if something goes wrong.&lt;br /&gt;
&lt;br /&gt;
=== Diff ===&lt;br /&gt;
&lt;br /&gt;
Shows the changes between the current copy of the code and the new code that you have committed.&lt;br /&gt;
&lt;br /&gt;
=== VSC / VS Code === &lt;br /&gt;
&lt;br /&gt;
Visual Studio Code, the text editor we use for DM development.&lt;/div&gt;</summary>
		<author><name>Drulikar</name></author>
	</entry>
	<entry>
		<id>https://cm-ss13.com/w/index.php?title=Guide_to_Git&amp;diff=38841</id>
		<title>Guide to Git</title>
		<link rel="alternate" type="text/html" href="https://cm-ss13.com/w/index.php?title=Guide_to_Git&amp;diff=38841"/>
		<updated>2025-10-03T10:56:45Z</updated>

		<summary type="html">&lt;p&gt;Drulikar: /* Step 3: Download Git */  Add mention of OneDrive&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Guide to Git = &lt;br /&gt;
&lt;br /&gt;
== Setting up your Coding Environment ==&lt;br /&gt;
&lt;br /&gt;
Though you can use DreamMaker, and external Git software, for modifying your code and maps, all modern SS13 tooling is set up for Visual Studio Code, so it is highly recommended. You can jump to variable definitions, procs and atoms with ease.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Downloading Visual Studio Code ===&lt;br /&gt;
&lt;br /&gt;
Visual Studio Code is a free code editor (from Microsoft) that you can use to edit, test and publish your code to GitHub. &lt;br /&gt;
&lt;br /&gt;
You can download it from https://code.visualstudio.com/ and run the installer.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Forking the Repository === &lt;br /&gt;
&lt;br /&gt;
Go to https://github.com/cmss13-devs/cmss13, and at the top right, hit “Fork” - you’ll need a GitHub account for this.&lt;br /&gt;
&lt;br /&gt;
[[File:fork.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Follow the prompts that come up, and you’ll have your own copy of the code on GitHub.&lt;br /&gt;
&lt;br /&gt;
You will also likely want to disable actions running on your fork:&lt;br /&gt;
&lt;br /&gt;
[[File:Fork Actions Settings.png|alt=You can disable actions from running on your fork by going to settings, general under actions, disable actions, and save.|frameless|655x655px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Download Git === &lt;br /&gt;
&lt;br /&gt;
You’ll need Git installed to make any changes to the repository. Download it from https://git-scm.com/downloads. &lt;br /&gt;
&lt;br /&gt;
Then, on Visual Studio Code, under the Source Control tab on the left bar - the third option down, you should be presented with the option to “Clone Repository”. &lt;br /&gt;
&lt;br /&gt;
[[File:clone_repo.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Paste the URL of your fork into the box that pops up - this should be in the format of https://github.com/[YOURUSERNAME]/cmss13. Select a folder to download the repo into, and let it run. It may take awhile.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important&#039;&#039;&#039;: Be sure not to download and clone the repo into a folder managed by OneDrive or any other cloud storage service else you are going to have a bad time ever OneDrive locks a file or offloads a file from your computer onto the cloud to save space. If you allowed your system to use OneDrive this likely means your entire User folder (including documents and desktop) are all managed by OneDrive.&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Download Extensions ===&lt;br /&gt;
&lt;br /&gt;
These extensions to Visual Studio Code will allow the program to read DreamMaker code intelligently and allow you to navigate through the code faster. &lt;br /&gt;
&lt;br /&gt;
You can get them by clicking on the extensions tab - probably the fourth or fifth option, it looks like three boxes with a fourth being added - and downloading all the “Recommended” extensions.&lt;br /&gt;
&lt;br /&gt;
Also - search for and install GitLens. It makes using the source control features of Visual Studio Code much easier.&lt;br /&gt;
&lt;br /&gt;
[[File:recommended_extensions.png|400px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Configuring Language Client ===&lt;br /&gt;
Debugging features like breakpoints rely on the language server to be installed and working.&lt;br /&gt;
&lt;br /&gt;
* Search for &amp;quot;@enabled Language Client&amp;quot; in extensions&lt;br /&gt;
* Click the gear and then Extension Settings&lt;br /&gt;
* Enable Auto Update&lt;br /&gt;
* Add/update the Byond Path to your BYOND installation folder (will be a folder with unist.exe and 6 other folders)&lt;br /&gt;
* Restart Visual Studio Code&lt;br /&gt;
&lt;br /&gt;
Auto Update will ensure you have the latest version of the language server installed in a temporary folder for Visual Studio Code. A correct path to the BYOND installation folder will allow the language server to compile and parse the code.&lt;br /&gt;
&lt;br /&gt;
NOTE: As of writing, BYOND 515.1633+ is functional with the language client server (dm-langserver 1.8.0+19 using auxtools commit: v2.3.3).&lt;br /&gt;
[[File:Language Client Settings.png|655x655px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 6: Finishing Up ===&lt;br /&gt;
&lt;br /&gt;
You’ve now got a complete clone of the CM-SS13 codebase on your local computer!&lt;br /&gt;
&lt;br /&gt;
== Making a Change ==&lt;br /&gt;
&lt;br /&gt;
All changes you make to the code must be done on a new branch. &lt;br /&gt;
&lt;br /&gt;
A branch is another version of your codebase - made from your “master” branch - which should be identical to the “master” branch present on the main repo - which changes can be made to without affecting your “master” branch.&lt;br /&gt;
&lt;br /&gt;
A “commit” is a save of your changes to the code you’ve made. Every time you “commit” your changes to the branch, you are saving all your changes made so far. All code must be “committed” before it can be sent to the main repository.&lt;br /&gt;
&lt;br /&gt;
To start with making changes, you must make a new branch on your forked repository, from your master branch. Your master branch should never be committed to, and should be a clean state.&lt;br /&gt;
&lt;br /&gt;
Every PR you make should have a new branch. This allows for commits you make on different branches to not affect your other branches, letting you work on multiple projects at once.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Making a New Branch ===&lt;br /&gt;
&lt;br /&gt;
Press Control + Shift + P to bring up the Command Pallet. This allows you to control Visual Studio Control easily, but we want the command “Create branch from...”. Type that in and press enter to run it. Give your branch a name - like new-helmet. Select which branch to make it from - that will be your master branch. &lt;br /&gt;
&lt;br /&gt;
[[File:create_branch_from.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Then, switch to this branch. You can do this at the bottom of the Source Control tab, under the Branches title - you might have to click on it to show all your branches. Right click on your new branch, and select the option to switch to it.&lt;br /&gt;
&lt;br /&gt;
[[File:switch_branch.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Now, you can make whatever changes you like, and you can commit them to this branch without altering your master branch.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Modifying the Code ===&lt;br /&gt;
&lt;br /&gt;
Now, if you make any change to any file within the repo, Git will notice and add it to the modified files in the Source Control tab.&lt;br /&gt;
&lt;br /&gt;
You can make a simple change - such as altering an item description - just to see your code changes reflected in game. To find an item, use the Search tab on the left - the magnifying glass - and type in the name or description if the item as it is in game.&lt;br /&gt;
&lt;br /&gt;
[[File:searching.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once you’ve made this change, it’ll be noticed at the top of the Source Control tab.&lt;br /&gt;
&lt;br /&gt;
[[File:changes.png|400px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Testing your Code ===&lt;br /&gt;
&lt;br /&gt;
Press F5 - this will start your code with the debugger attached. This will automatically pause the server and tell you when an error - usually known as a runtime - occurs.&lt;br /&gt;
&lt;br /&gt;
You can press Control-F5 to start without the debugger.&lt;br /&gt;
&lt;br /&gt;
Then, at the bottom right of your Windows interface, click the chevron to view your hidden processes. Click on the green DreamDaemon circle, and you can see the server process that has booted up. Then, on the World tab at the top, press Join. This will log you in to the server, where you will automatically have full Admin permissions.&lt;br /&gt;
&lt;br /&gt;
Find your item in game - or spawn it in with the admin game-panel - and it should have the changes you’ve made in the code. If it doesn’t- you probably didn’t save the file. Terminate the server using the stop button on Visual Studio Code or by right clicking on the DreamDaemon process and pressing Stop.&lt;br /&gt;
&lt;br /&gt;
If you are making a change that doesn&#039;t require the ground map or ship map loaded, you can speed up the loading process by using a streamlined next_map.json file in your data folder to load USS Runtime instead:&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;map_name&amp;quot;: &amp;quot;USS Runtime&amp;quot;,&lt;br /&gt;
    &amp;quot;map_path&amp;quot;: &amp;quot;map_files/USS_Runtime&amp;quot;,&lt;br /&gt;
    &amp;quot;map_file&amp;quot;: &amp;quot;USS_Runtime.dmm&amp;quot;,&lt;br /&gt;
	&amp;quot;survivor_types&amp;quot;: [&lt;br /&gt;
        &amp;quot;/datum/equipment_preset/survivor/scientist/lv&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;traits&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Marine Main Ship&amp;quot;: true,&lt;br /&gt;
            &amp;quot;Up&amp;quot;: 1&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Marine Main Ship&amp;quot;: true,&lt;br /&gt;
            &amp;quot;Down&amp;quot;: -1&lt;br /&gt;
        }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;camouflage&amp;quot;: &amp;quot;classic&amp;quot;,&lt;br /&gt;
	&amp;quot;disable_ship_map&amp;quot;: true&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Setting up Git to Commit ===&lt;br /&gt;
In order to be able to commit changes, Git needs to know who you are. This requires an email and a username - in most cases, your username should be the same as your GitHub username. The email address can be either an email you&#039;re okay with people knowing - or the private email provided by GitHub. This can be obtained at [https://github.com/settings/email https://github.com/settings/emails] under the &amp;quot;Keep my email address private&amp;quot; setting. &lt;br /&gt;
&lt;br /&gt;
Then, you need to open a new Terminal window inside Visual Studio Code. Using the top bar, navigate to &#039;Terminal&#039; and &#039;New Terminal&#039;. A window should appear at the bottom of your screen, containing a command line interface. Run the following commands:&amp;lt;pre&amp;gt;&lt;br /&gt;
git config --global user.email &amp;quot;your@email.here&amp;quot;&lt;br /&gt;
git config --global user.name &amp;quot;yourusernamehere&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Committing your Changes ===&lt;br /&gt;
&lt;br /&gt;
At the top of the Source Control tab, your modified file should be under “Changes”. Hover over the file name you have modified, and press the Plus symbol - or do the same over the Changes button to “stage” your changes.&lt;br /&gt;
&lt;br /&gt;
[[File:example_commit.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once your changes have been “staged”, they have been selected to be committed. You can give it a commit message on the box with “Message”, and press the tick at the top to commit those changes.&lt;br /&gt;
&lt;br /&gt;
[[File:example_stage.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once this has been completed, you’ve committed your changes locally - but they have not been published to your GitHub fork.&lt;br /&gt;
&lt;br /&gt;
=== Step 6: Publishing to GitHub ===&lt;br /&gt;
&lt;br /&gt;
This is quite simple. On the Source Control tab, you should now see the “Publish Branch”. This will publish your branch, along with your changes, to your fork on GitHub. You can navigate to it on the web to see these changes.&lt;br /&gt;
&lt;br /&gt;
[[File:publish_branch.png|400px]]&lt;br /&gt;
&lt;br /&gt;
If you make any further changes to this branch and commit them, you will see the “Sync Changes” option instead. This does the same thing - “pushing” all your changes to your fork on GitHub.&lt;br /&gt;
&lt;br /&gt;
[[File:example_sync.png|400px]]&lt;br /&gt;
&lt;br /&gt;
== Making a Pull Request ==&lt;br /&gt;
&lt;br /&gt;
A “pull request” is a *request* for the main repository to *pull* - or more accurately, merge - the contents of your branch into the master branch. This process allows for code to be tested and reviewed by maintainers/developers, before being merged into the master branch.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Navigating the Web Interface ===&lt;br /&gt;
&lt;br /&gt;
Head to your repository on GitHub - not the main CM-SS13 repo. Then, click on “master” and type in the name of your branch. &lt;br /&gt;
&lt;br /&gt;
[[File:navigating_github_create_pr.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Hit “Contribute” on the right, and it’ll bring up the option to Create Pull Request. Clicking on this automatically sets the merge as being from your branch to the master branch at the main CM-SS13 repository.&lt;br /&gt;
&lt;br /&gt;
[[File:auto_merge.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Hopefully, there&#039;s no merge conflicts, and it gives the happy green &amp;quot;Able to automatically merge&amp;quot; - however, if someone else has changed code you&#039;re changing in your PR after you made the branch for this feature, you&#039;ll need to manually deconflict the files. Read on for more about merge conflicts.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Creating the Pull Request ===&lt;br /&gt;
&lt;br /&gt;
Give your PR a good title - this will be the message of the commit to the main branch containing all your code.&lt;br /&gt;
&lt;br /&gt;
[[File:title.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, fill in the PR description, including a descriptive changelog. Put your BYOND username next to the first :cl: to ensure you are accurately credited.&lt;br /&gt;
&lt;br /&gt;
[[File:changelog.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, hit Create Pull Request (or don’t, if you’re uselessly changing one description as a test). &lt;br /&gt;
&lt;br /&gt;
[[File:create_pull_request.png|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Code Review ===&lt;br /&gt;
&lt;br /&gt;
GitHub will automatically run some tests on your code, which may fail, resulting in you having to change your code. The developers will review your code, and may also request changes. That&#039;ll look like this.&lt;br /&gt;
&lt;br /&gt;
[[File:github_checks.png|800px]]&lt;br /&gt;
&lt;br /&gt;
In order to carry out the changes, simply make the changes on your branch on your local repository, and press “Sync Changes”, this will automatically update the PR.&lt;br /&gt;
&lt;br /&gt;
If a developer has marked your PR as a draft, you will have to mark it as being ready for review. You can do this at the bottom of the web interface on your PR.&lt;br /&gt;
&lt;br /&gt;
== Staying in Sync ==&lt;br /&gt;
&lt;br /&gt;
As other PRs are merged into the repository, your fork will slowly become out of date. This will become an issue over time, as you modify code that has been changed by another recent PR, and you find conflicts that didn’t need to happen.&lt;br /&gt;
&lt;br /&gt;
To avoid this, regularly go to your master branch of your fork on the web interface, and press “Sync fork” and &amp;quot;Update branch&amp;quot;, to add all the commits recently merged to your fork.&lt;br /&gt;
&lt;br /&gt;
[[File:update_branch.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, on Visual Studio Code, you can “Sync Changes” to update your local copy of the master branch.&lt;br /&gt;
&lt;br /&gt;
Do this regularly to ensure you don’t fall out of date with any changes.&lt;br /&gt;
&lt;br /&gt;
= Appendix =&lt;br /&gt;
&lt;br /&gt;
== Merge Conflicts ==&lt;br /&gt;
When your PR is conflicting with master, this means that there are places that both you and someone else have both altered and a decision has to be made to decide what that file or line of code should be. To begin the process to resolve this, you need to merge upstream/master into your branch. (VSC Source control has an Add Remotes option in the Remotes section of Source Control where you can add the link to the .git of the main repository). This will initiate any merge hooks automatically explained more below.&lt;br /&gt;
&lt;br /&gt;
=== Mapping Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Sometimes mapping conflicts can be handled automatically via a merge hook. Install the git hooks in tools/hooks by hitting “Install.bat” (Windows) or &amp;quot;Install.sh&amp;quot; (Linux). Should a single tile be altered by both you and someone else, a mapping conflict marker will be placed in that location that will cause lint errors and yell in chat. This will help during mapping conflicts by marking areas that are conflicting, allowing you to open an editor (such as StrongDMM) to look for the conflict markers and resolve the issue.&lt;br /&gt;
&lt;br /&gt;
Should a conflict like this occur, you should then open the map editor (StrongDMM) and look for the conflict markers. In text, it will look like the conflict has entirely disappeared - but it *hasn’t* - the MapMerger has just automatically dumped everything from the conflicting branches together in a mess that *you* have to fix. Everything above the merge conflict marker will be one side of the merge, and conversely everything below the merge conflict marker will be the other side of the merge.&lt;br /&gt;
&lt;br /&gt;
=== DMI (Icon File) Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Just like with mapping conflicts these conflicts can often be handled automatically via a merge hook. Install the git hooks in tools/hooks by hitting “Install.bat” (Windows) or &amp;quot;Install.sh&amp;quot; (Linux). More often than not any new icons that someone else added will just be appended to the end of the file. But if both you and someone else alter the same icon_state of something, that will have to be manually resolved. In this situation just open up the DMI file in either Dreamaker or VSC&#039;s DMI Editor and adjust it as needed. Ultimately use the IDB (Icon Diff Bot) checks to double check you haven&#039;t unintentionally removed a icon_state someone added.&lt;br /&gt;
&lt;br /&gt;
=== Code Conflicts ===&lt;br /&gt;
&lt;br /&gt;
There is no hook to automatically handle code conflicts. Find the conflict markers in conflicting files indicated with a bunch of &amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; and &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;. VSC should make this obvious, and in some cases, deconflict the files itself. Where it fails to do so, you will need to remove the conflict markers and add the code together from both branches as applicable. Be sure to test if the changes work. For more information see https://code.visualstudio.com/docs/sourcecontrol/overview#_merge-conflicts&lt;br /&gt;
&lt;br /&gt;
== Glossary ==&lt;br /&gt;
&lt;br /&gt;
=== Branch ===&lt;br /&gt;
&lt;br /&gt;
A version of your fork that you can freely commit changes to without affecting other branches.&lt;br /&gt;
&lt;br /&gt;
=== Commit ===&lt;br /&gt;
&lt;br /&gt;
A change to a branch, can be of any size from a single space added to one file to completely rewriting the entire repository.&lt;br /&gt;
&lt;br /&gt;
=== Fork ===&lt;br /&gt;
&lt;br /&gt;
A copy of the CM-SS13 repository that you own, and can make whatever changes to that you like without impacting the main repo.&lt;br /&gt;
&lt;br /&gt;
=== Repository ===&lt;br /&gt;
&lt;br /&gt;
Often known as a repo. Ours contains all of the code, maps and assets for CM-SS13.&lt;br /&gt;
&lt;br /&gt;
=== PR ===&lt;br /&gt;
&lt;br /&gt;
Pull Request - a request for the main repository to merge the changes present in one of the branches of your fork into the master branch of the main, upstream repository.&lt;br /&gt;
&lt;br /&gt;
=== Merge ===&lt;br /&gt;
&lt;br /&gt;
Where all the commits from a branch are applied to another branch. For example, merging your origin branch containing a new feature to an upstream master branch.&lt;br /&gt;
&lt;br /&gt;
=== Merge Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Where two branches from separate contributors have touched the same code, when one of them is merged, you will have a conflict preventing automatic merging. This involves manually fitting the code together, allowing both changes to exist without overwriting either.&lt;br /&gt;
&lt;br /&gt;
=== Remote ===&lt;br /&gt;
&lt;br /&gt;
A remote is a version of your repository that is not stored on your computer - such as on GitHub. This includes both your fork and the upstream, main CM-SS13 repo.&lt;br /&gt;
&lt;br /&gt;
=== Origin ===&lt;br /&gt;
&lt;br /&gt;
This will be your fork of the CM-SS13 repository.&lt;br /&gt;
&lt;br /&gt;
=== Upstream ===&lt;br /&gt;
&lt;br /&gt;
The upstream of your fork will be the main CM-SS13 repo. Think of changes flowing down a stream from the main repo to your fork when you “Fetch Upstream”.&lt;br /&gt;
&lt;br /&gt;
=== Git ===&lt;br /&gt;
&lt;br /&gt;
The version control system used by CM-SS13, allowing us to synchronise changes being made by many different contributor - and easily go back if something goes wrong.&lt;br /&gt;
&lt;br /&gt;
=== Diff ===&lt;br /&gt;
&lt;br /&gt;
Shows the changes between the current copy of the code and the new code that you have committed.&lt;br /&gt;
&lt;br /&gt;
=== VSC / VS Code === &lt;br /&gt;
&lt;br /&gt;
Visual Studio Code, the text editor we use for DM development.&lt;/div&gt;</summary>
		<author><name>Drulikar</name></author>
	</entry>
	<entry>
		<id>https://cm-ss13.com/w/index.php?title=Guide_to_Git&amp;diff=38536</id>
		<title>Guide to Git</title>
		<link rel="alternate" type="text/html" href="https://cm-ss13.com/w/index.php?title=Guide_to_Git&amp;diff=38536"/>
		<updated>2025-08-13T03:08:45Z</updated>

		<summary type="html">&lt;p&gt;Drulikar: tweak mapping conflict information&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Guide to Git = &lt;br /&gt;
&lt;br /&gt;
== Setting up your Coding Environment ==&lt;br /&gt;
&lt;br /&gt;
Though you can use DreamMaker, and external Git software, for modifying your code and maps, all modern SS13 tooling is set up for Visual Studio Code, so it is highly recommended. You can jump to variable definitions, procs and atoms with ease.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Downloading Visual Studio Code ===&lt;br /&gt;
&lt;br /&gt;
Visual Studio Code is a free code editor (from Microsoft) that you can use to edit, test and publish your code to GitHub. &lt;br /&gt;
&lt;br /&gt;
You can download it from https://code.visualstudio.com/ and run the installer.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Forking the Repository === &lt;br /&gt;
&lt;br /&gt;
Go to https://github.com/cmss13-devs/cmss13, and at the top right, hit “Fork” - you’ll need a GitHub account for this.&lt;br /&gt;
&lt;br /&gt;
[[File:fork.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Follow the prompts that come up, and you’ll have your own copy of the code on GitHub.&lt;br /&gt;
&lt;br /&gt;
You will also likely want to disable actions running on your fork:&lt;br /&gt;
&lt;br /&gt;
[[File:Fork Actions Settings.png|alt=You can disable actions from running on your fork by going to settings, general under actions, disable actions, and save.|frameless|655x655px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Download Git === &lt;br /&gt;
&lt;br /&gt;
You’ll need Git installed to make any changes to the repository. Download it from https://git-scm.com/downloads. &lt;br /&gt;
&lt;br /&gt;
Then, on Visual Studio Code, under the Source Control tab on the left bar - the third option down, you should be presented with the option to “Clone Repository”. &lt;br /&gt;
&lt;br /&gt;
[[File:clone_repo.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Paste the URL of your fork into the box that pops up - this should be in the format of https://github.com/[YOURUSERNAME]/cmss13. Select a folder to download the repo into, and let it run. It may take awhile.&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Download Extensions ===&lt;br /&gt;
&lt;br /&gt;
These extensions to Visual Studio Code will allow the program to read DreamMaker code intelligently and allow you to navigate through the code faster. &lt;br /&gt;
&lt;br /&gt;
You can get them by clicking on the extensions tab - probably the fourth or fifth option, it looks like three boxes with a fourth being added - and downloading all the “Recommended” extensions.&lt;br /&gt;
&lt;br /&gt;
Also - search for and install GitLens. It makes using the source control features of Visual Studio Code much easier.&lt;br /&gt;
&lt;br /&gt;
[[File:recommended_extensions.png|400px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Configuring Language Client ===&lt;br /&gt;
Debugging features like breakpoints rely on the language server to be installed and working.&lt;br /&gt;
&lt;br /&gt;
* Search for &amp;quot;@enabled Language Client&amp;quot; in extensions&lt;br /&gt;
* Click the gear and then Extension Settings&lt;br /&gt;
* Enable Auto Update&lt;br /&gt;
* Add/update the Byond Path to your BYOND installation folder (will be a folder with unist.exe and 6 other folders)&lt;br /&gt;
* Restart Visual Studio Code&lt;br /&gt;
&lt;br /&gt;
Auto Update will ensure you have the latest version of the language server installed in a temporary folder for Visual Studio Code. A correct path to the BYOND installation folder will allow the language server to compile and parse the code.&lt;br /&gt;
&lt;br /&gt;
NOTE: As of writing, BYOND 515.1633+ is functional with the language client server (dm-langserver 1.8.0+19 using auxtools commit: v2.3.3).&lt;br /&gt;
[[File:Language Client Settings.png|655x655px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 6: Finishing Up ===&lt;br /&gt;
&lt;br /&gt;
You’ve now got a complete clone of the CM-SS13 codebase on your local computer!&lt;br /&gt;
&lt;br /&gt;
== Making a Change ==&lt;br /&gt;
&lt;br /&gt;
All changes you make to the code must be done on a new branch. &lt;br /&gt;
&lt;br /&gt;
A branch is another version of your codebase - made from your “master” branch - which should be identical to the “master” branch present on the main repo - which changes can be made to without affecting your “master” branch.&lt;br /&gt;
&lt;br /&gt;
A “commit” is a save of your changes to the code you’ve made. Every time you “commit” your changes to the branch, you are saving all your changes made so far. All code must be “committed” before it can be sent to the main repository.&lt;br /&gt;
&lt;br /&gt;
To start with making changes, you must make a new branch on your forked repository, from your master branch. Your master branch should never be committed to, and should be a clean state.&lt;br /&gt;
&lt;br /&gt;
Every PR you make should have a new branch. This allows for commits you make on different branches to not affect your other branches, letting you work on multiple projects at once.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Making a New Branch ===&lt;br /&gt;
&lt;br /&gt;
Press Control + Shift + P to bring up the Command Pallet. This allows you to control Visual Studio Control easily, but we want the command “Create branch from...”. Type that in and press enter to run it. Give your branch a name - like new-helmet. Select which branch to make it from - that will be your master branch. &lt;br /&gt;
&lt;br /&gt;
[[File:create_branch_from.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Then, switch to this branch. You can do this at the bottom of the Source Control tab, under the Branches title - you might have to click on it to show all your branches. Right click on your new branch, and select the option to switch to it.&lt;br /&gt;
&lt;br /&gt;
[[File:switch_branch.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Now, you can make whatever changes you like, and you can commit them to this branch without altering your master branch.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Modifying the Code ===&lt;br /&gt;
&lt;br /&gt;
Now, if you make any change to any file within the repo, Git will notice and add it to the modified files in the Source Control tab.&lt;br /&gt;
&lt;br /&gt;
You can make a simple change - such as altering an item description - just to see your code changes reflected in game. To find an item, use the Search tab on the left - the magnifying glass - and type in the name or description if the item as it is in game.&lt;br /&gt;
&lt;br /&gt;
[[File:searching.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once you’ve made this change, it’ll be noticed at the top of the Source Control tab.&lt;br /&gt;
&lt;br /&gt;
[[File:changes.png|400px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Testing your Code ===&lt;br /&gt;
&lt;br /&gt;
Press F5 - this will start your code with the debugger attached. This will automatically pause the server and tell you when an error - usually known as a runtime - occurs.&lt;br /&gt;
&lt;br /&gt;
You can press Control-F5 to start without the debugger.&lt;br /&gt;
&lt;br /&gt;
Then, at the bottom right of your Windows interface, click the chevron to view your hidden processes. Click on the green DreamDaemon circle, and you can see the server process that has booted up. Then, on the World tab at the top, press Join. This will log you in to the server, where you will automatically have full Admin permissions.&lt;br /&gt;
&lt;br /&gt;
Find your item in game - or spawn it in with the admin game-panel - and it should have the changes you’ve made in the code. If it doesn’t- you probably didn’t save the file. Terminate the server using the stop button on Visual Studio Code or by right clicking on the DreamDaemon process and pressing Stop.&lt;br /&gt;
&lt;br /&gt;
If you are making a change that doesn&#039;t require the ground map or ship map loaded, you can speed up the loading process by using a streamlined next_map.json file in your data folder to load USS Runtime instead:&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;map_name&amp;quot;: &amp;quot;USS Runtime&amp;quot;,&lt;br /&gt;
    &amp;quot;map_path&amp;quot;: &amp;quot;map_files/USS_Runtime&amp;quot;,&lt;br /&gt;
    &amp;quot;map_file&amp;quot;: &amp;quot;USS_Runtime.dmm&amp;quot;,&lt;br /&gt;
	&amp;quot;survivor_types&amp;quot;: [&lt;br /&gt;
        &amp;quot;/datum/equipment_preset/survivor/scientist/lv&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;traits&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Marine Main Ship&amp;quot;: true,&lt;br /&gt;
            &amp;quot;Up&amp;quot;: 1&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Marine Main Ship&amp;quot;: true,&lt;br /&gt;
            &amp;quot;Down&amp;quot;: -1&lt;br /&gt;
        }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;camouflage&amp;quot;: &amp;quot;classic&amp;quot;,&lt;br /&gt;
	&amp;quot;disable_ship_map&amp;quot;: true&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Setting up Git to Commit ===&lt;br /&gt;
In order to be able to commit changes, Git needs to know who you are. This requires an email and a username - in most cases, your username should be the same as your GitHub username. The email address can be either an email you&#039;re okay with people knowing - or the private email provided by GitHub. This can be obtained at [https://github.com/settings/email https://github.com/settings/emails] under the &amp;quot;Keep my email address private&amp;quot; setting. &lt;br /&gt;
&lt;br /&gt;
Then, you need to open a new Terminal window inside Visual Studio Code. Using the top bar, navigate to &#039;Terminal&#039; and &#039;New Terminal&#039;. A window should appear at the bottom of your screen, containing a command line interface. Run the following commands:&amp;lt;pre&amp;gt;&lt;br /&gt;
git config --global user.email &amp;quot;your@email.here&amp;quot;&lt;br /&gt;
git config --global user.name &amp;quot;yourusernamehere&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Committing your Changes ===&lt;br /&gt;
&lt;br /&gt;
At the top of the Source Control tab, your modified file should be under “Changes”. Hover over the file name you have modified, and press the Plus symbol - or do the same over the Changes button to “stage” your changes.&lt;br /&gt;
&lt;br /&gt;
[[File:example_commit.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once your changes have been “staged”, they have been selected to be committed. You can give it a commit message on the box with “Message”, and press the tick at the top to commit those changes.&lt;br /&gt;
&lt;br /&gt;
[[File:example_stage.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once this has been completed, you’ve committed your changes locally - but they have not been published to your GitHub fork.&lt;br /&gt;
&lt;br /&gt;
=== Step 6: Publishing to GitHub ===&lt;br /&gt;
&lt;br /&gt;
This is quite simple. On the Source Control tab, you should now see the “Publish Branch”. This will publish your branch, along with your changes, to your fork on GitHub. You can navigate to it on the web to see these changes.&lt;br /&gt;
&lt;br /&gt;
[[File:publish_branch.png|400px]]&lt;br /&gt;
&lt;br /&gt;
If you make any further changes to this branch and commit them, you will see the “Sync Changes” option instead. This does the same thing - “pushing” all your changes to your fork on GitHub.&lt;br /&gt;
&lt;br /&gt;
[[File:example_sync.png|400px]]&lt;br /&gt;
&lt;br /&gt;
== Making a Pull Request ==&lt;br /&gt;
&lt;br /&gt;
A “pull request” is a *request* for the main repository to *pull* - or more accurately, merge - the contents of your branch into the master branch. This process allows for code to be tested and reviewed by maintainers/developers, before being merged into the master branch.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Navigating the Web Interface ===&lt;br /&gt;
&lt;br /&gt;
Head to your repository on GitHub - not the main CM-SS13 repo. Then, click on “master” and type in the name of your branch. &lt;br /&gt;
&lt;br /&gt;
[[File:navigating_github_create_pr.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Hit “Contribute” on the right, and it’ll bring up the option to Create Pull Request. Clicking on this automatically sets the merge as being from your branch to the master branch at the main CM-SS13 repository.&lt;br /&gt;
&lt;br /&gt;
[[File:auto_merge.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Hopefully, there&#039;s no merge conflicts, and it gives the happy green &amp;quot;Able to automatically merge&amp;quot; - however, if someone else has changed code you&#039;re changing in your PR after you made the branch for this feature, you&#039;ll need to manually deconflict the files. Read on for more about merge conflicts.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Creating the Pull Request ===&lt;br /&gt;
&lt;br /&gt;
Give your PR a good title - this will be the message of the commit to the main branch containing all your code.&lt;br /&gt;
&lt;br /&gt;
[[File:title.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, fill in the PR description, including a descriptive changelog. Put your BYOND username next to the first :cl: to ensure you are accurately credited.&lt;br /&gt;
&lt;br /&gt;
[[File:changelog.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, hit Create Pull Request (or don’t, if you’re uselessly changing one description as a test). &lt;br /&gt;
&lt;br /&gt;
[[File:create_pull_request.png|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Code Review ===&lt;br /&gt;
&lt;br /&gt;
GitHub will automatically run some tests on your code, which may fail, resulting in you having to change your code. The developers will review your code, and may also request changes. That&#039;ll look like this.&lt;br /&gt;
&lt;br /&gt;
[[File:github_checks.png|800px]]&lt;br /&gt;
&lt;br /&gt;
In order to carry out the changes, simply make the changes on your branch on your local repository, and press “Sync Changes”, this will automatically update the PR.&lt;br /&gt;
&lt;br /&gt;
If a developer has marked your PR as a draft, you will have to mark it as being ready for review. You can do this at the bottom of the web interface on your PR.&lt;br /&gt;
&lt;br /&gt;
== Staying in Sync ==&lt;br /&gt;
&lt;br /&gt;
As other PRs are merged into the repository, your fork will slowly become out of date. This will become an issue over time, as you modify code that has been changed by another recent PR, and you find conflicts that didn’t need to happen.&lt;br /&gt;
&lt;br /&gt;
To avoid this, regularly go to your master branch of your fork on the web interface, and press “Sync fork” and &amp;quot;Update branch&amp;quot;, to add all the commits recently merged to your fork.&lt;br /&gt;
&lt;br /&gt;
[[File:update_branch.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, on Visual Studio Code, you can “Sync Changes” to update your local copy of the master branch.&lt;br /&gt;
&lt;br /&gt;
Do this regularly to ensure you don’t fall out of date with any changes.&lt;br /&gt;
&lt;br /&gt;
= Appendix =&lt;br /&gt;
&lt;br /&gt;
== Merge Conflicts ==&lt;br /&gt;
When your PR is conflicting with master, this means that there are places that both you and someone else have both altered and a decision has to be made to decide what that file or line of code should be. To begin the process to resolve this, you need to merge upstream/master into your branch. (VSC Source control has an Add Remotes option in the Remotes section of Source Control where you can add the link to the .git of the main repository). This will initiate any merge hooks automatically explained more below.&lt;br /&gt;
&lt;br /&gt;
=== Mapping Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Sometimes mapping conflicts can be handled automatically via a merge hook. Install the git hooks in tools/hooks by hitting “Install.bat” (Windows) or &amp;quot;Install.sh&amp;quot; (Linux). Should a single tile be altered by both you and someone else, a mapping conflict marker will be placed in that location that will cause lint errors and yell in chat. This will help during mapping conflicts by marking areas that are conflicting, allowing you to open an editor (such as StrongDMM) to look for the conflict markers and resolve the issue.&lt;br /&gt;
&lt;br /&gt;
Should a conflict like this occur, you should then open the map editor (StrongDMM) and look for the conflict markers. In text, it will look like the conflict has entirely disappeared - but it *hasn’t* - the MapMerger has just automatically dumped everything from the conflicting branches together in a mess that *you* have to fix. Everything above the merge conflict marker will be one side of the merge, and conversely everything below the merge conflict marker will be the other side of the merge.&lt;br /&gt;
&lt;br /&gt;
=== DMI (Icon File) Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Just like with mapping conflicts these conflicts can often be handled automatically via a merge hook. Install the git hooks in tools/hooks by hitting “Install.bat” (Windows) or &amp;quot;Install.sh&amp;quot; (Linux). More often than not any new icons that someone else added will just be appended to the end of the file. But if both you and someone else alter the same icon_state of something, that will have to be manually resolved. In this situation just open up the DMI file in either Dreamaker or VSC&#039;s DMI Editor and adjust it as needed. Ultimately use the IDB (Icon Diff Bot) checks to double check you haven&#039;t unintentionally removed a icon_state someone added.&lt;br /&gt;
&lt;br /&gt;
=== Code Conflicts ===&lt;br /&gt;
&lt;br /&gt;
There is no hook to automatically handle code conflicts. Find the conflict markers in conflicting files indicated with a bunch of &amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; and &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;. VSC should make this obvious, and in some cases, deconflict the files itself. Where it fails to do so, you will need to remove the conflict markers and add the code together from both branches as applicable. Be sure to test if the changes work. For more information see https://code.visualstudio.com/docs/sourcecontrol/overview#_merge-conflicts&lt;br /&gt;
&lt;br /&gt;
== Glossary ==&lt;br /&gt;
&lt;br /&gt;
=== Branch ===&lt;br /&gt;
&lt;br /&gt;
A version of your fork that you can freely commit changes to without affecting other branches.&lt;br /&gt;
&lt;br /&gt;
=== Commit ===&lt;br /&gt;
&lt;br /&gt;
A change to a branch, can be of any size from a single space added to one file to completely rewriting the entire repository.&lt;br /&gt;
&lt;br /&gt;
=== Fork ===&lt;br /&gt;
&lt;br /&gt;
A copy of the CM-SS13 repository that you own, and can make whatever changes to that you like without impacting the main repo.&lt;br /&gt;
&lt;br /&gt;
=== Repository ===&lt;br /&gt;
&lt;br /&gt;
Often known as a repo. Ours contains all of the code, maps and assets for CM-SS13.&lt;br /&gt;
&lt;br /&gt;
=== PR ===&lt;br /&gt;
&lt;br /&gt;
Pull Request - a request for the main repository to merge the changes present in one of the branches of your fork into the master branch of the main, upstream repository.&lt;br /&gt;
&lt;br /&gt;
=== Merge ===&lt;br /&gt;
&lt;br /&gt;
Where all the commits from a branch are applied to another branch. For example, merging your origin branch containing a new feature to an upstream master branch.&lt;br /&gt;
&lt;br /&gt;
=== Merge Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Where two branches from separate contributors have touched the same code, when one of them is merged, you will have a conflict preventing automatic merging. This involves manually fitting the code together, allowing both changes to exist without overwriting either.&lt;br /&gt;
&lt;br /&gt;
=== Remote ===&lt;br /&gt;
&lt;br /&gt;
A remote is a version of your repository that is not stored on your computer - such as on GitHub. This includes both your fork and the upstream, main CM-SS13 repo.&lt;br /&gt;
&lt;br /&gt;
=== Origin ===&lt;br /&gt;
&lt;br /&gt;
This will be your fork of the CM-SS13 repository.&lt;br /&gt;
&lt;br /&gt;
=== Upstream ===&lt;br /&gt;
&lt;br /&gt;
The upstream of your fork will be the main CM-SS13 repo. Think of changes flowing down a stream from the main repo to your fork when you “Fetch Upstream”.&lt;br /&gt;
&lt;br /&gt;
=== Git ===&lt;br /&gt;
&lt;br /&gt;
The version control system used by CM-SS13, allowing us to synchronise changes being made by many different contributor - and easily go back if something goes wrong.&lt;br /&gt;
&lt;br /&gt;
=== Diff ===&lt;br /&gt;
&lt;br /&gt;
Shows the changes between the current copy of the code and the new code that you have committed.&lt;br /&gt;
&lt;br /&gt;
=== VSC / VS Code === &lt;br /&gt;
&lt;br /&gt;
Visual Studio Code, the text editor we use for DM development.&lt;/div&gt;</summary>
		<author><name>Drulikar</name></author>
	</entry>
	<entry>
		<id>https://cm-ss13.com/w/index.php?title=Guide_to_Git&amp;diff=38173</id>
		<title>Guide to Git</title>
		<link rel="alternate" type="text/html" href="https://cm-ss13.com/w/index.php?title=Guide_to_Git&amp;diff=38173"/>
		<updated>2025-07-14T03:35:47Z</updated>

		<summary type="html">&lt;p&gt;Drulikar: Update incorrect terminology in Staying in Sync&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Guide to Git = &lt;br /&gt;
&lt;br /&gt;
== Setting up your Coding Environment ==&lt;br /&gt;
&lt;br /&gt;
Though you can use DreamMaker, and external Git software, for modifying your code and maps, all modern SS13 tooling is set up for Visual Studio Code, so it is highly recommended. You can jump to variable definitions, procs and atoms with ease.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Downloading Visual Studio Code ===&lt;br /&gt;
&lt;br /&gt;
Visual Studio Code is a free code editor (from Microsoft) that you can use to edit, test and publish your code to GitHub. &lt;br /&gt;
&lt;br /&gt;
You can download it from https://code.visualstudio.com/ and run the installer.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Forking the Repository === &lt;br /&gt;
&lt;br /&gt;
Go to https://github.com/cmss13-devs/cmss13, and at the top right, hit “Fork” - you’ll need a GitHub account for this.&lt;br /&gt;
&lt;br /&gt;
[[File:fork.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Follow the prompts that come up, and you’ll have your own copy of the code on GitHub.&lt;br /&gt;
&lt;br /&gt;
You will also likely want to disable actions running on your fork:&lt;br /&gt;
&lt;br /&gt;
[[File:Fork Actions Settings.png|alt=You can disable actions from running on your fork by going to settings, general under actions, disable actions, and save.|frameless|655x655px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Download Git === &lt;br /&gt;
&lt;br /&gt;
You’ll need Git installed to make any changes to the repository. Download it from https://git-scm.com/downloads. &lt;br /&gt;
&lt;br /&gt;
Then, on Visual Studio Code, under the Source Control tab on the left bar - the third option down, you should be presented with the option to “Clone Repository”. &lt;br /&gt;
&lt;br /&gt;
[[File:clone_repo.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Paste the URL of your fork into the box that pops up - this should be in the format of https://github.com/[YOURUSERNAME]/cmss13. Select a folder to download the repo into, and let it run. It may take awhile.&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Download Extensions ===&lt;br /&gt;
&lt;br /&gt;
These extensions to Visual Studio Code will allow the program to read DreamMaker code intelligently and allow you to navigate through the code faster. &lt;br /&gt;
&lt;br /&gt;
You can get them by clicking on the extensions tab - probably the fourth or fifth option, it looks like three boxes with a fourth being added - and downloading all the “Recommended” extensions.&lt;br /&gt;
&lt;br /&gt;
Also - search for and install GitLens. It makes using the source control features of Visual Studio Code much easier.&lt;br /&gt;
&lt;br /&gt;
[[File:recommended_extensions.png|400px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Configuring Language Client ===&lt;br /&gt;
Debugging features like breakpoints rely on the language server to be installed and working.&lt;br /&gt;
&lt;br /&gt;
* Search for &amp;quot;@enabled Language Client&amp;quot; in extensions&lt;br /&gt;
* Click the gear and then Extension Settings&lt;br /&gt;
* Enable Auto Update&lt;br /&gt;
* Add/update the Byond Path to your BYOND installation folder (will be a folder with unist.exe and 6 other folders)&lt;br /&gt;
* Restart Visual Studio Code&lt;br /&gt;
&lt;br /&gt;
Auto Update will ensure you have the latest version of the language server installed in a temporary folder for Visual Studio Code. A correct path to the BYOND installation folder will allow the language server to compile and parse the code.&lt;br /&gt;
&lt;br /&gt;
NOTE: As of writing, BYOND 515.1633+ is functional with the language client server (dm-langserver 1.8.0+19 using auxtools commit: v2.3.3).&lt;br /&gt;
[[File:Language Client Settings.png|655x655px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 6: Finishing Up ===&lt;br /&gt;
&lt;br /&gt;
You’ve now got a complete clone of the CM-SS13 codebase on your local computer!&lt;br /&gt;
&lt;br /&gt;
== Making a Change ==&lt;br /&gt;
&lt;br /&gt;
All changes you make to the code must be done on a new branch. &lt;br /&gt;
&lt;br /&gt;
A branch is another version of your codebase - made from your “master” branch - which should be identical to the “master” branch present on the main repo - which changes can be made to without affecting your “master” branch.&lt;br /&gt;
&lt;br /&gt;
A “commit” is a save of your changes to the code you’ve made. Every time you “commit” your changes to the branch, you are saving all your changes made so far. All code must be “committed” before it can be sent to the main repository.&lt;br /&gt;
&lt;br /&gt;
To start with making changes, you must make a new branch on your forked repository, from your master branch. Your master branch should never be committed to, and should be a clean state.&lt;br /&gt;
&lt;br /&gt;
Every PR you make should have a new branch. This allows for commits you make on different branches to not affect your other branches, letting you work on multiple projects at once.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Making a New Branch ===&lt;br /&gt;
&lt;br /&gt;
Press Control + Shift + P to bring up the Command Pallet. This allows you to control Visual Studio Control easily, but we want the command “Create branch from...”. Type that in and press enter to run it. Give your branch a name - like new-helmet. Select which branch to make it from - that will be your master branch. &lt;br /&gt;
&lt;br /&gt;
[[File:create_branch_from.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Then, switch to this branch. You can do this at the bottom of the Source Control tab, under the Branches title - you might have to click on it to show all your branches. Right click on your new branch, and select the option to switch to it.&lt;br /&gt;
&lt;br /&gt;
[[File:switch_branch.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Now, you can make whatever changes you like, and you can commit them to this branch without altering your master branch.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Modifying the Code ===&lt;br /&gt;
&lt;br /&gt;
Now, if you make any change to any file within the repo, Git will notice and add it to the modified files in the Source Control tab.&lt;br /&gt;
&lt;br /&gt;
You can make a simple change - such as altering an item description - just to see your code changes reflected in game. To find an item, use the Search tab on the left - the magnifying glass - and type in the name or description if the item as it is in game.&lt;br /&gt;
&lt;br /&gt;
[[File:searching.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once you’ve made this change, it’ll be noticed at the top of the Source Control tab.&lt;br /&gt;
&lt;br /&gt;
[[File:changes.png|400px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Testing your Code ===&lt;br /&gt;
&lt;br /&gt;
Press F5 - this will start your code with the debugger attached. This will automatically pause the server and tell you when an error - usually known as a runtime - occurs.&lt;br /&gt;
&lt;br /&gt;
You can press Control-F5 to start without the debugger.&lt;br /&gt;
&lt;br /&gt;
Then, at the bottom right of your Windows interface, click the chevron to view your hidden processes. Click on the green DreamDaemon circle, and you can see the server process that has booted up. Then, on the World tab at the top, press Join. This will log you in to the server, where you will automatically have full Admin permissions.&lt;br /&gt;
&lt;br /&gt;
Find your item in game - or spawn it in with the admin game-panel - and it should have the changes you’ve made in the code. If it doesn’t- you probably didn’t save the file. Terminate the server using the stop button on Visual Studio Code or by right clicking on the DreamDaemon process and pressing Stop.&lt;br /&gt;
&lt;br /&gt;
If you are making a change that doesn&#039;t require the ground map or ship map loaded, you can speed up the loading process by using a streamlined next_map.json file in your data folder to load USS Runtime instead:&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;map_name&amp;quot;: &amp;quot;USS Runtime&amp;quot;,&lt;br /&gt;
    &amp;quot;map_path&amp;quot;: &amp;quot;map_files/USS_Runtime&amp;quot;,&lt;br /&gt;
    &amp;quot;map_file&amp;quot;: &amp;quot;USS_Runtime.dmm&amp;quot;,&lt;br /&gt;
	&amp;quot;survivor_types&amp;quot;: [&lt;br /&gt;
        &amp;quot;/datum/equipment_preset/survivor/scientist/lv&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;traits&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Marine Main Ship&amp;quot;: true,&lt;br /&gt;
            &amp;quot;Up&amp;quot;: 1&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Marine Main Ship&amp;quot;: true,&lt;br /&gt;
            &amp;quot;Down&amp;quot;: -1&lt;br /&gt;
        }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;camouflage&amp;quot;: &amp;quot;classic&amp;quot;,&lt;br /&gt;
	&amp;quot;disable_ship_map&amp;quot;: true&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Setting up Git to Commit ===&lt;br /&gt;
In order to be able to commit changes, Git needs to know who you are. This requires an email and a username - in most cases, your username should be the same as your GitHub username. The email address can be either an email you&#039;re okay with people knowing - or the private email provided by GitHub. This can be obtained at [https://github.com/settings/email https://github.com/settings/emails] under the &amp;quot;Keep my email address private&amp;quot; setting. &lt;br /&gt;
&lt;br /&gt;
Then, you need to open a new Terminal window inside Visual Studio Code. Using the top bar, navigate to &#039;Terminal&#039; and &#039;New Terminal&#039;. A window should appear at the bottom of your screen, containing a command line interface. Run the following commands:&amp;lt;pre&amp;gt;&lt;br /&gt;
git config --global user.email &amp;quot;your@email.here&amp;quot;&lt;br /&gt;
git config --global user.name &amp;quot;yourusernamehere&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Committing your Changes ===&lt;br /&gt;
&lt;br /&gt;
At the top of the Source Control tab, your modified file should be under “Changes”. Hover over the file name you have modified, and press the Plus symbol - or do the same over the Changes button to “stage” your changes.&lt;br /&gt;
&lt;br /&gt;
[[File:example_commit.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once your changes have been “staged”, they have been selected to be committed. You can give it a commit message on the box with “Message”, and press the tick at the top to commit those changes.&lt;br /&gt;
&lt;br /&gt;
[[File:example_stage.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once this has been completed, you’ve committed your changes locally - but they have not been published to your GitHub fork.&lt;br /&gt;
&lt;br /&gt;
=== Step 6: Publishing to GitHub ===&lt;br /&gt;
&lt;br /&gt;
This is quite simple. On the Source Control tab, you should now see the “Publish Branch”. This will publish your branch, along with your changes, to your fork on GitHub. You can navigate to it on the web to see these changes.&lt;br /&gt;
&lt;br /&gt;
[[File:publish_branch.png|400px]]&lt;br /&gt;
&lt;br /&gt;
If you make any further changes to this branch and commit them, you will see the “Sync Changes” option instead. This does the same thing - “pushing” all your changes to your fork on GitHub.&lt;br /&gt;
&lt;br /&gt;
[[File:example_sync.png|400px]]&lt;br /&gt;
&lt;br /&gt;
== Making a Pull Request ==&lt;br /&gt;
&lt;br /&gt;
A “pull request” is a *request* for the main repository to *pull* - or more accurately, merge - the contents of your branch into the master branch. This process allows for code to be tested and reviewed by maintainers/developers, before being merged into the master branch.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Navigating the Web Interface ===&lt;br /&gt;
&lt;br /&gt;
Head to your repository on GitHub - not the main CM-SS13 repo. Then, click on “master” and type in the name of your branch. &lt;br /&gt;
&lt;br /&gt;
[[File:navigating_github_create_pr.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Hit “Contribute” on the right, and it’ll bring up the option to Create Pull Request. Clicking on this automatically sets the merge as being from your branch to the master branch at the main CM-SS13 repository.&lt;br /&gt;
&lt;br /&gt;
[[File:auto_merge.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Hopefully, there&#039;s no merge conflicts, and it gives the happy green &amp;quot;Able to automatically merge&amp;quot; - however, if someone else has changed code you&#039;re changing in your PR after you made the branch for this feature, you&#039;ll need to manually deconflict the files. Read on for more about merge conflicts.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Creating the Pull Request ===&lt;br /&gt;
&lt;br /&gt;
Give your PR a good title - this will be the message of the commit to the main branch containing all your code.&lt;br /&gt;
&lt;br /&gt;
[[File:title.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, fill in the PR description, including a descriptive changelog. Put your BYOND username next to the first :cl: to ensure you are accurately credited.&lt;br /&gt;
&lt;br /&gt;
[[File:changelog.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, hit Create Pull Request (or don’t, if you’re uselessly changing one description as a test). &lt;br /&gt;
&lt;br /&gt;
[[File:create_pull_request.png|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Code Review ===&lt;br /&gt;
&lt;br /&gt;
GitHub will automatically run some tests on your code, which may fail, resulting in you having to change your code. The developers will review your code, and may also request changes. That&#039;ll look like this.&lt;br /&gt;
&lt;br /&gt;
[[File:github_checks.png|800px]]&lt;br /&gt;
&lt;br /&gt;
In order to carry out the changes, simply make the changes on your branch on your local repository, and press “Sync Changes”, this will automatically update the PR.&lt;br /&gt;
&lt;br /&gt;
If a developer has marked your PR as a draft, you will have to mark it as being ready for review. You can do this at the bottom of the web interface on your PR.&lt;br /&gt;
&lt;br /&gt;
== Staying in Sync ==&lt;br /&gt;
&lt;br /&gt;
As other PRs are merged into the repository, your fork will slowly become out of date. This will become an issue over time, as you modify code that has been changed by another recent PR, and you find conflicts that didn’t need to happen.&lt;br /&gt;
&lt;br /&gt;
To avoid this, regularly go to your master branch of your fork on the web interface, and press “Sync fork” and &amp;quot;Update branch&amp;quot;, to add all the commits recently merged to your fork.&lt;br /&gt;
&lt;br /&gt;
[[File:update_branch.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, on Visual Studio Code, you can “Sync Changes” to update your local copy of the master branch.&lt;br /&gt;
&lt;br /&gt;
Do this regularly to ensure you don’t fall out of date with any changes.&lt;br /&gt;
&lt;br /&gt;
= Appendix =&lt;br /&gt;
&lt;br /&gt;
== Merge Conflicts ==&lt;br /&gt;
When your PR is conflicting with master, this means that there are places that both you and someone else have both altered and a decision has to be made to decide what that file or line of code should be. To begin the process to resolve this, you need to merge upstream/master into your branch. (VSC Source control has an Add Remotes option in the Remotes section of Source Control where you can add the link to the .git of the main repository). This will initiate any merge hooks automatically explained more below.&lt;br /&gt;
&lt;br /&gt;
=== Mapping Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Sometimes mapping conflicts can be handled automatically via a merge hook. Install the git hooks in tools/hooks by hitting “Install.bat” (Windows) or &amp;quot;Install.sh&amp;quot; (Linux). Should a single tile be altered by both you and someone else, a mapping conflict marker will be placed in that location that will cause lint errors and yell in chat. This will help during mapping conflicts by marking areas that are conflicting, allowing you to open an editor (such as StrongDMM) to look for the conflict markers and resolve the issue.&lt;br /&gt;
&lt;br /&gt;
Should a conflict like this occur, you should then open the map editor (StrongDMM) and look for the conflict markers. In text, it will look like the conflict has entirely disappeared - but it *hasn’t* - the MapMerger has just automatically dumped everything from the conflicting branches together in a mess that *you* have to fix.&lt;br /&gt;
&lt;br /&gt;
=== DMI (Icon File) Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Just like with mapping conflicts these conflicts can often be handled automatically via a merge hook. Install the git hooks in tools/hooks by hitting “Install.bat” (Windows) or &amp;quot;Install.sh&amp;quot; (Linux). More often than not any new icons that someone else added will just be appended to the end of the file. But if both you and someone else alter the same icon_state of something, that will have to be manually resolved. In this situation just open up the DMI file in either Dreamaker or VSC&#039;s DMI Editor and adjust it as needed. Ultimately use the IDB (Icon Diff Bot) checks to double check you haven&#039;t unintentionally removed a icon_state someone added.&lt;br /&gt;
&lt;br /&gt;
=== Code Conflicts ===&lt;br /&gt;
&lt;br /&gt;
There is no hook to automatically handle code conflicts. Find the conflict markers in conflicting files indicated with a bunch of &amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; and &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;. VSC should make this obvious, and in some cases, deconflict the files itself. Where it fails to do so, you will need to remove the conflict markers and add the code together from both branches as applicable. Be sure to test if the changes work. For more information see https://code.visualstudio.com/docs/sourcecontrol/overview#_merge-conflicts&lt;br /&gt;
&lt;br /&gt;
== Glossary ==&lt;br /&gt;
&lt;br /&gt;
=== Branch ===&lt;br /&gt;
&lt;br /&gt;
A version of your fork that you can freely commit changes to without affecting other branches.&lt;br /&gt;
&lt;br /&gt;
=== Commit ===&lt;br /&gt;
&lt;br /&gt;
A change to a branch, can be of any size from a single space added to one file to completely rewriting the entire repository.&lt;br /&gt;
&lt;br /&gt;
=== Fork ===&lt;br /&gt;
&lt;br /&gt;
A copy of the CM-SS13 repository that you own, and can make whatever changes to that you like without impacting the main repo.&lt;br /&gt;
&lt;br /&gt;
=== Repository ===&lt;br /&gt;
&lt;br /&gt;
Often known as a repo. Ours contains all of the code, maps and assets for CM-SS13.&lt;br /&gt;
&lt;br /&gt;
=== PR ===&lt;br /&gt;
&lt;br /&gt;
Pull Request - a request for the main repository to merge the changes present in one of the branches of your fork into the master branch of the main, upstream repository.&lt;br /&gt;
&lt;br /&gt;
=== Merge ===&lt;br /&gt;
&lt;br /&gt;
Where all the commits from a branch are applied to another branch. For example, merging your origin branch containing a new feature to an upstream master branch.&lt;br /&gt;
&lt;br /&gt;
=== Merge Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Where two branches from separate contributors have touched the same code, when one of them is merged, you will have a conflict preventing automatic merging. This involves manually fitting the code together, allowing both changes to exist without overwriting either.&lt;br /&gt;
&lt;br /&gt;
=== Remote ===&lt;br /&gt;
&lt;br /&gt;
A remote is a version of your repository that is not stored on your computer - such as on GitHub. This includes both your fork and the upstream, main CM-SS13 repo.&lt;br /&gt;
&lt;br /&gt;
=== Origin ===&lt;br /&gt;
&lt;br /&gt;
This will be your fork of the CM-SS13 repository.&lt;br /&gt;
&lt;br /&gt;
=== Upstream ===&lt;br /&gt;
&lt;br /&gt;
The upstream of your fork will be the main CM-SS13 repo. Think of changes flowing down a stream from the main repo to your fork when you “Fetch Upstream”.&lt;br /&gt;
&lt;br /&gt;
=== Git ===&lt;br /&gt;
&lt;br /&gt;
The version control system used by CM-SS13, allowing us to synchronise changes being made by many different contributor - and easily go back if something goes wrong.&lt;br /&gt;
&lt;br /&gt;
=== Diff ===&lt;br /&gt;
&lt;br /&gt;
Shows the changes between the current copy of the code and the new code that you have committed.&lt;br /&gt;
&lt;br /&gt;
=== VSC / VS Code === &lt;br /&gt;
&lt;br /&gt;
Visual Studio Code, the text editor we use for DM development.&lt;/div&gt;</summary>
		<author><name>Drulikar</name></author>
	</entry>
	<entry>
		<id>https://cm-ss13.com/w/index.php?title=Guide_to_Git&amp;diff=38172</id>
		<title>Guide to Git</title>
		<link rel="alternate" type="text/html" href="https://cm-ss13.com/w/index.php?title=Guide_to_Git&amp;diff=38172"/>
		<updated>2025-07-14T03:34:47Z</updated>

		<summary type="html">&lt;p&gt;Drulikar: Update uss runtime json per https://github.com/cmss13-devs/cmss13/pull/9848&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Guide to Git = &lt;br /&gt;
&lt;br /&gt;
== Setting up your Coding Environment ==&lt;br /&gt;
&lt;br /&gt;
Though you can use DreamMaker, and external Git software, for modifying your code and maps, all modern SS13 tooling is set up for Visual Studio Code, so it is highly recommended. You can jump to variable definitions, procs and atoms with ease.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Downloading Visual Studio Code ===&lt;br /&gt;
&lt;br /&gt;
Visual Studio Code is a free code editor (from Microsoft) that you can use to edit, test and publish your code to GitHub. &lt;br /&gt;
&lt;br /&gt;
You can download it from https://code.visualstudio.com/ and run the installer.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Forking the Repository === &lt;br /&gt;
&lt;br /&gt;
Go to https://github.com/cmss13-devs/cmss13, and at the top right, hit “Fork” - you’ll need a GitHub account for this.&lt;br /&gt;
&lt;br /&gt;
[[File:fork.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Follow the prompts that come up, and you’ll have your own copy of the code on GitHub.&lt;br /&gt;
&lt;br /&gt;
You will also likely want to disable actions running on your fork:&lt;br /&gt;
&lt;br /&gt;
[[File:Fork Actions Settings.png|alt=You can disable actions from running on your fork by going to settings, general under actions, disable actions, and save.|frameless|655x655px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Download Git === &lt;br /&gt;
&lt;br /&gt;
You’ll need Git installed to make any changes to the repository. Download it from https://git-scm.com/downloads. &lt;br /&gt;
&lt;br /&gt;
Then, on Visual Studio Code, under the Source Control tab on the left bar - the third option down, you should be presented with the option to “Clone Repository”. &lt;br /&gt;
&lt;br /&gt;
[[File:clone_repo.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Paste the URL of your fork into the box that pops up - this should be in the format of https://github.com/[YOURUSERNAME]/cmss13. Select a folder to download the repo into, and let it run. It may take awhile.&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Download Extensions ===&lt;br /&gt;
&lt;br /&gt;
These extensions to Visual Studio Code will allow the program to read DreamMaker code intelligently and allow you to navigate through the code faster. &lt;br /&gt;
&lt;br /&gt;
You can get them by clicking on the extensions tab - probably the fourth or fifth option, it looks like three boxes with a fourth being added - and downloading all the “Recommended” extensions.&lt;br /&gt;
&lt;br /&gt;
Also - search for and install GitLens. It makes using the source control features of Visual Studio Code much easier.&lt;br /&gt;
&lt;br /&gt;
[[File:recommended_extensions.png|400px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Configuring Language Client ===&lt;br /&gt;
Debugging features like breakpoints rely on the language server to be installed and working.&lt;br /&gt;
&lt;br /&gt;
* Search for &amp;quot;@enabled Language Client&amp;quot; in extensions&lt;br /&gt;
* Click the gear and then Extension Settings&lt;br /&gt;
* Enable Auto Update&lt;br /&gt;
* Add/update the Byond Path to your BYOND installation folder (will be a folder with unist.exe and 6 other folders)&lt;br /&gt;
* Restart Visual Studio Code&lt;br /&gt;
&lt;br /&gt;
Auto Update will ensure you have the latest version of the language server installed in a temporary folder for Visual Studio Code. A correct path to the BYOND installation folder will allow the language server to compile and parse the code.&lt;br /&gt;
&lt;br /&gt;
NOTE: As of writing, BYOND 515.1633+ is functional with the language client server (dm-langserver 1.8.0+19 using auxtools commit: v2.3.3).&lt;br /&gt;
[[File:Language Client Settings.png|655x655px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 6: Finishing Up ===&lt;br /&gt;
&lt;br /&gt;
You’ve now got a complete clone of the CM-SS13 codebase on your local computer!&lt;br /&gt;
&lt;br /&gt;
== Making a Change ==&lt;br /&gt;
&lt;br /&gt;
All changes you make to the code must be done on a new branch. &lt;br /&gt;
&lt;br /&gt;
A branch is another version of your codebase - made from your “master” branch - which should be identical to the “master” branch present on the main repo - which changes can be made to without affecting your “master” branch.&lt;br /&gt;
&lt;br /&gt;
A “commit” is a save of your changes to the code you’ve made. Every time you “commit” your changes to the branch, you are saving all your changes made so far. All code must be “committed” before it can be sent to the main repository.&lt;br /&gt;
&lt;br /&gt;
To start with making changes, you must make a new branch on your forked repository, from your master branch. Your master branch should never be committed to, and should be a clean state.&lt;br /&gt;
&lt;br /&gt;
Every PR you make should have a new branch. This allows for commits you make on different branches to not affect your other branches, letting you work on multiple projects at once.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Making a New Branch ===&lt;br /&gt;
&lt;br /&gt;
Press Control + Shift + P to bring up the Command Pallet. This allows you to control Visual Studio Control easily, but we want the command “Create branch from...”. Type that in and press enter to run it. Give your branch a name - like new-helmet. Select which branch to make it from - that will be your master branch. &lt;br /&gt;
&lt;br /&gt;
[[File:create_branch_from.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Then, switch to this branch. You can do this at the bottom of the Source Control tab, under the Branches title - you might have to click on it to show all your branches. Right click on your new branch, and select the option to switch to it.&lt;br /&gt;
&lt;br /&gt;
[[File:switch_branch.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Now, you can make whatever changes you like, and you can commit them to this branch without altering your master branch.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Modifying the Code ===&lt;br /&gt;
&lt;br /&gt;
Now, if you make any change to any file within the repo, Git will notice and add it to the modified files in the Source Control tab.&lt;br /&gt;
&lt;br /&gt;
You can make a simple change - such as altering an item description - just to see your code changes reflected in game. To find an item, use the Search tab on the left - the magnifying glass - and type in the name or description if the item as it is in game.&lt;br /&gt;
&lt;br /&gt;
[[File:searching.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once you’ve made this change, it’ll be noticed at the top of the Source Control tab.&lt;br /&gt;
&lt;br /&gt;
[[File:changes.png|400px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Testing your Code ===&lt;br /&gt;
&lt;br /&gt;
Press F5 - this will start your code with the debugger attached. This will automatically pause the server and tell you when an error - usually known as a runtime - occurs.&lt;br /&gt;
&lt;br /&gt;
You can press Control-F5 to start without the debugger.&lt;br /&gt;
&lt;br /&gt;
Then, at the bottom right of your Windows interface, click the chevron to view your hidden processes. Click on the green DreamDaemon circle, and you can see the server process that has booted up. Then, on the World tab at the top, press Join. This will log you in to the server, where you will automatically have full Admin permissions.&lt;br /&gt;
&lt;br /&gt;
Find your item in game - or spawn it in with the admin game-panel - and it should have the changes you’ve made in the code. If it doesn’t- you probably didn’t save the file. Terminate the server using the stop button on Visual Studio Code or by right clicking on the DreamDaemon process and pressing Stop.&lt;br /&gt;
&lt;br /&gt;
If you are making a change that doesn&#039;t require the ground map or ship map loaded, you can speed up the loading process by using a streamlined next_map.json file in your data folder to load USS Runtime instead:&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;map_name&amp;quot;: &amp;quot;USS Runtime&amp;quot;,&lt;br /&gt;
    &amp;quot;map_path&amp;quot;: &amp;quot;map_files/USS_Runtime&amp;quot;,&lt;br /&gt;
    &amp;quot;map_file&amp;quot;: &amp;quot;USS_Runtime.dmm&amp;quot;,&lt;br /&gt;
	&amp;quot;survivor_types&amp;quot;: [&lt;br /&gt;
        &amp;quot;/datum/equipment_preset/survivor/scientist/lv&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;traits&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Marine Main Ship&amp;quot;: true,&lt;br /&gt;
            &amp;quot;Up&amp;quot;: 1&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Marine Main Ship&amp;quot;: true,&lt;br /&gt;
            &amp;quot;Down&amp;quot;: -1&lt;br /&gt;
        }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;camouflage&amp;quot;: &amp;quot;classic&amp;quot;,&lt;br /&gt;
	&amp;quot;disable_ship_map&amp;quot;: true&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Setting up Git to Commit ===&lt;br /&gt;
In order to be able to commit changes, Git needs to know who you are. This requires an email and a username - in most cases, your username should be the same as your GitHub username. The email address can be either an email you&#039;re okay with people knowing - or the private email provided by GitHub. This can be obtained at [https://github.com/settings/email https://github.com/settings/emails] under the &amp;quot;Keep my email address private&amp;quot; setting. &lt;br /&gt;
&lt;br /&gt;
Then, you need to open a new Terminal window inside Visual Studio Code. Using the top bar, navigate to &#039;Terminal&#039; and &#039;New Terminal&#039;. A window should appear at the bottom of your screen, containing a command line interface. Run the following commands:&amp;lt;pre&amp;gt;&lt;br /&gt;
git config --global user.email &amp;quot;your@email.here&amp;quot;&lt;br /&gt;
git config --global user.name &amp;quot;yourusernamehere&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Committing your Changes ===&lt;br /&gt;
&lt;br /&gt;
At the top of the Source Control tab, your modified file should be under “Changes”. Hover over the file name you have modified, and press the Plus symbol - or do the same over the Changes button to “stage” your changes.&lt;br /&gt;
&lt;br /&gt;
[[File:example_commit.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once your changes have been “staged”, they have been selected to be committed. You can give it a commit message on the box with “Message”, and press the tick at the top to commit those changes.&lt;br /&gt;
&lt;br /&gt;
[[File:example_stage.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once this has been completed, you’ve committed your changes locally - but they have not been published to your GitHub fork.&lt;br /&gt;
&lt;br /&gt;
=== Step 6: Publishing to GitHub ===&lt;br /&gt;
&lt;br /&gt;
This is quite simple. On the Source Control tab, you should now see the “Publish Branch”. This will publish your branch, along with your changes, to your fork on GitHub. You can navigate to it on the web to see these changes.&lt;br /&gt;
&lt;br /&gt;
[[File:publish_branch.png|400px]]&lt;br /&gt;
&lt;br /&gt;
If you make any further changes to this branch and commit them, you will see the “Sync Changes” option instead. This does the same thing - “pushing” all your changes to your fork on GitHub.&lt;br /&gt;
&lt;br /&gt;
[[File:example_sync.png|400px]]&lt;br /&gt;
&lt;br /&gt;
== Making a Pull Request ==&lt;br /&gt;
&lt;br /&gt;
A “pull request” is a *request* for the main repository to *pull* - or more accurately, merge - the contents of your branch into the master branch. This process allows for code to be tested and reviewed by maintainers/developers, before being merged into the master branch.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Navigating the Web Interface ===&lt;br /&gt;
&lt;br /&gt;
Head to your repository on GitHub - not the main CM-SS13 repo. Then, click on “master” and type in the name of your branch. &lt;br /&gt;
&lt;br /&gt;
[[File:navigating_github_create_pr.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Hit “Contribute” on the right, and it’ll bring up the option to Create Pull Request. Clicking on this automatically sets the merge as being from your branch to the master branch at the main CM-SS13 repository.&lt;br /&gt;
&lt;br /&gt;
[[File:auto_merge.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Hopefully, there&#039;s no merge conflicts, and it gives the happy green &amp;quot;Able to automatically merge&amp;quot; - however, if someone else has changed code you&#039;re changing in your PR after you made the branch for this feature, you&#039;ll need to manually deconflict the files. Read on for more about merge conflicts.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Creating the Pull Request ===&lt;br /&gt;
&lt;br /&gt;
Give your PR a good title - this will be the message of the commit to the main branch containing all your code.&lt;br /&gt;
&lt;br /&gt;
[[File:title.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, fill in the PR description, including a descriptive changelog. Put your BYOND username next to the first :cl: to ensure you are accurately credited.&lt;br /&gt;
&lt;br /&gt;
[[File:changelog.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, hit Create Pull Request (or don’t, if you’re uselessly changing one description as a test). &lt;br /&gt;
&lt;br /&gt;
[[File:create_pull_request.png|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Code Review ===&lt;br /&gt;
&lt;br /&gt;
GitHub will automatically run some tests on your code, which may fail, resulting in you having to change your code. The developers will review your code, and may also request changes. That&#039;ll look like this.&lt;br /&gt;
&lt;br /&gt;
[[File:github_checks.png|800px]]&lt;br /&gt;
&lt;br /&gt;
In order to carry out the changes, simply make the changes on your branch on your local repository, and press “Sync Changes”, this will automatically update the PR.&lt;br /&gt;
&lt;br /&gt;
If a developer has marked your PR as a draft, you will have to mark it as being ready for review. You can do this at the bottom of the web interface on your PR.&lt;br /&gt;
&lt;br /&gt;
== Staying in Sync ==&lt;br /&gt;
&lt;br /&gt;
As other PRs are merged into the repository, your branch will slowly become out of date. This will become an issue over time, as you modify code that has been changed by another recent PR, and you find conflicts that didn’t need to happen.&lt;br /&gt;
&lt;br /&gt;
To avoid this, regularly go to your master branch of your fork on the web interface, and press “Sync fork” and &amp;quot;Update branch&amp;quot;, to add all the commits recently merged to your fork.&lt;br /&gt;
&lt;br /&gt;
[[File:update_branch.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, on Visual Studio Code, you can “Sync Changes” to update your local copy of the master branch.&lt;br /&gt;
&lt;br /&gt;
Do this regularly to ensure you don’t fall out of date with any changes.&lt;br /&gt;
&lt;br /&gt;
= Appendix =&lt;br /&gt;
&lt;br /&gt;
== Merge Conflicts ==&lt;br /&gt;
When your PR is conflicting with master, this means that there are places that both you and someone else have both altered and a decision has to be made to decide what that file or line of code should be. To begin the process to resolve this, you need to merge upstream/master into your branch. (VSC Source control has an Add Remotes option in the Remotes section of Source Control where you can add the link to the .git of the main repository). This will initiate any merge hooks automatically explained more below.&lt;br /&gt;
&lt;br /&gt;
=== Mapping Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Sometimes mapping conflicts can be handled automatically via a merge hook. Install the git hooks in tools/hooks by hitting “Install.bat” (Windows) or &amp;quot;Install.sh&amp;quot; (Linux). Should a single tile be altered by both you and someone else, a mapping conflict marker will be placed in that location that will cause lint errors and yell in chat. This will help during mapping conflicts by marking areas that are conflicting, allowing you to open an editor (such as StrongDMM) to look for the conflict markers and resolve the issue.&lt;br /&gt;
&lt;br /&gt;
Should a conflict like this occur, you should then open the map editor (StrongDMM) and look for the conflict markers. In text, it will look like the conflict has entirely disappeared - but it *hasn’t* - the MapMerger has just automatically dumped everything from the conflicting branches together in a mess that *you* have to fix.&lt;br /&gt;
&lt;br /&gt;
=== DMI (Icon File) Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Just like with mapping conflicts these conflicts can often be handled automatically via a merge hook. Install the git hooks in tools/hooks by hitting “Install.bat” (Windows) or &amp;quot;Install.sh&amp;quot; (Linux). More often than not any new icons that someone else added will just be appended to the end of the file. But if both you and someone else alter the same icon_state of something, that will have to be manually resolved. In this situation just open up the DMI file in either Dreamaker or VSC&#039;s DMI Editor and adjust it as needed. Ultimately use the IDB (Icon Diff Bot) checks to double check you haven&#039;t unintentionally removed a icon_state someone added.&lt;br /&gt;
&lt;br /&gt;
=== Code Conflicts ===&lt;br /&gt;
&lt;br /&gt;
There is no hook to automatically handle code conflicts. Find the conflict markers in conflicting files indicated with a bunch of &amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; and &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;. VSC should make this obvious, and in some cases, deconflict the files itself. Where it fails to do so, you will need to remove the conflict markers and add the code together from both branches as applicable. Be sure to test if the changes work. For more information see https://code.visualstudio.com/docs/sourcecontrol/overview#_merge-conflicts&lt;br /&gt;
&lt;br /&gt;
== Glossary ==&lt;br /&gt;
&lt;br /&gt;
=== Branch ===&lt;br /&gt;
&lt;br /&gt;
A version of your fork that you can freely commit changes to without affecting other branches.&lt;br /&gt;
&lt;br /&gt;
=== Commit ===&lt;br /&gt;
&lt;br /&gt;
A change to a branch, can be of any size from a single space added to one file to completely rewriting the entire repository.&lt;br /&gt;
&lt;br /&gt;
=== Fork ===&lt;br /&gt;
&lt;br /&gt;
A copy of the CM-SS13 repository that you own, and can make whatever changes to that you like without impacting the main repo.&lt;br /&gt;
&lt;br /&gt;
=== Repository ===&lt;br /&gt;
&lt;br /&gt;
Often known as a repo. Ours contains all of the code, maps and assets for CM-SS13.&lt;br /&gt;
&lt;br /&gt;
=== PR ===&lt;br /&gt;
&lt;br /&gt;
Pull Request - a request for the main repository to merge the changes present in one of the branches of your fork into the master branch of the main, upstream repository.&lt;br /&gt;
&lt;br /&gt;
=== Merge ===&lt;br /&gt;
&lt;br /&gt;
Where all the commits from a branch are applied to another branch. For example, merging your origin branch containing a new feature to an upstream master branch.&lt;br /&gt;
&lt;br /&gt;
=== Merge Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Where two branches from separate contributors have touched the same code, when one of them is merged, you will have a conflict preventing automatic merging. This involves manually fitting the code together, allowing both changes to exist without overwriting either.&lt;br /&gt;
&lt;br /&gt;
=== Remote ===&lt;br /&gt;
&lt;br /&gt;
A remote is a version of your repository that is not stored on your computer - such as on GitHub. This includes both your fork and the upstream, main CM-SS13 repo.&lt;br /&gt;
&lt;br /&gt;
=== Origin ===&lt;br /&gt;
&lt;br /&gt;
This will be your fork of the CM-SS13 repository.&lt;br /&gt;
&lt;br /&gt;
=== Upstream ===&lt;br /&gt;
&lt;br /&gt;
The upstream of your fork will be the main CM-SS13 repo. Think of changes flowing down a stream from the main repo to your fork when you “Fetch Upstream”.&lt;br /&gt;
&lt;br /&gt;
=== Git ===&lt;br /&gt;
&lt;br /&gt;
The version control system used by CM-SS13, allowing us to synchronise changes being made by many different contributor - and easily go back if something goes wrong.&lt;br /&gt;
&lt;br /&gt;
=== Diff ===&lt;br /&gt;
&lt;br /&gt;
Shows the changes between the current copy of the code and the new code that you have committed.&lt;br /&gt;
&lt;br /&gt;
=== VSC / VS Code === &lt;br /&gt;
&lt;br /&gt;
Visual Studio Code, the text editor we use for DM development.&lt;/div&gt;</summary>
		<author><name>Drulikar</name></author>
	</entry>
	<entry>
		<id>https://cm-ss13.com/w/index.php?title=Template:Ability_Finesse_Description&amp;diff=35541</id>
		<title>Template:Ability Finesse Description</title>
		<link rel="alternate" type="text/html" href="https://cm-ss13.com/w/index.php?title=Template:Ability_Finesse_Description&amp;diff=35541"/>
		<updated>2025-02-25T23:25:50Z</updated>

		<summary type="html">&lt;p&gt;Drulikar: Changes from https://github.com/cmss13-devs/cmss13/pull/2244 that never made it to the wiki.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;PASSIVE:&#039;&#039;&#039; By slashing enemies, you temporarily increase your movement speed and you also you apply a tag that changes how your two new tail abilities function.&lt;/div&gt;</summary>
		<author><name>Drulikar</name></author>
	</entry>
	<entry>
		<id>https://cm-ss13.com/w/index.php?title=Doctor&amp;diff=35423</id>
		<title>Doctor</title>
		<link rel="alternate" type="text/html" href="https://cm-ss13.com/w/index.php?title=Doctor&amp;diff=35423"/>
		<updated>2025-02-18T00:47:19Z</updated>

		<summary type="html">&lt;p&gt;Drulikar: /* Field Deployment */  updated per https://github.com/cmss13-devs/cmss13/pull/7857&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{JobPageHeader&lt;br /&gt;
|headerbgcolor = #2175d9&lt;br /&gt;
|headerfontcolor = white&lt;br /&gt;
|stafftype = MEDICAL&lt;br /&gt;
|imagebgcolor = lightblue&lt;br /&gt;
|img = MD.png&lt;br /&gt;
|jobtitle = Almayer Doctor&lt;br /&gt;
|difficulty = Medium&lt;br /&gt;
|rank = Second Lieutenant&lt;br /&gt;
|superior = Chief Medical Officer&lt;br /&gt;
|unlock = One hour as Nurse.&lt;br /&gt;
|duties = Heal severely injured marines, do surgery.&lt;br /&gt;
|guides = [http://cm-ss13.com/wiki/Guide_to_Medicine Guide to Medicine], [http://cm-ss13.com/wiki/Surgery Surgery], [http://cm-ss13.com/wiki/Chemistry Guide to Chemistry]&lt;br /&gt;
|description = You are tasked with keeping the marines healthy and strong, usually in the form of surgery.&amp;lt;br&amp;gt;&lt;br /&gt;
You are also an expert when it comes to medication and treatment. If you do not know what you are doing, adminhelp so a mentor can assist you.&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&amp;quot;Doctor, I can&#039;t feel my legs!&amp;quot;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;quot;I know, we amputated them!&amp;quot;&#039;&#039;&amp;lt;br /&amp;gt;― A Patient and a Doctor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A [[Hospital Corpsman]] can bandage a wounded marine, but sometimes the situation is so bad that the Marine should be taken from combat back to the Almayer. That&#039;s where you, the &#039;&#039;&#039;Almayer Doctor&#039;&#039;&#039; comes, safe in your medbay on the Almayer, you&#039;ll be doing all the things normal field medics can&#039;t do.&lt;br /&gt;
&lt;br /&gt;
== Role ==&lt;br /&gt;
----&lt;br /&gt;
Your job as a &#039;&#039;&#039;Almayer Doctor&#039;&#039;&#039; is &#039;&#039;&#039;to heal what the [[Hospital Corpsman|Hospital Corpsmen]] can&#039;t&#039;&#039;&#039;. You will be responsible for:&lt;br /&gt;
* Treating major wounds and infections&lt;br /&gt;
* Operating on patients in need of major surgeries&lt;br /&gt;
* Concocting medicine as required&lt;br /&gt;
* Handling triage&lt;br /&gt;
&lt;br /&gt;
You answer to the &#039;&#039;&#039;[[Chief Medical Officer]]&#039;&#039;&#039;, and should follow their instructions and advice at all times, however if the  [[Commanding Officer]] gives you an order it takes priority over the Chief Medical Officers. In the event that you are planning to deploy for field surgery remember that the CMO has to agree to send you planetside. You also share a department with the [[Researcher|Research team]], who usually keep to themselves upstairs, but they will occasionally make a medicinal breakthrough.&lt;br /&gt;
&lt;br /&gt;
=== Tools of the Trade ===&lt;br /&gt;
----&lt;br /&gt;
The Almayer doctor is given a number of trusty tools to assist him or her in their duty, which is, being a doctor! These tools include:&lt;br /&gt;
* Two cryogenic cells&lt;br /&gt;
* A chemistry laboratory&lt;br /&gt;
* An autodoc medical system&lt;br /&gt;
* Four operating theaters&lt;br /&gt;
* One sleeper&lt;br /&gt;
* Six cryogenic freezers (For placing players who have left the game into)&lt;br /&gt;
* Four body scanners&lt;br /&gt;
* A ton of medical kits, defibrillators and a bunch of other supplies in the vendors&lt;br /&gt;
* Multiple IVs and a supply of blood bags&lt;br /&gt;
&lt;br /&gt;
=== I&#039;m a doctor! Now what? ===&lt;br /&gt;
----&lt;br /&gt;
At the beginning of each round, you will have 20-30 minutes to prepare the Medbay before injured marines start showing up. During this time, you won&#039;t have many injuries to tend with, so it is best to try to prepare for the flood of casualties in Medbay by doing &#039;common tasks&#039; detailed below. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Common tasks that help improve the effectiveness of your medical environment:&lt;br /&gt;
----&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
[[File:Medbay Cryo Updated.png|thumb|]] &amp;lt;br /&amp;gt;Switch the cryogenic cells on by clicking on each individual tank (circled in yellow) to open the cryogenic interface.The gas cooling system (circled in green) cools the cryogenic cells, while the pressure tank (circled in red) maintains pressure in the cells which is required for them to function effectively. &lt;br /&gt;
You are able to customize the power and target temperature for the cryogenic cells, but the default configuration is the most efficient. (As an additional improvement, you can alter the cryogenic cells individually with different chemicals, loadable by removing the existing beakers and inserting new beakers filled with your designer chemicals.)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[File:IVdrip.png|thumb]]Set up the IV drips. || [[File:Bloodtypes table.jpg|thumb]]&lt;br /&gt;
|IV drips are used to provide patients with blood. To use them, take a blood pack (or a beaker, if you want to inject chemicals) and use it on the IV drip to load it. After loading the IV drip, pull it to be adjacent to your patient and click-and-drag the IV drip to your patient&#039;s body. You should get a message that the IV drip was attached. &#039;&#039;&#039;MAKE SURE THAT THE BLOOD IS COMPATIBLE WITH YOUR PATIENT. (See attached chart)&#039;&#039;&#039; When in a hurry, use O- blood. (all blood types can take O- blood) ||&lt;br /&gt;
|Always unattach the IV drip from the patient if he is about to be moved away. Patients will take minor brute damage if you pull them away while they are still attached. ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Doctor-Chem.png|400px]] Produce Chemicals at the circled red workstation, and at the circled yellow station make them into pills. || Squad medics have access to the medical communications channel through a medical key available in their lockers. They will likely request that you provide them with certain chemicals as a part of their preparation routine; the chemvendors in the lab share energy with eachother, at times the Researcher might help. Always provide these medications in pill form in a labelled pill bottle. You are authorized to distribute requested &amp;lt;b&amp;gt;beneficial&amp;lt;/b&amp;gt; medicine in pill form to Hospital Corpsmen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Please refer to the [http://cm-ss13.com/wiki/Chemistry chemistry guide] for details of what is available to create, please see [[Rules|Server Rules]] &amp;amp; [[Marine Law|Marine Law]] for an idea of what is illegal to distribute. Also understand the [[Standard Operating Procedure]] as it applies to Doctor. &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Medibot.png|64px]] Medibots || As a doctor, you are able to construct medibots. Medibots are automated robots designed to assist in triaging the department, or for quick administration of drugs. By default, their injection is 15 Tricordrazine synthesized inside the medibot itself. To see how create a medibot, click [[Guide_to_construction#Other|here]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Surgery ===&lt;br /&gt;
----&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Prepared-OR.png|400px]] The Upper Left Operating Room, prepared for surgery. Red circle around the surgical tool storage, Yellow circle around the Operating Table || As the round progresses, your main role will be to administer aid to the individuals that visit the Medbay. Since Hospital Corpsman can patch up and resolve minor injuries, marines will typically only visit the Medbay if they have a severe internal injury that requires surgery. As such, it is critical to triage cases properly. Because surgery is a time-consuming process with many separate steps, it is important to be educated on [[Surgery|how to conduct surgery]].  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Field Deployment ===&lt;br /&gt;
----&lt;br /&gt;
Generally, only the Field Doctor will deploy from the Almayer to the FOB &amp;lt;!-- or an APC --&amp;gt; for field surgery duty once the area is secured (as early as second drop). As a field surgeon, you are expected to be performing surgery duties in a secure area, not fighting or performing surgery on the front-line. Your Chief Medical Officer, or the assigned or current Commanding Officer, can still forbid/delay/recall deployment else you may face arrest from the Military Police. Sometimes the CMO forbids people to deploy before Medbay is set up, so be sure to help with making pills, printing limbs, filling IV drips, and filling the cryotubes with chemicals before going down. Ultimately the Medbay on the Almayer takes priority, so if it somehow it becomes unmanned the field surgeon should return to the Almayer if they are informed. Additionally, should a Field Doctor wake up late, they are allowed to deploy to relieve any existing field surgeon.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;!-- You may be deploying on an APC - which lack vital parts of a Medbay. Such as a scanner, autodoc, and surgery table. You are unable to perform surgeries inside of the APC or the Dropship, so make sure to ask the driver to help transport you to a secure location to do so. Make sure you bring a surgical tray, painkillers (such as Oxycodone injectors), and a field surgical bed to perform your surgeries on. Of course, fortunes of war may force you to bail out of the APC, so it doesn&#039;t hurt to bring anesthetics and a field bed anyway. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Many maps also have medical departments on the colony, which if repaired, offer shipside Medbay levels of utility. But be sure wherever you do surgery, you are safe. You lack endurance and firearm training like marines do to defend themselves and others. Most marines don&#039;t mind guarding a doctor performing surgery in a &amp;quot;relatively&amp;quot; secure area. Just be sure to ask nicely.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Practice diagnosing patients without using the big medical scanner - you may not have access to one in the field unless you bring one with you. Do not leave your patients with organ damage, internal bleeding, or broken bones after surgery.&lt;br /&gt;
&lt;br /&gt;
=== General Guidance ===&lt;br /&gt;
----&lt;br /&gt;
Nobody likes to wait in the Medbay while they are injured and unconscious. As a doctor, you need to organize your activities and manage your workflow efficiently in order to process patients quickly and reduce the time that everyone has to wait. This can become especially important if you are the only doctor actively conducting surgery. It&#039;s equally important to have a thick skin, because most players will be irritated that they were injured to start with. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remember that you can restock empty injectors, bottles and medical supplies in the medical vendors by click-dragging them back onto it, or by clicking the injector/bottle in hand to re-fill it. This makes them usable again. Pill bottles are not restockable in this manner.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Your actions will have a large impact upon whether or not the marines will be victorious, because your ability to do surgery influences the number of active marines currently engaged in combating the alien menace. Do your job well, but remember - this is not a chore. Perform your duties at your own pace, and most importantly remember to breathe and have fun. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Efficiency Tips===&lt;br /&gt;
----&lt;br /&gt;
* Before conducting surgery, always check the body scan of the patient and have it readily available in your mind. If you are unable to remember the scan, don&#039;t fret, you can just examine your patient and read up on the saved scan data again for reassurance.&lt;br /&gt;
* If the patient has low blood levels and also requires surgery, give them the IV drip &#039;&#039;&#039;while&#039;&#039;&#039; they are on the surgery table.&lt;br /&gt;
* Print mechanical limbs early on in the surgery procedure, or before patients need them, so they are ready immediately when you need them.&lt;br /&gt;
* Remember that - thanks to improved technology - you just need to put the patient on a surgery table, then drag his sprite onto the surgery table to hook him up with anesthetics for your operation to commence. Be sure though that there&#039;s an anesthetic tank loaded up beforehand!&lt;br /&gt;
* The [[Surgery#Incision_Management_System|&#039;&#039;&#039;Incision Managment Tool&#039;&#039;&#039;]] is a godsend when it comes to state of the art surgery procedures. Use this instead of the usual way of a scalpel and retractor. The IMT does all three steps (incision, retracting and bleeder clamping) in one click!&lt;br /&gt;
* For a single patient, conduct all required surgeries at once. This reduces the number of times you need to pick up surgery tools. &#039;&#039;&#039;For example:&#039;&#039;&#039; If a patient has internal bleeding, heart/lung damage, a broken ribcage and shrapnel, cut open his chest, treat the IB with [[Surgery#Fix-O-Vein|Fix-O-Vein]], use a [[Surgery#Hemostat|Hemostat]] to remove the shrapnel, then use a [[Surgery#Advanced_Trauma_Kit|trauma kit]] for the organ damage, retract the skin, use bone gel and the bone setter for the bones and close him up. Done! You can also refer to this [[Surgery#Combining_Surgeries|Guide]] here!&lt;br /&gt;
* Don&#039;t fight with the other doctors over the operating rooms. Simply wait for it to get vacant instead of arguing with the people around you.&lt;br /&gt;
* If a patient does not succumb to anesthesia when you hook him onto the surgery table, check for a collapsed lung! Patients with this type of injury usually suffer from oxygen damage which prevents them from falling asleep. In that case, administer a dosage of Dexalin+ to bridge the time till you fix the lungs.&lt;br /&gt;
&lt;br /&gt;
===Your Skillset===&lt;br /&gt;
{{MarineSkills&lt;br /&gt;
|endurance=1&lt;br /&gt;
|medical=3&lt;br /&gt;
|surgery=2&lt;br /&gt;
|fireman=1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
To find out about how the skill system works head over to the [http://cm-ss13.com/wiki/The_Skill_System skills system page].&lt;br /&gt;
&lt;br /&gt;
===Guides===&lt;br /&gt;
* [https://cm-ss13.com/forums/showthread.php?1463-Doctor-101 Doctor 101] by grinkgo on 04-14-2019&lt;/div&gt;</summary>
		<author><name>Drulikar</name></author>
	</entry>
	<entry>
		<id>https://cm-ss13.com/w/index.php?title=Field_Doctor&amp;diff=34720</id>
		<title>Field Doctor</title>
		<link rel="alternate" type="text/html" href="https://cm-ss13.com/w/index.php?title=Field_Doctor&amp;diff=34720"/>
		<updated>2025-01-16T03:00:27Z</updated>

		<summary type="html">&lt;p&gt;Drulikar: Initial page for alternate role for Doctor.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Doctor]]&lt;/div&gt;</summary>
		<author><name>Drulikar</name></author>
	</entry>
	<entry>
		<id>https://cm-ss13.com/w/index.php?title=Main_Page&amp;diff=34603</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://cm-ss13.com/w/index.php?title=Main_Page&amp;diff=34603"/>
		<updated>2024-12-31T22:53:47Z</updated>

		<summary type="html">&lt;p&gt;Drulikar: Removed Out of Rotation from Hybrisa link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
{{Main Page/Shared}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:Logo.png|link=http://cm-ss13.com]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=center&amp;gt;CM-SS13 is a heavily modified [http://www.byond.com/games/Exadv1/SpaceStation13 SS13] server inspired by the &#039;&#039;[http://en.wikipedia.org/wiki/Aliens_(film) Aliens]&#039;&#039; film and built from [https://bay.ss13.me/ Baystation 12]. If you&#039;re new to Space Station 13, check out our [[Space Station 13 Guide]]. &amp;lt;b&amp;gt;We are not in any way affiliated with Fox/Disney, or the Aliens IP.&amp;lt;/b&amp;gt; This is an entirely fan-made project.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=center&amp;gt;This wiki is entirely community made - you just need to [https://cm-ss13.com/w/index.php?title=Special:UserLogin&amp;amp;returnto=Main+Page sign up] to get started!&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Main page/search}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;home-content&amp;quot; class=&amp;quot;home-grid&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;home-card-marines&amp;quot; class=&amp;quot;home-card home-card--col2 home-card--row3&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-card__label&amp;quot;&amp;gt;Marines&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[[Marine_Quickstart_Guide | Quickstart Guide]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[[Marines | About the Marines]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[[Responders | Response Teams]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[[Marine_Equipment | Marine Equipment]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[[Requisitions]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[[Standard Operating Procedure]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[[Marine Law]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[[Rank]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;home-card-xenos&amp;quot; class=&amp;quot;home-card home-card--col2 home-card--row3&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-card__label&amp;quot;&amp;gt;Xenos&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[[Xeno_Quickstart_Guide | Quickstart Guide]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[[Aliens | About the Aliens]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[[Hives]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[[Pheromones]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[[Strains]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[https://cm-ss13.com/w/images/5/53/Evolution.png Evolution Diagram] &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;home-card-other-factions&amp;quot; class=&amp;quot;home-card home-card--col2 home-card--row3&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-card__label&amp;quot;&amp;gt;Other Factions&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[[Hunters]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[[UPP]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[[The Colonial Liberation Front | CLF]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[[Weyland Yutani&#039;s PMCs | PMCs]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[[The Colonial Marshal Bureau | Colonial Marshal Bureau]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[[Dutch&#039;s Mercenary Team | Dutch&#039;s Dozen]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[[Military Contractors | VAIPO Mercenaries]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;home-card-guides&amp;quot; class=&amp;quot;home-card home-card--col2 home-card--row3&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-card__label&amp;quot;&amp;gt;Guides&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[https://forum.cm-ss13.com/c/general/guides/22 Gameplay Guides on the Forum]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[[Guide to construction | Construction]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[[Guide_to_Engineering | Engineering]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[[S-52 Fusion Reactor]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[[Guide to Medicine | Medicine]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[[Surgery]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[[Chemistry]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[[Researcher | Research]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[[Guide_to_Paperwork| Paperwork]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[[Cooking]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[[Drinks]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;home-card-maps&amp;quot; class=&amp;quot;home-card home-card--col2 home-card--row3&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-card__label&amp;quot;&amp;gt;Maps&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[https://webmap.affectedarc07.co.uk/ WEBMAPS]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link home-grid--col2&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[http://cm-ss13.com/w/images/5/54/USS_Almayer.png USS Almayer]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[https://webmap.affectedarc07.co.uk/maps/cm/almayer/ Webmap]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[https://cm-ss13.com/w/images/6/6f/LV624.png LV-624]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[https://webmap.affectedarc07.co.uk/maps/cm/lv624/ Webmap]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[http://cm-ss13.com/w/images/1/18/Map_icecolony.png Shivas Snowball]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[https://webmap.affectedarc07.co.uk/maps/cm/shivas/ Webmap]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[http://cm-ss13.com/w/images/7/78/Whiskey_outpost.png Whiskey Outpost]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[https://webmap.affectedarc07.co.uk/maps/cm/whiskey/ Webmap]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[https://cm-ss13.com/w/images/9/9e/Solaris_Ridge.png Solaris Ridge]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[https://webmap.affectedarc07.co.uk/maps/cm/solaris/ Webmap]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[https://cm-ss13.com/w/images/e/e0/Prison_Station_Science_Annex.png  Fiorina Science Annex]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[https://webmap.affectedarc07.co.uk/maps/cm/fiorina/ Webmap]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[https://cm-ss13.com/w/images/9/92/Trijent_Dam.png Trijent Dam]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[https://webmap.affectedarc07.co.uk/maps/cm/trijent/ Webmap]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[https://cm-ss13.com/w/images/2/21/Sorokyne_Wiki_Map.jpg  Sorokyne Strata]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[https://webmap.affectedarc07.co.uk/maps/cm/sorokyne/ Webmap]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[https://cm-ss13.com/w/images/0/0d/Kutjevo_a1.jpg Kutjevo Refinery]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[https://webmap.affectedarc07.co.uk/maps/cm/kutjevo/ Webmap]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[https://cm-ss13.com/w/images/b/bb/C_claim.png Chance&#039;s Claim] &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[https://webmap.affectedarc07.co.uk/maps/cm/lv522/ Webmap]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[https://cm-ss13.com/w/images/9/94/New_Varadero.png New Varadero]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[https://webmap.affectedarc07.co.uk/maps/cm/newvaradero/ Webmap]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[https://cm-ss13.com/w/images/8/88/Ice_V1.png Ice V1]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[https://cm-ss13.com/w/images/c/cf/Ice_Colony_v2.png Ice V2]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[https://cm-ss13.com/w/images/6/60/LV759_Hybrisa_Prospera.png LV-759 Hybrisa Prospera]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[https://cm-ss13.com/w/images/8/8e/CORSAT_Satellite.png CORSAT &amp;lt;span style=&amp;quot;color:red;font-size:0.9em;font-weight:bold&amp;quot;&amp;gt;(Out of Rotation)&amp;lt;/span&amp;gt;]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[http://cm-ss13.com/w/images/4/4c/Map_Prison.png Fiorina Cellblocks &amp;lt;span style=&amp;quot;color:red;font-size:0.9em;font-weight:bold&amp;quot;&amp;gt;(Out of Rotation)&amp;lt;/span&amp;gt;] &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;home-card-other&amp;quot; class=&amp;quot;home-card home-card--col2 home-card--row3&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-card__label&amp;quot;&amp;gt;Other&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[[Rules]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[[Helping Out| Wiki Contribution]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[[Contributing to the Game]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[[FAQ]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[[Lore_Home|Lore]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[[Slang]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[[Alternate Gamemodes]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[[Macros and Hotkeys]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-link__button&amp;quot;&amp;gt;[[Space_Station_13_Guide#Keybinds|Keybindings]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!---&amp;lt;span style=&amp;quot;color:red;font-size:0.7em;font-weight:bold&amp;quot;&amp;gt;(New!)&amp;lt;/span&amp;gt;---&amp;gt;&lt;/div&gt;</summary>
		<author><name>Drulikar</name></author>
	</entry>
	<entry>
		<id>https://cm-ss13.com/w/index.php?title=Guide_to_Git&amp;diff=34496</id>
		<title>Guide to Git</title>
		<link rel="alternate" type="text/html" href="https://cm-ss13.com/w/index.php?title=Guide_to_Git&amp;diff=34496"/>
		<updated>2024-12-16T02:01:12Z</updated>

		<summary type="html">&lt;p&gt;Drulikar: Add mention of USS Runtime for Testing your Code section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Guide to Git = &lt;br /&gt;
&lt;br /&gt;
== Setting up your Coding Environment ==&lt;br /&gt;
&lt;br /&gt;
Though you can use DreamMaker, and external Git software, for modifying your code and maps, all modern SS13 tooling is set up for Visual Studio Code, so it is highly recommended. You can jump to variable definitions, procs and atoms with ease.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Downloading Visual Studio Code ===&lt;br /&gt;
&lt;br /&gt;
Visual Studio Code is a free code editor (from Microsoft) that you can use to edit, test and publish your code to GitHub. &lt;br /&gt;
&lt;br /&gt;
You can download it from https://code.visualstudio.com/ and run the installer.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Forking the Repository === &lt;br /&gt;
&lt;br /&gt;
Go to https://github.com/cmss13-devs/cmss13, and at the top right, hit “Fork” - you’ll need a GitHub account for this.&lt;br /&gt;
&lt;br /&gt;
[[File:fork.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Follow the prompts that come up, and you’ll have your own copy of the code on GitHub.&lt;br /&gt;
&lt;br /&gt;
You will also likely want to disable actions running on your fork:&lt;br /&gt;
&lt;br /&gt;
[[File:Fork Actions Settings.png|alt=You can disable actions from running on your fork by going to settings, general under actions, disable actions, and save.|frameless|655x655px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Download Git === &lt;br /&gt;
&lt;br /&gt;
You’ll need Git installed to make any changes to the repository. Download it from https://git-scm.com/downloads. &lt;br /&gt;
&lt;br /&gt;
Then, on Visual Studio Code, under the Source Control tab on the left bar - the third option down, you should be presented with the option to “Clone Repository”. &lt;br /&gt;
&lt;br /&gt;
[[File:clone_repo.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Paste the URL of your fork into the box that pops up - this should be in the format of https://github.com/[YOURUSERNAME]/cmss13. Select a folder to download the repo into, and let it run. It may take awhile.&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Download Extensions ===&lt;br /&gt;
&lt;br /&gt;
These extensions to Visual Studio Code will allow the program to read DreamMaker code intelligently and allow you to navigate through the code faster. &lt;br /&gt;
&lt;br /&gt;
You can get them by clicking on the extensions tab - probably the fourth or fifth option, it looks like three boxes with a fourth being added - and downloading all the “Recommended” extensions.&lt;br /&gt;
&lt;br /&gt;
Also - search for and install GitLens. It makes using the source control features of Visual Studio Code much easier.&lt;br /&gt;
&lt;br /&gt;
[[File:recommended_extensions.png|400px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Configuring Language Client ===&lt;br /&gt;
Debugging features like breakpoints rely on the language server to be installed and working.&lt;br /&gt;
&lt;br /&gt;
* Search for &amp;quot;@enabled Language Client&amp;quot; in extensions&lt;br /&gt;
* Click the gear and then Extension Settings&lt;br /&gt;
* Enable Auto Update&lt;br /&gt;
* Add/update the Byond Path to your BYOND installation folder (will be a folder with unist.exe and 6 other folders)&lt;br /&gt;
* Restart Visual Studio Code&lt;br /&gt;
&lt;br /&gt;
Auto Update will ensure you have the latest version of the language server installed in a temporary folder for Visual Studio Code. A correct path to the BYOND installation folder will allow the language server to compile and parse the code.&lt;br /&gt;
&lt;br /&gt;
NOTE: As of writing, BYOND 515.1633+ is functional with the language client server (dm-langserver 1.8.0+19 using auxtools commit: v2.3.3).&lt;br /&gt;
[[File:Language Client Settings.png|655x655px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 6: Finishing Up ===&lt;br /&gt;
&lt;br /&gt;
You’ve now got a complete clone of the CM-SS13 codebase on your local computer!&lt;br /&gt;
&lt;br /&gt;
== Making a Change ==&lt;br /&gt;
&lt;br /&gt;
All changes you make to the code must be done on a new branch. &lt;br /&gt;
&lt;br /&gt;
A branch is another version of your codebase - made from your “master” branch - which should be identical to the “master” branch present on the main repo - which changes can be made to without affecting your “master” branch.&lt;br /&gt;
&lt;br /&gt;
A “commit” is a save of your changes to the code you’ve made. Every time you “commit” your changes to the branch, you are saving all your changes made so far. All code must be “committed” before it can be sent to the main repository.&lt;br /&gt;
&lt;br /&gt;
To start with making changes, you must make a new branch on your forked repository, from your master branch. Your master branch should never be committed to, and should be a clean state.&lt;br /&gt;
&lt;br /&gt;
Every PR you make should have a new branch. This allows for commits you make on different branches to not affect your other branches, letting you work on multiple projects at once.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Making a New Branch ===&lt;br /&gt;
&lt;br /&gt;
Press Control + Shift + P to bring up the Command Pallet. This allows you to control Visual Studio Control easily, but we want the command “Create branch from...”. Type that in and press enter to run it. Give your branch a name - like new-helmet. Select which branch to make it from - that will be your master branch. &lt;br /&gt;
&lt;br /&gt;
[[File:create_branch_from.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Then, switch to this branch. You can do this at the bottom of the Source Control tab, under the Branches title - you might have to click on it to show all your branches. Right click on your new branch, and select the option to switch to it.&lt;br /&gt;
&lt;br /&gt;
[[File:switch_branch.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Now, you can make whatever changes you like, and you can commit them to this branch without altering your master branch.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Modifying the Code ===&lt;br /&gt;
&lt;br /&gt;
Now, if you make any change to any file within the repo, Git will notice and add it to the modified files in the Source Control tab.&lt;br /&gt;
&lt;br /&gt;
You can make a simple change - such as altering an item description - just to see your code changes reflected in game. To find an item, use the Search tab on the left - the magnifying glass - and type in the name or description if the item as it is in game.&lt;br /&gt;
&lt;br /&gt;
[[File:searching.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once you’ve made this change, it’ll be noticed at the top of the Source Control tab.&lt;br /&gt;
&lt;br /&gt;
[[File:changes.png|400px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Testing your Code ===&lt;br /&gt;
&lt;br /&gt;
Press F5 - this will start your code with the debugger attached. This will automatically pause the server and tell you when an error - usually known as a runtime - occurs.&lt;br /&gt;
&lt;br /&gt;
You can press Control-F5 to start without the debugger.&lt;br /&gt;
&lt;br /&gt;
Then, at the bottom right of your Windows interface, click the chevron to view your hidden processes. Click on the green DreamDaemon circle, and you can see the server process that has booted up. Then, on the World tab at the top, press Join. This will log you in to the server, where you will automatically have full Admin permissions.&lt;br /&gt;
&lt;br /&gt;
Find your item in game - or spawn it in with the admin game-panel - and it should have the changes you’ve made in the code. If it doesn’t- you probably didn’t save the file. Terminate the server using the stop button on Visual Studio Code or by right clicking on the DreamDaemon process and pressing Stop.&lt;br /&gt;
&lt;br /&gt;
If you are making a change that doesn&#039;t require the ground map or ship map loaded, you can speed up the loading process by using a streamlined next_map.json file in your data folder to load USS Runtime instead:&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;map_name&amp;quot;: &amp;quot;USS Runtime&amp;quot;,&lt;br /&gt;
    &amp;quot;map_path&amp;quot;: &amp;quot;map_files/USS_Runtime&amp;quot;,&lt;br /&gt;
    &amp;quot;map_file&amp;quot;: &amp;quot;USS_Runtime.dmm&amp;quot;,&lt;br /&gt;
	&amp;quot;survivor_types&amp;quot;: [&lt;br /&gt;
        &amp;quot;/datum/equipment_preset/survivor/scientist/lv&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;traits&amp;quot;: [{&amp;quot;Marine Main Ship&amp;quot;: true}],&lt;br /&gt;
	&amp;quot;disable_ship_map&amp;quot;: true&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Setting up Git to Commit ===&lt;br /&gt;
In order to be able to commit changes, Git needs to know who you are. This requires an email and a username - in most cases, your username should be the same as your GitHub username. The email address can be either an email you&#039;re okay with people knowing - or the private email provided by GitHub. This can be obtained at [https://github.com/settings/email https://github.com/settings/emails] under the &amp;quot;Keep my email address private&amp;quot; setting. &lt;br /&gt;
&lt;br /&gt;
Then, you need to open a new Terminal window inside Visual Studio Code. Using the top bar, navigate to &#039;Terminal&#039; and &#039;New Terminal&#039;. A window should appear at the bottom of your screen, containing a command line interface. Run the following commands:&amp;lt;pre&amp;gt;&lt;br /&gt;
git config --global user.email &amp;quot;your@email.here&amp;quot;&lt;br /&gt;
git config --global user.name &amp;quot;yourusernamehere&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Committing your Changes ===&lt;br /&gt;
&lt;br /&gt;
At the top of the Source Control tab, your modified file should be under “Changes”. Hover over the file name you have modified, and press the Plus symbol - or do the same over the Changes button to “stage” your changes.&lt;br /&gt;
&lt;br /&gt;
[[File:example_commit.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once your changes have been “staged”, they have been selected to be committed. You can give it a commit message on the box with “Message”, and press the tick at the top to commit those changes.&lt;br /&gt;
&lt;br /&gt;
[[File:example_stage.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once this has been completed, you’ve committed your changes locally - but they have not been published to your GitHub fork.&lt;br /&gt;
&lt;br /&gt;
=== Step 6: Publishing to GitHub ===&lt;br /&gt;
&lt;br /&gt;
This is quite simple. On the Source Control tab, you should now see the “Publish Branch”. This will publish your branch, along with your changes, to your fork on GitHub. You can navigate to it on the web to see these changes.&lt;br /&gt;
&lt;br /&gt;
[[File:publish_branch.png|400px]]&lt;br /&gt;
&lt;br /&gt;
If you make any further changes to this branch and commit them, you will see the “Sync Changes” option instead. This does the same thing - “pushing” all your changes to your fork on GitHub.&lt;br /&gt;
&lt;br /&gt;
[[File:example_sync.png|400px]]&lt;br /&gt;
&lt;br /&gt;
== Making a Pull Request ==&lt;br /&gt;
&lt;br /&gt;
A “pull request” is a *request* for the main repository to *pull* - or more accurately, merge - the contents of your branch into the master branch. This process allows for code to be tested and reviewed by maintainers/developers, before being merged into the master branch.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Navigating the Web Interface ===&lt;br /&gt;
&lt;br /&gt;
Head to your repository on GitHub - not the main CM-SS13 repo. Then, click on “master” and type in the name of your branch. &lt;br /&gt;
&lt;br /&gt;
[[File:navigating_github_create_pr.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Hit “Contribute” on the right, and it’ll bring up the option to Create Pull Request. Clicking on this automatically sets the merge as being from your branch to the master branch at the main CM-SS13 repository.&lt;br /&gt;
&lt;br /&gt;
[[File:auto_merge.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Hopefully, there&#039;s no merge conflicts, and it gives the happy green &amp;quot;Able to automatically merge&amp;quot; - however, if someone else has changed code you&#039;re changing in your PR after you made the branch for this feature, you&#039;ll need to manually deconflict the files. Read on for more about merge conflicts.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Creating the Pull Request ===&lt;br /&gt;
&lt;br /&gt;
Give your PR a good title - this will be the message of the commit to the main branch containing all your code.&lt;br /&gt;
&lt;br /&gt;
[[File:title.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, fill in the PR description, including a descriptive changelog. Put your BYOND username next to the first :cl: to ensure you are accurately credited.&lt;br /&gt;
&lt;br /&gt;
[[File:changelog.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, hit Create Pull Request (or don’t, if you’re uselessly changing one description as a test). &lt;br /&gt;
&lt;br /&gt;
[[File:create_pull_request.png|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Code Review ===&lt;br /&gt;
&lt;br /&gt;
GitHub will automatically run some tests on your code, which may fail, resulting in you having to change your code. The developers will review your code, and may also request changes. That&#039;ll look like this.&lt;br /&gt;
&lt;br /&gt;
[[File:github_checks.png|800px]]&lt;br /&gt;
&lt;br /&gt;
In order to carry out the changes, simply make the changes on your branch on your local repository, and press “Sync Changes”, this will automatically update the PR.&lt;br /&gt;
&lt;br /&gt;
If a developer has marked your PR as a draft, you will have to mark it as being ready for review. You can do this at the bottom of the web interface on your PR.&lt;br /&gt;
&lt;br /&gt;
== Staying in Sync ==&lt;br /&gt;
&lt;br /&gt;
As other PRs are merged into the repository, your branch will slowly become out of date. This will become an issue over time, as you modify code that has been changed by another recent PR, and you find conflicts that didn’t need to happen.&lt;br /&gt;
&lt;br /&gt;
To avoid this, regularly go to your master branch of your fork on the web interface, and press “Sync fork” and &amp;quot;Update branch&amp;quot;, to add all the commits recently merged to your fork.&lt;br /&gt;
&lt;br /&gt;
[[File:update_branch.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, on Visual Studio Code, you can “Sync Changes” to update your local copy of the master branch.&lt;br /&gt;
&lt;br /&gt;
Do this regularly to ensure you don’t fall out of date with any changes.&lt;br /&gt;
&lt;br /&gt;
= Appendix =&lt;br /&gt;
&lt;br /&gt;
== Merge Conflicts ==&lt;br /&gt;
When your PR is conflicting with master, this means that there are places that both you and someone else have both altered and a decision has to be made to decide what that file or line of code should be. To begin the process to resolve this, you need to merge upstream/master into your branch. (VSC Source control has an Add Remotes option in the Remotes section of Source Control where you can add the link to the .git of the main repository). This will initiate any merge hooks automatically explained more below.&lt;br /&gt;
&lt;br /&gt;
=== Mapping Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Sometimes mapping conflicts can be handled automatically via a merge hook. Install the git hooks in tools/hooks by hitting “Install.bat” (Windows) or &amp;quot;Install.sh&amp;quot; (Linux). Should a single tile be altered by both you and someone else, a mapping conflict marker will be placed in that location that will cause lint errors and yell in chat. This will help during mapping conflicts by marking areas that are conflicting, allowing you to open an editor (such as StrongDMM) to look for the conflict markers and resolve the issue.&lt;br /&gt;
&lt;br /&gt;
Should a conflict like this occur, you should then open the map editor (StrongDMM) and look for the conflict markers. In text, it will look like the conflict has entirely disappeared - but it *hasn’t* - the MapMerger has just automatically dumped everything from the conflicting branches together in a mess that *you* have to fix.&lt;br /&gt;
&lt;br /&gt;
=== DMI (Icon File) Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Just like with mapping conflicts these conflicts can often be handled automatically via a merge hook. Install the git hooks in tools/hooks by hitting “Install.bat” (Windows) or &amp;quot;Install.sh&amp;quot; (Linux). More often than not any new icons that someone else added will just be appended to the end of the file. But if both you and someone else alter the same icon_state of something, that will have to be manually resolved. In this situation just open up the DMI file in either Dreamaker or VSC&#039;s DMI Editor and adjust it as needed. Ultimately use the IDB (Icon Diff Bot) checks to double check you haven&#039;t unintentionally removed a icon_state someone added.&lt;br /&gt;
&lt;br /&gt;
=== Code Conflicts ===&lt;br /&gt;
&lt;br /&gt;
There is no hook to automatically handle code conflicts. Find the conflict markers in conflicting files indicated with a bunch of &amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; and &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;. VSC should make this obvious, and in some cases, deconflict the files itself. Where it fails to do so, you will need to remove the conflict markers and add the code together from both branches as applicable. Be sure to test if the changes work. For more information see https://code.visualstudio.com/docs/sourcecontrol/overview#_merge-conflicts&lt;br /&gt;
&lt;br /&gt;
== Glossary ==&lt;br /&gt;
&lt;br /&gt;
=== Branch ===&lt;br /&gt;
&lt;br /&gt;
A version of your fork that you can freely commit changes to without affecting other branches.&lt;br /&gt;
&lt;br /&gt;
=== Commit ===&lt;br /&gt;
&lt;br /&gt;
A change to a branch, can be of any size from a single space added to one file to completely rewriting the entire repository.&lt;br /&gt;
&lt;br /&gt;
=== Fork ===&lt;br /&gt;
&lt;br /&gt;
A copy of the CM-SS13 repository that you own, and can make whatever changes to that you like without impacting the main repo.&lt;br /&gt;
&lt;br /&gt;
=== Repository ===&lt;br /&gt;
&lt;br /&gt;
Often known as a repo. Ours contains all of the code, maps and assets for CM-SS13.&lt;br /&gt;
&lt;br /&gt;
=== PR ===&lt;br /&gt;
&lt;br /&gt;
Pull Request - a request for the main repository to merge the changes present in one of the branches of your fork into the master branch of the main, upstream repository.&lt;br /&gt;
&lt;br /&gt;
=== Merge ===&lt;br /&gt;
&lt;br /&gt;
Where all the commits from a branch are applied to another branch. For example, merging your origin branch containing a new feature to an upstream master branch.&lt;br /&gt;
&lt;br /&gt;
=== Merge Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Where two branches from separate contributors have touched the same code, when one of them is merged, you will have a conflict preventing automatic merging. This involves manually fitting the code together, allowing both changes to exist without overwriting either.&lt;br /&gt;
&lt;br /&gt;
=== Remote ===&lt;br /&gt;
&lt;br /&gt;
A remote is a version of your repository that is not stored on your computer - such as on GitHub. This includes both your fork and the upstream, main CM-SS13 repo.&lt;br /&gt;
&lt;br /&gt;
=== Origin ===&lt;br /&gt;
&lt;br /&gt;
This will be your fork of the CM-SS13 repository.&lt;br /&gt;
&lt;br /&gt;
=== Upstream ===&lt;br /&gt;
&lt;br /&gt;
The upstream of your fork will be the main CM-SS13 repo. Think of changes flowing down a stream from the main repo to your fork when you “Fetch Upstream”.&lt;br /&gt;
&lt;br /&gt;
=== Git ===&lt;br /&gt;
&lt;br /&gt;
The version control system used by CM-SS13, allowing us to synchronise changes being made by many different contributor - and easily go back if something goes wrong.&lt;br /&gt;
&lt;br /&gt;
=== Diff ===&lt;br /&gt;
&lt;br /&gt;
Shows the changes between the current copy of the code and the new code that you have committed.&lt;br /&gt;
&lt;br /&gt;
=== VSC / VS Code === &lt;br /&gt;
&lt;br /&gt;
Visual Studio Code, the text editor we use for DM development.&lt;/div&gt;</summary>
		<author><name>Drulikar</name></author>
	</entry>
	<entry>
		<id>https://cm-ss13.com/w/index.php?title=CM13_Mapping_Crash_Course&amp;diff=34483</id>
		<title>CM13 Mapping Crash Course</title>
		<link rel="alternate" type="text/html" href="https://cm-ss13.com/w/index.php?title=CM13_Mapping_Crash_Course&amp;diff=34483"/>
		<updated>2024-12-12T04:09:58Z</updated>

		<summary type="html">&lt;p&gt;Drulikar: Changed strongdmm link to the releases page.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Important&lt;br /&gt;
|Title=This page is a work in progress.&lt;br /&gt;
|Note=This page is heavily work in progress. Until it is complete, it is suggested to use this guide. https://hackmd.io/@tgstation/SyVma0dS5#Ingredients&lt;br /&gt;
|Color=Cyan&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= CM13 Mapping Crash Course =&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Disclaimer: BEFORE YOU START!&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
This guide assumes you’re using the most recent of StrongDMM, and already have a working&lt;br /&gt;
knowledge of how to use Git, and are familiar with CM13&#039;s general Git Practices. As long as you&lt;br /&gt;
know how Git works, and you have StrongDMM installed you’re ready to start mapping.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* You can learn about Git, and how to use it [https://cm-ss13.com/wiki/Contributing_to_the_Game#Git &#039;&#039;&#039;here&#039;&#039;&#039;].&lt;br /&gt;
* You can read about CM13’s specific Git Practices when they&#039;re finished.&lt;br /&gt;
* You can get a copy of StrongDMM &#039;&#039;&#039;[https://github.com/SpaiR/StrongDMM/releases here]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you’re looking for the guide on how to make Nightmare Creator (NMC) inserts, it will be here when they&#039;re finished.&lt;br /&gt;
You can still use Byond’s map editor, but we strongly recommend you use StrongDMM for your own sanity. If you’re using Byond’s built in map editor, or fastDMM you’ll need to use Map.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Merge 2 (hyperlink to how-to-use-section at end of this article) before committing your map(s) to&lt;br /&gt;
Git.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Merge Requests with un-merged maps cannot be accepted. You will need to use MM2 or StrongDMM if you want any chance of submitting a mapping change!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For international readers, this guide is written assuming your keyboard is using the US Standard&lt;br /&gt;
QWERTY Layout. Some keystrokes may be different, or not work entirely. Unfortunately,&lt;br /&gt;
StrongDMM (And Byond’s built in map editor) cannot have their hotkeys rebound.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This document is a work in progress, some information may be incorrect, there might be&lt;br /&gt;
typos, and some information outright may be missing.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== StrongDMM Reference ==&lt;br /&gt;
==== File commands ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:70%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Command !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Open Environment... ||&lt;br /&gt;
Opens a dialogue to locate a compiled DME file.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: &#039;&#039;Only one DME may be loaded at a&lt;br /&gt;
time. Loading a DME will close all map&lt;br /&gt;
windows. You will be asked to save all&lt;br /&gt;
unsaved changes.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Recent Environments...|| Opens a side menu listing recently opened DME files.&lt;br /&gt;
|-&lt;br /&gt;
| New Map...&#039;&#039;&#039;Ctrl + N&#039;&#039;&#039; || Creates a new map. You will be asked to enter X and Y bounds, as well as the amount of Z levels to include.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; &#039;&#039;CM13 does not use traditional Z levels, so always enter 1.&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Open Map… &#039;&#039;&#039;Ctrl + O&#039;&#039;&#039; || Opens any map on a local hard-disk.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; &#039;&#039;Opening a map will open a new map&lt;br /&gt;
window, and will not close any other open&lt;br /&gt;
map windows.&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Open Available Map… &#039;&#039;&#039;Ctrl + Shift + O&#039;&#039;&#039;|| Opens any map recognized in the current DME.&lt;br /&gt;
|-&lt;br /&gt;
| Recent Maps || Opens a side menu listing recently opened .dmm files for the currently loaded DME.&lt;br /&gt;
|-&lt;br /&gt;
| Close Map &#039;&#039;&#039;Ctrl + W&#039;&#039;&#039;|| Closes the current map window.&lt;br /&gt;
|-&lt;br /&gt;
| Close All Maps &#039;&#039;&#039;Ctrl + Shift + W&#039;&#039;&#039; || Closes all open map windows.&lt;br /&gt;
|-&lt;br /&gt;
| Save &#039;&#039;&#039;Ctrl + S&#039;&#039;&#039; || Saves current changes to the open map.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note 1:&#039;&#039;&#039; &#039;&#039;This will save the currently opened&lt;br /&gt;
map using the map format selected in the&lt;br /&gt;
Preferences window. Make sure to use the&lt;br /&gt;
&#039;&#039;&#039;TGM format&#039;&#039;&#039; always!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note 2:&#039;&#039;&#039; &#039;&#039;If the currently opened map is of a&lt;br /&gt;
different format than the selected format in&lt;br /&gt;
preferences, it will be saved in the new&lt;br /&gt;
format, even if no changes were made.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Save All &#039;&#039;&#039;Ctrl + Shift + S&#039;&#039;&#039;|| Saves current changes on all maps.&lt;br /&gt;
|-&lt;br /&gt;
| Save As... || Opens a dialogue to save the current map under an alternate title.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; &#039;&#039;The newly saved version will not be automatically opened in the program. The new file will also not be appended with a valid file extension, you will need to type .dmm yourself in the save dialogue&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Preferences...|| Opens the program Preferences window.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Make sure you’re configured for CM13&lt;br /&gt;
properly.&lt;br /&gt;
|-&lt;br /&gt;
| Exit &#039;&#039;&#039;Ctrl + Q&#039;&#039;&#039; || Exits the program.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: &#039;&#039;This closes all map windows, you will&lt;br /&gt;
be asked to save all unsaved changes before&lt;br /&gt;
quit.&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Edit Commands ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:70%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Command !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Undo &#039;&#039;&#039;Ctrl + Z&#039;&#039;&#039;|| Moves a step back in edit history.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: &#039;&#039;One step in edit history is one action,&lt;br /&gt;
click, keystroke, etc, that makes a change to&lt;br /&gt;
the map that can be saved.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Redo &#039;&#039;&#039;Ctrl + Shift + Z&#039;&#039;&#039;|| Moves a step forward in edit history (if there are any available).&lt;br /&gt;
|-&lt;br /&gt;
| Cut &#039;&#039;&#039;Ctrl + X&#039;&#039;&#039;|| Removes the current selection from the map, and adds it to the clipboard.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: &#039;&#039;Cut only removes content from the&lt;br /&gt;
currently enabled layers.&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Copy &#039;&#039;&#039;Ctrl + C&#039;&#039;&#039; || Copies the current selection of the map, and adds it to the clipboard.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: &#039;&#039;Copy only copies content from the&lt;br /&gt;
currently enabled layers.&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Paste &#039;&#039;&#039;Ctrl + V&#039;&#039;&#039; || Pastes the current clipboard at the turf closest to the cursor.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: &#039;&#039;The clipboard is always pasted relative&lt;br /&gt;
to the bottom left corner of the clipboard&lt;br /&gt;
selection.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Delete &#039;&#039;&#039;Delete&#039;&#039;&#039; || Deletes the current selection.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: &#039;&#039;Delete only removes objects from the&lt;br /&gt;
currently enabled layers.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Deselect All &#039;&#039;&#039;Ctrl + D&#039;&#039;&#039;|| Deselects the current selection.&lt;br /&gt;
|-&lt;br /&gt;
| Set Map Size... || Opens a dialogue that allows you to edit the X and Y bounds of the map, as well as add or subtract additional Z layers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note 1&#039;&#039;&#039;: CM13 does not make use of Z layers&lt;br /&gt;
in its map files, as such you shouldn’t need to&lt;br /&gt;
ever touch this option.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note 2&#039;&#039;&#039;: There is no 0,0 coordinate, the origin&lt;br /&gt;
coordinate is 1,1 located in the bottom left&lt;br /&gt;
corner of the map&lt;br /&gt;
|-&lt;br /&gt;
| Find Instance… &#039;&#039;&#039;Ctrl + F&#039;&#039;&#039; || Opens a dialogue that allows you to find all&lt;br /&gt;
instances of a certain typepath. Once an object or instance is found, the search results menu will appear, allowing you to jump to each located object, as well as replace the objects via typepath substitution.&lt;br /&gt;
&lt;br /&gt;
Note: This dialogue also functions as the&lt;br /&gt;
Find and Replace function native to Byond’s&lt;br /&gt;
Map Editor.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Options Command ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:70%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Command !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Layers Filter... || Opens up the Layer Filter menu. Checking the box next to a typepath, enables it. Unmarked boxes are disabled. Permits precise filtering of typepaths.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Layer in mapping terms refers to Areas, Turfs, Objects, and Mobs, and aids in filtering what needs to be viewed while mapping. What actually controls how objects layer in game, is the layer variable locally stored on objects.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Area Ctrl + 1 || Toggles the Areas “Layer” appearing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: The Area Layer is never rendered in&lt;br /&gt;
game, and can obstruct the cursor during the&lt;br /&gt;
mapping process if not disabled.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Turf Ctrl + 2 || Toggles the Turf Layer appearing.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Object Ctrl + 3 || Toggles the Object Layer appearing.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Mob Ctrl + 4  || Toggles the Mob Layer appearing.&lt;br /&gt;
|-&lt;br /&gt;
| Frame Areas || When enabled, draws a white frame at and&lt;br /&gt;
around Area borders, scaling with viewport&lt;br /&gt;
zoom level.&lt;br /&gt;
|-&lt;br /&gt;
| Synchronize Maps View || When enabled, forces all open map windows&lt;br /&gt;
viewport cameras to mirror.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: This is used to match Z levels together&lt;br /&gt;
across map files, since CM13 doesn’t use Z&lt;br /&gt;
levels like this, you probably won’t need this&lt;br /&gt;
option.&lt;br /&gt;
|-&lt;br /&gt;
| Screenshot...  || Opens the Screenshot dialogue, allowing you&lt;br /&gt;
to export either the full view of map, or the&lt;br /&gt;
current selection.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note 1&#039;&#039;&#039;: The “Full” screenshot option does not&lt;br /&gt;
work, and renders a black image. To export&lt;br /&gt;
your entire map, make a full map selection.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note 2&#039;&#039;&#039;: The Area Layer, and white borders&lt;br /&gt;
from the Frame Areas option will not be&lt;br /&gt;
rendered in the screenshot.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note 3&#039;&#039;&#039;: The .png file extension needs to be&lt;br /&gt;
manually typed in the save dialogue. It will&lt;br /&gt;
not auto-append. This does not affect the&lt;br /&gt;
saving process.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Window Commands ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:70%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Command !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Reset Windows &#039;&#039;&#039;F5&#039;&#039;&#039; || Moves all floating UI windows to their default&lt;br /&gt;
positions.&lt;br /&gt;
|-&lt;br /&gt;
| Fullscreen &#039;&#039;&#039;F11&#039;&#039;&#039; || Makes the application fullscreen, or&lt;br /&gt;
windowed if already fullscreen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Help Commands ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:70%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Command !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Changelog... || Opens up the Changelog window.&lt;br /&gt;
|-&lt;br /&gt;
| About... || Displays Copyright Information, Program&lt;br /&gt;
License, and Revision #.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Viewport Controls ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:70%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Command !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Drag Viewport &#039;&#039;&#039;MMB&#039;&#039;&#039;|| Drags the viewport relative to cursor&lt;br /&gt;
movement.&lt;br /&gt;
|-&lt;br /&gt;
| Adjust Viewport ← → ↑ ↓ / &#039;&#039;&#039;Arrow Keys&#039;&#039;&#039;|| Moves the viewport one tile distance in the&lt;br /&gt;
direction pressed regardless of zoom level.&lt;br /&gt;
|-&lt;br /&gt;
| Zoom Viewport &#039;&#039;&#039;Scroll Up / Down, Ctrl + +,&lt;br /&gt;
Ctrl + -&#039;&#039;&#039;|| Zooms the viewport in or out relative to the&lt;br /&gt;
tile closest to the cursor. There are 14 zoom levels.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Mapping Hotkeys ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:70%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Command !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Place Object &#039;&#039;&#039;LMB&#039;&#039;&#039; || Places the Active Object on the tile beneath&lt;br /&gt;
the cursor. The Active Object will be placed&lt;br /&gt;
above all other existing objects of its type. If&lt;br /&gt;
the Active Object is a turf, it will replace the&lt;br /&gt;
current turf on the tile.&lt;br /&gt;
|-&lt;br /&gt;
| Delete Topmost Object &#039;&#039;&#039;Ctrl + LMB&#039;&#039;&#039;|| Deletes the top most object on the clicked&lt;br /&gt;
turf.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Only deletes objects from enabled&lt;br /&gt;
layers.&lt;br /&gt;
|-&lt;br /&gt;
| Make Active Object &#039;&#039;&#039;Shift + LMB&#039;&#039;&#039;|| Makes the currently highlighted object the&lt;br /&gt;
Active Object. Only works on enabled layers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: StrongDMM uses the term Active&lt;br /&gt;
Object and Selected Object interchangeably.&lt;br /&gt;
This guide will use the term Active Object for&lt;br /&gt;
all instances of Selected Object for clarity’s&lt;br /&gt;
sake.&lt;br /&gt;
|-&lt;br /&gt;
| Quick Edit Menu &#039;&#039;&#039;RMB&#039;&#039;&#039; || Brings up a menu containing most all of the&lt;br /&gt;
Edit Commands. This menu also contains all&lt;br /&gt;
objects on the clicked turf, including one’s on&lt;br /&gt;
disabled layers. You can edit objects from&lt;br /&gt;
here as well.&lt;br /&gt;
|-&lt;br /&gt;
| Edit Object &#039;&#039;&#039;Shift + RMB&#039;&#039;&#039; || Opens up the variables window of the&lt;br /&gt;
highlighted object.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: All edits made to variables generate&lt;br /&gt;
new instances, even if all edits were made at&lt;br /&gt;
the same time! Unused instances are cleared&lt;br /&gt;
when the map is saved. Don’t worry about&lt;br /&gt;
making extras.&lt;br /&gt;
|-&lt;br /&gt;
| Delete Object &#039;&#039;&#039;Ctrl + Shift + LMB&#039;&#039;&#039; || Deletes the highlighted object.&lt;br /&gt;
|-&lt;br /&gt;
| Replace with Active Object &#039;&#039;&#039;Ctrl + Shift + RMB&#039;&#039;&#039; || Replaces the highlighted object with the&lt;br /&gt;
Active Object.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: This command, in-editor is called&lt;br /&gt;
Replace with Selected Object.&lt;br /&gt;
|-&lt;br /&gt;
| Reset To Default || Resets the clicked object to its most basic&lt;br /&gt;
form, removing all instance edits.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Only available through the Quick Edit Menu.&lt;br /&gt;
|-&lt;br /&gt;
| Tile Mode &#039;&#039;&#039;1&#039;&#039;&#039;|| Changes placement mode to single tile.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: This is the closest you’ll get to a brush&lt;br /&gt;
tool in StrongDMM.&lt;br /&gt;
|-&lt;br /&gt;
| Fill Mode &#039;&#039;&#039;2&#039;&#039;&#039;|| Changes placement mode to square&lt;br /&gt;
selections using &#039;&#039;&#039;LMB + Drag&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| Selection Mode &#039;&#039;&#039;3&#039;&#039;&#039;|| Changes mode to Selection only.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Selection Mode has its own unique&lt;br /&gt;
mouse behaviors, listed below.&lt;br /&gt;
|-&lt;br /&gt;
| Select Area &#039;&#039;&#039;LMB + Drag&#039;&#039;&#039;|| Selects a square area relative to the initial&lt;br /&gt;
click, and where the cursor is dragged. The&lt;br /&gt;
selection will be highlighted and given a&lt;br /&gt;
green border.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Only selects objects from enabled&lt;br /&gt;
layers.&lt;br /&gt;
|-&lt;br /&gt;
| Move Area &#039;&#039;&#039;LMB + Drag&#039;&#039;&#039;|| Moves the selected area relative to the&lt;br /&gt;
cursor, overwriting tile contents when &#039;&#039;&#039;LMB&#039;&#039;&#039; is&lt;br /&gt;
released, and leaving blank space where the&lt;br /&gt;
original selection was made.&lt;br /&gt;
|-&lt;br /&gt;
| Edit Direction / Dir Slider|| Allows manipulation of an object’s cardinal&lt;br /&gt;
direction in the form of a slider, creating an&lt;br /&gt;
instance if required.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Only available through the Quick Edit&lt;br /&gt;
Menu. Can also be done through Variable&lt;br /&gt;
Edits.&lt;br /&gt;
|-&lt;br /&gt;
| Nudge X/Y-Axis || Allows manipulation of an object’s offset via&lt;br /&gt;
Step, or Pixel, from its origin on a tile,&lt;br /&gt;
creating an instance if required.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note 1&#039;&#039;&#039;: Only available through the Quick Edit&lt;br /&gt;
Menu. Can also be done through Variable&lt;br /&gt;
Edits.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note 2&#039;&#039;&#039;: Never, ever edit Step_X or Step_Y.&lt;br /&gt;
The default nudge type can be set in the&lt;br /&gt;
Preferences window.&lt;br /&gt;
|-&lt;br /&gt;
| Move To Top / Bottom || Sends an object to the top, or bottom, in&lt;br /&gt;
terms of Byond sorting, of the same type.&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Only available through the Quick Edit&lt;br /&gt;
Menu.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Instance Commands ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:70%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Command !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Find Instance On Map || Brings up the instance locator menu, as well&lt;br /&gt;
as the search results. The instance locator&lt;br /&gt;
menu can be used to locate instances&lt;br /&gt;
identical to the one you’ve got selected.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: You’ll need to manually define the&lt;br /&gt;
search rectangle though, as it’ll default to the&lt;br /&gt;
single tile you have selected.&lt;br /&gt;
|-&lt;br /&gt;
| Find Object On Map || Brings up the instance locator menu, as well&lt;br /&gt;
as the search results. Instead of having an&lt;br /&gt;
instance ID entered by default, the typepath&lt;br /&gt;
of the selected object will be searchable&lt;br /&gt;
instead.&lt;br /&gt;
|-&lt;br /&gt;
| New Instance... || Opens up a variable editing window. Any&lt;br /&gt;
changes made to this window will generate a&lt;br /&gt;
new instance in the instance viewer window&lt;br /&gt;
for use later.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Instances not placed on a map will be&lt;br /&gt;
deleted upon the next load, and will have to&lt;br /&gt;
be made again if you wish to use them.&lt;br /&gt;
|-&lt;br /&gt;
| Generate Instances from Icon-States || Makes instances of the active object out of all&lt;br /&gt;
other valid icon-states within the icon file the&lt;br /&gt;
active object is derived from.&lt;br /&gt;
|-&lt;br /&gt;
| Generate Instances from Directions || Makes instances of the active object out of&lt;br /&gt;
any valid directional icons stored within its&lt;br /&gt;
original icon-state.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Key Mapping Terms ==&lt;br /&gt;
&#039;&#039;&#039;Tile&#039;&#039;&#039;: Byond maps are giant grids. Each grid mark is a tile. Tiles always contain a space turf, this&lt;br /&gt;
is as empty as a tile can get.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Active Object&#039;&#039;&#039;: The object currently selected / active. This is the object you’ll be placing down&lt;br /&gt;
when you click. The object will be viewable in the Environment Tree to the left, and highlighted.&lt;br /&gt;
If you have an instance selected, it will be highlighted in the instance window below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Area(s)&#039;&#039;&#039;: Areas are part of how Byond handles maps, and for CM13 it’s how we determine what&lt;br /&gt;
portions of the map are valid for fire missions, what does, and does not require power (and thusAPCs), where resin, tunnels, Xeno Structures, Marine Structures, and other things are allowed&lt;br /&gt;
or disallowed. Areas are never drawn in game. Anywhere without an area will not have lighting,&lt;br /&gt;
and will kill any mob that enters it, just very very slowly. Areas are like the nervous system of a&lt;br /&gt;
map. Without it, maps just don’t function.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Turf(s)&#039;&#039;&#039;: Turfs are the walls, and the floors that make up the world. There can only be one turf&lt;br /&gt;
per tile. If you’ve managed to get two on one, you’ve made a big mistake. Turfs are like the&lt;br /&gt;
skeleton of a map.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Auto-Turf(s)&#039;&#039;&#039;: Floor turfs that dynamically place borders around them when the map loads, or&lt;br /&gt;
when they take damage in game. They look nice, but can get expensive when used en-masse.&lt;br /&gt;
If your map’s tileset is primarily made of Auto-Turfs (Ice Colony and Kutjevo are good examples&lt;br /&gt;
of this), make sure to be sparing on the Decals and other objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Open (Turf)&#039;&#039;&#039;: Turfs that aren’t walls. Mobs can move through these.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Closed (Turf)&#039;&#039;&#039;: Turfs that are walls. Mobs cannot move through these.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Invisible Wall Blocker&#039;&#039;&#039;: A type of Object (see below) that acts like an indestructible Closed turf.&lt;br /&gt;
Used to deny access to areas that are out of bounds, but composed of Open turfs.&lt;br /&gt;
Reinforced Wall: Walls that are destructible, but require extra effort to punch through. They can&lt;br /&gt;
only be melted by higher tier Aliens, and stronger explosives (they may need multiple to break).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hull&#039;&#039;&#039;: Walls that are indestructible. Usually denoted in-editor with a different icon. Often the&lt;br /&gt;
subtype of another wall type.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mob(s)&#039;&#039;&#039;: These are Aliens, Humans, and NPC mobs. Mobs are divided into two categories,&lt;br /&gt;
Carbons, and Simples. Carbons are complex and simulated, while Simples aren’t. For Example,&lt;br /&gt;
Humans and Aliens are Carbon mobs, while Jones and AI Aliens are Simple mobs. Mobs have&lt;br /&gt;
no comparative bodily analogy, sorry.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Map Sorting Layers&#039;&#039;&#039;: In StrongDMM, what is, and isn’t enabled in the viewport is referred to as&lt;br /&gt;
a ‘Layer’, which can be sorted. This isn’t wholly accurate, but it is the term that gets used.&lt;br /&gt;
Sorting Layers are NOT the same as Byond sorting, or CM13’s Object Layers.&lt;br /&gt;
var/layer: This is the CM13 Object Layer, which is used to determine visual hierarchy in terms&lt;br /&gt;
of drawing objects on a tile. Take note, this variable can be edited, though some map instances&lt;br /&gt;
are overwritten upon server initialization, so it doesn’t always work!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Top / Bottom&#039;&#039;&#039;: When numerous objects of the same type are on the same visual layer (not to be&lt;br /&gt;
confused with map sorting layers), some will appear above others and obscure them, this is&lt;br /&gt;
determined by what is on Top, and what is on Bottom. This is what we’ve been referring to asByond Sorting. Since Byond isn’t 3D, Z-fighting isn’t possible, though if that could happen, this is&lt;br /&gt;
what would prevent it. You usually don’t need to mess around with this at all. Players may also&lt;br /&gt;
bring objects to the Top, or Bottom ingame.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Object(s)&#039;&#039;&#039;: These are guns, clothing, windows, window frames, and pretty much everything else&lt;br /&gt;
that isn’t a wall or floor. Everything you can interact with (save for mobs), are objects. Objects&lt;br /&gt;
are the meat of a map.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Effect&#039;&#039;&#039;: A subtype of Objects, these are a whole host of things, from the holes Aliens melt in&lt;br /&gt;
walls and the acid that gets vomited on items, to the sparks that come off of explosions. You&lt;br /&gt;
shouldn’t be manually placing these unless they’re Decals or Landmarks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Landmarks&#039;&#039;&#039;: A subtype of Effects, these are map objects that do something when the server&lt;br /&gt;
loads the map, or function as a saved set of coordinates for a specific event (like the CORSAT&lt;br /&gt;
teleporter). You’ll mostly be placing these as spawn points for various factions, and not much&lt;br /&gt;
else save for a few other cases.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Decals&#039;&#039;&#039;: A subtype of Effects, these are non-interactable details on maps. Blood is the most&lt;br /&gt;
common decal. Fun fact: The catwalks on Sorokyne Strata are also decals. Decals get&lt;br /&gt;
expensive when placed en-masse, so try to be sparse with them&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Item&#039;&#039;: A subtype of Objects, these are all the things you, as a player can pick up, ranging from&lt;br /&gt;
clothing and guns to cigarettes and unplanted Alien eggs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Structures&#039;&#039;&#039;: A subtype of Objects, these include pretty much anything static (with some&lt;br /&gt;
exceptions) on a map. Some examples include: chairs, lockers, windows, window frames,&lt;br /&gt;
platforms, tall grass bushes, and potted plants.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Machines / Machinery&#039;&#039;&#039;: Machines, a subtype of Structures, are objects (mostly static) that have&lt;br /&gt;
some sort of interaction with other objects. For example, Thermal Generators, APCs, wall lights&lt;br /&gt;
are machines. All atmospheric objects are machines, but they have their own terminology.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pipe&#039;&#039;&#039;: This is what a single pipe object is referred to in terms of Atmospherics.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Piping&#039;&#039;&#039;: This is what two or more pipe objects that are connected, are referred to in terms of&lt;br /&gt;
Atmospherics. Note: This term should not be confused with the Pipeline, which more&lt;br /&gt;
importantly, refers to the process by which Gitlab, CM13’s code hosting service determines if a&lt;br /&gt;
Merge Request has no compilation conflicts, and passes all supplied unit tests. This is known as&lt;br /&gt;
“Pipeline Passing”.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pipe Machine&#039;&#039;&#039;: This is what one unconnected vent, scrubber, valve, cooler, port, etc, is referred&lt;br /&gt;
to in terms of Atmospherics. Anything that isn’t a regular pipe, but can connect to pipes, is a&lt;br /&gt;
pipe machine.Pipenet: This is what when one or more pipes are connected to pipe machines are referred to&lt;br /&gt;
as in terms of Atmospherics. Xenos may freely traverse completed pipenets that have valid&lt;br /&gt;
entrances and exits (Vents and or Scrubbers).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Powernet&#039;&#039;&#039;: This is the abstract power supply available from all active generators (Thermal /&lt;br /&gt;
Portable) available on a single Z level. Powernets are localized entirely to their Z Level.&lt;br /&gt;
PSU (Power Storage Unit / SMES): This object allows one to meter the power leaving the&lt;br /&gt;
Powernet into machines, while also viewing total available power within the powernet. You need&lt;br /&gt;
to place at least one per Z, preferably near a Generator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Generator&#039;&#039;&#039;: Usually refers to a G-11 Thermal Generator map object, which when repaired puts&lt;br /&gt;
power into the Powernet for use by PSUs and APCs. You need to place at least one per Z,&lt;br /&gt;
preferably near a PSU and an APC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;APC (Area Power Controller)&#039;&#039;&#039;: This object allows players to control the interaction between the&lt;br /&gt;
Powernet, and Machines in the local Area (see above) the APC is placed within.&lt;br /&gt;
Spawner: A general term that refers to something (usually a landmark) that makes something&lt;br /&gt;
on map load, and then deletes itself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Detailing&#039;&#039;&#039;: Refers to the aesthetic qualities of a map, or area in terms of objects, unique turfs,&lt;br /&gt;
and other aesthetic sensibilities, such as color palette, and visual design.&lt;br /&gt;
Detail Density: An aesthetic term that describes how detailed one area is vs another, as&lt;br /&gt;
determined by the amount of objects, unique turfs, and others. It can also be used as a broad&lt;br /&gt;
term to refer to a map as a whole in reference to total detailing, and potentially, performance&lt;br /&gt;
deficits.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;.DMM (Dreammaker Map)&#039;&#039;&#039;: The file format that Byond maps are stored in. They’re actually&lt;br /&gt;
plaintext, and can be opened with Notepad, or a code editor of choice.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TGM (TG Map)&#039;&#039;&#039;: TGM is a .DMM format. It stores information in a far more humanly readable&lt;br /&gt;
way, and also allows for Git Conflicts to be resolved in a far less messy manner. Map Merge 2&lt;br /&gt;
converts Byond Maps to TGM. TGM is not an extension type.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Map Merge 2&#039;&#039;&#039;: A python tool that converts Byond maps to TGM format, while also resolving&lt;br /&gt;
conflicts between versions, if any are found.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dictionary Key (Dict-Key)&#039;&#039;&#039;: Byond stores map information in what are called Dictionary keys&lt;br /&gt;
(dict-keys for short), which are a sequence of three letter characters contained at the bottom of&lt;br /&gt;
the map file in a sequence. Dict-keys are first defined when a new combination of area, turf,object, and mob are placed on a tile. If this specific combination is ever reused, instead of&lt;br /&gt;
defining those lines again (Byond maps are plaintext), the existing Dict-Key is used instead.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Corruption&#039;&#039;&#039;: Your map got done fucked up son. This happens in pretty much any Byond map&lt;br /&gt;
editor. The Save As function is notorious for corruptions. Make sure to utilize Git Version control&lt;br /&gt;
to ward away the setbacks of a map corruption.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dictionary Corruption&#039;&#039;&#039;: Your map’s Dict-Keys have somehow been scrambled or altered.&lt;br /&gt;
Depending on the extent of corruption, can, or cannot be fixed by hand. These are easy to spot&lt;br /&gt;
when the Area Layer is enabled.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Variable Edit (Var-Edit)&#039;&#039;&#039;: Usually refers to the act of editing the variables of an object (the&lt;br /&gt;
information stored within it) in game. However you can also do this in-editor, which leads to&lt;br /&gt;
instancing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Instancing&#039;&#039;&#039;: The creation of variants of an object that differentiate from the original because of&lt;br /&gt;
edited or alternative variables. These child objects are called Instances.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Instance&#039;&#039;&#039;: An object that has different variables than it’s base definition. Not to be confused with&lt;br /&gt;
a Child Object in terms of Object Oriented Programming.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Typepath&#039;&#039;&#039;: The path of an object in-game and in-editor. Objects further down the typepath are&lt;br /&gt;
Child Objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Environment Tree&#039;&#039;&#039;: This is the set of nested dropdowns of objects, and a visual representation&lt;br /&gt;
of typepaths within the code. Get used to navigating it quickly and efficiently, as that is key to&lt;br /&gt;
successful and intuitive mapping.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DME (Dream Maker Executable)&#039;&#039;&#039;: The compiled game binary, used to run servers, and read by&lt;br /&gt;
map editors to know what objects can be placed in maps.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Map Window&#039;&#039;&#039;: The tab/window in which a map is currently open. One map window per map.&lt;br /&gt;
Viewport: The actual visuals within the Map Window, these two terms will likely get used&lt;br /&gt;
interchangeable in conversation with maintainers, and this guide.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;.DMI (Dreammaker Image)&#039;&#039;&#039;: PNGs wrapped up in a different file format. These contain all the&lt;br /&gt;
sprites in the game. In the code, DMI files are called as var/Icon.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Icon&#039;&#039;&#039;: This is the actual file in which an Icon-State is stored. Icons are typically .DMI filesIcon-State: This is a specific ‘state’ within an Icon. To check what states are valid, you can&lt;br /&gt;
open the DMI, or have StrongDMM generate instances based on Icon-States in the instance&lt;br /&gt;
context menu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tile Set&#039;&#039;&#039;: A specific set of icons, and code, that combine to create a thematically grouped&lt;br /&gt;
collection of floors and walls. CORSAT, Sorokyne, Prison Station, and Solaris Ridge all have&lt;br /&gt;
their own unique Tile Sets.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tile/Object Palette&#039;&#039;&#039;: An analog to the art term, palette, your object (or tile) palette is the&lt;br /&gt;
collection of frequently used tiles (and objects) that make up your map. Distinct from a Tile Set,&lt;br /&gt;
in that it’s defined by frequent usage, and not necessarily consistency. For example, water tiles&lt;br /&gt;
and atmospheric pipes are both part of your map’s palette, but aren’t part of a tile set.&lt;br /&gt;
&lt;br /&gt;
= Part 1: Using the Editor =&lt;br /&gt;
== Introduction ==&lt;br /&gt;
If you’re starting here and haven’t read anything yet, make sure you go read the disclaimer at&lt;br /&gt;
the top, please, seriously. You won’t get anywhere without making sure you’re following what’s&lt;br /&gt;
said there first.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For this guide we’ll be using StrongDMM, which is an alternative editor to Byond’s included Map&lt;br /&gt;
Editor (sometimes referred to as BaseDMM). The reason we’ll be using StrongDMM is because&lt;br /&gt;
it is more user friendly, (generally) has better performance, and most importantly, saves natively&lt;br /&gt;
in TGM.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Part 1 will walk you through it all, from opening maps and making your first edits to creating&lt;br /&gt;
instances in baby steps. If you’re already experienced with mapping software, or don’t want your&lt;br /&gt;
hand held by a document and its contents, you can probably safely skip over to Part 2: Mapping&lt;br /&gt;
Theory, and make use of the StrongDMM Reference when you need it.&lt;br /&gt;
&lt;br /&gt;
=== 1. Setting up StrongDMM ===&lt;br /&gt;
Before we can get started, we need to configure StrongDMM for CM13. Navigate to the File tab,&lt;br /&gt;
open it up, and click Preferences…&lt;br /&gt;
Make sure to set the Map Save Format drop down to TGM.&lt;br /&gt;
Make sure Sanitize Variables and Clean Unused Keys are also both enabled.&lt;br /&gt;
Lastly, ensure that Nudge Mode is set to pixel_x/pixel_y. Having this option set to&lt;br /&gt;
step_x/step_y will break smooth movement in-game, and we don’t want that.After that’s all set, feel free to fiddle with the settings to your liking.&lt;br /&gt;
When you’re ready to continue, X out of the menu.&lt;br /&gt;
&lt;br /&gt;
=== 2. Navigating Maps ===&lt;br /&gt;
To start things off, let&#039;s open your compiled CM13 DME file (if you don’t know how to do that,&lt;br /&gt;
check out the guide [[Guide to Git|here]]). Navigate to the &#039;&#039;&#039;File&#039;&#039;&#039; tab, and hit &#039;&#039;&#039;Open&lt;br /&gt;
Environment…&#039;&#039;&#039; Once the loading bar at the top of the screen disappears, you should see a&lt;br /&gt;
now populated Environment Tree to the left, and a blank screen. Double check in the upper left,&lt;br /&gt;
it should read “ColonialMarinesALPHA - StrongDMM”.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
From here, let’s open up a map file. Navigate to the &#039;&#039;&#039;File&#039;&#039;&#039; tab, and hit &#039;&#039;&#039;Open Map&#039;&#039;&#039;. This’ll open a&lt;br /&gt;
Windows Explorer window in the base of your local repository. Head into the &#039;&#039;&#039;Maps&#039;&#039;&#039; folder, and&lt;br /&gt;
select &#039;&#039;&#039;Z.01.LV624&#039;&#039;&#039;. You can open the map by hitting the &#039;&#039;&#039;Open&#039;&#039;&#039; button, or by double clicking.&lt;br /&gt;
&lt;br /&gt;
[[File:MCC Fig1.jpg|left]]Your window should now look something like&lt;br /&gt;
the left. Those funny colors and tiles that say&lt;br /&gt;
‘SW’ over them is the &#039;&#039;&#039;Areas Layer&#039;&#039;&#039;. In CM13,&lt;br /&gt;
&#039;&#039;&#039;Areas&#039;&#039;&#039; are used to control what places need&lt;br /&gt;
power, allow or disallow certain activities,&lt;br /&gt;
such as construction or tunneling, and also&lt;br /&gt;
what places can accept fire missions or CAS&lt;br /&gt;
lasers. For now, we don’t need to pay&lt;br /&gt;
attention to &#039;&#039;Areas&#039;&#039;. They can be safely&lt;br /&gt;
toggled off by hitting &#039;&#039;&#039;Ctrl + 1 (Toggle Area Layer)&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You might (or might now) see some white outlines around and at the borders of where Areas&lt;br /&gt;
met. These borders will persist even when the Areas layer is disabled. If you find them&lt;br /&gt;
distracting, you can disable them going to the &#039;&#039;&#039;Options&#039;&#039;&#039; tab, and unchecking &#039;&#039;&#039;Frame Areas&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There’s still a lot going on in our viewport, but before we can dive into what’s going on, let’s get&lt;br /&gt;
used to navigating the map, and using viewport controls to get around.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First, let’s use MMB (Middle Mouse Button) to pan around the map. Click in the MMB, and&lt;br /&gt;
release to stop panning. You’ll notice the editor slows down while panning quickly, or when&lt;br /&gt;
panning over areas with lots of objects. This is completely normal, even for more robust&lt;br /&gt;
hardware setups.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can also Scroll up or down with your mouse wheel (or track pad, gesture commands that&lt;br /&gt;
emulate scrolling also work) to zoom in and out of the viewport. Note, that when you zoom, it all happens relative to where your cursor is, and more specifically, which tile it is hovering over. You’ll pan further when zoomed out more.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Panning and zooming are the primary forms of navigating maps in StrongDMM.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you’d like to make a more precise viewport adjustment, the arrow keys allow you to move the&lt;br /&gt;
viewport by one tile in the cardinal direction you just pressed. This movement is relative to the&lt;br /&gt;
current viewports positions, and won’t snap the viewport to be turf accurate, it’ll only move the&lt;br /&gt;
viewport the distance of one turf at the current zoom level. There are 14 total zoom levels.&lt;br /&gt;
&lt;br /&gt;
=== Basic Editing ===&lt;br /&gt;
Now that you’re comfy with moving around the map, we’re going to cover barebones editing&lt;br /&gt;
controls. Navigate up to LV River, just north of Hydroponics.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For reference, in Byond mapping:&lt;br /&gt;
&lt;br /&gt;
Up - North&lt;br /&gt;
&lt;br /&gt;
Right - East&lt;br /&gt;
&lt;br /&gt;
Left - West&lt;br /&gt;
&lt;br /&gt;
Down - South&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zoom in to the river, and press 2, to change your tile placement mode to Fill. Tile mode, which&lt;br /&gt;
can be activated with 1, can be useful, but we suggest you do the majority of your mapping on&lt;br /&gt;
Fill mode, it becomes far more intuitive the more you use it.&lt;br /&gt;
&lt;br /&gt;
[[File:MCC Fig2.jpg|left]] Right now, you probably don’t have an Active Object, which is to say if you click,&lt;br /&gt;
nothing is going to be placed down. To change that, hold Shift, and then move&lt;br /&gt;
your cursor over one of the “strange trees”. It should highlight green. Left click to&lt;br /&gt;
make it the Active Object.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:MCC Fig3.jpg|right]] Place a few in the river, and then their undo placement with Ctrl + Z (You can also redo with Shift + Ctrl + Z). If you click twice on a tile, even though it doesn’t look like it, two trees will have been placed down. To confirm this, right click the tile. From there, you can highlight the second tree and then delete it. You can fiddle with the Dir and Offset settings, but we won’t be covering those until later.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Place two trees in a row next to one another. Now, hold Ctrl, and drag a selection box around them. Ctrl + Drag, on Fill and Select Mode, deletes the topmost objects of the selected type on a tile. The selected type does NOT refer to the Active Object, rather only if you have an Area, Turf, Object, or Mob as the Active Object. Top most deletion is handy when you need to quickly clear an area of a lot of objects, but not all of them. The last placed object (usually) is the top most object on a tile.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Undo, or place two more trees down. Holding &#039;&#039;&#039;Ctrl + Shift&#039;&#039;&#039;, click on one of them. It should highlight in red. This will delete the object. Deleting this way allows for deletion of any object, turf, mob, or area that’s currently visible. You have to be able to click it to delete it, so if it’s not&lt;br /&gt;
enabled per the Layers Filter, no dice.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Undo, or place two more trees down. Now, select a new object, such as some of the flowers, or&lt;br /&gt;
one of the reed bushes in the river and make it the Active Object. Go back to one of your trees,&lt;br /&gt;
and this time &#039;&#039;&#039;Ctrl + Shift + RMB&#039;&#039;&#039;, instead of &#039;&#039;&#039;LMB&#039;&#039;&#039;. This will replace the tree with the Active&lt;br /&gt;
Object.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Copy, Cut, Paste ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Copying, cutting, and pasting are tools that, if used effectively, can greatly speed up the&lt;br /&gt;
mapping process and cut down on the time spent combing the Environment Tree for the right&lt;br /&gt;
object. Combined with picking the Active Object from already placed ones, you might not even&lt;br /&gt;
have to use the environment tree at all.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Before we can copy, cut, or paste, we’re going to need to learn how to use the &#039;&#039;&#039;Selection Mode&#039;&#039;&#039;,&lt;br /&gt;
which can be accessed by pressing &#039;&#039;&#039;3&#039;&#039;&#039;. Notably, you cannot change tile placement and selection&lt;br /&gt;
modes by using the Number Pad on an extended keyboard.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In Selection Mode, the mouse’s basic click functions follow special behaviors. Without any selection, you can LMB + Drag to make a new selection. Repeating the same action, &#039;&#039;&#039;LMB + Drag&#039;&#039;&#039; anywhere within the bounds of the selection will drag the selection relative to the mouse on the tile grid, replacing all content it’s floating over when you release the mouse. If you want to clear your selection, press Ctrl + D. When moving selections, the original tiles will be cleared. Only content on enabled layers will be selected and moved.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Copying, cutting, and pasting work exactly the same in regards to mouse controls. Notably,&lt;br /&gt;
when pasting a selection onto a map, the content will overwrite everything around it. Pastes&lt;br /&gt;
always are relative to the cursor, starting at their origin tile in the bottom left of the selection. If&lt;br /&gt;
you paste a selection while not in Selection Mode, you will not be able to manipulate it after&lt;br /&gt;
pasting, which can be frustrating. As such, make sure you do the most of your Cut, Copy, and&lt;br /&gt;
Paste while in Selection Mode (&#039;&#039;&#039;3&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Instancing Objects ===&lt;br /&gt;
This segment covers the basics of instancing, and only the basics. Advanced instancing is&lt;br /&gt;
something you’ll encounter on a case by case basis, and it’s best to get live help than refer to a&lt;br /&gt;
guide for those cases.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Firstly, lets get familiar with the concept of instances. What are they, and why do we want to&lt;br /&gt;
use them?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An &#039;&#039;&#039;instance&#039;&#039;&#039;  is a variant of an object that is different in any way from its original state. An&lt;br /&gt;
instance is NOT a child object further down the typepath.&lt;br /&gt;
&lt;br /&gt;
Common instances include: renamed items and airlocks, changed item descriptions, APCs and&lt;br /&gt;
NanoMeds offset to appear on walls, and floor tile variants. Mapping without instances can be&lt;br /&gt;
done, but it requires a lot of extra code that isn’t needed. Why define a new child of an object&lt;br /&gt;
that only has a different name, when we can instance the name instead?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Instances are stored on a map by map basis, and are not shared between them. However,&lt;br /&gt;
StrongDMM is able to recognize instances between map windows if you have two or more&lt;br /&gt;
open, which can be useful in certain situations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:MCC fig4.jpg|left]] Reselect our friend the strange tree. Looking in the bottom left, you’ll spy there are already two instances of the strange tree being used on the map. This bottom left window is the instance viewer. Clicking either of the other instances will display the differing variables to the right of the initial window. You’ll notice the top most instance reads “Empty (instance with initial vars)”. When you&lt;br /&gt;
reset an object to default, it’s this topmost variant of itself that it will return to. Try placing any of&lt;br /&gt;
these instances.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Let’s make some more instances. Right click any of the three and hit &#039;&#039;&#039;Generate Instances from Icon-States…&#039;&#039;&#039; This should make a bunch new instances for us to screw around with. You can always hit &#039;&#039;&#039;New Instance…&#039;&#039;&#039; if you only want to make one more, though unless you know exactly what you’d like to make, it’s usually a safer bet to generate from icon-states or directions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Be careful when generating instances! You’ll notice that a bunch have been made when we hit &#039;&#039;&#039;Generate Instances from Icon-States…&#039;&#039;&#039;, maybe even too many. Some Icon files are very large, and have a lot of icon states shared between objects, turfs, and others. If you need to clear that list, close the map and re-open it. They should be gone when the map gets reloaded in the editor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:MCC fig5.jpg|right]] If you have a lot of instances that you are using you can add &#039;&#039;&#039;additional rows&#039;&#039;&#039; to the instance window by clicking on the cog icon (upper right of the window). Let’s cover automatic instancing. Moving south of the river, head over to the medical dome and make one of the folding metal chairs the Active Object. You’ll notice it already has instances of all its directions in the lower left. Moving down the Environment Tree, select the comfy child object. Right click the initial instance, and hit &#039;&#039;&#039;Generate Instances from Directions…&#039;&#039;&#039; Now we have all the cardinal directions of the comfy chair for our mapping leisure. Not all objects have directional variants. When in doubt, you’ll probably have to check the icon file itself. While we can’t open the Icon in StrongDMM (or any map editor for that matter), we can find it easily.&lt;br /&gt;
&lt;br /&gt;
Place down one of the new comfy chair instances anywhere on the map, and right click it. You’ll notice in the right click menu we can see all objects, regardless if their layer is enabled or not. Moving the cursor over the comfy chair will give us some extra options to explore.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This right click menu is known as the Quick Edit Menu, and gives you access to Edit Commands as well as more specific object functions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Your first set of options is the ability to &#039;&#039;&#039;Nudge&#039;&#039;&#039;. Nudging allows you to offset the object on its tile, without actually moving it from the tile to another. This can be useful for decorative purposes or for wall mounted machinery, like NanoMeds, or APCs. Play around with the two sliders, but make sure you’ve got Nudge set to Pixel Nudge in your Preferences.You’ll notice that with each release of the mouse from the nudge sliders will make a new instance of the object. Making just three nudges, makes three objects! Remember, you can clear unused instances by reloading the map file after saving.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Secondly you’ll notice the &#039;&#039;&#039;Dir&#039;&#039;&#039; (Direction) slider. This can be used to rotate your object in various cardinal directions. If the object has directional sprites in it’s icon-state, they’ll be automatically applied.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Under those two aesthetic adjusters, you’ll notice the &#039;&#039;&#039;Move To Top&#039;&#039;&#039;, and &#039;&#039;&#039;Move To Bottom&#039;&#039;&#039; buttons. You can read about those in the Key Mapping Terms. You won’t really be using these.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Most importantly, we get to our two unfamiliar commands, Edit… (Shift + RMB) and Reset to&lt;br /&gt;
&#039;&#039;&#039;Default&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Reset to Default&#039;&#039;&#039; does exactly as it says, and restores the object to its original initial variable&lt;br /&gt;
state, or the top most instance of that object’s type.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Edit… (Shift + RMB)&#039;&#039;&#039; more importantly brings up the &#039;&#039;&#039;Variable Editing&#039;&#039;&#039; window (&#039;&#039;&#039;VarEdit&#039;&#039;&#039; shorthand). From here we can directly modify any variables associated to this object in the code. Before we get into anything in this window, make sure to tick the box next to &#039;&#039;&#039;By Type&#039;&#039;&#039;.&lt;br /&gt;
This’ll group variables by what typepath they’re associated with.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you tick the &#039;&#039;&#039;Modified&#039;&#039;&#039; box, only the currently modified variables will appear. You’ll notice that Dir, and Nudge (pixel_x, pixel_y) are both variables. Anytime you change a single variable, a new instance is made.You can also filter variables (or search them, it’s the same function) at the top bar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can also filter variables (or search them, it’s the same function) at the top bar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:MCC fig6.jpg|right]] Finally, let’s figure out how to locate the actual icon file our comfy chair uses. Filter for, or look for the term “icon”. The resulting variable gives us the path to the icon file, you need only locate it in Windows Explorer now if you’d like to actually inspect the .dmi file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For now, that’s all we’ll cover on variable editing. As said, you can edit everything via instancing, but you can’t change the direct code. In this case, if you wanted you could tell the comfy chair to find an entirely different icon file if you wanted to! Assuming of course you had the correct path punched in.&lt;br /&gt;
&lt;br /&gt;
=== Common Variables ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:70%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Command !! Description&lt;br /&gt;
|-&lt;br /&gt;
| desc ||&lt;br /&gt;
The description of an object. If set to null, it will use the parent objects description. This variable must be enclosed in full quotes “”, otherwise your map won’t compile.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Smart quotes, and quotes, are not the same unicode character, and smart quotes will break your map file. StrongDMM never uses smart quotes, but a text editor you use might, so be careful if you’re pasting from an outside source.&lt;br /&gt;
|-&lt;br /&gt;
| name || The name of an object. If set to null, it will display an empty space in game. This variable must be enclosed in full quotes “”,&lt;br /&gt;
otherwise your map won’t compile.&lt;br /&gt;
|-&lt;br /&gt;
| req_access || Used by lockers and doors to determine what access is needed to open them. When set to null, no access is required.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: A list of access numbers can be in the code file (someone get me the name &amp;amp; path)&lt;br /&gt;
|-&lt;br /&gt;
| Open Map… &#039;&#039;&#039;Ctrl + O&#039;&#039;&#039; || Opens any map on a local hard-disk.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; &#039;&#039;Opening a map will open a new map&lt;br /&gt;
window, and will not close any other open&lt;br /&gt;
map windows.&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| req_one_access || Used by doors to determine if a single access number permits use opening. When set to null, no access is required&lt;br /&gt;
|-&lt;br /&gt;
| color || The tint of the object. Use RGB or Hex Color Codes. Null is the default; no tint. Works best on grey-scale sprites.&lt;br /&gt;
|-&lt;br /&gt;
| luminosity || The numeric intensity of how bright the object is in light calculations. Null means no light.&lt;br /&gt;
Can be given to objects that normally do not produce light, making them glow.&lt;br /&gt;
|-&lt;br /&gt;
| anchored || A true (1) or false (0) variable that determines if an object can move. Objects that can normally be picked up, cannot be so when anchored is set to true.&lt;br /&gt;
|-&lt;br /&gt;
| wrenchable || A true (1) or false (o) variable that determines if an object can be wrenched down to the ground, changing its anchor status.&lt;br /&gt;
|-&lt;br /&gt;
| density || A true (1) or false (0) variable that determines if an object is ‘dense’. Dense objects prevent passage through the tile they inhabit. Walls are dense objects, floor tiles are not.&lt;br /&gt;
|-&lt;br /&gt;
| health || The numeric health of an object. If set to null, it’ll use the parent value. When this reaches zero the object is destroyed or enters a damaged state. Varies per object type.&lt;br /&gt;
Objects that can be picked up (such as guns, or pillbottles) do not usually have health values.&lt;br /&gt;
|-&lt;br /&gt;
| unslashable || A true (1) or false (0) variable that disables slashing by Aliens. Only valid on structures, walls, and other objects with health values that are targettable by default.&lt;br /&gt;
|-&lt;br /&gt;
| climb_delay || A numeric value in terms of millisecond delay when climbing objects.&lt;br /&gt;
|-&lt;br /&gt;
| climbable|| A true (1) or false (0) variable that allows mobs to climb over, or onto the object in question. When null defaults to 0. May cause unintended behavior when set to true.&lt;br /&gt;
|-&lt;br /&gt;
| drag_delay|| A numeric value in terms of millisecond delay that is applied as a pause to mob movement after dragging an object. Calculated against a mob’s individual drag speed.&lt;br /&gt;
|-&lt;br /&gt;
| tag || A string variable that is sometimes used to flag certain aspects of an object or turf with additional information. Usage is deprecated in modern CM13, but it shows up occasionally.&lt;br /&gt;
|-&lt;br /&gt;
| icon|| The direct file path within the code to the .dmi the object searches in for icon_states. Can point towards any other dmi if the pathing is correct.&lt;br /&gt;
|-&lt;br /&gt;
| icon_state|| The name of the icon_state within the .dmi file specified by the icon variable. Will display the no name sprite (usually an error or invisible) within the .dmi if the specified icon_state is invalid.&lt;br /&gt;
|-&lt;br /&gt;
| pixel_x / pixel_y|| Integer offsets that change the origin of an object on a tile (default is at 16,16, the center of the tile, which in pixel_x/y is 0,0). Can be modified easily with the right click menu.&lt;br /&gt;
|-&lt;br /&gt;
| bound_height/width || Integer values, where 32 = 1 tile. When set larger than 32x32, a multi-tile object is created. Useful for large sprites, or&lt;br /&gt;
multi-sprite objects.&lt;br /&gt;
|-&lt;br /&gt;
| dir||The cardinal direction (stored as an integer) in which the object is facing. If the icon_state has dir variants, these will display accordingly. The directions are as follows:&lt;br /&gt;
&lt;br /&gt;
1 - North&lt;br /&gt;
&lt;br /&gt;
2 - South&lt;br /&gt;
&lt;br /&gt;
4 - East&lt;br /&gt;
&lt;br /&gt;
8 - West&lt;br /&gt;
&lt;br /&gt;
5 - Northeast&lt;br /&gt;
&lt;br /&gt;
6 - Southeast&lt;br /&gt;
&lt;br /&gt;
9 - Northwest&lt;br /&gt;
&lt;br /&gt;
10 - Southwest&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: 2 - South is the default dir value.&lt;br /&gt;
|-&lt;br /&gt;
| stuff || List variable that contains the potential contents of a largecrate/random object. Can be directly modified to have different contents if paths are correct.&lt;br /&gt;
|-&lt;br /&gt;
| start_charge || The % charge of an APC when it first spawns on map initialization. Should usually be left on defaults, or overridden to 0.&lt;br /&gt;
|-&lt;br /&gt;
| projectile_coverage|| The % chance a projectile has to hit the object in question when it passes through the tile it exists in.&lt;br /&gt;
|-&lt;br /&gt;
| flipped|| A true (1) or false (0) variable that determines if a table has been flipped or not. The flip direction is dependent on the dir variable.&lt;br /&gt;
|-&lt;br /&gt;
| frequency|| The frequency of headsets and intercoms. Defaults to 145.9 common channel. Custom frequencies must end in an odd number, otherwise they won’t work.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Part 2: Mapping Theory =&lt;br /&gt;
&lt;br /&gt;
Hopefully by now you’ve gotten decently comfortable with StrongDMM and know your way in and around instances. If you’re not yet, I advise you head back to the previous section, make a few edits on existing maps and screw around with the various tools and items you have at your disposal. Getting comfortable with the tools themselves is half the battle when working with Byond.&lt;br /&gt;
&lt;br /&gt;
This following section is about general CM-13 mapping theory. Remind yourself that CM-13 is a combat server, as such any theory you might have learned, or developed yourself from another SS13 server does not apply here, at all. Seriously, don’t go in trying to make an SS13 map, or editing an existing map to be more like one. It is a quick road to having your merge request turned down for violating the theories and ideas you’re about to read.&lt;br /&gt;
&lt;br /&gt;
With that said, the following segments are not set in stone (save for the Basic Map Requirements), but we highly recommend you follow them to the best of your ability. As you become more experienced with mapping, and CM-13 in general, that same experience is your license into more experimental or non-traditional maps and inserts.&lt;br /&gt;
&lt;br /&gt;
One last thing before we continue, while the following segment is loosely outlined around the thought process of making an entirely new map, understand that there is no specific order to map making once you’re past the drafting stage, and you, and everyone else, may, and will, approach the mapping process in a way that best suites their abilities. You should also note that we (the CM-13 development team) expect contributor-mappers to not go and make new maps&lt;br /&gt;
 &lt;br /&gt;
as their first project. We suggest, and would much prefer it if you made Nightmare Inserts (NMC, for short). You can read about what Nightmare Creator is here.&lt;br /&gt;
&lt;br /&gt;
== Basic Map Requirements ==&lt;br /&gt;
&lt;br /&gt;
A map built for the default gamemode Distress Signal can be boiled down to a few simple elements. Without these, the gamemode will not be able to run from start to finish properly.&lt;br /&gt;
&lt;br /&gt;
* At least one Landing Zone&lt;br /&gt;
* An always powered indestructible dropship terminal placed next to each landing zone&lt;br /&gt;
* An area that permits the construction of marine structures; for telecomms.&lt;br /&gt;
* An area that permits the construction of alien structures; for the hivecore, spawning pool, and nest(s)&lt;br /&gt;
* X amount of small host spawners, where X is the map size in walkable tiles divided by 1000 and rounded down.&lt;br /&gt;
* One or more Hive Start landmarks; which allow the Queen to determine where to spawn the hivecore and herself at round start.&lt;br /&gt;
* 10, at the minimum, Survivor spawners.&lt;br /&gt;
* If your map uses the node income system; minimum one node spawner landmark and a node income controller object.&lt;br /&gt;
* If your map uses the legacy income system; a legacy income controller object.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;For a far more in depth break down of a Distress Signal map, you can check out this guide, written by TobiNerd, our Lead Mapper,&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
It is highly advised that you have more than one (our recommendation is 3-5) Hive Start landmarks in order to allow the Alien team a degree of choice when starting the round in terms of their overall strategy in regards to map control and their base of operations.&lt;br /&gt;
&lt;br /&gt;
There aren’t any hard rules on where one should place Landing Zones. Smaller maps, for ease of balancing and income node placement, prefer only one landing zone, while larger maps should usually have two in order to increase marine FOB options. If you have two landing zones on your map, they should both be equally spaced from the first income node that marines encounter. If one is closer, it will always get picked preferentially due to the timing advantage.&lt;br /&gt;
For more information on Landing Zones (and Hive placement), click here.&lt;br /&gt;
&lt;br /&gt;
Small host spawners can be placed just about anywhere on the map, but it’s suggested that you place the most of them towards naturally occurring Alien territory. On most maps that do feature small hosts in thematic placement, they usually wind up in easily accessible containment cells grouped together in one place for ease of Alien team access. Small hosts should not be difficult to get, they provide pre-round activity for the Alien team, while also conferring a team resource.&lt;br /&gt;
 &lt;br /&gt;
Survivor spawns should be placed opposite of small host spawners; they should be closer to the LZ(s) than to potential Alien Hive Starts. Survivor spawns should also spawn next to or in a key location to allow ease of orientation. You can read more about Survivors [[Survivor|here]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Layout, Chokepoint &amp;amp; Lanes ===&lt;br /&gt;
Lorem ipsum&lt;br /&gt;
&lt;br /&gt;
=== Layout, Blockers ===&lt;br /&gt;
Lorem ipsum&lt;br /&gt;
&lt;br /&gt;
=== Layout, Arenas ===&lt;br /&gt;
Lorem ipsum&lt;br /&gt;
&lt;br /&gt;
=== Layout, Hives &amp;amp; LZs ===&lt;br /&gt;
Dropship terminals don’t have to be on or next to the landing zone directly like Sorokyne or LV, but they do need to be in an obvious place so that Queen players, new or old, do not get confused when attempting a hijack operation. CORSAT is a good example of non-traditional LZ computer placement, it’s in an office off to the side labelled flight control in clear view of the LZ.&lt;br /&gt;
&lt;br /&gt;
=== Layout, Resource Nodes ===&lt;br /&gt;
Lorem ipsum&lt;br /&gt;
&lt;br /&gt;
=== Pipes, as a hive-way ===&lt;br /&gt;
Lorem ipsum, bitch&lt;br /&gt;
&lt;br /&gt;
=== Survivors, (and their Loot) ===&lt;br /&gt;
Lorem ipsum&lt;br /&gt;
&lt;br /&gt;
=== Advanced Map Components ===&lt;br /&gt;
Lorem ipsum&lt;br /&gt;
&lt;br /&gt;
=== Nightmare Creator ===&lt;br /&gt;
For the full guide on how to create nightmare inserts and how they work see:&lt;br /&gt;
https://github.com/cmss13-devs/cmss13/blob/master/maps/Nightmare/doc/Quickstart.md&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What are Nightmare inserts:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Nightmare inserts are variations to different locations on the map that occur based on a random chance, The most common example is the fog on LV, By default the fog is full but nightmare inserts might create a hole in the fog.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sprinkles vs Variations:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Variations are a group of nightmare inserts, usually regarding the same location. The nightmare insertion system will only pick &#039;&#039;&#039;one&#039;&#039;&#039; of the inserts in a variation group.&lt;br /&gt;
&lt;br /&gt;
Sprinkles however are independent inserts that might or might not happen, however are not dependent on if other spawn.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How to create Nightmare inserts?:&#039;&#039;&#039;&lt;br /&gt;
* Open StrongDMM (SDMM) and choose a map and where you want to make a nightmare insert. &lt;br /&gt;
* Once you have chosen your desired area take the measurements.&lt;br /&gt;
* Create a new map file based on the measurements.&lt;br /&gt;
* On the new map file replace the areas of the insert with /area/noop_template and turfs you don&#039;t want with /turf/noop_template.&lt;br /&gt;
* Actually map in the insert.&lt;br /&gt;
* Save the insert with the following format: SpawnChance.InsertName.dmm (So if you want a 40% spawn chance you put 40.InsertName.dmm).&lt;br /&gt;
* Put the .dmm file inside the sprinkles folder of the map you want it for.&lt;br /&gt;
* Put a /obj/effect/landmark/nightmare in the bottom left corner of your original measurements on your chosen map. The landmark represents the bottom left part of your insert so if it is in the wrong place, your insert will spawn wrong.&lt;br /&gt;
* Change the landmark&#039;s insert_tag to your insert&#039;s name (If your insert is named 10.EasternGap.dmm, Your insert tag would be EasternGap)&lt;br /&gt;
* That&#039;s it!&lt;br /&gt;
&lt;br /&gt;
== Part 3: Map Detailing ==&lt;br /&gt;
&lt;br /&gt;
=== Using the Zoo ===&lt;br /&gt;
Lorem ipsum&lt;br /&gt;
&lt;br /&gt;
=== Theming ===&lt;br /&gt;
Lorem ipsum, bitch&lt;br /&gt;
&lt;br /&gt;
=== Detail Density ===&lt;br /&gt;
Lorem ipsum, bitch&lt;br /&gt;
&lt;br /&gt;
=== Environmental Storytelling ===&lt;br /&gt;
Lorem ipsum, bitch&lt;br /&gt;
&lt;br /&gt;
=== Custom Assets ===&lt;br /&gt;
Lorem ipsum, bitch&lt;br /&gt;
&lt;br /&gt;
=== Getting Creative... ===&lt;br /&gt;
Lorem ipsum, bitch&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Frequent Questions &amp;amp; Mistakes =&lt;/div&gt;</summary>
		<author><name>Drulikar</name></author>
	</entry>
	<entry>
		<id>https://cm-ss13.com/w/index.php?title=Guide_to_Git&amp;diff=34426</id>
		<title>Guide to Git</title>
		<link rel="alternate" type="text/html" href="https://cm-ss13.com/w/index.php?title=Guide_to_Git&amp;diff=34426"/>
		<updated>2024-12-05T06:45:00Z</updated>

		<summary type="html">&lt;p&gt;Drulikar: Added mention of disabling actions when making a fork.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Guide to Git = &lt;br /&gt;
&lt;br /&gt;
== Setting up your Coding Environment ==&lt;br /&gt;
&lt;br /&gt;
Though you can use DreamMaker, and external Git software, for modifying your code and maps, all modern SS13 tooling is set up for Visual Studio Code, so it is highly recommended. You can jump to variable definitions, procs and atoms with ease.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Downloading Visual Studio Code ===&lt;br /&gt;
&lt;br /&gt;
Visual Studio Code is a free code editor (from Microsoft) that you can use to edit, test and publish your code to GitHub. &lt;br /&gt;
&lt;br /&gt;
You can download it from https://code.visualstudio.com/ and run the installer.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Forking the Repository === &lt;br /&gt;
&lt;br /&gt;
Go to https://github.com/cmss13-devs/cmss13, and at the top right, hit “Fork” - you’ll need a GitHub account for this.&lt;br /&gt;
&lt;br /&gt;
[[File:fork.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Follow the prompts that come up, and you’ll have your own copy of the code on GitHub.&lt;br /&gt;
&lt;br /&gt;
You will also likely want to disable actions running on your fork:&lt;br /&gt;
&lt;br /&gt;
[[File:Fork Actions Settings.png|alt=You can disable actions from running on your fork by going to settings, general under actions, disable actions, and save.|frameless|655x655px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Download Git === &lt;br /&gt;
&lt;br /&gt;
You’ll need Git installed to make any changes to the repository. Download it from https://git-scm.com/downloads. &lt;br /&gt;
&lt;br /&gt;
Then, on Visual Studio Code, under the Source Control tab on the left bar - the third option down, you should be presented with the option to “Clone Repository”. &lt;br /&gt;
&lt;br /&gt;
[[File:clone_repo.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Paste the URL of your fork into the box that pops up - this should be in the format of https://github.com/[YOURUSERNAME]/cmss13. Select a folder to download the repo into, and let it run. It may take awhile.&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Download Extensions ===&lt;br /&gt;
&lt;br /&gt;
These extensions to Visual Studio Code will allow the program to read DreamMaker code intelligently and allow you to navigate through the code faster. &lt;br /&gt;
&lt;br /&gt;
You can get them by clicking on the extensions tab - probably the fourth or fifth option, it looks like three boxes with a fourth being added - and downloading all the “Recommended” extensions.&lt;br /&gt;
&lt;br /&gt;
Also - search for and install GitLens. It makes using the source control features of Visual Studio Code much easier.&lt;br /&gt;
&lt;br /&gt;
[[File:recommended_extensions.png|400px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Configuring Language Client ===&lt;br /&gt;
Debugging features like breakpoints rely on the language server to be installed and working.&lt;br /&gt;
&lt;br /&gt;
* Search for &amp;quot;@enabled Language Client&amp;quot; in extensions&lt;br /&gt;
* Click the gear and then Extension Settings&lt;br /&gt;
* Enable Auto Update&lt;br /&gt;
* Add/update the Byond Path to your BYOND installation folder (will be a folder with unist.exe and 6 other folders)&lt;br /&gt;
* Restart Visual Studio Code&lt;br /&gt;
&lt;br /&gt;
Auto Update will ensure you have the latest version of the language server installed in a temporary folder for Visual Studio Code. A correct path to the BYOND installation folder will allow the language server to compile and parse the code.&lt;br /&gt;
&lt;br /&gt;
NOTE: As of writing, BYOND 515.1633+ is functional with the language client server (dm-langserver 1.8.0+19 using auxtools commit: v2.3.3).&lt;br /&gt;
[[File:Language Client Settings.png|655x655px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 6: Finishing Up ===&lt;br /&gt;
&lt;br /&gt;
You’ve now got a complete clone of the CM-SS13 codebase on your local computer!&lt;br /&gt;
&lt;br /&gt;
== Making a Change ==&lt;br /&gt;
&lt;br /&gt;
All changes you make to the code must be done on a new branch. &lt;br /&gt;
&lt;br /&gt;
A branch is another version of your codebase - made from your “master” branch - which should be identical to the “master” branch present on the main repo - which changes can be made to without affecting your “master” branch.&lt;br /&gt;
&lt;br /&gt;
A “commit” is a save of your changes to the code you’ve made. Every time you “commit” your changes to the branch, you are saving all your changes made so far. All code must be “committed” before it can be sent to the main repository.&lt;br /&gt;
&lt;br /&gt;
To start with making changes, you must make a new branch on your forked repository, from your master branch. Your master branch should never be committed to, and should be a clean state.&lt;br /&gt;
&lt;br /&gt;
Every PR you make should have a new branch. This allows for commits you make on different branches to not affect your other branches, letting you work on multiple projects at once.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Making a New Branch ===&lt;br /&gt;
&lt;br /&gt;
Press Control + Shift + P to bring up the Command Pallet. This allows you to control Visual Studio Control easily, but we want the command “Create branch from...”. Type that in and press enter to run it. Give your branch a name - like new-helmet. Select which branch to make it from - that will be your master branch. &lt;br /&gt;
&lt;br /&gt;
[[File:create_branch_from.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Then, switch to this branch. You can do this at the bottom of the Source Control tab, under the Branches title - you might have to click on it to show all your branches. Right click on your new branch, and select the option to switch to it.&lt;br /&gt;
&lt;br /&gt;
[[File:switch_branch.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Now, you can make whatever changes you like, and you can commit them to this branch without altering your master branch.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Modifying the Code ===&lt;br /&gt;
&lt;br /&gt;
Now, if you make any change to any file within the repo, Git will notice and add it to the modified files in the Source Control tab.&lt;br /&gt;
&lt;br /&gt;
You can make a simple change - such as altering an item description - just to see your code changes reflected in game. To find an item, use the Search tab on the left - the magnifying glass - and type in the name or description if the item as it is in game.&lt;br /&gt;
&lt;br /&gt;
[[File:searching.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once you’ve made this change, it’ll be noticed at the top of the Source Control tab.&lt;br /&gt;
&lt;br /&gt;
[[File:changes.png|400px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Testing your Code ===&lt;br /&gt;
&lt;br /&gt;
Press F5 - this will start your code with the debugger attached. This will automatically pause the server and tell you when an error - usually known as a runtime - occurs.&lt;br /&gt;
&lt;br /&gt;
You can press Control-F5 to start without the debugger.&lt;br /&gt;
&lt;br /&gt;
Then, at the bottom right of your Windows interface, click the chevron to view your hidden processes. Click on the green DreamDaemon circle, and you can see the server process that has booted up. Then, on the World tab at the top, press Join. This will log you in to the server, where you will automatically have full Admin permissions.&lt;br /&gt;
&lt;br /&gt;
Find your item in game - or spawn it in with the admin game-panel - and it should have the changes you’ve made in the code. If it doesn’t- you probably didn’t save the file. Terminate the server using the stop button on Visual Studio Code or by right clicking on the DreamDaemon process and pressing Stop.&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Setting up Git to Commit ===&lt;br /&gt;
In order to be able to commit changes, Git needs to know who you are. This requires an email and a username - in most cases, your username should be the same as your GitHub username. The email address can be either an email you&#039;re okay with people knowing - or the private email provided by GitHub. This can be obtained at [https://github.com/settings/email https://github.com/settings/emails] under the &amp;quot;Keep my email address private&amp;quot; setting. &lt;br /&gt;
&lt;br /&gt;
Then, you need to open a new Terminal window inside Visual Studio Code. Using the top bar, navigate to &#039;Terminal&#039; and &#039;New Terminal&#039;. A window should appear at the bottom of your screen, containing a command line interface. Run the following commands:&amp;lt;pre&amp;gt;&lt;br /&gt;
git config --global user.email &amp;quot;your@email.here&amp;quot;&lt;br /&gt;
git config --global user.name &amp;quot;yourusernamehere&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Committing your Changes ===&lt;br /&gt;
&lt;br /&gt;
At the top of the Source Control tab, your modified file should be under “Changes”. Hover over the file name you have modified, and press the Plus symbol - or do the same over the Changes button to “stage” your changes.&lt;br /&gt;
&lt;br /&gt;
[[File:example_commit.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once your changes have been “staged”, they have been selected to be committed. You can give it a commit message on the box with “Message”, and press the tick at the top to commit those changes.&lt;br /&gt;
&lt;br /&gt;
[[File:example_stage.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once this has been completed, you’ve committed your changes locally - but they have not been published to your GitHub fork.&lt;br /&gt;
&lt;br /&gt;
=== Step 6: Publishing to GitHub ===&lt;br /&gt;
&lt;br /&gt;
This is quite simple. On the Source Control tab, you should now see the “Publish Branch”. This will publish your branch, along with your changes, to your fork on GitHub. You can navigate to it on the web to see these changes.&lt;br /&gt;
&lt;br /&gt;
[[File:publish_branch.png|400px]]&lt;br /&gt;
&lt;br /&gt;
If you make any further changes to this branch and commit them, you will see the “Sync Changes” option instead. This does the same thing - “pushing” all your changes to your fork on GitHub.&lt;br /&gt;
&lt;br /&gt;
[[File:example_sync.png|400px]]&lt;br /&gt;
&lt;br /&gt;
== Making a Pull Request ==&lt;br /&gt;
&lt;br /&gt;
A “pull request” is a *request* for the main repository to *pull* - or more accurately, merge - the contents of your branch into the master branch. This process allows for code to be tested and reviewed by maintainers/developers, before being merged into the master branch.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Navigating the Web Interface ===&lt;br /&gt;
&lt;br /&gt;
Head to your repository on GitHub - not the main CM-SS13 repo. Then, click on “master” and type in the name of your branch. &lt;br /&gt;
&lt;br /&gt;
[[File:navigating_github_create_pr.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Hit “Contribute” on the right, and it’ll bring up the option to Create Pull Request. Clicking on this automatically sets the merge as being from your branch to the master branch at the main CM-SS13 repository.&lt;br /&gt;
&lt;br /&gt;
[[File:auto_merge.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Hopefully, there&#039;s no merge conflicts, and it gives the happy green &amp;quot;Able to automatically merge&amp;quot; - however, if someone else has changed code you&#039;re changing in your PR after you made the branch for this feature, you&#039;ll need to manually deconflict the files. Read on for more about merge conflicts.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Creating the Pull Request ===&lt;br /&gt;
&lt;br /&gt;
Give your PR a good title - this will be the message of the commit to the main branch containing all your code.&lt;br /&gt;
&lt;br /&gt;
[[File:title.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, fill in the PR description, including a descriptive changelog. Put your BYOND username next to the first :cl: to ensure you are accurately credited.&lt;br /&gt;
&lt;br /&gt;
[[File:changelog.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, hit Create Pull Request (or don’t, if you’re uselessly changing one description as a test). &lt;br /&gt;
&lt;br /&gt;
[[File:create_pull_request.png|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Code Review ===&lt;br /&gt;
&lt;br /&gt;
GitHub will automatically run some tests on your code, which may fail, resulting in you having to change your code. The developers will review your code, and may also request changes. That&#039;ll look like this.&lt;br /&gt;
&lt;br /&gt;
[[File:github_checks.png|800px]]&lt;br /&gt;
&lt;br /&gt;
In order to carry out the changes, simply make the changes on your branch on your local repository, and press “Sync Changes”, this will automatically update the PR.&lt;br /&gt;
&lt;br /&gt;
If a developer has marked your PR as a draft, you will have to mark it as being ready for review. You can do this at the bottom of the web interface on your PR.&lt;br /&gt;
&lt;br /&gt;
== Staying in Sync ==&lt;br /&gt;
&lt;br /&gt;
As other PRs are merged into the repository, your branch will slowly become out of date. This will become an issue over time, as you modify code that has been changed by another recent PR, and you find conflicts that didn’t need to happen.&lt;br /&gt;
&lt;br /&gt;
To avoid this, regularly go to your master branch of your fork on the web interface, and press “Sync fork” and &amp;quot;Update branch&amp;quot;, to add all the commits recently merged to your fork.&lt;br /&gt;
&lt;br /&gt;
[[File:update_branch.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, on Visual Studio Code, you can “Sync Changes” to update your local copy of the master branch.&lt;br /&gt;
&lt;br /&gt;
Do this regularly to ensure you don’t fall out of date with any changes.&lt;br /&gt;
&lt;br /&gt;
= Appendix =&lt;br /&gt;
&lt;br /&gt;
== Merge Conflicts ==&lt;br /&gt;
When your PR is conflicting with master, this means that there are places that both you and someone else have both altered and a decision has to be made to decide what that file or line of code should be. To begin the process to resolve this, you need to merge upstream/master into your branch. (VSC Source control has an Add Remotes option in the Remotes section of Source Control where you can add the link to the .git of the main repository). This will initiate any merge hooks automatically explained more below.&lt;br /&gt;
&lt;br /&gt;
=== Mapping Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Sometimes mapping conflicts can be handled automatically via a merge hook. Install the git hooks in tools/hooks by hitting “Install.bat” (Windows) or &amp;quot;Install.sh&amp;quot; (Linux). Should a single tile be altered by both you and someone else, a mapping conflict marker will be placed in that location that will cause lint errors and yell in chat. This will help during mapping conflicts by marking areas that are conflicting, allowing you to open an editor (such as StrongDMM) to look for the conflict markers and resolve the issue.&lt;br /&gt;
&lt;br /&gt;
Should a conflict like this occur, you should then open the map editor (StrongDMM) and look for the conflict markers. In text, it will look like the conflict has entirely disappeared - but it *hasn’t* - the MapMerger has just automatically dumped everything from the conflicting branches together in a mess that *you* have to fix.&lt;br /&gt;
&lt;br /&gt;
=== DMI (Icon File) Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Just like with mapping conflicts these conflicts can often be handled automatically via a merge hook. Install the git hooks in tools/hooks by hitting “Install.bat” (Windows) or &amp;quot;Install.sh&amp;quot; (Linux). More often than not any new icons that someone else added will just be appended to the end of the file. But if both you and someone else alter the same icon_state of something, that will have to be manually resolved. In this situation just open up the DMI file in either Dreamaker or VSC&#039;s DMI Editor and adjust it as needed. Ultimately use the IDB (Icon Diff Bot) checks to double check you haven&#039;t unintentionally removed a icon_state someone added.&lt;br /&gt;
&lt;br /&gt;
=== Code Conflicts ===&lt;br /&gt;
&lt;br /&gt;
There is no hook to automatically handle code conflicts. Find the conflict markers in conflicting files indicated with a bunch of &amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; and &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;. VSC should make this obvious, and in some cases, deconflict the files itself. Where it fails to do so, you will need to remove the conflict markers and add the code together from both branches as applicable. Be sure to test if the changes work. For more information see https://code.visualstudio.com/docs/sourcecontrol/overview#_merge-conflicts&lt;br /&gt;
&lt;br /&gt;
== Glossary ==&lt;br /&gt;
&lt;br /&gt;
=== Branch ===&lt;br /&gt;
&lt;br /&gt;
A version of your fork that you can freely commit changes to without affecting other branches.&lt;br /&gt;
&lt;br /&gt;
=== Commit ===&lt;br /&gt;
&lt;br /&gt;
A change to a branch, can be of any size from a single space added to one file to completely rewriting the entire repository.&lt;br /&gt;
&lt;br /&gt;
=== Fork ===&lt;br /&gt;
&lt;br /&gt;
A copy of the CM-SS13 repository that you own, and can make whatever changes to that you like without impacting the main repo.&lt;br /&gt;
&lt;br /&gt;
=== Repository ===&lt;br /&gt;
&lt;br /&gt;
Often known as a repo. Ours contains all of the code, maps and assets for CM-SS13.&lt;br /&gt;
&lt;br /&gt;
=== PR ===&lt;br /&gt;
&lt;br /&gt;
Pull Request - a request for the main repository to merge the changes present in one of the branches of your fork into the master branch of the main, upstream repository.&lt;br /&gt;
&lt;br /&gt;
=== Merge ===&lt;br /&gt;
&lt;br /&gt;
Where all the commits from a branch are applied to another branch. For example, merging your origin branch containing a new feature to an upstream master branch.&lt;br /&gt;
&lt;br /&gt;
=== Merge Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Where two branches from separate contributors have touched the same code, when one of them is merged, you will have a conflict preventing automatic merging. This involves manually fitting the code together, allowing both changes to exist without overwriting either.&lt;br /&gt;
&lt;br /&gt;
=== Remote ===&lt;br /&gt;
&lt;br /&gt;
A remote is a version of your repository that is not stored on your computer - such as on GitHub. This includes both your fork and the upstream, main CM-SS13 repo.&lt;br /&gt;
&lt;br /&gt;
=== Origin ===&lt;br /&gt;
&lt;br /&gt;
This will be your fork of the CM-SS13 repository.&lt;br /&gt;
&lt;br /&gt;
=== Upstream ===&lt;br /&gt;
&lt;br /&gt;
The upstream of your fork will be the main CM-SS13 repo. Think of changes flowing down a stream from the main repo to your fork when you “Fetch Upstream”.&lt;br /&gt;
&lt;br /&gt;
=== Git ===&lt;br /&gt;
&lt;br /&gt;
The version control system used by CM-SS13, allowing us to synchronise changes being made by many different contributor - and easily go back if something goes wrong.&lt;br /&gt;
&lt;br /&gt;
=== Diff ===&lt;br /&gt;
&lt;br /&gt;
Shows the changes between the current copy of the code and the new code that you have committed.&lt;br /&gt;
&lt;br /&gt;
=== VSC / VS Code === &lt;br /&gt;
&lt;br /&gt;
Visual Studio Code, the text editor we use for DM development.&lt;/div&gt;</summary>
		<author><name>Drulikar</name></author>
	</entry>
	<entry>
		<id>https://cm-ss13.com/w/index.php?title=File:Fork_Actions_Settings.png&amp;diff=34425</id>
		<title>File:Fork Actions Settings.png</title>
		<link rel="alternate" type="text/html" href="https://cm-ss13.com/w/index.php?title=File:Fork_Actions_Settings.png&amp;diff=34425"/>
		<updated>2024-12-05T06:40:57Z</updated>

		<summary type="html">&lt;p&gt;Drulikar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;How to disable actions from running on your fork.&lt;/div&gt;</summary>
		<author><name>Drulikar</name></author>
	</entry>
	<entry>
		<id>https://cm-ss13.com/w/index.php?title=File:Recommended_extensions.png&amp;diff=34328</id>
		<title>File:Recommended extensions.png</title>
		<link rel="alternate" type="text/html" href="https://cm-ss13.com/w/index.php?title=File:Recommended_extensions.png&amp;diff=34328"/>
		<updated>2024-11-17T20:00:54Z</updated>

		<summary type="html">&lt;p&gt;Drulikar: Drulikar uploaded a new version of File:Recommended extensions.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;File uploaded with MsUpload&lt;/div&gt;</summary>
		<author><name>Drulikar</name></author>
	</entry>
	<entry>
		<id>https://cm-ss13.com/w/index.php?title=Guide_to_Git&amp;diff=31723</id>
		<title>Guide to Git</title>
		<link rel="alternate" type="text/html" href="https://cm-ss13.com/w/index.php?title=Guide_to_Git&amp;diff=31723"/>
		<updated>2024-06-21T22:08:59Z</updated>

		<summary type="html">&lt;p&gt;Drulikar: Tweaked aux tools note on supported versions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Guide to Git = &lt;br /&gt;
&lt;br /&gt;
== Setting up your Coding Environment ==&lt;br /&gt;
&lt;br /&gt;
Though you can use DreamMaker, and external Git software, for modifying your code and maps, all modern SS13 tooling is set up for Visual Studio Code, so it is highly recommended. You can jump to variable definitions, procs and atoms with ease.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Downloading Visual Studio Code ===&lt;br /&gt;
&lt;br /&gt;
Visual Studio Code is a free code editor (from Microsoft) that you can use to edit, test and publish your code to GitHub. &lt;br /&gt;
&lt;br /&gt;
You can download it from https://code.visualstudio.com/ and run the installer.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Forking the Repository === &lt;br /&gt;
&lt;br /&gt;
Go to https://github.com/cmss13-devs/cmss13, and at the top right, hit “Fork” - you’ll need a GitHub account for this.&lt;br /&gt;
&lt;br /&gt;
[[File:fork.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Follow the prompts that come up, and you’ll have your own copy of the code on GitHub.&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Download Git === &lt;br /&gt;
&lt;br /&gt;
You’ll need Git installed to make any changes to the repository. Download it from https://git-scm.com/downloads. &lt;br /&gt;
&lt;br /&gt;
Then, on Visual Studio Code, under the Source Control tab on the left bar - the third option down, you should be presented with the option to “Clone Repository”. &lt;br /&gt;
&lt;br /&gt;
[[File:clone_repo.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Paste the URL of your fork into the box that pops up - this should be in the format of https://github.com/[YOURUSERNAME]/cmss13. Select a folder to download the repo into, and let it run. It may take awhile.&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Download Extensions ===&lt;br /&gt;
&lt;br /&gt;
These extensions to Visual Studio Code will allow the program to read DreamMaker code intelligently and allow you to navigate through the code faster. &lt;br /&gt;
&lt;br /&gt;
You can get them by clicking on the extensions tab - probably the fourth or fifth option, it looks like three boxes with a fourth being added - and downloading all the “Recommended” extensions.&lt;br /&gt;
&lt;br /&gt;
Also - search for and install GitLens. It makes using the source control features of Visual Studio Code much easier.&lt;br /&gt;
&lt;br /&gt;
[[File:recommended_extensions.png|400px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Configuring Language Client ===&lt;br /&gt;
Debugging features like breakpoints rely on the language server to be installed and working.&lt;br /&gt;
&lt;br /&gt;
* Search for &amp;quot;@enabled Language Client&amp;quot; in extensions&lt;br /&gt;
* Click the gear and then Extension Settings&lt;br /&gt;
* Enable Auto Update&lt;br /&gt;
* Add/update the Byond Path to your BYOND installation folder (will be a folder with unist.exe and 6 other folders)&lt;br /&gt;
* Restart Visual Studio Code&lt;br /&gt;
&lt;br /&gt;
Auto Update will ensure you have the latest version of the language server installed in a temporary folder for Visual Studio Code. A correct path to the BYOND installation folder will allow the language server to compile and parse the code.&lt;br /&gt;
&lt;br /&gt;
NOTE: As of writing, BYOND 515.1633+ is functional with the language client server (dm-langserver 1.8.0+19 using auxtools commit: v2.3.3).&lt;br /&gt;
[[File:Language Client Settings.png|655x655px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 6: Finishing Up ===&lt;br /&gt;
&lt;br /&gt;
You’ve now got a complete clone of the CM-SS13 codebase on your local computer!&lt;br /&gt;
&lt;br /&gt;
== Making a Change ==&lt;br /&gt;
&lt;br /&gt;
All changes you make to the code must be done on a new branch. &lt;br /&gt;
&lt;br /&gt;
A branch is another version of your codebase - made from your “master” branch - which should be identical to the “master” branch present on the main repo - which changes can be made to without affecting your “master” branch.&lt;br /&gt;
&lt;br /&gt;
A “commit” is a save of your changes to the code you’ve made. Every time you “commit” your changes to the branch, you are saving all your changes made so far. All code must be “committed” before it can be sent to the main repository.&lt;br /&gt;
&lt;br /&gt;
To start with making changes, you must make a new branch on your forked repository, from your master branch. Your master branch should never be committed to, and should be a clean state.&lt;br /&gt;
&lt;br /&gt;
Every PR you make should have a new branch. This allows for commits you make on different branches to not affect your other branches, letting you work on multiple projects at once.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Making a New Branch ===&lt;br /&gt;
&lt;br /&gt;
Press Control + Shift + P to bring up the Command Pallet. This allows you to control Visual Studio Control easily, but we want the command “Create branch from...”. Type that in and press enter to run it. Give your branch a name - like new-helmet. Select which branch to make it from - that will be your master branch. &lt;br /&gt;
&lt;br /&gt;
[[File:create_branch_from.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Then, switch to this branch. You can do this at the bottom of the Source Control tab, under the Branches title - you might have to click on it to show all your branches. Right click on your new branch, and select the option to switch to it.&lt;br /&gt;
&lt;br /&gt;
[[File:switch_branch.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Now, you can make whatever changes you like, and you can commit them to this branch without altering your master branch.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Modifying the Code ===&lt;br /&gt;
&lt;br /&gt;
Now, if you make any change to any file within the repo, Git will notice and add it to the modified files in the Source Control tab.&lt;br /&gt;
&lt;br /&gt;
You can make a simple change - such as altering an item description - just to see your code changes reflected in game. To find an item, use the Search tab on the left - the magnifying glass - and type in the name or description if the item as it is in game.&lt;br /&gt;
&lt;br /&gt;
[[File:searching.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once you’ve made this change, it’ll be noticed at the top of the Source Control tab.&lt;br /&gt;
&lt;br /&gt;
[[File:changes.png|400px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Testing your Code ===&lt;br /&gt;
&lt;br /&gt;
Press F5 - this will start your code with the debugger attached. This will automatically pause the server and tell you when an error - usually known as a runtime - occurs.&lt;br /&gt;
&lt;br /&gt;
You can press Control-F5 to start without the debugger.&lt;br /&gt;
&lt;br /&gt;
Then, at the bottom right of your Windows interface, click the chevron to view your hidden processes. Click on the green DreamDaemon circle, and you can see the server process that has booted up. Then, on the World tab at the top, press Join. This will log you in to the server, where you will automatically have full Admin permissions.&lt;br /&gt;
&lt;br /&gt;
Find your item in game - or spawn it in with the admin game-panel - and it should have the changes you’ve made in the code. If it doesn’t- you probably didn’t save the file. Terminate the server using the stop button on Visual Studio Code or by right clicking on the DreamDaemon process and pressing Stop.&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Committing your Changes ===&lt;br /&gt;
&lt;br /&gt;
At the top of the Source Control tab, your modified file should be under “Changes”. Hover over the file name you have modified, and press the Plus symbol - or do the same over the Changes button to “stage” your changes.&lt;br /&gt;
&lt;br /&gt;
[[File:example_commit.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once your changes have been “staged”, they have been selected to be committed. You can give it a commit message on the box with “Message”, and press the tick at the top to commit those changes.&lt;br /&gt;
&lt;br /&gt;
[[File:example_stage.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once this has been completed, you’ve committed your changes locally - but they have not been published to your GitHub fork.&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Publishing to GitHub ===&lt;br /&gt;
&lt;br /&gt;
This is quite simple. On the Source Control tab, you should now see the “Publish Branch”. This will publish your branch, along with your changes, to your fork on GitHub. You can navigate to it on the web to see these changes.&lt;br /&gt;
&lt;br /&gt;
[[File:publish_branch.png|400px]]&lt;br /&gt;
&lt;br /&gt;
If you make any further changes to this branch and commit them, you will see the “Sync Changes” option instead. This does the same thing - “pushing” all your changes to your fork on GitHub.&lt;br /&gt;
&lt;br /&gt;
[[File:example_sync.png|400px]]&lt;br /&gt;
&lt;br /&gt;
== Making a Pull Request ==&lt;br /&gt;
&lt;br /&gt;
A “pull request” is a *request* for the main repository to *pull* - or more accurately, merge - the contents of your branch into the master branch. This process allows for code to be tested and reviewed by maintainers/developers, before being merged into the master branch.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Navigating the Web Interface ===&lt;br /&gt;
&lt;br /&gt;
Head to your repository on GitHub - not the main CM-SS13 repo. Then, click on “master” and type in the name of your branch. &lt;br /&gt;
&lt;br /&gt;
[[File:navigating_github_create_pr.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Hit “Contribute” on the right, and it’ll bring up the option to Create Pull Request. Clicking on this automatically sets the merge as being from your branch to the master branch at the main CM-SS13 repository.&lt;br /&gt;
&lt;br /&gt;
[[File:auto_merge.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Hopefully, there&#039;s no merge conflicts, and it gives the happy green &amp;quot;Able to automatically merge&amp;quot; - however, if someone else has changed code you&#039;re changing in your PR after you made the branch for this feature, you&#039;ll need to manually deconflict the files. Read on for more about merge conflicts.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Creating the Pull Request ===&lt;br /&gt;
&lt;br /&gt;
Give your PR a good title - this will be the message of the commit to the main branch containing all your code.&lt;br /&gt;
&lt;br /&gt;
[[File:title.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, fill in the PR description, including a descriptive changelog. Put your BYOND username next to the first :cl: to ensure you are accurately credited.&lt;br /&gt;
&lt;br /&gt;
[[File:changelog.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, hit Create Pull Request (or don’t, if you’re uselessly changing one description as a test). &lt;br /&gt;
&lt;br /&gt;
[[File:create_pull_request.png|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Code Review ===&lt;br /&gt;
&lt;br /&gt;
GitHub will automatically run some tests on your code, which may fail, resulting in you having to change your code. The developers will review your code, and may also request changes. That&#039;ll look like this.&lt;br /&gt;
&lt;br /&gt;
[[File:github_checks.png|800px]]&lt;br /&gt;
&lt;br /&gt;
In order to carry out the changes, simply make the changes on your branch on your local repository, and press “Sync Changes”, this will automatically update the PR.&lt;br /&gt;
&lt;br /&gt;
If a developer has marked your PR as a draft, you will have to mark it as being ready for review. You can do this at the bottom of the web interface on your PR.&lt;br /&gt;
&lt;br /&gt;
== Staying in Sync ==&lt;br /&gt;
&lt;br /&gt;
As other PRs are merged into the repository, your branch will slowly become out of date. This will become an issue over time, as you modify code that has been changed by another recent PR, and you find conflicts that didn’t need to happen.&lt;br /&gt;
&lt;br /&gt;
To avoid this, regularly go to your master branch of your fork on the web interface, and press “Sync fork” and &amp;quot;Update branch&amp;quot;, to add all the commits recently merged to your fork.&lt;br /&gt;
&lt;br /&gt;
[[File:update_branch.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, on Visual Studio Code, you can “Sync Changes” to update your local copy of the master branch.&lt;br /&gt;
&lt;br /&gt;
Do this regularly to ensure you don’t fall out of date with any changes.&lt;br /&gt;
&lt;br /&gt;
= Appendix =&lt;br /&gt;
&lt;br /&gt;
== Merge Conflicts ==&lt;br /&gt;
When your PR is conflicting with master, this means that there are places that both you and someone else have both altered and a decision has to be made to decide what that file or line of code should be. To begin the process to resolve this, you need to merge upstream/master into your branch. (VSC Source control has an Add Remotes option in the Remotes section of Source Control where you can add the link to the .git of the main repository). This will initiate any merge hooks automatically explained more below.&lt;br /&gt;
&lt;br /&gt;
=== Mapping Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Sometimes mapping conflicts can be handled automatically via a merge hook. Install the git hooks in tools/hooks by hitting “Install.bat” (Windows) or &amp;quot;Install.sh&amp;quot; (Linux). Should a single tile be altered by both you and someone else, a mapping conflict marker will be placed in that location that will cause lint errors and yell in chat. This will help during mapping conflicts by marking areas that are conflicting, allowing you to open an editor (such as StrongDMM) to look for the conflict markers and resolve the issue.&lt;br /&gt;
&lt;br /&gt;
Should a conflict like this occur, you should then open the map editor (StrongDMM) and look for the conflict markers. In text, it will look like the conflict has entirely disappeared - but it *hasn’t* - the MapMerger has just automatically dumped everything from the conflicting branches together in a mess that *you* have to fix.&lt;br /&gt;
&lt;br /&gt;
=== DMI (Icon File) Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Just like with mapping conflicts these conflicts can often be handled automatically via a merge hook. Install the git hooks in tools/hooks by hitting “Install.bat” (Windows) or &amp;quot;Install.sh&amp;quot; (Linux). More often than not any new icons that someone else added will just be appended to the end of the file. But if both you and someone else alter the same icon_state of something, that will have to be manually resolved. In this situation just open up the DMI file in either Dreamaker or VSC&#039;s DMI Editor and adjust it as needed. Ultimately use the IDB (Icon Diff Bot) checks to double check you haven&#039;t unintentionally removed a icon_state someone added.&lt;br /&gt;
&lt;br /&gt;
=== Code Conflicts ===&lt;br /&gt;
&lt;br /&gt;
There is no hook to automatically handle code conflicts. Find the conflict markers in conflicting files indicated with a bunch of &amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; and &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;. VSC should make this obvious, and in some cases, deconflict the files itself. Where it fails to do so, you will need to remove the conflict markers and add the code together from both branches as applicable. Be sure to test if the changes work. For more information see https://code.visualstudio.com/docs/sourcecontrol/overview#_merge-conflicts&lt;br /&gt;
&lt;br /&gt;
== Glossary ==&lt;br /&gt;
&lt;br /&gt;
=== Branch ===&lt;br /&gt;
&lt;br /&gt;
A version of your fork that you can freely commit changes to without affecting other branches.&lt;br /&gt;
&lt;br /&gt;
=== Commit ===&lt;br /&gt;
&lt;br /&gt;
A change to a branch, can be of any size from a single space added to one file to completely rewriting the entire repository.&lt;br /&gt;
&lt;br /&gt;
=== Fork ===&lt;br /&gt;
&lt;br /&gt;
A copy of the CM-SS13 repository that you own, and can make whatever changes to that you like without impacting the main repo.&lt;br /&gt;
&lt;br /&gt;
=== Repository ===&lt;br /&gt;
&lt;br /&gt;
Often known as a repo. Ours contains all of the code, maps and assets for CM-SS13.&lt;br /&gt;
&lt;br /&gt;
=== PR ===&lt;br /&gt;
&lt;br /&gt;
Pull Request - a request for the main repository to merge the changes present in one of the branches of your fork into the master branch of the main, upstream repository.&lt;br /&gt;
&lt;br /&gt;
=== Merge ===&lt;br /&gt;
&lt;br /&gt;
Where all the commits from a branch are applied to another branch. For example, merging your origin branch containing a new feature to an upstream master branch.&lt;br /&gt;
&lt;br /&gt;
=== Merge Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Where two branches from separate contributors have touched the same code, when one of them is merged, you will have a conflict preventing automatic merging. This involves manually fitting the code together, allowing both changes to exist without overwriting either.&lt;br /&gt;
&lt;br /&gt;
=== Remote ===&lt;br /&gt;
&lt;br /&gt;
A remote is a version of your repository that is not stored on your computer - such as on GitHub. This includes both your fork and the upstream, main CM-SS13 repo.&lt;br /&gt;
&lt;br /&gt;
=== Origin ===&lt;br /&gt;
&lt;br /&gt;
This will be your fork of the CM-SS13 repository.&lt;br /&gt;
&lt;br /&gt;
=== Upstream ===&lt;br /&gt;
&lt;br /&gt;
The upstream of your fork will be the main CM-SS13 repo. Think of changes flowing down a stream from the main repo to your fork when you “Fetch Upstream”.&lt;br /&gt;
&lt;br /&gt;
=== Git ===&lt;br /&gt;
&lt;br /&gt;
The version control system used by CM-SS13, allowing us to synchronise changes being made by many different contributor - and easily go back if something goes wrong.&lt;br /&gt;
&lt;br /&gt;
=== Diff ===&lt;br /&gt;
&lt;br /&gt;
Shows the changes between the current copy of the code and the new code that you have committed.&lt;br /&gt;
&lt;br /&gt;
=== VSC / VS Code === &lt;br /&gt;
&lt;br /&gt;
Visual Studio Code, the text editor we use for DM development.&lt;/div&gt;</summary>
		<author><name>Drulikar</name></author>
	</entry>
	<entry>
		<id>https://cm-ss13.com/w/index.php?title=Chemistry&amp;diff=30662</id>
		<title>Chemistry</title>
		<link rel="alternate" type="text/html" href="https://cm-ss13.com/w/index.php?title=Chemistry&amp;diff=30662"/>
		<updated>2024-04-21T01:12:22Z</updated>

		<summary type="html">&lt;p&gt;Drulikar: fix impedrezene anchor&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
{{Header&lt;br /&gt;
 |PrimaryColor = #C90000&lt;br /&gt;
 |HeaderContent = OOC Note&lt;br /&gt;
 |SubContent = Only [[Doctor|Doctors]], [[Researcher|Researchers]], [[Nurse|Nurses]] and the [[Chief Medical Officer|CMO]] should be messing with chemical substances. [[Hospital Corpsman|Hospital Corpsmen]] should be aware of overdose thresholds and medications that cause harm when mixed in a patient.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Tools of the Trade=&lt;br /&gt;
# &#039;&#039;&#039;Chem&#039;&#039;&#039; &#039;&#039;&#039;Dispenser&#039;&#039;&#039;: If you were a marine, this would be your rifle. It dispenses the basic chemicals if a beaker is placed inside. Runs off battery charge which replenishes over time. Has several settings for dispensing chems (5 to 40 units). [[File:ChemLab.png|thumbnail|border|right|Chemistry Lab]]&lt;br /&gt;
# &#039;&#039;&#039;ChemMaster&#039;&#039;&#039;: This machine is used to precisely control the amount of chemicals in a beaker, creating bottles and pills. Once a beaker is placed in, you can move desired amounts of it&#039;s contents to &amp;quot;buffer&amp;quot; by clicking on buttons present next to the name of the chemical. Clicking again while they&#039;re in &amp;quot;buffer&amp;quot; will flush them down disposals, aka they&#039;re lost forever. This setting can be changed by the button located between the beaker and buffer contents, just click it once to change to &amp;quot;transfer to beaker.&amp;quot; A pill bottle can be inserted into the machine to automatically hold created pills. You can insert and empty beaker into the chem master and click &amp;quot;create bottle&amp;quot; several times to get a bunch of 60u containers for free. You can make Phoron pills and dissolve them in your Phoron beaker as the quickest way of removing it from advanced chems.&lt;br /&gt;
# &#039;&#039;&#039;Chemical Storage&#039;&#039;&#039;: Chemical storage. It can hold beakers, bottles, pill bottles, pills, etc etc. Useful for not having your chems all over the floor, but people usually forget to check it when in need of something.&lt;br /&gt;
# &#039;&#039;&#039;Vendor&#039;&#039;&#039;: Holds restockable vials of key reagents, and syringes for faster chemical synthesizing.&lt;br /&gt;
# &#039;&#039;&#039;Beakers&#039;&#039;&#039;: Several empty beakers that can be used for various purposes, such as storing mixes for the cryo-cells.&lt;br /&gt;
# &#039;&#039;&#039;Grinder&#039;&#039;&#039;/&#039;&#039;&#039;Juicer&#039;&#039;&#039;: This is used to extract chemicals out of many things. For your uses, it&#039;ll be mostly pills and food. Most commonly used for grinding solid Phoron for your Clonexadone and Peridaxon needs.&lt;br /&gt;
# &#039;&#039;&#039;Boxes of pill bottles&#039;&#039;&#039;: Empty pill bottles to hold up to 16 pills per bottle.&lt;br /&gt;
# &#039;&#039;&#039;Dropper and 2 beakers of Cryoxadone&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Equipment==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Equipment !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Beakers and Bottles&#039;&#039;&#039; || &lt;br /&gt;
* Most basic tool of your trade. Right-clicking one can change it&#039;s transfer amount per click. Pills can be dissolved in beakers that already contain something. If you &amp;quot;use&amp;quot; one while holding it in hand, you will put a lid on it, preventing you from splashing it&#039;s contents by clicking on the floor by mistake. &lt;br /&gt;
* They come in bottle/small beaker - 60u, large beaker - 120u, and bluespace beaker - 300u.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Dropper&#039;&#039;&#039; || &lt;br /&gt;
* Like beakers, can be right-clicked for transfer amount. Used for moving small amounts of chemicals between other containers.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Syringe&#039;&#039;&#039; || &lt;br /&gt;
* Has two modes switched by &amp;quot;using&amp;quot; it - draw and inject. Hold 15u max, draw 5u per click. Can be used to take blood samples and inject them into mass spectometers for analysis. Using it on harm intent will instantly inject a random amount of the chemical inside while dealing minor brute damage and destroying the syringe. Injecting someone else takes a short time of both standing motionless.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Injector&#039;&#039;&#039; || &lt;br /&gt;
* Default ones hold 15u max. Injectors with bigger capacity can be made at the medilathe in research. They can be filled at the centrifuge in research. Pre-loaded injectors cannot be filled with more than their initial amount, for example, a dexalin plus autoinjector can hold only 1u no matter how hard you try to refill it. &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Pill&#039;&#039;&#039; || &lt;br /&gt;
* 60u max. Takes some time to use on someone, like the syringe. There&#039;s also a tiny delay between swallowing a pill and its contents entering your bloodstream, but it&#039;s too little to matter. Can be dissolved in a beaker already containing a solution.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Pill Bottle&#039;&#039;&#039; || &lt;br /&gt;
* Holds 16 pills max. Clicking on a tile with pills on it while holding the bottle will pick up all the pills scattered on it. &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Hypospray&#039;&#039;&#039; || &lt;br /&gt;
* Holds 30 units, and comes pre-loaded with tricordrazine. Can be drained and refilled with a syringe or unloaded and loaded with vial. Instantly injects 5u doses.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Syringe Case&#039;&#039;&#039; || &lt;br /&gt;
* Holds three syringes/bottles/injectors.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Labellers and Pens&#039;&#039;&#039; &lt;br /&gt;
|| &lt;br /&gt;
*Labels can be put on most things you can click on. Only one label may be applied to an item. Activate the labeller without entering a label to remove them.&lt;br /&gt;
*Pens replace the name of a chem-master bottle, so instead of bottle (Peridaxon) you get a Peridaxon bottle.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=Chemical mixes=&lt;br /&gt;
Various common mixes of medical reagents are ordered by hospital corpsmen. &#039;&#039;&#039;All of these recipes assume that you are using a bluespace beaker.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Mix Name !! Vendor and Chem Dispenser !! Chem Dispenser&lt;br /&gt;
|-&lt;br /&gt;
| {{anchor|imialky}}[[#imialky|&#039;&#039;&#039;ImiAlky&#039;&#039;&#039; (10u, 5u)]]&lt;br /&gt;
Also known as &#039;&#039;&#039;IA&#039;&#039;&#039;. Results in 160u of Imidazoline and 80u of Alkysine.&lt;br /&gt;
Overdoses 30u for both reagents (3 pills).&lt;br /&gt;
Used for healing brain damage and eye damage. &lt;br /&gt;
|| &lt;br /&gt;
*Add &#039;&#039;&#039;120u&#039;&#039;&#039; of Dylovene from the Chem Dispenser.&lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; Chlorine,&lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; Nitrogen,&lt;br /&gt;
*Add &#039;&#039;&#039;80u&#039;&#039;&#039; Carbon,&lt;br /&gt;
*Add &#039;&#039;&#039;80u&#039;&#039;&#039; Hydrogen&lt;br /&gt;
&lt;br /&gt;
Split into 16 pills.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restock the used bottles back on the Vendor once you are done. This can be done by dragging the bottles in one hand onto the Vendor. &lt;br /&gt;
|| &lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; Silicon, &#039;&#039;&#039;40u&#039;&#039;&#039; Nitrogen, &#039;&#039;&#039;40u&#039;&#039;&#039; Potassium to make &#039;&#039;&#039;120u&#039;&#039;&#039; of Dylovene,&lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; Chlorine,&lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; Nitrogen,&lt;br /&gt;
*Add &#039;&#039;&#039;80u&#039;&#039;&#039; Carbon,&lt;br /&gt;
*Add &#039;&#039;&#039;80u&#039;&#039;&#039; Hydrogen&lt;br /&gt;
&lt;br /&gt;
Split into 16 pills.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| {{anchor|merabica}}[[#merabica|&#039;&#039;&#039;MeraBica&#039;&#039;&#039; (7.5u, 7.5u)]]&lt;br /&gt;
Also known as &#039;&#039;&#039;MB&#039;&#039;&#039;. Results in 120u of [[#Meralyne|Meralyne]] and 120u of [[Chemistry#bicaridine|Bicaridine]].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Overdoses on 15u of [[#Meralyne|Meralyne]] and 30u of [[Chemistry#bicaridine|Bicaridine]] (2 and 3 pills respectively).&lt;br /&gt;
&lt;br /&gt;
Rapidly heals Brute damage. &lt;br /&gt;
||&lt;br /&gt;
*Add &#039;&#039;&#039;160u&#039;&#039;&#039; Bicaridine,&lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; Water,&lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; Carbon&lt;br /&gt;
&lt;br /&gt;
Split into 16 pills.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restock the used bottles back on the Vendor once you are done. This can be done by dragging the bottles in one hand onto the Vendor. &lt;br /&gt;
||&lt;br /&gt;
*Add &#039;&#039;&#039;160u&#039;&#039;&#039; Carbon, &lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; Water,&lt;br /&gt;
*Add &#039;&#039;&#039;30u&#039;&#039;&#039; Oxygen,&lt;br /&gt;
*Add &#039;&#039;&#039;30u&#039;&#039;&#039; Sugar&lt;br /&gt;
&lt;br /&gt;
Remove  &#039;&#039;&#039;20u&#039;&#039;&#039; Bicaridine using the ChemMaster to have &#039;&#039;&#039;120u&#039;&#039;&#039; of Bicaridine and &#039;&#039;&#039;120u&#039;&#039;&#039; Meralyne.&lt;br /&gt;
&lt;br /&gt;
Split into 16 pills &amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| {{anchor|keloderm}}[[#keloderm|&#039;&#039;&#039;KeloDerm&#039;&#039;&#039; (7.5u, 7.5u)]]&lt;br /&gt;
Also known as &#039;&#039;&#039;KD&#039;&#039;&#039;. Results in 120u of [[Chemistry#kelotane|Kelotane]] and 120u of [[Chemistry#dermaline|Dermaline]].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Overdoses on 30u of [[Chemistry#kelotane|Kelotane]] and 15u of [[Chemistry#dermaline|Dermaline]] (2 pills).&lt;br /&gt;
&lt;br /&gt;
Rapidly heals burn damage. &lt;br /&gt;
|| &lt;br /&gt;
*Add &#039;&#039;&#039;160u&#039;&#039;&#039; Kelotane,&lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; Oxygen,&lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; Phosphorus&lt;br /&gt;
&lt;br /&gt;
Split into 16 pills.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restock the used bottles back on the Vendor once you are done. This can be done by dragging the bottles in one hand onto the Vendor. &lt;br /&gt;
|| &lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; Carbon, Carbon, Silicon, Silicon, Oxygen, and Phosphorus.&lt;br /&gt;
&lt;br /&gt;
Split into 16 pills.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| {{anchor|tribica}}[[#tribica|&#039;&#039;&#039;TriBica&#039;&#039;&#039; (15u, 15u)]]&lt;br /&gt;
Also known as &#039;&#039;&#039;TB&#039;&#039;&#039;. Results in 240u of [[Chemistry#bicaridine|Bicaridine]] and 240u of [[Chemistry#tricordrazine|Tricordrazine]]. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Overdoses at 30u for both reagents (2 pills).&lt;br /&gt;
&lt;br /&gt;
Heals brute damage at a moderate rate and also slowly heals burns and toxin damage. &lt;br /&gt;
|| &lt;br /&gt;
* Add &#039;&#039;&#039;60u&#039;&#039;&#039; of Inaprovaline,&lt;br /&gt;
* Add &#039;&#039;&#039;120u&#039;&#039;&#039; Bicaridine,&lt;br /&gt;
* Add &#039;&#039;&#039;60u&#039;&#039;&#039; of Dylovene&lt;br /&gt;
&lt;br /&gt;
Split into 8 pills.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Add &#039;&#039;&#039;60u&#039;&#039;&#039; of Inaprovaline,&lt;br /&gt;
* Add &#039;&#039;&#039;120u&#039;&#039;&#039; Bicaridine,&lt;br /&gt;
* Add &#039;&#039;&#039;60u&#039;&#039;&#039; of Dylovene&lt;br /&gt;
&lt;br /&gt;
Split into 8 pills.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restock the used bottles back on the Vendor once you are done. This can be done by dragging the bottles in one hand onto the Vendor.&lt;br /&gt;
||&lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; Carbon, Sugar, Oxygen,&lt;br /&gt;
*Add &#039;&#039;&#039;30u&#039;&#039;&#039; Carbon, Carbon,&lt;br /&gt;
*Add &#039;&#039;&#039;20u&#039;&#039;&#039; Nitrogen, Potassium, Silicon&lt;br /&gt;
&lt;br /&gt;
Split into 8 pills.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; Carbon, Sugar, Oxygen,&lt;br /&gt;
*Add &#039;&#039;&#039;30u&#039;&#039;&#039; Carbon, Carbon,&lt;br /&gt;
*Add &#039;&#039;&#039;20u&#039;&#039;&#039; Nitrogen, Potassium, Silicon&lt;br /&gt;
&lt;br /&gt;
Split into 8 pills.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| {{anchor|nitrogenwater}}[[#nitrogenwater|&#039;&#039;&#039;NitrogenWater&#039;&#039;&#039; (10u, 10u)]]&lt;br /&gt;
More commonly referred to as &#039;&#039;&#039;NW&#039;&#039;&#039;. Helps deal with [[Chemistry#tramadol|Tramadol]] overdoses by reacting with in the body to create [[Chemistry#paracetamol|Paracetamol]], which has a higher overdose threshold of &#039;&#039;&#039;60u&#039;&#039;&#039; compared to [[Chemistry#tramadol|Tramadol&#039;s]] &#039;&#039;&#039;30u&#039;&#039;&#039;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Tramadol overdose &#039;&#039;&#039;neutralizer&#039;&#039;&#039;. Does &#039;&#039;&#039;not&#039;&#039;&#039; fix toxin damage caused by the overdose.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
This medical reagent has &#039;&#039;&#039;no overdose threshold&#039;&#039;&#039;. It should however be noted that [[Chemistry#tramadol|Tramadol]] and [[Chemistry#paracetamol|Paracetamol]] are toxic when mixed together. It is advised to double-check the patient for high levels of tramadol before using &#039;&#039;&#039;NW&#039;&#039;&#039;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
|| N/A &lt;br /&gt;
||&lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; of Nitrogen,&lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; of Water&lt;br /&gt;
&lt;br /&gt;
Split into 4. &amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| {{anchor|fe}}[[#fe|&#039;&#039;&#039;Iron&#039;&#039;&#039; (15u)]]&lt;br /&gt;
Also known as it&#039;s chemical name of &#039;&#039;&#039;Fe&#039;&#039;&#039;. Adding [[Chemistry#sugar|Sugar]] to the mixture does not help restore more blood. [[Chemistry#sugar|Sugar]] is nutritious to an extent (NTR 1) but not Hemogenic. Results in 240u of [[Chemistry#iron|Iron]]. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Overdoses at &#039;&#039;&#039;30u&#039;&#039;&#039;. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hemogenic level 3 (HMG 3). Restores lost blood faster. &lt;br /&gt;
|| &lt;br /&gt;
N/A &lt;br /&gt;
||&lt;br /&gt;
*Add &#039;&#039;&#039;240u&#039;&#039;&#039; of [[Chemistry#iron|Iron]]&lt;br /&gt;
&lt;br /&gt;
Split into 16 pills. &amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
{{anchor|ironsugar}}[[#ironsugar|&#039;&#039;&#039;IronSugar (7.5u, 7.5u)&#039;&#039;&#039;]]&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
Also known as &#039;&#039;&#039;IS&#039;&#039;&#039;. An objectively less effective version of just Iron. Results in &#039;&#039;&#039;120u&#039;&#039;&#039; of Sugar and &#039;&#039;&#039;120u&#039;&#039;&#039; of Iron.&lt;br /&gt;
&lt;br /&gt;
Overdoses at &#039;&#039;&#039;30u&#039;&#039;&#039; due to the Iron being present in the reagent. &amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;br&amp;gt; &lt;br /&gt;
|| &lt;br /&gt;
N/A&lt;br /&gt;
|| &lt;br /&gt;
*Add &#039;&#039;&#039;120u&#039;&#039;&#039; of Iron,&lt;br /&gt;
*Add &#039;&#039;&#039;120u&#039;&#039;&#039; of Sugar&lt;br /&gt;
&lt;br /&gt;
Split to 16. &amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| {{anchor|atd}}[[#atd|&#039;&#039;&#039;AriTricaDylo&#039;&#039;&#039; (5u, 5u, 5u)]]&lt;br /&gt;
Also known as &#039;&#039;&#039;ATD&#039;&#039;&#039;. Results in &#039;&#039;&#039;80u&#039;&#039;&#039; of [[Chemistry#arithrazine|Arithrazine]], &#039;&#039;&#039;80u&#039;&#039;&#039; of [[Chemistry#dylovene|Dylovene]], and &#039;&#039;&#039;80u&#039;&#039;&#039; of [[Chemistry#tricordrazine|Tricordrazine]]. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Overdoses at &#039;&#039;&#039;15u&#039;&#039;&#039; of [[Chemistry#arithrazine|Arithrazine]], &#039;&#039;&#039;30u&#039;&#039;&#039; of both [[Chemistry#dylovene|Dylovene]] and [[Chemistry#tricordrazine|Tricordrazine]]. (3 and 4 pills respectively).&lt;br /&gt;
&lt;br /&gt;
Potent Toxin damage healer. &lt;br /&gt;
||&lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; Inaprovaline,&lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; Phosphorous,&lt;br /&gt;
*Add &#039;&#039;&#039;180u&#039;&#039;&#039; Dylovene.&lt;br /&gt;
&lt;br /&gt;
Remove &#039;&#039;&#039;20u&#039;&#039;&#039; of [[Chemistry#dylovene|Dylovene]] to make &#039;&#039;&#039;80u&#039;&#039;&#039; of [[Chemistry#arithrazine|Arithrazine]], &#039;&#039;&#039;80u&#039;&#039;&#039; of [[Chemistry#dylovene|Dylovene]], and &#039;&#039;&#039;80u&#039;&#039;&#039; of [[Chemistry#tricordrazine|Tricordrazine]]&lt;br /&gt;
Split into 16 pills. &amp;lt;br&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
*Add &#039;&#039;&#039;15u&#039;&#039;&#039; Carbon, &#039;&#039;&#039;15u&#039;&#039;&#039; Oxygen, &#039;&#039;&#039;20u&#039;&#039;&#039; Sugar to make &#039;&#039;&#039;45u&#039;&#039;&#039; of Inaprovaline,&lt;br /&gt;
*Add &#039;&#039;&#039;55u&#039;&#039;&#039; Silicon, &#039;&#039;&#039;55u&#039;&#039;&#039; Nitrogen, &#039;&#039;&#039;55u&#039;&#039;&#039; Potassium to make &#039;&#039;&#039;165u&#039;&#039;&#039; of Dylovene,&lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; Phosphorous.&lt;br /&gt;
&#039;&#039;&#039;NOTE: Very important you do these in the exact order.&lt;br /&gt;
 &lt;br /&gt;
Remove &#039;&#039;&#039;5u&#039;&#039;&#039; Sugar using the ChemMaster to have 80u of [[Chemistry#arithrazine|Arithrazine]], 80u of [[Chemistry#dylovene|Dylovene]], and 80u of [[Chemistry#tricordrazine|Tricordrazine]].&lt;br /&gt;
&lt;br /&gt;
Split into 16 pills.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| {{anchor|dexplus}}[[#dexplus|&#039;&#039;&#039;Dexalin Plus&#039;&#039;&#039; (7.5u)]]&lt;br /&gt;
Also known as &#039;&#039;&#039;Dex+&#039;&#039;&#039;. Results in &#039;&#039;&#039;120u&#039;&#039;&#039; of [[Chemistry#dexalinplus|Dexalin Plus]].&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Overdoses on 15u of [[Chemistry#dexalinplus|Dexalin Plus]].&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Dexalin Plus instantly removes any initial oxygen damage.&amp;lt;br&amp;gt;&lt;br /&gt;
|| &lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; Dexalin,&lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; Carbon,&lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; Iron&lt;br /&gt;
&lt;br /&gt;
Split into 16 pills.&lt;br /&gt;
 || &lt;br /&gt;
*Add &#039;&#039;&#039;23u&#039;&#039;&#039; of Phoron (grind a bar up and use a dropper)&lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; Oxygen, Oxygen,&lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; Carbon, Iron&lt;br /&gt;
&lt;br /&gt;
To fill up a bottle of Dex+, split ONLY the 120u of Dex+ into 16 pills.&amp;lt;br&amp;gt;&lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; Oxygen, Oxygen,&lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; Carbon, Iron&lt;br /&gt;
&lt;br /&gt;
Repeat the above step 3 more times.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Description !! Bottle !! Tank + Bottle&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;UNGA&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
UNGA is a mix of commonly used medicines combined into one substance: &amp;quot;UNGA juice&amp;quot;. The final product should be pink once everything is mixed in. &#039;&#039;&#039;UNGA should only be bottled (60u), do not make UNGA pills.&#039;&#039;&#039; &lt;br /&gt;
|| &lt;br /&gt;
OD limits depend on the chemicals in contained in the UNGA juice. The OD limit for this version of UNGA will be &#039;&#039;&#039;15u&#039;&#039;&#039; due to containing Dermaline. It is recommended to add all the medicines in the Bluespace beaker first, then remove certain amounts in the ChemMaster so that every chemical is 12u. This is used to make a full bottle (60u) containing equal proportions.&lt;br /&gt;
&lt;br /&gt;
*Add &#039;&#039;&#039;12u&#039;&#039;&#039; Tricordrazine,&lt;br /&gt;
*Add &#039;&#039;&#039;12u&#039;&#039;&#039; Bicaridine,&lt;br /&gt;
*Add &#039;&#039;&#039;12u&#039;&#039;&#039; Kelotane,&lt;br /&gt;
*Add &#039;&#039;&#039;12u&#039;&#039;&#039; Dermaline,&lt;br /&gt;
*Add &#039;&#039;&#039;12u&#039;&#039;&#039; Oxycodone,&lt;br /&gt;
*Add &#039;&#039;&#039;12u&#039;&#039;&#039; Meralyne&lt;br /&gt;
||Add the following to the tank:&lt;br /&gt;
*Add &#039;&#039;&#039;120u&#039;&#039;&#039; Bicaridine ,&lt;br /&gt;
*Add 120u Kelotane,&lt;br /&gt;
*Add 60u Inaprovaline,&lt;br /&gt;
*Add &#039;&#039;&#039;60u&#039;&#039;&#039; Dylovene,&lt;br /&gt;
*Add &#039;&#039;&#039;120u&#039;&#039;&#039; Oxycodone&lt;br /&gt;
Add the following to a beaker:&lt;br /&gt;
&lt;br /&gt;
* Add 40u Bicaridine,&lt;br /&gt;
* Add 40u Kelotane,&lt;br /&gt;
* Add 40u Carbon, Water,&lt;br /&gt;
* Add 40u Oxygen, Phosphorus&lt;br /&gt;
&lt;br /&gt;
Add the beaker&#039;s contents to the tank.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Chemicals=&lt;br /&gt;
The amount of a certain chemical in a marine&#039;s blood decreases by its &#039;&#039;&#039;metabolism&#039;&#039;&#039; value every life tick. Life ticks happen once every 2 seconds. The &amp;quot;effect&amp;quot; column contains the chemical&#039;s effects per tick unless stated otherwise.&lt;br /&gt;
The ratio column indicates how much of the chem you get when mixing. For example, a chem with a ratio of 4:4 takes 4 units of its component chemicals to make 4 units of the chemical itself.&lt;br /&gt;
Chems marked with &#039;&#039;&#039;(CATALYST)&#039;&#039;&#039; are not expended during the reaction.&lt;br /&gt;
The &amp;quot;OD&amp;quot; column for some chemicals has two numbers. The first is the threshold for the &amp;quot;normal&amp;quot; OD, the second is for critical OD. The next column &amp;quot;OD effects&amp;quot; contains the consequences of overdosing on this reagent. &#039;&#039;&#039;(C)&#039;&#039;&#039; indicates the effect of a critical overdose.&lt;br /&gt;
&lt;br /&gt;
Cocktails and drinks can be found [[Drinks|here]]. &lt;br /&gt;
&lt;br /&gt;
==Basic==&lt;br /&gt;
Most of these chemicals have little use outside of making more complex ones and can be acquired while on the Almayer from chemical dispensers or via other means. &lt;br /&gt;
{| class=&amp;quot;wikitable unsortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 10%; margin: auto;&amp;quot; |Name&lt;br /&gt;
! style=&amp;quot;width: 20%; margin: auto;&amp;quot; |Effect&lt;br /&gt;
! style=&amp;quot;width: 12%; margin: auto;&amp;quot; |Properties&lt;br /&gt;
! style=&amp;quot;margin: auto;&amp;quot; |Acquiring&lt;br /&gt;
! style=&amp;quot;width: 5%; margin: auto;&amp;quot; |Ratio&lt;br /&gt;
! style=&amp;quot;width: 5%; margin: auto;&amp;quot; |Meta- bolism&lt;br /&gt;
! style=&amp;quot;width: 5%; margin: auto;&amp;quot; |OD&lt;br /&gt;
! style=&amp;quot;width: 20%; margin: auto;&amp;quot; |OD effects&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|water}}[[#water|Water]]&lt;br /&gt;
|&lt;br /&gt;
* Gets things wet. &lt;br /&gt;
* Extinguishes fires.&lt;br /&gt;
* Explodes when mixed with [[#potassium|potassium]].&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Water}}&lt;br /&gt;
|3:1&lt;br /&gt;
|0,01&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
&amp;lt;!--|-&lt;br /&gt;
|{{anchor|holywater}}[[#holywater|Holy Water]]&lt;br /&gt;
|&lt;br /&gt;
* As above.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|0,01&lt;br /&gt;
|&lt;br /&gt;
|--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|ethanol}}[[#ethanol|Ethanol]]&lt;br /&gt;
|&lt;br /&gt;
* Basic alcohol type. [[Drinks#Alcoholic|All other ones]] are a subtype of this.&lt;br /&gt;
* Gets you drunk.&lt;br /&gt;
* Can be used to remove ink from paper.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#ALH|ALH]] 4&lt;br /&gt;
* [[Researcher#FUL|FUL]] 3&lt;br /&gt;
* [[Researcher#OXI|OXI]] 3&lt;br /&gt;
* [[Researcher#FLW|FLW]] 2&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Ethanol}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|oxygen}}[[#oxygen|Oxygen]]&lt;br /&gt;
|&lt;br /&gt;
* Fire.&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Oxygen}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,01&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|copper}}[[#copper|Copper]]&lt;br /&gt;
|&lt;br /&gt;
* Green fire coloring&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Copper}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,01&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|nitrogen}}[[#nitrogen|Nitrogen]]&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Nitrogen}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,01&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|hydrogen}}[[#hydrogen|Hydrogen]]&lt;br /&gt;
|&lt;br /&gt;
* Explosives&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Hydrogen}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,01&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|potassium}}[[#potassium|Potassium]]&lt;br /&gt;
|&lt;br /&gt;
* Explodes when mixed with water.&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Potassium}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,01&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|mercury}}[[#mercury|Mercury]]&lt;br /&gt;
|&lt;br /&gt;
* Deals 4 brain damage per tick&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#NRT|NRT]] 4&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Mercury}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,2&lt;br /&gt;
|30&lt;br /&gt;
|&lt;br /&gt;
* Deals 10 brain damage per tick&lt;br /&gt;
* Makes you jittery&lt;br /&gt;
* Makes you drowsy&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|sulfur}}[[#sulfur|Sulfur]]&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Sulphur}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,01&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|carbon}}[[#carbon|Carbon]]&lt;br /&gt;
|&lt;br /&gt;
* Chemfire modifier&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Carbon}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,01&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|chlorine}}[[#chlorine|Chlorine]]&lt;br /&gt;
|&lt;br /&gt;
* Deals 0.5 brute damage per tick&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#BCD|BCD]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Chlorine}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Deals 1.5 brute damage per tick&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 4 brute damage per tick&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|fluorine}}[[#fluorine|Fluorine]]&lt;br /&gt;
|&lt;br /&gt;
* Deals 0.5 toxin damage per tick&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#TOX|TOX]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Flourine}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Deals 1.5 toxin damage per tick&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 4 toxin damage per tick&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|sodium}}[[#sodium|Sodium]]&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Sodium}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,01&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|phosphorus}}[[#phosphorus|Phosphorus]]&lt;br /&gt;
|&lt;br /&gt;
* Fire modifier&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Phosphorus}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,01&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|lithium}}[[#lithium|Lithium]]&lt;br /&gt;
|&lt;br /&gt;
* Fire modifier&lt;br /&gt;
* Makes you less confused and sends messages in chat.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#OXI|OXI]] 1&lt;br /&gt;
* [[Researcher#PST|PST]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Lithium}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Deals 0.5 brain damage per tick&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 3 brain damage per tick&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Makes you hallucinate&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|nutriment}}[[#nutriment|Nutriment]]&lt;br /&gt;
|&lt;br /&gt;
* Nutritious. Helps restore lost blood.&lt;br /&gt;
|&lt;br /&gt;
* [[#NTR|NTR]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Nutriment}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|sugar}}[[#sugar|Sugar]]&lt;br /&gt;
|&lt;br /&gt;
* Nutritious. Helps restore lost blood.&lt;br /&gt;
|&lt;br /&gt;
* [[#NTR|NTR]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Sugar}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|iron}}[[#iron|Iron]]&lt;br /&gt;
|&lt;br /&gt;
* Turns nutrition into blood.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#HMG|HMG]] 3&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Iron}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Deals 1.5 toxin damage per tick&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Makes you really hungry&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|gold}}[[#gold|Gold]]&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Gold}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|silver}}[[#silver|Silver]]&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Silver}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|uranium}}[[#uranium|Uranium]]&lt;br /&gt;
|&lt;br /&gt;
* Deals 0.5 radiation damage per tick&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#CRG|CRG]] 2&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Uranium}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|aluminium}}[[#aluminium|Aluminium]]&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Aluminium}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|silicon}}[[#silicon|Silicon]]&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Silicon}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|weldingfuel}}[[#weldingfuel|Welding Fuel]]&lt;br /&gt;
|&lt;br /&gt;
* Fire modifier&lt;br /&gt;
* Deals 0.5 toxin damage per tick&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#FUL|FUL]] 5&lt;br /&gt;
* [[Researcher#OXI|OXI]] 3&lt;br /&gt;
* [[Researcher#VIS|VIS]] 4&lt;br /&gt;
* [[Researcher#TOX|TOX]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Welding Fuel}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Deals 1.5 toxin damage per tick&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 4 toxin damage per tick&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|phoron}}[[#phoron|Phoron]]&lt;br /&gt;
|&lt;br /&gt;
* Fire modifier&lt;br /&gt;
* Deals 0.5 toxin damage per tick&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#TOX|TOX]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Phoron}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,1&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|radium}}[[#radium|Radium]]&lt;br /&gt;
|&lt;br /&gt;
* Deals 0.5 radiation damage per tick&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#CRG|CRG]] 2&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Radium}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Medical==&lt;br /&gt;
These chemicals are used for healing damage and generally keeping marines healthy. Some reagents that technically don&#039;t have a tangible gameplay effect but are in the medical chem code are included. (Mainly various antidepressants)&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 1%; margin: auto;&amp;quot; |Name&lt;br /&gt;
! style=&amp;quot;width: 20%; margin: auto;&amp;quot; scope=col class=unsortable |Effect&lt;br /&gt;
! style=&amp;quot;width: 12%; margin: auto;&amp;quot; scope=col class=unsortable |Properties&lt;br /&gt;
! style=&amp;quot;margin: auto;&amp;quot; scope=col class=unsortable |Recipe&lt;br /&gt;
! style=&amp;quot;width: 1%; margin: auto;&amp;quot; scope=col class=unsortable |Ratio&lt;br /&gt;
! style=&amp;quot;width: 5%; margin: auto;&amp;quot; scope=col class=unsortable |Meta- bolism&lt;br /&gt;
! style=&amp;quot;width: 1%; margin: auto;&amp;quot; scope=col class=unsortable |OD&lt;br /&gt;
! style=&amp;quot;width: 20%; margin: auto;&amp;quot; scope=col class=unsortable |OD effects&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|inaprovaline}}[[#inaprovaline|Inaprovaline]]&lt;br /&gt;
|&lt;br /&gt;
* Prevents gaining further oxygen damage from being in crit.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#CSL|CSL]] 3&lt;br /&gt;
|&lt;br /&gt;
* Weylandmeds.&lt;br /&gt;
{{:Chemical/Inaprovaline}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 60&lt;br /&gt;
* 100&lt;br /&gt;
|&lt;br /&gt;
* Knocks you out.&lt;br /&gt;
* Causes Jitter&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 0,5 heart damage per tick.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Sleeps you.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|paracetamol}}[[#paracetamol|Paracetamol]]&lt;br /&gt;
|&lt;br /&gt;
* Reduces pain.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#PNK|PNK]] 2&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Paracetamol}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0,05&lt;br /&gt;
|&lt;br /&gt;
* 60&lt;br /&gt;
* 100&lt;br /&gt;
|&lt;br /&gt;
* Makes you hallucinate.&lt;br /&gt;
* Deals 2 toxin damage per tick.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 3 liver damage per tick.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 1 brain damage per tick.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 3 oxygen damage per tick.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|ryetalyn}}[[#ryetalyn|Ryetalyn]]&lt;br /&gt;
|&lt;br /&gt;
* Fixes disabilities and disfigurements.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#AID|AID]] 2&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Ryetalyn}}&lt;br /&gt;
|2:2&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Makes you confused.&lt;br /&gt;
* Deals 1 toxin damage per tick.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Knocks you out.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 2 toxin damage per tick.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 3 radiation damage per tick.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|tramadol}}[[#tramadol|Tramadol]]&lt;br /&gt;
|&lt;br /&gt;
* Reduces pain.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#PNK|PNK]] 5&lt;br /&gt;
|&lt;br /&gt;
* Weylandmeds.&lt;br /&gt;
{{:Chemical/Tramadol}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0,05&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Makes you hallucinate.&lt;br /&gt;
* Deals 2.5 toxin damage per tick.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 7.5 liver damage per tick.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 2.5 brain damage per tick.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 3 oxygen damage per tick.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|oxycodone}}[[#oxycodone|Oxycodone]]&lt;br /&gt;
|&lt;br /&gt;
* Reduces pain.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#PNK|PNK]] 8&lt;br /&gt;
|&lt;br /&gt;
* Weylandmeds.&lt;br /&gt;
{{:Chemical/Oxycodone}}&lt;br /&gt;
|2:1&lt;br /&gt;
|0,1&lt;br /&gt;
|&lt;br /&gt;
* 20&lt;br /&gt;
* 30&lt;br /&gt;
|&lt;br /&gt;
* Makes you hallucinate.&lt;br /&gt;
* Deals 4 toxin damage per tick.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 12 liver damage per tick.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 4 brain damage per tick.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 3 oxygen damage.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|leporazine}}[[#leporazine|Leporazine]]&lt;br /&gt;
|&lt;br /&gt;
* Attempts to stabilize your temperature.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#TSL|TSL]] 2&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Leporazine}}&lt;br /&gt;
|2:2&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Knocks you out.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Sleeps you.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|kelotane}}[[#kelotane|Kelotane]]&lt;br /&gt;
|&lt;br /&gt;
* Heals 1 burn damage per tick.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#ACR|ACR]] 2&lt;br /&gt;
|&lt;br /&gt;
* Weylandmeds.&lt;br /&gt;
{{:Chemical/Kelotane}}&lt;br /&gt;
|2:2&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Deals 1 brute and toxin damage per tick.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 5.5 brute and toxin damage per tick.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|dermaline}}[[#dermaline|Dermaline]]&lt;br /&gt;
|&lt;br /&gt;
* Heals 1.5 burn damage per tick.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#ACR|ACR]] 3&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Dermaline}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 15&lt;br /&gt;
* 25&lt;br /&gt;
|&lt;br /&gt;
* Deals 1.5 brute and toxin damage per tick.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 9 brute and toxin damage per tick.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|Meralyne}}[[#Meralyne|Meralyne]]&lt;br /&gt;
|&lt;br /&gt;
* Heals 1.5 brute damage per tick.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#NGN|NGN]] 3&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Meralyne}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 15&lt;br /&gt;
* 25&lt;br /&gt;
|&lt;br /&gt;
* Deals 1.5 burn damage per tick.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 9 burn and 3 toxin damage per tick.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|dexalin}}[[#dexalin|Dexalin]]&lt;br /&gt;
|&lt;br /&gt;
* Repairs 4 oxygen damage. &amp;lt;!--The code for this shit is weird. It looks like it should remove ALL oxygen damage, like dex+, but it doesn&#039;t. So I used the formula for if it doesn&#039;t.--&amp;gt;&lt;br /&gt;
* Removes 4u of [[#lexorin|lexorin]] per tick.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#OXG|OXG]] 4&lt;br /&gt;
|&lt;br /&gt;
* Weylandmeds.&lt;br /&gt;
* Recipe:&lt;br /&gt;
{{:Chemical/Dexalin}}&lt;br /&gt;
|2,1:1&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Deals 2 toxin damage per tick.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 4 brute damage per tick.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 8 toxin damage per tick.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|dexalinplus}}[[#dexalinplus|Dexalin Plus]]&lt;br /&gt;
|&lt;br /&gt;
* Repairs all oxygen damage instantly.&lt;br /&gt;
* Removes 6u of [[#lexorin|lexorin]] per tick.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#OXG|OXG]] 6&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Dexalin Plus}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 15&lt;br /&gt;
* 25&lt;br /&gt;
|&lt;br /&gt;
* Deals 1.5 toxin damage per tick.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 3 brute damage per tick.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 7.5 toxin damage per tick.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|tricordrazine}}[[#tricordrazine|Tricordrazine]]&lt;br /&gt;
|&lt;br /&gt;
* Heals 0.5 brute damage.&lt;br /&gt;
* Heals 0.5 burn damage.&lt;br /&gt;
* Heals 0.5 toxin damage.&lt;br /&gt;
* Heals 0.5 oxygen damage.&lt;br /&gt;
* Removes 1u of &amp;lt;!--[[#generictoxin|generic toxin]] and--&amp;gt; all types of [[#toxin|toxin]].&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#NGN|NGN]] 1&lt;br /&gt;
* [[Researcher#ACR|ACR]] 1&lt;br /&gt;
* [[Researcher#ATX|ATX]] 1&lt;br /&gt;
* [[Researcher#OXG|OXG]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Tricordrazine}}&lt;br /&gt;
|2:2&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Deals 0.5 burn damage&lt;br /&gt;
* Deals 0.5 brute damage.&lt;br /&gt;
* Deals 0.25 toxin damage.&lt;br /&gt;
* Deals 0.5 Eye damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 2.5 burn damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 4 toxin damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 2.5 brute damage.&lt;br /&gt;
* &amp;quot;(C)&amp;quot; Sleeps you&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|dylovene}}[[#dylovene|Dylovene]]&lt;br /&gt;
|&lt;br /&gt;
* Heals 2 toxin damage.&lt;br /&gt;
* Removes 1u of [[#toxin|toxin]] of any type.&lt;br /&gt;
* Removes 5u of [[#mindbreaker|mindbreaker toxin]].&lt;br /&gt;
* Removes 5u of [[#spacedrugs|space drugs]]&lt;br /&gt;
* Reduces the potency of hallucinations and other drug-related effects.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#ATX|ATX]] 2&lt;br /&gt;
* [[Researcher#AHL|AHL]] 2&lt;br /&gt;
|&lt;br /&gt;
* Weylandmeds.&lt;br /&gt;
{{:Chemical/Dylovene}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Deals 1 eye damage..&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Sleeps you.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 1 burn damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 1 brute damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 2 toxin damage.&lt;br /&gt;
&amp;lt;!--|-&lt;br /&gt;
|{{anchor|adminordrazine}}[[#adminordrazine|Adminordrazine]]&lt;br /&gt;
|&lt;br /&gt;
* Omnipotent&lt;br /&gt;
|&lt;br /&gt;
* Omnipotent 2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
|--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|thwei}}[[#thwei|Thwei]]&lt;br /&gt;
|&lt;br /&gt;
* Heals 1,2 brute damage.&lt;br /&gt;
* Heals 1 toxin damage.&lt;br /&gt;
* Heals 1 organ damage.&lt;br /&gt;
* Removes 1u of [[#toxin|toxin]] of any type.&lt;br /&gt;
* Heals all oxygen damage.&lt;br /&gt;
* Removes 6u of [[#lexorin|lexorin]].&lt;br /&gt;
* Heals 6 radiation damage per tick.&lt;br /&gt;
* Repairs bones (splinted/unsplinted in minutes)&lt;br /&gt;
** Chest and groin:  3 / 7&lt;br /&gt;
** Head: 1 / 5&lt;br /&gt;
** Hands and feet: 0,5 / 0,5&lt;br /&gt;
** Arms and legs: 0,5 / 1&lt;br /&gt;
* Rapidly restores lost blood.&lt;br /&gt;
** &#039;&#039;&#039;(HUMAN ONLY)&#039;&#039;&#039; After blood is over maximum starts deals 9 brute, 9 burn, and 18 oxygen damage per tick.&lt;br /&gt;
* Fixes disabilities and disfigurements.&lt;br /&gt;
* Removes 5u of [[#mindbreaker|mindbreaker]].&lt;br /&gt;
* Removes 5u of [[#spacedrugs|space drugs]].&lt;br /&gt;
* Weakens drug-related effects.&lt;br /&gt;
* Removes 6u of [[#ethanol|ethanol]] and [[Drinks|other alcohol]].&lt;br /&gt;
* Fixes confusion, stuttering, temporary blindness, dizziness, jitteriness, and wakes you up.&lt;br /&gt;
* Fixes eye damage.&lt;br /&gt;
* Cures the zombie virus (black goo).&lt;br /&gt;
* Cures a certain other rare disease. &amp;lt;!--As with anti-zed. Not giving a precise explanation--&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#XMB|XMB]] 1&lt;br /&gt;
* [[Researcher#ATX|ATX]] 1&lt;br /&gt;
* [[Researcher#HMG|HMG]] 9&lt;br /&gt;
* [[Researcher#OXG|OXG]] 6&lt;br /&gt;
* [[Researcher#ACG|ACG]] 6&lt;br /&gt;
* [[Researcher#BNM|BNM]] 6&lt;br /&gt;
* [[Researcher#AID|AID]] 1&lt;br /&gt;
* [[Researcher#AHL|AHL]] 2&lt;br /&gt;
* [[Researcher#FCS|FCS]] 6&lt;br /&gt;
* [[Researcher#CUR|CUR]] 4&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Thwei}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
|{{anchor|synaptizine}}[[#synaptizine|Synaptizine]]&lt;br /&gt;
|&lt;br /&gt;
* Reduces pain.&lt;br /&gt;
* Weakens stuns and knockdowns.&lt;br /&gt;
* Reduces drug-related effects.&lt;br /&gt;
* Removes 5u of [[#mindbreaker|mindbreaker]].&lt;br /&gt;
* Removes 5u of [[#spacedrugs|space drugs]].&lt;br /&gt;
* Deals 1 toxin damage.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#PNK|PNK]] 1&lt;br /&gt;
* [[Researcher#NST|NST]] 1&lt;br /&gt;
* [[Researcher#AHL|AHL]] 1&lt;br /&gt;
* [[Researcher#TOX|TOX]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Synaptizine}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0,1&lt;br /&gt;
|&lt;br /&gt;
* 6&lt;br /&gt;
* 10&lt;br /&gt;
|&lt;br /&gt;
* Makes you hallucinate.&lt;br /&gt;
* Deals 6 toxin damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 2 brute damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 2 burn damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 10 toxin damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 3 liver damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 1 brain damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 3 oxygen damage.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|neuraline}}[[#neuraline|Neuraline]]&lt;br /&gt;
|&lt;br /&gt;
* Weakens stuns and knockdowns.&lt;br /&gt;
* Fixes stuttering, blurry vision, confusion, dizziness, jitteriness and drowsiness.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#NST|NST]] 5&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Neuraline}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,4&lt;br /&gt;
|&lt;br /&gt;
* 2&lt;br /&gt;
* 3&lt;br /&gt;
|&lt;br /&gt;
* Deals 10 toxin damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 5 brute damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 5 burn damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 15 toxin damage.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|arithrazine}}[[#arithrazine|Arithrazine]]&lt;br /&gt;
|&lt;br /&gt;
* Heals 1 toxin damage.&lt;br /&gt;
* Removes 1u of any type of [[#toxin|toxin]].&lt;br /&gt;
* Deals 1 brute damage.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#ATX|ATX]] 1&lt;br /&gt;
* [[Researcher#BCD|BCD]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Arithrazine}}&lt;br /&gt;
|2:2&lt;br /&gt;
|0,05&lt;br /&gt;
|&lt;br /&gt;
* 15&lt;br /&gt;
* 25&lt;br /&gt;
|&lt;br /&gt;
* Deals 1 eye damage.&lt;br /&gt;
* Deals 2 brute damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Sleeps you.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 4 brute damage.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|russianred}}[[#russianred|Russian Red]]&lt;br /&gt;
|&lt;br /&gt;
* Heals 1 toxin damage.&lt;br /&gt;
* Removes 1u of any type of [[#toxin|toxin]].&lt;br /&gt;
* Deals 2 brute damage.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#ATX|ATX]] 1&lt;br /&gt;
* [[Researcher#BCD|BCD]] 2&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Russian Red}}&lt;br /&gt;
|N/A&lt;br /&gt;
|1&lt;br /&gt;
|&lt;br /&gt;
* 20&lt;br /&gt;
* 30&lt;br /&gt;
|&lt;br /&gt;
* Deals 1 eye damage.&lt;br /&gt;
* Deals 4 brute damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Sleeps you.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 8 brute damage.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|alkysine}}[[#alkysine|Alkysine]]&lt;br /&gt;
|&lt;br /&gt;
* Heals 3 brain damage per tick.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#NRP|NRP]] 2&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Alkysine}}&lt;br /&gt;
|3:2&lt;br /&gt;
|0,05&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Deals 1 toxin damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 3 brain damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Stuns you.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|imidazoline}}[[#imidazoline|Imidazoline]]&lt;br /&gt;
|&lt;br /&gt;
* Heals 1 eye damage.&lt;br /&gt;
* Fixes blurry vision and blindness.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#OCP|OCP]] 2&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Imidazoline}}&lt;br /&gt;
|3:2&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Deals 1 toxin damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 1 brute damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 1 burn damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 4 toxin damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 1 brain damage.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|peridaxon}}[[#peridaxon|Peridaxon]]&lt;br /&gt;
|&lt;br /&gt;
* Prevents you from suffering consequences of organ damage.&lt;br /&gt;
* Does &#039;&#039;&#039;NOT&#039;&#039;&#039; fix organs.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#OGS|OGS]] 4&lt;br /&gt;
|&lt;br /&gt;
* Weylandmeds.&lt;br /&gt;
* Recipe:&lt;br /&gt;
{{:Chemical/Peridaxon}}&lt;br /&gt;
|4:2&lt;br /&gt;
|0,05&lt;br /&gt;
|&lt;br /&gt;
* 15&lt;br /&gt;
* 25&lt;br /&gt;
|&lt;br /&gt;
* Deals 2 brute damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 8 brute damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 6 burn damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 6 toxin damage.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|bicaridine}}[[#bicaridine|Bicaridine]]&lt;br /&gt;
|&lt;br /&gt;
* Heals 1 brute damage per tick.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#NGN|NGN]] 2&lt;br /&gt;
|&lt;br /&gt;
* Weylandmeds.&lt;br /&gt;
* Recipe:&lt;br /&gt;
{{:Chemical/Bicaridine}}&lt;br /&gt;
|2:2&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Deals 1 burn damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 6 burn damage&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 2 toxin damage.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|epinephrine}}[[#epinephrine|Epinephrine]]&lt;br /&gt;
|&lt;br /&gt;
* &#039;&#039;&#039;MUST BE INJECTED. CANNOT TAKE IN PILLS.&#039;&#039;&#039;&lt;br /&gt;
* Increases defibrillator healing by 16 per damage type.&lt;br /&gt;
* Reduces pain.&lt;br /&gt;
* Makes you move faster.&lt;br /&gt;
* A small amount is consumed on each defib attempt.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#PNK|PNK]] 1,5 &amp;lt;!--WHY/ Still asking that to this day-  Niv--&amp;gt;&lt;br /&gt;
* [[Researcher#EGN|EGN]] 4&lt;br /&gt;
* [[Researcher#INV|INV]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Epinephrine}}&lt;br /&gt;
|3:2&lt;br /&gt;
|0,4&lt;br /&gt;
|&lt;br /&gt;
* 10,5&lt;br /&gt;
* 20&lt;br /&gt;
|&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 1 brute damage.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|ultrazine}}[[#ultrazine|Ultrazine]]&lt;br /&gt;
|&lt;br /&gt;
* Makes you much faster.&lt;br /&gt;
* Makes you addicted to it.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#MST|MST]] 40&lt;br /&gt;
* [[Researcher#ADT|ADT]] 8&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Ultrazine}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,0167 &amp;lt;!--bruh, Indeed--&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
* 10,5&lt;br /&gt;
* 20&lt;br /&gt;
|&lt;br /&gt;
* Deals 40 heart damage.&lt;br /&gt;
* Deals 8 brain damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 40 brute damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Makes you nervous. &amp;lt;!--I have no idea what this means--&amp;gt;&lt;br /&gt;
&amp;lt;!--|-&lt;br /&gt;
|{{anchor|stimulant}}[[#stimulant|Stimulant]]&lt;br /&gt;
|&lt;br /&gt;
* Reduces stamina damage by 75%&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#UNK|UNK]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Stimulant}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,05&lt;br /&gt;
|&lt;br /&gt;
* 15&lt;br /&gt;
* 25&lt;br /&gt;
|&lt;br /&gt;
* Deals 1 brute damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 3 brute damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 3 burn damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 3 toxin damage.--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|cryoxadone}}[[#cryoxadone|Cryoxadone]]&lt;br /&gt;
|&lt;br /&gt;
* &#039;&#039;&#039; ONLY FUNCTIONS AT LOW TEMPERATURES. USE A CRYO TUBE.&#039;&#039;&#039; &amp;lt;!--Fun fact: for some reason it has BOTH the cryo-metabolizing property AND a piece of snowflake code that makes it work at low temperatures. So the effect is better than it should be.--&amp;gt;&lt;br /&gt;
* Heals 3 radiation damage.&lt;br /&gt;
* Heals 3 brute damage.&lt;br /&gt;
* Heals 3 burn damage.&lt;br /&gt;
* Heals 3 toxin damage.&lt;br /&gt;
* Heals 1 oxygen damage.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#CMB|CMB]] 2&lt;br /&gt;
* [[Researcher#NGN|NGN]] 1&lt;br /&gt;
* [[Researcher#ACR|ACR]] 1&lt;br /&gt;
* [[Researcher#ATX|ATX]] 1&lt;br /&gt;
* [[Researcher#ACG|ACG]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Cryoxadone}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|clonexadone}}[[#clonexadone|Clonexadone]]&lt;br /&gt;
|&lt;br /&gt;
* &#039;&#039;&#039;AS ABOVE&#039;&#039;&#039; &amp;lt;!--Not as above part: no snowflake code here.--&amp;gt;&lt;br /&gt;
* Heals 6 radiation damage.&lt;br /&gt;
* Heals 6 brute damage.&lt;br /&gt;
* Heals 6 burn damage.&lt;br /&gt;
* Heals 6 toxin damage.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#CMB|CMB]] 6&lt;br /&gt;
* [[Researcher#NGN|NGN]] 3&lt;br /&gt;
* [[Researcher#ACR|ACR]] 3&lt;br /&gt;
* [[Researcher#ATX|ATX]] 3&lt;br /&gt;
* [[Researcher#ACG|ACG]] 3&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Clonexadone}}&lt;br /&gt;
|2,1:2&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|rezadone}}[[#rezadone|Rezadone]]&lt;br /&gt;
|&lt;br /&gt;
* Heals 1 brute damage.&lt;br /&gt;
* Removes disabilities and disfigurements.&lt;br /&gt;
* Heals 2 radiation damage.&lt;br /&gt;
* Deals 2 toxin damage.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#NGN|NGN]] 1&lt;br /&gt;
* [[Researcher#AID|AID]] 3&lt;br /&gt;
* [[Researcher#TOX|TOX]] 2&lt;br /&gt;
* [[Researcher#ACG|ACG]] 2&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Rezadone}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Deals 1 burn damage.&lt;br /&gt;
* Makes you confused.&lt;br /&gt;
* Deals 11 toxin damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Knocks you out.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 13 toxin damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 9 radiation damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 4 burn damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 4 brute damage.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|spaceacillin}}[[#spaceacillin|Spaceacillin]]&lt;br /&gt;
|&lt;br /&gt;
* Cures mundane infections like the flu.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#UNK|UNK]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Spaceacillin}}&lt;br /&gt;
|2:2&lt;br /&gt;
|0,01&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Deals 1 brute damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 3 brute damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 3 burn damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 3 toxin damage.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|ethylredoxrazine}}[[#ethylredoxrazine|Ethylredoxrazine]]&lt;br /&gt;
|&lt;br /&gt;
* Removes confusion, drowsiness, stuttering, blurry vision, blindness, dizziness, and jitteriness.&lt;br /&gt;
* Removes 3u [[#ethanol|ethanol]] and [[Drinks|other alcohols]] from the body.&lt;br /&gt;
* Reacts with [[#ethanol|ethanol]] to turn into water.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#FCS|FCS]] 3&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Ethylredoxrazine}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Deals 1.5 toxin damage per tick&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 6 toxin damage per tick&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|methylphenidate}}[[#methylphenidate|Methylphenidate]]&lt;br /&gt;
|&lt;br /&gt;
* Gives you messages about your mind becoming clearer.&lt;br /&gt;
* Removes confusion.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#PST|PST]] 4&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Methylphenidate}}&lt;br /&gt;
|2:3&lt;br /&gt;
|0,01&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|citalopram}}[[#citalopram|Citalopram]]&lt;br /&gt;
|&lt;br /&gt;
* As above.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#PST|PST]] 2&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Citalopram}}&lt;br /&gt;
|2:3&lt;br /&gt;
|0,01&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|paroxetine}}[[#paroxetine|Paroxetine]]&lt;br /&gt;
|&lt;br /&gt;
* As above.&lt;br /&gt;
* Makes you hallucinate.&lt;br /&gt;
* Makes you jittery.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#PST|PST]] 6&lt;br /&gt;
* [[Researcher#HLG|HLG]] 6&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Paroxetine}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0,01&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|antized}}[[#antized|Anti-Zed]]&lt;br /&gt;
|&lt;br /&gt;
* Prevents zombies from reviving.&lt;br /&gt;
* Cures the zombie virus.&lt;br /&gt;
* Cures all other diseases as well.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#CUR|CUR]] 2&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Anti-Zed}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,01&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|sterilizine}}[[#sterilizine|Sterilizine]]&lt;br /&gt;
|&lt;br /&gt;
* Sterilizes surfaces. Since we don&#039;t actually need to do that, this has no use outside of RP.&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Sterilizine}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|soporific}}[[#soporific|Soporific]]&lt;br /&gt;
|&lt;br /&gt;
* Puts you to sleep.&lt;br /&gt;
* Reduces pain.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#PNK|PNK]] 10&lt;br /&gt;
* [[Researcher#SDT|SDT]] 2&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Soporific}}&lt;br /&gt;
|5:5&lt;br /&gt;
|0,1&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Makes you hallucinate.&lt;br /&gt;
* Deals 5 toxin damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 15 liver damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 5 brain damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 3 oxygen damage.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|vaccine}}[[#vaccine|Vaccine]]&lt;br /&gt;
|&lt;br /&gt;
* Prevents you from catching the virus this is a vaccine against.&lt;br /&gt;
* Cures the zombie virus.&lt;br /&gt;
* Prevents dead zombies from reviving.&lt;br /&gt;
* Cures all other diseases as well.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#CUR|CUR]] 4&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Vaccine}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|antineurotoxin}}[[#antineurotoxin|Anti-Neurotoxin]]&lt;br /&gt;
|&lt;br /&gt;
* Note that &#039;&#039;&#039;technically&#039;&#039;&#039;, as far as the code is concerned, this is a subtype of xeno plasmas.&lt;br /&gt;
* Protects you from [[Sentinel|getting shot with any kind of neuro]].&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#NRS|NRS]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Anti-Neurotoxin}}&lt;br /&gt;
|2:1&lt;br /&gt;
|0,4&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Deals 1 liver damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 2 brain damage.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|lipozine}}[[#lipozine|Lipozine]]&lt;br /&gt;
|&lt;br /&gt;
* Causes you to lose fat and makes you hungry&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#KTG|KTG]] 4&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Lipozine}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0.05&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Makes you even more hungry&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 2 toxin Damage&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Toxins and acids==&lt;br /&gt;
Most of these chemicals generally don&#039;t have much use outside of murder.&lt;br /&gt;
{| class=&amp;quot;wikitable unsortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 10%; margin: auto;&amp;quot; |Name&lt;br /&gt;
! style=&amp;quot;width: 20%; margin: auto;&amp;quot; |Effect&lt;br /&gt;
! style=&amp;quot;width: 12%; margin: auto;&amp;quot; |Properties&lt;br /&gt;
! style=&amp;quot;margin: auto;&amp;quot; |Recipe&lt;br /&gt;
! style=&amp;quot;width: 5%; margin: auto;&amp;quot; |Ratio&lt;br /&gt;
! style=&amp;quot;width: 5%; margin: auto;&amp;quot; |Meta- bolism&lt;br /&gt;
! style=&amp;quot;width: 5%; margin: auto;&amp;quot; |OD&lt;br /&gt;
! style=&amp;quot;width: 20%; margin: auto;&amp;quot; |OD effects&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|generictoxin}}[[#generictoxin|Generic Toxin]]&lt;br /&gt;
|&lt;br /&gt;
* Most other chemicals in this table are a subtype of this one.&lt;br /&gt;
* Deals 1 toxin damage every tick.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#TOX|TOX]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Generic Toxin}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,1&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|toxin}}[[#toxin|Toxin]]&lt;br /&gt;
|&lt;br /&gt;
* Deals 0.5 toxin damage per tick.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#TOX|TOX]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Toxin}}&lt;br /&gt;
|2:2&lt;br /&gt;
|1&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
|{{anchor|sdtoxin}}[[#sdtoxin|Toxin (syna+dylo)]]&lt;br /&gt;
|&lt;br /&gt;
* Deals 4 oxygen damage.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#HPX|HPX]] 2&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/SDToxin}}&lt;br /&gt;
|2:2&lt;br /&gt;
|0,1&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|amatoxin}}[[#amatoxin|Amatoxin]]&lt;br /&gt;
|&lt;br /&gt;
* Deals 1 toxin damage.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#TOX|TOX]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Amatoxin}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,1&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|mutagen}}[[#mutagen|Unstable Mutagen]]&lt;br /&gt;
|&lt;br /&gt;
* Deals 0,5 radiation damage per tick.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#CRG|CRG]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Unstable Mutagen}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0,1&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|lexorin}}[[#lexorin|Lexorin]]&lt;br /&gt;
|&lt;br /&gt;
* Deals 8 oxygen damage per tick.&lt;br /&gt;
* Deals 0.5 brute damage per tick.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#HPX|HPX]] 8&lt;br /&gt;
* [[Researcher#BCD|BCD]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Lexorin}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0,1&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Deals 5.5 brute damage.&lt;br /&gt;
* Deals 4 toxin damage.&lt;br /&gt;
* Deals 28 oxygen damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 28 brute and oxygen damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 12 toxin damage.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|cyanide}}[[#cyanide|Cyanide]]&lt;br /&gt;
|&lt;br /&gt;
* Deals 8 oxygen damage.&lt;br /&gt;
* Puts you to sleep after a while.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#HPX|HPX]] 4&lt;br /&gt;
* [[Researcher#SDT|SDT]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Cyanide}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,4&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|minttoxin}}[[#minttoxin|Mint Toxin]]&lt;br /&gt;
|&lt;br /&gt;
* Deals 1 toxin damage.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#TOX|TOX]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Mint Toxin}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,1&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|carpotoxin}}[[#carpotoxin|Carpotoxin]]&lt;br /&gt;
|&lt;br /&gt;
* Deals 2 toxin damage.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#TOX|TOX]] 2&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Carpotoxin}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,1&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
&amp;lt;!--|-&lt;br /&gt;
|{{anchor|zombiepowder}}[[#zombiepowder|Zombie Powder]]&lt;br /&gt;
|&lt;br /&gt;
* Deals 1 toxin damage.&lt;br /&gt;
* By the power of snowflake code:&lt;br /&gt;
** Silences you.&lt;br /&gt;
** Makes you seem dead (but not on the medihud, fools the analyzer though).&lt;br /&gt;
** Knocks you down.&lt;br /&gt;
** Deals a shitload of oxygen damage. This kills you instantly.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#TOX|TOX]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Zombie Powder}}&lt;br /&gt;
|15:2&lt;br /&gt;
|0,1&lt;br /&gt;
|&lt;br /&gt;
|--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|chloralhydrate}}[[#chloralhydrate|Chloral Hydrate]]&lt;br /&gt;
|&lt;br /&gt;
* Deals 0.5 toxin damage.&lt;br /&gt;
* Puts you to sleep.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#SDT|SDT]] 6&lt;br /&gt;
* [[Researcher#TOX|TOX]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Chloral Hydrate}}&lt;br /&gt;
|&lt;br /&gt;
|0,1&lt;br /&gt;
|&lt;br /&gt;
* 15&lt;br /&gt;
* 25&lt;br /&gt;
|&lt;br /&gt;
* Deals 1.5 toxin damage.&lt;br /&gt;
* Knocks you out.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 4 toxin damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 15 oxygen damage.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|potassiumchloride}}[[#potassiumchloride|Potassium Chloride]]&lt;br /&gt;
|&lt;br /&gt;
* Fire modifier.&lt;br /&gt;
* Deals 4 oxygen damage.&lt;br /&gt;
* Slows you.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#HPX|HPX]] 2&lt;br /&gt;
* [[Researcher#RLX|RLX]] 4&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Potassium Chloride}}&lt;br /&gt;
|2:2&lt;br /&gt;
|0,2&lt;br /&gt;
|30&lt;br /&gt;
|&lt;br /&gt;
* Deals 2 brute damage.&lt;br /&gt;
* Deals 2 toxin damage.&lt;br /&gt;
* Deals 10 oxygen damage.&lt;br /&gt;
* Slows you down by a lot.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|potassiumchlorophoride}}[[#potassiumchlorophoride|Potassium Chlorophoride]]&lt;br /&gt;
|&lt;br /&gt;
* Slows you down.&lt;br /&gt;
* Deals 8 oxygen damage.&lt;br /&gt;
* Deals 2 toxin damage.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#RLX|RLX]] 8&lt;br /&gt;
* [[Researcher#HPX|HPX]] 4&lt;br /&gt;
* [[Researcher#TOX|TOX]] 2&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Potassium Chlorophoride}}&lt;br /&gt;
|3:4&lt;br /&gt;
|0,2&lt;br /&gt;
|20&lt;br /&gt;
|&lt;br /&gt;
* Deals 4 brute damage.&lt;br /&gt;
* Deals 4 toxin damage.&lt;br /&gt;
* Deals 20 oxygen damage.&lt;br /&gt;
* Deals 4 toxin damage.&lt;br /&gt;
* Slows you down by a lot.&lt;br /&gt;
&amp;lt;!--|-&lt;br /&gt;
|{{anchor|beer}}[[#beer|Beer]]&lt;br /&gt;
|&lt;br /&gt;
* Toxic beer.&lt;br /&gt;
* Deals 6 toxin damage per tick.&lt;br /&gt;
* Makes you drunk.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#AOL|AOL]] 2&lt;br /&gt;
* [[Researcher#TOX|TOX]] 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|0,15&lt;br /&gt;
|&lt;br /&gt;
* 15&lt;br /&gt;
* 25&lt;br /&gt;
|&lt;br /&gt;
* Deals 13 toxin damage.&lt;br /&gt;
* Makes you extremely drunk.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 24 toxin damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 1 liver damage.--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|sulphuricacid}}[[#sulphuricacid|Sulphuric Acid]]&lt;br /&gt;
|&lt;br /&gt;
* Has a chance to melt items when poured/sprayed on them. Worn headgear included.&lt;br /&gt;
* Deals 0.5 toxin damage per tick.&lt;br /&gt;
* Deals 1.5 burn damage per tick.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#TOX|TOX]] 1&lt;br /&gt;
* [[Researcher#CRS|CRS]] 3&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Sulphuric Acid}}&lt;br /&gt;
|7:1&lt;br /&gt;
|0,1&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|polytrinicacid}}[[#polytrinicacid|Polytrinic Acid]]&lt;br /&gt;
|&lt;br /&gt;
* As above, but a higher chance to melt.&lt;br /&gt;
* Deals 1 toxin damage per tick.&lt;br /&gt;
* Deals 1.5 burn damage per tick.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#CRS|CRS]] 3&lt;br /&gt;
* [[Researcher#TOX|TOX]] 2&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Polytrinic Acid}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0,1&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|formaldehyde}}[[#formaldehyde|Formaldehyde]]&lt;br /&gt;
|&lt;br /&gt;
* Deals 1 toxin damage.&lt;br /&gt;
* Deals 0,5 radiation damage.&lt;br /&gt;
* Ingredient for explosives.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#TOX|TOX]] 1&lt;br /&gt;
* [[Researcher#CRG|CRG]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Formaldehyde}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0,1&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|paraformaldehyde}}[[#paraformaldehyde|Paraformaldehyde]]&lt;br /&gt;
|&lt;br /&gt;
* Deals 1 toxin damage.&lt;br /&gt;
* Ingredient for explosives.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#TOX|TOX]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Paraformaldehyde}}&lt;br /&gt;
|2:1&lt;br /&gt;
|0,1&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|impedrezene}}[[Chemistry#impedrezene|Impedrezene]]&lt;br /&gt;
|&lt;br /&gt;
* Deals 3,5 brain damage.&lt;br /&gt;
* Slows you down.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#NRT|NRT]] 2&lt;br /&gt;
* [[Researcher#RLX|RLX]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Impedrezene}}&lt;br /&gt;
|3:2&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Deals 6 brain damage.&lt;br /&gt;
* Makes you sleepier.&lt;br /&gt;
* Slows you down by a lot.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Has a chance to knock you out.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 1 oxygen damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 0,75 heart damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Has a chance to knock you down.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Drugs==&lt;br /&gt;
Reagents that get marines high.&lt;br /&gt;
{| class=&amp;quot;wikitable unsortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 10%; margin: auto;&amp;quot; |Name&lt;br /&gt;
! style=&amp;quot;width: 20%; margin: auto;&amp;quot; |Effect&lt;br /&gt;
! style=&amp;quot;width: 12%; margin: auto;&amp;quot; |Properties&lt;br /&gt;
! style=&amp;quot;margin: auto;&amp;quot; |Recipe&lt;br /&gt;
! style=&amp;quot;width: 5%; margin: auto;&amp;quot; |Ratio&lt;br /&gt;
! style=&amp;quot;width: 5%; margin: auto;&amp;quot; |Meta- bolism&lt;br /&gt;
! style=&amp;quot;width: 5%; margin: auto;&amp;quot; |OD&lt;br /&gt;
! style=&amp;quot;width: 20%; margin: auto;&amp;quot; |OD effects&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|mindbreaker}}[[#mindbreaker|Mindbreaker Toxin]]&lt;br /&gt;
|&lt;br /&gt;
* Literally LSD.&lt;br /&gt;
* Makes you hallucinate.&lt;br /&gt;
* Makes you high.&lt;br /&gt;
* Makes you jittery.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#HLG|HLG]] 8&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Mindbreaker Toxin}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0,1&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Makes you hallucinate more.&lt;br /&gt;
* Makes you stumble around.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 4 brain damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Knocks you out.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|spacedrugs}}[[#spacedrugs|Space Drugs]]&lt;br /&gt;
|&lt;br /&gt;
* Baby&#039;s first drug.&lt;br /&gt;
* Makes you high.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#HLG|HLG]] 2&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Space Drugs}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Makes you hallucinate.&lt;br /&gt;
* Makes you jittery.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 2 brain damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Knocks you out.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|psilocybin}}[[#psilocybin|Psilocybin]]&lt;br /&gt;
|&lt;br /&gt;
* Makes you high.&lt;br /&gt;
* Makes you hallucinate.&lt;br /&gt;
* Makes you jittery.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#HLG|HLG]] 3&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Psilocybin}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Makes you hallucinate more.&lt;br /&gt;
* Makes you stumble around.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 3 brain damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Knocks you out.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|nicotine}}[[#nicotine|Nicotine]]&lt;br /&gt;
|N/A &amp;lt;!--Put it here because even though there&#039;s no ingame effects this is still probably the best category.--&amp;gt;&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Nicotine}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Xeno blood and plasma==&lt;br /&gt;
Chemicals acquired from xenos.&lt;br /&gt;
{| class=&amp;quot;wikitable unsortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 10%; margin: auto;&amp;quot; |Name&lt;br /&gt;
! style=&amp;quot;width: 20%; margin: auto;&amp;quot; |Effect&lt;br /&gt;
! style=&amp;quot;width: 12%; margin: auto;&amp;quot; |Properties&lt;br /&gt;
! style=&amp;quot;margin: auto;&amp;quot; |Recipe&lt;br /&gt;
! style=&amp;quot;width: 5%; margin: auto;&amp;quot; |Ratio&lt;br /&gt;
! style=&amp;quot;width: 5%; margin: auto;&amp;quot; |Meta- bolism&lt;br /&gt;
! style=&amp;quot;width: 5%; margin: auto;&amp;quot; |OD&lt;br /&gt;
! style=&amp;quot;width: 20%; margin: auto;&amp;quot; |OD effects&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|xenoblood}}[[#xenoblood|Acidic Blood]]&lt;br /&gt;
|&lt;br /&gt;
* Deals 3 burn damage.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#CRS|CRS]] 3&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Acidic Blood}}&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|royalxenoblood}}[[#royalxenoblood|Dark Acidic Blood]]&lt;br /&gt;
|&lt;br /&gt;
* Deals 6 burn damage.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#CRS|CRS]] 6&lt;br /&gt;
|&lt;br /&gt;
Queen and Praetorians.&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|plasma}}[[#plasma|Plasma]]&lt;br /&gt;
|&lt;br /&gt;
* Base type for all of the following.&lt;br /&gt;
|N/A&lt;br /&gt;
|{{:Chemical/Plasma}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,4&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|pheromoneplasma}}[[#pheromoneplasma|Pheromone Plasma]]&lt;br /&gt;
|&lt;br /&gt;
* Makes you high.&lt;br /&gt;
* Makes you hallucinate.&lt;br /&gt;
* Helps you with knockdowns, knockouts and stuns.&lt;br /&gt;
* Fixes stuttering, confusion, blurry vision, drowsiness, dizziness, and jitteriness.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#HLG|HLG]] 8&lt;br /&gt;
* [[Researcher#NST|NST]] 6&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Pheromone Plasma}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,4&lt;br /&gt;
|30&lt;br /&gt;
|&lt;br /&gt;
* Makes you stumble around.&lt;br /&gt;
* Makes you hallucinate more.&lt;br /&gt;
* Deals 12 toxin damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 8 brain damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Knocks you out.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 6 brute damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 6 burn damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 18 toxin damage.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|chitinplasma}}[[#chitinplasma|Chitin Plasma]]&lt;br /&gt;
|&lt;br /&gt;
* Prevents fractures.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#HDN|HDN]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Chitin Plasma}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,4&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Slows you down.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 3 brute damage.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|catecholamineplasma}}[[#catecholamineplasma|Catecholamine Plasma]]&lt;br /&gt;
|&lt;br /&gt;
* Applies pain.&lt;br /&gt;
* Makes you faster.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#PNG|PNG]] 2&lt;br /&gt;
* [[Researcher#MST|MST]] 6&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Catecholamine Plasma}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,4&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Increased pain.&lt;br /&gt;
* Deals 2 brute damage.&lt;br /&gt;
* Deals 6 heart damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 10 brute damage.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|eggplasma}}[[#eggplasma|Egg Plasma]]&lt;br /&gt;
|&lt;br /&gt;
* Infects with a xeno larva.&lt;br /&gt;
* Makes more of itself by draining blood.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#HST|HST]] 4&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Egg Plasma}}&lt;br /&gt;
|&lt;br /&gt;
|0,4&lt;br /&gt;
|&lt;br /&gt;
* 80&lt;br /&gt;
* 100&lt;br /&gt;
|&lt;br /&gt;
* Drains blood and replicates itself faster.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Makes you nervous.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|neurotoxinplasma}}[[#neurotoxinplasma|Neurotoxin Plasma]]&lt;br /&gt;
|&lt;br /&gt;
* Not to be confused with the [[Drinks#neurotoxin|drink]].&lt;br /&gt;
* Deals 7 brain damage.&lt;br /&gt;
* Deals 1 toxin damage.&lt;br /&gt;
* Makes you high.&lt;br /&gt;
* Makes you hallucinate.&lt;br /&gt;
* Makes you jittery.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#NRT|NRT]] 4&lt;br /&gt;
* [[Researcher#TOX|TOX]] 1&lt;br /&gt;
* [[Researcher#HLG|HLG]] 6&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Neurotoxin Plasma}}&lt;br /&gt;
|&lt;br /&gt;
|0,4&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Deals 12 brain damage.&lt;br /&gt;
* Makes you stumble around.&lt;br /&gt;
* Makes you hallucinate more.&lt;br /&gt;
* Makes you more jittery.&lt;br /&gt;
* Makes you drowsy.&lt;br /&gt;
* Deals 2 toxin damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Knocks you out.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 6 brain damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Applies the same effect as getting shot with [[Sentinel|neuro]].&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 4 toxin damage.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|purpleplasma}}[[#purpleplasma|Purple Plasma]]&lt;br /&gt;
|&lt;br /&gt;
* Deals 2 brute damage.&lt;br /&gt;
|&lt;br /&gt;
* [[#BCD|BCD]] 2&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Purple Plasma}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,4&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Deals 4 brute damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 8 brute damage.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|royalplasma}}[[#royalplasma|Royal Plasma]]&lt;br /&gt;
|&lt;br /&gt;
* Makes you addicted to itself.&lt;br /&gt;
* Deals 4 brute damage.&lt;br /&gt;
* Makes you hallucinate.&lt;br /&gt;
* Makes you high.&lt;br /&gt;
* Makes you jittery.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#BCD|BCD]] 4&lt;br /&gt;
* [[Researcher#ADT|ADT]] 1&lt;br /&gt;
* [[Researcher#HLG|HLG]] 4&lt;br /&gt;
* [[Researcher#CIP|CIP]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Royal Plasma}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,4&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Deals 1 brain damage.&lt;br /&gt;
* Deals 8 brute damage.&lt;br /&gt;
* Makes you stumble around.&lt;br /&gt;
* Makes you hallucinate more.&lt;br /&gt;
* Makes you more jittery&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 4 brain damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Knocks you out.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 16 brute damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Makes you nervous.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Other==&lt;br /&gt;
This contains reagents that don&#039;t neatly fit into other categories.&lt;br /&gt;
{| class=&amp;quot;wikitable unsortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 10%; margin: auto;&amp;quot; |Name&lt;br /&gt;
! style=&amp;quot;width: 20%; margin: auto;&amp;quot; |Effect&lt;br /&gt;
! style=&amp;quot;width: 12%; margin: auto;&amp;quot; |Properties&lt;br /&gt;
! style=&amp;quot;margin: auto;&amp;quot; |Acquiring&lt;br /&gt;
! style=&amp;quot;width: 5%; margin: auto;&amp;quot; |Ratio&lt;br /&gt;
! style=&amp;quot;width: 5%; margin: auto;&amp;quot; |Meta- bolism&lt;br /&gt;
! style=&amp;quot;width: 5%; margin: auto;&amp;quot; |OD&lt;br /&gt;
! style=&amp;quot;width: 20%; margin: auto;&amp;quot; |OD effects&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|fertilizer}}[[#fertilizer|Fertilizer]]&lt;br /&gt;
|&lt;br /&gt;
* Usable as fertilizer for plants.&lt;br /&gt;
* Deals 0,5 toxin damage.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#TOX|TOX]] 0,5&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Fertilizer}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,1&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|plantbgone}}[[#plantbgone|Plant-B-Gone]]&lt;br /&gt;
|&lt;br /&gt;
* Kills xeno weeds.&lt;br /&gt;
* Kills normal weeds.&lt;br /&gt;
* Harms helpful plants in hydro trays too.&lt;br /&gt;
* Deals 1 toxin damage.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#TOX|TOX]] 2&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Plant-B-Gone}}&lt;br /&gt;
|5:5&lt;br /&gt;
|0,1&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|smoke}}[[#smoke|Smoke]]&lt;br /&gt;
|&lt;br /&gt;
* Creates smoke&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Smoke}}&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|flashpowder}}[[#flashpowder|Flash Powder]]&lt;br /&gt;
|&lt;br /&gt;
* Creates a bright light that lasts for a while.&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Flash Powder}}&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|blood}}[[#blood|Blood]]&lt;br /&gt;
|&lt;br /&gt;
* Spreads diseases if injected.&lt;br /&gt;
* Restores blood volume when injected into a human.&lt;br /&gt;
** Deals toxin damage if blood type is incorrect. (Just use O-)&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Blood}}&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|plasticide}}[[#plasticide|Plasticide]]&lt;br /&gt;
|&lt;br /&gt;
* Deals 1 toxin damage.&lt;br /&gt;
* Turns into plastic when mixed at a 20:10 ratio with [[#sulphuricacid|Sulphuric Acid]].&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#TOX|TOX]] 1&lt;br /&gt;
|{{:Chemical/Plasticide}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,01&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|serotrotium}}[[#serotrotium|Serotrotium]]&lt;br /&gt;
|&lt;br /&gt;
* Makes you sneeze, blink and cough.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#ALG|ALG]] 2&lt;br /&gt;
|{{:Chemical/Serotrotium}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|glycerol}}[[#glycerol|Glycerol]]&lt;br /&gt;
|&lt;br /&gt;
* Used for making nitroglycerin.&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Gylcerol}}&lt;br /&gt;
|4:1&lt;br /&gt;
|0,01&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|virusfood}}[[#virusfood|Virus Food]]&lt;br /&gt;
|&lt;br /&gt;
* No pathology on CM. So this is entirely useless.&lt;br /&gt;
* Satiates you.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#NTR|NTR]] 2&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Virus Food}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|thermite}}[[#thermite|Thermite]]&lt;br /&gt;
|&lt;br /&gt;
* Fire modifier.&lt;br /&gt;
* Deals 1 burn damage.&lt;br /&gt;
* Can be applied to walls either directly or with a spray bottle and then ignited to melt through them.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#FUL|FUL]] 7&lt;br /&gt;
* [[Researcher#OXI|OXI]] 5&lt;br /&gt;
* [[Researcher#VIS|VIS]] 4&lt;br /&gt;
* [[Researcher#CRS|CRS]] 2&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Thermite}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|spacecleaner}}[[#spacecleaner|Space Cleaner]]&lt;br /&gt;
|&lt;br /&gt;
* Cleans objects when splashed/sprayed on them.&lt;br /&gt;
* Use a spray bottle filled with it to clean a dirty microwave.&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Space Cleaner}}&lt;br /&gt;
|3:2&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Unless there&#039;s some snowflake code tucked away in a deep dark corner of CM, this has no effects on OD.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|cryptobiolin}}[[#cryptobiolin|Cryptobiolin]]&lt;br /&gt;
|&lt;br /&gt;
* Used for making spaceacillin.&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Cryptobiolin}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
&amp;lt;!--|-&lt;br /&gt;
|{{anchor|nanites}}[[#nanites|Nanites]]&lt;br /&gt;
|&lt;br /&gt;
* &#039;&#039;&#039;01010100 01101000 01100101 00100000 01100110 01101100 01100101 01110011 01101000 00100000 01101001 01110011 00100000 01110111 01100101 01100001 01101011 00101110&#039;&#039;&#039;&lt;br /&gt;
** Beep boop, motherfucker.&lt;br /&gt;
*** Copper to counteract.&lt;br /&gt;
* Commented out because this doesn&#039;t actually work. The disease just vanishes after stage 5. Pretty sure this is a bug, since the &amp;quot;object spawner&amp;quot; item spawns on the ground briefly.&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
* [[Cooking#roburger|Roburgers]]&lt;br /&gt;
|N/A&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A--&amp;gt;&lt;br /&gt;
&amp;lt;!--|-&lt;br /&gt;
|{{anchor|xenomicrobes}}[[#xenomicrobes|Xenomicrobes]]&lt;br /&gt;
|&lt;br /&gt;
* Commented out, since you can&#039;t get this without admins, and I&#039;d rather keep this whole thing reasonably secret.&lt;br /&gt;
** Takes a LONG time. Be patient.&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|fluorosurfactant}}[[#fluorosurfactant|Fluorosurfactant]]&lt;br /&gt;
|&lt;br /&gt;
* Turns into foam when mixed with [[#water|water]] at a 1:1 ratio. &lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Fluorosurfactant}}&lt;br /&gt;
|5:5&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|foamingagent}}[[#foamingagent|Foaming Agent]]&lt;br /&gt;
|&lt;br /&gt;
* Creates metal foam when 1u is mixed with 1u [[#polytrinicacid|polytrinic acid]] and 3u [[#aluminuim|aluminium]] or 3u [[#iron|iron]].&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Foaming Agent}}&lt;br /&gt;
|2:1&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|ammonia}}[[#ammonia|Ammonia]]&lt;br /&gt;
|&lt;br /&gt;
* Used for explosives.&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Ammonia}}&lt;br /&gt;
|4:3&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|hexamine}}[[#hexamine|Hexamine]]&lt;br /&gt;
|&lt;br /&gt;
* As above.&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Hexamine}}&lt;br /&gt;
|5:3&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
&amp;lt;!--|-&lt;br /&gt;
|{{anchor|ultraglue}}[[#ultraglue|Ultraglue]]&lt;br /&gt;
|&lt;br /&gt;
* Literally does nothing.&lt;br /&gt;
|N/A&lt;br /&gt;
|{{:Chemical/Ultraglue}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|diethylamine}}[[#diethylamine|Diethylamine]]&lt;br /&gt;
|&lt;br /&gt;
* Fertilizer.&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Diethylamine}}&lt;br /&gt;
|2:2&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|blackgoo}}[[#blackgoo|Black Goo]]&lt;br /&gt;
|&lt;br /&gt;
* Gives you the zombie virus.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#RAV|RAV]] 1&lt;br /&gt;
|{{:Chemical/Black Goo}}&lt;br /&gt;
|N/A&lt;br /&gt;
|100&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|dinitroaniline}}[[#dinitroaniline|Dinitroaniline]]&lt;br /&gt;
|&lt;br /&gt;
* A herbicide and pesticide mixture used in hydroponics &lt;br /&gt;
* Deals 1 toxin damage.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#TOX|TOX]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Dinitroaniline}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0.2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Explosives and flammable chems==&lt;br /&gt;
This contains reagents that can be used for making explosives. They may be duplicates of ones already present in one of the previous tables.&lt;br /&gt;
{| class=&amp;quot;wikitable unsortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 10%; margin: auto;&amp;quot; |Name&lt;br /&gt;
! style=&amp;quot;width: 20%; margin: auto;&amp;quot; |Recipe&lt;br /&gt;
! style=&amp;quot;width: 10%; margin: auto;&amp;quot; |Ratio&lt;br /&gt;
! style=&amp;quot;width: 10%; margin: auto;&amp;quot; |Power&lt;br /&gt;
! style=&amp;quot;width: 10%; margin: auto;&amp;quot; |Falloff&lt;br /&gt;
! style=&amp;quot;width: 10%; margin: auto;&amp;quot; |Intensity&lt;br /&gt;
! style=&amp;quot;width: 10%; margin: auto;&amp;quot; |Radius&lt;br /&gt;
! style=&amp;quot;width: 10%; margin: auto;&amp;quot; |Duration&lt;br /&gt;
! style=&amp;quot;width: 10%; margin: auto;&amp;quot; |Fire colour&lt;br /&gt;
|-&lt;br /&gt;
| [[#water|Water]]&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Water}}&lt;br /&gt;
| 3:1&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| -3&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| N/A&lt;br /&gt;
|-&lt;br /&gt;
| [[#oxygen|Oxygen]]&lt;br /&gt;
| {{:Chemical/Oxygen}}&lt;br /&gt;
| N/A&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0,75&lt;br /&gt;
| -0,08&lt;br /&gt;
| 0&lt;br /&gt;
| #58daff (light blue)&lt;br /&gt;
|-&lt;br /&gt;
| [[#copper|Copper]]&lt;br /&gt;
| {{:Chemical/Copper}}&lt;br /&gt;
| N/A&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| #78be5a (green)&lt;br /&gt;
|-&lt;br /&gt;
| [[#hydrogen|Hydrogen]]&lt;br /&gt;
| {{:Chemical/Hydrogen}}&lt;br /&gt;
| N/A&lt;br /&gt;
| 0,15&lt;br /&gt;
| 0&lt;br /&gt;
| -0,5&lt;br /&gt;
| 0,2&lt;br /&gt;
| -0,5&lt;br /&gt;
| #b6f8ff (super light blue)&lt;br /&gt;
|-&lt;br /&gt;
| [[#carbon|Carbon]]&lt;br /&gt;
| {{:Chemical/Carbon}}&lt;br /&gt;
| N/A&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 1&lt;br /&gt;
| #ffd700 (gold)&lt;br /&gt;
|-&lt;br /&gt;
| [[#phosphorus|Phosphorus]]&lt;br /&gt;
| {{:Chemical/Phosphorus}}&lt;br /&gt;
| N/A&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 1&lt;br /&gt;
| -0,12&lt;br /&gt;
| 0,1&lt;br /&gt;
| #ffdba4&lt;br /&gt;
|-&lt;br /&gt;
| [[#lithium|Lithium]]&lt;br /&gt;
| {{:Chemical/Lithium}}&lt;br /&gt;
| N/A&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0,35&lt;br /&gt;
| -0,01&lt;br /&gt;
| -0,1&lt;br /&gt;
| #ff356f (dark pink)&lt;br /&gt;
|-&lt;br /&gt;
| [[#thermite|Thermite]]&lt;br /&gt;
| &lt;br /&gt;
{{:Chemical/Thermite}}&lt;br /&gt;
| 3:3&lt;br /&gt;
| 0,5&lt;br /&gt;
| 1&lt;br /&gt;
| 0,3&lt;br /&gt;
| -0,08&lt;br /&gt;
| 0,9&lt;br /&gt;
| #ffb300 (orange)&lt;br /&gt;
|-&lt;br /&gt;
| [[#fuel|Welding Fuel]]&lt;br /&gt;
| {{:Chemical/Welding Fuel}}&lt;br /&gt;
| N/A&lt;br /&gt;
| 0,12&lt;br /&gt;
| -0,1&lt;br /&gt;
| 0,1&lt;br /&gt;
| -0,08&lt;br /&gt;
| 0,7&lt;br /&gt;
| #ff9900 (orange)&lt;br /&gt;
|-&lt;br /&gt;
| [[#hexamine|Hexamine]]&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Hexamine}}&lt;br /&gt;
| 5:2&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0,5&lt;br /&gt;
| #ff9900 (as above)&lt;br /&gt;
|-&lt;br /&gt;
| [[#napalm|Napalm]]&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Napalm}}&lt;br /&gt;
| 3:1&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0,45&lt;br /&gt;
| 0,06&lt;br /&gt;
| 0,75&lt;br /&gt;
| #D05006 (dark orange)&lt;br /&gt;
|-&lt;br /&gt;
| {{anchor|clf3}}[[#clf3|CLF3 (Chlorine Trifluoride )]]&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Chlorine Triflouride}}&lt;br /&gt;
| 4:1&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 1,6&lt;br /&gt;
| -0,08&lt;br /&gt;
| -0,8&lt;br /&gt;
| #ff9300 (orange)&lt;br /&gt;
|-&lt;br /&gt;
| [[#methane|Methane]]&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Methane}}&lt;br /&gt;
| 5:1&lt;br /&gt;
| 0,15&lt;br /&gt;
| 0&lt;br /&gt;
| -0,35&lt;br /&gt;
| 0,095&lt;br /&gt;
| 0,25&lt;br /&gt;
| #00a5ff (blue)&lt;br /&gt;
|-&lt;br /&gt;
| {{anchor|ammoniumnitrate}}[[#ammoniumnitrate|Ammonium Nitrate]]&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Ammonium Nitrate}}&lt;br /&gt;
| 2:2&lt;br /&gt;
| 0,4&lt;br /&gt;
| 1,5&lt;br /&gt;
| 0,5&lt;br /&gt;
| 0&lt;br /&gt;
| -0,2&lt;br /&gt;
| #ff9900 (orange)&lt;br /&gt;
|-&lt;br /&gt;
| {{anchor|anfo}}[[#anfo|Ammonium Nitrate Fuel Oil]]&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Ammonium Nitrate Fuel Oil}}&lt;br /&gt;
| 3:2&lt;br /&gt;
| 1&lt;br /&gt;
| -0,6&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| N/A&lt;br /&gt;
|-&lt;br /&gt;
| {{anchor|nitroglycerin}}[[#nitroglycerin|Nitroglycerin]]&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Nitroglycerin}}&lt;br /&gt;
| 3:2&lt;br /&gt;
| 1&lt;br /&gt;
| -0,5&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| N/A&lt;br /&gt;
|-&lt;br /&gt;
| {{anchor|cyclonite}}[[#cyclonite|Cyclonite]]&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Cyclonite}}&lt;br /&gt;
| 2:2&lt;br /&gt;
| 1,5&lt;br /&gt;
| -0,4&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| N/A&lt;br /&gt;
|-&lt;br /&gt;
| {{anchor|octogen}}[[#octogen|Octogen]]&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Octogen}}&lt;br /&gt;
| 4:2&lt;br /&gt;
| 2&lt;br /&gt;
| -0,2&lt;br /&gt;
| 0,4&lt;br /&gt;
| -0,02&lt;br /&gt;
| -0,2&lt;br /&gt;
| Orange &amp;lt;!--I have no clue what the exact hex code is. But it looks orange.--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| {{anchor|potassiumhydroxide}}[[#potassiumhydroxide|Potassium Hydroxide]]&lt;br /&gt;
|&lt;br /&gt;
* Explodes INSTANTLY and can&#039;t be stabilized. Don&#039;t use this. It&#039;s garbage.&lt;br /&gt;
{{:Chemical/Potassium Hydroxide}}&lt;br /&gt;
| 2:1&lt;br /&gt;
| 0,5&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| N/A&lt;br /&gt;
|-&lt;br /&gt;
| [[#phoron|Phoron]]&lt;br /&gt;
| {{:Chemical/Phoron}}&lt;br /&gt;
| N/A&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0,4&lt;br /&gt;
| 0,05&lt;br /&gt;
| -0,8&lt;br /&gt;
| #e01e1e (red)&lt;br /&gt;
|-&lt;br /&gt;
| [[#potassiumchloride|Potassium Chloride]]&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Potassium Chloride}}&lt;br /&gt;
| 2:2&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0,1&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| #800080 (purple)&lt;br /&gt;
|-&lt;br /&gt;
| {{anchor|salt}}[[#salt|Table Salt]]&lt;br /&gt;
| &lt;br /&gt;
{{:Chemical/Table Salt}}&lt;br /&gt;
| 1:1&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0,1&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| #ffff00 (yellow)&lt;br /&gt;
|-&lt;br /&gt;
| {{anchor|stickynapalm}}[[#stickynapalm|Sticky Napalm]]&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Sticky Napalm}}&lt;br /&gt;
| 1:1&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0,2&lt;br /&gt;
| 0,5&lt;br /&gt;
| 0,5&lt;br /&gt;
| #f8e3b2 (barley white)&lt;br /&gt;
|-&lt;br /&gt;
| {{anchor|hcnapalm}}[[#hcnapalm|High-Combustion Napalm]]&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/High-Combustion Napalm}}&lt;br /&gt;
| 1:1&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0,8&lt;br /&gt;
| 0,1&lt;br /&gt;
| 0,5&lt;br /&gt;
| #742424 (dark red)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Additional User made information=&lt;br /&gt;
* [https://cm-ss13.com/forums/showthread.php?3414-Magnus-Opus-on-Reasearch-by-Cory-Paulson Magnum Opus on Research] by Cory Paulson&lt;/div&gt;</summary>
		<author><name>Drulikar</name></author>
	</entry>
	<entry>
		<id>https://cm-ss13.com/w/index.php?title=Guide_to_Medicine&amp;diff=30661</id>
		<title>Guide to Medicine</title>
		<link rel="alternate" type="text/html" href="https://cm-ss13.com/w/index.php?title=Guide_to_Medicine&amp;diff=30661"/>
		<updated>2024-04-21T01:07:37Z</updated>

		<summary type="html">&lt;p&gt;Drulikar: Update Cryogenic Chambers for https://github.com/cmss13-devs/cmss13/pull/6058 and add anchors&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=General Diagnostics=&lt;br /&gt;
&lt;br /&gt;
==Damage Types==&lt;br /&gt;
{| class=&amp;quot;mw-collapsible wikitable sortable&amp;quot;&lt;br /&gt;
! Damage Type:&lt;br /&gt;
! class = &amp;quot;unsortable&amp;quot;|Symptoms: &lt;br /&gt;
! class = &amp;quot;unsortable&amp;quot;|Possible cause: &lt;br /&gt;
! class = &amp;quot;unsortable&amp;quot;|Treatment: &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | [[File:Advanced_first-aid_kit.png]] {{Anchor|Brute}}[[#Brute|Brute]]&lt;br /&gt;
||&lt;br /&gt;
*Damaged body parts&lt;br /&gt;
*#Possibility of [[#Bleeding|bleeding]]&lt;br /&gt;
*#Possibility of [[#Fractures|breaking bones]]&lt;br /&gt;
*#Small chance of getting [[#Organ Damage|organ damage]]&lt;br /&gt;
*#*[[#Eye|Eye]]&lt;br /&gt;
*#*[[#Brain|Brain]]&lt;br /&gt;
*#*[[#Heart|Heart]]&lt;br /&gt;
*#*[[#Lung|Lung]]&lt;br /&gt;
*#*[[#Liver|Liver]]&lt;br /&gt;
*#*[[#Kidney|Kidney]]&lt;br /&gt;
*Moderate amount of [[#Pain|pain]]&lt;br /&gt;
||&lt;br /&gt;
*Gunfire&lt;br /&gt;
*Melee combat&lt;br /&gt;
*Explosives&lt;br /&gt;
*Peridaxon OD&lt;br /&gt;
||&lt;br /&gt;
*[[#Gauze|Roll of gauze]]&lt;br /&gt;
*[[#Advanced trauma kit|Advanced trauma kit]]&lt;br /&gt;
*[[Chemistry#Bicaridine|Bicaridine]]&lt;br /&gt;
*[[Chemistry#Tricordrazine|Tricordrazine]]&lt;br /&gt;
*[[#Cryogenic Chambers|Cryotube]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | [[File:Fire_first-aid_kit.png]]&amp;lt;br&amp;gt;{{Anchor|Burn}}[[#Burn|Burn]]||&lt;br /&gt;
* Burned body parts&lt;br /&gt;
* Large amount of [[#Pain|pain]]&lt;br /&gt;
||&lt;br /&gt;
*Fire&lt;br /&gt;
*Acid (example: xenomorph acid, unfiltered water on Trijent Dam)&lt;br /&gt;
*Electrocution&lt;br /&gt;
*Extreme Cold (example: snowstorms and bodies of water on Sorokyne Strata)&lt;br /&gt;
||&lt;br /&gt;
*[[#Ointment|Ointment]]&lt;br /&gt;
*[[#Advanced burn kit|Advanced burn kit]]&lt;br /&gt;
*[[Chemistry#Kelotane|Kelotane]]&lt;br /&gt;
*[[Chemistry#Dermaline|Dermaline]]&lt;br /&gt;
*[[Chemistry#Tricordrazine|Tricordrazine]]&lt;br /&gt;
*[[#Cryogenic Chambers|Cryotube]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | [[File:Toxinfirstaid.png]]&amp;lt;br&amp;gt;{{Anchor|Toxins}}[[#Toxins|Toxins]]||&lt;br /&gt;
*Periodical throwing up, followed up by being briefly stunned&lt;br /&gt;
*Nausea and dizziness&lt;br /&gt;
*Very large amounts of [[#Pain|pain]]&lt;br /&gt;
*Organ damage (if extremely high)&lt;br /&gt;
**[[#Liver|Liver]]&lt;br /&gt;
**[[#Kidney|Kidney]]&lt;br /&gt;
||&lt;br /&gt;
*Poisons/toxins&lt;br /&gt;
*Overdose of medicine (not every kind of overdose causes this)&lt;br /&gt;
*Heavy-extreme [[#Blood Loss|blood loss]]&lt;br /&gt;
*Chestbursting&lt;br /&gt;
*Organ damage&lt;br /&gt;
**[[#Liver|Liver]]&lt;br /&gt;
**[[#Kidney|Kidneys]]&lt;br /&gt;
*Digesting things that should not be digested (Poison, Alcohol)&lt;br /&gt;
&lt;br /&gt;
*[[#Cryotubes|Cryotubes]] with no cryomix&lt;br /&gt;
||&lt;br /&gt;
*[[Chemistry#Dylovene|Dylovene]]&lt;br /&gt;
*[[Chemistry#Tricordrazine|Tricordrazine]]&lt;br /&gt;
*[[Surgery#Internal Organs Surgery|Surgery (if organs are damaged)]]&lt;br /&gt;
*[[#Cryogenic Chambers|Cryotube]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | [[File:Oxygen_deprivation_first_aid.png]]&amp;lt;br&amp;gt;{{Anchor|Suffocation}}[[#Suffocation|Suffocation]]||&lt;br /&gt;
*Gasping and/or coughing up blood&lt;br /&gt;
*Passing out at 50 damage&lt;br /&gt;
||&lt;br /&gt;
*Organ damage&lt;br /&gt;
**[[#Lung|Lung]]&lt;br /&gt;
**[[#Heart|Heart]]&lt;br /&gt;
*[[#Blood Loss|Blood loss]]&lt;br /&gt;
*[[#Hard Crit|Dying]]&lt;br /&gt;
||&lt;br /&gt;
*[[Chemistry#Dexalin|Dexalin]]&lt;br /&gt;
*[[Chemistry#Dexalin Plus|Dexalin+]]&lt;br /&gt;
*[[Chemistry#Inaprovaline|Inaprovaline]]&lt;br /&gt;
*[[Surgery#Internal Organs Surgery|Surgery (if organs are damaged)]]&lt;br /&gt;
*[[#Cryogenic Chambers|Cryotube]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | [[File:Radiation_first-aid_kit.png]]&amp;lt;br&amp;gt;{{Anchor|Genetic}}[[#Genetic|Genetic]]&lt;br /&gt;
||&lt;br /&gt;
*Being unable to use limbs if the damage&#039;s too high&lt;br /&gt;
*Lowered overall health&lt;br /&gt;
||&lt;br /&gt;
* Radiation.&lt;br /&gt;
||&lt;br /&gt;
*[[Chemistry#Ryetalyn|Ryetalyn]]&lt;br /&gt;
*[[#Cryogenic Chambers|Cryotube]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Organ Damage===&lt;br /&gt;
{| class=&amp;quot;mw-collapsible wikitable sortable&amp;quot;&lt;br /&gt;
!Damage Type:&lt;br /&gt;
! class = &amp;quot;unsortable&amp;quot;|Symptoms: &lt;br /&gt;
! class = &amp;quot;unsortable&amp;quot;|Possible cause: &lt;br /&gt;
!class = &amp;quot;unsortable&amp;quot;|Treatment: &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|{{Anchor|Brain}}[[#Brain|Brain]]||&lt;br /&gt;
*Dropping items out of your hands and resting randomly, rare random erratic movements&lt;br /&gt;
*Headaches&lt;br /&gt;
*Impaired vision&lt;br /&gt;
*Has no further effects, even beyond 100 damage&lt;br /&gt;
**Reads on the health analyzer as &#039;Patient is braindead&#039;.&lt;br /&gt;
|&lt;br /&gt;
*[[#Brute|Brute]] head trauma&lt;br /&gt;
*Tricordrazine overdose&lt;br /&gt;
|&lt;br /&gt;
*[[Chemistry#Alkysine|Alkysine]]&lt;br /&gt;
*[[Surgery#Brain Damage Surgery|Surgery]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|{{Anchor|Eye}}[[#Eye|Eye]]||&lt;br /&gt;
*Blurry vision&lt;br /&gt;
*Blindness&lt;br /&gt;
|&lt;br /&gt;
*[[#Brute|Brute]] head trauma&lt;br /&gt;
*Welding without eye protection&lt;br /&gt;
*Screwdriver to the eyes&lt;br /&gt;
|&lt;br /&gt;
*[[Chemistry#Peridaxon|Peridaxon (Does not heal, &#039;&#039;&#039;ONLY&#039;&#039;&#039; stops negative effects of eye damage)]]&lt;br /&gt;
*[[Chemistry#Imidazoline|Imidazoline]]&lt;br /&gt;
*[[Surgery#Eye Surgery|Surgery]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|{{Anchor|Heart}}[[#Heart|Heart]]||&lt;br /&gt;
*Lowers effective [[#Blood Loss|blood level]] of the body, causing, at 100% blood:&lt;br /&gt;
**Small amount of [[#Suffocation|oxygen damage]] capped around 21, when heart is damaged&lt;br /&gt;
**Rapid amount of [[#Suffocation|oxygen damage]] until around 50, at 10 damage&lt;br /&gt;
***Rate of [[#Suffocation|oxygen damage]] slows significantly, but does not stop, after 50 damage&lt;br /&gt;
**Rapid amount of [[#Suffocation|oxygen damage]] and [[#Toxins|toxin damage]] and an inability to be revived, at 30 damage&lt;br /&gt;
***Also known as [[#Defibrillator icons|heartbreak]].&lt;br /&gt;
|&lt;br /&gt;
*Moving with an unsplinted [[#Fractures|fractured]] chest&lt;br /&gt;
*Armor piercing damage to chest&lt;br /&gt;
*Random chance upon receiving extreme [[#Brute|brute damage]] to the chest&lt;br /&gt;
*[[#Defibrillator Usage|Defibrillation attempts]]&lt;br /&gt;
|&lt;br /&gt;
*[[Chemistry#Peridaxon|Peridaxon (Does not heal, &#039;&#039;&#039;ONLY&#039;&#039;&#039; stops negative effects of heart damage)]]&lt;br /&gt;
*[[Surgery#Internal Organs Surgery|Surgery]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|{{Anchor|Lung}}[[#Lung|Lung]]||&lt;br /&gt;
*Reads as &#039;ruptured&#039; on scanners&lt;br /&gt;
*Fast accumulation of [[#Suffocation|oxygen damage]] until death&lt;br /&gt;
*Coughing up blood&lt;br /&gt;
*Inability to breathe anesthetic during surgery (Use Oxycodone or Suxamorycin as anesthetic instead)&lt;br /&gt;
|&lt;br /&gt;
*Moving with an unsplinted [[#Fractures|fractured]] chest&lt;br /&gt;
*Armor piercing damage to the chest&lt;br /&gt;
*Random chance upon receiving extreme [[#Brute|brute damage]] to the chest&lt;br /&gt;
|&lt;br /&gt;
*[[Chemistry#Peridaxon|Peridaxon (Does not heal, &#039;&#039;&#039;ONLY&#039;&#039;&#039; stops negative effects of lung damage)]]&lt;br /&gt;
*[[Surgery#Internal Organs Surgery|Surgery]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|{{Anchor|Liver}}[[#Liver|Liver]]||&lt;br /&gt;
*Accumulation of [[#Toxins|toxin damage]] dependent upon amount of damage&lt;br /&gt;
*Alchohol and poison metabolises slower, and alchohol deals [[#Toxins|toxin damage]]&lt;br /&gt;
|&lt;br /&gt;
*Moving with an unsplinted [[#Fractures|fractured]] chest&lt;br /&gt;
*Armor piercing damage to the chest&lt;br /&gt;
*Random chance upon receiving extreme [[#Brute|brute damage]] to the chest&lt;br /&gt;
*Alcohol poisoning&lt;br /&gt;
*Extreme [[#Toxin|toxin damage]]&lt;br /&gt;
|&lt;br /&gt;
*[[Chemistry#Peridaxon|Peridaxon (Does not heal, &#039;&#039;&#039;ONLY&#039;&#039;&#039; stops negative effects of liver damage)]]&lt;br /&gt;
*[[Surgery#Internal Organs Surgery|Surgery]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|{{Anchor|Kidney}}[[#Kidney|Kidney]]||&lt;br /&gt;
*Accumulation of [[#Toxins|toxin damage]] dependent upon amount of damage&lt;br /&gt;
|&lt;br /&gt;
*Moving with an unsplinted [[#Fractures|fractured]] groin&lt;br /&gt;
*Armor piercing damage to the groin&lt;br /&gt;
*Random chance upon receiving extreme [[#Brute|brute damage]] to the groin&lt;br /&gt;
*Extreme [[#Toxin|toxin damage]]&lt;br /&gt;
|&lt;br /&gt;
*[[Chemistry#Peridaxon|Peridaxon (Does not heal, &#039;&#039;&#039;ONLY&#039;&#039;&#039; stops negative effects of kidney damage)]]&lt;br /&gt;
*[[Surgery#Internal Organs Surgery|Surgery]]&lt;br /&gt;
 |}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Other Medical Conditions==&lt;br /&gt;
{| class=&amp;quot;mw-collapsible wikitable sortable&amp;quot;&lt;br /&gt;
!Medical Condition:&lt;br /&gt;
! class = &amp;quot;unsortable&amp;quot;|Symptoms: &lt;br /&gt;
! class = &amp;quot;unsortable&amp;quot;|Possible cause: &lt;br /&gt;
!class = &amp;quot;unsortable&amp;quot;|Treatment: &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|{{Anchor|Fractures}}[[#Fractures|Fractures]]||&lt;br /&gt;
*Moderate amount of pain&lt;br /&gt;
*Dropping items out of your hands randomly (arm or hand)&lt;br /&gt;
*Notable slowdown (leg or foot)&lt;br /&gt;
*Chance for Internal Bleeding to occur if patient moves with a unsplinted fracture.&lt;br /&gt;
*Organ damage in fractured region upon unsplinted movement (head, chest, and groin)&lt;br /&gt;
**&#039;&#039;&#039;Head&#039;&#039;&#039;&lt;br /&gt;
***[[#Eye|Eye]]&lt;br /&gt;
***[[#Brain|Brain]]&lt;br /&gt;
**&#039;&#039;&#039;Chest&#039;&#039;&#039;&lt;br /&gt;
***[[#Heart|Heart]]&lt;br /&gt;
***[[#Lung|Lung]]&lt;br /&gt;
***[[#Liver|Liver]]&lt;br /&gt;
**&#039;&#039;&#039;Groin&#039;&#039;&#039;&lt;br /&gt;
***[[#Kidney|Kidney]]&lt;br /&gt;
||&lt;br /&gt;
* Extreme [[#Brute|brute damage]]&lt;br /&gt;
**Approximately over 25 brute damage for limbs&lt;br /&gt;
**Approximately over 50 brute damage for head, chest, and groin&lt;br /&gt;
||&lt;br /&gt;
*[[#Splints|Splints (Does not heal, &#039;&#039;&#039;ONLY&#039;&#039;&#039; stops negative effects of broken bones)]]&lt;br /&gt;
*[[Surgery#Bone Repair Surgery|Surgery]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|{{Anchor|Blood Loss}}[[#Blood Loss|Blood Loss]]||&lt;br /&gt;
*Blurry vision&lt;br /&gt;
*[[#Suffocation|Oxygen damage]] capped around 21 (low blood)&lt;br /&gt;
**Gives the message &#039;You feel dizzy/woozy/faint&#039;&lt;br /&gt;
*Fast buildup of [[#Suffocation|oxygen damage]] until death (critical blood)&lt;br /&gt;
**Gives the message &#039;You feel extremely dizzy/woozy/faint&#039;&lt;br /&gt;
*Fast buildup of [[#Toxins|toxin damage]] until death (critical blood)&lt;br /&gt;
||&lt;br /&gt;
* [[#Bleeding|Bleeding]]&lt;br /&gt;
* [[#Internal Bleeding|Internal Bleeding]]&lt;br /&gt;
* Blood extraction&lt;br /&gt;
||&lt;br /&gt;
* Blood refill via [[#IV Drip|IV drip]] (preferably O- blood)&lt;br /&gt;
* Iron&lt;br /&gt;
* [[Chemistry#Nutriment|Nutriment]] (food or [[Chemistry#Sugar|sugar]])&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|{{Anchor|Bleeding}}[[#Bleeding|Bleeding]]||&lt;br /&gt;
* [[#Blood Loss|Loss of blood]] depending on the severity of the wound&lt;br /&gt;
**A cut with 5 [[#Brute|brute damage]] isn&#039;t worth bothering with, but a gash of 70 [[#Brute|brute damage]] will cause a lot of [[#Blood Loss|blood loss]]&lt;br /&gt;
||&lt;br /&gt;
* Certain sources of [[#Brute|brute damage]], such as knives&lt;br /&gt;
||&lt;br /&gt;
* [[#Advanced Trauma Kit|Advanced trauma kits]] to affected area and wait for it to fully heal.&lt;br /&gt;
* [[#Gauze|Roll of gauze]] to affected area to stop the bleeding.&lt;br /&gt;
* Waiting for the wound to clot once treated.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|{{Anchor|Internal Bleeding}}[[#Internal Bleeding|Internal Bleeding]]||&lt;br /&gt;
*[[#Blood Loss|Loss of blood]] that worsens over time&lt;br /&gt;
||&lt;br /&gt;
* Random chance upon receiving extreme [[#Brute|brute damage]]&lt;br /&gt;
* Armor piercing attacks&lt;br /&gt;
* Chance to occur when patient moves with an unsplinted fracture&lt;br /&gt;
||&lt;br /&gt;
* [[Surgery#Internal Bleeding Surgery|Surgery]]&lt;br /&gt;
&amp;lt;!--* [[Chemistry#Bicaridine|Bicaridine overdoses heal IB, but &#039;&#039;&#039;only if all brute damage has been dealt with already.&#039;&#039;&#039;]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|{{Anchor|Pain}}[[#Pain|Pain]]||&lt;br /&gt;
*Slowness dependent on level of pain&lt;br /&gt;
*Blurry vision and stuttering past distressing pain&lt;br /&gt;
*Occasional knockdown in severe pain and stun in horrible pain&lt;br /&gt;
*Minor [[#Suffocation|suffocation damage]] in severe and horrible pain&lt;br /&gt;
*Changes to character icon on right side of HUD&lt;br /&gt;
*#[[File:Pain_Tier_0.png]] - No pain&lt;br /&gt;
*#[[File:Pain_Tier_1.png]] - Mild pain&lt;br /&gt;
*#[[File:Pain_Tier_2.png]] - Discomforting pain&lt;br /&gt;
*#[[File:Pain_Tier_3.png]] - Moderate pain&lt;br /&gt;
*#[[File:Pain_Tier_4.png]] - Distressing pain&lt;br /&gt;
*#[[File:Pain_Tier_5.png]] - Severe pain (softcrit)&lt;br /&gt;
*#[[File:Pain_Tier_6.png]] - Horrible pain (paincrit)&lt;br /&gt;
||&lt;br /&gt;
* [[#Damage Types|Damage]]&lt;br /&gt;
** Note: [[#Toxins|&#039;&#039;&#039;Toxin damage&#039;&#039;&#039;]] causes the most pain, [[#Burn|&#039;&#039;&#039;Burn&#039;&#039;&#039;]] damage causes the second most pain, and [[#Suffocation|&#039;&#039;&#039;Oxygen damage]] causes no pain.&lt;br /&gt;
* [[#Fractures|Fractures]]&lt;br /&gt;
* Stun batons&lt;br /&gt;
* Pepper spray&lt;br /&gt;
* Tear gas&lt;br /&gt;
||&lt;br /&gt;
* Painkillers&lt;br /&gt;
**In order from most powerful to weakest:&lt;br /&gt;
**#[[Chemistry#Oxycodone|Oxycodone]]&lt;br /&gt;
**#[[Chemistry#Tramadol|Tramadol]]&lt;br /&gt;
**#[[Chemistry#Paracetamol|Paracetamol]]&lt;br /&gt;
**Overdosing on a painkiller will double the effect. Additionally, some patients may have an &#039;opiate receptor deficiency&#039; and will only have 75% of the standard painkilling effect - but also only 75% of the overdose effect, barring oxygen damage.&lt;br /&gt;
* Using [[#Splints|splints]] on [[#Fractures|fractures]]&lt;br /&gt;
* Treating [[#Damage Types|damage]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|{{Anchor|Hard Crit}}[[#Hard Crit|Hard Crit]]||&lt;br /&gt;
*Unconsciousness&lt;br /&gt;
*[[#Suffocation|Oxygen damage]]&lt;br /&gt;
*Change to character icon on right side of HUD&lt;br /&gt;
**[[File:Pain_Tier_6.png]]&lt;br /&gt;
||&lt;br /&gt;
* Accumulating an extreme amount of damage&lt;br /&gt;
||&lt;br /&gt;
* Treating [[#Damage Types|damage]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|{{Anchor|Missing Limb/Decapitation}}[[#Missing Limb/Decapitation|Missing Limb/Decapitation]]||&lt;br /&gt;
*Massive amount of pain&lt;br /&gt;
*Inability to use a hand (arm or hand)&lt;br /&gt;
*Severe slowdown (leg or foot)&lt;br /&gt;
*Instant death (head) and braindeath (humans only)&lt;br /&gt;
||&lt;br /&gt;
* Extreme [[#Brute|brute damage]] for limbs and head (head only applies users without helmets unless the user is attacking with very sharp weapons).&lt;br /&gt;
* [[Surgery#Amputation|Amputation]]&lt;br /&gt;
||&lt;br /&gt;
*[[Surgery#Limb Replacement Surgery|Surgery]]&lt;br /&gt;
** [[Surgery#Synthetic Head Re-Attachment Surgery|Head-reattachment]] (for synthetic units)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|{{Anchor|Shrapnel and Foreign Objects}}[[#Shrapnel and Foreign Object|Shrapnel and Foreign Objects]]||&lt;br /&gt;
*[[#Organ Damage|Organ damage]] upon reception&lt;br /&gt;
*[[#Brute|Brute damage]] upon reception&lt;br /&gt;
*[[#Brute|Brute damage]] upon unsplinted movement&lt;br /&gt;
||&lt;br /&gt;
* Gunfire&lt;br /&gt;
* Thrown sharp objects&lt;br /&gt;
||&lt;br /&gt;
*Yanking out an object (Only if object is externally embedded)&lt;br /&gt;
#Right click person&lt;br /&gt;
#Click &#039;&#039;&#039;Yank out object&#039;&#039;&#039;&lt;br /&gt;
*Remove with a knife by &#039;&#039;&#039;activating&#039;&#039;&#039; it (default hotkey: &amp;quot;{{Key press|Z}}&amp;quot;).&lt;br /&gt;
*[[Surgery#Foreign Object/Alien Embryo Removal|Surgery]] can remove objects, but only if the object in question is deeply embedded or too small to remove with a regular knife.&lt;br /&gt;
* Click on others &#039;&#039;&#039;in help intent and surgery mode active&#039;&#039;&#039; with a knife in hand to remove shrapnel from them. Note that only those with medical skills get access to surgery mode.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|{{Anchor|Alien Infection}}[[#Alien Infection|Alien Infection]]||&lt;br /&gt;
*Development of [[Larva|Alien larva]]&lt;br /&gt;
*Uncontrollable shaking near or upon [[Aliens|larva&#039;s]] full development&lt;br /&gt;
*Sore throats&lt;br /&gt;
*Coughing&lt;br /&gt;
*Sneezing&lt;br /&gt;
*Mucus generation&lt;br /&gt;
||&lt;br /&gt;
* Infection via an alien egg, [[Carrier|carrier]], [[Carrier|carrier hugger trap]], [[Drone|drone]], [[Queen|queen]], or [[Hivelord|hivelord]]&lt;br /&gt;
||&lt;br /&gt;
*[[Surgery#Foreign Object/Alien Embryo Removal|Surgery]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Medicine==&lt;br /&gt;
===Autoinjectors===&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
Most auto injectors have 3 uses in each of them. Each injection will induce half of the overdose threshold of their chemical, so be cautious when injecting more than their overdose limits.&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Autoinjector Type:&lt;br /&gt;
!What it does:&lt;br /&gt;
!Dosage:&lt;br /&gt;
!Overdose:&lt;br /&gt;
|-&lt;br /&gt;
|{{Anchor|Emergency Auto-injector}}[[File:Emergency_Auto_injector.png|64px]]&amp;lt;br&amp;gt;&#039;&#039;&#039;Emergency Auto-injector&#039;&#039;&#039;&lt;br /&gt;
|An auto-injector loaded with a special cocktail of chemicals, to be used in a life-threatening situations. Contains 29 units of [[Chemistry#Bicaridine|bicaridine]], 29 units of [[Chemistry#Kelotane|kelotane]] and 19 units of [[Chemistry#Oxycodone|oxycodone]].&lt;br /&gt;
| 77 units&lt;br /&gt;
| Additional chemicals listed in its contents.&lt;br /&gt;
|-&lt;br /&gt;
|{{Anchor|Bicaridine Autoinjector}}[[File:Bicaridine.png|64px]]&amp;lt;br&amp;gt;[[Chemistry#Bicaridine|&#039;&#039;&#039;Bicaridine&#039;&#039;&#039;]]&lt;br /&gt;
|Heals [[#Brute|brute damage]], faster than [[#Tricordrazine Autoinjector|tricordrazine]]. Overdose causes [[#Burn|burn damage]] first, and then [[#Toxin|toxin damage]].&lt;br /&gt;
| 15 units&lt;br /&gt;
| 30 units&lt;br /&gt;
|-&lt;br /&gt;
|{{Anchor|Tramadol Autoinjector}}[[File:Tramadol_Injector.png|64px]]&amp;lt;br&amp;gt;[[Chemistry#Tramadol|&#039;&#039;&#039;Tramadol&#039;&#039;&#039;]]&lt;br /&gt;
|Standard issue painkiller of moderate strength, used to keep marines from paincrit, pain slowdown or whining about broken bones. Overdose causes [[#Toxin|toxin damage]]. &lt;br /&gt;
| 15 units&lt;br /&gt;
| 30 units&lt;br /&gt;
|-&lt;br /&gt;
|{{Anchor|Pain-Stop Autoinjector}}[[File:Tramadol_Injector.png|64px]]&amp;lt;br&amp;gt;[[Chemistry#Tramadol|&#039;&#039;&#039;Pain-Stop&#039;&#039;&#039;]]&lt;br /&gt;
|A version of the [[#Tramadol Autoinjector|Tramadol autoinjector]] that can be used by everyone. Found in First-Aid pouches and NanoMed dispensers. Overdose causes [[#Toxin|toxin damage]]. &lt;br /&gt;
| 15 units&lt;br /&gt;
| 30 units&lt;br /&gt;
|-&lt;br /&gt;
|{{Anchor|Tricordrazine Autoinjector}}[[File:Tricord.png|64px]]&amp;lt;br&amp;gt;[[Chemistry#Tricordrazine|&#039;&#039;&#039;Tricordrazine&#039;&#039;&#039;]]&lt;br /&gt;
|Heals [[#Toxin|toxin]], [[#Burn|burn]], [[#Brute|brute]] and [[#Suffocation|oxy damage]], albeit quite slowly. Overdose causes [[#Brain|brain]], [[#Toxin|toxin]], [[#Burn|burn]], and [[#Brute|brute damage]].&lt;br /&gt;
| 15 units&lt;br /&gt;
| 30 units&lt;br /&gt;
|-&lt;br /&gt;
|{{Anchor|First-Aid Autoinjector}}[[File:Tricord.png|64px]]&amp;lt;br&amp;gt;[[Chemistry#Tricordrazine|&#039;&#039;&#039;First-Aid&#039;&#039;&#039;]]&lt;br /&gt;
|A version of the [[#Tricordrazine Autoinjector|Tricordrazine autoinjector]] that can be used by everyone. Found in First-Aid pouches and NanoMed dispensers. Overdose causes [[#Brain|brain]], [[#Toxin|toxin]], [[#Burn|burn]], and [[#Brute|brute damage]].&lt;br /&gt;
| 15 units&lt;br /&gt;
| 30 units&lt;br /&gt;
|-&lt;br /&gt;
|{{Anchor|Dexalin+ Autoinjector}}[[File:Dexalin.png|64px]]&amp;lt;br&amp;gt;[[Chemistry#Dexalin Plus|&#039;&#039;&#039;Dexalin+&#039;&#039;&#039;]]&lt;br /&gt;
|Instantly heals all [[#Suffocation|respiration damage]]. Overdose causes [[#Toxin|toxin damage]].&lt;br /&gt;
| 1 unit&lt;br /&gt;
| 15 units&lt;br /&gt;
|-&lt;br /&gt;
|{{Anchor|Kelotane Autoinjector}}[[File:Kelotane.png|64px]]&amp;lt;br&amp;gt;[[Chemistry#Kelotane|&#039;&#039;&#039;Kelotane&#039;&#039;&#039;]]&lt;br /&gt;
|Heals [[#Burn|burn damage]]. Overdose causes [[#Brute|brute]] and [[#Toxin|toxin damage]].&lt;br /&gt;
| 15 units&lt;br /&gt;
| 30 units&lt;br /&gt;
|-&lt;br /&gt;
|{{Anchor|Dylovene Autoinjector}}[[File:Dylovene.png|64px]]&amp;lt;br&amp;gt;[[Chemistry#Dylovene|&#039;&#039;&#039;Dylovene&#039;&#039;&#039;]]&lt;br /&gt;
||Heals [[#Toxin|toxin damage]] Overdose causes [[#Eye|blindness]].&lt;br /&gt;
| 15 units&lt;br /&gt;
| 30 units&lt;br /&gt;
|-&lt;br /&gt;
|{{Anchor|Inaprovaline Autoinjector}}[[File:Inaprovaline.png|64px]]&amp;lt;br&amp;gt;[[Chemistry#Inaprovaline|&#039;&#039;&#039;Inaprovaline&#039;&#039;&#039;]]&lt;br /&gt;
|Stabilizes critical patients, slowing down their [[#Suffocation|oxygen damage]] buildup. Also acts like a weak painkiller. Overdose causes heart damage.&lt;br /&gt;
| 15 units&lt;br /&gt;
| 60 units&lt;br /&gt;
|-&lt;br /&gt;
|{{Anchor|Adrenaline Autoinjector}}[[File:Epinephrine-Injector.png|64px]]&amp;lt;br&amp;gt;[[Chemistry#Epinephrine|&#039;&#039;&#039;Epinephrine&#039;&#039;&#039;]]&lt;br /&gt;
|An autoinjector loaded with 10 units of Epinephrine, better known as Adrenaline, a nerve stimulant useful in restarting the heart.&lt;br /&gt;
| 10 units&lt;br /&gt;
| +10 units&lt;br /&gt;
|-&lt;br /&gt;
|{{Anchor|Oxycodone Autoinjector}}[[File:Oxycodone.png|64px]]&amp;lt;br&amp;gt;[[Chemistry#Oxycodone|&#039;&#039;&#039;Oxycodone&#039;&#039;&#039;]]&lt;br /&gt;
|Very robust painkiller, practically making all of your pain go away - metabolizes fairly quickly, though. Very useful as anesthetic as well. Overdose causes hallucinations and [[#Toxin|toxin damage]].&lt;br /&gt;
| 10 units&lt;br /&gt;
| 20 units&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remember that you can restock your autoinjectors, so don&#039;t just throw them away. Put them back into your belt instead, they can be refilled at the WeylandMed vendors - just click on them to refill the injector if you have access to them. They don&#039;t need to be empty in order to be refilled - simply left click the vendor with a non-full injector in your active hand.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Pill Bottles[[File:PillBottle.png|64px]]===&lt;br /&gt;
*&#039;&#039;&#039;You can hover over a pill bottle and see at a glance what chemicals the pill bottle contains by looking at the bottom left of your game window or by remembering the color code the pill bottle has.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Pill bottles from vendors and lifesaver bags have a fixed color for the pill bottles and pills every round. However, if a pill bottle comes from chemistry, you will need to refer to both the label name for the pill bottle and the examined contents of the pills inside.&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Other pill bottles exist but have the same dosage and OD listed in the [[#Autoinjectors | autoinjector]] section. Unless they are custom made from chemistry.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Item:&lt;br /&gt;
!What it does:&lt;br /&gt;
!Dosage:&lt;br /&gt;
!Overdose:&lt;br /&gt;
|-&lt;br /&gt;
|Tramadol&lt;br /&gt;
||Standard issue painkiller of moderate strength, used to keep marines from paincrit, pain slowdown or whining about broken bones. Overdose causes toxin damage.&lt;br /&gt;
||15 Units&lt;br /&gt;
||30 Units&lt;br /&gt;
|-&lt;br /&gt;
|Peridaxon&lt;br /&gt;
||Stops most symptoms from Organ damage but does not fix them. Available from marine medical vendors. Overdose causes brute damage.&lt;br /&gt;
||10 Units&lt;br /&gt;
||15 Units&lt;br /&gt;
|-&lt;br /&gt;
|Dexalin&lt;br /&gt;
||Removes oxygen damage at a moderate rate. Overdose causes toxin damage.&lt;br /&gt;
||15 Units&lt;br /&gt;
||30 Units&lt;br /&gt;
|-&lt;br /&gt;
|Russian Red&lt;br /&gt;
||Removes radiation and causes Brute damage every cycle. (Note: currently disabled and should not appear during normal gameplay.)&lt;br /&gt;
||10 Units&lt;br /&gt;
||10 Units&lt;br /&gt;
|}&lt;br /&gt;
&#039;&#039;&#039;Note: Dosages are for pills found in MarineMed vendors, medics&#039; Automated Equipment Racks, [[Marine Equipment#M276 Pattern Lifesaver Bag|Lifesaver Bags]], and the [[Requisitions#Medical crate|Requisitions medical crate]]&#039;&#039;&#039;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===First Aid Kits===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Item:&lt;br /&gt;
!|What it contains:&lt;br /&gt;
|-&lt;br /&gt;
|{{Anchor|Basic first aid kit}}[[File:Firstaid.png|64px]]&amp;lt;br&amp;gt;&#039;&#039;&#039;Basic first aid kit&#039;&#039;&#039;||&lt;br /&gt;
*1 [[#Health Analyzer|Health analyzer]] [[File:Healthanalyzer.png|32px]]&lt;br /&gt;
*1 [[#First-aid Autoinjector|First-aid autoinjector]] [[File:Tricord.png|32px]]&lt;br /&gt;
*1 [[#Pain-stop Autoinjector|Pain-stop Autoinjector]] [[File:Tramadol_Injector.png|32px]]&lt;br /&gt;
*1 [[#Inaprovaline Autoinjector|Inaprovaline Autoinjector]] [[File:Inaprovaline.png|32px]]&lt;br /&gt;
*1 [[#Gauze|Rolls of gauze]] [[File:Gauze.png|32px]]&lt;br /&gt;
*1 [[#Ointment|Ointments]] [[File:Ointment.png|32px]]&lt;br /&gt;
*[[#Splints|Splints]] [[File:Splint.png|32px]]&lt;br /&gt;
|-&lt;br /&gt;
|{{Anchor|Advanced first aid kit}}[[File:Advfirstaid.png|64px]]&amp;lt;br&amp;gt;&#039;&#039;&#039;Advanced first aid kit&#039;&#039;&#039;||&lt;br /&gt;
*1 [[#Tricordrazine Autoinjector|Tricordrazine autoinjector]] [[File:Tricord.png|32px]]&lt;br /&gt;
*3 [[#Advanced Trauma Kit|Advanced trauma kits]] [[File:Advtraumakit.png|32px]]&lt;br /&gt;
*2 [[#Advanced Burn Kit|Advanced burn kits]] [[File:Advburnkit.png|32px]]&lt;br /&gt;
*[[#Splints|Splints]] [[File:Splint.png|32px]]&lt;br /&gt;
|-&lt;br /&gt;
|{{Anchor|Fire first aid kit}}[[File:Firefirstaid.png|64px]]&amp;lt;br&amp;gt;&#039;&#039;&#039;Fire first aid kit&#039;&#039;&#039;||&lt;br /&gt;
*1 [[#Health Analzyer|Health analyzer]] [[File:Healthanalyzer.png|32px]]&lt;br /&gt;
*2 [[#Ointment|Ointments]] [[File:Ointment.png|32px]]&lt;br /&gt;
*3 [[#Kelotane Autoinjector|Kelotane Autoinjector]] [[File:Kelotane.png|32px]]&lt;br /&gt;
*1 [[#Pain-stop Autoinjector|Pain-stop Autoinjector]] [[File:Tramadol_Injector.png|32px]]&lt;br /&gt;
|-&lt;br /&gt;
|{{Anchor|Oxygen deprivation first aid kit}}[[File:Oxyfirstaid.png|64px]]&amp;lt;br&amp;gt;&#039;&#039;&#039;Oxygen deprivation first aid kit&#039;&#039;&#039;||&lt;br /&gt;
*1 [[#Health Analzyer|Health analyzer]] [[File:Healthanalyzer.png|32px]]&lt;br /&gt;
*2 [[Chemistry#Dexalin|Dexalin]] pills (15 units)&lt;br /&gt;
*3 [[#Dexalin+ Autoinjector|Dexalin+ autoinjector]] [[File:Dexalin.png|32px]]&lt;br /&gt;
*1 [[#Inaprovaline Autoinjector|Inaprovaline Autoinjector]] [[File:Inaprovaline.png|32px]]&lt;br /&gt;
|-&lt;br /&gt;
|{{Anchor|Toxin first aid kit}}[[File:Toxinfirstaid.png|64px]]&amp;lt;br&amp;gt;&#039;&#039;&#039;Toxin first aid kit&#039;&#039;&#039;||&lt;br /&gt;
*1 [[#Health Analzyer|Health analyzer]] [[File:Healthanalyzer.png|32px]]&lt;br /&gt;
*3 [[#Dylovene Autoinjector|Dylovene Autoinjector]] [[File:Dylovene.png|32px]]&lt;br /&gt;
*3 [[Chemistry#Dylovene|Dylovene]] pills (15 units)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|{{Anchor|Radiation first aid kit}}[[File:radiation first-aid kit.png|64px]]&amp;lt;br&amp;gt;&#039;&#039;&#039;Radiation first aid kit&#039;&#039;&#039;||&lt;br /&gt;
*4 Russian Red pills&lt;br /&gt;
*2 [[#Bicaridine Autoinjector|Bicaridine autoinjectors]] [[File:Bicaridine.png|32px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Equipment===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Item:&lt;br /&gt;
!What it does:&lt;br /&gt;
|-&lt;br /&gt;
||{{Anchor|Health Analyzer}}[[File:Healthanalyzer.png|64px]]&amp;lt;br&amp;gt;&#039;&#039;&#039;Health Analyzer&#039;&#039;&#039;&lt;br /&gt;
||Basic tool of every single medic - this miraculous item allows you to see the patient&#039;s status, showing the damage, bleeding, internal bleeding and broken bones. Keep in mind that this toy won&#039;t show you which bones are broken unless it&#039;s a limb. Don&#039;t leave your home without it.  You can also scan a patient&#039;s vitals through a stasis bag by just clicking on the stasis bag with the analyzer in hand.&lt;br /&gt;
*You can swap between two hud modes by right clicking the health analyzer and selecting &#039;&#039;&#039;&amp;quot;Switch Hud&amp;quot;&#039;&#039;&#039;. The default mode displays the analyzers results in a pop up window, the second hud mode displays the results in the chat.&lt;br /&gt;
*Restockable to NanoMed[[File:NanoMed.png]] (drag it to the NanoMed)&lt;br /&gt;
|-&lt;br /&gt;
||{{Anchor|HealthMate HUD}}[[File:MedicHud.png|64px]]&amp;lt;br&amp;gt;&#039;&#039;&#039;HealthMate HUD&#039;&#039;&#039;&lt;br /&gt;
|| {{Sensormate_Description}} If there is no health bar it means that the patient is at 100% health. The Healthmate Hud also allows you to add holographic cards onto marines you examine for triage purposes (same way that you mark criminals as &#039;wanted&#039; with security HUD glasses). &#039;&#039;&#039;Scan reports are stored in the patient&#039;s medical records once viewed in the scanner console, when you wear a HealthMate HUD you can view their latest scan report by examining them.&#039;&#039;&#039; &lt;br /&gt;
|-&lt;br /&gt;
||{{Anchor|Gauze}}[[File:Gauze.png|64px]]&amp;lt;br&amp;gt;&#039;&#039;&#039;Gauze&#039;&#039;&#039;&lt;br /&gt;
||Basic gauze used to stop the bleeding and fix brute trauma over time.&lt;br /&gt;
&lt;br /&gt;
*Restockable to NanoMed[[File:NanoMed.png]] (drag it to the NanoMed)&lt;br /&gt;
|-&lt;br /&gt;
||{{Anchor|Ointment}}[[File:Ointment.png|64px]]&amp;lt;br&amp;gt;&#039;&#039;&#039;Ointment&#039;&#039;&#039;&lt;br /&gt;
||Basic burn treatment item that heals 5 burn damage once applied and fixes it over time.&lt;br /&gt;
&lt;br /&gt;
*Restockable to NanoMed[[File:NanoMed.png]] (drag it to the NanoMed)&lt;br /&gt;
|-&lt;br /&gt;
||{{Anchor|Advanced Trauma Kit}}[[File:Advtraumakit.png|64px]]&amp;lt;br&amp;gt;&#039;&#039;&#039;Advanced Trauma Kit&#039;&#039;&#039;&lt;br /&gt;
||Used to treat moderate to high brute damage. Heals 12 brute damage once applied and fixes it over time. The time spent of using the trauma kit and efficiency depends of one&#039;s medical skill.&lt;br /&gt;
|-&lt;br /&gt;
||{{Anchor|Advanced Burn Kit}}[[File:Advburnkit.png|64px]]&amp;lt;br&amp;gt;&#039;&#039;&#039;Advanced Burn Kit&#039;&#039;&#039;&lt;br /&gt;
|| Used to treat moderate to high burn damage. Heals 12 burn damage once applied and fixes it over time. The time spent of using the burn kit depends of one&#039;s medical skill.&lt;br /&gt;
|-&lt;br /&gt;
||{{Anchor|Splints}}[[File:Splint.png|64px]]&amp;lt;br&amp;gt;&#039;&#039;&#039;Splints&#039;&#039;&#039;&lt;br /&gt;
||Used to hold that broken/fractured bone of yours in place so you don&#039;t die. The time spent of using the splints depends of one&#039;s medical skill.&lt;br /&gt;
*Restockable to NanoMed[[File:NanoMed.png]] (drag it to the NanoMed)&lt;br /&gt;
|-&lt;br /&gt;
||{{Anchor|Hypospray}}[[File:Hypospray.png|64px]]&amp;lt;br&amp;gt;&#039;&#039;&#039;Hypospray&#039;&#039;&#039;&lt;br /&gt;
|| An experimental high-end chemical injector, used for instant injections. Holds 30 units. Injects 5 units per use. Can be empty or preloaded with Tricordrazine. Can dissolve pills into. Can be unlocked using a screwdriver or the &#039;Unlock Hypospray&#039; verb, to allow the vial capsule to be ejected like a magazine.&lt;br /&gt;
|-&lt;br /&gt;
||{{Anchor|Emergency Defibrillator}}[[File:Defibrillator.png|64px]]&amp;lt;br&amp;gt;&#039;&#039;&#039;Emergency Defibrillator&#039;&#039;&#039;&lt;br /&gt;
|| Used to bring recently dead marines and other personnel back to life. Can be recharged in a special recharger (usually located in the medbay)&lt;br /&gt;
*Starts with 15 charges and goes yellow when 5 charges are left. The availability of the defibrillator&#039;s usage depends of one&#039;s medical skill.&lt;br /&gt;
|-&lt;br /&gt;
||{{Anchor|Stasis Bag}}[[File:StasisBag.png|64px]]&amp;lt;br&amp;gt;&#039;&#039;&#039;Stasis Bag&#039;&#039;&#039;&lt;br /&gt;
||Used to store critically injured patients. &lt;br /&gt;
*Slows larva growth. &lt;br /&gt;
*Patients can be scanned without opening the bag and be put into advanced scanners and onto operating tables without opening the bag.To do this, grab the stasis bag then click on the advanced scanner/operating table to deploy the patient.&lt;br /&gt;
*Prevents blood loss while the patients are inside&lt;br /&gt;
*Prevents internal bleeding from progressing as long as they are left inside.&lt;br /&gt;
*Halts metabolisation of chemicals.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Can be buckled to a roller bed for faster transportation.&#039;&#039;&#039;&lt;br /&gt;
*To fold it, drag it to yourself when it&#039;s closed and not occupied &lt;br /&gt;
|-&lt;br /&gt;
||{{Anchor|Body Bag}}[[File:BodyBag.png|64px]]&amp;lt;br&amp;gt;&#039;&#039;&#039;Body Bag&#039;&#039;&#039;&lt;br /&gt;
|| Used to store your recently dead comrades.&lt;br /&gt;
*If you use a pen on a body bag you can name the body bag and on the body bag sprite a dogtag will appear. (Useful for naming the body bag so players know who&#039;s inside it.)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Can be buckled to a roller bed for faster transportation.&#039;&#039;&#039;&lt;br /&gt;
*To fold it, drag it to yourself when it&#039;s closed and not occupied&lt;br /&gt;
|-&lt;br /&gt;
||{{Anchor|Syringe}}[[File:Syringe.png|64px]]&amp;lt;br&amp;gt;&#039;&#039;&#039;Syringe&#039;&#039;&#039;&lt;br /&gt;
|| Used to inject marines and other personnel with ungodly chemicals, or as a ghetto IV drip. Can instantly inject (At the cost of some brute damage, and a broken syringe.) if used on harm intent.&lt;br /&gt;
|-&lt;br /&gt;
||{{Anchor|Syringe Case}}[[File:SyringeCase.png|64px]]&amp;lt;br&amp;gt;&#039;&#039;&#039;Syringe Case&#039;&#039;&#039;&lt;br /&gt;
|| Used to store syringes and syringe bottles. Contains 3 slots.&lt;br /&gt;
|-&lt;br /&gt;
||{{Anchor|Roller Bed}}[[File:RollerBed.png|64px]]&amp;lt;br&amp;gt;&#039;&#039;&#039;Roller Bed&#039;&#039;&#039;&lt;br /&gt;
|| Allows you to quickly transport injured marines and other personnel across the battlefield. Can be folded up when not in use. &lt;br /&gt;
*Bad for performing surgery, but better than nothing&lt;br /&gt;
*You can attach a body bag or a stasis bag onto a roller bed for faster transportation&lt;br /&gt;
*To fold it, drag it to yourself when not occupied &lt;br /&gt;
|-&lt;br /&gt;
||{{Anchor|Med Evac Stretcher}}[[File:Med_Evac_Stretcher.png|64px]]&amp;lt;br&amp;gt;&#039;&#039;&#039;Med Evac Stretcher&#039;&#039;&#039;&lt;br /&gt;
|| Used to airlift patients to a supporting dropship. Functions in the same way as a roller bed but cannot be moved when deployed. To activate the med evac beacon on the stretcher (Right click the stretcher then click &amp;quot;Activate Medevac&amp;quot;. &#039;&#039;&#039;Only medics (or marine personnel with equal or higher medical skill) can activate the beacon and it can only be used outdoors or if the ceiling is glass (examine the tile to check.).&#039;&#039;&#039;).&lt;br /&gt;
*Utterly useless for performing surgery&lt;br /&gt;
*You can attach a body bag or a stasis bag onto the stretcher&lt;br /&gt;
*To fold it, drag it to yourself when it&#039;s not occupied &lt;br /&gt;
|-&lt;br /&gt;
||{{Anchor|Portable Surgical Bed}}[[File:FieldSurgicalBed.png|64px]]&amp;lt;br&amp;gt;&#039;&#039;&#039;Portable Surgical Bed&#039;&#039;&#039;&lt;br /&gt;
|| A collapsible bed used for field surgery. Functions in the same way as a roller bed but cannot be moved when deployed.&lt;br /&gt;
*Excellent for performing surgery, second only to a proper operating table&lt;br /&gt;
*To fold it, drag it to yourself when it&#039;s not occupied &lt;br /&gt;
|-&lt;br /&gt;
||{{Anchor|IV Drip}}[[File:IVdrip.png|64px]]&amp;lt;br&amp;gt;&#039;&#039;&#039;IV Drip&#039;&#039;&#039;&lt;br /&gt;
|| Allows you to inject blood into a patient or extract blood from them to do a blood transfusion.&lt;br /&gt;
*Can be fitted with a beaker to inject chemical solutions automatically.&lt;br /&gt;
|-&lt;br /&gt;
||{{Anchor|Blood Bag}}[[File:BloodPack.png|64px]]&amp;lt;br&amp;gt;&#039;&#039;&#039;Blood Bag&#039;&#039;&#039;&lt;br /&gt;
|| Holds blood inside of it. Make sure [[#Blood Compatibility|the blood type&#039;s compatible]] with the recipient.&lt;br /&gt;
|-&lt;br /&gt;
||{{Anchor|Surgical Line}}[[File:Surgical Line.png|64px]]&amp;lt;br&amp;gt;&#039;&#039;&#039;Surgical Line&#039;&#039;&#039;&lt;br /&gt;
|| A roll of military-grade surgical line, able to seamlessly seal and tend any wound. Also works as a robust fishing line for maritime deployments.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Medical Contraptions=&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Cryo.gif]] Cryogenic Chambers{{Anchor|Cryogenic Chambers}}||&lt;br /&gt;
*Used for putting critical patients into stasis and treating patients with genetic damage. Be sure to check periodically to see if the chambers need to be restocked with chemicals and if your patient is sufficiently healed. The tubes can auto-eject patients once they&#039;re completely healed.&lt;br /&gt;
&lt;br /&gt;
*The extreme cold of the cryotube will give patients a slight (single-digit) amount of burn damage.&lt;br /&gt;
&lt;br /&gt;
* Cryogenic chambers will slow the development of alien larva/embryos. You can use one of these just like you could use a stasis bag if you cannot immediately tend to a patient with a larva.&lt;br /&gt;
&lt;br /&gt;
*Additionally when [[Chemistry#cryoxadone|Cryoxadone]] or [[Chemistry#clonexadone|Clonexadone]] are used, internal bleeding will be cured and chemicals are allowed to process in the dead.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed wikitable&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | Setting up Cryo &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
#Take a nearby [[File:Beaker.png]] beaker filled with appropriate medicine, for example the two [[Chemistry#cryoxadone|Cryoxadone]] small beakers in the Chemistry Station, then click on the cryo cell to load the beaker in.&lt;br /&gt;
#Set the cryotube to On.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
While [[Chemistry#clonexadone|Clonexadone]] is a fairly efficient medical chem (and [[Chemistry#cryoxadone|Cryoxadone]] to a much lesser extent), consider using a larger, 120u beaker, and adding additional useful chems, like [[Chemistry#nutriment|Nutriment]], [[Chemistry#alkysine|Alkysine]], [[Chemistry#imidazoline|Imidazoline]], [[Chemistry#dermaline|Dermaline]] etc. to heal even more types of damage (or to simply stack healing effects with Cryoxadone/Clonexadone) at once, beyond what the standard cryotube chemicals can do.&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Sleeper.gif]][[File:Console.gif]] Sleepers{{Anchor|Sleepers}}|| To put a patient inside the sleeper use grab intent and click on the patient then the sleeper. To take out the patient right click the sleeper then click Eject Occupant.&lt;br /&gt;
*Sleepers are used to administer medication and perform dialysis.&lt;br /&gt;
&lt;br /&gt;
*The sleepers will not stabilize critical patients, though they can be used to administer inaprovaline.&lt;br /&gt;
&lt;br /&gt;
*Dialysis: Once the patient is inside, click &#039;Start Dialysis&#039;. Dialysis filters out blood, having the bonus of pulling out chemicals. This treatment should be used when you believe someone to be overdosing or to be poisoned. The beaker inside the sleeper will fill with the blood and eventually you will need to empty it. To retrieve the beaker, right-click on the sleeper and click &#039;eject beaker&#039;. Dialysis can cause a patient to suffer from severe blood loss if the patient is left in too long.&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Advbodyscanner.gif]][[File:Advbodyscanner_console.gif]] Advanced Body Scanner{{Anchor|Advanced Body Scanner}}|| To put a patient inside the body scanner use grab intent and click on the patient then the body scanner. To take out the patient right click the body scanner then click Eject Occupant. &lt;br /&gt;
*The Body scanner is mainly used to locate broken bones, organ damage, shrapnel, and any unwanted guests in your stomach.&lt;br /&gt;
&lt;br /&gt;
*Use the console to interact with the body scanner, this allows you to print out a report to send along with the patient to surgery which will help the surgeon. Additionally, there will be a scan report that is attached to the person you&#039;ve scanned when you examine them.&lt;br /&gt;
|-&lt;br /&gt;
| [[File:AutoDoc.png|32px]] AutoDoc{{Anchor|AutoDoc}}|| The AutoDoc is an extremely useful machine in medical that can automatically fix a marine with any number of injuries, just be aware that it cannot perform larva removal. To learn more about the AutoDoc and it&#039;s features head [[Surgery#The_Autodoc_System|&#039;&#039;&#039;here&#039;&#039;&#039;]].&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Medical Procedures=&lt;br /&gt;
==CPR==&lt;br /&gt;
CPR will keep someone in hard crit (&amp;gt;150 damage) alive by reducing their oxy damage. If you notice a marine or other personnel gasping and on the floor, they may require CPR, otherwise, they will reach 200 damage in total and suffocate.&lt;br /&gt;
#First you&#039;ll want to set your intent to help.&lt;br /&gt;
#Make sure you aren&#039;t wearing a mask.&lt;br /&gt;
#Have an empty hand.&lt;br /&gt;
#Click on the gasping injured player.&lt;br /&gt;
#If you start shaking them, they don&#039;t have enough oxygen damage to permit the use of CPR.&lt;br /&gt;
#Once you start doing CPR keep doing it until you can get them to a safe location or to a medic.&lt;br /&gt;
#CPR can also extend the timer of dead marines that are still revivable. The default time a marine has after death is 5 minutes before becoming clinically declared dead. (Permanent death)&lt;br /&gt;
#If the person you are CPRing is deceased, doing CPR requires 4 seconds and adds 7 seconds to the dead marine&#039;s defibbable status timer. You have to wait between CPR pumps at least 3 seconds or else the CPR fails. If you fail a CPR pump due to pumping too quickly, you must still wait at least the full 3 seconds before you can attempt another successful CPR pump. Failing CPR does not increase the time the person has before they become permanently dead.&lt;br /&gt;
&lt;br /&gt;
Pro tip you can grab them in one hand and do CPR with the other.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
*Shipside roles such as nurse, doctor, researcher, and CMO, have high medical skill and require only three seconds to CPR. Count to four seconds if you are performing CPR on a deceased marine as one of these roles.&lt;br /&gt;
*Moving will interrupt CPR. Switching hands while the CPR is winding up will *not* interrupt CPR. You can administer medication while performing CPR.&lt;br /&gt;
&lt;br /&gt;
==Procedure for Reviving Non-Breathing Patients[[File:Defibrillator.png]]==&lt;br /&gt;
#Locate non-breathing patient with a green/orange heart rate icon next to their health bar (Only visible if wearing the healthmate HUD). [[File:Resuscitation_LightningBolt_Icon.png|64px]] &lt;br /&gt;
#Scan the patient with a health analyzer.&lt;br /&gt;
#If the sum of the patient&#039;s brute, burn, oxygen, and toxins damage is less than 200, proceed to strip armor and defibrillate. Recognize that oxygen damage can be ignored if you plan on using epinephrine. Otherwise, apply trauma and burn kits to all untreated parts of the patient&#039;s body. Pro tip: Using your numpad keys allows you to quickly cycle through limbs to decrease the total time required to kit them.&lt;br /&gt;
#Scan the patient again. If the sum of the patient&#039;s summed damage is less than 200, proceed to strip armor and defibrillate. Otherwise, consider performing tend wounds surgery. Remember that tend wounds with surgical line repairs 10 damage every 2 seconds, or 300 damage per minute if uninterrupted. If you can bring their damage under 200 damage with tend wounds before the patient&#039;s revival timer expires, proceed to tend wounds. Otherwise, apply CPR while asking nearby medics and marines to perform CPR on the patient while you perform tend wounds surgery. One marine is enough for CPR. If there are extra medics available ask them to tend wounds along with you. If there are no marines nearby, consider pulling the patient to marines that can perform CPR. Once someone is performing CPR, continue on to tend wounds.&lt;br /&gt;
#Tend wounds (Target an area of the body of the patient that has the highest amount of brute and burn damage. Use surgical line for brute and synthgraft for burns. Hold the surgical line in your hand and click the patient with the help intent and surgery intent enabled). The surgery will repeat until no more burn or brute damage can be resolved upon that limb, upon which you may target another area of the body and repeat. Scan periodically with a health analyzer to keep an eye on the patient&#039;s summed damage. Repeat until you run out of limbs to treat or summed brute and burn damage drop below 200.&lt;br /&gt;
#Strip armor of the patient. (Click-drag the patient to your character and select the armor in their armor slot. Do not move or switch hands until the wind-up has elapsed or stripping will cancel)&lt;br /&gt;
#Apply the defibrillator. Take the defibrillator out of your bag, press Z while the defibrillator is in your active hand to pop the handles out of their housing, and click the patient. If you are successful, after seven seconds of windup chimes the defibrillator will shock your patient and revive them. Do not move while the windup is occurring, or the defibrillation will cancel. While the defibrillator is winding up, you may swap to your other hand and begin feeding the patient pills or applying auto injectors. Repeat defibrillation until the patient has been revived. (Toggling belt mode on your medical belt to remove pills directly from bottles on click or middle clicking to open pill bottles without having them in your hand may help with this).&lt;br /&gt;
#Continue to treat the patient until they are stable.&lt;br /&gt;
#You can also apply necessary medicine BEFORE resuscitation but it will not be metabolized until the patient is living again. (You can give inaprovaline before reviving to stabilize them after they are resuscitated.)&lt;br /&gt;
#&#039;&#039;&#039;RECOMMENDED:&#039;&#039;&#039; If available, inject epinephrine (use Hypospray/Syringe) into the patient before defibrillating. This will greatly enhance the amount you heal per each attempt, in addition to clearing all oxygen damage on revival. ([12 + 16 brute and 16 burns] healed damage instead of [12 + 4 brute and 4 burns]). Note that epinephrine and inaprovaline are present in revival mixture available in squad medic preparation vendors.&lt;br /&gt;
#If you see a marine with an orange line on your HUD that has a lot of damage when scanned, ask a nearby marine to &amp;quot;CPR!&amp;quot; if any are in the vicinity.&lt;br /&gt;
#And please, don&#039;t ever give up if you see someone with over 200 damage. You can use advanced trauma and burn kits while defibbing with your other hand. You can also inject epinephrine while defibbing. Don&#039;t give up. Keep going. Save that marine!&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Revival icons ===&lt;br /&gt;
If the icon has a red square around it when it is still green/yellow/orange, that means the client of the dead player has disconnected. It is still possible for them to come back.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Icon !! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[File:DNR_LightningBolt_Icon.png|128px]]  || The red flatline icon states they have voluntarily opted out of being revived, and or their client has been disconnected. This can also be because the player was banned while they were dead. This is commonly referred to as &amp;quot;DNR, or Do Not Resuscitate, or dead dead&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Resuscitation_LightningBolt_Icon.png|128px]]  || The green heart rate icon states they are revivable and have 5 minutes to be resuscitated (assuming no CPR is applied). &lt;br /&gt;
|-&lt;br /&gt;
| [[File:huddeadclose.png|128px]] || The solid yellow heart rate indicates some time has passed since they were last breathing and they are coming closer to becoming unrevivable. &lt;br /&gt;
|-&lt;br /&gt;
| [[File:Almostdeadframe1.png|128px]] [[File:Almostdeadframe2.png]] || The flashing orange and red heart rate indicates their defib timer has almost expired. If you see it going from solid yellow to flashing orange and red, it means the marine has exactly 1 minute left unless being CPR&#039;d to increase their defib timer. &lt;br /&gt;
|-&lt;br /&gt;
| [[File:Broken_Heart_defib_icon.gif|128px]] || The broken heart indicates that the patient&#039;s heart has suffered too much trauma for revival attempts. This is known as heartbreak. The message will say: &amp;quot;Patient&#039;s general condition does not allow reviving.&amp;quot; To fix this, a doctor must repair their heart in time before any further revival attempts are under taken. If a doctor is not immediately available, peform CPR on the corpse to extend their defib timer until a doctor can peform surgery to repair the heart. &lt;br /&gt;
|-&lt;br /&gt;
| [[File:skull_Icon.png|128px]] || The skull icon indicates they are not able to be revived. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Lost Causes===&lt;br /&gt;
&#039;&#039;&#039;Don&#039;t try to defib any of the following corpses:&#039;&#039;&#039;&lt;br /&gt;
*Chestbursted personnel [[File:Bursted_marine.png]]&lt;br /&gt;
*Decapitated personnel [[File:Decapped_marine.png]]&lt;br /&gt;
*If you receive the message &amp;quot;Patient is braindead&amp;quot; or &amp;quot;Patient is DNR&amp;quot; from the [[#Emergency Defibrillator|defibrillator]] when you try to defib them.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*If you receive the message &amp;quot;Their eyes are blank and there are no signs of life&amp;quot; when you check their status (stand adjacent to the subject, right click their sprite, and select Check-status).&lt;br /&gt;
&lt;br /&gt;
===Defibrillator Tips===&lt;br /&gt;
*&#039;&#039;&#039;If someone is brought back to life with a defib then die immediately afterwards, their death timer is reset.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Defibrillators have a 25% chance of dealing 5 heart damage each time a shock is successfully applied. This is significant, as heart damage between 1 and 10 reduces effective blood volume by 80%, which, in turn, assuming the marine has full blood, will cause 20 oxygen damage on its own. Try to keep the patient alive after first defibrillation to minimize heart damage dealt. If at all possible when reducing damage in preparation for revival, prefer to apply brute and burn kits and suture over repeated defibrillations, as both methods reduce damage at a higher rate than defibrillating and do not incur heart damage.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Your patients won&#039;t get their items back on by themselves the majority of the time. If you can, redress them.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Switching hands while using a defibrillator will &#039;&#039;NOT CANCEL&#039;&#039; its use. You&#039;re able to operate the defibrillator while using another item in your off hand.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Performing CPR on a patient will extend the defib time if done no often than once every 10 seconds.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*The only time a defibrillator loses charge is when its windup is completed and the shock is applied. There is also a brief delay after activating one before you can use it.&lt;br /&gt;
&lt;br /&gt;
*If &amp;quot;Vitals signs are weak&amp;quot; is displayed it means that their combined brute/burn damage is over 200, keep using the defibrillator to lower that damage if you&#039;ve already applied trauma and burn kits.&lt;br /&gt;
&lt;br /&gt;
*Alternatively, it means that they&#039;ve left their body and won&#039;t return if the combined damage is now below 200. Examine the corpse and if it says &amp;quot;Soul is departed&amp;quot; then give them ten to twenty seconds before defibbing again. If you get it again, then the player doesn&#039;t want to be revived.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Synthetic Maintenance== &lt;br /&gt;
*To revive a dead synthetic use a defib on them. Synthetics need to have their head attached to their torso and have combined total damage below 200 points. Defibs do not repair damage on dead synthetics like they do on humans, you must repair the excess damage first.&lt;br /&gt;
*To fix brute damage on a synths body use a blowtorch on help intent.&lt;br /&gt;
*To fix burn damage on a synths body use cable coil.&lt;br /&gt;
*To fix heart/brain damage, apply nanopaste to that bodypart (head/chest)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Overdose Treatment==&lt;br /&gt;
===Dialysis===&lt;br /&gt;
&lt;br /&gt;
#Put your patient into a sleeper. [[File:Sleeper.gif]][[File:Console.gif]]&lt;br /&gt;
#Make sure it has a non-full, preferably empty beaker inside of it.&lt;br /&gt;
#Select &amp;quot;Start dialysis&amp;quot; option below the injections and wait few moments.&lt;br /&gt;
#Eject the patient and scan him just to notice his blood&#039;s clean.&lt;br /&gt;
Keep in mind that dialysis is a process that takes time, the chems won&#039;t flush out immediately.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;big&amp;gt;CPR&amp;lt;/big&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Only applicable in most cases if the patient was OD&#039;d after death, during treatment&lt;br /&gt;
# CPR the dead patient to metabolize chems in the body&lt;br /&gt;
# Scan to make sure chems are below OD&lt;br /&gt;
# Revive&lt;br /&gt;
&lt;br /&gt;
This is only applicable if the patient was not alive during their overdose, and was OD&#039;d when death during treatment pre-revival. Major overdoses should still be used with Dialysis as perma timer will be accelerated with excessive CPR.&lt;br /&gt;
&lt;br /&gt;
==Blood Transfusions==&lt;br /&gt;
By Blood Bag&lt;br /&gt;
*Select a blood bag (standard issue for Corpsmen)&lt;br /&gt;
*Ensure it is of a compatible blood type to the patient, Corpsmen issued Blood Bags are universal blood types. &lt;br /&gt;
*While standing next to the patient, click them with the bag&lt;br /&gt;
*The bag will now begin transfusing into the patient.&lt;br /&gt;
*When you are finished, click the patient with the bag to disconnect them. &lt;br /&gt;
&lt;br /&gt;
By IV Stand&lt;br /&gt;
*Ensure a blood bag of compatible blood type is loaded into the IV stand. (You can unload a blood bag from an IV stand by clicking on the stand with an empty hand to check its blood bag if it is already loaded. Otherwise, you can load a bag into an IV stand by clicking it while the bag is in your active hand).&lt;br /&gt;
*Move the IV so that it is adjacent to your patient. (control click the IV stand to grab it. Then to move the stand, either move your character to pull the stand behind you or twice-click a tile adjacent to the stand to move the stand to that tile while the hand with the &amp;quot;UP-GRADE&amp;quot; sprite representing your grasp on the IV is active)&lt;br /&gt;
*Insert the IV into your patient&#039;s arm (click-drag the IV stand to your patient. No need to target the arm.)&lt;br /&gt;
*Your patient can move freely in a 7-tile wide square centered on the IV stand with the IV remaining in their arm.&lt;br /&gt;
*When you are satisfied with the amount of blood that has been transferred, remove the IV from the patient&#039;s arm (click-drag the IV stand to your patient again).&lt;br /&gt;
By Syringe&lt;br /&gt;
*Ensure you have a blood bag with blood compatible with the human you are transferring blood to. If it is O- blood, it is safely transfusable to humans with any blood type.&lt;br /&gt;
*Ensure the syringe is empty by verifying the interior of the syringe is colored black and there is green text underneath that says &amp;quot;DRAW&amp;quot;.&lt;br /&gt;
*With the syringe in your active hand, click the blood bag three times to draw 15u of blood. The interior of the syringe will be colored red and there should be orange text underneath that says &amp;quot;INJECT&amp;quot;.&lt;br /&gt;
*With the syringe in your hand click the human you wish to transfer blood to three times to transfer 15u of blood. &#039;&#039;&#039;Ensure harm intent is not enabled. If harm intent is enabled the syringe will break.&#039;&#039;&#039; If the target human is yourself, the blood will be transferred instantly. If the target human is not you, there will be a short windup before the blood will be transferred. You do not need to wait for the windup for the transfer of the first 5u of blood to complete before clicking again to initiate the windup for the transfer of the second and third 5u of blood.&lt;br /&gt;
*Repeat this process until you are satisfied with the amount of blood transferred&lt;br /&gt;
Additional information&lt;br /&gt;
*Alternately you can extract blood from a human if they have the right blood type by hooking them up to an IV with an empty blood pack or by using an empty syringe on them.&lt;br /&gt;
*Even after you&#039;ve transfused blood into your patient, if they have been lacking blood for a while they are likely hungry. Ask them to eat!&lt;br /&gt;
*Not being too hungry enables you to regenerate blood. If you do not have access to blood transfusion or hemogenic iron generating drugs, advise your patient to eat food.&lt;br /&gt;
*Iron has the hemogenic trait, meaning when this reagent is in your system it regenerates blood volume.&lt;br /&gt;
*Sugar reduces a patient&#039;s hunger, enabling them to naturally regenerate blood slowly over time.&lt;br /&gt;
*Iron pills or combination iron-sugar pills are available aboard the Almayer from the pharmacy in medbay lower decks or from the Research pharmacy in medbay upper decks. Take advantage!&lt;br /&gt;
*Remember that in a pinch, hot cocoa also provides nutriments similar to food, and that flasks filled with hot cocoa, MRE&#039;s, protein bars, and vendor meals can all fit compactly into a med kit and are generally available to all roles!&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===Blood Compatibility===&lt;br /&gt;
[[File:Bloodtypes_table.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=General Tips=&lt;br /&gt;
&amp;lt;!--*You can heal internal bleeding with bicaridine overdose if the patient does not have any brute damage. This will not work if the patient has brute damage, the bicardine OD will first heal all of patient&#039;s brute damage before beginning to heal internal bleeding. If used, administer kelotane to the patient to counter the burn damage done by the overdose, and kit any damaged body parts to ensure brute damage is at 0. Inform the patient they have IB, and that you are overdosing them on bicaridine. The patient will take toxin damage and will require dylovene if the overdose is over 45 units, so be careful. If the patient has an exceedingly high amount of brute damage, administer quick clot and evacuate them for surgery. --&amp;gt;&lt;br /&gt;
*The cryo cells loaded with cyroxadone can slowly heal internal bleeding, depending on the severity of it. Clonexadone heals internal bleeding as well, but faster.&lt;br /&gt;
&lt;br /&gt;
= Community guides and tutorials =&lt;br /&gt;
[https://www.youtube.com/watch?v=py5JJjGlhO0 Medical Tutorial] - By C4xmaniac, George Franks/Virgil&lt;/div&gt;</summary>
		<author><name>Drulikar</name></author>
	</entry>
	<entry>
		<id>https://cm-ss13.com/w/index.php?title=Chemistry&amp;diff=30660</id>
		<title>Chemistry</title>
		<link rel="alternate" type="text/html" href="https://cm-ss13.com/w/index.php?title=Chemistry&amp;diff=30660"/>
		<updated>2024-04-21T01:07:06Z</updated>

		<summary type="html">&lt;p&gt;Drulikar: fix nutriment anchor&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
{{Header&lt;br /&gt;
 |PrimaryColor = #C90000&lt;br /&gt;
 |HeaderContent = OOC Note&lt;br /&gt;
 |SubContent = Only [[Doctor|Doctors]], [[Researcher|Researchers]], [[Nurse|Nurses]] and the [[Chief Medical Officer|CMO]] should be messing with chemical substances. [[Hospital Corpsman|Hospital Corpsmen]] should be aware of overdose thresholds and medications that cause harm when mixed in a patient.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Tools of the Trade=&lt;br /&gt;
# &#039;&#039;&#039;Chem&#039;&#039;&#039; &#039;&#039;&#039;Dispenser&#039;&#039;&#039;: If you were a marine, this would be your rifle. It dispenses the basic chemicals if a beaker is placed inside. Runs off battery charge which replenishes over time. Has several settings for dispensing chems (5 to 40 units). [[File:ChemLab.png|thumbnail|border|right|Chemistry Lab]]&lt;br /&gt;
# &#039;&#039;&#039;ChemMaster&#039;&#039;&#039;: This machine is used to precisely control the amount of chemicals in a beaker, creating bottles and pills. Once a beaker is placed in, you can move desired amounts of it&#039;s contents to &amp;quot;buffer&amp;quot; by clicking on buttons present next to the name of the chemical. Clicking again while they&#039;re in &amp;quot;buffer&amp;quot; will flush them down disposals, aka they&#039;re lost forever. This setting can be changed by the button located between the beaker and buffer contents, just click it once to change to &amp;quot;transfer to beaker.&amp;quot; A pill bottle can be inserted into the machine to automatically hold created pills. You can insert and empty beaker into the chem master and click &amp;quot;create bottle&amp;quot; several times to get a bunch of 60u containers for free. You can make Phoron pills and dissolve them in your Phoron beaker as the quickest way of removing it from advanced chems.&lt;br /&gt;
# &#039;&#039;&#039;Chemical Storage&#039;&#039;&#039;: Chemical storage. It can hold beakers, bottles, pill bottles, pills, etc etc. Useful for not having your chems all over the floor, but people usually forget to check it when in need of something.&lt;br /&gt;
# &#039;&#039;&#039;Vendor&#039;&#039;&#039;: Holds restockable vials of key reagents, and syringes for faster chemical synthesizing.&lt;br /&gt;
# &#039;&#039;&#039;Beakers&#039;&#039;&#039;: Several empty beakers that can be used for various purposes, such as storing mixes for the cryo-cells.&lt;br /&gt;
# &#039;&#039;&#039;Grinder&#039;&#039;&#039;/&#039;&#039;&#039;Juicer&#039;&#039;&#039;: This is used to extract chemicals out of many things. For your uses, it&#039;ll be mostly pills and food. Most commonly used for grinding solid Phoron for your Clonexadone and Peridaxon needs.&lt;br /&gt;
# &#039;&#039;&#039;Boxes of pill bottles&#039;&#039;&#039;: Empty pill bottles to hold up to 16 pills per bottle.&lt;br /&gt;
# &#039;&#039;&#039;Dropper and 2 beakers of Cryoxadone&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Equipment==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Equipment !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Beakers and Bottles&#039;&#039;&#039; || &lt;br /&gt;
* Most basic tool of your trade. Right-clicking one can change it&#039;s transfer amount per click. Pills can be dissolved in beakers that already contain something. If you &amp;quot;use&amp;quot; one while holding it in hand, you will put a lid on it, preventing you from splashing it&#039;s contents by clicking on the floor by mistake. &lt;br /&gt;
* They come in bottle/small beaker - 60u, large beaker - 120u, and bluespace beaker - 300u.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Dropper&#039;&#039;&#039; || &lt;br /&gt;
* Like beakers, can be right-clicked for transfer amount. Used for moving small amounts of chemicals between other containers.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Syringe&#039;&#039;&#039; || &lt;br /&gt;
* Has two modes switched by &amp;quot;using&amp;quot; it - draw and inject. Hold 15u max, draw 5u per click. Can be used to take blood samples and inject them into mass spectometers for analysis. Using it on harm intent will instantly inject a random amount of the chemical inside while dealing minor brute damage and destroying the syringe. Injecting someone else takes a short time of both standing motionless.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Injector&#039;&#039;&#039; || &lt;br /&gt;
* Default ones hold 15u max. Injectors with bigger capacity can be made at the medilathe in research. They can be filled at the centrifuge in research. Pre-loaded injectors cannot be filled with more than their initial amount, for example, a dexalin plus autoinjector can hold only 1u no matter how hard you try to refill it. &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Pill&#039;&#039;&#039; || &lt;br /&gt;
* 60u max. Takes some time to use on someone, like the syringe. There&#039;s also a tiny delay between swallowing a pill and its contents entering your bloodstream, but it&#039;s too little to matter. Can be dissolved in a beaker already containing a solution.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Pill Bottle&#039;&#039;&#039; || &lt;br /&gt;
* Holds 16 pills max. Clicking on a tile with pills on it while holding the bottle will pick up all the pills scattered on it. &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Hypospray&#039;&#039;&#039; || &lt;br /&gt;
* Holds 30 units, and comes pre-loaded with tricordrazine. Can be drained and refilled with a syringe or unloaded and loaded with vial. Instantly injects 5u doses.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Syringe Case&#039;&#039;&#039; || &lt;br /&gt;
* Holds three syringes/bottles/injectors.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Labellers and Pens&#039;&#039;&#039; &lt;br /&gt;
|| &lt;br /&gt;
*Labels can be put on most things you can click on. Only one label may be applied to an item. Activate the labeller without entering a label to remove them.&lt;br /&gt;
*Pens replace the name of a chem-master bottle, so instead of bottle (Peridaxon) you get a Peridaxon bottle.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=Chemical mixes=&lt;br /&gt;
Various common mixes of medical reagents are ordered by hospital corpsmen. &#039;&#039;&#039;All of these recipes assume that you are using a bluespace beaker.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Mix Name !! Vendor and Chem Dispenser !! Chem Dispenser&lt;br /&gt;
|-&lt;br /&gt;
| {{anchor|imialky}}[[#imialky|&#039;&#039;&#039;ImiAlky&#039;&#039;&#039; (10u, 5u)]]&lt;br /&gt;
Also known as &#039;&#039;&#039;IA&#039;&#039;&#039;. Results in 160u of Imidazoline and 80u of Alkysine.&lt;br /&gt;
Overdoses 30u for both reagents (3 pills).&lt;br /&gt;
Used for healing brain damage and eye damage. &lt;br /&gt;
|| &lt;br /&gt;
*Add &#039;&#039;&#039;120u&#039;&#039;&#039; of Dylovene from the Chem Dispenser.&lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; Chlorine,&lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; Nitrogen,&lt;br /&gt;
*Add &#039;&#039;&#039;80u&#039;&#039;&#039; Carbon,&lt;br /&gt;
*Add &#039;&#039;&#039;80u&#039;&#039;&#039; Hydrogen&lt;br /&gt;
&lt;br /&gt;
Split into 16 pills.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restock the used bottles back on the Vendor once you are done. This can be done by dragging the bottles in one hand onto the Vendor. &lt;br /&gt;
|| &lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; Silicon, &#039;&#039;&#039;40u&#039;&#039;&#039; Nitrogen, &#039;&#039;&#039;40u&#039;&#039;&#039; Potassium to make &#039;&#039;&#039;120u&#039;&#039;&#039; of Dylovene,&lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; Chlorine,&lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; Nitrogen,&lt;br /&gt;
*Add &#039;&#039;&#039;80u&#039;&#039;&#039; Carbon,&lt;br /&gt;
*Add &#039;&#039;&#039;80u&#039;&#039;&#039; Hydrogen&lt;br /&gt;
&lt;br /&gt;
Split into 16 pills.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| {{anchor|merabica}}[[#merabica|&#039;&#039;&#039;MeraBica&#039;&#039;&#039; (7.5u, 7.5u)]]&lt;br /&gt;
Also known as &#039;&#039;&#039;MB&#039;&#039;&#039;. Results in 120u of [[#Meralyne|Meralyne]] and 120u of [[Chemistry#bicaridine|Bicaridine]].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Overdoses on 15u of [[#Meralyne|Meralyne]] and 30u of [[Chemistry#bicaridine|Bicaridine]] (2 and 3 pills respectively).&lt;br /&gt;
&lt;br /&gt;
Rapidly heals Brute damage. &lt;br /&gt;
||&lt;br /&gt;
*Add &#039;&#039;&#039;160u&#039;&#039;&#039; Bicaridine,&lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; Water,&lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; Carbon&lt;br /&gt;
&lt;br /&gt;
Split into 16 pills.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restock the used bottles back on the Vendor once you are done. This can be done by dragging the bottles in one hand onto the Vendor. &lt;br /&gt;
||&lt;br /&gt;
*Add &#039;&#039;&#039;160u&#039;&#039;&#039; Carbon, &lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; Water,&lt;br /&gt;
*Add &#039;&#039;&#039;30u&#039;&#039;&#039; Oxygen,&lt;br /&gt;
*Add &#039;&#039;&#039;30u&#039;&#039;&#039; Sugar&lt;br /&gt;
&lt;br /&gt;
Remove  &#039;&#039;&#039;20u&#039;&#039;&#039; Bicaridine using the ChemMaster to have &#039;&#039;&#039;120u&#039;&#039;&#039; of Bicaridine and &#039;&#039;&#039;120u&#039;&#039;&#039; Meralyne.&lt;br /&gt;
&lt;br /&gt;
Split into 16 pills &amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| {{anchor|keloderm}}[[#keloderm|&#039;&#039;&#039;KeloDerm&#039;&#039;&#039; (7.5u, 7.5u)]]&lt;br /&gt;
Also known as &#039;&#039;&#039;KD&#039;&#039;&#039;. Results in 120u of [[Chemistry#kelotane|Kelotane]] and 120u of [[Chemistry#dermaline|Dermaline]].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Overdoses on 30u of [[Chemistry#kelotane|Kelotane]] and 15u of [[Chemistry#dermaline|Dermaline]] (2 pills).&lt;br /&gt;
&lt;br /&gt;
Rapidly heals burn damage. &lt;br /&gt;
|| &lt;br /&gt;
*Add &#039;&#039;&#039;160u&#039;&#039;&#039; Kelotane,&lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; Oxygen,&lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; Phosphorus&lt;br /&gt;
&lt;br /&gt;
Split into 16 pills.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restock the used bottles back on the Vendor once you are done. This can be done by dragging the bottles in one hand onto the Vendor. &lt;br /&gt;
|| &lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; Carbon, Carbon, Silicon, Silicon, Oxygen, and Phosphorus.&lt;br /&gt;
&lt;br /&gt;
Split into 16 pills.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| {{anchor|tribica}}[[#tribica|&#039;&#039;&#039;TriBica&#039;&#039;&#039; (15u, 15u)]]&lt;br /&gt;
Also known as &#039;&#039;&#039;TB&#039;&#039;&#039;. Results in 240u of [[Chemistry#bicaridine|Bicaridine]] and 240u of [[Chemistry#tricordrazine|Tricordrazine]]. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Overdoses at 30u for both reagents (2 pills).&lt;br /&gt;
&lt;br /&gt;
Heals brute damage at a moderate rate and also slowly heals burns and toxin damage. &lt;br /&gt;
|| &lt;br /&gt;
* Add &#039;&#039;&#039;60u&#039;&#039;&#039; of Inaprovaline,&lt;br /&gt;
* Add &#039;&#039;&#039;120u&#039;&#039;&#039; Bicaridine,&lt;br /&gt;
* Add &#039;&#039;&#039;60u&#039;&#039;&#039; of Dylovene&lt;br /&gt;
&lt;br /&gt;
Split into 8 pills.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Add &#039;&#039;&#039;60u&#039;&#039;&#039; of Inaprovaline,&lt;br /&gt;
* Add &#039;&#039;&#039;120u&#039;&#039;&#039; Bicaridine,&lt;br /&gt;
* Add &#039;&#039;&#039;60u&#039;&#039;&#039; of Dylovene&lt;br /&gt;
&lt;br /&gt;
Split into 8 pills.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restock the used bottles back on the Vendor once you are done. This can be done by dragging the bottles in one hand onto the Vendor.&lt;br /&gt;
||&lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; Carbon, Sugar, Oxygen,&lt;br /&gt;
*Add &#039;&#039;&#039;30u&#039;&#039;&#039; Carbon, Carbon,&lt;br /&gt;
*Add &#039;&#039;&#039;20u&#039;&#039;&#039; Nitrogen, Potassium, Silicon&lt;br /&gt;
&lt;br /&gt;
Split into 8 pills.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; Carbon, Sugar, Oxygen,&lt;br /&gt;
*Add &#039;&#039;&#039;30u&#039;&#039;&#039; Carbon, Carbon,&lt;br /&gt;
*Add &#039;&#039;&#039;20u&#039;&#039;&#039; Nitrogen, Potassium, Silicon&lt;br /&gt;
&lt;br /&gt;
Split into 8 pills.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| {{anchor|nitrogenwater}}[[#nitrogenwater|&#039;&#039;&#039;NitrogenWater&#039;&#039;&#039; (10u, 10u)]]&lt;br /&gt;
More commonly referred to as &#039;&#039;&#039;NW&#039;&#039;&#039;. Helps deal with [[Chemistry#tramadol|Tramadol]] overdoses by reacting with in the body to create [[Chemistry#paracetamol|Paracetamol]], which has a higher overdose threshold of &#039;&#039;&#039;60u&#039;&#039;&#039; compared to [[Chemistry#tramadol|Tramadol&#039;s]] &#039;&#039;&#039;30u&#039;&#039;&#039;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Tramadol overdose &#039;&#039;&#039;neutralizer&#039;&#039;&#039;. Does &#039;&#039;&#039;not&#039;&#039;&#039; fix toxin damage caused by the overdose.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
This medical reagent has &#039;&#039;&#039;no overdose threshold&#039;&#039;&#039;. It should however be noted that [[Chemistry#tramadol|Tramadol]] and [[Chemistry#paracetamol|Paracetamol]] are toxic when mixed together. It is advised to double-check the patient for high levels of tramadol before using &#039;&#039;&#039;NW&#039;&#039;&#039;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
|| N/A &lt;br /&gt;
||&lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; of Nitrogen,&lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; of Water&lt;br /&gt;
&lt;br /&gt;
Split into 4. &amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| {{anchor|fe}}[[#fe|&#039;&#039;&#039;Iron&#039;&#039;&#039; (15u)]]&lt;br /&gt;
Also known as it&#039;s chemical name of &#039;&#039;&#039;Fe&#039;&#039;&#039;. Adding [[Chemistry#sugar|Sugar]] to the mixture does not help restore more blood. [[Chemistry#sugar|Sugar]] is nutritious to an extent (NTR 1) but not Hemogenic. Results in 240u of [[Chemistry#iron|Iron]]. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Overdoses at &#039;&#039;&#039;30u&#039;&#039;&#039;. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hemogenic level 3 (HMG 3). Restores lost blood faster. &lt;br /&gt;
|| &lt;br /&gt;
N/A &lt;br /&gt;
||&lt;br /&gt;
*Add &#039;&#039;&#039;240u&#039;&#039;&#039; of [[Chemistry#iron|Iron]]&lt;br /&gt;
&lt;br /&gt;
Split into 16 pills. &amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
{{anchor|ironsugar}}[[#ironsugar|&#039;&#039;&#039;IronSugar (7.5u, 7.5u)&#039;&#039;&#039;]]&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
Also known as &#039;&#039;&#039;IS&#039;&#039;&#039;. An objectively less effective version of just Iron. Results in &#039;&#039;&#039;120u&#039;&#039;&#039; of Sugar and &#039;&#039;&#039;120u&#039;&#039;&#039; of Iron.&lt;br /&gt;
&lt;br /&gt;
Overdoses at &#039;&#039;&#039;30u&#039;&#039;&#039; due to the Iron being present in the reagent. &amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;br&amp;gt; &lt;br /&gt;
|| &lt;br /&gt;
N/A&lt;br /&gt;
|| &lt;br /&gt;
*Add &#039;&#039;&#039;120u&#039;&#039;&#039; of Iron,&lt;br /&gt;
*Add &#039;&#039;&#039;120u&#039;&#039;&#039; of Sugar&lt;br /&gt;
&lt;br /&gt;
Split to 16. &amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| {{anchor|atd}}[[#atd|&#039;&#039;&#039;AriTricaDylo&#039;&#039;&#039; (5u, 5u, 5u)]]&lt;br /&gt;
Also known as &#039;&#039;&#039;ATD&#039;&#039;&#039;. Results in &#039;&#039;&#039;80u&#039;&#039;&#039; of [[Chemistry#arithrazine|Arithrazine]], &#039;&#039;&#039;80u&#039;&#039;&#039; of [[Chemistry#dylovene|Dylovene]], and &#039;&#039;&#039;80u&#039;&#039;&#039; of [[Chemistry#tricordrazine|Tricordrazine]]. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Overdoses at &#039;&#039;&#039;15u&#039;&#039;&#039; of [[Chemistry#arithrazine|Arithrazine]], &#039;&#039;&#039;30u&#039;&#039;&#039; of both [[Chemistry#dylovene|Dylovene]] and [[Chemistry#tricordrazine|Tricordrazine]]. (3 and 4 pills respectively).&lt;br /&gt;
&lt;br /&gt;
Potent Toxin damage healer. &lt;br /&gt;
||&lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; Inaprovaline,&lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; Phosphorous,&lt;br /&gt;
*Add &#039;&#039;&#039;180u&#039;&#039;&#039; Dylovene.&lt;br /&gt;
&lt;br /&gt;
Remove &#039;&#039;&#039;20u&#039;&#039;&#039; of [[Chemistry#dylovene|Dylovene]] to make &#039;&#039;&#039;80u&#039;&#039;&#039; of [[Chemistry#arithrazine|Arithrazine]], &#039;&#039;&#039;80u&#039;&#039;&#039; of [[Chemistry#dylovene|Dylovene]], and &#039;&#039;&#039;80u&#039;&#039;&#039; of [[Chemistry#tricordrazine|Tricordrazine]]&lt;br /&gt;
Split into 16 pills. &amp;lt;br&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
*Add &#039;&#039;&#039;15u&#039;&#039;&#039; Carbon, &#039;&#039;&#039;15u&#039;&#039;&#039; Oxygen, &#039;&#039;&#039;20u&#039;&#039;&#039; Sugar to make &#039;&#039;&#039;45u&#039;&#039;&#039; of Inaprovaline,&lt;br /&gt;
*Add &#039;&#039;&#039;55u&#039;&#039;&#039; Silicon, &#039;&#039;&#039;55u&#039;&#039;&#039; Nitrogen, &#039;&#039;&#039;55u&#039;&#039;&#039; Potassium to make &#039;&#039;&#039;165u&#039;&#039;&#039; of Dylovene,&lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; Phosphorous.&lt;br /&gt;
&#039;&#039;&#039;NOTE: Very important you do these in the exact order.&lt;br /&gt;
 &lt;br /&gt;
Remove &#039;&#039;&#039;5u&#039;&#039;&#039; Sugar using the ChemMaster to have 80u of [[Chemistry#arithrazine|Arithrazine]], 80u of [[Chemistry#dylovene|Dylovene]], and 80u of [[Chemistry#tricordrazine|Tricordrazine]].&lt;br /&gt;
&lt;br /&gt;
Split into 16 pills.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| {{anchor|dexplus}}[[#dexplus|&#039;&#039;&#039;Dexalin Plus&#039;&#039;&#039; (7.5u)]]&lt;br /&gt;
Also known as &#039;&#039;&#039;Dex+&#039;&#039;&#039;. Results in &#039;&#039;&#039;120u&#039;&#039;&#039; of [[Chemistry#dexalinplus|Dexalin Plus]].&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Overdoses on 15u of [[Chemistry#dexalinplus|Dexalin Plus]].&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Dexalin Plus instantly removes any initial oxygen damage.&amp;lt;br&amp;gt;&lt;br /&gt;
|| &lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; Dexalin,&lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; Carbon,&lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; Iron&lt;br /&gt;
&lt;br /&gt;
Split into 16 pills.&lt;br /&gt;
 || &lt;br /&gt;
*Add &#039;&#039;&#039;23u&#039;&#039;&#039; of Phoron (grind a bar up and use a dropper)&lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; Oxygen, Oxygen,&lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; Carbon, Iron&lt;br /&gt;
&lt;br /&gt;
To fill up a bottle of Dex+, split ONLY the 120u of Dex+ into 16 pills.&amp;lt;br&amp;gt;&lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; Oxygen, Oxygen,&lt;br /&gt;
*Add &#039;&#039;&#039;40u&#039;&#039;&#039; Carbon, Iron&lt;br /&gt;
&lt;br /&gt;
Repeat the above step 3 more times.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Description !! Bottle !! Tank + Bottle&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;UNGA&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
UNGA is a mix of commonly used medicines combined into one substance: &amp;quot;UNGA juice&amp;quot;. The final product should be pink once everything is mixed in. &#039;&#039;&#039;UNGA should only be bottled (60u), do not make UNGA pills.&#039;&#039;&#039; &lt;br /&gt;
|| &lt;br /&gt;
OD limits depend on the chemicals in contained in the UNGA juice. The OD limit for this version of UNGA will be &#039;&#039;&#039;15u&#039;&#039;&#039; due to containing Dermaline. It is recommended to add all the medicines in the Bluespace beaker first, then remove certain amounts in the ChemMaster so that every chemical is 12u. This is used to make a full bottle (60u) containing equal proportions.&lt;br /&gt;
&lt;br /&gt;
*Add &#039;&#039;&#039;12u&#039;&#039;&#039; Tricordrazine,&lt;br /&gt;
*Add &#039;&#039;&#039;12u&#039;&#039;&#039; Bicaridine,&lt;br /&gt;
*Add &#039;&#039;&#039;12u&#039;&#039;&#039; Kelotane,&lt;br /&gt;
*Add &#039;&#039;&#039;12u&#039;&#039;&#039; Dermaline,&lt;br /&gt;
*Add &#039;&#039;&#039;12u&#039;&#039;&#039; Oxycodone,&lt;br /&gt;
*Add &#039;&#039;&#039;12u&#039;&#039;&#039; Meralyne&lt;br /&gt;
||Add the following to the tank:&lt;br /&gt;
*Add &#039;&#039;&#039;120u&#039;&#039;&#039; Bicaridine ,&lt;br /&gt;
*Add 120u Kelotane,&lt;br /&gt;
*Add 60u Inaprovaline,&lt;br /&gt;
*Add &#039;&#039;&#039;60u&#039;&#039;&#039; Dylovene,&lt;br /&gt;
*Add &#039;&#039;&#039;120u&#039;&#039;&#039; Oxycodone&lt;br /&gt;
Add the following to a beaker:&lt;br /&gt;
&lt;br /&gt;
* Add 40u Bicaridine,&lt;br /&gt;
* Add 40u Kelotane,&lt;br /&gt;
* Add 40u Carbon, Water,&lt;br /&gt;
* Add 40u Oxygen, Phosphorus&lt;br /&gt;
&lt;br /&gt;
Add the beaker&#039;s contents to the tank.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Chemicals=&lt;br /&gt;
The amount of a certain chemical in a marine&#039;s blood decreases by its &#039;&#039;&#039;metabolism&#039;&#039;&#039; value every life tick. Life ticks happen once every 2 seconds. The &amp;quot;effect&amp;quot; column contains the chemical&#039;s effects per tick unless stated otherwise.&lt;br /&gt;
The ratio column indicates how much of the chem you get when mixing. For example, a chem with a ratio of 4:4 takes 4 units of its component chemicals to make 4 units of the chemical itself.&lt;br /&gt;
Chems marked with &#039;&#039;&#039;(CATALYST)&#039;&#039;&#039; are not expended during the reaction.&lt;br /&gt;
The &amp;quot;OD&amp;quot; column for some chemicals has two numbers. The first is the threshold for the &amp;quot;normal&amp;quot; OD, the second is for critical OD. The next column &amp;quot;OD effects&amp;quot; contains the consequences of overdosing on this reagent. &#039;&#039;&#039;(C)&#039;&#039;&#039; indicates the effect of a critical overdose.&lt;br /&gt;
&lt;br /&gt;
Cocktails and drinks can be found [[Drinks|here]]. &lt;br /&gt;
&lt;br /&gt;
==Basic==&lt;br /&gt;
Most of these chemicals have little use outside of making more complex ones and can be acquired while on the Almayer from chemical dispensers or via other means. &lt;br /&gt;
{| class=&amp;quot;wikitable unsortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 10%; margin: auto;&amp;quot; |Name&lt;br /&gt;
! style=&amp;quot;width: 20%; margin: auto;&amp;quot; |Effect&lt;br /&gt;
! style=&amp;quot;width: 12%; margin: auto;&amp;quot; |Properties&lt;br /&gt;
! style=&amp;quot;margin: auto;&amp;quot; |Acquiring&lt;br /&gt;
! style=&amp;quot;width: 5%; margin: auto;&amp;quot; |Ratio&lt;br /&gt;
! style=&amp;quot;width: 5%; margin: auto;&amp;quot; |Meta- bolism&lt;br /&gt;
! style=&amp;quot;width: 5%; margin: auto;&amp;quot; |OD&lt;br /&gt;
! style=&amp;quot;width: 20%; margin: auto;&amp;quot; |OD effects&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|water}}[[#water|Water]]&lt;br /&gt;
|&lt;br /&gt;
* Gets things wet. &lt;br /&gt;
* Extinguishes fires.&lt;br /&gt;
* Explodes when mixed with [[#potassium|potassium]].&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Water}}&lt;br /&gt;
|3:1&lt;br /&gt;
|0,01&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
&amp;lt;!--|-&lt;br /&gt;
|{{anchor|holywater}}[[#holywater|Holy Water]]&lt;br /&gt;
|&lt;br /&gt;
* As above.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|0,01&lt;br /&gt;
|&lt;br /&gt;
|--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|ethanol}}[[#ethanol|Ethanol]]&lt;br /&gt;
|&lt;br /&gt;
* Basic alcohol type. [[Drinks#Alcoholic|All other ones]] are a subtype of this.&lt;br /&gt;
* Gets you drunk.&lt;br /&gt;
* Can be used to remove ink from paper.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#ALH|ALH]] 4&lt;br /&gt;
* [[Researcher#FUL|FUL]] 3&lt;br /&gt;
* [[Researcher#OXI|OXI]] 3&lt;br /&gt;
* [[Researcher#FLW|FLW]] 2&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Ethanol}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|oxygen}}[[#oxygen|Oxygen]]&lt;br /&gt;
|&lt;br /&gt;
* Fire.&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Oxygen}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,01&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|copper}}[[#copper|Copper]]&lt;br /&gt;
|&lt;br /&gt;
* Green fire coloring&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Copper}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,01&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|nitrogen}}[[#nitrogen|Nitrogen]]&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Nitrogen}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,01&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|hydrogen}}[[#hydrogen|Hydrogen]]&lt;br /&gt;
|&lt;br /&gt;
* Explosives&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Hydrogen}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,01&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|potassium}}[[#potassium|Potassium]]&lt;br /&gt;
|&lt;br /&gt;
* Explodes when mixed with water.&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Potassium}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,01&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|mercury}}[[#mercury|Mercury]]&lt;br /&gt;
|&lt;br /&gt;
* Deals 4 brain damage per tick&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#NRT|NRT]] 4&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Mercury}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,2&lt;br /&gt;
|30&lt;br /&gt;
|&lt;br /&gt;
* Deals 10 brain damage per tick&lt;br /&gt;
* Makes you jittery&lt;br /&gt;
* Makes you drowsy&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|sulfur}}[[#sulfur|Sulfur]]&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Sulphur}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,01&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|carbon}}[[#carbon|Carbon]]&lt;br /&gt;
|&lt;br /&gt;
* Chemfire modifier&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Carbon}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,01&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|chlorine}}[[#chlorine|Chlorine]]&lt;br /&gt;
|&lt;br /&gt;
* Deals 0.5 brute damage per tick&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#BCD|BCD]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Chlorine}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Deals 1.5 brute damage per tick&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 4 brute damage per tick&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|fluorine}}[[#fluorine|Fluorine]]&lt;br /&gt;
|&lt;br /&gt;
* Deals 0.5 toxin damage per tick&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#TOX|TOX]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Flourine}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Deals 1.5 toxin damage per tick&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 4 toxin damage per tick&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|sodium}}[[#sodium|Sodium]]&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Sodium}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,01&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|phosphorus}}[[#phosphorus|Phosphorus]]&lt;br /&gt;
|&lt;br /&gt;
* Fire modifier&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Phosphorus}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,01&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|lithium}}[[#lithium|Lithium]]&lt;br /&gt;
|&lt;br /&gt;
* Fire modifier&lt;br /&gt;
* Makes you less confused and sends messages in chat.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#OXI|OXI]] 1&lt;br /&gt;
* [[Researcher#PST|PST]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Lithium}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Deals 0.5 brain damage per tick&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 3 brain damage per tick&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Makes you hallucinate&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|nutriment}}[[#nutriment|Nutriment]]&lt;br /&gt;
|&lt;br /&gt;
* Nutritious. Helps restore lost blood.&lt;br /&gt;
|&lt;br /&gt;
* [[#NTR|NTR]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Nutriment}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|sugar}}[[#sugar|Sugar]]&lt;br /&gt;
|&lt;br /&gt;
* Nutritious. Helps restore lost blood.&lt;br /&gt;
|&lt;br /&gt;
* [[#NTR|NTR]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Sugar}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|iron}}[[#iron|Iron]]&lt;br /&gt;
|&lt;br /&gt;
* Turns nutrition into blood.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#HMG|HMG]] 3&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Iron}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Deals 1.5 toxin damage per tick&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Makes you really hungry&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|gold}}[[#gold|Gold]]&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Gold}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|silver}}[[#silver|Silver]]&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Silver}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|uranium}}[[#uranium|Uranium]]&lt;br /&gt;
|&lt;br /&gt;
* Deals 0.5 radiation damage per tick&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#CRG|CRG]] 2&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Uranium}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|aluminium}}[[#aluminium|Aluminium]]&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Aluminium}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|silicon}}[[#silicon|Silicon]]&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Silicon}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|weldingfuel}}[[#weldingfuel|Welding Fuel]]&lt;br /&gt;
|&lt;br /&gt;
* Fire modifier&lt;br /&gt;
* Deals 0.5 toxin damage per tick&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#FUL|FUL]] 5&lt;br /&gt;
* [[Researcher#OXI|OXI]] 3&lt;br /&gt;
* [[Researcher#VIS|VIS]] 4&lt;br /&gt;
* [[Researcher#TOX|TOX]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Welding Fuel}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Deals 1.5 toxin damage per tick&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 4 toxin damage per tick&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|phoron}}[[#phoron|Phoron]]&lt;br /&gt;
|&lt;br /&gt;
* Fire modifier&lt;br /&gt;
* Deals 0.5 toxin damage per tick&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#TOX|TOX]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Phoron}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,1&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|radium}}[[#radium|Radium]]&lt;br /&gt;
|&lt;br /&gt;
* Deals 0.5 radiation damage per tick&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#CRG|CRG]] 2&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Radium}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Medical==&lt;br /&gt;
These chemicals are used for healing damage and generally keeping marines healthy. Some reagents that technically don&#039;t have a tangible gameplay effect but are in the medical chem code are included. (Mainly various antidepressants)&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 1%; margin: auto;&amp;quot; |Name&lt;br /&gt;
! style=&amp;quot;width: 20%; margin: auto;&amp;quot; scope=col class=unsortable |Effect&lt;br /&gt;
! style=&amp;quot;width: 12%; margin: auto;&amp;quot; scope=col class=unsortable |Properties&lt;br /&gt;
! style=&amp;quot;margin: auto;&amp;quot; scope=col class=unsortable |Recipe&lt;br /&gt;
! style=&amp;quot;width: 1%; margin: auto;&amp;quot; scope=col class=unsortable |Ratio&lt;br /&gt;
! style=&amp;quot;width: 5%; margin: auto;&amp;quot; scope=col class=unsortable |Meta- bolism&lt;br /&gt;
! style=&amp;quot;width: 1%; margin: auto;&amp;quot; scope=col class=unsortable |OD&lt;br /&gt;
! style=&amp;quot;width: 20%; margin: auto;&amp;quot; scope=col class=unsortable |OD effects&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|inaprovaline}}[[#inaprovaline|Inaprovaline]]&lt;br /&gt;
|&lt;br /&gt;
* Prevents gaining further oxygen damage from being in crit.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#CSL|CSL]] 3&lt;br /&gt;
|&lt;br /&gt;
* Weylandmeds.&lt;br /&gt;
{{:Chemical/Inaprovaline}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 60&lt;br /&gt;
* 100&lt;br /&gt;
|&lt;br /&gt;
* Knocks you out.&lt;br /&gt;
* Causes Jitter&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 0,5 heart damage per tick.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Sleeps you.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|paracetamol}}[[#paracetamol|Paracetamol]]&lt;br /&gt;
|&lt;br /&gt;
* Reduces pain.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#PNK|PNK]] 2&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Paracetamol}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0,05&lt;br /&gt;
|&lt;br /&gt;
* 60&lt;br /&gt;
* 100&lt;br /&gt;
|&lt;br /&gt;
* Makes you hallucinate.&lt;br /&gt;
* Deals 2 toxin damage per tick.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 3 liver damage per tick.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 1 brain damage per tick.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 3 oxygen damage per tick.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|ryetalyn}}[[#ryetalyn|Ryetalyn]]&lt;br /&gt;
|&lt;br /&gt;
* Fixes disabilities and disfigurements.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#AID|AID]] 2&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Ryetalyn}}&lt;br /&gt;
|2:2&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Makes you confused.&lt;br /&gt;
* Deals 1 toxin damage per tick.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Knocks you out.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 2 toxin damage per tick.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 3 radiation damage per tick.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|tramadol}}[[#tramadol|Tramadol]]&lt;br /&gt;
|&lt;br /&gt;
* Reduces pain.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#PNK|PNK]] 5&lt;br /&gt;
|&lt;br /&gt;
* Weylandmeds.&lt;br /&gt;
{{:Chemical/Tramadol}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0,05&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Makes you hallucinate.&lt;br /&gt;
* Deals 2.5 toxin damage per tick.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 7.5 liver damage per tick.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 2.5 brain damage per tick.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 3 oxygen damage per tick.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|oxycodone}}[[#oxycodone|Oxycodone]]&lt;br /&gt;
|&lt;br /&gt;
* Reduces pain.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#PNK|PNK]] 8&lt;br /&gt;
|&lt;br /&gt;
* Weylandmeds.&lt;br /&gt;
{{:Chemical/Oxycodone}}&lt;br /&gt;
|2:1&lt;br /&gt;
|0,1&lt;br /&gt;
|&lt;br /&gt;
* 20&lt;br /&gt;
* 30&lt;br /&gt;
|&lt;br /&gt;
* Makes you hallucinate.&lt;br /&gt;
* Deals 4 toxin damage per tick.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 12 liver damage per tick.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 4 brain damage per tick.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 3 oxygen damage.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|leporazine}}[[#leporazine|Leporazine]]&lt;br /&gt;
|&lt;br /&gt;
* Attempts to stabilize your temperature.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#TSL|TSL]] 2&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Leporazine}}&lt;br /&gt;
|2:2&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Knocks you out.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Sleeps you.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|kelotane}}[[#kelotane|Kelotane]]&lt;br /&gt;
|&lt;br /&gt;
* Heals 1 burn damage per tick.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#ACR|ACR]] 2&lt;br /&gt;
|&lt;br /&gt;
* Weylandmeds.&lt;br /&gt;
{{:Chemical/Kelotane}}&lt;br /&gt;
|2:2&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Deals 1 brute and toxin damage per tick.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 5.5 brute and toxin damage per tick.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|dermaline}}[[#dermaline|Dermaline]]&lt;br /&gt;
|&lt;br /&gt;
* Heals 1.5 burn damage per tick.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#ACR|ACR]] 3&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Dermaline}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 15&lt;br /&gt;
* 25&lt;br /&gt;
|&lt;br /&gt;
* Deals 1.5 brute and toxin damage per tick.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 9 brute and toxin damage per tick.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|Meralyne}}[[#Meralyne|Meralyne]]&lt;br /&gt;
|&lt;br /&gt;
* Heals 1.5 brute damage per tick.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#NGN|NGN]] 3&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Meralyne}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 15&lt;br /&gt;
* 25&lt;br /&gt;
|&lt;br /&gt;
* Deals 1.5 burn damage per tick.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 9 burn and 3 toxin damage per tick.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|dexalin}}[[#dexalin|Dexalin]]&lt;br /&gt;
|&lt;br /&gt;
* Repairs 4 oxygen damage. &amp;lt;!--The code for this shit is weird. It looks like it should remove ALL oxygen damage, like dex+, but it doesn&#039;t. So I used the formula for if it doesn&#039;t.--&amp;gt;&lt;br /&gt;
* Removes 4u of [[#lexorin|lexorin]] per tick.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#OXG|OXG]] 4&lt;br /&gt;
|&lt;br /&gt;
* Weylandmeds.&lt;br /&gt;
* Recipe:&lt;br /&gt;
{{:Chemical/Dexalin}}&lt;br /&gt;
|2,1:1&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Deals 2 toxin damage per tick.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 4 brute damage per tick.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 8 toxin damage per tick.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|dexalinplus}}[[#dexalinplus|Dexalin Plus]]&lt;br /&gt;
|&lt;br /&gt;
* Repairs all oxygen damage instantly.&lt;br /&gt;
* Removes 6u of [[#lexorin|lexorin]] per tick.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#OXG|OXG]] 6&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Dexalin Plus}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 15&lt;br /&gt;
* 25&lt;br /&gt;
|&lt;br /&gt;
* Deals 1.5 toxin damage per tick.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 3 brute damage per tick.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 7.5 toxin damage per tick.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|tricordrazine}}[[#tricordrazine|Tricordrazine]]&lt;br /&gt;
|&lt;br /&gt;
* Heals 0.5 brute damage.&lt;br /&gt;
* Heals 0.5 burn damage.&lt;br /&gt;
* Heals 0.5 toxin damage.&lt;br /&gt;
* Heals 0.5 oxygen damage.&lt;br /&gt;
* Removes 1u of &amp;lt;!--[[#generictoxin|generic toxin]] and--&amp;gt; all types of [[#toxin|toxin]].&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#NGN|NGN]] 1&lt;br /&gt;
* [[Researcher#ACR|ACR]] 1&lt;br /&gt;
* [[Researcher#ATX|ATX]] 1&lt;br /&gt;
* [[Researcher#OXG|OXG]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Tricordrazine}}&lt;br /&gt;
|2:2&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Deals 0.5 burn damage&lt;br /&gt;
* Deals 0.5 brute damage.&lt;br /&gt;
* Deals 0.25 toxin damage.&lt;br /&gt;
* Deals 0.5 Eye damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 2.5 burn damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 4 toxin damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 2.5 brute damage.&lt;br /&gt;
* &amp;quot;(C)&amp;quot; Sleeps you&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|dylovene}}[[#dylovene|Dylovene]]&lt;br /&gt;
|&lt;br /&gt;
* Heals 2 toxin damage.&lt;br /&gt;
* Removes 1u of [[#toxin|toxin]] of any type.&lt;br /&gt;
* Removes 5u of [[#mindbreaker|mindbreaker toxin]].&lt;br /&gt;
* Removes 5u of [[#spacedrugs|space drugs]]&lt;br /&gt;
* Reduces the potency of hallucinations and other drug-related effects.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#ATX|ATX]] 2&lt;br /&gt;
* [[Researcher#AHL|AHL]] 2&lt;br /&gt;
|&lt;br /&gt;
* Weylandmeds.&lt;br /&gt;
{{:Chemical/Dylovene}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Deals 1 eye damage..&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Sleeps you.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 1 burn damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 1 brute damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 2 toxin damage.&lt;br /&gt;
&amp;lt;!--|-&lt;br /&gt;
|{{anchor|adminordrazine}}[[#adminordrazine|Adminordrazine]]&lt;br /&gt;
|&lt;br /&gt;
* Omnipotent&lt;br /&gt;
|&lt;br /&gt;
* Omnipotent 2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
|--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|thwei}}[[#thwei|Thwei]]&lt;br /&gt;
|&lt;br /&gt;
* Heals 1,2 brute damage.&lt;br /&gt;
* Heals 1 toxin damage.&lt;br /&gt;
* Heals 1 organ damage.&lt;br /&gt;
* Removes 1u of [[#toxin|toxin]] of any type.&lt;br /&gt;
* Heals all oxygen damage.&lt;br /&gt;
* Removes 6u of [[#lexorin|lexorin]].&lt;br /&gt;
* Heals 6 radiation damage per tick.&lt;br /&gt;
* Repairs bones (splinted/unsplinted in minutes)&lt;br /&gt;
** Chest and groin:  3 / 7&lt;br /&gt;
** Head: 1 / 5&lt;br /&gt;
** Hands and feet: 0,5 / 0,5&lt;br /&gt;
** Arms and legs: 0,5 / 1&lt;br /&gt;
* Rapidly restores lost blood.&lt;br /&gt;
** &#039;&#039;&#039;(HUMAN ONLY)&#039;&#039;&#039; After blood is over maximum starts deals 9 brute, 9 burn, and 18 oxygen damage per tick.&lt;br /&gt;
* Fixes disabilities and disfigurements.&lt;br /&gt;
* Removes 5u of [[#mindbreaker|mindbreaker]].&lt;br /&gt;
* Removes 5u of [[#spacedrugs|space drugs]].&lt;br /&gt;
* Weakens drug-related effects.&lt;br /&gt;
* Removes 6u of [[#ethanol|ethanol]] and [[Drinks|other alcohol]].&lt;br /&gt;
* Fixes confusion, stuttering, temporary blindness, dizziness, jitteriness, and wakes you up.&lt;br /&gt;
* Fixes eye damage.&lt;br /&gt;
* Cures the zombie virus (black goo).&lt;br /&gt;
* Cures a certain other rare disease. &amp;lt;!--As with anti-zed. Not giving a precise explanation--&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#XMB|XMB]] 1&lt;br /&gt;
* [[Researcher#ATX|ATX]] 1&lt;br /&gt;
* [[Researcher#HMG|HMG]] 9&lt;br /&gt;
* [[Researcher#OXG|OXG]] 6&lt;br /&gt;
* [[Researcher#ACG|ACG]] 6&lt;br /&gt;
* [[Researcher#BNM|BNM]] 6&lt;br /&gt;
* [[Researcher#AID|AID]] 1&lt;br /&gt;
* [[Researcher#AHL|AHL]] 2&lt;br /&gt;
* [[Researcher#FCS|FCS]] 6&lt;br /&gt;
* [[Researcher#CUR|CUR]] 4&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Thwei}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
|{{anchor|synaptizine}}[[#synaptizine|Synaptizine]]&lt;br /&gt;
|&lt;br /&gt;
* Reduces pain.&lt;br /&gt;
* Weakens stuns and knockdowns.&lt;br /&gt;
* Reduces drug-related effects.&lt;br /&gt;
* Removes 5u of [[#mindbreaker|mindbreaker]].&lt;br /&gt;
* Removes 5u of [[#spacedrugs|space drugs]].&lt;br /&gt;
* Deals 1 toxin damage.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#PNK|PNK]] 1&lt;br /&gt;
* [[Researcher#NST|NST]] 1&lt;br /&gt;
* [[Researcher#AHL|AHL]] 1&lt;br /&gt;
* [[Researcher#TOX|TOX]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Synaptizine}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0,1&lt;br /&gt;
|&lt;br /&gt;
* 6&lt;br /&gt;
* 10&lt;br /&gt;
|&lt;br /&gt;
* Makes you hallucinate.&lt;br /&gt;
* Deals 6 toxin damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 2 brute damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 2 burn damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 10 toxin damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 3 liver damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 1 brain damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 3 oxygen damage.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|neuraline}}[[#neuraline|Neuraline]]&lt;br /&gt;
|&lt;br /&gt;
* Weakens stuns and knockdowns.&lt;br /&gt;
* Fixes stuttering, blurry vision, confusion, dizziness, jitteriness and drowsiness.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#NST|NST]] 5&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Neuraline}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,4&lt;br /&gt;
|&lt;br /&gt;
* 2&lt;br /&gt;
* 3&lt;br /&gt;
|&lt;br /&gt;
* Deals 10 toxin damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 5 brute damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 5 burn damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 15 toxin damage.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|arithrazine}}[[#arithrazine|Arithrazine]]&lt;br /&gt;
|&lt;br /&gt;
* Heals 1 toxin damage.&lt;br /&gt;
* Removes 1u of any type of [[#toxin|toxin]].&lt;br /&gt;
* Deals 1 brute damage.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#ATX|ATX]] 1&lt;br /&gt;
* [[Researcher#BCD|BCD]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Arithrazine}}&lt;br /&gt;
|2:2&lt;br /&gt;
|0,05&lt;br /&gt;
|&lt;br /&gt;
* 15&lt;br /&gt;
* 25&lt;br /&gt;
|&lt;br /&gt;
* Deals 1 eye damage.&lt;br /&gt;
* Deals 2 brute damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Sleeps you.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 4 brute damage.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|russianred}}[[#russianred|Russian Red]]&lt;br /&gt;
|&lt;br /&gt;
* Heals 1 toxin damage.&lt;br /&gt;
* Removes 1u of any type of [[#toxin|toxin]].&lt;br /&gt;
* Deals 2 brute damage.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#ATX|ATX]] 1&lt;br /&gt;
* [[Researcher#BCD|BCD]] 2&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Russian Red}}&lt;br /&gt;
|N/A&lt;br /&gt;
|1&lt;br /&gt;
|&lt;br /&gt;
* 20&lt;br /&gt;
* 30&lt;br /&gt;
|&lt;br /&gt;
* Deals 1 eye damage.&lt;br /&gt;
* Deals 4 brute damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Sleeps you.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 8 brute damage.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|alkysine}}[[#alkysine|Alkysine]]&lt;br /&gt;
|&lt;br /&gt;
* Heals 3 brain damage per tick.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#NRP|NRP]] 2&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Alkysine}}&lt;br /&gt;
|3:2&lt;br /&gt;
|0,05&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Deals 1 toxin damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 3 brain damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Stuns you.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|imidazoline}}[[#imidazoline|Imidazoline]]&lt;br /&gt;
|&lt;br /&gt;
* Heals 1 eye damage.&lt;br /&gt;
* Fixes blurry vision and blindness.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#OCP|OCP]] 2&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Imidazoline}}&lt;br /&gt;
|3:2&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Deals 1 toxin damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 1 brute damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 1 burn damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 4 toxin damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 1 brain damage.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|peridaxon}}[[#peridaxon|Peridaxon]]&lt;br /&gt;
|&lt;br /&gt;
* Prevents you from suffering consequences of organ damage.&lt;br /&gt;
* Does &#039;&#039;&#039;NOT&#039;&#039;&#039; fix organs.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#OGS|OGS]] 4&lt;br /&gt;
|&lt;br /&gt;
* Weylandmeds.&lt;br /&gt;
* Recipe:&lt;br /&gt;
{{:Chemical/Peridaxon}}&lt;br /&gt;
|4:2&lt;br /&gt;
|0,05&lt;br /&gt;
|&lt;br /&gt;
* 15&lt;br /&gt;
* 25&lt;br /&gt;
|&lt;br /&gt;
* Deals 2 brute damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 8 brute damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 6 burn damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 6 toxin damage.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|bicaridine}}[[#bicaridine|Bicaridine]]&lt;br /&gt;
|&lt;br /&gt;
* Heals 1 brute damage per tick.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#NGN|NGN]] 2&lt;br /&gt;
|&lt;br /&gt;
* Weylandmeds.&lt;br /&gt;
* Recipe:&lt;br /&gt;
{{:Chemical/Bicaridine}}&lt;br /&gt;
|2:2&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Deals 1 burn damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 6 burn damage&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 2 toxin damage.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|epinephrine}}[[#epinephrine|Epinephrine]]&lt;br /&gt;
|&lt;br /&gt;
* &#039;&#039;&#039;MUST BE INJECTED. CANNOT TAKE IN PILLS.&#039;&#039;&#039;&lt;br /&gt;
* Increases defibrillator healing by 16 per damage type.&lt;br /&gt;
* Reduces pain.&lt;br /&gt;
* Makes you move faster.&lt;br /&gt;
* A small amount is consumed on each defib attempt.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#PNK|PNK]] 1,5 &amp;lt;!--WHY/ Still asking that to this day-  Niv--&amp;gt;&lt;br /&gt;
* [[Researcher#EGN|EGN]] 4&lt;br /&gt;
* [[Researcher#INV|INV]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Epinephrine}}&lt;br /&gt;
|3:2&lt;br /&gt;
|0,4&lt;br /&gt;
|&lt;br /&gt;
* 10,5&lt;br /&gt;
* 20&lt;br /&gt;
|&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 1 brute damage.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|ultrazine}}[[#ultrazine|Ultrazine]]&lt;br /&gt;
|&lt;br /&gt;
* Makes you much faster.&lt;br /&gt;
* Makes you addicted to it.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#MST|MST]] 40&lt;br /&gt;
* [[Researcher#ADT|ADT]] 8&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Ultrazine}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,0167 &amp;lt;!--bruh, Indeed--&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
* 10,5&lt;br /&gt;
* 20&lt;br /&gt;
|&lt;br /&gt;
* Deals 40 heart damage.&lt;br /&gt;
* Deals 8 brain damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 40 brute damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Makes you nervous. &amp;lt;!--I have no idea what this means--&amp;gt;&lt;br /&gt;
&amp;lt;!--|-&lt;br /&gt;
|{{anchor|stimulant}}[[#stimulant|Stimulant]]&lt;br /&gt;
|&lt;br /&gt;
* Reduces stamina damage by 75%&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#UNK|UNK]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Stimulant}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,05&lt;br /&gt;
|&lt;br /&gt;
* 15&lt;br /&gt;
* 25&lt;br /&gt;
|&lt;br /&gt;
* Deals 1 brute damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 3 brute damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 3 burn damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 3 toxin damage.--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|cryoxadone}}[[#cryoxadone|Cryoxadone]]&lt;br /&gt;
|&lt;br /&gt;
* &#039;&#039;&#039; ONLY FUNCTIONS AT LOW TEMPERATURES. USE A CRYO TUBE.&#039;&#039;&#039; &amp;lt;!--Fun fact: for some reason it has BOTH the cryo-metabolizing property AND a piece of snowflake code that makes it work at low temperatures. So the effect is better than it should be.--&amp;gt;&lt;br /&gt;
* Heals 3 radiation damage.&lt;br /&gt;
* Heals 3 brute damage.&lt;br /&gt;
* Heals 3 burn damage.&lt;br /&gt;
* Heals 3 toxin damage.&lt;br /&gt;
* Heals 1 oxygen damage.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#CMB|CMB]] 2&lt;br /&gt;
* [[Researcher#NGN|NGN]] 1&lt;br /&gt;
* [[Researcher#ACR|ACR]] 1&lt;br /&gt;
* [[Researcher#ATX|ATX]] 1&lt;br /&gt;
* [[Researcher#ACG|ACG]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Cryoxadone}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|clonexadone}}[[#clonexadone|Clonexadone]]&lt;br /&gt;
|&lt;br /&gt;
* &#039;&#039;&#039;AS ABOVE&#039;&#039;&#039; &amp;lt;!--Not as above part: no snowflake code here.--&amp;gt;&lt;br /&gt;
* Heals 6 radiation damage.&lt;br /&gt;
* Heals 6 brute damage.&lt;br /&gt;
* Heals 6 burn damage.&lt;br /&gt;
* Heals 6 toxin damage.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#CMB|CMB]] 6&lt;br /&gt;
* [[Researcher#NGN|NGN]] 3&lt;br /&gt;
* [[Researcher#ACR|ACR]] 3&lt;br /&gt;
* [[Researcher#ATX|ATX]] 3&lt;br /&gt;
* [[Researcher#ACG|ACG]] 3&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Clonexadone}}&lt;br /&gt;
|2,1:2&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|rezadone}}[[#rezadone|Rezadone]]&lt;br /&gt;
|&lt;br /&gt;
* Heals 1 brute damage.&lt;br /&gt;
* Removes disabilities and disfigurements.&lt;br /&gt;
* Heals 2 radiation damage.&lt;br /&gt;
* Deals 2 toxin damage.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#NGN|NGN]] 1&lt;br /&gt;
* [[Researcher#AID|AID]] 3&lt;br /&gt;
* [[Researcher#TOX|TOX]] 2&lt;br /&gt;
* [[Researcher#ACG|ACG]] 2&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Rezadone}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Deals 1 burn damage.&lt;br /&gt;
* Makes you confused.&lt;br /&gt;
* Deals 11 toxin damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Knocks you out.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 13 toxin damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 9 radiation damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 4 burn damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 4 brute damage.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|spaceacillin}}[[#spaceacillin|Spaceacillin]]&lt;br /&gt;
|&lt;br /&gt;
* Cures mundane infections like the flu.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#UNK|UNK]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Spaceacillin}}&lt;br /&gt;
|2:2&lt;br /&gt;
|0,01&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Deals 1 brute damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 3 brute damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 3 burn damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 3 toxin damage.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|ethylredoxrazine}}[[#ethylredoxrazine|Ethylredoxrazine]]&lt;br /&gt;
|&lt;br /&gt;
* Removes confusion, drowsiness, stuttering, blurry vision, blindness, dizziness, and jitteriness.&lt;br /&gt;
* Removes 3u [[#ethanol|ethanol]] and [[Drinks|other alcohols]] from the body.&lt;br /&gt;
* Reacts with [[#ethanol|ethanol]] to turn into water.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#FCS|FCS]] 3&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Ethylredoxrazine}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Deals 1.5 toxin damage per tick&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 6 toxin damage per tick&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|methylphenidate}}[[#methylphenidate|Methylphenidate]]&lt;br /&gt;
|&lt;br /&gt;
* Gives you messages about your mind becoming clearer.&lt;br /&gt;
* Removes confusion.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#PST|PST]] 4&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Methylphenidate}}&lt;br /&gt;
|2:3&lt;br /&gt;
|0,01&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|citalopram}}[[#citalopram|Citalopram]]&lt;br /&gt;
|&lt;br /&gt;
* As above.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#PST|PST]] 2&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Citalopram}}&lt;br /&gt;
|2:3&lt;br /&gt;
|0,01&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|paroxetine}}[[#paroxetine|Paroxetine]]&lt;br /&gt;
|&lt;br /&gt;
* As above.&lt;br /&gt;
* Makes you hallucinate.&lt;br /&gt;
* Makes you jittery.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#PST|PST]] 6&lt;br /&gt;
* [[Researcher#HLG|HLG]] 6&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Paroxetine}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0,01&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|antized}}[[#antized|Anti-Zed]]&lt;br /&gt;
|&lt;br /&gt;
* Prevents zombies from reviving.&lt;br /&gt;
* Cures the zombie virus.&lt;br /&gt;
* Cures all other diseases as well.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#CUR|CUR]] 2&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Anti-Zed}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,01&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|sterilizine}}[[#sterilizine|Sterilizine]]&lt;br /&gt;
|&lt;br /&gt;
* Sterilizes surfaces. Since we don&#039;t actually need to do that, this has no use outside of RP.&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Sterilizine}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|soporific}}[[#soporific|Soporific]]&lt;br /&gt;
|&lt;br /&gt;
* Puts you to sleep.&lt;br /&gt;
* Reduces pain.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#PNK|PNK]] 10&lt;br /&gt;
* [[Researcher#SDT|SDT]] 2&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Soporific}}&lt;br /&gt;
|5:5&lt;br /&gt;
|0,1&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Makes you hallucinate.&lt;br /&gt;
* Deals 5 toxin damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 15 liver damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 5 brain damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 3 oxygen damage.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|vaccine}}[[#vaccine|Vaccine]]&lt;br /&gt;
|&lt;br /&gt;
* Prevents you from catching the virus this is a vaccine against.&lt;br /&gt;
* Cures the zombie virus.&lt;br /&gt;
* Prevents dead zombies from reviving.&lt;br /&gt;
* Cures all other diseases as well.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#CUR|CUR]] 4&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Vaccine}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|antineurotoxin}}[[#antineurotoxin|Anti-Neurotoxin]]&lt;br /&gt;
|&lt;br /&gt;
* Note that &#039;&#039;&#039;technically&#039;&#039;&#039;, as far as the code is concerned, this is a subtype of xeno plasmas.&lt;br /&gt;
* Protects you from [[Sentinel|getting shot with any kind of neuro]].&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#NRS|NRS]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Anti-Neurotoxin}}&lt;br /&gt;
|2:1&lt;br /&gt;
|0,4&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Deals 1 liver damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 2 brain damage.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|lipozine}}[[#lipozine|Lipozine]]&lt;br /&gt;
|&lt;br /&gt;
* Causes you to lose fat and makes you hungry&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#KTG|KTG]] 4&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Lipozine}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0.05&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Makes you even more hungry&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 2 toxin Damage&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Toxins and acids==&lt;br /&gt;
Most of these chemicals generally don&#039;t have much use outside of murder.&lt;br /&gt;
{| class=&amp;quot;wikitable unsortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 10%; margin: auto;&amp;quot; |Name&lt;br /&gt;
! style=&amp;quot;width: 20%; margin: auto;&amp;quot; |Effect&lt;br /&gt;
! style=&amp;quot;width: 12%; margin: auto;&amp;quot; |Properties&lt;br /&gt;
! style=&amp;quot;margin: auto;&amp;quot; |Recipe&lt;br /&gt;
! style=&amp;quot;width: 5%; margin: auto;&amp;quot; |Ratio&lt;br /&gt;
! style=&amp;quot;width: 5%; margin: auto;&amp;quot; |Meta- bolism&lt;br /&gt;
! style=&amp;quot;width: 5%; margin: auto;&amp;quot; |OD&lt;br /&gt;
! style=&amp;quot;width: 20%; margin: auto;&amp;quot; |OD effects&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|generictoxin}}[[#generictoxin|Generic Toxin]]&lt;br /&gt;
|&lt;br /&gt;
* Most other chemicals in this table are a subtype of this one.&lt;br /&gt;
* Deals 1 toxin damage every tick.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#TOX|TOX]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Generic Toxin}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,1&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|toxin}}[[#toxin|Toxin]]&lt;br /&gt;
|&lt;br /&gt;
* Deals 0.5 toxin damage per tick.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#TOX|TOX]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Toxin}}&lt;br /&gt;
|2:2&lt;br /&gt;
|1&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
|{{anchor|sdtoxin}}[[#sdtoxin|Toxin (syna+dylo)]]&lt;br /&gt;
|&lt;br /&gt;
* Deals 4 oxygen damage.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#HPX|HPX]] 2&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/SDToxin}}&lt;br /&gt;
|2:2&lt;br /&gt;
|0,1&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|amatoxin}}[[#amatoxin|Amatoxin]]&lt;br /&gt;
|&lt;br /&gt;
* Deals 1 toxin damage.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#TOX|TOX]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Amatoxin}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,1&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|mutagen}}[[#mutagen|Unstable Mutagen]]&lt;br /&gt;
|&lt;br /&gt;
* Deals 0,5 radiation damage per tick.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#CRG|CRG]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Unstable Mutagen}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0,1&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|lexorin}}[[#lexorin|Lexorin]]&lt;br /&gt;
|&lt;br /&gt;
* Deals 8 oxygen damage per tick.&lt;br /&gt;
* Deals 0.5 brute damage per tick.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#HPX|HPX]] 8&lt;br /&gt;
* [[Researcher#BCD|BCD]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Lexorin}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0,1&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Deals 5.5 brute damage.&lt;br /&gt;
* Deals 4 toxin damage.&lt;br /&gt;
* Deals 28 oxygen damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 28 brute and oxygen damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 12 toxin damage.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|cyanide}}[[#cyanide|Cyanide]]&lt;br /&gt;
|&lt;br /&gt;
* Deals 8 oxygen damage.&lt;br /&gt;
* Puts you to sleep after a while.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#HPX|HPX]] 4&lt;br /&gt;
* [[Researcher#SDT|SDT]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Cyanide}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,4&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|minttoxin}}[[#minttoxin|Mint Toxin]]&lt;br /&gt;
|&lt;br /&gt;
* Deals 1 toxin damage.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#TOX|TOX]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Mint Toxin}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,1&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|carpotoxin}}[[#carpotoxin|Carpotoxin]]&lt;br /&gt;
|&lt;br /&gt;
* Deals 2 toxin damage.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#TOX|TOX]] 2&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Carpotoxin}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,1&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
&amp;lt;!--|-&lt;br /&gt;
|{{anchor|zombiepowder}}[[#zombiepowder|Zombie Powder]]&lt;br /&gt;
|&lt;br /&gt;
* Deals 1 toxin damage.&lt;br /&gt;
* By the power of snowflake code:&lt;br /&gt;
** Silences you.&lt;br /&gt;
** Makes you seem dead (but not on the medihud, fools the analyzer though).&lt;br /&gt;
** Knocks you down.&lt;br /&gt;
** Deals a shitload of oxygen damage. This kills you instantly.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#TOX|TOX]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Zombie Powder}}&lt;br /&gt;
|15:2&lt;br /&gt;
|0,1&lt;br /&gt;
|&lt;br /&gt;
|--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|chloralhydrate}}[[#chloralhydrate|Chloral Hydrate]]&lt;br /&gt;
|&lt;br /&gt;
* Deals 0.5 toxin damage.&lt;br /&gt;
* Puts you to sleep.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#SDT|SDT]] 6&lt;br /&gt;
* [[Researcher#TOX|TOX]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Chloral Hydrate}}&lt;br /&gt;
|&lt;br /&gt;
|0,1&lt;br /&gt;
|&lt;br /&gt;
* 15&lt;br /&gt;
* 25&lt;br /&gt;
|&lt;br /&gt;
* Deals 1.5 toxin damage.&lt;br /&gt;
* Knocks you out.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 4 toxin damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 15 oxygen damage.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|potassiumchloride}}[[#potassiumchloride|Potassium Chloride]]&lt;br /&gt;
|&lt;br /&gt;
* Fire modifier.&lt;br /&gt;
* Deals 4 oxygen damage.&lt;br /&gt;
* Slows you.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#HPX|HPX]] 2&lt;br /&gt;
* [[Researcher#RLX|RLX]] 4&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Potassium Chloride}}&lt;br /&gt;
|2:2&lt;br /&gt;
|0,2&lt;br /&gt;
|30&lt;br /&gt;
|&lt;br /&gt;
* Deals 2 brute damage.&lt;br /&gt;
* Deals 2 toxin damage.&lt;br /&gt;
* Deals 10 oxygen damage.&lt;br /&gt;
* Slows you down by a lot.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|potassiumchlorophoride}}[[#potassiumchlorophoride|Potassium Chlorophoride]]&lt;br /&gt;
|&lt;br /&gt;
* Slows you down.&lt;br /&gt;
* Deals 8 oxygen damage.&lt;br /&gt;
* Deals 2 toxin damage.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#RLX|RLX]] 8&lt;br /&gt;
* [[Researcher#HPX|HPX]] 4&lt;br /&gt;
* [[Researcher#TOX|TOX]] 2&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Potassium Chlorophoride}}&lt;br /&gt;
|3:4&lt;br /&gt;
|0,2&lt;br /&gt;
|20&lt;br /&gt;
|&lt;br /&gt;
* Deals 4 brute damage.&lt;br /&gt;
* Deals 4 toxin damage.&lt;br /&gt;
* Deals 20 oxygen damage.&lt;br /&gt;
* Deals 4 toxin damage.&lt;br /&gt;
* Slows you down by a lot.&lt;br /&gt;
&amp;lt;!--|-&lt;br /&gt;
|{{anchor|beer}}[[#beer|Beer]]&lt;br /&gt;
|&lt;br /&gt;
* Toxic beer.&lt;br /&gt;
* Deals 6 toxin damage per tick.&lt;br /&gt;
* Makes you drunk.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#AOL|AOL]] 2&lt;br /&gt;
* [[Researcher#TOX|TOX]] 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|0,15&lt;br /&gt;
|&lt;br /&gt;
* 15&lt;br /&gt;
* 25&lt;br /&gt;
|&lt;br /&gt;
* Deals 13 toxin damage.&lt;br /&gt;
* Makes you extremely drunk.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 24 toxin damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 1 liver damage.--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|sulphuricacid}}[[#sulphuricacid|Sulphuric Acid]]&lt;br /&gt;
|&lt;br /&gt;
* Has a chance to melt items when poured/sprayed on them. Worn headgear included.&lt;br /&gt;
* Deals 0.5 toxin damage per tick.&lt;br /&gt;
* Deals 1.5 burn damage per tick.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#TOX|TOX]] 1&lt;br /&gt;
* [[Researcher#CRS|CRS]] 3&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Sulphuric Acid}}&lt;br /&gt;
|7:1&lt;br /&gt;
|0,1&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|polytrinicacid}}[[#polytrinicacid|Polytrinic Acid]]&lt;br /&gt;
|&lt;br /&gt;
* As above, but a higher chance to melt.&lt;br /&gt;
* Deals 1 toxin damage per tick.&lt;br /&gt;
* Deals 1.5 burn damage per tick.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#CRS|CRS]] 3&lt;br /&gt;
* [[Researcher#TOX|TOX]] 2&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Polytrinic Acid}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0,1&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|formaldehyde}}[[#formaldehyde|Formaldehyde]]&lt;br /&gt;
|&lt;br /&gt;
* Deals 1 toxin damage.&lt;br /&gt;
* Deals 0,5 radiation damage.&lt;br /&gt;
* Ingredient for explosives.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#TOX|TOX]] 1&lt;br /&gt;
* [[Researcher#CRG|CRG]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Formaldehyde}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0,1&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|paraformaldehyde}}[[#paraformaldehyde|Paraformaldehyde]]&lt;br /&gt;
|&lt;br /&gt;
* Deals 1 toxin damage.&lt;br /&gt;
* Ingredient for explosives.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#TOX|TOX]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Paraformaldehyde}}&lt;br /&gt;
|2:1&lt;br /&gt;
|0,1&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|impedrezene}}[[#Impedrezene|Impedrezene]]&lt;br /&gt;
|&lt;br /&gt;
* Deals 3,5 brain damage.&lt;br /&gt;
* Slows you down.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#NRT|NRT]] 2&lt;br /&gt;
* [[Researcher#RLX|RLX]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Impedrezene}}&lt;br /&gt;
|3:2&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Deals 6 brain damage.&lt;br /&gt;
* Makes you sleepier.&lt;br /&gt;
* Slows you down by a lot.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Has a chance to knock you out.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 1 oxygen damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 0,75 heart damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Has a chance to knock you down.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Drugs==&lt;br /&gt;
Reagents that get marines high.&lt;br /&gt;
{| class=&amp;quot;wikitable unsortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 10%; margin: auto;&amp;quot; |Name&lt;br /&gt;
! style=&amp;quot;width: 20%; margin: auto;&amp;quot; |Effect&lt;br /&gt;
! style=&amp;quot;width: 12%; margin: auto;&amp;quot; |Properties&lt;br /&gt;
! style=&amp;quot;margin: auto;&amp;quot; |Recipe&lt;br /&gt;
! style=&amp;quot;width: 5%; margin: auto;&amp;quot; |Ratio&lt;br /&gt;
! style=&amp;quot;width: 5%; margin: auto;&amp;quot; |Meta- bolism&lt;br /&gt;
! style=&amp;quot;width: 5%; margin: auto;&amp;quot; |OD&lt;br /&gt;
! style=&amp;quot;width: 20%; margin: auto;&amp;quot; |OD effects&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|mindbreaker}}[[#mindbreaker|Mindbreaker Toxin]]&lt;br /&gt;
|&lt;br /&gt;
* Literally LSD.&lt;br /&gt;
* Makes you hallucinate.&lt;br /&gt;
* Makes you high.&lt;br /&gt;
* Makes you jittery.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#HLG|HLG]] 8&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Mindbreaker Toxin}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0,1&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Makes you hallucinate more.&lt;br /&gt;
* Makes you stumble around.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 4 brain damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Knocks you out.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|spacedrugs}}[[#spacedrugs|Space Drugs]]&lt;br /&gt;
|&lt;br /&gt;
* Baby&#039;s first drug.&lt;br /&gt;
* Makes you high.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#HLG|HLG]] 2&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Space Drugs}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Makes you hallucinate.&lt;br /&gt;
* Makes you jittery.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 2 brain damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Knocks you out.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|psilocybin}}[[#psilocybin|Psilocybin]]&lt;br /&gt;
|&lt;br /&gt;
* Makes you high.&lt;br /&gt;
* Makes you hallucinate.&lt;br /&gt;
* Makes you jittery.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#HLG|HLG]] 3&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Psilocybin}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Makes you hallucinate more.&lt;br /&gt;
* Makes you stumble around.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 3 brain damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Knocks you out.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|nicotine}}[[#nicotine|Nicotine]]&lt;br /&gt;
|N/A &amp;lt;!--Put it here because even though there&#039;s no ingame effects this is still probably the best category.--&amp;gt;&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Nicotine}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Xeno blood and plasma==&lt;br /&gt;
Chemicals acquired from xenos.&lt;br /&gt;
{| class=&amp;quot;wikitable unsortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 10%; margin: auto;&amp;quot; |Name&lt;br /&gt;
! style=&amp;quot;width: 20%; margin: auto;&amp;quot; |Effect&lt;br /&gt;
! style=&amp;quot;width: 12%; margin: auto;&amp;quot; |Properties&lt;br /&gt;
! style=&amp;quot;margin: auto;&amp;quot; |Recipe&lt;br /&gt;
! style=&amp;quot;width: 5%; margin: auto;&amp;quot; |Ratio&lt;br /&gt;
! style=&amp;quot;width: 5%; margin: auto;&amp;quot; |Meta- bolism&lt;br /&gt;
! style=&amp;quot;width: 5%; margin: auto;&amp;quot; |OD&lt;br /&gt;
! style=&amp;quot;width: 20%; margin: auto;&amp;quot; |OD effects&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|xenoblood}}[[#xenoblood|Acidic Blood]]&lt;br /&gt;
|&lt;br /&gt;
* Deals 3 burn damage.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#CRS|CRS]] 3&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Acidic Blood}}&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|royalxenoblood}}[[#royalxenoblood|Dark Acidic Blood]]&lt;br /&gt;
|&lt;br /&gt;
* Deals 6 burn damage.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#CRS|CRS]] 6&lt;br /&gt;
|&lt;br /&gt;
Queen and Praetorians.&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|plasma}}[[#plasma|Plasma]]&lt;br /&gt;
|&lt;br /&gt;
* Base type for all of the following.&lt;br /&gt;
|N/A&lt;br /&gt;
|{{:Chemical/Plasma}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,4&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|pheromoneplasma}}[[#pheromoneplasma|Pheromone Plasma]]&lt;br /&gt;
|&lt;br /&gt;
* Makes you high.&lt;br /&gt;
* Makes you hallucinate.&lt;br /&gt;
* Helps you with knockdowns, knockouts and stuns.&lt;br /&gt;
* Fixes stuttering, confusion, blurry vision, drowsiness, dizziness, and jitteriness.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#HLG|HLG]] 8&lt;br /&gt;
* [[Researcher#NST|NST]] 6&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Pheromone Plasma}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,4&lt;br /&gt;
|30&lt;br /&gt;
|&lt;br /&gt;
* Makes you stumble around.&lt;br /&gt;
* Makes you hallucinate more.&lt;br /&gt;
* Deals 12 toxin damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 8 brain damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Knocks you out.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 6 brute damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 6 burn damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 18 toxin damage.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|chitinplasma}}[[#chitinplasma|Chitin Plasma]]&lt;br /&gt;
|&lt;br /&gt;
* Prevents fractures.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#HDN|HDN]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Chitin Plasma}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,4&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Slows you down.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 3 brute damage.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|catecholamineplasma}}[[#catecholamineplasma|Catecholamine Plasma]]&lt;br /&gt;
|&lt;br /&gt;
* Applies pain.&lt;br /&gt;
* Makes you faster.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#PNG|PNG]] 2&lt;br /&gt;
* [[Researcher#MST|MST]] 6&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Catecholamine Plasma}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,4&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Increased pain.&lt;br /&gt;
* Deals 2 brute damage.&lt;br /&gt;
* Deals 6 heart damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 10 brute damage.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|eggplasma}}[[#eggplasma|Egg Plasma]]&lt;br /&gt;
|&lt;br /&gt;
* Infects with a xeno larva.&lt;br /&gt;
* Makes more of itself by draining blood.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#HST|HST]] 4&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Egg Plasma}}&lt;br /&gt;
|&lt;br /&gt;
|0,4&lt;br /&gt;
|&lt;br /&gt;
* 80&lt;br /&gt;
* 100&lt;br /&gt;
|&lt;br /&gt;
* Drains blood and replicates itself faster.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Makes you nervous.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|neurotoxinplasma}}[[#neurotoxinplasma|Neurotoxin Plasma]]&lt;br /&gt;
|&lt;br /&gt;
* Not to be confused with the [[Drinks#neurotoxin|drink]].&lt;br /&gt;
* Deals 7 brain damage.&lt;br /&gt;
* Deals 1 toxin damage.&lt;br /&gt;
* Makes you high.&lt;br /&gt;
* Makes you hallucinate.&lt;br /&gt;
* Makes you jittery.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#NRT|NRT]] 4&lt;br /&gt;
* [[Researcher#TOX|TOX]] 1&lt;br /&gt;
* [[Researcher#HLG|HLG]] 6&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Neurotoxin Plasma}}&lt;br /&gt;
|&lt;br /&gt;
|0,4&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Deals 12 brain damage.&lt;br /&gt;
* Makes you stumble around.&lt;br /&gt;
* Makes you hallucinate more.&lt;br /&gt;
* Makes you more jittery.&lt;br /&gt;
* Makes you drowsy.&lt;br /&gt;
* Deals 2 toxin damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Knocks you out.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 6 brain damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Applies the same effect as getting shot with [[Sentinel|neuro]].&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 4 toxin damage.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|purpleplasma}}[[#purpleplasma|Purple Plasma]]&lt;br /&gt;
|&lt;br /&gt;
* Deals 2 brute damage.&lt;br /&gt;
|&lt;br /&gt;
* [[#BCD|BCD]] 2&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Purple Plasma}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,4&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Deals 4 brute damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 8 brute damage.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|royalplasma}}[[#royalplasma|Royal Plasma]]&lt;br /&gt;
|&lt;br /&gt;
* Makes you addicted to itself.&lt;br /&gt;
* Deals 4 brute damage.&lt;br /&gt;
* Makes you hallucinate.&lt;br /&gt;
* Makes you high.&lt;br /&gt;
* Makes you jittery.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#BCD|BCD]] 4&lt;br /&gt;
* [[Researcher#ADT|ADT]] 1&lt;br /&gt;
* [[Researcher#HLG|HLG]] 4&lt;br /&gt;
* [[Researcher#CIP|CIP]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Royal Plasma}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,4&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Deals 1 brain damage.&lt;br /&gt;
* Deals 8 brute damage.&lt;br /&gt;
* Makes you stumble around.&lt;br /&gt;
* Makes you hallucinate more.&lt;br /&gt;
* Makes you more jittery&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 4 brain damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Knocks you out.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Deals 16 brute damage.&lt;br /&gt;
* &#039;&#039;&#039;(C)&#039;&#039;&#039; Makes you nervous.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Other==&lt;br /&gt;
This contains reagents that don&#039;t neatly fit into other categories.&lt;br /&gt;
{| class=&amp;quot;wikitable unsortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 10%; margin: auto;&amp;quot; |Name&lt;br /&gt;
! style=&amp;quot;width: 20%; margin: auto;&amp;quot; |Effect&lt;br /&gt;
! style=&amp;quot;width: 12%; margin: auto;&amp;quot; |Properties&lt;br /&gt;
! style=&amp;quot;margin: auto;&amp;quot; |Acquiring&lt;br /&gt;
! style=&amp;quot;width: 5%; margin: auto;&amp;quot; |Ratio&lt;br /&gt;
! style=&amp;quot;width: 5%; margin: auto;&amp;quot; |Meta- bolism&lt;br /&gt;
! style=&amp;quot;width: 5%; margin: auto;&amp;quot; |OD&lt;br /&gt;
! style=&amp;quot;width: 20%; margin: auto;&amp;quot; |OD effects&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|fertilizer}}[[#fertilizer|Fertilizer]]&lt;br /&gt;
|&lt;br /&gt;
* Usable as fertilizer for plants.&lt;br /&gt;
* Deals 0,5 toxin damage.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#TOX|TOX]] 0,5&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Fertilizer}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,1&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|plantbgone}}[[#plantbgone|Plant-B-Gone]]&lt;br /&gt;
|&lt;br /&gt;
* Kills xeno weeds.&lt;br /&gt;
* Kills normal weeds.&lt;br /&gt;
* Harms helpful plants in hydro trays too.&lt;br /&gt;
* Deals 1 toxin damage.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#TOX|TOX]] 2&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Plant-B-Gone}}&lt;br /&gt;
|5:5&lt;br /&gt;
|0,1&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|smoke}}[[#smoke|Smoke]]&lt;br /&gt;
|&lt;br /&gt;
* Creates smoke&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Smoke}}&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|flashpowder}}[[#flashpowder|Flash Powder]]&lt;br /&gt;
|&lt;br /&gt;
* Creates a bright light that lasts for a while.&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Flash Powder}}&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|blood}}[[#blood|Blood]]&lt;br /&gt;
|&lt;br /&gt;
* Spreads diseases if injected.&lt;br /&gt;
* Restores blood volume when injected into a human.&lt;br /&gt;
** Deals toxin damage if blood type is incorrect. (Just use O-)&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Blood}}&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|plasticide}}[[#plasticide|Plasticide]]&lt;br /&gt;
|&lt;br /&gt;
* Deals 1 toxin damage.&lt;br /&gt;
* Turns into plastic when mixed at a 20:10 ratio with [[#sulphuricacid|Sulphuric Acid]].&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#TOX|TOX]] 1&lt;br /&gt;
|{{:Chemical/Plasticide}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,01&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|serotrotium}}[[#serotrotium|Serotrotium]]&lt;br /&gt;
|&lt;br /&gt;
* Makes you sneeze, blink and cough.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#ALG|ALG]] 2&lt;br /&gt;
|{{:Chemical/Serotrotium}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|glycerol}}[[#glycerol|Glycerol]]&lt;br /&gt;
|&lt;br /&gt;
* Used for making nitroglycerin.&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Gylcerol}}&lt;br /&gt;
|4:1&lt;br /&gt;
|0,01&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|virusfood}}[[#virusfood|Virus Food]]&lt;br /&gt;
|&lt;br /&gt;
* No pathology on CM. So this is entirely useless.&lt;br /&gt;
* Satiates you.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#NTR|NTR]] 2&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Virus Food}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|thermite}}[[#thermite|Thermite]]&lt;br /&gt;
|&lt;br /&gt;
* Fire modifier.&lt;br /&gt;
* Deals 1 burn damage.&lt;br /&gt;
* Can be applied to walls either directly or with a spray bottle and then ignited to melt through them.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#FUL|FUL]] 7&lt;br /&gt;
* [[Researcher#OXI|OXI]] 5&lt;br /&gt;
* [[Researcher#VIS|VIS]] 4&lt;br /&gt;
* [[Researcher#CRS|CRS]] 2&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Thermite}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|spacecleaner}}[[#spacecleaner|Space Cleaner]]&lt;br /&gt;
|&lt;br /&gt;
* Cleans objects when splashed/sprayed on them.&lt;br /&gt;
* Use a spray bottle filled with it to clean a dirty microwave.&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Space Cleaner}}&lt;br /&gt;
|3:2&lt;br /&gt;
|0,2&lt;br /&gt;
|&lt;br /&gt;
* 30&lt;br /&gt;
* 50&lt;br /&gt;
|&lt;br /&gt;
* Unless there&#039;s some snowflake code tucked away in a deep dark corner of CM, this has no effects on OD.&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|cryptobiolin}}[[#cryptobiolin|Cryptobiolin]]&lt;br /&gt;
|&lt;br /&gt;
* Used for making spaceacillin.&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Cryptobiolin}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
&amp;lt;!--|-&lt;br /&gt;
|{{anchor|nanites}}[[#nanites|Nanites]]&lt;br /&gt;
|&lt;br /&gt;
* &#039;&#039;&#039;01010100 01101000 01100101 00100000 01100110 01101100 01100101 01110011 01101000 00100000 01101001 01110011 00100000 01110111 01100101 01100001 01101011 00101110&#039;&#039;&#039;&lt;br /&gt;
** Beep boop, motherfucker.&lt;br /&gt;
*** Copper to counteract.&lt;br /&gt;
* Commented out because this doesn&#039;t actually work. The disease just vanishes after stage 5. Pretty sure this is a bug, since the &amp;quot;object spawner&amp;quot; item spawns on the ground briefly.&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
* [[Cooking#roburger|Roburgers]]&lt;br /&gt;
|N/A&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A--&amp;gt;&lt;br /&gt;
&amp;lt;!--|-&lt;br /&gt;
|{{anchor|xenomicrobes}}[[#xenomicrobes|Xenomicrobes]]&lt;br /&gt;
|&lt;br /&gt;
* Commented out, since you can&#039;t get this without admins, and I&#039;d rather keep this whole thing reasonably secret.&lt;br /&gt;
** Takes a LONG time. Be patient.&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|fluorosurfactant}}[[#fluorosurfactant|Fluorosurfactant]]&lt;br /&gt;
|&lt;br /&gt;
* Turns into foam when mixed with [[#water|water]] at a 1:1 ratio. &lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Fluorosurfactant}}&lt;br /&gt;
|5:5&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|foamingagent}}[[#foamingagent|Foaming Agent]]&lt;br /&gt;
|&lt;br /&gt;
* Creates metal foam when 1u is mixed with 1u [[#polytrinicacid|polytrinic acid]] and 3u [[#aluminuim|aluminium]] or 3u [[#iron|iron]].&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Foaming Agent}}&lt;br /&gt;
|2:1&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|ammonia}}[[#ammonia|Ammonia]]&lt;br /&gt;
|&lt;br /&gt;
* Used for explosives.&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Ammonia}}&lt;br /&gt;
|4:3&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|hexamine}}[[#hexamine|Hexamine]]&lt;br /&gt;
|&lt;br /&gt;
* As above.&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Hexamine}}&lt;br /&gt;
|5:3&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
&amp;lt;!--|-&lt;br /&gt;
|{{anchor|ultraglue}}[[#ultraglue|Ultraglue]]&lt;br /&gt;
|&lt;br /&gt;
* Literally does nothing.&lt;br /&gt;
|N/A&lt;br /&gt;
|{{:Chemical/Ultraglue}}&lt;br /&gt;
|N/A&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|diethylamine}}[[#diethylamine|Diethylamine]]&lt;br /&gt;
|&lt;br /&gt;
* Fertilizer.&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Diethylamine}}&lt;br /&gt;
|2:2&lt;br /&gt;
|0,2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|blackgoo}}[[#blackgoo|Black Goo]]&lt;br /&gt;
|&lt;br /&gt;
* Gives you the zombie virus.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#RAV|RAV]] 1&lt;br /&gt;
|{{:Chemical/Black Goo}}&lt;br /&gt;
|N/A&lt;br /&gt;
|100&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|dinitroaniline}}[[#dinitroaniline|Dinitroaniline]]&lt;br /&gt;
|&lt;br /&gt;
* A herbicide and pesticide mixture used in hydroponics &lt;br /&gt;
* Deals 1 toxin damage.&lt;br /&gt;
|&lt;br /&gt;
* [[Researcher#TOX|TOX]] 1&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Dinitroaniline}}&lt;br /&gt;
|3:3&lt;br /&gt;
|0.2&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Explosives and flammable chems==&lt;br /&gt;
This contains reagents that can be used for making explosives. They may be duplicates of ones already present in one of the previous tables.&lt;br /&gt;
{| class=&amp;quot;wikitable unsortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 10%; margin: auto;&amp;quot; |Name&lt;br /&gt;
! style=&amp;quot;width: 20%; margin: auto;&amp;quot; |Recipe&lt;br /&gt;
! style=&amp;quot;width: 10%; margin: auto;&amp;quot; |Ratio&lt;br /&gt;
! style=&amp;quot;width: 10%; margin: auto;&amp;quot; |Power&lt;br /&gt;
! style=&amp;quot;width: 10%; margin: auto;&amp;quot; |Falloff&lt;br /&gt;
! style=&amp;quot;width: 10%; margin: auto;&amp;quot; |Intensity&lt;br /&gt;
! style=&amp;quot;width: 10%; margin: auto;&amp;quot; |Radius&lt;br /&gt;
! style=&amp;quot;width: 10%; margin: auto;&amp;quot; |Duration&lt;br /&gt;
! style=&amp;quot;width: 10%; margin: auto;&amp;quot; |Fire colour&lt;br /&gt;
|-&lt;br /&gt;
| [[#water|Water]]&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Water}}&lt;br /&gt;
| 3:1&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| -3&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| N/A&lt;br /&gt;
|-&lt;br /&gt;
| [[#oxygen|Oxygen]]&lt;br /&gt;
| {{:Chemical/Oxygen}}&lt;br /&gt;
| N/A&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0,75&lt;br /&gt;
| -0,08&lt;br /&gt;
| 0&lt;br /&gt;
| #58daff (light blue)&lt;br /&gt;
|-&lt;br /&gt;
| [[#copper|Copper]]&lt;br /&gt;
| {{:Chemical/Copper}}&lt;br /&gt;
| N/A&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| #78be5a (green)&lt;br /&gt;
|-&lt;br /&gt;
| [[#hydrogen|Hydrogen]]&lt;br /&gt;
| {{:Chemical/Hydrogen}}&lt;br /&gt;
| N/A&lt;br /&gt;
| 0,15&lt;br /&gt;
| 0&lt;br /&gt;
| -0,5&lt;br /&gt;
| 0,2&lt;br /&gt;
| -0,5&lt;br /&gt;
| #b6f8ff (super light blue)&lt;br /&gt;
|-&lt;br /&gt;
| [[#carbon|Carbon]]&lt;br /&gt;
| {{:Chemical/Carbon}}&lt;br /&gt;
| N/A&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 1&lt;br /&gt;
| #ffd700 (gold)&lt;br /&gt;
|-&lt;br /&gt;
| [[#phosphorus|Phosphorus]]&lt;br /&gt;
| {{:Chemical/Phosphorus}}&lt;br /&gt;
| N/A&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 1&lt;br /&gt;
| -0,12&lt;br /&gt;
| 0,1&lt;br /&gt;
| #ffdba4&lt;br /&gt;
|-&lt;br /&gt;
| [[#lithium|Lithium]]&lt;br /&gt;
| {{:Chemical/Lithium}}&lt;br /&gt;
| N/A&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0,35&lt;br /&gt;
| -0,01&lt;br /&gt;
| -0,1&lt;br /&gt;
| #ff356f (dark pink)&lt;br /&gt;
|-&lt;br /&gt;
| [[#thermite|Thermite]]&lt;br /&gt;
| &lt;br /&gt;
{{:Chemical/Thermite}}&lt;br /&gt;
| 3:3&lt;br /&gt;
| 0,5&lt;br /&gt;
| 1&lt;br /&gt;
| 0,3&lt;br /&gt;
| -0,08&lt;br /&gt;
| 0,9&lt;br /&gt;
| #ffb300 (orange)&lt;br /&gt;
|-&lt;br /&gt;
| [[#fuel|Welding Fuel]]&lt;br /&gt;
| {{:Chemical/Welding Fuel}}&lt;br /&gt;
| N/A&lt;br /&gt;
| 0,12&lt;br /&gt;
| -0,1&lt;br /&gt;
| 0,1&lt;br /&gt;
| -0,08&lt;br /&gt;
| 0,7&lt;br /&gt;
| #ff9900 (orange)&lt;br /&gt;
|-&lt;br /&gt;
| [[#hexamine|Hexamine]]&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Hexamine}}&lt;br /&gt;
| 5:2&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0,5&lt;br /&gt;
| #ff9900 (as above)&lt;br /&gt;
|-&lt;br /&gt;
| [[#napalm|Napalm]]&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Napalm}}&lt;br /&gt;
| 3:1&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0,45&lt;br /&gt;
| 0,06&lt;br /&gt;
| 0,75&lt;br /&gt;
| #D05006 (dark orange)&lt;br /&gt;
|-&lt;br /&gt;
| {{anchor|clf3}}[[#clf3|CLF3 (Chlorine Trifluoride )]]&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Chlorine Triflouride}}&lt;br /&gt;
| 4:1&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 1,6&lt;br /&gt;
| -0,08&lt;br /&gt;
| -0,8&lt;br /&gt;
| #ff9300 (orange)&lt;br /&gt;
|-&lt;br /&gt;
| [[#methane|Methane]]&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Methane}}&lt;br /&gt;
| 5:1&lt;br /&gt;
| 0,15&lt;br /&gt;
| 0&lt;br /&gt;
| -0,35&lt;br /&gt;
| 0,095&lt;br /&gt;
| 0,25&lt;br /&gt;
| #00a5ff (blue)&lt;br /&gt;
|-&lt;br /&gt;
| {{anchor|ammoniumnitrate}}[[#ammoniumnitrate|Ammonium Nitrate]]&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Ammonium Nitrate}}&lt;br /&gt;
| 2:2&lt;br /&gt;
| 0,4&lt;br /&gt;
| 1,5&lt;br /&gt;
| 0,5&lt;br /&gt;
| 0&lt;br /&gt;
| -0,2&lt;br /&gt;
| #ff9900 (orange)&lt;br /&gt;
|-&lt;br /&gt;
| {{anchor|anfo}}[[#anfo|Ammonium Nitrate Fuel Oil]]&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Ammonium Nitrate Fuel Oil}}&lt;br /&gt;
| 3:2&lt;br /&gt;
| 1&lt;br /&gt;
| -0,6&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| N/A&lt;br /&gt;
|-&lt;br /&gt;
| {{anchor|nitroglycerin}}[[#nitroglycerin|Nitroglycerin]]&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Nitroglycerin}}&lt;br /&gt;
| 3:2&lt;br /&gt;
| 1&lt;br /&gt;
| -0,5&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| N/A&lt;br /&gt;
|-&lt;br /&gt;
| {{anchor|cyclonite}}[[#cyclonite|Cyclonite]]&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Cyclonite}}&lt;br /&gt;
| 2:2&lt;br /&gt;
| 1,5&lt;br /&gt;
| -0,4&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| N/A&lt;br /&gt;
|-&lt;br /&gt;
| {{anchor|octogen}}[[#octogen|Octogen]]&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Octogen}}&lt;br /&gt;
| 4:2&lt;br /&gt;
| 2&lt;br /&gt;
| -0,2&lt;br /&gt;
| 0,4&lt;br /&gt;
| -0,02&lt;br /&gt;
| -0,2&lt;br /&gt;
| Orange &amp;lt;!--I have no clue what the exact hex code is. But it looks orange.--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| {{anchor|potassiumhydroxide}}[[#potassiumhydroxide|Potassium Hydroxide]]&lt;br /&gt;
|&lt;br /&gt;
* Explodes INSTANTLY and can&#039;t be stabilized. Don&#039;t use this. It&#039;s garbage.&lt;br /&gt;
{{:Chemical/Potassium Hydroxide}}&lt;br /&gt;
| 2:1&lt;br /&gt;
| 0,5&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| N/A&lt;br /&gt;
|-&lt;br /&gt;
| [[#phoron|Phoron]]&lt;br /&gt;
| {{:Chemical/Phoron}}&lt;br /&gt;
| N/A&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0,4&lt;br /&gt;
| 0,05&lt;br /&gt;
| -0,8&lt;br /&gt;
| #e01e1e (red)&lt;br /&gt;
|-&lt;br /&gt;
| [[#potassiumchloride|Potassium Chloride]]&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Potassium Chloride}}&lt;br /&gt;
| 2:2&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0,1&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| #800080 (purple)&lt;br /&gt;
|-&lt;br /&gt;
| {{anchor|salt}}[[#salt|Table Salt]]&lt;br /&gt;
| &lt;br /&gt;
{{:Chemical/Table Salt}}&lt;br /&gt;
| 1:1&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0,1&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| #ffff00 (yellow)&lt;br /&gt;
|-&lt;br /&gt;
| {{anchor|stickynapalm}}[[#stickynapalm|Sticky Napalm]]&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/Sticky Napalm}}&lt;br /&gt;
| 1:1&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0,2&lt;br /&gt;
| 0,5&lt;br /&gt;
| 0,5&lt;br /&gt;
| #f8e3b2 (barley white)&lt;br /&gt;
|-&lt;br /&gt;
| {{anchor|hcnapalm}}[[#hcnapalm|High-Combustion Napalm]]&lt;br /&gt;
|&lt;br /&gt;
{{:Chemical/High-Combustion Napalm}}&lt;br /&gt;
| 1:1&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0,8&lt;br /&gt;
| 0,1&lt;br /&gt;
| 0,5&lt;br /&gt;
| #742424 (dark red)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Additional User made information=&lt;br /&gt;
* [https://cm-ss13.com/forums/showthread.php?3414-Magnus-Opus-on-Reasearch-by-Cory-Paulson Magnum Opus on Research] by Cory Paulson&lt;/div&gt;</summary>
		<author><name>Drulikar</name></author>
	</entry>
	<entry>
		<id>https://cm-ss13.com/w/index.php?title=Guide_to_Git&amp;diff=30230</id>
		<title>Guide to Git</title>
		<link rel="alternate" type="text/html" href="https://cm-ss13.com/w/index.php?title=Guide_to_Git&amp;diff=30230"/>
		<updated>2024-03-26T20:54:14Z</updated>

		<summary type="html">&lt;p&gt;Drulikar: Update latest byond version working with language server.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Guide to Git = &lt;br /&gt;
&lt;br /&gt;
== Setting up your Coding Environment ==&lt;br /&gt;
&lt;br /&gt;
Though you can use DreamMaker, and external Git software, for modifying your code and maps, all modern SS13 tooling is set up for Visual Studio Code, so it is highly recommended. You can jump to variable definitions, procs and atoms with ease.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Downloading Visual Studio Code ===&lt;br /&gt;
&lt;br /&gt;
Visual Studio Code is a free code editor (from Microsoft) that you can use to edit, test and publish your code to GitHub. &lt;br /&gt;
&lt;br /&gt;
You can download it from https://code.visualstudio.com/ and run the installer.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Forking the Repository === &lt;br /&gt;
&lt;br /&gt;
Go to https://github.com/cmss13-devs/cmss13, and at the top right, hit “Fork” - you’ll need a GitHub account for this.&lt;br /&gt;
&lt;br /&gt;
[[File:fork.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Follow the prompts that come up, and you’ll have your own copy of the code on GitHub.&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Download Git === &lt;br /&gt;
&lt;br /&gt;
You’ll need Git installed to make any changes to the repository. Download it from https://git-scm.com/downloads. &lt;br /&gt;
&lt;br /&gt;
Then, on Visual Studio Code, under the Source Control tab on the left bar - the third option down, you should be presented with the option to “Clone Repository”. &lt;br /&gt;
&lt;br /&gt;
[[File:clone_repo.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Paste the URL of your fork into the box that pops up - this should be in the format of https://github.com/[YOURUSERNAME]/cmss13. Select a folder to download the repo into, and let it run. It may take awhile.&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Download Extensions ===&lt;br /&gt;
&lt;br /&gt;
These extensions to Visual Studio Code will allow the program to read DreamMaker code intelligently and allow you to navigate through the code faster. &lt;br /&gt;
&lt;br /&gt;
You can get them by clicking on the extensions tab - probably the fourth or fifth option, it looks like three boxes with a fourth being added - and downloading all the “Recommended” extensions.&lt;br /&gt;
&lt;br /&gt;
Also - search for and install GitLens. It makes using the source control features of Visual Studio Code much easier.&lt;br /&gt;
&lt;br /&gt;
[[File:recommended_extensions.png|400px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Configuring Language Client ===&lt;br /&gt;
Debugging features like breakpoints rely on the language server to be installed and working.&lt;br /&gt;
&lt;br /&gt;
* Search for &amp;quot;@enabled Language Client&amp;quot; in extensions&lt;br /&gt;
* Click the gear and then Extension Settings&lt;br /&gt;
* Enable Auto Update&lt;br /&gt;
* Add/update the Byond Path to your BYOND installation folder (will be a folder with unist.exe and 6 other folders)&lt;br /&gt;
* Restart Visual Studio Code&lt;br /&gt;
&lt;br /&gt;
Auto Update will ensure you have the latest version of the language server installed in a temporary folder for Visual Studio Code. A correct path to the BYOND installation folder will allow the language server to compile and parse the code.&lt;br /&gt;
&lt;br /&gt;
NOTE: As of writing, only up to BYOND 515.1633 is functional with the language client server (dm-langserver 1.8.0+19 using auxtools commit: v2.3.3).&lt;br /&gt;
[[File:Language Client Settings.png|655x655px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 6: Finishing Up ===&lt;br /&gt;
&lt;br /&gt;
You’ve now got a complete clone of the CM-SS13 codebase on your local computer!&lt;br /&gt;
&lt;br /&gt;
== Making a Change ==&lt;br /&gt;
&lt;br /&gt;
All changes you make to the code must be done on a new branch. &lt;br /&gt;
&lt;br /&gt;
A branch is another version of your codebase - made from your “master” branch - which should be identical to the “master” branch present on the main repo - which changes can be made to without affecting your “master” branch.&lt;br /&gt;
&lt;br /&gt;
A “commit” is a save of your changes to the code you’ve made. Every time you “commit” your changes to the branch, you are saving all your changes made so far. All code must be “committed” before it can be sent to the main repository.&lt;br /&gt;
&lt;br /&gt;
To start with making changes, you must make a new branch on your forked repository, from your master branch. Your master branch should never be committed to, and should be a clean state.&lt;br /&gt;
&lt;br /&gt;
Every PR you make should have a new branch. This allows for commits you make on different branches to not affect your other branches, letting you work on multiple projects at once.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Making a New Branch ===&lt;br /&gt;
&lt;br /&gt;
Press Control + Shift + P to bring up the Command Pallet. This allows you to control Visual Studio Control easily, but we want the command “Create branch from...”. Type that in and press enter to run it. Give your branch a name - like new-helmet. Select which branch to make it from - that will be your master branch. &lt;br /&gt;
&lt;br /&gt;
[[File:create_branch_from.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Then, switch to this branch. You can do this at the bottom of the Source Control tab, under the Branches title - you might have to click on it to show all your branches. Right click on your new branch, and select the option to switch to it.&lt;br /&gt;
&lt;br /&gt;
[[File:switch_branch.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Now, you can make whatever changes you like, and you can commit them to this branch without altering your master branch.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Modifying the Code ===&lt;br /&gt;
&lt;br /&gt;
Now, if you make any change to any file within the repo, Git will notice and add it to the modified files in the Source Control tab.&lt;br /&gt;
&lt;br /&gt;
You can make a simple change - such as altering an item description - just to see your code changes reflected in game. To find an item, use the Search tab on the left - the magnifying glass - and type in the name or description if the item as it is in game.&lt;br /&gt;
&lt;br /&gt;
[[File:searching.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once you’ve made this change, it’ll be noticed at the top of the Source Control tab.&lt;br /&gt;
&lt;br /&gt;
[[File:changes.png|400px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Testing your Code ===&lt;br /&gt;
&lt;br /&gt;
Press F5 - this will start your code with the debugger attached. This will automatically pause the server and tell you when an error - usually known as a runtime - occurs.&lt;br /&gt;
&lt;br /&gt;
You can press Control-F5 to start without the debugger.&lt;br /&gt;
&lt;br /&gt;
Then, at the bottom right of your Windows interface, click the chevron to view your hidden processes. Click on the green DreamDaemon circle, and you can see the server process that has booted up. Then, on the World tab at the top, press Join. This will log you in to the server, where you will automatically have full Admin permissions.&lt;br /&gt;
&lt;br /&gt;
Find your item in game - or spawn it in with the admin game-panel - and it should have the changes you’ve made in the code. If it doesn’t- you probably didn’t save the file. Terminate the server using the stop button on Visual Studio Code or by right clicking on the DreamDaemon process and pressing Stop.&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Committing your Changes ===&lt;br /&gt;
&lt;br /&gt;
At the top of the Source Control tab, your modified file should be under “Changes”. Hover over the file name you have modified, and press the Plus symbol - or do the same over the Changes button to “stage” your changes.&lt;br /&gt;
&lt;br /&gt;
[[File:example_commit.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once your changes have been “staged”, they have been selected to be committed. You can give it a commit message on the box with “Message”, and press the tick at the top to commit those changes.&lt;br /&gt;
&lt;br /&gt;
[[File:example_stage.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once this has been completed, you’ve committed your changes locally - but they have not been published to your GitHub fork.&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Publishing to GitHub ===&lt;br /&gt;
&lt;br /&gt;
This is quite simple. On the Source Control tab, you should now see the “Publish Branch”. This will publish your branch, along with your changes, to your fork on GitHub. You can navigate to it on the web to see these changes.&lt;br /&gt;
&lt;br /&gt;
[[File:publish_branch.png|400px]]&lt;br /&gt;
&lt;br /&gt;
If you make any further changes to this branch and commit them, you will see the “Sync Changes” option instead. This does the same thing - “pushing” all your changes to your fork on GitHub.&lt;br /&gt;
&lt;br /&gt;
[[File:example_sync.png|400px]]&lt;br /&gt;
&lt;br /&gt;
== Making a Pull Request ==&lt;br /&gt;
&lt;br /&gt;
A “pull request” is a *request* for the main repository to *pull* - or more accurately, merge - the contents of your branch into the master branch. This process allows for code to be tested and reviewed by maintainers/developers, before being merged into the master branch.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Navigating the Web Interface ===&lt;br /&gt;
&lt;br /&gt;
Head to your repository on GitHub - not the main CM-SS13 repo. Then, click on “master” and type in the name of your branch. &lt;br /&gt;
&lt;br /&gt;
[[File:navigating_github_create_pr.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Hit “Contribute” on the right, and it’ll bring up the option to Create Pull Request. Clicking on this automatically sets the merge as being from your branch to the master branch at the main CM-SS13 repository.&lt;br /&gt;
&lt;br /&gt;
[[File:auto_merge.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Hopefully, there&#039;s no merge conflicts, and it gives the happy green &amp;quot;Able to automatically merge&amp;quot; - however, if someone else has changed code you&#039;re changing in your PR after you made the branch for this feature, you&#039;ll need to manually deconflict the files. Read on for more about merge conflicts.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Creating the Pull Request ===&lt;br /&gt;
&lt;br /&gt;
Give your PR a good title - this will be the message of the commit to the main branch containing all your code.&lt;br /&gt;
&lt;br /&gt;
[[File:title.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, fill in the PR description, including a descriptive changelog. Put your BYOND username next to the first :cl: to ensure you are accurately credited.&lt;br /&gt;
&lt;br /&gt;
[[File:changelog.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, hit Create Pull Request (or don’t, if you’re uselessly changing one description as a test). &lt;br /&gt;
&lt;br /&gt;
[[File:create_pull_request.png|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Code Review ===&lt;br /&gt;
&lt;br /&gt;
GitHub will automatically run some tests on your code, which may fail, resulting in you having to change your code. The developers will review your code, and may also request changes. That&#039;ll look like this.&lt;br /&gt;
&lt;br /&gt;
[[File:github_checks.png|800px]]&lt;br /&gt;
&lt;br /&gt;
In order to carry out the changes, simply make the changes on your branch on your local repository, and press “Sync Changes”, this will automatically update the PR.&lt;br /&gt;
&lt;br /&gt;
If a developer has marked your PR as a draft, you will have to mark it as being ready for review. You can do this at the bottom of the web interface on your PR.&lt;br /&gt;
&lt;br /&gt;
== Staying in Sync ==&lt;br /&gt;
&lt;br /&gt;
As other PRs are merged into the repository, your branch will slowly become out of date. This will become an issue over time, as you modify code that has been changed by another recent PR, and you find conflicts that didn’t need to happen.&lt;br /&gt;
&lt;br /&gt;
To avoid this, regularly go to your master branch of your fork on the web interface, and press “Sync fork” and &amp;quot;Update branch&amp;quot;, to add all the commits recently merged to your fork.&lt;br /&gt;
&lt;br /&gt;
[[File:update_branch.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, on Visual Studio Code, you can “Sync Changes” to update your local copy of the master branch.&lt;br /&gt;
&lt;br /&gt;
Do this regularly to ensure you don’t fall out of date with any changes.&lt;br /&gt;
&lt;br /&gt;
= Appendix =&lt;br /&gt;
&lt;br /&gt;
== Merge Conflicts ==&lt;br /&gt;
When your PR is conflicting with master, this means that there are places that both you and someone else have both altered and a decision has to be made to decide what that file or line of code should be. To begin the process to resolve this, you need to merge upstream/master into your branch. (VSC Source control has an Add Remotes option in the Remotes section of Source Control where you can add the link to the .git of the main repository). This will initiate any merge hooks automatically explained more below.&lt;br /&gt;
&lt;br /&gt;
=== Mapping Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Sometimes mapping conflicts can be handled automatically via a merge hook. Install the git hooks in tools/hooks by hitting “Install.bat” (Windows) or &amp;quot;Install.sh&amp;quot; (Linux). Should a single tile be altered by both you and someone else, a mapping conflict marker will be placed in that location that will cause lint errors and yell in chat. This will help during mapping conflicts by marking areas that are conflicting, allowing you to open an editor (such as StrongDMM) to look for the conflict markers and resolve the issue.&lt;br /&gt;
&lt;br /&gt;
Should a conflict like this occur, you should then open the map editor (StrongDMM) and look for the conflict markers. In text, it will look like the conflict has entirely disappeared - but it *hasn’t* - the MapMerger has just automatically dumped everything from the conflicting branches together in a mess that *you* have to fix.&lt;br /&gt;
&lt;br /&gt;
=== DMI (Icon File) Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Just like with mapping conflicts these conflicts can often be handled automatically via a merge hook. Install the git hooks in tools/hooks by hitting “Install.bat” (Windows) or &amp;quot;Install.sh&amp;quot; (Linux). More often than not any new icons that someone else added will just be appended to the end of the file. But if both you and someone else alter the same icon_state of something, that will have to be manually resolved. In this situation just open up the DMI file in either Dreamaker or VSC&#039;s DMI Editor and adjust it as needed. Ultimately use the IDB (Icon Diff Bot) checks to double check you haven&#039;t unintentionally removed a icon_state someone added.&lt;br /&gt;
&lt;br /&gt;
=== Code Conflicts ===&lt;br /&gt;
&lt;br /&gt;
There is no hook to automatically handle code conflicts. Find the conflict markers in conflicting files indicated with a bunch of &amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; and &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;. VSC should make this obvious, and in some cases, deconflict the files itself. Where it fails to do so, you will need to remove the conflict markers and add the code together from both branches as applicable. Be sure to test if the changes work. For more information see https://code.visualstudio.com/docs/sourcecontrol/overview#_merge-conflicts&lt;br /&gt;
&lt;br /&gt;
== Glossary ==&lt;br /&gt;
&lt;br /&gt;
=== Branch ===&lt;br /&gt;
&lt;br /&gt;
A version of your fork that you can freely commit changes to without affecting other branches.&lt;br /&gt;
&lt;br /&gt;
=== Commit ===&lt;br /&gt;
&lt;br /&gt;
A change to a branch, can be of any size from a single space added to one file to completely rewriting the entire repository.&lt;br /&gt;
&lt;br /&gt;
=== Fork ===&lt;br /&gt;
&lt;br /&gt;
A copy of the CM-SS13 repository that you own, and can make whatever changes to that you like without impacting the main repo.&lt;br /&gt;
&lt;br /&gt;
=== Repository ===&lt;br /&gt;
&lt;br /&gt;
Often known as a repo. Ours contains all of the code, maps and assets for CM-SS13.&lt;br /&gt;
&lt;br /&gt;
=== PR ===&lt;br /&gt;
&lt;br /&gt;
Pull Request - a request for the main repository to merge the changes present in one of the branches of your fork into the master branch of the main, upstream repository.&lt;br /&gt;
&lt;br /&gt;
=== Merge ===&lt;br /&gt;
&lt;br /&gt;
Where all the commits from a branch are applied to another branch. For example, merging your origin branch containing a new feature to an upstream master branch.&lt;br /&gt;
&lt;br /&gt;
=== Merge Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Where two branches from separate contributors have touched the same code, when one of them is merged, you will have a conflict preventing automatic merging. This involves manually fitting the code together, allowing both changes to exist without overwriting either.&lt;br /&gt;
&lt;br /&gt;
=== Remote ===&lt;br /&gt;
&lt;br /&gt;
A remote is a version of your repository that is not stored on your computer - such as on GitHub. This includes both your fork and the upstream, main CM-SS13 repo.&lt;br /&gt;
&lt;br /&gt;
=== Origin ===&lt;br /&gt;
&lt;br /&gt;
This will be your fork of the CM-SS13 repository.&lt;br /&gt;
&lt;br /&gt;
=== Upstream ===&lt;br /&gt;
&lt;br /&gt;
The upstream of your fork will be the main CM-SS13 repo. Think of changes flowing down a stream from the main repo to your fork when you “Fetch Upstream”.&lt;br /&gt;
&lt;br /&gt;
=== Git ===&lt;br /&gt;
&lt;br /&gt;
The version control system used by CM-SS13, allowing us to synchronise changes being made by many different contributor - and easily go back if something goes wrong.&lt;br /&gt;
&lt;br /&gt;
=== Diff ===&lt;br /&gt;
&lt;br /&gt;
Shows the changes between the current copy of the code and the new code that you have committed.&lt;br /&gt;
&lt;br /&gt;
=== VSC / VS Code === &lt;br /&gt;
&lt;br /&gt;
Visual Studio Code, the text editor we use for DM development.&lt;/div&gt;</summary>
		<author><name>Drulikar</name></author>
	</entry>
	<entry>
		<id>https://cm-ss13.com/w/index.php?title=Dropship_Pilot&amp;diff=30104</id>
		<title>Dropship Pilot</title>
		<link rel="alternate" type="text/html" href="https://cm-ss13.com/w/index.php?title=Dropship_Pilot&amp;diff=30104"/>
		<updated>2024-03-17T07:51:56Z</updated>

		<summary type="html">&lt;p&gt;Drulikar: Separation of PO&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Pilot_Officer]]&lt;/div&gt;</summary>
		<author><name>Drulikar</name></author>
	</entry>
	<entry>
		<id>https://cm-ss13.com/w/index.php?title=Gunship_Pilot&amp;diff=30103</id>
		<title>Gunship Pilot</title>
		<link rel="alternate" type="text/html" href="https://cm-ss13.com/w/index.php?title=Gunship_Pilot&amp;diff=30103"/>
		<updated>2024-03-17T07:43:06Z</updated>

		<summary type="html">&lt;p&gt;Drulikar: Separation of PO&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Pilot_Officer]]&lt;/div&gt;</summary>
		<author><name>Drulikar</name></author>
	</entry>
	<entry>
		<id>https://cm-ss13.com/w/index.php?title=Lurker&amp;diff=29695</id>
		<title>Lurker</title>
		<link rel="alternate" type="text/html" href="https://cm-ss13.com/w/index.php?title=Lurker&amp;diff=29695"/>
		<updated>2024-02-23T00:48:34Z</updated>

		<summary type="html">&lt;p&gt;Drulikar: /* Vampire */ Updated values to reflect 5625 and 5753&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{XenoPageHeader&lt;br /&gt;
|headerbgcolor = black&lt;br /&gt;
|headerfontcolor = white&lt;br /&gt;
|tiertype = ALIEN - TIER 2&lt;br /&gt;
|imagebgcolor = &lt;br /&gt;
|img = Alien-Warrior.png&lt;br /&gt;
|castetitle = Lurker&lt;br /&gt;
|evolves_from = [[Runner]]&lt;br /&gt;
|evolves_to = [[Ravager]]&lt;br /&gt;
|role = A highly mobile alien which packs a punch, good for ambushing and general harassment of the marines supply lines. &lt;br /&gt;
|guides = No External Guides. &lt;br /&gt;
}}&lt;br /&gt;
== General Information ==&lt;br /&gt;
The &#039;&#039;&#039;Lurker&#039;&#039;&#039; is a large step up from the [[Runner]] that precedes it. What it loses in speed and agility is largely gained in becoming a fearsome and destructive force, capable of &#039;&#039;&#039;effortlessly slaughtering any single [[Marines|tallhost]] that it finds wandering alone&#039;&#039;&#039;, where a Runner might have needed to go for a long, sloppy brawl to secure a kill.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The Lurker is not as fast as the Runner and its &#039;&#039;&#039;&amp;lt;code&amp;gt;Pounce&amp;lt;/code&amp;gt;&#039;&#039;&#039; is more cumbersome, having him pin down his target instead of simply flooring him, as well as the need to be cloaked, for the pounce to actually work. However, its attack quickly becomes devastating, capable of tearing a tallhost apart once subdued, meaning that they will usually stand no chance if caught with their pants down. Its health is nothing to laugh at, although it will still go down quickly if focus fired by a group.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hunt_stalk_HUD.gif|thumb]]The Lurker loses its ability to hide under objects, being a caste of much greater stature, but it gains a fascinating ability to &#039;&#039;&#039;Cloak&#039;&#039;&#039;  on activation, for 30 seconds. While the Cloak is far from perfect and will easily be spotted when moving or hiding on a bright background, it will allow the Lurker to hide in far more spots, and to spring ambushes even in the open if it finds a good spot.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Playing as a Lurker ==&lt;br /&gt;
As a Lurker, you lose your ability to easily dodge attacks in exchange for more solid health and a greater attack. As such, you become more of an ambush caste, with an ability to skirmish and seriously wound tallhosts using hit and run attacks. Your &#039;&#039;&#039;Cloak&#039;&#039;&#039; helps you to set up ambushes, meaning you can wait for the perfect moment to strike instead of making a risky sprint into a potential target, which could reveal an off-screen group accompanying them, a turret, anything that could ruin your day.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
While you keep your ability to &#039;&#039;&#039;&amp;lt;code&amp;gt;Pounce&amp;lt;/code&amp;gt;&#039;&#039;&#039;, it is important to note that its purpose shifted from a disarming pounce that you and the tallhost will recover from quickly, to a disabling pin that will cause both you and your target to be floored for a significant duration, allowing you to tear them apart while they lay defenseless on the floor. This does mean however that pouncing on someone in the middle of a group will almost certainly get you killed, so avoid it at all costs.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Your &#039;&#039;&#039;Cloak&#039;&#039;&#039; is a fantastic tool. While it is not as reliable as the Runner&#039;s Hiding to conceal you for long periods of time, it can allow you to blend into the environment in a pinch to find and subdue a target. The fewer tallhosts expect you, the less they will think to carefully scan their surroundings for that one shimmer in the distance. And remember that cloaking will make you much faster, but it only lasts for 30 seconds. If tallhosts are tracking you down, they will probably see through your cloak unless you find an excellent spot.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Should you find yourself in direct combat, you are still a formidable foe, although you will not take as many shots as your bigger sisters to knock down. It is important that you try and run on the flanks as much as possible, using your Cloak wisely to close the distance without being sprayed down by gunfire from alert and ready Marines.&lt;br /&gt;
&lt;br /&gt;
== Abilities ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible&amp;quot;&lt;br /&gt;
! style=&amp;quot;background-color:#423042;&amp;quot; width=150|&amp;lt;span style=&amp;quot;color:white;&amp;quot;&amp;gt;Abilities:&amp;lt;/span&amp;gt;&lt;br /&gt;
! style=&amp;quot;background-color:#423042;&amp;quot; |&amp;lt;span style=&amp;quot;color:white;&amp;quot;&amp;gt;Description:&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
![[File:Xeno_Rest.png]]&amp;lt;br&amp;gt;Rest&lt;br /&gt;
|Used to rest and get up. Aliens heal faster when resting on weeds.&lt;br /&gt;
|-&lt;br /&gt;
![[File:Regurgitate.png]]&amp;lt;br&amp;gt;Regurgitate&lt;br /&gt;
|{{Devour}}&lt;br /&gt;
|-&lt;br /&gt;
![[File:Pounce.png]]&amp;lt;br&amp;gt;Pounce&lt;br /&gt;
|Pounce at target, pining the victim on the ground and causes them to drop their weapons, but only if you are invisible. Lasts longer than a Runner&#039;s pounce, but also makes you immobile for a short duration while you pin the target down.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Costs 10 plasma, cooldown: 7 seconds.&lt;br /&gt;
|-&lt;br /&gt;
![[File:Turn-Invisible.png]]&amp;lt;br&amp;gt;Turn Invisible&lt;br /&gt;
|Turns you partially invisible for 30 (thirty) seconds. While invisible, your movement speed is drastically increased. The further you are from friendly a alien, the faster you are. If you attack or pounce on a target, your invisibility will wear off. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Costs 10 plasma, cooldown: 30 seconds.&lt;br /&gt;
|-&lt;br /&gt;
![[File:Crippling-Strike.png]]&amp;lt;br&amp;gt;Crippling Strike&lt;br /&gt;
|The next target you slash will receive extra damage and be slowed down. This will only work on resting targets. If you attack a target standing while the ability is active, it will use up the strike and the target won&#039;t receive extra damage nor the slow down.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Costs 50 plasma, cooldown: 12 seconds.&lt;br /&gt;
{{Tail Stab}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Attainable Strains==&lt;br /&gt;
{| style=&amp;quot;border: 2px solid black;&lt;br /&gt;
 ! style=&amp;quot;background-color:#423042; text-align:center;&amp;quot;|&#039;&#039;&#039;Strain:&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width:125px; border: 2px solid black; border-bottom: 2px solid black; padding: 5px; text-align:center;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;[[Strains|Vampire]]&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
===Strain Abilities===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Vampire====&lt;br /&gt;
* &#039;&#039;&#039;Health&#039;&#039;&#039;: 390&lt;br /&gt;
* &#039;&#039;&#039;Armor&#039;&#039;&#039;: 20&lt;br /&gt;
* &#039;&#039;&#039;Slightly faster movement speed - just under that of a cloaked lurker, but always active.&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible&amp;quot;&lt;br /&gt;
! style=&amp;quot;background-color:#423042;&amp;quot; width=150|&amp;lt;span style=&amp;quot;color:white;&amp;quot;&amp;gt;Abilities:&amp;lt;/span&amp;gt;&lt;br /&gt;
! style=&amp;quot;background-color:#423042;&amp;quot; |&amp;lt;span style=&amp;quot;color:white;&amp;quot;&amp;gt;Description:&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
![[File:Pounce.png]] &amp;lt;br&amp;gt; Rush&lt;br /&gt;
|A four-tile pounce that causes your targets screen to shake. This ability does not stun them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cooldown: 6 seconds.&lt;br /&gt;
|-&lt;br /&gt;
![[File:Spike_spray.png]]&amp;lt;br&amp;gt;Flurry&lt;br /&gt;
|An attack that has a range of 1x3 tiles, dealing 30 damage per target and healing you for 30 HP. A short slow is also applied to you upon landing it. This will hit a random limb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cooldown: 3 seconds.&lt;br /&gt;
|-&lt;br /&gt;
![[File:Pierce.png]]&amp;lt;br&amp;gt;Tail Jab&lt;br /&gt;
|An attack dealing 30 damage to the chest, alongside pushing the target back. If you click on the sprite of your target with it, it will deal an extra 15, for a total of 45 damage to the chest, alongside throwing them back. If they impact an obstacle such as a wall, window, door or barricade, they will take more damage and will temporarily be stunned.&lt;br /&gt;
(Note: for utility can instantly break windows).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cooldown: 7 seconds.&lt;br /&gt;
|-&lt;br /&gt;
![[File:Headbite_Ability_Icon.png]]&amp;lt;br&amp;gt;Headbite&lt;br /&gt;
|A high-damage attack that bypasses all armor, instantly killing your target and healing you for 150 HP. Requires your target to be unconscious and adjacent to you, and has a 0.8 second windup before it will hit them.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Lurker Tactics ==&lt;br /&gt;
* Your &#039;&#039;&#039;Cloak&#039;&#039;&#039; is best used when stationary and on a dark background. Moving will not make you any more visible, but humans will have a far easier time spotting your shimmer if it&#039;s moving across tiles. Darkness also works fairly well in concealing you, although it is not necessary. Since the tiling used in colonies is often bright outside of bathrooms, maintenance areas, and high-security areas, you might have trouble finding spots to hide in buildings.&lt;br /&gt;
&lt;br /&gt;
* Isolated targets are in essence free kills for you. A single Pounce will disarm them and floor them for long enough for you to start the fight with a handful of slashes. At this point, they might have a window to fight back, but they will undoubtedly be wounded. Make a simple evasive maneuver to avoid CQC weapons like buckshot shotguns and pounce again, and you should have them in the bag.&lt;br /&gt;
&lt;br /&gt;
* If you do need to brawl against a group, or partake in a massive fight, only use your Pounce for evasive maneuvers, and use your regular speed to get close to Marines and slash them. Of course, it is heavily recommended to approach from the rear or sides.&lt;br /&gt;
&lt;br /&gt;
*Your pounce can be used to quickly cover distance, and will let you leap into windows immediately instead of having to climb on top of them. While still not as smooth as a runner simply running over it, this will allow you to travel faster. Be careful though, pouncing into a window frame will stop your movement, so if you do it to attack a host behind it will cause you to stop on the frame. If your target has a shotgun this can end very poorly for you.&lt;br /&gt;
&lt;br /&gt;
== Lurker Evolution ==&lt;br /&gt;
&lt;br /&gt;
Lurkers can only &#039;&#039;&#039;Evolve&#039;&#039;&#039; into one possible caste, being the Ravager:&lt;br /&gt;
&lt;br /&gt;
* The [[Ravager]] is the ultimate combat form of the [[Runner]]&#039;s evolution tree. While it loses some more speed, it grows into a large and powerful Alien, capable of utterly destroying humans even under fire. Your Pounce will no longer pin tallhosts, instead of knocking them off their feet, allowing you to come in for a devastating blow immediately. Your attacks also gain an increased damage, allowing you to unleash devastating blows. You also gain some resistance to explosive stuns (depending on the strain) and immunity to damage from fire, allowing you to engage into fights that would be ill-advised to even the most seasoned Lurkers.&lt;br /&gt;
&lt;br /&gt;
== Lurker Stats ==&lt;br /&gt;
{{XenoSkills&lt;br /&gt;
|meleelow=4&lt;br /&gt;
|meleehigh=4&lt;br /&gt;
|health=5&lt;br /&gt;
|plasmaregen=8&lt;br /&gt;
|plasma=4&lt;br /&gt;
|explosiveresist=2&lt;br /&gt;
|speed=8&lt;br /&gt;
}}&lt;br /&gt;
You can learn more about alien stats [[Xenomorph Stats|here]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Alien Castes]]&lt;/div&gt;</summary>
		<author><name>Drulikar</name></author>
	</entry>
	<entry>
		<id>https://cm-ss13.com/w/index.php?title=Guide_to_Git&amp;diff=29379</id>
		<title>Guide to Git</title>
		<link rel="alternate" type="text/html" href="https://cm-ss13.com/w/index.php?title=Guide_to_Git&amp;diff=29379"/>
		<updated>2024-02-03T22:32:25Z</updated>

		<summary type="html">&lt;p&gt;Drulikar: /* Mapping Conflicts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Guide to Git = &lt;br /&gt;
&lt;br /&gt;
== Setting up your Coding Environment ==&lt;br /&gt;
&lt;br /&gt;
Though you can use DreamMaker, and external Git software, for modifying your code and maps, all modern SS13 tooling is set up for Visual Studio Code, so it is highly recommended. You can jump to variable definitions, procs and atoms with ease.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Downloading Visual Studio Code ===&lt;br /&gt;
&lt;br /&gt;
Visual Studio Code is a free code editor (from Microsoft) that you can use to edit, test and publish your code to GitHub. &lt;br /&gt;
&lt;br /&gt;
You can download it from https://code.visualstudio.com/ and run the installer.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Forking the Repository === &lt;br /&gt;
&lt;br /&gt;
Go to https://github.com/cmss13-devs/cmss13, and at the top right, hit “Fork” - you’ll need a GitHub account for this.&lt;br /&gt;
&lt;br /&gt;
[[File:fork.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Follow the prompts that come up, and you’ll have your own copy of the code on GitHub.&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Download Git === &lt;br /&gt;
&lt;br /&gt;
You’ll need Git installed to make any changes to the repository. Download it from https://git-scm.com/downloads. &lt;br /&gt;
&lt;br /&gt;
Then, on Visual Studio Code, under the Source Control tab on the left bar - the third option down, you should be presented with the option to “Clone Repository”. &lt;br /&gt;
&lt;br /&gt;
[[File:clone_repo.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Paste the URL of your fork into the box that pops up - this should be in the format of https://github.com/[YOURUSERNAME]/cmss13. Select a folder to download the repo into, and let it run. It may take awhile.&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Download Extensions ===&lt;br /&gt;
&lt;br /&gt;
These extensions to Visual Studio Code will allow the program to read DreamMaker code intelligently and allow you to navigate through the code faster. &lt;br /&gt;
&lt;br /&gt;
You can get them by clicking on the extensions tab - probably the fourth or fifth option, it looks like three boxes with a fourth being added - and downloading all the “Recommended” extensions.&lt;br /&gt;
&lt;br /&gt;
Also - search for and install GitLens. It makes using the source control features of Visual Studio Code much easier.&lt;br /&gt;
&lt;br /&gt;
[[File:recommended_extensions.png|400px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Configuring Language Client ===&lt;br /&gt;
Debugging features like breakpoints rely on the language server to be installed and working.&lt;br /&gt;
&lt;br /&gt;
* Search for &amp;quot;@enabled Language Client&amp;quot; in extensions&lt;br /&gt;
* Click the gear and then Extension Settings&lt;br /&gt;
* Enable Auto Update&lt;br /&gt;
* Add/update the Byond Path to your BYOND installation folder (will be a folder with unist.exe and 6 other folders)&lt;br /&gt;
* Restart Visual Studio Code&lt;br /&gt;
&lt;br /&gt;
Auto Update will ensure you have the latest version of the language server installed in a temporary folder for Visual Studio Code. A correct path to the BYOND installation folder will allow the language server to compile and parse the code.&lt;br /&gt;
&lt;br /&gt;
NOTE: As of writing, only up to BYOND 514.1589 is functional with the language client server.&lt;br /&gt;
[[File:Language Client Settings.png|655x655px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 6: Finishing Up ===&lt;br /&gt;
&lt;br /&gt;
You’ve now got a complete clone of the CM-SS13 codebase on your local computer!&lt;br /&gt;
&lt;br /&gt;
== Making a Change ==&lt;br /&gt;
&lt;br /&gt;
All changes you make to the code must be done on a new branch. &lt;br /&gt;
&lt;br /&gt;
A branch is another version of your codebase - made from your “master” branch - which should be identical to the “master” branch present on the main repo - which changes can be made to without affecting your “master” branch.&lt;br /&gt;
&lt;br /&gt;
A “commit” is a save of your changes to the code you’ve made. Every time you “commit” your changes to the branch, you are saving all your changes made so far. All code must be “committed” before it can be sent to the main repository.&lt;br /&gt;
&lt;br /&gt;
To start with making changes, you must make a new branch on your forked repository, from your master branch. Your master branch should never be committed to, and should be a clean state.&lt;br /&gt;
&lt;br /&gt;
Every PR you make should have a new branch. This allows for commits you make on different branches to not affect your other branches, letting you work on multiple projects at once.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Making a New Branch ===&lt;br /&gt;
&lt;br /&gt;
Press Control + Shift + P to bring up the Command Pallet. This allows you to control Visual Studio Control easily, but we want the command “Create branch from...”. Type that in and press enter to run it. Give your branch a name - like new-helmet. Select which branch to make it from - that will be your master branch. &lt;br /&gt;
&lt;br /&gt;
[[File:create_branch_from.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Then, switch to this branch. You can do this at the bottom of the Source Control tab, under the Branches title - you might have to click on it to show all your branches. Right click on your new branch, and select the option to switch to it.&lt;br /&gt;
&lt;br /&gt;
[[File:switch_branch.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Now, you can make whatever changes you like, and you can commit them to this branch without altering your master branch.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Modifying the Code ===&lt;br /&gt;
&lt;br /&gt;
Now, if you make any change to any file within the repo, Git will notice and add it to the modified files in the Source Control tab.&lt;br /&gt;
&lt;br /&gt;
You can make a simple change - such as altering an item description - just to see your code changes reflected in game. To find an item, use the Search tab on the left - the magnifying glass - and type in the name or description if the item as it is in game.&lt;br /&gt;
&lt;br /&gt;
[[File:searching.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once you’ve made this change, it’ll be noticed at the top of the Source Control tab.&lt;br /&gt;
&lt;br /&gt;
[[File:changes.png|400px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Testing your Code ===&lt;br /&gt;
&lt;br /&gt;
Press F5 - this will start your code with the debugger attached. This will automatically pause the server and tell you when an error - usually known as a runtime - occurs.&lt;br /&gt;
&lt;br /&gt;
You can press Control-F5 to start without the debugger.&lt;br /&gt;
&lt;br /&gt;
Then, at the bottom right of your Windows interface, click the chevron to view your hidden processes. Click on the green DreamDaemon circle, and you can see the server process that has booted up. Then, on the World tab at the top, press Join. This will log you in to the server, where you will automatically have full Admin permissions.&lt;br /&gt;
&lt;br /&gt;
Find your item in game - or spawn it in with the admin game-panel - and it should have the changes you’ve made in the code. If it doesn’t- you probably didn’t save the file. Terminate the server using the stop button on Visual Studio Code or by right clicking on the DreamDaemon process and pressing Stop.&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Committing your Changes ===&lt;br /&gt;
&lt;br /&gt;
At the top of the Source Control tab, your modified file should be under “Changes”. Hover over the file name you have modified, and press the Plus symbol - or do the same over the Changes button to “stage” your changes.&lt;br /&gt;
&lt;br /&gt;
[[File:example_commit.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once your changes have been “staged”, they have been selected to be committed. You can give it a commit message on the box with “Message”, and press the tick at the top to commit those changes.&lt;br /&gt;
&lt;br /&gt;
[[File:example_stage.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once this has been completed, you’ve committed your changes locally - but they have not been published to your GitHub fork.&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Publishing to GitHub ===&lt;br /&gt;
&lt;br /&gt;
This is quite simple. On the Source Control tab, you should now see the “Publish Branch”. This will publish your branch, along with your changes, to your fork on GitHub. You can navigate to it on the web to see these changes.&lt;br /&gt;
&lt;br /&gt;
[[File:publish_branch.png|400px]]&lt;br /&gt;
&lt;br /&gt;
If you make any further changes to this branch and commit them, you will see the “Sync Changes” option instead. This does the same thing - “pushing” all your changes to your fork on GitHub.&lt;br /&gt;
&lt;br /&gt;
[[File:example_sync.png|400px]]&lt;br /&gt;
&lt;br /&gt;
== Making a Pull Request ==&lt;br /&gt;
&lt;br /&gt;
A “pull request” is a *request* for the main repository to *pull* - or more accurately, merge - the contents of your branch into the master branch. This process allows for code to be tested and reviewed by maintainers/developers, before being merged into the master branch.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Navigating the Web Interface ===&lt;br /&gt;
&lt;br /&gt;
Head to your repository on GitHub - not the main CM-SS13 repo. Then, click on “master” and type in the name of your branch. &lt;br /&gt;
&lt;br /&gt;
[[File:navigating_github_create_pr.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Hit “Contribute” on the right, and it’ll bring up the option to Create Pull Request. Clicking on this automatically sets the merge as being from your branch to the master branch at the main CM-SS13 repository.&lt;br /&gt;
&lt;br /&gt;
[[File:auto_merge.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Hopefully, there&#039;s no merge conflicts, and it gives the happy green &amp;quot;Able to automatically merge&amp;quot; - however, if someone else has changed code you&#039;re changing in your PR after you made the branch for this feature, you&#039;ll need to manually deconflict the files. Read on for more about merge conflicts.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Creating the Pull Request ===&lt;br /&gt;
&lt;br /&gt;
Give your PR a good title - this will be the message of the commit to the main branch containing all your code.&lt;br /&gt;
&lt;br /&gt;
[[File:title.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, fill in the PR description, including a descriptive changelog. Put your BYOND username next to the first :cl: to ensure you are accurately credited.&lt;br /&gt;
&lt;br /&gt;
[[File:changelog.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, hit Create Pull Request (or don’t, if you’re uselessly changing one description as a test). &lt;br /&gt;
&lt;br /&gt;
[[File:create_pull_request.png|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Code Review ===&lt;br /&gt;
&lt;br /&gt;
GitHub will automatically run some tests on your code, which may fail, resulting in you having to change your code. The developers will review your code, and may also request changes. That&#039;ll look like this.&lt;br /&gt;
&lt;br /&gt;
[[File:github_checks.png|800px]]&lt;br /&gt;
&lt;br /&gt;
In order to carry out the changes, simply make the changes on your branch on your local repository, and press “Sync Changes”, this will automatically update the PR.&lt;br /&gt;
&lt;br /&gt;
If a developer has marked your PR as a draft, you will have to mark it as being ready for review. You can do this at the bottom of the web interface on your PR.&lt;br /&gt;
&lt;br /&gt;
== Staying in Sync ==&lt;br /&gt;
&lt;br /&gt;
As other PRs are merged into the repository, your branch will slowly become out of date. This will become an issue over time, as you modify code that has been changed by another recent PR, and you find conflicts that didn’t need to happen.&lt;br /&gt;
&lt;br /&gt;
To avoid this, regularly go to your master branch of your fork on the web interface, and press “Sync fork” and &amp;quot;Update branch&amp;quot;, to add all the commits recently merged to your fork.&lt;br /&gt;
&lt;br /&gt;
[[File:update_branch.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, on Visual Studio Code, you can “Sync Changes” to update your local copy of the master branch.&lt;br /&gt;
&lt;br /&gt;
Do this regularly to ensure you don’t fall out of date with any changes.&lt;br /&gt;
&lt;br /&gt;
= Appendix =&lt;br /&gt;
&lt;br /&gt;
== Merge Conflicts ==&lt;br /&gt;
When your PR is conflicting with master, this means that there are places that both you and someone else have both altered and a decision has to be made to decide what that file or line of code should be. To begin the process to resolve this, you need to merge upstream/master into your branch. (VSC Source control has an Add Remotes option in the Remotes section of Source Control where you can add the link to the .git of the main repository). This will initiate any merge hooks automatically explained more below.&lt;br /&gt;
&lt;br /&gt;
=== Mapping Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Sometimes mapping conflicts can be handled automatically via a merge hook. Install the git hooks in tools/hooks by hitting “Install.bat” (Windows) or &amp;quot;Install.sh&amp;quot; (Linux). Should a single tile be altered by both you and someone else, a mapping conflict marker will be placed in that location that will cause lint errors and yell in chat. This will help during mapping conflicts by marking areas that are conflicting, allowing you to open an editor (such as StrongDMM) to look for the conflict markers and resolve the issue.&lt;br /&gt;
&lt;br /&gt;
Should a conflict like this occur, you should then open the map editor (StrongDMM) and look for the conflict markers. In text, it will look like the conflict has entirely disappeared - but it *hasn’t* - the MapMerger has just automatically dumped everything from the conflicting branches together in a mess that *you* have to fix.&lt;br /&gt;
&lt;br /&gt;
=== DMI (Icon File) Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Just like with mapping conflicts these conflicts can often be handled automatically via a merge hook. Install the git hooks in tools/hooks by hitting “Install.bat” (Windows) or &amp;quot;Install.sh&amp;quot; (Linux). More often than not any new icons that someone else added will just be appended to the end of the file. But if both you and someone else alter the same icon_state of something, that will have to be manually resolved. In this situation just open up the DMI file in either Dreamaker or VSC&#039;s DMI Editor and adjust it as needed. Ultimately use the IDB (Icon Diff Bot) checks to double check you haven&#039;t unintentionally removed a icon_state someone added.&lt;br /&gt;
&lt;br /&gt;
=== Code Conflicts ===&lt;br /&gt;
&lt;br /&gt;
There is no hook to automatically handle code conflicts. Find the conflict markers in conflicting files indicated with a bunch of &amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; and &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;. VSC should make this obvious, and in some cases, deconflict the files itself. Where it fails to do so, you will need to remove the conflict markers and add the code together from both branches as applicable. Be sure to test if the changes work. For more information see https://code.visualstudio.com/docs/sourcecontrol/overview#_merge-conflicts&lt;br /&gt;
&lt;br /&gt;
== Glossary ==&lt;br /&gt;
&lt;br /&gt;
=== Branch ===&lt;br /&gt;
&lt;br /&gt;
A version of your fork that you can freely commit changes to without affecting other branches.&lt;br /&gt;
&lt;br /&gt;
=== Commit ===&lt;br /&gt;
&lt;br /&gt;
A change to a branch, can be of any size from a single space added to one file to completely rewriting the entire repository.&lt;br /&gt;
&lt;br /&gt;
=== Fork ===&lt;br /&gt;
&lt;br /&gt;
A copy of the CM-SS13 repository that you own, and can make whatever changes to that you like without impacting the main repo.&lt;br /&gt;
&lt;br /&gt;
=== Repository ===&lt;br /&gt;
&lt;br /&gt;
Often known as a repo. Ours contains all of the code, maps and assets for CM-SS13.&lt;br /&gt;
&lt;br /&gt;
=== PR ===&lt;br /&gt;
&lt;br /&gt;
Pull Request - a request for the main repository to merge the changes present in one of the branches of your fork into the master branch of the main, upstream repository.&lt;br /&gt;
&lt;br /&gt;
=== Merge ===&lt;br /&gt;
&lt;br /&gt;
Where all the commits from a branch are applied to another branch. For example, merging your origin branch containing a new feature to an upstream master branch.&lt;br /&gt;
&lt;br /&gt;
=== Merge Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Where two branches from separate contributors have touched the same code, when one of them is merged, you will have a conflict preventing automatic merging. This involves manually fitting the code together, allowing both changes to exist without overwriting either.&lt;br /&gt;
&lt;br /&gt;
=== Remote ===&lt;br /&gt;
&lt;br /&gt;
A remote is a version of your repository that is not stored on your computer - such as on GitHub. This includes both your fork and the upstream, main CM-SS13 repo.&lt;br /&gt;
&lt;br /&gt;
=== Origin ===&lt;br /&gt;
&lt;br /&gt;
This will be your fork of the CM-SS13 repository.&lt;br /&gt;
&lt;br /&gt;
=== Upstream ===&lt;br /&gt;
&lt;br /&gt;
The upstream of your fork will be the main CM-SS13 repo. Think of changes flowing down a stream from the main repo to your fork when you “Fetch Upstream”.&lt;br /&gt;
&lt;br /&gt;
=== Git ===&lt;br /&gt;
&lt;br /&gt;
The version control system used by CM-SS13, allowing us to synchronise changes being made by many different contributor - and easily go back if something goes wrong.&lt;br /&gt;
&lt;br /&gt;
=== Diff ===&lt;br /&gt;
&lt;br /&gt;
Shows the changes between the current copy of the code and the new code that you have committed.&lt;br /&gt;
&lt;br /&gt;
=== VSC / VS Code === &lt;br /&gt;
&lt;br /&gt;
Visual Studio Code, the text editor we use for DM development.&lt;/div&gt;</summary>
		<author><name>Drulikar</name></author>
	</entry>
	<entry>
		<id>https://cm-ss13.com/w/index.php?title=Guide_to_Git&amp;diff=29378</id>
		<title>Guide to Git</title>
		<link rel="alternate" type="text/html" href="https://cm-ss13.com/w/index.php?title=Guide_to_Git&amp;diff=29378"/>
		<updated>2024-02-03T22:27:46Z</updated>

		<summary type="html">&lt;p&gt;Drulikar: Elaborated on merge conflicts and added information about DMI conflicts.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Guide to Git = &lt;br /&gt;
&lt;br /&gt;
== Setting up your Coding Environment ==&lt;br /&gt;
&lt;br /&gt;
Though you can use DreamMaker, and external Git software, for modifying your code and maps, all modern SS13 tooling is set up for Visual Studio Code, so it is highly recommended. You can jump to variable definitions, procs and atoms with ease.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Downloading Visual Studio Code ===&lt;br /&gt;
&lt;br /&gt;
Visual Studio Code is a free code editor (from Microsoft) that you can use to edit, test and publish your code to GitHub. &lt;br /&gt;
&lt;br /&gt;
You can download it from https://code.visualstudio.com/ and run the installer.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Forking the Repository === &lt;br /&gt;
&lt;br /&gt;
Go to https://github.com/cmss13-devs/cmss13, and at the top right, hit “Fork” - you’ll need a GitHub account for this.&lt;br /&gt;
&lt;br /&gt;
[[File:fork.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Follow the prompts that come up, and you’ll have your own copy of the code on GitHub.&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Download Git === &lt;br /&gt;
&lt;br /&gt;
You’ll need Git installed to make any changes to the repository. Download it from https://git-scm.com/downloads. &lt;br /&gt;
&lt;br /&gt;
Then, on Visual Studio Code, under the Source Control tab on the left bar - the third option down, you should be presented with the option to “Clone Repository”. &lt;br /&gt;
&lt;br /&gt;
[[File:clone_repo.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Paste the URL of your fork into the box that pops up - this should be in the format of https://github.com/[YOURUSERNAME]/cmss13. Select a folder to download the repo into, and let it run. It may take awhile.&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Download Extensions ===&lt;br /&gt;
&lt;br /&gt;
These extensions to Visual Studio Code will allow the program to read DreamMaker code intelligently and allow you to navigate through the code faster. &lt;br /&gt;
&lt;br /&gt;
You can get them by clicking on the extensions tab - probably the fourth or fifth option, it looks like three boxes with a fourth being added - and downloading all the “Recommended” extensions.&lt;br /&gt;
&lt;br /&gt;
Also - search for and install GitLens. It makes using the source control features of Visual Studio Code much easier.&lt;br /&gt;
&lt;br /&gt;
[[File:recommended_extensions.png|400px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Configuring Language Client ===&lt;br /&gt;
Debugging features like breakpoints rely on the language server to be installed and working.&lt;br /&gt;
&lt;br /&gt;
* Search for &amp;quot;@enabled Language Client&amp;quot; in extensions&lt;br /&gt;
* Click the gear and then Extension Settings&lt;br /&gt;
* Enable Auto Update&lt;br /&gt;
* Add/update the Byond Path to your BYOND installation folder (will be a folder with unist.exe and 6 other folders)&lt;br /&gt;
* Restart Visual Studio Code&lt;br /&gt;
&lt;br /&gt;
Auto Update will ensure you have the latest version of the language server installed in a temporary folder for Visual Studio Code. A correct path to the BYOND installation folder will allow the language server to compile and parse the code.&lt;br /&gt;
&lt;br /&gt;
NOTE: As of writing, only up to BYOND 514.1589 is functional with the language client server.&lt;br /&gt;
[[File:Language Client Settings.png|655x655px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 6: Finishing Up ===&lt;br /&gt;
&lt;br /&gt;
You’ve now got a complete clone of the CM-SS13 codebase on your local computer!&lt;br /&gt;
&lt;br /&gt;
== Making a Change ==&lt;br /&gt;
&lt;br /&gt;
All changes you make to the code must be done on a new branch. &lt;br /&gt;
&lt;br /&gt;
A branch is another version of your codebase - made from your “master” branch - which should be identical to the “master” branch present on the main repo - which changes can be made to without affecting your “master” branch.&lt;br /&gt;
&lt;br /&gt;
A “commit” is a save of your changes to the code you’ve made. Every time you “commit” your changes to the branch, you are saving all your changes made so far. All code must be “committed” before it can be sent to the main repository.&lt;br /&gt;
&lt;br /&gt;
To start with making changes, you must make a new branch on your forked repository, from your master branch. Your master branch should never be committed to, and should be a clean state.&lt;br /&gt;
&lt;br /&gt;
Every PR you make should have a new branch. This allows for commits you make on different branches to not affect your other branches, letting you work on multiple projects at once.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Making a New Branch ===&lt;br /&gt;
&lt;br /&gt;
Press Control + Shift + P to bring up the Command Pallet. This allows you to control Visual Studio Control easily, but we want the command “Create branch from...”. Type that in and press enter to run it. Give your branch a name - like new-helmet. Select which branch to make it from - that will be your master branch. &lt;br /&gt;
&lt;br /&gt;
[[File:create_branch_from.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Then, switch to this branch. You can do this at the bottom of the Source Control tab, under the Branches title - you might have to click on it to show all your branches. Right click on your new branch, and select the option to switch to it.&lt;br /&gt;
&lt;br /&gt;
[[File:switch_branch.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Now, you can make whatever changes you like, and you can commit them to this branch without altering your master branch.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Modifying the Code ===&lt;br /&gt;
&lt;br /&gt;
Now, if you make any change to any file within the repo, Git will notice and add it to the modified files in the Source Control tab.&lt;br /&gt;
&lt;br /&gt;
You can make a simple change - such as altering an item description - just to see your code changes reflected in game. To find an item, use the Search tab on the left - the magnifying glass - and type in the name or description if the item as it is in game.&lt;br /&gt;
&lt;br /&gt;
[[File:searching.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once you’ve made this change, it’ll be noticed at the top of the Source Control tab.&lt;br /&gt;
&lt;br /&gt;
[[File:changes.png|400px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Testing your Code ===&lt;br /&gt;
&lt;br /&gt;
Press F5 - this will start your code with the debugger attached. This will automatically pause the server and tell you when an error - usually known as a runtime - occurs.&lt;br /&gt;
&lt;br /&gt;
You can press Control-F5 to start without the debugger.&lt;br /&gt;
&lt;br /&gt;
Then, at the bottom right of your Windows interface, click the chevron to view your hidden processes. Click on the green DreamDaemon circle, and you can see the server process that has booted up. Then, on the World tab at the top, press Join. This will log you in to the server, where you will automatically have full Admin permissions.&lt;br /&gt;
&lt;br /&gt;
Find your item in game - or spawn it in with the admin game-panel - and it should have the changes you’ve made in the code. If it doesn’t- you probably didn’t save the file. Terminate the server using the stop button on Visual Studio Code or by right clicking on the DreamDaemon process and pressing Stop.&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Committing your Changes ===&lt;br /&gt;
&lt;br /&gt;
At the top of the Source Control tab, your modified file should be under “Changes”. Hover over the file name you have modified, and press the Plus symbol - or do the same over the Changes button to “stage” your changes.&lt;br /&gt;
&lt;br /&gt;
[[File:example_commit.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once your changes have been “staged”, they have been selected to be committed. You can give it a commit message on the box with “Message”, and press the tick at the top to commit those changes.&lt;br /&gt;
&lt;br /&gt;
[[File:example_stage.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Once this has been completed, you’ve committed your changes locally - but they have not been published to your GitHub fork.&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Publishing to GitHub ===&lt;br /&gt;
&lt;br /&gt;
This is quite simple. On the Source Control tab, you should now see the “Publish Branch”. This will publish your branch, along with your changes, to your fork on GitHub. You can navigate to it on the web to see these changes.&lt;br /&gt;
&lt;br /&gt;
[[File:publish_branch.png|400px]]&lt;br /&gt;
&lt;br /&gt;
If you make any further changes to this branch and commit them, you will see the “Sync Changes” option instead. This does the same thing - “pushing” all your changes to your fork on GitHub.&lt;br /&gt;
&lt;br /&gt;
[[File:example_sync.png|400px]]&lt;br /&gt;
&lt;br /&gt;
== Making a Pull Request ==&lt;br /&gt;
&lt;br /&gt;
A “pull request” is a *request* for the main repository to *pull* - or more accurately, merge - the contents of your branch into the master branch. This process allows for code to be tested and reviewed by maintainers/developers, before being merged into the master branch.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Navigating the Web Interface ===&lt;br /&gt;
&lt;br /&gt;
Head to your repository on GitHub - not the main CM-SS13 repo. Then, click on “master” and type in the name of your branch. &lt;br /&gt;
&lt;br /&gt;
[[File:navigating_github_create_pr.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Hit “Contribute” on the right, and it’ll bring up the option to Create Pull Request. Clicking on this automatically sets the merge as being from your branch to the master branch at the main CM-SS13 repository.&lt;br /&gt;
&lt;br /&gt;
[[File:auto_merge.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Hopefully, there&#039;s no merge conflicts, and it gives the happy green &amp;quot;Able to automatically merge&amp;quot; - however, if someone else has changed code you&#039;re changing in your PR after you made the branch for this feature, you&#039;ll need to manually deconflict the files. Read on for more about merge conflicts.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Creating the Pull Request ===&lt;br /&gt;
&lt;br /&gt;
Give your PR a good title - this will be the message of the commit to the main branch containing all your code.&lt;br /&gt;
&lt;br /&gt;
[[File:title.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, fill in the PR description, including a descriptive changelog. Put your BYOND username next to the first :cl: to ensure you are accurately credited.&lt;br /&gt;
&lt;br /&gt;
[[File:changelog.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, hit Create Pull Request (or don’t, if you’re uselessly changing one description as a test). &lt;br /&gt;
&lt;br /&gt;
[[File:create_pull_request.png|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Code Review ===&lt;br /&gt;
&lt;br /&gt;
GitHub will automatically run some tests on your code, which may fail, resulting in you having to change your code. The developers will review your code, and may also request changes. That&#039;ll look like this.&lt;br /&gt;
&lt;br /&gt;
[[File:github_checks.png|800px]]&lt;br /&gt;
&lt;br /&gt;
In order to carry out the changes, simply make the changes on your branch on your local repository, and press “Sync Changes”, this will automatically update the PR.&lt;br /&gt;
&lt;br /&gt;
If a developer has marked your PR as a draft, you will have to mark it as being ready for review. You can do this at the bottom of the web interface on your PR.&lt;br /&gt;
&lt;br /&gt;
== Staying in Sync ==&lt;br /&gt;
&lt;br /&gt;
As other PRs are merged into the repository, your branch will slowly become out of date. This will become an issue over time, as you modify code that has been changed by another recent PR, and you find conflicts that didn’t need to happen.&lt;br /&gt;
&lt;br /&gt;
To avoid this, regularly go to your master branch of your fork on the web interface, and press “Sync fork” and &amp;quot;Update branch&amp;quot;, to add all the commits recently merged to your fork.&lt;br /&gt;
&lt;br /&gt;
[[File:update_branch.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Then, on Visual Studio Code, you can “Sync Changes” to update your local copy of the master branch.&lt;br /&gt;
&lt;br /&gt;
Do this regularly to ensure you don’t fall out of date with any changes.&lt;br /&gt;
&lt;br /&gt;
= Appendix =&lt;br /&gt;
&lt;br /&gt;
== Merge Conflicts ==&lt;br /&gt;
When your PR is conflicting with master, this means that there are places that both you and someone else have both altered and a decision has to be made to decide what that file or line of code should be. To begin the process to resolve this, you need to merge upstream/master into your branch. (VSC Source control has an Add Remotes option in the Remotes section of Source Control where you can add the link to the .git of the main repository). This will initiate any merge hooks automatically explained more below.&lt;br /&gt;
&lt;br /&gt;
=== Mapping Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Sometimes mapping conflicts can be handled automatically via a merge hook. Install the git hooks in tools/hooks by hitting “Install.bat” (Windows) or &amp;quot;Install.sh&amp;quot; (Linux). Should a single tile be altered by both you and someone else, a mapping conflict marker will be placed in that location that will cause lint errors and yell in chat. This will help during mapping conflicts by marking areas that are conflicting, allowing you to open an editor (such as StrongDMM), look for the conflict markers and resolve the issue.&lt;br /&gt;
&lt;br /&gt;
Should a conflict like this occur, you should then open the map editor (StrongDMM) and look for the conflict markers. In text, it will look like the conflict has entirely disappeared - but it *hasn’t* - the MapMerger has just automatically dumped everything from the conflicting branches together in a mess that *you* have to fix.&lt;br /&gt;
&lt;br /&gt;
=== DMI (Icon File) Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Just like with mapping conflicts these conflicts can often be handled automatically via a merge hook. Install the git hooks in tools/hooks by hitting “Install.bat” (Windows) or &amp;quot;Install.sh&amp;quot; (Linux). More often than not any new icons that someone else added will just be appended to the end of the file. But if both you and someone else alter the same icon_state of something, that will have to be manually resolved. In this situation just open up the DMI file in either Dreamaker or VSC&#039;s DMI Editor and adjust it as needed. Ultimately use the IDB (Icon Diff Bot) checks to double check you haven&#039;t unintentionally removed a icon_state someone added.&lt;br /&gt;
&lt;br /&gt;
=== Code Conflicts ===&lt;br /&gt;
&lt;br /&gt;
There is no hook to automatically handle code conflicts. Find the conflict markers in conflicting files indicated with a bunch of &amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; and &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;. VSC should make this obvious, and in some cases, deconflict the files itself. Where it fails to do so, you will need to remove the conflict markers and add the code together from both branches as applicable. Be sure to test if the changes work. For more information see https://code.visualstudio.com/docs/sourcecontrol/overview#_merge-conflicts&lt;br /&gt;
&lt;br /&gt;
== Glossary ==&lt;br /&gt;
&lt;br /&gt;
=== Branch ===&lt;br /&gt;
&lt;br /&gt;
A version of your fork that you can freely commit changes to without affecting other branches.&lt;br /&gt;
&lt;br /&gt;
=== Commit ===&lt;br /&gt;
&lt;br /&gt;
A change to a branch, can be of any size from a single space added to one file to completely rewriting the entire repository.&lt;br /&gt;
&lt;br /&gt;
=== Fork ===&lt;br /&gt;
&lt;br /&gt;
A copy of the CM-SS13 repository that you own, and can make whatever changes to that you like without impacting the main repo.&lt;br /&gt;
&lt;br /&gt;
=== Repository ===&lt;br /&gt;
&lt;br /&gt;
Often known as a repo. Ours contains all of the code, maps and assets for CM-SS13.&lt;br /&gt;
&lt;br /&gt;
=== PR ===&lt;br /&gt;
&lt;br /&gt;
Pull Request - a request for the main repository to merge the changes present in one of the branches of your fork into the master branch of the main, upstream repository.&lt;br /&gt;
&lt;br /&gt;
=== Merge ===&lt;br /&gt;
&lt;br /&gt;
Where all the commits from a branch are applied to another branch. For example, merging your origin branch containing a new feature to an upstream master branch.&lt;br /&gt;
&lt;br /&gt;
=== Merge Conflicts ===&lt;br /&gt;
&lt;br /&gt;
Where two branches from separate contributors have touched the same code, when one of them is merged, you will have a conflict preventing automatic merging. This involves manually fitting the code together, allowing both changes to exist without overwriting either.&lt;br /&gt;
&lt;br /&gt;
=== Remote ===&lt;br /&gt;
&lt;br /&gt;
A remote is a version of your repository that is not stored on your computer - such as on GitHub. This includes both your fork and the upstream, main CM-SS13 repo.&lt;br /&gt;
&lt;br /&gt;
=== Origin ===&lt;br /&gt;
&lt;br /&gt;
This will be your fork of the CM-SS13 repository.&lt;br /&gt;
&lt;br /&gt;
=== Upstream ===&lt;br /&gt;
&lt;br /&gt;
The upstream of your fork will be the main CM-SS13 repo. Think of changes flowing down a stream from the main repo to your fork when you “Fetch Upstream”.&lt;br /&gt;
&lt;br /&gt;
=== Git ===&lt;br /&gt;
&lt;br /&gt;
The version control system used by CM-SS13, allowing us to synchronise changes being made by many different contributor - and easily go back if something goes wrong.&lt;br /&gt;
&lt;br /&gt;
=== Diff ===&lt;br /&gt;
&lt;br /&gt;
Shows the changes between the current copy of the code and the new code that you have committed.&lt;br /&gt;
&lt;br /&gt;
=== VSC / VS Code === &lt;br /&gt;
&lt;br /&gt;
Visual Studio Code, the text editor we use for DM development.&lt;/div&gt;</summary>
		<author><name>Drulikar</name></author>
	</entry>
	<entry>
		<id>https://cm-ss13.com/w/index.php?title=Surgery&amp;diff=29132</id>
		<title>Surgery</title>
		<link rel="alternate" type="text/html" href="https://cm-ss13.com/w/index.php?title=Surgery&amp;diff=29132"/>
		<updated>2024-01-21T02:16:46Z</updated>

		<summary type="html">&lt;p&gt;Drulikar: Added information about Surgery Failure Penalties.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Tools of the Trade ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tool&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
|[[File:1Scalpel.png]]&amp;lt;br&amp;gt;&#039;&#039;&#039;{{anchor|Scalpel}}[[#Scalpel|Scalpel]]&#039;&#039;&#039;||Used for cutting through flesh. Has three laser-augmented variants of differing quality, each with a percentage chance to create a bloodless incision instead.&amp;lt;br&amp;gt;&#039;&#039;&#039;Improvised equivalents:&#039;&#039;&#039; PICT system[[File:The_PICT System.png|32px]], bayonet[[File:Autowiki-M5 &#039;Night Raider&#039; bayonet.png|32px]], kitchen knife[[File:Kitchen_Knife.png|32px]], or glass shard[[File:Shard.png|32px]]&lt;br /&gt;
|-&lt;br /&gt;
|[[File:1Incision_manager.png|64px]]&amp;lt;br&amp;gt;&#039;&#039;&#039;{{anchor|Incision Management System}}[[#Incision Management System|Incision Management System]] (IMS)&#039;&#039;&#039;||Used for cutting through flesh, skips bleeder clamping and organ rearranging. Basically acts as a scalpel, hemostat, and retractor in one step during the initial incision. Only functions as a scalpel in steps after the first. (Available in the surgical theatre on Solaris Ridge)&lt;br /&gt;
|-&lt;br /&gt;
|[[File:1Hemostat.png]]&amp;lt;br&amp;gt;&#039;&#039;&#039;{{anchor|Hemostat}}[[#Hemostat|Hemostat]]&#039;&#039;&#039;||Used to stop bleeding during an operation, or to remove foreign and undesirable objects from a patient&#039;s body. Also used to repair the brain by removing chips of bone from grey matter.&amp;lt;br&amp;gt;&#039;&#039;&#039;Improvised equivalents:&#039;&#039;&#039; wirecutters[[File:Wirecutters.png|32px]] for all of the above uses, a kitchen fork [[File:Kitchen Fork.png|32px]] for removing objects and brain repair, or cable coil [[File:CableCoils.png|32px]] if you are only trying to clamp bleeders during an operation.&lt;br /&gt;
|-&lt;br /&gt;
|[[File:1Bone Setter.png]]&amp;lt;br&amp;gt;&#039;&#039;&#039;{{anchor|Bone Setter}}[[#Bone Setter|Bone Setter]]&#039;&#039;&#039;||Used for setting bones back into place. If used on a bone that is not broken then you will break it.&amp;lt;br&amp;gt;&#039;&#039;&#039;Improvised equivalents:&#039;&#039;&#039; wrench[[File:Wrench.png|32px]] or maintenance jack[[File:Maintenance Jack.png|32px]]&lt;br /&gt;
|-&lt;br /&gt;
|[[File:1Bone-Gel.png]]&amp;lt;br&amp;gt;&#039;&#039;&#039;{{anchor|Bone Gel}}[[#Bone Gel|Bone Gel]]&#039;&#039;&#039;||Used for repairing broken/shattered bones, both in case of fracture and resealing cut ribcages &amp;amp; skulls.&amp;lt;br&amp;gt;&#039;&#039;&#039;Improvised equivalents:&#039;&#039;&#039; screwdriver[[File:Screwdriver.png|32px]]&lt;br /&gt;
|-&lt;br /&gt;
|[[File:1Retractor.png]]&amp;lt;br&amp;gt;&#039;&#039;&#039;{{anchor|Retractor}}[[#Retractor|Retractor]]&#039;&#039;&#039;||Used for widening incisions and re-arranging organs, and moving cut ribcages &amp;amp; skulls. &#039;&#039;&#039;Most scalpels and scalpel substitutes can widen incisions in place of a retractor or one of its substitutes, albeit at a much slower rate.&#039;&#039;&#039; When prying open bones, there is a small chance that the ribcage or skull will suffer a fracture even if this step is performed correctly. &amp;lt;br&amp;gt;&#039;&#039;&#039;Improvised equivalents:&#039;&#039;&#039; crowbar[[File:Crowbar.png|32px|]] or maintenance jack[[File:Maintenance Jack.png|32px]]&lt;br /&gt;
|-&lt;br /&gt;
|[[File:1Cautery.png]]&amp;lt;br&amp;gt;&#039;&#039;&#039;{{anchor|Cautery}}[[#Cautery|Cautery]]&#039;&#039;&#039;||Used for sealing incisions in a patients skin. Burns skin together.&amp;lt;br&amp;gt;&#039;&#039;&#039;Improvised equivalents:&#039;&#039;&#039; cigarette[[File:Cig.png|32px]], lighter[[File:Lighter.png|32px]], or blowtorch[[File:Welder.gif|32px]]&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Fixovein.png]]&amp;lt;br&amp;gt;&#039;&#039;&#039;{{anchor|Fix-O-Vein}}[[#Fix-O-Vein|Fix-O-Vein]]&#039;&#039;&#039;||Used for repairing veins and arteries, treating internal bleeding in the process. Also used to repair hematoma in the brain, treating severe brain damage.&amp;lt;br&amp;gt;&#039;&#039;&#039;Improvised equivalents:&#039;&#039;&#039; surgical line[[File:Surgical Line.png|32px]] or cable coil[[File:CableCoils.png|32px]]&lt;br /&gt;
|-&lt;br /&gt;
|[[File:1Saw.png]]&amp;lt;br&amp;gt;&#039;&#039;&#039;{{anchor|Circular Saw}}[[#Circular Saw|Circular Saw]]&#039;&#039;&#039;||Used for cutting through bones, particularly those in the ribcage and skull. Performing a bone cutting step on &#039;&#039;&#039;disarm&#039;&#039;&#039; intent will instantly complete the step at the cost of a guaranteed fracture to that region.&amp;lt;br&amp;gt;&#039;&#039;&#039;Improvised equivalents:&#039;&#039;&#039; bayonet[[File:Autowiki-M5 &#039;Night Raider&#039; bayonet.png|32px]], hatchet[[File:Hatchet.png|32px|]] , or machete[[File:Machete.png|32px]]&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Advtraumakit.png|64px]]&amp;lt;br&amp;gt;&#039;&#039;&#039;{{anchor|Advanced Trauma Kit}}[[#Advanced Trauma Kit|Advanced Trauma Kit]]&#039;&#039;&#039;||Used to repair all organs except for the brain and eyes.&amp;lt;br&amp;gt;&#039;&#039;&#039;Improvised equivalents:&#039;&#039;&#039; roll of gauze[[File:Gauze.png|32px]]&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Surgical Line.png|64px]]&amp;lt;br&amp;gt;&#039;&#039;&#039;{{anchor|Surgical Line}}[[#Surgical Line|Surgical Line]]&#039;&#039;&#039;||Used to suture damaged flesh together, treating excessive brute damage. It can also be used to close incisions in place of a cautery.&amp;lt;br&amp;gt;&#039;&#039;&#039;Improvised equivalents:&#039;&#039;&#039; Fix-O-Vein[[File:Fixovein.png|32px]] or cable coil [[File:CableCoils.png|32px]]&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Synth_Graft.png|64px]]&amp;lt;br&amp;gt;&#039;&#039;&#039;{{anchor|Synth Graft}}[[#SynthGraft|Synth-Graft]]&#039;&#039;&#039;||Used to graft severely burned flesh, treating excessive burn damage.&amp;lt;br&amp;gt;&#039;&#039;&#039;No improvised equivalents.&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|[[File:The_PICT System.png|64px]]&amp;lt;br&amp;gt;&#039;&#039;&#039;{{anchor|PICT Systerm}}[[#PICT Systerm|PICT System]]&#039;&#039;&#039;||The Precision Incision and Cauterization Tool uses a high-frequency vibrating blade, laser cautery, and suction liquid control system to precisely sever target tissues while preventing all fluid leakage. Despite its troubled development program and horrifying pricetag, outside of complex experimental surgeries it isn&#039;t any better than an ordinary twenty-dollar scalpel and can&#039;t create a full-length incision bloodlessly.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Improvised equivalents:&#039;&#039;&#039; scalpel[[File:1Scalpel.png|32px]] and all scalpel substitutes (see above)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Surgical Drill.png|64px]]&amp;lt;br&amp;gt;&#039;&#039;&#039;{{anchor|Surgical Drill}}[[#Surgical Drill|Surgical Drill]]&#039;&#039;&#039;||Used to open holes in the thoracic wall to access implant cavities, whether implanting a new object from scratch or removing a deeply-embedded foreign body (such as a monkey cube...)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Improvised equivalents:&#039;&#039;&#039; a pen or a metal rod&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
* Improvised tools perform surgery slower compared to their ideal counterparts and apply a risk of failure mitigated by your surgical skill. The severity of the speed penalty scales on how unsuited the tool is. A bayonet is a much better substitute for a scalpel than a glass shard, for example.&lt;br /&gt;
* In addition to the speed penalty, an improvised PICT will spray acidic blood all over you and your patient, dealing burn damage to the patient&#039;s body as well as significant organ damage to the heart, lungs, and liver.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Preparing for Surgery ==&lt;br /&gt;
=== Tools ===&lt;br /&gt;
Before you begin to operate, you should make sure you have all the tools you will need. Occasionally a surgeon will accidentally pocket a tool, or a deploying field surgeon will grab tools out of an operating theatre.&lt;br /&gt;
&lt;br /&gt;
Specifically designed surgical tools are the best, but there are a variety of substitutes; some tools can be used outside of their intended role, and others can be replaced with improvised substitutes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
* The equipment on the Almayer is adequate, but sometimes marines will find better tools while deployed. If someone asks if you&#039;d like an Incision Management System, the correct answer is &amp;quot;yes please&amp;quot;.&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Surgical Surface===&lt;br /&gt;
The second requirement is a place to work. Some surgeries can be performed on a standing patient, and it doesn&#039;t matter where you perform them. Most, however, need a decent surface to work on.&lt;br /&gt;
&lt;br /&gt;
The patient doesn&#039;t necessarily need to be buckled - having them on the same tile will do. However the speed modifier is not applied if they aren&#039;t buckled. &lt;br /&gt;
If a surface isn&#039;t ideal, the surgery will take longer - and possibly a lot longer.&lt;br /&gt;
&lt;br /&gt;
Locations, namely medical tents, can also provide some benefits to the surgery speed and pain reduction required.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
* The ideal surface for surgery is a proper operating table. [[File:Operating_Table.png|32px]] This is designed for surgery and has a built-in anesthetic system for patients buckled to it. &#039;&#039;&#039;This is the only surface that can be used for extracting xenomorph larvae.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* The next best thing is a portable surgical bed. [[File:FieldSurgicalBed.png|32px]]&lt;br /&gt;
&lt;br /&gt;
* The surfaces that are better than nothing are beds, [[File:Bed.png|32px]] roller beds, [[File:RollerBed.png|32px]] tables, [[File:Table.png|32px]] and window frames. [[File:Window_Frame.png|32px]]&lt;br /&gt;
&lt;br /&gt;
* The worst surfaces are floors and Med-Evac stretchers, [[File:Med_Evac_Stretcher.png|32px]] which are not designed for surgery, and trying to work with their fittings in their way is as hard as no surface at all.&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Surgery Failure Penalties ===&lt;br /&gt;
Improvised tools and poor working conditions contribute to a penalty system that increases the risk of failure, but this penalty is mitigated by your surgical skill.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tool Suitability&lt;br /&gt;
!Penalty&lt;br /&gt;
!&lt;br /&gt;
!Surface Suitability&lt;br /&gt;
!Penalty&lt;br /&gt;
!&lt;br /&gt;
!Skill Compensation&lt;br /&gt;
!Penalty&lt;br /&gt;
!&lt;br /&gt;
!Penalties&lt;br /&gt;
!Chance of Failure&lt;br /&gt;
|-&lt;br /&gt;
|Ideal&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|Ideal&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|Novice&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|0%&lt;br /&gt;
|-&lt;br /&gt;
|Suboptimal&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|Adequate&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|Trained&lt;br /&gt;
| -1&lt;br /&gt;
|&lt;br /&gt;
|1&lt;br /&gt;
|5%&lt;br /&gt;
|-&lt;br /&gt;
|Subsitute&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|Unsuited&lt;br /&gt;
|1&lt;br /&gt;
|&lt;br /&gt;
|Expert&lt;br /&gt;
| -3&lt;br /&gt;
|&lt;br /&gt;
|2&lt;br /&gt;
|25%&lt;br /&gt;
|-&lt;br /&gt;
|Bad Substitue&lt;br /&gt;
|1&lt;br /&gt;
|&lt;br /&gt;
|Awful&lt;br /&gt;
|2&lt;br /&gt;
|&lt;br /&gt;
|Max&lt;br /&gt;
| -3&lt;br /&gt;
|&lt;br /&gt;
|3+&lt;br /&gt;
|50%&lt;br /&gt;
|-&lt;br /&gt;
|Awful&lt;br /&gt;
|2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
For example, performing internal bleeding surgery, skipping clamp bleeders step, by a corpsman on a roller:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Step&lt;br /&gt;
!Tool Penalties&lt;br /&gt;
!Surface Penalties&lt;br /&gt;
!Skill Mitigation&lt;br /&gt;
!Total Penalties&lt;br /&gt;
!Chance of Failure&lt;br /&gt;
|-&lt;br /&gt;
|Knife - Incision (Pre-op)&lt;br /&gt;
|0 (Subsitute)&lt;br /&gt;
| - (Lying not required)&lt;br /&gt;
|0 (Novice)&lt;br /&gt;
|0&lt;br /&gt;
|0%&lt;br /&gt;
|-&lt;br /&gt;
|Knife - Expose (Pre-op)&lt;br /&gt;
|2 (Awful)&lt;br /&gt;
| - (Lying not required)&lt;br /&gt;
|0 (Novice)&lt;br /&gt;
|2&lt;br /&gt;
|25%&lt;br /&gt;
|-&lt;br /&gt;
|Surgical Line - Fix Vein (IB)&lt;br /&gt;
|0 (Subsitute)&lt;br /&gt;
|1 (Unsuited)&lt;br /&gt;
|0 (Novice)&lt;br /&gt;
|1&lt;br /&gt;
|5%&lt;br /&gt;
|-&lt;br /&gt;
|Surgical Line - Suture (Post-op)&lt;br /&gt;
|0 (Ideal)&lt;br /&gt;
| - (Lying not required)&lt;br /&gt;
|0 (Novice)&lt;br /&gt;
|0&lt;br /&gt;
|0%&lt;br /&gt;
|}&lt;br /&gt;
For example, performing internal bleeding surgery, skipping clamp bleeders step, by a surgeon on a roller:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Step&lt;br /&gt;
!Tool Penalties&lt;br /&gt;
!Surface Penalties&lt;br /&gt;
!Skill Mitigation&lt;br /&gt;
!Total Penalties&lt;br /&gt;
!Chance of Failure&lt;br /&gt;
|-&lt;br /&gt;
|Shard - Incision (Pre-op)&lt;br /&gt;
|2 (Awful)&lt;br /&gt;
| - (Lying not required)&lt;br /&gt;
| -1 (Trained)&lt;br /&gt;
|1&lt;br /&gt;
|5%&lt;br /&gt;
|-&lt;br /&gt;
|Shard - Expose (Pre-op)&lt;br /&gt;
|2 (Awful)&lt;br /&gt;
| - (Lying not required)&lt;br /&gt;
| -1 (Trained)&lt;br /&gt;
|1&lt;br /&gt;
|5%&lt;br /&gt;
|-&lt;br /&gt;
|Surgical Line - Fix Vein (IB)&lt;br /&gt;
|0 (Subsitute)&lt;br /&gt;
|1 (Unsuited)&lt;br /&gt;
| -1 (Trained)&lt;br /&gt;
|0&lt;br /&gt;
|0%&lt;br /&gt;
|-&lt;br /&gt;
|Surgical Line - Suture (Post-op)&lt;br /&gt;
|0 (Ideal)&lt;br /&gt;
| - (Lying not required)&lt;br /&gt;
| -1 (Trained)&lt;br /&gt;
| -1&lt;br /&gt;
|0%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Anesthetic ===&lt;br /&gt;
Surgery is a painful experience, and patients find it difficult to hold still while feeling someone cut into their flesh, which tends to frustrate everyone involved. There are two ways around this: an unconscious (or dead) patient, or powerful painkillers.&lt;br /&gt;
&lt;br /&gt;
Anesthetic (with tank and mask or using the surgery table&#039;s integrated anesthesia setup) is a simple and reliable way to render your patient unconscious.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
* if the patient&#039;s lungs are ruptured, they will occasionally not breath in the anesthetic. Depending on the damage to the lungs, they will either occasionally breath in the anesthetic or it won&#039;t work at all. Therefore, you will have to give the patient the anesthetic via Injection, until his lungs are not ruptured anymore.&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Operating Table ====&lt;br /&gt;
If you are using an operating table, place your patient on the table (grab your patient, then click the table with your grabbing hand selected). Then buckle them to it to connect the anaesthetic system (click hold and drag the patient to the operating table). After a short delay, your patient will be under general anaesthetic, which will allow you to operate safely.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
*The operating table must have an anaesthetic tank attached to be able to put your patient to sleep.&lt;br /&gt;
&lt;br /&gt;
* Click on the surgery table with an anaesthetic tank in hand to insert one.&lt;br /&gt;
&lt;br /&gt;
* Click on the table with an empty hand when no patient is buckled to it to remove an existing one.&lt;br /&gt;
&lt;br /&gt;
* If the tank runs out, simply replace it with a new one.&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Anesthetic Tank and Medical Mask ====&lt;br /&gt;
If there is no available operating table then you can make the patient wear an anesthetic tank and medical mask and turn on its internals. Encourage your patient to don and activate the tank and mask themselves, as this is much faster than doing it yourself.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
* It is advisable to remove the anesthetic tank and medical mask during the cauterizing step for maximum efficiency; the anesthetic takes a few seconds to wear off.&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Painkillers ====&lt;br /&gt;
If you don&#039;t have anesthetic equipment or you just want to save time, you can give your patients [[Chemistry#Oxycodone|Oxycodone]] for quick surgeries without anesthetic  (15-20U recommended). You will need to work quickly, though, as it wears off.&lt;br /&gt;
&lt;br /&gt;
Different surgeries cause different amounts of pain. If Oxycodone isn&#039;t available, some painkillers are much better than none; a mixture of [[Chemistry#Tramadol|Tramadol]], [[Chemistry#Inaprovaline|Inaprovaline]] or [[Chemistry#Paracetamol|Paracetamol]] (Paracetamol and Tramadol are toxic when mixed - do not give them simultaneously) will make them less likely to flinch. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
* Use your medical scanner to monitor your patient&#039;s painkiller levels and re-dose as necessary. Using painkillers instead of anesthetics can cause distress in the patient (screaming over the radio about getting operated on without anesthetics, standing up and trying to leave or fight back).&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now that the preparations are done, you can begin with the actual surgery.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Surgeries ==&lt;br /&gt;
Surgeries are simple processes with a series of steps. Once these steps are memorized it should become effortless and routine to perform. Keep in mind that once you have mastery over the basics, it&#039;s a good idea to aim to be as fast and efficient as possible due to the importance of recycling casualties back into the fight, or even preventing them from dying in the case of [[#Foreign Object/Alien Embryo Removal|Foreign Object/Alien Embryo Removal]].&lt;br /&gt;
&lt;br /&gt;
To perform surgery on someone, you must Toggle the Surgery Mode to be On. This can be bound to a hotkey in preferences. [[File:Surgery Button.png|32px]]&lt;br /&gt;
This will toggle the Help-Intent Safety preference, if you didn&#039;t have it already, preventing you from accidentally hurting people with objects when on help intent. You will be forced on to {{Intent|Help}} intent (top left, {{Key press|1}}) [[File:Intent-Wheel.gif]], which allows you to perform any surgeries.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
* The patient must not be wearing any armor.&lt;br /&gt;
&lt;br /&gt;
* Only one surgery can be performed on a given aim-location at a time.&lt;br /&gt;
&lt;br /&gt;
* Once you complete a step in a surgery, you must finish the surgery before you can begin a different one.&lt;br /&gt;
&lt;br /&gt;
* Failing or cancelling the first attempted step doesn&#039;t injure the patient unless done deliberately.&lt;br /&gt;
&lt;br /&gt;
* Some steps can be skipped, if the conditions are right, sometimes including the first step.&lt;br /&gt;
&lt;br /&gt;
* If you are in a rush, attempting surgery steps on {{Intent|Disarm}} intent (top right, {{Key press|2}}) [[File:Intent-Wheel.gif]] deliberately fails the step. For a handful of specific steps, this will quickly and violently complete the step at the expense of your patient&#039;s health. Useful when you need to do a critical surgery very quickly, or to save time if you&#039;re certain you know what you&#039;re doing. It isn&#039;t necessary to switch back to Help intent afterwards - that happens automatically. (You can use disarm intent to skip the widening incision with Scalpel or break the rib with Circular Saw)&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Standing Patients and Self-Surgery ===&lt;br /&gt;
Some surgeries can be performed on a patient who&#039;s standing up. These surgeries aren&#039;t affected by the surface under the patient. These are marked as &#039;&#039;&#039;(STANDING)&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Some surgeries can be performed on yourself. As you need to be able to hold tools while you work, this means they have to be able to be performed on a standing patient, since people who&#039;re lying down can&#039;t handle objects. These are marked as &#039;&#039;&#039;(SELF)&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
* If you&#039;re trying to work on a standing patient and can&#039;t begin a surgery that you know you should be able to, make sure that it doesn&#039;t need them to be lying down.&lt;br /&gt;
&lt;br /&gt;
* Since it&#039;s difficult and awkward to work on your own body, self-surgery takes longer to do.&lt;br /&gt;
&lt;br /&gt;
* You can&#039;t perform surgery on the same arm you&#039;re holding the tool with.&lt;br /&gt;
&lt;br /&gt;
* Self-surgery requires you to use painkillers rather than anesthesia, since it&#039;s hard to work when unconscious.&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Required Skills ===&lt;br /&gt;
Your character&#039;s training affects how quickly they can work and mitigates risk of failure due to improvised tool or unsuitable working condition penalties.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some surgeries can be performed by anyone with any surgical training, but others need a more thorough education.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Medics, nurses, and pilot officers all have basic surgical training and can perform simple level 1 surgeries.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Doctors, chief medical officers, and synthetic units have more skills and can perform level 1 and level 2 surgeries. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may occasionally see Professor DUMMY, the medical mannequin. This is a sophisticated training tool designed to realistically simulate any wound. Real patients are more difficult to perform surgery on - a medic may be able to set Professor DUMMY&#039;s broken ribs, but that doesn&#039;t mean they can do it on a real patient in the field. (You can create an ahelp to ask admins to spawn you in a Professor DUMMY)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Level 1 Surgeries ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Surgery:&lt;br /&gt;
!Description:&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|Suture wound}}[[#Suture Wound|Suture Wound]] (Everywhere except mouth/eyes.) &#039;&#039;&#039;(STANDING - SELF)&#039;&#039;&#039;&lt;br /&gt;
|Suture and tend a wound that has brute or burn damage on it. This will heal 10 brute on the targeted area when a surgical line is used, and will heal 10 burn if a synth graft is used. This will loop until half of all damage on the area has been fixed.&lt;br /&gt;
*Tend to the damaged brute wound. [[File:Surgical Line.png|64px|link=|Surgical Line]]&lt;br /&gt;
*Tend to the damaged burn wound. [[File:Synth_Graft.png|64px|link=|Synth Graft]]&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|Foreign Object Removal}}[[#Foreign Objectl|Foreign Object]] (Everywhere except mouth/eyes.)&lt;br /&gt;
|Removal of unknown objects, such as shrapnel or implants from the body.&lt;br /&gt;
*Incision Management System.  [[File:1Incision_manager.png|32px|link=|Incision Management System]] &#039;&#039;&#039;OR&#039;&#039;&#039; Open the incision. ([[File:1Scalpel.png|32px|link=|Scalpel]]-&amp;gt;[[File:1Hemostat.png|32px|link=|Hemostat]]-&amp;gt;[[File:1Retractor.png|32px|link=|Retractor]])&lt;br /&gt;
*Fish out the foreign objects until they are all removed. ([[File:1Hemostat.png|32px|link=|Hemostat]])&lt;br /&gt;
*Close the incision ([[File:1Cautery.png|32px|link=|Cautery]])&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|Sealing a Stump}}[[#Sealing a Stump|Sealing a Stump]] (Severed Arms and Legs)&lt;br /&gt;
|Sealing a stump where the patient&#039;s arm or leg should have been.&lt;br /&gt;
**Seal the stump. ([[File:1Scalpel.png|32px|link=|Scalpel]]-&amp;gt;[[File:Fixovein.png|32px|link=|Fix-ovein]] -&amp;gt;[[File:Surgical Line.png|32px|link=|Surgical Line]])&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|Autopsy}}[[#Autopsy|Autopsy]] (Only on Permanently Dead)&lt;br /&gt;
|Helps find out how the person died. Displays wounds, possible causes, and detected chemicals in the body.&lt;br /&gt;
*&#039;&#039;&#039;This surgery is of minimal priority and should only be done if you have literally nothing better to do. This is a combat operation, not a funeral parlor.&#039;&#039;&#039;&lt;br /&gt;
*Aim for the affected area on the deceased using the Hud-target&lt;br /&gt;
*Cut the skin open ([[File:1Scalpel.png|32px|link=|Scalpel]]) (the chest may require two cuts).&lt;br /&gt;
*Use the autopsy scanner to scan the area. ([[File: Autopsy_scanner.png|32px]])&lt;br /&gt;
*Repeat scalpel and scan procedure for all affected areas. ([[File:1Scalpel.png|32px|link=|Scalpel]]-&amp;gt;[[File: Autopsy_scanner.png|32px]])&lt;br /&gt;
*Right click the autopsy scanner to print out autopsy data. ([[File: Autopsy_scanner.png|32px]])&lt;br /&gt;
*Close the incision &lt;br /&gt;
|-&lt;br /&gt;
([[File:1Cautery.png|32px|link=|Cautery]]) (optional)&lt;br /&gt;
|{{anchor|Internal Bleeding Surgery}}[[#Internal Bleeding Surgery|Internal Bleeding Surgery]] (Everywhere except mouth/eyes.)&lt;br /&gt;
|This surgery mends the torn/ripped arteries and veins within the body to stop internal bleeding.&lt;br /&gt;
*Incision Management System.  [[File:1Incision_manager.png|32px|link=|Incision Management System]] &#039;&#039;&#039;OR&#039;&#039;&#039; Open the incision. ([[File:1Scalpel.png|32px|link=|Scalpel]]-&amp;gt;[[File:1Hemostat.png|32px|link=|Hemostat]]-&amp;gt;[[File:1Retractor.png|32px|link=|Retractor]])&lt;br /&gt;
*Mend the artery. ([[File:Fixovein.png|32px|link=|Fix-o-Vein]])&lt;br /&gt;
*Close the incision. ([[File:1Cautery.png|32px|link=|Cautery]])&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Level 2 Surgeries ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Surgery:&lt;br /&gt;
!Description:&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|Alien Embryo Removal}}[[#Alien Embryo Removal|Alien Embryo Removal]]&lt;br /&gt;
|Removal of an alien embryo from the body.&lt;br /&gt;
*&#039;&#039;&#039;This must be performed on an operating table&#039;&#039;&#039;.&lt;br /&gt;
*&#039;&#039;&#039;Alien embryos will always be in the chest behind the ribcage. Time is of the essence when removing them, and you must complete this surgery as quickly as possible; your patient will die instantly when it finishes gestating, resulting in the birth of an alien larva. Make haste in removing any embryos.&lt;br /&gt;
*Incision Management System.  [[File:1Incision_manager.png|32px|link=|Incision Management System]] &#039;&#039;&#039;OR&#039;&#039;&#039; Open the incision. ([[File:1Scalpel.png|32px|link=|Scalpel]]-&amp;gt;[[File:1Hemostat.png|32px|link=|Hemostat]]-&amp;gt;[[File:1Retractor.png|32px|link=|Retractor]])&lt;br /&gt;
*Open the skull or ribcage if necessary. ([[File:1Saw.png|32px|link=|Bone Saw]]-&amp;gt;[[File:1Retractor.png|32px|link=|Retractor]])&lt;br /&gt;
*Cut away the larva&#039;s pseudoroots.([[File:The_PICT System.png|32px|link=|PICT System]]) &#039;&#039;&#039;OR&#039;&#039;&#039; use ([[File:1Scalpel.png|32px|link=|Scalpel]]) (very much not recommended, as it deals burn damage to yourself and the patient).&lt;br /&gt;
*Pull out the alien embryo. ([[File:1Hemostat.png|32px|link=|Hemostat]]) &#039;&#039;&#039;OR&#039;&#039;&#039; use your hands (not recommended).&lt;br /&gt;
*Close the ribcage.([[File:1Retractor.png|32px|link=|Retractor]]-&amp;gt;[[File:1Bone-Gel.png|32px|link|Bone Gel]]).&lt;br /&gt;
*Close the incision ([[File:1Cautery.png|32px|link=|Cautery]])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|Bone Repair Surgery}}[[#Bone Repair Surgery|Bone Repair Surgery]] (Everywhere except mouth/eyes.)&lt;br /&gt;
|This surgery is used for mending broken bones and fractures.&lt;br /&gt;
*&#039;&#039;&#039;Note that a repaired bone will rebreak if your patient has more than 50 brute damage.&#039;&#039;&#039;&lt;br /&gt;
*Incision Management System.  [[File:1Incision_manager.png|32px|link=|Incision Management System]] &#039;&#039;&#039;OR&#039;&#039;&#039; Open the incision. ([[File:1Scalpel.png|32px|link=|Scalpel]]-&amp;gt;[[File:1Hemostat.png|32px|link=|Hemostat]]-&amp;gt;[[File:1Retractor.png|32px|link=|Retractor]])&lt;br /&gt;
*Repair the bone. ([[File:1Bone-Gel.png|32px|link=|Bone Gel]]-&amp;gt;[[File:1Bone Setter.png|32px|link=|Bone Setter]]) (Use the Health Analyzer to double check)&lt;br /&gt;
*Close the incision. ([[File:1Cautery.png|32px|link=|Cautery]])&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|Internal Organs Surgery}}[[#Internal Organs Surgery|Internal Organs Surgery]] (Groin, Chest.)&lt;br /&gt;
|Mending broken internal organs such as the heart or appendix. Note that this surgery excludes the eyes and brain as they have their own surgeries respectively.&lt;br /&gt;
*&#039;&#039;&#039;Peridaxon does not heal organ damage. This is the only way to heal organs in the chest and groin.&#039;&#039;&#039;&lt;br /&gt;
*Incision Management System.  [[File:1Incision_manager.png|32px|link=|Incision Management System]] &#039;&#039;&#039;OR&#039;&#039;&#039; Open the incision. ([[File:1Scalpel.png|32px|link=|Scalpel]]-&amp;gt;[[File:1Hemostat.png|32px|link=|Hemostat]]-&amp;gt;[[File:1Retractor.png|32px|link=|Retractor]])&lt;br /&gt;
*Open the ribcage if necessary. ([[File:1Saw.png|32px|link=|Bone Saw]]-&amp;gt;[[File:1Retractor.png|32px|link=|Retractor]])&lt;br /&gt;
*Repair the biological organ with a Trauma Kit, or the robotic organ with Nanopaste. It loops fixing each damaged organ until none remain.([[File:Advtraumakit.png|32px|link=|Advanced Trauma Kit]]/[[File:1Nanopaste.png|32px|link=|Nanopaste]])&lt;br /&gt;
*Close the ribcage if necessary. ([[File:1Retractor.png|32px|link=|Retractor]]-&amp;gt;[[File:1Bone-Gel.png|32px|link|Bone Gel]])&lt;br /&gt;
*Close the incision. ([[File:1Cautery.png|32px|link=|Cautery]])&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|Monkey Cube Removal}}[[#Monkey Cube Removal|Monkey Cube Removal]] (Chest.)&lt;br /&gt;
|Removing a monkey cube post-ingestion. This surgery is one of the few that require a surgical drill.&lt;br /&gt;
*&#039;&#039;&#039;The embedded monkey will cause continual organ damage and may even result in the host heartbreaking. Time is of the essence.&#039;&#039;&#039;&lt;br /&gt;
*Incision Management System.  [[File:1Incision_manager.png|32px|link=|Incision Management System]] &#039;&#039;&#039;OR&#039;&#039;&#039; Open the incision. ([[File:1Scalpel.png|32px|link=|Scalpel]]-&amp;gt;[[File:1Hemostat.png|32px|link=|Hemostat]]-&amp;gt;[[File:1Retractor.png|32px|link=|Retractor]])&lt;br /&gt;
*Open the ribcage. ([[File:1Saw.png|32px|link=|Bone Saw]]-&amp;gt;[[File:1Retractor.png|32px|link=|Retractor]])&lt;br /&gt;
*Extract the malformed monkey with a hemostat. ([[File:Hemostat.png|32px|link=|Hemostat]]). If this doesn&#039;t work, continue with the other steps.&lt;br /&gt;
*Drill open the thoracic cavity wall. ([[File:Surgical Drill.png|32px|link=|Surgical Drill]])&lt;br /&gt;
*Extract the malformed monkey with a hemostat. ([[File:Hemostat.png|32px|link=|Hemostat]])&lt;br /&gt;
*Close the hole with a cautery. ([[File:1Cautery.png|32px|link=|Cautery]])&lt;br /&gt;
*Check for organ damage by using an advanced trauma kit or nanopaste if the organ is robotic.([[File:Advtraumakit.png|32px|link=|Advanced Trauma Kit]]/[[File:1Nanopaste.png|32px|link=|Nanopaste]])&lt;br /&gt;
*Close the ribcage. ([[File:1Retractor.png|32px|link=|Retractor]]-&amp;gt;[[File:1Bone-Gel.png|32px|link|Bone Gel]])&lt;br /&gt;
*Close the incision. ([[File:1Cautery.png|32px|link=|Cautery]])&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|Eye Surgery}}[[#Eye Surgery|Eye Surgery]] (Eyes.)&lt;br /&gt;
|Mending the eyes to cure blindness and eye damage.&lt;br /&gt;
*&#039;&#039;&#039;Using imidazoline is usually faster than this surgery.&#039;&#039;&#039;&lt;br /&gt;
* Mend the eyes. ([[File:1Scalpel.png|32px|link=|Scalpel]]-&amp;gt;[[File:1Retractor.png|32px|link=|Retractor]]-&amp;gt;[[File:1Hemostat.png|32px|link=|Hemostat]]-&amp;gt;[[File:1Cautery.png|32px|link=|Cautery]]).&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|Brain Damage Surgery}}[[#Brain Damage Surgery|Brain Damage Surgery]] (Head.)&lt;br /&gt;
|Fixing up the brain.&lt;br /&gt;
*&#039;&#039;&#039;Using alkysine is usually faster than this surgery.&#039;&#039;&#039;&lt;br /&gt;
*Incision Management System.  [[File:1Incision_manager.png|32px|link=|Incision Management System]] &#039;&#039;&#039;OR&#039;&#039;&#039; Open the incision. ([[File:1Scalpel.png|32px|link=|Scalpel]]-&amp;gt;[[File:1Hemostat.png|32px|link=|Hemostat]]-&amp;gt;[[File:1Retractor.png|32px|link=|Retractor]])&lt;br /&gt;
*Open the skull.([[File:1Saw.png|32px|link=|Bone Saw]]-&amp;gt;[[File:1Retractor.png|32px|link=|Retractor]])&lt;br /&gt;
*Repair severe brain damage, if any. ([[File:Fixovein.png|32px|link=|Fix-O-Vein]])&lt;br /&gt;
*Extract embedded bone chips until they are all removed. ([[File:1Hemostat.png|32px|link=|Hemostat]]) (Use Health Analyzer to double check)&lt;br /&gt;
*Close the skull. ([[File:1Retractor.png|32px|link=|Retractor]]-&amp;gt;[[File:1Bone-Gel.png|32px|link|Bone Gel]])&lt;br /&gt;
*Close the incision. ([[File:1Cautery.png|32px|link=|Cautery]])&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|{{anchor|Facial Reconstruction Surgery}}[[#Facial Reconstruction Surgery|Facial Reconstruction Surgery]] (Mouth.)&lt;br /&gt;
|This surgery fixes facial deformities caused by severe damage to the head. I.E. &amp;quot;Unknown as (name)&amp;quot; when speaking.&lt;br /&gt;
*&#039;&#039;&#039;This surgery is of minimal priority and should only be done if you have literally nothing better to do. This is a combat operation, cosmetic surgery can wait.&#039;&#039;&#039;&lt;br /&gt;
*Fix the facial deformities. ([[File:1Scalpel.png|32px|link=|Scalpel]]-&amp;gt;[[File:1Hemostat.png|32px|link=|Hemostat]]-&amp;gt;[[File:1Retractor.png|32px|link=|Retractor]])&lt;br /&gt;
*Close the incision. ([[File:1Cautery.png|32px|link=|Cautery]])&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|Amputation}}[[#Amputation|Amputation]] (Limbs: Legs, Arms, Hands, Feet.)&lt;br /&gt;
|Removal of a limb.&lt;br /&gt;
*Incision Management System.  [[File:1Incision_manager.png|32px|link=|Incision Management System]] &#039;&#039;&#039;OR&#039;&#039;&#039; Open the incision. ([[File:1Scalpel.png|32px|link=|Scalpel]]-&amp;gt;[[File:1Hemostat.png|32px|link=|Hemostat]]-&amp;gt;[[File:1Retractor.png|32px|link=|Retractor]])&lt;br /&gt;
&lt;br /&gt;
* Use the Incision Management System to sever the muscles.  [[File:1Incision_manager.png|32px|link=|Incision Management System]] &#039;&#039;&#039;OR&#039;&#039;&#039; Sever the muscles using the scalpel. ([[File:1Scalpel.png|32px|link=|Scalpel]])&lt;br /&gt;
&lt;br /&gt;
* (Optional) Cancel the amputation with Fixoven ([[File:Fixovein.png]]) or a surgical line ([[File:Surgical Line.png]])&lt;br /&gt;
&lt;br /&gt;
* Saw through the limb. ([[File:1Saw.png|32px|link=|Bone Saw]])&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|Limb Replacement Surgery}}[[#Limb Replacement Surgery|Limb Replacement Surgery]] (Limbs: Legs, Arms, Hands, Feet.)&lt;br /&gt;
|The replacement of missing limbs with robotic ones. Robot arms and legs are used to replace hands and feet; there is no need to further amputate if that&#039;s all the patient has lost. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If they&#039;ve lost an organic Limb.&lt;br /&gt;
*Seal the stump. ([[File:1Scalpel.png|32px|link=|Scalpel]]-&amp;gt;[[File:Fixovein.png|32px|link=|Fix-o-Vein]]  -&amp;gt; [[File:Surgical Line.png|32px|link=|Surgical Line]]) (Fix-o-vein and surgical line are substitutes for each other)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If they&#039;ve lost a robotic limb&lt;br /&gt;
*Saw off the remaining clamps holding the broken prosthetic to the body. ([[File:1Saw.png|32px|link=|Bone Saw]])&lt;br /&gt;
*Use your hand to take broken prosthetic out&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Attach the robotic limb. (Robotic Limb) &lt;br /&gt;
*Tighten the new robotic limb. ([[File:1Hemostat.png|32px|link=|Hemostat]]) &#039;&#039;&#039;OR&#039;&#039;&#039; Use your hand (Click on them with help intent)&lt;br /&gt;
*Calibrate the new robotic limb with your hand. (Click on them with help intent)&lt;br /&gt;
*Inform the patient that the robotic limb can be repaired with Blowtorch [[File:Welder.gif|32px]](brute) and Cable coils[[File:CableCoils.png|32px]](burn).&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|Synthetic Head Re-Attachment Surgery}}[[#Synthetic Head Re-Attachment Surgery|Synthetic Head Re-Attachment Surgery]] (Head.)&lt;br /&gt;
|Re-attaching a decapitated synthetic head.&lt;br /&gt;
*Mend the torn silicone tissue. ([[File:1Retractor.png|32px|link=|Retractor]])&lt;br /&gt;
*Attach the synthetic head.&lt;br /&gt;
*Reconstruct the tissue ([[File:Fixovein.png|32px|link=|Fix-O-Vein]]-&amp;gt;[[File:1Cautery.png|32px|link=|Cautery]]).&lt;br /&gt;
*Use a Defibrillator [[File:Defibrillator.png|32px|link=|Defibrillator]] on the synthetic.&lt;br /&gt;
&amp;lt;small&amp;gt;&#039;&#039;&#039;Note: There isn&#039;t a timer on defibbing a synthetic.&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|Necrosis Treatment Surgery}}[[#Necrosis Treatment Surgery|Necrosis Treatment Surgery]] (Limbs: Legs, Arms, Hands, Feet.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;&#039;&#039;&#039;Necrosis is currently disabled.&#039;&#039;&#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
|Treating necrosis by cutting away the necrotic tissues and treating the affected area.&lt;br /&gt;
&lt;br /&gt;
*Incision Management System.  [[File:1Incision_manager.png|32px|link=|Incision Management System]] &#039;&#039;&#039;OR&#039;&#039;&#039; Open the incision. ([[File:1Scalpel.png|link=|Scalpel]]-&amp;gt;[[File:1Hemostat.png|32px|link=|Hemostat]]-&amp;gt;[[File:1Retractor.png|link=|Retractor]])&lt;br /&gt;
*Excise necrotic tissue as many times as needed and heal the area.([[File:1Scalpel.png|link=|Scalpel]]-&amp;gt;[[File:Advtraumakit.png|32px|link=|Advanced Trauma Kit]])&lt;br /&gt;
*Close the incision. ([[File:1Cautery.png|link=|Cautery]])&lt;br /&gt;
|-&lt;br /&gt;
|{{anchor|Organ Removal/Transplantation Surgery}}[[#Organ Removal/Transplantation Surgery|Organ Removal/Transplantation Surgery]] (Groin, Chest, Head.) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;&#039;&#039;&#039;Currently disabled and not performable.&#039;&#039;&#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|Removing an organ from the body and transplanting a new organ.&lt;br /&gt;
*Incision Management System.  [[File:1Incision_manager.png|32px|link=|Incision Management System]] &#039;&#039;&#039;OR&#039;&#039;&#039; Open the incision. ([[File:1Scalpel.png|link=|Scalpel]]-&amp;gt;[[File:1Hemostat.png|link=|Hemostat]]-&amp;gt;[[File:1Retractor.png|link=|Retractor]])&lt;br /&gt;
*Open the skull or ribcage if necessary. ([[File:1Saw.png|link=|Bone Saw]]-&amp;gt;[[File:1Retractor.png|link=|Retractor]]).&lt;br /&gt;
*Remove the old organ ([[File:1Scalpel.png|link=|Scalpel]]-&amp;gt;[[File:1Hemostat.png|link=|Hemostat]])&lt;br /&gt;
*Attach the new organ. Use Trauma kit (biological) or Nanopaste (robotic). (New Organ -&amp;gt;[[File:Fixovein.png|link=|Fix-O-Vein]]-&amp;gt;[[File:Advtraumakit.png|32px|link=|Advanced Trauma Kit]]/[[File:1Nanopaste.png|link=|Nanopaste]])&lt;br /&gt;
*Close the skull or ribcage if necessary. ([[File:1Retractor.png|link=|Retractor]]-&amp;gt;[[File:1Bone-Gel.png|link|Bone Gel]])&lt;br /&gt;
*Close the incision. ([[File:1Cautery.png|link=|Cautery]])&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== The Autodoc System ==&lt;br /&gt;
&lt;br /&gt;
The Autodoc system is located in the middle of the treatment center and is only usable by the medical staff (and Squad Medics during WO). Note that while the autodoc is an extremely useful machine in medical, it cannot conduct larva removal surgery. The autodoc used to be able to fix bone damage and organ damage, but this has been removed.&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+[[File:AutoDoc.png|32px]] &#039;&#039;&#039;Operating Mode:&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Manual:&#039;&#039;&#039;&lt;br /&gt;
|Manual mode will fix everything of the selected surgery type, but autodoc can no longer fix broken bones or organ damage.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&lt;br /&gt;
 |+ style=&amp;quot;text-align:left;&amp;quot;|&#039;&#039;&#039;Manual Surgery List:&#039;&#039;&#039;&lt;br /&gt;
 |[[File:Autodoc_manual_list.png]]&lt;br /&gt;
 |}&lt;br /&gt;
&#039;&#039;&#039;Trauma Surgeries&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Shrapnel Removal Surgery:&#039;&#039;&#039; Removes all instances of shrapnel from the patient.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hematology Treatments&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Blood Transfer:&#039;&#039;&#039; Transfers blood into the patient. The autodoc has an internal reservoir of O- blood that it refills as needed.&lt;br /&gt;
* &#039;&#039;&#039;Dialysis:&#039;&#039;&#039; Purges chemicals from the patient&#039;s blood stream; use with toxin damage chelation to treat poisoning and overdoses.&lt;br /&gt;
* &#039;&#039;&#039;Toxin Damage Chelation (Kelation):&#039;&#039;&#039; Removes toxin damage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Special Surgeries&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Close Open Incision:&#039;&#039;&#039; Closes all open surgical incisions on the patient.&lt;br /&gt;
* &#039;&#039;&#039;Facial Surgery:&#039;&#039;&#039; Treats and repairs facial deformities (typically from physical damage) so the patient can be clearly identified and doesn&#039;t look like an unga.&lt;br /&gt;
* &#039;&#039;&#039;Limb Replacement Surgery:&#039;&#039;&#039; Replaces any missing limbs the patient has with robotic prosthetics.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Combining Surgeries ==&lt;br /&gt;
&lt;br /&gt;
Very often people will come in with multiple problems at once. For instance, you might have a patient who has a fractured skull, brain damage, and shrapnel in their head. Performing three separate surgeries is very time consuming when other marines may be waiting. It is possible to condense the surgery down to one in such a manner:&lt;br /&gt;
&lt;br /&gt;
* Broken skull, brain damage, and head shrapnel removal surgery&lt;br /&gt;
#Use the Incision Management System.  [[File:1Incision_manager.png|32px|link=|Incision Management System]] &#039;&#039;&#039;OR&#039;&#039;&#039; ([[File:1Scalpel.png|link=|Scalpel]]-&amp;gt;[[File:1Hemostat.png|link=|Hemostat]]-&amp;gt;[[File:1Retractor.png|link=|Retractor]]) to make an incision.&lt;br /&gt;
# [[File:1Saw.png|link=|Bone Saw]] Cut through the skull&lt;br /&gt;
# [[File:1Retractor.png|link=|Retractor]] Open up the skull&lt;br /&gt;
# [[File:1Hemostat.png|link=|Hemostat]] Here it gets a bit tricky, use a hemostat repeatedly to pull out bone chips and shrapnel until you get a message that nothing more can be found in the brain. Both types of removal can take several rounds or attempts.&lt;br /&gt;
# [[File:Fixovein.png|link=|Fix-O-Vein]] [[File:Advtraumakit.png|link=|Advanced Trauma Kit]] Use the FixOVein and Trauma Kit to repair hematomas and damage to the brain and eyes if necessary&lt;br /&gt;
# Use the Health Analyzer to check that the patient does not have brain damage! If the patient still has brain damage go back and use the hemostat and FixOVein more until the Analyzer shows no brain damage.&lt;br /&gt;
# [[File:1Retractor.png|link=|Retractor]] Close the skull back up&lt;br /&gt;
# [[File:1Bone-Gel.png|link=|Bone Gel]] Use bone gel on the damaged bones in the skull&lt;br /&gt;
# [[File:1Bone Setter.png|link=|Bone Setter]] Piece together the broken or fractured skull&lt;br /&gt;
# [[File:1Bone-Gel.png|link=|Bone Gel]] Add bone gel once more&lt;br /&gt;
# [[File:1Cautery.png|link=|Cautery]] Seal up the incision&lt;br /&gt;
# Use the Health Analyzer again to see if the patient needs antibiotics or anti-toxins and administer them as needed&lt;br /&gt;
&lt;br /&gt;
What about an infected marine with a broken chest, internal bleeding, and a ruptured lung? Here you&#039;ll want to use medication from the vendors in medbay in order to tackle the problems at hand.&lt;br /&gt;
&lt;br /&gt;
* Alien embryo removal, ruptured lung, and broken chest surgery (with a side of internal bleeding)&lt;br /&gt;
# First use one Dexalin Plus injector to halt suffocation damage from the ruptured lung. While you can stop internal bleeding surgically, Keep a couple of Dex+ injector on hand to keep the patient from dying from the ruptured lung.&lt;br /&gt;
# [[File:1Scalpel.png|link=|Scalpel]] Make an incision quickly&lt;br /&gt;
# [[File:1Retractor.png|link=|Retractor]] &#039;&#039;&#039;Ignore bleeders&#039;&#039;&#039; and rearrange organs. Removing the larva ASAP is the top priority right now&lt;br /&gt;
# [[File:1Saw.png|link=|Bone Saw]] Cut open the rib cage&lt;br /&gt;
# [[File:1Retractor.png|link=|Retractor]] Separate the rib cage&lt;br /&gt;
# [[File:The_PICT_System.png|link=|PICT System]] Begin cutting out the alien embryo&lt;br /&gt;
# [[File:1Hemostat.png|link=|Hemostat]] Begin pulling out the alien embryo&lt;br /&gt;
# [[File:Advtraumakit.png|link=|Advanced Trauma Kit]] Repair the ruptured lungs and any other damaged organs, note that a mechanical heart requires [[File:1Nanopaste.png|link=|Nanopaste]] to fix&lt;br /&gt;
# [[File:1Hemostat.png|link=|Hemostat]] &#039;&#039;Now&#039;&#039; stem the bleeders with the hemostat&lt;br /&gt;
# [[File:1Retractor.png|link=|Retractor]] Close up the rib cage&lt;br /&gt;
# [[File:1Bone-Gel.png|link=|Bone Gel]] One application of bone gel for the cut rib cage. Cut rib cages and skulls require one application of bone gel after they&#039;ve been pushed back together.&lt;br /&gt;
# [[File:1Bone Setter.png|link=|Bone Setter]] Set the broken bones in the chest&lt;br /&gt;
# [[File:1Bone-Gel.png|link=|Bone Gel]] An application for the set bones. In general remember that fixing a broken bone requires two application of bone gel before the setting it.&lt;br /&gt;
# [[File:1Cautery.png|link=|Cautery]] Cauterize the incision, your patient should be recovering nicely now&lt;br /&gt;
# Again, use the Health Analyzer to double-check your work and to dispense dylovene as needed&lt;br /&gt;
&lt;br /&gt;
== Tips ==&lt;br /&gt;
* Patients can often tell you where they need surgery if an advance scanner is not available.&lt;br /&gt;
* The hemostat step can be saved for later in the surgery or skipped entirely at the cost of your patient losing blood volume. &lt;br /&gt;
* Be sure to stand in a spot where you won&#039;t be pushed around. Any movement will violently fail the surgery step you are currently performing. It is recommended for field surgeons to bring a folding chair for this exact reason.&lt;br /&gt;
* The most common type of surgery that a person would need is [[#Bone Repair Surgery|Bone Repair Surgery]] and [[#Internal Organs Surgery|Internal Organs Surgery]]. Be sure to be familiar with the steps. (Using Bone Gel twice is a good habit while fixing Fracs)&lt;br /&gt;
* Note that only the [[#Sealing a Stump|Sealing a Stump]] surgery and [[#Alien Embryo Removal|Alien Embryo Removal]] surgery require a high level of anesthetic/painkilling, like what [[#Oxycodone|Oxycodone]] ( [[#PNK|PNK]]  8) or the surgical table provides when hooked up to the patient (provided they have functional lungs). &lt;br /&gt;
* [[#Tramadol|Tramadol]] has enough painkilling ( [[#PNK|PNK]] 5) to perform all other surgeries besides [[#Sealing a Stump|Sealing a Stump]] surgery and [[#Alien Embryo Removal|Alien Embryo Removal]]. Tramadol also lasts longer than [[#Oxycodone|Oxycodone]], leading to less time wasted injecting and more time for performing surgery. Ideal for several broken bone surgeries in a row. &lt;br /&gt;
* Be sure to check if any [[#Tramadol|Tramadol]] is already in the system when performing the initial scan, as it is often used as a painkiller. &lt;br /&gt;
&amp;lt;!--* You can heal internal bleeding with bicaridine overdose if the patient does not have any brute damage. This will not work if the patient has brute damage, the bicardine OD will first heal all of patient&#039;s brute damage before beginning to heal internal bleeding. If used, administer kelotane to the patient to counter the burn damage done by the overdose, and kit any damaged body parts to ensure brute damage is at 0. Inform the patient they have IB, and that you are overdosing them on bicaridine. The patient will take toxin damage and will require dylovene if the overdose is over 45 units, so be careful. If the patient has an exceedingly high amount of brute damage, administer quick clot and evacuate them for surgery. --&amp;gt;&lt;br /&gt;
* If you see a broken red heart next to the patient, that means they have heartbreak. The broken heart indicates that the patient&#039;s heart has suffered too much trauma for revival attempts. When scanned the message will say: &amp;quot;Patient&#039;s general condition does not allow reviving.&amp;quot; To fix this, a doctor (or person able to do surgery level 2 or higher) must repair their heart in time before any further revival attempts are under taken. If a doctor (or someone applicable) is not immediately available, perform CPR on the corpse to extend their defib timer until a doctor can perform surgery to repair the heart.&lt;br /&gt;
* Shrapnel is never good as it gives organ damage when received, and deals brute damage (which can also cause further organ damage) when moving with it still inside the body. The most common way to remove shrapnel is to way remove with a knife or other sufficiently sharp object. To do this, activate/click yourself/patient on help intent with knife in hand. Yanking out the object is another option (only if object is externally embedded). To do this, right click the person with shrapnel and click &#039;&#039;&#039;Yank out object&#039;&#039;&#039;. The last option is surgery (only if object is deeply embedded or small to remove).&lt;br /&gt;
* Refer to [https://cm-ss13.com/wiki/Guide_to_Medicine| Guide to Medicine], [https://cm-ss13.com/wiki/Chemistry| Chemistry], or the [https://cm-ss13.com/wiki/Researcher| Researcher] page for further information.&lt;/div&gt;</summary>
		<author><name>Drulikar</name></author>
	</entry>
</feed>