Ironnhawk
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Engagement control
    • Make a copy
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Make a copy Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    --- title: Administration and Coding Guide description: A collection of notes and tools to help contribute to the server and to provide information to administration on utilizing DM and running in-game commands. image: https://hackmd.io/screenshot.png tags: features, events, guides, tutorials, ss13 --- Administration and Coding Useful Information === {%hackmd @ZeWaka/dark-theme %} :::info :warning: **This document is public do not put any information in here that could be considered sensitive. Anyone with a link to this document can see the information stored here.** ::: [ToC] ## :bangbang: Guide Requests :::info Feel free to add anything to this list if you would like to see information related to it or have a guide made. ::: - [ ] Example Request | Ironnhawk | 11/25/2021 --- # :joystick: In-Game Editing ## Chat Formatting ahelps: support HTML natively, you can post images in ahelps, links, formatting, styling, etc. ### Increase Visibility to ``` <p><span style="font-size:28px;"><span style="color: #ff0000;"><strong> Please respond to me. Click on my underlined name to do so. </strong></span></span></p> ``` #### Output: <p><span style="font-size:28px;"><span style="color: #ff0000;"><strong> Please respond to me. Click on my underlined name to do so. </strong></span></span></p> ## Panels * [MC-Panel](/f4aj4gJLQzG8SSpjGpfSEA) * [Debug Panel](/YlxlVLJUS4i-VY2jtOozog) --- ## Item Edits ### Items - Vars Not sorted in any form, as a start simply to keep track of values that are used for common edits. | Var Name | Value | Description | | -------- | -------- | -------- | | w_class | Int | Control the size of an item, this allows you to adjust whether an item can fit into a storage slot or not. | ### Items - Guns Gun items are broken down into these variables ```javascript /obj/item/gun name = "gun" desc = "It's a gun. It's pretty terrible, though." icon = 'icons/obj/guns/ballistic.dmi' icon_state = "detective" inhand_icon_state = "gun" worn_icon_state = "gun" flags_1 = CONDUCT_1 slot_flags = ITEM_SLOT_BELT custom_materials = list(/datum/material/iron=2000) w_class = WEIGHT_CLASS_NORMAL throwforce = 5 throw_speed = 3 throw_range = 5 force = 5 item_flags = NEEDS_PERMIT attack_verb_continuous = list("strikes", "hits", "bashes") attack_verb_simple = list("strike", "hit", "bash") var/gun_flags = NONE var/fire_sound = 'sound/weapons/gun/pistol/shot.ogg' var/vary_fire_sound = TRUE var/fire_sound_volume = 50 var/dry_fire_sound = 'sound/weapons/gun/general/dry_fire.ogg' var/suppressed = null //whether or not a message is displayed when fired var/can_suppress = FALSE var/suppressed_sound = 'sound/weapons/gun/general/heavy_shot_suppressed.ogg' var/suppressed_volume = 60 var/can_unsuppress = TRUE var/recoil = 0 //boom boom shake the room var/clumsy_check = TRUE var/obj/item/ammo_casing/chambered = null trigger_guard = TRIGGER_GUARD_NORMAL //trigger guard on the weapon, hulks can't fire them with their big meaty fingers var/sawn_desc = null //description change if weapon is sawn-off var/sawn_off = FALSE var/burst_size = 1 //how large a burst is var/fire_delay = 0 //rate of fire for burst firing and semi auto var/firing_burst = 0 //Prevent the weapon from firing again while already firing var/semicd = 0 //cooldown handler var/weapon_weight = WEAPON_LIGHT var/dual_wield_spread = 24 //additional spread when dual wielding /// Just 'slightly' snowflakey way to modify projectile damage for projectiles fired from this gun. var/projectile_damage_multiplier = 1 var/spread = 0 //Spread induced by the gun itself. var/randomspread = 1 //Set to 0 for shotguns. This is used for weapons that don't fire all their bullets at once. lefthand_file = 'icons/mob/inhands/weapons/guns_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/guns_righthand.dmi' var/obj/item/firing_pin/pin = /obj/item/firing_pin //standard firing pin for most guns /// True if a gun dosen't need a pin, mostly used for abstract guns like tentacles and meathooks var/pinless = FALSE var/can_flashlight = FALSE //if a flashlight can be added or removed if it already has one. var/obj/item/flashlight/seclite/gun_light var/datum/action/item_action/toggle_gunlight/alight var/gunlight_state = "flight" var/can_bayonet = FALSE //if a bayonet can be added or removed if it already has one. var/obj/item/kitchen/knife/bayonet var/knife_x_offset = 0 var/knife_y_offset = 0 var/ammo_x_offset = 0 //used for positioning ammo count overlay on sprite var/ammo_y_offset = 0 var/flight_x_offset = 0 var/flight_y_offset = 0 //Zooming var/zoomable = FALSE //whether the gun generates a Zoom action on creation var/zoomed = FALSE //Zoom toggle var/zoom_amt = 3 //Distance in TURFs to move the user's screen forward (the "zoom" effect) var/zoom_out_amt = 0 var/datum/action/toggle_scope_zoom/azoom var/pb_knockback = 0 ``` * [ID Cards] * [Foods] ## Client Edits | Var | Value | Description | | -------- | -------- | -------- | |icon = /icon() | Image Files (.dmi .bmp .png .gif .jpg .jpeg) | To edit the icon of an object | | icon_state = "" |Text| For use with .DMI files use the state named to choose and icon. Check the .dmi in DreamMaker to find available states| ## Mob Edits Common Variable Guides [VV] Human mob variables ```[/mob/living/carbon/human]``` **Bodyparts** Every human mob when spawned has a set of body parts. These are every limb that is attached to that mob. You can click into a limb to find out more details on it. Certain mechanics are removed from a player if they lose certain limbs, like if they lose both hands, they can no longer hold any object. **DNA** DNA is normally unique to a mob, but there can be duplicates when cloned, or if a changeling is currently morphed into another mob. You can also see the blood type of the mob here. And any mutations that this mob has at spawn (Though those mutation may or may not be active) | Var | Value | Description | | -------- | -------- | -------- | |icon = /icon() | Image Files (.dmi .bmp .png .gif .jpg .jpeg) | To edit the icon of an object | | icon_state = "" |Text| For use with .DMI files use the state named to choose and icon. Check the .dmi in DreamMaker to find available states| ## Sprite Edits ### Vars | Var | Value | Description | | -------- | -------- | -------- | |icon = /icon() | Image Files (.dmi .bmp .png .gif .jpg .jpeg) | To edit the icon of an object | | icon_state = "" |Text| For use with .DMI files use the state named to choose and icon. Check the .dmi in DreamMaker to find available states| ## :warning: Proccalls :::danger Unless you know what you are doing, do not play with this on any live server, there is a high chance you will break the round. ::: | Proc | Desc | How To | | -------- | -------- | -------- | | apply_prefs_to(). | Text | mark their mob, VV their player -> client -> prefs, call the apply_prefs_to proc with 1 argument, the mob **OR** go to the dropdown> call proc > apply_prefs_to > arguments 1 > scroll down and hit the MARKED OBJECT one | ## :no_entry: MySQL :::danger Unless you know what you are doing, do not play with this on any live server, you will get in severe trouble. ::: A combination of Proccalls and MySQL commands is one of the most powerful tools you could have while in-game. Allowing you to change and interact with select items/objects, mass edit variables or force an object to run a specific event. Because of these interaction, MySQL should only be done by those who absolutely know what they are doing on a live server. If you do not understand SQL, do not! DO NOT! Attempt to play with these commands live. **Types of queries** Their names describe what you want to do. ``` SELECT - Selects data from the database INSERT - Inserts data into a table UPDATE - Updates existing data in a table DELETE - Deletes existing data from a table ``` There are more, but this guide doesn't deal with them: **CREATE** - Creates databases, tables, views, procedures, triggers, etc. Whatever you define **ALTER** - Changes the properties of something you created (for example, which columns a table has) **DROP** - Deletes something you created (DELETE only deletes the data, DROP deletes the table itself.) **Table Naming Convention** Tables are usually named in lower case, they use the underscore as a word separator and the first word is usually the name of the project the table is a part of. Most tables in the tgs database are called ss13_X. The last common thing is to always use singular. So 'user_reports' is not a good name, 'user_report' is. These naming conventions are there to help you down the road, so you will not be in doubt whether a table is called 'ss13_players' or 'ss13_player', etc. Examples: ss13_player, ss13_connection_log, ss13_poll_question, etc. **SELECT** Let's select something. This assumes you have the tgs database set up and that you played a few rounds with it enabled. **Everything** Execute the following statement: ```sql SELECT * FROM ss13_player ``` You now have a list of players who played on your server so far. I can't provide you with a screenshot for privacy reasons, but you can see what you get in your output. The * in the statement defines that you want to select all columns. https://tgstation13.org/wiki/MySQL ## :page_facing_up: Papercode * [Formatting](/m8xhoVnSTS2lva8RYgppLg) * [Templates](/L5u9Is4WSvaJBRd8fgQ68Q) * [Command](/Olskkp_1RYKIwdwth46kfA) * [NT Rep](/lXdsWHaZTsmxaPzy5o8l4A) * [Security](/cOc1OUgqTTa4tZ2k9eM8AQ) * [Medical](/G_geHZpiRN6vCEIP9NEgSw) * [Engineering](/qQ63xYoEQAm6FMhXpiE69w) * [Supply](/FShpccE-RG2xgUTBjUgcxA) * [Service](/3StvePVpQSSfLL9gMJ0YDQ) * [Misc](/MC2-nnhlQlWb-sHKjW3XKQ) ## :hammer: Useful Tools * https://ps.ss13.net/ `Paperwork Simulator - Not Compatiable with TG` * https://affectedarc07.github.io/SS13WebMap/ `SS13 Webmap` ## In-Game Event Ideas and Templates 1. [Command Reports](/R4gia0e5RwaSdpo6MikCOQ) 2. [Map Templates](/lO6XTLUgRwyG1sDKxFj0wA) 3. [Audio Files](/QhDBPkrgTSirFNaYKDBUqg) ## Vending Machine Spawns & Lockers | Vending | Desc | Path | | -------- | -------- | -------- | | Security | Old Security clothing vendor | /obj/machinery/vending/wardrobe/sec_wardrobe | | LustWish | ERP Vendor | /obj/machinery/vending/dorms| --- # :memo: Development Guides [Skyrat Development Guide](https://hackmd.io/uCxdr1EjTwOFc6E7EMD6Qw) [Away Mission Guide](https://hackmd.io/MSLLa9UKTYyQehuECoAsrQ) ## What is DM [DM Guide](https://www.byond.com/docs/guide/) [Reference](http://www.byond.com/docs/ref/#/DM) [Byond Resource Repo](http://www.byond.com/developer/articles/resources) [Byond 101](http://www.byond.com/developer/articles/byond101) [Byond Whitepaper](http://www.byond.com/developer/articles/whitepaper) ## Visual Studio Code **VSCode + All mission-critical extensions for DM Coding.** https://code.visualstudio.com/ VSCode, the root tool. https://marketplace.visualstudio.com/items?itemName=gbasood.byond-dm-language-support DM language support, allow autoupdates https://marketplace.visualstudio.com/items?itemName=platymuus.dm-langclient DM Language client, also allows compiling. When setting it up you need to go to extension settings, then "choose folder", pick the BYOND folder that has "uninstall.exe" and "bin" folders (the root/base folder). Then, once that's done, you can literally hit ctrl+shift+b and choose the .dme, and compile inside VSCode. It's FAR faster than compiling in Dream Maker. Screenshot of settings: ![](https://hackmd.io/_uploads/r1pY7Nosq.png) **Optional.** https://marketplace.visualstudio.com/items?itemName=icrawl.discord-vscode Discord rich presence, not needed, but looks pretty https://marketplace.visualstudio.com/items?itemName=donjayamanne.githistory This one is also optional, works for allowing you to gitblame and stuff, but it requires a bit more setup. https://marketplace.visualstudio.com/items?itemName=Goonstation.goonstation-extpack Goonstation-specific toolpack for newer coders. **Quick Tips for VSCode** Highlighting a proc and right clicking, then going to "Definition" or "Implementation" will allow you to easily see/lookup wherever it's used. This is massively helpful over having to manually search it. * CTRL+F will bring up a search, that also allows a replace line-by-line. * CTRL+Clicking will also (usually) take you to the definition of a proc/verb/etc. ## :floppy_disk: Coding Information 1. [Understanding SS13 Code](https://tgstation13.org/wiki/Understanding_SS13_code) 3. [Experienced Code Information](https://tgstation13.org/wiki/SS13_for_experienced_programmers) 4. [Understanding Git](https://www.notion.so/Git-GitHub-61bc81766b2e4c7d9a346db3078ce833) 5. [Project File Structure](/2wJQukBOToy7DahU_v1hyA) 6. [Tools of the Trade](/Mlyl8kCwR4CYLsZ30r6hfw) * [StrongDMM ](https://github.com/SpaiR/StrongDMM) `Map Editing Tools` * [Visual Studio Code](https://code.visualstudio.com/) `Source-Code Editor` * [TGStation Code Docs](https://codedocs.tgstation13.org/) `Code Documentation` 6. [Goonstation Guide](https://hackmd.io/@goonstation/docs/%2F%40goonstation%2Fdev) ## :pushpin: Goonstation Guide(lines) - [Goonstation Development Guide](/@goonstation/dev) - [Goonstation Contributor Guidelines](/@goonstation/contribute) - [Goonstation Code Guide](/@goonstation/code) - [Goonstation Spriting Guidelines](/@goonstation/sprites) - [Goonstation Audio Guidelines](/@goonstation/audio) - [Goonstation Mapping Guidelines](/@goonstation/maps) ## :triangular_ruler: Your First Contribution * [Guide to Contributing](https://tgstation13.org/wiki/TGMC:Guide_to_contributing) `TGStation` * [Guide to Contributing 2](https://hackmd.io/@goonstation/docs/%2F%40goonstation%2Fdev) `Goonstation` 1. [Creating Simplemobs](/EVS2E-wYQG2p2-NNsbYMVQ) 2. [Creating Items](/N75bqmOfQEST9p-vOwHN6w) 3. [Creating Food] 4. [Creating Reagents] 5. [Creating Recipe] 6. [Creating Weapons] 7. [Creating Armor] 4. [Creating Structures](/M2koTzanQgmVOuKY-wvqbQ) 5. [Creating Clothing](/ZrfegG4NTfCLtEqPf10ujw) 5. [Creating Outfits](/N840P72KRHepEo3xys0h4Q) 6. [Creating Weapons](/Dj1tyG9CQCeyIFEoX3PBUA) 7. [Creating Carbons](/7i5Of7U3Q-OGqLdqp7TqmQ) 8. ## :art: Spriting [Overview](/L_W6jtkCSBuvhrCdxpd1TA) `Basic Information on spriting` 1. [Beestation Spriting Guide](https://forums-nsv.beestation13.com/t/nsv-spriting-guide/51) 2. [TG Spriting Guide](https://tgstation13.org/wiki/Guide_to_spriting) ### Tools * Asperite * [Website](https://www.aseprite.org/) `Also available on steam` * [Free Version](https://github.com/aseprite/aseprite/) `Requires Compiling` * Photoshop * Visual Studio Code * https://marketplace.visualstudio.com/items?itemName=AnturK.dmi-editor ### Templates ![](https://hackmd.io/_uploads/BylBNMoiq.png) ![](https://hackmd.io/_uploads/rkLBEGis9.png) ![](https://hackmd.io/_uploads/B1Ru4fsiq.png) ![](https://hackmd.io/_uploads/HyUKVzoj9.png) ![](https://hackmd.io/_uploads/ByoHEfsjq.png) ![](https://hackmd.io/_uploads/Hk-U4zjj5.png) ![](https://hackmd.io/_uploads/rJBIVzjic.png) * [Basic 32x32 File](https://drive.google.com/file/d/10uRflcbCgihNL8ZIZFcB-OXidNJFJq1d/view?usp=sharing) * [Door Template](https://drive.google.com/file/d/1ieqISA6CEJfpOOyqYZ6ifOfHjYsFXxtK/view?usp=sharing) * [Human Template 1](https://drive.google.com/file/d/1vwgoOtMv24h_q14D6JkgkGkDLrxrZILZ/view?usp=sharing) * ![](https://i.imgur.com/9UXtaOB.png) * [Human Template 2](https://drive.google.com/file/d/1FE_zIRsXqdLgcTYGSYN_j9dKJkSmpchP/view?usp=sharing) * ![](https://i.imgur.com/3K631tG.png) * [Stamps](https://drive.google.com/file/d/1T6kx8_An-5L04CGJw3w2Sn2lyzNXzyHf/view?usp=sharing) * [Lockers](https://drive.google.com/file/d/13ewxajurjucuySaNWCbEvnlsRIx4IZft/view?usp=sharing) ## Lewd Writing :::info **!!!IMPORTANT!!!** ::: [JSON Guide](https://hackmd.io/@doc-doc-go/r1eSTd49Y) ```modular_skyrat\modules\interaction_menu\code\interaction_datum.dm``` > THESE MUST BE IN THE .json FILE FORMAT. THESE MUST BE SENT TO GANDALF VIA DMS. THIS IS NOT A GUARANTEE THAT YOUR INTERACTION WILL BE ACCEPTED. YOUR ASS WILL BE GRASS IF YOU PUT A FINISHED LEWD INTERACTION IN development-suggest OR development-code. Also, remove any comments made by me prior to actually submitting it, like the thing about more vars. ```json { "name": "", !!!THERE ARE MORE VARS IN CODE, SEE interaction_datum.dm "description" : "", "usage": "", If lewd, sex "category": "", Should likely be in other "distance_allowed": 0, "message": [ Visible message in radius of distance_allowed "", "", ], "user_messages": [ User gets these atop message "", "", ], "target_messages": [ Target gets these atop message "", "", ], "target_required_parts": [ This is in the format of the ORGAN SLOT. Penis, vagina, anus, etc. "penis" ], "user_required_parts": [ As above. "vagina" ], "user_pleasure": 7, Can be any values. Be reasonable. "user_arousal": 5, "target_pleasure": 7, "target_arousal": 5, "lewd": 1, Can only be 1 or 0. 1 = True, 0 = False. "orientation": [ For use in an upcoming change to interactions. Straight, lesbian, gay. "" ], "color": "pink" } ``` ## :world_map: Mapping 1. [TG Mapping Guide](https://tgstation13.org/wiki/Guide_to_mapping) 2. [Mapping Reference Collection](https://hackmd.io/@tgstation/ry4-gbKH5#san7890%E2%80%99s-Mapping-Reference-Collection-WIP) 3. [san7890's A-Z Guide to Mapping](https://hackmd.io/QBaz0CaTRhOp7pEnUlXnzQ#Ingredients) ## Other Codebases * https://github.com/SS13-Source-Archive/Source-List/blob/main/README.md ## Server Compiling and Hosting Tools * https://github.com/tgstation/tgstation-server `Server management Tool` * https://github.com/tgstation/tgstation-server-webpanel ## Unsorted Links * https://tgstation13.org/wiki/Understanding_SS13_code * https://hackmd.io/@goonstation/docs/%2F%40goonstation%2Fdev#-So-how-do-I-get-started * https://tgstation13.org/wiki/Guides#Development_and_Contribution_Guides * https://tgstation13.org/wiki/BYOND * https://tgstation13.org/wiki/Binary_flags * https://tgstation13.org/wiki/Guide_to_spriting * https://tgstation13.org/wiki/MySQL * https://tgstation13.org/wiki/Understanding_SS13_code * https://tgstation13.org/wiki/Guide_to_contributing_to_the_game * https://tgstation13.org/wiki/SS13_for_experienced_programmers * https://secure.byond.com/docs/ref/#/DM * https://github.com/Dibasic/SS13PaperworkSimulator * https://docs.spacestation14.io/en/getting-started/hosting * https://github.com/space-wizards * https://docs.spacestation14.io/ # :file_folder: Community Content & Assets ## :pencil2: Character Creation https://docs.google.com/document/d/1n7QAGa-5yYdsIB_8CqCtpflKdTIuWFlk4K9-s_0hfpc/edit **Outdated** ``` **Character Template:** ----------------------------------------------------- ***Generic Info*** Name: Sex: Age: Education: [Optional] Preferred Department(s): Preferred Occupation(s): ----------------------------------------------------- ***Character Tags*** Personality Tags: [Optional; Keep it SHORT!] Ex: Loud and obnoxious, asexual, enjoys making people feel uncomfortable Descriptive Tags: [Optional; Keep it SHORT!] Ex: Short and muscular like a dwarf, eyes always narrowed in focus, stark red scales that glimmer Background Tags: [Optional; Keep it SHORT!] Ex: Former janitor, college dropout, loves sports Quirks: [Optional] ----------------------------------------------------- ***Gang Info*** Preferred Role: [Place Here. **No Personal Harems**] Loyalty: [How loyal are they?] 1-10 Background Tag: [Keep it SHORT!] Ex: Got into a fistfight with anti-kobold bullies. After being beaten, kobold gang that watched it happen took his wallet. He joined them because he liked their style. **This is an example I used for a kobold gang at Citadel, and it does not pertain to the Skyrat gang.** ----------------------------------------------------- Reference Artwork: **Please put a disclaimer whether or not you own the art** ``` --- # Quick Fixes ### Fixing a Character without Respawn ( Does not update Manifest ) :::info Found sort of a work-around for the random character bug, mainly to fix characters who got mangled by the bug so they dont have to respawn! ::: > Okay so: > 1. Ask them to open their character prefs menu, then close it. This unfucks their character prefs and loads it into their client (I think) > 2. Rightclick on the fucked player and click Mark Object. We'll need this in a sec. > 3. Open VV on the fucked player, open their Client, then Preferences, then call proc apply_prefs_to on their preferences, 1 argument, the marked datum (the fucked player) > 4. The proc will basically transform them into what's loaded in their character prefs, which is (supposedly) their real character. > 5. Fix their ID's name. Ask them to take their ID out of their PDA, then toss both on the ground to make it easier. (or just do it all through VV, you dont really have to ghost them) > 6. Hope this fixes the manifest cus I havent tested if it does! ### Fixing Character Version 2 - Superlagg Repost from @Superlagg - Dan Kelly - Roli because I couldn't be bothered finding the file in which we keep this kind of thing: So found sort of a work-around for the random character bug, mainly to fix characters who got mangled by the bug so they dont have to respawn! Okay so: 1. Ask them to open their character prefs menu, then close it. This unfucks their character prefs and loads it into their client (I think) 2. Rightclick on the fucked player and click Mark Object. We'll need this in a sec. 3. Open VV on the fucked player, open their Client, then Preferences, then call proc apply_prefs_to on their preferences, 2 arguments, neither of them named. The first one will be the marked datum (the fucked player), the second will be a number, 1. 4. The proc will basically transform them into what's loaded in their character prefs, which is (supposedly) their real character. 5. Fix their ID's name. Ask them to take their ID out of their PDA, then toss both on the ground to make it easier. (or just do it all through VV, you dont really have to ghost them) 6. Hope this fixes the manifest cus I havent tested if it does! (I did, and it doesnt!) ### Create a new Bank Account > 1) Make an ID card. Any one'll do (or just VV your way into some syndie's ID card) > 2) Go to registered_account > 3) (E) -> new datum (NOT new datum type!) > 4) datum/bank_account (just the top one, dunno about the other two) > 5) Click the datum (will need to refresh first!) > 6) Set something sensible in the amount var (I use 4200 cus funny number and it doesnt murder the economy) > 7) Set something memorable in account_number (I use 800813 cus funny number) > 8) Tell the syndies the number and to put it into their ID card > > **BONUS STEPS** > 9) Name the card something cheeky, like a SyndieMart Gift Card > 10) Give it an equally cheeky description that includes the account number (Welcome to SyndieMart, death to Nanotrassen! On the back is written: 800813) > 11) Pod it right on top of a syndie and blow their arms off (or somewhere safe if you dont want to be a badmin) ### Fixing the Supply Shuttle > > How to fix the supply shuttle: > - Go to the MC tab and open Shuttle. > - Search for cargo, and find the /obj/docking_port/stationary named Cargo Bay. Open it. > - Follow the port in the dropdown menu if you like, to ensure it's the right one. > - Search for width, and increase the width and dwidth variables. It doesn't really matter what you put here, just make it bigger > > ![](https://i.imgur.com/JR7QCWe.png) ### Fixing the Supply Shuttle #2 > hey so for people wondering how to fix the cargo shuttle, this is my fix > > 1. go to the MC tab and scroll til you see shuttle, then click that > 2. search for supply in the vv menu that comes up, find the var 'mobile', and find the supply shuttle docking port in it > 3. click that and in the vv drop down menu, click follow to make sure it's the right one, if it is, click mark object in the vv menu for it > 4. if the 'id' variable of the shuttle docking port is anything other than 'supply', change it to suppy, but delete the other shuttles that have an id of 'supply' before you do that with the shuttle manipulator > 5. go back to the shuttle vv, and then scroll til you see the 'supply' variable, click the (C) to the left of it, and scroll down the list that comes up until you see 'marked datum' > 6. if more issues arise, you can delete the other supply shuttles with the shuttle manipulator > > or just do the shuttle manip, delete all the supply shuttles and load one in I suppose, but I'm not sure if that actually sets the shuttle you load in to be the supply shuttle ### How to Stuff a Guardian Parasite in Someone > Oh no, someone's holoparasprite broke, and they need whoever was in there to be in there again. Well, lets fix it then! > > 1. Spawn some kind of guardian spawner item, like `/obj/item/guardiancreator`. Any of them should do, though the `/choose` ones, supposedly, let them pick what kind of parasprite to have. > > 2. Tag both the player mob's and the dead ghost mob's datums. Try to have the player in the first slot, and the ghost in the second, just so its easier. > > 3. Tell the player you're about to do this, so they dont accidentally close the window. > > 4. Atom proc call the spawner item. `spawn_guardian`. 2 arguments, neither named. First arg, pick the player mob's datum, second arg, pick the ghost mob's datum. > > 5. That should be it, but be prepared to do it again if they mess something up. Also it might be a while until you see an effect, they have to pick stuff from a menu after all. The ghost will be deleted when everything'd done, so try and keep them in sight. ### How to Make a Rando > You know how mobs you spawn with the wand are always so... pale? Even the anthromorphs who are supposed to sparkle like the dogs they are look like the pasty nerds who play them! > > So lets fix that! Its an easy fix, too. > > 1. Spawn a species. It should work for anything other than teshari, which don't have their default randomization lists set up *ffs*. > > 2. Tag or mark the datum of the thing you spawned. > > 3. Go into the debug tab, click advanced proc call. This proc is not owned by anything. > > 4. `randomize_human`. One arg, unnamed. Put the tagged mob as the arg. > > 5. Do whatever it is you do with NPC OCs. ### Fixing Broken Lighting > ----HOW TO FIX BROKEN CLIENT LIGHTING - the better way---- > Requires proccall permission > > For some reason, sometimes people's HUDs are made with broken vars (specifically plane_masters var being empty). Here's the proper way to fix it (just manually adding the lighting master, the old way of fixing, still leaves a bunch of stuff broken for them): > > VV the character or mob of the player who has the issue. Find their hud_used variable, and open the /datum/hud/human it has as value. > On the /datum/hud/human, call proc Destroy with 0 arguments. > Go back to the VV of their character, and call proc create_mob_hud with 0 arguments. > > Now tell them to hit F12 a few times until all their buttons are back. ### Fixing Broken Planemaster > The 'Fixing broken planemaster lighting (messed up screen lighting)' instructions are outdated btw. > > Bandaid fix that moderators can do: > > VV the mob of the bugged player, find their client var, open it. > On their client var, find the screen var, and add to it with (E): > Add a New Custom Typepath (at the bottom of the list), and add a /atom/movable/screen/plane_master/lighting > > this breaks again when they relog, and they'll have weird darkness textures etc but it's better than nothing ### Fixing Contractor Kit Uplinks > > -----Quick guide to fixing bugged contractor kit uplinks------ > This works for if their problem is that they're stuck on the 'register' screen. > > VV on the person with the issue. Search for mind, open their /datum/mind. Use the dropdown menu to mark this object. > In their mind datum, search for antag -> open their /datum/antagonist/traitor. > Search for contractor_hub, use the (C) option to set it to NULL. > > Now tell them to register again. Refresh their traitor datum, there should be a new contractor_hub. Open it. > You now need to use proccall from the dropdown menu: 'create_contracts'. Give it 1 argument, leave positional blank, then select the MARKED OBJECT: datum/mind option. > > This should fix their contractor tablet. I'm not sure yet if it's possible for it to crash and break again after this, will update this message once I figure that out. ### Adjusting Chaplain Role > Var > Mind > Search Holy Role > 5 for Chaplain ### Disable Firelock Alarms > How to disable firelocks alarms. > > Duboris: This is a MASS Varedit. View Variables on Emergency Shutter. > > Search for the word sound. > > At the very bottom you'll see "Soundloop" = /datum/looping_sound. Click that. > > In that datum you'll see mid_sounds = list (4) > > Set that whole bitch to Null. ### General Information > VV is super easy, just takes some understanding of how BYOND handles variables and code. Basically, whenever it needs to know something that could change, like an item's opacity, the number of things in a stack of things, what thing contains this thing, it checks a variable and uses that as its instructions. > So, if you set a mob's name var to "butt", any time the game wants to refer to that mob's name var, it'll return "butt". Or an image, if you set it to an image, which it totally will take and breaks surprisingly few things. > Most vars are descriptive as to what they do, cus TG's pretty anal about that. Good thing too, helps us a lot. But, sometimes, they arent as clear, or you dont know which of these vars does the thing you want it to do. So, best way to find out what does what is to fire up github and search for the atom (Area, Turf, Object, or Mob), skim through the code for whatever makes the most sense, and work from there. > Or spawn the thing in the thunderdome and just change vars and fire procs until things make sense. Sounds like a joke until you get to an unreadable code and the only way to get an effect is to mess with it until it either works or crashes the server. Just wait until the headmins arent ERPing so nobody that can fire you gets mad =3 > **Procs** are basically chunks of code that are run when the proc is called. procs are typically owned by something, and can be called by that something, as well as all its children (I think), and typically has its effects pointed at its owner (discounting things like arguments, which are basically just vars but for procs) > **gib()** is owned by (I think) /mob, which means /mob and any child of it (like /mob/living/carbon/human) can run it. When a mob calls it (usually by something else telling it to call it, like an explosion), it runs a block of code that does a bunch of things that results in gibs. > **gib()** also has a few args that can be put in. The game wont tell you what they are, so you'll have to go code diving to find what they are, but you can use them to change the way certain parts of the proc behave. Like whether or not the gibbed person should drop a brain. > Atoms can also be passed as arguments, if the proc is coded to accept them. Usually this means that the thing owning the proc is doing something to or reading something from that atom. > **randomize_human()** can take two (ish) vars. The first one is the mob you're randomizing, which you can slot in by either tagging the mob's datum (oh yeah, literally everything in BYOND is a datum, ATOMs are a type of datum, something something object oriented programming) or marking the mob, and setting the variable type of the arg to that marked/tagged thing. (Marking and tagging do the same thing, but tagging them is better cus you can have more things tagged). > Also **randomize_human()** is a global proc, and cant be called by anything, and needs to be called from the advanced proc call command in the dev tab. *shrug > So, lets take the thing I wrote about fixing random humans! So what you do is you tag the Randoman, open their Preferences datum, call proc apply_prefs_to(), set the first argument to be the tagged Randoman, the second to be a variable 1, and then make it run. This'll make apply_preferences_to() read their preferences, apply those prefs to the mob, and force it all to work properly by passing a 1 through it. > Also you can find the preferences datum by opening the mob's VV, going into their client datum, and opening their prefs datum. Also illustrates how variables can hold/refer to more than just numbers and text! > Easy peasy, and you'll be spinning monkeys in no time! When you're a GA+, that is. Mods cant do this~ ### Shuttle Revert Bug Kilo has a bug where it has two arrivals shuttle find the one people are using and delete the other in the Manipulator or it will spam logs trying to land one on the other After setting one to permadock they will simply spawn on the docked shuttle Too Find Perma_docked look here. ![](https://hackmd.io/_uploads/HyAPXMjj9.png) ![](https://hackmd.io/_uploads/SytuQfsjc.png) ![](https://hackmd.io/_uploads/BkAdQfsj5.png) To Find NOTELEPORT look here ![](https://hackmd.io/_uploads/H1FYQGjs5.png) ![](https://hackmd.io/_uploads/HJl9Qfsi9.png) --- <!--- View the book with "<i class="fa fa-book fa-fw"></i> Book Mode". Examples --- - [Book example](/s/book-example) - [Slide example](/s/slide-example) - [YAML metadata](/s/yaml-metadata) - [Features](/s/features) Themes --- - [Dark theme](/theme-dark?both) - [Vertical alignment](/theme-vertical-writing?both) --> # Other Books - [Event Guide](/9-7SkXH8SlWWNuarOpj5mQ) - ###### :label: tags: `Templates` `Book`

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully