<?xml version="1.0" encoding="UTF-8"?>
<add>
  <doc>
    <field name="type">page</field>
    <field name="name">index</field>
    <field name="tag">MAIN</field>
    <field name="url">index.html</field>
    <field name="keywords"></field>
    <field name="text">Barotrauma C modding guide C modding for Barotrauma is a subset of modding for Lua For Barotrauma mod that requires a mod package with the name CsForBarotrauma to be turned on e.g steam workshop This modding requires strict source structure but comes with the benefits of being handled natively by game engine witch removes many hurdles with type casting or similar issues The main star of the show is Barotrauma::ACsMod class It is what all your mods will use to hook game methods and execute custom code All utility classes can be accessed either by their type i.e that have name that starts with LuaCs or through GameMain.LuaCs property refer to class documentation All C code files must be located in mod_root otherwise they won t be compiled Additionally you can specify what code runs where by either filepath or pre-processor statements In case of filepath your files must be located in either CSharp/Shared/* CSharp/Server/* or CSharp/Client/* for shared code server-side code or client-side code respectively in any other case the code is assumed to be shared I case of pre-processor you can use SERVER or CLIENT definitions to separate code into server-side code and client-side code respectively Some classes e.g almost all System.IO is prohibited to thwart malicious mods although current white-listing prohibits reflection so no mod can be considered inherently safe In above case one must use LuaCs classes to get access to system resources or similar things if any If you want for your mod to inherently be turned on client-side when it is enabled you must create a dummy xml file A generic C mod boilerplate File-tree mod_root cs mod_root cs mod_root cs mod_root xml Server documentation Client documentation</field>
  </doc>
</add>
