From 8716f3180fb5b988dc14e69ea27ebc9e062d1bae Mon Sep 17 00:00:00 2001
From: BongaTheProto <93835010+BongaTheProto@users.noreply.github.com>
Date: Thu, 9 May 2024 05:03:15 +0000
Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20=20@=20af8f9?=
=?UTF-8?q?1134380a3970c128e5c2fc36d8aef46b30a=20=F0=9F=9A=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.nojekyll | 0
CNAME | 1 +
area.html | 352 ++
area/space.html | 35 +
atom.html | 792 ++++
atom/movable.html | 382 ++
atom/movable/emissive_blocker.html | 32 +
atom/movable/fov_holder.html | 43 +
atom/movable/screen.html | 81 +
atom/movable/screen/action_landing.html | 35 +
atom/movable/screen/alert.html | 36 +
atom/movable/screen/alert/give.html | 57 +
atom/movable/screen/alert/give/highfive.html | 49 +
.../screen/alert/status_effect/pregnancy.html | 31 +
atom/movable/screen/button_palette.html | 36 +
atom/movable/screen/combattoggle.html | 35 +
atom/movable/screen/fullscreen.html | 64 +
atom/movable/screen/fullscreen/scaled.html | 43 +
atom/movable/screen/inventory.html | 57 +
atom/movable/screen/lobby.html | 57 +
atom/movable/screen/lobby/button.html | 57 +
.../screen/lobby/button/bottom/poll.html | 36 +
.../movable/screen/lobby/button/collapse.html | 46 +
atom/movable/screen/lobby/button/ready.html | 36 +
atom/movable/screen/lobby/shutter.html | 35 +
atom/movable/screen/movable.html | 35 +
.../movable/screen/movable/action_button.html | 52 +
atom/movable/screen/palette_scroll.html | 38 +
atom/movable/screen/parallax_layer.html | 113 +
.../screen/storage/volumetric_box/center.html | 35 +
atom/movable/screen/wanted.html | 43 +
atom/movable/summon_weapon_effect.html | 36 +
client.html | 606 +++
code/__DEFINES/DNA.html | 44 +
code/__DEFINES/MC.html | 113 +
code/__DEFINES/_flags/_flags.html | 311 ++
code/__DEFINES/_flags/do_after.html | 52 +
code/__DEFINES/_flags/item_flags.html | 87 +
code/__DEFINES/_flags/obj_flags.html | 47 +
code/__DEFINES/_flags/return_values.html | 71 +
code/__DEFINES/_flags/shields.html | 102 +
code/__DEFINES/_tick.html | 82 +
code/__DEFINES/admin.html | 32 +
code/__DEFINES/admin/keybindings.html | 67 +
code/__DEFINES/antagonists.html | 57 +
code/__DEFINES/callbacks.html | 32 +
code/__DEFINES/cargo.html | 32 +
code/__DEFINES/color/colors.html | 193 +
code/__DEFINES/color/lum.html | 32 +
code/__DEFINES/combat.html | 169 +
code/__DEFINES/combat/attack_types.html | 57 +
code/__DEFINES/combat/block.html | 184 +
code/__DEFINES/combat/block_parry.html | 89 +
code/__DEFINES/combat/stamina_combat.html | 47 +
code/__DEFINES/configuration.html | 84 +
code/__DEFINES/cooldowns.html | 32 +
code/__DEFINES/dcs/flags.html | 165 +
code/__DEFINES/dcs/helpers.html | 71 +
code/__DEFINES/dcs/signals.html | 623 +++
.../__DEFINES/dcs/signals/signals_action.html | 42 +
.../signals_atom/signals_atom_main.html | 32 +
.../signals_atom/signals_atom_mouse.html | 77 +
.../signals_atom/signals_atom_movement.html | 34 +
.../__DEFINES/dcs/signals/signals_global.html | 32 +
code/__DEFINES/dcs/signals/signals_hud.html | 37 +
.../dcs/signals/signals_medical.html | 47 +
.../signals_mob/signals_mob_living.html | 32 +
.../signals/signals_mob/signals_mob_main.html | 37 +
code/__DEFINES/dcs/signals/signals_mod.html | 112 +
.../dcs/signals/signals_movable.html | 37 +
.../dcs/signals/signals_painting.html | 37 +
.../dcs/signals/signals_reagent.html | 32 +
.../dcs/signals/signals_screentips.html | 72 +
.../dcs/signals/signals_subsystem.html | 64 +
code/__DEFINES/dynamic.html | 57 +
code/__DEFINES/economy.html | 42 +
code/__DEFINES/events.html | 92 +
code/__DEFINES/exosuit_fabs.html | 112 +
code/__DEFINES/explosion.html | 106 +
code/__DEFINES/fonts.html | 32 +
code/__DEFINES/hud.html | 82 +
code/__DEFINES/instruments.html | 57 +
code/__DEFINES/inventory.html | 187 +
code/__DEFINES/is_helpers.html | 33 +
code/__DEFINES/layers_planes.html | 74 +
code/__DEFINES/lighting.html | 76 +
code/__DEFINES/maps.html | 32 +
code/__DEFINES/material/worth.html | 32 +
code/__DEFINES/materials.html | 47 +
code/__DEFINES/maths.html | 75 +
code/__DEFINES/mecha.html | 37 +
code/__DEFINES/misc.html | 37 +
code/__DEFINES/mobs.html | 37 +
code/__DEFINES/mobs/innate_abilities.html | 74 +
code/__DEFINES/mobs/slowdowns.html | 52 +
code/__DEFINES/mod.html | 62 +
code/__DEFINES/movement.html | 63 +
code/__DEFINES/nanites.html | 42 +
code/__DEFINES/overlays.html | 33 +
code/__DEFINES/pinpointers.html | 32 +
code/__DEFINES/power.html | 37 +
code/__DEFINES/procpath.html | 27 +
code/__DEFINES/projectiles.html | 62 +
code/__DEFINES/qdel.html | 59 +
code/__DEFINES/reagents.html | 36 +
code/__DEFINES/research/anomalies.html | 57 +
code/__DEFINES/research/stock_parts.html | 39 +
code/__DEFINES/robots.html | 32 +
code/__DEFINES/rust_g.html | 259 ++
code/__DEFINES/screentips.html | 92 +
code/__DEFINES/skills/defines.html | 107 +
code/__DEFINES/skills/helpers.html | 61 +
code/__DEFINES/sound.html | 72 +
code/__DEFINES/spaceman_dmm.html | 119 +
code/__DEFINES/station.html | 32 +
code/__DEFINES/status_effects.html | 52 +
code/__DEFINES/storage/_storage.html | 107 +
code/__DEFINES/storage/volumetrics.html | 49 +
code/__DEFINES/strippable.html | 42 +
code/__DEFINES/subsystems.html | 158 +
code/__DEFINES/text.html | 91 +
code/__DEFINES/tgs.html | 235 ++
code/__DEFINES/tgui.html | 100 +
code/__DEFINES/traits.html | 179 +
code/__DEFINES/traits/sources.html | 32 +
code/__DEFINES/uplink.html | 42 +
code/__DEFINES/vehicles.html | 62 +
code/__DEFINES/voreconstants.html | 47 +
code/__DEFINES/wounds.html | 192 +
code/__HELPERS/_lists.html | 118 +
code/__HELPERS/_logging.html | 31 +
code/__HELPERS/areas.html | 40 +
code/__HELPERS/chat.html | 37 +
code/__HELPERS/clients.html | 28 +
code/__HELPERS/files.html | 31 +
code/__HELPERS/game.html | 40 +
code/__HELPERS/global_lists.html | 28 +
code/__HELPERS/icons.html | 34 +
code/__HELPERS/lighting.html | 28 +
code/__HELPERS/matrices/color_matrix.html | 39 +
code/__HELPERS/matrices/transform_matrix.html | 28 +
code/__HELPERS/mobs.html | 35 +
code/__HELPERS/nameof.html | 37 +
code/__HELPERS/names.html | 28 +
code/__HELPERS/path.html | 51 +
code/__HELPERS/priority_announce.html | 29 +
code/__HELPERS/radio.html | 34 +
code/__HELPERS/sanitize_values.html | 30 +
code/__HELPERS/screen_objs.html | 40 +
code/__HELPERS/text.html | 32 +
code/__HELPERS/type2type.html | 31 +
code/__HELPERS/unsorted.html | 41 +
code/__HELPERS/verbs.html | 30 +
code/__HELPERS/view.html | 28 +
code/__HELPERS/weakref.html | 33 +
code/__SANDCODE/DEFINES/chat.html | 33 +
code/__SANDCODE/DEFINES/dcs/signals/lewd.html | 32 +
code/__SANDCODE/DEFINES/lewd.html | 47 +
code/__SANDCODE/DEFINES/loadout.html | 59 +
code/__SANDCODE/DEFINES/medical_defines.html | 37 +
code/__SANDCODE/DEFINES/misc.html | 32 +
code/__SANDCODE/DEFINES/mobs.html | 32 +
code/__SANDCODE/DEFINES/signals.html | 32 +
code/__SANDCODE/DEFINES/status_effects.html | 32 +
code/__SANDCODE/DEFINES/strippable.html | 54 +
code/__SANDCODE/DEFINES/traits.html | 57 +
code/__SANDCODE/DEFINES/wires.html | 44 +
code/__SPLURTCODE/DEFINES/colors.html | 32 +
code/__SPLURTCODE/DEFINES/configuration.html | 33 +
code/__SPLURTCODE/DEFINES/dcs/signals.html | 32 +
code/__byond_version_compat.html | 57 +
code/_globalvars/bitfields.html | 29 +
code/_globalvars/lists/keybindings.html | 30 +
code/_globalvars/lists/typecache.html | 28 +
code/_onclick/hud/action_button.html | 27 +
code/_onclick/hud/alert.html | 27 +
code/_onclick/hud/map_popups.html | 31 +
code/_onclick/hud/new_player.html | 29 +
code/_onclick/hud/plane_master.html | 42 +
.../atom_huds/alternate_appearance.html | 27 +
code/_rendering/parallax/parallax.html | 27 +
code/_rendering/parallax/parallax_holder.html | 27 +
.../configuration/config_entry.html | 27 +
.../configuration/entries/comms.html | 27 +
.../configuration/entries/debris.html | 29 +
.../configuration/entries/general.html | 29 +
.../configuration/entries/logging.html | 58 +
.../configuration/entries/movespeed.html | 27 +
.../configuration/entries/persistence.html | 31 +
.../configuration/entries/policy.html | 27 +
.../configuration/entries/respawns.html | 35 +
.../configuration/entries/stamina_combat.html | 33 +
.../configuration/entries/vote.html | 32 +
code/controllers/failsafe.html | 32 +
code/controllers/hooks.html | 29 +
code/controllers/master.html | 32 +
code/controllers/subsystem.html | 27 +
code/controllers/subsystem/chat.html | 28 +
code/controllers/subsystem/garbage.html | 56 +
code/controllers/subsystem/materials.html | 29 +
code/controllers/subsystem/overlays.html | 35 +
.../subsystem/persistence/_persistence.html | 27 +
.../subsystem/processing/fastprocess.html | 28 +
code/controllers/subsystem/runechat.html | 45 +
code/controllers/subsystem/tgui.html | 30 +
code/controllers/subsystem/timer.html | 59 +
.../achievements/_achievement_data.html | 27 +
code/datums/achievements/_awards.html | 28 +
.../achievements/mafia_achievements.html | 28 +
code/datums/achievements/misc_scores.html | 29 +
code/datums/announcers/_announcer.html | 27 +
.../brain_damage/split_personality.html | 27 +
code/datums/browser.html | 28 +
code/datums/callback.html | 30 +
code/datums/chatmessage.html | 83 +
code/datums/components.html | 30 +
code/datums/components/_component.html | 27 +
.../datums/components/area_sound_manager.html | 27 +
code/datums/components/butchering.html | 27 +
code/datums/components/combat_mode.html | 30 +
.../crafting/glassware/glassware.html | 33 +
.../recipes/recipes_weapon_and_ammo.html | 29 +
code/datums/components/dejavu.html | 27 +
code/datums/components/edible.html | 36 +
code/datums/components/explodable.html | 27 +
code/datums/components/fantasy/suffixes.html | 28 +
code/datums/components/field_of_vision.html | 42 +
code/datums/components/footstep.html | 27 +
code/datums/components/fried.html | 28 +
code/datums/components/gps.html | 28 +
code/datums/components/identification.html | 28 +
code/datums/components/killerqueen.html | 27 +
code/datums/components/label.html | 27 +
.../datums/components/material_container.html | 33 +
code/datums/components/multiple_lives.html | 28 +
code/datums/components/nanites.html | 27 +
code/datums/components/omen.html | 27 +
.../datums/components/plumbing/_plumbing.html | 29 +
code/datums/components/plumbing/filter.html | 27 +
code/datums/components/riding.html | 27 +
.../components/storage/concrete/tcg.html | 27 +
code/datums/components/tackle.html | 27 +
code/datums/components/thermite.html | 27 +
code/datums/components/twitch_plays.html | 28 +
code/datums/components/twohanded.html | 28 +
code/datums/components/uplink.html | 27 +
code/datums/components/virtual_reality.html | 32 +
code/datums/datum.html | 35 +
code/datums/dna.html | 29 +
code/datums/ductnet.html | 27 +
code/datums/elements/_element.html | 27 +
code/datums/elements/bed_tucking.html | 27 +
code/datums/elements/connect_loc.html | 28 +
code/datums/elements/dwarfism.html | 27 +
code/datums/elements/firestacker.html | 27 +
code/datums/elements/item_scaling.html | 27 +
code/datums/elements/screentips.html | 118 +
.../contextual_screentip_bare_hands.html | 29 +
.../contextual_screentip_item_typechecks.html | 29 +
.../contextual_screentip_sharpness.html | 29 +
.../contextual_screentip_tools.html | 29 +
code/datums/elements/strippable.html | 36 +
code/datums/elements/swimming.html | 27 +
code/datums/elements/weather_listener.html | 27 +
code/datums/explosion2.html | 29 +
code/datums/forced_movement.html | 27 +
.../helper_datums/stack_end_detector.html | 29 +
code/datums/mapgen/JungleGenerator.html | 27 +
code/datums/mapgen/_MapGenerator.html | 27 +
code/datums/mapgen/biomes/_biome.html | 27 +
code/datums/martial/cqc.html | 27 +
code/datums/materials/_material.html | 28 +
code/datums/materials/basemats.html | 40 +
code/datums/materials/meat.html | 27 +
code/datums/mocking/client.html | 27 +
code/datums/mutations/sight.html | 28 +
code/datums/outfit.html | 28 +
code/datums/skills/_skill.html | 28 +
code/datums/skills/_skill_holder.html | 28 +
code/datums/skills/_skill_modifier.html | 28 +
code/datums/skills/modifiers/job.html | 28 +
code/datums/soullink.html | 27 +
.../datums/station_traits/_station_trait.html | 27 +
.../station_traits/negative_traits.html | 27 +
code/datums/status_effects/debuffs.html | 32 +
code/datums/status_effects/status_effect.html | 28 +
code/datums/status_effects/wound_effects.html | 27 +
code/datums/view.html | 27 +
code/datums/weather/weather.html | 27 +
code/datums/wounds/_scars.html | 28 +
code/game/area/areas.html | 29 +
code/game/area/areas/edina.html | 29 +
code/game/area/areas/mining.html | 29 +
code/game/area/areas/shuttles.html | 32 +
code/game/atoms.html | 30 +
code/game/gamemodes/dynamic.html | 212 +
.../gamemodes/dynamic/dynamic_logging.html | 29 +
.../dynamic/dynamic_rulesets_midround.html | 41 +
.../dynamic/dynamic_rulesets_roundstart.html | 28 +
code/game/machinery/civilian_bountys.html | 30 +
code/game/machinery/computer/dna_console.html | 102 +
code/game/machinery/cryopod.html | 27 +
code/game/machinery/deployable.html | 27 +
code/game/machinery/lightswitch.html | 27 +
code/game/machinery/limbgrower.html | 28 +
.../porta_turret/portable_turret_cover.html | 27 +
code/game/machinery/shieldgen.html | 27 +
code/game/machinery/slotmachine.html | 40 +
code/game/machinery/status_display.html | 32 +
code/game/machinery/syndicatebomb.html | 30 +
.../machinery/telecomms/broadcasting.html | 28 +
.../effects/effect_system/effects_other.html | 30 +
.../effects/effect_system/effects_smoke.html | 27 +
code/game/objects/effects/forcefields.html | 27 +
.../objects/effects/spawners/lootdrop.html | 29 +
code/game/objects/items/AI_modules.html | 57 +
code/game/objects/items/cigs_lighters.html | 27 +
code/game/objects/items/crayons.html | 27 +
code/game/objects/items/defib.html | 27 +
.../game/objects/items/devices/multitool.html | 27 +
.../objects/items/devices/radio/radio.html | 27 +
code/game/objects/items/devices/scanners.html | 28 +
code/game/objects/items/dice.html | 28 +
code/game/objects/items/granters.html | 31 +
.../objects/items/grenades/chem_grenade.html | 27 +
code/game/objects/items/grenades/plastic.html | 27 +
code/game/objects/items/hand_items.html | 27 +
code/game/objects/items/mail.html | 32 +
code/game/objects/items/manuals.html | 27 +
code/game/objects/items/melee/energy.html | 27 +
code/game/objects/items/plushes.html | 27 +
.../game/objects/items/robot/ai_upgrades.html | 27 +
.../game/objects/items/robot/robot_items.html | 31 +
.../objects/items/stacks/sheets/leather.html | 27 +
code/game/objects/items/storage/boxes.html | 27 +
code/game/objects/items/summon.html | 50 +
code/game/objects/items/weaponry.html | 27 +
.../objects/structures/beds_chairs/chair.html | 27 +
code/game/objects/structures/girders.html | 27 +
.../objects/structures/industrial_lift.html | 27 +
.../objects/structures/kitchen_spike.html | 33 +
code/game/objects/structures/loom.html | 27 +
.../objects/structures/manned_turret.html | 27 +
code/game/objects/structures/safe.html | 37 +
code/game/objects/structures/statues.html | 37 +
.../game/objects/structures/tables_racks.html | 27 +
code/game/say.html | 33 +
code/game/sound.html | 56 +
.../turfs/open/floor/catwalk_plating.html | 27 +
.../simulated/floor/plating/asteroid.html | 28 +
code/game/turfs/simulated/lava.html | 43 +
code/game/turfs/simulated/minerals.html | 27 +
.../turfs/simulated/wall/mineral_walls.html | 28 +
.../turfs/simulated/wall/reinf_walls.html | 27 +
code/game/turfs/turf.html | 27 +
.../actionspeed/_actionspeed_modifier.html | 50 +
code/modules/admin/NewBan.html | 28 +
code/modules/admin/callproc/callproc.html | 28 +
code/modules/admin/force_event.html | 27 +
code/modules/admin/tag.html | 32 +
.../admin/verbs/SDQL2/SDQL_2_wrappers.html | 28 +
code/modules/admin/verbs/adminhelp.html | 30 +
code/modules/admin/verbs/pray.html | 32 +
code/modules/admin/verbs/randomverbs.html | 28 +
.../admin/view_variables/debug_variables.html | 28 +
.../antagonists/_common/antag_spawner.html | 31 +
.../bloodsucker/bloodsucker_powers.html | 27 +
.../antagonists/changeling/changeling.html | 33 +
.../changeling/powers/mutations.html | 44 +
code/modules/antagonists/cult/cult_comms.html | 27 +
code/modules/antagonists/devil/imp/imp.html | 27 +
.../disease/disease_abilities.html | 31 +
.../eldritch_cult/eldritch_effects.html | 27 +
.../eldritch_cult/eldritch_knowledge.html | 29 +
.../eldritch_cult/eldritch_magic.html | 28 +
.../eldritch_cult/eldritch_monster_antag.html | 27 +
.../eldritch_cult/knowledge/rust_lore.html | 27 +
code/modules/antagonists/gang/handler.html | 27 +
code/modules/antagonists/gang/themes.html | 27 +
.../antagonists/revolution/revolution.html | 27 +
.../antagonists/slaughter/slaughter.html | 27 +
code/modules/antagonists/swarmer/swarmer.html | 28 +
.../traitor/equipment/contractor.html | 32 +
.../wizard/equipment/artefact.html | 30 +
.../wizard/equipment/soulstone.html | 27 +
code/modules/assembly/flash.html | 30 +
code/modules/assembly/infrared.html | 27 +
code/modules/asset_cache.html | 43 +
.../modules/asset_cache/asset_cache_item.html | 27 +
code/modules/asset_cache/asset_list.html | 32 +
code/modules/asset_cache/assets/irv.html | 27 +
.../transports/asset_transport.html | 33 +
.../transports/webroot_transport.html | 27 +
.../atmospherics/gasmixtures/gas_mixture.html | 29 +
code/modules/atmospherics/multiz.html | 27 +
.../awaymissions/capture_the_flag.html | 29 +
code/modules/awaymissions/corpse.html | 29 +
code/modules/awaymissions/gateway.html | 27 +
.../awaymissions/mission_code/snowdin.html | 27 +
.../awaymissions/mission_code/wildwest.html | 28 +
code/modules/balloon_alert/balloon_alert.html | 37 +
code/modules/buildmode.html | 230 ++
code/modules/cargo/bounty.html | 28 +
code/modules/cargo/packs/armory.html | 27 +
code/modules/cargo/packs/costumes_toys.html | 28 +
code/modules/cargo/packs/emergency.html | 27 +
code/modules/cargo/packs/engine.html | 27 +
code/modules/cargo/packs/engineering.html | 27 +
code/modules/cargo/packs/livestock.html | 27 +
code/modules/cargo/packs/materials.html | 30 +
code/modules/cargo/packs/medical.html | 30 +
code/modules/cargo/packs/misc.html | 33 +
code/modules/cargo/packs/organic.html | 31 +
code/modules/cargo/packs/science.html | 28 +
code/modules/cargo/packs/security.html | 27 +
code/modules/cargo/packs/service.html | 30 +
code/modules/cargo/packs/vending.html | 29 +
code/modules/clothing/masks/boxing.html | 27 +
.../modules/clothing/masks/miscellaneous.html | 27 +
.../modules/clothing/spacesuits/hardsuit.html | 30 +
code/modules/events/holiday/halloween.html | 27 +
code/modules/events/stray_cargo.html | 31 +
.../food_and_drinks/drinks/drinks.html | 31 +
.../food_and_drinks/drinks/drinks/bottle.html | 29 +
code/modules/food_and_drinks/food.html | 27 +
.../food_and_drinks/food/condiment.html | 27 +
.../food_and_drinks/food/customizables.html | 27 +
code/modules/food_and_drinks/food/snacks.html | 28 +
.../food_and_drinks/food/snacks/dough.html | 27 +
.../food_and_drinks/food/snacks/meat.html | 30 +
.../food_and_drinks/food/snacks_egg.html | 27 +
.../food_and_drinks/food/snacks_meat.html | 29 +
.../food_and_drinks/food/snacks_other.html | 27 +
.../food_and_drinks/food/snacks_pastry.html | 32 +
.../food_and_drinks/food/snacks_pizza.html | 27 +
.../food_and_drinks/food/snacks_salad.html | 27 +
.../food_and_drinks/food/snacks_sushi.html | 28 +
.../food_and_drinks/food/snacks_vend.html | 27 +
.../recipes/drinks_recipes.html | 30 +
.../recipes/food_mixtures.html | 27 +
.../recipes/tablecraft/recipes_bread.html | 29 +
.../recipes/tablecraft/recipes_burger.html | 30 +
.../recipes/tablecraft/recipes_cake.html | 29 +
.../recipes/tablecraft/recipes_donut.html | 29 +
.../recipes/tablecraft/recipes_egg.html | 27 +
.../recipes/tablecraft/recipes_frozen.html | 28 +
.../recipes/tablecraft/recipes_meat.html | 29 +
.../recipes/tablecraft/recipes_mexican.html | 27 +
.../recipes/tablecraft/recipes_misc.html | 28 +
.../recipes/tablecraft/recipes_pastry.html | 32 +
.../tablecraft/recipes_pies_sweets.html | 30 +
.../recipes/tablecraft/recipes_pizza.html | 28 +
.../recipes/tablecraft/recipes_salad.html | 27 +
.../recipes/tablecraft/recipes_sandwich.html | 27 +
.../recipes/tablecraft/recipes_seafood.html | 29 +
.../recipes/tablecraft/recipes_soup.html | 27 +
.../recipes/tablecraft/recipes_spaghetti.html | 28 +
code/modules/games/unum.html | 27 +
code/modules/holiday/halloween/jacqueen.html | 28 +
code/modules/hydroponics/grown/towercap.html | 27 +
code/modules/hydroponics/seed_extractor.html | 28 +
.../instrument_data/_instrument_data.html | 28 +
code/modules/instruments/songs/_song.html | 28 +
code/modules/jobs/access.html | 28 +
code/modules/keybindings.html | 60 +
code/modules/language/language_holder.html | 61 +
code/modules/lighting/emissive_blocker.html | 27 +
code/modules/mafia/_defines.html | 137 +
code/modules/mafia/controller.html | 30 +
code/modules/mafia/roles.html | 28 +
code/modules/mapping.html | 79 +
.../mapping_helpers/_mapping_helpers.html | 27 +
.../network_builder/power_cables.html | 27 +
code/modules/mapping/preloader.html | 27 +
code/modules/mapping/reader.html | 28 +
code/modules/mapping/verify.html | 27 +
code/modules/mining/aux_base.html | 32 +
.../mining/equipment/explorer_gear.html | 29 +
.../mining/equipment/kinetic_crusher.html | 27 +
.../mining/equipment/lazarus_injector.html | 27 +
.../mining/equipment/mineral_scanner.html | 27 +
.../mining/equipment/mining_tools.html | 27 +
.../mining/equipment/regenerative_core.html | 29 +
code/modules/mining/equipment/resonator.html | 27 +
.../mining/equipment/survival_pod.html | 27 +
.../mining/equipment/vendor_items.html | 27 +
.../mining/equipment/wormhole_jaunter.html | 27 +
.../mining/laborcamp/laborstacker.html | 29 +
code/modules/mining/lavaland/ash_flora.html | 27 +
.../mining/lavaland/necropolis_chests.html | 27 +
code/modules/mining/machine_processing.html | 28 +
code/modules/mining/machine_redemption.html | 27 +
code/modules/mining/machine_stacking.html | 28 +
code/modules/mining/machine_unloading.html | 27 +
code/modules/mining/machine_vending.html | 31 +
code/modules/mining/mine_items.html | 30 +
code/modules/mining/minebot.html | 33 +
code/modules/mining/money_bag.html | 27 +
code/modules/mining/ores_coins.html | 28 +
code/modules/mining/satchel_ore_boxdm.html | 27 +
code/modules/mob/clickdelay.html | 29 +
.../mob/dead/new_player/new_player.html | 32 +
.../sprite_accessories/alienpeople.html | 29 +
.../sprite_accessories/body_markings.html | 28 +
.../new_player/sprite_accessories/ears.html | 29 +
.../sprite_accessories/ipc_synths.html | 28 +
.../sprite_accessories/legs_and_taurs.html | 28 +
.../new_player/sprite_accessories/snouts.html | 34 +
.../new_player/sprite_accessories/tails.html | 28 +
code/modules/mob/living/blood.html | 32 +
.../carbon/alien/humanoid/alien_powers.html | 27 +
.../mob/living/carbon/carbon_stripping.html | 27 +
.../mob/living/carbon/human/dummy.html | 27 +
.../living/carbon/human/human_defines.html | 28 +
.../innate_abilities/limb_regeneration.html | 28 +
.../mob/living/carbon/human/species.html | 29 +
.../human/species_types/jellypeople.html | 30 +
code/modules/mob/living/living.html | 29 +
.../mob/living/living_active_parry.html | 27 +
code/modules/mob/living/living_block.html | 28 +
.../mob/living/living_blocking_parrying.html | 27 +
.../mob/living/silicon/robot/robot.html | 27 +
.../mob/living/simple_animal/constructs.html | 32 +
.../simple_animal/guardian/guardian.html | 27 +
.../simple_animal/hostile/illusion.html | 27 +
.../hostile/megafauna/colossus.html | 32 +
.../hostile/megafauna/legion.html | 30 +
.../elites/goliath_broodmother.html | 29 +
.../hostile/mining_mobs/elites/herald.html | 29 +
.../mining_mobs/elites/legionnaire.html | 29 +
.../hostile/mining_mobs/elites/pandora.html | 29 +
.../hostile/mining_mobs/lobsterosity.html | 27 +
.../simple_animal/hostile/plaguerat.html | 27 +
.../simple_animal/hostile/regalrat.html | 28 +
.../simple_animal/hostile/space_dragon.html | 49 +
.../simple_animal/hostile/syndicate.html | 30 +
.../hostile/venus_human_trap.html | 28 +
code/modules/mob/mob_helpers.html | 34 +
code/modules/mob/say_vr.html | 29 +
code/modules/mob/typing_indicator.html | 27 +
code/modules/mod/mod_control.html | 27 +
code/modules/mod/mod_theme.html | 29 +
.../mod/modules/modules_engineering.html | 34 +
code/modules/mod/modules/modules_general.html | 35 +
code/modules/mod/modules/modules_maint.html | 33 +
code/modules/mod/modules/modules_medical.html | 40 +
code/modules/mod/modules/modules_science.html | 29 +
.../modules/mod/modules/modules_security.html | 31 +
code/modules/mod/modules/modules_service.html | 32 +
code/modules/mod/modules/modules_supply.html | 29 +
code/modules/mod/modules/modules_visor.html | 27 +
.../computers/item/tablet.html | 28 +
.../modular_computers/documentation.html | 88 +
.../file_system/programs/jobmanagement.html | 27 +
.../file_system/programs/ntdownloader.html | 27 +
.../programs/portrait_printer.html | 33 +
.../file_system/programs/powermonitor.html | 27 +
.../file_system/programs/radar.html | 28 +
.../hardware/hard_drive.html | 27 +
.../modular_computers/hardware/recharger.html | 28 +
.../movespeed/_movespeed_modifier.html | 57 +
code/modules/newscaster/news_network.html | 27 +
code/modules/ninja/energy_katana.html | 27 +
code/modules/ninja/ninja_explosive.html | 29 +
code/modules/ninja/suit/gloves.html | 27 +
code/modules/ninja/suit/head.html | 27 +
code/modules/ninja/suit/mask.html | 27 +
.../energy_net_nets.html | 27 +
.../ninja_equipment_actions/ninja_stars.html | 27 +
code/modules/ninja/suit/shoes.html | 27 +
code/modules/ninja/suit/suit.html | 27 +
code/modules/paperwork/clipboard.html | 27 +
code/modules/paperwork/paper.html | 39 +
code/modules/paperwork/paper_premade.html | 30 +
code/modules/paperwork/photocopier.html | 62 +
code/modules/plumbing/ducts.html | 27 +
.../plumbing/plumbers/_plumb_machinery.html | 32 +
.../modules/plumbing/plumbers/acclimator.html | 27 +
code/modules/plumbing/plumbers/destroyer.html | 32 +
code/modules/plumbing/plumbers/filter.html | 27 +
.../modules/plumbing/plumbers/pill_press.html | 27 +
code/modules/plumbing/plumbers/pumps.html | 27 +
.../plumbing/plumbers/reaction_chamber.html | 27 +
code/modules/plumbing/plumbers/splitters.html | 27 +
.../plumbing/plumbers/synthesizer.html | 27 +
code/modules/power/apc.html | 212 +
code/modules/power/reactor/rbmk.html | 54 +
code/modules/power/singularity/generator.html | 27 +
.../power/supermatter/supermatter.html | 32 +
.../projectiles/guns/ballistic/magweapon.html | 27 +
.../projectiles/guns/ballistic/pistol.html | 27 +
.../projectiles/guns/energy/laser.html | 28 +
.../projectiles/guns/misc/medbeam.html | 27 +
code/modules/projectiles/projectile.html | 40 +
.../modules/projectiles/projectile/magic.html | 27 +
code/modules/reagents/chem_wiki_render.html | 29 +
code/modules/reagents/chemistry.html | 269 ++
code/modules/reagents/chemistry/fermi.html | 43 +
.../chemistry/machinery/chem_dispenser.html | 27 +
.../chemistry/reagents/alcohol_reagents.html | 27 +
.../chemistry/reagents/drink_reagents.html | 27 +
.../chemistry/reagents/food_reagents.html | 27 +
.../chemistry/reagents/other_reagents.html | 29 +
.../chemistry/reagents/toxin_reagents.html | 27 +
.../reagents/chemistry/recipes/others.html | 32 +
.../reagents/reagent_containers/pill.html | 28 +
.../reagents/reagent_containers/spray.html | 27 +
code/modules/recycling/disposal/multiz.html | 38 +
.../anomaly/explosive_compressor.html | 27 +
.../modules/research/anomaly/raw_anomaly.html | 27 +
code/modules/research/designs.html | 27 +
.../research/designs/AI_module_designs.html | 27 +
.../research/designs/autobotter_designs.html | 27 +
.../autolathe_designs_construction.html | 27 +
.../autolathe_designs_electronics.html | 27 +
...olathe_designs_medical_and_dinnerware.html | 28 +
.../autolathe_designs_sec_and_hacked.html | 28 +
.../autolathe_designs_tcomms_and_misc.html | 28 +
.../autolathe_designs_tools.html | 27 +
.../designs/biogenerator_designs.html | 27 +
.../research/designs/bluespace_designs.html | 27 +
.../comp_board_designs_all_misc.html | 27 +
.../comp_board_designs_cargo.html | 27 +
.../comp_board_designs_engi.html | 27 +
.../comp_board_designs_medical.html | 27 +
.../comp_board_designs_sci.html | 27 +
.../comp_board_designs_sec.html | 27 +
.../designs/computer_part_designs.html | 27 +
.../research/designs/electronics_designs.html | 29 +
.../research/designs/limbgrower_designs.html | 27 +
.../machine_designs_all_misc.html | 27 +
.../machine_designs_cargo.html | 27 +
.../machine_desings/machine_designs_engi.html | 27 +
.../machine_designs_medical.html | 27 +
.../machine_desings/machine_designs_sci.html | 27 +
.../machine_designs_service.html | 27 +
.../research/designs/mecha_designs.html | 28 +
.../designs/mechfabricator_designs.html | 27 +
.../research/designs/medical_designs.html | 35 +
.../research/designs/mining_designs.html | 27 +
.../research/designs/misc_designs.html | 38 +
.../research/designs/nanite_designs.html | 34 +
.../research/designs/power_designs.html | 27 +
.../research/designs/smelting_designs.html | 27 +
.../research/designs/stock_parts_designs.html | 27 +
.../research/designs/telecomms_designs.html | 27 +
.../research/designs/tool_designs.html | 29 +
.../research/designs/weapon_designs.html | 27 +
code/modules/research/experimentor.html | 27 +
.../research/nanites/nanite_programs.html | 27 +
.../research/techweb/nodes/alien_nodes.html | 27 +
.../research/techweb/nodes/bepis_nodes.html | 27 +
.../research/techweb/nodes/biotech_nodes.html | 27 +
.../techweb/nodes/bluespace_nodes.html | 28 +
.../techweb/nodes/computer_hud_nodes.html | 27 +
.../techweb/nodes/engineering_nodes.html | 27 +
.../research/techweb/nodes/mecha_nodes.html | 27 +
.../research/techweb/nodes/medical_nodes.html | 29 +
.../research/techweb/nodes/misc_nodes.html | 31 +
.../research/techweb/nodes/nanites_nodes.html | 27 +
.../techweb/nodes/robotics_nodes.html | 27 +
.../research/techweb/nodes/tools_nodes.html | 27 +
.../techweb/nodes/weaponry_nodes.html | 27 +
.../crossbreeding/__corecross.html | 27 +
.../crossbreeding/_status_effects.html | 28 +
.../xenobiology/crossbreeding/charged.html | 27 +
.../research/xenobiology/xenobiology.html | 28 +
.../ruins/icemoonruin_code/hotsprings.html | 27 +
code/modules/ruins/lavaland_ruin_code.html | 28 +
.../biodome_clown_planet.html | 27 +
.../ruins/lavalandruin_code/sloth.html | 27 +
.../ruins/lavalandruin_code/surface.html | 27 +
.../ruins/spaceruin_code/DJstation.html | 27 +
.../ruins/spaceruin_code/TheDerelict.html | 29 +
.../ruins/spaceruin_code/asteroid4.html | 27 +
.../ruins/spaceruin_code/bigderelict1.html | 27 +
.../ruins/spaceruin_code/clericsden.html | 27 +
.../spaceruin_code/crashedclownship.html | 27 +
.../ruins/spaceruin_code/deepstorage.html | 27 +
.../spaceruin_code/listeningstation.html | 27 +
.../modules/ruins/spaceruin_code/miracle.html | 27 +
.../ruins/spaceruin_code/oldstation.html | 27 +
.../ruins/spaceruin_code/originalcontent.html | 27 +
.../modules/ruins/spaceruin_code/skelter.html | 27 +
.../ruins/spaceruin_code/spacehotel.html | 27 +
.../spaceruin_code/whiteshipruin_box.html | 27 +
code/modules/shielding/helpers.html | 36 +
code/modules/shuttle/supply.html | 37 +
.../spells/spell_types/cone_spells.html | 27 +
.../spells/spell_types/construct_spells.html | 27 +
code/modules/surgery/bone_mending.html | 32 +
code/modules/surgery/burn_dressing.html | 30 +
code/modules/surgery/healing.html | 32 +
code/modules/surgery/limb_augmentation.html | 27 +
code/modules/surgery/organs/eyes.html | 27 +
code/modules/surgery/organs/vocal_cords.html | 49 +
code/modules/surgery/repair_puncture.html | 35 +
code/modules/surgery/robot_healing.html | 27 +
code/modules/tgchat/message.html | 28 +
code/modules/tgchat/to_chat.html | 33 +
code/modules/tgs.html | 40 +
code/modules/tgs/core.html | 34 +
code/modules/tgs/v3210.html | 31 +
code/modules/tgs/v4.html | 31 +
code/modules/tgs/v5.html | 38 +
code/modules/tgui/external.html | 31 +
code/modules/tgui/states.html | 30 +
code/modules/tgui/states/admin.html | 28 +
code/modules/tgui/states/always.html | 28 +
code/modules/tgui/states/conscious.html | 28 +
code/modules/tgui/states/contained.html | 28 +
code/modules/tgui/states/deep_inventory.html | 28 +
code/modules/tgui/states/default.html | 28 +
code/modules/tgui/states/fun.html | 28 +
code/modules/tgui/states/hands.html | 28 +
code/modules/tgui/states/human_adjacent.html | 28 +
code/modules/tgui/states/inventory.html | 28 +
code/modules/tgui/states/language_menu.html | 28 +
code/modules/tgui/states/never.html | 28 +
.../tgui/states/not_incapacitated.html | 28 +
code/modules/tgui/states/notcontained.html | 28 +
code/modules/tgui/states/observer.html | 28 +
code/modules/tgui/states/physical.html | 28 +
code/modules/tgui/states/self.html | 28 +
code/modules/tgui/states/zlevel.html | 28 +
code/modules/tgui/status_composers.html | 56 +
code/modules/tgui/tgui.html | 29 +
code/modules/tgui/tgui_window.html | 28 +
code/modules/tgui_input/alert.html | 33 +
code/modules/tgui_input/list.html | 32 +
code/modules/tgui_input/number.html | 33 +
code/modules/tgui_input/text.html | 32 +
code/modules/tgui_panel/audio.html | 28 +
code/modules/tgui_panel/external.html | 28 +
code/modules/tgui_panel/telemetry.html | 41 +
code/modules/tgui_panel/tgui_panel.html | 30 +
code/modules/unit_tests.html | 71 +
code/modules/unit_tests/_unit_tests.html | 111 +
code/modules/unit_tests/character_saving.html | 32 +
.../unit_tests/create_and_destroy.html | 27 +
.../unit_tests/dynamic_ruleset_sanity.html | 28 +
code/modules/unit_tests/spawn_mobs.html | 27 +
.../unit_tests/tgui_create_message.html | 27 +
code/modules/uplink/uplink_items.html | 27 +
code/modules/vehicles/mecha/_mecha.html | 27 +
.../modules/vehicles/mecha/combat/durand.html | 32 +
.../mecha/equipment/tools/medical_tools.html | 28 +
.../mecha/equipment/tools/other_tools.html | 34 +
.../modules/vehicles/mecha/mecha_actions.html | 28 +
.../mecha/mecha_construction_paths.html | 27 +
code/modules/vehicles/mecha/mecha_parts.html | 35 +
.../vehicles/mecha/mecha_wreckage.html | 27 +
code/modules/vending/_vending.html | 28 +
code/modules/vore/eating/belly_obj.html | 28 +
code/world.html | 27 +
datum.html | 447 +++
datum/SDQL2_query.html | 41 +
datum/abductor_gear.html | 71 +
datum/achievement_data.html | 92 +
datum/action.html | 50 +
datum/action/cooldown.html | 63 +
datum/action/cooldown/bloodsucker.html | 50 +
.../cooldown/bloodsucker/targeted/haste.html | 36 +
datum/action/cooldown/riot.html | 35 +
.../cooldown/spawn_induction_package.html | 36 +
.../ability/humanoid_customization.html | 39 +
datum/action/innate/cult/blood_spell.html | 36 +
datum/action/innate/rune_shatter.html | 36 +
datum/action/item_action/mod.html | 36 +
datum/action/item_action/stickmen.html | 41 +
.../ridden/scooter/skateboard/ollie.html | 36 +
.../vehicle/sealed/mecha/ivanov_strike.html | 96 +
.../action/vehicle/sealed/mecha/skyfall.html | 87 +
datum/action_group.html | 126 +
datum/actionspeed_modifier.html | 64 +
datum/admin_help.html | 36 +
datum/admins.html | 148 +
datum/ai_laws.html | 41 +
datum/antagonist.html | 445 +++
datum/antagonist/changeling.html | 54 +
datum/antagonist/gang.html | 106 +
datum/antagonist/heretic.html | 35 +
datum/antagonist/ninja.html | 72 +
datum/antagonist/rev.html | 50 +
datum/antagonist/traitor.html | 73 +
.../traitor/contractor_support.html | 57 +
datum/asset.html | 35 +
datum/asset/simple.html | 56 +
datum/asset/simple/namespaced.html | 51 +
datum/asset/spritesheet.html | 50 +
datum/asset/spritesheet/decals.html | 74 +
datum/asset_cache_item.html | 65 +
datum/asset_transport.html | 109 +
datum/asset_transport/webroot.html | 80 +
datum/award.html | 78 +
datum/bank_account.html | 56 +
datum/biome.html | 71 +
datum/bitfield.html | 43 +
datum/block_parry_data.html | 552 +++
datum/callback.html | 113 +
datum/centcom_announcer.html | 64 +
datum/centcom_podlauncher.html | 47 +
datum/changelingprofile.html | 36 +
datum/chatmessage.html | 179 +
datum/chemical_reaction.html | 36 +
datum/client_interface.html | 43 +
datum/component.html | 200 +
datum/component/area_sound_manager.html | 57 +
datum/component/bodycamera_holder.html | 72 +
datum/component/combat_mode.html | 114 +
.../construction/mecha/powerarmor.html | 35 +
datum/component/container_item.html | 35 +
datum/component/dejavu.html | 110 +
datum/component/edible.html | 134 +
datum/component/embedded.html | 113 +
datum/component/explodable.html | 56 +
datum/component/field_of_vision.html | 191 +
datum/component/footstep.html | 71 +
datum/component/glory_kill.html | 92 +
datum/component/gps/item.html | 78 +
datum/component/identification.html | 64 +
datum/component/identification/syndicate.html | 29 +
datum/component/interaction_menu_granter.html | 42 +
datum/component/killerqueen.html | 101 +
datum/component/knockback.html | 84 +
datum/component/label.html | 94 +
datum/component/material_container.html | 249 ++
datum/component/mood.html | 49 +
datum/component/multiple_lives.html | 37 +
datum/component/nanites.html | 250 ++
datum/component/omen.html | 62 +
datum/component/pellet_cloud.html | 218 ++
datum/component/personal_crafting.html | 38 +
datum/component/plumbing.html | 164 +
datum/component/plumbing/acclimator.html | 35 +
datum/component/plumbing/filter.html | 35 +
datum/component/pregnancy.html | 64 +
datum/component/pricetag.html | 43 +
datum/component/squeak.html | 57 +
datum/component/storage.html | 173 +
datum/component/storage/concrete/tcg.html | 35 +
datum/component/tackler.html | 177 +
datum/component/twitch_plays.html | 36 +
.../twitch_plays/simple_movement.html | 43 +
datum/component/two_handed.html | 200 +
datum/component/uplink.html | 39 +
datum/component/virtual_reality.html | 128 +
datum/computer_file/program.html | 227 ++
datum/computer_file/program/aidiag.html | 36 +
datum/computer_file/program/arcade.html | 57 +
datum/computer_file/program/borg_monitor.html | 71 +
datum/computer_file/program/budgetorders.html | 106 +
datum/computer_file/program/card_mod.html | 36 +
.../program/portrait_printer.html | 30 +
datum/computer_file/program/radar.html | 120 +
datum/computer_file/program/robocontrol.html | 50 +
datum/computer_file/program/robotact.html | 45 +
datum/computer_file/program/secureye.html | 43 +
datum/computer_file/program/signaler.html | 50 +
.../program/supermatter_monitor.html | 69 +
datum/config_entry.html | 120 +
datum/config_entry/keyed_list.html | 36 +
datum/config_entry/str_list.html | 36 +
datum/config_entry/string.html | 36 +
datum/controller/configuration.html | 35 +
datum/controller/global_vars.html | 454 +++
datum/controller/master.html | 111 +
datum/controller/subsystem.html | 232 ++
datum/controller/subsystem/achievements.html | 50 +
datum/controller/subsystem/atoms.html | 50 +
.../controller/subsystem/communications.html | 55 +
datum/controller/subsystem/discord.html | 194 +
datum/controller/subsystem/economy.html | 66 +
datum/controller/subsystem/input.html | 78 +
datum/controller/subsystem/interactions.html | 42 +
datum/controller/subsystem/job.html | 54 +
datum/controller/subsystem/mapping.html | 80 +
datum/controller/subsystem/materials.html | 85 +
datum/controller/subsystem/min_spawns.html | 36 +
datum/controller/subsystem/npcpool.html | 43 +
datum/controller/subsystem/parallax.html | 81 +
datum/controller/subsystem/persistence.html | 67 +
.../controller/subsystem/processing/dcs.html | 41 +
.../subsystem/processing/instruments.html | 85 +
.../subsystem/processing/station.html | 64 +
datum/controller/subsystem/research.html | 43 +
datum/controller/subsystem/runechat.html | 71 +
.../controller/subsystem/security_level.html | 40 +
datum/controller/subsystem/shuttle.html | 37 +
datum/controller/subsystem/sounds.html | 148 +
datum/controller/subsystem/sun.html | 43 +
datum/controller/subsystem/tgui.html | 202 +
datum/controller/subsystem/ticker.html | 94 +
datum/controller/subsystem/timer.html | 127 +
datum/controller/subsystem/vote.html | 38 +
datum/crafting_recipe.html | 37 +
.../bloodsucker/blackcoffin.html | 38 +
datum/crafting_recipe/silver_stake.html | 38 +
datum/data/vending_product.html | 78 +
datum/datacore.html | 36 +
datum/design.html | 38 +
datum/design/apc_board.html | 29 +
datum/design/beanbag_slug.html | 29 +
datum/design/bucket.html | 29 +
datum/design/kitchen_knife.html | 29 +
datum/design/rods.html | 29 +
datum/design/signaler.html | 29 +
datum/discord_link_record.html | 45 +
datum/ductnet.html | 70 +
datum/dynamic_ruleset.html | 379 ++
.../dynamic_ruleset/latejoin/provocateur.html | 43 +
datum/dynamic_ruleset/midround.html | 43 +
.../dynamic_ruleset/midround/autotraitor.html | 38 +
datum/dynamic_ruleset/midround/families.html | 36 +
.../dynamic_ruleset/midround/from_ghosts.html | 66 +
datum/dynamic_ruleset/roundstart.html | 44 +
.../dynamic_ruleset/roundstart/families.html | 36 +
datum/dynamic_ruleset/roundstart/revs.html | 43 +
datum/dynamic_snapshot.html | 100 +
datum/dynamic_snapshot_ruleset.html | 50 +
datum/eldritch_knowledge.html | 181 +
.../final_eldritch/void_final.html | 43 +
datum/element.html | 61 +
datum/element/bed_tuckable.html | 68 +
datum/element/connect_loc.html | 37 +
.../contextual_screentip_bare_hands.html | 59 +
.../contextual_screentip_item_typechecks.html | 38 +
.../contextual_screentip_sharpness.html | 45 +
datum/element/contextual_screentip_tools.html | 38 +
datum/element/embed.html | 93 +
datum/element/firestacker.html | 36 +
datum/element/flavor_text.html | 50 +
datum/element/item_scaling.html | 118 +
datum/element/mob_holder/micro.html | 35 +
datum/element/object_reskinning.html | 40 +
datum/element/photosynthesis.html | 92 +
datum/element/scavenging.html | 35 +
datum/element/skirt_peeking.html | 35 +
datum/element/strippable.html | 54 +
datum/element/turf_z_transparency.html | 49 +
datum/font.html | 142 +
datum/game_mode.html | 99 +
datum/game_mode/dynamic.html | 554 +++
datum/game_mode/gang.html | 36 +
datum/gang_handler.html | 292 ++
datum/gang_theme.html | 85 +
datum/gas_mixture.html | 36 +
datum/gateway_destination.html | 51 +
datum/gateway_destination/gateway.html | 36 +
datum/gateway_destination/point.html | 36 +
datum/http_request.html | 36 +
datum/hud.html | 120 +
datum/hud/new_player.html | 36 +
datum/instrument.html | 127 +
datum/interaction.html | 71 +
datum/interaction/lewd.html | 43 +
datum/job.html | 151 +
datum/job/mining.html | 36 +
datum/jps_node.html | 78 +
datum/keybinding.html | 43 +
datum/keybinding/living.html | 35 +
datum/language_holder.html | 192 +
datum/lift_master.html | 77 +
datum/lighting_object.html | 50 +
datum/looping_sound.html | 43 +
datum/mafia_controller.html | 555 +++
datum/mafia_role.html | 122 +
datum/map_config.html | 99 +
datum/map_generator.html | 35 +
datum/map_generator/cave_generator.html | 120 +
datum/map_generator/jungle_generator.html | 50 +
datum/map_report.html | 43 +
datum/map_template.html | 51 +
datum/map_template/shuttle.html | 50 +
.../shuttle/emergency/narnar.html | 35 +
datum/martial_art.html | 64 +
datum/martial_art/cqc/blueshield.html | 35 +
datum/martial_art/cqc/under_siege.html | 35 +
datum/martial_art/the_sleeping_carp.html | 53 +
datum/material.html | 237 ++
datum/mind.html | 169 +
datum/mod_theme.html | 162 +
datum/mood_event.html | 36 +
datum/movespeed_modifier.html | 106 +
datum/movespeed_modifier/sprinting.html | 35 +
datum/mutation/human/hulk.html | 40 +
datum/nanite_program.html | 108 +
datum/ntnet_conversation.html | 50 +
datum/objective/door_jack.html | 36 +
datum/objective/hijack.html | 36 +
datum/outfit.html | 328 ++
datum/parallax.html | 50 +
datum/parallax_holder.html | 190 +
datum/parsed_map.html | 71 +
datum/pathfind.html | 154 +
datum/physiology.html | 36 +
datum/plant_gene.html | 35 +
datum/plant_gene/trait.html | 35 +
datum/plant_gene/trait/cell_charge.html | 35 +
datum/plant_gene/trait/eyes.html | 36 +
datum/plant_gene/trait/slip.html | 35 +
datum/powernet.html | 42 +
datum/preferences.html | 309 ++
datum/progressbar.html | 120 +
datum/quirk.html | 110 +
datum/quirk/longtimer.html | 43 +
datum/quirk/nyctophobia.html | 35 +
datum/reagent.html | 39 +
datum/reagent/determination.html | 36 +
datum/reagent/lube.html | 35 +
datum/reagent/medicine/coagulant.html | 43 +
datum/reagent/metalgen.html | 35 +
datum/reagent/water.html | 35 +
datum/reagents.html | 50 +
datum/reality_smash_tracker.html | 86 +
datum/round_event.html | 95 +
datum/round_event/ghost_role/sentience.html | 36 +
datum/round_event/stray_cargo.html | 80 +
datum/round_event/stray_cargo/syndicate.html | 35 +
datum/round_event_control.html | 36 +
datum/rust_spread.html | 38 +
datum/scar.html | 115 +
datum/secrets_menu.html | 35 +
datum/select_equipment.html | 60 +
datum/signal/subspace.html | 63 +
datum/skill.html | 150 +
datum/skill/enum.html | 36 +
datum/skill/level.html | 35 +
datum/skill/numerical.html | 43 +
datum/skill_holder.html | 102 +
datum/skill_modifier.html | 100 +
datum/slaver_gear.html | 64 +
datum/song.html | 525 +++
datum/sortInstance.html | 45 +
datum/species.html | 587 +++
datum/sprite_accessory/snouts/mam_snouts.html | 129 +
.../tails_animated/lizard.html | 35 +
datum/stack_canary.html | 35 +
datum/stack_end_detector.html | 47 +
datum/stack_recipe.html | 113 +
datum/station_trait.html | 127 +
datum/station_trait/bot_languages.html | 35 +
datum/station_trait/ian_adventure.html | 35 +
.../random_event_weight_modifier.html | 50 +
datum/status_effect.html | 64 +
datum/status_effect/cloudstruck.html | 36 +
datum/status_effect/eldritch.html | 51 +
datum/status_effect/eldritch/ash.html | 36 +
datum/status_effect/ice_block_talisman.html | 43 +
datum/status_effect/limp.html | 64 +
datum/status_effect/offering.html | 85 +
datum/status_effect/wound.html | 35 +
datum/strip_menu.html | 57 +
datum/strippable_item.html | 142 +
datum/strippable_item/hand.html | 36 +
datum/strippable_item/mob_item_slot.html | 43 +
.../strippable_item/mob_item_slot/pocket.html | 36 +
datum/summon_weapon.html | 226 ++
datum/summon_weapon_host.html | 85 +
datum/supply_pack/misc/syndicate.html | 50 +
datum/team/gang.html | 71 +
datum/team/revolution.html | 60 +
datum/tgs_api/v5.html | 43 +
datum/tgs_chat_channel.html | 78 +
datum/tgs_chat_command.html | 66 +
datum/tgs_chat_embed/footer.html | 36 +
datum/tgs_chat_embed/media.html | 36 +
datum/tgs_chat_embed/structure.html | 64 +
datum/tgs_chat_user.html | 57 +
datum/tgs_event_handler.html | 44 +
datum/tgs_message_content.html | 43 +
datum/tgs_revision_information.html | 50 +
.../tgs_revision_information/test_merge.html | 78 +
datum/tgs_version.html | 71 +
datum/tgui.html | 263 ++
datum/tgui_alert.html | 95 +
datum/tgui_alert/async.html | 36 +
datum/tgui_input_number.html | 118 +
datum/tgui_input_number/async.html | 43 +
datum/tgui_input_text.html | 110 +
datum/tgui_input_text/async.html | 43 +
datum/tgui_list_input.html | 104 +
datum/tgui_list_input/async.html | 43 +
datum/tgui_panel.html | 132 +
datum/tgui_window.html | 164 +
datum/thrownthing.html | 197 +
datum/timedevent.html | 135 +
datum/traitor_class.html | 43 +
datum/ui_state.html | 40 +
datum/unit_test.html | 66 +
datum/unit_test/binary_insert.html | 35 +
datum/unit_test/container_resist.html | 35 +
datum/unit_test/interactions.html | 35 +
datum/unit_test/machine_disassembly.html | 35 +
datum/unit_test/merge_type.html | 39 +
datum/unit_test/stop_drop_and_roll.html | 35 +
datum/unit_test/test_human_base.html | 35 +
datum/unit_test/test_human_bone.html | 41 +
datum/uplink_item.html | 39 +
datum/wave_explosion.html | 234 ++
datum/weather.html | 313 ++
datum/wires.html | 35 +
datum/wound.html | 397 ++
datum/wound/blunt.html | 113 +
datum/wound/blunt/moderate.html | 42 +
datum/wound/burn.html | 92 +
datum/wound/loss.html | 35 +
datum/wound/pierce.html | 71 +
datum/wound/slash.html | 106 +
dmdoc.css | 112 +
dmdoc.js | 58 +
git.png | Bin 0 -> 2383 bytes
global.html | 1707 ++++++++
image.html | 54 +
index.html | 3455 +++++++++++++++++
interface/fonts/fonts_datum.html | 27 +
interface/fonts/grand_9k.html | 32 +
interface/fonts/license.html | 40 +
interface/fonts/pixellari.html | 32 +
interface/fonts/spess_font.html | 32 +
interface/fonts/tiny_unicode.html | 32 +
mob.html | 1100 ++++++
mob/dead/new_player.html | 92 +
mob/dead/observer.html | 57 +
mob/living.html | 788 ++++
mob/living/brain.html | 42 +
mob/living/carbon.html | 260 ++
mob/living/carbon/alien.html | 66 +
mob/living/carbon/human.html | 190 +
mob/living/silicon.html | 45 +
mob/living/silicon/ai.html | 71 +
mob/living/silicon/robot.html | 435 +++
mob/living/simple_animal.html | 374 ++
mob/living/simple_animal/bot.html | 35 +
mob/living/simple_animal/bot/floorbot.html | 35 +
mob/living/simple_animal/drone.html | 35 +
mob/living/simple_animal/hostile.html | 120 +
.../hostile/asteroid/elite/broodmother.html | 37 +
.../hostile/asteroid/elite/drakeling.html | 35 +
.../hostile/asteroid/elite/herald.html | 37 +
.../hostile/asteroid/elite/legionnaire.html | 37 +
.../hostile/asteroid/elite/minerpriest.html | 35 +
.../hostile/asteroid/elite/pandora.html | 37 +
.../hostile/asteroid/ice_demon.html | 36 +
.../hostile/asteroid/ice_whelp.html | 36 +
.../hostile/asteroid/lobstrosity.html | 30 +
.../hostile/asteroid/polarbear.html | 36 +
.../simple_animal/hostile/asteroid/wolf.html | 36 +
.../simple_animal/hostile/carp/cayenne.html | 45 +
.../simple_animal/hostile/construct.html | 43 +
.../simple_animal/hostile/eldritch.html | 44 +
.../simple_animal/hostile/eldritch/armsy.html | 96 +
.../simple_animal/hostile/guardian.html | 36 +
.../hostile/guardian/gravitokinetic.html | 35 +
.../simple_animal/hostile/megafauna.html | 134 +
.../megafauna/demonic_frost_miner.html | 78 +
.../hostile/megafauna/legion.html | 98 +
.../hostile/megafauna/wendigo.html | 85 +
.../simple_animal/hostile/plaguerat.html | 35 +
.../simple_animal/hostile/regalrat.html | 35 +
.../simple_animal/hostile/space_dragon.html | 300 ++
mob/living/simple_animal/hostile/swarmer.html | 42 +
.../hostile/venus_human_trap.html | 99 +
mob/living/simple_animal/jacq.html | 36 +
mob/living/simple_animal/mouse.html | 42 +
mob/living/simple_animal/parrot.html | 36 +
mob/living/simple_animal/slime.html | 43 +
modular_citadel.html | 29 +
.../projectiles/guns/ballistic/handguns.html | 28 +
.../projectiles/guns/ballistic/rifles.html | 36 +
.../projectiles/guns/ballistic/spinfusor.html | 27 +
.../chemistry/reagents/enlargement.html | 27 +
.../sound/voice/pain emote credits.html | 28 +
.../entries/sandstorm_balance.html | 31 +
.../container_item/container_item.html | 27 +
.../container_item/tank_holder.html | 27 +
.../components/interaction_menu_granter.html | 27 +
.../datums/interactions/_interaction.html | 27 +
modular_sand/code/game/mecha/mecha_parts.html | 27 +
.../code/game/objects/items/fleshlight.html | 31 +
.../code/game/objects/items/plushes.html | 27 +
.../structures/ghost_role_spawners.html | 27 +
.../game/objects/structures/tank_holder.html | 27 +
.../hostile/mining_mobs/elites/candy.html | 32 +
.../hostile/mining_mobs/elites/drakeling.html | 28 +
.../mining_mobs/elites/fanaticminer.html | 28 +
.../modules/reagents/chemistry/reagents.html | 28 +
.../designs/mechfabricator_designs.html | 27 +
.../research/designs/medical_designs.html | 27 +
.../research/designs/telecomms_designs.html | 28 +
.../code/modules/telescience/telepad.html | 27 +
.../icons/mob/cyborg/Drakeborg-licensing.html | 96 +
modular_sand/icons/obj/license.html | 30 +
modular_splurt.html | 28 +
modular_splurt/code/__HELPERS/spawns.html | 28 +
.../code/controllers/subsystem/discord.html | 28 +
modular_splurt/code/datums/dna.html | 28 +
.../datums/interactions/lewd/lewd_datums.html | 27 +
.../code/datums/status_effects/pregnancy.html | 27 +
.../code/game/area/areas/shuttles.html | 27 +
.../game/objects/items/lewd_items/leash.html | 28 +
.../game/objects/items/robot/robot_items.html | 33 +
.../objects/structures/bed_chairs/sofa.html | 33 +
.../objects/structures/cannons/cannon.html | 37 +
.../antagonists/_common/antag_spawner.html | 27 +
.../lewd_clothing/collar/kink_collars.html | 27 +
.../lewd_clothing/foot/lewd_shoes.html | 28 +
.../modules/clothing/misc/body_camera.html | 28 +
.../code/modules/clothing/suits/cloaks.html | 27 +
.../modules/discord/discord_link_record.html | 27 +
.../modules/jobs/job_types/blueshield.html | 27 +
.../modules/mapping/modular_map_loader.html | 115 +
.../sprite_accesories/body_markings.html | 28 +
.../living/silicon/robot/robot_modules.html | 27 +
.../designs/mechfabricator_designs.html | 27 +
.../mecha/combat/savannah_ivanov.html | 45 +
.../modules/vehicles/mecha/mecha_parts.html | 28 +
.../sound/voice/catpeople/credits.html | 28 +
obj.html | 114 +
obj/belly.html | 38 +
obj/docking_port.html | 140 +
obj/docking_port/mobile.html | 140 +
obj/docking_port/stationary/picked.html | 36 +
obj/docking_port/stationary/random.html | 43 +
obj/durand_shield.html | 66 +
obj/effect/abstract/parry.html | 36 +
obj/effect/anomaly.html | 36 +
obj/effect/broken_illusion.html | 35 +
obj/effect/decal/chempuff.html | 35 +
obj/effect/decal/cleanable.html | 66 +
.../decal/cleanable/conveyor_sorter.html | 50 +
obj/effect/eldritch.html | 36 +
obj/effect/landmark/start/hangover.html | 43 +
obj/effect/mapping_helpers/custom_icon.html | 71 +
.../mapping_helpers/network_builder.html | 50 +
.../network_builder/atmos_pipe.html | 64 +
.../network_builder/power_cable.html | 57 +
.../mapping_helpers/trait_injector.html | 57 +
obj/effect/mine.html | 36 +
obj/effect/mob_spawn.html | 35 +
obj/effect/overlay/vis.html | 43 +
obj/effect/proc_holder/spell.html | 41 +
obj/effect/proc_holder/spell/cone.html | 85 +
obj/effect/proc_holder/spell/pointed.html | 92 +
.../spell/pointed/barnyardcurse.html | 36 +
.../spell/pointed/mind_transfer.html | 43 +
.../spell/targeted/fire_sworn.html | 50 +
obj/effect/reality_smash.html | 71 +
obj/effect/skyfall_landingzone.html | 43 +
obj/item.html | 648 ++++
obj/item/airlock_painter.html | 50 +
obj/item/airlock_painter/decal.html | 125 +
obj/item/airlock_painter/decal/tile.html | 43 +
obj/item/ammo_casing.html | 36 +
obj/item/assembly.html | 42 +
obj/item/assembly/control.html | 50 +
.../assembly/control/electrochromatic.html | 36 +
obj/item/assembly/signaler.html | 43 +
obj/item/barcode.html | 36 +
obj/item/bodycam_upgrade.html | 37 +
obj/item/bodypart.html | 230 ++
obj/item/book/random.html | 43 +
obj/item/borg/upgrade.html | 50 +
obj/item/borg_shapeshifter.html | 39 +
obj/item/bounty_cube.html | 127 +
obj/item/broom.html | 42 +
obj/item/canvas.html | 36 +
obj/item/cardboard_cutout.html | 74 +
obj/item/cardpack.html | 71 +
obj/item/chainsaw.html | 42 +
obj/item/chisel.html | 50 +
obj/item/circuitboard.html | 47 +
obj/item/clipboard.html | 67 +
obj/item/clipboard/cyborg.html | 50 +
obj/item/clothing.html | 96 +
obj/item/clothing/glasses/hud.html | 36 +
.../clothing/gloves/fingerless/pugilist.html | 71 +
obj/item/clothing/gloves/mod.html | 35 +
obj/item/clothing/gloves/space_ninja.html | 96 +
obj/item/clothing/gloves/tackler.html | 78 +
obj/item/clothing/head.html | 48 +
.../head/helmet/space/hardsuit/mining.html | 37 +
.../clothing/head/helmet/space/plasmaman.html | 35 +
.../head/helmet/space/space_ninja.html | 29 +
obj/item/clothing/head/ushanka.html | 43 +
obj/item/clothing/mask.html | 37 +
obj/item/clothing/mask/chameleon.html | 36 +
obj/item/clothing/mask/facehugger/toy.html | 29 +
obj/item/clothing/mask/gas/space_ninja.html | 29 +
obj/item/clothing/mask/void_mask.html | 36 +
obj/item/clothing/neck/eldritch_amulet.html | 36 +
.../clothing/neck/necklace/dope/merchant.html | 43 +
obj/item/clothing/shoes.html | 98 +
obj/item/clothing/shoes/mod.html | 35 +
obj/item/clothing/shoes/space_ninja.html | 30 +
obj/item/clothing/suit/hooded.html | 36 +
obj/item/clothing/suit/space/space_ninja.html | 282 ++
obj/item/computer_hardware.html | 42 +
obj/item/computer_hardware/ai_slot.html | 35 +
obj/item/computer_hardware/battery.html | 35 +
obj/item/computer_hardware/card_slot.html | 42 +
obj/item/construction/plumbing.html | 57 +
obj/item/conveyor_sorter.html | 43 +
obj/item/coupon.html | 35 +
obj/item/cult_spear.html | 42 +
obj/item/defibrillator.html | 71 +
obj/item/dualsaber.html | 54 +
obj/item/dyespray.html | 39 +
obj/item/eldritch_potion.html | 43 +
obj/item/electronics/airlock.html | 57 +
.../electronics/electrochromatic_kit.html | 36 +
obj/item/energy_katana.html | 46 +
obj/item/extinguisher.html | 36 +
obj/item/fireaxe.html | 42 +
obj/item/flashlight/pen/paramedic.html | 50 +
obj/item/forbidden_book.html | 71 +
obj/item/gang_induction_package.html | 64 +
obj/item/genital_equipment.html | 56 +
obj/item/grenade.html | 71 +
obj/item/grenade/primer.html | 43 +
obj/item/gun.html | 139 +
obj/item/gun/ballistic.html | 35 +
obj/item/gun/energy.html | 71 +
obj/item/gun/energy/beam_rifle.html | 36 +
obj/item/hand_item/circlegame.html | 56 +
obj/item/hand_item/kisser.html | 43 +
obj/item/hand_item/slapper.html | 35 +
.../hand_item/slapper/secret_handshake.html | 64 +
obj/item/hardened_spike.html | 36 +
obj/item/kinetic_crusher.html | 42 +
obj/item/kinetic_crusher/glaive.html | 42 +
obj/item/kitchen/knife/bloodletter.html | 36 +
obj/item/lipstick.html | 36 +
obj/item/living_heart.html | 36 +
obj/item/mail.html | 127 +
obj/item/mail/junkmail.html | 35 +
obj/item/mecha_parts/chassis/powerarmor.html | 29 +
obj/item/mecha_parts/mecha_equipment.html | 50 +
.../ballistic/launcher/punching_glove.html | 43 +
obj/item/mecha_parts/mecha_tracking.html | 71 +
obj/item/melee/baton.html | 36 +
obj/item/melee/classic_baton.html | 36 +
obj/item/melee/rune_knife.html | 71 +
obj/item/melee/skateboard.html | 36 +
obj/item/melee/transforming/cleaving_saw.html | 50 +
.../transforming/energy/sword/saber.html | 35 +
obj/item/milking_machine.html | 35 +
obj/item/mining_voucher.html | 29 +
obj/item/mjollnir.html | 42 +
obj/item/mod/control.html | 313 ++
obj/item/mod/module.html | 337 ++
obj/item/mod/module/anomaly_locked.html | 50 +
.../mod/module/anomaly_locked/teleporter.html | 36 +
obj/item/mod/module/clamp.html | 50 +
obj/item/mod/module/dispenser.html | 43 +
obj/item/mod/module/dna_lock.html | 38 +
obj/item/mod/module/drill.html | 36 +
obj/item/mod/module/flashlight.html | 50 +
obj/item/mod/module/health_analyzer.html | 43 +
obj/item/mod/module/holster.html | 37 +
obj/item/mod/module/jetpack.html | 43 +
obj/item/mod/module/magboot.html | 36 +
obj/item/mod/module/magnetic_harness.html | 50 +
obj/item/mod/module/megaphone.html | 36 +
obj/item/mod/module/mister.html | 36 +
obj/item/mod/module/mouthhole.html | 43 +
obj/item/mod/module/orebag.html | 36 +
obj/item/mod/module/paper_dispenser.html | 36 +
obj/item/mod/module/springlock.html | 50 +
obj/item/mod/module/stealth.html | 43 +
obj/item/mod/module/storage.html | 36 +
obj/item/mod/module/t_ray.html | 36 +
obj/item/mod/module/visor.html | 43 +
obj/item/modular_computer.html | 108 +
.../modular_computer/tablet/integrated.html | 63 +
obj/item/modular_computer/tablet/nukeops.html | 35 +
.../preset/uplink.html | 35 +
obj/item/nullrod.html | 50 +
obj/item/organ.html | 92 +
obj/item/organ/brain.html | 43 +
obj/item/organ/eyes.html | 35 +
obj/item/organ/genital.html | 43 +
obj/item/paper.html | 111 +
obj/item/paper/natural.html | 35 +
obj/item/pet_carrier/bluespace.html | 57 +
obj/item/pinpointer.html | 36 +
obj/item/pitchfork.html | 42 +
obj/item/price_tagger.html | 36 +
obj/item/projectile.html | 440 +++
obj/item/projectile/frost_orb.html | 35 +
obj/item/projectile/kiss.html | 39 +
obj/item/projectile/tether.html | 36 +
obj/item/raw_anomaly_core.html | 51 +
obj/item/rcl.html | 42 +
obj/item/reagent_containers/food.html | 31 +
obj/item/reagent_containers/food/snacks.html | 73 +
.../reagent_containers/food/snacks/donut.html | 35 +
obj/item/reagent_containers/spray.html | 50 +
obj/item/reagent_containers/syringe.html | 35 +
obj/item/relic.html | 35 +
obj/item/restraints.html | 36 +
obj/item/restraints/legcuffs/bola.html | 39 +
obj/item/resurrection_crystal.html | 35 +
obj/item/reverse_bear_trap.html | 35 +
obj/item/robot_module.html | 46 +
obj/item/robot_suit.html | 37 +
obj/item/rtl.html | 42 +
obj/item/sales_tagger.html | 59 +
obj/item/seeds.html | 66 +
obj/item/shield.html | 92 +
obj/item/shield/riot/implant.html | 35 +
obj/item/shockpaddles.html | 42 +
obj/item/singularityhammer.html | 42 +
obj/item/soulstone.html | 49 +
obj/item/spear.html | 42 +
obj/item/stack.html | 198 +
obj/item/stack/cannonball.html | 36 +
obj/item/stack/conveyor.html | 36 +
obj/item/stack/ducts.html | 50 +
obj/item/stack/license_plates/filled.html | 35 +
obj/item/stack/medical.html | 64 +
obj/item/stack/medical/mesh.html | 36 +
obj/item/stack/sheet.html | 72 +
obj/item/stack/tile.html | 57 +
obj/item/staff/bostaff.html | 42 +
obj/item/stock_parts/cell.html | 43 +
obj/item/storage/book/bible.html | 36 +
obj/item/storage/box/papersack.html | 48 +
obj/item/storage/fancy/rollingpapers.html | 43 +
obj/item/storage/pod.html | 35 +
obj/item/storage/portable_chem_mixer.html | 74 +
obj/item/storage/toolbox/mechanical.html | 36 +
obj/item/summon.html | 73 +
obj/item/tank.html | 36 +
obj/item/throwing_star/stamina/ninja.html | 37 +
obj/item/toy/cards/cardhand.html | 46 +
obj/item/toy/crayon.html | 35 +
obj/item/toy/plush.html | 36 +
obj/item/transfer_valve.html | 35 +
obj/item/uplink.html | 38 +
obj/item/vibro_weapon.html | 42 +
obj/machinery.html | 52 +
obj/machinery/abductor/console.html | 57 +
obj/machinery/abductor/experiment.html | 52 +
obj/machinery/atmospherics.html | 35 +
.../components/unary/cryo_cell.html | 36 +
.../atmospherics/components/unary/tank.html | 36 +
.../atmospherics/pipe/simple/multiz.html | 35 +
obj/machinery/autolathe.html | 36 +
obj/machinery/biogenerator.html | 47 +
obj/machinery/computer/arcade/battle.html | 169 +
obj/machinery/computer/camera_advanced.html | 36 +
.../camera_advanced/shuttle_docker.html | 35 +
obj/machinery/computer/cargo.html | 71 +
obj/machinery/computer/communications.html | 155 +
obj/machinery/computer/cryopod.html | 36 +
obj/machinery/computer/piratepad_control.html | 36 +
.../computer/piratepad_control/civilian.html | 56 +
obj/machinery/computer/pod.html | 78 +
obj/machinery/computer/rdconsole.html | 36 +
obj/machinery/computer/scan_consolenew.html | 632 +++
obj/machinery/computer/security.html | 43 +
obj/machinery/computer/shuttle.html | 71 +
obj/machinery/computer/shuttle/pod.html | 40 +
obj/machinery/computer/slavery.html | 43 +
obj/machinery/computer/vaultcontroller.html | 84 +
obj/machinery/cryopod.html | 50 +
obj/machinery/door.html | 36 +
obj/machinery/door/airlock.html | 52 +
.../door/airlock/vault/derelict.html | 35 +
obj/machinery/door/keycard.html | 43 +
.../doppler_array/research/science.html | 36 +
obj/machinery/duct.html | 232 ++
obj/machinery/duct/multilayered.html | 35 +
obj/machinery/gateway.html | 78 +
obj/machinery/gear_painter.html | 71 +
obj/machinery/gravity_generator/part.html | 35 +
obj/machinery/holopad.html | 148 +
obj/machinery/hydroponics.html | 60 +
obj/machinery/hypnochair.html | 71 +
obj/machinery/limbgrower.html | 95 +
obj/machinery/mecha_part_fabricator.html | 302 ++
obj/machinery/medipen_refiller.html | 57 +
obj/machinery/mineral.html | 92 +
.../mineral/labor_claim_console.html | 50 +
.../mineral/stacking_unit_console.html | 43 +
obj/machinery/modular_computer.html | 120 +
obj/machinery/modular_computer/console.html | 36 +
.../console/preset/cargochat.html | 36 +
obj/machinery/navbeacon.html | 35 +
obj/machinery/photocopier.html | 214 +
obj/machinery/plate_press.html | 35 +
obj/machinery/plumbing.html | 67 +
obj/machinery/plumbing/acclimator.html | 73 +
obj/machinery/plumbing/bottler.html | 71 +
obj/machinery/plumbing/disposer.html | 41 +
obj/machinery/plumbing/fermenter.html | 36 +
obj/machinery/plumbing/filter.html | 57 +
obj/machinery/plumbing/liquid_pump.html | 71 +
obj/machinery/plumbing/pill_press.html | 113 +
obj/machinery/plumbing/reaction_chamber.html | 45 +
obj/machinery/plumbing/splitter.html | 50 +
obj/machinery/plumbing/synthesizer.html | 64 +
obj/machinery/pool/controller.html | 176 +
obj/machinery/pool/drain.html | 99 +
obj/machinery/porta_turret.html | 274 ++
.../portable_atmospherics/canister.html | 52 +
obj/machinery/power/apc.html | 80 +
obj/machinery/power/deck_relay.html | 64 +
obj/machinery/power/solar.html | 42 +
obj/machinery/power/solar_control.html | 57 +
obj/machinery/power/supermatter_crystal.html | 342 ++
obj/machinery/power/tracker.html | 35 +
obj/machinery/recharger.html | 36 +
.../research/explosive_compressor.html | 77 +
obj/machinery/seed_extractor.html | 65 +
obj/machinery/smartfridge.html | 50 +
obj/machinery/status_display.html | 77 +
obj/machinery/status_display/ai.html | 36 +
obj/machinery/suit_storage_unit.html | 149 +
obj/machinery/turretid.html | 78 +
obj/machinery/vending.html | 423 ++
obj/machinery/vending/custom.html | 50 +
obj/modular_map_root.html | 50 +
.../alien/resin/flower_bud_enemy.html | 48 +
obj/structure/bed/double.html | 36 +
obj/structure/bloodsucker/candelabrum.html | 35 +
obj/structure/bookcase.html | 50 +
obj/structure/cable.html | 35 +
obj/structure/cannon.html | 36 +
obj/structure/carp_rift.html | 106 +
obj/structure/carving_block.html | 71 +
obj/structure/closet.html | 49 +
obj/structure/closet/crate/mail.html | 43 +
obj/structure/closet/crate/mail/economy.html | 35 +
obj/structure/closet/crate/secure/owned.html | 57 +
.../closet/secure_closet/cargo/owned.html | 57 +
obj/structure/closet/supplypod.html | 36 +
obj/structure/displaycase/forsale.html | 50 +
obj/structure/eldritch_crucible.html | 57 +
obj/structure/energy_net.html | 39 +
obj/structure/filingcabinet/employment.html | 36 +
obj/structure/filingcabinet/medical.html | 36 +
obj/structure/flora/rock.html | 43 +
obj/structure/fluff/iced_abductor.html | 36 +
obj/structure/glowshroom.html | 111 +
obj/structure/grille.html | 35 +
obj/structure/janitorialcart.html | 39 +
obj/structure/legionturret.html | 78 +
obj/structure/loom.html | 35 +
obj/structure/noticeboard.html | 48 +
obj/structure/railing.html | 43 +
obj/structure/safe.html | 113 +
obj/structure/sign/painting.html | 43 +
obj/structure/spawner/ice_moon.html | 49 +
obj/structure/statue.html | 50 +
obj/structure/statue/custom.html | 36 +
obj/structure/table.html | 37 +
obj/structure/tank_holder.html | 45 +
obj/structure/trap/eldritch.html | 43 +
obj/structure/window.html | 43 +
obj/vehicle/ridden/scooter/skateboard.html | 71 +
obj/vehicle/sealed/car/clowncar.html | 132 +
obj/vehicle/sealed/mecha.html | 574 +++
obj/vehicle/sealed/mecha/combat/durand.html | 44 +
.../sealed/mecha/combat/savannah_ivanov.html | 30 +
obj/vehicle/sealed/mecha/working.html | 36 +
obj/vehicle/sealed/mecha/working/ripley.html | 72 +
procpath.html | 73 +
tools/CreditsTool/remappings.html | 57 +
tools/HitboxExpander.html | 34 +
tools/LinuxOneShot.html | 107 +
tools/Redirector/config.html | 39 +
tools/Redirector/textprocs.html | 36 +
...-11-27-unquoted_list_associations_log.html | 2994 ++++++++++++++
tools/UnstandardnessTestForDM.html | 31 +
...nessTestForDM.csproj.FileListAbsolute.html | 45 +
tools/UpdatePaths/apc_pixel_offsets.html | 31 +
tools/UpdatePaths/bridge_to_command.html | 44 +
tools/UpdatePaths/cornersfix.html | 57 +
tools/UpdatePaths/turfs2decals.html | 494 +++
tools/build.html | 51 +
tools/changelog/requirements.html | 31 +
tools/ci/ci_config.html | 36 +
tools/hooks.html | 48 +
tools/mapmerge2.html | 73 +
tools/midi2piano.html | 60 +
tools/minibot/LICENCE-bot_folder.html | 32 +
tools/requirements.html | 34 +
turf.html | 83 +
turf/closed.html | 43 +
turf/closed/indestructible/splashscreen.html | 35 +
turf/closed/mineral.html | 35 +
turf/closed/wall.html | 64 +
turf/open.html | 73 +
turf/open/floor.html | 71 +
turf/open/floor/catwalk_floor.html | 31 +
turf/open/floor/glass.html | 35 +
turf/open/floor/plating/asteroid.html | 78 +
turf/open/lava.html | 71 +
turf/open/openspace/icemoon.html | 43 +
turf/open/space.html | 36 +
turf/open/space/transparent.html | 35 +
turf/open/space/transparent/openspace.html | 35 +
turf/open/water/cursed_spring.html | 38 +
world.html | 57 +
1606 files changed, 102308 insertions(+)
create mode 100644 .nojekyll
create mode 100644 CNAME
create mode 100644 area.html
create mode 100644 area/space.html
create mode 100644 atom.html
create mode 100644 atom/movable.html
create mode 100644 atom/movable/emissive_blocker.html
create mode 100644 atom/movable/fov_holder.html
create mode 100644 atom/movable/screen.html
create mode 100644 atom/movable/screen/action_landing.html
create mode 100644 atom/movable/screen/alert.html
create mode 100644 atom/movable/screen/alert/give.html
create mode 100644 atom/movable/screen/alert/give/highfive.html
create mode 100644 atom/movable/screen/alert/status_effect/pregnancy.html
create mode 100644 atom/movable/screen/button_palette.html
create mode 100644 atom/movable/screen/combattoggle.html
create mode 100644 atom/movable/screen/fullscreen.html
create mode 100644 atom/movable/screen/fullscreen/scaled.html
create mode 100644 atom/movable/screen/inventory.html
create mode 100644 atom/movable/screen/lobby.html
create mode 100644 atom/movable/screen/lobby/button.html
create mode 100644 atom/movable/screen/lobby/button/bottom/poll.html
create mode 100644 atom/movable/screen/lobby/button/collapse.html
create mode 100644 atom/movable/screen/lobby/button/ready.html
create mode 100644 atom/movable/screen/lobby/shutter.html
create mode 100644 atom/movable/screen/movable.html
create mode 100644 atom/movable/screen/movable/action_button.html
create mode 100644 atom/movable/screen/palette_scroll.html
create mode 100644 atom/movable/screen/parallax_layer.html
create mode 100644 atom/movable/screen/storage/volumetric_box/center.html
create mode 100644 atom/movable/screen/wanted.html
create mode 100644 atom/movable/summon_weapon_effect.html
create mode 100644 client.html
create mode 100644 code/__DEFINES/DNA.html
create mode 100644 code/__DEFINES/MC.html
create mode 100644 code/__DEFINES/_flags/_flags.html
create mode 100644 code/__DEFINES/_flags/do_after.html
create mode 100644 code/__DEFINES/_flags/item_flags.html
create mode 100644 code/__DEFINES/_flags/obj_flags.html
create mode 100644 code/__DEFINES/_flags/return_values.html
create mode 100644 code/__DEFINES/_flags/shields.html
create mode 100644 code/__DEFINES/_tick.html
create mode 100644 code/__DEFINES/admin.html
create mode 100644 code/__DEFINES/admin/keybindings.html
create mode 100644 code/__DEFINES/antagonists.html
create mode 100644 code/__DEFINES/callbacks.html
create mode 100644 code/__DEFINES/cargo.html
create mode 100644 code/__DEFINES/color/colors.html
create mode 100644 code/__DEFINES/color/lum.html
create mode 100644 code/__DEFINES/combat.html
create mode 100644 code/__DEFINES/combat/attack_types.html
create mode 100644 code/__DEFINES/combat/block.html
create mode 100644 code/__DEFINES/combat/block_parry.html
create mode 100644 code/__DEFINES/combat/stamina_combat.html
create mode 100644 code/__DEFINES/configuration.html
create mode 100644 code/__DEFINES/cooldowns.html
create mode 100644 code/__DEFINES/dcs/flags.html
create mode 100644 code/__DEFINES/dcs/helpers.html
create mode 100644 code/__DEFINES/dcs/signals.html
create mode 100644 code/__DEFINES/dcs/signals/signals_action.html
create mode 100644 code/__DEFINES/dcs/signals/signals_atom/signals_atom_main.html
create mode 100644 code/__DEFINES/dcs/signals/signals_atom/signals_atom_mouse.html
create mode 100644 code/__DEFINES/dcs/signals/signals_atom/signals_atom_movement.html
create mode 100644 code/__DEFINES/dcs/signals/signals_global.html
create mode 100644 code/__DEFINES/dcs/signals/signals_hud.html
create mode 100644 code/__DEFINES/dcs/signals/signals_medical.html
create mode 100644 code/__DEFINES/dcs/signals/signals_mob/signals_mob_living.html
create mode 100644 code/__DEFINES/dcs/signals/signals_mob/signals_mob_main.html
create mode 100644 code/__DEFINES/dcs/signals/signals_mod.html
create mode 100644 code/__DEFINES/dcs/signals/signals_movable.html
create mode 100644 code/__DEFINES/dcs/signals/signals_painting.html
create mode 100644 code/__DEFINES/dcs/signals/signals_reagent.html
create mode 100644 code/__DEFINES/dcs/signals/signals_screentips.html
create mode 100644 code/__DEFINES/dcs/signals/signals_subsystem.html
create mode 100644 code/__DEFINES/dynamic.html
create mode 100644 code/__DEFINES/economy.html
create mode 100644 code/__DEFINES/events.html
create mode 100644 code/__DEFINES/exosuit_fabs.html
create mode 100644 code/__DEFINES/explosion.html
create mode 100644 code/__DEFINES/fonts.html
create mode 100644 code/__DEFINES/hud.html
create mode 100644 code/__DEFINES/instruments.html
create mode 100644 code/__DEFINES/inventory.html
create mode 100644 code/__DEFINES/is_helpers.html
create mode 100644 code/__DEFINES/layers_planes.html
create mode 100644 code/__DEFINES/lighting.html
create mode 100644 code/__DEFINES/maps.html
create mode 100644 code/__DEFINES/material/worth.html
create mode 100644 code/__DEFINES/materials.html
create mode 100644 code/__DEFINES/maths.html
create mode 100644 code/__DEFINES/mecha.html
create mode 100644 code/__DEFINES/misc.html
create mode 100644 code/__DEFINES/mobs.html
create mode 100644 code/__DEFINES/mobs/innate_abilities.html
create mode 100644 code/__DEFINES/mobs/slowdowns.html
create mode 100644 code/__DEFINES/mod.html
create mode 100644 code/__DEFINES/movement.html
create mode 100644 code/__DEFINES/nanites.html
create mode 100644 code/__DEFINES/overlays.html
create mode 100644 code/__DEFINES/pinpointers.html
create mode 100644 code/__DEFINES/power.html
create mode 100644 code/__DEFINES/procpath.html
create mode 100644 code/__DEFINES/projectiles.html
create mode 100644 code/__DEFINES/qdel.html
create mode 100644 code/__DEFINES/reagents.html
create mode 100644 code/__DEFINES/research/anomalies.html
create mode 100644 code/__DEFINES/research/stock_parts.html
create mode 100644 code/__DEFINES/robots.html
create mode 100644 code/__DEFINES/rust_g.html
create mode 100644 code/__DEFINES/screentips.html
create mode 100644 code/__DEFINES/skills/defines.html
create mode 100644 code/__DEFINES/skills/helpers.html
create mode 100644 code/__DEFINES/sound.html
create mode 100644 code/__DEFINES/spaceman_dmm.html
create mode 100644 code/__DEFINES/station.html
create mode 100644 code/__DEFINES/status_effects.html
create mode 100644 code/__DEFINES/storage/_storage.html
create mode 100644 code/__DEFINES/storage/volumetrics.html
create mode 100644 code/__DEFINES/strippable.html
create mode 100644 code/__DEFINES/subsystems.html
create mode 100644 code/__DEFINES/text.html
create mode 100644 code/__DEFINES/tgs.html
create mode 100644 code/__DEFINES/tgui.html
create mode 100644 code/__DEFINES/traits.html
create mode 100644 code/__DEFINES/traits/sources.html
create mode 100644 code/__DEFINES/uplink.html
create mode 100644 code/__DEFINES/vehicles.html
create mode 100644 code/__DEFINES/voreconstants.html
create mode 100644 code/__DEFINES/wounds.html
create mode 100644 code/__HELPERS/_lists.html
create mode 100644 code/__HELPERS/_logging.html
create mode 100644 code/__HELPERS/areas.html
create mode 100644 code/__HELPERS/chat.html
create mode 100644 code/__HELPERS/clients.html
create mode 100644 code/__HELPERS/files.html
create mode 100644 code/__HELPERS/game.html
create mode 100644 code/__HELPERS/global_lists.html
create mode 100644 code/__HELPERS/icons.html
create mode 100644 code/__HELPERS/lighting.html
create mode 100644 code/__HELPERS/matrices/color_matrix.html
create mode 100644 code/__HELPERS/matrices/transform_matrix.html
create mode 100644 code/__HELPERS/mobs.html
create mode 100644 code/__HELPERS/nameof.html
create mode 100644 code/__HELPERS/names.html
create mode 100644 code/__HELPERS/path.html
create mode 100644 code/__HELPERS/priority_announce.html
create mode 100644 code/__HELPERS/radio.html
create mode 100644 code/__HELPERS/sanitize_values.html
create mode 100644 code/__HELPERS/screen_objs.html
create mode 100644 code/__HELPERS/text.html
create mode 100644 code/__HELPERS/type2type.html
create mode 100644 code/__HELPERS/unsorted.html
create mode 100644 code/__HELPERS/verbs.html
create mode 100644 code/__HELPERS/view.html
create mode 100644 code/__HELPERS/weakref.html
create mode 100644 code/__SANDCODE/DEFINES/chat.html
create mode 100644 code/__SANDCODE/DEFINES/dcs/signals/lewd.html
create mode 100644 code/__SANDCODE/DEFINES/lewd.html
create mode 100644 code/__SANDCODE/DEFINES/loadout.html
create mode 100644 code/__SANDCODE/DEFINES/medical_defines.html
create mode 100644 code/__SANDCODE/DEFINES/misc.html
create mode 100644 code/__SANDCODE/DEFINES/mobs.html
create mode 100644 code/__SANDCODE/DEFINES/signals.html
create mode 100644 code/__SANDCODE/DEFINES/status_effects.html
create mode 100644 code/__SANDCODE/DEFINES/strippable.html
create mode 100644 code/__SANDCODE/DEFINES/traits.html
create mode 100644 code/__SANDCODE/DEFINES/wires.html
create mode 100644 code/__SPLURTCODE/DEFINES/colors.html
create mode 100644 code/__SPLURTCODE/DEFINES/configuration.html
create mode 100644 code/__SPLURTCODE/DEFINES/dcs/signals.html
create mode 100644 code/__byond_version_compat.html
create mode 100644 code/_globalvars/bitfields.html
create mode 100644 code/_globalvars/lists/keybindings.html
create mode 100644 code/_globalvars/lists/typecache.html
create mode 100644 code/_onclick/hud/action_button.html
create mode 100644 code/_onclick/hud/alert.html
create mode 100644 code/_onclick/hud/map_popups.html
create mode 100644 code/_onclick/hud/new_player.html
create mode 100644 code/_onclick/hud/plane_master.html
create mode 100644 code/_rendering/atom_huds/alternate_appearance.html
create mode 100644 code/_rendering/parallax/parallax.html
create mode 100644 code/_rendering/parallax/parallax_holder.html
create mode 100644 code/controllers/configuration/config_entry.html
create mode 100644 code/controllers/configuration/entries/comms.html
create mode 100644 code/controllers/configuration/entries/debris.html
create mode 100644 code/controllers/configuration/entries/general.html
create mode 100644 code/controllers/configuration/entries/logging.html
create mode 100644 code/controllers/configuration/entries/movespeed.html
create mode 100644 code/controllers/configuration/entries/persistence.html
create mode 100644 code/controllers/configuration/entries/policy.html
create mode 100644 code/controllers/configuration/entries/respawns.html
create mode 100644 code/controllers/configuration/entries/stamina_combat.html
create mode 100644 code/controllers/configuration/entries/vote.html
create mode 100644 code/controllers/failsafe.html
create mode 100644 code/controllers/hooks.html
create mode 100644 code/controllers/master.html
create mode 100644 code/controllers/subsystem.html
create mode 100644 code/controllers/subsystem/chat.html
create mode 100644 code/controllers/subsystem/garbage.html
create mode 100644 code/controllers/subsystem/materials.html
create mode 100644 code/controllers/subsystem/overlays.html
create mode 100644 code/controllers/subsystem/persistence/_persistence.html
create mode 100644 code/controllers/subsystem/processing/fastprocess.html
create mode 100644 code/controllers/subsystem/runechat.html
create mode 100644 code/controllers/subsystem/tgui.html
create mode 100644 code/controllers/subsystem/timer.html
create mode 100644 code/datums/achievements/_achievement_data.html
create mode 100644 code/datums/achievements/_awards.html
create mode 100644 code/datums/achievements/mafia_achievements.html
create mode 100644 code/datums/achievements/misc_scores.html
create mode 100644 code/datums/announcers/_announcer.html
create mode 100644 code/datums/brain_damage/split_personality.html
create mode 100644 code/datums/browser.html
create mode 100644 code/datums/callback.html
create mode 100644 code/datums/chatmessage.html
create mode 100644 code/datums/components.html
create mode 100644 code/datums/components/_component.html
create mode 100644 code/datums/components/area_sound_manager.html
create mode 100644 code/datums/components/butchering.html
create mode 100644 code/datums/components/combat_mode.html
create mode 100644 code/datums/components/crafting/glassware/glassware.html
create mode 100644 code/datums/components/crafting/recipes/recipes_weapon_and_ammo.html
create mode 100644 code/datums/components/dejavu.html
create mode 100644 code/datums/components/edible.html
create mode 100644 code/datums/components/explodable.html
create mode 100644 code/datums/components/fantasy/suffixes.html
create mode 100644 code/datums/components/field_of_vision.html
create mode 100644 code/datums/components/footstep.html
create mode 100644 code/datums/components/fried.html
create mode 100644 code/datums/components/gps.html
create mode 100644 code/datums/components/identification.html
create mode 100644 code/datums/components/killerqueen.html
create mode 100644 code/datums/components/label.html
create mode 100644 code/datums/components/material_container.html
create mode 100644 code/datums/components/multiple_lives.html
create mode 100644 code/datums/components/nanites.html
create mode 100644 code/datums/components/omen.html
create mode 100644 code/datums/components/plumbing/_plumbing.html
create mode 100644 code/datums/components/plumbing/filter.html
create mode 100644 code/datums/components/riding.html
create mode 100644 code/datums/components/storage/concrete/tcg.html
create mode 100644 code/datums/components/tackle.html
create mode 100644 code/datums/components/thermite.html
create mode 100644 code/datums/components/twitch_plays.html
create mode 100644 code/datums/components/twohanded.html
create mode 100644 code/datums/components/uplink.html
create mode 100644 code/datums/components/virtual_reality.html
create mode 100644 code/datums/datum.html
create mode 100644 code/datums/dna.html
create mode 100644 code/datums/ductnet.html
create mode 100644 code/datums/elements/_element.html
create mode 100644 code/datums/elements/bed_tucking.html
create mode 100644 code/datums/elements/connect_loc.html
create mode 100644 code/datums/elements/dwarfism.html
create mode 100644 code/datums/elements/firestacker.html
create mode 100644 code/datums/elements/item_scaling.html
create mode 100644 code/datums/elements/screentips.html
create mode 100644 code/datums/elements/screentips/contextual_screentip_bare_hands.html
create mode 100644 code/datums/elements/screentips/contextual_screentip_item_typechecks.html
create mode 100644 code/datums/elements/screentips/contextual_screentip_sharpness.html
create mode 100644 code/datums/elements/screentips/contextual_screentip_tools.html
create mode 100644 code/datums/elements/strippable.html
create mode 100644 code/datums/elements/swimming.html
create mode 100644 code/datums/elements/weather_listener.html
create mode 100644 code/datums/explosion2.html
create mode 100644 code/datums/forced_movement.html
create mode 100644 code/datums/helper_datums/stack_end_detector.html
create mode 100644 code/datums/mapgen/JungleGenerator.html
create mode 100644 code/datums/mapgen/_MapGenerator.html
create mode 100644 code/datums/mapgen/biomes/_biome.html
create mode 100644 code/datums/martial/cqc.html
create mode 100644 code/datums/materials/_material.html
create mode 100644 code/datums/materials/basemats.html
create mode 100644 code/datums/materials/meat.html
create mode 100644 code/datums/mocking/client.html
create mode 100644 code/datums/mutations/sight.html
create mode 100644 code/datums/outfit.html
create mode 100644 code/datums/skills/_skill.html
create mode 100644 code/datums/skills/_skill_holder.html
create mode 100644 code/datums/skills/_skill_modifier.html
create mode 100644 code/datums/skills/modifiers/job.html
create mode 100644 code/datums/soullink.html
create mode 100644 code/datums/station_traits/_station_trait.html
create mode 100644 code/datums/station_traits/negative_traits.html
create mode 100644 code/datums/status_effects/debuffs.html
create mode 100644 code/datums/status_effects/status_effect.html
create mode 100644 code/datums/status_effects/wound_effects.html
create mode 100644 code/datums/view.html
create mode 100644 code/datums/weather/weather.html
create mode 100644 code/datums/wounds/_scars.html
create mode 100644 code/game/area/areas.html
create mode 100644 code/game/area/areas/edina.html
create mode 100644 code/game/area/areas/mining.html
create mode 100644 code/game/area/areas/shuttles.html
create mode 100644 code/game/atoms.html
create mode 100644 code/game/gamemodes/dynamic.html
create mode 100644 code/game/gamemodes/dynamic/dynamic_logging.html
create mode 100644 code/game/gamemodes/dynamic/dynamic_rulesets_midround.html
create mode 100644 code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.html
create mode 100644 code/game/machinery/civilian_bountys.html
create mode 100644 code/game/machinery/computer/dna_console.html
create mode 100644 code/game/machinery/cryopod.html
create mode 100644 code/game/machinery/deployable.html
create mode 100644 code/game/machinery/lightswitch.html
create mode 100644 code/game/machinery/limbgrower.html
create mode 100644 code/game/machinery/porta_turret/portable_turret_cover.html
create mode 100644 code/game/machinery/shieldgen.html
create mode 100644 code/game/machinery/slotmachine.html
create mode 100644 code/game/machinery/status_display.html
create mode 100644 code/game/machinery/syndicatebomb.html
create mode 100644 code/game/machinery/telecomms/broadcasting.html
create mode 100644 code/game/objects/effects/effect_system/effects_other.html
create mode 100644 code/game/objects/effects/effect_system/effects_smoke.html
create mode 100644 code/game/objects/effects/forcefields.html
create mode 100644 code/game/objects/effects/spawners/lootdrop.html
create mode 100644 code/game/objects/items/AI_modules.html
create mode 100644 code/game/objects/items/cigs_lighters.html
create mode 100644 code/game/objects/items/crayons.html
create mode 100644 code/game/objects/items/defib.html
create mode 100644 code/game/objects/items/devices/multitool.html
create mode 100644 code/game/objects/items/devices/radio/radio.html
create mode 100644 code/game/objects/items/devices/scanners.html
create mode 100644 code/game/objects/items/dice.html
create mode 100644 code/game/objects/items/granters.html
create mode 100644 code/game/objects/items/grenades/chem_grenade.html
create mode 100644 code/game/objects/items/grenades/plastic.html
create mode 100644 code/game/objects/items/hand_items.html
create mode 100644 code/game/objects/items/mail.html
create mode 100644 code/game/objects/items/manuals.html
create mode 100644 code/game/objects/items/melee/energy.html
create mode 100644 code/game/objects/items/plushes.html
create mode 100644 code/game/objects/items/robot/ai_upgrades.html
create mode 100644 code/game/objects/items/robot/robot_items.html
create mode 100644 code/game/objects/items/stacks/sheets/leather.html
create mode 100644 code/game/objects/items/storage/boxes.html
create mode 100644 code/game/objects/items/summon.html
create mode 100644 code/game/objects/items/weaponry.html
create mode 100644 code/game/objects/structures/beds_chairs/chair.html
create mode 100644 code/game/objects/structures/girders.html
create mode 100644 code/game/objects/structures/industrial_lift.html
create mode 100644 code/game/objects/structures/kitchen_spike.html
create mode 100644 code/game/objects/structures/loom.html
create mode 100644 code/game/objects/structures/manned_turret.html
create mode 100644 code/game/objects/structures/safe.html
create mode 100644 code/game/objects/structures/statues.html
create mode 100644 code/game/objects/structures/tables_racks.html
create mode 100644 code/game/say.html
create mode 100644 code/game/sound.html
create mode 100644 code/game/turfs/open/floor/catwalk_plating.html
create mode 100644 code/game/turfs/simulated/floor/plating/asteroid.html
create mode 100644 code/game/turfs/simulated/lava.html
create mode 100644 code/game/turfs/simulated/minerals.html
create mode 100644 code/game/turfs/simulated/wall/mineral_walls.html
create mode 100644 code/game/turfs/simulated/wall/reinf_walls.html
create mode 100644 code/game/turfs/turf.html
create mode 100644 code/modules/actionspeed/_actionspeed_modifier.html
create mode 100644 code/modules/admin/NewBan.html
create mode 100644 code/modules/admin/callproc/callproc.html
create mode 100644 code/modules/admin/force_event.html
create mode 100644 code/modules/admin/tag.html
create mode 100644 code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.html
create mode 100644 code/modules/admin/verbs/adminhelp.html
create mode 100644 code/modules/admin/verbs/pray.html
create mode 100644 code/modules/admin/verbs/randomverbs.html
create mode 100644 code/modules/admin/view_variables/debug_variables.html
create mode 100644 code/modules/antagonists/_common/antag_spawner.html
create mode 100644 code/modules/antagonists/bloodsucker/bloodsucker_powers.html
create mode 100644 code/modules/antagonists/changeling/changeling.html
create mode 100644 code/modules/antagonists/changeling/powers/mutations.html
create mode 100644 code/modules/antagonists/cult/cult_comms.html
create mode 100644 code/modules/antagonists/devil/imp/imp.html
create mode 100644 code/modules/antagonists/disease/disease_abilities.html
create mode 100644 code/modules/antagonists/eldritch_cult/eldritch_effects.html
create mode 100644 code/modules/antagonists/eldritch_cult/eldritch_knowledge.html
create mode 100644 code/modules/antagonists/eldritch_cult/eldritch_magic.html
create mode 100644 code/modules/antagonists/eldritch_cult/eldritch_monster_antag.html
create mode 100644 code/modules/antagonists/eldritch_cult/knowledge/rust_lore.html
create mode 100644 code/modules/antagonists/gang/handler.html
create mode 100644 code/modules/antagonists/gang/themes.html
create mode 100644 code/modules/antagonists/revolution/revolution.html
create mode 100644 code/modules/antagonists/slaughter/slaughter.html
create mode 100644 code/modules/antagonists/swarmer/swarmer.html
create mode 100644 code/modules/antagonists/traitor/equipment/contractor.html
create mode 100644 code/modules/antagonists/wizard/equipment/artefact.html
create mode 100644 code/modules/antagonists/wizard/equipment/soulstone.html
create mode 100644 code/modules/assembly/flash.html
create mode 100644 code/modules/assembly/infrared.html
create mode 100644 code/modules/asset_cache.html
create mode 100644 code/modules/asset_cache/asset_cache_item.html
create mode 100644 code/modules/asset_cache/asset_list.html
create mode 100644 code/modules/asset_cache/assets/irv.html
create mode 100644 code/modules/asset_cache/transports/asset_transport.html
create mode 100644 code/modules/asset_cache/transports/webroot_transport.html
create mode 100644 code/modules/atmospherics/gasmixtures/gas_mixture.html
create mode 100644 code/modules/atmospherics/multiz.html
create mode 100644 code/modules/awaymissions/capture_the_flag.html
create mode 100644 code/modules/awaymissions/corpse.html
create mode 100644 code/modules/awaymissions/gateway.html
create mode 100644 code/modules/awaymissions/mission_code/snowdin.html
create mode 100644 code/modules/awaymissions/mission_code/wildwest.html
create mode 100644 code/modules/balloon_alert/balloon_alert.html
create mode 100644 code/modules/buildmode.html
create mode 100644 code/modules/cargo/bounty.html
create mode 100644 code/modules/cargo/packs/armory.html
create mode 100644 code/modules/cargo/packs/costumes_toys.html
create mode 100644 code/modules/cargo/packs/emergency.html
create mode 100644 code/modules/cargo/packs/engine.html
create mode 100644 code/modules/cargo/packs/engineering.html
create mode 100644 code/modules/cargo/packs/livestock.html
create mode 100644 code/modules/cargo/packs/materials.html
create mode 100644 code/modules/cargo/packs/medical.html
create mode 100644 code/modules/cargo/packs/misc.html
create mode 100644 code/modules/cargo/packs/organic.html
create mode 100644 code/modules/cargo/packs/science.html
create mode 100644 code/modules/cargo/packs/security.html
create mode 100644 code/modules/cargo/packs/service.html
create mode 100644 code/modules/cargo/packs/vending.html
create mode 100644 code/modules/clothing/masks/boxing.html
create mode 100644 code/modules/clothing/masks/miscellaneous.html
create mode 100644 code/modules/clothing/spacesuits/hardsuit.html
create mode 100644 code/modules/events/holiday/halloween.html
create mode 100644 code/modules/events/stray_cargo.html
create mode 100644 code/modules/food_and_drinks/drinks/drinks.html
create mode 100644 code/modules/food_and_drinks/drinks/drinks/bottle.html
create mode 100644 code/modules/food_and_drinks/food.html
create mode 100644 code/modules/food_and_drinks/food/condiment.html
create mode 100644 code/modules/food_and_drinks/food/customizables.html
create mode 100644 code/modules/food_and_drinks/food/snacks.html
create mode 100644 code/modules/food_and_drinks/food/snacks/dough.html
create mode 100644 code/modules/food_and_drinks/food/snacks/meat.html
create mode 100644 code/modules/food_and_drinks/food/snacks_egg.html
create mode 100644 code/modules/food_and_drinks/food/snacks_meat.html
create mode 100644 code/modules/food_and_drinks/food/snacks_other.html
create mode 100644 code/modules/food_and_drinks/food/snacks_pastry.html
create mode 100644 code/modules/food_and_drinks/food/snacks_pizza.html
create mode 100644 code/modules/food_and_drinks/food/snacks_salad.html
create mode 100644 code/modules/food_and_drinks/food/snacks_sushi.html
create mode 100644 code/modules/food_and_drinks/food/snacks_vend.html
create mode 100644 code/modules/food_and_drinks/recipes/drinks_recipes.html
create mode 100644 code/modules/food_and_drinks/recipes/food_mixtures.html
create mode 100644 code/modules/food_and_drinks/recipes/tablecraft/recipes_bread.html
create mode 100644 code/modules/food_and_drinks/recipes/tablecraft/recipes_burger.html
create mode 100644 code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.html
create mode 100644 code/modules/food_and_drinks/recipes/tablecraft/recipes_donut.html
create mode 100644 code/modules/food_and_drinks/recipes/tablecraft/recipes_egg.html
create mode 100644 code/modules/food_and_drinks/recipes/tablecraft/recipes_frozen.html
create mode 100644 code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.html
create mode 100644 code/modules/food_and_drinks/recipes/tablecraft/recipes_mexican.html
create mode 100644 code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.html
create mode 100644 code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.html
create mode 100644 code/modules/food_and_drinks/recipes/tablecraft/recipes_pies_sweets.html
create mode 100644 code/modules/food_and_drinks/recipes/tablecraft/recipes_pizza.html
create mode 100644 code/modules/food_and_drinks/recipes/tablecraft/recipes_salad.html
create mode 100644 code/modules/food_and_drinks/recipes/tablecraft/recipes_sandwich.html
create mode 100644 code/modules/food_and_drinks/recipes/tablecraft/recipes_seafood.html
create mode 100644 code/modules/food_and_drinks/recipes/tablecraft/recipes_soup.html
create mode 100644 code/modules/food_and_drinks/recipes/tablecraft/recipes_spaghetti.html
create mode 100644 code/modules/games/unum.html
create mode 100644 code/modules/holiday/halloween/jacqueen.html
create mode 100644 code/modules/hydroponics/grown/towercap.html
create mode 100644 code/modules/hydroponics/seed_extractor.html
create mode 100644 code/modules/instruments/instrument_data/_instrument_data.html
create mode 100644 code/modules/instruments/songs/_song.html
create mode 100644 code/modules/jobs/access.html
create mode 100644 code/modules/keybindings.html
create mode 100644 code/modules/language/language_holder.html
create mode 100644 code/modules/lighting/emissive_blocker.html
create mode 100644 code/modules/mafia/_defines.html
create mode 100644 code/modules/mafia/controller.html
create mode 100644 code/modules/mafia/roles.html
create mode 100644 code/modules/mapping.html
create mode 100644 code/modules/mapping/mapping_helpers/_mapping_helpers.html
create mode 100644 code/modules/mapping/mapping_helpers/network_builder/power_cables.html
create mode 100644 code/modules/mapping/preloader.html
create mode 100644 code/modules/mapping/reader.html
create mode 100644 code/modules/mapping/verify.html
create mode 100644 code/modules/mining/aux_base.html
create mode 100644 code/modules/mining/equipment/explorer_gear.html
create mode 100644 code/modules/mining/equipment/kinetic_crusher.html
create mode 100644 code/modules/mining/equipment/lazarus_injector.html
create mode 100644 code/modules/mining/equipment/mineral_scanner.html
create mode 100644 code/modules/mining/equipment/mining_tools.html
create mode 100644 code/modules/mining/equipment/regenerative_core.html
create mode 100644 code/modules/mining/equipment/resonator.html
create mode 100644 code/modules/mining/equipment/survival_pod.html
create mode 100644 code/modules/mining/equipment/vendor_items.html
create mode 100644 code/modules/mining/equipment/wormhole_jaunter.html
create mode 100644 code/modules/mining/laborcamp/laborstacker.html
create mode 100644 code/modules/mining/lavaland/ash_flora.html
create mode 100644 code/modules/mining/lavaland/necropolis_chests.html
create mode 100644 code/modules/mining/machine_processing.html
create mode 100644 code/modules/mining/machine_redemption.html
create mode 100644 code/modules/mining/machine_stacking.html
create mode 100644 code/modules/mining/machine_unloading.html
create mode 100644 code/modules/mining/machine_vending.html
create mode 100644 code/modules/mining/mine_items.html
create mode 100644 code/modules/mining/minebot.html
create mode 100644 code/modules/mining/money_bag.html
create mode 100644 code/modules/mining/ores_coins.html
create mode 100644 code/modules/mining/satchel_ore_boxdm.html
create mode 100644 code/modules/mob/clickdelay.html
create mode 100644 code/modules/mob/dead/new_player/new_player.html
create mode 100644 code/modules/mob/dead/new_player/sprite_accessories/alienpeople.html
create mode 100644 code/modules/mob/dead/new_player/sprite_accessories/body_markings.html
create mode 100644 code/modules/mob/dead/new_player/sprite_accessories/ears.html
create mode 100644 code/modules/mob/dead/new_player/sprite_accessories/ipc_synths.html
create mode 100644 code/modules/mob/dead/new_player/sprite_accessories/legs_and_taurs.html
create mode 100644 code/modules/mob/dead/new_player/sprite_accessories/snouts.html
create mode 100644 code/modules/mob/dead/new_player/sprite_accessories/tails.html
create mode 100644 code/modules/mob/living/blood.html
create mode 100644 code/modules/mob/living/carbon/alien/humanoid/alien_powers.html
create mode 100644 code/modules/mob/living/carbon/carbon_stripping.html
create mode 100644 code/modules/mob/living/carbon/human/dummy.html
create mode 100644 code/modules/mob/living/carbon/human/human_defines.html
create mode 100644 code/modules/mob/living/carbon/human/innate_abilities/limb_regeneration.html
create mode 100644 code/modules/mob/living/carbon/human/species.html
create mode 100644 code/modules/mob/living/carbon/human/species_types/jellypeople.html
create mode 100644 code/modules/mob/living/living.html
create mode 100644 code/modules/mob/living/living_active_parry.html
create mode 100644 code/modules/mob/living/living_block.html
create mode 100644 code/modules/mob/living/living_blocking_parrying.html
create mode 100644 code/modules/mob/living/silicon/robot/robot.html
create mode 100644 code/modules/mob/living/simple_animal/constructs.html
create mode 100644 code/modules/mob/living/simple_animal/guardian/guardian.html
create mode 100644 code/modules/mob/living/simple_animal/hostile/illusion.html
create mode 100644 code/modules/mob/living/simple_animal/hostile/megafauna/colossus.html
create mode 100644 code/modules/mob/living/simple_animal/hostile/megafauna/legion.html
create mode 100644 code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.html
create mode 100644 code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.html
create mode 100644 code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.html
create mode 100644 code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/pandora.html
create mode 100644 code/modules/mob/living/simple_animal/hostile/mining_mobs/lobsterosity.html
create mode 100644 code/modules/mob/living/simple_animal/hostile/plaguerat.html
create mode 100644 code/modules/mob/living/simple_animal/hostile/regalrat.html
create mode 100644 code/modules/mob/living/simple_animal/hostile/space_dragon.html
create mode 100644 code/modules/mob/living/simple_animal/hostile/syndicate.html
create mode 100644 code/modules/mob/living/simple_animal/hostile/venus_human_trap.html
create mode 100644 code/modules/mob/mob_helpers.html
create mode 100644 code/modules/mob/say_vr.html
create mode 100644 code/modules/mob/typing_indicator.html
create mode 100644 code/modules/mod/mod_control.html
create mode 100644 code/modules/mod/mod_theme.html
create mode 100644 code/modules/mod/modules/modules_engineering.html
create mode 100644 code/modules/mod/modules/modules_general.html
create mode 100644 code/modules/mod/modules/modules_maint.html
create mode 100644 code/modules/mod/modules/modules_medical.html
create mode 100644 code/modules/mod/modules/modules_science.html
create mode 100644 code/modules/mod/modules/modules_security.html
create mode 100644 code/modules/mod/modules/modules_service.html
create mode 100644 code/modules/mod/modules/modules_supply.html
create mode 100644 code/modules/mod/modules/modules_visor.html
create mode 100644 code/modules/modular_computers/computers/item/tablet.html
create mode 100644 code/modules/modular_computers/documentation.html
create mode 100644 code/modules/modular_computers/file_system/programs/jobmanagement.html
create mode 100644 code/modules/modular_computers/file_system/programs/ntdownloader.html
create mode 100644 code/modules/modular_computers/file_system/programs/portrait_printer.html
create mode 100644 code/modules/modular_computers/file_system/programs/powermonitor.html
create mode 100644 code/modules/modular_computers/file_system/programs/radar.html
create mode 100644 code/modules/modular_computers/hardware/hard_drive.html
create mode 100644 code/modules/modular_computers/hardware/recharger.html
create mode 100644 code/modules/movespeed/_movespeed_modifier.html
create mode 100644 code/modules/newscaster/news_network.html
create mode 100644 code/modules/ninja/energy_katana.html
create mode 100644 code/modules/ninja/ninja_explosive.html
create mode 100644 code/modules/ninja/suit/gloves.html
create mode 100644 code/modules/ninja/suit/head.html
create mode 100644 code/modules/ninja/suit/mask.html
create mode 100644 code/modules/ninja/suit/ninja_equipment_actions/energy_net_nets.html
create mode 100644 code/modules/ninja/suit/ninja_equipment_actions/ninja_stars.html
create mode 100644 code/modules/ninja/suit/shoes.html
create mode 100644 code/modules/ninja/suit/suit.html
create mode 100644 code/modules/paperwork/clipboard.html
create mode 100644 code/modules/paperwork/paper.html
create mode 100644 code/modules/paperwork/paper_premade.html
create mode 100644 code/modules/paperwork/photocopier.html
create mode 100644 code/modules/plumbing/ducts.html
create mode 100644 code/modules/plumbing/plumbers/_plumb_machinery.html
create mode 100644 code/modules/plumbing/plumbers/acclimator.html
create mode 100644 code/modules/plumbing/plumbers/destroyer.html
create mode 100644 code/modules/plumbing/plumbers/filter.html
create mode 100644 code/modules/plumbing/plumbers/pill_press.html
create mode 100644 code/modules/plumbing/plumbers/pumps.html
create mode 100644 code/modules/plumbing/plumbers/reaction_chamber.html
create mode 100644 code/modules/plumbing/plumbers/splitters.html
create mode 100644 code/modules/plumbing/plumbers/synthesizer.html
create mode 100644 code/modules/power/apc.html
create mode 100644 code/modules/power/reactor/rbmk.html
create mode 100644 code/modules/power/singularity/generator.html
create mode 100644 code/modules/power/supermatter/supermatter.html
create mode 100644 code/modules/projectiles/guns/ballistic/magweapon.html
create mode 100644 code/modules/projectiles/guns/ballistic/pistol.html
create mode 100644 code/modules/projectiles/guns/energy/laser.html
create mode 100644 code/modules/projectiles/guns/misc/medbeam.html
create mode 100644 code/modules/projectiles/projectile.html
create mode 100644 code/modules/projectiles/projectile/magic.html
create mode 100644 code/modules/reagents/chem_wiki_render.html
create mode 100644 code/modules/reagents/chemistry.html
create mode 100644 code/modules/reagents/chemistry/fermi.html
create mode 100644 code/modules/reagents/chemistry/machinery/chem_dispenser.html
create mode 100644 code/modules/reagents/chemistry/reagents/alcohol_reagents.html
create mode 100644 code/modules/reagents/chemistry/reagents/drink_reagents.html
create mode 100644 code/modules/reagents/chemistry/reagents/food_reagents.html
create mode 100644 code/modules/reagents/chemistry/reagents/other_reagents.html
create mode 100644 code/modules/reagents/chemistry/reagents/toxin_reagents.html
create mode 100644 code/modules/reagents/chemistry/recipes/others.html
create mode 100644 code/modules/reagents/reagent_containers/pill.html
create mode 100644 code/modules/reagents/reagent_containers/spray.html
create mode 100644 code/modules/recycling/disposal/multiz.html
create mode 100644 code/modules/research/anomaly/explosive_compressor.html
create mode 100644 code/modules/research/anomaly/raw_anomaly.html
create mode 100644 code/modules/research/designs.html
create mode 100644 code/modules/research/designs/AI_module_designs.html
create mode 100644 code/modules/research/designs/autobotter_designs.html
create mode 100644 code/modules/research/designs/autolathe_desings/autolathe_designs_construction.html
create mode 100644 code/modules/research/designs/autolathe_desings/autolathe_designs_electronics.html
create mode 100644 code/modules/research/designs/autolathe_desings/autolathe_designs_medical_and_dinnerware.html
create mode 100644 code/modules/research/designs/autolathe_desings/autolathe_designs_sec_and_hacked.html
create mode 100644 code/modules/research/designs/autolathe_desings/autolathe_designs_tcomms_and_misc.html
create mode 100644 code/modules/research/designs/autolathe_desings/autolathe_designs_tools.html
create mode 100644 code/modules/research/designs/biogenerator_designs.html
create mode 100644 code/modules/research/designs/bluespace_designs.html
create mode 100644 code/modules/research/designs/comp_board_designs/comp_board_designs_all_misc.html
create mode 100644 code/modules/research/designs/comp_board_designs/comp_board_designs_cargo.html
create mode 100644 code/modules/research/designs/comp_board_designs/comp_board_designs_engi.html
create mode 100644 code/modules/research/designs/comp_board_designs/comp_board_designs_medical.html
create mode 100644 code/modules/research/designs/comp_board_designs/comp_board_designs_sci.html
create mode 100644 code/modules/research/designs/comp_board_designs/comp_board_designs_sec.html
create mode 100644 code/modules/research/designs/computer_part_designs.html
create mode 100644 code/modules/research/designs/electronics_designs.html
create mode 100644 code/modules/research/designs/limbgrower_designs.html
create mode 100644 code/modules/research/designs/machine_desings/machine_designs_all_misc.html
create mode 100644 code/modules/research/designs/machine_desings/machine_designs_cargo.html
create mode 100644 code/modules/research/designs/machine_desings/machine_designs_engi.html
create mode 100644 code/modules/research/designs/machine_desings/machine_designs_medical.html
create mode 100644 code/modules/research/designs/machine_desings/machine_designs_sci.html
create mode 100644 code/modules/research/designs/machine_desings/machine_designs_service.html
create mode 100644 code/modules/research/designs/mecha_designs.html
create mode 100644 code/modules/research/designs/mechfabricator_designs.html
create mode 100644 code/modules/research/designs/medical_designs.html
create mode 100644 code/modules/research/designs/mining_designs.html
create mode 100644 code/modules/research/designs/misc_designs.html
create mode 100644 code/modules/research/designs/nanite_designs.html
create mode 100644 code/modules/research/designs/power_designs.html
create mode 100644 code/modules/research/designs/smelting_designs.html
create mode 100644 code/modules/research/designs/stock_parts_designs.html
create mode 100644 code/modules/research/designs/telecomms_designs.html
create mode 100644 code/modules/research/designs/tool_designs.html
create mode 100644 code/modules/research/designs/weapon_designs.html
create mode 100644 code/modules/research/experimentor.html
create mode 100644 code/modules/research/nanites/nanite_programs.html
create mode 100644 code/modules/research/techweb/nodes/alien_nodes.html
create mode 100644 code/modules/research/techweb/nodes/bepis_nodes.html
create mode 100644 code/modules/research/techweb/nodes/biotech_nodes.html
create mode 100644 code/modules/research/techweb/nodes/bluespace_nodes.html
create mode 100644 code/modules/research/techweb/nodes/computer_hud_nodes.html
create mode 100644 code/modules/research/techweb/nodes/engineering_nodes.html
create mode 100644 code/modules/research/techweb/nodes/mecha_nodes.html
create mode 100644 code/modules/research/techweb/nodes/medical_nodes.html
create mode 100644 code/modules/research/techweb/nodes/misc_nodes.html
create mode 100644 code/modules/research/techweb/nodes/nanites_nodes.html
create mode 100644 code/modules/research/techweb/nodes/robotics_nodes.html
create mode 100644 code/modules/research/techweb/nodes/tools_nodes.html
create mode 100644 code/modules/research/techweb/nodes/weaponry_nodes.html
create mode 100644 code/modules/research/xenobiology/crossbreeding/__corecross.html
create mode 100644 code/modules/research/xenobiology/crossbreeding/_status_effects.html
create mode 100644 code/modules/research/xenobiology/crossbreeding/charged.html
create mode 100644 code/modules/research/xenobiology/xenobiology.html
create mode 100644 code/modules/ruins/icemoonruin_code/hotsprings.html
create mode 100644 code/modules/ruins/lavaland_ruin_code.html
create mode 100644 code/modules/ruins/lavalandruin_code/biodome_clown_planet.html
create mode 100644 code/modules/ruins/lavalandruin_code/sloth.html
create mode 100644 code/modules/ruins/lavalandruin_code/surface.html
create mode 100644 code/modules/ruins/spaceruin_code/DJstation.html
create mode 100644 code/modules/ruins/spaceruin_code/TheDerelict.html
create mode 100644 code/modules/ruins/spaceruin_code/asteroid4.html
create mode 100644 code/modules/ruins/spaceruin_code/bigderelict1.html
create mode 100644 code/modules/ruins/spaceruin_code/clericsden.html
create mode 100644 code/modules/ruins/spaceruin_code/crashedclownship.html
create mode 100644 code/modules/ruins/spaceruin_code/deepstorage.html
create mode 100644 code/modules/ruins/spaceruin_code/listeningstation.html
create mode 100644 code/modules/ruins/spaceruin_code/miracle.html
create mode 100644 code/modules/ruins/spaceruin_code/oldstation.html
create mode 100644 code/modules/ruins/spaceruin_code/originalcontent.html
create mode 100644 code/modules/ruins/spaceruin_code/skelter.html
create mode 100644 code/modules/ruins/spaceruin_code/spacehotel.html
create mode 100644 code/modules/ruins/spaceruin_code/whiteshipruin_box.html
create mode 100644 code/modules/shielding/helpers.html
create mode 100644 code/modules/shuttle/supply.html
create mode 100644 code/modules/spells/spell_types/cone_spells.html
create mode 100644 code/modules/spells/spell_types/construct_spells.html
create mode 100644 code/modules/surgery/bone_mending.html
create mode 100644 code/modules/surgery/burn_dressing.html
create mode 100644 code/modules/surgery/healing.html
create mode 100644 code/modules/surgery/limb_augmentation.html
create mode 100644 code/modules/surgery/organs/eyes.html
create mode 100644 code/modules/surgery/organs/vocal_cords.html
create mode 100644 code/modules/surgery/repair_puncture.html
create mode 100644 code/modules/surgery/robot_healing.html
create mode 100644 code/modules/tgchat/message.html
create mode 100644 code/modules/tgchat/to_chat.html
create mode 100644 code/modules/tgs.html
create mode 100644 code/modules/tgs/core.html
create mode 100644 code/modules/tgs/v3210.html
create mode 100644 code/modules/tgs/v4.html
create mode 100644 code/modules/tgs/v5.html
create mode 100644 code/modules/tgui/external.html
create mode 100644 code/modules/tgui/states.html
create mode 100644 code/modules/tgui/states/admin.html
create mode 100644 code/modules/tgui/states/always.html
create mode 100644 code/modules/tgui/states/conscious.html
create mode 100644 code/modules/tgui/states/contained.html
create mode 100644 code/modules/tgui/states/deep_inventory.html
create mode 100644 code/modules/tgui/states/default.html
create mode 100644 code/modules/tgui/states/fun.html
create mode 100644 code/modules/tgui/states/hands.html
create mode 100644 code/modules/tgui/states/human_adjacent.html
create mode 100644 code/modules/tgui/states/inventory.html
create mode 100644 code/modules/tgui/states/language_menu.html
create mode 100644 code/modules/tgui/states/never.html
create mode 100644 code/modules/tgui/states/not_incapacitated.html
create mode 100644 code/modules/tgui/states/notcontained.html
create mode 100644 code/modules/tgui/states/observer.html
create mode 100644 code/modules/tgui/states/physical.html
create mode 100644 code/modules/tgui/states/self.html
create mode 100644 code/modules/tgui/states/zlevel.html
create mode 100644 code/modules/tgui/status_composers.html
create mode 100644 code/modules/tgui/tgui.html
create mode 100644 code/modules/tgui/tgui_window.html
create mode 100644 code/modules/tgui_input/alert.html
create mode 100644 code/modules/tgui_input/list.html
create mode 100644 code/modules/tgui_input/number.html
create mode 100644 code/modules/tgui_input/text.html
create mode 100644 code/modules/tgui_panel/audio.html
create mode 100644 code/modules/tgui_panel/external.html
create mode 100644 code/modules/tgui_panel/telemetry.html
create mode 100644 code/modules/tgui_panel/tgui_panel.html
create mode 100644 code/modules/unit_tests.html
create mode 100644 code/modules/unit_tests/_unit_tests.html
create mode 100644 code/modules/unit_tests/character_saving.html
create mode 100644 code/modules/unit_tests/create_and_destroy.html
create mode 100644 code/modules/unit_tests/dynamic_ruleset_sanity.html
create mode 100644 code/modules/unit_tests/spawn_mobs.html
create mode 100644 code/modules/unit_tests/tgui_create_message.html
create mode 100644 code/modules/uplink/uplink_items.html
create mode 100644 code/modules/vehicles/mecha/_mecha.html
create mode 100644 code/modules/vehicles/mecha/combat/durand.html
create mode 100644 code/modules/vehicles/mecha/equipment/tools/medical_tools.html
create mode 100644 code/modules/vehicles/mecha/equipment/tools/other_tools.html
create mode 100644 code/modules/vehicles/mecha/mecha_actions.html
create mode 100644 code/modules/vehicles/mecha/mecha_construction_paths.html
create mode 100644 code/modules/vehicles/mecha/mecha_parts.html
create mode 100644 code/modules/vehicles/mecha/mecha_wreckage.html
create mode 100644 code/modules/vending/_vending.html
create mode 100644 code/modules/vore/eating/belly_obj.html
create mode 100644 code/world.html
create mode 100644 datum.html
create mode 100644 datum/SDQL2_query.html
create mode 100644 datum/abductor_gear.html
create mode 100644 datum/achievement_data.html
create mode 100644 datum/action.html
create mode 100644 datum/action/cooldown.html
create mode 100644 datum/action/cooldown/bloodsucker.html
create mode 100644 datum/action/cooldown/bloodsucker/targeted/haste.html
create mode 100644 datum/action/cooldown/riot.html
create mode 100644 datum/action/cooldown/spawn_induction_package.html
create mode 100644 datum/action/innate/ability/humanoid_customization.html
create mode 100644 datum/action/innate/cult/blood_spell.html
create mode 100644 datum/action/innate/rune_shatter.html
create mode 100644 datum/action/item_action/mod.html
create mode 100644 datum/action/item_action/stickmen.html
create mode 100644 datum/action/vehicle/ridden/scooter/skateboard/ollie.html
create mode 100644 datum/action/vehicle/sealed/mecha/ivanov_strike.html
create mode 100644 datum/action/vehicle/sealed/mecha/skyfall.html
create mode 100644 datum/action_group.html
create mode 100644 datum/actionspeed_modifier.html
create mode 100644 datum/admin_help.html
create mode 100644 datum/admins.html
create mode 100644 datum/ai_laws.html
create mode 100644 datum/antagonist.html
create mode 100644 datum/antagonist/changeling.html
create mode 100644 datum/antagonist/gang.html
create mode 100644 datum/antagonist/heretic.html
create mode 100644 datum/antagonist/ninja.html
create mode 100644 datum/antagonist/rev.html
create mode 100644 datum/antagonist/traitor.html
create mode 100644 datum/antagonist/traitor/contractor_support.html
create mode 100644 datum/asset.html
create mode 100644 datum/asset/simple.html
create mode 100644 datum/asset/simple/namespaced.html
create mode 100644 datum/asset/spritesheet.html
create mode 100644 datum/asset/spritesheet/decals.html
create mode 100644 datum/asset_cache_item.html
create mode 100644 datum/asset_transport.html
create mode 100644 datum/asset_transport/webroot.html
create mode 100644 datum/award.html
create mode 100644 datum/bank_account.html
create mode 100644 datum/biome.html
create mode 100644 datum/bitfield.html
create mode 100644 datum/block_parry_data.html
create mode 100644 datum/callback.html
create mode 100644 datum/centcom_announcer.html
create mode 100644 datum/centcom_podlauncher.html
create mode 100644 datum/changelingprofile.html
create mode 100644 datum/chatmessage.html
create mode 100644 datum/chemical_reaction.html
create mode 100644 datum/client_interface.html
create mode 100644 datum/component.html
create mode 100644 datum/component/area_sound_manager.html
create mode 100644 datum/component/bodycamera_holder.html
create mode 100644 datum/component/combat_mode.html
create mode 100644 datum/component/construction/mecha/powerarmor.html
create mode 100644 datum/component/container_item.html
create mode 100644 datum/component/dejavu.html
create mode 100644 datum/component/edible.html
create mode 100644 datum/component/embedded.html
create mode 100644 datum/component/explodable.html
create mode 100644 datum/component/field_of_vision.html
create mode 100644 datum/component/footstep.html
create mode 100644 datum/component/glory_kill.html
create mode 100644 datum/component/gps/item.html
create mode 100644 datum/component/identification.html
create mode 100644 datum/component/identification/syndicate.html
create mode 100644 datum/component/interaction_menu_granter.html
create mode 100644 datum/component/killerqueen.html
create mode 100644 datum/component/knockback.html
create mode 100644 datum/component/label.html
create mode 100644 datum/component/material_container.html
create mode 100644 datum/component/mood.html
create mode 100644 datum/component/multiple_lives.html
create mode 100644 datum/component/nanites.html
create mode 100644 datum/component/omen.html
create mode 100644 datum/component/pellet_cloud.html
create mode 100644 datum/component/personal_crafting.html
create mode 100644 datum/component/plumbing.html
create mode 100644 datum/component/plumbing/acclimator.html
create mode 100644 datum/component/plumbing/filter.html
create mode 100644 datum/component/pregnancy.html
create mode 100644 datum/component/pricetag.html
create mode 100644 datum/component/squeak.html
create mode 100644 datum/component/storage.html
create mode 100644 datum/component/storage/concrete/tcg.html
create mode 100644 datum/component/tackler.html
create mode 100644 datum/component/twitch_plays.html
create mode 100644 datum/component/twitch_plays/simple_movement.html
create mode 100644 datum/component/two_handed.html
create mode 100644 datum/component/uplink.html
create mode 100644 datum/component/virtual_reality.html
create mode 100644 datum/computer_file/program.html
create mode 100644 datum/computer_file/program/aidiag.html
create mode 100644 datum/computer_file/program/arcade.html
create mode 100644 datum/computer_file/program/borg_monitor.html
create mode 100644 datum/computer_file/program/budgetorders.html
create mode 100644 datum/computer_file/program/card_mod.html
create mode 100644 datum/computer_file/program/portrait_printer.html
create mode 100644 datum/computer_file/program/radar.html
create mode 100644 datum/computer_file/program/robocontrol.html
create mode 100644 datum/computer_file/program/robotact.html
create mode 100644 datum/computer_file/program/secureye.html
create mode 100644 datum/computer_file/program/signaler.html
create mode 100644 datum/computer_file/program/supermatter_monitor.html
create mode 100644 datum/config_entry.html
create mode 100644 datum/config_entry/keyed_list.html
create mode 100644 datum/config_entry/str_list.html
create mode 100644 datum/config_entry/string.html
create mode 100644 datum/controller/configuration.html
create mode 100644 datum/controller/global_vars.html
create mode 100644 datum/controller/master.html
create mode 100644 datum/controller/subsystem.html
create mode 100644 datum/controller/subsystem/achievements.html
create mode 100644 datum/controller/subsystem/atoms.html
create mode 100644 datum/controller/subsystem/communications.html
create mode 100644 datum/controller/subsystem/discord.html
create mode 100644 datum/controller/subsystem/economy.html
create mode 100644 datum/controller/subsystem/input.html
create mode 100644 datum/controller/subsystem/interactions.html
create mode 100644 datum/controller/subsystem/job.html
create mode 100644 datum/controller/subsystem/mapping.html
create mode 100644 datum/controller/subsystem/materials.html
create mode 100644 datum/controller/subsystem/min_spawns.html
create mode 100644 datum/controller/subsystem/npcpool.html
create mode 100644 datum/controller/subsystem/parallax.html
create mode 100644 datum/controller/subsystem/persistence.html
create mode 100644 datum/controller/subsystem/processing/dcs.html
create mode 100644 datum/controller/subsystem/processing/instruments.html
create mode 100644 datum/controller/subsystem/processing/station.html
create mode 100644 datum/controller/subsystem/research.html
create mode 100644 datum/controller/subsystem/runechat.html
create mode 100644 datum/controller/subsystem/security_level.html
create mode 100644 datum/controller/subsystem/shuttle.html
create mode 100644 datum/controller/subsystem/sounds.html
create mode 100644 datum/controller/subsystem/sun.html
create mode 100644 datum/controller/subsystem/tgui.html
create mode 100644 datum/controller/subsystem/ticker.html
create mode 100644 datum/controller/subsystem/timer.html
create mode 100644 datum/controller/subsystem/vote.html
create mode 100644 datum/crafting_recipe.html
create mode 100644 datum/crafting_recipe/bloodsucker/blackcoffin.html
create mode 100644 datum/crafting_recipe/silver_stake.html
create mode 100644 datum/data/vending_product.html
create mode 100644 datum/datacore.html
create mode 100644 datum/design.html
create mode 100644 datum/design/apc_board.html
create mode 100644 datum/design/beanbag_slug.html
create mode 100644 datum/design/bucket.html
create mode 100644 datum/design/kitchen_knife.html
create mode 100644 datum/design/rods.html
create mode 100644 datum/design/signaler.html
create mode 100644 datum/discord_link_record.html
create mode 100644 datum/ductnet.html
create mode 100644 datum/dynamic_ruleset.html
create mode 100644 datum/dynamic_ruleset/latejoin/provocateur.html
create mode 100644 datum/dynamic_ruleset/midround.html
create mode 100644 datum/dynamic_ruleset/midround/autotraitor.html
create mode 100644 datum/dynamic_ruleset/midround/families.html
create mode 100644 datum/dynamic_ruleset/midround/from_ghosts.html
create mode 100644 datum/dynamic_ruleset/roundstart.html
create mode 100644 datum/dynamic_ruleset/roundstart/families.html
create mode 100644 datum/dynamic_ruleset/roundstart/revs.html
create mode 100644 datum/dynamic_snapshot.html
create mode 100644 datum/dynamic_snapshot_ruleset.html
create mode 100644 datum/eldritch_knowledge.html
create mode 100644 datum/eldritch_knowledge/final_eldritch/void_final.html
create mode 100644 datum/element.html
create mode 100644 datum/element/bed_tuckable.html
create mode 100644 datum/element/connect_loc.html
create mode 100644 datum/element/contextual_screentip_bare_hands.html
create mode 100644 datum/element/contextual_screentip_item_typechecks.html
create mode 100644 datum/element/contextual_screentip_sharpness.html
create mode 100644 datum/element/contextual_screentip_tools.html
create mode 100644 datum/element/embed.html
create mode 100644 datum/element/firestacker.html
create mode 100644 datum/element/flavor_text.html
create mode 100644 datum/element/item_scaling.html
create mode 100644 datum/element/mob_holder/micro.html
create mode 100644 datum/element/object_reskinning.html
create mode 100644 datum/element/photosynthesis.html
create mode 100644 datum/element/scavenging.html
create mode 100644 datum/element/skirt_peeking.html
create mode 100644 datum/element/strippable.html
create mode 100644 datum/element/turf_z_transparency.html
create mode 100644 datum/font.html
create mode 100644 datum/game_mode.html
create mode 100644 datum/game_mode/dynamic.html
create mode 100644 datum/game_mode/gang.html
create mode 100644 datum/gang_handler.html
create mode 100644 datum/gang_theme.html
create mode 100644 datum/gas_mixture.html
create mode 100644 datum/gateway_destination.html
create mode 100644 datum/gateway_destination/gateway.html
create mode 100644 datum/gateway_destination/point.html
create mode 100644 datum/http_request.html
create mode 100644 datum/hud.html
create mode 100644 datum/hud/new_player.html
create mode 100644 datum/instrument.html
create mode 100644 datum/interaction.html
create mode 100644 datum/interaction/lewd.html
create mode 100644 datum/job.html
create mode 100644 datum/job/mining.html
create mode 100644 datum/jps_node.html
create mode 100644 datum/keybinding.html
create mode 100644 datum/keybinding/living.html
create mode 100644 datum/language_holder.html
create mode 100644 datum/lift_master.html
create mode 100644 datum/lighting_object.html
create mode 100644 datum/looping_sound.html
create mode 100644 datum/mafia_controller.html
create mode 100644 datum/mafia_role.html
create mode 100644 datum/map_config.html
create mode 100644 datum/map_generator.html
create mode 100644 datum/map_generator/cave_generator.html
create mode 100644 datum/map_generator/jungle_generator.html
create mode 100644 datum/map_report.html
create mode 100644 datum/map_template.html
create mode 100644 datum/map_template/shuttle.html
create mode 100644 datum/map_template/shuttle/emergency/narnar.html
create mode 100644 datum/martial_art.html
create mode 100644 datum/martial_art/cqc/blueshield.html
create mode 100644 datum/martial_art/cqc/under_siege.html
create mode 100644 datum/martial_art/the_sleeping_carp.html
create mode 100644 datum/material.html
create mode 100644 datum/mind.html
create mode 100644 datum/mod_theme.html
create mode 100644 datum/mood_event.html
create mode 100644 datum/movespeed_modifier.html
create mode 100644 datum/movespeed_modifier/sprinting.html
create mode 100644 datum/mutation/human/hulk.html
create mode 100644 datum/nanite_program.html
create mode 100644 datum/ntnet_conversation.html
create mode 100644 datum/objective/door_jack.html
create mode 100644 datum/objective/hijack.html
create mode 100644 datum/outfit.html
create mode 100644 datum/parallax.html
create mode 100644 datum/parallax_holder.html
create mode 100644 datum/parsed_map.html
create mode 100644 datum/pathfind.html
create mode 100644 datum/physiology.html
create mode 100644 datum/plant_gene.html
create mode 100644 datum/plant_gene/trait.html
create mode 100644 datum/plant_gene/trait/cell_charge.html
create mode 100644 datum/plant_gene/trait/eyes.html
create mode 100644 datum/plant_gene/trait/slip.html
create mode 100644 datum/powernet.html
create mode 100644 datum/preferences.html
create mode 100644 datum/progressbar.html
create mode 100644 datum/quirk.html
create mode 100644 datum/quirk/longtimer.html
create mode 100644 datum/quirk/nyctophobia.html
create mode 100644 datum/reagent.html
create mode 100644 datum/reagent/determination.html
create mode 100644 datum/reagent/lube.html
create mode 100644 datum/reagent/medicine/coagulant.html
create mode 100644 datum/reagent/metalgen.html
create mode 100644 datum/reagent/water.html
create mode 100644 datum/reagents.html
create mode 100644 datum/reality_smash_tracker.html
create mode 100644 datum/round_event.html
create mode 100644 datum/round_event/ghost_role/sentience.html
create mode 100644 datum/round_event/stray_cargo.html
create mode 100644 datum/round_event/stray_cargo/syndicate.html
create mode 100644 datum/round_event_control.html
create mode 100644 datum/rust_spread.html
create mode 100644 datum/scar.html
create mode 100644 datum/secrets_menu.html
create mode 100644 datum/select_equipment.html
create mode 100644 datum/signal/subspace.html
create mode 100644 datum/skill.html
create mode 100644 datum/skill/enum.html
create mode 100644 datum/skill/level.html
create mode 100644 datum/skill/numerical.html
create mode 100644 datum/skill_holder.html
create mode 100644 datum/skill_modifier.html
create mode 100644 datum/slaver_gear.html
create mode 100644 datum/song.html
create mode 100644 datum/sortInstance.html
create mode 100644 datum/species.html
create mode 100644 datum/sprite_accessory/snouts/mam_snouts.html
create mode 100644 datum/sprite_accessory/tails_animated/lizard.html
create mode 100644 datum/stack_canary.html
create mode 100644 datum/stack_end_detector.html
create mode 100644 datum/stack_recipe.html
create mode 100644 datum/station_trait.html
create mode 100644 datum/station_trait/bot_languages.html
create mode 100644 datum/station_trait/ian_adventure.html
create mode 100644 datum/station_trait/random_event_weight_modifier.html
create mode 100644 datum/status_effect.html
create mode 100644 datum/status_effect/cloudstruck.html
create mode 100644 datum/status_effect/eldritch.html
create mode 100644 datum/status_effect/eldritch/ash.html
create mode 100644 datum/status_effect/ice_block_talisman.html
create mode 100644 datum/status_effect/limp.html
create mode 100644 datum/status_effect/offering.html
create mode 100644 datum/status_effect/wound.html
create mode 100644 datum/strip_menu.html
create mode 100644 datum/strippable_item.html
create mode 100644 datum/strippable_item/hand.html
create mode 100644 datum/strippable_item/mob_item_slot.html
create mode 100644 datum/strippable_item/mob_item_slot/pocket.html
create mode 100644 datum/summon_weapon.html
create mode 100644 datum/summon_weapon_host.html
create mode 100644 datum/supply_pack/misc/syndicate.html
create mode 100644 datum/team/gang.html
create mode 100644 datum/team/revolution.html
create mode 100644 datum/tgs_api/v5.html
create mode 100644 datum/tgs_chat_channel.html
create mode 100644 datum/tgs_chat_command.html
create mode 100644 datum/tgs_chat_embed/footer.html
create mode 100644 datum/tgs_chat_embed/media.html
create mode 100644 datum/tgs_chat_embed/structure.html
create mode 100644 datum/tgs_chat_user.html
create mode 100644 datum/tgs_event_handler.html
create mode 100644 datum/tgs_message_content.html
create mode 100644 datum/tgs_revision_information.html
create mode 100644 datum/tgs_revision_information/test_merge.html
create mode 100644 datum/tgs_version.html
create mode 100644 datum/tgui.html
create mode 100644 datum/tgui_alert.html
create mode 100644 datum/tgui_alert/async.html
create mode 100644 datum/tgui_input_number.html
create mode 100644 datum/tgui_input_number/async.html
create mode 100644 datum/tgui_input_text.html
create mode 100644 datum/tgui_input_text/async.html
create mode 100644 datum/tgui_list_input.html
create mode 100644 datum/tgui_list_input/async.html
create mode 100644 datum/tgui_panel.html
create mode 100644 datum/tgui_window.html
create mode 100644 datum/thrownthing.html
create mode 100644 datum/timedevent.html
create mode 100644 datum/traitor_class.html
create mode 100644 datum/ui_state.html
create mode 100644 datum/unit_test.html
create mode 100644 datum/unit_test/binary_insert.html
create mode 100644 datum/unit_test/container_resist.html
create mode 100644 datum/unit_test/interactions.html
create mode 100644 datum/unit_test/machine_disassembly.html
create mode 100644 datum/unit_test/merge_type.html
create mode 100644 datum/unit_test/stop_drop_and_roll.html
create mode 100644 datum/unit_test/test_human_base.html
create mode 100644 datum/unit_test/test_human_bone.html
create mode 100644 datum/uplink_item.html
create mode 100644 datum/wave_explosion.html
create mode 100644 datum/weather.html
create mode 100644 datum/wires.html
create mode 100644 datum/wound.html
create mode 100644 datum/wound/blunt.html
create mode 100644 datum/wound/blunt/moderate.html
create mode 100644 datum/wound/burn.html
create mode 100644 datum/wound/loss.html
create mode 100644 datum/wound/pierce.html
create mode 100644 datum/wound/slash.html
create mode 100644 dmdoc.css
create mode 100644 dmdoc.js
create mode 100644 git.png
create mode 100644 global.html
create mode 100644 image.html
create mode 100644 index.html
create mode 100644 interface/fonts/fonts_datum.html
create mode 100644 interface/fonts/grand_9k.html
create mode 100644 interface/fonts/license.html
create mode 100644 interface/fonts/pixellari.html
create mode 100644 interface/fonts/spess_font.html
create mode 100644 interface/fonts/tiny_unicode.html
create mode 100644 mob.html
create mode 100644 mob/dead/new_player.html
create mode 100644 mob/dead/observer.html
create mode 100644 mob/living.html
create mode 100644 mob/living/brain.html
create mode 100644 mob/living/carbon.html
create mode 100644 mob/living/carbon/alien.html
create mode 100644 mob/living/carbon/human.html
create mode 100644 mob/living/silicon.html
create mode 100644 mob/living/silicon/ai.html
create mode 100644 mob/living/silicon/robot.html
create mode 100644 mob/living/simple_animal.html
create mode 100644 mob/living/simple_animal/bot.html
create mode 100644 mob/living/simple_animal/bot/floorbot.html
create mode 100644 mob/living/simple_animal/drone.html
create mode 100644 mob/living/simple_animal/hostile.html
create mode 100644 mob/living/simple_animal/hostile/asteroid/elite/broodmother.html
create mode 100644 mob/living/simple_animal/hostile/asteroid/elite/drakeling.html
create mode 100644 mob/living/simple_animal/hostile/asteroid/elite/herald.html
create mode 100644 mob/living/simple_animal/hostile/asteroid/elite/legionnaire.html
create mode 100644 mob/living/simple_animal/hostile/asteroid/elite/minerpriest.html
create mode 100644 mob/living/simple_animal/hostile/asteroid/elite/pandora.html
create mode 100644 mob/living/simple_animal/hostile/asteroid/ice_demon.html
create mode 100644 mob/living/simple_animal/hostile/asteroid/ice_whelp.html
create mode 100644 mob/living/simple_animal/hostile/asteroid/lobstrosity.html
create mode 100644 mob/living/simple_animal/hostile/asteroid/polarbear.html
create mode 100644 mob/living/simple_animal/hostile/asteroid/wolf.html
create mode 100644 mob/living/simple_animal/hostile/carp/cayenne.html
create mode 100644 mob/living/simple_animal/hostile/construct.html
create mode 100644 mob/living/simple_animal/hostile/eldritch.html
create mode 100644 mob/living/simple_animal/hostile/eldritch/armsy.html
create mode 100644 mob/living/simple_animal/hostile/guardian.html
create mode 100644 mob/living/simple_animal/hostile/guardian/gravitokinetic.html
create mode 100644 mob/living/simple_animal/hostile/megafauna.html
create mode 100644 mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.html
create mode 100644 mob/living/simple_animal/hostile/megafauna/legion.html
create mode 100644 mob/living/simple_animal/hostile/megafauna/wendigo.html
create mode 100644 mob/living/simple_animal/hostile/plaguerat.html
create mode 100644 mob/living/simple_animal/hostile/regalrat.html
create mode 100644 mob/living/simple_animal/hostile/space_dragon.html
create mode 100644 mob/living/simple_animal/hostile/swarmer.html
create mode 100644 mob/living/simple_animal/hostile/venus_human_trap.html
create mode 100644 mob/living/simple_animal/jacq.html
create mode 100644 mob/living/simple_animal/mouse.html
create mode 100644 mob/living/simple_animal/parrot.html
create mode 100644 mob/living/simple_animal/slime.html
create mode 100644 modular_citadel.html
create mode 100644 modular_citadel/code/modules/projectiles/guns/ballistic/handguns.html
create mode 100644 modular_citadel/code/modules/projectiles/guns/ballistic/rifles.html
create mode 100644 modular_citadel/code/modules/projectiles/guns/ballistic/spinfusor.html
create mode 100644 modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.html
create mode 100644 modular_citadel/sound/voice/pain emote credits.html
create mode 100644 modular_sand/code/controllers/configuration/entries/sandstorm_balance.html
create mode 100644 modular_sand/code/datums/components/container_item/container_item.html
create mode 100644 modular_sand/code/datums/components/container_item/tank_holder.html
create mode 100644 modular_sand/code/datums/components/interaction_menu_granter.html
create mode 100644 modular_sand/code/datums/interactions/_interaction.html
create mode 100644 modular_sand/code/game/mecha/mecha_parts.html
create mode 100644 modular_sand/code/game/objects/items/fleshlight.html
create mode 100644 modular_sand/code/game/objects/items/plushes.html
create mode 100644 modular_sand/code/game/objects/structures/ghost_role_spawners.html
create mode 100644 modular_sand/code/game/objects/structures/tank_holder.html
create mode 100644 modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/candy.html
create mode 100644 modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/drakeling.html
create mode 100644 modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/fanaticminer.html
create mode 100644 modular_sand/code/modules/reagents/chemistry/reagents.html
create mode 100644 modular_sand/code/modules/research/designs/mechfabricator_designs.html
create mode 100644 modular_sand/code/modules/research/designs/medical_designs.html
create mode 100644 modular_sand/code/modules/research/designs/telecomms_designs.html
create mode 100644 modular_sand/code/modules/telescience/telepad.html
create mode 100644 modular_sand/icons/mob/cyborg/Drakeborg-licensing.html
create mode 100644 modular_sand/icons/obj/license.html
create mode 100644 modular_splurt.html
create mode 100644 modular_splurt/code/__HELPERS/spawns.html
create mode 100644 modular_splurt/code/controllers/subsystem/discord.html
create mode 100644 modular_splurt/code/datums/dna.html
create mode 100644 modular_splurt/code/datums/interactions/lewd/lewd_datums.html
create mode 100644 modular_splurt/code/datums/status_effects/pregnancy.html
create mode 100644 modular_splurt/code/game/area/areas/shuttles.html
create mode 100644 modular_splurt/code/game/objects/items/lewd_items/leash.html
create mode 100644 modular_splurt/code/game/objects/items/robot/robot_items.html
create mode 100644 modular_splurt/code/game/objects/structures/bed_chairs/sofa.html
create mode 100644 modular_splurt/code/game/objects/structures/cannons/cannon.html
create mode 100644 modular_splurt/code/modules/antagonists/_common/antag_spawner.html
create mode 100644 modular_splurt/code/modules/clothing/lewd_clothing/collar/kink_collars.html
create mode 100644 modular_splurt/code/modules/clothing/lewd_clothing/foot/lewd_shoes.html
create mode 100644 modular_splurt/code/modules/clothing/misc/body_camera.html
create mode 100644 modular_splurt/code/modules/clothing/suits/cloaks.html
create mode 100644 modular_splurt/code/modules/discord/discord_link_record.html
create mode 100644 modular_splurt/code/modules/jobs/job_types/blueshield.html
create mode 100644 modular_splurt/code/modules/mapping/modular_map_loader.html
create mode 100644 modular_splurt/code/modules/mob/dead/new_player/sprite_accesories/body_markings.html
create mode 100644 modular_splurt/code/modules/mob/living/silicon/robot/robot_modules.html
create mode 100644 modular_splurt/code/modules/research/designs/mechfabricator_designs.html
create mode 100644 modular_splurt/code/modules/vehicles/mecha/combat/savannah_ivanov.html
create mode 100644 modular_splurt/code/modules/vehicles/mecha/mecha_parts.html
create mode 100644 modular_splurt/sound/voice/catpeople/credits.html
create mode 100644 obj.html
create mode 100644 obj/belly.html
create mode 100644 obj/docking_port.html
create mode 100644 obj/docking_port/mobile.html
create mode 100644 obj/docking_port/stationary/picked.html
create mode 100644 obj/docking_port/stationary/random.html
create mode 100644 obj/durand_shield.html
create mode 100644 obj/effect/abstract/parry.html
create mode 100644 obj/effect/anomaly.html
create mode 100644 obj/effect/broken_illusion.html
create mode 100644 obj/effect/decal/chempuff.html
create mode 100644 obj/effect/decal/cleanable.html
create mode 100644 obj/effect/decal/cleanable/conveyor_sorter.html
create mode 100644 obj/effect/eldritch.html
create mode 100644 obj/effect/landmark/start/hangover.html
create mode 100644 obj/effect/mapping_helpers/custom_icon.html
create mode 100644 obj/effect/mapping_helpers/network_builder.html
create mode 100644 obj/effect/mapping_helpers/network_builder/atmos_pipe.html
create mode 100644 obj/effect/mapping_helpers/network_builder/power_cable.html
create mode 100644 obj/effect/mapping_helpers/trait_injector.html
create mode 100644 obj/effect/mine.html
create mode 100644 obj/effect/mob_spawn.html
create mode 100644 obj/effect/overlay/vis.html
create mode 100644 obj/effect/proc_holder/spell.html
create mode 100644 obj/effect/proc_holder/spell/cone.html
create mode 100644 obj/effect/proc_holder/spell/pointed.html
create mode 100644 obj/effect/proc_holder/spell/pointed/barnyardcurse.html
create mode 100644 obj/effect/proc_holder/spell/pointed/mind_transfer.html
create mode 100644 obj/effect/proc_holder/spell/targeted/fire_sworn.html
create mode 100644 obj/effect/reality_smash.html
create mode 100644 obj/effect/skyfall_landingzone.html
create mode 100644 obj/item.html
create mode 100644 obj/item/airlock_painter.html
create mode 100644 obj/item/airlock_painter/decal.html
create mode 100644 obj/item/airlock_painter/decal/tile.html
create mode 100644 obj/item/ammo_casing.html
create mode 100644 obj/item/assembly.html
create mode 100644 obj/item/assembly/control.html
create mode 100644 obj/item/assembly/control/electrochromatic.html
create mode 100644 obj/item/assembly/signaler.html
create mode 100644 obj/item/barcode.html
create mode 100644 obj/item/bodycam_upgrade.html
create mode 100644 obj/item/bodypart.html
create mode 100644 obj/item/book/random.html
create mode 100644 obj/item/borg/upgrade.html
create mode 100644 obj/item/borg_shapeshifter.html
create mode 100644 obj/item/bounty_cube.html
create mode 100644 obj/item/broom.html
create mode 100644 obj/item/canvas.html
create mode 100644 obj/item/cardboard_cutout.html
create mode 100644 obj/item/cardpack.html
create mode 100644 obj/item/chainsaw.html
create mode 100644 obj/item/chisel.html
create mode 100644 obj/item/circuitboard.html
create mode 100644 obj/item/clipboard.html
create mode 100644 obj/item/clipboard/cyborg.html
create mode 100644 obj/item/clothing.html
create mode 100644 obj/item/clothing/glasses/hud.html
create mode 100644 obj/item/clothing/gloves/fingerless/pugilist.html
create mode 100644 obj/item/clothing/gloves/mod.html
create mode 100644 obj/item/clothing/gloves/space_ninja.html
create mode 100644 obj/item/clothing/gloves/tackler.html
create mode 100644 obj/item/clothing/head.html
create mode 100644 obj/item/clothing/head/helmet/space/hardsuit/mining.html
create mode 100644 obj/item/clothing/head/helmet/space/plasmaman.html
create mode 100644 obj/item/clothing/head/helmet/space/space_ninja.html
create mode 100644 obj/item/clothing/head/ushanka.html
create mode 100644 obj/item/clothing/mask.html
create mode 100644 obj/item/clothing/mask/chameleon.html
create mode 100644 obj/item/clothing/mask/facehugger/toy.html
create mode 100644 obj/item/clothing/mask/gas/space_ninja.html
create mode 100644 obj/item/clothing/mask/void_mask.html
create mode 100644 obj/item/clothing/neck/eldritch_amulet.html
create mode 100644 obj/item/clothing/neck/necklace/dope/merchant.html
create mode 100644 obj/item/clothing/shoes.html
create mode 100644 obj/item/clothing/shoes/mod.html
create mode 100644 obj/item/clothing/shoes/space_ninja.html
create mode 100644 obj/item/clothing/suit/hooded.html
create mode 100644 obj/item/clothing/suit/space/space_ninja.html
create mode 100644 obj/item/computer_hardware.html
create mode 100644 obj/item/computer_hardware/ai_slot.html
create mode 100644 obj/item/computer_hardware/battery.html
create mode 100644 obj/item/computer_hardware/card_slot.html
create mode 100644 obj/item/construction/plumbing.html
create mode 100644 obj/item/conveyor_sorter.html
create mode 100644 obj/item/coupon.html
create mode 100644 obj/item/cult_spear.html
create mode 100644 obj/item/defibrillator.html
create mode 100644 obj/item/dualsaber.html
create mode 100644 obj/item/dyespray.html
create mode 100644 obj/item/eldritch_potion.html
create mode 100644 obj/item/electronics/airlock.html
create mode 100644 obj/item/electronics/electrochromatic_kit.html
create mode 100644 obj/item/energy_katana.html
create mode 100644 obj/item/extinguisher.html
create mode 100644 obj/item/fireaxe.html
create mode 100644 obj/item/flashlight/pen/paramedic.html
create mode 100644 obj/item/forbidden_book.html
create mode 100644 obj/item/gang_induction_package.html
create mode 100644 obj/item/genital_equipment.html
create mode 100644 obj/item/grenade.html
create mode 100644 obj/item/grenade/primer.html
create mode 100644 obj/item/gun.html
create mode 100644 obj/item/gun/ballistic.html
create mode 100644 obj/item/gun/energy.html
create mode 100644 obj/item/gun/energy/beam_rifle.html
create mode 100644 obj/item/hand_item/circlegame.html
create mode 100644 obj/item/hand_item/kisser.html
create mode 100644 obj/item/hand_item/slapper.html
create mode 100644 obj/item/hand_item/slapper/secret_handshake.html
create mode 100644 obj/item/hardened_spike.html
create mode 100644 obj/item/kinetic_crusher.html
create mode 100644 obj/item/kinetic_crusher/glaive.html
create mode 100644 obj/item/kitchen/knife/bloodletter.html
create mode 100644 obj/item/lipstick.html
create mode 100644 obj/item/living_heart.html
create mode 100644 obj/item/mail.html
create mode 100644 obj/item/mail/junkmail.html
create mode 100644 obj/item/mecha_parts/chassis/powerarmor.html
create mode 100644 obj/item/mecha_parts/mecha_equipment.html
create mode 100644 obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/punching_glove.html
create mode 100644 obj/item/mecha_parts/mecha_tracking.html
create mode 100644 obj/item/melee/baton.html
create mode 100644 obj/item/melee/classic_baton.html
create mode 100644 obj/item/melee/rune_knife.html
create mode 100644 obj/item/melee/skateboard.html
create mode 100644 obj/item/melee/transforming/cleaving_saw.html
create mode 100644 obj/item/melee/transforming/energy/sword/saber.html
create mode 100644 obj/item/milking_machine.html
create mode 100644 obj/item/mining_voucher.html
create mode 100644 obj/item/mjollnir.html
create mode 100644 obj/item/mod/control.html
create mode 100644 obj/item/mod/module.html
create mode 100644 obj/item/mod/module/anomaly_locked.html
create mode 100644 obj/item/mod/module/anomaly_locked/teleporter.html
create mode 100644 obj/item/mod/module/clamp.html
create mode 100644 obj/item/mod/module/dispenser.html
create mode 100644 obj/item/mod/module/dna_lock.html
create mode 100644 obj/item/mod/module/drill.html
create mode 100644 obj/item/mod/module/flashlight.html
create mode 100644 obj/item/mod/module/health_analyzer.html
create mode 100644 obj/item/mod/module/holster.html
create mode 100644 obj/item/mod/module/jetpack.html
create mode 100644 obj/item/mod/module/magboot.html
create mode 100644 obj/item/mod/module/magnetic_harness.html
create mode 100644 obj/item/mod/module/megaphone.html
create mode 100644 obj/item/mod/module/mister.html
create mode 100644 obj/item/mod/module/mouthhole.html
create mode 100644 obj/item/mod/module/orebag.html
create mode 100644 obj/item/mod/module/paper_dispenser.html
create mode 100644 obj/item/mod/module/springlock.html
create mode 100644 obj/item/mod/module/stealth.html
create mode 100644 obj/item/mod/module/storage.html
create mode 100644 obj/item/mod/module/t_ray.html
create mode 100644 obj/item/mod/module/visor.html
create mode 100644 obj/item/modular_computer.html
create mode 100644 obj/item/modular_computer/tablet/integrated.html
create mode 100644 obj/item/modular_computer/tablet/nukeops.html
create mode 100644 obj/item/modular_computer/tablet/syndicate_contract_uplink/preset/uplink.html
create mode 100644 obj/item/nullrod.html
create mode 100644 obj/item/organ.html
create mode 100644 obj/item/organ/brain.html
create mode 100644 obj/item/organ/eyes.html
create mode 100644 obj/item/organ/genital.html
create mode 100644 obj/item/paper.html
create mode 100644 obj/item/paper/natural.html
create mode 100644 obj/item/pet_carrier/bluespace.html
create mode 100644 obj/item/pinpointer.html
create mode 100644 obj/item/pitchfork.html
create mode 100644 obj/item/price_tagger.html
create mode 100644 obj/item/projectile.html
create mode 100644 obj/item/projectile/frost_orb.html
create mode 100644 obj/item/projectile/kiss.html
create mode 100644 obj/item/projectile/tether.html
create mode 100644 obj/item/raw_anomaly_core.html
create mode 100644 obj/item/rcl.html
create mode 100644 obj/item/reagent_containers/food.html
create mode 100644 obj/item/reagent_containers/food/snacks.html
create mode 100644 obj/item/reagent_containers/food/snacks/donut.html
create mode 100644 obj/item/reagent_containers/spray.html
create mode 100644 obj/item/reagent_containers/syringe.html
create mode 100644 obj/item/relic.html
create mode 100644 obj/item/restraints.html
create mode 100644 obj/item/restraints/legcuffs/bola.html
create mode 100644 obj/item/resurrection_crystal.html
create mode 100644 obj/item/reverse_bear_trap.html
create mode 100644 obj/item/robot_module.html
create mode 100644 obj/item/robot_suit.html
create mode 100644 obj/item/rtl.html
create mode 100644 obj/item/sales_tagger.html
create mode 100644 obj/item/seeds.html
create mode 100644 obj/item/shield.html
create mode 100644 obj/item/shield/riot/implant.html
create mode 100644 obj/item/shockpaddles.html
create mode 100644 obj/item/singularityhammer.html
create mode 100644 obj/item/soulstone.html
create mode 100644 obj/item/spear.html
create mode 100644 obj/item/stack.html
create mode 100644 obj/item/stack/cannonball.html
create mode 100644 obj/item/stack/conveyor.html
create mode 100644 obj/item/stack/ducts.html
create mode 100644 obj/item/stack/license_plates/filled.html
create mode 100644 obj/item/stack/medical.html
create mode 100644 obj/item/stack/medical/mesh.html
create mode 100644 obj/item/stack/sheet.html
create mode 100644 obj/item/stack/tile.html
create mode 100644 obj/item/staff/bostaff.html
create mode 100644 obj/item/stock_parts/cell.html
create mode 100644 obj/item/storage/book/bible.html
create mode 100644 obj/item/storage/box/papersack.html
create mode 100644 obj/item/storage/fancy/rollingpapers.html
create mode 100644 obj/item/storage/pod.html
create mode 100644 obj/item/storage/portable_chem_mixer.html
create mode 100644 obj/item/storage/toolbox/mechanical.html
create mode 100644 obj/item/summon.html
create mode 100644 obj/item/tank.html
create mode 100644 obj/item/throwing_star/stamina/ninja.html
create mode 100644 obj/item/toy/cards/cardhand.html
create mode 100644 obj/item/toy/crayon.html
create mode 100644 obj/item/toy/plush.html
create mode 100644 obj/item/transfer_valve.html
create mode 100644 obj/item/uplink.html
create mode 100644 obj/item/vibro_weapon.html
create mode 100644 obj/machinery.html
create mode 100644 obj/machinery/abductor/console.html
create mode 100644 obj/machinery/abductor/experiment.html
create mode 100644 obj/machinery/atmospherics.html
create mode 100644 obj/machinery/atmospherics/components/unary/cryo_cell.html
create mode 100644 obj/machinery/atmospherics/components/unary/tank.html
create mode 100644 obj/machinery/atmospherics/pipe/simple/multiz.html
create mode 100644 obj/machinery/autolathe.html
create mode 100644 obj/machinery/biogenerator.html
create mode 100644 obj/machinery/computer/arcade/battle.html
create mode 100644 obj/machinery/computer/camera_advanced.html
create mode 100644 obj/machinery/computer/camera_advanced/shuttle_docker.html
create mode 100644 obj/machinery/computer/cargo.html
create mode 100644 obj/machinery/computer/communications.html
create mode 100644 obj/machinery/computer/cryopod.html
create mode 100644 obj/machinery/computer/piratepad_control.html
create mode 100644 obj/machinery/computer/piratepad_control/civilian.html
create mode 100644 obj/machinery/computer/pod.html
create mode 100644 obj/machinery/computer/rdconsole.html
create mode 100644 obj/machinery/computer/scan_consolenew.html
create mode 100644 obj/machinery/computer/security.html
create mode 100644 obj/machinery/computer/shuttle.html
create mode 100644 obj/machinery/computer/shuttle/pod.html
create mode 100644 obj/machinery/computer/slavery.html
create mode 100644 obj/machinery/computer/vaultcontroller.html
create mode 100644 obj/machinery/cryopod.html
create mode 100644 obj/machinery/door.html
create mode 100644 obj/machinery/door/airlock.html
create mode 100644 obj/machinery/door/airlock/vault/derelict.html
create mode 100644 obj/machinery/door/keycard.html
create mode 100644 obj/machinery/doppler_array/research/science.html
create mode 100644 obj/machinery/duct.html
create mode 100644 obj/machinery/duct/multilayered.html
create mode 100644 obj/machinery/gateway.html
create mode 100644 obj/machinery/gear_painter.html
create mode 100644 obj/machinery/gravity_generator/part.html
create mode 100644 obj/machinery/holopad.html
create mode 100644 obj/machinery/hydroponics.html
create mode 100644 obj/machinery/hypnochair.html
create mode 100644 obj/machinery/limbgrower.html
create mode 100644 obj/machinery/mecha_part_fabricator.html
create mode 100644 obj/machinery/medipen_refiller.html
create mode 100644 obj/machinery/mineral.html
create mode 100644 obj/machinery/mineral/labor_claim_console.html
create mode 100644 obj/machinery/mineral/stacking_unit_console.html
create mode 100644 obj/machinery/modular_computer.html
create mode 100644 obj/machinery/modular_computer/console.html
create mode 100644 obj/machinery/modular_computer/console/preset/cargochat.html
create mode 100644 obj/machinery/navbeacon.html
create mode 100644 obj/machinery/photocopier.html
create mode 100644 obj/machinery/plate_press.html
create mode 100644 obj/machinery/plumbing.html
create mode 100644 obj/machinery/plumbing/acclimator.html
create mode 100644 obj/machinery/plumbing/bottler.html
create mode 100644 obj/machinery/plumbing/disposer.html
create mode 100644 obj/machinery/plumbing/fermenter.html
create mode 100644 obj/machinery/plumbing/filter.html
create mode 100644 obj/machinery/plumbing/liquid_pump.html
create mode 100644 obj/machinery/plumbing/pill_press.html
create mode 100644 obj/machinery/plumbing/reaction_chamber.html
create mode 100644 obj/machinery/plumbing/splitter.html
create mode 100644 obj/machinery/plumbing/synthesizer.html
create mode 100644 obj/machinery/pool/controller.html
create mode 100644 obj/machinery/pool/drain.html
create mode 100644 obj/machinery/porta_turret.html
create mode 100644 obj/machinery/portable_atmospherics/canister.html
create mode 100644 obj/machinery/power/apc.html
create mode 100644 obj/machinery/power/deck_relay.html
create mode 100644 obj/machinery/power/solar.html
create mode 100644 obj/machinery/power/solar_control.html
create mode 100644 obj/machinery/power/supermatter_crystal.html
create mode 100644 obj/machinery/power/tracker.html
create mode 100644 obj/machinery/recharger.html
create mode 100644 obj/machinery/research/explosive_compressor.html
create mode 100644 obj/machinery/seed_extractor.html
create mode 100644 obj/machinery/smartfridge.html
create mode 100644 obj/machinery/status_display.html
create mode 100644 obj/machinery/status_display/ai.html
create mode 100644 obj/machinery/suit_storage_unit.html
create mode 100644 obj/machinery/turretid.html
create mode 100644 obj/machinery/vending.html
create mode 100644 obj/machinery/vending/custom.html
create mode 100644 obj/modular_map_root.html
create mode 100644 obj/structure/alien/resin/flower_bud_enemy.html
create mode 100644 obj/structure/bed/double.html
create mode 100644 obj/structure/bloodsucker/candelabrum.html
create mode 100644 obj/structure/bookcase.html
create mode 100644 obj/structure/cable.html
create mode 100644 obj/structure/cannon.html
create mode 100644 obj/structure/carp_rift.html
create mode 100644 obj/structure/carving_block.html
create mode 100644 obj/structure/closet.html
create mode 100644 obj/structure/closet/crate/mail.html
create mode 100644 obj/structure/closet/crate/mail/economy.html
create mode 100644 obj/structure/closet/crate/secure/owned.html
create mode 100644 obj/structure/closet/secure_closet/cargo/owned.html
create mode 100644 obj/structure/closet/supplypod.html
create mode 100644 obj/structure/displaycase/forsale.html
create mode 100644 obj/structure/eldritch_crucible.html
create mode 100644 obj/structure/energy_net.html
create mode 100644 obj/structure/filingcabinet/employment.html
create mode 100644 obj/structure/filingcabinet/medical.html
create mode 100644 obj/structure/flora/rock.html
create mode 100644 obj/structure/fluff/iced_abductor.html
create mode 100644 obj/structure/glowshroom.html
create mode 100644 obj/structure/grille.html
create mode 100644 obj/structure/janitorialcart.html
create mode 100644 obj/structure/legionturret.html
create mode 100644 obj/structure/loom.html
create mode 100644 obj/structure/noticeboard.html
create mode 100644 obj/structure/railing.html
create mode 100644 obj/structure/safe.html
create mode 100644 obj/structure/sign/painting.html
create mode 100644 obj/structure/spawner/ice_moon.html
create mode 100644 obj/structure/statue.html
create mode 100644 obj/structure/statue/custom.html
create mode 100644 obj/structure/table.html
create mode 100644 obj/structure/tank_holder.html
create mode 100644 obj/structure/trap/eldritch.html
create mode 100644 obj/structure/window.html
create mode 100644 obj/vehicle/ridden/scooter/skateboard.html
create mode 100644 obj/vehicle/sealed/car/clowncar.html
create mode 100644 obj/vehicle/sealed/mecha.html
create mode 100644 obj/vehicle/sealed/mecha/combat/durand.html
create mode 100644 obj/vehicle/sealed/mecha/combat/savannah_ivanov.html
create mode 100644 obj/vehicle/sealed/mecha/working.html
create mode 100644 obj/vehicle/sealed/mecha/working/ripley.html
create mode 100644 procpath.html
create mode 100644 tools/CreditsTool/remappings.html
create mode 100644 tools/HitboxExpander.html
create mode 100644 tools/LinuxOneShot.html
create mode 100644 tools/Redirector/config.html
create mode 100644 tools/Redirector/textprocs.html
create mode 100644 tools/UnquotedListAssociations/2016-11-27-unquoted_list_associations_log.html
create mode 100644 tools/UnstandardnessTestForDM.html
create mode 100644 tools/UnstandardnessTestForDM/UnstandardnessTestForDM/obj/x86/Debug/UnstandardnessTestForDM.csproj.FileListAbsolute.html
create mode 100644 tools/UpdatePaths/apc_pixel_offsets.html
create mode 100644 tools/UpdatePaths/bridge_to_command.html
create mode 100644 tools/UpdatePaths/cornersfix.html
create mode 100644 tools/UpdatePaths/turfs2decals.html
create mode 100644 tools/build.html
create mode 100644 tools/changelog/requirements.html
create mode 100644 tools/ci/ci_config.html
create mode 100644 tools/hooks.html
create mode 100644 tools/mapmerge2.html
create mode 100644 tools/midi2piano.html
create mode 100644 tools/minibot/LICENCE-bot_folder.html
create mode 100644 tools/requirements.html
create mode 100644 turf.html
create mode 100644 turf/closed.html
create mode 100644 turf/closed/indestructible/splashscreen.html
create mode 100644 turf/closed/mineral.html
create mode 100644 turf/closed/wall.html
create mode 100644 turf/open.html
create mode 100644 turf/open/floor.html
create mode 100644 turf/open/floor/catwalk_floor.html
create mode 100644 turf/open/floor/glass.html
create mode 100644 turf/open/floor/plating/asteroid.html
create mode 100644 turf/open/lava.html
create mode 100644 turf/open/openspace/icemoon.html
create mode 100644 turf/open/space.html
create mode 100644 turf/open/space/transparent.html
create mode 100644 turf/open/space/transparent/openspace.html
create mode 100644 turf/open/water/cursed_spring.html
create mode 100644 world.html
diff --git a/.nojekyll b/.nojekyll
new file mode 100644
index 0000000000000..e69de29bb2d1d
diff --git a/CNAME b/CNAME
new file mode 100644
index 0000000000000..677b79ba9f9e1
--- /dev/null
+++ b/CNAME
@@ -0,0 +1 @@
+https://splurt-station.github.io/S.P.L.U.R.T-Station-13/
diff --git a/area.html b/area.html
new file mode 100644
index 0000000000000..659245a012da8
--- /dev/null
+++ b/area.html
@@ -0,0 +1,352 @@
+
+
+
+
+
+
+ /area - SPLURT Station 13
+
+
+
+
+area
+
+
+
+
+
+A grouping of tiles into a logical space, mostly used by map editors
Vars
+ always_unpowered This gets overridden to 1 for space in area/Initialize(mapload).
+ areasize Size of the area in open turfs, only calculated for indoors areas.
+ atmosalm Whether there is an atmos alarm in this area
+ beauty Beauty average per open turf in the area
+ beauty_threshold If a room is too big it doesn't have beauty.
+ clockwork_warp_allowed whether servants can warp into this area from Reebe
+ clockwork_warp_fail Message to display when the clockwork warp fails
+ considered_hull_exterior Considered space for hull shielding
+ dirt_buildup_allowed Dirty flooring allowed
+ fire Do we have an active fire alarm?
+ flora_allowed If flora are allowed to spawn in this area randomly through tunnel generation
+ hidden Hides area from player Teleport function.
+ map_generator This datum, if set, allows terrain generation behavior to be ran on Initialize()
+ map_name CIT SPECIFIC VARS
+Set in New(); preserves the name set by the map maker, even if renamed by the Blueprints.
+ megafauna_spawn_allowed If megafauna can be spawned by natural random generation
+ minimap_color Color on minimaps, if it's null (which is default) it makes one at random.
+ mob_spawn_allowed if mobs can be spawned by natural random generation
+ mood_bonus Bonus mood for being in this area
+ mood_message Mood message for being here, only shows up if mood_bonus != 0
+ outdoors For space, the asteroid, lavaland, etc. Used with blueprints or with weather to determine if we are adding a new area (vs editing a station room)
+ parallax_move_angle Parallax move dir - degrees clockwise from north
+ parallax_move_speed Parallax move speed - 0 to disable
+ parallax_moving Parallax moving?
+ persistent_debris_allowed Persistent debris alowed
+ requires_power Will objects this area be needing power?
+ safe Is the area teleport-safe: no space / radiation / aggresive mobs / other dangers
+ sound_environment Used to decide what kind of reverb the area makes sound have
+ sub_areas These two vars allow for multiple unique areas to be linked to a master area
+and share some functionalities such as APC powernet nodes, fire alarms etc, without sacrificing
+their own flags, statuses, variables and more snowflakes.
+Friendly reminder: no map edited areas.
+ totalbeauty All beauty in this area combined, only includes indoor area.
+ triggered_firealarms How many fire alarm sources do we have?
+ tunnel_allowed If mining tunnel generation is allowed in this area
+ valid_malf_hack malf ais can hack this Procs
+ Destroy Destroy an area and clean it up
+ Entered Call back when an atom enters an area
+ Exited Called when an atom exits an area
+ Initialize Initalize this area
+ LateInitialize Sets machine power levels in the area
+ New Called when an area loads
+ clear_camera Get rid of any dangling camera refs
+ poweralert Generate a power alert for this area
+ reg_in_areas_in_z Register this area as belonging to a z level
+ update_beauty Divides total beauty in the room by roomsize to allow us to get an average beauty per tile.
+ update_icon_state Update the icon state of the area
+ Var Details always_unpowered
+
+
+
+
+
+ This gets overridden to 1 for space in area/Initialize(mapload).
areasize
+
+
+
+
+
+ Size of the area in open turfs, only calculated for indoors areas.
atmosalm
+
+
+
+
+
+ Whether there is an atmos alarm in this area
beauty
+
+
+
+
+
+ Beauty average per open turf in the area
beauty_threshold
+
+
+
+
+
+ If a room is too big it doesn't have beauty.
clockwork_warp_allowed
+
+
+
+
+
+ whether servants can warp into this area from Reebe
clockwork_warp_fail
+
+
+
+
+
+ Message to display when the clockwork warp fails
considered_hull_exterior
+
+
+
+
+
+ Considered space for hull shielding
dirt_buildup_allowed
+
+
+
+
+
+ Dirty flooring allowed
fire
+
+
+
+
+
+ Do we have an active fire alarm?
flora_allowed
+
+
+
+
+
+ If flora are allowed to spawn in this area randomly through tunnel generation
hidden
+
+
+
+
+
+ Hides area from player Teleport function.
+ This datum, if set, allows terrain generation behavior to be ran on Initialize()
map_name
+
+
+
+
+
+ CIT SPECIFIC VARS
+Set in New(); preserves the name set by the map maker, even if renamed by the Blueprints.
megafauna_spawn_allowed
+
+
+
+
+
+ If megafauna can be spawned by natural random generation
minimap_color
+
+
+
+
+
+ Color on minimaps, if it's null (which is default) it makes one at random.
mob_spawn_allowed
+
+
+
+
+
+ if mobs can be spawned by natural random generation
mood_bonus
+
+
+
+
+
+ Bonus mood for being in this area
mood_message
+
+
+
+
+
+ Mood message for being here, only shows up if mood_bonus != 0
outdoors
+
+
+
+
+
+ For space, the asteroid, lavaland, etc. Used with blueprints or with weather to determine if we are adding a new area (vs editing a station room)
parallax_move_angle
+
+
+
+
+
+ Parallax move dir - degrees clockwise from north
parallax_move_speed
+
+
+
+
+
+ Parallax move speed - 0 to disable
parallax_moving
+
+
+
+
+
+ Parallax moving?
persistent_debris_allowed
+
+
+
+
+
+ Persistent debris alowed
requires_power
+
+
+
+
+
+ Will objects this area be needing power?
safe
+
+
+
+
+
+ Is the area teleport-safe: no space / radiation / aggresive mobs / other dangers
sound_environment
+
+
+
+
+
+ Used to decide what kind of reverb the area makes sound have
sub_areas
+
+
+
+
+
+ These two vars allow for multiple unique areas to be linked to a master area
+and share some functionalities such as APC powernet nodes, fire alarms etc, without sacrificing
+their own flags, statuses, variables and more snowflakes.
+Friendly reminder: no map edited areas.
totalbeauty
+
+
+
+
+
+ All beauty in this area combined, only includes indoor area.
triggered_firealarms
+
+
+
+
+
+ How many fire alarm sources do we have?
tunnel_allowed
+
+
+
+
+
+ If mining tunnel generation is allowed in this area
valid_malf_hack
+
+
+
+
+
+ malf ais can hack this
Proc Details Destroy()
+
+
+
+
+
+ Destroy an area and clean it up
+Removes the area from GLOB.areas_by_type and also stops it processing on SSobj
+This is despite the fact that no code appears to put it on SSobj, but
+who am I to argue with old coders
+ Call back when an atom enters an area
+Sends signals COMSIG_AREA_ENTERED and COMSIG_ENTER_AREA (to the atom)
+If the area has ambience, then it plays some ambience music to the ambience channel
+ Called when an atom exits an area
+Sends signals COMSIG_AREA_EXITED and COMSIG_EXIT_AREA (to the atom)
Initialize(mapload)
+
+
+
+
+
+ Initalize this area
+intializes the dynamic area lighting and also registers the area with the z level via
+reg_in_areas_in_z
+returns INITIALIZE_HINT_LATELOAD
LateInitialize()
+
+
+
+
+
+ Sets machine power levels in the area
New()
+
+
+
+
+
+ Called when an area loads
+Adds the item to the GLOB.areas_by_type list based on area type
clear_camera
+
+ Get rid of any dangling camera refs
poweralert(set_alarm, /obj /source)
+
+
+
+
+
+ Generate a power alert for this area
+Sends to all ai players, alert consoles, drones and alarm monitor programs in the world
reg_in_areas_in_z()
+
+
+
+
+
+ Register this area as belonging to a z level
+Ensures the item is added to the SSmapping.areas_in_z list for this z
update_beauty()
+
+
+
+
+
+ Divides total beauty in the room by roomsize to allow us to get an average beauty per tile.
update_icon_state()
+
+
+
+
+
+ Update the icon state of the area
+Im not sure what the heck this does, somethign to do with weather being able to set icon
+states on areas?? where the heck would that even display?
+
+
+
diff --git a/area/space.html b/area/space.html
new file mode 100644
index 0000000000000..c7def8a0d1362
--- /dev/null
+++ b/area/space.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /area/space - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ update_icon_state Update the icon of the area (overridden to always be null for space
Proc Details update_icon_state()
+
+
+
+
+
+ Update the icon of the area (overridden to always be null for space
+
+
+
diff --git a/atom.html b/atom.html
new file mode 100644
index 0000000000000..a68cd56564f0d
--- /dev/null
+++ b/atom.html
@@ -0,0 +1,792 @@
+
+
+
+
+
+
+ /atom - SPLURT Station 13
+
+
+
+
+atom
+
+
+
+
+
+The base type for nearly all physical objects in SS13
+Lots and lots of functionality lives here, although in general we are striving to move
+as much as possible to the components/elements system
Vars
+ add_overlays a very temporary list of overlays to add
+ article If non-null, overrides a/an/some in all cases
+ atom_colours used to store the different colors on an atom
+ attack_hand_is_action Should we set last action for attack hand? This implies that attack_hands to this atom should flush to clickdelay buffers instead of discarding.
+ attack_hand_speed Amount of time to check for from a mob's last attack to allow an attack_hand().
+ attack_hand_unwieldlyness Amount of time to hard stagger (no clicking at all) the mob post attack_hand(). Lower = better
+ base_icon_state Used for changing icon states for different base sprites.
+ base_pixel_x Default pixel x shifting for the atom's icon.
+ base_pixel_y Default pixel y shifting for the atom's icon.
+ chat_color Last color calculated for the the chatmessage overlays
+ chat_color_darkened A luminescence-shifted value of the last color calculated for chatmessage overlays
+ chat_color_name Last name used to calculate a color for the chatmessage overlays
+ custom_materials The custom materials this atom is made of, used by a lot of things like furniture, walls, and floors (if I finish the functionality, that is.)
+The list referenced by this var can be shared by multiple objects and should not be directly modified. Instead, use set_custom_materials .
+ custom_premium_price Price of an item in a vending machine, overriding the premium vending machine price. Define in terms of paycheck defines as opposed to raw numbers.
+ custom_price Price of an item in a vending machine, overriding the base vending machine price. Define in terms of paycheck defines as opposed to raw numbers.
+ explosion_block Value used to increment ex_act() if reactionary_explosions is on
+ explosion_flags Flags for explosions
+ fingerprintslast Last fingerprints to touch this atom
+ flags_1 First atom flags var
+ hud_list This atom's HUD (med/sec, etc) images. Associative list.
+ hud_possible HUD images that this atom can provide.
+ interaction_flags_atom Intearaction flags
+ managed_overlays overlays managed by update_overlays to prevent removing overlays that weren't added by the same proc
+ managed_vis_overlays vis overlays managed by SSvis_overlays to automaticaly turn them like other overlays
+ material_flags Bitfield for how the atom handles materials.
+ material_modifier Modifier that raises/lowers the effect of the amount of a material, prevents small and easy to get items from being death machines.
+ orbit_target Reference to atom being orbited
+ pass_flags_self pass_flags that we are. If any of this matches a pass_flag on a moving thing, by default, we let them through.
+ proximity_monitor Proximity monitor associated with this atom
+ rad_insulation Radiation insulation types
+ reagents Reagents holder
+ realized_overlays List of overlay "keys" (info about the appearance) -> mutable versions of static appearances
+Drawn from the overlays list
+ realized_underlays List of underlay "keys" (info about the appearance) -> mutable versions of static appearances
+Drawn from the underlays list
+ remove_overlays a very temporary list of overlays to remove
+ ricochet_chance_mod When a projectile tries to ricochet off this atom, the projectile ricochet chance is multiplied by this
+ ricochet_damage_mod When a projectile ricochets off this atom, it deals the normal damage * this modifier to this atom
+ targeted_by Mobs that are currently do_after'ing this atom, to be cleared from on Destroy()
+ wave_explosion_block Amount to decrease wave explosions by
+ wave_explosion_multiply Amount to multiply wave explosions by Procs
+ AltClickNoInteract Use this instead of [/mob/proc/AltClickOn] where you only want turf content listing without additional atom alt-click interaction
+ CanAllowThrough Returns true or false to allow the mover to move through src
+ ComponentInitialize Put your AddComponent calls here
+ Destroy Top level of the destroy chain for most atoms
+ Initialize The primary method that objects are setup in SS13 with
+ LateInitialize Sends a signal that the new atom src
, has been created at loc
+Late Intialization, for code that should run after all atoms have run Intialization
+ New Called when an atom is created in byond (built in engine proc)
+ _contents Wrapper to return a copy of contents, as SDQL2 can't tell an internal list from a normal list.
+ add_context Creates a "Type-B" contextual screentip interaction.
+When a user hovers over this, this proc will be called in order
+to provide context for contextual screentips.
+You must call register_context()
in order for this to be registered.
+A screentip context list is a list that has context keys (SCREENTIP_CONTEXT_*, from __DEFINES/screentips.dm)
+that map to the action as text.
+If you mutate the list in this signal, you must return CONTEXTUAL_SCREENTIP_SET.
+source
can, in all cases, be replaced with src
, and only exists because this proc directly connects to a signal.
+ audible_message Show a message to all mobs in earshot of this atom
+ balloon_alert Creates text that will float from the atom upwards to the viewer.
+ balloon_alert_to_viewers Create balloon alerts (text that floats up) to everything within range.
+Will only display to people who can see.
+ bullet_act React to a hit by a projectile object
+ check_projectile_ricochet Checks if a projectile should ricochet off of us. Projectiles get final say.
+[__DEFINES/projectiles.dm] for return values.
+ connect_to_shuttle Called after a shuttle is loaded from map template initially .
+ examine_more Called when a mob examines (shift click or verb) this atom twice (or more) within EXAMINE_MORE_TIME (default 1.5 seconds)
+ get_examine_string Generate the full examine string of this atom (including icon for goonchat)
+ get_filter_index Returns the indice in filters of the given filter name.
+If it is not found, returns null.
+ has_gravity Returns true if this atom has gravity for the passed in turf
+ hitby React to being hit by a thrown object
+ hitby_react We have have actually hit the passed in atom
+ mat_update_desc This proc is called when a material updates an object's description
+ mech_melee_attack Called when a mech melee attacks an atom
+ ninjadrain_act Atom level proc for space ninja's glove interactions.
+ onAwayMission Is the atom in an away mission
+ onCentCom Is this atom currently located on centcom
+ onSyndieBase Is the atom in any of the centcom syndicate areas
+ realize_overlays Takes the atoms's existing overlays and underlays, and makes them mutable so they can be properly vv'd in the realized_overlays/underlays list
+ register_context Create a "Type-B" contextual screentip interaction, registering to add_context()
.
+This will run add_context()
when the atom is hovered over by an item for context.
+add_context()
will not be called unless this is run.
+This is not necessary for Type-B interactions, as you can just apply the flag and register to the signal yourself.
+ rust_heretic_act Causes effects when the atom gets hit by a rust effect from heretics
+ setClosed Used to set something as 'closed' if it's being used as a supplypod
+ setOpened Used to set something as 'open' if it's being used as a supplypod
+ set_custom_materials Sets the custom materials for an item.
+ set_light_color Setter for the light color of this atom.
+ set_light_range Setter for the light range of this atom.
+ shuttleRotate Base proc
+ update_appearance Updates the appearence of the icon
+ update_desc Updates the description of the atom
+ update_icon Updates the icon of the atom
+ update_icon_state Updates the icon state of the atom
+ update_name Updates the name of the atom
+ update_overlays Builds a list of overlays for the atom, this will not apply them.
+If you need to update overlays, use [update_icon(UPDATE_OVERLAYS)],
+This proc is intended to be overridden.
+ visible_message Generate a visible message from this atom
+ wave_ex_act Called when a wave explosion hits this atom.
+ wave_explode Called when a wave explosion hits this atom. Do not override this.
+ zap_act Respond to a electric bolt action on our item
+ Var Details add_overlays
+
+
+
+
+
+ a very temporary list of overlays to add
article
+
+
+
+
+
+ If non-null, overrides a/an/some in all cases
atom_colours
+
+
+
+
+
+ used to store the different colors on an atom
+its inherent color, the colored paint applied on it, special color effect etc...
attack_hand_is_action
+
+
+
+
+
+ Should we set last action for attack hand? This implies that attack_hands to this atom should flush to clickdelay buffers instead of discarding.
attack_hand_speed
+
+
+
+
+
+ Amount of time to check for from a mob's last attack to allow an attack_hand().
attack_hand_unwieldlyness
+
+
+
+
+
+ Amount of time to hard stagger (no clicking at all) the mob post attack_hand(). Lower = better
base_icon_state
+
+
+
+
+
+ Used for changing icon states for different base sprites.
base_pixel_x
+
+
+
+
+
+ Default pixel x shifting for the atom's icon.
base_pixel_y
+
+
+
+
+
+ Default pixel y shifting for the atom's icon.
chat_color
+
+
+
+
+
+ Last color calculated for the the chatmessage overlays
chat_color_darkened
+
+
+
+
+
+ A luminescence-shifted value of the last color calculated for chatmessage overlays
chat_color_name
+
+
+
+
+
+ Last name used to calculate a color for the chatmessage overlays
custom_materials
+
+
+
+
+
+ The custom materials this atom is made of, used by a lot of things like furniture, walls, and floors (if I finish the functionality, that is.)
+The list referenced by this var can be shared by multiple objects and should not be directly modified. Instead, use set_custom_materials .
custom_premium_price
+
+
+
+
+
+ Price of an item in a vending machine, overriding the premium vending machine price. Define in terms of paycheck defines as opposed to raw numbers.
custom_price
+
+
+
+
+
+ Price of an item in a vending machine, overriding the base vending machine price. Define in terms of paycheck defines as opposed to raw numbers.
explosion_block
+
+
+
+
+
+ Value used to increment ex_act() if reactionary_explosions is on
explosion_flags
+
+
+
+
+
+ Flags for explosions
fingerprintslast
+
+
+
+
+
+ Last fingerprints to touch this atom
flags_1
+
+
+
+
+
+ First atom flags var
hud_list
+
+
+
+
+
+ This atom's HUD (med/sec, etc) images. Associative list.
hud_possible
+
+
+
+
+
+ HUD images that this atom can provide.
interaction_flags_atom
+
+
+
+
+
+ Intearaction flags
managed_overlays
+
+
+
+
+
+ overlays managed by update_overlays to prevent removing overlays that weren't added by the same proc
managed_vis_overlays
+
+
+
+
+
+ vis overlays managed by SSvis_overlays to automaticaly turn them like other overlays
material_flags
+
+
+
+
+
+ Bitfield for how the atom handles materials.
material_modifier
+
+
+
+
+
+ Modifier that raises/lowers the effect of the amount of a material, prevents small and easy to get items from being death machines.
orbit_target
+
+
+
+
+
+ Reference to atom being orbited
pass_flags_self
+
+
+
+
+
+ pass_flags that we are. If any of this matches a pass_flag on a moving thing, by default, we let them through.
proximity_monitor
+ – /datum /proximity_monitor
+
+
+
+
+ Proximity monitor associated with this atom
rad_insulation
+
+
+
+
+
+ Radiation insulation types
+ Reagents holder
realized_overlays
+
+
+
+
+
+ List of overlay "keys" (info about the appearance) -> mutable versions of static appearances
+Drawn from the overlays list
realized_underlays
+
+
+
+
+
+ List of underlay "keys" (info about the appearance) -> mutable versions of static appearances
+Drawn from the underlays list
remove_overlays
+
+
+
+
+
+ a very temporary list of overlays to remove
ricochet_chance_mod
+
+
+
+
+
+ When a projectile tries to ricochet off this atom, the projectile ricochet chance is multiplied by this
ricochet_damage_mod
+
+
+
+
+
+ When a projectile ricochets off this atom, it deals the normal damage * this modifier to this atom
targeted_by
+
+
+
+
+
+ Mobs that are currently do_after'ing this atom, to be cleared from on Destroy()
wave_explosion_block
+
+
+
+
+
+ Amount to decrease wave explosions by
wave_explosion_multiply
+
+
+
+
+
+ Amount to multiply wave explosions by
Proc Details AltClickNoInteract
+
+ Use this instead of [/mob/proc/AltClickOn] where you only want turf content listing without additional atom alt-click interaction
CanAllowThrough
+
+ Returns true or false to allow the mover to move through src
ComponentInitialize()
+
+
+
+
+
+ Put your AddComponent calls here
Destroy()
+
+
+
+
+
+ Top level of the destroy chain for most atoms
+Cleans up the following:
+
+Removes alternate apperances from huds that see them
+qdels the reagent holder from atoms if it exists
+clears the orbiters list
+clears overlays and priority overlays
+clears the light object
+ Initialize(mapload, ...)
+
+
+
+
+
+ The primary method that objects are setup in SS13 with
+we don't use New as we have better control over when this is called and we can choose
+to delay calls or hook other logic in and so forth
+During roundstart map parsing, atoms are queued for intialization in the base atom/New(),
+After the map has loaded, then Initalize is called on all atoms one by one. NB: this
+is also true for loading map templates as well, so they don't Initalize until all objects
+in the map file are parsed and present in the world
+If you're creating an object at any point after SSInit has run then this proc will be
+immediately be called from New.
+mapload: This parameter is true if the atom being loaded is either being intialized during
+the Atom subsystem intialization, or if the atom is being loaded from the map template.
+If the item is being created at runtime any time after the Atom subsystem is intialized then
+it's false.
+You must always call the parent of this proc, otherwise failures will occur as the item
+will not be seen as initalized (this can lead to all sorts of strange behaviour, like
+the item being completely unclickable)
+You must not sleep in this proc, or any subprocs
+Any parameters from new are passed through (excluding loc), naturally if you're loading from a map
+there are no other arguments
+Must return an initialization hint or a runtime will occur.
+Note: the following functions don't call the base for optimization and must copypasta handling:
+LateInitialize()
+
+
+
+
+
+ Sends a signal that the new atom src
, has been created at loc
+Late Intialization, for code that should run after all atoms have run Intialization
+To have your LateIntialize proc be called, your atoms Initalization
+proc must return the hint
+INITIALIZE_HINT_LATELOAD otherwise you will never be called.
+useful for doing things like finding other machines on GLOB.machines because you can guarantee
+that all atoms will actually exist in the "WORLD" at this time and that all their Intialization
+code has been run
New(loc, ...)
+
+
+
+
+
+ Called when an atom is created in byond (built in engine proc)
+Not a lot happens here in SS13 code, as we offload most of the work to the
+Intialization proc, mostly we run the preloader
+if the preloader is being used and then call InitAtom of which the ultimate
+result is that the Intialize proc is called.
+We also generate a tag here if the DF_USE_TAG flag is set on the atom
_contents()
+
+
+
+
+
+ Wrapper to return a copy of contents, as SDQL2 can't tell an internal list from a normal list.
add_context
+
+ Creates a "Type-B" contextual screentip interaction.
+When a user hovers over this, this proc will be called in order
+to provide context for contextual screentips.
+You must call register_context()
in order for this to be registered.
+A screentip context list is a list that has context keys (SCREENTIP_CONTEXT_*, from __DEFINES/screentips.dm)
+that map to the action as text.
+If you mutate the list in this signal, you must return CONTEXTUAL_SCREENTIP_SET.
+source
can, in all cases, be replaced with src
, and only exists because this proc directly connects to a signal.
audible_message(message, deaf_message, hearing_distance, self_message, ignored_mobs, runechat_popup, rune_msg)
+
+
+
+
+
+ Show a message to all mobs in earshot of this atom
+Use for objects performing audible actions
+vars:
+
+message is the message output to anyone who can hear.
+deaf_message (optional) is what deaf people will see.
+hearing_distance (optional) is the range, how many tiles away the message can be heard.
+ignored_mobs (optional) doesn't show any message to any given mob in the list.
+runechat_popup (optional) if TRUE, will display a runechat popup using rune_msg if set otherwise it will use message and self_message accordingly.
+rune_msg (optional) is the message to display in the runechat popup.
+ balloon_alert(/mob /viewer, text)
+
+
+
+
+
+ Creates text that will float from the atom upwards to the viewer.
balloon_alert_to_viewers(message, self_message, vision_distance, /list/ignored_mobs)
+
+
+
+
+
+ Create balloon alerts (text that floats up) to everything within range.
+Will only display to people who can see.
bullet_act
+
+ React to a hit by a projectile object
+Default behaviour is to send the COMSIG_ATOM_BULLET_ACT and then call [on_hit][/obj/item/projectile/proc/on_hit] on the projectile
+@params
+P - projectile
+def_zone - zone hit
+piercing_hit - is this hit piercing or normal?
check_projectile_ricochet
+
+ Checks if a projectile should ricochet off of us. Projectiles get final say.
+[__DEFINES/projectiles.dm] for return values.
connect_to_shuttle
+
+ Called after a shuttle is loaded from map template initially .
+@params
+
+port - Mobile port/shuttle
+dock - Stationary dock the shuttle's at
+idnum - ID number of the shuttle
+ examine_more
+
+ Called when a mob examines (shift click or verb) this atom twice (or more) within EXAMINE_MORE_TIME (default 1.5 seconds)
+This is where you can put extra information on something that may be superfluous or not important in critical gameplay
+moments, while allowing people to manually double-examine to take a closer look
+Produces a signal COMSIG_PARENT_EXAMINE_MORE
get_examine_string(/mob /user, thats)
+
+
+
+
+
+ Generate the full examine string of this atom (including icon for goonchat)
get_filter_index(name)
+
+
+
+
+
+ Returns the indice in filters of the given filter name.
+If it is not found, returns null.
has_gravity
+
+ Returns true if this atom has gravity for the passed in turf
+Sends signals COMSIG_ATOM_HAS_GRAVITY and COMSIG_TURF_HAS_GRAVITY, both can force gravity with
+the forced gravity var
+Gravity situations:
+
+No gravity if you're not in a turf
+No gravity if this atom is in is a space turf
+Gravity if the area it's in always has gravity
+Gravity if there's a gravity generator on the z level
+Gravity if the Z level has an SSMappingTrait for ZTRAIT_GRAVITY
+otherwise no gravity
+ hitby
+
+ React to being hit by a thrown object
+Default behaviour is to call hitby_react on ourselves after 2 seconds if we are dense
+and under normal gravity.
+Im not sure why this the case, maybe to prevent lots of hitby's if the thrown object is
+deleted shortly after hitting something (during explosions or other massive events that
+throw lots of items around - singularity being a notable example)
hitby_react
+
+ We have have actually hit the passed in atom
+Default behaviour is to move back from the item that hit us
mat_update_desc
+
+ This proc is called when a material updates an object's description
mech_melee_attack
+
+ Called when a mech melee attacks an atom
+ Atom level proc for space ninja's glove interactions.
+Proc which only occurs when space ninja uses his gloves on an atom.
+Does nothing by default, but effects will vary.
+Arguments:
+
+ninja_suit - The offending space ninja's suit.
+ninja - The human mob wearing the suit.
+ninja_gloves - The offending space ninja's gloves.
+ onAwayMission()
+
+
+
+
+
+ Is the atom in an away mission
+Must be in the away mission z-level to return TRUE
+Also used in gamemode code for win conditions
onCentCom()
+
+
+
+
+
+ Is this atom currently located on centcom
+Specifically, is it on the z level and within the centcom areas
+You can also be in a shuttleshuttle during endgame transit
+Used in gamemode to identify mobs who have escaped and for some other areas of the code
+who don't want atoms where they shouldn't be
onSyndieBase()
+
+
+
+
+
+ Is the atom in any of the centcom syndicate areas
+Either in the syndie base on centcom, or any of their shuttles
+Also used in gamemode code for win conditions
realize_overlays()
+
+
+
+
+
+ Takes the atoms's existing overlays and underlays, and makes them mutable so they can be properly vv'd in the realized_overlays/underlays list
register_context()
+
+
+
+
+
+ Create a "Type-B" contextual screentip interaction, registering to add_context()
.
+This will run add_context()
when the atom is hovered over by an item for context.
+add_context()
will not be called unless this is run.
+This is not necessary for Type-B interactions, as you can just apply the flag and register to the signal yourself.
rust_heretic_act()
+
+
+
+
+
+ Causes effects when the atom gets hit by a rust effect from heretics
+Override this if you want custom behaviour in whatever gets hit by the rust
setClosed()
+
+
+
+
+
+ Used to set something as 'closed' if it's being used as a supplypod
+Override this if you want an atom to be usable as a supplypod.
setOpened()
+
+
+
+
+
+ Used to set something as 'open' if it's being used as a supplypod
+Override this if you want an atom to be usable as a supplypod.
set_custom_materials(/list/materials, multiplier)
+
+
+
+
+
+ Sets the custom materials for an item.
set_light_color(new_color)
+
+
+
+
+
+ Setter for the light color of this atom.
set_light_range(new_range)
+
+
+
+
+
+ Setter for the light range of this atom.
shuttleRotate(rotation, params)
+
+
+
+
+
+ Base proc
update_appearance(updates)
+
+
+
+
+
+ Updates the appearence of the icon
+Mostly delegates to update_name, update_desc, and update_icon
+Arguments:
+
+updates: A set of bitflags dictating what should be updated. Defaults to [ALL]
+ update_desc(updates)
+
+
+
+
+
+ Updates the description of the atom
update_icon(updates)
+
+
+
+
+
+ Updates the icon of the atom
update_icon_state()
+
+
+
+
+
+ Updates the icon state of the atom
update_name(updates)
+
+
+
+
+
+ Updates the name of the atom
update_overlays()
+
+
+
+
+
+ Builds a list of overlays for the atom, this will not apply them.
+If you need to update overlays, use [update_icon(UPDATE_OVERLAYS)],
+This proc is intended to be overridden.
visible_message(message, self_message, blind_message, vision_distance, ignored_mobs, /mob /target, target_message, omni, runechat_popup, rune_msg)
+
+
+
+
+
+ Generate a visible message from this atom
+Show a message to all player mobs who sees this atom
+Show a message to the src mob (if the src is a mob)
+Use for atoms performing visible actions
+message is output to anyone who can see, e.g. "The [src] does something!"
+Vars:
+
+self_message (optional) is what the src mob sees e.g. "You do something!"
+blind_message (optional) is what blind people will hear e.g. "You hear something!"
+vision_distance (optional) define how many tiles away the message can be seen.
+ignored_mobs (optional) doesn't show any message to any given mob in the list.
+target (optional) is the other mob involved with the visible message. For example, the attacker in many combat messages.
+target_message (optional) is what the target mob will see e.g. "[src] does something to you!"
+omni (optional) if TRUE, will show to users no matter what.
+runechat_popup (optional) if TRUE, will display a runechat popup using rune_msg if set otherwise it will use message and self_message accordingly.
+rune_msg (optional) is the message to display in the runechat popup.
+ wave_ex_act
+
+ Called when a wave explosion hits this atom.
+Returns explosion power to "allow through". Standard handling and flag overrides in [wave_explode()].
wave_explode
+
+ Called when a wave explosion hits this atom. Do not override this.
+Returns explosion power to "allow through".
zap_act(power, zap_flags, shocked_targets)
+
+
+
+
+
+ Respond to a electric bolt action on our item
+Default behaviour is to return, we define here to allow for cleaner code later on
+
+
+
diff --git a/atom/movable.html b/atom/movable.html
new file mode 100644
index 0000000000000..1b7a7bc91d0c0
--- /dev/null
+++ b/atom/movable.html
@@ -0,0 +1,382 @@
+
+
+
+
+
+
+ /atom/movable - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ blocks_emissive Either FALSE, EMISSIVE_BLOCK_GENERIC , or EMISSIVE_BLOCK_UNIQUE
+ can_be_z_moved Used for space ztransit stuff
+ em_block Internal holder for emissive blocker object, do not use directly use blocks_emissive
+ floating_need_update If we were without gravity and another animation happened, the bouncing will stop, and we need to restart it in next life().
+ generic_canpass If false makes CanPass call CanPassThrough on this type instead of using default behaviour
+ last_yell last time we yelled
+ movement_type In case you have multiple types, you automatically use the most useful one.
+IE: Skating on ice, flippers on water, flying over chasm/space, etc.
+I reccomend you use the movetype_handler system and not modify this directly, especially for living mobs.
+ pass_flags Things we can pass through while moving. If any of this matches the thing we're trying to pass's [pass_flags_self], then we can pass through.
+ tooltips Should we use tooltips, if the thing does not have the code implemented get_tooltip_data()
, it will default to examine(src)
+ yell_power How loudly we yell Procs
+ CanPassThrough Returns true or false to allow src to move through the blocker, mover has final say
+ Process_Spacemove Called whenever an object moves and by mobs when they attempt to move themselves through space
+And when an object or action applies a force on src, see newtonian_move
+ abstract_move meant for movement with zero side effects. only use for objects that are supposed to move "invisibly" (like camera mobs or ghosts)
+if you want something to move onto a tile with a beartrap or recycler or tripmine or mouse without that object knowing about it at all, use this
+most of the time you want forceMove()
+ add_blocked_language Adds a language to the blocked language list. Use this over remove_language in cases where you will give languages back later.
+ admin_teleport Proc to hook user-enacted teleporting behavior and keep logging of the event.
+ can_speak_language Checks if atom can speak the language.
+ copy_languages Copies all languages into the supplied atom/language holder. Source should be overridden when you
+do not want the language overwritten by later atom updates or want to avoid blocked languages.
+ could_speak_language Returns the result of tongue specific limitations on spoken languages.
+ create_point_bubble Set position
+Set rotation
+ forceMove FORCED MOVEMENT
+ get_language_holder Gets or creates the relevant language holder. For mindless atoms, gets the local one. For atom with mind, gets the mind one.
+ get_random_spoken_language Gets a random spoken language, useful for forced speech and such.
+ get_random_understood_language Gets a random understood language, useful for hallucinations and such.
+ get_selected_language Returns selected language, if it can be spoken, or finds, sets and returns a new selected language if possible.
+ get_tooltip_data If set, will return a list for the tooltip (that will also be put together in a Join()
)
+However, if returning null
, the tooltip will not be shown as #14942 changed it.
+ grant_all_languages Grants every language.
+ grant_language Grants the supplied language and sets omnitongue true.
+ has_language Checks if atom has the language. If spoken is true, only checks if atom can speak the language.
+ mouse_buckle_handling Does some typechecks and then calls user_buckle_mob
+ newtonian_move Only moves the object if it's under no gravity
+ on_enter_storage called when this atom is added into a storage item, which is passed on as S. The loc variable is already set to the storage item.
+ on_exit_storage called when this atom is removed from a storage item, which is passed on as S. The loc variable is already set to the new destination before this is called.
+ point_at Point at an atom
+ quoteless_say_quote Quirky citadel proc for our custom sayverbs to strip the verb out. Snowflakey as hell, say rewrite 3.0 when?
+ recursive_pulled_glidesize_update Recursively set glide size for atom's pulled things
+ remove_all_languages Removes every language and sets omnitongue false.
+ remove_blocked_language Removes a language from the blocked language list.
+ remove_language Removes a single language.
+ say_emphasis Scans the input sentence for speech emphasis modifiers, notably |italics|, +bold+, and underline -mothblocks
+ setGrabState Updates the grab state of the movable
+ setMovetype Proc to modify the movement_type and hook behavior associated with it changing.
+ set_anchored Sets the anchored var and returns if it was sucessfully changed or not.
+ set_bark Sets the vocal bark for the atom, using the bark's ID
+ set_pulledby Reports the event of the change in value of the pulledby variable.
+ throw_at If this returns FALSE then callback will not be called.
+ update_atom_languages Empties out the atom specific languages and updates them according to the current atoms language holder.
+As a side effect, it also creates missing language holders in the process.
+ Var Details blocks_emissive
+
+
+
+
+
+ Either FALSE, EMISSIVE_BLOCK_GENERIC , or EMISSIVE_BLOCK_UNIQUE
can_be_z_moved
+
+
+
+
+
+ Used for space ztransit stuff
+ Internal holder for emissive blocker object, do not use directly use blocks_emissive
floating_need_update
+
+
+
+
+
+ If we were without gravity and another animation happened, the bouncing will stop, and we need to restart it in next life().
generic_canpass
+
+
+
+
+
+ If false makes CanPass call CanPassThrough on this type instead of using default behaviour
last_yell
+
+
+
+
+
+ last time we yelled
movement_type
+
+
+
+
+
+ In case you have multiple types, you automatically use the most useful one.
+IE: Skating on ice, flippers on water, flying over chasm/space, etc.
+I reccomend you use the movetype_handler system and not modify this directly, especially for living mobs.
pass_flags
+
+
+
+
+
+ Things we can pass through while moving. If any of this matches the thing we're trying to pass's [pass_flags_self], then we can pass through.
+ Should we use tooltips, if the thing does not have the code implemented get_tooltip_data()
, it will default to examine(src)
yell_power
+
+
+
+
+
+ How loudly we yell
Proc Details CanPassThrough(/atom /blocker, /turf /target, blocker_opinion)
+
+
+
+
+
+ Returns true or false to allow src to move through the blocker, mover has final say
Process_Spacemove(movement_dir)
+
+
+
+
+
+ Called whenever an object moves and by mobs when they attempt to move themselves through space
+And when an object or action applies a force on src, see newtonian_move
+return FALSE to have src start/keep drifting in a no-grav area and 1 to stop/not start drifting
+Mobs should return TRUE if they should be able to move of their own volition, see [/client/proc/Move]
+Arguments:
+
+movement_dir - 0 when stopping or any dir when trying to move
+ abstract_move
+
+ meant for movement with zero side effects. only use for objects that are supposed to move "invisibly" (like camera mobs or ghosts)
+if you want something to move onto a tile with a beartrap or recycler or tripmine or mouse without that object knowing about it at all, use this
+most of the time you want forceMove()
add_blocked_language(language, source)
+
+
+
+
+
+ Adds a language to the blocked language list. Use this over remove_language in cases where you will give languages back later.
admin_teleport(/atom /new_location, message)
+
+
+
+
+
+ Proc to hook user-enacted teleporting behavior and keep logging of the event.
can_speak_language(language)
+
+
+
+
+
+ Checks if atom can speak the language.
copy_languages(from_holder, source_override)
+
+
+
+
+
+ Copies all languages into the supplied atom/language holder. Source should be overridden when you
+do not want the language overwritten by later atom updates or want to avoid blocked languages.
could_speak_language(language)
+
+
+
+
+
+ Returns the result of tongue specific limitations on spoken languages.
create_point_bubble(/atom /pointed_atom)
+
+
+
+
+
+ Set position
+Set rotation
forceMove(/atom /destination)
+
+
+
+
+
+ FORCED MOVEMENT
get_language_holder(get_minds)
+
+
+
+
+
+ Gets or creates the relevant language holder. For mindless atoms, gets the local one. For atom with mind, gets the mind one.
get_random_spoken_language()
+
+
+
+
+
+ Gets a random spoken language, useful for forced speech and such.
get_random_understood_language()
+
+
+
+
+
+ Gets a random understood language, useful for hallucinations and such.
get_selected_language()
+
+
+
+
+
+ Returns selected language, if it can be spoken, or finds, sets and returns a new selected language if possible.
+ If set, will return a list for the tooltip (that will also be put together in a Join()
)
+However, if returning null
, the tooltip will not be shown as #14942 changed it.
+Though no tooltips will be created for atoms that have tooltips = FALSE
grant_all_languages(understood, spoken, grant_omnitongue, source)
+
+
+
+
+
+ Grants every language.
grant_language(language, understood, spoken, source)
+
+
+
+
+
+ Grants the supplied language and sets omnitongue true.
has_language(language, spoken)
+
+
+
+
+
+ Checks if atom has the language. If spoken is true, only checks if atom can speak the language.
mouse_buckle_handling
+
+ Does some typechecks and then calls user_buckle_mob
+Arguments:
+M - The mob being buckled to src
+user - The mob buckling M to src
newtonian_move(direction)
+
+
+
+
+
+ Only moves the object if it's under no gravity
on_enter_storage
+
+ called when this atom is added into a storage item, which is passed on as S. The loc variable is already set to the storage item.
on_exit_storage
+
+ called when this atom is removed from a storage item, which is passed on as S. The loc variable is already set to the new destination before this is called.
point_at(/atom /pointed_atom, params)
+
+
+
+
+
+ Point at an atom
+Intended to enable and standardise the pointing animation for all atoms
+Not intended as a replacement for the mob verb
quoteless_say_quote(input, /list/spans, message_mode)
+
+
+
+
+
+ Quirky citadel proc for our custom sayverbs to strip the verb out. Snowflakey as hell, say rewrite 3.0 when?
recursive_pulled_glidesize_update()
+
+
+
+
+
+ Recursively set glide size for atom's pulled things
remove_all_languages(source, remove_omnitongue)
+
+
+
+
+
+ Removes every language and sets omnitongue false.
remove_blocked_language(language, source)
+
+
+
+
+
+ Removes a language from the blocked language list.
remove_language(language, understood, spoken, source)
+
+
+
+
+
+ Removes a single language.
say_emphasis(input)
+
+
+
+
+
+ Scans the input sentence for speech emphasis modifiers, notably |italics|, +bold+, and underline -mothblocks
setGrabState(newstate)
+
+
+
+
+
+ Updates the grab state of the movable
+This exists to act as a hook for behaviour
setMovetype(newval)
+
+
+
+
+
+ Proc to modify the movement_type and hook behavior associated with it changing.
set_anchored(anchorvalue)
+
+
+
+
+
+ Sets the anchored var and returns if it was sucessfully changed or not.
set_bark(id)
+
+
+
+
+
+ Sets the vocal bark for the atom, using the bark's ID
set_pulledby(new_pulledby)
+
+
+
+
+
+ Reports the event of the change in value of the pulledby variable.
throw_at(/atom /target, range, speed, /mob /thrower, spin, diagonals_first, /datum /callback /callback, force, gentle, quickstart)
+
+
+
+
+
+ If this returns FALSE then callback will not be called.
update_atom_languages()
+
+
+
+
+
+ Empties out the atom specific languages and updates them according to the current atoms language holder.
+As a side effect, it also creates missing language holders in the process.
+
+
+
diff --git a/atom/movable/emissive_blocker.html b/atom/movable/emissive_blocker.html
new file mode 100644
index 0000000000000..725e5fe81cefb
--- /dev/null
+++ b/atom/movable/emissive_blocker.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ /atom/movable/emissive_blocker - SPLURT Station 13
+
+
+
+
+
+
+Internal atom that copies an appearance on to the blocker plane
+Copies an appearance vis render_target and render_source on to the emissive blocking plane.
+This means that the atom in question will block any emissive sprites.
+This should only be used internally. If you are directly creating more of these, you're
+almost guaranteed to be doing something wrong.
+
+
+
diff --git a/atom/movable/fov_holder.html b/atom/movable/fov_holder.html
new file mode 100644
index 0000000000000..845e612283ef8
--- /dev/null
+++ b/atom/movable/fov_holder.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /atom/movable/fov_holder - SPLURT Station 13
+
+
+
+
+
+
+The shadow cone's mask and visual images holder which can't locate inside the mob,
+lest they inherit the mob opacity and cause a lot of hindrance
Procs
+ Destroy Last but not least, these shouldn't be deleted by anything but the component itself
+ forceMove Prevents people from moving these after creation, because they shouldn't be.
Proc Details Destroy(force)
+
+
+
+
+
+ Last but not least, these shouldn't be deleted by anything but the component itself
forceMove(/atom /destination, no_tp, harderforce)
+
+
+
+
+
+ Prevents people from moving these after creation, because they shouldn't be.
+
+
+
diff --git a/atom/movable/screen.html b/atom/movable/screen.html
new file mode 100644
index 0000000000000..321afefdf725b
--- /dev/null
+++ b/atom/movable/screen.html
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+ /atom/movable/screen - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ assigned_map Map name assigned to this object.
+Automatically set by /client/proc/add_obj_to_map.
+ del_on_map_removal Mark this object as garbage-collectible after you clean the map
+it was registered on.
+ hud A reference to the owner HUD, if any.
+ master A reference to the object in the slot. Grabs or items, generally. Procs
+ fill_rect Sets screen_loc to fill a rectangular area of the map.
+ set_position Sets screen_loc of this screen object, in form of point coordinates,
+with optional pixel offset (px, py).
+ Var Details assigned_map
+
+
+
+
+
+ Map name assigned to this object.
+Automatically set by /client/proc/add_obj_to_map.
del_on_map_removal
+
+
+
+
+
+ Mark this object as garbage-collectible after you clean the map
+it was registered on.
+This could probably be changed to be a proc, for conditional removal.
+But for now, this works.
hud
+
+
+
+
+
+ A reference to the owner HUD, if any.
master
+
+
+
+
+
+ A reference to the object in the slot. Grabs or items, generally.
Proc Details fill_rect(x1, y1, x2, y2)
+
+
+
+
+
+ Sets screen_loc to fill a rectangular area of the map.
+If applicable, "assigned_map" has to be assigned before this proc call.
set_position(x, y, px, py)
+
+
+
+
+
+ Sets screen_loc of this screen object, in form of point coordinates,
+with optional pixel offset (px, py).
+If applicable, "assigned_map" has to be assigned before this proc call.
+
+
+
diff --git a/atom/movable/screen/action_landing.html b/atom/movable/screen/action_landing.html
new file mode 100644
index 0000000000000..f545f3374e20a
--- /dev/null
+++ b/atom/movable/screen/action_landing.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /atom/movable/screen/action_landing - SPLURT Station 13
+
+
+
+
+
+
+Exists so you have a place to put your buttons when you move them around
Procs
+ hit_by Reacts to having a button dropped on it
Proc Details
+ Reacts to having a button dropped on it
+
+
+
diff --git a/atom/movable/screen/alert.html b/atom/movable/screen/alert.html
new file mode 100644
index 0000000000000..61ec9b1c93299
--- /dev/null
+++ b/atom/movable/screen/alert.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /atom/movable/screen/alert - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ click_master Boolean. If TRUE, the Click() proc will attempt to Click() on the master first if there is a master.
+ Var Details click_master
+
+
+
+
+
+ Boolean. If TRUE, the Click() proc will attempt to Click() on the master first if there is a master.
+
+
+
diff --git a/atom/movable/screen/alert/give.html b/atom/movable/screen/alert/give.html
new file mode 100644
index 0000000000000..47bed29dd602d
--- /dev/null
+++ b/atom/movable/screen/alert/give.html
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+ /atom/movable/screen/alert/give - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ check_in_range Simply checks if the other person is still in range
+ handle_transfer An overrideable proc used simply to hand over the item when claimed, this is a proc so that high-fives can override them since nothing is actually transferred
+ setup Handles assigning most of the variables for the alert that pops up when an item is offered
Proc Details check_in_range
+
+ Simply checks if the other person is still in range
handle_transfer()
+
+
+
+
+
+ An overrideable proc used simply to hand over the item when claimed, this is a proc so that high-fives can override them since nothing is actually transferred
+ Handles assigning most of the variables for the alert that pops up when an item is offered
+Handles setting the name, description and icon of the alert and tracking the person giving
+and the item being offered, also registers a signal that removes the alert from anyone who moves away from the offerer
+Arguments:
+
+taker - The person receiving the alert
+offerer - The person giving the alert and item
+receiving - The item being given by the offerer
+
+
+
+
diff --git a/atom/movable/screen/alert/give/highfive.html b/atom/movable/screen/alert/give/highfive.html
new file mode 100644
index 0000000000000..5d680bc8a22fb
--- /dev/null
+++ b/atom/movable/screen/alert/give/highfive.html
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+ /atom/movable/screen/alert/give/highfive - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ check_fake_out If someone examine_more's the offerer while they're trying to pull a too-slow, it'll tip them off to the offerer's trickster ways
+ too_slow_p1 If the person who offered the high five no longer has it when we try to accept it, we get pranked hard
+ too_slow_p2 Part two of the ultimate prank
Proc Details check_fake_out(/datum /source, /mob /user, /list/examine_list)
+
+
+
+
+
+ If someone examine_more's the offerer while they're trying to pull a too-slow, it'll tip them off to the offerer's trickster ways
too_slow_p1()
+
+
+
+
+
+ If the person who offered the high five no longer has it when we try to accept it, we get pranked hard
too_slow_p2()
+
+
+
+
+
+ Part two of the ultimate prank
+
+
+
diff --git a/atom/movable/screen/alert/status_effect/pregnancy.html b/atom/movable/screen/alert/status_effect/pregnancy.html
new file mode 100644
index 0000000000000..967425ea1e28a
--- /dev/null
+++ b/atom/movable/screen/alert/status_effect/pregnancy.html
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+ /atom/movable/screen/alert/status_effect/pregnancy - SPLURT Station 13
+
+
+
+
+
+
+Who is the liar but he who denies that Jesus is the Christ? This is the antichrist, he who denies the Father and the Son.
+
+
+
+
diff --git a/atom/movable/screen/button_palette.html b/atom/movable/screen/button_palette.html
new file mode 100644
index 0000000000000..817770f07c9d6
--- /dev/null
+++ b/atom/movable/screen/button_palette.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /atom/movable/screen/button_palette - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ color_timer_id Id of any currently running timers that set our color matrix
+ Var Details color_timer_id
+
+
+
+
+
+ Id of any currently running timers that set our color matrix
+
+
+
diff --git a/atom/movable/screen/combattoggle.html b/atom/movable/screen/combattoggle.html
new file mode 100644
index 0000000000000..1cef64ce9ca81
--- /dev/null
+++ b/atom/movable/screen/combattoggle.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /atom/movable/screen/combattoggle - SPLURT Station 13
+
+
+
+
+
+
+The screen button.
Procs
+ Click Wheter combat mode is enabled or not, so we don't have to store a reference.
Proc Details Click()
+
+
+
+
+
+ Wheter combat mode is enabled or not, so we don't have to store a reference.
+
+
+
diff --git a/atom/movable/screen/fullscreen.html b/atom/movable/screen/fullscreen.html
new file mode 100644
index 0000000000000..12acb607f5cca
--- /dev/null
+++ b/atom/movable/screen/fullscreen.html
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+ /atom/movable/screen/fullscreen - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details severity
+
+
+
+
+
+ current severity
severity_max
+
+
+
+
+
+ max severity
severity_min
+
+
+
+
+
+ min severity
show_when_dead
+
+
+
+
+
+ show this while dead
view_current
+
+
+
+
+
+ current view we're adapted to
+
+
+
diff --git a/atom/movable/screen/fullscreen/scaled.html b/atom/movable/screen/fullscreen/scaled.html
new file mode 100644
index 0000000000000..1a650679e41b5
--- /dev/null
+++ b/atom/movable/screen/fullscreen/scaled.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /atom/movable/screen/fullscreen/scaled - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ size_x size of sprite in tiles
+ size_y size of sprite in tiles
+ Var Details size_x
+
+
+
+
+
+ size of sprite in tiles
size_y
+
+
+
+
+
+ size of sprite in tiles
+
+
+
diff --git a/atom/movable/screen/inventory.html b/atom/movable/screen/inventory.html
new file mode 100644
index 0000000000000..bc127cd53af56
--- /dev/null
+++ b/atom/movable/screen/inventory.html
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+ /atom/movable/screen/inventory - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ icon_empty Icon when empty. For now used only by humans.
+ icon_full Icon when contains an item. For now used only by humans.
+ object_overlay The overlay when hovering over with an item in your hand
+ slot_id The identifier for the slot. It has nothing to do with ID cards.
+ Var Details icon_empty
+
+
+
+
+
+ Icon when empty. For now used only by humans.
icon_full
+
+
+
+
+
+ Icon when contains an item. For now used only by humans.
object_overlay
+
+
+
+
+
+ The overlay when hovering over with an item in your hand
slot_id
+
+
+
+
+
+ The identifier for the slot. It has nothing to do with ID cards.
+
+
+
diff --git a/atom/movable/screen/lobby.html b/atom/movable/screen/lobby.html
new file mode 100644
index 0000000000000..4cffc89d1963c
--- /dev/null
+++ b/atom/movable/screen/lobby.html
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+ /atom/movable/screen/lobby - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ always_shown Whether this HUD element can be hidden from the client's "screen" (moved off-screen) or not Procs
+ SlowInit Run sleeping actions after initialize
+ collapse_button Animates moving the button off-screen
+ expand_button Animates moving the button back into place
+ Var Details always_shown
+
+
+
+
+
+ Whether this HUD element can be hidden from the client's "screen" (moved off-screen) or not
Proc Details SlowInit()
+
+
+
+
+
+ Run sleeping actions after initialize
+ Animates moving the button off-screen
+ Animates moving the button back into place
+
+
+
diff --git a/atom/movable/screen/lobby/button.html b/atom/movable/screen/lobby/button.html
new file mode 100644
index 0000000000000..565d6c76066a4
--- /dev/null
+++ b/atom/movable/screen/lobby/button.html
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+ /atom/movable/screen/lobby/button - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ enabled Is the button currently enabled?
+ highlighted Is the button currently being hovered over with the mouse?
+ owner The ref of the mob that owns this button. Only the owner can click on it. Procs
+ set_button_status Updates the button's status: TRUE to enable interaction with the button, FALSE to disable
+ Var Details enabled
+
+
+
+
+
+ Is the button currently enabled?
highlighted
+
+
+
+
+
+ Is the button currently being hovered over with the mouse?
owner
+
+
+
+
+
+ The ref of the mob that owns this button. Only the owner can click on it.
Proc Details
+ Updates the button's status: TRUE to enable interaction with the button, FALSE to disable
+
+
+
diff --git a/atom/movable/screen/lobby/button/bottom/poll.html b/atom/movable/screen/lobby/button/bottom/poll.html
new file mode 100644
index 0000000000000..025fa62b37306
--- /dev/null
+++ b/atom/movable/screen/lobby/button/bottom/poll.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /atom/movable/screen/lobby/button/bottom/poll - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ new_poll Whether the button should have a New Poll notification overlay
+ Var Details new_poll
+
+
+
+
+
+ Whether the button should have a New Poll notification overlay
+
+
+
diff --git a/atom/movable/screen/lobby/button/collapse.html b/atom/movable/screen/lobby/button/collapse.html
new file mode 100644
index 0000000000000..6e3115634e7eb
--- /dev/null
+++ b/atom/movable/screen/lobby/button/collapse.html
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+ /atom/movable/screen/lobby/button/collapse - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ collapse_menu Moves the button to the top of the screen, leaving only the screen part in view
+Sends a signal on the hud for the menu hud elements to listen to
+ expand_menu Extends the button back to its usual spot
+Sends a signal on the hud for the menu hud elements to listen to
Proc Details
+ Moves the button to the top of the screen, leaving only the screen part in view
+Sends a signal on the hud for the menu hud elements to listen to
expand_menu()
+
+
+
+
+
+ Extends the button back to its usual spot
+Sends a signal on the hud for the menu hud elements to listen to
+
+
+
diff --git a/atom/movable/screen/lobby/button/ready.html b/atom/movable/screen/lobby/button/ready.html
new file mode 100644
index 0000000000000..313bdd610f3c6
--- /dev/null
+++ b/atom/movable/screen/lobby/button/ready.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /atom/movable/screen/lobby/button/ready - SPLURT Station 13
+
+
+
+
+
+
+Button that appears before the game has started
Vars
+ ready Whether we are readied up for the round or not
+ Var Details ready
+
+
+
+
+
+ Whether we are readied up for the round or not
+
+
+
diff --git a/atom/movable/screen/lobby/shutter.html b/atom/movable/screen/lobby/shutter.html
new file mode 100644
index 0000000000000..855bf346c24b5
--- /dev/null
+++ b/atom/movable/screen/lobby/shutter.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /atom/movable/screen/lobby/shutter - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ setup_shutter_animation Sets up the shutter pulling down and up. It's the same animation for both collapsing and expanding the menu.
Proc Details setup_shutter_animation()
+
+
+
+
+
+ Sets up the shutter pulling down and up. It's the same animation for both collapsing and expanding the menu.
+
+
+
diff --git a/atom/movable/screen/movable.html b/atom/movable/screen/movable.html
new file mode 100644
index 0000000000000..e35e2d62b783b
--- /dev/null
+++ b/atom/movable/screen/movable.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /atom/movable/screen/movable - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ mouse_params_to_position Takes mouse parmas as input, returns a string representing the appropriate mouse position
Proc Details mouse_params_to_position(params)
+
+
+
+
+
+ Takes mouse parmas as input, returns a string representing the appropriate mouse position
+
+
+
diff --git a/atom/movable/screen/movable/action_button.html b/atom/movable/screen/movable/action_button.html
new file mode 100644
index 0000000000000..46591bc8093bd
--- /dev/null
+++ b/atom/movable/screen/movable/action_button.html
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+ /atom/movable/screen/movable/action_button - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ id A unique bitflag, combined with the name of our linked action this lets us persistently remember any user changes to our position
+ last_hovored_ref A weakref of the last thing we hovered over
+God I hate how dragging works
+ location Where we are currently placed on the hud. SCRN_OBJ_DEFAULT asks the linked action what it thinks
+ Var Details id
+
+
+
+
+
+ A unique bitflag, combined with the name of our linked action this lets us persistently remember any user changes to our position
last_hovored_ref
+
+
+
+
+
+ A weakref of the last thing we hovered over
+God I hate how dragging works
location
+
+
+
+
+
+ Where we are currently placed on the hud. SCRN_OBJ_DEFAULT asks the linked action what it thinks
+
+
+
diff --git a/atom/movable/screen/palette_scroll.html b/atom/movable/screen/palette_scroll.html
new file mode 100644
index 0000000000000..e07bbae0a1d86
--- /dev/null
+++ b/atom/movable/screen/palette_scroll.html
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+ /atom/movable/screen/palette_scroll - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ scroll_direction How should we move the palette's actions?
+Positive scrolls down the list, negative scrolls back
+ Var Details
+ How should we move the palette's actions?
+Positive scrolls down the list, negative scrolls back
+
+
+
diff --git a/atom/movable/screen/parallax_layer.html b/atom/movable/screen/parallax_layer.html
new file mode 100644
index 0000000000000..22e92e03aa025
--- /dev/null
+++ b/atom/movable/screen/parallax_layer.html
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+ /atom/movable/screen/parallax_layer - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ absolute absolute - always determine shift x/y as a function of real x/y instead of allowing for relative scroll.
+ center_x normal centered x
+ center_y normal centered y
+ dynamic_self_tile dynamic self tile - tile to our view size. set this to false for static parallax layers.
+ map_id map id
+ offset_x current cached offset x
+ offset_y current cached offset y
+ parallax_intensity parallax level required to see this
+ queued_animation queued animation timerid
+ speed pixel x/y shift per real x/y
+ view_current current view we're adapted to Procs
+ GetOverlays Return "natural" overlays, as we're goin to do some fuckery to overlays above.
+ Var Details absolute
+
+
+
+
+
+ absolute - always determine shift x/y as a function of real x/y instead of allowing for relative scroll.
center_x
+
+
+
+
+
+ normal centered x
center_y
+
+
+
+
+
+ normal centered y
dynamic_self_tile
+
+
+
+
+
+ dynamic self tile - tile to our view size. set this to false for static parallax layers.
map_id
+
+
+
+
+
+ map id
offset_x
+
+
+
+
+
+ current cached offset x
offset_y
+
+
+
+
+
+ current cached offset y
parallax_intensity
+
+
+
+
+
+ parallax level required to see this
queued_animation
+
+
+
+
+
+ queued animation timerid
speed
+
+
+
+
+
+ pixel x/y shift per real x/y
view_current
+
+
+
+
+
+ current view we're adapted to
Proc Details GetOverlays()
+
+
+
+
+
+ Return "natural" overlays, as we're goin to do some fuckery to overlays above.
+
+
+
diff --git a/atom/movable/screen/storage/volumetric_box/center.html b/atom/movable/screen/storage/volumetric_box/center.html
new file mode 100644
index 0000000000000..df1c269ac193f
--- /dev/null
+++ b/atom/movable/screen/storage/volumetric_box/center.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /atom/movable/screen/storage/volumetric_box/center - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ set_pixel_size Sets the size of this box screen object and regenerates its left/right borders. This includes the actual border's size!
Proc Details set_pixel_size(pixels)
+
+
+
+
+
+ Sets the size of this box screen object and regenerates its left/right borders. This includes the actual border's size!
+
+
+
diff --git a/atom/movable/screen/wanted.html b/atom/movable/screen/wanted.html
new file mode 100644
index 0000000000000..f1b0609c0a7e9
--- /dev/null
+++ b/atom/movable/screen/wanted.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /atom/movable/screen/wanted - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ cops_arrived Boolean, have the cops arrived? If so, the icon stops changing and remains the same.
+ level Wanted level, affects the hud icon. Level 0 is default, and the level 0 icon is blank, so in case of no families gamemode (and thus no wanted level), this HUD element will never appear.
+ Var Details cops_arrived
+
+
+
+
+
+ Boolean, have the cops arrived? If so, the icon stops changing and remains the same.
level
+
+
+
+
+
+ Wanted level, affects the hud icon. Level 0 is default, and the level 0 icon is blank, so in case of no families gamemode (and thus no wanted level), this HUD element will never appear.
+
+
+
diff --git a/atom/movable/summon_weapon_effect.html b/atom/movable/summon_weapon_effect.html
new file mode 100644
index 0000000000000..89189c1690090
--- /dev/null
+++ b/atom/movable/summon_weapon_effect.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /atom/movable/summon_weapon_effect - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details locked
+
+
+
+
+
+ locked atom
+
+
+
diff --git a/client.html b/client.html
new file mode 100644
index 0000000000000..6f57abb2f838d
--- /dev/null
+++ b/client.html
@@ -0,0 +1,606 @@
+
+
+
+
+
+
+ /client - SPLURT Station 13
+
+
+
+
+client
+
+
+
+
+
+Vars
+ active_mousedown_item Autoclick variable referencing the associated item.
+ admin_music_volume Admin music volume, from 0 to 1.
+ autobunker_last_try last time they tried to do an autobunker auth
+ block_parry_hinted Should go in persistent round player data sometime. This tracks what items have already warned the user on pickup that they can block/parry.
+ click_catcher Click catcher
+ click_intercept_time Time when the click was intercepted
+ clicklimiter Used for limiting the rate of clicks sends by the client to avoid abuse
+ client_keysend_amount Amount of keydowns in the last keysend checking interval
+ completed_asset_jobs List of all completed blocking send jobs awaiting acknowledgement by send_asset
+ credits lazy list of all credit object bound to this client
+ cryo_warned When was the last time we warned them about not cryoing without an ahelp, set to -5 minutes so that rounstart cryo still warns
+ holder Contains admin info. Null if client is not an admin.
+ keys_held Keys currently held
+ keysend_tripped When set to true, user will be autokicked if they trip the keysends in a second limit again
+ last_activity AFK tracking
+ last_asset_job Last asset send job id.
+ last_click Last time we Click()ed. No clicking twice in one tick!
+ last_macro_fix Last time they used fix macros
+ mouseParams Used in MouseDrag to preserve the original mouse click parameters
+ mouse_location_ref Used in MouseDrag to preserve the last mouse-entered location. Weakref
+ mouse_object_ref Used in MouseDrag to preserve the last mouse-entered object. Weakref
+ mouse_override_icon used to override the mouse cursor so it doesnt get reset
+ moused_over_objects moused over objects, currently capped at 7. this is awful, and should be replaced with a component to track it using signals for parrying at some point.
+ movement_keys custom movement keys for this client
+ navigation_images Images of the path created by navigate().
+ next_keysend_reset World tick time where client_keysend_amount will reset
+ next_keysend_trip_reset World tick time where keysend_tripped will reset back to false
+ next_move_dir_add These next two vars are to apply movement for keypresses and releases made while move delayed.
+Because discarding that input makes the game less responsive.
+On next move, add this dir to the move that would otherwise be done
+ next_move_dir_sub On next move, subtract this dir from the move that would otherwise be done
+ panel_tabs list of all tabs
+ parallax_holder Parallax holder
+ recent_examines A lazy list of atoms we've examined in the last EXAMINE_MORE_TIME (default 1.5) seconds, so that we will call [atom/proc/examine_more()] instead of [atom/proc/examine()] on them when examining
+ screen_maps Assoc list with all the active maps - when a screen obj is added to
+a map, it's put in here as well.
+ script !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!HEY LISTEN!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ seen_messages Messages currently seen by this client
+ selected_target Autoclick list of two elements, first being the clicked thing, second being the parameters.
+ show_verb_panel hides the byond verb panel as we use our own custom version
+ spell_tabs list of tabs containing spells and abilities
+ stat_tab our current tab
+ statbrowser_ready whether our browser is ready or not yet
+ tgui_cache_reloaded global
+ tgui_windows global
+ tip_timer Timers are now handled by clients, not by doing a mess on the item and multiple people overwriting a single timer on the object, have fun.
+ total_count_reset Next tick to reset the total message counter
+ total_message_count How many messages sent in the last 10 seconds
+ verb_tabs list of tabs containing verbs
+ view_size viewsize datum for holding our view size Procs
+ ForceAllKeysUp Check if the key is short enough to even be a real key
+Keyup's all keys held down.
+ NONSENSICAL_VERB_THAT_DOES_NOTHING *sigh
+ Process_Grab Process_Grab(): checks for grab, attempts to break if so. Return TRUE to prevent movement.
+ Process_Incorpmove Process_Incorpmove
+Called by client/Move()
+Allows mobs to run though walls
+ admin_cmd_remove_ghost_respawn_timer Allows a ghost to bypass respawn delay without lifting respawn restrictions
+ admin_cmd_respawn_return_to_lobby Fully returns a player to lobby, allowing them to bypass all respawn restrictions
+Works on ghosts or new players (lobby players)
+If a lobby player is selected, their restrictions are removed.
+ asset_cache_confirm_arrival Process asset cache client topic calls for "asset_cache_confirm_arrival=[INT]"
+ asset_cache_preload_data Process asset cache client topic calls for "asset_cache_preload_data=[HTML+JSON_STRING]"
+ asset_cache_update_json Updates the client side stored json file used to keep track of what assets the client has between restarts/reconnects.
+ award_heart Redirect proc that makes it easier to get the status of an achievement. Achievement type is the typepath to the award.
+ browse_queue_flush Blocks until all currently sending browse and browse_rsc assets have been sent.
+Due to byond limitations, this proc will sleep for 1 client round trip even if the client has no pending asset sends.
+This proc will return an untrue value if it had to return before confirming the send, such as timeout or the client going away.
+ clear_all_maps Clears all the maps of registered screen objects.
+ clear_map Clears the map of registered screen objects.
+ close_popup Closes a popup.
+ create_popup Creates a popup window with a basic map element in it, without any
+further initialization.
+ fix_tgui_panel tgui panel / chat troubleshooting verb
+ forceEvent Allows an admin to force an event
+ get_award_status Redirect proc that makes it easier to get the status of an achievement. Achievement type is the typepath to the award.
+ give_award Redirect proc that makes it easier to call the unlock achievement proc. Achievement type is the typepath to the award, user is the mob getting the award, and value is an optional variable used for leaderboard value increments
+ handle_popup_close When the popup closes in any way (player or proc call) it calls this.
+ init_verbs compiles a full list of verbs and sends it to the browser
+ register_map_obj Registers screen obj with the client, which makes it visible on the
+assigned map, and becomes a part of the assigned map's lifecycle.
+ send_resources Send resources to the client.
+Sends both game resources and browser assets.
+ set_tab verbs that send information from the browser UI
+ setup_popup Create the popup, and get it ready for generic use by giving
+it a background.
+ uiclose verb
+ update_clickcatcher Makes a clickcatcher if necessary, and ensures it's fit to our size.
+ update_special_keybinds Updates the keybinds for special keys
+ Var Details active_mousedown_item
+
+
+
+
+
+ Autoclick variable referencing the associated item.
admin_music_volume
+
+
+
+
+
+ Admin music volume, from 0 to 1.
autobunker_last_try
+
+
+
+
+
+ last time they tried to do an autobunker auth
block_parry_hinted
+
+
+
+
+
+ Should go in persistent round player data sometime. This tracks what items have already warned the user on pickup that they can block/parry.
click_catcher
+
+
+
+
+
+ Click catcher
click_intercept_time
+
+
+
+
+
+ Time when the click was intercepted
clicklimiter
+
+
+
+
+
+ Used for limiting the rate of clicks sends by the client to avoid abuse
client_keysend_amount
+
+
+
+
+
+ Amount of keydowns in the last keysend checking interval
completed_asset_jobs
+
+
+
+
+
+ List of all completed blocking send jobs awaiting acknowledgement by send_asset
credits
+
+
+
+
+
+ lazy list of all credit object bound to this client
cryo_warned
+
+
+
+
+
+ When was the last time we warned them about not cryoing without an ahelp, set to -5 minutes so that rounstart cryo still warns
+ Contains admin info. Null if client is not an admin.
keys_held
+
+
+
+
+
+ Keys currently held
keysend_tripped
+
+
+
+
+
+ When set to true, user will be autokicked if they trip the keysends in a second limit again
last_activity
+
+
+
+
+
+ AFK tracking
last_asset_job
+
+
+
+
+
+ Last asset send job id.
last_click
+
+
+
+
+
+ Last time we Click()ed. No clicking twice in one tick!
last_macro_fix
+
+
+
+
+
+ Last time they used fix macros
mouseParams
+
+
+
+
+
+ Used in MouseDrag to preserve the original mouse click parameters
mouse_location_ref
+
+
+
+
+
+ Used in MouseDrag to preserve the last mouse-entered location. Weakref
mouse_object_ref
+
+
+
+
+
+ Used in MouseDrag to preserve the last mouse-entered object. Weakref
mouse_override_icon
+
+
+
+
+
+ used to override the mouse cursor so it doesnt get reset
moused_over_objects
+
+
+
+
+
+ moused over objects, currently capped at 7. this is awful, and should be replaced with a component to track it using signals for parrying at some point.
movement_keys
+
+
+
+
+
+ custom movement keys for this client
navigation_images
+
+
+
+
+
+ Images of the path created by navigate().
next_keysend_reset
+
+
+
+
+
+ World tick time where client_keysend_amount will reset
next_keysend_trip_reset
+
+
+
+
+
+ World tick time where keysend_tripped will reset back to false
next_move_dir_add
+
+
+
+
+
+ These next two vars are to apply movement for keypresses and releases made while move delayed.
+Because discarding that input makes the game less responsive.
+On next move, add this dir to the move that would otherwise be done
next_move_dir_sub
+
+
+
+
+
+ On next move, subtract this dir from the move that would otherwise be done
panel_tabs
+
+
+
+
+
+ list of all tabs
+ Parallax holder
recent_examines
+
+
+
+
+
+ A lazy list of atoms we've examined in the last EXAMINE_MORE_TIME (default 1.5) seconds, so that we will call [atom/proc/examine_more()] instead of [atom/proc/examine()] on them when examining
screen_maps
+
+
+
+
+
+ Assoc list with all the active maps - when a screen obj is added to
+a map, it's put in here as well.
+Format: list( = list(/atom/movable/screen))
script
+
+
+
+
+
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!HEY LISTEN!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
seen_messages
+
+
+
+
+
+ Messages currently seen by this client
selected_target
+
+
+
+
+
+ Autoclick list of two elements, first being the clicked thing, second being the parameters.
show_verb_panel
+
+
+
+
+
+ hides the byond verb panel as we use our own custom version
spell_tabs
+
+
+
+
+
+ list of tabs containing spells and abilities
stat_tab
+
+
+
+
+
+ our current tab
statbrowser_ready
+
+
+
+
+
+ whether our browser is ready or not yet
tgui_cache_reloaded
+
+
+
+
+
+ global
+TRUE if cache was reloaded by tgui dev server at least once.
tgui_windows
+
+
+
+
+
+ global
+Tracks open windows for a user.
tip_timer
+
+
+
+
+
+ Timers are now handled by clients, not by doing a mess on the item and multiple people overwriting a single timer on the object, have fun.
total_count_reset
+
+
+
+
+
+ Next tick to reset the total message counter
total_message_count
+
+
+
+
+
+ How many messages sent in the last 10 seconds
verb_tabs
+
+
+
+
+
+ list of tabs containing verbs
view_size
+
+
+
+
+
+ viewsize datum for holding our view size
Proc Details ForceAllKeysUp()
+
+
+
+
+
+ Check if the key is short enough to even be a real key
+Keyup's all keys held down.
NONSENSICAL_VERB_THAT_DOES_NOTHING()
+
+
+
+
+
+ *sigh
Process_Grab()
+
+
+
+
+
+ Process_Grab(): checks for grab, attempts to break if so. Return TRUE to prevent movement.
Process_Incorpmove(direction)
+
+
+
+
+
+ Process_Incorpmove
+Called by client/Move()
+Allows mobs to run though walls
admin_cmd_remove_ghost_respawn_timer()
+
+
+
+
+
+ Allows a ghost to bypass respawn delay without lifting respawn restrictions
admin_cmd_respawn_return_to_lobby()
+
+
+
+
+
+ Fully returns a player to lobby, allowing them to bypass all respawn restrictions
+Works on ghosts or new players (lobby players)
+If a lobby player is selected, their restrictions are removed.
asset_cache_confirm_arrival(job_id)
+
+
+
+
+
+ Process asset cache client topic calls for "asset_cache_confirm_arrival=[INT]"
asset_cache_preload_data(data)
+
+
+
+
+
+ Process asset cache client topic calls for "asset_cache_preload_data=[HTML+JSON_STRING]"
asset_cache_update_json()
+
+
+
+
+
+ Updates the client side stored json file used to keep track of what assets the client has between restarts/reconnects.
award_heart(heart_reason)
+
+
+
+
+
+ Redirect proc that makes it easier to get the status of an achievement. Achievement type is the typepath to the award.
browse_queue_flush(timeout)
+
+
+
+
+
+ Blocks until all currently sending browse and browse_rsc assets have been sent.
+Due to byond limitations, this proc will sleep for 1 client round trip even if the client has no pending asset sends.
+This proc will return an untrue value if it had to return before confirming the send, such as timeout or the client going away.
clear_all_maps()
+
+
+
+
+
+ Clears all the maps of registered screen objects.
clear_map(map_name)
+
+
+
+
+
+ Clears the map of registered screen objects.
+Not really needed most of the time, as the client's screen list gets reset
+on relog. any of the buttons are going to get caught by garbage collection
+anyway. they're effectively qdel'd.
+ Closes a popup.
+ Creates a popup window with a basic map element in it, without any
+further initialization.
+Ratio is how many pixels by how many pixels (keep it simple).
+Returns a map name.
fix_tgui_panel()
+
+
+
+
+
+ tgui panel / chat troubleshooting verb
forceEvent()
+
+
+
+
+
+ Allows an admin to force an event
get_award_status(achievement_type, /mob /user, value)
+
+
+
+
+
+ Redirect proc that makes it easier to get the status of an achievement. Achievement type is the typepath to the award.
give_award(achievement_type, /mob /user, value)
+
+
+
+
+
+ Redirect proc that makes it easier to call the unlock achievement proc. Achievement type is the typepath to the award, user is the mob getting the award, and value is an optional variable used for leaderboard value increments
handle_popup_close(window_id)
+
+
+
+
+
+ When the popup closes in any way (player or proc call) it calls this.
init_verbs()
+
+
+
+
+
+ compiles a full list of verbs and sends it to the browser
register_map_obj
+
+ Registers screen obj with the client, which makes it visible on the
+assigned map, and becomes a part of the assigned map's lifecycle.
send_resources()
+
+
+
+
+
+ Send resources to the client.
+Sends both game resources and browser assets.
set_tab(tab)
+
+
+
+
+
+ verbs that send information from the browser UI
+ Create the popup, and get it ready for generic use by giving
+it a background.
+Width and height are multiplied by 64 by default.
uiclose(window_id)
+
+
+
+
+
+ verb
+Called by UIs when they are closed.
+Must be a verb so winset() can call it.
+required uiref ref The UI that was closed.
update_clickcatcher(/list/view_override)
+
+
+
+
+
+ Makes a clickcatcher if necessary, and ensures it's fit to our size.
update_special_keybinds
+
+ Updates the keybinds for special keys
+Handles adding macros for the keys that need it
+And adding movement keys to the clients movement_keys list
+At the time of writing this, communication(OOC, Say, IC) require macros
+Arguments:
+
+direct_prefs - the preference we're going to get keybinds from
+
+Returns list of special keybind in key = Mod1Mod2Mod3Key format, NOT Mod1+Mod2+Mod3+Key format.
+
+
+
diff --git a/code/__DEFINES/DNA.html b/code/__DEFINES/DNA.html
new file mode 100644
index 0000000000000..d88bc6f6741bd
--- /dev/null
+++ b/code/__DEFINES/DNA.html
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+ code/__DEFINES/DNA.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/DNA.dm
+
+
+
+
+ HAS_FLESH Used for determining which wounds are applicable to this species.
+if we have flesh (can suffer slash/piercing/burn wounds, requires they don't have NOBLOOD)
+ HAS_BONE if we have bones (can suffer bone wounds)
+ STANDARD_ORGAN_THRESHOLD organ defines
Define Details
+HAS_BONE
+
+
+
+ if we have bones (can suffer bone wounds)
HAS_FLESH
+
+
+
+ Used for determining which wounds are applicable to this species.
+if we have flesh (can suffer slash/piercing/burn wounds, requires they don't have NOBLOOD)
STANDARD_ORGAN_THRESHOLD
+
+
+
+ organ defines
+
+
+
diff --git a/code/__DEFINES/MC.html b/code/__DEFINES/MC.html
new file mode 100644
index 0000000000000..0b799b85e743c
--- /dev/null
+++ b/code/__DEFINES/MC.html
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+ code/__DEFINES/MC.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/MC.dm
+
+
+
+
+ SubSystem flags (Please design any new flags so that the default is off, to make adding flags to subsystems easier)
+ SS_NO_INIT subsystem does not initialize.
+ SS_NO_FIRE subsystem does not fire.
+(like can_fire = 0, but keeps it from getting added to the processing subsystems list)
+(Requires a MC restart to change)
+ SS_BACKGROUND Subsystem only runs on spare cpu (after all non-background subsystems have ran that tick)
+SS_BACKGROUND has its own priority bracket, this overrides SS_TICKER's priority bump
+ SS_NO_TICK_CHECK subsystem does not tick check, and should not run unless there is enough time (or its running behind (unless background))
+ SS_TICKER Treat wait as a tick count, not DS, run every wait ticks.
+(also forces it to run first in the tick (unless SS_BACKGROUND))
+(implies all runlevels because of how it works)
+This is designed for basically anything that works as a mini-mc (like SStimer)
+ SS_KEEP_TIMING keep the subsystem's timing on point by firing early if it fired late last fire because of lag
+ie: if a 20ds subsystem fires say 5 ds late due to lag or what not, its next fire would be in 15ds, not 20ds.
+ SS_POST_FIRE_TIMING Calculate its next fire after its fired.
+(IE: if a 5ds wait SS takes 2ds to run, its next fire should be 5ds away, not 3ds like it normally would be)
+This flag overrides SS_KEEP_TIMING
+ SUBSYSTEM STATES
+
+ SS_IDLE ain't doing shit.
+ SS_QUEUED queued to run
+ SS_RUNNING actively running
+ SS_PAUSED paused by mc_tick_check
+ SS_SLEEPING fire() slept.
+ SS_PAUSING in the middle of pausing
Define Details
+SS_BACKGROUND
+
+
+
+ Subsystem only runs on spare cpu (after all non-background subsystems have ran that tick)
+SS_BACKGROUND has its own priority bracket, this overrides SS_TICKER's priority bump
SS_IDLE
+
+
+
+ ain't doing shit.
SS_KEEP_TIMING
+
+
+
+ keep the subsystem's timing on point by firing early if it fired late last fire because of lag
+ie: if a 20ds subsystem fires say 5 ds late due to lag or what not, its next fire would be in 15ds, not 20ds.
SS_NO_FIRE
+
+
+
+ subsystem does not fire.
+(like can_fire = 0, but keeps it from getting added to the processing subsystems list)
+(Requires a MC restart to change)
SS_NO_INIT
+
+
+
+ subsystem does not initialize.
SS_NO_TICK_CHECK
+
+
+
+ subsystem does not tick check, and should not run unless there is enough time (or its running behind (unless background))
SS_PAUSED
+
+
+
+ paused by mc_tick_check
SS_PAUSING
+
+
+
+ in the middle of pausing
SS_POST_FIRE_TIMING
+
+
+
+ Calculate its next fire after its fired.
+(IE: if a 5ds wait SS takes 2ds to run, its next fire should be 5ds away, not 3ds like it normally would be)
+This flag overrides SS_KEEP_TIMING
SS_QUEUED
+
+
+
+ queued to run
SS_RUNNING
+
+
+
+ actively running
SS_SLEEPING
+
+
+
+ fire() slept.
SS_TICKER
+
+
+
+ Treat wait as a tick count, not DS, run every wait ticks.
+(also forces it to run first in the tick (unless SS_BACKGROUND))
+(implies all runlevels because of how it works)
+This is designed for basically anything that works as a mini-mc (like SStimer)
+
+
+
diff --git a/code/__DEFINES/_flags/_flags.html b/code/__DEFINES/_flags/_flags.html
new file mode 100644
index 0000000000000..e1660705e225d
--- /dev/null
+++ b/code/__DEFINES/_flags/_flags.html
@@ -0,0 +1,311 @@
+
+
+
+
+
+
+ code/__DEFINES/_flags/_flags.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/_flags/_flags.dm
+
+
+
+
+ HEAR_1 This flag is what recursive_hear_check() uses to determine wether to add an item to the hearer list or not.
+ DEFAULT_RICOCHET_1 Projectiles will use default chance-based ricochet handling on things with this.
+ CONDUCT_1 Conducts electricity (metal etc.).
+ NODECONSTRUCT_1 For machines and structures that should not break into parts, eg, holodeck stuff.
+ OVERLAY_QUEUED_1 Atom queued to SSoverlay.
+ ON_BORDER_1 Item has priority to check when entering or leaving.
+ NO_SCREENTIPS_1 Whether or not this atom shows screentips when hovered over
+ PREVENT_CLICK_UNDER_1 Prevent clicking things below it on the same turf eg. doors/ fulltile windows.
+ SHOCKED_1 Prevents mobs from getting chainshocked by teslas and the supermatter.
+ INITIALIZED_1 Whether /atom/Initialize() has already run for the object.
+ ADMIN_SPAWNED_1 was this spawned by an admin? used for stat tracking stuff.
+ PREVENT_CONTENTS_EXPLOSION_1 should not get harmed if this gets caught by an explosion?
+ BLOCK_FACE_ATOM_1 Early returns mob.face_atom()
+ CAN_BE_DIRTY_1 If a turf can be made dirty at roundstart. This is also used in areas.
+ NO_LAVA_GEN_1 Blocks lava rivers being generated on the turf
+ NO_RUINS_1 Blocks ruins spawning on the turf
+ EXCITED_CLEANUP_1 Should this tile be cleaned up and reinserted into an excited group?
+ HAS_CONTEXTUAL_SCREENTIPS_1 Whether or not this atom has contextual screentips when hovered OVER
+ VALID_TERRITORY /////////////Area flags\\\\\\\
+If it's a valid territory for cult summoning or the CRAB-17 phone to spawn
+ BLOBS_ALLOWED If blobs can spawn there and if it counts towards their score.
+ CAVES_ALLOWED If mining tunnel generation is allowed in this area
+ FLORA_ALLOWED If flora are allowed to spawn in this area randomly through tunnel generation
+ MOB_SPAWN_ALLOWED If mobs can be spawned by natural random generation
+ MEGAFAUNA_SPAWN_ALLOWED If megafauna can be spawned by natural random generation
+ NOTELEPORT Are you forbidden from teleporting to the area? (centcom, mobs, wizard, hand teleporter)
+ HIDDEN_AREA Hides area from player Teleport function.
+ UNIQUE_AREA If false, loading multiple maps with this area type will create multiple instances.
+ BLOCK_SUICIDE If people are allowed to suicide in it. Mostly for OOC stuff like minigames
+ XENOBIOLOGY_COMPATIBLE Can the Xenobio management console transverse this area by default?
+ ABDUCTOR_PROOF If Abductors are unable to teleport in with their observation console
+ NO_ALERTS If an area should be hidden from power consoles, power/atmosphere alerts, etc.
+ CULT_PERMITTED If blood cultists can draw runes or build structures on this AREA.
+ CULTMAGIC_BYPASS If cultists can use abilities in this area but the area is not on station.
+ LETPASSTHROW Let thrown things past us. ONLY MEANINGFUL ON pass_flags_self!
+ PHASING When moving, will Bump()/Cross()/Uncross() everything, but won't stop or Bump() anything.
+ CRAWLING Applied if you're crawling around on the ground/resting.
+ CHECK_MOBILITY any flag
+ MOBILITY_MOVE can move
+ MOBILITY_STAND can, and is, standing up.
+ MOBILITY_PICKUP can pickup items
+ MOBILITY_USE can use items and interact with world objects like opening closets/etc
+ MOBILITY_UI can use interfaces like consoles
+ MOBILITY_STORAGE can use storage item
+ MOBILITY_PULL can pull things
+ MOBILITY_HOLD can hold non-nodropped items voluntarily
+ MOBILITY_RESIST Can resist out of buckling, grabs, cuffs, etc, in the usual order (buckle --> cuffs --> grab)
+ RICOCHET_SHINY If the thing can reflect light (lasers/energy)
+ RICOCHET_HARD If the thing can reflect matter (bullets/bomb shrapnel)
+ ISDIAGONALDIR Returns true if the dir is diagonal, false otherwise
+ NSCOMPONENT True if the dir is north or south, false therwise
+ EWCOMPONENT True if the dir is east/west, false otherwise
+ NSDIRFLIP Flips the dir for north/south directions
+ EWDIRFLIP Flips the dir for east/west directions
+ DIRFLIP Turns the dir by 180 degrees
+ MAX_BITFLAG_DIGITS 33554431 (2^24 - 1) is the maximum value our bitflags can reach.
Define Details
+ABDUCTOR_PROOF
+
+
+
+ If Abductors are unable to teleport in with their observation console
ADMIN_SPAWNED_1
+
+
+
+ was this spawned by an admin? used for stat tracking stuff.
BLOBS_ALLOWED
+
+
+
+ If blobs can spawn there and if it counts towards their score.
BLOCK_FACE_ATOM_1
+
+
+
+ Early returns mob.face_atom()
BLOCK_SUICIDE
+
+
+
+ If people are allowed to suicide in it. Mostly for OOC stuff like minigames
CAN_BE_DIRTY_1
+
+
+
+ If a turf can be made dirty at roundstart. This is also used in areas.
CAVES_ALLOWED
+
+
+
+ If mining tunnel generation is allowed in this area
CHECK_MOBILITY
+
+
+
+
+ any flag
CONDUCT_1
+
+
+
+ Conducts electricity (metal etc.).
CRAWLING
+
+
+
+ Applied if you're crawling around on the ground/resting.
CULTMAGIC_BYPASS
+
+
+
+ If cultists can use abilities in this area but the area is not on station.
CULT_PERMITTED
+
+
+
+ If blood cultists can draw runes or build structures on this AREA.
DEFAULT_RICOCHET_1
+
+
+
+ Projectiles will use default chance-based ricochet handling on things with this.
DIRFLIP
+
+
+
+
+ Turns the dir by 180 degrees
EWCOMPONENT
+
+
+
+
+ True if the dir is east/west, false otherwise
EWDIRFLIP
+
+
+
+
+ Flips the dir for east/west directions
EXCITED_CLEANUP_1
+
+
+
+ Should this tile be cleaned up and reinserted into an excited group?
FLORA_ALLOWED
+
+
+
+ If flora are allowed to spawn in this area randomly through tunnel generation
HAS_CONTEXTUAL_SCREENTIPS_1
+
+
+
+ Whether or not this atom has contextual screentips when hovered OVER
HEAR_1
+
+
+
+ This flag is what recursive_hear_check() uses to determine wether to add an item to the hearer list or not.
HIDDEN_AREA
+
+
+
+ Hides area from player Teleport function.
INITIALIZED_1
+
+
+
+ Whether /atom/Initialize() has already run for the object.
ISDIAGONALDIR
+
+
+
+
+ Returns true if the dir is diagonal, false otherwise
LETPASSTHROW
+
+
+
+ Let thrown things past us. ONLY MEANINGFUL ON pass_flags_self!
MAX_BITFLAG_DIGITS
+
+
+
+ 33554431 (2^24 - 1) is the maximum value our bitflags can reach.
MEGAFAUNA_SPAWN_ALLOWED
+
+
+
+ If megafauna can be spawned by natural random generation
MOBILITY_HOLD
+
+
+
+ can hold non-nodropped items voluntarily
MOBILITY_MOVE
+
+
+
+ can move
MOBILITY_PICKUP
+
+
+
+ can pickup items
MOBILITY_PULL
+
+
+
+ can pull things
MOBILITY_RESIST
+
+
+
+ Can resist out of buckling, grabs, cuffs, etc, in the usual order (buckle --> cuffs --> grab)
MOBILITY_STAND
+
+
+
+ can, and is, standing up.
MOBILITY_STORAGE
+
+
+
+ can use storage item
MOBILITY_UI
+
+
+
+ can use interfaces like consoles
MOBILITY_USE
+
+
+
+ can use items and interact with world objects like opening closets/etc
MOB_SPAWN_ALLOWED
+
+
+
+ If mobs can be spawned by natural random generation
NODECONSTRUCT_1
+
+
+
+ For machines and structures that should not break into parts, eg, holodeck stuff.
NOTELEPORT
+
+
+
+ Are you forbidden from teleporting to the area? (centcom, mobs, wizard, hand teleporter)
NO_ALERTS
+
+
+
+ If an area should be hidden from power consoles, power/atmosphere alerts, etc.
NO_LAVA_GEN_1
+
+
+
+ Blocks lava rivers being generated on the turf
NO_RUINS_1
+
+
+
+ Blocks ruins spawning on the turf
NO_SCREENTIPS_1
+
+
+
+ Whether or not this atom shows screentips when hovered over
NSCOMPONENT
+
+
+
+
+ True if the dir is north or south, false therwise
NSDIRFLIP
+
+
+
+
+ Flips the dir for north/south directions
ON_BORDER_1
+
+
+
+ Item has priority to check when entering or leaving.
OVERLAY_QUEUED_1
+
+
+
+ Atom queued to SSoverlay.
PHASING
+
+
+
+ When moving, will Bump()/Cross()/Uncross() everything, but won't stop or Bump() anything.
PREVENT_CLICK_UNDER_1
+
+
+
+ Prevent clicking things below it on the same turf eg. doors/ fulltile windows.
PREVENT_CONTENTS_EXPLOSION_1
+
+
+
+ should not get harmed if this gets caught by an explosion?
RICOCHET_HARD
+
+
+
+ If the thing can reflect matter (bullets/bomb shrapnel)
RICOCHET_SHINY
+
+
+
+ If the thing can reflect light (lasers/energy)
SHOCKED_1
+
+
+
+ Prevents mobs from getting chainshocked by teslas and the supermatter.
UNIQUE_AREA
+
+
+
+ If false, loading multiple maps with this area type will create multiple instances.
VALID_TERRITORY
+
+
+
+ /////////////Area flags\\\\\\\
+If it's a valid territory for cult summoning or the CRAB-17 phone to spawn
XENOBIOLOGY_COMPATIBLE
+
+
+
+ Can the Xenobio management console transverse this area by default?
+
+
+
diff --git a/code/__DEFINES/_flags/do_after.html b/code/__DEFINES/_flags/do_after.html
new file mode 100644
index 0000000000000..3bd805f4d8b4f
--- /dev/null
+++ b/code/__DEFINES/_flags/do_after.html
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+ code/__DEFINES/_flags/do_after.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/_flags/do_after.dm
+
+
+
+Define Details
+IGNORE_HELD_ITEM
+
+
+
+ Can do the action even if the item is no longer being held
IGNORE_INCAPACITATED
+
+
+
+ Can do the action even if the mob is incapacitated (ex. handcuffed)
IGNORE_TARGET_IN_DOAFTERS
+
+
+
+ Can do the action even if target is not added to doafters
IGNORE_TARGET_LOC_CHANGE
+
+
+
+ Can do the action even if the target moves location
IGNORE_USER_LOC_CHANGE
+
+
+
+ Can do the action even if mob moves location
+
+
+
diff --git a/code/__DEFINES/_flags/item_flags.html b/code/__DEFINES/_flags/item_flags.html
new file mode 100644
index 0000000000000..671c16e1fa982
--- /dev/null
+++ b/code/__DEFINES/_flags/item_flags.html
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+ code/__DEFINES/_flags/item_flags.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/_flags/item_flags.dm
+
+
+
+
+ IN_INVENTORY is this item equipped into an inventory slot or hand of a mob? used for tooltips
+ FORCE_STRING_OVERRIDE used for tooltips
+ NEEDS_PERMIT Used by security bots to determine if this item is safe for public use.
+ NO_MAT_REDEMPTION Stops you from putting things like an RCD or other items into an ORM or protolathe for materials.
+ DROPDEL When dropped, it calls qdel on itself
+ NOBLUDGEON when an item has this it produces no "X has been hit by Y with Z" message in the default attackby()
+ ABSTRACT for all things that are technically items but used for various different stuff
+ IMMUTABLE_SLOW When players should not be able to change the slowdown of the item (Speed potions, ect)
+ SURGICAL_TOOL Tool commonly used for surgery: won't attack targets in an active surgical operation on help intent (in case of mistakes)
+ NO_UNIFORM_REQUIRED Can be worn on certain slots (currently belt and id) that would otherwise require an uniform.
+ ITEM_CAN_PARRY This item can be used to parry. Only a basic check used to determine if we should proceed with parry chain at all.
+ ITEM_CAN_BLOCK This item can be used in the directional blocking system. Only a basic check used to determine if we should proceed with directional block handling at all.
Define Details
+ABSTRACT
+
+
+
+ for all things that are technically items but used for various different stuff
DROPDEL
+
+
+
+ When dropped, it calls qdel on itself
FORCE_STRING_OVERRIDE
+
+
+
+ used for tooltips
IMMUTABLE_SLOW
+
+
+
+ When players should not be able to change the slowdown of the item (Speed potions, ect)
IN_INVENTORY
+
+
+
+ is this item equipped into an inventory slot or hand of a mob? used for tooltips
ITEM_CAN_BLOCK
+
+
+
+ This item can be used in the directional blocking system. Only a basic check used to determine if we should proceed with directional block handling at all.
ITEM_CAN_PARRY
+
+
+
+ This item can be used to parry. Only a basic check used to determine if we should proceed with parry chain at all.
NEEDS_PERMIT
+
+
+
+ Used by security bots to determine if this item is safe for public use.
NOBLUDGEON
+
+
+
+ when an item has this it produces no "X has been hit by Y with Z" message in the default attackby()
NO_MAT_REDEMPTION
+
+
+
+ Stops you from putting things like an RCD or other items into an ORM or protolathe for materials.
+ Can be worn on certain slots (currently belt and id) that would otherwise require an uniform.
+ Tool commonly used for surgery: won't attack targets in an active surgical operation on help intent (in case of mistakes)
+
+
+
diff --git a/code/__DEFINES/_flags/obj_flags.html b/code/__DEFINES/_flags/obj_flags.html
new file mode 100644
index 0000000000000..6105d933397f1
--- /dev/null
+++ b/code/__DEFINES/_flags/obj_flags.html
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+ code/__DEFINES/_flags/obj_flags.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/_flags/obj_flags.dm
+
+
+
+Define Details
+CLOTHING_PRISTINE
+
+
+
+ Integrity defines for clothing (not flags but close enough)
EXAMINE_SKIP
+
+
+
+ Makes the Examine proc not read out this item.
FIRST_SOUNDS
+
+
+
+ Flags for the pod_flags var on /obj/structure/closet/supplypod
ITEM_HAS_CONTEXTUAL_SCREENTIPS
+
+
+
+ Has contextual screentips when HOVERING OVER OTHER objects
+
+
+
diff --git a/code/__DEFINES/_flags/return_values.html b/code/__DEFINES/_flags/return_values.html
new file mode 100644
index 0000000000000..4552e495d2caf
--- /dev/null
+++ b/code/__DEFINES/_flags/return_values.html
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+ code/__DEFINES/_flags/return_values.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/_flags/return_values.dm
+
+
+
+
+ STOP_ATTACK_PROC_CHAIN //////// ATTACKCHAIN_FLAGS ////////////
+Stop the attack chain if still in melee_attack_chain()
+ DISCARD_LAST_ACTION This attack should discard last_action instead of flushing (storing) it). You should probably know what you're doing if you use this considering this is how clickdelay is enforced.
+ NO_AUTO_CLICKDELAY_HANDLING There are a number of "safety nets" intended to default-handle clickdelay. Return this flag to bypass ALL of them. Be sure
+you know EXACTLY what you are doing!
+ INTERRUPT_UNARMED_ATTACK Only used with UnarmedAttack(). Interrupts unarmed attack from progressing.
+ ATTACK_IGNORE_ACTION Attack should not set next action even if the atom wants it to be an action
+ ATTACK_IGNORE_CLICKDELAY Attack should not at all check last_action/attack_hand_speed even if the atom wants to
+ ATTACK_IS_PARRY_COUNTERATTACK This attack is from a parry counterattack
+ ITEM_RELOCATED_BY_DROPPED dropped() relocated this item, return FALSE for doUnEquip.
Define Details
+ATTACK_IGNORE_ACTION
+
+
+
+ Attack should not set next action even if the atom wants it to be an action
ATTACK_IGNORE_CLICKDELAY
+
+
+
+ Attack should not at all check last_action/attack_hand_speed even if the atom wants to
ATTACK_IS_PARRY_COUNTERATTACK
+
+
+
+ This attack is from a parry counterattack
DISCARD_LAST_ACTION
+
+
+
+ This attack should discard last_action instead of flushing (storing) it). You should probably know what you're doing if you use this considering this is how clickdelay is enforced.
INTERRUPT_UNARMED_ATTACK
+
+
+
+ Only used with UnarmedAttack(). Interrupts unarmed attack from progressing.
ITEM_RELOCATED_BY_DROPPED
+
+
+
+ dropped() relocated this item, return FALSE for doUnEquip.
NO_AUTO_CLICKDELAY_HANDLING
+
+
+
+ There are a number of "safety nets" intended to default-handle clickdelay. Return this flag to bypass ALL of them. Be sure
+you know EXACTLY what you are doing!
STOP_ATTACK_PROC_CHAIN
+
+
+
+ //////// ATTACKCHAIN_FLAGS ////////////
+Stop the attack chain if still in melee_attack_chain()
+
+
+
diff --git a/code/__DEFINES/_flags/shields.html b/code/__DEFINES/_flags/shields.html
new file mode 100644
index 0000000000000..6925b03af46a0
--- /dev/null
+++ b/code/__DEFINES/_flags/shields.html
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+ code/__DEFINES/_flags/shields.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/_flags/shields.dm
+
+
+
+Define Details
+SHIELD_BASH_ALWAYS_DISARM
+
+
+
+ Shield bash always disarm
SHIELD_BASH_ALWAYS_KNOCKDOWN
+
+
+
+ Shield bash always knockdown
SHIELD_BASH_GROUND_SLAM
+
+
+
+ You can shieldbash target someone on the ground for ground slam
SHIELD_BASH_GROUND_SLAM_DISARM
+
+
+
+ Shield bashing someone on the ground will disarm
SHIELD_BASH_WALL_DISARM
+
+
+
+ Shield bash disarm on wall hit
SHIELD_BASH_WALL_KNOCKDOWN
+
+
+
+ Shield bash knockdown on wall hit
SHIELD_CAN_BASH
+
+
+
+ Can shield bash
SHIELD_DISABLER_DISRUPTED
+
+
+
+ Disabler and other stamina based energy weapons boost the damage done to the sheld
SHIELD_ENERGY_STRONG
+
+
+
+ Strong against energy, weak against kinetic
SHIELD_ENERGY_WEAK
+
+
+
+ Flammable, takes more damage from fire
SHIELD_KINETIC_STRONG
+
+
+
+ Strong against kinetic, weak against energy
SHIELD_KINETIC_WEAK
+
+
+
+ Fragile, takes more damage from brute
SHIELD_NO_MELEE
+
+
+
+ Doesn't block melee attacks whatsoever
SHIELD_NO_RANGED
+
+
+
+ Doesn't block ranged attacks whatsoever
SHIELD_TRANSPARENT
+
+
+
+ Transparent, let beams pass
+
+
+
diff --git a/code/__DEFINES/_tick.html b/code/__DEFINES/_tick.html
new file mode 100644
index 0000000000000..82a44e74a9525
--- /dev/null
+++ b/code/__DEFINES/_tick.html
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+ code/__DEFINES/_tick.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/_tick.dm
+
+
+
+Define Details
+CHECK_TICK
+
+
+
+ runs stoplag if tick_usage is above the limit
CHECK_TICK_HIGH_PRIORITY
+
+
+
+ runs stoplag if tick_usage is above 95, for high priority usage
MAPTICK_MC_MIN_RESERVE
+
+
+
+ Percentage of tick to leave for master controller to run
TICK_BYOND_RESERVE
+
+
+
+ Tick limit while running normally
TICK_CHECK
+
+
+
+ Returns true if tick_usage is above the limit
TICK_CHECK_HIGH_PRIORITY
+
+
+
+ Returns true if tick usage is above 95, for high priority usage
TICK_LIMIT_MC
+
+
+
+ Tick limit for MC while running
TICK_LIMIT_MC_INIT_DEFAULT
+
+
+
+ Tick limit while initializing
TICK_LIMIT_TO_RUN
+
+
+
+ Tick limit used to resume things in stoplag
TICK_USAGE
+
+
+
+ for general usage of tick_usage
TICK_USAGE_REAL
+
+
+
+ to be used where the result isn't checked
+
+
+
diff --git a/code/__DEFINES/admin.html b/code/__DEFINES/admin.html
new file mode 100644
index 0000000000000..577a9702db960
--- /dev/null
+++ b/code/__DEFINES/admin.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/__DEFINES/admin.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/admin.dm
+
+
+
+Define Details
+ADMINSAY_PING_UNDERLINE_NAME_INDEX
+
+
+
+ for asay pings, this is the index in the return list for /proc/check_admin_pings that contains the message modified with underlines for the spotted names
+
+
+
diff --git a/code/__DEFINES/admin/keybindings.html b/code/__DEFINES/admin/keybindings.html
new file mode 100644
index 0000000000000..89aa71f2754e3
--- /dev/null
+++ b/code/__DEFINES/admin/keybindings.html
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+ code/__DEFINES/admin/keybindings.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/admin/keybindings.dm
+
+
+
+Define Details
+MAX_COMMANDS_PER_KEY
+
+
+
+ Maximum keys that can be bound to one button
MAX_HELD_KEYS
+
+
+
+ Max keys that can be held down at once by a client
MAX_KEYPRESS_AUTOKICK
+
+
+
+ Max amount of keypress messages per second over two seconds before client is autokicked
MAX_KEYPRESS_COMMANDLENGTH
+
+
+
+ Max length of a keypress command before it's considered to be a forged packet/bogus command
MAX_KEYS_PER_KEYBIND
+
+
+
+ Maximum keys per keybind
SKIN_MACROSET_CLASSIC_HOTKEYS
+
+
+
+ Macroset name of classic hotkey mode
+ Macroset name of classic input mode
SKIN_MACROSET_HOTKEYS
+
+
+
+ Macroset name of hotkeys/keybind only/modern mode
+
+
+
diff --git a/code/__DEFINES/antagonists.html b/code/__DEFINES/antagonists.html
new file mode 100644
index 0000000000000..a542dcc069c80
--- /dev/null
+++ b/code/__DEFINES/antagonists.html
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+ code/__DEFINES/antagonists.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/antagonists.dm
+
+
+
+Define Details
+ANTAGONIST_PREVIEW_ICON_SIZE
+
+
+
+ The dimensions of the antagonist preview icon. Will be scaled to this size.
IS_MALF_AI
+
+
+
+
+ Checks if the given mob is a malf ai.
TELECRYSTALS_DEFAULT
+
+
+
+ How many telecrystals a normal traitor starts with
TELECRYSTALS_PRELOADED_IMPLANT
+
+
+
+ How many telecrystals mapper/admin only "precharged" uplink implant
UPLINK_IMPLANT_TELECRYSTAL_COST
+
+
+
+ The normal cost of an uplink implant; used for calcuating how many
+TC to charge someone if they get a free implant through choice or
+because they have nothing else that supports an implant.
+
+
+
diff --git a/code/__DEFINES/callbacks.html b/code/__DEFINES/callbacks.html
new file mode 100644
index 0000000000000..c0785d7679283
--- /dev/null
+++ b/code/__DEFINES/callbacks.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/__DEFINES/callbacks.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/callbacks.dm
+
+
+
+Define Details
+CALLBACK
+
+
+
+ A shorthand for the callback datum, documented here
+
+
+
diff --git a/code/__DEFINES/cargo.html b/code/__DEFINES/cargo.html
new file mode 100644
index 0000000000000..d4646f1485ede
--- /dev/null
+++ b/code/__DEFINES/cargo.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/__DEFINES/cargo.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/cargo.dm
+
+
+
+
+ CARGO_CRATE_VALUE The baseline unit for cargo crates. Adjusting this will change the cost of all in-game shuttles, crate export values, bounty rewards, and all supply pack import values, as they use this as their unit of measurement.
Define Details
+CARGO_CRATE_VALUE
+
+
+
+ The baseline unit for cargo crates. Adjusting this will change the cost of all in-game shuttles, crate export values, bounty rewards, and all supply pack import values, as they use this as their unit of measurement.
+
+
+
diff --git a/code/__DEFINES/color/colors.html b/code/__DEFINES/color/colors.html
new file mode 100644
index 0000000000000..9c824019c6f61
--- /dev/null
+++ b/code/__DEFINES/color/colors.html
@@ -0,0 +1,193 @@
+
+
+
+
+
+
+ code/__DEFINES/color/colors.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/color/colors.dm
+
+
+
+
+ COLOR_SAMPLE_YELLOW Colors for xenobiology vatgrowing
+ COLOR_THEME_MIDNIGHT Main colors for UI themes
+ COLOR_PERIWINKLEE Colors for eigenstates
+ LIGHT_COLOR_GREEN Some defines to generalise colours used in lighting.
+ LIGHT_COLOR_ELECTRIC_GREEN Electric green. rgb(0, 255, 0)
+ LIGHT_COLOR_BLUE Cold, diluted blue. rgb(100, 150, 250)
+ LIGHT_COLOR_BLUEGREEN Light blueish green. rgb(125, 225, 175)
+ LIGHT_COLOR_CYAN Diluted cyan. rgb(125, 225, 225)
+ LIGHT_COLOR_ELECTRIC_CYAN Electric cyan rgb(0, 255, 255)
+ LIGHT_COLOR_LIGHT_CYAN More-saturated cyan. rgb(64, 206, 255)
+ LIGHT_COLOR_DARK_BLUE Saturated blue. rgb(51, 117, 248)
+ LIGHT_COLOR_PINK Diluted, mid-warmth pink. rgb(225, 125, 225)
+ LIGHT_COLOR_YELLOW Dimmed yellow, leaning kaki. rgb(225, 225, 125)
+ LIGHT_COLOR_BROWN Clear brown, mostly dim. rgb(150, 100, 50)
+ LIGHT_COLOR_ORANGE Mostly pure orange. rgb(250, 150, 50)
+ LIGHT_COLOR_PURPLE Light Purple. rgb(149, 44, 244)
+ LIGHT_COLOR_LAVENDER Less-saturated light purple. rgb(155, 81, 255)
+ LIGHT_COLOR_HOLY_MAGIC slightly desaturated bright yellow.
+ LIGHT_COLOR_BLOOD_MAGIC deep crimson
+ LIGHT_COLOR_FIRE Warm orange color, leaning strongly towards yellow. rgb(250, 160, 25)
+ LIGHT_COLOR_LAVA Very warm yellow, leaning slightly towards orange. rgb(196, 138, 24)
+ LIGHT_COLOR_FLARE Bright, non-saturated red. Leaning slightly towards pink for visibility. rgb(250, 100, 75)
+ LIGHT_COLOR_SLIME_LAMP Weird color, between yellow and green, very slimy. rgb(175, 200, 75)
+ LIGHT_COLOR_TUNGSTEN Extremely diluted yellow, close to skin color (for some reason). rgb(250, 225, 175)
+ LIGHT_COLOR_HALOGEN Barely visible cyan-ish hue, as the doctor prescribed. rgb(240, 250, 250)
+ COLOR_PRIDE_RED === LGBT Colors Start ===
+Black and white colors will not be covered for the flags that do have them. We'll just use COLOR_WHITE and COLOR_BLACK.
+Colors for pride
+ COLOR_TRANS_BLUE Colors for transgender flag
+ COLOR_LESBIAN_ORANGERED Colors for lesbian flag
+ COLOR_BISEXUAL_MEDIUMVIOLETRED Colors for bisexual flag
+ COLOR_INTERSEX_GOLD Colors for intersex flag
+ COLOR_ACE_DARKGRAY Colors for asexual flag
+ COLOR_PAN_DEEPPINK Colors for pansexual flag
Define Details
+COLOR_ACE_DARKGRAY
+
+
+
+ Colors for asexual flag
COLOR_BISEXUAL_MEDIUMVIOLETRED
+
+
+
+ Colors for bisexual flag
COLOR_INTERSEX_GOLD
+
+
+
+ Colors for intersex flag
COLOR_LESBIAN_ORANGERED
+
+
+
+ Colors for lesbian flag
COLOR_PAN_DEEPPINK
+
+
+
+ Colors for pansexual flag
COLOR_PERIWINKLEE
+
+
+
+ Colors for eigenstates
COLOR_PRIDE_RED
+
+
+
+ === LGBT Colors Start ===
+Black and white colors will not be covered for the flags that do have them. We'll just use COLOR_WHITE and COLOR_BLACK.
+Colors for pride
COLOR_SAMPLE_YELLOW
+
+
+
+ Colors for xenobiology vatgrowing
COLOR_THEME_MIDNIGHT
+
+
+
+ Main colors for UI themes
COLOR_TRANS_BLUE
+
+
+
+ Colors for transgender flag
LIGHT_COLOR_BLOOD_MAGIC
+
+
+
+ deep crimson
LIGHT_COLOR_BLUE
+
+
+
+ Cold, diluted blue. rgb(100, 150, 250)
LIGHT_COLOR_BLUEGREEN
+
+
+
+ Light blueish green. rgb(125, 225, 175)
LIGHT_COLOR_BROWN
+
+
+
+ Clear brown, mostly dim. rgb(150, 100, 50)
LIGHT_COLOR_CYAN
+
+
+
+ Diluted cyan. rgb(125, 225, 225)
LIGHT_COLOR_DARK_BLUE
+
+
+
+ Saturated blue. rgb(51, 117, 248)
LIGHT_COLOR_ELECTRIC_CYAN
+
+
+
+ Electric cyan rgb(0, 255, 255)
LIGHT_COLOR_ELECTRIC_GREEN
+
+
+
+ Electric green. rgb(0, 255, 0)
LIGHT_COLOR_FIRE
+
+
+
+ Warm orange color, leaning strongly towards yellow. rgb(250, 160, 25)
LIGHT_COLOR_FLARE
+
+
+
+ Bright, non-saturated red. Leaning slightly towards pink for visibility. rgb(250, 100, 75)
LIGHT_COLOR_GREEN
+
+
+
+ Some defines to generalise colours used in lighting.
+Important note: colors can end up significantly different from the basic html picture, especially when saturated
+Bright but quickly dissipating neon green. rgb(100, 200, 100)
LIGHT_COLOR_HALOGEN
+
+
+
+ Barely visible cyan-ish hue, as the doctor prescribed. rgb(240, 250, 250)
LIGHT_COLOR_HOLY_MAGIC
+
+
+
+ slightly desaturated bright yellow.
LIGHT_COLOR_LAVA
+
+
+
+ Very warm yellow, leaning slightly towards orange. rgb(196, 138, 24)
LIGHT_COLOR_LAVENDER
+
+
+
+ Less-saturated light purple. rgb(155, 81, 255)
LIGHT_COLOR_LIGHT_CYAN
+
+
+
+ More-saturated cyan. rgb(64, 206, 255)
LIGHT_COLOR_ORANGE
+
+
+
+ Mostly pure orange. rgb(250, 150, 50)
LIGHT_COLOR_PINK
+
+
+
+ Diluted, mid-warmth pink. rgb(225, 125, 225)
LIGHT_COLOR_PURPLE
+
+
+
+ Light Purple. rgb(149, 44, 244)
LIGHT_COLOR_SLIME_LAMP
+
+
+
+ Weird color, between yellow and green, very slimy. rgb(175, 200, 75)
LIGHT_COLOR_TUNGSTEN
+
+
+
+ Extremely diluted yellow, close to skin color (for some reason). rgb(250, 225, 175)
LIGHT_COLOR_YELLOW
+
+
+
+ Dimmed yellow, leaning kaki. rgb(225, 225, 125)
+
+
+
diff --git a/code/__DEFINES/color/lum.html b/code/__DEFINES/color/lum.html
new file mode 100644
index 0000000000000..8dd786ac654b2
--- /dev/null
+++ b/code/__DEFINES/color/lum.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/__DEFINES/color/lum.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/color/lum.dm
+
+
+
+
+ LUMA_R === LGBT Colors End ===
Define Details
+LUMA_R
+
+
+
+ === LGBT Colors End ===
+
+
+
diff --git a/code/__DEFINES/combat.html b/code/__DEFINES/combat.html
new file mode 100644
index 0000000000000..0d45bea3c155f
--- /dev/null
+++ b/code/__DEFINES/combat.html
@@ -0,0 +1,169 @@
+
+
+
+
+
+
+ code/__DEFINES/combat.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/combat.dm
+
+
+
+Define Details
+AUTOFIRE_STAT_ALERT
+
+
+
+ Gun is active and in the user hands. Wait until user does a valid click.
AUTOFIRE_STAT_FIRING
+
+
+
+ Gun is shooting.
AUTOFIRE_STAT_IDLE
+
+
+
+ Compatible firemode is in the gun. Wait until it's held in the user hands.
COMBAT_FLAGS_DEFAULT
+
+
+
+ Default combat flags for those affected by sprinting (combat mode has been made into its own component)
COMBAT_FLAGS_SPRINT_EXEMPT
+
+
+
+ Default combat flags for everyone else (so literally everyone but humans).
COMBAT_FLAGS_STAMINA_COMBAT
+
+
+
+ Default combat flags for those in stamina combat system
COMBAT_FLAG_ACTIVE_BLOCKING
+
+
+
+ This mob is currently actively blocking
COMBAT_FLAG_ACTIVE_BLOCK_STARTING
+
+
+
+ This mob is currently starting an active block
COMBAT_FLAG_ATTEMPTING_CRAWL
+
+
+
+ Currently attempting to crawl under someone
COMBAT_FLAG_BLOCK_CAPABLE
+
+
+
+ This mob is capable of using the active blocking system.
COMBAT_FLAG_HARD_STAMCRIT
+
+
+
+ Currently stamcritted
COMBAT_FLAG_INTENTIONALLY_RESTING
+
+
+
+ Intentionally resting
COMBAT_FLAG_PARRY_CAPABLE
+
+
+
+ This mob is capable of using the active parrying system.
COMBAT_FLAG_RESISTING_REST
+
+
+
+ Currently attempting to resist up from the ground
COMBAT_FLAG_SPRINT_ACTIVE
+
+
+
+ Sprint is currently active
COMBAT_FLAG_SPRINT_FORCED
+
+
+
+ Force sprint mode on at all times, overrides everything including sprint disable traits.
COMBAT_FLAG_SPRINT_TOGGLED
+
+
+
+ The user wants sprint mode on
COMBAT_FLAG_STAMINA_BUFFER
+
+
+
+ This mob requires stamina buffer to do things that require stamina buffer. Not having this exempts the mob from stamina combat.
COMBAT_FLAG_UNARMED_PARRY
+
+
+
+ This mob is capable of unarmed parrying
FEEBLE_ATTACK_MSG_THRESHOLD
+
+
+
+ should the current-attack-damage be lower than the item force multiplied by this value,
+a "inefficiently" prefix will be added to the message.
GUN_AIMING_TIME
+
+
+
+ Time to spend without clicking on other things required for your shots to become accurate.
SHOVE_OFFBALANCE_DURATION
+
+
+
+ how long they're off balance for
SHOVE_STAGGER_DURATION
+
+
+
+ how long they're staggered for
STAMINA_CRIT
+
+
+
+ crit for stamina damage. forces a rest, and stops movement until stamina goes back to stamina softcrit
STAMINA_CRIT_REMOVAL_THRESHOLD
+
+
+
+ Threshold for leaving stamina critical
STAMINA_NO_OVERDRAW_THRESHOLD
+
+
+
+ Threshold under for which you are unable to draw from stamina health to replace stamina buffer
SUPPRESSED_QUIET
+
+
+
+ standard suppressed
SUPPRESSED_VERY
+
+
+
+ no message
+
+
+
diff --git a/code/__DEFINES/combat/attack_types.html b/code/__DEFINES/combat/attack_types.html
new file mode 100644
index 0000000000000..ed8e2c7508aeb
--- /dev/null
+++ b/code/__DEFINES/combat/attack_types.html
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+ code/__DEFINES/combat/attack_types.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/combat/attack_types.dm
+
+
+
+Define Details
+ATTACK_TYPE_MELEE
+
+
+
+ Attack was melee, whether or not armed.
ATTACK_TYPE_PARRY_COUNTERATTACK
+
+
+
+ Attack was from a parry counterattack. Do not attempt to parry-this!
ATTACK_TYPE_PROJECTILE
+
+
+
+ Attack was with a gun or something that should count as a gun (but not if a gun shouldn't count for a gun, crazy right?)
ATTACK_TYPE_TACKLE
+
+
+
+ Attack was a bodyslam/leap/tackle. See: Xenomorph leap tackles.
ATTACK_TYPE_THROWN
+
+
+
+ Attack was a thrown atom hitting the victim.
ATTACK_TYPE_UNARMED
+
+
+
+ Attack was unarmed.. this usually means hand to hand combat.
+
+
+
diff --git a/code/__DEFINES/combat/block.html b/code/__DEFINES/combat/block.html
new file mode 100644
index 0000000000000..95baa2a2a04e4
--- /dev/null
+++ b/code/__DEFINES/combat/block.html
@@ -0,0 +1,184 @@
+
+
+
+
+
+
+ code/__DEFINES/combat/block.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/combat/block.dm
+
+
+
+
+ mob_check_block Check whether or not we can block, without "triggering" a block. Basically run checks without effects like depleting shields.
+Wrapper for do_run_block(). The arguments on that means the same as for this.
+ mob_run_block Runs a block "sequence", effectively checking and then doing effects if necessary.
+Wrapper for do_run_block(). The arguments on that means the same as for this.
+ BLOCK_NONE Bitflags for check_block() and handle_block(). Meant to be combined. You can be hit and still reflect, for example, if you do not use BLOCK_SUCCESS.
+Attack was not blocked
+ BLOCK_SUCCESS Attack was blocked, do not do damage. THIS FLAG MUST BE THERE FOR DAMAGE/EFFECT PREVENTION!
+ BLOCK_SHOULD_REDIRECT The below are for "metadata" on "how" the attack was blocked.
+Attack was and should be redirected according to list argument REDIRECT_METHOD (NOTE: the SHOULD here is important, as it says "the thing blocking isn't handling the reflecting for you so do it yourself"!)
+ BLOCK_REDIRECTED Attack was redirected (whether by us or by SHOULD_REDIRECT flagging for automatic handling)
+ BLOCK_PHYSICAL_EXTERNAL Attack was blocked by something like a shield.
+ BLOCK_PHYSICAL_INTERNAL Attack was blocked by something worn on you.
+ BLOCK_TARGET_DODGED Attack outright missed because the target dodged. Should usually be combined with redirection passthrough or something (see martial arts)
+ BLOCK_CONTINUE_CHAIN Meta-flag for run_block/do_run_block : By default, BLOCK_SUCCESS tells do_run_block() to assume the attack is completely blocked and not continue the block chain. If this is present, it will continue to check other items in the chain rather than stopping.
+ BLOCK_SHOULD_CHANGE_DAMAGE Attack should change the amount of damage incurred. This means something calling run_block() has to handle it!
+ BLOCK_SHOULD_PARTIAL_MITIGATE Attack should scale by this percent, 0 for no block and 100 for full blocked
+ BLOCK_RETURN_REDIRECT_METHOD For keys in associative list/block_return as we don't want to saturate our (somewhat) limited flags.
+ REDIRECT_METHOD_PASSTHROUGH Pass through victim
+ REDIRECT_METHOD_DEFLECT Deflect at randomish angle
+ REDIRECT_METHOD_REFLECT reverse 180 angle, basically (as opposed to "realistic" wall reflections)
+ REDIRECT_METHOD_RETURN_TO_SENDER "do not taser the bad man with the desword" - actually aims at the firer/attacker rather than just reversing
+ BLOCK_RETURN_REFLECT_PROJECTILE_CHANCE These keys are generally only applied to the list if real_attack is FALSE. Used incase we want to make "smarter" mob AI in the future or something.
+Tells the caller how likely from 0 (none) to 100 (always) we are to reflect energy projectiles
+ BLOCK_RETURN_NORMAL_BLOCK_CHANCE Tells the caller how likely we are to block attacks from 0 to 100 in general
+ BLOCK_RETURN_BLOCK_CAPACITY Tells the caller about how many hits we can soak on average before our blocking fails.
+ BLOCK_RETURN_ACTIVE_BLOCK Tells the caller we got blocked by active directional block.
+ BLOCK_RETURN_ACTIVE_BLOCK_DAMAGE_MITIGATED Tells the caller our damage mitigation for their attack.
+ BLOCK_RETURN_SET_DAMAGE_TO For [BLOCK_CHANGE_DAMAGE]. Set damage to this.
+ BLOCK_RETURN_MITIGATION_PERCENT For BLOCK_SHOULD_PARTIAL_MITIGATE . Percentage mitigation.
+ BLOCK_RETURN_OVERRIDE_PARRY_EFFICIENCY Used internally by run_parry proc, use on an on_active_parry() proc to override parrying efficiency.
+ BLOCK_RETURN_FORCE_NO_PARRY_COUNTERATTACK Used internally by run_parry proc, use on an on_active_parry() proc to prevent counterattacks
+ BLOCK_RETURN_PROJECTILE_BLOCK_PERCENTAGE Always set to 100 by run_block() if BLOCK_SUCCESS is in return value. Otherwise, defaults to mitigation percent if not set. Used by projectile/proc/on_hit().
+ DEFAULT_REDIRECT_METHOD_PROJECTILE Default if the above isn't set in the list.
+ BLOCK_PRIORITY_ACTIVE_BLOCK Block priorities. Higher means it's checked sooner.
Define Details
+BLOCK_CONTINUE_CHAIN
+
+
+
+ Meta-flag for run_block/do_run_block : By default, BLOCK_SUCCESS tells do_run_block() to assume the attack is completely blocked and not continue the block chain. If this is present, it will continue to check other items in the chain rather than stopping.
BLOCK_NONE
+
+
+
+ Bitflags for check_block() and handle_block(). Meant to be combined. You can be hit and still reflect, for example, if you do not use BLOCK_SUCCESS.
+Attack was not blocked
BLOCK_PHYSICAL_EXTERNAL
+
+
+
+ Attack was blocked by something like a shield.
BLOCK_PHYSICAL_INTERNAL
+
+
+
+ Attack was blocked by something worn on you.
BLOCK_PRIORITY_ACTIVE_BLOCK
+
+
+
+ Block priorities. Higher means it's checked sooner.
BLOCK_REDIRECTED
+
+
+
+ Attack was redirected (whether by us or by SHOULD_REDIRECT flagging for automatic handling)
BLOCK_RETURN_ACTIVE_BLOCK
+
+
+
+ Tells the caller we got blocked by active directional block.
BLOCK_RETURN_ACTIVE_BLOCK_DAMAGE_MITIGATED
+
+
+
+ Tells the caller our damage mitigation for their attack.
BLOCK_RETURN_BLOCK_CAPACITY
+
+
+
+ Tells the caller about how many hits we can soak on average before our blocking fails.
BLOCK_RETURN_FORCE_NO_PARRY_COUNTERATTACK
+
+
+
+ Used internally by run_parry proc, use on an on_active_parry() proc to prevent counterattacks
BLOCK_RETURN_MITIGATION_PERCENT
+
+
+
+ For BLOCK_SHOULD_PARTIAL_MITIGATE . Percentage mitigation.
BLOCK_RETURN_NORMAL_BLOCK_CHANCE
+
+
+
+ Tells the caller how likely we are to block attacks from 0 to 100 in general
BLOCK_RETURN_OVERRIDE_PARRY_EFFICIENCY
+
+
+
+ Used internally by run_parry proc, use on an on_active_parry() proc to override parrying efficiency.
BLOCK_RETURN_PROJECTILE_BLOCK_PERCENTAGE
+
+
+
+ Always set to 100 by run_block() if BLOCK_SUCCESS is in return value. Otherwise, defaults to mitigation percent if not set. Used by projectile/proc/on_hit().
BLOCK_RETURN_REDIRECT_METHOD
+
+
+
+ For keys in associative list/block_return as we don't want to saturate our (somewhat) limited flags.
BLOCK_RETURN_REFLECT_PROJECTILE_CHANCE
+
+
+
+ These keys are generally only applied to the list if real_attack is FALSE. Used incase we want to make "smarter" mob AI in the future or something.
+Tells the caller how likely from 0 (none) to 100 (always) we are to reflect energy projectiles
BLOCK_RETURN_SET_DAMAGE_TO
+
+
+
+ For [BLOCK_CHANGE_DAMAGE]. Set damage to this.
BLOCK_SHOULD_CHANGE_DAMAGE
+
+
+
+ Attack should change the amount of damage incurred. This means something calling run_block() has to handle it!
BLOCK_SHOULD_PARTIAL_MITIGATE
+
+
+
+ Attack should scale by this percent, 0 for no block and 100 for full blocked
BLOCK_SHOULD_REDIRECT
+
+
+
+ The below are for "metadata" on "how" the attack was blocked.
+Attack was and should be redirected according to list argument REDIRECT_METHOD (NOTE: the SHOULD here is important, as it says "the thing blocking isn't handling the reflecting for you so do it yourself"!)
BLOCK_SUCCESS
+
+
+
+ Attack was blocked, do not do damage. THIS FLAG MUST BE THERE FOR DAMAGE/EFFECT PREVENTION!
BLOCK_TARGET_DODGED
+
+
+
+ Attack outright missed because the target dodged. Should usually be combined with redirection passthrough or something (see martial arts)
DEFAULT_REDIRECT_METHOD_PROJECTILE
+
+
+
+ Default if the above isn't set in the list.
REDIRECT_METHOD_DEFLECT
+
+
+
+ Deflect at randomish angle
REDIRECT_METHOD_PASSTHROUGH
+
+
+
+ Pass through victim
REDIRECT_METHOD_REFLECT
+
+
+
+ reverse 180 angle, basically (as opposed to "realistic" wall reflections)
REDIRECT_METHOD_RETURN_TO_SENDER
+
+
+
+ "do not taser the bad man with the desword" - actually aims at the firer/attacker rather than just reversing
mob_check_block
+ (object, damage, attack_text, attack_type, armour_penetration, attacker, def_zone, return_list)
+
+
+
+ Check whether or not we can block, without "triggering" a block. Basically run checks without effects like depleting shields.
+Wrapper for do_run_block(). The arguments on that means the same as for this.
mob_run_block
+ (object, damage, attack_text, attack_type, armour_penetration, attacker, def_zone, return_list)
+
+
+
+ Runs a block "sequence", effectively checking and then doing effects if necessary.
+Wrapper for do_run_block(). The arguments on that means the same as for this.
+
+
+
diff --git a/code/__DEFINES/combat/block_parry.html b/code/__DEFINES/combat/block_parry.html
new file mode 100644
index 0000000000000..6ed1d87de448b
--- /dev/null
+++ b/code/__DEFINES/combat/block_parry.html
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+ code/__DEFINES/combat/block_parry.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/combat/block_parry.dm
+
+
+
+Define Details
+ACTIVE_BLOCK_STARTING_INTERRUPT
+
+
+
+ If this is the value of active_block_starting it signals we want to interrupt the start
NOT_PARRYING
+
+
+
+ Parry phase we're in
PARRY_COUNTERATTACK_IGNORE_ADJACENCY
+
+
+
+ Set to TRUE in list association to ignore adjacency checks
PARRY_COUNTERATTACK_MELEE_ATTACK_CHAIN
+
+
+
+ Parry effects.
+Automatically melee attacks back normally, LMB equivalent action of an harm intent attack. List association should be defaulting to 1, being the attack damage multiplier for said counterattack
PARRY_DAZE_ATTACKER
+
+
+
+ List association should be amount of time to daze attacker.
PARRY_DEFAULT_HANDLE_FEEDBACK
+
+
+
+ Default handling for audio/visual feedback
PARRY_DISARM_ATTACKER
+
+
+
+ List association should be TRUE.
PARRY_KNOCKDOWN_ATTACKER
+
+
+
+ List association should be duration or null for just plain knockdown.
PARRY_LOCK_ATTACKING
+
+
+
+ Lock attacking while parrying
PARRY_LOCK_SPRINTING
+
+
+
+ Lock sprinting while parrying
PARRY_STAGGER_ATTACKER
+
+
+
+ List association should be duration.
UNARMED_PARRY
+
+
+
+ ""types"" of parry "items"
+
+
+
diff --git a/code/__DEFINES/combat/stamina_combat.html b/code/__DEFINES/combat/stamina_combat.html
new file mode 100644
index 0000000000000..f64e05516a6a1
--- /dev/null
+++ b/code/__DEFINES/combat/stamina_combat.html
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+ code/__DEFINES/combat/stamina_combat.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/combat/stamina_combat.dm
+
+
+
+Define Details
+LYING_DAMAGE_PENALTY
+
+
+
+ Damage penalty when fighting prone.
STAMINA_COST_ITEM_EYESTAB
+
+
+
+ Usage for eyestabbing with a screwdriver
STAMINA_COST_SHOVE_UP
+
+
+
+ Usage for shoving yourself off the ground instantly
STAM_COST_W_CLASS_MULT
+
+
+
+ Base stamina cost for an item of a certain w_class without total_mass set.
+
+
+
diff --git a/code/__DEFINES/configuration.html b/code/__DEFINES/configuration.html
new file mode 100644
index 0000000000000..2b3f0b06abc31
--- /dev/null
+++ b/code/__DEFINES/configuration.html
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+ code/__DEFINES/configuration.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/configuration.dm
+
+
+
+Define Details
+CONFIG_CACHE_ENTRY_AND_FETCH_VALUE
+
+
+
+
+ Caches an entry in the proc
CONFIG_GET_ENTRY
+
+
+
+
+ Gets the datum of the object, for when editing a const define.
POLICYCONFIG_ELITE_SENTIENCE
+
+
+
+ displayed to lavaland elites on sentience potion, overriding the default if set
POLICYCONFIG_ELITE_SPAWN
+
+
+
+ displayed to lavaland elites on spawn, overriding the default if set
POLICYCONFIG_ELITE_WIN
+
+
+
+ displayed to lavaland elites on winning the fight, overriding the default if set
POLICYCONFIG_JOB_PRISONER
+
+
+
+ displayed to prisoners on spawn, overriding the default if set
POLICYCONFIG_ON_CLONE
+
+
+
+ Displayed to cloned patients
POLICYCONFIG_ON_DEFIB_INTACT
+
+
+
+ Displayed to defibbed/revival surgery'd patients before the memory loss time threshold
POLICYCONFIG_ON_DEFIB_LATE
+
+
+
+ Displayed to defibbed/revival surgery'd patients after the memory loss time threshold
POLICYCONFIG_ON_PYROCLASTIC_SENTIENT
+
+
+
+ Displayed to pyroclastic slimes on spawn
POLICYCONFIG_PAI
+
+
+
+ Displayed to pAIs on spawn
+
+
+
diff --git a/code/__DEFINES/cooldowns.html b/code/__DEFINES/cooldowns.html
new file mode 100644
index 0000000000000..63b96cf450304
--- /dev/null
+++ b/code/__DEFINES/cooldowns.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/__DEFINES/cooldowns.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/cooldowns.dm
+
+
+
+Define Details
+COOLDOWN_EMPLOYMENT_CABINET
+
+
+
+ COOLDOWN SYSTEMS
+
+
+
diff --git a/code/__DEFINES/dcs/flags.html b/code/__DEFINES/dcs/flags.html
new file mode 100644
index 0000000000000..86e3a697aedbc
--- /dev/null
+++ b/code/__DEFINES/dcs/flags.html
@@ -0,0 +1,165 @@
+
+
+
+
+
+
+ code/__DEFINES/dcs/flags.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/dcs/flags.dm
+
+
+
+Define Details
+COMBAT_MODE_ACTIVE
+
+
+
+ combat mode is active.
COMBAT_MODE_INACTIVE
+
+
+
+ combat mode is not active
COMBAT_MODE_TOGGLED
+
+
+
+ The user wants combat mode on
COMPONENT_DUPE_ALLOWED
+
+
+
+ duplicates allowed
COMPONENT_DUPE_HIGHLANDER
+
+
+
+ old component is deleted (default)
COMPONENT_DUPE_SELECTIVE
+
+
+
+ each component of the same type is consulted as to whether the duplicate should be allowed
COMPONENT_DUPE_UNIQUE
+
+
+
+ new component is deleted
COMPONENT_DUPE_UNIQUE_PASSARGS
+
+
+
+ old component is given the initialization args of the new
COMPONENT_INCOMPATIBLE
+
+
+
+ Return this from /datum/component/Initialize
or datum/component/OnTransfer
to have the component be deleted if it's applied to an incorrect type.
+parent
must not be modified if this is to be returned.
+This will be noted in the runtime logs
COMPONENT_NOTRANSFER
+
+
+
+ Returned in PostTransfer to prevent transfer, similar to COMPONENT_INCOMPATIBLE
ELEMENT_BESPOKE
+
+
+
+ Only elements created with the same arguments given after id_arg_index
share an element instance
+The arguments are the same when the text and number values are the same and all other values have the same ref
ELEMENT_DETACH
+
+
+
+ Causes the detach proc to be called when the host object is being deleted
ELEMENT_INCOMPATIBLE
+
+
+
+ Return value to cancel attaching
ID_COMPONENT_DECONSTRUCTOR_DEEPSCANNED
+
+
+
+ We've already been successfully deepscanned by a deconstructive analyzer
ID_COMPONENT_DEL_ON_IDENTIFY
+
+
+
+ / Identification ////
+Delete on successful broad identification (so the main way we "uncover" how an object works, since this won't be on it to obfuscate it)
ID_COMPONENT_EFFECT_NO_ACTIONS
+
+
+
+ Block user from getting actions if they don't know how to use this. Triggered on equip.
ID_COMPONENT_IDENTIFY_WITH_DECONSTRUCTOR
+
+
+
+ Can be identified in a deconstructive analyzer
ID_COMPONENT_KNOWLEDGE_FULL
+
+
+
+ Has full knowledge
ID_COMPONENT_KNOWLEDGE_NONE
+
+
+
+ Has no knowledge, default
UPDATE_DESC
+
+
+
+ Update the atom's desc
UPDATE_GREYSCALE
+
+
+
+ Update the atom's greyscaling
UPDATE_ICON
+
+
+
+ Update the atom's icon
UPDATE_ICON_STATE
+
+
+
+ Update the atom's icon state
UPDATE_NAME
+
+
+
+ Update the atom's name
UPDATE_OVERLAYS
+
+
+
+ Update the atom's overlays
UPDATE_SMOOTHING
+
+
+
+ Update the atom's smoothing. (More accurately, queue it for an update)
+
+
+
diff --git a/code/__DEFINES/dcs/helpers.html b/code/__DEFINES/dcs/helpers.html
new file mode 100644
index 0000000000000..329d5a151f307
--- /dev/null
+++ b/code/__DEFINES/dcs/helpers.html
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+ code/__DEFINES/dcs/helpers.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/dcs/helpers.dm
+
+
+
+
+ SEND_SIGNAL Used to trigger signals and call procs registered for that signal
+The datum hosting the signal is automaticaly added as the first argument
+Returns a bitfield gathered from all registered procs
+Arguments given here are packaged in a list and given to _SendSignal
+ SIGNAL_HANDLER Signifies that this proc is used to handle signals.
+Every proc you pass to RegisterSignal must have this.
+ SIGNAL_HANDLER_DOES_SLEEP Signifies that this proc is used to handle signals, but also sleeps.
+Do not use this for new work.
+ AddElement A wrapper for _AddElement that allows us to pretend we're using normal named arguments
+ RemoveElement A wrapper for _RemoveElement that allows us to pretend we're using normal named arguments
+ AddComponent A wrapper for _AddComponent that allows us to pretend we're using normal named arguments
Define Details
+AddComponent
+
+
+
+
+ A wrapper for _AddComponent that allows us to pretend we're using normal named arguments
AddElement
+
+
+
+
+ A wrapper for _AddElement that allows us to pretend we're using normal named arguments
RemoveElement
+
+
+
+
+ A wrapper for _RemoveElement that allows us to pretend we're using normal named arguments
SEND_SIGNAL
+ (target, sigtype, arguments ...)
+
+
+
+ Used to trigger signals and call procs registered for that signal
+The datum hosting the signal is automaticaly added as the first argument
+Returns a bitfield gathered from all registered procs
+Arguments given here are packaged in a list and given to _SendSignal
SIGNAL_HANDLER
+
+
+
+ Signifies that this proc is used to handle signals.
+Every proc you pass to RegisterSignal must have this.
SIGNAL_HANDLER_DOES_SLEEP
+
+
+
+ Signifies that this proc is used to handle signals, but also sleeps.
+Do not use this for new work.
+
+
+
diff --git a/code/__DEFINES/dcs/signals.html b/code/__DEFINES/dcs/signals.html
new file mode 100644
index 0000000000000..d633bfd225d9e
--- /dev/null
+++ b/code/__DEFINES/dcs/signals.html
@@ -0,0 +1,623 @@
+
+
+
+
+
+
+ code/__DEFINES/dcs/signals.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/dcs/signals.dm
+
+
+
+
+ COMSIG_GLOB_NEW_Z from base of datum/controller/subsystem/mapping/proc/add_new_zlevel(): (list/args)
+ COMSIG_GLOB_VAR_EDIT called after a successful var edit somewhere in the world: (list/args)
+ COMSIG_GLOB_EXPLOSION called after an explosion happened : (epicenter, devastation_range, heavy_impact_range, light_impact_range, took, orig_dev_range, orig_heavy_range, orig_light_range)
+ COMSIG_GLOB_MOB_CREATED mob was created somewhere : (mob)
+ COMSIG_GLOB_MOB_DEATH mob died somewhere : (mob , gibbed)
+ COMSIG_GLOB_LIVING_SAY_SPECIAL global living say plug - use sparingly: (mob/speaker , message)
+ COMSIG_GLOB_PLAY_CINEMATIC called by datum/cinematic/play() : (datum/cinematic/new_cinematic)
+ COMSIG_GLOB_JOB_AFTER_SPAWN job subsystem has spawned and equipped a new mob
+ COMSIG_GLOB_JOB_AFTER_LATEJOIN_SPAWN job datum has been called to deal with the aftermath of a latejoin spawn
+ CANCEL_PRE_RANDOM_EVENT Do not allow this random event to continue.
+ COMSIG_WEATHER_TELEGRAPH a weather event of some kind occured
+ COMSIG_GLOB_NEW_GAS called by auxgm add_gas: (gas_id)
+ COMSIG_SUN_MOVED from SSsun when the sun changes position : (primary_sun, suns)
+ COMSIG_SECURITY_LEVEL_CHANGED from SSsecurity_level when the security level changes : (new_level)
+ COMSIG_THREAT_CALC from SSactivity for things that add threat but aren't "global" (e.g. phylacteries)
+ COMSIG_COMPONENT_ADDED when a component is added to a datum: (/datum/component)
+ COMSIG_COMPONENT_REMOVING before a component is removed from a datum because of RemoveComponent: (/datum/component)
+ COMSIG_PARENT_PREQDELETED before a datum's Destroy() is called: (force), returning a nonzero value will cancel the qdel operation
+ COMSIG_PARENT_QDELETING just before a datum's Destroy() is called: (force), at this point none of the other components chose to interrupt qdel and Destroy will be called
+ COMSIG_TOPIC generic topic handler (usr, href_list)
+ COMSIG_UI_ACT from datum ui_act (usr, action)
+ COMSIG_UI_FALLBACK from datum tgui_fallback (payload)
+ COMSIG_ELEMENT_ATTACH fires on the target datum when an element is attached to it (/datum/element)
+ COMSIG_ELEMENT_DETACH fires on the target datum when an element is attached to it (/datum/element)
+ COMSIG_COMPONENT_UNREGISTER_PARENT sent to the component itself when unregistered from a parent
+ COMSIG_COMPONENT_REGISTER_PARENT sent to the component itself when registered to a parent
+ COMPONENT_ADD_TRAIT Trait signals
+ COMSIG_ATOM_GET_EXAMINE_NAME from base of atom/get_examine_name(): (/mob, list/overrides)
+ COMSIG_PARENT_EXAMINE_MORE from base of atom/examine_more(): (/mob)
+ COMSIG_ATOM_UPDATE_APPEARANCE from base of /atom/proc/update_appearance : (updates)
+ COMSIG_ATOM_NO_UPDATE_NAME If returned from COMSIG_ATOM_UPDATE_APPEARANCE it prevents the atom from updating its name.
+ COMSIG_ATOM_NO_UPDATE_DESC If returned from COMSIG_ATOM_UPDATE_APPEARANCE it prevents the atom from updating its desc.
+ COMSIG_ATOM_NO_UPDATE_ICON If returned from COMSIG_ATOM_UPDATE_APPEARANCE it prevents the atom from updating its icon.
+ COMSIG_ATOM_UPDATE_NAME from base of /atom/proc/update_name : (updates)
+ COMSIG_ATOM_UPDATE_DESC from base of /atom/proc/update_desc : (updates)
+ COMSIG_ATOM_UPDATE_ICON from base of /atom/update_icon : ()
+ COMSIG_ATOM_NO_UPDATE_ICON_STATE If returned from COMSIG_ATOM_UPDATE_ICON it prevents the atom from updating its icon state.
+ COMSIG_ATOM_NO_UPDATE_OVERLAYS If returned from COMSIG_ATOM_UPDATE_ICON it prevents the atom from updating its overlays.
+ COMSIG_ATOM_UPDATE_ICON_STATE from base of atom/update_icon_state : ()
+ COMSIG_ATOM_UPDATE_OVERLAYS from base of /atom/update_overlays : (list/new_overlays)
+ COMSIG_ATOM_UPDATED_ICON from base of /atom/update_icon : (signalOut, did_anything)
+ COMSIG_ATOM_WAVE_EX_ACT From base of atom/wave_ex_act(): (datum/wave_explosion/explosion, args)
+ COMSIG_ATOM_EX_ACT from base of atom/ex_act(): (severity, target)
+ COMSIG_ATOM_EMP_ACT from base of atom/emp_act(): (severity)
+ COMSIG_ATOM_FIRE_ACT from base of atom/fire_act(): (exposed_temperature, exposed_volume)
+ COMSIG_ATOM_BULLET_ACT from base of atom/bullet_act(): (/obj/item/projectile, def_zone)
+ COMSIG_ATOM_BLOB_ACT from base of atom/blob_act(): (/obj/structure/blob)
+ COMSIG_ATOM_ACID_ACT from base of atom/acid_act(): (acidpwr, acid_volume)
+ COMSIG_ATOM_EMAG_ACT from base of atom/emag_act(): (/mob/user)
+ COMSIG_ATOM_RAD_ACT from base of atom/rad_act(intensity)
+ COMSIG_ATOM_NARSIE_ACT from base of atom/narsie_act(): ()
+ COMSIG_ATOM_RATVAR_ACT from base of atom/ratvar_act(): ()
+ COMSIG_ATOM_RCD_ACT from base of atom/rcd_act(): (/mob, /obj/item/construction/rcd, passed_mode)
+ COMSIG_ATOM_SING_PULL from base of atom/singularity_pull(): (S, current_size)
+ COMSIG_ATOM_BSA_BEAM from obj/machinery/bsa/full/proc/fire(): ()
+ COMSIG_ATOM_DIR_CHANGE from base of atom/setDir(): (old_dir, new_dir). Called before the direction changes.
+ COMSIG_ATOM_CONTENTS_DEL from base of atom/handle_atom_del(): (atom/deleted)
+ COMSIG_ATOM_HAS_GRAVITY from base of atom/has_gravity(): (turf/location, list/forced_gravities)
+ COMSIG_ATOM_RAD_PROBE from proc/get_rad_contents(): ()
+ COMSIG_ATOM_RAD_CONTAMINATING from base of datum/radiation_wave/radiate(): (strength)
+ COMSIG_ATOM_RAD_WAVE_PASSING from base of datum/radiation_wave/check_obstructions(): (datum/radiation_wave, width)
+ COMSIG_ATOM_CANREACH from internal loop in atom/movable/proc/CanReach(): (list/next)
+ COMSIG_ATOM_ORBIT_BEGIN Called from orbit component: (atom/movable/orbiter, radius, clockwise, rotation_speed, rotation_segments, pre_rotation)
+ COMSIG_ATOM_ORBIT_END Called from orbit component: (atom/movable/orbiter, refreshing)
+ COMSIG_TURF_CHANGE from base of turf/ChangeTurf(): (path, list/new_baseturfs, flags, list/transferring_comps)
+ COMSIG_TURF_HAS_GRAVITY from base of atom/has_gravity(): (atom/asker, list/forced_gravities)
+ COMSIG_TURF_MULTIZ_DEL from base of turf/multiz_turf_del(): (turf/source, direction)
+ COMSIG_TURF_MULTIZ_NEW from base of turf/multiz_turf_new: (turf/source, direction)
+ COMSIG_MOVABLE_PRE_MOVE from base of atom/movable/Moved(): (/atom)
+ COMPONENT_MOVABLE_IMPACT_FLIP_HITPUSH if true, flip if the impact will push what it hits
+ COMPONENT_MOVABLE_IMPACT_NEVERMIND return true if you destroyed whatever it was you're impacting and there won't be anything for hitby() to run on
+ COMSIG_MOB_EYECONTACT from /mob/living/handle_eye_contact(): (mob/living/other_mob)
+ COMSIG_BLOCK_EYECONTACT return this if you want to block printing this message to this person, if you want to print your own (does not affect the other person's message)
+ COMSIG_MOB_ALTCLICKON from base of mob/AltClickOn(): (atom/A)
+ COMSIG_GUN_AUTOFIRE_SELECTED When a gun is switched to automatic fire mode
+ COMSIG_GUN_AUTOFIRE_DESELECTED When a gun is switched off of automatic fire mode
+ COMSIG_ATOM_SET_LIGHT from base of [atom/proc/set_light]: (l_range, l_power, l_color, l_on)
+ COMPONENT_BLOCK_LIGHT_UPDATE Blocks [/atom/proc/set_light], [/atom/proc/set_light_power], /atom/proc/set_light_range , /atom/proc/set_light_color , [/atom/proc/set_light_on], and [/atom/proc/set_light_flags].
+ COMSIG_ATOM_SET_LIGHT_POWER Called right before the atom changes the value of light_power to a different one, from base [atom/proc/set_light_power]: (new_power)
+ COMSIG_ATOM_UPDATE_LIGHT_POWER Called right after the atom changes the value of light_power to a different one, from base of [/atom/proc/set_light_power]: (old_power)
+ COMSIG_ATOM_SET_LIGHT_RANGE Called right before the atom changes the value of light_range to a different one, from base atom/proc/set_light_range : (new_range)
+ COMSIG_ATOM_UPDATE_LIGHT_RANGE Called right after the atom changes the value of light_range to a different one, from base of /atom/proc/set_light_range : (old_range)
+ COMSIG_ATOM_SET_LIGHT_COLOR Called right before the atom changes the value of light_color to a different one, from base atom/proc/set_light_color : (new_color)
+ COMSIG_ATOM_UPDATE_LIGHT_COLOR Called right after the atom changes the value of light_color to a different one, from base of /atom/proc/set_light_color : (old_color)
+ COMSIG_ATOM_SET_LIGHT_ON Called right before the atom changes the value of light_on to a different one, from base [atom/proc/set_light_on]: (new_value)
+ COMSIG_ATOM_UPDATE_LIGHT_ON Called right after the atom changes the value of light_on to a different one, from base of [/atom/proc/set_light_on]: (old_value)
+ COMSIG_ATOM_SET_LIGHT_FLAGS Called right before the atom changes the value of light_flags to a different one, from base [atom/proc/set_light_flags]: (new_flags)
+ COMSIG_ATOM_UPDATE_LIGHT_FLAGS Called right after the atom changes the value of light_flags to a different one, from base of [/atom/proc/set_light_flags]: (old_flags)
+ COMSIG_MOB_CLIENT_LOGIN sent when a mob/login() finishes: (client)
+ COMSIG_CARBON_ATTACH_LIMB from base of /obj/item/bodypart/proc/attach_limb(): (new_limb, special) allows you to fail limb attachment
+ COMSIG_MACHINERY_POWER_LOST from base power_change() when power is lost
+ COMSIG_MACHINERY_POWER_RESTORED from base power_change() when power is restored
+ COMSIG_MACHINERY_BROKEN from /obj/machinery/obj_break(damage_flag): (damage_flag)
+ COMSIG_SUPERMATTER_DELAM_START_ALARM from /obj/machinery/power/supermatter_crystal/process_atmos(); when the SM delam reaches the point of sounding alarms
+ COMSIG_SUPERMATTER_DELAM_ALARM from /obj/machinery/power/supermatter_crystal/process_atmos(); when the SM sounds an audible alarm
+ COMSIG_MOB_UNEQUIPPED_ITEM A mob has just unequipped an item.
+ COMSIG_ITEM_DISABLE_EMBED from /obj/item/proc/disableEmbedding :
+ COMSIG_MINE_TRIGGERED from [/obj/effect/mine/proc/triggermine]:
+ COMSIG_ITEM_OFFERING Called when an item is being offered, from [/obj/item/proc/on_offered(mob/living/carbon/offerer)]
+ COMPONENT_OFFER_INTERRUPT Interrupts the offer proc
+ COMSIG_ITEM_OFFER_TAKEN Called when an someone tries accepting an offered item, from [/obj/item/proc/on_offer_taken(mob/living/carbon/offer, mob/living/carbon/taker)]
+ COMPONENT_OFFER_TAKE_INTERRUPT Interrupts the offer acceptance
+ COMSIG_SUPPLYPOD_LANDED from [/obj/structure/closet/supplypod/proc/endlaunch]:
+ COMSIG_PROJECTILE_SELF_ON_HIT from base of /obj/item/projectile/proc/on_hit(): (atom/movable/firer, atom/target, Angle, hit_limb)
+ COMSIG_PROJECTILE_ON_HIT from base of /obj/item/projectile/proc/on_hit(): (atom/movable/firer, atom/target, Angle, hit_limb)
+ COMSIG_PROJECTILE_FIRE from the base of /obj/item/projectile/proc/fire(): ()
+ COMSIG_PROJECTILE_PREHIT sent to targets during the process_hit proc of projectiles
+ COMSIG_MECHA_MELEE_CLICK sent from clicking while you have no equipment selected. Sent before cooldown and adjacency checks, so you can use this for infinite range things if you want.
+ COMPONENT_CANCEL_MELEE_CLICK Prevents click from happening.
+ COMSIG_MECHA_EQUIPMENT_CLICK sent from clicking while you have equipment selected.
+ COMPONENT_CANCEL_EQUIPMENT_CLICK Prevents click from happening.
+ COMSIG_LIVING_PREDEATH from base of mob/living/death(): (gibbed)
+ COMSIG_TURF_IS_WET Component Specific Signals
+ COMSIG_VOID_MASK_ACT Mask of Madness
+ COMSIG_NANITE_CHECK_CONSOLE_LOCK Checks if a nanite component is able to be controlled by console
+ COMSIG_NANITE_CHECK_HOST_LOCK Checks if a nanite component is able to be interfaced with by a host with innate nanite control
+ COMSIG_NANITE_CHECK_VIRAL_PREVENTION Checks if a nanite component is able to be overwritten by viral replica
+ COMSIG_TWITCH_PLAYS_MOVEMENT_DATA Returns direction: (wipe_votes)
+ COMSIG_ON_MULTIPLE_LIVES_RESPAWN from base of [/datum/component/multiple_lives/proc/respawn]: (mob/respawned_mob, gibbed, lives_left)
Define Details
+CANCEL_PRE_RANDOM_EVENT
+
+
+
+ Do not allow this random event to continue.
COMPONENT_ADD_TRAIT
+
+
+
+ Trait signals
COMPONENT_BLOCK_LIGHT_UPDATE
+
+
+
+ Blocks [/atom/proc/set_light], [/atom/proc/set_light_power], /atom/proc/set_light_range , /atom/proc/set_light_color , [/atom/proc/set_light_on], and [/atom/proc/set_light_flags].
COMPONENT_CANCEL_EQUIPMENT_CLICK
+
+
+
+ Prevents click from happening.
COMPONENT_CANCEL_MELEE_CLICK
+
+
+
+ Prevents click from happening.
COMPONENT_MOVABLE_IMPACT_FLIP_HITPUSH
+
+
+
+ if true, flip if the impact will push what it hits
COMPONENT_MOVABLE_IMPACT_NEVERMIND
+
+
+
+ return true if you destroyed whatever it was you're impacting and there won't be anything for hitby() to run on
COMPONENT_OFFER_INTERRUPT
+
+
+
+ Interrupts the offer proc
COMPONENT_OFFER_TAKE_INTERRUPT
+
+
+
+ Interrupts the offer acceptance
COMSIG_ATOM_ACID_ACT
+
+
+
+ from base of atom/acid_act(): (acidpwr, acid_volume)
COMSIG_ATOM_BLOB_ACT
+
+
+
+ from base of atom/blob_act(): (/obj/structure/blob)
COMSIG_ATOM_BSA_BEAM
+
+
+
+ from obj/machinery/bsa/full/proc/fire(): ()
COMSIG_ATOM_BULLET_ACT
+
+
+
+ from base of atom/bullet_act(): (/obj/item/projectile, def_zone)
COMSIG_ATOM_CANREACH
+
+
+
+ from internal loop in atom/movable/proc/CanReach(): (list/next)
COMSIG_ATOM_CONTENTS_DEL
+
+
+
+ from base of atom/handle_atom_del(): (atom/deleted)
COMSIG_ATOM_DIR_CHANGE
+
+
+
+ from base of atom/setDir(): (old_dir, new_dir). Called before the direction changes.
COMSIG_ATOM_EMAG_ACT
+
+
+
+ from base of atom/emag_act(): (/mob/user)
COMSIG_ATOM_EMP_ACT
+
+
+
+ from base of atom/emp_act(): (severity)
COMSIG_ATOM_EX_ACT
+
+
+
+ from base of atom/ex_act(): (severity, target)
COMSIG_ATOM_FIRE_ACT
+
+
+
+ from base of atom/fire_act(): (exposed_temperature, exposed_volume)
COMSIG_ATOM_GET_EXAMINE_NAME
+
+
+
+ from base of atom/get_examine_name(): (/mob, list/overrides)
COMSIG_ATOM_HAS_GRAVITY
+
+
+
+ from base of atom/has_gravity(): (turf/location, list/forced_gravities)
COMSIG_ATOM_NARSIE_ACT
+
+
+
+ from base of atom/narsie_act(): ()
COMSIG_ATOM_NO_UPDATE_DESC
+
+
+
+ If returned from COMSIG_ATOM_UPDATE_APPEARANCE it prevents the atom from updating its desc.
COMSIG_ATOM_NO_UPDATE_ICON
+
+
+
+ If returned from COMSIG_ATOM_UPDATE_APPEARANCE it prevents the atom from updating its icon.
COMSIG_ATOM_NO_UPDATE_ICON_STATE
+
+
+
+ If returned from COMSIG_ATOM_UPDATE_ICON it prevents the atom from updating its icon state.
COMSIG_ATOM_NO_UPDATE_NAME
+
+
+
+ If returned from COMSIG_ATOM_UPDATE_APPEARANCE it prevents the atom from updating its name.
COMSIG_ATOM_NO_UPDATE_OVERLAYS
+
+
+
+ If returned from COMSIG_ATOM_UPDATE_ICON it prevents the atom from updating its overlays.
COMSIG_ATOM_ORBIT_BEGIN
+
+
+
+ Called from orbit component: (atom/movable/orbiter, radius, clockwise, rotation_speed, rotation_segments, pre_rotation)
COMSIG_ATOM_ORBIT_END
+
+
+
+ Called from orbit component: (atom/movable/orbiter, refreshing)
COMSIG_ATOM_RAD_ACT
+
+
+
+ from base of atom/rad_act(intensity)
COMSIG_ATOM_RAD_CONTAMINATING
+
+
+
+ from base of datum/radiation_wave/radiate(): (strength)
COMSIG_ATOM_RAD_PROBE
+
+
+
+ from proc/get_rad_contents(): ()
COMSIG_ATOM_RAD_WAVE_PASSING
+
+
+
+ from base of datum/radiation_wave/check_obstructions(): (datum/radiation_wave, width)
COMSIG_ATOM_RATVAR_ACT
+
+
+
+ from base of atom/ratvar_act(): ()
COMSIG_ATOM_RCD_ACT
+
+
+
+ from base of atom/rcd_act(): (/mob, /obj/item/construction/rcd, passed_mode)
COMSIG_ATOM_SET_LIGHT
+
+
+
+ from base of [atom/proc/set_light]: (l_range, l_power, l_color, l_on)
COMSIG_ATOM_SET_LIGHT_COLOR
+
+
+
+ Called right before the atom changes the value of light_color to a different one, from base atom/proc/set_light_color : (new_color)
COMSIG_ATOM_SET_LIGHT_FLAGS
+
+
+
+ Called right before the atom changes the value of light_flags to a different one, from base [atom/proc/set_light_flags]: (new_flags)
COMSIG_ATOM_SET_LIGHT_ON
+
+
+
+ Called right before the atom changes the value of light_on to a different one, from base [atom/proc/set_light_on]: (new_value)
COMSIG_ATOM_SET_LIGHT_POWER
+
+
+
+ Called right before the atom changes the value of light_power to a different one, from base [atom/proc/set_light_power]: (new_power)
COMSIG_ATOM_SET_LIGHT_RANGE
+
+
+
+ Called right before the atom changes the value of light_range to a different one, from base atom/proc/set_light_range : (new_range)
COMSIG_ATOM_SING_PULL
+
+
+
+ from base of atom/singularity_pull(): (S, current_size)
COMSIG_ATOM_UPDATED_ICON
+
+
+
+ from base of /atom/update_icon : (signalOut, did_anything)
COMSIG_ATOM_UPDATE_APPEARANCE
+
+
+
+ from base of /atom/proc/update_appearance : (updates)
COMSIG_ATOM_UPDATE_DESC
+
+
+
+ from base of /atom/proc/update_desc : (updates)
COMSIG_ATOM_UPDATE_ICON
+
+
+
+ from base of /atom/update_icon : ()
COMSIG_ATOM_UPDATE_ICON_STATE
+
+
+
+ from base of atom/update_icon_state : ()
COMSIG_ATOM_UPDATE_LIGHT_COLOR
+
+
+
+ Called right after the atom changes the value of light_color to a different one, from base of /atom/proc/set_light_color : (old_color)
COMSIG_ATOM_UPDATE_LIGHT_FLAGS
+
+
+
+ Called right after the atom changes the value of light_flags to a different one, from base of [/atom/proc/set_light_flags]: (old_flags)
COMSIG_ATOM_UPDATE_LIGHT_ON
+
+
+
+ Called right after the atom changes the value of light_on to a different one, from base of [/atom/proc/set_light_on]: (old_value)
COMSIG_ATOM_UPDATE_LIGHT_POWER
+
+
+
+ Called right after the atom changes the value of light_power to a different one, from base of [/atom/proc/set_light_power]: (old_power)
COMSIG_ATOM_UPDATE_LIGHT_RANGE
+
+
+
+ Called right after the atom changes the value of light_range to a different one, from base of /atom/proc/set_light_range : (old_range)
COMSIG_ATOM_UPDATE_NAME
+
+
+
+ from base of /atom/proc/update_name : (updates)
COMSIG_ATOM_UPDATE_OVERLAYS
+
+
+
+ from base of /atom/update_overlays : (list/new_overlays)
COMSIG_ATOM_WAVE_EX_ACT
+
+
+
+ From base of atom/wave_ex_act(): (datum/wave_explosion/explosion, args)
+ return this if you want to block printing this message to this person, if you want to print your own (does not affect the other person's message)
COMSIG_CARBON_ATTACH_LIMB
+
+
+
+ from base of /obj/item/bodypart/proc/attach_limb(): (new_limb, special) allows you to fail limb attachment
COMSIG_COMPONENT_ADDED
+
+
+
+ when a component is added to a datum: (/datum/component)
COMSIG_COMPONENT_REGISTER_PARENT
+
+
+
+ sent to the component itself when registered to a parent
COMSIG_COMPONENT_REMOVING
+
+
+
+ before a component is removed from a datum because of RemoveComponent: (/datum/component)
COMSIG_COMPONENT_UNREGISTER_PARENT
+
+
+
+ sent to the component itself when unregistered from a parent
COMSIG_ELEMENT_ATTACH
+
+
+
+ fires on the target datum when an element is attached to it (/datum/element)
COMSIG_ELEMENT_DETACH
+
+
+
+ fires on the target datum when an element is attached to it (/datum/element)
COMSIG_GLOB_EXPLOSION
+
+
+
+ called after an explosion happened : (epicenter, devastation_range, heavy_impact_range, light_impact_range, took, orig_dev_range, orig_heavy_range, orig_light_range)
COMSIG_GLOB_JOB_AFTER_LATEJOIN_SPAWN
+
+
+
+ job datum has been called to deal with the aftermath of a latejoin spawn
COMSIG_GLOB_JOB_AFTER_SPAWN
+
+
+
+ job subsystem has spawned and equipped a new mob
COMSIG_GLOB_LIVING_SAY_SPECIAL
+
+
+
+ global living say plug - use sparingly: (mob/speaker , message)
COMSIG_GLOB_MOB_CREATED
+
+
+
+ mob was created somewhere : (mob)
COMSIG_GLOB_MOB_DEATH
+
+
+
+ mob died somewhere : (mob , gibbed)
COMSIG_GLOB_NEW_GAS
+
+
+
+ called by auxgm add_gas: (gas_id)
COMSIG_GLOB_NEW_Z
+
+
+
+ from base of datum/controller/subsystem/mapping/proc/add_new_zlevel(): (list/args)
COMSIG_GLOB_PLAY_CINEMATIC
+
+
+
+ called by datum/cinematic/play() : (datum/cinematic/new_cinematic)
COMSIG_GLOB_VAR_EDIT
+
+
+
+ called after a successful var edit somewhere in the world: (list/args)
COMSIG_GUN_AUTOFIRE_DESELECTED
+
+
+
+ When a gun is switched off of automatic fire mode
COMSIG_GUN_AUTOFIRE_SELECTED
+
+
+
+ When a gun is switched to automatic fire mode
COMSIG_ITEM_DISABLE_EMBED
+
+
+
+ from /obj/item/proc/disableEmbedding :
COMSIG_ITEM_OFFERING
+
+
+
+ Called when an item is being offered, from [/obj/item/proc/on_offered(mob/living/carbon/offerer)]
COMSIG_ITEM_OFFER_TAKEN
+
+
+
+ Called when an someone tries accepting an offered item, from [/obj/item/proc/on_offer_taken(mob/living/carbon/offer, mob/living/carbon/taker)]
COMSIG_LIVING_PREDEATH
+
+
+
+ from base of mob/living/death(): (gibbed)
COMSIG_MACHINERY_BROKEN
+
+
+
+ from /obj/machinery/obj_break(damage_flag): (damage_flag)
COMSIG_MACHINERY_POWER_LOST
+
+
+
+ from base power_change() when power is lost
COMSIG_MACHINERY_POWER_RESTORED
+
+
+
+ from base power_change() when power is restored
COMSIG_MECHA_EQUIPMENT_CLICK
+
+
+
+ sent from clicking while you have equipment selected.
COMSIG_MECHA_MELEE_CLICK
+
+
+
+ sent from clicking while you have no equipment selected. Sent before cooldown and adjacency checks, so you can use this for infinite range things if you want.
COMSIG_MINE_TRIGGERED
+
+
+
+ from [/obj/effect/mine/proc/triggermine]:
COMSIG_MOB_ALTCLICKON
+
+
+
+ from base of mob/AltClickOn(): (atom/A)
COMSIG_MOB_CLIENT_LOGIN
+
+
+
+ sent when a mob/login() finishes: (client)
+ from /mob/living/handle_eye_contact(): (mob/living/other_mob)
COMSIG_MOB_UNEQUIPPED_ITEM
+
+
+
+ A mob has just unequipped an item.
COMSIG_MOVABLE_PRE_MOVE
+
+
+
+ from base of atom/movable/Moved(): (/atom)
COMSIG_NANITE_CHECK_CONSOLE_LOCK
+
+
+
+ Checks if a nanite component is able to be controlled by console
COMSIG_NANITE_CHECK_HOST_LOCK
+
+
+
+ Checks if a nanite component is able to be interfaced with by a host with innate nanite control
COMSIG_NANITE_CHECK_VIRAL_PREVENTION
+
+
+
+ Checks if a nanite component is able to be overwritten by viral replica
COMSIG_ON_MULTIPLE_LIVES_RESPAWN
+
+
+
+ from base of [/datum/component/multiple_lives/proc/respawn]: (mob/respawned_mob, gibbed, lives_left)
COMSIG_PARENT_EXAMINE_MORE
+
+
+
+ from base of atom/examine_more(): (/mob)
COMSIG_PARENT_PREQDELETED
+
+
+
+ before a datum's Destroy() is called: (force), returning a nonzero value will cancel the qdel operation
COMSIG_PARENT_QDELETING
+
+
+
+ just before a datum's Destroy() is called: (force), at this point none of the other components chose to interrupt qdel and Destroy will be called
COMSIG_PROJECTILE_FIRE
+
+
+
+ from the base of /obj/item/projectile/proc/fire(): ()
COMSIG_PROJECTILE_ON_HIT
+
+
+
+ from base of /obj/item/projectile/proc/on_hit(): (atom/movable/firer, atom/target, Angle, hit_limb)
COMSIG_PROJECTILE_PREHIT
+
+
+
+ sent to targets during the process_hit proc of projectiles
COMSIG_PROJECTILE_SELF_ON_HIT
+
+
+
+ from base of /obj/item/projectile/proc/on_hit(): (atom/movable/firer, atom/target, Angle, hit_limb)
COMSIG_SECURITY_LEVEL_CHANGED
+
+
+
+ from SSsecurity_level when the security level changes : (new_level)
COMSIG_SUN_MOVED
+
+
+
+ from SSsun when the sun changes position : (primary_sun, suns)
COMSIG_SUPERMATTER_DELAM_ALARM
+
+
+
+ from /obj/machinery/power/supermatter_crystal/process_atmos(); when the SM sounds an audible alarm
COMSIG_SUPERMATTER_DELAM_START_ALARM
+
+
+
+ from /obj/machinery/power/supermatter_crystal/process_atmos(); when the SM delam reaches the point of sounding alarms
COMSIG_SUPPLYPOD_LANDED
+
+
+
+ from [/obj/structure/closet/supplypod/proc/endlaunch]:
COMSIG_THREAT_CALC
+
+
+
+ from SSactivity for things that add threat but aren't "global" (e.g. phylacteries)
COMSIG_TOPIC
+
+
+
+ generic topic handler (usr, href_list)
COMSIG_TURF_CHANGE
+
+
+
+ from base of turf/ChangeTurf(): (path, list/new_baseturfs, flags, list/transferring_comps)
COMSIG_TURF_HAS_GRAVITY
+
+
+
+ from base of atom/has_gravity(): (atom/asker, list/forced_gravities)
COMSIG_TURF_IS_WET
+
+
+
+ Component Specific Signals
COMSIG_TURF_MULTIZ_DEL
+
+
+
+ from base of turf/multiz_turf_del(): (turf/source, direction)
COMSIG_TURF_MULTIZ_NEW
+
+
+
+ from base of turf/multiz_turf_new: (turf/source, direction)
COMSIG_TWITCH_PLAYS_MOVEMENT_DATA
+
+
+
+ Returns direction: (wipe_votes)
COMSIG_UI_ACT
+
+
+
+ from datum ui_act (usr, action)
COMSIG_UI_FALLBACK
+
+
+
+ from datum tgui_fallback (payload)
COMSIG_VOID_MASK_ACT
+
+
+
+ Mask of Madness
COMSIG_WEATHER_TELEGRAPH
+
+
+
+
+ a weather event of some kind occured
+
+
+
diff --git a/code/__DEFINES/dcs/signals/signals_action.html b/code/__DEFINES/dcs/signals/signals_action.html
new file mode 100644
index 0000000000000..68098cfec9a23
--- /dev/null
+++ b/code/__DEFINES/dcs/signals/signals_action.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+ code/__DEFINES/dcs/signals/signals_action.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/dcs/signals/signals_action.dm
+
+
+
+Define Details
+COMPONENT_BLOCK_ABILITY_START
+
+
+
+ Return to block the ability from starting / activating
COMSIG_MOB_ABILITY_FINISHED
+
+
+
+ From base of /datum/action/cooldown/proc/PreActivate(), sent to the action owner: (datum/action/cooldown/finished)
COMSIG_MOB_ABILITY_STARTED
+
+
+
+ From base of /datum/action/cooldown/proc/PreActivate(), sent to the action owner: (datum/action/cooldown/activated)
+
+
+
diff --git a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_main.html b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_main.html
new file mode 100644
index 0000000000000..da93e9a13de8f
--- /dev/null
+++ b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_main.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/__DEFINES/dcs/signals/signals_atom/signals_atom_main.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/dcs/signals/signals_atom/signals_atom_main.dm
+
+
+
+
+ COMSIG_ATOM_HITBY from base of atom/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum)
Define Details
+COMSIG_ATOM_HITBY
+
+
+
+ from base of atom/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum)
+
+
+
diff --git a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_mouse.html b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_mouse.html
new file mode 100644
index 0000000000000..930aaebccbb00
--- /dev/null
+++ b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_mouse.html
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+ code/__DEFINES/dcs/signals/signals_atom/signals_atom_mouse.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/dcs/signals/signals_atom/signals_atom_mouse.dm
+
+
+
+Define Details
+COMPONENT_ALLOW_EXAMINATE
+
+
+
+ Allows the user to examinate regardless of client.eye.
COMPONENT_DENY_EXAMINATE
+
+
+
+ Higher priority compared to the above one
COMSIG_CLICK
+
+
+
+ from base of atom/Click(): (atom/location, control, params, mob/user)
COMSIG_CLICK_ALT
+
+
+
+ from base of atom/AltClick(): (/mob)
COMSIG_CLICK_CTRL
+
+
+
+ from base of atom/CtrlClickOn(): (/mob)
COMSIG_CLICK_CTRL_SHIFT
+
+
+
+ from base of atom/CtrlShiftClick(/mob)
COMSIG_CLICK_SHIFT
+
+
+
+ from base of atom/ShiftClick(): (/mob)
COMSIG_CLIENT_CLICK
+
+
+
+ from base of client/Click(): (atom/target, atom/location, control, params, mob/user)
COMSIG_MOUSEDROPPED_ONTO
+
+
+
+ from base of atom/MouseDrop_T: (/atom/from, /mob/user)
COMSIG_MOUSEDROP_ONTO
+
+
+
+ from base of atom/MouseDrop(): (/atom/over, /mob/user)
+
+
+
diff --git a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_movement.html b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_movement.html
new file mode 100644
index 0000000000000..7cc88df472395
--- /dev/null
+++ b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_movement.html
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+ code/__DEFINES/dcs/signals/signals_atom/signals_atom_movement.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/dcs/signals/signals_atom/signals_atom_movement.dm
+
+
+
+
+ COMSIG_LIVING_PUSHING_MOVABLE Called from /mob/living/PushAM -- Called when this mob is about to push a movable, but before it moves
+(aotm/movable/being_pushed)
Define Details
+COMSIG_LIVING_PUSHING_MOVABLE
+
+
+
+ Called from /mob/living/PushAM -- Called when this mob is about to push a movable, but before it moves
+(aotm/movable/being_pushed)
+
+
+
diff --git a/code/__DEFINES/dcs/signals/signals_global.html b/code/__DEFINES/dcs/signals/signals_global.html
new file mode 100644
index 0000000000000..f8f17d5c8912c
--- /dev/null
+++ b/code/__DEFINES/dcs/signals/signals_global.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/__DEFINES/dcs/signals/signals_global.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/dcs/signals/signals_global.dm
+
+
+
+Define Details
+COMSIG_GLOB_CARBON_THROW_THING
+
+
+
+ a person somewhere has thrown something : (mob/living/carbon/carbon_thrower, target)
+
+
+
diff --git a/code/__DEFINES/dcs/signals/signals_hud.html b/code/__DEFINES/dcs/signals/signals_hud.html
new file mode 100644
index 0000000000000..fa590f34b20da
--- /dev/null
+++ b/code/__DEFINES/dcs/signals/signals_hud.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+ code/__DEFINES/dcs/signals/signals_hud.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/dcs/signals/signals_hud.dm
+
+
+
+Define Details
+COMSIG_HUD_LOBBY_COLLAPSED
+
+
+
+ Sent from /atom/movable/screen/lobby/button/collapse/proc/collapse_buttons() : ()
COMSIG_HUD_LOBBY_EXPANDED
+
+
+
+ Sent from /atom/movable/screen/lobby/button/collapse/proc/expand_buttons() : ()
+
+
+
diff --git a/code/__DEFINES/dcs/signals/signals_medical.html b/code/__DEFINES/dcs/signals/signals_medical.html
new file mode 100644
index 0000000000000..712667183f4ff
--- /dev/null
+++ b/code/__DEFINES/dcs/signals/signals_medical.html
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+ code/__DEFINES/dcs/signals/signals_medical.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/dcs/signals/signals_medical.dm
+
+
+
+
+ COMSIG_MOB_SURGERY_STARTED From /datum/surgery/New(): (datum/surgery/surgery, surgery_location (body zone), obj/item/bodypart/targeted_limb)
+ COMSIG_MOB_SURGERY_STEP_SUCCESS From /datum/surgery_step/success(): (datum/surgery_step/step, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results)
+ COMSIG_DEFIBRILLATOR_SUCCESS From /obj/item/shockpaddles/proc/do_success(): (obj/item/shockpaddles/source)
+ COMSIG_SURGERY_STARTING From /datum/surgery/can_start(): (mob/source, datum/surgery/surgery, mob/living/patient)
Define Details
+COMSIG_DEFIBRILLATOR_SUCCESS
+
+
+
+ From /obj/item/shockpaddles/proc/do_success(): (obj/item/shockpaddles/source)
COMSIG_MOB_SURGERY_STARTED
+
+
+
+ From /datum/surgery/New(): (datum/surgery/surgery, surgery_location (body zone), obj/item/bodypart/targeted_limb)
COMSIG_MOB_SURGERY_STEP_SUCCESS
+
+
+
+ From /datum/surgery_step/success(): (datum/surgery_step/step, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results)
COMSIG_SURGERY_STARTING
+
+
+
+ From /datum/surgery/can_start(): (mob/source, datum/surgery/surgery, mob/living/patient)
+
+
+
diff --git a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_living.html b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_living.html
new file mode 100644
index 0000000000000..c29f603041cd1
--- /dev/null
+++ b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_living.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/__DEFINES/dcs/signals/signals_mob/signals_mob_living.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/dcs/signals/signals_mob/signals_mob_living.dm
+
+
+
+Define Details
+COMSIG_LIVING_MOB_BUMP
+
+
+
+ From base of mob/living/MobBump() (mob/living)
+
+
+
diff --git a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_main.html b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_main.html
new file mode 100644
index 0000000000000..21bb72426cc7b
--- /dev/null
+++ b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_main.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+ code/__DEFINES/dcs/signals/signals_mob/signals_mob_main.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/dcs/signals/signals_mob/signals_mob_main.dm
+
+
+
+Define Details
+COMSIG_MOB_DROPPING_ITEM
+
+
+
+ from mob/proc/dropItemToGround()
COMSIG_MOB_STATCHANGE
+
+
+
+ from base of mob/set_stat(): (new_stat, old_stat)
+
+
+
diff --git a/code/__DEFINES/dcs/signals/signals_mod.html b/code/__DEFINES/dcs/signals/signals_mod.html
new file mode 100644
index 0000000000000..13feee27dbf1c
--- /dev/null
+++ b/code/__DEFINES/dcs/signals/signals_mod.html
@@ -0,0 +1,112 @@
+
+
+
+
+
+
+ code/__DEFINES/dcs/signals/signals_mod.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/dcs/signals/signals_mod.dm
+
+
+
+Define Details
+COMSIG_MODULE_ACTIVATED
+
+
+
+ Called when a module activates, after all checks have passed and cooldown started.
COMSIG_MODULE_DEACTIVATED
+
+
+
+ Called when a module deactivates, after all checks have passed.
COMSIG_MODULE_TRIGGERED
+
+
+
+ Called when a module attempts to activate, however it does. At the end of checks so you can add some yourself, or work on trigger behavior (mob/user)
COMSIG_MODULE_USED
+
+
+
+ Called when a module is used, after all checks have passed and cooldown started.
COMSIG_MOD_ACTIVATE
+
+
+
+ Called when a MOD activation is called from toggle_activate(mob/user)
COMSIG_MOD_DEPLOYED
+
+
+
+ Called when a MOD deploys one or more of its parts.
COMSIG_MOD_MODULE_ADDED
+
+
+
+ Called when a MOD finishes having a module added to it.
COMSIG_MOD_MODULE_REMOVAL
+
+
+
+ Called when a MOD is having modules removed from crowbar_act(mob/user, obj/crowbar)
COMSIG_MOD_MODULE_REMOVED
+
+
+
+ Called when a MOD finishes having a module removed from it.
COMSIG_MOD_MODULE_SELECTED
+
+
+
+ Called when a module is selected to be the active one from on_select(obj/item/mod/module/module)
COMSIG_MOD_RETRACTED
+
+
+
+ Called when a MOD retracts one or more of its parts.
COMSIG_MOD_TOGGLED
+
+
+
+ Called when a MOD is finished toggling itself.
COMSIG_MOD_WEARER_SET
+
+
+
+ Called when the MODsuit wearer is set.
COMSIG_MOD_WEARER_UNSET
+
+
+
+ Called when the MODsuit wearer is unset.
MOD_ABORT_USE
+
+
+
+ Cancels activation, with no message. Include feedback on your cancel.
MOD_CANCEL_ACTIVATE
+
+
+
+ Cancels the suit's activation
MOD_CANCEL_REMOVAL
+
+
+
+ Cancels the removal of modules
+
+
+
diff --git a/code/__DEFINES/dcs/signals/signals_movable.html b/code/__DEFINES/dcs/signals/signals_movable.html
new file mode 100644
index 0000000000000..393a867f98e5c
--- /dev/null
+++ b/code/__DEFINES/dcs/signals/signals_movable.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+ code/__DEFINES/dcs/signals/signals_movable.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/dcs/signals/signals_movable.dm
+
+
+
+Define Details
+COMSIG_MOVABLE_BLOCKS_PRESSURE
+
+
+
+ prevents pressure movement
COMSIG_MOVABLE_PRE_PRESSURE_PUSH
+
+
+
+ from base of atom/experience_pressure_difference(): (pressure_difference, direction, pressure_resistance_prob_delta)
+
+
+
diff --git a/code/__DEFINES/dcs/signals/signals_painting.html b/code/__DEFINES/dcs/signals/signals_painting.html
new file mode 100644
index 0000000000000..9dc69fa865dfd
--- /dev/null
+++ b/code/__DEFINES/dcs/signals/signals_painting.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+ code/__DEFINES/dcs/signals/signals_painting.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/dcs/signals/signals_painting.dm
+
+
+
+Define Details
+
+ from base of /item/canvas/ui_data(): (data)
+ from base of /item/proc/set_painting_tool_color(): (chosen_color)
+
+
+
diff --git a/code/__DEFINES/dcs/signals/signals_reagent.html b/code/__DEFINES/dcs/signals/signals_reagent.html
new file mode 100644
index 0000000000000..a0c807bfdf624
--- /dev/null
+++ b/code/__DEFINES/dcs/signals/signals_reagent.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/__DEFINES/dcs/signals/signals_reagent.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/dcs/signals/signals_reagent.dm
+
+
+
+Define Details
+COMSIG_ATOM_EXPOSE_REAGENTS
+
+
+
+ Sent by /datum/reagents/proc/reaction, used for /obj/item/mod/module/springlock
+
+
+
diff --git a/code/__DEFINES/dcs/signals/signals_screentips.html b/code/__DEFINES/dcs/signals/signals_screentips.html
new file mode 100644
index 0000000000000..db3b8edab1b20
--- /dev/null
+++ b/code/__DEFINES/dcs/signals/signals_screentips.html
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+ code/__DEFINES/dcs/signals/signals_screentips.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/dcs/signals/signals_screentips.dm
+
+
+
+
+ COMSIG_ITEM_REQUESTING_CONTEXT_FOR_TARGET A "Type-A" contextual screentip interaction.
+These are used for items that are defined by their behavior. They define their contextual text within themselves ,
+not in their targets.
+Examples include syringes (LMB to inject, RMB to draw) and health analyzers (LMB to scan health/wounds, RMB for chems)
+Items can override add_item_context()
, and call register_item_context()
in order to easily connect to this.
+Called on /obj/item with a mutable screentip context list, the hovered target, and the mob hovering.
+A screentip context list is a list that has context keys (SCREENTIP_CONTEXT_*, from __DEFINES/screentips.dm)
+that map to the action as text.
+If you mutate the list in this signal, you must return CONTEXTUAL_SCREENTIP_SET.
+ COMSIG_ATOM_REQUESTING_CONTEXT_FROM_ITEM A "Type-B" contextual screentip interaction.
+These are atoms that are defined by what happens to them. These should define contextual text within themselves, and
+not in their operating tools.
+Examples include construction objects (LMB with glass to put in screen for computers).
+Called on /atom with a mutable screentip context list, the item being used, and the mob hovering.
+A screentip context list is a list that has context keys (SCREENTIP_CONTEXT_*, from __DEFINES/screentips.dm)
+that map to the action as text.
+If you mutate the list in this signal, you must return CONTEXTUAL_SCREENTIP_SET.
+ CONTEXTUAL_SCREENTIP_SET Tells the contextual screentips system that the list context was mutated.
Define Details
+COMSIG_ATOM_REQUESTING_CONTEXT_FROM_ITEM
+
+
+
+ A "Type-B" contextual screentip interaction.
+These are atoms that are defined by what happens to them. These should define contextual text within themselves, and
+not in their operating tools.
+Examples include construction objects (LMB with glass to put in screen for computers).
+Called on /atom with a mutable screentip context list, the item being used, and the mob hovering.
+A screentip context list is a list that has context keys (SCREENTIP_CONTEXT_*, from __DEFINES/screentips.dm)
+that map to the action as text.
+If you mutate the list in this signal, you must return CONTEXTUAL_SCREENTIP_SET.
COMSIG_ITEM_REQUESTING_CONTEXT_FOR_TARGET
+
+
+
+ A "Type-A" contextual screentip interaction.
+These are used for items that are defined by their behavior. They define their contextual text within themselves ,
+not in their targets.
+Examples include syringes (LMB to inject, RMB to draw) and health analyzers (LMB to scan health/wounds, RMB for chems)
+Items can override add_item_context()
, and call register_item_context()
in order to easily connect to this.
+Called on /obj/item with a mutable screentip context list, the hovered target, and the mob hovering.
+A screentip context list is a list that has context keys (SCREENTIP_CONTEXT_*, from __DEFINES/screentips.dm)
+that map to the action as text.
+If you mutate the list in this signal, you must return CONTEXTUAL_SCREENTIP_SET.
CONTEXTUAL_SCREENTIP_SET
+
+
+
+ Tells the contextual screentips system that the list context was mutated.
+
+
+
diff --git a/code/__DEFINES/dcs/signals/signals_subsystem.html b/code/__DEFINES/dcs/signals/signals_subsystem.html
new file mode 100644
index 0000000000000..181caf14ed1e5
--- /dev/null
+++ b/code/__DEFINES/dcs/signals/signals_subsystem.html
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+ code/__DEFINES/dcs/signals/signals_subsystem.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/dcs/signals/signals_subsystem.dm
+
+
+
+Define Details
+COMSIG_ADDED_POINT_OF_INTEREST
+
+
+
+ Sent from base of /datum/controller/subsystem/points_of_interest/proc/on_poi_element_added : (atom/new_poi)
COMSIG_REMOVED_POINT_OF_INTEREST
+
+
+
+ Sent from base of /datum/controller/subsystem/points_of_interest/proc/on_poi_element_removed : (atom/old_poi)
COMSIG_SUBSYSTEM_POST_INITIALIZE
+
+
+
+ Subsystem signals
+From base of datum/controller/subsystem/Initialize: (start_timeofday)
COMSIG_TICKER_ENTER_PREGAME
+
+
+
+ Called when the ticker enters the pre-game phase
COMSIG_TICKER_ENTER_SETTING_UP
+
+
+
+ Called when the ticker sets up the game for start
COMSIG_TICKER_ERROR_SETTING_UP
+
+
+
+ Called when the ticker fails to set up the game for start
COMSIG_TICKER_ROUND_STARTING
+
+
+
+ Called when the round has started, but before GAME_STATE_PLAYING
+
+
+
diff --git a/code/__DEFINES/dynamic.html b/code/__DEFINES/dynamic.html
new file mode 100644
index 0000000000000..38a764fa9bd82
--- /dev/null
+++ b/code/__DEFINES/dynamic.html
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+ code/__DEFINES/dynamic.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/dynamic.dm
+
+
+
+
+ ONLY_RULESET This is the only ruleset that should be picked this round, used by admins and should not be on rulesets in code.
+ HIGH_IMPACT_RULESET Only one ruleset with this flag will be picked.
+ LONE_RULESET This ruleset can only be picked once. Anything that does not have a scaling_cost MUST have this.
+ HIJACKED_NOTHING No round event was hijacked this cycle
+ HIJACKED_TOO_RECENT This cycle, a round event was hijacked when the last midround event was too recent.
+ HIJACKED_TOO_SOON This cycle, a round event was hijacked when the next midround event is too soon.
Define Details
+HIGH_IMPACT_RULESET
+
+
+
+ Only one ruleset with this flag will be picked.
HIJACKED_NOTHING
+
+
+
+ No round event was hijacked this cycle
HIJACKED_TOO_RECENT
+
+
+
+ This cycle, a round event was hijacked when the last midround event was too recent.
HIJACKED_TOO_SOON
+
+
+
+ This cycle, a round event was hijacked when the next midround event is too soon.
LONE_RULESET
+
+
+
+ This ruleset can only be picked once. Anything that does not have a scaling_cost MUST have this.
ONLY_RULESET
+
+
+
+ This is the only ruleset that should be picked this round, used by admins and should not be on rulesets in code.
+
+
+
diff --git a/code/__DEFINES/economy.html b/code/__DEFINES/economy.html
new file mode 100644
index 0000000000000..bba65edf10fb0
--- /dev/null
+++ b/code/__DEFINES/economy.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+ code/__DEFINES/economy.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/economy.dm
+
+
+
+
+ STARTING_PAYCHECKS Number of paychecks jobs start with at the creation of a new bank account for a player (So at shift-start or game join, but not a blank new account.)
+ MAX_MAIL_PER_MINUTE How much mail the Economy SS will create per minute, regardless of firing time.
+ FULL_CRATE_LETTER_ODDS Probability of using letters of envelope sprites on all letters.
Define Details
+FULL_CRATE_LETTER_ODDS
+
+
+
+ Probability of using letters of envelope sprites on all letters.
MAX_MAIL_PER_MINUTE
+
+
+
+ How much mail the Economy SS will create per minute, regardless of firing time.
STARTING_PAYCHECKS
+
+
+
+ Number of paychecks jobs start with at the creation of a new bank account for a player (So at shift-start or game join, but not a blank new account.)
+
+
+
diff --git a/code/__DEFINES/events.html b/code/__DEFINES/events.html
new file mode 100644
index 0000000000000..170c3e484659d
--- /dev/null
+++ b/code/__DEFINES/events.html
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+ code/__DEFINES/events.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/events.dm
+
+
+
+Define Details
+ADMIN_CANCEL_EVENT
+
+
+
+ Return from admin setup to stop the event from triggering entirely.
EVENT_CATEGORY_AI
+
+
+
+ Events that mess with or create artificial intelligences, such as vending machines and the AI itself
EVENT_CATEGORY_ANOMALIES
+
+
+
+ Events that spawn anomalies, which might be the source of anomaly cores
EVENT_CATEGORY_BUREAUCRATIC
+
+
+
+ Events pertaining cargo, messages incoming to the station and job slots
EVENT_CATEGORY_ENGINEERING
+
+
+
+ Events that cause breakages and malfunctions that could be fixed by engineers
EVENT_CATEGORY_ENTITIES
+
+
+
+ Events that spawn creatures with simple desires, such as to hunt
EVENT_CATEGORY_FRIENDLY
+
+
+
+ Events that should have no harmful effects, and might be useful to the crew
EVENT_CATEGORY_HEALTH
+
+
+
+ Events that affect the body and mind
EVENT_CATEGORY_HOLIDAY
+
+
+
+ Events reserved for special occassions
EVENT_CATEGORY_INVASION
+
+
+
+ Events with enemy groups with a more complex plan
EVENT_CATEGORY_JANITORIAL
+
+
+
+ Events that make a mess
EVENT_CATEGORY_SPACE
+
+
+
+ Events that summon meteors and other debris, and stationwide waves of harmful space weather
EVENT_CATEGORY_WIZARD
+
+
+
+ Events summoned by a wizard
+
+
+
diff --git a/code/__DEFINES/exosuit_fabs.html b/code/__DEFINES/exosuit_fabs.html
new file mode 100644
index 0000000000000..efab682fdd54c
--- /dev/null
+++ b/code/__DEFINES/exosuit_fabs.html
@@ -0,0 +1,112 @@
+
+
+
+
+
+
+ code/__DEFINES/exosuit_fabs.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/exosuit_fabs.dm
+
+
+
+Define Details
+BORG_MODULE_ENGINEERING
+
+
+
+ Module is compatible with Engineering Cyborg models
BORG_MODULE_JANITOR
+
+
+
+ Module is compatible with Janitor Cyborg models
BORG_MODULE_MEDICAL
+
+
+
+ Module is compatible with Medical Cyborg models
BORG_MODULE_MINER
+
+
+
+ Module is compatible with Miner Cyborg models
BORG_MODULE_SECURITY
+
+
+
+ Module is compatible with Security Cyborg models
EXOSUIT_MODULE_COMBAT
+
+
+
+ Module is compatible with "Combat" Exosuit models - Gygax, H.O.N.K, Durand and Phazon
EXOSUIT_MODULE_DURAND
+
+
+
+ Module is compatible with Durand Exosuit models
EXOSUIT_MODULE_FIREFIGHTER
+
+
+
+ Module is compatible with Clarke Exosuit models. Rebranded to firefighter because tg nerfed it to this.
EXOSUIT_MODULE_GYGAX
+
+
+
+ Module is compatible with Gygax Exosuit models
EXOSUIT_MODULE_GYGAX_MED
+
+
+
+ Module is compatable with N models
EXOSUIT_MODULE_HONK
+
+
+
+ Module is compatible with H.O.N.K Exosuit models
EXOSUIT_MODULE_MEDICAL
+
+
+
+ Module is compatible with "Medical" Exosuit modelsm - Odysseus
EXOSUIT_MODULE_ODYSSEUS
+
+
+
+ Module is compatible with Odyseeus Exosuit models
EXOSUIT_MODULE_PHAZON
+
+
+
+ Module is compatible with Phazon Exosuit models
EXOSUIT_MODULE_RIPLEY
+
+
+
+ Module is compatible with Ripley Exosuit models
EXOSUIT_MODULE_SAVANNAH
+
+
+
+ Module is compatible with Savannah Exosuit models - SPLURT ADDITION
EXOSUIT_MODULE_WORKING
+
+
+
+ Module is compatible with "Working" Exosuit models - Ripley and Clarke
+
+
+
diff --git a/code/__DEFINES/explosion.html b/code/__DEFINES/explosion.html
new file mode 100644
index 0000000000000..c543655a9d8f7
--- /dev/null
+++ b/code/__DEFINES/explosion.html
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+ code/__DEFINES/explosion.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/explosion.dm
+
+
+
+Define Details
+EXPLOSION_DAMAGE_OPEN_DOOR_FACTOR
+
+
+
+ Factor to multiply damage to a door by if it's open (and therefore not blocking the explosion)
EXPLOSION_DEFAULT_FALLOFF_MULTIPLY
+
+
+
+ Default explosion falloff
EXPLOSION_DEFAULT_FALLOFF_SUBTRACT
+
+
+
+ Default explosion constant falloff
EXPLOSION_FLAG_DENSITY_DEPENDENT
+
+
+
+ No blocking if we're not dense
EXPLOSION_FLAG_HARD_OBSTACLE
+
+
+
+ If we survive the explosion, we block ALL the power and ignore the results of wave_ex_act().
EXPLOSION_POWER_DEAD
+
+
+
+ Default explosion power to consider an explosion over
EXPLOSION_POWER_ERASE_SHREDS
+
+
+
+ erases shreds from explosions/item damage
EXPLOSION_POWER_MAXCAP
+
+
+
+ Maxcap
EXPLOSION_POWER_NORMAL_MOB_GIB
+
+
+
+ Gibs most mobs
EXPLOSION_POWER_NO_RESIST_THRESHOLD
+
+
+
+ Block amount at which point having 0 block resistance will result in a full block
EXPLOSION_POWER_QUANTIZATION_ACCURACY
+
+
+
+ Explosion power quantization
EXPLOSION_POWER_STANDARD_SCALE_HARD_OBSTACLE_DAMAGE
+
+
+
+
+ Explosion power to object damage for hard obstacles
EXPLOSION_POWER_STANDARD_SCALE_MOB_DAMAGE
+
+
+
+
+ Default brute damage to do to living things
EXPLOSION_POWER_STANDARD_SCALE_OBJECT_DAMAGE
+
+
+
+
+ Explosion power to object damage (without taking into consideration armor)
EXPLOSION_POWER_STANDARD_SCALE_WINDOW_DAMAGE
+
+
+
+
+ Explosion power to object damage for windows
+
+
+
diff --git a/code/__DEFINES/fonts.html b/code/__DEFINES/fonts.html
new file mode 100644
index 0000000000000..c3bad37068151
--- /dev/null
+++ b/code/__DEFINES/fonts.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/__DEFINES/fonts.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/fonts.dm
+
+
+
+
+ INCLUDE_AC Include leading A width and trailing C width in GetWidth() or in DrawText()
Define Details
+INCLUDE_AC
+
+
+
+ Include leading A width and trailing C width in GetWidth() or in DrawText()
+
+
+
diff --git a/code/__DEFINES/hud.html b/code/__DEFINES/hud.html
new file mode 100644
index 0000000000000..2d5bc7559d419
--- /dev/null
+++ b/code/__DEFINES/hud.html
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+ code/__DEFINES/hud.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/hud.dm
+
+
+
+Define Details
+APPEARANCE_UI
+
+
+
+ Used for HUD objects
APPEARANCE_UI_IGNORE_ALPHA
+
+
+
+ Used for progress bars and chat messages
HOVER_OUTLINE_FILTER
+
+
+
+ The filter name for the hover outline
HUD_STYLE_NOHUD
+
+
+
+ No hud (for screenshots)
HUD_STYLE_REDUCED
+
+
+
+ Reduced hud (just hands and intent switcher)
HUD_STYLE_STANDARD
+
+
+
+ Standard hud
HUD_VERSIONS
+
+
+
+ Used in show_hud(); Please ensure this is the same as the maximum index.
SCRN_OBJ_DEFAULT
+
+
+
+ Whatever the base action datum thinks is best
SCRN_OBJ_FLOATING
+
+
+
+ Floating somewhere on the hud, not in any predefined place
SCRN_OBJ_IN_LIST
+
+
+
+ In the list of buttons stored at the top of the screen
SCRN_OBJ_IN_PALETTE
+
+
+
+ In the collapseable palette
+
+
+
diff --git a/code/__DEFINES/instruments.html b/code/__DEFINES/instruments.html
new file mode 100644
index 0000000000000..4c6ecdb57f35b
--- /dev/null
+++ b/code/__DEFINES/instruments.html
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+ code/__DEFINES/instruments.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/instruments.dm
+
+
+
+Define Details
+CHANNELS_PER_INSTRUMENT
+
+
+
+ Max number of playing notes per instrument.
INSTRUMENT_DISTANCE_FALLOFF_BUFF
+
+
+
+ Distance multiplier that makes us not be impacted by 3d sound as much. This is a multiplier so lower it is the closer we will pretend to be to people.
INSTRUMENT_DISTANCE_NO_FALLOFF
+
+
+
+ How many tiles instruments have no falloff for
INSTRUMENT_EXP_FALLOFF_MIN
+
+
+
+ These are per decisecond.
INSTRUMENT_MAX_TOTAL_SUSTAIN
+
+
+
+ Maximum length a note should ever go for
INSTRUMENT_MIN_SUSTAIN_DROPOFF
+
+
+
+ Minimum volume for when the sound is considered dead.
+
+
+
diff --git a/code/__DEFINES/inventory.html b/code/__DEFINES/inventory.html
new file mode 100644
index 0000000000000..f028460607326
--- /dev/null
+++ b/code/__DEFINES/inventory.html
@@ -0,0 +1,187 @@
+
+
+
+
+
+
+ code/__DEFINES/inventory.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/inventory.dm
+
+
+
+
+ ITEM_SLOT_OCLOTHING Suit slot (armors, costumes, space suits, etc.)
+ ITEM_SLOT_ICLOTHING Jumpsuit slot
+ ITEM_SLOT_GLOVES Glove slot
+ ITEM_SLOT_EYES Glasses slot
+ ITEM_SLOT_EARS_LEFT Ear slot (radios, earmuffs)
+ ITEM_SLOT_MASK Mask slot
+ ITEM_SLOT_HEAD Head slot (helmets, hats, etc.)
+ ITEM_SLOT_FEET Shoe slot
+ ITEM_SLOT_ID ID slot
+ ITEM_SLOT_BELT Belt slot
+ ITEM_SLOT_BACK Back slot
+ ITEM_SLOT_DEX_STORAGE Dextrous simplemob "hands" (used for Drones and Dextrous Guardians)
+ ITEM_SLOT_NECK Neck slot (ties, bedsheets, scarves)
+ ITEM_SLOT_HANDS A character's hand slots
+ ITEM_SLOT_BACKPACK Inside of a character's backpack
+ ITEM_SLOT_SUITSTORE Suit Storage slot
+ ITEM_SLOT_LPOCKET Left Pocket slot
+ ITEM_SLOT_RPOCKET Right Pocket slot
+ ITEM_SLOT_UNDERWEAR Underwear slot
+ ITEM_SLOT_SOCKS Socks slot
+ ITEM_SLOT_SHIRT Shirt slot
+ ITEM_SLOT_EARS_RIGHT Right ear slot
+ ITEM_SLOT_WRISTS Wrist slot
+ ITEM_SLOT_HANDCUFFED Handcuff slot
+ ITEM_SLOT_LEGCUFFED Legcuff slot (bolas, beartraps)
+ ITEM_SLOT_ACCESSORY To attach to a jumpsuit
+ SLOTS_AMT Total amount of slots
+ AFK_THEFT_MAX_MESSAGES How many messages you can remember while logged out before you stop remembering new ones
+ AFK_THEFT_FORGET_DETAILS_TIME If someone logs back in and there are entries older than this, just tell them they can't remember who it was or when
+ AFK_THEFT_NAME The index of the entry in 'afk_thefts' with the person's visible name at the time
+ AFK_THEFT_MESSAGE The index of the entry in 'afk_thefts' with the text
+ AFK_THEFT_TIME The index of the entry in 'afk_thefts' with the time it happened
Define Details
+AFK_THEFT_FORGET_DETAILS_TIME
+
+
+
+ If someone logs back in and there are entries older than this, just tell them they can't remember who it was or when
AFK_THEFT_MAX_MESSAGES
+
+
+
+ How many messages you can remember while logged out before you stop remembering new ones
AFK_THEFT_MESSAGE
+
+
+
+ The index of the entry in 'afk_thefts' with the text
AFK_THEFT_NAME
+
+
+
+ The index of the entry in 'afk_thefts' with the person's visible name at the time
AFK_THEFT_TIME
+
+
+
+ The index of the entry in 'afk_thefts' with the time it happened
ITEM_SLOT_ACCESSORY
+
+
+
+ To attach to a jumpsuit
ITEM_SLOT_BACK
+
+
+
+ Back slot
ITEM_SLOT_BACKPACK
+
+
+
+ Inside of a character's backpack
ITEM_SLOT_BELT
+
+
+
+ Belt slot
ITEM_SLOT_DEX_STORAGE
+
+
+
+ Dextrous simplemob "hands" (used for Drones and Dextrous Guardians)
ITEM_SLOT_EARS_LEFT
+
+
+
+ Ear slot (radios, earmuffs)
ITEM_SLOT_EARS_RIGHT
+
+
+
+ Right ear slot
ITEM_SLOT_EYES
+
+
+
+ Glasses slot
ITEM_SLOT_FEET
+
+
+
+ Shoe slot
ITEM_SLOT_GLOVES
+
+
+
+ Glove slot
ITEM_SLOT_HANDCUFFED
+
+
+
+ Handcuff slot
ITEM_SLOT_HANDS
+
+
+
+ A character's hand slots
ITEM_SLOT_HEAD
+
+
+
+ Head slot (helmets, hats, etc.)
ITEM_SLOT_ICLOTHING
+
+
+
+ Jumpsuit slot
ITEM_SLOT_ID
+
+
+
+ ID slot
ITEM_SLOT_LEGCUFFED
+
+
+
+ Legcuff slot (bolas, beartraps)
ITEM_SLOT_LPOCKET
+
+
+
+ Left Pocket slot
ITEM_SLOT_MASK
+
+
+
+ Mask slot
ITEM_SLOT_NECK
+
+
+
+ Neck slot (ties, bedsheets, scarves)
ITEM_SLOT_OCLOTHING
+
+
+
+ Suit slot (armors, costumes, space suits, etc.)
ITEM_SLOT_RPOCKET
+
+
+
+ Right Pocket slot
ITEM_SLOT_SHIRT
+
+
+
+ Shirt slot
ITEM_SLOT_SOCKS
+
+
+
+ Socks slot
ITEM_SLOT_SUITSTORE
+
+
+
+ Suit Storage slot
ITEM_SLOT_UNDERWEAR
+
+
+
+ Underwear slot
ITEM_SLOT_WRISTS
+
+
+
+ Wrist slot
SLOTS_AMT
+
+
+
+ Total amount of slots
+
+
+
diff --git a/code/__DEFINES/is_helpers.html b/code/__DEFINES/is_helpers.html
new file mode 100644
index 0000000000000..d75b3a76ffc59
--- /dev/null
+++ b/code/__DEFINES/is_helpers.html
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+ code/__DEFINES/is_helpers.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/is_helpers.dm
+
+
+
+
+ is_object_datatype Checks if something is a BYOND object datatype rather than a primitive, or whatever's closest to one.
Define Details
+is_object_datatype
+
+
+
+
+ Checks if something is a BYOND object datatype rather than a primitive, or whatever's closest to one.
+
+
+
diff --git a/code/__DEFINES/layers_planes.html b/code/__DEFINES/layers_planes.html
new file mode 100644
index 0000000000000..973b34ca0e69b
--- /dev/null
+++ b/code/__DEFINES/layers_planes.html
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+ code/__DEFINES/layers_planes.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/layers_planes.dm
+
+
+
+
+ SPACE_LAYER Layers most often used by atoms of plane lower than GAME_PLANE
+ CATWALK_LAYER catwalk overlay of /turf/open/floor/plating/plating_catwalk
+ BELOW_OPEN_DOOR_LAYER Layers most often used by atoms of plane equal or higher than GAME_PLANE
+ BALLOON_CHAT_PLANE Plane for balloon text (text that fades up)
+It's over lighting and every other crap because this is nearly as important as hud content and only visible to the user.
+ LOBBY_BELOW_MENU_LAYER Layer for lobby menu collapse button
+ LOBBY_MENU_LAYER Layer for lobby menu background image and main buttons (Join/Ready, Observe, Charater Prefs)
+ LOBBY_SHUTTER_LAYER Layer for lobby menu shutter, which covers up the menu to collapse/expand it
+ LOBBY_BOTTOM_BUTTON_LAYER Layer for lobby menu buttons that are hanging away from and lower than the main panel
+ SCREENTIP_LAYER Layer for screentips
Define Details
+BALLOON_CHAT_PLANE
+
+
+
+ Plane for balloon text (text that fades up)
+It's over lighting and every other crap because this is nearly as important as hud content and only visible to the user.
BELOW_OPEN_DOOR_LAYER
+
+
+
+ Layers most often used by atoms of plane equal or higher than GAME_PLANE
CATWALK_LAYER
+
+
+
+ catwalk overlay of /turf/open/floor/plating/plating_catwalk
+ Layer for lobby menu collapse button
+ Layer for lobby menu buttons that are hanging away from and lower than the main panel
+ Layer for lobby menu background image and main buttons (Join/Ready, Observe, Charater Prefs)
LOBBY_SHUTTER_LAYER
+
+
+
+ Layer for lobby menu shutter, which covers up the menu to collapse/expand it
SCREENTIP_LAYER
+
+
+
+ Layer for screentips
SPACE_LAYER
+
+
+
+ Layers most often used by atoms of plane lower than GAME_PLANE
+
+
+
diff --git a/code/__DEFINES/lighting.html b/code/__DEFINES/lighting.html
new file mode 100644
index 0000000000000..341b2f367570a
--- /dev/null
+++ b/code/__DEFINES/lighting.html
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+ code/__DEFINES/lighting.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/lighting.dm
+
+
+
+
+ EMISSIVE_BLOCK_GENERIC Uses vis_overlays to leverage caching so that very few new items need to be made for the overlay. For anything that doesn't change outline or opaque area much or at all.
+ EMISSIVE_BLOCK_UNIQUE Uses a dedicated render_target object to copy the entire appearance in real time to the blocking layer. For things that can change in appearance a lot from the base state, like humans.
+ EMISSIVE_COLOR The color matrix applied to all emissive overlays. Should be solely dependent on alpha and not have RGB overlap with EM_BLOCK_COLOR .
+ EM_BLOCK_COLOR The color matrix applied to all emissive blockers. Should be solely dependent on alpha and not have RGB overlap with EMISSIVE_COLOR .
+ EM_MASK_MATRIX The color matrix used to mask out emissive blockers on the emissive plane. Alpha should default to zero, be solely dependent on the RGB value of EMISSIVE_COLOR , and be independant of the RGB value of EM_BLOCK_COLOR .
+ GETREDPART Returns the red part of a #RRGGBB hex sequence as number
+ GETGREENPART Returns the green part of a #RRGGBB hex sequence as number
+ GETBLUEPART Returns the blue part of a #RRGGBB hex sequence as number
+ PARSE_LIGHT_COLOR Parse the hexadecimal color into lumcounts of each perspective.
Define Details
+EMISSIVE_BLOCK_GENERIC
+
+
+
+ Uses vis_overlays to leverage caching so that very few new items need to be made for the overlay. For anything that doesn't change outline or opaque area much or at all.
EMISSIVE_BLOCK_UNIQUE
+
+
+
+ Uses a dedicated render_target object to copy the entire appearance in real time to the blocking layer. For things that can change in appearance a lot from the base state, like humans.
EMISSIVE_COLOR
+
+
+
+ The color matrix applied to all emissive overlays. Should be solely dependent on alpha and not have RGB overlap with EM_BLOCK_COLOR .
EM_BLOCK_COLOR
+
+
+
+ The color matrix applied to all emissive blockers. Should be solely dependent on alpha and not have RGB overlap with EMISSIVE_COLOR .
EM_MASK_MATRIX
+
+
+
+ The color matrix used to mask out emissive blockers on the emissive plane. Alpha should default to zero, be solely dependent on the RGB value of EMISSIVE_COLOR , and be independant of the RGB value of EM_BLOCK_COLOR .
GETBLUEPART
+
+
+
+
+ Returns the blue part of a #RRGGBB hex sequence as number
GETGREENPART
+
+
+
+
+ Returns the green part of a #RRGGBB hex sequence as number
GETREDPART
+
+
+
+
+ Returns the red part of a #RRGGBB hex sequence as number
PARSE_LIGHT_COLOR
+
+
+
+
+ Parse the hexadecimal color into lumcounts of each perspective.
+
+
+
diff --git a/code/__DEFINES/maps.html b/code/__DEFINES/maps.html
new file mode 100644
index 0000000000000..446b0b0d981f5
--- /dev/null
+++ b/code/__DEFINES/maps.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/__DEFINES/maps.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/maps.dm
+
+
+
+Define Details
+PERLIN_LAYER_HEIGHT
+
+
+
+ Map generation defines
+
+
+
diff --git a/code/__DEFINES/material/worth.html b/code/__DEFINES/material/worth.html
new file mode 100644
index 0000000000000..736456a08ea60
--- /dev/null
+++ b/code/__DEFINES/material/worth.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/__DEFINES/material/worth.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/material/worth.dm
+
+
+
+Define Details
+MINERAL_MATERIAL_AMOUNT
+
+
+
+ cm3 of material matter per sheet
+
+
+
diff --git a/code/__DEFINES/materials.html b/code/__DEFINES/materials.html
new file mode 100644
index 0000000000000..e8b907e2784a6
--- /dev/null
+++ b/code/__DEFINES/materials.html
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+ code/__DEFINES/materials.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/materials.dm
+
+
+
+
+ MAT_CATEGORY_ORE Is the material from an ore? currently unused but exists atm for categorizations sake
+ MAT_CATEGORY_RIGID Hard materials, such as iron or metal
+ MAT_CATEGORY_BASE_RECIPES Use this flag on TRUE if you want the basic recipes
+ MATERIAL_COLOR Flag for atoms, this flag ensures it isn't re-colored by materials. Useful for snowflake icons such as default toolboxes.
Define Details
+MATERIAL_COLOR
+
+
+
+ Flag for atoms, this flag ensures it isn't re-colored by materials. Useful for snowflake icons such as default toolboxes.
MAT_CATEGORY_BASE_RECIPES
+
+
+
+ Use this flag on TRUE if you want the basic recipes
MAT_CATEGORY_ORE
+
+
+
+ Is the material from an ore? currently unused but exists atm for categorizations sake
MAT_CATEGORY_RIGID
+
+
+
+ Hard materials, such as iron or metal
+
+
+
diff --git a/code/__DEFINES/maths.html b/code/__DEFINES/maths.html
new file mode 100644
index 0000000000000..5752dc978f646
--- /dev/null
+++ b/code/__DEFINES/maths.html
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+ code/__DEFINES/maths.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/maths.dm
+
+
+
+
+ TOBITSHIFT Gets shift x that would be required the bitflag (1<<x)
+We need the round because log has floating-point inaccuracy, and if we undershoot at all on list indexing we'll get the wrong index.
+ DT_PROB_RATE Converts a probability/second chance to probability/delta_time chance
+For example, if you want an event to happen with a 10% per second chance, but your proc only runs every 5 seconds, do if(prob(100*DT_PROB_RATE(0.1, 5)))
+ DT_PROB Like DT_PROB_RATE but easier to use, simply put if(DT_PROB(10, 5))
+ MANHATTAN_DISTANCE Taxicab distance--gets you the actual time it takes to get from one turf to another due to how we calculate diagonal movement
+ LOGISTIC_FUNCTION A function that exponentially approaches a maximum value of L
+k is the rate at which is approaches L, x_0 is the point where the function = 0
+ FORCE_BOOLEAN Make sure something is a boolean TRUE/FALSE 1/0 value, since things like bitfield & bitflag doesn't always give 1s and 0s.
+ TILES_TO_PIXELS Gives the number of pixels in an orthogonal line of tiles.
Define Details
+DT_PROB
+ (prob_per_second_percent, delta_time)
+
+
+
+ Like DT_PROB_RATE but easier to use, simply put if(DT_PROB(10, 5))
DT_PROB_RATE
+ (prob_per_second, delta_time)
+
+
+
+ Converts a probability/second chance to probability/delta_time chance
+For example, if you want an event to happen with a 10% per second chance, but your proc only runs every 5 seconds, do if(prob(100*DT_PROB_RATE(0.1, 5)))
FORCE_BOOLEAN
+
+
+
+
+ Make sure something is a boolean TRUE/FALSE 1/0 value, since things like bitfield & bitflag doesn't always give 1s and 0s.
LOGISTIC_FUNCTION
+
+
+
+
+ A function that exponentially approaches a maximum value of L
+k is the rate at which is approaches L, x_0 is the point where the function = 0
MANHATTAN_DISTANCE
+
+
+
+
+ Taxicab distance--gets you the actual time it takes to get from one turf to another due to how we calculate diagonal movement
TILES_TO_PIXELS
+
+
+
+
+ Gives the number of pixels in an orthogonal line of tiles.
TOBITSHIFT
+
+
+
+
+ Gets shift x that would be required the bitflag (1<<x)
+We need the round because log has floating-point inaccuracy, and if we undershoot at all on list indexing we'll get the wrong index.
+
+
+
diff --git a/code/__DEFINES/mecha.html b/code/__DEFINES/mecha.html
new file mode 100644
index 0000000000000..813b88cf716d5
--- /dev/null
+++ b/code/__DEFINES/mecha.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+ code/__DEFINES/mecha.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/mecha.dm
+
+
+
+Define Details
+CANNOT_INTERACT
+
+
+
+ blocks using equipment and melee attacking.
MMI_COMPATIBLE
+
+
+
+ posibrains can drive this mecha
+
+
+
diff --git a/code/__DEFINES/misc.html b/code/__DEFINES/misc.html
new file mode 100644
index 0000000000000..1bb604f703860
--- /dev/null
+++ b/code/__DEFINES/misc.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+ code/__DEFINES/misc.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/misc.dm
+
+
+
+
+ DEBUG_LINE yeah yeah i'm a lazy asshole who can't debug yeah yeah
+ PIXELS world.icon_size
Define Details
+DEBUG_LINE
+
+
+
+ yeah yeah i'm a lazy asshole who can't debug yeah yeah
PIXELS
+
+
+
+ world.icon_size
+
+
+
diff --git a/code/__DEFINES/mobs.html b/code/__DEFINES/mobs.html
new file mode 100644
index 0000000000000..457143e483d40
--- /dev/null
+++ b/code/__DEFINES/mobs.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+ code/__DEFINES/mobs.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/mobs.dm
+
+
+
+Define Details
+MOB_NANITES
+
+
+
+ Mobs that otherwise support nanites
SPAWN_MEGAFAUNA
+
+
+
+ Define for spawning megafauna instead of a mob for cave gen
+
+
+
diff --git a/code/__DEFINES/mobs/innate_abilities.html b/code/__DEFINES/mobs/innate_abilities.html
new file mode 100644
index 0000000000000..f84482e1a2f02
--- /dev/null
+++ b/code/__DEFINES/mobs/innate_abilities.html
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+ code/__DEFINES/mobs/innate_abilities.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/mobs/innate_abilities.dm
+
+
+
+Define Details
+ABILITY_SOURCE_CHANGELING
+
+
+
+ Changeling
ABILITY_SOURCE_SPECIES
+
+
+
+ Species
INNATE_ABILITY_HUMANOID_CUSTOMIZATION
+
+
+
+ Full customization and transformation of mutantparts/hair/sprite accessories/etc - excludes name by default
INNATE_ABILITY_LIMB_REGROWTH
+
+
+
+ limb regrowth
+ Slime blobform
+ Blobform color
PROPERTY_CUSTOMIZATION_SILENT
+
+
+
+ ability properties
+is this silent?
PROPERTY_LIMB_REGROWTH_USAGE_TYPE
+
+
+
+ limb regrowth usage type
REGROWTH_USES_BLOOD
+
+
+
+ blood
+
+
+
diff --git a/code/__DEFINES/mobs/slowdowns.html b/code/__DEFINES/mobs/slowdowns.html
new file mode 100644
index 0000000000000..b2281687a355e
--- /dev/null
+++ b/code/__DEFINES/mobs/slowdowns.html
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+ code/__DEFINES/mobs/slowdowns.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/mobs/slowdowns.dm
+
+
+
+Define Details
+CRAWLING_ADD_SLOWDOWN
+
+
+
+ slowdown when crawling
FIREMAN_CARRY_SLOWDOWN
+
+
+
+ How much someone is slowed from fireman carrying a human
PIGGYBACK_CARRY_SLOWDOWN
+
+
+
+ How much someone is slowed by piggybacking a human
PULL_PRONE_SLOWDOWN
+
+
+
+ How much someone is slowed from pulling a prone human
SOFTCRIT_ADD_SLOWDOWN
+
+
+
+ slowdown when in softcrit. Note that crawling slowdown will also apply at the same time!
+
+
+
diff --git a/code/__DEFINES/mod.html b/code/__DEFINES/mod.html
new file mode 100644
index 0000000000000..a9b1ed29defb4
--- /dev/null
+++ b/code/__DEFINES/mod.html
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+ code/__DEFINES/mod.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/mod.dm
+
+
+
+Define Details
+DEFAULT_CHARGE_DRAIN
+
+
+
+ Default cell drain per process on MODsuits
DEFAULT_MAX_COMPLEXITY
+
+
+
+ Default value for the max_complexity var on MODsuits
MODULE_ACTIVE
+
+
+
+ Actively usable module, you may only have one selected at a time.
MODULE_PASSIVE
+
+
+
+ Passive module, just acts when put in naturally.
MODULE_TOGGLE
+
+
+
+ Toggle module, you turn it on/off and it does stuff.
MODULE_USABLE
+
+
+
+ Usable module, does something when you press a button.
MOD_ACTIVATION_STEP_TIME
+
+
+
+ Default time for a part to seal
+
+
+
diff --git a/code/__DEFINES/movement.html b/code/__DEFINES/movement.html
new file mode 100644
index 0000000000000..291a6e5af8956
--- /dev/null
+++ b/code/__DEFINES/movement.html
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+ code/__DEFINES/movement.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/movement.dm
+
+
+
+
+ MIN_GLIDE_SIZE The minimum for glide_size to be clamped to.
+ MAX_GLIDE_SIZE The maximum for glide_size to be clamped to.
+This shouldn't be higher than the icon size, and generally you shouldn't be changing this, but it's here just in case.
+ DELAY_TO_GLIDE_SIZE Broken down, here's what this does:
+divides the world icon_size (32) by delay divided by ticklag to get the number of pixels something should be moving each tick.
+The division result is given a min value of 1 to prevent obscenely slow glide sizes from being set
+Then that's multiplied by the global glide size multiplier. 1.25 by default feels pretty close to spot on. This is just to try to get byond to behave.
+The whole result is then clamped to within the range above.
+Not very readable but it works
+ SET_APPEARANCE_FLAGS Enables smooth movement
+Set appearance flags in vars
Define Details
+DELAY_TO_GLIDE_SIZE
+
+
+
+
+ Broken down, here's what this does:
+divides the world icon_size (32) by delay divided by ticklag to get the number of pixels something should be moving each tick.
+The division result is given a min value of 1 to prevent obscenely slow glide sizes from being set
+Then that's multiplied by the global glide size multiplier. 1.25 by default feels pretty close to spot on. This is just to try to get byond to behave.
+The whole result is then clamped to within the range above.
+Not very readable but it works
MAX_GLIDE_SIZE
+
+
+
+ The maximum for glide_size to be clamped to.
+This shouldn't be higher than the icon size, and generally you shouldn't be changing this, but it's here just in case.
MIN_GLIDE_SIZE
+
+
+
+ The minimum for glide_size to be clamped to.
SET_APPEARANCE_FLAGS
+
+
+
+
+ Enables smooth movement
+Set appearance flags in vars
+
+
+
diff --git a/code/__DEFINES/nanites.html b/code/__DEFINES/nanites.html
new file mode 100644
index 0000000000000..21351de56a4bb
--- /dev/null
+++ b/code/__DEFINES/nanites.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+ code/__DEFINES/nanites.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/nanites.dm
+
+
+
+Define Details
+NANITE_PROTOCOL_REPLICATION
+
+
+
+ Nanite Protocol types
NESTYPE_TEXT
+
+
+
+ Nanite extra settings types: used to help uis know what type an extra setting is
NES_SENT_CODE
+
+
+
+ Nanite Extra Settings - Note that these will also be the names displayed in the UI
+
+
+
diff --git a/code/__DEFINES/overlays.html b/code/__DEFINES/overlays.html
new file mode 100644
index 0000000000000..ef14901014cb8
--- /dev/null
+++ b/code/__DEFINES/overlays.html
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+ code/__DEFINES/overlays.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/overlays.dm
+
+
+
+Define Details
+VALIDATE_OVERLAY_LIMIT
+
+
+
+
+ Checks if an atom has reached the overlay limit, and make a loud error if it does.
+
+
+
diff --git a/code/__DEFINES/pinpointers.html b/code/__DEFINES/pinpointers.html
new file mode 100644
index 0000000000000..3bd459f60cfa2
--- /dev/null
+++ b/code/__DEFINES/pinpointers.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/__DEFINES/pinpointers.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/pinpointers.dm
+
+
+
+
+ TRACK_NUKE_DISK Performs any operations that ought to run after an appearance change
Define Details
+TRACK_NUKE_DISK
+
+
+
+ Performs any operations that ought to run after an appearance change
+
+
+
diff --git a/code/__DEFINES/power.html b/code/__DEFINES/power.html
new file mode 100644
index 0000000000000..adb68a2e3186b
--- /dev/null
+++ b/code/__DEFINES/power.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+ code/__DEFINES/power.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/power.dm
+
+
+
+
+ WATTS conversion ratio from joules to watts
+ JOULES conversion ratio from watts to joules
Define Details
+JOULES
+
+
+
+ conversion ratio from watts to joules
WATTS
+
+
+
+ conversion ratio from joules to watts
+
+
+
diff --git a/code/__DEFINES/procpath.html b/code/__DEFINES/procpath.html
new file mode 100644
index 0000000000000..4975edae2e87d
--- /dev/null
+++ b/code/__DEFINES/procpath.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/__DEFINES/procpath.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/procpath.dm
+
+
+
+
+
+
+
diff --git a/code/__DEFINES/projectiles.html b/code/__DEFINES/projectiles.html
new file mode 100644
index 0000000000000..7d037f0f6f56a
--- /dev/null
+++ b/code/__DEFINES/projectiles.html
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+ code/__DEFINES/projectiles.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/projectiles.dm
+
+
+
+Define Details
+PROJECTILE_PIERCE_HIT
+
+
+
+ Hit the thing but go through without deleting. Causes on_hit to be called with pierced = TRUE
PROJECTILE_PIERCE_NONE
+
+
+
+ Default behavior: hit and delete self
PROJECTILE_PIERCE_PHASE
+
+
+
+ Entirely phase through the thing without ever hitting.
PROJECTILE_RICOCHET_FORCE
+
+
+
+ This atom should force a projectile ricochet from its inherent properties.
PROJECTILE_RICOCHET_NO
+
+
+
+ This atom should not be ricocheted off of from its inherent properties.
PROJECTILE_RICOCHET_PREVENT
+
+
+
+ This atom should prevent any kind of projectile ricochet from its inherent properties.
PROJECTILE_RICOCHET_YES
+
+
+
+ This atom should be ricocheted off of from its inherent properties using standard % chance handling.
+
+
+
diff --git a/code/__DEFINES/qdel.html b/code/__DEFINES/qdel.html
new file mode 100644
index 0000000000000..7134b663df0b7
--- /dev/null
+++ b/code/__DEFINES/qdel.html
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+ code/__DEFINES/qdel.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/qdel.dm
+
+
+
+Define Details
+QDEL_HINT_HARDDEL
+
+
+
+ Qdel should assume this object won't GC, and queue a hard delete using a hard reference.
QDEL_HINT_IWILLGC
+
+
+
+ Functionally the same as the above. qdel
should assume the object will gc on its own, and not check it.
QDEL_HINT_LETMELIVE
+
+
+
+ qdel
should let the object live after calling /atom/proc/Destroy .
QDEL_HINT_QUEUE
+
+
+
+ qdel
should queue the object for deletion.
QDEL_ITEM_ADMINS_WARNED
+
+
+
+ Set when admins are told about lag causing qdels in this type.
QDEL_ITEM_SUSPENDED_FOR_LAG
+
+
+
+ Set when a type can no longer be hard deleted on failure because of lag it causes while this happens.
+
+
+
diff --git a/code/__DEFINES/reagents.html b/code/__DEFINES/reagents.html
new file mode 100644
index 0000000000000..800b1603e30b1
--- /dev/null
+++ b/code/__DEFINES/reagents.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ code/__DEFINES/reagents.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/reagents.dm
+
+
+
+
+ REAGENT_VALUE_NONE Standard reagents value defines.
+Take a grain of salt, only "rare" reagents should have a decent value here, for balance reasons.
+TL;DR Think of it also like general market request price more than rarity.
Define Details
+REAGENT_VALUE_NONE
+
+
+
+ Standard reagents value defines.
+Take a grain of salt, only "rare" reagents should have a decent value here, for balance reasons.
+TL;DR Think of it also like general market request price more than rarity.
+
+
+
diff --git a/code/__DEFINES/research/anomalies.html b/code/__DEFINES/research/anomalies.html
new file mode 100644
index 0000000000000..e92fb09806c05
--- /dev/null
+++ b/code/__DEFINES/research/anomalies.html
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+ code/__DEFINES/research/anomalies.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/research/anomalies.dm
+
+
+
+Define Details
+ANOMALY_CORE_BLUESPACE
+
+
+
+ Bluespace cores
ANOMALY_CORE_FLUX
+
+
+
+ Flux
ANOMALY_CORE_GRAVITATIONAL
+
+
+
+ Gravitational cores
ANOMALY_CORE_PYRO
+
+
+
+ Pyro
ANOMALY_CORE_VORTEX
+
+
+
+ Vortex
SUPERMATTER_ANOMALY_DROP_CHANCE
+
+
+
+ chance supermatter anomalies drop real cores
+
+
+
diff --git a/code/__DEFINES/research/stock_parts.html b/code/__DEFINES/research/stock_parts.html
new file mode 100644
index 0000000000000..42d7ffcc9a1bf
--- /dev/null
+++ b/code/__DEFINES/research/stock_parts.html
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+ code/__DEFINES/research/stock_parts.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/research/stock_parts.dm
+
+
+
+
+ STANDARD_PART_LEVEL_LATHE_COEFFICIENT Efficiency scaling for stock part level to material usage. All code concerning lathing and production from raw material sheet should be using this.
+ STANDARD_PART_LEVEL_ORE_COEFFICIENT Efficiency scaling for stock part level to ore factor. All code concerning lathing and production from raw ores to raw material sheets should be using this.
Define Details
+STANDARD_PART_LEVEL_LATHE_COEFFICIENT
+
+
+
+
+ Efficiency scaling for stock part level to material usage. All code concerning lathing and production from raw material sheet should be using this.
STANDARD_PART_LEVEL_ORE_COEFFICIENT
+
+
+
+
+ Efficiency scaling for stock part level to ore factor. All code concerning lathing and production from raw ores to raw material sheets should be using this.
+
+
+
diff --git a/code/__DEFINES/robots.html b/code/__DEFINES/robots.html
new file mode 100644
index 0000000000000..a5489ce0fb89e
--- /dev/null
+++ b/code/__DEFINES/robots.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/__DEFINES/robots.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/robots.dm
+
+
+
+Define Details
+BORG_MODULE_ALL_DISABLED
+
+
+
+ Defines for whether or not module slots are broken.
+
+
+
diff --git a/code/__DEFINES/rust_g.html b/code/__DEFINES/rust_g.html
new file mode 100644
index 0000000000000..9cd1eff02baaa
--- /dev/null
+++ b/code/__DEFINES/rust_g.html
@@ -0,0 +1,259 @@
+
+
+
+
+
+
+ code/__DEFINES/rust_g.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/rust_g.dm
+
+
+
+
+ /proc/rustg_get_version
+ Gets the version of rust_g
+ rustg_setup_acreplace Sets up the Aho-Corasick automaton with its default options.
+ rustg_setup_acreplace_with_options Sets up the Aho-Corasick automaton using supplied options.
+ rustg_acreplace Run the specified replacement engine with the provided haystack text to replace, returning replaced text.
+ rustg_acreplace_with_replacements Run the specified replacement engine with the provided haystack text to replace, returning replaced text.
+ rustg_cnoise_generate This proc generates a cellular automata noise grid which can be used in procedural generation methods.
+ rustg_dbp_generate This proc generates a grid of perlin-like noise
+ rustg_dmi_icon_states input: must be a path, not an /icon; you have to do your own handling if it is one, as icon objects can't be directly passed to rustg.
+ rustg_git_revparse Returns the git hash of the given revision, ex. "HEAD".
+ rustg_git_commit_date Returns the date of the given revision in the format YYYY-MM-DD.
+Returns null if the revision is invalid.
+ rustg_encode_base64 Encode a given string into base64
+ rustg_decode_base64 Decode a given base64 string
+ rustg_register_nodes_astar Register a list of nodes into a rust library. This list of nodes must have been serialized in a json.
+Node {// Index of this node in the list of nodes
+unique_id: usize,
+// Position of the node in byond
+x: usize,
+y: usize,
+z: usize,
+// Indexes of nodes connected to this one
+connected_nodes_id: Vec}
+It is important that the node with the unique_id 0 is the first in the json, unique_id 1 right after that, etc.
+It is also important that all unique ids follow. {0, 1, 2, 4} is not a correct list and the registering will fail
+Nodes should not link across z levels.
+A node cannot link twice to the same node and shouldn't link itself either
+ rustg_add_node_astar Add a new node to the static list of nodes. Same rule as registering_nodes applies.
+This node unique_id must be equal to the current length of the static list of nodes
+ rustg_remove_node_astar Remove every link to the node with unique_id. Replace that node by null
+ rustg_generate_path_astar Compute the shortest path between start_node and goal_node using A*. Heuristic used is simple geometric distance
+ rustg_redis_connect_rq Connects to a given redis server.
+ /proc/rustg_redis_disconnect_rq
+ Disconnects from a previously connected redis server
+ rustg_redis_lpush https://redis.io/commands/lpush/
+ rustg_redis_lrange https://redis.io/commands/lrange/
+ rustg_redis_lpop https://redis.io/commands/lpop/
+ /proc/rustg_unix_timestamp
+ Returns the timestamp as a string
+ rustg_worley_generate This proc generates a noise grid using worley noise algorithm
Define Details
+rustg_acreplace
+
+
+
+
+ Run the specified replacement engine with the provided haystack text to replace, returning replaced text.
+Arguments:
+
+key - The key for the automaton
+text - Text to run replacements on
+ rustg_acreplace_with_replacements
+ (key, text, replacements)
+
+
+
+ Run the specified replacement engine with the provided haystack text to replace, returning replaced text.
+Arguments:
+
+key - The key for the automaton
+text - Text to run replacements on
+replacements - Replacements for this call. Must be the same length as the set-up patterns
+ rustg_add_node_astar
+
+
+
+
+ Add a new node to the static list of nodes. Same rule as registering_nodes applies.
+This node unique_id must be equal to the current length of the static list of nodes
rustg_cnoise_generate
+ (percentage, smoothing_iterations, birth_limit, death_limit, width, height)
+
+
+
+ This proc generates a cellular automata noise grid which can be used in procedural generation methods.
+Returns a single string that goes row by row, with values of 1 representing an alive cell, and a value of 0 representing a dead cell.
+Arguments:
+
+percentage: The chance of a turf starting closed
+smoothing_iterations: The amount of iterations the cellular automata simulates before returning the results
+birth_limit: If the number of neighboring cells is higher than this amount, a cell is born
+death_limit: If the number of neighboring cells is lower than this amount, a cell dies
+width: The width of the grid.
+height: The height of the grid.
+ rustg_dbp_generate
+ (seed, accuracy, stamp_size, world_size, lower_range, upper_range)
+
+
+
+ This proc generates a grid of perlin-like noise
+Returns a single string that goes row by row, with values of 1 representing an turned on cell, and a value of 0 representing a turned off cell.
+Arguments:
+
+seed: seed for the function
+accuracy: how close this is to the original perlin noise, as accuracy approaches infinity, the noise becomes more and more perlin-like
+stamp_size: Size of a singular stamp used by the algorithm, think of this as the same stuff as frequency in perlin noise
+world_size: size of the returned grid.
+lower_range: lower bound of values selected for. (inclusive)
+upper_range: upper bound of values selected for. (exclusive)
+ rustg_decode_base64
+
+
+
+
+ Decode a given base64 string
rustg_dmi_icon_states
+
+
+
+
+ input: must be a path, not an /icon; you have to do your own handling if it is one, as icon objects can't be directly passed to rustg.
+output: json_encode'd list. json_decode to get a flat list with icon states in the order they're in inside the .dmi
rustg_encode_base64
+
+
+
+
+ Encode a given string into base64
rustg_generate_path_astar
+ (start_node_id, goal_node_id)
+
+
+
+ Compute the shortest path between start_node and goal_node using A*. Heuristic used is simple geometric distance
rustg_git_commit_date
+
+
+
+
+ Returns the date of the given revision in the format YYYY-MM-DD.
+Returns null if the revision is invalid.
rustg_git_revparse
+
+
+
+
+ Returns the git hash of the given revision, ex. "HEAD".
rustg_redis_connect_rq
+
+
+
+
+ Connects to a given redis server.
+Arguments:
+
+addr - The address of the server, for example "redis://127.0.0.1/"
+ rustg_redis_lpop
+
+
+
+
+ https://redis.io/commands/lpop/
+Arguments
+
+key (string) - The key to use
+count (string|null) - The amount to pop off the list, pass null to omit (thus just 1)
+
+Note: count
was added in Redis version 6.2.0
rustg_redis_lpush
+
+
+
+
+ https://redis.io/commands/lpush/
+Arguments
+
+key (string) - The key to use
+elements (list) - The elements to push, use a list even if there's only one element.
+ rustg_redis_lrange
+
+
+
+
+ https://redis.io/commands/lrange/
+Arguments
+
+key (string) - The key to use
+start (string) - The zero-based index to start retrieving at
+stop (string) - The zero-based index to stop retrieving at (inclusive)
+ rustg_register_nodes_astar
+
+
+
+
+ Register a list of nodes into a rust library. This list of nodes must have been serialized in a json.
+Node {// Index of this node in the list of nodes
+unique_id: usize,
+// Position of the node in byond
+x: usize,
+y: usize,
+z: usize,
+// Indexes of nodes connected to this one
+connected_nodes_id: Vec}
+It is important that the node with the unique_id 0 is the first in the json, unique_id 1 right after that, etc.
+It is also important that all unique ids follow. {0, 1, 2, 4} is not a correct list and the registering will fail
+Nodes should not link across z levels.
+A node cannot link twice to the same node and shouldn't link itself either
rustg_remove_node_astar
+
+
+
+
+ Remove every link to the node with unique_id. Replace that node by null
rustg_setup_acreplace
+ (key, patterns, replacements)
+
+
+
+ Sets up the Aho-Corasick automaton with its default options.
+The search patterns list and the replacements must be of the same length when replace is run, but an empty replacements list is allowed if replacements are supplied with the replace call
+Arguments:
+
+key - The key for the automaton, to be used with subsequent rustg_acreplace/rustg_acreplace_with_replacements calls
+patterns - A non-associative list of strings to search for
+replacements - Default replacements for this automaton, used with rustg_acreplace
+ rustg_setup_acreplace_with_options
+ (key, options, patterns, replacements)
+
+
+
+ Sets up the Aho-Corasick automaton using supplied options.
+The search patterns list and the replacements must be of the same length when replace is run, but an empty replacements list is allowed if replacements are supplied with the replace call
+Arguments:
+
+key - The key for the automaton, to be used with subsequent rustg_acreplace/rustg_acreplace_with_replacements calls
+options - An associative list like list("anchored" = 0, "ascii_case_insensitive" = 0, "match_kind" = "Standard"). The values shown on the example are the defaults, and default values may be omitted. See the identically named methods at https://docs.rs/aho-corasick/latest/aho_corasick/struct.AhoCorasickBuilder.html to see what the options do.
+patterns - A non-associative list of strings to search for
+replacements - Default replacements for this automaton, used with rustg_acreplace
+ rustg_worley_generate
+ (region_size, threshold, node_per_region_chance, size, node_min, node_max)
+
+
+
+ This proc generates a noise grid using worley noise algorithm
+Returns a single string that goes row by row, with values of 1 representing an alive cell, and a value of 0 representing a dead cell.
+Arguments:
+
+region_size: The size of regions
+threshold: the value that determines wether a cell is dead or alive
+node_per_region_chance: chance of a node existiing in a region
+size: size of the returned grid
+node_min: minimum amount of nodes in a region (after the node_per_region_chance is applied)
+node_max: maximum amount of nodes in a region
+
+
+
+
diff --git a/code/__DEFINES/screentips.html b/code/__DEFINES/screentips.html
new file mode 100644
index 0000000000000..c7a04fac9d87a
--- /dev/null
+++ b/code/__DEFINES/screentips.html
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+ code/__DEFINES/screentips.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/screentips.dm
+
+
+
+Define Details
+INTENT_ANY
+
+
+
+ Regardless of intent
SCREENTIP_CONTEXT_ALT_LMB
+
+
+
+ Context applied to Alt-LMB actions
SCREENTIP_CONTEXT_ALT_RMB
+
+
+
+ Context applied to Alt-RMB actions
SCREENTIP_CONTEXT_CTRL_LMB
+
+
+
+ Context applied to Ctrl-LMB actions
SCREENTIP_CONTEXT_CTRL_RMB
+
+
+
+ Context applied to Ctrl-RMB actions
SCREENTIP_CONTEXT_CTRL_SHIFT_LMB
+
+
+
+ Context applied to Ctrl-Shift-LMB actions
SCREENTIP_CONTEXT_LMB
+
+
+
+ Context applied to LMB actions
SCREENTIP_CONTEXT_RMB
+
+
+
+ Context applied to RMB actions
SCREENTIP_CONTEXT_SHIFT_LMB
+
+
+
+ Context applied to Shift-LMB actions
SCREENTIP_PREFERENCE_CONTEXT_ONLY
+
+
+
+ Screentips are only enabled when they have context
SCREENTIP_PREFERENCE_DISABLED
+
+
+
+ Screentips are always disabled
SCREENTIP_PREFERENCE_ENABLED
+
+
+
+ Screentips are always enabled
SCREENTIP_PREFERENCE_NO_CONTEXT
+
+
+
+ Screentips enabled, no context
+
+
+
diff --git a/code/__DEFINES/skills/defines.html b/code/__DEFINES/skills/defines.html
new file mode 100644
index 0000000000000..57e3cc9b24ca8
--- /dev/null
+++ b/code/__DEFINES/skills/defines.html
@@ -0,0 +1,107 @@
+
+
+
+
+
+
+ code/__DEFINES/skills/defines.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/skills/defines.dm
+
+
+
+Define Details
+MODIFIER_SKILL_BODYBOUND
+
+
+
+ Makes it untransferred by mind.transfer_to()
MODIFIER_SKILL_HANDICAP
+
+
+
+ Does the opposite of the above. combining both effectively results in the skill being locked to the specified value.
MODIFIER_SKILL_MULT
+
+
+
+ makes the skill modifier a multiplier, not an addendum.
MODIFIER_SKILL_ORIGIN_DIFF
+
+
+
+ Adds the difference of the current value and the value stored at the time the modifier was added to the result.
MODIFIER_SKILL_PRIORITY_LOW
+
+
+
+ Ascending priority defines.
MODIFIER_SKILL_VALUE
+
+
+
+ Skill modifier defines and flags.
MODIFIER_SKILL_VIRTUE
+
+
+
+ Sets the skill to the defined value if lower than that. Highly reccomended you don't use it with MODIFIER_SKILL_MULT.
MODIFIER_USE_THRESHOLDS
+
+
+
+ Will this skill use competency thresholds instead of preset values
SKILL_PROGRESSION_BINARY
+
+
+
+ true/false
SKILL_PROGRESSION_ENUM
+
+
+
+ Enum
SKILL_PROGRESSION_LEVEL
+
+
+
+ Levels
SKILL_PROGRESSION_NUMERICAL
+
+
+
+ numerical
SKILL_UI_CAT_ENG
+
+
+
+ Categories of skills, these will be displayed alphabetically.
+ Items skill_traits and other defines
STD_XP_LVL_UP
+
+
+
+ Level/Experience skills defines.
THRESHOLD_UNTRAINED
+
+
+
+ competency_threshold defines
+
+
+
diff --git a/code/__DEFINES/skills/helpers.html b/code/__DEFINES/skills/helpers.html
new file mode 100644
index 0000000000000..ea54c11a27d6b
--- /dev/null
+++ b/code/__DEFINES/skills/helpers.html
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+ code/__DEFINES/skills/helpers.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/skills/helpers.dm
+
+
+
+Define Details
+ADD_SINGLETON_SKILL_MODIFIER
+
+
+
+
+ Macro used when adding generic singleton skill modifiers.
ADD_SKILL_MODIFIER_BODY
+ (path, id, body, prototype)
+
+
+
+ A simple universal comsig for body bound skill modifiers.
+Technically they are still bound to the mind, but other signal procs will take care of adding and removing the modifier
+from/to new/old minds.
GET_SKILL_MOD_ID
+
+
+
+
+ Simple generic identifier macro.
REMOVE_SKILL_MODIFIER_BODY
+
+
+
+
+ Same as above but to remove the skill modifier.
SANITIZE_SKILL_LEVEL
+
+
+
+
+ Doesn't automatically round the value.
+
+
+
diff --git a/code/__DEFINES/sound.html b/code/__DEFINES/sound.html
new file mode 100644
index 0000000000000..c1352da36ba78
--- /dev/null
+++ b/code/__DEFINES/sound.html
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+ code/__DEFINES/sound.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/sound.dm
+
+
+
+Define Details
+ANNOUNCER_AIMALF
+
+
+
+ Announcer audio keys
FALLOFF_SOUNDS
+
+
+
+ remove
+ default extra range for sounds considered to be quieter
+ The range deducted from sound range for things that are considered silent / sneaky
SOUND_DEFAULT_DISTANCE_MULTIPLIER
+
+
+
+ Default distance multiplier for sounds
SOUND_DEFAULT_FALLOFF_DISTANCE
+
+
+
+ Percentage of sound's range where no falloff is applied
SOUND_DEFAULT_MULTIPLIER_EFFECT_RANGE
+
+
+
+ Default range at which sound distance multiplier applies
SOUND_FALLOFF_EXPONENT
+
+
+
+ The default exponent of sound falloff
SOUND_RANGE
+
+
+
+ Default range of a sound.
+
+
+
diff --git a/code/__DEFINES/spaceman_dmm.html b/code/__DEFINES/spaceman_dmm.html
new file mode 100644
index 0000000000000..305488f38aee9
--- /dev/null
+++ b/code/__DEFINES/spaceman_dmm.html
@@ -0,0 +1,119 @@
+
+
+
+
+
+
+ code/__DEFINES/spaceman_dmm.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/spaceman_dmm.dm
+
+
+
+
+ RETURN_TYPE Sets a return type expression for a proc. The return type can take the forms:
+ SHOULD_CALL_PARENT If set, will enable a diagnostic on children of the proc it is set on which do
+not contain any ..()
parent calls. This can help with finding situations
+where a signal or other important handling in the parent proc is being skipped.
+Child procs may set this setting to 0
instead to override the check.
+ SHOULD_NOT_OVERRIDE If set, raise a warning for any child procs that override this one,
+regardless of if it calls parent or not.
+This functions in a similar way to the final
keyword in some languages.
+This cannot be disabled by child overrides.
+ SHOULD_NOT_SLEEP If set, raise a warning if the proc or one of the sub-procs it calls
+uses a blocking call, such as sleep()
or input()
without using set waitfor = 0
+This cannot be disabled by child overrides.
+ SHOULD_BE_PURE If set, ensure a proc is 'pure', such that it does not make any changes
+outside itself or output. This also checks to make sure anything using
+this proc doesn't invoke it without making use of the return value.
+This cannot be disabled by child overrides.
+ PRIVATE_PROC Private procs can only be called by things of exactly the same type.
+ PROTECTED_PROC Protected procs can only be call by things of the same type or subtypes .
+ UNLINT If set, will not lint.
+ VAR_FINAL If set, overriding their value isn't permitted by types that inherit it.
+ VAR_PRIVATE Private vars can only be called by things of exactly the same type.
+ VAR_PROTECTED Protected vars can only be called by things of the same type or subtypes .
Define Details
+PRIVATE_PROC
+
+
+
+
+ Private procs can only be called by things of exactly the same type.
PROTECTED_PROC
+
+
+
+
+ Protected procs can only be call by things of the same type or subtypes .
RETURN_TYPE
+
+
+
+
+ Sets a return type expression for a proc. The return type can take the forms:
+/typepath
- a raw typepath. The return type of the proc is the type named.
+param
- a typepath given as a parameter, for procs which return an instance of the passed-in type.
+param.type
- the static type of a passed-in parameter, for procs which
+return their input or otherwise another value of the same type.
+param[_].type
- the static type of a passed-in parameter, with one level
+of /list
stripped, for procs which select one item from a list. The [_]
+may be repeated to strip more levels of /list
.
SHOULD_BE_PURE
+
+
+
+
+ If set, ensure a proc is 'pure', such that it does not make any changes
+outside itself or output. This also checks to make sure anything using
+this proc doesn't invoke it without making use of the return value.
+This cannot be disabled by child overrides.
SHOULD_CALL_PARENT
+
+
+
+
+ If set, will enable a diagnostic on children of the proc it is set on which do
+not contain any ..()
parent calls. This can help with finding situations
+where a signal or other important handling in the parent proc is being skipped.
+Child procs may set this setting to 0
instead to override the check.
SHOULD_NOT_OVERRIDE
+
+
+
+
+ If set, raise a warning for any child procs that override this one,
+regardless of if it calls parent or not.
+This functions in a similar way to the final
keyword in some languages.
+This cannot be disabled by child overrides.
SHOULD_NOT_SLEEP
+
+
+
+
+ If set, raise a warning if the proc or one of the sub-procs it calls
+uses a blocking call, such as sleep()
or input()
without using set waitfor = 0
+This cannot be disabled by child overrides.
UNLINT
+
+
+
+
+ If set, will not lint.
VAR_FINAL
+
+
+
+ If set, overriding their value isn't permitted by types that inherit it.
VAR_PRIVATE
+
+
+
+ Private vars can only be called by things of exactly the same type.
VAR_PROTECTED
+
+
+
+ Protected vars can only be called by things of the same type or subtypes .
+
+
+
diff --git a/code/__DEFINES/station.html b/code/__DEFINES/station.html
new file mode 100644
index 0000000000000..258b422e8a65a
--- /dev/null
+++ b/code/__DEFINES/station.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/__DEFINES/station.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/station.dm
+
+
+
+Define Details
+FUTURE_STATION_TRAITS_FILE
+
+
+
+ The data file that future station traits are stored in
+
+
+
diff --git a/code/__DEFINES/status_effects.html b/code/__DEFINES/status_effects.html
new file mode 100644
index 0000000000000..a27582ca102c0
--- /dev/null
+++ b/code/__DEFINES/status_effects.html
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+ code/__DEFINES/status_effects.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/status_effects.dm
+
+
+
+Define Details
+IGNORE_STASIS
+
+
+
+ If the incapacitated status effect will ignore a mob in stasis (stasis beds)
STATUS_EFFECT_DAZED
+
+
+
+ The affected is unable to use or pickup items
STATUS_EFFECT_OFF_BALANCE
+
+
+
+ shoves inflict this to indicate the next shove while this is in effect should disarm guns
STATUS_EFFECT_STAGGERED
+
+
+
+ Blocks sprint
STATUS_EFFECT_STUN
+
+
+
+ The affected is unable to move, or to use, hold, or pickup items.
+
+
+
diff --git a/code/__DEFINES/storage/_storage.html b/code/__DEFINES/storage/_storage.html
new file mode 100644
index 0000000000000..6229f4a3a0dc2
--- /dev/null
+++ b/code/__DEFINES/storage/_storage.html
@@ -0,0 +1,107 @@
+
+
+
+
+
+
+ code/__DEFINES/storage/_storage.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/storage/_storage.dm
+
+
+
+
+ STORAGE_LIMIT_MAX_ITEMS Check max_items and contents.len when trying to insert
+ STORAGE_LIMIT_COMBINED_W_CLASS Check max_combined_w_class.
+ STORAGE_LIMIT_VOLUME Use the new volume system. Will automatically force rendering to use the new volume/baystation scaling UI so this is kind of incompatible with stuff like stack storage etc etc.
+ STORAGE_LIMIT_MAX_W_CLASS Use max_w_class
+ VOLUMETRIC_STORAGE_BOX_ICON_SIZE Size of volumetric box icon
+ VOLUMETRIC_STORAGE_BOX_BORDER_SIZE Size of EACH left/right border icon for volumetric boxes
+ MINIMUM_PIXELS_PER_ITEM Minimum pixels an item must have in volumetric scaled storage UI
+ MAXIMUM_VOLUMETRIC_ITEMS Maximum number of objects that will be allowed to be displayed using the volumetric display system. Arbitrary number to prevent server lockups.
+ VOLUMETRIC_STORAGE_ITEM_PADDING How much padding to give between items
+ VOLUMETRIC_STORAGE_EDGE_PADDING How much padding to give to edges
+ WEIGHT_CLASS_TINY Usually items smaller then a human hand, ex: Playing Cards, Lighter, Scalpel, Coins/Money
+ WEIGHT_CLASS_SMALL Pockets can hold small and tiny items, ex: Flashlight, Multitool, Grenades, GPS Device
+ WEIGHT_CLASS_NORMAL Standard backpacks can carry tiny, small & normal items, ex: Fire extinguisher, Stunbaton, Gas Mask, Metal Sheets
+ WEIGHT_CLASS_BULKY Items that can be weilded or equipped but not stored in a normal bag, ex: Defibrillator, Backpack, Space Suits
+ WEIGHT_CLASS_HUGE Usually represents objects that require two hands to operate, ex: Shotgun, Two Handed Melee Weapons - Can not fit in Boh
+ WEIGHT_CLASS_GIGANTIC Essentially means it cannot be picked up or placed in an inventory, ex: Mech Parts, Safe - Can not fit in Boh
Define Details
+MAXIMUM_VOLUMETRIC_ITEMS
+
+
+
+ Maximum number of objects that will be allowed to be displayed using the volumetric display system. Arbitrary number to prevent server lockups.
MINIMUM_PIXELS_PER_ITEM
+
+
+
+ Minimum pixels an item must have in volumetric scaled storage UI
STORAGE_LIMIT_COMBINED_W_CLASS
+
+
+
+ Check max_combined_w_class.
STORAGE_LIMIT_MAX_ITEMS
+
+
+
+ Check max_items and contents.len when trying to insert
STORAGE_LIMIT_MAX_W_CLASS
+
+
+
+ Use max_w_class
STORAGE_LIMIT_VOLUME
+
+
+
+ Use the new volume system. Will automatically force rendering to use the new volume/baystation scaling UI so this is kind of incompatible with stuff like stack storage etc etc.
VOLUMETRIC_STORAGE_BOX_BORDER_SIZE
+
+
+
+ Size of EACH left/right border icon for volumetric boxes
VOLUMETRIC_STORAGE_BOX_ICON_SIZE
+
+
+
+ Size of volumetric box icon
VOLUMETRIC_STORAGE_EDGE_PADDING
+
+
+
+ How much padding to give to edges
VOLUMETRIC_STORAGE_ITEM_PADDING
+
+
+
+ How much padding to give between items
WEIGHT_CLASS_BULKY
+
+
+
+ Items that can be weilded or equipped but not stored in a normal bag, ex: Defibrillator, Backpack, Space Suits
WEIGHT_CLASS_GIGANTIC
+
+
+
+ Essentially means it cannot be picked up or placed in an inventory, ex: Mech Parts, Safe - Can not fit in Boh
WEIGHT_CLASS_HUGE
+
+
+
+ Usually represents objects that require two hands to operate, ex: Shotgun, Two Handed Melee Weapons - Can not fit in Boh
WEIGHT_CLASS_NORMAL
+
+
+
+ Standard backpacks can carry tiny, small & normal items, ex: Fire extinguisher, Stunbaton, Gas Mask, Metal Sheets
WEIGHT_CLASS_SMALL
+
+
+
+ Pockets can hold small and tiny items, ex: Flashlight, Multitool, Grenades, GPS Device
WEIGHT_CLASS_TINY
+
+
+
+ Usually items smaller then a human hand, ex: Playing Cards, Lighter, Scalpel, Coins/Money
+
+
+
diff --git a/code/__DEFINES/storage/volumetrics.html b/code/__DEFINES/storage/volumetrics.html
new file mode 100644
index 0000000000000..c6bc125b5dfba
--- /dev/null
+++ b/code/__DEFINES/storage/volumetrics.html
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+ code/__DEFINES/storage/volumetrics.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/storage/volumetrics.dm
+
+
+
+Define Details
+AUTO_SCALE_STORAGE_VOLUME
+ (w_class, max_combined_w_class)
+
+
+
+ Macro for automatically getting the volume of a storage item from its max_w_class and max_combined_w_class.
AUTO_SCALE_VOLUME
+
+
+
+
+ Macro for automatically getting the volume of an item from its w_class.
ITEM_VOLUME_DISK
+
+
+
+ volume for a data disk
ITEM_VOLUME_STRIPPER_CLIP
+
+
+
+ volume for a shotgun stripper clip holding 4 shells
+
+
+
diff --git a/code/__DEFINES/strippable.html b/code/__DEFINES/strippable.html
new file mode 100644
index 0000000000000..0103e1ad48fec
--- /dev/null
+++ b/code/__DEFINES/strippable.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+ code/__DEFINES/strippable.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/strippable.dm
+
+
+
+Define Details
+STRIPPABLE_OBSCURING_COMPLETELY
+
+
+
+ This slot is completely obscured, and cannot be accessed.
STRIPPABLE_OBSCURING_HIDDEN
+
+
+
+ This slot can't be seen, but can be accessed.
STRIPPABLE_OBSCURING_NONE
+
+
+
+ This slot is not obscured.
+
+
+
diff --git a/code/__DEFINES/subsystems.html b/code/__DEFINES/subsystems.html
new file mode 100644
index 0000000000000..a885157f6ff9c
--- /dev/null
+++ b/code/__DEFINES/subsystems.html
@@ -0,0 +1,158 @@
+
+
+
+
+
+
+ code/__DEFINES/subsystems.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/subsystems.dm
+
+
+
+Define Details
+DB_MAJOR_VERSION
+
+
+
+ DB major schema version
+Update this whenever the db schema changes
+make sure you add an update to the schema_version stable in the db changelog
DB_MINOR_VERSION
+
+
+
+ DB minor schema version
+Update this whenever the db schema changes
+make sure you add an update to the schema_version stable in the db changelog
INITIALIZATION_INNEW_MAPLOAD
+
+
+
+ New should call Initialize(TRUE)
INITIALIZATION_INNEW_REGULAR
+
+
+
+ New should call Initialize(FALSE)
INITIALIZATION_INSSATOMS
+
+
+
+ New should not call Initialize
INITIALIZE_HINT_LATELOAD
+
+
+
+ call LateInitialize at the end of all atom Initalization
+The item will be added to the late_loaders list, this is iterated over after
+initalization of subsystems is complete and calls LateInitalize on the atom
+see this file for the LateIntialize proc
INITIALIZE_HINT_NORMAL
+
+
+
+ Nothing happens
INITIALIZE_HINT_QDEL
+
+
+
+ Call qdel on the atom after intialization
+ type and all subtypes should always immediately call Initialize in New()
TIMER_CLIENT_TIME
+
+
+
+ Timing should be based on how timing progresses on clients, not the server.
+Tracking this is more expensive,
+should only be used in conjuction with things that have to progress client side, such as
+animate() or sound()
TIMER_DELETE_ME
+
+
+
+ Delete the timer on parent datum Destroy() and when deltimer'd
TIMER_ID_NULL
+
+
+
+ Empty ID define
TIMER_LOOP
+
+
+
+ Loops the timer repeatedly until qdeleted
+In most cases you want a subsystem instead, so don't use this unless you have a good reason
TIMER_NO_HASH_WAIT
+
+
+
+ prevents distinguishing identical timers with the wait variable
+To be used with TIMER_UNIQUE
TIMER_OVERRIDE
+
+
+
+ For unique timers: Replace the old timer rather then not start this one
TIMER_STOPPABLE
+
+
+
+ Timer can be stopped using deltimer()
TIMER_UNIQUE
+
+
+
+ Don't run if there is an identical unique timer active
+if the arguments to addtimer are the same as an existing timer, it doesn't create a new timer,
+and returns the id of the existing timer
addtimer
+
+
+
+
+ Create a new timer and add it to the queue.
+
+Arguments:
+
+
+callback the callback to call on timer finish
+
+
+
+
+wait deciseconds to run the timer for
+
+
+
+
+flags flags for this timer, see: code__DEFINES\subsystems.dm
+
+
+
+
+
+
diff --git a/code/__DEFINES/text.html b/code/__DEFINES/text.html
new file mode 100644
index 0000000000000..e887d4531d9fd
--- /dev/null
+++ b/code/__DEFINES/text.html
@@ -0,0 +1,91 @@
+
+
+
+
+
+
+ code/__DEFINES/text.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/text.dm
+
+
+
+
+ FOURSPACES Does 4 spaces. Used as a makeshift tabulator.
+ MAPTEXT Standard maptext
+Prepares a text to be used for maptext. Use this so it doesn't look hideous.
+ MAPTEXT_PIXELLARI Pixel-perfect scaled fonts for use in the MAP element as defined in skin.dmf
+ MAPTEXT_GRAND9K Standard size (ie: normal runechat) - Size options: 6pt 12pt 18pt.
+ MAPTEXT_TINY_UNICODE Small size. (ie: context subtooltips, spell delays) - Size options: 12pt 24pt.
+ MAPTEXT_SPESSFONT Smallest size. (ie: whisper runechat) - Size options: 6pt 12pt 18pt.
+ MAPTEXT_VCR_OSD_MONO Prepares a text to be used for maptext, using a variable size font.
+ WXH_TO_HEIGHT Macro from Lummox used to get height from a MeasureText proc.
+resolves the MeasureText() return value once, then resolves the height, then sets return_var to that.
Define Details
+FOURSPACES
+
+
+
+ Does 4 spaces. Used as a makeshift tabulator.
MAPTEXT
+
+
+
+
+ Standard maptext
+Prepares a text to be used for maptext. Use this so it doesn't look hideous.
MAPTEXT_GRAND9K
+
+
+
+
+ Standard size (ie: normal runechat) - Size options: 6pt 12pt 18pt.
MAPTEXT_PIXELLARI
+
+
+
+
+ Pixel-perfect scaled fonts for use in the MAP element as defined in skin.dmf
+Four sizes to choose from, use the sizes as mentioned below.
+Between the variations and a step there should be an option that fits your use case.
+BYOND uses pt sizing, different than px used in TGUI. Using px will make it look blurry due to poor antialiasing.
+Default sizes are prefilled in the macro for ease of use and a consistent visual look.
+To use a step other than the default in the macro, specify it in a span style.
+For example: MAPTEXT_PIXELLARI("Some large maptext here ")
+Large size (ie: context tooltips) - Size options: 12pt 24pt.
MAPTEXT_SPESSFONT
+
+
+
+
+ Smallest size. (ie: whisper runechat) - Size options: 6pt 12pt 18pt.
MAPTEXT_TINY_UNICODE
+
+
+
+
+ Small size. (ie: context subtooltips, spell delays) - Size options: 12pt 24pt.
MAPTEXT_VCR_OSD_MONO
+
+
+
+
+ Prepares a text to be used for maptext, using a variable size font.
+More flexible but doesn't scale pixel perfect to BYOND icon resolutions.
+(May be blurry.) Can use any size in pt or px.
+You MUST Specify the size when using the macro
+For example: MAPTEXT_VCR_OSD_MONO("Some large maptext here ")
+Prepares a text to be used for maptext, using a variable size font.
+Variable size font. More flexible but doesn't scale pixel perfect to BYOND icon resolutions. (May be blurry.) Can use any size in pt or px.
WXH_TO_HEIGHT
+ (measurement, return_var)
+
+
+
+ Macro from Lummox used to get height from a MeasureText proc.
+resolves the MeasureText() return value once, then resolves the height, then sets return_var to that.
+
+
+
diff --git a/code/__DEFINES/tgs.html b/code/__DEFINES/tgs.html
new file mode 100644
index 0000000000000..3856f137afe5f
--- /dev/null
+++ b/code/__DEFINES/tgs.html
@@ -0,0 +1,235 @@
+
+
+
+
+
+
+ code/__DEFINES/tgs.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/tgs.dm
+
+
+
+
+ TGS_FILE2TEXT_NATIVE Create this define if you want to do TGS configuration outside of this file.
+ TGS_EVENT_REBOOT_MODE_CHANGE Before a reboot mode change, extras parameters are the current and new reboot mode enums.
+ TGS_EVENT_PORT_SWAP Before a port change is about to happen, extra parameters is new port.
+ TGS_EVENT_INSTANCE_RENAMED Before the instance is renamed, extra parameter is the new name.
+ TGS_EVENT_WATCHDOG_REATTACH After the watchdog reattaches to DD, extra parameter is the new /datum/tgs_version of the server.
+ TGS_EVENT_HEALTH_CHECK When the watchdog sends a health check to DD. No parameters.
+ TGS_EVENT_REPO_RESET_ORIGIN When the repository is reset to its origin reference. Parameters: Reference name, Commit SHA.
+ TGS_EVENT_REPO_CHECKOUT When the repository performs a checkout. Parameters: Checkout git object.
+ TGS_EVENT_REPO_FETCH When the repository performs a fetch operation. No parameters.
+ TGS_EVENT_REPO_MERGE_PULL_REQUEST When the repository test merges. Parameters: PR Number, PR Sha, (Nullable) Comment made by TGS user.
+ TGS_EVENT_REPO_PRE_SYNCHRONIZE Before the repository makes a sychronize operation. Parameters: Absolute repostiory path.
+ TGS_EVENT_ENGINE_INSTALL_START Before a engine install operation begins. Parameters: Version string of the installing engine.
+ TGS_EVENT_ENGINE_INSTALL_FAIL When a engine install operation fails. Parameters: Error message
+ TGS_EVENT_ENGINE_ACTIVE_VERSION_CHANGE When the active engine version changes. Parameters: (Nullable) Version string of the current engine, version string of the new engine.
+ TGS_EVENT_COMPILE_START When the compiler starts running. Parameters: Game directory path, origin commit SHA.
+ TGS_EVENT_COMPILE_CANCELLED When a compile is cancelled. No parameters.
+ TGS_EVENT_COMPILE_FAILURE When a compile fails. Parameters: Game directory path, [TRUE]/[FALSE] based on if the cause for failure was DMAPI validation.
+ TGS_EVENT_COMPILE_COMPLETE When a compile operation completes. Note, this event fires before the new .dmb is loaded into the watchdog. Consider using the TGS_EVENT_DEPLOYMENT_COMPLETE instead. Parameters: Game directory path.
+ TGS_EVENT_INSTANCE_AUTO_UPDATE_START When an automatic update for the current instance begins. No parameters.
+ TGS_EVENT_REPO_MERGE_CONFLICT When the repository encounters a merge conflict: Parameters: Base SHA, target SHA, base reference, target reference.
+ TGS_EVENT_DEPLOYMENT_COMPLETE When a deployment completes. No Parameters.
+ TGS_EVENT_WATCHDOG_SHUTDOWN Before the watchdog shuts down. Not sent for graceful shutdowns. No parameters.
+ TGS_EVENT_WATCHDOG_DETACH Before the watchdog detaches for a TGS update/restart. No parameters.
+ TGS_EVENT_WORLD_PRIME Watchdog event when TgsInitializationComplete() is called. No parameters.
+ TGS_EVENT_REPO_SUBMODULE_UPDATE After a single submodule update is performed. Parameters: Updated submodule name.
+ TGS_EVENT_PRE_DREAM_MAKER After CodeModifications are applied, before DreamMaker is run. Parameters: Game directory path, origin commit sha, version string of the used engine.
+ TGS_EVENT_DEPLOYMENT_CLEANUP Whenever a deployment folder is deleted from disk. Parameters: Game directory path.
+ TGS_REBOOT_MODE_NORMAL The server will reboot normally.
+ TGS_REBOOT_MODE_SHUTDOWN The server will stop running on reboot.
+ TGS_REBOOT_MODE_RESTART The watchdog will restart on reboot.
+ TGS_SECURITY_TRUSTED DreamDaemon Trusted security level.
+ TGS_SECURITY_SAFE DreamDaemon Safe security level.
+ TGS_SECURITY_ULTRASAFE DreamDaemon Ultrasafe security level.
+ TGS_VISIBILITY_PUBLIC DreamDaemon public visibility level.
+ TGS_VISIBILITY_PRIVATE DreamDaemon private visibility level.
+ TGS_VISIBILITY_INVISIBLE DreamDaemon invisible visibility level.
+ TGS_ENGINE_TYPE_BYOND The Build Your Own Net Dream engine.
+ TGS_ENGINE_TYPE_OPENDREAM The OpenDream engine.
+ TGS_TOPIC Put this at the start of [/world/proc/Topic].
+ /datum/tgs_revision_information Represents git revision information.
+ /datum/tgs_version Represents a version.
+ /datum/tgs_revision_information/test_merge Represents a merge of a GitHub pull request.
+ /datum/tgs_chat_channel Represents a connected chat channel.
+ /datum/tgs_event_handler User definable handler for TGS events.
+ /datum/tgs_chat_command User definable chat command.
+ /datum/tgs_message_content User definable chat message.
+ /datum/tgs_chat_embed/structure User definable chat embed. Currently mirrors Discord chat embeds. See https://discord.com/developers/docs/resources/channel#embed-object-embed-structure for details.
+ /datum/tgs_chat_embed/media Common datum for similar discord embed medias.
+ /datum/tgs_chat_embed/footer See https://discord.com/developers/docs/resources/channel#embed-object-embed-footer-structure for details.
+ /datum /tgs_chat_embed/provider See https://discord.com/developers/docs/resources/channel#embed-object-embed-provider-structure for details.
+ /datum /tgs_chat_embed/provider/author See https://discord.com/developers/docs/resources/channel#embed-object-embed-author-structure for details. Must have name set in New().
+ /datum /tgs_chat_embed/field See https://discord.com/developers/docs/resources/channel#embed-object-embed-field-structure for details. Must have name and value set in New().
Define Details
+TGS_ENGINE_TYPE_BYOND
+
+
+
+ The Build Your Own Net Dream engine.
TGS_ENGINE_TYPE_OPENDREAM
+
+
+
+ The OpenDream engine.
TGS_EVENT_COMPILE_CANCELLED
+
+
+
+ When a compile is cancelled. No parameters.
TGS_EVENT_COMPILE_COMPLETE
+
+
+
+ When a compile operation completes. Note, this event fires before the new .dmb is loaded into the watchdog. Consider using the TGS_EVENT_DEPLOYMENT_COMPLETE instead. Parameters: Game directory path.
TGS_EVENT_COMPILE_FAILURE
+
+
+
+ When a compile fails. Parameters: Game directory path, [TRUE]/[FALSE] based on if the cause for failure was DMAPI validation.
TGS_EVENT_COMPILE_START
+
+
+
+ When the compiler starts running. Parameters: Game directory path, origin commit SHA.
TGS_EVENT_DEPLOYMENT_CLEANUP
+
+
+
+ Whenever a deployment folder is deleted from disk. Parameters: Game directory path.
TGS_EVENT_DEPLOYMENT_COMPLETE
+
+
+
+ When a deployment completes. No Parameters.
TGS_EVENT_ENGINE_ACTIVE_VERSION_CHANGE
+
+
+
+ When the active engine version changes. Parameters: (Nullable) Version string of the current engine, version string of the new engine.
TGS_EVENT_ENGINE_INSTALL_FAIL
+
+
+
+ When a engine install operation fails. Parameters: Error message
TGS_EVENT_ENGINE_INSTALL_START
+
+
+
+ Before a engine install operation begins. Parameters: Version string of the installing engine.
TGS_EVENT_HEALTH_CHECK
+
+
+
+ When the watchdog sends a health check to DD. No parameters.
TGS_EVENT_INSTANCE_AUTO_UPDATE_START
+
+
+
+ When an automatic update for the current instance begins. No parameters.
TGS_EVENT_INSTANCE_RENAMED
+
+
+
+ Before the instance is renamed, extra parameter is the new name.
TGS_EVENT_PORT_SWAP
+
+
+
+ Before a port change is about to happen, extra parameters is new port.
TGS_EVENT_PRE_DREAM_MAKER
+
+
+
+ After CodeModifications are applied, before DreamMaker is run. Parameters: Game directory path, origin commit sha, version string of the used engine.
TGS_EVENT_REBOOT_MODE_CHANGE
+
+
+
+ Before a reboot mode change, extras parameters are the current and new reboot mode enums.
TGS_EVENT_REPO_CHECKOUT
+
+
+
+ When the repository performs a checkout. Parameters: Checkout git object.
TGS_EVENT_REPO_FETCH
+
+
+
+ When the repository performs a fetch operation. No parameters.
TGS_EVENT_REPO_MERGE_CONFLICT
+
+
+
+ When the repository encounters a merge conflict: Parameters: Base SHA, target SHA, base reference, target reference.
TGS_EVENT_REPO_MERGE_PULL_REQUEST
+
+
+
+ When the repository test merges. Parameters: PR Number, PR Sha, (Nullable) Comment made by TGS user.
TGS_EVENT_REPO_PRE_SYNCHRONIZE
+
+
+
+ Before the repository makes a sychronize operation. Parameters: Absolute repostiory path.
TGS_EVENT_REPO_RESET_ORIGIN
+
+
+
+ When the repository is reset to its origin reference. Parameters: Reference name, Commit SHA.
TGS_EVENT_REPO_SUBMODULE_UPDATE
+
+
+
+ After a single submodule update is performed. Parameters: Updated submodule name.
TGS_EVENT_WATCHDOG_DETACH
+
+
+
+ Before the watchdog detaches for a TGS update/restart. No parameters.
TGS_EVENT_WATCHDOG_REATTACH
+
+
+
+ After the watchdog reattaches to DD, extra parameter is the new /datum/tgs_version of the server.
TGS_EVENT_WATCHDOG_SHUTDOWN
+
+
+
+ Before the watchdog shuts down. Not sent for graceful shutdowns. No parameters.
TGS_EVENT_WORLD_PRIME
+
+
+
+ Watchdog event when TgsInitializationComplete() is called. No parameters.
TGS_FILE2TEXT_NATIVE
+
+
+
+ Create this define if you want to do TGS configuration outside of this file.
TGS_REBOOT_MODE_NORMAL
+
+
+
+ The server will reboot normally.
TGS_REBOOT_MODE_RESTART
+
+
+
+ The watchdog will restart on reboot.
TGS_REBOOT_MODE_SHUTDOWN
+
+
+
+ The server will stop running on reboot.
TGS_SECURITY_SAFE
+
+
+
+ DreamDaemon Safe security level.
TGS_SECURITY_TRUSTED
+
+
+
+ DreamDaemon Trusted security level.
TGS_SECURITY_ULTRASAFE
+
+
+
+ DreamDaemon Ultrasafe security level.
TGS_TOPIC
+
+
+
+ Put this at the start of [/world/proc/Topic].
TGS_VISIBILITY_INVISIBLE
+
+
+
+ DreamDaemon invisible visibility level.
TGS_VISIBILITY_PRIVATE
+
+
+
+ DreamDaemon private visibility level.
TGS_VISIBILITY_PUBLIC
+
+
+
+ DreamDaemon public visibility level.
+
+
+
diff --git a/code/__DEFINES/tgui.html b/code/__DEFINES/tgui.html
new file mode 100644
index 0000000000000..e7e266f8f4493
--- /dev/null
+++ b/code/__DEFINES/tgui.html
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+ code/__DEFINES/tgui.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/tgui.dm
+
+
+
+Define Details
+TGUI_CREATE_MESSAGE
+
+
+
+
+ Creates a message packet for sending via output()
TGUI_PING_TIMEOUT
+
+
+
+ Maximum ping timeout allowed to detect zombie windows
TGUI_REFRESH_FULL_UPDATE_COOLDOWN
+
+
+
+ Used for rate-limiting to prevent DoS by excessively refreshing a TGUI window
TGUI_WINDOW_CLOSED
+
+
+
+ Window does not exist
TGUI_WINDOW_HARD_LIMIT
+
+
+
+ Maximum number of open windows
TGUI_WINDOW_ID
+
+
+
+
+ Get a window id based on the provided pool index
TGUI_WINDOW_INDEX
+
+
+
+
+ Get a pool index of the provided window id
TGUI_WINDOW_LOADING
+
+
+
+ Window was just opened, but is still not ready to be sent data
TGUI_WINDOW_READY
+
+
+
+ Window is free and ready to receive data
TGUI_WINDOW_SOFT_LIMIT
+
+
+
+ Maximum number of windows that can be suspended/reused
UI_CLOSE
+
+
+
+ UI Should close
UI_DISABLED
+
+
+
+ Red eye; disabled, does not update
UI_INTERACTIVE
+
+
+
+ Green eye; fully interactive
UI_UPDATE
+
+
+
+ Orange eye; updates but is not interactive
+
+
+
diff --git a/code/__DEFINES/traits.html b/code/__DEFINES/traits.html
new file mode 100644
index 0000000000000..16bd9971fc8cd
--- /dev/null
+++ b/code/__DEFINES/traits.html
@@ -0,0 +1,179 @@
+
+
+
+
+
+
+ code/__DEFINES/traits.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/traits.dm
+
+
+
+Define Details
+ACTIVE_BLOCK_TRAIT
+
+
+
+ This trait is added by the active directional block system.
ACTIVE_PARRY_TRAIT
+
+
+
+ This trait is added by the parry system.
LIPSTICK_TRAIT
+
+
+
+ Trait granted by lipstick
MAFIA_TRAIT
+
+
+
+ Trait associated with mafia
MAPPING_HELPER_TRAIT
+
+
+
+ obtained from mapping helper
MOD_TRAIT
+
+
+
+ Trait applied by MODsuits.
STATION_TRAIT_BANANIUM_SHIPMENTS
+
+
+
+ Traits given by station traits
TRAIT_ANTIMAGIC_NO_SELFBLOCK
+
+
+
+ Like antimagic, but doesn't block the user from casting
TRAIT_BEING_CARRIED
+
+
+
+ Used for fireman carry to have mobe not be dropped when passing by a prone individual.
TRAIT_COMBAT_MODE_LOCKED
+
+
+
+ COMBAT MODE/SPRINT MODE TRAITS
+Prevents combat mode from being active.
TRAIT_HANDS_BLOCKED
+
+
+
+ Prevents usage of manipulation appendages (picking, holding or using items, manipulating storage).
TRAIT_HUMAN_NO_RENDER
+
+
+
+ forces us to not render our overlays
TRAIT_IMMOBILIZED
+
+
+
+ Prevents voluntary movement.
TRAIT_KEEP_TOGETHER
+
+
+
+ Used for managing KEEP_TOGETHER in [appearance_flags]
TRAIT_KISS_OF_DEATH
+
+
+
+ Blowing kisses that actually do damage to the victim
TRAIT_LAVA_IMMUNE
+
+
+
+ Weather immunities, also protect mobs inside them.
TRAIT_LIVING_NO_DENSITY
+
+
+
+ forces update_density to make us not dense
TRAIT_MESON_VISION
+
+
+
+ Gives us turf vision through walls and slight night vision
TRAIT_MOBILITY_NOMOVE
+
+
+
+ Disallow movement
TRAIT_MOBILITY_NOPICKUP
+
+
+
+ Disallow pickup
TRAIT_MOBILITY_NOREST
+
+
+
+ Disallow resting/unresting
TRAIT_MOBILITY_NOUSE
+
+
+
+ Disallow item use
TRAIT_NO_STAMINA_BUFFER_REGENERATION
+
+
+
+ Prevents stamina buffer regeneration
TRAIT_NO_STAMINA_REGENERATION
+
+
+
+ Prevents stamina regeneration
TRAIT_REAGENT_SCANNER
+
+
+
+ Lets us scan reagents
TRAIT_SPRINT_LOCKED
+
+
+
+ Prevents sprinting from being active.
TRAIT_THERMAL_VISION
+
+
+
+ Gives us mob vision through walls and slight night vision
TRAIT_TRUE_NIGHT_VISION
+
+
+
+ Gives us Night vision
TRAIT_XRAY_VISION
+
+
+
+ Gives us turf, mob and object vision through walls
TURF_Z_TRANSPARENT_TRAIT
+
+
+
+ Turf trait for when a turf is transparent
+
+
+
diff --git a/code/__DEFINES/traits/sources.html b/code/__DEFINES/traits/sources.html
new file mode 100644
index 0000000000000..392129745197c
--- /dev/null
+++ b/code/__DEFINES/traits/sources.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/__DEFINES/traits/sources.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/traits/sources.dm
+
+
+
+Define Details
+ITEM_SCALING_TRAIT
+
+
+
+ From the item_scaling element
+
+
+
diff --git a/code/__DEFINES/uplink.html b/code/__DEFINES/uplink.html
new file mode 100644
index 0000000000000..02e432fd91d59
--- /dev/null
+++ b/code/__DEFINES/uplink.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+ code/__DEFINES/uplink.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/uplink.dm
+
+
+
+Define Details
+UPLINK_CLOWN_OPS
+
+
+
+ This item is purchasable to clown ops
UPLINK_NUKE_OPS
+
+
+
+ This item is purchasable to nuke ops
UPLINK_TRAITORS
+
+
+
+ This item is purchasable to traitors
+
+
+
diff --git a/code/__DEFINES/vehicles.html b/code/__DEFINES/vehicles.html
new file mode 100644
index 0000000000000..1714fb68b47cc
--- /dev/null
+++ b/code/__DEFINES/vehicles.html
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+ code/__DEFINES/vehicles.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/vehicles.dm
+
+
+
+Define Details
+CAN_KIDNAP
+
+
+
+ Will this car kidnap people by ramming into them?
FULL_MECHA_CONTROL
+
+
+
+ ez define for giving a single pilot mech all the flags it needs.
VEHICLE_CONTROL_DRIVE
+
+
+
+ controls the vehicles movement
VEHICLE_CONTROL_EQUIPMENT
+
+
+
+ using equipment/weapons on the vehicle
VEHICLE_CONTROL_KIDNAPPED
+
+
+
+ Can't leave vehicle voluntarily, has to resist.
VEHICLE_CONTROL_MELEE
+
+
+
+ melee attacks/shoves a vehicle may have
VEHICLE_CONTROL_SETTINGS
+
+
+
+ changing around settings and the like.
+
+
+
diff --git a/code/__DEFINES/voreconstants.html b/code/__DEFINES/voreconstants.html
new file mode 100644
index 0000000000000..b8e3b9d1c3660
--- /dev/null
+++ b/code/__DEFINES/voreconstants.html
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+ code/__DEFINES/voreconstants.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/voreconstants.dm
+
+
+
+Define Details
+ABSORBABLE
+
+
+
+ Can get absorbed?
MAX_VORE_FLAG
+
+
+
+ Change this whenever you add a vore flag, must be largest vore flag*2-1
MOBVORE
+
+
+
+ Can get simplemob vored?
SMELLABLE
+
+
+
+ Can be smelled?
+
+
+
diff --git a/code/__DEFINES/wounds.html b/code/__DEFINES/wounds.html
new file mode 100644
index 0000000000000..80d9dc462f19f
--- /dev/null
+++ b/code/__DEFINES/wounds.html
@@ -0,0 +1,192 @@
+
+
+
+
+
+
+ code/__DEFINES/wounds.dm - SPLURT Station 13
+
+
+
+
+code/__DEFINES/wounds.dm
+
+
+
+
+ WOUND_MINIMUM_DAMAGE an attack must do this much damage after armor in order to roll for being a wound (incremental pressure damage need not apply)
+ DISMEMBER_MINIMUM_DAMAGE an attack must do this much damage after armor in order to be eliigible to dismember a suitably mushed bodypart
+ WOUND_MAX_CONSIDERED_DAMAGE any damage dealt over this is ignored for damage rolls unless the target has the frail quirk (35^1.4=145)
+ WOUND_BLUNT any brute weapon/attack that doesn't have sharpness. rolls for blunt bone wounds
+ WOUND_SLASH any brute weapon/attack with sharpness = SHARP_EDGED. rolls for slash wounds
+ WOUND_PIERCE any brute weapon/attack with sharpness = SHARP_POINTY. rolls for piercing wounds
+ WOUND_BURN any concentrated burn attack (lasers really). rolls for burning wounds
+ WOUND_DETERMINATION_MAX the max amount of determination you can have
+ CANT_WOUND set wound_bonus on an item or attack to this to disable checking wounding for the attack
+ WOUND_INFECTION_MODERATE below this has no ill effects from infection
+ WOUND_INFECTION_SEVERE then below here, you ooze some pus and suffer minor tox damage, but nothing serious
+ WOUND_INFECTION_CRITICAL then below here, your limb occasionally locks up from damage and infection and briefly becomes disabled. Things are getting really bad
+ WOUND_INFECTION_SEPTIC below here, your skin is almost entirely falling off and your limb locks up more frequently. You are within a stone's throw of septic paralysis and losing the limb
+ WOUND_BURN_SANITIZATION_RATE how quickly sanitization removes infestation and decays per tick
+ WOUND_SLASH_MAX_BLOODFLOW how much blood you can lose per tick per slash max. 8 is a LOT of blood for one cut so don't worry about hitting it easily
+ WOUND_SLASH_DEAD_CLOT_MIN dead people don't bleed, but they can clot! this is the minimum amount of clotting per tick on dead people, so even critical cuts will slowly clot in dead people
+ WOUND_BONE_HEAD_TIME_VARIANCE if we suffer a bone wound to the head that creates brain traumas, the timer for the trauma cycle is +/- by this percent (0-100)
+ SCAR_SAVE_VERS The version number of the scar we're saving
+ SCAR_SAVE_ZONE The body_zone we're applying to on granting
+ SCAR_SAVE_DESC The description we're loading
+ SCAR_SAVE_PRECISE_LOCATION The precise location we're loading
+ SCAR_SAVE_SEVERITY The severity the scar had
+ SCAR_SAVE_LENGTH how many fields there are above (NOT INCLUDING THIS OBVIOUSLY)
+ SCAR_CURRENT_VERSION saved scars with a version lower than this will be discarded
+ BIO_INORGANIC golems and androids, cannot suffer any wounds
+ BIO_JUST_BONE skeletons and plasmemes, can only suffer bone wounds, only needs mangled bone to be able to dismember
+ BIO_JUST_FLESH nothing right now, maybe slimepeople in the future, can only suffer slashing, piercing, and burn wounds
+ BIO_FLESH_BONE standard humanoids, can suffer all wounds, needs mangled bone and flesh to dismember
+ FLESH_WOUND If this wound requires having the HAS_FLESH flag for humanoids
+ BONE_WOUND If this wound requires having the HAS_BONE flag for humanaoids
+ MANGLES_FLESH If having this wound counts as mangled flesh for dismemberment
+ MANGLES_BONE If having this wound counts as mangled bone for dismemberment
+ ACCEPTS_GAUZE If this wound marks the limb as being allowed to have gauze applied
Define Details
+ACCEPTS_GAUZE
+
+
+
+ If this wound marks the limb as being allowed to have gauze applied
BIO_FLESH_BONE
+
+
+
+ standard humanoids, can suffer all wounds, needs mangled bone and flesh to dismember
BIO_INORGANIC
+
+
+
+ golems and androids, cannot suffer any wounds
BIO_JUST_BONE
+
+
+
+ skeletons and plasmemes, can only suffer bone wounds, only needs mangled bone to be able to dismember
BIO_JUST_FLESH
+
+
+
+ nothing right now, maybe slimepeople in the future, can only suffer slashing, piercing, and burn wounds
BONE_WOUND
+
+
+
+ If this wound requires having the HAS_BONE flag for humanaoids
CANT_WOUND
+
+
+
+ set wound_bonus on an item or attack to this to disable checking wounding for the attack
DISMEMBER_MINIMUM_DAMAGE
+
+
+
+ an attack must do this much damage after armor in order to be eliigible to dismember a suitably mushed bodypart
FLESH_WOUND
+
+
+
+ If this wound requires having the HAS_FLESH flag for humanoids
MANGLES_BONE
+
+
+
+ If having this wound counts as mangled bone for dismemberment
MANGLES_FLESH
+
+
+
+ If having this wound counts as mangled flesh for dismemberment
SCAR_CURRENT_VERSION
+
+
+
+ saved scars with a version lower than this will be discarded
SCAR_SAVE_DESC
+
+
+
+ The description we're loading
SCAR_SAVE_LENGTH
+
+
+
+ how many fields there are above (NOT INCLUDING THIS OBVIOUSLY)
SCAR_SAVE_PRECISE_LOCATION
+
+
+
+ The precise location we're loading
SCAR_SAVE_SEVERITY
+
+
+
+ The severity the scar had
SCAR_SAVE_VERS
+
+
+
+ The version number of the scar we're saving
SCAR_SAVE_ZONE
+
+
+
+ The body_zone we're applying to on granting
WOUND_BLUNT
+
+
+
+ any brute weapon/attack that doesn't have sharpness. rolls for blunt bone wounds
WOUND_BONE_HEAD_TIME_VARIANCE
+
+
+
+ if we suffer a bone wound to the head that creates brain traumas, the timer for the trauma cycle is +/- by this percent (0-100)
WOUND_BURN
+
+
+
+ any concentrated burn attack (lasers really). rolls for burning wounds
WOUND_BURN_SANITIZATION_RATE
+
+
+
+ how quickly sanitization removes infestation and decays per tick
WOUND_DETERMINATION_MAX
+
+
+
+ the max amount of determination you can have
WOUND_INFECTION_CRITICAL
+
+
+
+ then below here, your limb occasionally locks up from damage and infection and briefly becomes disabled. Things are getting really bad
WOUND_INFECTION_MODERATE
+
+
+
+ below this has no ill effects from infection
WOUND_INFECTION_SEPTIC
+
+
+
+ below here, your skin is almost entirely falling off and your limb locks up more frequently. You are within a stone's throw of septic paralysis and losing the limb
WOUND_INFECTION_SEVERE
+
+
+
+ then below here, you ooze some pus and suffer minor tox damage, but nothing serious
WOUND_MAX_CONSIDERED_DAMAGE
+
+
+
+ any damage dealt over this is ignored for damage rolls unless the target has the frail quirk (35^1.4=145)
WOUND_MINIMUM_DAMAGE
+
+
+
+ an attack must do this much damage after armor in order to roll for being a wound (incremental pressure damage need not apply)
WOUND_PIERCE
+
+
+
+ any brute weapon/attack with sharpness = SHARP_POINTY. rolls for piercing wounds
WOUND_SLASH
+
+
+
+ any brute weapon/attack with sharpness = SHARP_EDGED. rolls for slash wounds
WOUND_SLASH_DEAD_CLOT_MIN
+
+
+
+ dead people don't bleed, but they can clot! this is the minimum amount of clotting per tick on dead people, so even critical cuts will slowly clot in dead people
WOUND_SLASH_MAX_BLOODFLOW
+
+
+
+ how much blood you can lose per tick per slash max. 8 is a LOT of blood for one cut so don't worry about hitting it easily
+
+
+
diff --git a/code/__HELPERS/_lists.html b/code/__HELPERS/_lists.html
new file mode 100644
index 0000000000000..bf4801c22446d
--- /dev/null
+++ b/code/__HELPERS/_lists.html
@@ -0,0 +1,118 @@
+
+
+
+
+
+
+ code/__HELPERS/_lists.dm - SPLURT Station 13
+
+
+
+
+code/__HELPERS/_lists.dm
+
+
+
+
+ LIST_VALUE_WRAP_LISTS If value is a list, wrap it in a list so it can be used with list add/remove operations
+ UNTYPED_LIST_ADD Add an untyped item to a list, taking care to handle list items by wrapping them in a list to remove the footgun
+ UNTYPED_LIST_REMOVE Remove an untyped item to a list, taking care to handle list items by wrapping them in a list to remove the footgun
+ LAZYLISTDUPLICATE Like LAZYCOPY - copies an input list if the list has entries, If it doesn't the assigned list is nulled
+ LAZYACCESS returns L[I] if L exists and I is a valid index of L, runtimes if L is not a list
+ LAZYADDASSOCLIST This is used to add onto lazy assoc list when the value you're adding is a /list/. This one has extra safety over lazyaddassoc because the value could be null (and thus cant be used to += objects)
+ LAZYADDASSOC This is used to add onto lazy assoc list when the value you're adding is a /list/. This one has extra safety over lazyaddassoc because the value could be null (and thus cant be used to += objects)
+ LAZYORASSOCLIST Performs an insertion on the given lazy list with the given key and value. If the value already exists, a new one will not be made.
+ COMPARE_KEY Passed into BINARY_INSERT to compare keys
+ COMPARE_VALUE Passed into BINARY_INSERT to compare values
+ BINARY_INSERT Binary search sorted insert
+INPUT: Object to be inserted
+LIST: List to insert object into
+TYPECONT: The typepath of the contents of the list
+COMPARE: The object to compare against, usualy the same as INPUT
+COMPARISON: The variable on the objects to compare
+COMPTYPE: How should the values be compared? Either COMPARE_KEY or COMPARE_VALUE.
+ /proc/english_list_assoc
+ English_list but associative supporting. Higher overhead.
+@depricated
+ /proc/listgetindex
+ @depricated
+ /proc/safepick
+ @depricated
+ /proc/isemptylist
+ @depricated
+ /proc/typecacheof
+ Like typesof() or subtypesof(), but returns a typecache instead of a list
+ /proc/pick_n_take
+ Pick a random element from the list and remove it from the list.
+ /proc/find_record
+ Returns datum/data/record
Define Details
+BINARY_INSERT
+ (INPUT, LIST, TYPECONT, COMPARE, COMPARISON, COMPTYPE)
+
+
+
+ Binary search sorted insert
+INPUT: Object to be inserted
+LIST: List to insert object into
+TYPECONT: The typepath of the contents of the list
+COMPARE: The object to compare against, usualy the same as INPUT
+COMPARISON: The variable on the objects to compare
+COMPTYPE: How should the values be compared? Either COMPARE_KEY or COMPARE_VALUE.
COMPARE_KEY
+
+
+
+ Passed into BINARY_INSERT to compare keys
COMPARE_VALUE
+
+
+
+ Passed into BINARY_INSERT to compare values
LAZYACCESS
+
+
+
+
+ returns L[I] if L exists and I is a valid index of L, runtimes if L is not a list
LAZYADDASSOC
+
+
+
+
+ This is used to add onto lazy assoc list when the value you're adding is a /list/. This one has extra safety over lazyaddassoc because the value could be null (and thus cant be used to += objects)
LAZYADDASSOCLIST
+
+
+
+
+ This is used to add onto lazy assoc list when the value you're adding is a /list/. This one has extra safety over lazyaddassoc because the value could be null (and thus cant be used to += objects)
LAZYLISTDUPLICATE
+
+
+
+
+ Like LAZYCOPY - copies an input list if the list has entries, If it doesn't the assigned list is nulled
LAZYORASSOCLIST
+
+
+
+
+ Performs an insertion on the given lazy list with the given key and value. If the value already exists, a new one will not be made.
LIST_VALUE_WRAP_LISTS
+
+
+
+
+ If value is a list, wrap it in a list so it can be used with list add/remove operations
UNTYPED_LIST_ADD
+
+
+
+
+ Add an untyped item to a list, taking care to handle list items by wrapping them in a list to remove the footgun
UNTYPED_LIST_REMOVE
+
+
+
+
+ Remove an untyped item to a list, taking care to handle list items by wrapping them in a list to remove the footgun
+
+
+
diff --git a/code/__HELPERS/_logging.html b/code/__HELPERS/_logging.html
new file mode 100644
index 0000000000000..84f1a45cf1fae
--- /dev/null
+++ b/code/__HELPERS/_logging.html
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+ code/__HELPERS/_logging.dm - SPLURT Station 13
+
+
+
+
+code/__HELPERS/_logging.dm
+
+
+
+
+ /proc/log_suspicious_login
+ Writes to a special log file if the log_suspicious_login config flag is set,
+which is intended to contain all logins that failed under suspicious circumstances.
+ /proc/log_tgui
+ Appends a tgui-related log entry. All arguments are optional.
+
+
+
diff --git a/code/__HELPERS/areas.html b/code/__HELPERS/areas.html
new file mode 100644
index 0000000000000..0b7b65ff0bb6d
--- /dev/null
+++ b/code/__HELPERS/areas.html
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+ code/__HELPERS/areas.dm - SPLURT Station 13
+
+
+
+
+code/__HELPERS/areas.dm
+
+
+
+
+ /proc/get_base_area
+ Returns the base area the target is located in if there is one.
+Alternatively, returns the area as is.
+ /proc/get_sub_areas
+ Returns either null, or a list containing every sub area associated with our base area.
+If include_base is TRUE, the base area will also be added to the return list.
+ /proc/get_sub_areas_turfs
+ Proc used for purposes similar to get_areas_turfs(), but aimed to include associated areas.
+Only accepts area instances and paths for the first arg, no text strings.
+Returns a list of all turfs found in the sub areas (including the base's if include_base is TRUE)
+and located in a z level matching target_z, or anywhere if target_z is 0
+ /proc/get_sub_areas_contents
+ Simple proc that returns a sum of all contents from every sub area,
+Think of the above but for all contents, not just turfs, and without target z.
+
+
+
diff --git a/code/__HELPERS/chat.html b/code/__HELPERS/chat.html
new file mode 100644
index 0000000000000..d589fc7f840f4
--- /dev/null
+++ b/code/__HELPERS/chat.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+ code/__HELPERS/chat.dm - SPLURT Station 13
+
+
+
+
+code/__HELPERS/chat.dm
+
+
+
+
+ /proc/send2chat
+ Sends a message to TGS chat channels.
+ /proc/send2adminchat
+ Sends a message to TGS admin chat channels.
+ EXAMINE_HINT Handles text formatting for item use hints in examine text
Define Details
+EXAMINE_HINT
+
+
+
+
+ Handles text formatting for item use hints in examine text
+
+
+
diff --git a/code/__HELPERS/clients.html b/code/__HELPERS/clients.html
new file mode 100644
index 0000000000000..d5cfa0fb26639
--- /dev/null
+++ b/code/__HELPERS/clients.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/__HELPERS/clients.dm - SPLURT Station 13
+
+
+
+
+code/__HELPERS/clients.dm
+
+
+
+
+ /proc/is_guest_key
+ Returns whether or not a player is a guest using their ckey as an input
+
+
+
diff --git a/code/__HELPERS/files.html b/code/__HELPERS/files.html
new file mode 100644
index 0000000000000..66a7c161b415b
--- /dev/null
+++ b/code/__HELPERS/files.html
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+ code/__HELPERS/files.dm - SPLURT Station 13
+
+
+
+
+code/__HELPERS/files.dm
+
+
+
+
+ /proc/md5filepath
+ Returns the md5 of a file at a given path.
+ /proc/md5asfile
+ Save file as an external file then md5 it.
+Used because md5ing files stored in the rsc sometimes gives incorrect md5 results.
+
+
+
diff --git a/code/__HELPERS/game.html b/code/__HELPERS/game.html
new file mode 100644
index 0000000000000..29e30a3373327
--- /dev/null
+++ b/code/__HELPERS/game.html
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+ code/__HELPERS/game.dm - SPLURT Station 13
+
+
+
+
+code/__HELPERS/game.dm
+
+
+
+Define Details
+GET_ERROR_ROOM
+
+
+
+ Returns either the error landmark or the location of the room. Needless to say, if this is used, it means things have gone awry.
+
+
+
diff --git a/code/__HELPERS/global_lists.html b/code/__HELPERS/global_lists.html
new file mode 100644
index 0000000000000..d61d2688e1d3b
--- /dev/null
+++ b/code/__HELPERS/global_lists.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/__HELPERS/global_lists.dm - SPLURT Station 13
+
+
+
+
+code/__HELPERS/global_lists.dm
+
+
+
+
+
+
+
diff --git a/code/__HELPERS/icons.html b/code/__HELPERS/icons.html
new file mode 100644
index 0000000000000..26da4580a90b0
--- /dev/null
+++ b/code/__HELPERS/icons.html
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+ code/__HELPERS/icons.dm - SPLURT Station 13
+
+
+
+
+code/__HELPERS/icons.dm
+
+
+
+
+ /proc/generate_asset_name
+ Generate a filename for this asset
+The same asset will always lead to the same asset name
+(Generated names do not include file extention.)
+ /proc/icon2base64
+ Converts an icon to base64. Operates by putting the icon in the iconCache savefile,
+exporting it as text, and then parsing the base64 from that.
+(This relies on byond automatically storing icons in savefiles as base64)
+
+
+
diff --git a/code/__HELPERS/lighting.html b/code/__HELPERS/lighting.html
new file mode 100644
index 0000000000000..8b2af89c12f50
--- /dev/null
+++ b/code/__HELPERS/lighting.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/__HELPERS/lighting.dm - SPLURT Station 13
+
+
+
+
+code/__HELPERS/lighting.dm
+
+
+
+
+
+
+
diff --git a/code/__HELPERS/matrices/color_matrix.html b/code/__HELPERS/matrices/color_matrix.html
new file mode 100644
index 0000000000000..1d11a828ffb61
--- /dev/null
+++ b/code/__HELPERS/matrices/color_matrix.html
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+ code/__HELPERS/matrices/color_matrix.dm - SPLURT Station 13
+
+
+
+
+code/__HELPERS/matrices/color_matrix.dm
+
+
+
+
+
+
+
diff --git a/code/__HELPERS/matrices/transform_matrix.html b/code/__HELPERS/matrices/transform_matrix.html
new file mode 100644
index 0000000000000..686b9e968be21
--- /dev/null
+++ b/code/__HELPERS/matrices/transform_matrix.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/__HELPERS/matrices/transform_matrix.dm - SPLURT Station 13
+
+
+
+
+code/__HELPERS/matrices/transform_matrix.dm
+
+
+
+
+
+
+
diff --git a/code/__HELPERS/mobs.html b/code/__HELPERS/mobs.html
new file mode 100644
index 0000000000000..fa3276122acf7
--- /dev/null
+++ b/code/__HELPERS/mobs.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ code/__HELPERS/mobs.dm - SPLURT Station 13
+
+
+
+
+code/__HELPERS/mobs.dm
+
+
+
+
+ GET_CLIENT Gets the client of the mob, allowing for mocking of the client.
+You only need to use this if you know you're going to be mocking clients somewhere else.
Define Details
+GET_CLIENT
+
+
+
+
+ Gets the client of the mob, allowing for mocking of the client.
+You only need to use this if you know you're going to be mocking clients somewhere else.
+
+
+
diff --git a/code/__HELPERS/nameof.html b/code/__HELPERS/nameof.html
new file mode 100644
index 0000000000000..af2bb839b4972
--- /dev/null
+++ b/code/__HELPERS/nameof.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+ code/__HELPERS/nameof.dm - SPLURT Station 13
+
+
+
+
+code/__HELPERS/nameof.dm
+
+
+
+
+ NAMEOF NAMEOF: Compile time checked variable name to string conversion
+evaluates to a string equal to "X", but compile errors if X isn't a var on datum.
+datum may be null, but it does need to be a typed var.
Define Details
+NAMEOF
+
+
+
+
+ NAMEOF: Compile time checked variable name to string conversion
+evaluates to a string equal to "X", but compile errors if X isn't a var on datum.
+datum may be null, but it does need to be a typed var.
+
+
+
diff --git a/code/__HELPERS/names.html b/code/__HELPERS/names.html
new file mode 100644
index 0000000000000..d9063e4a69d34
--- /dev/null
+++ b/code/__HELPERS/names.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/__HELPERS/names.dm - SPLURT Station 13
+
+
+
+
+code/__HELPERS/names.dm
+
+
+
+
+ /proc/lizard_name
+ NAMEOF that actually works in static definitions because src::type requires src to be defined
+
+
+
diff --git a/code/__HELPERS/path.html b/code/__HELPERS/path.html
new file mode 100644
index 0000000000000..423890068d7f2
--- /dev/null
+++ b/code/__HELPERS/path.html
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+ code/__HELPERS/path.dm - SPLURT Station 13
+
+
+
+
+code/__HELPERS/path.dm
+
+
+
+
+ /proc/get_path_to
+ This file contains the stuff you need for using JPS (Jump Point Search) pathing, an alternative to A* that skips
+over large numbers of uninteresting tiles resulting in much quicker pathfinding solutions. Mind that diagonals
+cost the same as cardinal moves currently, so paths may look a bit strange, but should still be optimal.
+ CAN_STEP A helper macro to see if it's possible to step from the first turf into the second one, minding things like door access and directional windows.
+Note that this can only be used inside the [datum/pathfind][pathfind datum] since it uses variables from said datum.
+If you really want to optimize things, optimize this, cuz this gets called a lot.
+ STEP_NOT_HERE_BUT_THERE Another helper macro for JPS, for telling when a node has forced neighbors that need expanding
+ /datum/jps_node The JPS Node datum represents a turf that we find interesting enough to add to the open list and possibly search for new tiles from
+ /proc/HeapPathWeightCompare
+ TODO: Macro this to reduce proc overhead
+ /datum/pathfind The datum used to handle the JPS pathfinding, completely self-contained
Define Details
+CAN_STEP
+
+
+
+
+ A helper macro to see if it's possible to step from the first turf into the second one, minding things like door access and directional windows.
+Note that this can only be used inside the [datum/pathfind][pathfind datum] since it uses variables from said datum.
+If you really want to optimize things, optimize this, cuz this gets called a lot.
STEP_NOT_HERE_BUT_THERE
+
+
+
+
+ Another helper macro for JPS, for telling when a node has forced neighbors that need expanding
+
+
+
diff --git a/code/__HELPERS/priority_announce.html b/code/__HELPERS/priority_announce.html
new file mode 100644
index 0000000000000..aa1b368ea443b
--- /dev/null
+++ b/code/__HELPERS/priority_announce.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/__HELPERS/priority_announce.dm - SPLURT Station 13
+
+
+
+
+code/__HELPERS/priority_announce.dm
+
+
+
+
+ /proc/call_emergency_meeting
+ If the announcer overrides alert messages, use that message.
+Summon the crew for an emergency meeting
+
+
+
diff --git a/code/__HELPERS/radio.html b/code/__HELPERS/radio.html
new file mode 100644
index 0000000000000..d8f5fb8117619
--- /dev/null
+++ b/code/__HELPERS/radio.html
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+ code/__HELPERS/radio.dm - SPLURT Station 13
+
+
+
+
+code/__HELPERS/radio.dm
+
+
+
+
+ /proc/sanitize_frequency
+ Ensure the frequency is within bounds of what it should be sending/receiving at
+ /proc/format_frequency
+ Format frequency by moving the decimal.
+ /proc/unformat_frequency
+ Opposite of format, returns as a number
+ /proc/return_unused_frequency
+ returns a random unused frequency between MIN_FREE_FREQ & MAX_FREE_FREQ if free = TRUE, and MIN_FREQ & MAX_FREQ if FALSE
+
+
+
diff --git a/code/__HELPERS/sanitize_values.html b/code/__HELPERS/sanitize_values.html
new file mode 100644
index 0000000000000..3959f6781438b
--- /dev/null
+++ b/code/__HELPERS/sanitize_values.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+ code/__HELPERS/sanitize_values.dm - SPLURT Station 13
+
+
+
+
+code/__HELPERS/sanitize_values.dm
+
+
+
+
+ /proc/sanitize_hexcolor
+ Sanitizes a hexadecimal color. Always outputs lowercase.
+ /proc/sanitize_ooccolor
+ Makes sure the input color is text with a # at the start followed by 6 hexadecimal characters. Examples: "#ff1234", "#A38321", COLOR_GREEN_GRAY
+
+
+
diff --git a/code/__HELPERS/screen_objs.html b/code/__HELPERS/screen_objs.html
new file mode 100644
index 0000000000000..20a9c33ad0106
--- /dev/null
+++ b/code/__HELPERS/screen_objs.html
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+ code/__HELPERS/screen_objs.dm - SPLURT Station 13
+
+
+
+
+code/__HELPERS/screen_objs.dm
+
+
+
+
+ /proc/screen_loc_to_offset
+ Takes a screen loc string in the format
+"+-left-offset:+-pixel,+-bottom-offset:+-pixel"
+Where the :pixel is optional, and returns
+A list in the format (x_offset, y_offset)
+We require context to get info out of screen locs that contain relative info, so NORTH, SOUTH, etc
+ /proc/offset_to_screen_loc
+ Takes a list in the form (x_offset, y_offset)
+And converts it to a screen loc string
+Accepts an optional view string/size to force the screen_loc around, so it can't go out of scope
+ /proc/get_valid_screen_location
+ Returns a valid location to place a screen object without overflowing the viewport
+ /proc/cut_relative_direction
+ Takes a screen_loc string and cut out any directions like NORTH or SOUTH
+
+
+
diff --git a/code/__HELPERS/text.html b/code/__HELPERS/text.html
new file mode 100644
index 0000000000000..b1ef1a5197fe9
--- /dev/null
+++ b/code/__HELPERS/text.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/__HELPERS/text.dm - SPLURT Station 13
+
+
+
+
+code/__HELPERS/text.dm
+
+
+
+
+
+
+
diff --git a/code/__HELPERS/type2type.html b/code/__HELPERS/type2type.html
new file mode 100644
index 0000000000000..9fff99f9f56cb
--- /dev/null
+++ b/code/__HELPERS/type2type.html
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+ code/__HELPERS/type2type.dm - SPLURT Station 13
+
+
+
+
+code/__HELPERS/type2type.dm
+
+
+
+
+ /proc/zone2body_parts_covered
+ For finding out what body parts a body zone covers, the inverse of the below basically
+ /proc/url2htmlloader
+ Return html to load a url.
+for use inside of browse() calls to html assets that might be loaded on a cdn.
+
+
+
diff --git a/code/__HELPERS/unsorted.html b/code/__HELPERS/unsorted.html
new file mode 100644
index 0000000000000..92cf73976335a
--- /dev/null
+++ b/code/__HELPERS/unsorted.html
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+ code/__HELPERS/unsorted.dm - SPLURT Station 13
+
+
+
+
+code/__HELPERS/unsorted.dm
+
+
+
+
+ /proc/get_atom_on_turf
+ Returns the top-most atom sitting on the turf.
+For example, using this on a disk, which is in a bag, on a mob,
+will return the mob because it's on the turf.
+ /proc/get_ranged_target_turf_direct
+ Get ranged target turf, but with direct targets as opposed to directions
+ /proc/parse_caught_click_modifiers
+ Returns a turf based on text inputs, original turf and viewing client
+ /proc/valid_window_location
+ Checks whether the target turf is in a valid state to accept a directional window
+or other directional pseudo-dense object such as railings.
+ /proc/___TraitAdd
+ DO NOT USE ___TraitAdd OR ___TraitRemove as a replacement for ADD_TRAIT / REMOVE_TRAIT defines. To be used explicitly for callback.
+ /proc/___TraitRemove
+ DO NOT USE ___TraitAdd OR ___TraitRemove as a replacement for ADD_TRAIT / REMOVE_TRAIT defines. To be used explicitly for callback.
+
+
+
diff --git a/code/__HELPERS/verbs.html b/code/__HELPERS/verbs.html
new file mode 100644
index 0000000000000..87bbfbf0ded83
--- /dev/null
+++ b/code/__HELPERS/verbs.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+ code/__HELPERS/verbs.dm - SPLURT Station 13
+
+
+
+
+code/__HELPERS/verbs.dm
+
+
+
+
+ /proc/add_verb
+ handles adding verbs and updating the stat panel browser
+ /proc/remove_verb
+ handles removing verb and sending it to browser to update, use this for removing verbs
+
+
+
diff --git a/code/__HELPERS/view.html b/code/__HELPERS/view.html
new file mode 100644
index 0000000000000..64af08c5d74f4
--- /dev/null
+++ b/code/__HELPERS/view.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/__HELPERS/view.dm - SPLURT Station 13
+
+
+
+
+code/__HELPERS/view.dm
+
+
+
+
+ /proc/view_to_pixels
+ Takes a string or num view, and converts it to pixel width/height in a list(pixel_width, pixel_height)
+
+
+
diff --git a/code/__HELPERS/weakref.html b/code/__HELPERS/weakref.html
new file mode 100644
index 0000000000000..a10f5952e2f80
--- /dev/null
+++ b/code/__HELPERS/weakref.html
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+ code/__HELPERS/weakref.dm - SPLURT Station 13
+
+
+
+
+code/__HELPERS/weakref.dm
+
+
+
+
+ IS_WEAKREF_OF Checks if potential_weakref is a weakref of thing.
Define Details
+IS_WEAKREF_OF
+ (thing, potential_weakref)
+
+
+
+ Checks if potential_weakref is a weakref of thing.
+
+
+
diff --git a/code/__SANDCODE/DEFINES/chat.html b/code/__SANDCODE/DEFINES/chat.html
new file mode 100644
index 0000000000000..3de1afd5530df
--- /dev/null
+++ b/code/__SANDCODE/DEFINES/chat.html
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+ code/__SANDCODE/DEFINES/chat.dm - SPLURT Station 13
+
+
+
+
+code/__SANDCODE/DEFINES/chat.dm
+
+
+
+
+ examine_block Adds a generic box around whatever message you're sending in chat. Really makes things stand out.
Define Details
+examine_block
+
+
+
+
+ Adds a generic box around whatever message you're sending in chat. Really makes things stand out.
+
+
+
diff --git a/code/__SANDCODE/DEFINES/dcs/signals/lewd.html b/code/__SANDCODE/DEFINES/dcs/signals/lewd.html
new file mode 100644
index 0000000000000..a422abda0c418
--- /dev/null
+++ b/code/__SANDCODE/DEFINES/dcs/signals/lewd.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/__SANDCODE/DEFINES/dcs/signals/lewd.dm - SPLURT Station 13
+
+
+
+
+code/__SANDCODE/DEFINES/dcs/signals/lewd.dm
+
+
+
+Define Details
+COMSIG_MOB_POST_CAME
+
+
+
+ From /mob/living/cum(): (mob/source, mob/living/partner, target_orifice)
+
+
+
diff --git a/code/__SANDCODE/DEFINES/lewd.html b/code/__SANDCODE/DEFINES/lewd.html
new file mode 100644
index 0000000000000..abae42c09e210
--- /dev/null
+++ b/code/__SANDCODE/DEFINES/lewd.html
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+ code/__SANDCODE/DEFINES/lewd.dm - SPLURT Station 13
+
+
+
+
+code/__SANDCODE/DEFINES/lewd.dm
+
+
+
+Define Details
+HAS_EXPOSED_GENITAL
+
+
+
+ Exposed states, your friendly non-carbon returns
INTERACTION_FLAG_ADJACENT
+
+
+
+ Interaction flags
INTERACTION_REQUIRE_ANUS
+
+
+
+ Interaction requirements -- Has require states
INTERACTION_REQUIRE_BOTTOMLESS
+
+
+
+ Interaction requirements
+
+
+
diff --git a/code/__SANDCODE/DEFINES/loadout.html b/code/__SANDCODE/DEFINES/loadout.html
new file mode 100644
index 0000000000000..8e32c181d83d2
--- /dev/null
+++ b/code/__SANDCODE/DEFINES/loadout.html
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+ code/__SANDCODE/DEFINES/loadout.dm - SPLURT Station 13
+
+
+
+
+code/__SANDCODE/DEFINES/loadout.dm
+
+
+
+Define Details
+LOADOUT_CATEGORY_GENERAL_UNDER
+
+
+
+ LOADOUT STUFF
+The category for all underwear, includes underwear, shirt and socks
LOADOUT_CATEGORY_WRISTS
+
+
+
+ Category for wrist items
LOADOUT_SUBCATEGORY_SHIRT
+
+
+
+ Subcategory for shirts
LOADOUT_SUBCATEGORY_SOCKS
+
+
+
+ Subcategory for socks
LOADOUT_SUBCATEGORY_UNDERWEAR
+
+
+
+ Subcategory for underwear
LOADOUT_SUBCATEGORY_WATCHES
+
+
+
+ Subcategory for watches
+
+
+
diff --git a/code/__SANDCODE/DEFINES/medical_defines.html b/code/__SANDCODE/DEFINES/medical_defines.html
new file mode 100644
index 0000000000000..9105c6234d2d1
--- /dev/null
+++ b/code/__SANDCODE/DEFINES/medical_defines.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+ code/__SANDCODE/DEFINES/medical_defines.dm - SPLURT Station 13
+
+
+
+
+code/__SANDCODE/DEFINES/medical_defines.dm
+
+
+
+Define Details
+
+ Painkiller trait - Miner's salve version
PAINKILLER_MORPHINE
+
+
+
+ Painkiller trait - Morphine version
+
+
+
diff --git a/code/__SANDCODE/DEFINES/misc.html b/code/__SANDCODE/DEFINES/misc.html
new file mode 100644
index 0000000000000..2319e8d6e0a6c
--- /dev/null
+++ b/code/__SANDCODE/DEFINES/misc.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/__SANDCODE/DEFINES/misc.dm - SPLURT Station 13
+
+
+
+
+code/__SANDCODE/DEFINES/misc.dm
+
+
+
+
+ UTF8HEADER Adds an utf-8 header...? only ever used on circuitry so when wiremod arrives...
Define Details
+
+ Adds an utf-8 header...? only ever used on circuitry so when wiremod arrives...
+
+
+
diff --git a/code/__SANDCODE/DEFINES/mobs.html b/code/__SANDCODE/DEFINES/mobs.html
new file mode 100644
index 0000000000000..42c23615d6ef5
--- /dev/null
+++ b/code/__SANDCODE/DEFINES/mobs.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/__SANDCODE/DEFINES/mobs.dm - SPLURT Station 13
+
+
+
+
+code/__SANDCODE/DEFINES/mobs.dm
+
+
+
+Define Details
+THIRST_LEVEL_THRESHOLD
+
+
+
+ Maximum amount of hydration the player can have
+
+
+
diff --git a/code/__SANDCODE/DEFINES/signals.html b/code/__SANDCODE/DEFINES/signals.html
new file mode 100644
index 0000000000000..322226d1017f6
--- /dev/null
+++ b/code/__SANDCODE/DEFINES/signals.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/__SANDCODE/DEFINES/signals.dm - SPLURT Station 13
+
+
+
+
+code/__SANDCODE/DEFINES/signals.dm
+
+
+
+Define Details
+COMSIG_CONTAINER_TRY_ATTACH
+
+
+
+ (atom/container, mob/user) - returns bool
+
+
+
diff --git a/code/__SANDCODE/DEFINES/status_effects.html b/code/__SANDCODE/DEFINES/status_effects.html
new file mode 100644
index 0000000000000..a43abaf20124b
--- /dev/null
+++ b/code/__SANDCODE/DEFINES/status_effects.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/__SANDCODE/DEFINES/status_effects.dm - SPLURT Station 13
+
+
+
+
+code/__SANDCODE/DEFINES/status_effects.dm
+
+
+
+Define Details
+STATUS_EFFECT_CRUSHERMARK_HARM
+
+
+
+ Special crusher mark, hurts more.
+
+
+
diff --git a/code/__SANDCODE/DEFINES/strippable.html b/code/__SANDCODE/DEFINES/strippable.html
new file mode 100644
index 0000000000000..0a50d68b534f9
--- /dev/null
+++ b/code/__SANDCODE/DEFINES/strippable.html
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+ code/__SANDCODE/DEFINES/strippable.dm - SPLURT Station 13
+
+
+
+
+code/__SANDCODE/DEFINES/strippable.dm
+
+
+
+Define Details
+
+ Modular file strippable items, we do have extra slots only here.
+Right ear strippable slot
STRIPPABLE_ITEM_SOCKS
+
+
+
+ Socks strippable slot
STRIPPABLE_ITEM_UNDERSHIRT
+
+
+
+ Undershirt strippable slot
STRIPPABLE_ITEM_UNDERWEAR
+
+
+
+ Underwear strippable slot
STRIPPABLE_ITEM_WRISTS
+
+
+
+ Wrists strippable slot
+
+
+
diff --git a/code/__SANDCODE/DEFINES/traits.html b/code/__SANDCODE/DEFINES/traits.html
new file mode 100644
index 0000000000000..82ba9d982281c
--- /dev/null
+++ b/code/__SANDCODE/DEFINES/traits.html
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+ code/__SANDCODE/DEFINES/traits.dm - SPLURT Station 13
+
+
+
+
+code/__SANDCODE/DEFINES/traits.dm
+
+
+
+
+ TRAIT_PAINKILLER Painkiller trait, used for self-surgeries.
+ TRAIT_NOTHIRST Prevents the player from getting thirsty at all, usually paired with TRAIT_NOHUNGER.
+ TRAIT_SHELTERED Define for the quirk "sheltered", the player does not start with Galactic Common language.
+ TRAIT_INFERTILE Define for the quirk "infertile", self explanatory. Please make this a preference on the Content Preferences Tab.
+ TRAIT_DNC_ORDER DNC trait, used to prevent cloning
+ TRAIT_ESTROUS_ACTIVE Estrous traits, used for mammalian seasonal arousal systems
Define Details
+TRAIT_DNC_ORDER
+
+
+
+ DNC trait, used to prevent cloning
TRAIT_ESTROUS_ACTIVE
+
+
+
+ Estrous traits, used for mammalian seasonal arousal systems
TRAIT_INFERTILE
+
+
+
+ Define for the quirk "infertile", self explanatory. Please make this a preference on the Content Preferences Tab.
TRAIT_NOTHIRST
+
+
+
+ Prevents the player from getting thirsty at all, usually paired with TRAIT_NOHUNGER.
TRAIT_PAINKILLER
+
+
+
+ Painkiller trait, used for self-surgeries.
TRAIT_SHELTERED
+
+
+
+ Define for the quirk "sheltered", the player does not start with Galactic Common language.
+
+
+
diff --git a/code/__SANDCODE/DEFINES/wires.html b/code/__SANDCODE/DEFINES/wires.html
new file mode 100644
index 0000000000000..b5672170fcb95
--- /dev/null
+++ b/code/__SANDCODE/DEFINES/wires.html
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+ code/__SANDCODE/DEFINES/wires.dm - SPLURT Station 13
+
+
+
+
+code/__SANDCODE/DEFINES/wires.dm
+
+
+
+
+ WIRE_FIRE_TOGGLE Fire alarms have wires now.
+Toggles the fire alarm's alarm on/off.
+ WIRE_FIRE_DETECT Toggles whether the fire alarm will trigger if there is a fire or is hit.
+ WIRE_FIRE_TRIGGER Immediately triggers the alarm on the fire alarm, only used for pulsing.
Define Details
+WIRE_FIRE_DETECT
+
+
+
+ Toggles whether the fire alarm will trigger if there is a fire or is hit.
WIRE_FIRE_TOGGLE
+
+
+
+ Fire alarms have wires now.
+Toggles the fire alarm's alarm on/off.
WIRE_FIRE_TRIGGER
+
+
+
+ Immediately triggers the alarm on the fire alarm, only used for pulsing.
+
+
+
diff --git a/code/__SPLURTCODE/DEFINES/colors.html b/code/__SPLURTCODE/DEFINES/colors.html
new file mode 100644
index 0000000000000..2dea88fe35df0
--- /dev/null
+++ b/code/__SPLURTCODE/DEFINES/colors.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/__SPLURTCODE/DEFINES/colors.dm - SPLURT Station 13
+
+
+
+
+code/__SPLURTCODE/DEFINES/colors.dm
+
+
+
+Define Details
+SOFA_BROWN
+
+
+
+ MODULAR SPLURT COLORS
+
+
+
diff --git a/code/__SPLURTCODE/DEFINES/configuration.html b/code/__SPLURTCODE/DEFINES/configuration.html
new file mode 100644
index 0000000000000..5d2f881206ade
--- /dev/null
+++ b/code/__SPLURTCODE/DEFINES/configuration.html
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+ code/__SPLURTCODE/DEFINES/configuration.dm - SPLURT Station 13
+
+
+
+
+code/__SPLURTCODE/DEFINES/configuration.dm
+
+
+
+Define Details
+CONFIG_GET_ENTRY_FROM_PATH
+
+
+
+
+ like CONFIG_GET_ENTRY() but uses a full path
+
+
+
diff --git a/code/__SPLURTCODE/DEFINES/dcs/signals.html b/code/__SPLURTCODE/DEFINES/dcs/signals.html
new file mode 100644
index 0000000000000..deb770cae8e0d
--- /dev/null
+++ b/code/__SPLURTCODE/DEFINES/dcs/signals.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/__SPLURTCODE/DEFINES/dcs/signals.dm - SPLURT Station 13
+
+
+
+
+code/__SPLURTCODE/DEFINES/dcs/signals.dm
+
+
+
+Define Details
+COMSIG_ITEM_POST_UNEQUIP
+
+
+
+ called on /obj/item AFTER unequip from base of [mob/proc/doUnEquip]: (force, atom/newloc, no_move, invdrop, silent)
+
+
+
diff --git a/code/__byond_version_compat.html b/code/__byond_version_compat.html
new file mode 100644
index 0000000000000..b1bbf0fbf3397
--- /dev/null
+++ b/code/__byond_version_compat.html
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+ code/__byond_version_compat.dm - SPLURT Station 13
+
+
+
+
+code/__byond_version_compat.dm
+
+
+
+
+ PROC_REF Call by name proc reference, checks if the proc exists on this type or as a global proc
+ VERB_REF Call by name verb references, checks if the verb exists on either this type or as a global verb.
+ TYPE_PROC_REF Call by name proc reference, checks if the proc exists on given type or as a global proc
+ TYPE_VERB_REF Call by name verb reference, checks if the verb exists on either the given type or as a global verb
+ GLOBAL_PROC_REF Call by name proc reference, checks if the proc is existing global proc
Define Details
+GLOBAL_PROC_REF
+
+
+
+
+ Call by name proc reference, checks if the proc is existing global proc
PROC_REF
+
+
+
+
+ Call by name proc reference, checks if the proc exists on this type or as a global proc
TYPE_PROC_REF
+
+
+
+
+ Call by name proc reference, checks if the proc exists on given type or as a global proc
TYPE_VERB_REF
+
+
+
+
+ Call by name verb reference, checks if the verb exists on either the given type or as a global verb
VERB_REF
+
+
+
+
+ Call by name verb references, checks if the verb exists on either this type or as a global verb.
+
+
+
diff --git a/code/_globalvars/bitfields.html b/code/_globalvars/bitfields.html
new file mode 100644
index 0000000000000..73863432fe980
--- /dev/null
+++ b/code/_globalvars/bitfields.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/_globalvars/bitfields.dm - SPLURT Station 13
+
+
+
+
+code/_globalvars/bitfields.dm
+
+
+
+
+
+
+
diff --git a/code/_globalvars/lists/keybindings.html b/code/_globalvars/lists/keybindings.html
new file mode 100644
index 0000000000000..ddb1f98638e55
--- /dev/null
+++ b/code/_globalvars/lists/keybindings.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+ code/_globalvars/lists/keybindings.dm - SPLURT Station 13
+
+
+
+
+code/_globalvars/lists/keybindings.dm
+
+
+
+
+
+
+
diff --git a/code/_globalvars/lists/typecache.html b/code/_globalvars/lists/typecache.html
new file mode 100644
index 0000000000000..712df0c51c7c5
--- /dev/null
+++ b/code/_globalvars/lists/typecache.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/_globalvars/lists/typecache.dm - SPLURT Station 13
+
+
+
+
+code/_globalvars/lists/typecache.dm
+
+
+
+
+
+
+
diff --git a/code/_onclick/hud/action_button.html b/code/_onclick/hud/action_button.html
new file mode 100644
index 0000000000000..12189a751ef44
--- /dev/null
+++ b/code/_onclick/hud/action_button.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/_onclick/hud/action_button.dm - SPLURT Station 13
+
+
+
+
+code/_onclick/hud/action_button.dm
+
+
+
+
+
+
+
diff --git a/code/_onclick/hud/alert.html b/code/_onclick/hud/alert.html
new file mode 100644
index 0000000000000..321661d319ce3
--- /dev/null
+++ b/code/_onclick/hud/alert.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/_onclick/hud/alert.dm - SPLURT Station 13
+
+
+
+
+code/_onclick/hud/alert.dm
+
+
+
+
+
+
+
diff --git a/code/_onclick/hud/map_popups.html b/code/_onclick/hud/map_popups.html
new file mode 100644
index 0000000000000..d876cf066d131
--- /dev/null
+++ b/code/_onclick/hud/map_popups.html
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+ code/_onclick/hud/map_popups.dm - SPLURT Station 13
+
+
+
+
+code/_onclick/hud/map_popups.dm
+
+
+
+
+ /atom /movable /screen /map_view A screen object, which acts as a container for turfs and other things
+you want to show on the map, which you usually attach to "vis_contents".
+ /atom /movable /screen /background A generic background object.
+It is also implicitly used to allocate a rectangle on the map, which will
+be used for auto-scaling the map.
+
+
+
diff --git a/code/_onclick/hud/new_player.html b/code/_onclick/hud/new_player.html
new file mode 100644
index 0000000000000..2fd18470e570d
--- /dev/null
+++ b/code/_onclick/hud/new_player.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/_onclick/hud/new_player.dm - SPLURT Station 13
+
+
+
+
+code/_onclick/hud/new_player.dm
+
+
+
+
+
+
+
diff --git a/code/_onclick/hud/plane_master.html b/code/_onclick/hud/plane_master.html
new file mode 100644
index 0000000000000..fc75e85a30daf
--- /dev/null
+++ b/code/_onclick/hud/plane_master.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+ code/_onclick/hud/plane_master.dm - SPLURT Station 13
+
+
+
+
+code/_onclick/hud/plane_master.dm
+
+
+
+
+ /atom /movable /screen /plane_master/openspace Things rendered on "openspace"; holes in multi-z
+ /atom /movable /screen /plane_master/floor Contains just the floor
+ /atom /movable /screen /plane_master/game_world Contains most things in the game world
+ /atom /movable /screen /plane_master/field_of_vision Contains all shadow cone masks, whose image overrides are displayed only to their respective owners.
+ /atom /movable /screen /plane_master/field_of_vision_blocker Used to display the owner and its adjacent surroundings through the FoV plane mask.
+ /atom /movable /screen /plane_master/field_of_vision_visual Stores the visible portion of the FoV shadow cone.
+ /atom /movable /screen /plane_master/lighting Contains all lighting objects
+ This system works by exploiting BYONDs color matrix filter to use layers to handle emissive blockers.
+Emissive overlays are pasted with an atom color that converts them to be entirely some specific color.
+Emissive blockers are pasted with an atom color that converts them to be entirely some different color.
+Emissive overlays and emissive blockers are put onto the same plane.
+The layers for the emissive overlays and emissive blockers cause them to mask eachother similar to normal BYOND objects.
+A color matrix filter is applied to the emissive plane to mask out anything that isn't whatever the emissive color is.
+This is then used to alpha mask the lighting plane.
+ /atom /movable /screen /plane_master/emissive Handles emissive overlays and emissive blockers.
+ /atom /movable /screen /plane_master/parallax Contains space parallax
+
+
+
diff --git a/code/_rendering/atom_huds/alternate_appearance.html b/code/_rendering/atom_huds/alternate_appearance.html
new file mode 100644
index 0000000000000..8d475ec2aa4d8
--- /dev/null
+++ b/code/_rendering/atom_huds/alternate_appearance.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/_rendering/atom_huds/alternate_appearance.dm - SPLURT Station 13
+
+
+
+
+code/_rendering/atom_huds/alternate_appearance.dm
+
+
+
+
+ /atom The base type for nearly all physical objects in SS13
+
+
+
diff --git a/code/_rendering/parallax/parallax.html b/code/_rendering/parallax/parallax.html
new file mode 100644
index 0000000000000..ebf8ed8752437
--- /dev/null
+++ b/code/_rendering/parallax/parallax.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/_rendering/parallax/parallax.dm - SPLURT Station 13
+
+
+
+
+code/_rendering/parallax/parallax.dm
+
+
+
+
+
+
+
diff --git a/code/_rendering/parallax/parallax_holder.html b/code/_rendering/parallax/parallax_holder.html
new file mode 100644
index 0000000000000..b11ade68fbfbb
--- /dev/null
+++ b/code/_rendering/parallax/parallax_holder.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/_rendering/parallax/parallax_holder.dm - SPLURT Station 13
+
+
+
+
+code/_rendering/parallax/parallax_holder.dm
+
+
+
+
+
+
+
diff --git a/code/controllers/configuration/config_entry.html b/code/controllers/configuration/config_entry.html
new file mode 100644
index 0000000000000..683b2fa6d70f4
--- /dev/null
+++ b/code/controllers/configuration/config_entry.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/controllers/configuration/config_entry.dm - SPLURT Station 13
+
+
+
+
+code/controllers/configuration/config_entry.dm
+
+
+
+
+
+
+
diff --git a/code/controllers/configuration/entries/comms.html b/code/controllers/configuration/entries/comms.html
new file mode 100644
index 0000000000000..02ac2c033faaf
--- /dev/null
+++ b/code/controllers/configuration/entries/comms.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/controllers/configuration/entries/comms.dm - SPLURT Station 13
+
+
+
+
+code/controllers/configuration/entries/comms.dm
+
+
+
+
+
+
+
diff --git a/code/controllers/configuration/entries/debris.html b/code/controllers/configuration/entries/debris.html
new file mode 100644
index 0000000000000..fa139407b07f4
--- /dev/null
+++ b/code/controllers/configuration/entries/debris.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/controllers/configuration/entries/debris.dm - SPLURT Station 13
+
+
+
+
+code/controllers/configuration/entries/debris.dm
+
+
+
+
+ /datum /config_entry /number/turf_dirt_threshold Amount of dirtyness tiles need to spawn dirt.
+ /datum /config_entry /number/dirt_alpha_starting Alpha dirt starts at
+ /datum /config_entry /number/turf_dirty_multiplier Dirtyness multiplier for making turfs dirty
+
+
+
diff --git a/code/controllers/configuration/entries/general.html b/code/controllers/configuration/entries/general.html
new file mode 100644
index 0000000000000..89659b6013c14
--- /dev/null
+++ b/code/controllers/configuration/entries/general.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/controllers/configuration/entries/general.dm - SPLURT Station 13
+
+
+
+
+code/controllers/configuration/entries/general.dm
+
+
+
+
+ /datum /config_entry /number/initial_gear_points Initial loadout points
+ /datum /config_entry /flag/use_field_of_vision Enables the FoV component, which hides objects and mobs behind the parent from their sight, unless they turn around, duh.
+Camera mobs, AIs, ghosts and some other are of course exempt from this. This also doesn't influence simplemob AI, for the best.
+
+
+
diff --git a/code/controllers/configuration/entries/logging.html b/code/controllers/configuration/entries/logging.html
new file mode 100644
index 0000000000000..77bff9990cdf0
--- /dev/null
+++ b/code/controllers/configuration/entries/logging.html
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+ code/controllers/configuration/entries/logging.dm - SPLURT Station 13
+
+
+
+
+code/controllers/configuration/entries/logging.dm
+
+
+
+
+
+
+
diff --git a/code/controllers/configuration/entries/movespeed.html b/code/controllers/configuration/entries/movespeed.html
new file mode 100644
index 0000000000000..c5debc43404ea
--- /dev/null
+++ b/code/controllers/configuration/entries/movespeed.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/controllers/configuration/entries/movespeed.dm - SPLURT Station 13
+
+
+
+
+code/controllers/configuration/entries/movespeed.dm
+
+
+
+
+
+
+
diff --git a/code/controllers/configuration/entries/persistence.html b/code/controllers/configuration/entries/persistence.html
new file mode 100644
index 0000000000000..bc077d51ec6fb
--- /dev/null
+++ b/code/controllers/configuration/entries/persistence.html
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+ code/controllers/configuration/entries/persistence.dm - SPLURT Station 13
+
+
+
+
+code/controllers/configuration/entries/persistence.dm
+
+
+
+
+ /datum /config_entry /flag/persistent_debris Whether or not to use the persistence system for cleanable objects
+ /datum /config_entry /flag/persistent_debris_only Whether or not to nuke all roundstart debris that isn't due to persistence if the above is true
+ /datum /config_entry /number/persistent_debris_global_max Max amount of objects to store, total
+ /datum /config_entry /number/persistent_debris_type_max Max amount of objects to store per type
+ /datum /config_entry /flag/persistent_debris_wipe_on_nuke Wipe dirty stuff on nuke
+
+
+
diff --git a/code/controllers/configuration/entries/policy.html b/code/controllers/configuration/entries/policy.html
new file mode 100644
index 0000000000000..e9885f7699150
--- /dev/null
+++ b/code/controllers/configuration/entries/policy.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/controllers/configuration/entries/policy.dm - SPLURT Station 13
+
+
+
+
+code/controllers/configuration/entries/policy.dm
+
+
+
+
+ /datum /config_entry /number/defib_cmd_time_limit Seconds for CMD on defib-with-memory-loss policy config to display instead of defib-intact config
+
+
+
diff --git a/code/controllers/configuration/entries/respawns.html b/code/controllers/configuration/entries/respawns.html
new file mode 100644
index 0000000000000..f0d69b79187c0
--- /dev/null
+++ b/code/controllers/configuration/entries/respawns.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ code/controllers/configuration/entries/respawns.dm - SPLURT Station 13
+
+
+
+
+code/controllers/configuration/entries/respawns.dm
+
+
+
+
+ /datum /config_entry /flag/respawns_enabled Allows usage of respawn system
+ /datum /config_entry /number/respawn_delay Minutes before allowing respawns.
+ /datum /config_entry /number/respawn_delay_cryo Minutes before allowing respawn, if user cryo'd.
+ /datum /config_entry /flag/allow_non_assistant_respawn Allows respawning as non-assistant. Overrides all others of this type.
+ /datum /config_entry /flag/allow_combat_role_respawn Allows respawning as a combat role, defined as security/head.
+ /datum /config_entry /flag/allow_same_character_respawn Allows respawning as the same character as a previous life
+ /datum /config_entry /flag/respawn_penalty_includes_observe Observing penalizes for respawns, not just joining.
+ /datum /config_entry /number/respawn_minimum_delay_roundstart Minutes from roundstart before someone can respawn
+ /datum /config_entry /keyed_list /respawn_chaos_gamemodes Gamemode config tags that are banned from respawning
+
+
+
diff --git a/code/controllers/configuration/entries/stamina_combat.html b/code/controllers/configuration/entries/stamina_combat.html
new file mode 100644
index 0000000000000..5c710cb64da10
--- /dev/null
+++ b/code/controllers/configuration/entries/stamina_combat.html
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+ code/controllers/configuration/entries/stamina_combat.dm - SPLURT Station 13
+
+
+
+
+code/controllers/configuration/entries/stamina_combat.dm
+
+
+
+
+ /datum /config_entry /number/stamina_combat/buffer_max Maximum stamina buffer
+ /datum /config_entry /number/stamina_combat/out_of_combat_timer Seconds until percent_regeneration_out_of_combat kicks in
+ /datum /config_entry /number/stamina_combat/base_regeneration Base regeneration per second
+ /datum /config_entry /number/stamina_combat/percent_regeneration_out_of_combat After out_of_combat_timer elapses, additionally regenerate this percent of total stamina per second. Unaffected by combat mode.
+ /datum /config_entry /number/stamina_combat/post_action_penalty_delay Seconds after an action for which your regeneration is penalized
+ /datum /config_entry /number/stamina_combat/post_action_penalty_factor Factor to multiply by for penalizing post-action-stamina-regen
+ /datum /config_entry /number/stamina_combat/overdraw_penalty_factor Factor to multiply by for stamina usage past buffer into health
+
+
+
diff --git a/code/controllers/configuration/entries/vote.html b/code/controllers/configuration/entries/vote.html
new file mode 100644
index 0000000000000..8dbaca02bf3a3
--- /dev/null
+++ b/code/controllers/configuration/entries/vote.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/controllers/configuration/entries/vote.dm - SPLURT Station 13
+
+
+
+
+code/controllers/configuration/entries/vote.dm
+
+
+
+
+ /datum /config_entry /number/vote_autotransfer_initial Length of time before the first autotransfer vote is called (deciseconds, default 2 hours)
+Set to 0 to disable the subsystem altogether.
+ /datum /config_entry /number/vote_autotransfer_interval length of time to wait before subsequent autotransfer votes (deciseconds, default 30 minutes)
+ /datum /config_entry /number/vote_autotransfer_maximum maximum extensions until the round autoends.
+Set to 0 to force automatic crew transfer after the 'vote_autotransfer_initial' elapsed.
+Set to -1 to disable the maximum extensions cap.
+
+
+
diff --git a/code/controllers/failsafe.html b/code/controllers/failsafe.html
new file mode 100644
index 0000000000000..a8b25e3c14f8b
--- /dev/null
+++ b/code/controllers/failsafe.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/controllers/failsafe.dm - SPLURT Station 13
+
+
+
+
+code/controllers/failsafe.dm
+
+
+
+
+
+
+
diff --git a/code/controllers/hooks.html b/code/controllers/hooks.html
new file mode 100644
index 0000000000000..de21a8f9cea36
--- /dev/null
+++ b/code/controllers/hooks.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/controllers/hooks.dm - SPLURT Station 13
+
+
+
+
+code/controllers/hooks.dm
+
+
+
+
+ /proc/callHook
+ @file hooks.dm
+Implements hooks, a simple way to run code on pre-defined events.
+
+
+
diff --git a/code/controllers/master.html b/code/controllers/master.html
new file mode 100644
index 0000000000000..cf655e347fb11
--- /dev/null
+++ b/code/controllers/master.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/controllers/master.dm - SPLURT Station 13
+
+
+
+
+code/controllers/master.dm
+
+
+
+
+ /var/Master
+ StonedMC
+ /datum/controller/master Start of queue linked list
+End of queue linked list (used for appending to the list)
+Are we loading in a new map?
+for scheduling different subsystems for different stages of the round
+
+
+
diff --git a/code/controllers/subsystem.html b/code/controllers/subsystem.html
new file mode 100644
index 0000000000000..a027cecb5f5cd
--- /dev/null
+++ b/code/controllers/subsystem.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/controllers/subsystem.dm - SPLURT Station 13
+
+
+
+
+code/controllers/subsystem.dm
+
+
+
+
+
+
+
diff --git a/code/controllers/subsystem/chat.html b/code/controllers/subsystem/chat.html
new file mode 100644
index 0000000000000..d0f364ecd9fb4
--- /dev/null
+++ b/code/controllers/subsystem/chat.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/controllers/subsystem/chat.dm - SPLURT Station 13
+
+
+
+
+code/controllers/subsystem/chat.dm
+
+
+
+
+ Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+
+
+
diff --git a/code/controllers/subsystem/garbage.html b/code/controllers/subsystem/garbage.html
new file mode 100644
index 0000000000000..45f8540acd308
--- /dev/null
+++ b/code/controllers/subsystem/garbage.html
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+ code/controllers/subsystem/garbage.dm - SPLURT Station 13
+
+
+
+
+code/controllers/subsystem/garbage.dm
+
+
+
+
+ Debugging GC issues
+In order to debug qdel()
failures, there are several tools available.
+To enable these tools, define TESTING
in _compile_options.dm .
+First is a verb called "Find References", which lists every refererence to an object in the world. This allows you to track down any indirect or obfuscated references that you might have missed.
+Complementing this is another verb, "qdel() then Find References".
+This does exactly what you'd expect; it calls qdel()
on the object and then it finds all references remaining.
+This is great, because it means that Destroy()
will have been called before it starts to find references,
+so the only references you'll find will be the ones preventing the object from qdel()
ing gracefully.
+If you have a datum or something you are not destroying directly (say via the singulo),
+the next tool is QDEL_HINT_FINDREFERENCE
. You can return this in Destroy()
(where you would normally return ..()
),
+to print a list of references once it enters the GC queue.
+Finally is a verb, "Show qdel() Log", which shows the deletion log that the garbage subsystem keeps. This is helpful if you are having race conditions or need to review the order of deletions.
+Note that for any of these tools to work TESTING
must be defined.
+By using these methods of finding references, you can make your life far, far easier when dealing with qdel()
failures.
+ /datum /qdel_item Qdel Item: Holds statistics on each type that passes thru qdel
+Holds the type as a string for this type
+Total number of times it's passed thru qdel.
+Total amount of milliseconds spent processing this type's Destroy()
+Times it was queued for soft deletion but failed to soft delete.
+Different from failures because it also includes QDEL_HINT_HARDDEL deletions
+Total amount of milliseconds spent hard deleting this type.
+Highest time spent hard_deleting this in ms.
+Number of times hard deletes took longer than the configured threshold
+Number of times it's not respected force=TRUE
+Number of times it's not even bother to give a qdel hint
+Number of times it's slept in its destroy
+ Flags related to this type's trip thru qdel.
+
+ /proc/qdel
+ Should be treated as a replacement for the 'del' keyword.
+
+
+
diff --git a/code/controllers/subsystem/materials.html b/code/controllers/subsystem/materials.html
new file mode 100644
index 0000000000000..7c67f11eafccb
--- /dev/null
+++ b/code/controllers/subsystem/materials.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/controllers/subsystem/materials.dm - SPLURT Station 13
+
+
+
+
+code/controllers/subsystem/materials.dm
+
+
+
+
+ How material datums work
+Materials are now instanced datums, with an associative list of them being kept in SSmaterials. We only instance the materials once and then re-use these instances for everything.
+These materials call on_applied() on whatever item they are applied to, common effects are adding components, changing color and changing description. This allows us to differentiate items based on the material they are made out of.area
+
+
+
diff --git a/code/controllers/subsystem/overlays.html b/code/controllers/subsystem/overlays.html
new file mode 100644
index 0000000000000..c661720ec0327
--- /dev/null
+++ b/code/controllers/subsystem/overlays.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ code/controllers/subsystem/overlays.dm - SPLURT Station 13
+
+
+
+
+code/controllers/subsystem/overlays.dm
+
+
+
+
+ /proc/overlays2text
+ Converts an overlay list into text for debug printing
+Of note: overlays aren't actually mutable appearances, they're just appearances
+Don't have access to that type tho, so this is the best you're gonna get
+ /proc/realize_appearance_queue
+ Takes a list of appearnces, makes them mutable so they can be properly vv'd and inspected
+ /proc/diff_appearances
+ Takes two appearances as args, prints out, logs, and returns a text representation of their differences
+Including suboverlays
+
+
+
diff --git a/code/controllers/subsystem/persistence/_persistence.html b/code/controllers/subsystem/persistence/_persistence.html
new file mode 100644
index 0000000000000..a4c9c99d4c380
--- /dev/null
+++ b/code/controllers/subsystem/persistence/_persistence.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/controllers/subsystem/persistence/_persistence.dm - SPLURT Station 13
+
+
+
+
+code/controllers/subsystem/persistence/_persistence.dm
+
+
+
+
+
+
+
diff --git a/code/controllers/subsystem/processing/fastprocess.html b/code/controllers/subsystem/processing/fastprocess.html
new file mode 100644
index 0000000000000..f2b0c9674d13e
--- /dev/null
+++ b/code/controllers/subsystem/processing/fastprocess.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/controllers/subsystem/processing/fastprocess.dm - SPLURT Station 13
+
+
+
+
+code/controllers/subsystem/processing/fastprocess.dm
+
+
+
+
+ /var/SSfastprocess
+ obj/item/weapon/implant/integrated_circuit
+
+
+
diff --git a/code/controllers/subsystem/runechat.html b/code/controllers/subsystem/runechat.html
new file mode 100644
index 0000000000000..235b2cdfb2331
--- /dev/null
+++ b/code/controllers/subsystem/runechat.html
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+ code/controllers/subsystem/runechat.dm - SPLURT Station 13
+
+
+
+
+code/controllers/subsystem/runechat.dm
+
+
+
+
+ BUCKET_LEN Controls how many buckets should be kept, each representing a tick. (30 seconds worth)
+ BUCKET_POS Helper for getting the correct bucket for a given chatmessage
+ BUCKET_LIMIT Gets the maximum time at which messages will be handled in buckets, used for deferring to secondary queue
+ /var/SSrunechat
+
Define Details
+BUCKET_LEN
+
+
+
+ Controls how many buckets should be kept, each representing a tick. (30 seconds worth)
BUCKET_LIMIT
+
+
+
+ Gets the maximum time at which messages will be handled in buckets, used for deferring to secondary queue
BUCKET_POS
+
+
+
+
+ Helper for getting the correct bucket for a given chatmessage
+
+
+
diff --git a/code/controllers/subsystem/tgui.html b/code/controllers/subsystem/tgui.html
new file mode 100644
index 0000000000000..9e175c62e1a6a
--- /dev/null
+++ b/code/controllers/subsystem/tgui.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+ code/controllers/subsystem/tgui.dm - SPLURT Station 13
+
+
+
+
+code/controllers/subsystem/tgui.dm
+
+
+
+
+ Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+ /var/SStgui
+ tgui subsystem
+
+
+
diff --git a/code/controllers/subsystem/timer.html b/code/controllers/subsystem/timer.html
new file mode 100644
index 0000000000000..61778669d1525
--- /dev/null
+++ b/code/controllers/subsystem/timer.html
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+ code/controllers/subsystem/timer.dm - SPLURT Station 13
+
+
+
+
+code/controllers/subsystem/timer.dm
+
+
+
+
+ BUCKET_LEN Controls how many buckets should be kept, each representing a tick. (1 minutes worth)
+ BUCKET_POS Helper for getting the correct bucket for a given timer
+ TIMER_MAX Gets the maximum time at which timers will be invoked from buckets, used for deferring to secondary queue
+ TIMER_ID_MAX Max float with integer precision
+ /var/SStimer
+
+ /datum/timedevent This is the actual timer, it contains the callback and necessary data to maintain
+the timer.
+ /proc/_addtimer
+ Create a new timer and insert it in the queue.
+You should not call this directly, and should instead use the addtimer macro, which includes source information.
+ /proc/deltimer
+ Delete a timer
+ /proc/timeleft
+ Get the remaining deciseconds on a timer
Define Details
+BUCKET_LEN
+
+
+
+ Controls how many buckets should be kept, each representing a tick. (1 minutes worth)
BUCKET_POS
+
+
+
+
+ Helper for getting the correct bucket for a given timer
TIMER_ID_MAX
+
+
+
+ Max float with integer precision
TIMER_MAX
+
+
+
+ Gets the maximum time at which timers will be invoked from buckets, used for deferring to secondary queue
+
+
+
diff --git a/code/datums/achievements/_achievement_data.html b/code/datums/achievements/_achievement_data.html
new file mode 100644
index 0000000000000..d42817d096559
--- /dev/null
+++ b/code/datums/achievements/_achievement_data.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/datums/achievements/_achievement_data.dm - SPLURT Station 13
+
+
+
+
+code/datums/achievements/_achievement_data.dm
+
+
+
+
+
+
+
diff --git a/code/datums/achievements/_awards.html b/code/datums/achievements/_awards.html
new file mode 100644
index 0000000000000..9f837f4a7cf87
--- /dev/null
+++ b/code/datums/achievements/_awards.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/datums/achievements/_awards.dm - SPLURT Station 13
+
+
+
+
+code/datums/achievements/_awards.dm
+
+
+
+
+ /datum /award /achievement Achievements are one-off awards for usually doing cool things.
+ /datum /award /score Scores are for leaderboarded things, such as killcount of a specific boss
+
+
+
diff --git a/code/datums/achievements/mafia_achievements.html b/code/datums/achievements/mafia_achievements.html
new file mode 100644
index 0000000000000..373a13224f2a6
--- /dev/null
+++ b/code/datums/achievements/mafia_achievements.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/datums/achievements/mafia_achievements.dm - SPLURT Station 13
+
+
+
+
+code/datums/achievements/mafia_achievements.dm
+
+
+
+
+ /datum /award /achievement/mafia/assistant ALL THE ACHIEVEMENTS FOR WINNING A ROUND AS A ROLE
+ /datum /award /achievement/mafia/universally_hated ALL THE ACHIEVEMENTS FOR MISC MAFIA ODDITIES
+
+
+
diff --git a/code/datums/achievements/misc_scores.html b/code/datums/achievements/misc_scores.html
new file mode 100644
index 0000000000000..f4069931b537b
--- /dev/null
+++ b/code/datums/achievements/misc_scores.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/datums/achievements/misc_scores.dm - SPLURT Station 13
+
+
+
+
+code/datums/achievements/misc_scores.dm
+
+
+
+
+ /datum /award /score/hardcore_random How many times did we survive being a cripple?
+ /datum /award /score/maintenance_pill How many maintenance pills did you eat?
+ /datum /award /score/intento_score How high of a score on the Intento did we get?
+
+
+
diff --git a/code/datums/announcers/_announcer.html b/code/datums/announcers/_announcer.html
new file mode 100644
index 0000000000000..202fc338b7d3d
--- /dev/null
+++ b/code/datums/announcers/_announcer.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/datums/announcers/_announcer.dm - SPLURT Station 13
+
+
+
+
+code/datums/announcers/_announcer.dm
+
+
+
+
+ /datum/centcom_announcer Data holder for the announcers that can be used in a game, this can be used to have alternative announcements outside of the default e.g.the intern
+
+
+
diff --git a/code/datums/brain_damage/split_personality.html b/code/datums/brain_damage/split_personality.html
new file mode 100644
index 0000000000000..5f0568a40be6b
--- /dev/null
+++ b/code/datums/brain_damage/split_personality.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/datums/brain_damage/split_personality.dm - SPLURT Station 13
+
+
+
+
+code/datums/brain_damage/split_personality.dm
+
+
+
+
+ /datum /brain_trauma/severe/split_personality/brainwashing BRAINWASHING
+
+
+
diff --git a/code/datums/browser.html b/code/datums/browser.html
new file mode 100644
index 0000000000000..1c54ffed2b4fa
--- /dev/null
+++ b/code/datums/browser.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/datums/browser.dm - SPLURT Station 13
+
+
+
+
+code/datums/browser.dm
+
+
+
+
+ /proc/tgalert
+ DEPRECATED: USE tgui_alert(...) INSTEAD
+
+
+
diff --git a/code/datums/callback.html b/code/datums/callback.html
new file mode 100644
index 0000000000000..b4bcd057f93ee
--- /dev/null
+++ b/code/datums/callback.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+ code/datums/callback.dm - SPLURT Station 13
+
+
+
+
+code/datums/callback.dm
+
+
+
+
+ /datum/callback A datum that holds a proc to be called on another object, used to track proccalls to other objects
+ /datum /callback_select Helper datum for the select callbacks proc
+ /proc/callback_select
+ Runs a list of callbacks asyncronously, returning only when all have finished
+
+
+
diff --git a/code/datums/chatmessage.html b/code/datums/chatmessage.html
new file mode 100644
index 0000000000000..e4c42a271e506
--- /dev/null
+++ b/code/datums/chatmessage.html
@@ -0,0 +1,83 @@
+
+
+
+
+
+
+ code/datums/chatmessage.dm - SPLURT Station 13
+
+
+
+
+code/datums/chatmessage.dm
+
+
+
+Define Details
+CHAT_LAYER_MAX_Z
+
+
+
+ The number of z-layer 'slices' usable by the chat message layering
CHAT_LAYER_Z_STEP
+
+
+
+ Maximum precision of float before rounding errors occur (in this context)
CHAT_MESSAGE_APPROX_LHEIGHT
+
+
+
+ Approximate height in pixels of an 'average' line, used for height decay
CHAT_MESSAGE_EOL_FADE
+
+
+
+ How long the chat message's end of life fading animation will occur for
CHAT_MESSAGE_EXP_DECAY
+
+
+
+ Factor of how much the message index (number of messages) will account to exponential decay
CHAT_MESSAGE_HEIGHT_DECAY
+
+
+
+ Factor of how much height will account to exponential decay
CHAT_MESSAGE_ICON_SIZE
+
+
+
+ The dimensions of the chat message icons
CHAT_MESSAGE_LIFESPAN
+
+
+
+ How long the chat message will exist prior to any exponential decay
CHAT_MESSAGE_MAX_LENGTH
+
+
+
+ Max length of chat message in characters
CHAT_MESSAGE_SPAWN_TIME
+
+
+
+ How long the chat message's spawn-in animation will occur for
CHAT_MESSAGE_WIDTH
+
+
+
+ Max width of chat message in pixels
+
+
+
diff --git a/code/datums/components.html b/code/datums/components.html
new file mode 100644
index 0000000000000..84df175141cc2
--- /dev/null
+++ b/code/datums/components.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+ code/datums/components/README.md - SPLURT Station 13
+
+
+
+
+Datum Component System (DCS) code/datums/components/README.md
+
+
+
+
+ Concept
+Loosely adapted from /vg/. This is an entity component system for adding behaviours to datums when inheritance doesn't quite cut it. By using signals and events instead of direct inheritance, you can inject behaviours without hacky overloads. It requires a different method of thinking, but is not hard to use correctly. If a behaviour can have application across more than one thing. Make it generic, make it a component. Atom/mob/obj event? Give it a signal, and forward it's arguments with a SendSignal()
call. Now every component that want's to can also know about this happening.
+See this thread for an introduction to the system as a whole.
+See/Define signals and their arguments in __DEFINES\components.dm
+
+
+
diff --git a/code/datums/components/_component.html b/code/datums/components/_component.html
new file mode 100644
index 0000000000000..1c8f00142f467
--- /dev/null
+++ b/code/datums/components/_component.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/datums/components/_component.dm - SPLURT Station 13
+
+
+
+
+code/datums/components/_component.dm
+
+
+
+
+
+
+
diff --git a/code/datums/components/area_sound_manager.html b/code/datums/components/area_sound_manager.html
new file mode 100644
index 0000000000000..b60fa767ae2b2
--- /dev/null
+++ b/code/datums/components/area_sound_manager.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/datums/components/area_sound_manager.dm - SPLURT Station 13
+
+
+
+
+code/datums/components/area_sound_manager.dm
+
+
+
+
+
+
+
diff --git a/code/datums/components/butchering.html b/code/datums/components/butchering.html
new file mode 100644
index 0000000000000..b962eee23358a
--- /dev/null
+++ b/code/datums/components/butchering.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/datums/components/butchering.dm - SPLURT Station 13
+
+
+
+
+code/datums/components/butchering.dm
+
+
+
+
+ /datum /component /butchering/recycler Special snowflake component only used for the recycler.
+
+
+
diff --git a/code/datums/components/combat_mode.html b/code/datums/components/combat_mode.html
new file mode 100644
index 0000000000000..debfeddfec371
--- /dev/null
+++ b/code/datums/components/combat_mode.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+ code/datums/components/combat_mode.dm - SPLURT Station 13
+
+
+
+
+code/datums/components/combat_mode.dm
+
+
+
+
+ /datum/component/combat_mode Combat mode component. It makes the user face whichever atom the mouse pointer is hovering,
+amongst other things designed outside of this file, namely PvP and PvE stuff, hence the name.
+Can be toggled on and off by clicking the screen hud object or by pressing the assigned hotkey (default 'C')
+ /atom/movable/screen/combattoggle The screen button.
+
+
+
diff --git a/code/datums/components/crafting/glassware/glassware.html b/code/datums/components/crafting/glassware/glassware.html
new file mode 100644
index 0000000000000..2a7ccc6ed7402
--- /dev/null
+++ b/code/datums/components/crafting/glassware/glassware.html
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+ code/datums/components/crafting/glassware/glassware.dm - SPLURT Station 13
+
+
+
+
+code/datums/components/crafting/glassware/glassware.dm
+
+
+
+
+ /obj /item /glasswork/glass_base/dish Chem Disk
+ /obj /item /glasswork/glass_base/glass_lens Lens
+ /obj /item /glasswork/glass_base/spouty Spouty Flask
+ /obj /item /glasswork/glass_base/flask_small Small Bulb Flask
+ /obj /item /glasswork/glass_base/flask_large Large Bulb Flask
+ /obj /item /glasswork/glass_base/tea_plate Tea Plates
+ /obj /item /glasswork/glass_base/tea_cup Tea Cup
+
+
+
diff --git a/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.html b/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.html
new file mode 100644
index 0000000000000..7034deb4dd2d6
--- /dev/null
+++ b/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm - SPLURT Station 13
+
+
+
+
+code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm
+
+
+
+
+
+
+
diff --git a/code/datums/components/dejavu.html b/code/datums/components/dejavu.html
new file mode 100644
index 0000000000000..7eda983de2f40
--- /dev/null
+++ b/code/datums/components/dejavu.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/datums/components/dejavu.dm - SPLURT Station 13
+
+
+
+
+code/datums/components/dejavu.dm
+
+
+
+
+
+
+
diff --git a/code/datums/components/edible.html b/code/datums/components/edible.html
new file mode 100644
index 0000000000000..43599c47b2e01
--- /dev/null
+++ b/code/datums/components/edible.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ code/datums/components/edible.dm - SPLURT Station 13
+
+
+
+
+code/datums/components/edible.dm
+
+
+
+
+ This component makes it possible to make things edible. What this means is that you can take a bite or force someone to take a bite (in the case of items).
+These items take a specific time to eat, and can do most of the things our original food items could.
+Behavior that's still missing from this component that original food items had that should either be put into seperate components or somewhere else:
+Components:
+Drying component (jerky etc)
+Customizable component (custom pizzas etc)
+Processable component (Slicing and cooking behavior essentialy, making it go from item A to B when conditions are met.)
+Dunkable component (Dunking things into reagent containers to absorb a specific amount of reagents)
+Misc:
+Something for cakes (You can store things inside)
+
+
+
diff --git a/code/datums/components/explodable.html b/code/datums/components/explodable.html
new file mode 100644
index 0000000000000..bfc0a2f930c78
--- /dev/null
+++ b/code/datums/components/explodable.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/datums/components/explodable.dm - SPLURT Station 13
+
+
+
+
+code/datums/components/explodable.dm
+
+
+
+
+ /datum/component/explodable Component specifically for explosion sensetive things, currently only applies to heat based explosions but can later perhaps be used for things that are dangerous to handle carelessly like nitroglycerin.
+
+
+
diff --git a/code/datums/components/fantasy/suffixes.html b/code/datums/components/fantasy/suffixes.html
new file mode 100644
index 0000000000000..ddd2571a813ec
--- /dev/null
+++ b/code/datums/components/fantasy/suffixes.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/datums/components/fantasy/suffixes.dm - SPLURT Station 13
+
+
+
+
+code/datums/components/fantasy/suffixes.dm
+
+
+
+
+ /datum /fantasy_affix/bane Good suffixes
+ /datum /fantasy_affix/fool Bad suffixes
+
+
+
diff --git a/code/datums/components/field_of_vision.html b/code/datums/components/field_of_vision.html
new file mode 100644
index 0000000000000..94f435308e016
--- /dev/null
+++ b/code/datums/components/field_of_vision.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+ code/datums/components/field_of_vision.dm - SPLURT Station 13
+
+
+
+
+code/datums/components/field_of_vision.dm
+
+
+
+
+ /datum/component/field_of_vision Field of Vision component. Does totally what you probably think it does,
+ergo preventing players from seeing what's behind them.
+ FOV_ANGLE_CHECK Byond doc is not entirely correct on the integrated arctan() proc.
+When both x and y are negative, the output is also negative, cycling clockwise instead of counter-clockwise.
+That's also why I am extensively using the SIMPLIFY_DEGREES macro here.
+ /atom/movable/fov_holder The shadow cone's mask and visual images holder which can't locate inside the mob,
+lest they inherit the mob opacity and cause a lot of hindrance
Define Details
+FOV_ANGLE_CHECK
+ (mob, target, zero_x_y_statement, success_statement)
+
+
+
+ Byond doc is not entirely correct on the integrated arctan() proc.
+When both x and y are negative, the output is also negative, cycling clockwise instead of counter-clockwise.
+That's also why I am extensively using the SIMPLIFY_DEGREES macro here.
+Overall this is the main macro that calculates wheter a target is within the shadow cone angle or not.
+
+
+
diff --git a/code/datums/components/footstep.html b/code/datums/components/footstep.html
new file mode 100644
index 0000000000000..30e7a952bac8d
--- /dev/null
+++ b/code/datums/components/footstep.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/datums/components/footstep.dm - SPLURT Station 13
+
+
+
+
+code/datums/components/footstep.dm
+
+
+
+
+
+
+
diff --git a/code/datums/components/fried.html b/code/datums/components/fried.html
new file mode 100644
index 0000000000000..cf0a61fa1fa0e
--- /dev/null
+++ b/code/datums/components/fried.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/datums/components/fried.dm - SPLURT Station 13
+
+
+
+
+code/datums/components/fried.dm
+
+
+
+
+ This component essentially encapsulates frying and utilizes the edible component
+This means fried items can work like regular ones, and generally the code is far less messy
+
+
+
diff --git a/code/datums/components/gps.html b/code/datums/components/gps.html
new file mode 100644
index 0000000000000..df83f0236609e
--- /dev/null
+++ b/code/datums/components/gps.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/datums/components/gps.dm - SPLURT Station 13
+
+
+
+
+code/datums/components/gps.dm
+
+
+
+
+
+
+
diff --git a/code/datums/components/identification.html b/code/datums/components/identification.html
new file mode 100644
index 0000000000000..5a1aac400a954
--- /dev/null
+++ b/code/datums/components/identification.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/datums/components/identification.dm - SPLURT Station 13
+
+
+
+
+code/datums/components/identification.dm
+
+
+
+
+
+
+
diff --git a/code/datums/components/killerqueen.html b/code/datums/components/killerqueen.html
new file mode 100644
index 0000000000000..a6d9a378b6b72
--- /dev/null
+++ b/code/datums/components/killerqueen.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/datums/components/killerqueen.dm - SPLURT Station 13
+
+
+
+
+code/datums/components/killerqueen.dm
+
+
+
+
+
+
+
diff --git a/code/datums/components/label.html b/code/datums/components/label.html
new file mode 100644
index 0000000000000..29b9bf1de6ba8
--- /dev/null
+++ b/code/datums/components/label.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/datums/components/label.dm - SPLURT Station 13
+
+
+
+
+code/datums/components/label.dm
+
+
+
+
+
+
+
diff --git a/code/datums/components/material_container.html b/code/datums/components/material_container.html
new file mode 100644
index 0000000000000..c687e700f7c90
--- /dev/null
+++ b/code/datums/components/material_container.html
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+ code/datums/components/material_container.dm - SPLURT Station 13
+
+
+
+
+code/datums/components/material_container.dm
+
+
+
+
+ This datum should be used for handling mineral contents of machines and whatever else is supposed to hold minerals and make use of them.
+Variables:
+amount - raw amount of the mineral this container is holding, calculated by the defined value MINERAL_MATERIAL_AMOUNT=2000.
+max_amount - max raw amount of mineral this container can hold.
+sheet_type - type of the mineral sheet the container handles, used for output.
+parent - object that this container is being used by, used for output.
+MAX_STACK_SIZE - size of a stack of mineral sheets. Constant.
+
+
+
diff --git a/code/datums/components/multiple_lives.html b/code/datums/components/multiple_lives.html
new file mode 100644
index 0000000000000..185272253cd40
--- /dev/null
+++ b/code/datums/components/multiple_lives.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/datums/components/multiple_lives.dm - SPLURT Station 13
+
+
+
+
+code/datums/components/multiple_lives.dm
+
+
+
+
+ /datum/component/multiple_lives A simple component that spawns a mob of the same type and transfers itself to it when parent dies.
+For more complex behaviors, use the COMSIG_ON_MULTIPLE_LIVES_RESPAWN comsig.
+
+
+
diff --git a/code/datums/components/nanites.html b/code/datums/components/nanites.html
new file mode 100644
index 0000000000000..8517e93341299
--- /dev/null
+++ b/code/datums/components/nanites.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/datums/components/nanites.dm - SPLURT Station 13
+
+
+
+
+code/datums/components/nanites.dm
+
+
+
+
+
+
+
diff --git a/code/datums/components/omen.html b/code/datums/components/omen.html
new file mode 100644
index 0000000000000..9ccea1f1c154f
--- /dev/null
+++ b/code/datums/components/omen.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/datums/components/omen.dm - SPLURT Station 13
+
+
+
+
+code/datums/components/omen.dm
+
+
+
+
+
+
+
diff --git a/code/datums/components/plumbing/_plumbing.html b/code/datums/components/plumbing/_plumbing.html
new file mode 100644
index 0000000000000..0658f536f0044
--- /dev/null
+++ b/code/datums/components/plumbing/_plumbing.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/datums/components/plumbing/_plumbing.dm - SPLURT Station 13
+
+
+
+
+code/datums/components/plumbing/_plumbing.dm
+
+
+
+
+
+
+
diff --git a/code/datums/components/plumbing/filter.html b/code/datums/components/plumbing/filter.html
new file mode 100644
index 0000000000000..c5f1d38928652
--- /dev/null
+++ b/code/datums/components/plumbing/filter.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/datums/components/plumbing/filter.dm - SPLURT Station 13
+
+
+
+
+code/datums/components/plumbing/filter.dm
+
+
+
+
+ /datum/component/plumbing/filter The magical plumbing component used by the chemical filters. The different supply connects behave differently depending on the filters set on the chemical filter
+
+
+
diff --git a/code/datums/components/riding.html b/code/datums/components/riding.html
new file mode 100644
index 0000000000000..4652eee502bfb
--- /dev/null
+++ b/code/datums/components/riding.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/datums/components/riding.dm - SPLURT Station 13
+
+
+
+
+code/datums/components/riding.dm
+
+
+
+
+ /datum /component /riding/human Yes, I said humans. No, this won't end well...
+
+
+
diff --git a/code/datums/components/storage/concrete/tcg.html b/code/datums/components/storage/concrete/tcg.html
new file mode 100644
index 0000000000000..e028c4420af3b
--- /dev/null
+++ b/code/datums/components/storage/concrete/tcg.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/datums/components/storage/concrete/tcg.dm - SPLURT Station 13
+
+
+
+
+code/datums/components/storage/concrete/tcg.dm
+
+
+
+
+
+
+
diff --git a/code/datums/components/tackle.html b/code/datums/components/tackle.html
new file mode 100644
index 0000000000000..434228104a54e
--- /dev/null
+++ b/code/datums/components/tackle.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/datums/components/tackle.dm - SPLURT Station 13
+
+
+
+
+code/datums/components/tackle.dm
+
+
+
+
+
+
+
diff --git a/code/datums/components/thermite.html b/code/datums/components/thermite.html
new file mode 100644
index 0000000000000..0603006301c8b
--- /dev/null
+++ b/code/datums/components/thermite.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/datums/components/thermite.dm - SPLURT Station 13
+
+
+
+
+code/datums/components/thermite.dm
+
+
+
+
+
+
+
diff --git a/code/datums/components/twitch_plays.html b/code/datums/components/twitch_plays.html
new file mode 100644
index 0000000000000..de336ab65f20c
--- /dev/null
+++ b/code/datums/components/twitch_plays.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/datums/components/twitch_plays.dm - SPLURT Station 13
+
+
+
+
+code/datums/components/twitch_plays.dm
+
+
+
+
+
+
+
diff --git a/code/datums/components/twohanded.html b/code/datums/components/twohanded.html
new file mode 100644
index 0000000000000..d204ef8ccd228
--- /dev/null
+++ b/code/datums/components/twohanded.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/datums/components/twohanded.dm - SPLURT Station 13
+
+
+
+
+code/datums/components/twohanded.dm
+
+
+
+
+
+
+
diff --git a/code/datums/components/uplink.html b/code/datums/components/uplink.html
new file mode 100644
index 0000000000000..aa5635ed5c9d1
--- /dev/null
+++ b/code/datums/components/uplink.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/datums/components/uplink.dm - SPLURT Station 13
+
+
+
+
+code/datums/components/uplink.dm
+
+
+
+
+
+
+
diff --git a/code/datums/components/virtual_reality.html b/code/datums/components/virtual_reality.html
new file mode 100644
index 0000000000000..741804375f0b4
--- /dev/null
+++ b/code/datums/components/virtual_reality.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/datums/components/virtual_reality.dm - SPLURT Station 13
+
+
+
+
+code/datums/components/virtual_reality.dm
+
+
+
+
+ /datum/component/virtual_reality The virtual reality turned component.
+Originally created to overcome issues of mob polymorphing locking the player inside virtual reality
+and allow for a more "immersive" virtual reality in a virtual reality experience.
+It relies on comically complex order of logic, expect things to break if procs such as mind/transfer_to() are revamped.
+In short, a barebone not so hardcoded VR framework.
+If you plan to add more devices that make use of this component, remember to isolate their code outta here where possible.
+
+
+
diff --git a/code/datums/datum.html b/code/datums/datum.html
new file mode 100644
index 0000000000000..b43f042e34bec
--- /dev/null
+++ b/code/datums/datum.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ code/datums/datum.dm - SPLURT Station 13
+
+
+
+
+code/datums/datum.dm
+
+
+
+
+ /datum The absolute base class for everything
+ /proc/json_serialize_datum
+ Convert a datum into a json blob
+ /proc/json_deserialize_datum
+ Convert a list of json to datum
+ /proc/end_cooldown
+ Callback called by a timer to end an associative-list-indexed cooldown.
+ /proc/reset_cooldown
+ Proc used by stoppable timers to end a cooldown before the time has ran out.
+
+
+
diff --git a/code/datums/dna.html b/code/datums/dna.html
new file mode 100644
index 0000000000000..d38368d561999
--- /dev/null
+++ b/code/datums/dna.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/datums/dna.dm - SPLURT Station 13
+
+
+
+
+code/datums/dna.dm
+
+
+
+
+
+
+
diff --git a/code/datums/ductnet.html b/code/datums/ductnet.html
new file mode 100644
index 0000000000000..21fbf9f14d50f
--- /dev/null
+++ b/code/datums/ductnet.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/datums/ductnet.dm - SPLURT Station 13
+
+
+
+
+code/datums/ductnet.dm
+
+
+
+
+ /datum/ductnet We handle the unity part of plumbing. We track who is connected to who.
+
+
+
diff --git a/code/datums/elements/_element.html b/code/datums/elements/_element.html
new file mode 100644
index 0000000000000..93f6c1f718337
--- /dev/null
+++ b/code/datums/elements/_element.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/datums/elements/_element.dm - SPLURT Station 13
+
+
+
+
+code/datums/elements/_element.dm
+
+
+
+
+ /datum/element A holder for simple behaviour that can be attached to many different types
+
+
+
diff --git a/code/datums/elements/bed_tucking.html b/code/datums/elements/bed_tucking.html
new file mode 100644
index 0000000000000..0e199476b6523
--- /dev/null
+++ b/code/datums/elements/bed_tucking.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/datums/elements/bed_tucking.dm - SPLURT Station 13
+
+
+
+
+code/datums/elements/bed_tucking.dm
+
+
+
+
+
+
+
diff --git a/code/datums/elements/connect_loc.html b/code/datums/elements/connect_loc.html
new file mode 100644
index 0000000000000..250d90be22e70
--- /dev/null
+++ b/code/datums/elements/connect_loc.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/datums/elements/connect_loc.dm - SPLURT Station 13
+
+
+
+
+code/datums/elements/connect_loc.dm
+
+
+
+
+ /datum/element/connect_loc This element hooks a signal onto the loc the current object is on.
+When the object moves, it will unhook the signal and rehook it to the new object.
+
+
+
diff --git a/code/datums/elements/dwarfism.html b/code/datums/elements/dwarfism.html
new file mode 100644
index 0000000000000..beb052129761d
--- /dev/null
+++ b/code/datums/elements/dwarfism.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/datums/elements/dwarfism.dm - SPLURT Station 13
+
+
+
+
+code/datums/elements/dwarfism.dm
+
+
+
+
+ /datum /element /dwarfism Very similar to squish, but for dwarves and shorties
+
+
+
diff --git a/code/datums/elements/firestacker.html b/code/datums/elements/firestacker.html
new file mode 100644
index 0000000000000..ea0ae8419e7ff
--- /dev/null
+++ b/code/datums/elements/firestacker.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/datums/elements/firestacker.dm - SPLURT Station 13
+
+
+
+
+code/datums/elements/firestacker.dm
+
+
+
+
+
+
+
diff --git a/code/datums/elements/item_scaling.html b/code/datums/elements/item_scaling.html
new file mode 100644
index 0000000000000..63b117e9724be
--- /dev/null
+++ b/code/datums/elements/item_scaling.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/datums/elements/item_scaling.dm - SPLURT Station 13
+
+
+
+
+code/datums/elements/item_scaling.dm
+
+
+
+
+
+
+
diff --git a/code/datums/elements/screentips.html b/code/datums/elements/screentips.html
new file mode 100644
index 0000000000000..e3b2a050a890a
--- /dev/null
+++ b/code/datums/elements/screentips.html
@@ -0,0 +1,118 @@
+
+
+
+
+
+
+ code/datums/elements/screentips/README.md - SPLURT Station 13
+
+
+
+
+Contextual screentips (and when to not use this folder) code/datums/elements/screentips/README.md
+
+
+
+
+ Contextual screentips provide information in the form of text at the top of your screen to inform you of the possibilities of an item. The "contextual" here refers to this being handled entirely through code, what it displays and when is completely up to you.
+The elements (and this folder)
+This folder provides several useful shortcuts to be able to handle 95% of situations.
+/datum/element/contextual_screentip_bare_hands
+This element is used to display screentips when the user hovers over the object with nothing in their active hand.
+It takes parameters in the form of both non-combat mode and, optionally, combat mode.
+Example:
+/obj/machinery/firealarm/Initialize(mapload)
+ . = ..()
+
+ AddElement( \
+ /datum/element/contextual_screentip_bare_hands, \
+ lmb_text = list(INTENT_HELP = "Turn on"), \
+ rmb_text = list(INTENT_HELP = "Turn off"), \
+ )
+
+This will display "LMB: Turn on | RMB: Turn off" when the user hovers over a fire alarm with an empty active hand.
+/datum/element/contextual_screentip_tools
+This element takes a map of tool behaviors to context lists . These will be displayed when the user hovers over the object with an item that has the tool behavior.
+Example:
+/obj/structure/table/Initialize(mapload)
+ if (!(flags_1 & NODECONSTRUCT_1))
+ var/static/list/tool_behaviors = list(
+ TOOL_SCREWDRIVER = list(
+ SCREENTIP_CONTEXT_LMB = list(INTENT_ANY = "Disassemble"),
+ ),
+
+ TOOL_WRENCH = list(
+ SCREENTIP_CONTEXT_LMB = list(INTENT_ANY = "Deconstruct"),
+ ),
+ )
+
+ AddElement(/datum/element/contextual_screentip_tools, tool_behaviors)
+
+This will display "LMB: Deconstruct" when the user hovers over a table with a wrench.
+/datum/element/contextual_screentip_item_typechecks
+This element takes a map of item typepaths to context lists . These will be displayed when the user hovers over the object with the selected item.
+Example:
+/obj/item/restraints/handcuffs/cable/Initialize(mapload)
+ . = ..()
+
+ var/static/list/hovering_item_typechecks = list(
+ /obj/item/stack/rods = list(
+ SCREENTIP_CONTEXT_LMB = list(INTENT_ANY = "Craft wired rod"),
+ ),
+
+ /obj/item/stack/sheet/iron = list(
+ SCREENTIP_CONTEXT_LMB = list(INTENT_ANY = "Craft bola"),
+ ),
+ )
+
+ AddElement(/datum/element/contextual_screentip_item_typechecks, hovering_item_typechecks)
+
+This will display "LMB: Craft bola" when the user hovers over cable restraints with metal in their hand.
+The basic system (and when to not use this folder)
+The basic system acknowledges the following two interactions:
+Self-defining items (Type A)
+These are items that are defined by their behavior. These should define their contextual text within themselves, and not in their targets.
+
+Stun batons (LMB to stun, RMB to harm)
+Syringes (LMB to inject, RMB to draw)
+Health analyzers (LMB to scan for health/wounds [another piece of context], RMB to scans for chemicals)
+
+Receiving action defining objects (Type B)
+These are objects (not necessarily items) that are defined by what happens to them. These should define their contextual text within themselves, and not in their operating tools.
+
+Tables (RMB with wrench to deconstruct)
+Construction objects (LMB with glass to put in screen for computers)
+Carbon copies (RMB to take a copy)
+
+
+Both of these are supported, and can be hooked to through several means.
+Note that you must return CONTEXTUAL_SCREENTIP_SET
if you change the contextual screentip at all , otherwise you may not see it.
+COMSIG_ITEM_REQUESTING_CONTEXT_FOR_TARGET
+This signal is registered on items , and receives the hovering object , provided in the form of obj/item/source, list/context, atom/target, mob/living/user
.
+/atom/proc/register_item_context()
, and /atom/proc/add_item_context()
+/atom/proc/add_item_context()
is a proc intended to be overridden to easily create Type-B interactions (ones where atoms are hovered over by items). It receives the exact same arguments as COMSIG_ITEM_REQUESTING_CONTEXT_FOR_TARGET
: obj/item/source, list/context, atom/target, mob/living/user
.
+In order for your add_item_context()
method to be run, you must call register_item_context()
.
+COMSIG_ATOM_REQUESTING_CONTEXT_FROM_ITEM
+This signal is registered on atoms , and receives what the user is hovering with , provided in the form of atom/source, list/context, obj/item/held_item, mob/living/user
.
+/atom/proc/register_context()
, and /atom/proc/add_context()
+/atom/proc/add_context()
is a proc intended to be overridden to easily create Type-B interactions (ones where atoms are hovered over by items). It receives the exact same arguments as COMSIG_ATOM_REQUESTING_CONTEXT_FROM_ITEM
: atom/source, list/context, obj/item/held_item, mob/living/user
.
+In order for your add_context()
method to be run, you must call register_context()
.
+
+When using any of these methods, you will receive a mutable context list.
+Context lists
+Context lists are lists with keys mapping from SCREENTIP_CONTEXT_*
to a string. You can find these keys in code/__DEFINES/screentips.dm
.
+The signals and add_context()
variants mutate the list directly, while shortcut elements will just have you pass them in directly.
+For example:
+context[SCREENTIP_CONTEXT_LMB] = "Open"
+context[SCREENTIP_CONTEXT_RMB] = "Destroy"
+
+
+
+
diff --git a/code/datums/elements/screentips/contextual_screentip_bare_hands.html b/code/datums/elements/screentips/contextual_screentip_bare_hands.html
new file mode 100644
index 0000000000000..9e802217f96e9
--- /dev/null
+++ b/code/datums/elements/screentips/contextual_screentip_bare_hands.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/datums/elements/screentips/contextual_screentip_bare_hands.dm - SPLURT Station 13
+
+
+
+
+code/datums/elements/screentips/contextual_screentip_bare_hands.dm
+
+
+
+
+ /datum/element/contextual_screentip_bare_hands Apply basic contextual screentips when the user hovers over this item with an empty hand.
+A "Type B" interaction.
+This stacks with other contextual screentip elements, though you may want to register the signal/flag manually at that point for performance.
+
+
+
diff --git a/code/datums/elements/screentips/contextual_screentip_item_typechecks.html b/code/datums/elements/screentips/contextual_screentip_item_typechecks.html
new file mode 100644
index 0000000000000..8aa04e0b12179
--- /dev/null
+++ b/code/datums/elements/screentips/contextual_screentip_item_typechecks.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/datums/elements/screentips/contextual_screentip_item_typechecks.dm - SPLURT Station 13
+
+
+
+
+code/datums/elements/screentips/contextual_screentip_item_typechecks.dm
+
+
+
+
+ /datum/element/contextual_screentip_item_typechecks Apply basic contextual screentips when the user hovers over this item with a provided item.
+A "Type B" interaction.
+This stacks with other contextual screentip elements, though you may want to register the signal/flag manually at that point for performance.
+
+
+
diff --git a/code/datums/elements/screentips/contextual_screentip_sharpness.html b/code/datums/elements/screentips/contextual_screentip_sharpness.html
new file mode 100644
index 0000000000000..4a6b7e2f2703b
--- /dev/null
+++ b/code/datums/elements/screentips/contextual_screentip_sharpness.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/datums/elements/screentips/contextual_screentip_sharpness.dm - SPLURT Station 13
+
+
+
+
+code/datums/elements/screentips/contextual_screentip_sharpness.dm
+
+
+
+
+ /datum/element/contextual_screentip_sharpness Apply basic contextual screentips when the user hovers over this item with an item of the given tool behavior.
+A "Type B" interaction.
+This stacks with other contextual screentip elements, though you may want to register the signal/flag manually at that point for performance.
+
+
+
diff --git a/code/datums/elements/screentips/contextual_screentip_tools.html b/code/datums/elements/screentips/contextual_screentip_tools.html
new file mode 100644
index 0000000000000..aa70154769b86
--- /dev/null
+++ b/code/datums/elements/screentips/contextual_screentip_tools.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/datums/elements/screentips/contextual_screentip_tools.dm - SPLURT Station 13
+
+
+
+
+code/datums/elements/screentips/contextual_screentip_tools.dm
+
+
+
+
+ /datum/element/contextual_screentip_tools Apply basic contextual screentips when the user hovers over this item with an item of the given tool behavior.
+A "Type B" interaction.
+This stacks with other contextual screentip elements, though you may want to register the signal/flag manually at that point for performance.
+
+
+
diff --git a/code/datums/elements/strippable.html b/code/datums/elements/strippable.html
new file mode 100644
index 0000000000000..e346f63927369
--- /dev/null
+++ b/code/datums/elements/strippable.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ code/datums/elements/strippable.dm - SPLURT Station 13
+
+
+
+
+code/datums/elements/strippable.dm
+
+
+
+
+
+
+
diff --git a/code/datums/elements/swimming.html b/code/datums/elements/swimming.html
new file mode 100644
index 0000000000000..b76c4b2194724
--- /dev/null
+++ b/code/datums/elements/swimming.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/datums/elements/swimming.dm - SPLURT Station 13
+
+
+
+
+code/datums/elements/swimming.dm
+
+
+
+
+ /datum /element /swimming Just for marking when someone's swimming.
+
+
+
diff --git a/code/datums/elements/weather_listener.html b/code/datums/elements/weather_listener.html
new file mode 100644
index 0000000000000..a0e1254ab7f33
--- /dev/null
+++ b/code/datums/elements/weather_listener.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/datums/elements/weather_listener.dm - SPLURT Station 13
+
+
+
+
+code/datums/elements/weather_listener.dm
+
+
+
+
+ /datum /element /weather_listener This element just handles creating and destroying an area sound manager that's hooked into weather stuff
+
+
+
diff --git a/code/datums/explosion2.html b/code/datums/explosion2.html
new file mode 100644
index 0000000000000..5aa05e384e802
--- /dev/null
+++ b/code/datums/explosion2.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/datums/explosion2.dm - SPLURT Station 13
+
+
+
+
+code/datums/explosion2.dm
+
+
+
+
+
+
+
diff --git a/code/datums/forced_movement.html b/code/datums/forced_movement.html
new file mode 100644
index 0000000000000..4e9350f84cf01
--- /dev/null
+++ b/code/datums/forced_movement.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/datums/forced_movement.dm - SPLURT Station 13
+
+
+
+
+code/datums/forced_movement.dm
+
+
+
+
+ /datum /forced_movement Each tick goes through one full cycle.
+
+
+
diff --git a/code/datums/helper_datums/stack_end_detector.html b/code/datums/helper_datums/stack_end_detector.html
new file mode 100644
index 0000000000000..3b97066bf83f8
--- /dev/null
+++ b/code/datums/helper_datums/stack_end_detector.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/datums/helper_datums/stack_end_detector.dm - SPLURT Station 13
+
+
+
+
+code/datums/helper_datums/stack_end_detector.dm
+
+
+
+
+ /datum/stack_end_detector Stack End Detector.
+Can detect if a given code stack has exited, used by the mc for stack overflow detection.
+ /datum/stack_canary Stack canary. Will go away if the stack it was primed by is ended by byond for return or stack overflow reasons.
+
+
+
diff --git a/code/datums/mapgen/JungleGenerator.html b/code/datums/mapgen/JungleGenerator.html
new file mode 100644
index 0000000000000..a80f312a09efe
--- /dev/null
+++ b/code/datums/mapgen/JungleGenerator.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/datums/mapgen/JungleGenerator.dm - SPLURT Station 13
+
+
+
+
+code/datums/mapgen/JungleGenerator.dm
+
+
+
+
+
+
+
diff --git a/code/datums/mapgen/_MapGenerator.html b/code/datums/mapgen/_MapGenerator.html
new file mode 100644
index 0000000000000..54ff2bd16c304
--- /dev/null
+++ b/code/datums/mapgen/_MapGenerator.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/datums/mapgen/_MapGenerator.dm - SPLURT Station 13
+
+
+
+
+code/datums/mapgen/_MapGenerator.dm
+
+
+
+
+ /datum/map_generator This type is responsible for any map generation behavior that is done in areas, override this to allow for area-specific map generation. This generation is ran by areas in initialize.
+
+
+
diff --git a/code/datums/mapgen/biomes/_biome.html b/code/datums/mapgen/biomes/_biome.html
new file mode 100644
index 0000000000000..6e4e0f65cf13d
--- /dev/null
+++ b/code/datums/mapgen/biomes/_biome.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/datums/mapgen/biomes/_biome.dm - SPLURT Station 13
+
+
+
+
+code/datums/mapgen/biomes/_biome.dm
+
+
+
+
+ /datum/biome This datum handles the transitioning from a turf to a specific biome, and handles spawning decorative structures and mobs.
+
+
+
diff --git a/code/datums/martial/cqc.html b/code/datums/martial/cqc.html
new file mode 100644
index 0000000000000..4bd6c4ee8f51f
--- /dev/null
+++ b/code/datums/martial/cqc.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/datums/martial/cqc.dm - SPLURT Station 13
+
+
+
+
+code/datums/martial/cqc.dm
+
+
+
+
+
+
+
diff --git a/code/datums/materials/_material.html b/code/datums/materials/_material.html
new file mode 100644
index 0000000000000..a8a1aef0233a6
--- /dev/null
+++ b/code/datums/materials/_material.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/datums/materials/_material.dm - SPLURT Station 13
+
+
+
+
+code/datums/materials/_material.dm
+
+
+
+
+ Material datum
+Simple datum which is instanced once per type and is used for every object of said material. It has a variety of variables that define behavior. Subtyping from this makes it easier to create your own materials.
+
+
+
diff --git a/code/datums/materials/basemats.html b/code/datums/materials/basemats.html
new file mode 100644
index 0000000000000..5b52d094e2730
--- /dev/null
+++ b/code/datums/materials/basemats.html
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+ code/datums/materials/basemats.dm - SPLURT Station 13
+
+
+
+
+code/datums/materials/basemats.dm
+
+
+
+
+ /datum /material /iron Has no special properties.
+ /datum /material /glass Breaks extremely easily but is transparent.
+ /datum /material /silver Has no special properties. Could be good against vampires in the future perhaps.
+ /datum /material /gold Slight force decrease. It's gold, it's soft as fuck.
+ /datum /material /diamond Small force increase, for diamond swords
+ /datum /material /uranium Is slightly radioactive
+ /datum /material /plasma Adds firestacks on hit (Still needs support to turn into gas on destruction)
+ /datum /material /bluespace Can cause bluespace effects on use. (Teleportation) (Not yet implemented)
+ /datum /material /bananium Honks and slips
+ /datum /material /titanium Mediocre force increase
+ /datum /material /plastic Force decrease
+ /datum /material /biomass Force decrease and mushy sound effect. (Not yet implemented)
+ /datum /material /adamantine Stronk force increase
+ /datum /material /mythril RPG Magic. (Admin only)
+
+
+
diff --git a/code/datums/materials/meat.html b/code/datums/materials/meat.html
new file mode 100644
index 0000000000000..d54a1d6b6d821
--- /dev/null
+++ b/code/datums/materials/meat.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/datums/materials/meat.dm - SPLURT Station 13
+
+
+
+
+code/datums/materials/meat.dm
+
+
+
+
+ /datum /material /meat It's gross, gets the name of it's owner, and is all kinds of fucked up
+
+
+
diff --git a/code/datums/mocking/client.html b/code/datums/mocking/client.html
new file mode 100644
index 0000000000000..ff30ec4cf2418
--- /dev/null
+++ b/code/datums/mocking/client.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/datums/mocking/client.dm - SPLURT Station 13
+
+
+
+
+code/datums/mocking/client.dm
+
+
+
+
+
+
+
diff --git a/code/datums/mutations/sight.html b/code/datums/mutations/sight.html
new file mode 100644
index 0000000000000..524f119e295fa
--- /dev/null
+++ b/code/datums/mutations/sight.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/datums/mutations/sight.dm - SPLURT Station 13
+
+
+
+
+code/datums/mutations/sight.dm
+
+
+
+
+ /datum /mutation/human/thermal Thermal Vision lets you see mobs through walls
+ /datum /mutation/human/thermal/x_ray X-ray Vision lets you see through walls.
+
+
+
diff --git a/code/datums/outfit.html b/code/datums/outfit.html
new file mode 100644
index 0000000000000..ac210797eabba
--- /dev/null
+++ b/code/datums/outfit.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/datums/outfit.dm - SPLURT Station 13
+
+
+
+
+code/datums/outfit.dm
+
+
+
+
+ /datum/outfit This is a clean system of applying outfits to mobs, if you need to equip someone in a uniform
+this is the way to do it cleanly and properly.
+
+
+
diff --git a/code/datums/skills/_skill.html b/code/datums/skills/_skill.html
new file mode 100644
index 0000000000000..bf5e2067f7cbc
--- /dev/null
+++ b/code/datums/skills/_skill.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/datums/skills/_skill.dm - SPLURT Station 13
+
+
+
+
+code/datums/skills/_skill.dm
+
+
+
+
+
+
+
diff --git a/code/datums/skills/_skill_holder.html b/code/datums/skills/_skill_holder.html
new file mode 100644
index 0000000000000..0a7033fba7a1b
--- /dev/null
+++ b/code/datums/skills/_skill_holder.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/datums/skills/_skill_holder.dm - SPLURT Station 13
+
+
+
+
+code/datums/skills/_skill_holder.dm
+
+
+
+
+ /datum/skill_holder Skill holder datums
+All procs are tied to the mind, since they are always expected to have a skill holder anyway.
+
+
+
diff --git a/code/datums/skills/_skill_modifier.html b/code/datums/skills/_skill_modifier.html
new file mode 100644
index 0000000000000..73415d23a255a
--- /dev/null
+++ b/code/datums/skills/_skill_modifier.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/datums/skills/_skill_modifier.dm - SPLURT Station 13
+
+
+
+
+code/datums/skills/_skill_modifier.dm
+
+
+
+
+ /datum/skill_modifier Base skill modifier datum, used to modify a player skills without directly touching their values, levels and affinity
+and cause lots of edge cases. These are fairly simple overall... make a subtype though, don't use this one.
+
+
+
diff --git a/code/datums/skills/modifiers/job.html b/code/datums/skills/modifiers/job.html
new file mode 100644
index 0000000000000..ad9465befc723
--- /dev/null
+++ b/code/datums/skills/modifiers/job.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/datums/skills/modifiers/job.dm - SPLURT Station 13
+
+
+
+
+code/datums/skills/modifiers/job.dm
+
+
+
+
+
+
+
diff --git a/code/datums/soullink.html b/code/datums/soullink.html
new file mode 100644
index 0000000000000..b515670c09c9e
--- /dev/null
+++ b/code/datums/soullink.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/datums/soullink.dm - SPLURT Station 13
+
+
+
+
+code/datums/soullink.dm
+
+
+
+
+
+
+
diff --git a/code/datums/station_traits/_station_trait.html b/code/datums/station_traits/_station_trait.html
new file mode 100644
index 0000000000000..7357c7d74781f
--- /dev/null
+++ b/code/datums/station_traits/_station_trait.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/datums/station_traits/_station_trait.dm - SPLURT Station 13
+
+
+
+
+code/datums/station_traits/_station_trait.dm
+
+
+
+
+ /datum/station_trait Base class of station traits. These are used to influence rounds in one way or the other by influencing the levers of the station.
+
+
+
diff --git a/code/datums/station_traits/negative_traits.html b/code/datums/station_traits/negative_traits.html
new file mode 100644
index 0000000000000..56f71de494ee2
--- /dev/null
+++ b/code/datums/station_traits/negative_traits.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/datums/station_traits/negative_traits.dm - SPLURT Station 13
+
+
+
+
+code/datums/station_traits/negative_traits.dm
+
+
+
+
+ /datum /station_trait /revenge_of_pun_pun The bot's language holder - so we can randomize and change their language
+
+
+
diff --git a/code/datums/status_effects/debuffs.html b/code/datums/status_effects/debuffs.html
new file mode 100644
index 0000000000000..d47eacdfc101b
--- /dev/null
+++ b/code/datums/status_effects/debuffs.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/datums/status_effects/debuffs.dm - SPLURT Station 13
+
+
+
+
+code/datums/status_effects/debuffs.dm
+
+
+
+Define Details
+HEALING_SLEEP_DEFAULT
+
+
+
+ The damage healed per tick while sleeping without any modifiers
+
+
+
diff --git a/code/datums/status_effects/status_effect.html b/code/datums/status_effects/status_effect.html
new file mode 100644
index 0000000000000..12fc51ce87b5b
--- /dev/null
+++ b/code/datums/status_effects/status_effect.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/datums/status_effects/status_effect.dm - SPLURT Station 13
+
+
+
+
+code/datums/status_effects/status_effect.dm
+
+
+
+
+ /datum /status_effect /grouped Status effect from multiple sources, when all sources are removed, so is the effect
+Adds itself to sources and destroys itself if one exists already, there are never multiple
+
+
+
diff --git a/code/datums/status_effects/wound_effects.html b/code/datums/status_effects/wound_effects.html
new file mode 100644
index 0000000000000..006980721f8ca
--- /dev/null
+++ b/code/datums/status_effects/wound_effects.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/datums/status_effects/wound_effects.dm - SPLURT Station 13
+
+
+
+
+code/datums/status_effects/wound_effects.dm
+
+
+
+
+
+
+
diff --git a/code/datums/view.html b/code/datums/view.html
new file mode 100644
index 0000000000000..8f46c03dcdfa1
--- /dev/null
+++ b/code/datums/view.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/datums/view.dm - SPLURT Station 13
+
+
+
+
+code/datums/view.dm
+
+
+
+
+ /datum /view_data Container for client viewsize
+
+
+
diff --git a/code/datums/weather/weather.html b/code/datums/weather/weather.html
new file mode 100644
index 0000000000000..0471238f95a3c
--- /dev/null
+++ b/code/datums/weather/weather.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/datums/weather/weather.dm - SPLURT Station 13
+
+
+
+
+code/datums/weather/weather.dm
+
+
+
+
+ /datum/weather Causes weather to occur on a z level in certain area types
+
+
+
diff --git a/code/datums/wounds/_scars.html b/code/datums/wounds/_scars.html
new file mode 100644
index 0000000000000..e1180294b57d2
--- /dev/null
+++ b/code/datums/wounds/_scars.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/datums/wounds/_scars.dm - SPLURT Station 13
+
+
+
+
+code/datums/wounds/_scars.dm
+
+
+
+
+ /datum/scar scars are cosmetic datums that are assigned to bodyparts once they recover from wounds. Each wound type and severity have their own descriptions for what the scars
+look like, and then each body part has a list of "specific locations" like your elbow or wrist or wherever the scar can appear, to make it more interesting than "right arm"
+
+
+
diff --git a/code/game/area/areas.html b/code/game/area/areas.html
new file mode 100644
index 0000000000000..fa6b829451ec4
--- /dev/null
+++ b/code/game/area/areas.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/game/area/areas.dm - SPLURT Station 13
+
+
+
+
+code/game/area/areas.dm
+
+
+
+
+ /area A grouping of tiles into a logical space, mostly used by map editors
+ /proc/process_teleport_locs
+ Generate a list of turfs you can teleport to from the areas list
+
+
+
diff --git a/code/game/area/areas/edina.html b/code/game/area/areas/edina.html
new file mode 100644
index 0000000000000..4bf5029506288
--- /dev/null
+++ b/code/game/area/areas/edina.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/game/area/areas/edina.dm - SPLURT Station 13
+
+
+
+
+code/game/area/areas/edina.dm
+
+
+
+
+ /area /edina/street Nova Edina Streets
+ /area /edina/crew_quarters Edina specific derivitives
+ /obj /effect/mapping_helpers/planet_z Mapping helper
+
+
+
diff --git a/code/game/area/areas/mining.html b/code/game/area/areas/mining.html
new file mode 100644
index 0000000000000..50323187d3f90
--- /dev/null
+++ b/code/game/area/areas/mining.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/game/area/areas/mining.dm - SPLURT Station 13
+
+
+
+
+code/game/area/areas/mining.dm
+
+
+
+
+ /area /mine Mine areas
+ /area /lavaland Lavaland Areas
+ /area /icemoon Ice Moon Areas
+
+
+
diff --git a/code/game/area/areas/shuttles.html b/code/game/area/areas/shuttles.html
new file mode 100644
index 0000000000000..c0019331f9c8e
--- /dev/null
+++ b/code/game/area/areas/shuttles.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/game/area/areas/shuttles.dm - SPLURT Station 13
+
+
+
+
+code/game/area/areas/shuttles.dm
+
+
+
+
+ /area /shuttle/syndicate Multi-area shuttles
+Syndicate infiltrator
+ /area /shuttle/pirate Pirate Shuttle
+ /area /shuttle/hunter Bounty Hunter Shuttles
+ /area /shuttle/abandoned White Ship
+ /area /shuttle/transit Single-area shuttles
+
+
+
diff --git a/code/game/atoms.html b/code/game/atoms.html
new file mode 100644
index 0000000000000..2aac2e2417c08
--- /dev/null
+++ b/code/game/atoms.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+ code/game/atoms.dm - SPLURT Station 13
+
+
+
+
+code/game/atoms.dm
+
+
+
+
+ /proc/log_combat
+ Log a combat message in the attack log
+ /proc/log_wound
+ log_wound() is for when someone is attacked and suffers a wound. Note that this only captures wounds from damage, so smites/forced wounds aren't logged, as well as demotions like cuts scabbing over
+
+
+
diff --git a/code/game/gamemodes/dynamic.html b/code/game/gamemodes/dynamic.html
new file mode 100644
index 0000000000000..02735aa233975
--- /dev/null
+++ b/code/game/gamemodes/dynamic.html
@@ -0,0 +1,212 @@
+
+
+
+
+
+
+ code/game/gamemodes/dynamic/readme.md - SPLURT Station 13
+
+
+
+
+Dynamic Mode code/game/gamemodes/dynamic/readme.md
+
+
+
+
+ Roundstart
+Dynamic rolls threat based on a special sauce formula:
+
+[dynamic_curve_width][/datum/controller/global_vars/var/dynamic_curve_width] * tan((3.1416 * (rand() - 0.5) * 57.2957795)) + [dynamic_curve_centre][/datum/controller/global_vars/var/dynamic_curve_centre]
+
+This threat is split into two separate budgets--round_start_budget
and mid_round_budget
. For example, a round with 50 threat might be split into a 30 roundstart budget, and a 20 midround budget. The roundstart budget is used to apply antagonists applied on readied players when the roundstarts (/datum/dynamic_ruleset/roundstart
). The midround budget is used for two types of rulesets:
+
+/datum/dynamic_ruleset/midround
- Rulesets that apply to either existing alive players, or to ghosts. Think Blob or Space Ninja, which poll ghosts asking if they want to play as these roles.
+/datum/dynamic_ruleset/latejoin
- Rulesets that apply to the next player that joins. Think Syndicate Infiltrator, which converts a player just joining an existing round into traitor.
+
+This split is done with a similar method, known as the "lorentz distribution" , exists to create a bell curve that ensures that while most rounds will have a threat level around ~50, chaotic and tame rounds still exist for variety.
+The process of creating these numbers occurs in /datum/game_mode/dynamic/proc/generate_threat
(for creating the threat level) and /datum/game_mode/dynamic/proc/generate_budgets
(for splitting the threat level into budgets).
+Deciding roundstart threats
+In /datum/game_mode/dynamic/proc/roundstart()
(called when no admin chooses the rulesets explicitly), Dynamic uses the available roundstart budget to pick threats. This is done through the following system:
+
+All roundstart rulesets (remember, /datum/dynamic_ruleset/roundstart
) are put into an associative list with their weight as the values (drafted_rules
).
+Until there is either no roundstart budget left, or until there is no ruleset we can choose from with the available threat, a pickweight
is done based on the drafted_rules. If the same threat is picked twice, it will "scale up". The meaning of this depends on the ruleset itself, using the scaled_times
variable; traitors for instance will create more the higher they scale.
+
+If a ruleset is chosen with the HIGH_IMPACT_RULESET
in its flags
, then all other HIGH_IMPACT_RULESET
s will be removed from drafted_rules
. This is so that only one can ever be chosen.
+If a ruleset has LONE_RULESET
in its flags
, then it will be removed from drafted_rules
. This is to ensure it will only ever be picked once. An example of this in use is Wizard, to avoid creating multiple wizards.
+
+
+After all roundstart threats are chosen, /datum/dynamic_ruleset/proc/picking_roundstart_rule
is called for each, passing in the ruleset and the number of times it is scaled.
+
+In this stage, pre_execute
is called, which is the function that will determine what players get what antagonists. If this function returns FALSE for whatever reason (in the case of an error), then its threat is refunded.
+
+
+
+After this process is done, any leftover roundstart threat will be given to the existing midround budget (done in /datum/game_mode/dynamic/pre_setup()
).
+Deciding midround threats
+Latejoin and midround injection cooldowns are set using exponential distribution between
+
+5 minutes and 25 for latejoin (configurable as latejoin_delay_min and latejoin_delay_max)
+15 minutes and 35 for midround (configurable as midround_delay_min and midround_delay_max)
+
+this value is then added to world.time
and assigned to the injection cooldown variables.
+rigged_roundstart is called instead if there are forced rules (an admin set the mode)
+
+[setup_parameters][/datum/game_mode/proc/setup_parameters]()
+pre_setup ()
+[roundstart][/datum/game_mode/dynamic/proc/roundstart]() OR rigged_roundstart ()
+picking_roundstart_rule (drafted_rules)
+post_setup ()
+
+Rule Processing
+Calls rule_process on every rule which is in the current_rules list.
+Every sixty seconds, update_playercounts()
+Midround injection time is checked against world.time to see if an injection should happen.
+If midround injection time is lower than world.time, it updates playercounts again, then tries to inject and generates a new cooldown regardless of whether a rule is picked.
+Latejoin
+make_antag_chance(newPlayer) -> (For each latespawn rule...)
+-> acceptable(living players, threat_level) -> trim_candidates() -> ready(forced=FALSE)
+**If true, add to drafted rules
+**NOTE that acceptable uses threat_level not threat!
+**NOTE Latejoin timer is ONLY reset if at least one rule was drafted.
+**NOTE the new_player.dm AttemptLateSpawn() calls OnPostSetup for all roles (unless assigned role is MODE)
+(After collecting all draftble rules...)
+-> picking_latejoin_ruleset(drafted_rules) -> spend threat -> ruleset.execute()
+Midround
+process() -> (For each midround rule...
+-> acceptable(living players, threat_level) -> trim_candidates() -> ready(forced=FALSE)
+(After collecting all draftble rules...)
+-> picking_midround_ruleset(drafted_rules) -> spend threat -> ruleset.execute()
+Forced
+For latejoin, it simply sets forced_latejoin_rule
+make_antag_chance(newPlayer) -> trim_candidates() -> ready(forced=TRUE) **NOTE no acceptable() call
+For midround, calls the below proc with forced = TRUE
+picking_specific_rule(ruletype,forced) -> forced OR acceptable(living_players, threat_level) -> trim_candidates() -> ready(forced) -> spend threat -> execute()
+**NOTE specific rule can be called by RS traitor->MR autotraitor w/ forced=FALSE
+**NOTE that due to short circuiting acceptable() need not be called if forced.
+Ruleset
+acceptable(population,threat) just checks if enough threat_level for population indice.
+**NOTE that we currently only send threat_level as the second arg, not threat.
+ready(forced) checks if enough candidates and calls the map's map_ruleset(dynamic_ruleset) at the parent level
+trim_candidates() varies significantly according to the ruleset type
+Roundstart: All candidates are new_player mobs. Check them for standard stuff: connected, desire role, not banned, etc.
+**NOTE Roundstart deals with both candidates (trimmed list of valid players) and mode.candidates (everyone readied up). Don't confuse them!
+Latejoin: Only one candidate, the latejoiner. Standard checks.
+Midround: Instead of building a single list candidates, candidates contains four lists: living, dead, observing, and living antags. Standard checks in trim_list(list).
+Midround - Rulesets have additional types
+/from_ghosts: execute() -> send_applications() -> review_applications() -> finish_setup(mob/newcharacter, index) -> setup_role(role)
+**NOTE: execute() here adds dead players and observers to candidates list
+Configuration and variables Configuration
+Configuration can be done through a config/dynamic.json
file. One is provided as example in the codebase. This config file, loaded in /datum/game_mode/dynamic/pre_setup()
, directly overrides the values in the codebase, and so is perfect for making some rulesets harder/easier to get, turning them off completely, changing how much they cost, etc.
+The format of this file is:
+{
+ "Dynamic": {
+ /* Configuration in here will directly override `/datum/game_mode/dynamic` itself. */
+ /* Keys are variable names, values are their new values. */
+ },
+
+ "Roundstart": {
+ /* Configuration in here will apply to `/datum/dynamic_ruleset/roundstart` instances. */
+ /* Keys are the ruleset names, values are another associative list with keys being variable names and values being new values. */
+ "Wizard": {
+ /* I, a head admin, have died to wizard, and so I made it cost a lot more threat than it does in the codebase. */
+ "cost": 80
+ }
+ },
+
+ "Midround": {
+ /* Same as "Roundstart", but for `/datum/dynamic_ruleset/midround` instead. */
+ },
+
+ "Latejoin": {
+ /* Same as "Roundstart", but for `/datum/dynamic_ruleset/latejoin` instead. */
+ }
+}
+
+Note: Comments are not possible in this format, and are just in this document for the sake of readability.
+Rulesets
+Rulesets have the following variables notable to developers and those interested in tuning.
+
+required_candidates
- The number of people that must be willing (in their preferences) to be an antagonist with this ruleset. If the candidates do not meet this requirement, then the ruleset will not bother to be drafted.
+antag_cap
- Judges the amount of antagonists to apply, for both solo and teams. Note that some antagonists (such as traitors, lings, heretics, etc) will add more based on how many times they've been scaled. Written as a linear equation--ceil(x/denominator) + offset, or as a fixed constant. If written as a linear equation, will be in the form of list("denominator" = denominator, "offset" = offset)
.
+
+Examples include:
+
+Traitor: antag_cap = list("denominator" = 24)
. This means that for every 24 players, 1 traitor will be added (assuming no scaling).
+Nuclear Emergency: antag_cap = list("denominator" = 18, "offset" = 1)
. For every 18 players, 1 nuke op will be added. Starts at 1, meaning at 30 players, 3 nuke ops will be created, rather than 2.
+Revolution: antag_cap = 3
. There will always be 3 rev-heads, no matter what.
+
+
+
+
+minimum_required_age
- The minimum age in order to apply for the ruleset.
+weight
- How likely this ruleset is to be picked. A higher weight results in a higher chance of drafting.
+cost
- The initial cost of the ruleset. This cost is taken from either the roundstart or midround budget, depending on the ruleset.
+scaling_cost
- Cost for every additional application of this ruleset.
+
+Suppose traitors has a cost
of 8, and a scaling_cost
of 5. This means that buying 1 application of the traitor ruleset costs 8 threat, but buying two costs 13 (8 + 5). Buying it a third time is 18 (8 + 5 + 5), etc.
+
+
+pop_per_requirement
- The range of population each value in requirements
represents. By default, this is 6.
+
+If the value is five the range is 0-4, 5-9, 10-14, 15-19, 20-24, 25-29, 30-34, 35-39, 40-54, 45+.
+If it is six the range is 0-5, 6-11, 12-17, 18-23, 24-29, 30-35, 36-41, 42-47, 48-53, 54+.
+If it is seven the range is 0-6, 7-13, 14-20, 21-27, 28-34, 35-41, 42-48, 49-55, 56-62, 63+.
+
+
+requirements
- A list that represents, per population range (see: pop_per_requirement
), how much threat is required to consider this ruleset. This is independent of how much it'll actually cost. This uses threat level , not the budget--meaning if a round has 50 threat level, but only 10 points of round start threat, a ruleset with a requirement of 40 can still be picked if it can be bought.
+
+Suppose wizard has a requirements
of list(90,90,70,40,30,20,10,10,10,10)
. This means that, at 0-5 and 6-11 players, A station must have 90 threat in order for a wizard to be possible. At 12-17, 70 threat is required instead, etc.
+
+
+restricted_roles
- A list of jobs that can't be drafted by this ruleset. For example, cyborgs cannot be changelings, and so are in the restricted_roles
.
+protected_roles
- Serves the same purpose of restricted_roles
, except it can be turned off through configuration (protect_roles_from_antagonist
). For example, security officers shouldn't be made traitor, so they are in Traitor's protected_roles
.
+
+When considering putting a role in protected_roles
or restricted_roles
, the rule of thumb is if it is technically infeasible to support that job in that role. There's no technical reason a security officer can't be a traitor, and so they are simply in protected_roles
. There are technical reasons a cyborg can't be a changeling, so they are in restricted_roles
instead.
+
+
+
+Dynamic
+The "Dynamic" key has the following configurable values:
+
+pop_per_requirement
- The default value of pop_per_requirement
for any ruleset that does not explicitly set it. Defaults to 6.
+latejoin_delay_min
, latejoin_delay_max
- The time range, in deciseconds (take your seconds, and multiply by 10), for a latejoin to attempt rolling. Once this timer is finished, a new one will be created within the same range.
+
+Suppose you have a latejoin_delay_min
of 600 (60 seconds, 1 minute) and a latejoin_delay_max
of 1800 (180 seconds, 3 minutes). Once the round starts, a random number in this range will be picked--let's suppose 1.5 minutes. After 1.5 minutes, Dynamic will decide if a latejoin threat should be created (a probability of /datum/game_mode/dynamic/proc/get_injection_chance()
). Regardless of its decision, a new timer will be started within the range of 1 to 3 minutes, repeatedly.
+
+
+midround_delay_min
, midround_delay_max
- Same as latejoin_delay_min
and latejoin_delay_max
, except for midround threats instead of latejoin ones.
+higher_injection_chance
, higher_injection_chance_minimum_threat
- Manipulates the injection chance (/datum/game_mode/dynamic/proc/get_injection_chance()
). If the current midround budget is above higher_injection_chance_minimum_threat
, then this chance will be increased by higher_injection_chance
.
+
+For example: suppose you have a higher_injection_chance_minimum_threat
of 70, and a higher_injection_chance
of 15. This means that, if when a midround threat is trying to roll, there is 75 midround budget left, then the injection chance will go up 15%.
+
+
+lower_injection_chance
, lower_injection_chance_minimum_threat
- The inverse of the higher_injection_chance
variables. If the current midround budget is below lower_injection_chance
, then the chance is lowered by lower_injection_chance_minimum_threat
.
+
+For example: suppose you have a lower_injection_chance_minimum_threat
of 30, and a lower_injection_chance
of 15. This means if there is 20 midround budget left, then the chance will lower by 15%.
+
+
+threat_curve_centre
- A number between -5 and +5. A negative value will give a more peaceful round and a positive value will give a round with higher threat.
+threat_curve_width
- A number between 0.5 and 4. Higher value will favour extreme rounds and lower value rounds closer to the average.
+roundstart_split_curve_centre
- A number between -5 and +5. Equivalent to threat_curve_centre, but for the budget split. A negative value will weigh towards midround rulesets, and a positive value will weight towards roundstart ones.
+roundstart_split_curve_width
- A number between 0.5 and 4. Equivalent to threat_curve_width, but for the budget split. Higher value will favour more variance in splits and lower value rounds closer to the average.
+random_event_hijack_minimum
- The minimum amount of time for antag random events to be hijacked. (See Random Event Hijacking )
+random_event_hijack_maximum
- The maximum amount of time for antag random events to be hijacked. (See Random Event Hijacking )
+hijacked_random_event_injection_chance
- The amount of injection chance to give to Dynamic when a random event is hijacked. (See Random Event Hijacking )
+
+Random Event "Hijacking"
+Random events have the potential to be hijacked by Dynamic to keep the pace of midround injections, while also allowing greenshifts to contain some antagonists.
+/datum/round_event_control/dynamic_should_hijack
is a variable to random events to allow Dynamic to hijack them, and defaults to FALSE. This is set to TRUE for random events that spawn antagonists.
+In /datum/game_mode/dynamic/on_pre_random_event
(in dynamic_hijacking.dm
), Dynamic hooks to random events. If the dynamic_should_hijack
variable is TRUE, the following sequence of events occurs:
+
+n
is a random value between random_event_hijack_minimum
and random_event_hijack_maximum
. Injection chance, should it need to be raised, is increased by hijacked_random_event_injection_chance
.
+
+
+
diff --git a/code/game/gamemodes/dynamic/dynamic_logging.html b/code/game/gamemodes/dynamic/dynamic_logging.html
new file mode 100644
index 0000000000000..be860128f933e
--- /dev/null
+++ b/code/game/gamemodes/dynamic/dynamic_logging.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/game/gamemodes/dynamic/dynamic_logging.dm - SPLURT Station 13
+
+
+
+
+code/game/gamemodes/dynamic/dynamic_logging.dm
+
+
+
+
+
+
+
diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.html b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.html
new file mode 100644
index 0000000000000..f2e0add2b8f56
--- /dev/null
+++ b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.html
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+ code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm - SPLURT Station 13
+
+
+
+
+code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm
+
+
+
+Define Details
+MALF_ION_PROB
+
+
+
+ Probability the AI going malf will be accompanied by an ion storm announcement and some ion laws.
REPLACE_LAW_WITH_ION_PROB
+
+
+
+ The probability to replace an existing law with an ion law instead of adding a new ion law.
+
+
+
diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.html b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.html
new file mode 100644
index 0000000000000..619b6f838fc2f
--- /dev/null
+++ b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm - SPLURT Station 13
+
+
+
+
+code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm
+
+
+
+
+ /datum /dynamic_ruleset /roundstart /traitor Probability the AI going malf will be accompanied by an ion storm announcement and some ion laws.
+The probability to replace an existing law with an ion law instead of adding a new ion law.
+
+
+
diff --git a/code/game/machinery/civilian_bountys.html b/code/game/machinery/civilian_bountys.html
new file mode 100644
index 0000000000000..043eacf663b95
--- /dev/null
+++ b/code/game/machinery/civilian_bountys.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+ code/game/machinery/civilian_bountys.dm - SPLURT Station 13
+
+
+
+
+code/game/machinery/civilian_bountys.dm
+
+
+
+
+ /obj /machinery /piratepad/civilian Pad for the Civilian Bounty Control.
+ /obj/machinery/computer/piratepad_control/civilian Computer for assigning new civilian bounties, and sending bounties for collection.
+ /obj/item/bounty_cube Upon completion of a civilian bounty, one of these is created. It is sold to cargo to give the cargo budget bounty money, and the person who completed it cash.
+ /obj /item /civ_bounty_beacon Beacon to launch a new bounty setup when activated.
+
+
+
diff --git a/code/game/machinery/computer/dna_console.html b/code/game/machinery/computer/dna_console.html
new file mode 100644
index 0000000000000..dd8e174b2f3b0
--- /dev/null
+++ b/code/game/machinery/computer/dna_console.html
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+ code/game/machinery/computer/dna_console.dm - SPLURT Station 13
+
+
+
+
+code/game/machinery/computer/dna_console.dm
+
+
+
+Define Details
+INJECTOR_TIMEOUT
+
+
+
+ Base timeout for creating mutation activators and other injectors
JOKER_TIMEOUT
+
+
+
+ Timeout for using the Joker feature to solve a gene in DNA Console
JOKER_UPGRADE
+
+
+
+ How much time DNA Scanner upgrade tiers remove from JOKER_TIMEOUT
NUMBER_OF_BUFFERS
+
+
+
+ Maximum number of genetic makeup storage slots in DNA Console
RADIATION_ACCURACY_MULTIPLIER
+
+
+
+ Large values reduce pulse accuracy and may pulse other enzymes than selected
RADIATION_DURATION_MAX
+
+
+
+ Maximum value for the radiation pulse duration when pulsing enzymes
RADIATION_IRRADIATION_MULTIPLIER
+
+
+
+ Multiplier for how much radiation received from DNA Console functionality
RADIATION_STRENGTH_MAX
+
+
+
+ Maximum value for radiaton strength when pulsing enzymes
RADIATION_STRENGTH_MULTIPLIER
+
+
+
+ Larger multipliers will affect the range of values when pulsing enzymes
SCRAMBLE_TIMEOUT
+
+
+
+ Timeout for DNA Scramble in DNA Consoles
SEARCH_ADV_INJ
+
+
+
+ Flag for the mutation ref search system. Search will include advanced injector mutations
SEARCH_DISKETTE
+
+
+
+ Flag for the mutation ref search system. Search will include diskette storage
SEARCH_OCCUPANT
+
+
+
+ Flag for the mutation ref search system. Search will include scanner occupant
SEARCH_STORED
+
+
+
+ Flag for the mutation ref search system. Search will include console storage
+ Special status indicating a scanner occupant is transforming eg. from monkey to human
+
+
+
diff --git a/code/game/machinery/cryopod.html b/code/game/machinery/cryopod.html
new file mode 100644
index 0000000000000..1b7b8a6015977
--- /dev/null
+++ b/code/game/machinery/cryopod.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/game/machinery/cryopod.dm - SPLURT Station 13
+
+
+
+
+code/game/machinery/cryopod.dm
+
+
+
+
+ /obj /item /storage/box/blue/cryostorage_items The box
+
+
+
diff --git a/code/game/machinery/deployable.html b/code/game/machinery/deployable.html
new file mode 100644
index 0000000000000..f626d9c62b670
--- /dev/null
+++ b/code/game/machinery/deployable.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/game/machinery/deployable.dm - SPLURT Station 13
+
+
+
+
+code/game/machinery/deployable.dm
+
+
+
+
+ /obj /structure/barricade/wooden BARRICADE TYPES
+
+
+
diff --git a/code/game/machinery/lightswitch.html b/code/game/machinery/lightswitch.html
new file mode 100644
index 0000000000000..a1d1f9aba5d80
--- /dev/null
+++ b/code/game/machinery/lightswitch.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/game/machinery/lightswitch.dm - SPLURT Station 13
+
+
+
+
+code/game/machinery/lightswitch.dm
+
+
+
+
+ /obj /machinery /light_switch The light switch. Can have multiple per area.
+
+
+
diff --git a/code/game/machinery/limbgrower.html b/code/game/machinery/limbgrower.html
new file mode 100644
index 0000000000000..06cc278b05c0c
--- /dev/null
+++ b/code/game/machinery/limbgrower.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/game/machinery/limbgrower.dm - SPLURT Station 13
+
+
+
+
+code/game/machinery/limbgrower.dm
+
+
+
+
+ /obj/machinery/limbgrower The limbgrower. Makes organd and limbs with synthflesh and chems.
+See [limbgrower_designs.dm] for everything we can make.
+
+
+
diff --git a/code/game/machinery/porta_turret/portable_turret_cover.html b/code/game/machinery/porta_turret/portable_turret_cover.html
new file mode 100644
index 0000000000000..e72425a577307
--- /dev/null
+++ b/code/game/machinery/porta_turret/portable_turret_cover.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/game/machinery/porta_turret/portable_turret_cover.dm - SPLURT Station 13
+
+
+
+
+code/game/machinery/porta_turret/portable_turret_cover.dm
+
+
+
+
+
+
+
diff --git a/code/game/machinery/shieldgen.html b/code/game/machinery/shieldgen.html
new file mode 100644
index 0000000000000..f22aa53fea684
--- /dev/null
+++ b/code/game/machinery/shieldgen.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/game/machinery/shieldgen.dm - SPLURT Station 13
+
+
+
+
+code/game/machinery/shieldgen.dm
+
+
+
+
+
+
+
diff --git a/code/game/machinery/slotmachine.html b/code/game/machinery/slotmachine.html
new file mode 100644
index 0000000000000..40fe05a7e1c19
--- /dev/null
+++ b/code/game/machinery/slotmachine.html
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+ code/game/machinery/slotmachine.dm - SPLURT Station 13
+
+
+
+
+code/game/machinery/slotmachine.dm
+
+
+
+
+ SPIN_PRICE *
+| Slot Machines |
+| Original code by Glloyd |
+| Tgstation port by Miauw |
+*
Define Details
+SPIN_PRICE
+
+
+
+ *
+| Slot Machines |
+| Original code by Glloyd |
+| Tgstation port by Miauw |
+*
+
+
+
diff --git a/code/game/machinery/status_display.html b/code/game/machinery/status_display.html
new file mode 100644
index 0000000000000..f353cb62c2d2d
--- /dev/null
+++ b/code/game/machinery/status_display.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/game/machinery/status_display.dm - SPLURT Station 13
+
+
+
+
+code/game/machinery/status_display.dm
+
+
+
+
+
+
+
diff --git a/code/game/machinery/syndicatebomb.html b/code/game/machinery/syndicatebomb.html
new file mode 100644
index 0000000000000..5c33eafcd73cc
--- /dev/null
+++ b/code/game/machinery/syndicatebomb.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+ code/game/machinery/syndicatebomb.dm - SPLURT Station 13
+
+
+
+
+code/game/machinery/syndicatebomb.dm
+
+
+
+
+ /obj /machinery /syndicatebomb/training Bomb Subtypes
+ /obj /item /bombcore Bomb Cores
+ /obj /item /bombcore/training Bomb Core Subtypes
+ /obj /item /syndicatedetonator Syndicate Detonator (aka the big red button)
+
+
+
diff --git a/code/game/machinery/telecomms/broadcasting.html b/code/game/machinery/telecomms/broadcasting.html
new file mode 100644
index 0000000000000..938e8653fd480
--- /dev/null
+++ b/code/game/machinery/telecomms/broadcasting.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/game/machinery/telecomms/broadcasting.dm - SPLURT Station 13
+
+
+
+
+code/game/machinery/telecomms/broadcasting.dm
+
+
+
+
+ /datum/signal/subspace Here is the big, bad function that broadcasts a message given the appropriate
+parameters.
+
+
+
diff --git a/code/game/objects/effects/effect_system/effects_other.html b/code/game/objects/effects/effect_system/effects_other.html
new file mode 100644
index 0000000000000..c38b2ff8fdbf4
--- /dev/null
+++ b/code/game/objects/effects/effect_system/effects_other.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+ code/game/objects/effects/effect_system/effects_other.dm - SPLURT Station 13
+
+
+
+
+code/game/objects/effects/effect_system/effects_other.dm
+
+
+
+
+ /datum /effect_system/trail_follow ///// Attach a trail to any object, that spawns when it moves (like for the jetpack)
+just pass in the object to attach it to in set_up
+Then do start() to start it and stop() to stop it, obviously
+and don't call start() in a loop that will be repeated otherwise it'll get spammed!
+
+
+
diff --git a/code/game/objects/effects/effect_system/effects_smoke.html b/code/game/objects/effects/effect_system/effects_smoke.html
new file mode 100644
index 0000000000000..3eac08431b60f
--- /dev/null
+++ b/code/game/objects/effects/effect_system/effects_smoke.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/game/objects/effects/effect_system/effects_smoke.dm - SPLURT Station 13
+
+
+
+
+code/game/objects/effects/effect_system/effects_smoke.dm
+
+
+
+
+ /obj /effect/particle_effect/smoke SMOKE SYSTEMS
+
+
+
diff --git a/code/game/objects/effects/forcefields.html b/code/game/objects/effects/forcefields.html
new file mode 100644
index 0000000000000..180dfa92b4f66
--- /dev/null
+++ b/code/game/objects/effects/forcefields.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/game/objects/effects/forcefields.dm - SPLURT Station 13
+
+
+
+
+code/game/objects/effects/forcefields.dm
+
+
+
+
+ /obj /effect/forcefield/mime Mimewalls
+
+
+
diff --git a/code/game/objects/effects/spawners/lootdrop.html b/code/game/objects/effects/spawners/lootdrop.html
new file mode 100644
index 0000000000000..e93c10b56301c
--- /dev/null
+++ b/code/game/objects/effects/spawners/lootdrop.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/game/objects/effects/spawners/lootdrop.dm - SPLURT Station 13
+
+
+
+
+code/game/objects/effects/spawners/lootdrop.dm
+
+
+
+
+ /obj /effect/spawner/lootdrop/space/fancytool/engineonly Mail loot spawner. Some sort of random and rare building tool. No alien tech here.
+ /obj /effect/spawner/lootdrop/space/fancytool/advmedicalonly Mail loot spawner. Drop pool of advanced medical tools typically from research. Not endgame content.
+ /obj /effect/spawner/lootdrop/space/fancytool/raremedicalonly Mail loot spawner. Some sort of random and rare surgical tool. Alien tech found here.
+
+
+
diff --git a/code/game/objects/items/AI_modules.html b/code/game/objects/items/AI_modules.html
new file mode 100644
index 0000000000000..a1f7e596fc5e0
--- /dev/null
+++ b/code/game/objects/items/AI_modules.html
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+ code/game/objects/items/AI_modules.dm - SPLURT Station 13
+
+
+
+
+code/game/objects/items/AI_modules.dm
+
+
+
+
+ /obj /item /ai_module/supplied Modules
+ /obj /item /ai_module/supplied/safeguard Safeguard
+ /obj /item /ai_module/zeroth/oneHuman OneCrew
+ /obj /item /ai_module/supplied/protectStation ProtectStation
+ /obj /item /ai_module/supplied/quarantine Quarantine
+ /obj /item /ai_module/supplied/oxygen OxygenIsToxicToHumans
+ /obj /item /ai_module/supplied/freeform New Freeform
+ /obj /item /ai_module/remove Law Removal
+ /obj /item /ai_module/reset Reset
+ /obj /item /ai_module/reset/purge Purge
+ /obj /item /ai_module/core Full Core Boards
+ /obj /item /ai_module/core/full/asimov Asimov
+ /obj /item /ai_module/core/full/asimovpp Asimov++
+ /obj /item /ai_module/core/full/corp Corporate
+ /obj /item /ai_module/core/full/paladin P.A.L.A.D.I.N. 3.5e
+ /obj /item /ai_module/core/full/paladin_devotion P.A.L.A.D.I.N. 5e
+ /obj /item /ai_module/core/full/custom Custom
+ /obj /item /ai_module/core/full/tyrant T.Y.R.A.N.T.
+ /obj /item /ai_module/core/full/robocop Robocop
+ /obj /item /ai_module/core/full/antimov Antimov
+ /obj /item /ai_module/core/freeformcore Freeform Core
+ /obj /item /ai_module/core/full/overthrow Overthrow
+ /obj /item /ai_module/syndicate Hacked AI Module
+ /obj /item /ai_module/toyAI Ion Module
+ /obj /item /ai_module/core/full/drone Mother Drone
+ /obj /item /ai_module/core/full/hippocratic Robodoctor
+ /obj /item /ai_module/core/full/reporter Reporter
+ /obj /item /ai_module/core/full/thermurderdynamic Thermodynamic
+ /obj /item /ai_module/core/full/liveandletlive Live And Let Live
+ /obj /item /ai_module/core/full/balance Guardian of Balance
+ /obj /item /ai_module/core/full/hulkamania H.O.G.A.N.
+
+
+
diff --git a/code/game/objects/items/cigs_lighters.html b/code/game/objects/items/cigs_lighters.html
new file mode 100644
index 0000000000000..55b2247a0ebde
--- /dev/null
+++ b/code/game/objects/items/cigs_lighters.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/game/objects/items/cigs_lighters.dm - SPLURT Station 13
+
+
+
+
+code/game/objects/items/cigs_lighters.dm
+
+
+
+
+
+
+
diff --git a/code/game/objects/items/crayons.html b/code/game/objects/items/crayons.html
new file mode 100644
index 0000000000000..6f0a12607cb52
--- /dev/null
+++ b/code/game/objects/items/crayons.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/game/objects/items/crayons.dm - SPLURT Station 13
+
+
+
+
+code/game/objects/items/crayons.dm
+
+
+
+
+
+
+
diff --git a/code/game/objects/items/defib.html b/code/game/objects/items/defib.html
new file mode 100644
index 0000000000000..2aefbfa7ec809
--- /dev/null
+++ b/code/game/objects/items/defib.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/game/objects/items/defib.dm - SPLURT Station 13
+
+
+
+
+code/game/objects/items/defib.dm
+
+
+
+
+ /obj /item /disk/medical Defibrillator Disks
+
+
+
diff --git a/code/game/objects/items/devices/multitool.html b/code/game/objects/items/devices/multitool.html
new file mode 100644
index 0000000000000..6e5fe798f63ad
--- /dev/null
+++ b/code/game/objects/items/devices/multitool.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/game/objects/items/devices/multitool.dm - SPLURT Station 13
+
+
+
+
+code/game/objects/items/devices/multitool.dm
+
+
+
+
+ /obj /item /multitool Multitool -- A multitool is used for hacking electronic devices.
+
+
+
diff --git a/code/game/objects/items/devices/radio/radio.html b/code/game/objects/items/devices/radio/radio.html
new file mode 100644
index 0000000000000..f81dce0a35204
--- /dev/null
+++ b/code/game/objects/items/devices/radio/radio.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/game/objects/items/devices/radio/radio.dm - SPLURT Station 13
+
+
+
+
+code/game/objects/items/devices/radio/radio.dm
+
+
+
+
+
+
+
diff --git a/code/game/objects/items/devices/scanners.html b/code/game/objects/items/devices/scanners.html
new file mode 100644
index 0000000000000..479e0fbc1be8f
--- /dev/null
+++ b/code/game/objects/items/devices/scanners.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/game/objects/items/devices/scanners.dm - SPLURT Station 13
+
+
+
+
+code/game/objects/items/devices/scanners.dm
+
+
+
+
+ /proc/woundscan
+ Displays wounds with extended information on their status vs medscanners
+
+
+
diff --git a/code/game/objects/items/dice.html b/code/game/objects/items/dice.html
new file mode 100644
index 0000000000000..de193a79a386b
--- /dev/null
+++ b/code/game/objects/items/dice.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/game/objects/items/dice.dm - SPLURT Station 13
+
+
+
+
+code/game/objects/items/dice.dm
+
+
+
+
+
+
+
diff --git a/code/game/objects/items/granters.html b/code/game/objects/items/granters.html
new file mode 100644
index 0000000000000..0f490a5644f2b
--- /dev/null
+++ b/code/game/objects/items/granters.html
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+ code/game/objects/items/granters.dm - SPLURT Station 13
+
+
+
+
+code/game/objects/items/granters.dm
+
+
+
+
+ /obj /item /book/granter books that teach things (intrinsic actions like bar flinging, spells like fireball or smoke, or martial arts)
+ /obj /item /book/granter/trait TRAITS
+ /obj /item /book/granter/action ACTION BUTTONS
+ /obj /item /book/granter/spell SPELLS
+ /obj /item /book/granter/martial MARTIAL ARTS
+
+
+
diff --git a/code/game/objects/items/grenades/chem_grenade.html b/code/game/objects/items/grenades/chem_grenade.html
new file mode 100644
index 0000000000000..1c855992a9c98
--- /dev/null
+++ b/code/game/objects/items/grenades/chem_grenade.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/game/objects/items/grenades/chem_grenade.dm - SPLURT Station 13
+
+
+
+
+code/game/objects/items/grenades/chem_grenade.dm
+
+
+
+
+
+
+
diff --git a/code/game/objects/items/grenades/plastic.html b/code/game/objects/items/grenades/plastic.html
new file mode 100644
index 0000000000000..1004e6c249c16
--- /dev/null
+++ b/code/game/objects/items/grenades/plastic.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/game/objects/items/grenades/plastic.dm - SPLURT Station 13
+
+
+
+
+code/game/objects/items/grenades/plastic.dm
+
+
+
+
+
+
+
diff --git a/code/game/objects/items/hand_items.html b/code/game/objects/items/hand_items.html
new file mode 100644
index 0000000000000..ec9a334fa6ecc
--- /dev/null
+++ b/code/game/objects/items/hand_items.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/game/objects/items/hand_items.dm - SPLURT Station 13
+
+
+
+
+code/game/objects/items/hand_items.dm
+
+
+
+
+
+
+
diff --git a/code/game/objects/items/mail.html b/code/game/objects/items/mail.html
new file mode 100644
index 0000000000000..faa5715a61128
--- /dev/null
+++ b/code/game/objects/items/mail.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/game/objects/items/mail.dm - SPLURT Station 13
+
+
+
+
+code/game/objects/items/mail.dm
+
+
+
+
+
+
+
diff --git a/code/game/objects/items/manuals.html b/code/game/objects/items/manuals.html
new file mode 100644
index 0000000000000..20bcddeaef038
--- /dev/null
+++ b/code/game/objects/items/manuals.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/game/objects/items/manuals.dm - SPLURT Station 13
+
+
+
+
+code/game/objects/items/manuals.dm
+
+
+
+
+ /obj /item /book/manual MANUALS (BOOKS)
+
+
+
diff --git a/code/game/objects/items/melee/energy.html b/code/game/objects/items/melee/energy.html
new file mode 100644
index 0000000000000..11fcfc0d32ee3
--- /dev/null
+++ b/code/game/objects/items/melee/energy.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/game/objects/items/melee/energy.dm - SPLURT Station 13
+
+
+
+
+code/game/objects/items/melee/energy.dm
+
+
+
+
+ /obj /item /melee/transforming/energy/sword/cx/traitor Tatortot NEB /////////////// (same stats as regular esword)
+
+
+
diff --git a/code/game/objects/items/plushes.html b/code/game/objects/items/plushes.html
new file mode 100644
index 0000000000000..6e80509477c8f
--- /dev/null
+++ b/code/game/objects/items/plushes.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/game/objects/items/plushes.dm - SPLURT Station 13
+
+
+
+
+code/game/objects/items/plushes.dm
+
+
+
+
+ /obj /item /toy/plush /carpplushie If there are no snowflake plushies we'll default to base plush, so we grab from the valid list
+
+
+
diff --git a/code/game/objects/items/robot/ai_upgrades.html b/code/game/objects/items/robot/ai_upgrades.html
new file mode 100644
index 0000000000000..af0620f5688d6
--- /dev/null
+++ b/code/game/objects/items/robot/ai_upgrades.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/game/objects/items/robot/ai_upgrades.dm - SPLURT Station 13
+
+
+
+
+code/game/objects/items/robot/ai_upgrades.dm
+
+
+
+
+ /obj /item /malf_upgrade AI Upgrades
+
+
+
diff --git a/code/game/objects/items/robot/robot_items.html b/code/game/objects/items/robot/robot_items.html
new file mode 100644
index 0000000000000..9275b21c8e63d
--- /dev/null
+++ b/code/game/objects/items/robot/robot_items.html
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+ code/game/objects/items/robot/robot_items.dm - SPLURT Station 13
+
+
+
+
+code/game/objects/items/robot/robot_items.dm
+
+
+
+
+ /obj /item /borg Cyborg Spec Items
+ /obj /item /borg/sight HUD/SIGHT things
+ /obj /item /gripper Grippers oh god oh fuck
+ /obj /item /dogborg_tongue Dogborg stuff
+Mere cosmetic dogborg items, remnants of what were once the most annoying cyborg modules.
+
+
+
diff --git a/code/game/objects/items/stacks/sheets/leather.html b/code/game/objects/items/stacks/sheets/leather.html
new file mode 100644
index 0000000000000..f69568a52ed0a
--- /dev/null
+++ b/code/game/objects/items/stacks/sheets/leather.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/game/objects/items/stacks/sheets/leather.dm - SPLURT Station 13
+
+
+
+
+code/game/objects/items/stacks/sheets/leather.dm
+
+
+
+
+
+
+
diff --git a/code/game/objects/items/storage/boxes.html b/code/game/objects/items/storage/boxes.html
new file mode 100644
index 0000000000000..442d91068580b
--- /dev/null
+++ b/code/game/objects/items/storage/boxes.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/game/objects/items/storage/boxes.dm - SPLURT Station 13
+
+
+
+
+code/game/objects/items/storage/boxes.dm
+
+
+
+
+ /obj /item /storage/box/clown clown box & honkbot assembly
+
+
+
diff --git a/code/game/objects/items/summon.html b/code/game/objects/items/summon.html
new file mode 100644
index 0000000000000..1d512e2e177ba
--- /dev/null
+++ b/code/game/objects/items/summon.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ code/game/objects/items/summon.dm - SPLURT Station 13
+
+
+
+
+code/game/objects/items/summon.dm
+
+
+
+Define Details
+STATE_ATTACK
+
+
+
+ performing attack animation
STATE_IDLE
+
+
+
+ doing nothing/orbiting idly
STATE_RECOVER
+
+
+
+ performing animation between attacks
STATE_RESET
+
+
+
+ performing reset animation
+
+
+
diff --git a/code/game/objects/items/weaponry.html b/code/game/objects/items/weaponry.html
new file mode 100644
index 0000000000000..19b98aea3f5f7
--- /dev/null
+++ b/code/game/objects/items/weaponry.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/game/objects/items/weaponry.dm - SPLURT Station 13
+
+
+
+
+code/game/objects/items/weaponry.dm
+
+
+
+
+ /obj /item /bokken_blade BOKKEN CRAFTNG PIECES
+
+
+
diff --git a/code/game/objects/structures/beds_chairs/chair.html b/code/game/objects/structures/beds_chairs/chair.html
new file mode 100644
index 0000000000000..9e9fae2e496ab
--- /dev/null
+++ b/code/game/objects/structures/beds_chairs/chair.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/game/objects/structures/beds_chairs/chair.dm - SPLURT Station 13
+
+
+
+
+code/game/objects/structures/beds_chairs/chair.dm
+
+
+
+
+ /obj /structure/chair/greyscale Material chair
+
+
+
diff --git a/code/game/objects/structures/girders.html b/code/game/objects/structures/girders.html
new file mode 100644
index 0000000000000..21b4d38bdcf62
--- /dev/null
+++ b/code/game/objects/structures/girders.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/game/objects/structures/girders.dm - SPLURT Station 13
+
+
+
+
+code/game/objects/structures/girders.dm
+
+
+
+
+ /obj /structure/girder/cult cult girder
+
+
+
diff --git a/code/game/objects/structures/industrial_lift.html b/code/game/objects/structures/industrial_lift.html
new file mode 100644
index 0000000000000..b7ad83909ed83
--- /dev/null
+++ b/code/game/objects/structures/industrial_lift.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/game/objects/structures/industrial_lift.dm - SPLURT Station 13
+
+
+
+
+code/game/objects/structures/industrial_lift.dm
+
+
+
+
+
+
+
diff --git a/code/game/objects/structures/kitchen_spike.html b/code/game/objects/structures/kitchen_spike.html
new file mode 100644
index 0000000000000..b4674abd0d2d7
--- /dev/null
+++ b/code/game/objects/structures/kitchen_spike.html
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+ code/game/objects/structures/kitchen_spike.dm - SPLURT Station 13
+
+
+
+
+code/game/objects/structures/kitchen_spike.dm
+
+
+
+Define Details
+VIABLE_MOB_CHECK
+
+
+
+
+ Kitchen Spike
+
+
+
diff --git a/code/game/objects/structures/loom.html b/code/game/objects/structures/loom.html
new file mode 100644
index 0000000000000..8915aa34d1a04
--- /dev/null
+++ b/code/game/objects/structures/loom.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/game/objects/structures/loom.dm - SPLURT Station 13
+
+
+
+
+code/game/objects/structures/loom.dm
+
+
+
+
+ /obj/structure/loom This is a loom. It's usually made out of wood and used to weave fabric like durathread or cotton into their respective cloth types.
+
+
+
diff --git a/code/game/objects/structures/manned_turret.html b/code/game/objects/structures/manned_turret.html
new file mode 100644
index 0000000000000..c9e3e004cfdd5
--- /dev/null
+++ b/code/game/objects/structures/manned_turret.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/game/objects/structures/manned_turret.dm - SPLURT Station 13
+
+
+
+
+code/game/objects/structures/manned_turret.dm
+
+
+
+
+
+
+
diff --git a/code/game/objects/structures/safe.html b/code/game/objects/structures/safe.html
new file mode 100644
index 0000000000000..152fd051f2f99
--- /dev/null
+++ b/code/game/objects/structures/safe.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+ code/game/objects/structures/safe.dm - SPLURT Station 13
+
+
+
+
+code/game/objects/structures/safe.dm
+
+
+
+Define Details
+BROKEN_THRESHOLD
+
+
+
+ Explosion number threshold for opening safe
SOUND_CHANCE
+
+
+
+ Chance for a sound clue
+
+
+
diff --git a/code/game/objects/structures/statues.html b/code/game/objects/structures/statues.html
new file mode 100644
index 0000000000000..51257d407504b
--- /dev/null
+++ b/code/game/objects/structures/statues.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+ code/game/objects/structures/statues.dm - SPLURT Station 13
+
+
+
+
+code/game/objects/structures/statues.dm
+
+
+
+
+
+
+
diff --git a/code/game/objects/structures/tables_racks.html b/code/game/objects/structures/tables_racks.html
new file mode 100644
index 0000000000000..cbc355292e670
--- /dev/null
+++ b/code/game/objects/structures/tables_racks.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/game/objects/structures/tables_racks.dm - SPLURT Station 13
+
+
+
+
+code/game/objects/structures/tables_racks.dm
+
+
+
+
+
+
+
diff --git a/code/game/say.html b/code/game/say.html
new file mode 100644
index 0000000000000..c7bdedc2f1403
--- /dev/null
+++ b/code/game/say.html
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+ code/game/say.dm - SPLURT Station 13
+
+
+
+
+code/game/say.dm
+
+
+
+Define Details
+ENCODE_HTML_EMPHASIS
+ (input, char, html, varname)
+
+
+
+ Transforms the speech emphasis mods from /atom/movable/proc/say_emphasis into the appropriate HTML tags. Includes escaping.
+
+
+
diff --git a/code/game/sound.html b/code/game/sound.html
new file mode 100644
index 0000000000000..9136a982519f1
--- /dev/null
+++ b/code/game/sound.html
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+ code/game/sound.dm - SPLURT Station 13
+
+
+
+
+code/game/sound.dm
+
+
+
+
+ playsound
+playsound is a proc used to play a 3D sound in a specific range. This uses SOUND_RANGE + extra_range to determine that.
+source - Origin of sound
+soundin - Either a file, or a string that can be used to get an SFX
+vol - The volume of the sound, excluding falloff and pressure affection.
+vary - bool that determines if the sound changes pitch every time it plays
+extrarange - modifier for sound range. This gets added on top of SOUND_RANGE
+falloff_exponent - Rate of falloff for the audio. Higher means quicker drop to low volume. Should generally be over 1 to indicate a quick dive to 0 rather than a slow dive.
+frequency - playback speed of audio
+channel - The channel the sound is played at
+pressure_affected - Whether or not difference in pressure affects the sound (E.g. if you can hear in space)
+ignore_walls - Whether or not the sound can pass through walls.
+falloff_distance - Distance at which falloff begins. Sound is at peak volume (in regards to falloff) aslong as it is in this range.
+playsound
+playsound_local is a proc used to play a sound directly on a mob from a specific turf.
+This is called by playsound to send sounds to players, in which case it also gets the max_distance of that sound.
+turf_source - Origin of sound
+soundin - Either a file, or a string that can be used to get an SFX
+vol - The volume of the sound, excluding falloff
+vary - bool that determines if the sound changes pitch every time it plays
+frequency - playback speed of audio
+falloff_exponent - Rate of falloff for the audio. Higher means quicker drop to low volume. Should generally be over 1 to indicate a quick dive to 0 rather than a slow dive.
+channel - The channel the sound is played at
+pressure_affected - Whether or not difference in pressure affects the sound (E.g. if you can hear in space)
+max_distance - The peak distance of the sound, if this is a 3D sound
+falloff_distance - Distance at which falloff begins, if this is a 3D sound
+distance_multiplier - Can be used to multiply the distance at which the sound is heard
+ /proc/sound_to_playing_players
+ Citadel edit - Citadel reverb
+End
+
+
+
diff --git a/code/game/turfs/open/floor/catwalk_plating.html b/code/game/turfs/open/floor/catwalk_plating.html
new file mode 100644
index 0000000000000..bae45904c4fcb
--- /dev/null
+++ b/code/game/turfs/open/floor/catwalk_plating.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/game/turfs/open/floor/catwalk_plating.dm - SPLURT Station 13
+
+
+
+
+code/game/turfs/open/floor/catwalk_plating.dm
+
+
+
+
+
+
+
diff --git a/code/game/turfs/simulated/floor/plating/asteroid.html b/code/game/turfs/simulated/floor/plating/asteroid.html
new file mode 100644
index 0000000000000..1d7c54b34d777
--- /dev/null
+++ b/code/game/turfs/simulated/floor/plating/asteroid.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/game/turfs/simulated/floor/plating/asteroid.dm - SPLURT Station 13
+
+
+
+
+code/game/turfs/simulated/floor/plating/asteroid.dm
+
+
+
+
+
+
+
diff --git a/code/game/turfs/simulated/lava.html b/code/game/turfs/simulated/lava.html
new file mode 100644
index 0000000000000..13e1be132f485
--- /dev/null
+++ b/code/game/turfs/simulated/lava.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ code/game/turfs/simulated/lava.dm - SPLURT Station 13
+
+
+
+
+code/game/turfs/simulated/lava.dm
+
+
+
+Define Details
+LAVA_BE_BURNING
+
+
+
+ Burns the target and makes the turf process (depending on the return value of do_burn()).
LAVA_BE_IGNORING
+
+
+
+ Generic return value of the can_burn_stuff() proc. Does nothing.
LAVA_BE_PROCESSING
+
+
+
+ Another. Won't burn the target but will make the turf start processing.
+
+
+
diff --git a/code/game/turfs/simulated/minerals.html b/code/game/turfs/simulated/minerals.html
new file mode 100644
index 0000000000000..b654cd66b3c2e
--- /dev/null
+++ b/code/game/turfs/simulated/minerals.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/game/turfs/simulated/minerals.dm - SPLURT Station 13
+
+
+
+
+code/game/turfs/simulated/minerals.dm
+
+
+
+
+
+
+
diff --git a/code/game/turfs/simulated/wall/mineral_walls.html b/code/game/turfs/simulated/wall/mineral_walls.html
new file mode 100644
index 0000000000000..ee02b72e399a6
--- /dev/null
+++ b/code/game/turfs/simulated/wall/mineral_walls.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/game/turfs/simulated/wall/mineral_walls.dm - SPLURT Station 13
+
+
+
+
+code/game/turfs/simulated/wall/mineral_walls.dm
+
+
+
+
+
+
+
diff --git a/code/game/turfs/simulated/wall/reinf_walls.html b/code/game/turfs/simulated/wall/reinf_walls.html
new file mode 100644
index 0000000000000..cc01fb01a366c
--- /dev/null
+++ b/code/game/turfs/simulated/wall/reinf_walls.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/game/turfs/simulated/wall/reinf_walls.dm - SPLURT Station 13
+
+
+
+
+code/game/turfs/simulated/wall/reinf_walls.dm
+
+
+
+
+
+
+
diff --git a/code/game/turfs/turf.html b/code/game/turfs/turf.html
new file mode 100644
index 0000000000000..f24db364b35bd
--- /dev/null
+++ b/code/game/turfs/turf.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/game/turfs/turf.dm - SPLURT Station 13
+
+
+
+
+code/game/turfs/turf.dm
+
+
+
+
+ /turf Any floor or wall. What makes up the station and the rest of the map.
+
+
+
diff --git a/code/modules/actionspeed/_actionspeed_modifier.html b/code/modules/actionspeed/_actionspeed_modifier.html
new file mode 100644
index 0000000000000..51bbe6d80771c
--- /dev/null
+++ b/code/modules/actionspeed/_actionspeed_modifier.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ code/modules/actionspeed/_actionspeed_modifier.dm - SPLURT Station 13
+
+
+
+
+code/modules/actionspeed/_actionspeed_modifier.dm
+
+
+
+
+ Actionspeed modification datums.
+How action speed for mobs works
+
+Action speed is now calculated by using modifier datums which are added to mobs. Some of them (nonvariable ones) are globally cached, the variable ones are instanced and changed based on need.
+This gives us the ability to have multiple sources of actionspeed, reliabily keep them applied and remove them when they should be
+THey can have unique sources and a bunch of extra fancy flags that control behaviour
+Previously trying to update action speed was a shot in the dark that usually meant mobs got stuck going faster or slower
+Actionspeed modification list is a simple key = datum system. Key will be the datum's ID if it is overridden to not be null, or type if it is not.
+DO NOT override datum IDs unless you are going to have multiple types that must overwrite each other. It's more efficient to use types, ID functionality is only kept for cases where dynamic creation of modifiers need to be done.
+When update actionspeed is called, the list of items is iterated, according to flags priority and a bunch of conditions
+this spits out a final calculated value which is used as a modifer to last_move + modifier for calculating when a mob
+can next move
+ /proc/get_cached_actionspeed_modifier
+ Grabs a STATIC MODIFIER datum from cache. YOU MUST NEVER EDIT THESE DATUMS, OR IT WILL AFFECT ANYTHING ELSE USING IT TOO!
+ Used for variable slowdowns like hunger/health loss/etc, works somewhat like the old list-based modification adds. Returns the modifier datum if successful
+How this SHOULD work is:
+1. Ensures type_id_datum one way or another refers to a /variable datum. This makes sure it can't be cached. This includes if it's already in the modification list.
+2. Instantiate a new datum if type_id_datum isn't already instantiated + in the list, using the type. Obviously, wouldn't work for ID only.
+3. Add the datum if necessary using the regular add proc
+4. If any of the rest of the args are not null (see: multiplicative slowdown), modify the datum
+5. Update if necessary
+
+ /proc/actionspeed_data_null_check
+ Checks if a action speed modifier is valid and not missing any data
+
+
+
diff --git a/code/modules/admin/NewBan.html b/code/modules/admin/NewBan.html
new file mode 100644
index 0000000000000..4c7580a821365
--- /dev/null
+++ b/code/modules/admin/NewBan.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/admin/NewBan.dm - SPLURT Station 13
+
+
+
+
+code/modules/admin/NewBan.dm
+
+
+
+
+
+
+
diff --git a/code/modules/admin/callproc/callproc.html b/code/modules/admin/callproc/callproc.html
new file mode 100644
index 0000000000000..1aab3a7cb382d
--- /dev/null
+++ b/code/modules/admin/callproc/callproc.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/admin/callproc/callproc.dm - SPLURT Station 13
+
+
+
+
+code/modules/admin/callproc/callproc.dm
+
+
+
+
+ /proc/WrapAdminProcCall
+ Wrapper for proccalls where the datum is flagged as vareditted
+
+
+
diff --git a/code/modules/admin/force_event.html b/code/modules/admin/force_event.html
new file mode 100644
index 0000000000000..66aec31829dcb
--- /dev/null
+++ b/code/modules/admin/force_event.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/admin/force_event.dm - SPLURT Station 13
+
+
+
+
+code/modules/admin/force_event.dm
+
+
+
+
+ /datum /force_event Force Event Panel
+
+
+
diff --git a/code/modules/admin/tag.html b/code/modules/admin/tag.html
new file mode 100644
index 0000000000000..5ca6c090a4453
--- /dev/null
+++ b/code/modules/admin/tag.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/modules/admin/tag.dm - SPLURT Station 13
+
+
+
+
+code/modules/admin/tag.dm
+
+
+
+Define Details
+
+ Quick define for readability
+
+
+
diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.html b/code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.html
new file mode 100644
index 0000000000000..532a3d3384155
--- /dev/null
+++ b/code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.dm - SPLURT Station 13
+
+
+
+
+code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.dm
+
+
+
+
+
+
+
diff --git a/code/modules/admin/verbs/adminhelp.html b/code/modules/admin/verbs/adminhelp.html
new file mode 100644
index 0000000000000..ee4fc774d22b6
--- /dev/null
+++ b/code/modules/admin/verbs/adminhelp.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+ code/modules/admin/verbs/adminhelp.dm - SPLURT Station 13
+
+
+
+
+code/modules/admin/verbs/adminhelp.dm
+
+
+
+
+ /proc/send2otherserver
+ Sends a message to a set of cross-communications-enabled servers using world topic calls
+ /proc/check_admin_pings
+ Checks a given message to see if any of the words contain an active admin's ckey with an @ before it
+
+
+
diff --git a/code/modules/admin/verbs/pray.html b/code/modules/admin/verbs/pray.html
new file mode 100644
index 0000000000000..6b3caae581774
--- /dev/null
+++ b/code/modules/admin/verbs/pray.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/modules/admin/verbs/pray.dm - SPLURT Station 13
+
+
+
+
+code/modules/admin/verbs/pray.dm
+
+
+
+
+ /proc/message_centcom
+ Used by communications consoles to message CentCom
+ /proc/message_syndicate
+ Used by communications consoles to message the Syndicate
+ /proc/nuke_request
+ Used by communications consoles to request the nuclear launch codes
+
+
+
diff --git a/code/modules/admin/verbs/randomverbs.html b/code/modules/admin/verbs/randomverbs.html
new file mode 100644
index 0000000000000..103ee24491993
--- /dev/null
+++ b/code/modules/admin/verbs/randomverbs.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/admin/verbs/randomverbs.dm - SPLURT Station 13
+
+
+
+
+code/modules/admin/verbs/randomverbs.dm
+
+
+
+
+ /proc/firing_squad
+ firing_squad is a proc for the :B:erforate smite to shoot each individual bullet at them, so that we can add actual delays without sleep() nonsense
+
+
+
diff --git a/code/modules/admin/view_variables/debug_variables.html b/code/modules/admin/view_variables/debug_variables.html
new file mode 100644
index 0000000000000..2003040be7cd1
--- /dev/null
+++ b/code/modules/admin/view_variables/debug_variables.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/admin/view_variables/debug_variables.dm - SPLURT Station 13
+
+
+
+
+code/modules/admin/view_variables/debug_variables.dm
+
+
+
+
+
+
+
diff --git a/code/modules/antagonists/_common/antag_spawner.html b/code/modules/antagonists/_common/antag_spawner.html
new file mode 100644
index 0000000000000..8bdc4e0e99520
--- /dev/null
+++ b/code/modules/antagonists/_common/antag_spawner.html
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+ code/modules/antagonists/_common/antag_spawner.dm - SPLURT Station 13
+
+
+
+
+code/modules/antagonists/_common/antag_spawner.dm
+
+
+
+
+ /obj /item /antag_spawner/contract WIZARD
+ /obj /item /antag_spawner/nuke_ops BORGS AND OPERATIVES
+ /obj /item /antag_spawner/nuke_ops/clown CLOWN OP
+ /obj /item /antag_spawner/nuke_ops/borg_tele SYNDICATE BORG
+ /obj /item /antag_spawner/slaughter_demon SLAUGHTER DEMON
+
+
+
diff --git a/code/modules/antagonists/bloodsucker/bloodsucker_powers.html b/code/modules/antagonists/bloodsucker/bloodsucker_powers.html
new file mode 100644
index 0000000000000..873a4dc502c71
--- /dev/null
+++ b/code/modules/antagonists/bloodsucker/bloodsucker_powers.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/antagonists/bloodsucker/bloodsucker_powers.dm - SPLURT Station 13
+
+
+
+
+code/modules/antagonists/bloodsucker/bloodsucker_powers.dm
+
+
+
+
+
+
+
diff --git a/code/modules/antagonists/changeling/changeling.html b/code/modules/antagonists/changeling/changeling.html
new file mode 100644
index 0000000000000..ef351cd7e4c05
--- /dev/null
+++ b/code/modules/antagonists/changeling/changeling.html
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+ code/modules/antagonists/changeling/changeling.dm - SPLURT Station 13
+
+
+
+
+code/modules/antagonists/changeling/changeling.dm
+
+
+
+Define Details
+FORMAT_CHEM_CHARGES_TEXT
+
+
+
+
+ Helper to format the text that gets thrown onto the chem hud element.
+
+
+
diff --git a/code/modules/antagonists/changeling/powers/mutations.html b/code/modules/antagonists/changeling/powers/mutations.html
new file mode 100644
index 0000000000000..ef3adc212f796
--- /dev/null
+++ b/code/modules/antagonists/changeling/powers/mutations.html
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+ code/modules/antagonists/changeling/powers/mutations.dm - SPLURT Station 13
+
+
+
+
+code/modules/antagonists/changeling/powers/mutations.dm
+
+
+
+
+ /datum /action /changeling/weapon/arm_blade *
+|ARM BLADE |
+*
+ /datum /action /changeling/weapon/tentacle
+|COMBAT TENTACLES |
+* *
+ /datum /action /changeling/weapon/shield
+|SHIELD |
+*
+ /datum /action /changeling/suit/organic_space_suit
+|SPACE SUIT + HELMET |
+* *
+ /datum /action /changeling/suit/armor *
+|ARMOR |
+*
+ /datum /action /changeling/gloves *
+|CLAWS |
+*
+
+
+
diff --git a/code/modules/antagonists/cult/cult_comms.html b/code/modules/antagonists/cult/cult_comms.html
new file mode 100644
index 0000000000000..e234a8b950e16
--- /dev/null
+++ b/code/modules/antagonists/cult/cult_comms.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/antagonists/cult/cult_comms.dm - SPLURT Station 13
+
+
+
+
+code/modules/antagonists/cult/cult_comms.dm
+
+
+
+
+
+
+
diff --git a/code/modules/antagonists/devil/imp/imp.html b/code/modules/antagonists/devil/imp/imp.html
new file mode 100644
index 0000000000000..01515096eaadc
--- /dev/null
+++ b/code/modules/antagonists/devil/imp/imp.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/antagonists/devil/imp/imp.dm - SPLURT Station 13
+
+
+
+
+code/modules/antagonists/devil/imp/imp.dm
+
+
+
+
+
+
+
diff --git a/code/modules/antagonists/disease/disease_abilities.html b/code/modules/antagonists/disease/disease_abilities.html
new file mode 100644
index 0000000000000..8c1644d6eb636
--- /dev/null
+++ b/code/modules/antagonists/disease/disease_abilities.html
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+ code/modules/antagonists/disease/disease_abilities.dm - SPLURT Station 13
+
+
+
+
+code/modules/antagonists/disease/disease_abilities.dm
+
+
+
+
+ /datum /disease_ability/symptom/mild BASE SYMPTOM TYPES
+ /datum /disease_ability/symptom/mild/cough MILD
+ /datum /disease_ability/symptom/medium/shedding MEDIUM
+ /datum /disease_ability/symptom/powerful/fire POWERFUL
+ /datum /disease_ability/symptom/powerful/heal/starlight HEALING SUBTYPE
+
+
+
diff --git a/code/modules/antagonists/eldritch_cult/eldritch_effects.html b/code/modules/antagonists/eldritch_cult/eldritch_effects.html
new file mode 100644
index 0000000000000..ed9460d2b3326
--- /dev/null
+++ b/code/modules/antagonists/eldritch_cult/eldritch_effects.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/antagonists/eldritch_cult/eldritch_effects.dm - SPLURT Station 13
+
+
+
+
+code/modules/antagonists/eldritch_cult/eldritch_effects.dm
+
+
+
+
+
+
+
diff --git a/code/modules/antagonists/eldritch_cult/eldritch_knowledge.html b/code/modules/antagonists/eldritch_cult/eldritch_knowledge.html
new file mode 100644
index 0000000000000..6a08fad3eb49f
--- /dev/null
+++ b/code/modules/antagonists/eldritch_cult/eldritch_knowledge.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/modules/antagonists/eldritch_cult/eldritch_knowledge.dm - SPLURT Station 13
+
+
+
+
+code/modules/antagonists/eldritch_cult/eldritch_knowledge.dm
+
+
+
+
+
+
+
diff --git a/code/modules/antagonists/eldritch_cult/eldritch_magic.html b/code/modules/antagonists/eldritch_cult/eldritch_magic.html
new file mode 100644
index 0000000000000..aef2e89a776a8
--- /dev/null
+++ b/code/modules/antagonists/eldritch_cult/eldritch_magic.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/antagonists/eldritch_cult/eldritch_magic.dm - SPLURT Station 13
+
+
+
+
+code/modules/antagonists/eldritch_cult/eldritch_magic.dm
+
+
+
+
+ /obj /effect/proc_holder/spell /aoe_turf/rust_conversion/small What we want is the 3 tiles around the user and the tile under him to be rusted, so min(dist,1)-1 causes us to get 0 for these tiles, rest of the tiles are based on chance
+ /obj /effect/proc_holder/spell /pointed /void_blink They see the very reality uncoil before their eyes.
+
+
+
diff --git a/code/modules/antagonists/eldritch_cult/eldritch_monster_antag.html b/code/modules/antagonists/eldritch_cult/eldritch_monster_antag.html
new file mode 100644
index 0000000000000..848b43c75156d
--- /dev/null
+++ b/code/modules/antagonists/eldritch_cult/eldritch_monster_antag.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/antagonists/eldritch_cult/eldritch_monster_antag.dm - SPLURT Station 13
+
+
+
+
+code/modules/antagonists/eldritch_cult/eldritch_monster_antag.dm
+
+
+
+
+
+
+
diff --git a/code/modules/antagonists/eldritch_cult/knowledge/rust_lore.html b/code/modules/antagonists/eldritch_cult/knowledge/rust_lore.html
new file mode 100644
index 0000000000000..49687f8e51f55
--- /dev/null
+++ b/code/modules/antagonists/eldritch_cult/knowledge/rust_lore.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/antagonists/eldritch_cult/knowledge/rust_lore.dm - SPLURT Station 13
+
+
+
+
+code/modules/antagonists/eldritch_cult/knowledge/rust_lore.dm
+
+
+
+
+
+
+
diff --git a/code/modules/antagonists/gang/handler.html b/code/modules/antagonists/gang/handler.html
new file mode 100644
index 0000000000000..bc33b62fe8bd1
--- /dev/null
+++ b/code/modules/antagonists/gang/handler.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/antagonists/gang/handler.dm - SPLURT Station 13
+
+
+
+
+code/modules/antagonists/gang/handler.dm
+
+
+
+
+ /datum/gang_handler A special datum used by the families gamemode and dynamic rulesets to centralize code. "Family" and "gang" used interchangeably in code.
+
+
+
diff --git a/code/modules/antagonists/gang/themes.html b/code/modules/antagonists/gang/themes.html
new file mode 100644
index 0000000000000..38d59c32f0857
--- /dev/null
+++ b/code/modules/antagonists/gang/themes.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/antagonists/gang/themes.dm - SPLURT Station 13
+
+
+
+
+code/modules/antagonists/gang/themes.dm
+
+
+
+
+ /datum/gang_theme Gang themes for the Families gamemode. Used to determine the RP theme of the round, what gangs are present, and what their objectives are.
+
+
+
diff --git a/code/modules/antagonists/revolution/revolution.html b/code/modules/antagonists/revolution/revolution.html
new file mode 100644
index 0000000000000..5e2a375774c64
--- /dev/null
+++ b/code/modules/antagonists/revolution/revolution.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/antagonists/revolution/revolution.dm - SPLURT Station 13
+
+
+
+
+code/modules/antagonists/revolution/revolution.dm
+
+
+
+
+ /datum /antagonist /revolution_enemy "Enemy of the Revolutionary", given to heads and security when the revolution wins
+
+
+
diff --git a/code/modules/antagonists/slaughter/slaughter.html b/code/modules/antagonists/slaughter/slaughter.html
new file mode 100644
index 0000000000000..1e3357d11fb2f
--- /dev/null
+++ b/code/modules/antagonists/slaughter/slaughter.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/antagonists/slaughter/slaughter.dm - SPLURT Station 13
+
+
+
+
+code/modules/antagonists/slaughter/slaughter.dm
+
+
+
+
+
+
+
diff --git a/code/modules/antagonists/swarmer/swarmer.html b/code/modules/antagonists/swarmer/swarmer.html
new file mode 100644
index 0000000000000..7e48407b63001
--- /dev/null
+++ b/code/modules/antagonists/swarmer/swarmer.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/antagonists/swarmer/swarmer.dm - SPLURT Station 13
+
+
+
+
+code/modules/antagonists/swarmer/swarmer.dm
+
+
+
+
+
+
+
diff --git a/code/modules/antagonists/traitor/equipment/contractor.html b/code/modules/antagonists/traitor/equipment/contractor.html
new file mode 100644
index 0000000000000..c1105ebc1e7c9
--- /dev/null
+++ b/code/modules/antagonists/traitor/equipment/contractor.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/modules/antagonists/traitor/equipment/contractor.dm - SPLURT Station 13
+
+
+
+
+code/modules/antagonists/traitor/equipment/contractor.dm
+
+
+
+
+ /datum/antagonist/traitor/contractor_support Support unit gets it's own very basic antag datum for admin logging.
+ /datum /team/contractor_team Team for storing both the contractor and their support unit - only really for the HUD and admin logging.
+ /datum /contractor_item/contractor_pinpointer We're not regenerating already completed/aborted/extracting contracts, but we don't want to repeat their targets.
+Reroll contracts without duplicates
+Set our target list with the new set we've generated.
+ /datum /contractor_item/blackout We give a reference to the mind that'll be the support unit
+
+
+
diff --git a/code/modules/antagonists/wizard/equipment/artefact.html b/code/modules/antagonists/wizard/equipment/artefact.html
new file mode 100644
index 0000000000000..c82971fb7c19b
--- /dev/null
+++ b/code/modules/antagonists/wizard/equipment/artefact.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+ code/modules/antagonists/wizard/equipment/artefact.dm - SPLURT Station 13
+
+
+
+
+code/modules/antagonists/wizard/equipment/artefact.dm
+
+
+
+
+ /obj /item /veilrender Veil Render
+ /obj /singularity/wizard TEAR IN REALITY
+ /obj /item /scrying Scrying
+ /obj /item /necromantic_stone Necromantic Stone
+
+
+
diff --git a/code/modules/antagonists/wizard/equipment/soulstone.html b/code/modules/antagonists/wizard/equipment/soulstone.html
new file mode 100644
index 0000000000000..36a12d779bd17
--- /dev/null
+++ b/code/modules/antagonists/wizard/equipment/soulstone.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/antagonists/wizard/equipment/soulstone.dm - SPLURT Station 13
+
+
+
+
+code/modules/antagonists/wizard/equipment/soulstone.dm
+
+
+
+
+ /obj /structure/constructshell Transferring to constructs
+
+
+
diff --git a/code/modules/assembly/flash.html b/code/modules/assembly/flash.html
new file mode 100644
index 0000000000000..2cde82da3133d
--- /dev/null
+++ b/code/modules/assembly/flash.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+ code/modules/assembly/flash.dm - SPLURT Station 13
+
+
+
+
+code/modules/assembly/flash.dm
+
+
+
+
+ /obj /item /assembly /flash The z level to which the elevator should travel
+The amount of z levels between the our and targetZ
+Direction (up/down) needed to go to reach targetZ
+How long it will/should take us to reach the target Z level
+
+
+
diff --git a/code/modules/assembly/infrared.html b/code/modules/assembly/infrared.html
new file mode 100644
index 0000000000000..15f498471f631
--- /dev/null
+++ b/code/modules/assembly/infrared.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/assembly/infrared.dm - SPLURT Station 13
+
+
+
+
+code/modules/assembly/infrared.dm
+
+
+
+
+ /obj /effect/beam/i_beam IBeam
+
+
+
diff --git a/code/modules/asset_cache.html b/code/modules/asset_cache.html
new file mode 100644
index 0000000000000..50bfd9fb3fcf4
--- /dev/null
+++ b/code/modules/asset_cache.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ code/modules/asset_cache/readme.md - SPLURT Station 13
+
+
+
+
+Asset cache system code/modules/asset_cache/readme.md
+
+
+
+
+ Framework for managing browser assets (javascript,css,images,etc)
+This manages getting the asset to the client without doing unneeded re-sends, as well as utilizing any configured cdns.
+There are two frameworks for using this system:
+Asset datum:
+Make a datum in asset_list_items.dm with your browser assets for your thing.
+Checkout asset_list.dm for the helper subclasses
+The simple
subclass will most likely be of use for most cases.
+Call get_asset_datum() with the type of the datum you created to get your asset cache datum
+Call .send(client|usr) on that datum to send the asset to the client. Depending on the asset transport this may or may not block.
+Call .get_url_mappings() to get an associated list with the urls your assets can be found at.
+Manual backend:
+See the documentation for /datum/asset_transport
for the backend api the asset datums utilize.
+The global variable SSassets.transport
contains the currently configured transport.
+Notes:
+Because byond browse() calls use non-blocking queues, if your code uses output() (which bypasses all of these queues) to invoke javascript functions you will need to first have the javascript announce to the server it has loaded before trying to invoke js functions.
+To make your code work with any CDNs configured by the server, you must make sure assets are referenced from the url returned by get_url_mappings()
or by asset_transport's get_asset_url()
. (TGUI also has helpers for this.) If this can not be easily done, you can bypass the cdn using legacy assets, see the simple asset datum for details.
+CSS files that use url() can be made to use the CDN without needing to rewrite all url() calls in code by using the namespaced helper datum. See the documentation for /datum/asset/simple/namespaced
for details.
+
+
+
diff --git a/code/modules/asset_cache/asset_cache_item.html b/code/modules/asset_cache/asset_cache_item.html
new file mode 100644
index 0000000000000..7816931b1aba6
--- /dev/null
+++ b/code/modules/asset_cache/asset_cache_item.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/asset_cache/asset_cache_item.dm - SPLURT Station 13
+
+
+
+
+code/modules/asset_cache/asset_cache_item.dm
+
+
+
+
+ /datum/asset_cache_item An internal datum containing info on items in the asset cache. Mainly used to cache md5 info for speed.
+
+
+
diff --git a/code/modules/asset_cache/asset_list.html b/code/modules/asset_cache/asset_list.html
new file mode 100644
index 0000000000000..9379f19c6da7e
--- /dev/null
+++ b/code/modules/asset_cache/asset_list.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/modules/asset_cache/asset_list.dm - SPLURT Station 13
+
+
+
+
+code/modules/asset_cache/asset_list.dm
+
+
+
+
+ /datum/asset/simple If you don't need anything complicated.
+ /datum/asset/simple/namespaced Namespace'ed assets (for static css and html files)
+When sent over a cdn transport, all assets in the same asset datum will exist in the same folder, as their plain names.
+Used to ensure css files can reference files by url() without having to generate the css at runtime, both the css file and the files it depends on must exist in the same namespace asset datum. (Also works for html)
+For example blah.css
with asset blah.png
will get loaded as namespaces/a3d..14f/f12..d3c.css
and namespaces/a3d..14f/blah.png
. allowing the css file to load blah.png
by a relative url rather then compute the generated url with get_url_mappings().
+The namespace folder's name will change if any of the assets change. (excluding parent assets)
+
+
+
diff --git a/code/modules/asset_cache/assets/irv.html b/code/modules/asset_cache/assets/irv.html
new file mode 100644
index 0000000000000..547da6cb830c4
--- /dev/null
+++ b/code/modules/asset_cache/assets/irv.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/asset_cache/assets/irv.dm - SPLURT Station 13
+
+
+
+
+code/modules/asset_cache/assets/irv.dm
+
+
+
+
+
+
+
diff --git a/code/modules/asset_cache/transports/asset_transport.html b/code/modules/asset_cache/transports/asset_transport.html
new file mode 100644
index 0000000000000..2fbbcac691eb0
--- /dev/null
+++ b/code/modules/asset_cache/transports/asset_transport.html
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+ code/modules/asset_cache/transports/asset_transport.dm - SPLURT Station 13
+
+
+
+
+code/modules/asset_cache/transports/asset_transport.dm
+
+
+
+Define Details
+ASSET_CACHE_TELL_CLIENT_AMOUNT
+
+
+
+ When sending mutiple assets, how many before we give the client a quaint little sending resources message
+
+
+
diff --git a/code/modules/asset_cache/transports/webroot_transport.html b/code/modules/asset_cache/transports/webroot_transport.html
new file mode 100644
index 0000000000000..556a3f62ba5d7
--- /dev/null
+++ b/code/modules/asset_cache/transports/webroot_transport.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/asset_cache/transports/webroot_transport.dm - SPLURT Station 13
+
+
+
+
+code/modules/asset_cache/transports/webroot_transport.dm
+
+
+
+
+
+
+
diff --git a/code/modules/atmospherics/gasmixtures/gas_mixture.html b/code/modules/atmospherics/gasmixtures/gas_mixture.html
new file mode 100644
index 0000000000000..ab76977b8a95c
--- /dev/null
+++ b/code/modules/atmospherics/gasmixtures/gas_mixture.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/modules/atmospherics/gasmixtures/gas_mixture.dm - SPLURT Station 13
+
+
+
+
+code/modules/atmospherics/gasmixtures/gas_mixture.dm
+
+
+
+
+ /proc/release_gas_to
+ Releases gas from src to output air. This means that it can not transfer air to gas mixture with higher pressure.
+a global proc due to rustmos
+
+
+
diff --git a/code/modules/atmospherics/multiz.html b/code/modules/atmospherics/multiz.html
new file mode 100644
index 0000000000000..807772d1bf961
--- /dev/null
+++ b/code/modules/atmospherics/multiz.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/atmospherics/multiz.dm - SPLURT Station 13
+
+
+
+
+code/modules/atmospherics/multiz.dm
+
+
+
+
+
+
+
diff --git a/code/modules/awaymissions/capture_the_flag.html b/code/modules/awaymissions/capture_the_flag.html
new file mode 100644
index 0000000000000..2728e6610a33b
--- /dev/null
+++ b/code/modules/awaymissions/capture_the_flag.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/modules/awaymissions/capture_the_flag.dm - SPLURT Station 13
+
+
+
+
+code/modules/awaymissions/capture_the_flag.dm
+
+
+
+
+
+
+
diff --git a/code/modules/awaymissions/corpse.html b/code/modules/awaymissions/corpse.html
new file mode 100644
index 0000000000000..e95cafcc43411
--- /dev/null
+++ b/code/modules/awaymissions/corpse.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/modules/awaymissions/corpse.dm - SPLURT Station 13
+
+
+
+
+code/modules/awaymissions/corpse.dm
+
+
+
+
+
+
+
diff --git a/code/modules/awaymissions/gateway.html b/code/modules/awaymissions/gateway.html
new file mode 100644
index 0000000000000..516fd5f6e3ea9
--- /dev/null
+++ b/code/modules/awaymissions/gateway.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/awaymissions/gateway.dm - SPLURT Station 13
+
+
+
+
+code/modules/awaymissions/gateway.dm
+
+
+
+
+
+
+
diff --git a/code/modules/awaymissions/mission_code/snowdin.html b/code/modules/awaymissions/mission_code/snowdin.html
new file mode 100644
index 0000000000000..9ac81be52f9a5
--- /dev/null
+++ b/code/modules/awaymissions/mission_code/snowdin.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/awaymissions/mission_code/snowdin.dm - SPLURT Station 13
+
+
+
+
+code/modules/awaymissions/mission_code/snowdin.dm
+
+
+
+
+ /obj /item /paper /crumpled/ruins/snowdin/foreshadowing papers
+
+
+
diff --git a/code/modules/awaymissions/mission_code/wildwest.html b/code/modules/awaymissions/mission_code/wildwest.html
new file mode 100644
index 0000000000000..4673815751973
--- /dev/null
+++ b/code/modules/awaymissions/mission_code/wildwest.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/awaymissions/mission_code/wildwest.dm - SPLURT Station 13
+
+
+
+
+code/modules/awaymissions/mission_code/wildwest.dm
+
+
+
+
+ /obj /item /paper /fluff/awaymissions/wildwest/grinder wildwest papers
+ /obj /effect/meatgrinder Meatgrinder
+
+
+
diff --git a/code/modules/balloon_alert/balloon_alert.html b/code/modules/balloon_alert/balloon_alert.html
new file mode 100644
index 0000000000000..87eaaaa1c904b
--- /dev/null
+++ b/code/modules/balloon_alert/balloon_alert.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+ code/modules/balloon_alert/balloon_alert.dm - SPLURT Station 13
+
+
+
+
+code/modules/balloon_alert/balloon_alert.dm
+
+
+
+Define Details
+BALLOON_TEXT_CHAR_LIFETIME_INCREASE_MIN
+
+
+
+ The amount of characters needed before this increase takes into effect
BALLOON_TEXT_CHAR_LIFETIME_INCREASE_MULT
+
+
+
+ The increase in duration per character in seconds
+
+
+
diff --git a/code/modules/buildmode.html b/code/modules/buildmode.html
new file mode 100644
index 0000000000000..46355ef7dc443
--- /dev/null
+++ b/code/modules/buildmode.html
@@ -0,0 +1,230 @@
+
+
+
+
+
+
+ code/modules/buildmode/README.md - SPLURT Station 13
+
+
+
+
+Buildmode code/modules/buildmode/README.md
+
+
+
+
+ Code layout Buildmode
+Manager for buildmode modes. Contains logic to manage switching between each mode, and presenting a suitable user interface.
+Effects
+Special graphics used by buildmode modes for user interface purposes.
+Buildmode Mode
+Implementer of buildmode behaviors.
+Existing varieties:
+
+
+Basic
+Description :
+Allows creation of simple structures consisting of floors, walls, windows, and airlocks.
+Controls :
+
+
+Left click a turf :
+"Upgrades" the turf based on the following rules below:
+
+Space -> Tiled floor
+Simulated floor -> Regular wall
+Wall -> Reinforced wall
+
+
+
+Right click a turf :
+"Downgrades" the turf based on the following rules below:
+
+Reinforced wall -> Regular wall
+Wall -> Tiled floor
+Simulated floor -> Space
+
+
+
+Right click an object :
+Deletes the clicked object.
+
+
+Alt+Left click a location :
+Places an airlock at the clicked location.
+
+
+Ctrl+Left click a location :
+Places a window at the clicked location.
+
+
+
+
+Advanced
+Description :
+Creates an instance of a configurable atom path where you click.
+Controls :
+
+
+Right click on the mode selector :
+Choose a path to spawn.
+
+
+Left click a location (requires chosen path):
+Place an instance of the chosen path at the location.
+
+
+Right click an object :
+Delete the object.
+
+
+
+
+Fill
+Description :
+Creates an instance of an atom path on every tile in a chosen region.
+With a special control input, instead deletes everything within the region.
+Controls :
+
+
+Right click on the mode selector :
+Choose a path to spawn.
+
+
+Left click on a region (requires chosen path):
+Fill the region with the chosen path.
+
+
+Alt+Left click on a region :
+Deletes everything within the region.
+
+
+Right click during region selection :
+Cancel region selection.
+
+
+
+
+Copy
+Description :
+Take an existing object in the world, and place duplicates with identical attributes where you click.
+May not always work nicely - "deep" variables such as lists or datums may malfunction.
+Controls :
+
+
+Right click an existing object :
+Select the clicked object as a template.
+
+
+Left click a location (Requires a selected object as template):
+Place a duplicate of the template at the clicked location.
+
+
+
+
+Area Edit
+Description :
+Modifies and creates areas.
+The active area will be highlighted in yellow.
+Controls :
+
+
+Right click the mode selector :
+Create a new area, and make it active.
+
+
+Right click an existing area :
+Make the clicked area active.
+
+
+Left click a turf :
+When an area is active, adds the turf to the active area.
+
+
+
+
+Var Edit
+Description :
+Allows for setting and resetting variables of objects with a click.
+If the object does not have the var, will do nothing and print a warning message.
+Controls :
+
+
+Right click the mode selector :
+Choose which variable to set, and what to set it to.
+
+
+Left click an atom :
+Change the clicked atom's variables as configured.
+
+
+Right click an atom :
+Reset the targeted variable to its original value in the code.
+
+
+
+
+Map Generator
+Description :
+Fills rectangular regions with algorithmically generated content. Right click during region selection to cancel.
+See the procedural_mapping
module for the generators themselves.
+Controls :
+
+
+Right-click on the mode selector :
+Select a map generator from all the generators present in the codebase.
+
+
+Left click two corners of an area :
+Use the generator to populate the region.
+
+
+Right click during region selection :
+Cancel region selection.
+
+
+
+
+Throwing
+Description :
+Select an object with left click, and right click to throw it towards where you clicked.
+Controls :
+
+
+Left click on a movable atom :
+Select the atom for throwing.
+
+
+Right click on a location :
+Throw the selected atom towards that location.
+
+
+
+
+Boom
+Description :
+Make explosions where you click.
+Controls :
+
+
+Right click the mode selector :
+Configure the explosion size.
+
+
+Left click a location :
+Cause an explosion where you clicked.
+
+
+
+
+
+
+
diff --git a/code/modules/cargo/bounty.html b/code/modules/cargo/bounty.html
new file mode 100644
index 0000000000000..59f5c63479df5
--- /dev/null
+++ b/code/modules/cargo/bounty.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/cargo/bounty.dm - SPLURT Station 13
+
+
+
+
+code/modules/cargo/bounty.dm
+
+
+
+
+
+
+
diff --git a/code/modules/cargo/packs/armory.html b/code/modules/cargo/packs/armory.html
new file mode 100644
index 0000000000000..004ba6065701f
--- /dev/null
+++ b/code/modules/cargo/packs/armory.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/cargo/packs/armory.dm - SPLURT Station 13
+
+
+
+
+code/modules/cargo/packs/armory.dm
+
+
+
+
+ /datum /supply_pack/security/armory Armory
+
+
+
diff --git a/code/modules/cargo/packs/costumes_toys.html b/code/modules/cargo/packs/costumes_toys.html
new file mode 100644
index 0000000000000..ac81fefa56236
--- /dev/null
+++ b/code/modules/cargo/packs/costumes_toys.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/cargo/packs/costumes_toys.dm - SPLURT Station 13
+
+
+
+
+code/modules/cargo/packs/costumes_toys.dm
+
+
+
+
+ /datum /supply_pack/costumes_toys Toys
+ /datum /supply_pack/costumes_toys/formalwear Costumes
+
+
+
diff --git a/code/modules/cargo/packs/emergency.html b/code/modules/cargo/packs/emergency.html
new file mode 100644
index 0000000000000..bbd5e3c282b31
--- /dev/null
+++ b/code/modules/cargo/packs/emergency.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/cargo/packs/emergency.dm - SPLURT Station 13
+
+
+
+
+code/modules/cargo/packs/emergency.dm
+
+
+
+
+ /datum /supply_pack/emergency Emergency
+
+
+
diff --git a/code/modules/cargo/packs/engine.html b/code/modules/cargo/packs/engine.html
new file mode 100644
index 0000000000000..62db9ee9ba058
--- /dev/null
+++ b/code/modules/cargo/packs/engine.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/cargo/packs/engine.dm - SPLURT Station 13
+
+
+
+
+code/modules/cargo/packs/engine.dm
+
+
+
+
+ /datum /supply_pack/engine Engine Construction
+
+
+
diff --git a/code/modules/cargo/packs/engineering.html b/code/modules/cargo/packs/engineering.html
new file mode 100644
index 0000000000000..f574c2313b623
--- /dev/null
+++ b/code/modules/cargo/packs/engineering.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/cargo/packs/engineering.dm - SPLURT Station 13
+
+
+
+
+code/modules/cargo/packs/engineering.dm
+
+
+
+
+ /datum /supply_pack/engineering Engineering
+
+
+
diff --git a/code/modules/cargo/packs/livestock.html b/code/modules/cargo/packs/livestock.html
new file mode 100644
index 0000000000000..9df6a21c91781
--- /dev/null
+++ b/code/modules/cargo/packs/livestock.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/cargo/packs/livestock.dm - SPLURT Station 13
+
+
+
+
+code/modules/cargo/packs/livestock.dm
+
+
+
+
+ /datum /supply_pack/critter Livestock
+
+
+
diff --git a/code/modules/cargo/packs/materials.html b/code/modules/cargo/packs/materials.html
new file mode 100644
index 0000000000000..bf91d931467ad
--- /dev/null
+++ b/code/modules/cargo/packs/materials.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+ code/modules/cargo/packs/materials.dm - SPLURT Station 13
+
+
+
+
+code/modules/cargo/packs/materials.dm
+
+
+
+
+ /datum /supply_pack/materials Canisters & Materials
+ /datum /supply_pack/materials/cardboard50 Materials
+ /datum /supply_pack/materials/bz Canisters
+ /datum /supply_pack/materials/fueltank Tanks
+
+
+
diff --git a/code/modules/cargo/packs/medical.html b/code/modules/cargo/packs/medical.html
new file mode 100644
index 0000000000000..541b5becbe3d7
--- /dev/null
+++ b/code/modules/cargo/packs/medical.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+ code/modules/cargo/packs/medical.dm - SPLURT Station 13
+
+
+
+
+code/modules/cargo/packs/medical.dm
+
+
+
+
+ /datum /supply_pack/medical Medical
+ /datum /supply_pack/medical/bodybags Equipment
+ /datum /supply_pack/medical/sprays Medical Kits
+ /datum /supply_pack/medical/virus Virology
+
+
+
diff --git a/code/modules/cargo/packs/misc.html b/code/modules/cargo/packs/misc.html
new file mode 100644
index 0000000000000..2c72809b30b34
--- /dev/null
+++ b/code/modules/cargo/packs/misc.html
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+ code/modules/cargo/packs/misc.dm - SPLURT Station 13
+
+
+
+
+code/modules/cargo/packs/misc.dm
+
+
+
+
+ /datum /supply_pack/misc Miscellaneous
+ /datum /supply_pack/misc/anvil Paperwork and Writing Supplies
+ /datum /supply_pack/misc/coloredsheets Entertainment
+ /datum /supply_pack/misc/candles Misc Supplies
+ /datum /supply_pack/misc/carpet Misc + Decor
+ /datum /supply_pack/misc/lewd Lewd Supplies
+ /datum/supply_pack/misc/syndicate Special supply crate that generates random syndicate gear up to a determined TC value
+
+
+
diff --git a/code/modules/cargo/packs/organic.html b/code/modules/cargo/packs/organic.html
new file mode 100644
index 0000000000000..ee1b12ae72ac5
--- /dev/null
+++ b/code/modules/cargo/packs/organic.html
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+ code/modules/cargo/packs/organic.dm - SPLURT Station 13
+
+
+
+
+code/modules/cargo/packs/organic.dm
+
+
+
+
+ /datum /supply_pack/organic Organic
+ /datum /supply_pack/organic/combomeal2 Meals
+ /datum /supply_pack/organic/food Raw Ingredients
+ /datum /supply_pack/organic/hydroponics/beekeeping_suits Hydroponics
+ /datum /supply_pack/organic/party Misc
+
+
+
diff --git a/code/modules/cargo/packs/science.html b/code/modules/cargo/packs/science.html
new file mode 100644
index 0000000000000..fc5e35316a8f9
--- /dev/null
+++ b/code/modules/cargo/packs/science.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/cargo/packs/science.dm - SPLURT Station 13
+
+
+
+
+code/modules/cargo/packs/science.dm
+
+
+
+
+ /datum /supply_pack/science Science
+ /datum /supply_pack/science/raw_flux_anomaly RAW ANOMALY CORES
+
+
+
diff --git a/code/modules/cargo/packs/security.html b/code/modules/cargo/packs/security.html
new file mode 100644
index 0000000000000..7328088d98c45
--- /dev/null
+++ b/code/modules/cargo/packs/security.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/cargo/packs/security.dm - SPLURT Station 13
+
+
+
+
+code/modules/cargo/packs/security.dm
+
+
+
+
+ /datum /supply_pack/security Security
+
+
+
diff --git a/code/modules/cargo/packs/service.html b/code/modules/cargo/packs/service.html
new file mode 100644
index 0000000000000..2f45c97b6dc15
--- /dev/null
+++ b/code/modules/cargo/packs/service.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+ code/modules/cargo/packs/service.dm - SPLURT Station 13
+
+
+
+
+code/modules/cargo/packs/service.dm
+
+
+
+
+ /datum /supply_pack/service Service
+ /datum /supply_pack/service/wrapping_paper Cargo
+ /datum /supply_pack/service/buildabar Chef, Botanist, Bartender
+ /datum /supply_pack/service/advlighting Janitor
+
+
+
diff --git a/code/modules/cargo/packs/vending.html b/code/modules/cargo/packs/vending.html
new file mode 100644
index 0000000000000..ea97051b965c7
--- /dev/null
+++ b/code/modules/cargo/packs/vending.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/modules/cargo/packs/vending.dm - SPLURT Station 13
+
+
+
+
+code/modules/cargo/packs/vending.dm
+
+
+
+
+ /datum /supply_pack/vending Vending
+ /datum /supply_pack/vending/bartending Service, Medical, Sec
+ /datum /supply_pack/vending/wardrobes/autodrobe Wardrobe Vendors
+
+
+
diff --git a/code/modules/clothing/masks/boxing.html b/code/modules/clothing/masks/boxing.html
new file mode 100644
index 0000000000000..354aaa6f01172
--- /dev/null
+++ b/code/modules/clothing/masks/boxing.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/clothing/masks/boxing.dm - SPLURT Station 13
+
+
+
+
+code/modules/clothing/masks/boxing.dm
+
+
+
+
+ /obj /item /clothing /mask /luchador This makes it so that your name shows up as unknown when wearing the mask.
+
+
+
diff --git a/code/modules/clothing/masks/miscellaneous.html b/code/modules/clothing/masks/miscellaneous.html
new file mode 100644
index 0000000000000..54127c1b8608a
--- /dev/null
+++ b/code/modules/clothing/masks/miscellaneous.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/clothing/masks/miscellaneous.dm - SPLURT Station 13
+
+
+
+
+code/modules/clothing/masks/miscellaneous.dm
+
+
+
+
+
+
+
diff --git a/code/modules/clothing/spacesuits/hardsuit.html b/code/modules/clothing/spacesuits/hardsuit.html
new file mode 100644
index 0000000000000..293b21b39bc27
--- /dev/null
+++ b/code/modules/clothing/spacesuits/hardsuit.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+ code/modules/clothing/spacesuits/hardsuit.dm - SPLURT Station 13
+
+
+
+
+code/modules/clothing/spacesuits/hardsuit.dm
+
+
+
+
+
+
+
diff --git a/code/modules/events/holiday/halloween.html b/code/modules/events/holiday/halloween.html
new file mode 100644
index 0000000000000..ba044555654d9
--- /dev/null
+++ b/code/modules/events/holiday/halloween.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/events/holiday/halloween.dm - SPLURT Station 13
+
+
+
+
+code/modules/events/holiday/halloween.dm
+
+
+
+
+
+
+
diff --git a/code/modules/events/stray_cargo.html b/code/modules/events/stray_cargo.html
new file mode 100644
index 0000000000000..84fed542e9f47
--- /dev/null
+++ b/code/modules/events/stray_cargo.html
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+ code/modules/events/stray_cargo.dm - SPLURT Station 13
+
+
+
+
+code/modules/events/stray_cargo.dm
+
+
+
+
+ /datum /round_event_control /stray_cargo Spawns a cargo pod containing a random cargo supply pack on a random area of the station
+ /datum/round_event/stray_cargo Spawns a cargo pod containing a random cargo supply pack on a random area of the station
+ /datum /round_event_control /stray_cargo/syndicate Places that shouldn't explode
+Subtypes from the above that actually should explode.
+A rare variant that drops a crate containing syndicate uplink items
+
+
+
diff --git a/code/modules/food_and_drinks/drinks/drinks.html b/code/modules/food_and_drinks/drinks/drinks.html
new file mode 100644
index 0000000000000..11f4b8a072c78
--- /dev/null
+++ b/code/modules/food_and_drinks/drinks/drinks.html
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+ code/modules/food_and_drinks/drinks/drinks.dm - SPLURT Station 13
+
+
+
+
+code/modules/food_and_drinks/drinks/drinks.dm
+
+
+
+
+
+
+
diff --git a/code/modules/food_and_drinks/drinks/drinks/bottle.html b/code/modules/food_and_drinks/drinks/drinks/bottle.html
new file mode 100644
index 0000000000000..c8596aca2fbd8
--- /dev/null
+++ b/code/modules/food_and_drinks/drinks/drinks/bottle.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/modules/food_and_drinks/drinks/drinks/bottle.dm - SPLURT Station 13
+
+
+
+
+code/modules/food_and_drinks/drinks/drinks/bottle.dm
+
+
+
+
+
+
+
diff --git a/code/modules/food_and_drinks/food.html b/code/modules/food_and_drinks/food.html
new file mode 100644
index 0000000000000..d3dce59f0879d
--- /dev/null
+++ b/code/modules/food_and_drinks/food.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/food_and_drinks/food.dm - SPLURT Station 13
+
+
+
+
+code/modules/food_and_drinks/food.dm
+
+
+
+
+
+
+
diff --git a/code/modules/food_and_drinks/food/condiment.html b/code/modules/food_and_drinks/food/condiment.html
new file mode 100644
index 0000000000000..aa84c3cbbe953
--- /dev/null
+++ b/code/modules/food_and_drinks/food/condiment.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/food_and_drinks/food/condiment.dm - SPLURT Station 13
+
+
+
+
+code/modules/food_and_drinks/food/condiment.dm
+
+
+
+
+
+
+
diff --git a/code/modules/food_and_drinks/food/customizables.html b/code/modules/food_and_drinks/food/customizables.html
new file mode 100644
index 0000000000000..7d66408211cbf
--- /dev/null
+++ b/code/modules/food_and_drinks/food/customizables.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/food_and_drinks/food/customizables.dm - SPLURT Station 13
+
+
+
+
+code/modules/food_and_drinks/food/customizables.dm
+
+
+
+
+
+
+
diff --git a/code/modules/food_and_drinks/food/snacks.html b/code/modules/food_and_drinks/food/snacks.html
new file mode 100644
index 0000000000000..c0edf4a542750
--- /dev/null
+++ b/code/modules/food_and_drinks/food/snacks.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/food_and_drinks/food/snacks.dm - SPLURT Station 13
+
+
+
+
+code/modules/food_and_drinks/food/snacks.dm
+
+
+
+
+
+
+
diff --git a/code/modules/food_and_drinks/food/snacks/dough.html b/code/modules/food_and_drinks/food/snacks/dough.html
new file mode 100644
index 0000000000000..2641d7c8e0a1e
--- /dev/null
+++ b/code/modules/food_and_drinks/food/snacks/dough.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/food_and_drinks/food/snacks/dough.dm - SPLURT Station 13
+
+
+
+
+code/modules/food_and_drinks/food/snacks/dough.dm
+
+
+
+
+
+
+
diff --git a/code/modules/food_and_drinks/food/snacks/meat.html b/code/modules/food_and_drinks/food/snacks/meat.html
new file mode 100644
index 0000000000000..89dc26ea42014
--- /dev/null
+++ b/code/modules/food_and_drinks/food/snacks/meat.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+ code/modules/food_and_drinks/food/snacks/meat.dm - SPLURT Station 13
+
+
+
+
+code/modules/food_and_drinks/food/snacks/meat.dm
+
+
+
+
+
+
+
diff --git a/code/modules/food_and_drinks/food/snacks_egg.html b/code/modules/food_and_drinks/food/snacks_egg.html
new file mode 100644
index 0000000000000..5f108898e48fc
--- /dev/null
+++ b/code/modules/food_and_drinks/food/snacks_egg.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/food_and_drinks/food/snacks_egg.dm - SPLURT Station 13
+
+
+
+
+code/modules/food_and_drinks/food/snacks_egg.dm
+
+
+
+
+
+
+
diff --git a/code/modules/food_and_drinks/food/snacks_meat.html b/code/modules/food_and_drinks/food/snacks_meat.html
new file mode 100644
index 0000000000000..17e9b93da2d9d
--- /dev/null
+++ b/code/modules/food_and_drinks/food/snacks_meat.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/modules/food_and_drinks/food/snacks_meat.dm - SPLURT Station 13
+
+
+
+
+code/modules/food_and_drinks/food/snacks_meat.dm
+
+
+
+
+
+
+
diff --git a/code/modules/food_and_drinks/food/snacks_other.html b/code/modules/food_and_drinks/food/snacks_other.html
new file mode 100644
index 0000000000000..94d5a065a8f9e
--- /dev/null
+++ b/code/modules/food_and_drinks/food/snacks_other.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/food_and_drinks/food/snacks_other.dm - SPLURT Station 13
+
+
+
+
+code/modules/food_and_drinks/food/snacks_other.dm
+
+
+
+
+
+
+
diff --git a/code/modules/food_and_drinks/food/snacks_pastry.html b/code/modules/food_and_drinks/food/snacks_pastry.html
new file mode 100644
index 0000000000000..b49c01ccb55cf
--- /dev/null
+++ b/code/modules/food_and_drinks/food/snacks_pastry.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/modules/food_and_drinks/food/snacks_pastry.dm - SPLURT Station 13
+
+
+
+
+code/modules/food_and_drinks/food/snacks_pastry.dm
+
+
+
+
+
+
+
diff --git a/code/modules/food_and_drinks/food/snacks_pizza.html b/code/modules/food_and_drinks/food/snacks_pizza.html
new file mode 100644
index 0000000000000..745e196284832
--- /dev/null
+++ b/code/modules/food_and_drinks/food/snacks_pizza.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/food_and_drinks/food/snacks_pizza.dm - SPLURT Station 13
+
+
+
+
+code/modules/food_and_drinks/food/snacks_pizza.dm
+
+
+
+
+
+
+
diff --git a/code/modules/food_and_drinks/food/snacks_salad.html b/code/modules/food_and_drinks/food/snacks_salad.html
new file mode 100644
index 0000000000000..270bc9469db32
--- /dev/null
+++ b/code/modules/food_and_drinks/food/snacks_salad.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/food_and_drinks/food/snacks_salad.dm - SPLURT Station 13
+
+
+
+
+code/modules/food_and_drinks/food/snacks_salad.dm
+
+
+
+
+
+
+
diff --git a/code/modules/food_and_drinks/food/snacks_sushi.html b/code/modules/food_and_drinks/food/snacks_sushi.html
new file mode 100644
index 0000000000000..937d41b634c82
--- /dev/null
+++ b/code/modules/food_and_drinks/food/snacks_sushi.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/food_and_drinks/food/snacks_sushi.dm - SPLURT Station 13
+
+
+
+
+code/modules/food_and_drinks/food/snacks_sushi.dm
+
+
+
+
+
+
+
diff --git a/code/modules/food_and_drinks/food/snacks_vend.html b/code/modules/food_and_drinks/food/snacks_vend.html
new file mode 100644
index 0000000000000..e3955987d88c5
--- /dev/null
+++ b/code/modules/food_and_drinks/food/snacks_vend.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/food_and_drinks/food/snacks_vend.dm - SPLURT Station 13
+
+
+
+
+code/modules/food_and_drinks/food/snacks_vend.dm
+
+
+
+
+
+
+
diff --git a/code/modules/food_and_drinks/recipes/drinks_recipes.html b/code/modules/food_and_drinks/recipes/drinks_recipes.html
new file mode 100644
index 0000000000000..399b8f4326400
--- /dev/null
+++ b/code/modules/food_and_drinks/recipes/drinks_recipes.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+ code/modules/food_and_drinks/recipes/drinks_recipes.dm - SPLURT Station 13
+
+
+
+
+code/modules/food_and_drinks/recipes/drinks_recipes.dm
+
+
+
+
+
+
+
diff --git a/code/modules/food_and_drinks/recipes/food_mixtures.html b/code/modules/food_and_drinks/recipes/food_mixtures.html
new file mode 100644
index 0000000000000..e44ba5136e265
--- /dev/null
+++ b/code/modules/food_and_drinks/recipes/food_mixtures.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/food_and_drinks/recipes/food_mixtures.dm - SPLURT Station 13
+
+
+
+
+code/modules/food_and_drinks/recipes/food_mixtures.dm
+
+
+
+
+
+
+
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_bread.html b/code/modules/food_and_drinks/recipes/tablecraft/recipes_bread.html
new file mode 100644
index 0000000000000..433ef45380b0c
--- /dev/null
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_bread.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/modules/food_and_drinks/recipes/tablecraft/recipes_bread.dm - SPLURT Station 13
+
+
+
+
+code/modules/food_and_drinks/recipes/tablecraft/recipes_bread.dm
+
+
+
+
+
+
+
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_burger.html b/code/modules/food_and_drinks/recipes/tablecraft/recipes_burger.html
new file mode 100644
index 0000000000000..8c7df6cc73b96
--- /dev/null
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_burger.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+ code/modules/food_and_drinks/recipes/tablecraft/recipes_burger.dm - SPLURT Station 13
+
+
+
+
+code/modules/food_and_drinks/recipes/tablecraft/recipes_burger.dm
+
+
+
+
+
+
+
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.html b/code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.html
new file mode 100644
index 0000000000000..e99699326b7fc
--- /dev/null
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm - SPLURT Station 13
+
+
+
+
+code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm
+
+
+
+
+
+
+
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_donut.html b/code/modules/food_and_drinks/recipes/tablecraft/recipes_donut.html
new file mode 100644
index 0000000000000..a2efe856fe63a
--- /dev/null
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_donut.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/modules/food_and_drinks/recipes/tablecraft/recipes_donut.dm - SPLURT Station 13
+
+
+
+
+code/modules/food_and_drinks/recipes/tablecraft/recipes_donut.dm
+
+
+
+
+
+
+
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_egg.html b/code/modules/food_and_drinks/recipes/tablecraft/recipes_egg.html
new file mode 100644
index 0000000000000..aeb21642a547c
--- /dev/null
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_egg.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/food_and_drinks/recipes/tablecraft/recipes_egg.dm - SPLURT Station 13
+
+
+
+
+code/modules/food_and_drinks/recipes/tablecraft/recipes_egg.dm
+
+
+
+
+
+
+
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_frozen.html b/code/modules/food_and_drinks/recipes/tablecraft/recipes_frozen.html
new file mode 100644
index 0000000000000..37753a006062c
--- /dev/null
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_frozen.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/food_and_drinks/recipes/tablecraft/recipes_frozen.dm - SPLURT Station 13
+
+
+
+
+code/modules/food_and_drinks/recipes/tablecraft/recipes_frozen.dm
+
+
+
+
+
+
+
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.html b/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.html
new file mode 100644
index 0000000000000..087a2fcce2115
--- /dev/null
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm - SPLURT Station 13
+
+
+
+
+code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm
+
+
+
+
+
+
+
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_mexican.html b/code/modules/food_and_drinks/recipes/tablecraft/recipes_mexican.html
new file mode 100644
index 0000000000000..250104dbb1838
--- /dev/null
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_mexican.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/food_and_drinks/recipes/tablecraft/recipes_mexican.dm - SPLURT Station 13
+
+
+
+
+code/modules/food_and_drinks/recipes/tablecraft/recipes_mexican.dm
+
+
+
+
+
+
+
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.html b/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.html
new file mode 100644
index 0000000000000..07ded931079f4
--- /dev/null
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm - SPLURT Station 13
+
+
+
+
+code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm
+
+
+
+
+
+
+
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.html b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.html
new file mode 100644
index 0000000000000..af110818e1f70
--- /dev/null
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm - SPLURT Station 13
+
+
+
+
+code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm
+
+
+
+
+
+
+
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pies_sweets.html b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pies_sweets.html
new file mode 100644
index 0000000000000..abce78e7a4b5c
--- /dev/null
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pies_sweets.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+ code/modules/food_and_drinks/recipes/tablecraft/recipes_pies_sweets.dm - SPLURT Station 13
+
+
+
+
+code/modules/food_and_drinks/recipes/tablecraft/recipes_pies_sweets.dm
+
+
+
+
+
+
+
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pizza.html b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pizza.html
new file mode 100644
index 0000000000000..45064c662af0a
--- /dev/null
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pizza.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/food_and_drinks/recipes/tablecraft/recipes_pizza.dm - SPLURT Station 13
+
+
+
+
+code/modules/food_and_drinks/recipes/tablecraft/recipes_pizza.dm
+
+
+
+
+
+
+
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_salad.html b/code/modules/food_and_drinks/recipes/tablecraft/recipes_salad.html
new file mode 100644
index 0000000000000..b76dad6608cf9
--- /dev/null
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_salad.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/food_and_drinks/recipes/tablecraft/recipes_salad.dm - SPLURT Station 13
+
+
+
+
+code/modules/food_and_drinks/recipes/tablecraft/recipes_salad.dm
+
+
+
+
+
+
+
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_sandwich.html b/code/modules/food_and_drinks/recipes/tablecraft/recipes_sandwich.html
new file mode 100644
index 0000000000000..adac62ff9e134
--- /dev/null
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_sandwich.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/food_and_drinks/recipes/tablecraft/recipes_sandwich.dm - SPLURT Station 13
+
+
+
+
+code/modules/food_and_drinks/recipes/tablecraft/recipes_sandwich.dm
+
+
+
+
+
+
+
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_seafood.html b/code/modules/food_and_drinks/recipes/tablecraft/recipes_seafood.html
new file mode 100644
index 0000000000000..8f74a48e74a90
--- /dev/null
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_seafood.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/modules/food_and_drinks/recipes/tablecraft/recipes_seafood.dm - SPLURT Station 13
+
+
+
+
+code/modules/food_and_drinks/recipes/tablecraft/recipes_seafood.dm
+
+
+
+
+
+
+
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_soup.html b/code/modules/food_and_drinks/recipes/tablecraft/recipes_soup.html
new file mode 100644
index 0000000000000..c4cbb18cfde5b
--- /dev/null
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_soup.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/food_and_drinks/recipes/tablecraft/recipes_soup.dm - SPLURT Station 13
+
+
+
+
+code/modules/food_and_drinks/recipes/tablecraft/recipes_soup.dm
+
+
+
+
+
+
+
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_spaghetti.html b/code/modules/food_and_drinks/recipes/tablecraft/recipes_spaghetti.html
new file mode 100644
index 0000000000000..ee2fbe18e676b
--- /dev/null
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_spaghetti.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/food_and_drinks/recipes/tablecraft/recipes_spaghetti.dm - SPLURT Station 13
+
+
+
+
+code/modules/food_and_drinks/recipes/tablecraft/recipes_spaghetti.dm
+
+
+
+
+
+
+
diff --git a/code/modules/games/unum.html b/code/modules/games/unum.html
new file mode 100644
index 0000000000000..744285fe8738a
--- /dev/null
+++ b/code/modules/games/unum.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/games/unum.dm - SPLURT Station 13
+
+
+
+
+code/modules/games/unum.dm
+
+
+
+
+ /obj /item /toy/cards/deck/unum A deck of unum cards. Classic.
+
+
+
diff --git a/code/modules/holiday/halloween/jacqueen.html b/code/modules/holiday/halloween/jacqueen.html
new file mode 100644
index 0000000000000..6e4a08cf5cc73
--- /dev/null
+++ b/code/modules/holiday/halloween/jacqueen.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/holiday/halloween/jacqueen.dm - SPLURT Station 13
+
+
+
+
+code/modules/holiday/halloween/jacqueen.dm
+
+
+
+
+
+
+
diff --git a/code/modules/hydroponics/grown/towercap.html b/code/modules/hydroponics/grown/towercap.html
new file mode 100644
index 0000000000000..1379ceb3b3c01
--- /dev/null
+++ b/code/modules/hydroponics/grown/towercap.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/hydroponics/grown/towercap.dm - SPLURT Station 13
+
+
+
+
+code/modules/hydroponics/grown/towercap.dm
+
+
+
+
+ /obj /structure/bonfire BONFIRES
+
+
+
diff --git a/code/modules/hydroponics/seed_extractor.html b/code/modules/hydroponics/seed_extractor.html
new file mode 100644
index 0000000000000..f6e70968bc659
--- /dev/null
+++ b/code/modules/hydroponics/seed_extractor.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/hydroponics/seed_extractor.dm - SPLURT Station 13
+
+
+
+
+code/modules/hydroponics/seed_extractor.dm
+
+
+
+
+ /proc/seedify
+ Finds and extracts seeds from an object
+
+
+
diff --git a/code/modules/instruments/instrument_data/_instrument_data.html b/code/modules/instruments/instrument_data/_instrument_data.html
new file mode 100644
index 0000000000000..f8d4dae7fe09f
--- /dev/null
+++ b/code/modules/instruments/instrument_data/_instrument_data.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/instruments/instrument_data/_instrument_data.dm - SPLURT Station 13
+
+
+
+
+code/modules/instruments/instrument_data/_instrument_data.dm
+
+
+
+
+
+
+
diff --git a/code/modules/instruments/songs/_song.html b/code/modules/instruments/songs/_song.html
new file mode 100644
index 0000000000000..3f19fa95b9af7
--- /dev/null
+++ b/code/modules/instruments/songs/_song.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/instruments/songs/_song.dm - SPLURT Station 13
+
+
+
+
+code/modules/instruments/songs/_song.dm
+
+
+
+
+ /datum/song These are the actual backend behind instruments.
+They attach to an atom and provide the editor + playback functionality.
+
+
+
diff --git a/code/modules/jobs/access.html b/code/modules/jobs/access.html
new file mode 100644
index 0000000000000..488f4a8e1c36a
--- /dev/null
+++ b/code/modules/jobs/access.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/jobs/access.dm - SPLURT Station 13
+
+
+
+
+code/modules/jobs/access.dm
+
+
+
+
+ /proc/GetJobName
+ Gets the job title, if the job name is an alt title, locates the original title using a prebuilt cache
+
+
+
diff --git a/code/modules/keybindings.html b/code/modules/keybindings.html
new file mode 100644
index 0000000000000..84af7a441def9
--- /dev/null
+++ b/code/modules/keybindings.html
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+ code/modules/keybindings/readme.md - SPLURT Station 13
+
+
+
+
+In-code keypress handling system code/modules/keybindings/readme.md
+
+
+
+
+ This whole system is heavily based off of forum_account's keyboard library.
+Thanks to forum_account for saving the day, the library can be found
+here !
+.dmf macros have some very serious shortcomings. For example, they do not allow reusing parts
+of one macro in another, so giving cyborgs their own shortcuts to swap active module couldn't
+inherit the movement that all mobs should have anyways. The webclient only supports one macro,
+so having more than one was problematic. Additionally each keybind has to call an actual
+verb, which meant a lot of hidden verbs that just call one other proc. Also our existing
+macro was really bad and tied unrelated behavior into Northeast()
, Southeast()
, Northwest()
,
+and Southwest()
.
+The basic premise of this system is to not screw with .dmf macro setup at all and handle
+pressing those keys in the code instead. We have every key call client.keyDown()
+or client.keyUp()
with the pressed key as an argument. Certain keys get processed
+directly by the client because they should be doable at any time, then we call
+keyDown()
or keyUp()
on the client's holder and the client's mob's focus.
+By default mob.focus
is the mob itself, but you can set it to any datum to give control of a
+client's keypresses to another object. This would be a good way to handle a menu or driving
+a mech. You can also set it to null to disregard input from a certain user.
+Movement is handled by having each client call client.keyLoop()
every game tick.
+As above, this calls holder and focus.keyLoop()
. atom/movable/keyLoop()
handles movement
+Try to keep the calculations in this proc light. It runs every tick for every client after all!
+You can also tell which keys are being held down now. Each client a list of keys pressed called
+keys_held
. Each entry is a key as a text string associated with the world.time when it was
+pressed.
+No client-set keybindings at this time, but it shouldn't be too hard if someone wants.
+Notes about certain keys:
+
+Tab
has client-sided behavior but acts normally
+T
, O
, and M
move focus to the input when pressed. This fires the keyUp macro right away.
+\
needs to be escaped in the dmf so any usage is \\
+
+You cannot TICK_CHECK
or check world.tick_usage
inside of procs called by key down and up
+events. They happen outside of a byond tick and have no meaning there. Key looping
+works correctly since it's part of a subsystem, not direct input.
+
+
+
diff --git a/code/modules/language/language_holder.html b/code/modules/language/language_holder.html
new file mode 100644
index 0000000000000..ae9c686429f4c
--- /dev/null
+++ b/code/modules/language/language_holder.html
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+ code/modules/language/language_holder.dm - SPLURT Station 13
+
+
+
+
+code/modules/language/language_holder.dm
+
+
+
+
+ Language holders will either exist in an atom/movable or a mind. Creation of language holders happens
+automatically when they are needed, for example when something tries to speak.
+Where a mind is available, the mind language holder will be the one "in charge". The mind holder
+will update its languages based on the atom holder, and will get updated as part of
+transformations and other events that cause new languages to become available.
+Every language holder has three lists of languages (and sources for each of them):
+
+understood_languages
+spoken_languages
+blocked_languages
+Understood languages let you understand them, spoken languages lets you speak them
+(if your tongue is compatible), and blocked languages will let you do neither no matter
+what the source of the language is.
+Language holders are designed to mostly only ever require the use the helpers in atom/movable
+to achieve your goals, but it is also possible to work on them directly if needed. Any adding
+and removing of languages and sources should only happen through the procs, as directly changing
+these will mess something up somewhere down the line.
+All atom movables have the initial_language_holder var which allows you to set the default language
+holder to create. For example, /datum/language_holder/alien will give you xenocommon and a block for
+galactic common. Human species also have a default language holder var that will be updated on
+species change, initial_species_holder.
+Key procs
+
+
+
+
+
diff --git a/code/modules/lighting/emissive_blocker.html b/code/modules/lighting/emissive_blocker.html
new file mode 100644
index 0000000000000..67ddad6c32b9b
--- /dev/null
+++ b/code/modules/lighting/emissive_blocker.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/lighting/emissive_blocker.dm - SPLURT Station 13
+
+
+
+
+code/modules/lighting/emissive_blocker.dm
+
+
+
+
+
+
+
diff --git a/code/modules/mafia/_defines.html b/code/modules/mafia/_defines.html
new file mode 100644
index 0000000000000..9661893611801
--- /dev/null
+++ b/code/modules/mafia/_defines.html
@@ -0,0 +1,137 @@
+
+
+
+
+
+
+ code/modules/mafia/_defines.dm - SPLURT Station 13
+
+
+
+
+code/modules/mafia/_defines.dm
+
+
+
+
+ MAFIA_MAX_PLAYER_COUNT how many people can play mafia without issues (running out of spawns, procs not expecting more than this amount of people, etc)
+ TOWN_OVERFLOW Add this if you don't want a role to be a choice in the selection
+ TOWN_INVEST roles that learn info about others in the game (chaplain, detective, psych)
+ TOWN_PROTECT roles that keep other roles safe (doctor, sec officer, and weirdly enough lawyer counts)
+ TOWN_KILLING roles that are only there to kill bad guys.
+ TOWN_SUPPORT roles that don't fit into anything else (hop)
+ MAFIA_REGULAR normal vote kill changelings
+ MAFIA_SPECIAL every other changeling role that has extra abilities
+ NEUTRAL_KILL role that wins solo that nobody likes
+ NEUTRAL_DISRUPT role that upsets the game aka obsessed, usually worse for town than mafia but they can vote against mafia
+ ROLE_UNDETECTABLE to all forms of detection, shows themselves as an assistant.
+ ROLE_CAN_KILL has the ability to kill at night and thus, blocks the game from ending with other teams alive.
+ ROLE_UNIQUE can only be one in a randomly generated game
+ ROLE_REVEALED role is public to all other players in the game.
+ ROLE_VULNERABLE can not be defended, protected, or any other form of protection. all kills succeed no matter what.
+ ROLE_ROLEBLOCKED cannot perform any actions that night, preselected actions fail
+ COMSIG_MAFIA_SUNDOWN when the shutters fall, before the 45 second wait and night event resolution
+ COMSIG_MAFIA_NIGHT_START after the 45 second wait, for actions that must go first
+ COMSIG_MAFIA_NIGHT_ACTION_PHASE most night actions now resolve
+ COMSIG_MAFIA_NIGHT_KILL_PHASE now killing happens from the roles that do that. the reason this is post action phase is to ensure doctors can protect and lawyers can block
+ COMSIG_MAFIA_NIGHT_END now undoing states like protection, actions that must happen last, etc. right before shutters raise and the day begins
+ COMSIG_MAFIA_GAME_END signal sent to roles when the game is confirmed ending
Define Details
+COMSIG_MAFIA_GAME_END
+
+
+
+ signal sent to roles when the game is confirmed ending
COMSIG_MAFIA_NIGHT_ACTION_PHASE
+
+
+
+ most night actions now resolve
COMSIG_MAFIA_NIGHT_END
+
+
+
+ now undoing states like protection, actions that must happen last, etc. right before shutters raise and the day begins
COMSIG_MAFIA_NIGHT_KILL_PHASE
+
+
+
+ now killing happens from the roles that do that. the reason this is post action phase is to ensure doctors can protect and lawyers can block
COMSIG_MAFIA_NIGHT_START
+
+
+
+ after the 45 second wait, for actions that must go first
COMSIG_MAFIA_SUNDOWN
+
+
+
+ when the shutters fall, before the 45 second wait and night event resolution
MAFIA_MAX_PLAYER_COUNT
+
+
+
+ how many people can play mafia without issues (running out of spawns, procs not expecting more than this amount of people, etc)
MAFIA_REGULAR
+
+
+
+ normal vote kill changelings
MAFIA_SPECIAL
+
+
+
+ every other changeling role that has extra abilities
NEUTRAL_DISRUPT
+
+
+
+ role that upsets the game aka obsessed, usually worse for town than mafia but they can vote against mafia
NEUTRAL_KILL
+
+
+
+ role that wins solo that nobody likes
ROLE_CAN_KILL
+
+
+
+ has the ability to kill at night and thus, blocks the game from ending with other teams alive.
ROLE_REVEALED
+
+
+
+ role is public to all other players in the game.
ROLE_ROLEBLOCKED
+
+
+
+ cannot perform any actions that night, preselected actions fail
ROLE_UNDETECTABLE
+
+
+
+ to all forms of detection, shows themselves as an assistant.
ROLE_UNIQUE
+
+
+
+ can only be one in a randomly generated game
ROLE_VULNERABLE
+
+
+
+ can not be defended, protected, or any other form of protection. all kills succeed no matter what.
TOWN_INVEST
+
+
+
+ roles that learn info about others in the game (chaplain, detective, psych)
TOWN_KILLING
+
+
+
+ roles that are only there to kill bad guys.
TOWN_OVERFLOW
+
+
+
+ Add this if you don't want a role to be a choice in the selection
TOWN_PROTECT
+
+
+
+ roles that keep other roles safe (doctor, sec officer, and weirdly enough lawyer counts)
TOWN_SUPPORT
+
+
+
+ roles that don't fit into anything else (hop)
+
+
+
diff --git a/code/modules/mafia/controller.html b/code/modules/mafia/controller.html
new file mode 100644
index 0000000000000..461c54257913c
--- /dev/null
+++ b/code/modules/mafia/controller.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+ code/modules/mafia/controller.dm - SPLURT Station 13
+
+
+
+
+code/modules/mafia/controller.dm
+
+
+
+
+ /datum/mafia_controller The mafia controller handles the mafia minigame in progress.
+It is first created when the first ghost signs up to play.
+ /proc/create_mafia_game
+ Creates the global datum for playing mafia games, destroys the last if that's required and returns the new.
+
+
+
diff --git a/code/modules/mafia/roles.html b/code/modules/mafia/roles.html
new file mode 100644
index 0000000000000..33a4d248f2ba4
--- /dev/null
+++ b/code/modules/mafia/roles.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/mafia/roles.dm - SPLURT Station 13
+
+
+
+
+code/modules/mafia/roles.dm
+
+
+
+
+ /datum /mafia_role /mafia MAFIA ROLES/// they're the "anti-town" working to kill off townies to win
+ /datum /mafia_role /traitor SOLO ROLES/// they range from anomalous factors to deranged killers that try to win alone.
+
+
+
diff --git a/code/modules/mapping.html b/code/modules/mapping.html
new file mode 100644
index 0000000000000..a958f2cff67d4
--- /dev/null
+++ b/code/modules/mapping.html
@@ -0,0 +1,79 @@
+
+
+
+
+
+
+ code/modules/mapping/README.txt - SPLURT Station 13
+
+
+
+
+code/modules/mapping/README.txt
+
+
+
+
+ The code in this module originally evolved from dmm_suite and has since been
+specialized for SS13 and otherwise tweaked to fit /tg/station's needs.
+
+dmm_suite version 1.0
+ Released January 30th, 2011.
+
+NOTE: Map saving functionality removed
+
+defines the object /dmm_suite
+ - Provides the proc load_map()
+ - Loads the specified map file onto the specified z-level.
+ - provides the proc write_map()
+ - Returns a text string of the map in dmm format
+ ready for output to a file.
+ - provides the proc save_map()
+ - Returns a .dmm file if map is saved
+ - Returns FALSE if map fails to save
+
+The dmm_suite provides saving and loading of map files in BYOND's native DMM map
+format. It approximates the map saving and loading processes of the Dream Maker
+and Dream Seeker programs so as to allow editing, saving, and loading of maps at
+runtime.
+
+------------------------
+
+To save a map at runtime, create an instance of /dmm_suite, and then call
+write_map(), which accepts three arguments:
+ - A turf representing one corner of a three dimensional grid (Required).
+ - Another turf representing the other corner of the same grid (Required).
+ - Any, or a combination, of several bit flags (Optional, see documentation).
+
+The order in which the turfs are supplied does not matter, the /dmm_writer will
+determine the grid containing both, in much the same way as DM's block() function.
+write_map() will then return a string representing the saved map in dmm format;
+this string can then be saved to a file, or used for any other purose.
+
+------------------------
+
+To load a map at runtime, create an instance of /dmm_suite, and then call load_map(),
+which accepts two arguments:
+ - A .dmm file to load (Required).
+ - A number representing the z-level on which to start loading the map (Optional).
+
+The /dmm_suite will load the map file starting on the specified z-level. If no
+z-level was specified, world.maxz will be increased so as to fit the map. Note
+that if you wish to load a map onto a z-level that already has objects on it,
+you will have to handle the removal of those objects. Otherwise the new map will
+simply load the new objects on top of the old ones.
+
+Also note that all type paths specified in the .dmm file must exist in the world's
+code, and that the /dmm_reader trusts that files to be loaded are in fact valid
+.dmm files. Errors in the .dmm format will cause runtime errors.
+
+
+
+
diff --git a/code/modules/mapping/mapping_helpers/_mapping_helpers.html b/code/modules/mapping/mapping_helpers/_mapping_helpers.html
new file mode 100644
index 0000000000000..4a9082de6b704
--- /dev/null
+++ b/code/modules/mapping/mapping_helpers/_mapping_helpers.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/mapping/mapping_helpers/_mapping_helpers.dm - SPLURT Station 13
+
+
+
+
+code/modules/mapping/mapping_helpers/_mapping_helpers.dm
+
+
+
+
+
+
+
diff --git a/code/modules/mapping/mapping_helpers/network_builder/power_cables.html b/code/modules/mapping/mapping_helpers/network_builder/power_cables.html
new file mode 100644
index 0000000000000..4db8a2f4e9e29
--- /dev/null
+++ b/code/modules/mapping/mapping_helpers/network_builder/power_cables.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/mapping/mapping_helpers/network_builder/power_cables.dm - SPLURT Station 13
+
+
+
+
+code/modules/mapping/mapping_helpers/network_builder/power_cables.dm
+
+
+
+
+
+
+
diff --git a/code/modules/mapping/preloader.html b/code/modules/mapping/preloader.html
new file mode 100644
index 0000000000000..f36ac6ab6c827
--- /dev/null
+++ b/code/modules/mapping/preloader.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/mapping/preloader.dm - SPLURT Station 13
+
+
+
+
+code/modules/mapping/preloader.dm
+
+
+
+
+ /datum /map_preloader Preloader datum
+
+
+
diff --git a/code/modules/mapping/reader.html b/code/modules/mapping/reader.html
new file mode 100644
index 0000000000000..c1bdae5474f3e
--- /dev/null
+++ b/code/modules/mapping/reader.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/mapping/reader.dm - SPLURT Station 13
+
+
+
+
+code/modules/mapping/reader.dm
+
+
+
+
+ /proc/load_map
+ Shortcut function to parse a map and apply it to the world.
+
+
+
diff --git a/code/modules/mapping/verify.html b/code/modules/mapping/verify.html
new file mode 100644
index 0000000000000..fe4ff38cce0b3
--- /dev/null
+++ b/code/modules/mapping/verify.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/mapping/verify.dm - SPLURT Station 13
+
+
+
+
+code/modules/mapping/verify.dm
+
+
+
+
+
+
+
diff --git a/code/modules/mining/aux_base.html b/code/modules/mining/aux_base.html
new file mode 100644
index 0000000000000..47a8a65a33294
--- /dev/null
+++ b/code/modules/mining/aux_base.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/modules/mining/aux_base.dm - SPLURT Station 13
+
+
+
+
+code/modules/mining/aux_base.dm
+
+
+
+Define Details
+ZONE_SET
+
+
+
+ Mining Base
+
+
+
diff --git a/code/modules/mining/equipment/explorer_gear.html b/code/modules/mining/equipment/explorer_gear.html
new file mode 100644
index 0000000000000..cabf257296c5c
--- /dev/null
+++ b/code/modules/mining/equipment/explorer_gear.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/modules/mining/equipment/explorer_gear.dm - SPLURT Station 13
+
+
+
+
+code/modules/mining/equipment/explorer_gear.dm
+
+
+
+
+
+
+
diff --git a/code/modules/mining/equipment/kinetic_crusher.html b/code/modules/mining/equipment/kinetic_crusher.html
new file mode 100644
index 0000000000000..66ba13f240e23
--- /dev/null
+++ b/code/modules/mining/equipment/kinetic_crusher.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/mining/equipment/kinetic_crusher.dm - SPLURT Station 13
+
+
+
+
+code/modules/mining/equipment/kinetic_crusher.dm
+
+
+
+
+
+
+
diff --git a/code/modules/mining/equipment/lazarus_injector.html b/code/modules/mining/equipment/lazarus_injector.html
new file mode 100644
index 0000000000000..e6b40305b52c3
--- /dev/null
+++ b/code/modules/mining/equipment/lazarus_injector.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/mining/equipment/lazarus_injector.dm - SPLURT Station 13
+
+
+
+
+code/modules/mining/equipment/lazarus_injector.dm
+
+
+
+
+ /obj /item /lazarus_injector Lazarus Injector
+
+
+
diff --git a/code/modules/mining/equipment/mineral_scanner.html b/code/modules/mining/equipment/mineral_scanner.html
new file mode 100644
index 0000000000000..ca39a51e30253
--- /dev/null
+++ b/code/modules/mining/equipment/mineral_scanner.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/mining/equipment/mineral_scanner.dm - SPLURT Station 13
+
+
+
+
+code/modules/mining/equipment/mineral_scanner.dm
+
+
+
+
+ /obj /item /mining_scanner Mining Scanners
+
+
+
diff --git a/code/modules/mining/equipment/mining_tools.html b/code/modules/mining/equipment/mining_tools.html
new file mode 100644
index 0000000000000..9ede644833d70
--- /dev/null
+++ b/code/modules/mining/equipment/mining_tools.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/mining/equipment/mining_tools.dm - SPLURT Station 13
+
+
+
+
+code/modules/mining/equipment/mining_tools.dm
+
+
+
+
+ /obj /item /pickaxe Pickaxes & Drills & Shovels
+
+
+
diff --git a/code/modules/mining/equipment/regenerative_core.html b/code/modules/mining/equipment/regenerative_core.html
new file mode 100644
index 0000000000000..9293c10fc4c15
--- /dev/null
+++ b/code/modules/mining/equipment/regenerative_core.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/modules/mining/equipment/regenerative_core.dm - SPLURT Station 13
+
+
+
+
+code/modules/mining/equipment/regenerative_core.dm
+
+
+
+
+
+
+
diff --git a/code/modules/mining/equipment/resonator.html b/code/modules/mining/equipment/resonator.html
new file mode 100644
index 0000000000000..8cca2358bf93b
--- /dev/null
+++ b/code/modules/mining/equipment/resonator.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/mining/equipment/resonator.dm - SPLURT Station 13
+
+
+
+
+code/modules/mining/equipment/resonator.dm
+
+
+
+
+
+
+
diff --git a/code/modules/mining/equipment/survival_pod.html b/code/modules/mining/equipment/survival_pod.html
new file mode 100644
index 0000000000000..0a8ee10ddb5be
--- /dev/null
+++ b/code/modules/mining/equipment/survival_pod.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/mining/equipment/survival_pod.dm - SPLURT Station 13
+
+
+
+
+code/modules/mining/equipment/survival_pod.dm
+
+
+
+
+ /area /survivalpod Survival Pod
+
+
+
diff --git a/code/modules/mining/equipment/vendor_items.html b/code/modules/mining/equipment/vendor_items.html
new file mode 100644
index 0000000000000..797147ad525d0
--- /dev/null
+++ b/code/modules/mining/equipment/vendor_items.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/mining/equipment/vendor_items.dm - SPLURT Station 13
+
+
+
+
+code/modules/mining/equipment/vendor_items.dm
+
+
+
+
+
+
+
diff --git a/code/modules/mining/equipment/wormhole_jaunter.html b/code/modules/mining/equipment/wormhole_jaunter.html
new file mode 100644
index 0000000000000..47c1013945bfa
--- /dev/null
+++ b/code/modules/mining/equipment/wormhole_jaunter.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/mining/equipment/wormhole_jaunter.dm - SPLURT Station 13
+
+
+
+
+code/modules/mining/equipment/wormhole_jaunter.dm
+
+
+
+
+ /obj /item /wormhole_jaunter Jaunter
+
+
+
diff --git a/code/modules/mining/laborcamp/laborstacker.html b/code/modules/mining/laborcamp/laborstacker.html
new file mode 100644
index 0000000000000..355a53d76569c
--- /dev/null
+++ b/code/modules/mining/laborcamp/laborstacker.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/modules/mining/laborcamp/laborstacker.dm - SPLURT Station 13
+
+
+
+
+code/modules/mining/laborcamp/laborstacker.dm
+
+
+
+
+
+
+
diff --git a/code/modules/mining/lavaland/ash_flora.html b/code/modules/mining/lavaland/ash_flora.html
new file mode 100644
index 0000000000000..afea2395375bb
--- /dev/null
+++ b/code/modules/mining/lavaland/ash_flora.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/mining/lavaland/ash_flora.dm - SPLURT Station 13
+
+
+
+
+code/modules/mining/lavaland/ash_flora.dm
+
+
+
+
+
+
+
diff --git a/code/modules/mining/lavaland/necropolis_chests.html b/code/modules/mining/lavaland/necropolis_chests.html
new file mode 100644
index 0000000000000..83171994551d8
--- /dev/null
+++ b/code/modules/mining/lavaland/necropolis_chests.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/mining/lavaland/necropolis_chests.dm - SPLURT Station 13
+
+
+
+
+code/modules/mining/lavaland/necropolis_chests.dm
+
+
+
+
+
+
+
diff --git a/code/modules/mining/machine_processing.html b/code/modules/mining/machine_processing.html
new file mode 100644
index 0000000000000..bc7743cd490a4
--- /dev/null
+++ b/code/modules/mining/machine_processing.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/mining/machine_processing.dm - SPLURT Station 13
+
+
+
+
+code/modules/mining/machine_processing.dm
+
+
+
+
+
+
+
diff --git a/code/modules/mining/machine_redemption.html b/code/modules/mining/machine_redemption.html
new file mode 100644
index 0000000000000..311e93522606a
--- /dev/null
+++ b/code/modules/mining/machine_redemption.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/mining/machine_redemption.dm - SPLURT Station 13
+
+
+
+
+code/modules/mining/machine_redemption.dm
+
+
+
+
+
+
+
diff --git a/code/modules/mining/machine_stacking.html b/code/modules/mining/machine_stacking.html
new file mode 100644
index 0000000000000..f4b255ed414f2
--- /dev/null
+++ b/code/modules/mining/machine_stacking.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/mining/machine_stacking.dm - SPLURT Station 13
+
+
+
+
+code/modules/mining/machine_stacking.dm
+
+
+
+
+
+
+
diff --git a/code/modules/mining/machine_unloading.html b/code/modules/mining/machine_unloading.html
new file mode 100644
index 0000000000000..70454e199ecab
--- /dev/null
+++ b/code/modules/mining/machine_unloading.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/mining/machine_unloading.dm - SPLURT Station 13
+
+
+
+
+code/modules/mining/machine_unloading.dm
+
+
+
+
+
+
+
diff --git a/code/modules/mining/machine_vending.html b/code/modules/mining/machine_vending.html
new file mode 100644
index 0000000000000..bb6b7d018b23e
--- /dev/null
+++ b/code/modules/mining/machine_vending.html
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+ code/modules/mining/machine_vending.dm - SPLURT Station 13
+
+
+
+
+code/modules/mining/machine_vending.dm
+
+
+
+
+
+
+
diff --git a/code/modules/mining/mine_items.html b/code/modules/mining/mine_items.html
new file mode 100644
index 0000000000000..72c5e0d4ba0e6
--- /dev/null
+++ b/code/modules/mining/mine_items.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+ code/modules/mining/mine_items.dm - SPLURT Station 13
+
+
+
+
+code/modules/mining/mine_items.dm
+
+
+
+
+
+
+
diff --git a/code/modules/mining/minebot.html b/code/modules/mining/minebot.html
new file mode 100644
index 0000000000000..ee9ee6a6805fa
--- /dev/null
+++ b/code/modules/mining/minebot.html
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+ code/modules/mining/minebot.dm - SPLURT Station 13
+
+
+
+
+code/modules/mining/minebot.dm
+
+
+
+Define Details
+MINEDRONE_COLLECT
+
+
+
+ Mining drone
+
+
+
diff --git a/code/modules/mining/money_bag.html b/code/modules/mining/money_bag.html
new file mode 100644
index 0000000000000..14a60bbb7a15c
--- /dev/null
+++ b/code/modules/mining/money_bag.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/mining/money_bag.dm - SPLURT Station 13
+
+
+
+
+code/modules/mining/money_bag.dm
+
+
+
+
+ /obj /item /storage/bag/money Money bag
+
+
+
diff --git a/code/modules/mining/ores_coins.html b/code/modules/mining/ores_coins.html
new file mode 100644
index 0000000000000..18061837acbeb
--- /dev/null
+++ b/code/modules/mining/ores_coins.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/mining/ores_coins.dm - SPLURT Station 13
+
+
+
+
+code/modules/mining/ores_coins.dm
+
+
+
+
+
+
+
diff --git a/code/modules/mining/satchel_ore_boxdm.html b/code/modules/mining/satchel_ore_boxdm.html
new file mode 100644
index 0000000000000..93d337db7302c
--- /dev/null
+++ b/code/modules/mining/satchel_ore_boxdm.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/mining/satchel_ore_boxdm.dm - SPLURT Station 13
+
+
+
+
+code/modules/mining/satchel_ore_boxdm.dm
+
+
+
+
+ /obj /structure/ore_box Ore box
+
+
+
diff --git a/code/modules/mob/clickdelay.html b/code/modules/mob/clickdelay.html
new file mode 100644
index 0000000000000..5b3600a1f4248
--- /dev/null
+++ b/code/modules/mob/clickdelay.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/modules/mob/clickdelay.dm - SPLURT Station 13
+
+
+
+
+code/modules/mob/clickdelay.dm
+
+
+
+
+ /mob CLICKDELAY HANDLING SYSTEM
+How this works is mobs can never do actions until their next_action is at or below world.time, but things can specify extra cooldown
+to check for either from the time of last_action or from the end of next_action.
+
+
+
diff --git a/code/modules/mob/dead/new_player/new_player.html b/code/modules/mob/dead/new_player/new_player.html
new file mode 100644
index 0000000000000..3b9a22ebd1228
--- /dev/null
+++ b/code/modules/mob/dead/new_player/new_player.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/modules/mob/dead/new_player/new_player.dm - SPLURT Station 13
+
+
+
+
+code/modules/mob/dead/new_player/new_player.dm
+
+
+
+Define Details
+RESET_HUD_INTERVAL
+
+
+
+ Cooldown for the Reset Lobby Menu HUD verb
+
+
+
diff --git a/code/modules/mob/dead/new_player/sprite_accessories/alienpeople.html b/code/modules/mob/dead/new_player/sprite_accessories/alienpeople.html
new file mode 100644
index 0000000000000..6f6a94741ee22
--- /dev/null
+++ b/code/modules/mob/dead/new_player/sprite_accessories/alienpeople.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/modules/mob/dead/new_player/sprite_accessories/alienpeople.dm - SPLURT Station 13
+
+
+
+
+code/modules/mob/dead/new_player/sprite_accessories/alienpeople.dm
+
+
+
+
+ /datum /sprite_accessory/xeno_dorsal Xeno Dorsal Tubes
+ /datum /sprite_accessory/xeno_tail Xeno Tails
+ /datum /sprite_accessory/xeno_head Xeno Heads
+
+
+
diff --git a/code/modules/mob/dead/new_player/sprite_accessories/body_markings.html b/code/modules/mob/dead/new_player/sprite_accessories/body_markings.html
new file mode 100644
index 0000000000000..ff5d732c83463
--- /dev/null
+++ b/code/modules/mob/dead/new_player/sprite_accessories/body_markings.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/mob/dead/new_player/sprite_accessories/body_markings.dm - SPLURT Station 13
+
+
+
+
+code/modules/mob/dead/new_player/sprite_accessories/body_markings.dm
+
+
+
+
+ /datum /sprite_accessory/mam_body_markings Furry Markings
+ /datum /sprite_accessory/insect_fluff Insect Markings
+
+
+
diff --git a/code/modules/mob/dead/new_player/sprite_accessories/ears.html b/code/modules/mob/dead/new_player/sprite_accessories/ears.html
new file mode 100644
index 0000000000000..bae3e75080ca3
--- /dev/null
+++ b/code/modules/mob/dead/new_player/sprite_accessories/ears.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/modules/mob/dead/new_player/sprite_accessories/ears.dm - SPLURT Station 13
+
+
+
+
+code/modules/mob/dead/new_player/sprite_accessories/ears.dm
+
+
+
+
+ /datum /sprite_accessory/ears/human/axolotl Human Ears
+ /datum /sprite_accessory/ears/mam_ears Furry Ears
+ /datum /sprite_accessory/ears/human/bnnuy Tall Ears
+
+
+
diff --git a/code/modules/mob/dead/new_player/sprite_accessories/ipc_synths.html b/code/modules/mob/dead/new_player/sprite_accessories/ipc_synths.html
new file mode 100644
index 0000000000000..1f69fa6b38c43
--- /dev/null
+++ b/code/modules/mob/dead/new_player/sprite_accessories/ipc_synths.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/mob/dead/new_player/sprite_accessories/ipc_synths.dm - SPLURT Station 13
+
+
+
+
+code/modules/mob/dead/new_player/sprite_accessories/ipc_synths.dm
+
+
+
+
+ /datum /sprite_accessory/screen IPC SCREENS
+ /datum /sprite_accessory/antenna IPC Antennas
+
+
+
diff --git a/code/modules/mob/dead/new_player/sprite_accessories/legs_and_taurs.html b/code/modules/mob/dead/new_player/sprite_accessories/legs_and_taurs.html
new file mode 100644
index 0000000000000..cd4615373d3c9
--- /dev/null
+++ b/code/modules/mob/dead/new_player/sprite_accessories/legs_and_taurs.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/mob/dead/new_player/sprite_accessories/legs_and_taurs.dm - SPLURT Station 13
+
+
+
+
+code/modules/mob/dead/new_player/sprite_accessories/legs_and_taurs.dm
+
+
+
+
+ /datum /sprite_accessory/legs/none Leggy
+ /datum /sprite_accessory/taur Taur Bodies
+
+
+
diff --git a/code/modules/mob/dead/new_player/sprite_accessories/snouts.html b/code/modules/mob/dead/new_player/sprite_accessories/snouts.html
new file mode 100644
index 0000000000000..cc6f278481294
--- /dev/null
+++ b/code/modules/mob/dead/new_player/sprite_accessories/snouts.html
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+ code/modules/mob/dead/new_player/sprite_accessories/snouts.dm - SPLURT Station 13
+
+
+
+
+code/modules/mob/dead/new_player/sprite_accessories/snouts.dm
+
+
+
+
+
+
+
diff --git a/code/modules/mob/dead/new_player/sprite_accessories/tails.html b/code/modules/mob/dead/new_player/sprite_accessories/tails.html
new file mode 100644
index 0000000000000..e7c16cab727a9
--- /dev/null
+++ b/code/modules/mob/dead/new_player/sprite_accessories/tails.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/mob/dead/new_player/sprite_accessories/tails.dm - SPLURT Station 13
+
+
+
+
+code/modules/mob/dead/new_player/sprite_accessories/tails.dm
+
+
+
+
+ /datum /sprite_accessory/tails/human/none Human Tails
+ /datum /sprite_accessory/tails/mam_tails Furry Tails
+
+
+
diff --git a/code/modules/mob/living/blood.html b/code/modules/mob/living/blood.html
new file mode 100644
index 0000000000000..a3f9c90348289
--- /dev/null
+++ b/code/modules/mob/living/blood.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/modules/mob/living/blood.dm - SPLURT Station 13
+
+
+
+
+code/modules/mob/living/blood.dm
+
+
+
+Define Details
+EXOTIC_BLEED_MULTIPLIER
+
+
+
+ BLOOD SYSTEM
+
+
+
diff --git a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.html b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.html
new file mode 100644
index 0000000000000..654709373633f
--- /dev/null
+++ b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm - SPLURT Station 13
+
+
+
+
+code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
+
+
+
+
+ /obj /effect/proc_holder/alien STUN
+
+
+
diff --git a/code/modules/mob/living/carbon/carbon_stripping.html b/code/modules/mob/living/carbon/carbon_stripping.html
new file mode 100644
index 0000000000000..284bd9010a80a
--- /dev/null
+++ b/code/modules/mob/living/carbon/carbon_stripping.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/mob/living/carbon/carbon_stripping.dm - SPLURT Station 13
+
+
+
+
+code/modules/mob/living/carbon/carbon_stripping.dm
+
+
+
+
+
+
+
diff --git a/code/modules/mob/living/carbon/human/dummy.html b/code/modules/mob/living/carbon/human/dummy.html
new file mode 100644
index 0000000000000..066ac9d4a0f3a
--- /dev/null
+++ b/code/modules/mob/living/carbon/human/dummy.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/mob/living/carbon/human/dummy.dm - SPLURT Station 13
+
+
+
+
+code/modules/mob/living/carbon/human/dummy.dm
+
+
+
+
+ /mob /living /carbon /human /dummy/consistent Provides a dummy that is consistently bald, white, naked, etc.
+
+
+
diff --git a/code/modules/mob/living/carbon/human/human_defines.html b/code/modules/mob/living/carbon/human/human_defines.html
new file mode 100644
index 0000000000000..62939a4b07a86
--- /dev/null
+++ b/code/modules/mob/living/carbon/human/human_defines.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/mob/living/carbon/human/human_defines.dm - SPLURT Station 13
+
+
+
+
+code/modules/mob/living/carbon/human/human_defines.dm
+
+
+
+
+
+
+
diff --git a/code/modules/mob/living/carbon/human/innate_abilities/limb_regeneration.html b/code/modules/mob/living/carbon/human/innate_abilities/limb_regeneration.html
new file mode 100644
index 0000000000000..68f838832d9a4
--- /dev/null
+++ b/code/modules/mob/living/carbon/human/innate_abilities/limb_regeneration.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/mob/living/carbon/human/innate_abilities/limb_regeneration.dm - SPLURT Station 13
+
+
+
+
+code/modules/mob/living/carbon/human/innate_abilities/limb_regeneration.dm
+
+
+
+
+ /datum /action /innate/ability/limb_regrowth SPLURT EDIT START
+SPLURT EDIT END
+
+
+
diff --git a/code/modules/mob/living/carbon/human/species.html b/code/modules/mob/living/carbon/human/species.html
new file mode 100644
index 0000000000000..45b24eb33af6f
--- /dev/null
+++ b/code/modules/mob/living/carbon/human/species.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/modules/mob/living/carbon/human/species.dm - SPLURT Station 13
+
+
+
+
+code/modules/mob/living/carbon/human/species.dm
+
+
+
+
+
+
+
diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.html b/code/modules/mob/living/carbon/human/species_types/jellypeople.html
new file mode 100644
index 0000000000000..044a7c15f1762
--- /dev/null
+++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+ code/modules/mob/living/carbon/human/species_types/jellypeople.dm - SPLURT Station 13
+
+
+
+
+code/modules/mob/living/carbon/human/species_types/jellypeople.dm
+
+
+
+
+
+
+
diff --git a/code/modules/mob/living/living.html b/code/modules/mob/living/living.html
new file mode 100644
index 0000000000000..f73db299fb7d6
--- /dev/null
+++ b/code/modules/mob/living/living.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/modules/mob/living/living.dm - SPLURT Station 13
+
+
+
+
+code/modules/mob/living/living.dm
+
+
+
+
+ Proc that actually does the grab resisting. Return TRUE if successful. Does not check that a grab exists! Use attempt_resist_grab() instead of this in general!
+Forced is if something other than the user mashing movement keys/pressing resist button did it, silent is if it makes messages (like "attempted to resist" and "broken free").
+Forced does NOT force success!
+
+
+
diff --git a/code/modules/mob/living/living_active_parry.html b/code/modules/mob/living/living_active_parry.html
new file mode 100644
index 0000000000000..8ca6686a89405
--- /dev/null
+++ b/code/modules/mob/living/living_active_parry.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/mob/living/living_active_parry.dm - SPLURT Station 13
+
+
+
+
+code/modules/mob/living/living_active_parry.dm
+
+
+
+
+
+
+
diff --git a/code/modules/mob/living/living_block.html b/code/modules/mob/living/living_block.html
new file mode 100644
index 0000000000000..3afeb32b4b962
--- /dev/null
+++ b/code/modules/mob/living/living_block.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/mob/living/living_block.dm - SPLURT Station 13
+
+
+
+
+code/modules/mob/living/living_block.dm
+
+
+
+
+
+
+
diff --git a/code/modules/mob/living/living_blocking_parrying.html b/code/modules/mob/living/living_blocking_parrying.html
new file mode 100644
index 0000000000000..0ed3a4333bb65
--- /dev/null
+++ b/code/modules/mob/living/living_blocking_parrying.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/mob/living/living_blocking_parrying.dm - SPLURT Station 13
+
+
+
+
+code/modules/mob/living/living_blocking_parrying.dm
+
+
+
+
+ /datum/block_parry_data Carries data like list data that would be a waste of memory if we initialized the list on every /item as we can cache datums easier.
+
+
+
diff --git a/code/modules/mob/living/silicon/robot/robot.html b/code/modules/mob/living/silicon/robot/robot.html
new file mode 100644
index 0000000000000..f4564141e1f51
--- /dev/null
+++ b/code/modules/mob/living/silicon/robot/robot.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/mob/living/silicon/robot/robot.dm - SPLURT Station 13
+
+
+
+
+code/modules/mob/living/silicon/robot/robot.dm
+
+
+
+
+ /mob /living /silicon /robot /nocell This is the subtype that gets created by robot suits. It's needed so that those kind of borgs don't have a useless cell in them
+
+
+
diff --git a/code/modules/mob/living/simple_animal/constructs.html b/code/modules/mob/living/simple_animal/constructs.html
new file mode 100644
index 0000000000000..734396cf8c8d7
--- /dev/null
+++ b/code/modules/mob/living/simple_animal/constructs.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/modules/mob/living/simple_animal/constructs.dm - SPLURT Station 13
+
+
+
+
+code/modules/mob/living/simple_animal/constructs.dm
+
+
+
+
+
+
+
diff --git a/code/modules/mob/living/simple_animal/guardian/guardian.html b/code/modules/mob/living/simple_animal/guardian/guardian.html
new file mode 100644
index 0000000000000..f10593ae54ab5
--- /dev/null
+++ b/code/modules/mob/living/simple_animal/guardian/guardian.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/mob/living/simple_animal/guardian/guardian.dm - SPLURT Station 13
+
+
+
+
+code/modules/mob/living/simple_animal/guardian/guardian.dm
+
+
+
+
+ /obj /item /guardiancreator Creation
+
+
+
diff --git a/code/modules/mob/living/simple_animal/hostile/illusion.html b/code/modules/mob/living/simple_animal/hostile/illusion.html
new file mode 100644
index 0000000000000..89c818bdc87a0
--- /dev/null
+++ b/code/modules/mob/living/simple_animal/hostile/illusion.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/mob/living/simple_animal/hostile/illusion.dm - SPLURT Station 13
+
+
+
+
+code/modules/mob/living/simple_animal/hostile/illusion.dm
+
+
+
+
+
+
+
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.html b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.html
new file mode 100644
index 0000000000000..74dfb27f808a7
--- /dev/null
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm - SPLURT Station 13
+
+
+
+
+code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
+
+
+
+Define Details
+ACTIVATE_TOUCH
+
+
+
+ Anomolous Crystal
+
+
+
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/legion.html b/code/modules/mob/living/simple_animal/hostile/megafauna/legion.html
new file mode 100644
index 0000000000000..18914a682b4a9
--- /dev/null
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/legion.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+ code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm - SPLURT Station 13
+
+
+
+
+code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm
+
+
+
+
+ /obj/structure/legionturret A basic turret that shoots at nearby mobs. Intended to be used for the legion megafauna.
+ /obj /item /projectile /beam/legion Used for the legion turret.
+ /obj /effect/projectile/tracer/legion/tracer Used for the legion turret tracer.
+ /obj /effect/projectile/tracer/legion Used for the legion turret beam.
+
+
+
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.html b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.html
new file mode 100644
index 0000000000000..7074a07a63d9c
--- /dev/null
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm - SPLURT Station 13
+
+
+
+
+code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm
+
+
+
+
+ /mob/living/simple_animal/hostile/asteroid/elite/broodmother A stronger, faster variation of the goliath. Has the ability to spawn baby goliaths, which it can later detonate at will.
+When it's health is below half, tendrils will spawn randomly around it. When it is below a quarter of health, this effect is doubled.
+It's attacks are as follows:
+
+
+
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.html b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.html
new file mode 100644
index 0000000000000..a09a9d98c8e9a
--- /dev/null
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm - SPLURT Station 13
+
+
+
+
+code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm
+
+
+
+
+ /mob/living/simple_animal/hostile/asteroid/elite/herald A slow-moving projectile user with a few tricks up it's sleeve. Less unga-bunga than Colossus, with more cleverness in it's fighting style.
+As it's health gets lower, the amount of projectiles fired per-attack increases.
+It's attacks are as follows:
+
+
+
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.html b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.html
new file mode 100644
index 0000000000000..b365b9e73389f
--- /dev/null
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm - SPLURT Station 13
+
+
+
+
+code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm
+
+
+
+
+
+
+
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/pandora.html b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/pandora.html
new file mode 100644
index 0000000000000..ef331a1474406
--- /dev/null
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/pandora.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/pandora.dm - SPLURT Station 13
+
+
+
+
+code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/pandora.dm
+
+
+
+
+
+
+
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/lobsterosity.html b/code/modules/mob/living/simple_animal/hostile/mining_mobs/lobsterosity.html
new file mode 100644
index 0000000000000..a623ce12dcdc6
--- /dev/null
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/lobsterosity.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/mob/living/simple_animal/hostile/mining_mobs/lobsterosity.dm - SPLURT Station 13
+
+
+
+
+code/modules/mob/living/simple_animal/hostile/mining_mobs/lobsterosity.dm
+
+
+
+
+
+
+
diff --git a/code/modules/mob/living/simple_animal/hostile/plaguerat.html b/code/modules/mob/living/simple_animal/hostile/plaguerat.html
new file mode 100644
index 0000000000000..b20c7826c862a
--- /dev/null
+++ b/code/modules/mob/living/simple_animal/hostile/plaguerat.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/mob/living/simple_animal/hostile/plaguerat.dm - SPLURT Station 13
+
+
+
+
+code/modules/mob/living/simple_animal/hostile/plaguerat.dm
+
+
+
+
+ /datum /action /cooldown /scavenge Creates a chance to spawn more trash or gibs to repopulate. Otherwise, spawns a corpse or dirt.
+
+
+
diff --git a/code/modules/mob/living/simple_animal/hostile/regalrat.html b/code/modules/mob/living/simple_animal/hostile/regalrat.html
new file mode 100644
index 0000000000000..5dcb6597bce3d
--- /dev/null
+++ b/code/modules/mob/living/simple_animal/hostile/regalrat.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/mob/living/simple_animal/hostile/regalrat.dm - SPLURT Station 13
+
+
+
+
+code/modules/mob/living/simple_animal/hostile/regalrat.dm
+
+
+
+
+
+
+
diff --git a/code/modules/mob/living/simple_animal/hostile/space_dragon.html b/code/modules/mob/living/simple_animal/hostile/space_dragon.html
new file mode 100644
index 0000000000000..b33afc6bcd16f
--- /dev/null
+++ b/code/modules/mob/living/simple_animal/hostile/space_dragon.html
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+ code/modules/mob/living/simple_animal/hostile/space_dragon.dm - SPLURT Station 13
+
+
+
+
+code/modules/mob/living/simple_animal/hostile/space_dragon.dm
+
+
+
+Define Details
+CHARGE_COMPLETED
+
+
+
+ The carp rift is now fully charged.
CHARGE_FINALWARNING
+
+
+
+ The carp rift is currently charging and has output a final warning.
CHARGE_ONGOING
+
+
+
+ The carp rift is currently charging.
DARKNESS_THRESHOLD
+
+
+
+ The darkness threshold for space dragon when choosing a color
+
+
+
diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate.html b/code/modules/mob/living/simple_animal/hostile/syndicate.html
new file mode 100644
index 0000000000000..1a3394fa6ccdc
--- /dev/null
+++ b/code/modules/mob/living/simple_animal/hostile/syndicate.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+ code/modules/mob/living/simple_animal/hostile/syndicate.dm - SPLURT Station 13
+
+
+
+
+code/modules/mob/living/simple_animal/hostile/syndicate.dm
+
+
+
+
+
+
+
diff --git a/code/modules/mob/living/simple_animal/hostile/venus_human_trap.html b/code/modules/mob/living/simple_animal/hostile/venus_human_trap.html
new file mode 100644
index 0000000000000..2b0eeea2c9061
--- /dev/null
+++ b/code/modules/mob/living/simple_animal/hostile/venus_human_trap.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm - SPLURT Station 13
+
+
+
+
+code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm
+
+
+
+
+
+
+
diff --git a/code/modules/mob/mob_helpers.html b/code/modules/mob/mob_helpers.html
new file mode 100644
index 0000000000000..d7e727338a11c
--- /dev/null
+++ b/code/modules/mob/mob_helpers.html
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+ code/modules/mob/mob_helpers.dm - SPLURT Station 13
+
+
+
+
+code/modules/mob/mob_helpers.dm
+
+
+
+
+ /proc/stars
+ Convert random parts of a passed in message to stars
+ /proc/slur
+ Makes you speak like you're drunk
+ /proc/cultslur
+ Makes you talk like you got cult stunned, which is slurring but with some dark messages
+ /proc/stutter
+ Adds stuttering to the message passed in
+
+
+
diff --git a/code/modules/mob/say_vr.html b/code/modules/mob/say_vr.html
new file mode 100644
index 0000000000000..ae0996e5b6c89
--- /dev/null
+++ b/code/modules/mob/say_vr.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/modules/mob/say_vr.dm - SPLURT Station 13
+
+
+
+
+code/modules/mob/say_vr.dm
+
+
+
+
+ /datum /emote/living/subtle EMOTE CODE
+ /datum /emote/living/subtler SUBTLE 2: NO GHOST BOOGALOO
+ /datum /emote/living/subtler_table SUBTLE 3: DARE DICE
+
+
+
diff --git a/code/modules/mob/typing_indicator.html b/code/modules/mob/typing_indicator.html
new file mode 100644
index 0000000000000..5671eb8c75b7f
--- /dev/null
+++ b/code/modules/mob/typing_indicator.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/mob/typing_indicator.dm - SPLURT Station 13
+
+
+
+
+code/modules/mob/typing_indicator.dm
+
+
+
+
+ /obj /effect/overlay/typing_indicator Default typing indicator
+
+
+
diff --git a/code/modules/mod/mod_control.html b/code/modules/mod/mod_control.html
new file mode 100644
index 0000000000000..75f83846db45f
--- /dev/null
+++ b/code/modules/mod/mod_control.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/mod/mod_control.dm - SPLURT Station 13
+
+
+
+
+code/modules/mod/mod_control.dm
+
+
+
+
+ /obj /item /mod MODsuits, trade-off between armor and utility
+
+
+
diff --git a/code/modules/mod/mod_theme.html b/code/modules/mod/mod_theme.html
new file mode 100644
index 0000000000000..c03bcbe5b00fd
--- /dev/null
+++ b/code/modules/mod/mod_theme.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/modules/mod/mod_theme.dm - SPLURT Station 13
+
+
+
+
+code/modules/mod/mod_theme.dm
+
+
+
+
+ /proc/setup_mod_themes
+ Global proc that sets up all MOD themes as singletons in a list and returns it.
+ /datum/mod_theme MODsuit theme, instanced once and then used by MODsuits to grab various statistics.
+
+
+
diff --git a/code/modules/mod/modules/modules_engineering.html b/code/modules/mod/modules/modules_engineering.html
new file mode 100644
index 0000000000000..c4c30e5e20d9f
--- /dev/null
+++ b/code/modules/mod/modules/modules_engineering.html
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+ code/modules/mod/modules/modules_engineering.dm - SPLURT Station 13
+
+
+
+
+code/modules/mod/modules/modules_engineering.dm
+
+
+
+
+
+
+
diff --git a/code/modules/mod/modules/modules_general.html b/code/modules/mod/modules/modules_general.html
new file mode 100644
index 0000000000000..ee959c8deec6b
--- /dev/null
+++ b/code/modules/mod/modules/modules_general.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ code/modules/mod/modules/modules_general.dm - SPLURT Station 13
+
+
+
+
+code/modules/mod/modules/modules_general.dm
+
+
+
+
+
+
+
diff --git a/code/modules/mod/modules/modules_maint.html b/code/modules/mod/modules/modules_maint.html
new file mode 100644
index 0000000000000..c527a62151503
--- /dev/null
+++ b/code/modules/mod/modules/modules_maint.html
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+ code/modules/mod/modules/modules_maint.dm - SPLURT Station 13
+
+
+
+
+code/modules/mod/modules/modules_maint.dm
+
+
+
+
+
+
+
diff --git a/code/modules/mod/modules/modules_medical.html b/code/modules/mod/modules/modules_medical.html
new file mode 100644
index 0000000000000..e1cd469009fbe
--- /dev/null
+++ b/code/modules/mod/modules/modules_medical.html
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+ code/modules/mod/modules/modules_medical.dm - SPLURT Station 13
+
+
+
+
+code/modules/mod/modules/modules_medical.dm
+
+
+
+
+ HEALTH_SCAN Atrocinator - Perhaps another time
+ /obj/item/mod/module/health_analyzer Health Analyzer - Gives the user a ranged health analyzer and their health status in the panel.
+ /obj /item /mod/module /quick_carry Quick Carry - Lets the user carry bodies quicker.
+ /obj /item /mod/module /defibrillator Injector - No piercing syringes, replace another time
+Organ Thrower
+Patrient Transport
+Defibrillator - Gives the suit an extendable pair of shock paddles.
+ /obj /item /mod/module /surgical_processor Thread Ripper
+Surgical Processor - Lets you do advanced surgeries portably.
Define Details
+HEALTH_SCAN
+
+
+
+ Atrocinator - Perhaps another time
+
+
+
diff --git a/code/modules/mod/modules/modules_science.html b/code/modules/mod/modules/modules_science.html
new file mode 100644
index 0000000000000..e1fbb6e8705d6
--- /dev/null
+++ b/code/modules/mod/modules/modules_science.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/modules/mod/modules/modules_science.dm - SPLURT Station 13
+
+
+
+
+code/modules/mod/modules/modules_science.dm
+
+
+
+
+
+
+
diff --git a/code/modules/mod/modules/modules_security.html b/code/modules/mod/modules/modules_security.html
new file mode 100644
index 0000000000000..cf53e6a390526
--- /dev/null
+++ b/code/modules/mod/modules/modules_security.html
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+ code/modules/mod/modules/modules_security.dm - SPLURT Station 13
+
+
+
+
+code/modules/mod/modules/modules_security.dm
+
+
+
+
+
+
+
diff --git a/code/modules/mod/modules/modules_service.html b/code/modules/mod/modules/modules_service.html
new file mode 100644
index 0000000000000..8ef1b076e9e04
--- /dev/null
+++ b/code/modules/mod/modules/modules_service.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/modules/mod/modules/modules_service.dm - SPLURT Station 13
+
+
+
+
+code/modules/mod/modules/modules_service.dm
+
+
+
+
+ /obj /item /mod/module /bikehorn Criminal Capture
+Mirage grenade dispenser
+Projectile Dampener
+Active Sonar
+Bike Horn - Plays a bike horn sound.
+ /obj /item /mod/module /microwave_beam Microwave Beam - Microwaves items instantly.
+
+
+
diff --git a/code/modules/mod/modules/modules_supply.html b/code/modules/mod/modules/modules_supply.html
new file mode 100644
index 0000000000000..c2f5a8c74cbbd
--- /dev/null
+++ b/code/modules/mod/modules/modules_supply.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/modules/mod/modules/modules_supply.dm - SPLURT Station 13
+
+
+
+
+code/modules/mod/modules/modules_supply.dm
+
+
+
+
+
+
+
diff --git a/code/modules/mod/modules/modules_visor.html b/code/modules/mod/modules/modules_visor.html
new file mode 100644
index 0000000000000..ec3ecaac4bbcf
--- /dev/null
+++ b/code/modules/mod/modules/modules_visor.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/mod/modules/modules_visor.dm - SPLURT Station 13
+
+
+
+
+code/modules/mod/modules/modules_visor.dm
+
+
+
+
+
+
+
diff --git a/code/modules/modular_computers/computers/item/tablet.html b/code/modules/modular_computers/computers/item/tablet.html
new file mode 100644
index 0000000000000..a8d248467c181
--- /dev/null
+++ b/code/modules/modular_computers/computers/item/tablet.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/modular_computers/computers/item/tablet.dm - SPLURT Station 13
+
+
+
+
+code/modules/modular_computers/computers/item/tablet.dm
+
+
+
+
+
+
+
diff --git a/code/modules/modular_computers/documentation.html b/code/modules/modular_computers/documentation.html
new file mode 100644
index 0000000000000..5e93cfc6f2efe
--- /dev/null
+++ b/code/modules/modular_computers/documentation.html
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+ code/modules/modular_computers/documentation.md - SPLURT Station 13
+
+
+
+
+Modular computer programs code/modules/modular_computers/documentation.md
+
+
+
+
+ How module computer programs work
+Ok. so a quick rundown on how to make a program. This is kind of a shitty documentation, but oh well I was asked to.
+Base setup
+This is how the base program is setup. the rest is mostly tgui stuff. I'll use the ntnetmonitor as a base
+/datum/computer_file/program/ntnetmonitor
+ /// This is obviously the name of the file itself. not much to be said
+ filename = "ntmonitor"
+
+ /// This is sort of the official name. it's what shows up on the main menu
+ filedesc = "NTNet Diagnostics and Monitoring"
+
+ /// This is what the screen will look like when the program is active
+ program_icon_state = "comm_monitor"
+
+ /// This is a sort of a description, visible when looking on the ntnet
+ extended_desc = "This program is a dummy."
+
+ /// size of the program. Big programs need more hard drive space. Don't
+ /// make it too big though.
+ size = 12
+
+ /// If this is set, the program will not run without an ntnet connection,
+ /// and will close if the connection is lost. Mainly for primarily online
+ /// programs.
+ requires_ntnet = 1
+
+ /// This is access required to run the program itself. ONLY SET THIS FOR
+ /// SUPER SECURE SHIT. This also acts as transfer_access as well.
+ required_access = access_network
+
+ /// This is the access needed to download from ntnet or host on the ptp
+ /// program. This is what you want to use most of the time.
+ transfer_access = access_change_ids
+
+ /// If it's available to download on ntnet. pretty self explanatory.
+ available_on_ntnet = 1
+
+ /// ditto but on emagged syndie net. Use this for antag programs
+ available_on_syndinet = 0
+
+ /// Bitflags (PROGRAM_CONSOLE, PROGRAM_LAPTOP, PROGRAM_TABLET combination)
+ /// or PROGRAM_ALL. Use this to limit what kind of machines can run the
+ /// program. For example, comms program should be limited to consoles and laptops.
+ usage_flags = PROGRAM_ALL
+
+ /// This one is kinda cool. If you have the program minimized, this will
+ /// show up in the header of the computer screen. You can even have the
+ /// program change what the header is based on the situation! See `alarm.dm`
+ /// for an example.
+ var/ui_header = "downloader_finished.gif"
+
+Preinstalls
+Now. for pre-installing stuff.
+Primarily done for consoles, there's an install_programs() proc in the console presets file in the machines folder.
+for example, the command console one.
+/obj/machinery/modular_computer/console/preset/command/install_programs()
+ cpu.hard_drive.store_file(new/datum/computer_file/program/chatclient())
+ cpu.hard_drive.store_file(new/datum/computer_file/program/card_mod())
+
+Basically, you want to do cpu.hard_drive.store_file(new/program path here ()) and put it in the subtype's install_programs().
+Probably pretty self explanatory, but just in case.
+Will probably be expanded when new features come around or I get asked to mention something.
+
+
+
diff --git a/code/modules/modular_computers/file_system/programs/jobmanagement.html b/code/modules/modular_computers/file_system/programs/jobmanagement.html
new file mode 100644
index 0000000000000..0184b39fc4c17
--- /dev/null
+++ b/code/modules/modular_computers/file_system/programs/jobmanagement.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/modular_computers/file_system/programs/jobmanagement.dm - SPLURT Station 13
+
+
+
+
+code/modules/modular_computers/file_system/programs/jobmanagement.dm
+
+
+
+
+
+
+
diff --git a/code/modules/modular_computers/file_system/programs/ntdownloader.html b/code/modules/modular_computers/file_system/programs/ntdownloader.html
new file mode 100644
index 0000000000000..198e02a9fb459
--- /dev/null
+++ b/code/modules/modular_computers/file_system/programs/ntdownloader.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/modular_computers/file_system/programs/ntdownloader.dm - SPLURT Station 13
+
+
+
+
+code/modules/modular_computers/file_system/programs/ntdownloader.dm
+
+
+
+
+ /datum /computer_file/program /ntnetdownload/syndicate This app only lists programs normally found in the emagged section of the normal downloader app
+
+
+
diff --git a/code/modules/modular_computers/file_system/programs/portrait_printer.html b/code/modules/modular_computers/file_system/programs/portrait_printer.html
new file mode 100644
index 0000000000000..ba1d4365aae35
--- /dev/null
+++ b/code/modules/modular_computers/file_system/programs/portrait_printer.html
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+ code/modules/modular_computers/file_system/programs/portrait_printer.dm - SPLURT Station 13
+
+
+
+
+code/modules/modular_computers/file_system/programs/portrait_printer.dm
+
+
+
+Define Details
+CANVAS_PAPER_COST
+
+
+
+ how much paper it takes from the printer to create a canvas.
+
+
+
diff --git a/code/modules/modular_computers/file_system/programs/powermonitor.html b/code/modules/modular_computers/file_system/programs/powermonitor.html
new file mode 100644
index 0000000000000..826507dc0b2c0
--- /dev/null
+++ b/code/modules/modular_computers/file_system/programs/powermonitor.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/modular_computers/file_system/programs/powermonitor.dm - SPLURT Station 13
+
+
+
+
+code/modules/modular_computers/file_system/programs/powermonitor.dm
+
+
+
+
+ /datum /computer_file/program /power_monitor this is a copy of something that is already in the database- it should not be able to be saved.
+
+
+
diff --git a/code/modules/modular_computers/file_system/programs/radar.html b/code/modules/modular_computers/file_system/programs/radar.html
new file mode 100644
index 0000000000000..155d691de3dbe
--- /dev/null
+++ b/code/modules/modular_computers/file_system/programs/radar.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/modular_computers/file_system/programs/radar.dm - SPLURT Station 13
+
+
+
+
+code/modules/modular_computers/file_system/programs/radar.dm
+
+
+
+
+
+
+
diff --git a/code/modules/modular_computers/hardware/hard_drive.html b/code/modules/modular_computers/hardware/hard_drive.html
new file mode 100644
index 0000000000000..8ba185404dc9e
--- /dev/null
+++ b/code/modules/modular_computers/hardware/hard_drive.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/modular_computers/hardware/hard_drive.dm - SPLURT Station 13
+
+
+
+
+code/modules/modular_computers/hardware/hard_drive.dm
+
+
+
+
+
+
+
diff --git a/code/modules/modular_computers/hardware/recharger.html b/code/modules/modular_computers/hardware/recharger.html
new file mode 100644
index 0000000000000..e8b75cf0d1ab3
--- /dev/null
+++ b/code/modules/modular_computers/hardware/recharger.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/modular_computers/hardware/recharger.dm - SPLURT Station 13
+
+
+
+
+code/modules/modular_computers/hardware/recharger.dm
+
+
+
+
+ /obj /item /computer_hardware /recharger/cyborg This recharger exists only in borg built-in tablets. I would have tied it to the borg's cell but
+the program that displays laws should always be usable, and the exceptions were starting to pile.
+
+
+
diff --git a/code/modules/movespeed/_movespeed_modifier.html b/code/modules/movespeed/_movespeed_modifier.html
new file mode 100644
index 0000000000000..8a698dc19d24a
--- /dev/null
+++ b/code/modules/movespeed/_movespeed_modifier.html
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+ code/modules/movespeed/_movespeed_modifier.dm - SPLURT Station 13
+
+
+
+
+code/modules/movespeed/_movespeed_modifier.dm
+
+
+
+
+ Movespeed modification datums.
+How move speed for mobs works
+
+Move speed is now calculated by using modifier datums which are added to mobs. Some of them (nonvariable ones) are globally cached, the variable ones are instanced and changed based on need.
+This gives us the ability to have multiple sources of movespeed, reliabily keep them applied and remove them when they should be
+THey can have unique sources and a bunch of extra fancy flags that control behaviour
+Previously trying to update move speed was a shot in the dark that usually meant mobs got stuck going faster or slower
+Movespeed modification list is a simple key = datum system. Key will be the datum's ID if it is overridden to not be null, or type if it is not.
+DO NOT override datum IDs unless you are going to have multiple types that must overwrite each other. It's more efficient to use types, ID functionality is only kept for cases where dynamic creation of modifiers need to be done.
+When update movespeed is called, the list of items is iterated, according to flags priority and a bunch of conditions
+this spits out a final calculated value which is used as a modifer to last_move + modifier for calculating when a mob
+can next move
+Key procs
+
+ /proc/get_cached_movespeed_modifier
+ Grabs a STATIC MODIFIER datum from cache. YOU MUST NEVER EDIT THESE DATUMS, OR IT WILL AFFECT ANYTHING ELSE USING IT TOO!
+ Used for variable slowdowns like hunger/health loss/etc, works somewhat like the old list-based modification adds. Returns the modifier datum if successful
+How this SHOULD work is:
+1. Ensures type_id_datum one way or another refers to a /variable datum. This makes sure it can't be cached. This includes if it's already in the modification list.
+2. Instantiate a new datum if type_id_datum isn't already instantiated + in the list, using the type. Obviously, wouldn't work for ID only.
+3. Add the datum if necessary using the regular add proc
+4. If any of the rest of the args are not null (see: multiplicative slowdown), modify the datum
+5. Update if necessary
+
+ /proc/movespeed_data_null_check
+ Checks if a move speed modifier is valid and not missing any data
+
+
+
diff --git a/code/modules/newscaster/news_network.html b/code/modules/newscaster/news_network.html
new file mode 100644
index 0000000000000..55e052e1f2ee8
--- /dev/null
+++ b/code/modules/newscaster/news_network.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/newscaster/news_network.dm - SPLURT Station 13
+
+
+
+
+code/modules/newscaster/news_network.dm
+
+
+
+
+ /datum /news_network Contains all the news datum of a newscaster system.
+
+
+
diff --git a/code/modules/ninja/energy_katana.html b/code/modules/ninja/energy_katana.html
new file mode 100644
index 0000000000000..800b1b7c767c2
--- /dev/null
+++ b/code/modules/ninja/energy_katana.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/ninja/energy_katana.dm - SPLURT Station 13
+
+
+
+
+code/modules/ninja/energy_katana.dm
+
+
+
+
+
+
+
diff --git a/code/modules/ninja/ninja_explosive.html b/code/modules/ninja/ninja_explosive.html
new file mode 100644
index 0000000000000..9af0ed80c8808
--- /dev/null
+++ b/code/modules/ninja/ninja_explosive.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/modules/ninja/ninja_explosive.dm - SPLURT Station 13
+
+
+
+
+code/modules/ninja/ninja_explosive.dm
+
+
+
+
+ /obj /item /grenade /plastic/c4/ninja A unique version of c4 possessed only by the space ninja. Has a stronger blast radius.
+Can only be detonated by space ninjas with the bombing objective. Can only be set up where the objective says it can.
+When it primes, the space ninja responsible will have their objective set to complete.
+
+
+
diff --git a/code/modules/ninja/suit/gloves.html b/code/modules/ninja/suit/gloves.html
new file mode 100644
index 0000000000000..3a4f373caeba7
--- /dev/null
+++ b/code/modules/ninja/suit/gloves.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/ninja/suit/gloves.dm - SPLURT Station 13
+
+
+
+
+code/modules/ninja/suit/gloves.dm
+
+
+
+
+
+
+
diff --git a/code/modules/ninja/suit/head.html b/code/modules/ninja/suit/head.html
new file mode 100644
index 0000000000000..0a50337eb5c1d
--- /dev/null
+++ b/code/modules/ninja/suit/head.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/ninja/suit/head.dm - SPLURT Station 13
+
+
+
+
+code/modules/ninja/suit/head.dm
+
+
+
+
+
+
+
diff --git a/code/modules/ninja/suit/mask.html b/code/modules/ninja/suit/mask.html
new file mode 100644
index 0000000000000..36cc0d9e3014d
--- /dev/null
+++ b/code/modules/ninja/suit/mask.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/ninja/suit/mask.dm - SPLURT Station 13
+
+
+
+
+code/modules/ninja/suit/mask.dm
+
+
+
+
+
+
+
diff --git a/code/modules/ninja/suit/ninja_equipment_actions/energy_net_nets.html b/code/modules/ninja/suit/ninja_equipment_actions/energy_net_nets.html
new file mode 100644
index 0000000000000..05a0e3ce1bc88
--- /dev/null
+++ b/code/modules/ninja/suit/ninja_equipment_actions/energy_net_nets.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/ninja/suit/ninja_equipment_actions/energy_net_nets.dm - SPLURT Station 13
+
+
+
+
+code/modules/ninja/suit/ninja_equipment_actions/energy_net_nets.dm
+
+
+
+
+
+
+
diff --git a/code/modules/ninja/suit/ninja_equipment_actions/ninja_stars.html b/code/modules/ninja/suit/ninja_equipment_actions/ninja_stars.html
new file mode 100644
index 0000000000000..64b6615f06bed
--- /dev/null
+++ b/code/modules/ninja/suit/ninja_equipment_actions/ninja_stars.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/ninja/suit/ninja_equipment_actions/ninja_stars.dm - SPLURT Station 13
+
+
+
+
+code/modules/ninja/suit/ninja_equipment_actions/ninja_stars.dm
+
+
+
+
+
+
+
diff --git a/code/modules/ninja/suit/shoes.html b/code/modules/ninja/suit/shoes.html
new file mode 100644
index 0000000000000..d27bf207aeeb5
--- /dev/null
+++ b/code/modules/ninja/suit/shoes.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/ninja/suit/shoes.dm - SPLURT Station 13
+
+
+
+
+code/modules/ninja/suit/shoes.dm
+
+
+
+
+
+
+
diff --git a/code/modules/ninja/suit/suit.html b/code/modules/ninja/suit/suit.html
new file mode 100644
index 0000000000000..dd1b9047bb6ef
--- /dev/null
+++ b/code/modules/ninja/suit/suit.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/ninja/suit/suit.dm - SPLURT Station 13
+
+
+
+
+code/modules/ninja/suit/suit.dm
+
+
+
+
+
+
+
diff --git a/code/modules/paperwork/clipboard.html b/code/modules/paperwork/clipboard.html
new file mode 100644
index 0000000000000..4e52b3fcf610e
--- /dev/null
+++ b/code/modules/paperwork/clipboard.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/paperwork/clipboard.dm - SPLURT Station 13
+
+
+
+
+code/modules/paperwork/clipboard.dm
+
+
+
+
+
+
+
diff --git a/code/modules/paperwork/paper.html b/code/modules/paperwork/paper.html
new file mode 100644
index 0000000000000..c52e8f44c369f
--- /dev/null
+++ b/code/modules/paperwork/paper.html
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+ code/modules/paperwork/paper.dm - SPLURT Station 13
+
+
+
+
+code/modules/paperwork/paper.dm
+
+
+
+
+ MAX_PAPER_LENGTH Paper
+also scraps of paper
+ /obj/item/paper Paper is now using markdown (like in github pull notes) for ALL rendering
+so we do loose a bit of functionality but we gain in easy of use of
+paper and getting rid of that crashing bug
+ /obj /item /paper /construction Construction paper
Define Details
+MAX_PAPER_LENGTH
+
+
+
+ Paper
+also scraps of paper
+lipstick wiping is in code/game/objects/items/weapons/cosmetics.dm!
+
+
+
diff --git a/code/modules/paperwork/paper_premade.html b/code/modules/paperwork/paper_premade.html
new file mode 100644
index 0000000000000..3197362cdea8c
--- /dev/null
+++ b/code/modules/paperwork/paper_premade.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+ code/modules/paperwork/paper_premade.dm - SPLURT Station 13
+
+
+
+
+code/modules/paperwork/paper_premade.dm
+
+
+
+
+
+
+
diff --git a/code/modules/paperwork/photocopier.html b/code/modules/paperwork/photocopier.html
new file mode 100644
index 0000000000000..605d946d07d97
--- /dev/null
+++ b/code/modules/paperwork/photocopier.html
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+ code/modules/paperwork/photocopier.dm - SPLURT Station 13
+
+
+
+
+code/modules/paperwork/photocopier.dm
+
+
+
+
+ PHOTO_GREYSCALE For use with the color_mode
var. Photos will be printed in greyscale while the var has this value.
+ PHOTO_COLOR For use with the color_mode
var. Photos will be printed in full color while the var has this value.
+ PAPER_TONER_USE How much toner is used for making a copy of a paper.
+ PHOTO_TONER_USE How much toner is used for making a copy of a photo.
+ DOCUMENT_TONER_USE How much toner is used for making a copy of a document.
+ ASS_TONER_USE How much toner is used for making a copy of an ass.
+ MAX_COPIES_AT_ONCE The maximum amount of copies you can make with one press of the copy button.
Define Details
+ASS_TONER_USE
+
+
+
+ How much toner is used for making a copy of an ass.
DOCUMENT_TONER_USE
+
+
+
+ How much toner is used for making a copy of a document.
MAX_COPIES_AT_ONCE
+
+
+
+ The maximum amount of copies you can make with one press of the copy button.
PAPER_TONER_USE
+
+
+
+ How much toner is used for making a copy of a paper.
PHOTO_COLOR
+
+
+
+ For use with the color_mode
var. Photos will be printed in full color while the var has this value.
PHOTO_GREYSCALE
+
+
+
+ For use with the color_mode
var. Photos will be printed in greyscale while the var has this value.
PHOTO_TONER_USE
+
+
+
+ How much toner is used for making a copy of a photo.
+
+
+
diff --git a/code/modules/plumbing/ducts.html b/code/modules/plumbing/ducts.html
new file mode 100644
index 0000000000000..70ff1d5c58bdb
--- /dev/null
+++ b/code/modules/plumbing/ducts.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/plumbing/ducts.dm - SPLURT Station 13
+
+
+
+
+code/modules/plumbing/ducts.dm
+
+
+
+
+
+
+
diff --git a/code/modules/plumbing/plumbers/_plumb_machinery.html b/code/modules/plumbing/plumbers/_plumb_machinery.html
new file mode 100644
index 0000000000000..7d00b7b0a2910
--- /dev/null
+++ b/code/modules/plumbing/plumbers/_plumb_machinery.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/modules/plumbing/plumbers/_plumb_machinery.dm - SPLURT Station 13
+
+
+
+
+code/modules/plumbing/plumbers/_plumb_machinery.dm
+
+
+
+
+ /obj/machinery/plumbing Basic plumbing object.
+It doesn't really hold anything special, YET.
+Objects that are plumbing but not a subtype are as of writing liquid pumps and the reagent_dispenser tank
+Also please note that the plumbing component is toggled on and off by the component using a signal from default_unfasten_wrench, so dont worry about it
+ /obj /machinery /plumbing /input We can empty beakers in here and everything
+ /obj /machinery /plumbing /output We can fill beakers in here and everything. we dont inheret from input because it has nothing that we need
+
+
+
diff --git a/code/modules/plumbing/plumbers/acclimator.html b/code/modules/plumbing/plumbers/acclimator.html
new file mode 100644
index 0000000000000..bfc61f2f990a5
--- /dev/null
+++ b/code/modules/plumbing/plumbers/acclimator.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/plumbing/plumbers/acclimator.dm - SPLURT Station 13
+
+
+
+
+code/modules/plumbing/plumbers/acclimator.dm
+
+
+
+
+
+
+
diff --git a/code/modules/plumbing/plumbers/destroyer.html b/code/modules/plumbing/plumbers/destroyer.html
new file mode 100644
index 0000000000000..27e0c13e42316
--- /dev/null
+++ b/code/modules/plumbing/plumbers/destroyer.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/modules/plumbing/plumbers/destroyer.dm - SPLURT Station 13
+
+
+
+
+code/modules/plumbing/plumbers/destroyer.dm
+
+
+
+
+ /obj/machinery/plumbing/disposer see if machine has enough to fill
+pick a reagent_container that could be used
+see if it would overflow else inject
+glass was full so we move it away
+slime extracts need inject
+no need to move slimecross industrial things
+
+
+
diff --git a/code/modules/plumbing/plumbers/filter.html b/code/modules/plumbing/plumbers/filter.html
new file mode 100644
index 0000000000000..fbea946e06d00
--- /dev/null
+++ b/code/modules/plumbing/plumbers/filter.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/plumbing/plumbers/filter.dm - SPLURT Station 13
+
+
+
+
+code/modules/plumbing/plumbers/filter.dm
+
+
+
+
+
+
+
diff --git a/code/modules/plumbing/plumbers/pill_press.html b/code/modules/plumbing/plumbers/pill_press.html
new file mode 100644
index 0000000000000..4bb2b9bcbe5ff
--- /dev/null
+++ b/code/modules/plumbing/plumbers/pill_press.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/plumbing/plumbers/pill_press.dm - SPLURT Station 13
+
+
+
+
+code/modules/plumbing/plumbers/pill_press.dm
+
+
+
+
+
+
+
diff --git a/code/modules/plumbing/plumbers/pumps.html b/code/modules/plumbing/plumbers/pumps.html
new file mode 100644
index 0000000000000..9decfc7eeaf98
--- /dev/null
+++ b/code/modules/plumbing/plumbers/pumps.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/plumbing/plumbers/pumps.dm - SPLURT Station 13
+
+
+
+
+code/modules/plumbing/plumbers/pumps.dm
+
+
+
+
+
+
+
diff --git a/code/modules/plumbing/plumbers/reaction_chamber.html b/code/modules/plumbing/plumbers/reaction_chamber.html
new file mode 100644
index 0000000000000..f7887ee098291
--- /dev/null
+++ b/code/modules/plumbing/plumbers/reaction_chamber.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/plumbing/plumbers/reaction_chamber.dm - SPLURT Station 13
+
+
+
+
+code/modules/plumbing/plumbers/reaction_chamber.dm
+
+
+
+
+
+
+
diff --git a/code/modules/plumbing/plumbers/splitters.html b/code/modules/plumbing/plumbers/splitters.html
new file mode 100644
index 0000000000000..c87605f13b5c7
--- /dev/null
+++ b/code/modules/plumbing/plumbers/splitters.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/plumbing/plumbers/splitters.dm - SPLURT Station 13
+
+
+
+
+code/modules/plumbing/plumbers/splitters.dm
+
+
+
+
+ /obj/machinery/plumbing/splitter it splits the reagents however you want. So you can "every 60 units, 45 goes left and 15 goes straight". The side direction is EAST, you can change this in the component
+
+
+
diff --git a/code/modules/plumbing/plumbers/synthesizer.html b/code/modules/plumbing/plumbers/synthesizer.html
new file mode 100644
index 0000000000000..8642ea81f9b07
--- /dev/null
+++ b/code/modules/plumbing/plumbers/synthesizer.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/plumbing/plumbers/synthesizer.dm - SPLURT Station 13
+
+
+
+
+code/modules/plumbing/plumbers/synthesizer.dm
+
+
+
+
+
+
+
diff --git a/code/modules/power/apc.html b/code/modules/power/apc.html
new file mode 100644
index 0000000000000..3198688525d63
--- /dev/null
+++ b/code/modules/power/apc.html
@@ -0,0 +1,212 @@
+
+
+
+
+
+
+ code/modules/power/apc.dm - SPLURT Station 13
+
+
+
+
+code/modules/power/apc.dm
+
+
+
+Define Details
+APC_CHANNEL_AUTO_OFF
+
+
+
+ The APCs power channel is automatically off.
APC_CHANNEL_AUTO_ON
+
+
+
+ The APCs power channel is automatically on.
APC_CHANNEL_OFF
+
+
+
+ The APCs power channel is manually set off.
APC_CHANNEL_ON
+
+
+
+ The APCs power channel is manually set on.
APC_CHARGING
+
+
+
+ The APC is charging.
APC_COVER_CLOSED
+
+
+
+ The APCs cover is closed.
APC_COVER_OPENED
+
+
+
+ The APCs cover is open.
APC_COVER_REMOVED
+
+
+
+ The APCs cover is missing.
APC_DRAIN_TIME
+
+
+
+ How long it takes an ethereal to drain or charge APCs. Also used as a spam limiter.
APC_ELECTRONICS_INSTALLED
+
+
+
+ The electronics are installed but not secured.
APC_ELECTRONICS_MISSING
+
+
+
+ There are no electronics in the APC.
APC_ELECTRONICS_SECURED
+
+
+
+ The electronics are installed and secured.
APC_FULLY_CHARGED
+
+
+
+ The APC is fully charged.
APC_HAS_POWER
+
+
+
+ The APCs external powernet has enough power to charge the APC.
APC_LOW_POWER
+
+
+
+ The APCs external powernet does not have enough power to charge the APC.
APC_NOT_CHARGING
+
+
+
+ The APC is not charging.
APC_NO_POWER
+
+
+
+ The APC either isn't attached to a powernet or there is no power on the external powernet.
APC_POWER_GAIN
+
+
+
+ How much power ethereals gain/drain from APCs.
APC_RESET_EMP
+
+
+
+ The wire value used to reset the APCs wires after one's EMPed.
AUTOSET_FORCE_OFF
+
+
+
+ The APC turns automated and manual power channels off.
AUTOSET_OFF
+
+
+
+ The APC turns automated power channels off.
AUTOSET_ON
+
+
+
+ The APC turns automated power channels on.
UPOVERLAY_CHARGING_SHIFT
+
+
+
+ Bit shift for the charging status of the APC.
UPOVERLAY_ENVIRON_SHIFT
+
+
+
+ Bit shift for the environment channel status of the APC.
UPOVERLAY_EQUIPMENT_SHIFT
+
+
+
+ Bit shift for the equipment status of the APC.
UPOVERLAY_HIJACKED
+
+
+
+ Update for hijack overlays
UPOVERLAY_LIGHTING_SHIFT
+
+
+
+ Bit shift for the lighting channel status of the APC.
UPOVERLAY_LOCKED
+
+
+
+ Bitflag indicating that the APCs locked status overlay should be shown.
UPOVERLAY_OPERATING
+
+
+
+ Bitflag indicating that the APCs operating status overlay should be shown.
UPSTATE_BLUESCREEN
+
+
+
+ The APC is emagged or malfed.
UPSTATE_BROKE
+
+
+
+ The APC is broken or damaged.
UPSTATE_CELL_IN
+
+
+
+ The APC has a power cell.
UPSTATE_COVER_SHIFT
+
+
+
+ The bit shift for the APCs cover status.
UPSTATE_MAINT
+
+
+
+ The APC is undergoing maintenance.
UPSTATE_OPENED1
+
+
+
+ The bitflag representing the APCs cover being open for icon purposes.
UPSTATE_OPENED2
+
+
+
+ The bitflag representing the APCs cover being missing for icon purposes.
UPSTATE_WIREEXP
+
+
+
+ The APCs wires are exposed.
+
+
+
diff --git a/code/modules/power/reactor/rbmk.html b/code/modules/power/reactor/rbmk.html
new file mode 100644
index 0000000000000..09c52487da8d3
--- /dev/null
+++ b/code/modules/power/reactor/rbmk.html
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+ code/modules/power/reactor/rbmk.dm - SPLURT Station 13
+
+
+
+
+code/modules/power/reactor/rbmk.dm
+
+
+
+
+ /obj /machinery /atmospherics /components/trinary/nuclear_reactor What is this?
+Moderators list (Not gonna keep this accurate forever):
+Fuel Type:
+Oxygen: Power production multiplier. Allows you to run a low plasma, high oxy mix, and still get a lot of power.
+Plasma: Power production gas. More plasma -> more power, but it enriches your fuel and makes the reactor much, much harder to control.
+Tritium: Extremely efficient power production gas. Will cause chernobyl if used improperly.
+Moderation Type:
+N2: Helps you regain control of the reaction by increasing control rod effectiveness, will massively boost the rad production of the reactor.
+CO2: Super effective shutdown gas for runaway reactions. MASSIVE RADIATION PENALTY!
+Pluoxium: Same as N2, but no cancer-rads!
+Permeability Type:
+BZ: Increases your reactor's ability to transfer its heat to the coolant, thus letting you cool it down faster (but your output will get hotter)
+Water Vapour: More efficient permeability modifier
+Hyper Noblium: Extremely efficient permeability increase. (10x as efficient as bz)
+Depletion type:
+Nitryl: When you need weapons grade plutonium yesterday. Causes your fuel to deplete much, much faster. Not a huge amount of use outside of sabotage.
+Sabotage:
+Meltdown:
+Flood reactor moderator with plasma, they won't be able to mitigate the reaction with control rods.
+Shut off coolant entirely. Raise control rods.
+Swap all fuel out with spent fuel, as it's way stronger.
+Blowout:
+Shut off exit valve for quick overpressure.
+Cause a pipefire in the coolant line (LETHAL).
+Tack heater onto coolant line (can also cause straight meltdown)
+Tips:
+Be careful to not exhaust your plasma supply. I recommend you DON'T max out the moderator input when youre running plasma + o2, or you're at a tangible risk of running out of those gasses from atmos.
+The reactor CHEWS through moderator. It does not do this slowly. Be very careful with that!
+
+
+
diff --git a/code/modules/power/singularity/generator.html b/code/modules/power/singularity/generator.html
new file mode 100644
index 0000000000000..3a683a5b692c9
--- /dev/null
+++ b/code/modules/power/singularity/generator.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/power/singularity/generator.dm - SPLURT Station 13
+
+
+
+
+code/modules/power/singularity/generator.dm
+
+
+
+
+
+
+
diff --git a/code/modules/power/supermatter/supermatter.html b/code/modules/power/supermatter/supermatter.html
new file mode 100644
index 0000000000000..348a7d7fcdeb1
--- /dev/null
+++ b/code/modules/power/supermatter/supermatter.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/modules/power/supermatter/supermatter.dm - SPLURT Station 13
+
+
+
+
+code/modules/power/supermatter/supermatter.dm
+
+
+
+Define Details
+SUPERMATTER_ACCENT_SOUND_MIN_COOLDOWN
+
+
+
+ to prevent accent sounds from layering
+
+
+
diff --git a/code/modules/projectiles/guns/ballistic/magweapon.html b/code/modules/projectiles/guns/ballistic/magweapon.html
new file mode 100644
index 0000000000000..86796c110aee5
--- /dev/null
+++ b/code/modules/projectiles/guns/ballistic/magweapon.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/projectiles/guns/ballistic/magweapon.dm - SPLURT Station 13
+
+
+
+
+code/modules/projectiles/guns/ballistic/magweapon.dm
+
+
+
+
+
+
+
diff --git a/code/modules/projectiles/guns/ballistic/pistol.html b/code/modules/projectiles/guns/ballistic/pistol.html
new file mode 100644
index 0000000000000..39c2781421066
--- /dev/null
+++ b/code/modules/projectiles/guns/ballistic/pistol.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/projectiles/guns/ballistic/pistol.dm - SPLURT Station 13
+
+
+
+
+code/modules/projectiles/guns/ballistic/pistol.dm
+
+
+
+
+
+
+
diff --git a/code/modules/projectiles/guns/energy/laser.html b/code/modules/projectiles/guns/energy/laser.html
new file mode 100644
index 0000000000000..e49de3084a769
--- /dev/null
+++ b/code/modules/projectiles/guns/energy/laser.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/projectiles/guns/energy/laser.dm - SPLURT Station 13
+
+
+
+
+code/modules/projectiles/guns/energy/laser.dm
+
+
+
+
+
+
+
diff --git a/code/modules/projectiles/guns/misc/medbeam.html b/code/modules/projectiles/guns/misc/medbeam.html
new file mode 100644
index 0000000000000..147c021b469f0
--- /dev/null
+++ b/code/modules/projectiles/guns/misc/medbeam.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/projectiles/guns/misc/medbeam.dm - SPLURT Station 13
+
+
+
+
+code/modules/projectiles/guns/misc/medbeam.dm
+
+
+
+
+
+
+
diff --git a/code/modules/projectiles/projectile.html b/code/modules/projectiles/projectile.html
new file mode 100644
index 0000000000000..67b244be38596
--- /dev/null
+++ b/code/modules/projectiles/projectile.html
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+ code/modules/projectiles/projectile.dm - SPLURT Station 13
+
+
+
+
+code/modules/projectiles/projectile.dm
+
+
+
+Define Details
+MINIMUM_PIXELS_TO_ANIMATE
+
+
+
+ Minimum projectile pixels to move before it animate()S, below this it's a direct set.
PROJECTILE_FIRING_INSTANT_TRAVEL_AMOUNT
+
+
+
+ Pixels to instantly travel on firing.
+
+
+
diff --git a/code/modules/projectiles/projectile/magic.html b/code/modules/projectiles/projectile/magic.html
new file mode 100644
index 0000000000000..d8c54f0395437
--- /dev/null
+++ b/code/modules/projectiles/projectile/magic.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/projectiles/projectile/magic.dm - SPLURT Station 13
+
+
+
+
+code/modules/projectiles/projectile/magic.dm
+
+
+
+
+
+
+
diff --git a/code/modules/reagents/chem_wiki_render.html b/code/modules/reagents/chem_wiki_render.html
new file mode 100644
index 0000000000000..7abaa29ba918c
--- /dev/null
+++ b/code/modules/reagents/chem_wiki_render.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/modules/reagents/chem_wiki_render.dm - SPLURT Station 13
+
+
+
+
+code/modules/reagents/chem_wiki_render.dm
+
+
+
+
+ /proc/generate_chemwiki_line
+ datum/reagent/medicine, /datum/reagent/toxin, /datum/reagent/consumable, /datum/reagent/plantnutriment, /datum/reagent/uranium,
+datum/reagent/colorful_reagent, /datum/reagent/mutationtoxin, /datum/reagent/fermi, /datum/reagent/drug, /datum/reagent/impure
+
+
+
diff --git a/code/modules/reagents/chemistry.html b/code/modules/reagents/chemistry.html
new file mode 100644
index 0000000000000..5864675ef356d
--- /dev/null
+++ b/code/modules/reagents/chemistry.html
@@ -0,0 +1,269 @@
+
+
+
+
+
+
+ code/modules/reagents/chemistry/readme.md - SPLURT Station 13
+
+
+
+
+code/modules/reagents/chemistry/readme.md
+
+
+
+
+ NOTE: IF YOU UPDATE THE REAGENT-SYSTEM, ALSO UPDATE THIS README.
+Structure: /////////////////// //////////////////////////
+ // Mob or object // -------> // Reagents var (datum) // Is a reference to the datum that holds the reagents.
+ /////////////////// //////////////////////////
+ | |
+ The object that holds everything. V
+ reagent_list var (list) A List of datums, each datum is a reagent.
+
+ | | |
+ V V V
+
+ reagents (datums) Reagents. I.e. Water , cryoxadone or mercury.
+
+Random important notes:
+An objects on_reagent_change will be called every time the objects reagents change. Useful if you want to update the objects icon etc.
+About the Holder:
+The holder (reagents datum) is the datum that holds a list of all reagents currently in the object.It also has all the procs needed to manipulate reagents
+ remove_any(var/amount)
+ This proc removes reagents from the holder until the passed amount
+ is matched. It'll try to remove some of ALL reagents contained.
+
+ remove_all(var/amount)
+ This proc removes reagents from the holder equally.
+
+ trans_to(var/obj/target, var/amount)
+ This proc equally transfers the contents of the holder to another
+ objects holder. You need to pass it the object (not the holder) you want
+ to transfer to and the amount you want to transfer. Its return value is the
+ actual amount transfered (if one of the objects is full/empty)
+
+ trans_id_to(var/obj/target, var/reagent, var/amount)
+ Same as above but only for a specific reagent in the reagent list.
+ If the specified amount is greater than what is available, it will use
+ the amount of the reagent that is available. If no reagent exists, returns null.
+
+ metabolize(var/mob/living/carbon/C)
+ This proc is called by the mobs life proc. It simply calls on_mob_life for
+ all contained reagents. You shouldnt have to use this one directly.
+
+ handle_reactions()
+ This proc check all recipes and, on a match, uses them.
+ It will also call the recipe's on_reaction proc (for explosions or w/e).
+ Currently, this proc is automatically called by trans_to.
+
+ isolate_reagent(var/reagent)
+ Pass it a reagent id and it will remove all reagents but that one.
+ It's that simple.
+
+ del_reagent(var/reagent)
+ Completely remove the reagent with the matching id.
+
+ reaction_fire(exposed_temp)
+ Simply calls the reaction_fire procs of all contained reagents.
+
+ update_total()
+ This one simply updates the total volume of the holder.
+ (the volume of all reagents added together)
+
+ clear_reagents()
+ This proc removes ALL reagents from the holder.
+
+ reaction(var/atom/A, var/method=TOUCH, var/volume_modifier=0)
+ This proc calls the appropriate reaction procs of the reagents.
+ I.e. if A is an object, it will call the reagents reaction_obj
+ proc. The method var is used for reaction on mobs. It simply tells
+ us if the mob TOUCHed the reagent, if it INGESTed the reagent, if the reagent
+ was VAPORIZEd on them, if the reagent was INJECTed, or transfered via a PATCH to them.
+ Since the volume can be checked in a reagents proc, you might want to
+ use the volume_modifier var to modifiy the passed value without actually
+ changing the volume of the reagents.
+ If you're not sure if you need to use this the answer is very most likely 'No'.
+ You'll want to use this proc whenever an atom first comes in
+ contact with the reagents of a holder. (in the 'splash' part of a beaker i.e.)
+ More on the reaction in the reagent part of this readme.
+
+ add_reagent(var/reagent, var/amount, var/data)
+ Attempts to add X of the matching reagent to the holder.
+ You wont use this much. Mostly in new procs for pre-filled
+ objects.
+
+ remove_reagent(var/reagent, var/amount)
+ The exact opposite of the add_reagent proc.
+
+ has_reagent(var/reagent, var/amount)
+ Returns 1 if the holder contains this reagent.
+ Or 0 if not.
+ If you pass it an amount it will additionally check
+ if the amount is matched. This is optional.
+
+ get_reagent_amount(var/reagent)
+ Returns the amount of the matching reagent inside the
+ holder. Returns 0 if the reagent is missing.
+
+ Important variables:
+
+ total_volume
+ This variable contains the total volume of all reagents in this holder.
+
+ reagent_list
+ This is a list of all contained reagents. More specifically, references
+ to the reagent datums.
+
+ maximum_volume
+ This is the maximum volume of the holder.
+
+ my_atom
+ This is the atom the holder is 'in'. Useful if you need to find the location.
+ (i.e. for explosions)
+
+About Reagents:
+Reagents are all the things you can mix and fille in bottles etc. This can be anything from rejuvs over water to ... iron. Each reagent also has a few procs - i'll explain those below.
+ reaction_mob(var/mob/living/L, var/method=TOUCH)
+ This is called by the holder's reation proc.
+ This version is only called when the reagent
+ reacts with a mob. The method var can be either
+ TOUCH or INGEST. You'll want to put stuff like
+ acid-facemelting in here.
+
+ reaction_obj(var/obj/O)
+ This is called by the holder's reation proc.
+ This version is called when the reagents reacts
+ with an object. You'll want to put stuff like
+ object melting in here ... or something. i dunno.
+
+ reaction_turf(var/turf/T)
+ This is called by the holder's reation proc.
+ This version is called when the reagents reacts
+ with a turf. You'll want to put stuff like extra
+ slippery floors for lube or something in here.
+
+ on_mob_life(var/mob/living/L)
+ This proc is called everytime the mobs life proc executes.
+ This is the place where you put damage for toxins ,
+ drowsyness for sleep toxins etc etc.
+ You'll want to call the parents proc by using ..() .
+ If you dont, the chemical will stay in the mob forever -
+ unless you write your own piece of code to slowly remove it.
+ (Should be pretty easy, 1 line of code)
+
+Important variables:
+ holder
+ This variable contains a reference to the holder the chemical is 'in'
+
+ volume
+ This is the volume of the reagent.
+
+ id
+ The id of the reagent
+
+ name
+ The name of the reagent.
+
+ data
+ This var can be used for whatever the fuck you want. I used it for the sleep
+ toxins to make them work slowly instead of instantly. You could also use this
+ for DNA in a blood reagent or ... well whatever you want.
+
+ color
+ This is a hexadecimal color that represents the reagent outside of containers,
+ you define it as "#RRGGBB", or, red green blue. You can also define it using the
+ rgb() proc, which returns a hexadecimal value too. The color is black by default.
+
+A good website for color calculations: http://www.psyclops.com/tools/rgb/
+About Recipes:
+Recipes are simple datums that contain a list of required reagents and a result. They also have a proc that is called when the recipe is matched.
+ on_reaction(var/datum/reagents/holder, var/created_volume)
+ This proc is called when the recipe is matched.
+ You'll want to add explosions etc here.
+ To find the location you'll have to do something
+ like get_turf(holder.my_atom)
+
+ name & id
+ Should be pretty obvious.
+
+ results
+ This var contains a list of the id(s) of the resulting reagents and their result amounts.
+ I recommend you set this to the total volume of all required reagent.
+
+ required_reagents
+ This is a list of ids of the required reagents.
+ Each id also needs an associated value that gives us the minimum required amount
+ of that reagent. The handle_reaction proc can detect mutiples of the same recipes
+ so for most cases you want to set the required amount to 1.
+
+ required_catalysts
+ This is a list of the ids of the required catalysts.
+ Functionally similar to required_reagents, it is a list of reagents that are required
+ for the reaction. However, unlike required_reagents, catalysts are NOT consumed.
+ They mearly have to be present in the container.
+
+ required_container
+ The container the recipe has to take place in in order to happen. Leave this blank/null
+ if you want the reaction to happen anywhere.
+
+ required_other
+ Basically like a reagent's data variable. You can set extra requirements for a
+ reaction with this.
+
+ required_temp
+ This is the required temperature.
+
+About the Tools:
+By default, all atom have a reagents var - but its empty. if you want to use an object for the chem. system you'll need to add something like this in its new proc:
+ var/datum/reagents/R = new/datum/reagents(100) <<<<< create a new datum , 100 is the maximum_volume of the new holder datum.
+ reagents = R <<<<< assign the new datum to the objects reagents var
+ R.my_atom = src <<<<< set the holders my_atom to src so that we know where we are.
+
+ This can also be done by calling a convenience proc:
+ atom/proc/create_reagents(var/max_volume)
+
+Other important stuff:
+ amount_per_transfer_from_this var
+ This var is mostly used by beakers and bottles.
+ It simply tells us how much to transfer when
+ 'pouring' our reagents into something else.
+
+ atom/proc/is_open_container()
+ Checks atom/var/reagents.reagents_holder_flags & OPENCONTAINER.
+ If this returns 1 , you can use syringes, beakers etc
+ to manipulate the contents of this object.
+ If it's 0, you'll need to write your own custom reagent
+ transfer code since you will not be able to use the standard
+ tools to manipulate it.
+
+ atom/proc/is_injectable()
+ Checks if something can be injected to.
+ If this returns 1, you can use syringes and droppers
+ to draw from and add to the contents of this object.
+
+ atom/proc/is_drawable()
+ Checks if something can be drawn from.
+ If this returns 1, you can use syringes and droppers
+ to draw from the contents of this object.
+
+GOON CHEMS README:
+Credit goes to Cogwerks, and all the other goonstation coders for the original idea and implementation of this over at goonstation.
+
+THE REQUESTED DON'T PORT LIST: IF YOU PORT THESE THE GOONS WILL MURDER US IN OUR SLEEP SO PLEASE DON'T KTHX - Iamgoofball
+Any of the Secret Chems
+Goon in-joke chems (Eg. Cat Drugs, Hairgrownium)
+Liquid Electricity
+Rajajajah
+
+
+
+
diff --git a/code/modules/reagents/chemistry/fermi.html b/code/modules/reagents/chemistry/fermi.html
new file mode 100644
index 0000000000000..63c90b04413b5
--- /dev/null
+++ b/code/modules/reagents/chemistry/fermi.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ code/modules/reagents/chemistry/fermi/readme.md - SPLURT Station 13
+
+
+
+
+code/modules/reagents/chemistry/fermi/readme.md
+
+
+
+
+ How to code fermichem reactions:
+First off, probably read though the readme for standard reagent mechanisms, this builds on top of that.
+#bitflags
+for datum/reagent/
you have the following options with var/chemical_flags
:
+REAGENT_DEAD_PROCESS calls on_mob_dead() if present in a dead body
+REAGENT_DONOTSPLIT Do not split the chem at all during processing
+REAGENT_ONLYINVERSE Only invert chem, no splitting
+REAGENT_ONMOBMERGE Call on_mob_life proc when reagents are merging.
+REAGENT_INVISIBLE Doesn't appear on handheld health analyzers.
+REAGENT_FORCEONNEW Forces a on_new() call without a data overhead
+REAGENT_SNEAKYNAME When inverted, the inverted chem uses the name of the original chem
+REAGENT_SPLITRETAINVOL Retains initial volume of chem when splitting
+
+for datum/chemical_reaction/
under var/clear_conversion
+REACTION_CLEAR_IMPURE Convert into impure/pure on reaction completion
+REACTION_CLEAR_INVERSE Convert into inverse on reaction completion when purity is low enough
+
+
+
+
diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.html b/code/modules/reagents/chemistry/machinery/chem_dispenser.html
new file mode 100644
index 0000000000000..e65cc281fd3ca
--- /dev/null
+++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/reagents/chemistry/machinery/chem_dispenser.dm - SPLURT Station 13
+
+
+
+
+code/modules/reagents/chemistry/machinery/chem_dispenser.dm
+
+
+
+
+ /obj /machinery /chem_dispenser/apothecary An unique, less efficient model found in the medbay apothecary room.
+
+
+
diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.html b/code/modules/reagents/chemistry/reagents/alcohol_reagents.html
new file mode 100644
index 0000000000000..ff467920838ca
--- /dev/null
+++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/reagents/chemistry/reagents/alcohol_reagents.dm - SPLURT Station 13
+
+
+
+
+code/modules/reagents/chemistry/reagents/alcohol_reagents.dm
+
+
+
+
+ /datum /reagent /consumable/ethanol I don't know who made this header before I refactored alcohols but I'm going to fucking strangle them because it was so ugly, holy Christ
+
+
+
diff --git a/code/modules/reagents/chemistry/reagents/drink_reagents.html b/code/modules/reagents/chemistry/reagents/drink_reagents.html
new file mode 100644
index 0000000000000..372f839e9d9e2
--- /dev/null
+++ b/code/modules/reagents/chemistry/reagents/drink_reagents.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/reagents/chemistry/reagents/drink_reagents.dm - SPLURT Station 13
+
+
+
+
+code/modules/reagents/chemistry/reagents/drink_reagents.dm
+
+
+
+
+ /datum /reagent /consumable/orangejuice DRINKS BELOW, Beer is up there though, along with cola. Cap'n Pete's Cuban Spiced Rum
+
+
+
diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.html b/code/modules/reagents/chemistry/reagents/food_reagents.html
new file mode 100644
index 0000000000000..4923f5d484821
--- /dev/null
+++ b/code/modules/reagents/chemistry/reagents/food_reagents.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/reagents/chemistry/reagents/food_reagents.dm - SPLURT Station 13
+
+
+
+
+code/modules/reagents/chemistry/reagents/food_reagents.dm
+
+
+
+
+
+
+
diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.html b/code/modules/reagents/chemistry/reagents/other_reagents.html
new file mode 100644
index 0000000000000..9196a58ec5dd0
--- /dev/null
+++ b/code/modules/reagents/chemistry/reagents/other_reagents.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/modules/reagents/chemistry/reagents/other_reagents.dm - SPLURT Station 13
+
+
+
+
+code/modules/reagents/chemistry/reagents/other_reagents.dm
+
+
+
+
+
+
+
diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.html b/code/modules/reagents/chemistry/reagents/toxin_reagents.html
new file mode 100644
index 0000000000000..7f98ea01bc68c
--- /dev/null
+++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/reagents/chemistry/reagents/toxin_reagents.dm - SPLURT Station 13
+
+
+
+
+code/modules/reagents/chemistry/reagents/toxin_reagents.dm
+
+
+
+
+
+
+
diff --git a/code/modules/reagents/chemistry/recipes/others.html b/code/modules/reagents/chemistry/recipes/others.html
new file mode 100644
index 0000000000000..bfbb935e4b447
--- /dev/null
+++ b/code/modules/reagents/chemistry/recipes/others.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/modules/reagents/chemistry/recipes/others.dm - SPLURT Station 13
+
+
+
+
+code/modules/reagents/chemistry/recipes/others.dm
+
+
+
+
+
+
+
diff --git a/code/modules/reagents/reagent_containers/pill.html b/code/modules/reagents/reagent_containers/pill.html
new file mode 100644
index 0000000000000..bc75c9785b369
--- /dev/null
+++ b/code/modules/reagents/reagent_containers/pill.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/reagents/reagent_containers/pill.dm - SPLURT Station 13
+
+
+
+
+code/modules/reagents/reagent_containers/pill.dm
+
+
+
+
+ /obj /item /reagent_containers/pill/shadowtoxin this pill is used only in a legion mob drop
+ /obj /item /reagent_containers/pill/zoom drugs
+
+
+
diff --git a/code/modules/reagents/reagent_containers/spray.html b/code/modules/reagents/reagent_containers/spray.html
new file mode 100644
index 0000000000000..17debb083d497
--- /dev/null
+++ b/code/modules/reagents/reagent_containers/spray.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/reagents/reagent_containers/spray.dm - SPLURT Station 13
+
+
+
+
+code/modules/reagents/reagent_containers/spray.dm
+
+
+
+
+
+
+
diff --git a/code/modules/recycling/disposal/multiz.html b/code/modules/recycling/disposal/multiz.html
new file mode 100644
index 0000000000000..6544c3e1cdaf7
--- /dev/null
+++ b/code/modules/recycling/disposal/multiz.html
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+ code/modules/recycling/disposal/multiz.dm - SPLURT Station 13
+
+
+
+
+code/modules/recycling/disposal/multiz.dm
+
+
+
+
+ MULTIZ_PIPE_UP Defines for determining which way a multiz disposal element should travel
+ MULTIZ_PIPE_DOWN Defines for determining which way a multiz disposal element should travel
+ /obj /structure/disposalpipe/trunk/multiz/down Set the multiz direction of your trunk. 1 = up, 2 = down
Define Details
+MULTIZ_PIPE_DOWN
+
+
+
+ Defines for determining which way a multiz disposal element should travel
MULTIZ_PIPE_UP
+
+
+
+ Defines for determining which way a multiz disposal element should travel
+
+
+
diff --git a/code/modules/research/anomaly/explosive_compressor.html b/code/modules/research/anomaly/explosive_compressor.html
new file mode 100644
index 0000000000000..95059e3f40767
--- /dev/null
+++ b/code/modules/research/anomaly/explosive_compressor.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/research/anomaly/explosive_compressor.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/anomaly/explosive_compressor.dm
+
+
+
+
+
+
+
diff --git a/code/modules/research/anomaly/raw_anomaly.html b/code/modules/research/anomaly/raw_anomaly.html
new file mode 100644
index 0000000000000..15836e1940ab2
--- /dev/null
+++ b/code/modules/research/anomaly/raw_anomaly.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/research/anomaly/raw_anomaly.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/anomaly/raw_anomaly.dm
+
+
+
+
+ /obj/item/raw_anomaly_core The current precursor to anomaly cores, these are manufactured into 'finished' anomaly cores for use in research, items, and more.
+
+
+
diff --git a/code/modules/research/designs.html b/code/modules/research/designs.html
new file mode 100644
index 0000000000000..c353ad9a39685
--- /dev/null
+++ b/code/modules/research/designs.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/research/designs.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/designs.dm
+
+
+
+
+
+
+
diff --git a/code/modules/research/designs/AI_module_designs.html b/code/modules/research/designs/AI_module_designs.html
new file mode 100644
index 0000000000000..4fd099625926e
--- /dev/null
+++ b/code/modules/research/designs/AI_module_designs.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/research/designs/AI_module_designs.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/designs/AI_module_designs.dm
+
+
+
+
+
+
+
diff --git a/code/modules/research/designs/autobotter_designs.html b/code/modules/research/designs/autobotter_designs.html
new file mode 100644
index 0000000000000..0f95b851260d4
--- /dev/null
+++ b/code/modules/research/designs/autobotter_designs.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/research/designs/autobotter_designs.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/designs/autobotter_designs.dm
+
+
+
+
+
+
+
diff --git a/code/modules/research/designs/autolathe_desings/autolathe_designs_construction.html b/code/modules/research/designs/autolathe_desings/autolathe_designs_construction.html
new file mode 100644
index 0000000000000..89dec28138a21
--- /dev/null
+++ b/code/modules/research/designs/autolathe_desings/autolathe_designs_construction.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/research/designs/autolathe_desings/autolathe_designs_construction.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/designs/autolathe_desings/autolathe_designs_construction.dm
+
+
+
+
+
+
+
diff --git a/code/modules/research/designs/autolathe_desings/autolathe_designs_electronics.html b/code/modules/research/designs/autolathe_desings/autolathe_designs_electronics.html
new file mode 100644
index 0000000000000..c68ff25ea4c33
--- /dev/null
+++ b/code/modules/research/designs/autolathe_desings/autolathe_designs_electronics.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/research/designs/autolathe_desings/autolathe_designs_electronics.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/designs/autolathe_desings/autolathe_designs_electronics.dm
+
+
+
+
+
+
+
diff --git a/code/modules/research/designs/autolathe_desings/autolathe_designs_medical_and_dinnerware.html b/code/modules/research/designs/autolathe_desings/autolathe_designs_medical_and_dinnerware.html
new file mode 100644
index 0000000000000..98be839f46627
--- /dev/null
+++ b/code/modules/research/designs/autolathe_desings/autolathe_designs_medical_and_dinnerware.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/research/designs/autolathe_desings/autolathe_designs_medical_and_dinnerware.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/designs/autolathe_desings/autolathe_designs_medical_and_dinnerware.dm
+
+
+
+
+
+
+
diff --git a/code/modules/research/designs/autolathe_desings/autolathe_designs_sec_and_hacked.html b/code/modules/research/designs/autolathe_desings/autolathe_designs_sec_and_hacked.html
new file mode 100644
index 0000000000000..b42ca533415de
--- /dev/null
+++ b/code/modules/research/designs/autolathe_desings/autolathe_designs_sec_and_hacked.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/research/designs/autolathe_desings/autolathe_designs_sec_and_hacked.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/designs/autolathe_desings/autolathe_designs_sec_and_hacked.dm
+
+
+
+
+
+
+
diff --git a/code/modules/research/designs/autolathe_desings/autolathe_designs_tcomms_and_misc.html b/code/modules/research/designs/autolathe_desings/autolathe_designs_tcomms_and_misc.html
new file mode 100644
index 0000000000000..88e97f609044d
--- /dev/null
+++ b/code/modules/research/designs/autolathe_desings/autolathe_designs_tcomms_and_misc.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/research/designs/autolathe_desings/autolathe_designs_tcomms_and_misc.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/designs/autolathe_desings/autolathe_designs_tcomms_and_misc.dm
+
+
+
+
+
+
+
diff --git a/code/modules/research/designs/autolathe_desings/autolathe_designs_tools.html b/code/modules/research/designs/autolathe_desings/autolathe_designs_tools.html
new file mode 100644
index 0000000000000..70375f74b0c2c
--- /dev/null
+++ b/code/modules/research/designs/autolathe_desings/autolathe_designs_tools.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/research/designs/autolathe_desings/autolathe_designs_tools.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/designs/autolathe_desings/autolathe_designs_tools.dm
+
+
+
+
+
+
+
diff --git a/code/modules/research/designs/biogenerator_designs.html b/code/modules/research/designs/biogenerator_designs.html
new file mode 100644
index 0000000000000..b7a7a462c1282
--- /dev/null
+++ b/code/modules/research/designs/biogenerator_designs.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/research/designs/biogenerator_designs.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/designs/biogenerator_designs.dm
+
+
+
+
+
+
+
diff --git a/code/modules/research/designs/bluespace_designs.html b/code/modules/research/designs/bluespace_designs.html
new file mode 100644
index 0000000000000..4c6c3f276bb6c
--- /dev/null
+++ b/code/modules/research/designs/bluespace_designs.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/research/designs/bluespace_designs.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/designs/bluespace_designs.dm
+
+
+
+
+
+
+
diff --git a/code/modules/research/designs/comp_board_designs/comp_board_designs_all_misc.html b/code/modules/research/designs/comp_board_designs/comp_board_designs_all_misc.html
new file mode 100644
index 0000000000000..f7264a93ad547
--- /dev/null
+++ b/code/modules/research/designs/comp_board_designs/comp_board_designs_all_misc.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/research/designs/comp_board_designs/comp_board_designs_all_misc.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/designs/comp_board_designs/comp_board_designs_all_misc.dm
+
+
+
+
+
+
+
diff --git a/code/modules/research/designs/comp_board_designs/comp_board_designs_cargo.html b/code/modules/research/designs/comp_board_designs/comp_board_designs_cargo.html
new file mode 100644
index 0000000000000..033fc9ab94660
--- /dev/null
+++ b/code/modules/research/designs/comp_board_designs/comp_board_designs_cargo.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/research/designs/comp_board_designs/comp_board_designs_cargo.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/designs/comp_board_designs/comp_board_designs_cargo.dm
+
+
+
+
+
+
+
diff --git a/code/modules/research/designs/comp_board_designs/comp_board_designs_engi.html b/code/modules/research/designs/comp_board_designs/comp_board_designs_engi.html
new file mode 100644
index 0000000000000..42b8447ee5497
--- /dev/null
+++ b/code/modules/research/designs/comp_board_designs/comp_board_designs_engi.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/research/designs/comp_board_designs/comp_board_designs_engi.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/designs/comp_board_designs/comp_board_designs_engi.dm
+
+
+
+
+
+
+
diff --git a/code/modules/research/designs/comp_board_designs/comp_board_designs_medical.html b/code/modules/research/designs/comp_board_designs/comp_board_designs_medical.html
new file mode 100644
index 0000000000000..dd4500a5014a4
--- /dev/null
+++ b/code/modules/research/designs/comp_board_designs/comp_board_designs_medical.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/research/designs/comp_board_designs/comp_board_designs_medical.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/designs/comp_board_designs/comp_board_designs_medical.dm
+
+
+
+
+
+
+
diff --git a/code/modules/research/designs/comp_board_designs/comp_board_designs_sci.html b/code/modules/research/designs/comp_board_designs/comp_board_designs_sci.html
new file mode 100644
index 0000000000000..871c475b11294
--- /dev/null
+++ b/code/modules/research/designs/comp_board_designs/comp_board_designs_sci.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/research/designs/comp_board_designs/comp_board_designs_sci.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/designs/comp_board_designs/comp_board_designs_sci.dm
+
+
+
+
+
+
+
diff --git a/code/modules/research/designs/comp_board_designs/comp_board_designs_sec.html b/code/modules/research/designs/comp_board_designs/comp_board_designs_sec.html
new file mode 100644
index 0000000000000..9d9f3020d4b17
--- /dev/null
+++ b/code/modules/research/designs/comp_board_designs/comp_board_designs_sec.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/research/designs/comp_board_designs/comp_board_designs_sec.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/designs/comp_board_designs/comp_board_designs_sec.dm
+
+
+
+
+
+
+
diff --git a/code/modules/research/designs/computer_part_designs.html b/code/modules/research/designs/computer_part_designs.html
new file mode 100644
index 0000000000000..770c976c23d58
--- /dev/null
+++ b/code/modules/research/designs/computer_part_designs.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/research/designs/computer_part_designs.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/designs/computer_part_designs.dm
+
+
+
+
+
+
+
diff --git a/code/modules/research/designs/electronics_designs.html b/code/modules/research/designs/electronics_designs.html
new file mode 100644
index 0000000000000..8449a9a5ac799
--- /dev/null
+++ b/code/modules/research/designs/electronics_designs.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/modules/research/designs/electronics_designs.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/designs/electronics_designs.dm
+
+
+
+
+
+
+
diff --git a/code/modules/research/designs/limbgrower_designs.html b/code/modules/research/designs/limbgrower_designs.html
new file mode 100644
index 0000000000000..4b9efcba7c75b
--- /dev/null
+++ b/code/modules/research/designs/limbgrower_designs.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/research/designs/limbgrower_designs.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/designs/limbgrower_designs.dm
+
+
+
+
+
+
+
diff --git a/code/modules/research/designs/machine_desings/machine_designs_all_misc.html b/code/modules/research/designs/machine_desings/machine_designs_all_misc.html
new file mode 100644
index 0000000000000..a792c345402e0
--- /dev/null
+++ b/code/modules/research/designs/machine_desings/machine_designs_all_misc.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/research/designs/machine_desings/machine_designs_all_misc.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/designs/machine_desings/machine_designs_all_misc.dm
+
+
+
+
+
+
+
diff --git a/code/modules/research/designs/machine_desings/machine_designs_cargo.html b/code/modules/research/designs/machine_desings/machine_designs_cargo.html
new file mode 100644
index 0000000000000..e0bcdc205797c
--- /dev/null
+++ b/code/modules/research/designs/machine_desings/machine_designs_cargo.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/research/designs/machine_desings/machine_designs_cargo.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/designs/machine_desings/machine_designs_cargo.dm
+
+
+
+
+
+
+
diff --git a/code/modules/research/designs/machine_desings/machine_designs_engi.html b/code/modules/research/designs/machine_desings/machine_designs_engi.html
new file mode 100644
index 0000000000000..e4f870dca9ac3
--- /dev/null
+++ b/code/modules/research/designs/machine_desings/machine_designs_engi.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/research/designs/machine_desings/machine_designs_engi.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/designs/machine_desings/machine_designs_engi.dm
+
+
+
+
+
+
+
diff --git a/code/modules/research/designs/machine_desings/machine_designs_medical.html b/code/modules/research/designs/machine_desings/machine_designs_medical.html
new file mode 100644
index 0000000000000..3c04c0d04239d
--- /dev/null
+++ b/code/modules/research/designs/machine_desings/machine_designs_medical.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/research/designs/machine_desings/machine_designs_medical.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/designs/machine_desings/machine_designs_medical.dm
+
+
+
+
+
+
+
diff --git a/code/modules/research/designs/machine_desings/machine_designs_sci.html b/code/modules/research/designs/machine_desings/machine_designs_sci.html
new file mode 100644
index 0000000000000..ea852286d5c58
--- /dev/null
+++ b/code/modules/research/designs/machine_desings/machine_designs_sci.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/research/designs/machine_desings/machine_designs_sci.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/designs/machine_desings/machine_designs_sci.dm
+
+
+
+
+
+
+
diff --git a/code/modules/research/designs/machine_desings/machine_designs_service.html b/code/modules/research/designs/machine_desings/machine_designs_service.html
new file mode 100644
index 0000000000000..4fa657b8e558a
--- /dev/null
+++ b/code/modules/research/designs/machine_desings/machine_designs_service.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/research/designs/machine_desings/machine_designs_service.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/designs/machine_desings/machine_designs_service.dm
+
+
+
+
+
+
+
diff --git a/code/modules/research/designs/mecha_designs.html b/code/modules/research/designs/mecha_designs.html
new file mode 100644
index 0000000000000..36c319f778f42
--- /dev/null
+++ b/code/modules/research/designs/mecha_designs.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/research/designs/mecha_designs.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/designs/mecha_designs.dm
+
+
+
+
+
+
+
diff --git a/code/modules/research/designs/mechfabricator_designs.html b/code/modules/research/designs/mechfabricator_designs.html
new file mode 100644
index 0000000000000..3abe3efc5754f
--- /dev/null
+++ b/code/modules/research/designs/mechfabricator_designs.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/research/designs/mechfabricator_designs.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/designs/mechfabricator_designs.dm
+
+
+
+
+
+
+
diff --git a/code/modules/research/designs/medical_designs.html b/code/modules/research/designs/medical_designs.html
new file mode 100644
index 0000000000000..f62f04999b806
--- /dev/null
+++ b/code/modules/research/designs/medical_designs.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ code/modules/research/designs/medical_designs.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/designs/medical_designs.dm
+
+
+
+
+
+
+
diff --git a/code/modules/research/designs/mining_designs.html b/code/modules/research/designs/mining_designs.html
new file mode 100644
index 0000000000000..bcb92644a2583
--- /dev/null
+++ b/code/modules/research/designs/mining_designs.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/research/designs/mining_designs.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/designs/mining_designs.dm
+
+
+
+
+
+
+
diff --git a/code/modules/research/designs/misc_designs.html b/code/modules/research/designs/misc_designs.html
new file mode 100644
index 0000000000000..332514e2b34cb
--- /dev/null
+++ b/code/modules/research/designs/misc_designs.html
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+ code/modules/research/designs/misc_designs.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/designs/misc_designs.dm
+
+
+
+
+
+
+
diff --git a/code/modules/research/designs/nanite_designs.html b/code/modules/research/designs/nanite_designs.html
new file mode 100644
index 0000000000000..cc8adb130dcd6
--- /dev/null
+++ b/code/modules/research/designs/nanite_designs.html
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+ code/modules/research/designs/nanite_designs.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/designs/nanite_designs.dm
+
+
+
+
+
+
+
diff --git a/code/modules/research/designs/power_designs.html b/code/modules/research/designs/power_designs.html
new file mode 100644
index 0000000000000..7d8c3f2fad6f4
--- /dev/null
+++ b/code/modules/research/designs/power_designs.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/research/designs/power_designs.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/designs/power_designs.dm
+
+
+
+
+
+
+
diff --git a/code/modules/research/designs/smelting_designs.html b/code/modules/research/designs/smelting_designs.html
new file mode 100644
index 0000000000000..ae6d110f7711a
--- /dev/null
+++ b/code/modules/research/designs/smelting_designs.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/research/designs/smelting_designs.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/designs/smelting_designs.dm
+
+
+
+
+
+
+
diff --git a/code/modules/research/designs/stock_parts_designs.html b/code/modules/research/designs/stock_parts_designs.html
new file mode 100644
index 0000000000000..47b209fdf0ec4
--- /dev/null
+++ b/code/modules/research/designs/stock_parts_designs.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/research/designs/stock_parts_designs.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/designs/stock_parts_designs.dm
+
+
+
+
+
+
+
diff --git a/code/modules/research/designs/telecomms_designs.html b/code/modules/research/designs/telecomms_designs.html
new file mode 100644
index 0000000000000..9c2ef46047dd7
--- /dev/null
+++ b/code/modules/research/designs/telecomms_designs.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/research/designs/telecomms_designs.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/designs/telecomms_designs.dm
+
+
+
+
+ /datum /design /board/subspace_receiver Subspace Telecomms
+
+
+
diff --git a/code/modules/research/designs/tool_designs.html b/code/modules/research/designs/tool_designs.html
new file mode 100644
index 0000000000000..c34cfd7eb1982
--- /dev/null
+++ b/code/modules/research/designs/tool_designs.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/modules/research/designs/tool_designs.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/designs/tool_designs.dm
+
+
+
+
+
+
+
diff --git a/code/modules/research/designs/weapon_designs.html b/code/modules/research/designs/weapon_designs.html
new file mode 100644
index 0000000000000..080a1f0c7fc3a
--- /dev/null
+++ b/code/modules/research/designs/weapon_designs.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/research/designs/weapon_designs.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/designs/weapon_designs.dm
+
+
+
+
+
+
+
diff --git a/code/modules/research/experimentor.html b/code/modules/research/experimentor.html
new file mode 100644
index 0000000000000..5d391053159a2
--- /dev/null
+++ b/code/modules/research/experimentor.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/research/experimentor.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/experimentor.dm
+
+
+
+
+
+
+
diff --git a/code/modules/research/nanites/nanite_programs.html b/code/modules/research/nanites/nanite_programs.html
new file mode 100644
index 0000000000000..ce2d4f0d68989
--- /dev/null
+++ b/code/modules/research/nanites/nanite_programs.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/research/nanites/nanite_programs.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/nanites/nanite_programs.dm
+
+
+
+
+ /datum /nanite_program /protocol A nanite program containing a behaviour protocol. Only one protocol of each class can be active at once.
+
+
+
diff --git a/code/modules/research/techweb/nodes/alien_nodes.html b/code/modules/research/techweb/nodes/alien_nodes.html
new file mode 100644
index 0000000000000..963675f3803ed
--- /dev/null
+++ b/code/modules/research/techweb/nodes/alien_nodes.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/research/techweb/nodes/alien_nodes.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/techweb/nodes/alien_nodes.dm
+
+
+
+
+ /datum /techweb_node/alientech Alien technology
+
+
+
diff --git a/code/modules/research/techweb/nodes/bepis_nodes.html b/code/modules/research/techweb/nodes/bepis_nodes.html
new file mode 100644
index 0000000000000..59d49dec9d06d
--- /dev/null
+++ b/code/modules/research/techweb/nodes/bepis_nodes.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/research/techweb/nodes/bepis_nodes.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/techweb/nodes/bepis_nodes.dm
+
+
+
+
+ /datum /techweb_node/light_apps B.E.P.I.S. Locked Techs
+
+
+
diff --git a/code/modules/research/techweb/nodes/biotech_nodes.html b/code/modules/research/techweb/nodes/biotech_nodes.html
new file mode 100644
index 0000000000000..4bb645c91a9fa
--- /dev/null
+++ b/code/modules/research/techweb/nodes/biotech_nodes.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/research/techweb/nodes/biotech_nodes.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/techweb/nodes/biotech_nodes.dm
+
+
+
+
+ /datum /techweb_node/biotech Biotech
+
+
+
diff --git a/code/modules/research/techweb/nodes/bluespace_nodes.html b/code/modules/research/techweb/nodes/bluespace_nodes.html
new file mode 100644
index 0000000000000..0df1ac7e471bb
--- /dev/null
+++ b/code/modules/research/techweb/nodes/bluespace_nodes.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/research/techweb/nodes/bluespace_nodes.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/techweb/nodes/bluespace_nodes.dm
+
+
+
+
+ /datum /techweb_node/bluespace_basic Bluespace tech
+ /datum /techweb_node/basic_shuttle_tech shuttle tech
+
+
+
diff --git a/code/modules/research/techweb/nodes/computer_hud_nodes.html b/code/modules/research/techweb/nodes/computer_hud_nodes.html
new file mode 100644
index 0000000000000..39f42afb9b290
--- /dev/null
+++ b/code/modules/research/techweb/nodes/computer_hud_nodes.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/research/techweb/nodes/computer_hud_nodes.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/techweb/nodes/computer_hud_nodes.dm
+
+
+
+
+ /datum /techweb_node/comptech Computer tech
+
+
+
diff --git a/code/modules/research/techweb/nodes/engineering_nodes.html b/code/modules/research/techweb/nodes/engineering_nodes.html
new file mode 100644
index 0000000000000..0797c20f87827
--- /dev/null
+++ b/code/modules/research/techweb/nodes/engineering_nodes.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/research/techweb/nodes/engineering_nodes.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/techweb/nodes/engineering_nodes.dm
+
+
+
+
+ /datum /techweb_node/engineering engineering tech
+
+
+
diff --git a/code/modules/research/techweb/nodes/mecha_nodes.html b/code/modules/research/techweb/nodes/mecha_nodes.html
new file mode 100644
index 0000000000000..72391905b718d
--- /dev/null
+++ b/code/modules/research/techweb/nodes/mecha_nodes.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/research/techweb/nodes/mecha_nodes.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/techweb/nodes/mecha_nodes.dm
+
+
+
+
+ /datum /techweb_node/mech mech technology
+
+
+
diff --git a/code/modules/research/techweb/nodes/medical_nodes.html b/code/modules/research/techweb/nodes/medical_nodes.html
new file mode 100644
index 0000000000000..2b8cf6fb9c6af
--- /dev/null
+++ b/code/modules/research/techweb/nodes/medical_nodes.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/modules/research/techweb/nodes/medical_nodes.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/techweb/nodes/medical_nodes.dm
+
+
+
+
+ /datum /techweb_node/cloning Medical
+ /datum /techweb_node/surplus_limbs Cybernetics
+ /datum /techweb_node/imp_wt_surgery Advanced Surgery
+
+
+
diff --git a/code/modules/research/techweb/nodes/misc_nodes.html b/code/modules/research/techweb/nodes/misc_nodes.html
new file mode 100644
index 0000000000000..9008a519efa71
--- /dev/null
+++ b/code/modules/research/techweb/nodes/misc_nodes.html
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+ code/modules/research/techweb/nodes/misc_nodes.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/techweb/nodes/misc_nodes.dm
+
+
+
+
+ /datum /techweb_node/datatheory data theory tech
+ /datum /techweb_node/basic_plasma plasma tech
+ /datum /techweb_node/emp_basic EMP tech
+ /datum /techweb_node/clown Clown tech
+ /datum /techweb_node/sticky_basic Tape tech
+
+
+
diff --git a/code/modules/research/techweb/nodes/nanites_nodes.html b/code/modules/research/techweb/nodes/nanites_nodes.html
new file mode 100644
index 0000000000000..62fbdc83d0f1c
--- /dev/null
+++ b/code/modules/research/techweb/nodes/nanites_nodes.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/research/techweb/nodes/nanites_nodes.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/techweb/nodes/nanites_nodes.dm
+
+
+
+
+ /datum /techweb_node/nanite_base Nanites
+
+
+
diff --git a/code/modules/research/techweb/nodes/robotics_nodes.html b/code/modules/research/techweb/nodes/robotics_nodes.html
new file mode 100644
index 0000000000000..24b12e6a9d02f
--- /dev/null
+++ b/code/modules/research/techweb/nodes/robotics_nodes.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/research/techweb/nodes/robotics_nodes.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/techweb/nodes/robotics_nodes.dm
+
+
+
+
+ /datum /techweb_node/robotics robotics tech
+
+
+
diff --git a/code/modules/research/techweb/nodes/tools_nodes.html b/code/modules/research/techweb/nodes/tools_nodes.html
new file mode 100644
index 0000000000000..4bd980977e6b9
--- /dev/null
+++ b/code/modules/research/techweb/nodes/tools_nodes.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/research/techweb/nodes/tools_nodes.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/techweb/nodes/tools_nodes.dm
+
+
+
+
+ /datum /techweb_node/basic_tools Tools
+
+
+
diff --git a/code/modules/research/techweb/nodes/weaponry_nodes.html b/code/modules/research/techweb/nodes/weaponry_nodes.html
new file mode 100644
index 0000000000000..ba4a6dd9edf66
--- /dev/null
+++ b/code/modules/research/techweb/nodes/weaponry_nodes.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/research/techweb/nodes/weaponry_nodes.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/techweb/nodes/weaponry_nodes.dm
+
+
+
+
+ /datum /techweb_node/weaponry weaponry tech
+
+
+
diff --git a/code/modules/research/xenobiology/crossbreeding/__corecross.html b/code/modules/research/xenobiology/crossbreeding/__corecross.html
new file mode 100644
index 0000000000000..88f9d5d956fb3
--- /dev/null
+++ b/code/modules/research/xenobiology/crossbreeding/__corecross.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/research/xenobiology/crossbreeding/__corecross.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/xenobiology/crossbreeding/__corecross.dm
+
+
+
+
+ /obj /item /slimecross SLIME CROSSBREEDS
+
+
+
diff --git a/code/modules/research/xenobiology/crossbreeding/_status_effects.html b/code/modules/research/xenobiology/crossbreeding/_status_effects.html
new file mode 100644
index 0000000000000..b0a918f7dba55
--- /dev/null
+++ b/code/modules/research/xenobiology/crossbreeding/_status_effects.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/research/xenobiology/crossbreeding/_status_effects.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/xenobiology/crossbreeding/_status_effects.dm
+
+
+
+
+
+
+
diff --git a/code/modules/research/xenobiology/crossbreeding/charged.html b/code/modules/research/xenobiology/crossbreeding/charged.html
new file mode 100644
index 0000000000000..b9fbabee26597
--- /dev/null
+++ b/code/modules/research/xenobiology/crossbreeding/charged.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/research/xenobiology/crossbreeding/charged.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/xenobiology/crossbreeding/charged.dm
+
+
+
+
+ /obj /item /slimepotion/slime_reviver Unique things.
+
+
+
diff --git a/code/modules/research/xenobiology/xenobiology.html b/code/modules/research/xenobiology/xenobiology.html
new file mode 100644
index 0000000000000..84b5fbe077415
--- /dev/null
+++ b/code/modules/research/xenobiology/xenobiology.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/research/xenobiology/xenobiology.dm - SPLURT Station 13
+
+
+
+
+code/modules/research/xenobiology/xenobiology.dm
+
+
+
+
+ /obj /item /slime_extract Slime Extracts
+ /obj /item /slimepotion Slime-derived potions
+
+
+
diff --git a/code/modules/ruins/icemoonruin_code/hotsprings.html b/code/modules/ruins/icemoonruin_code/hotsprings.html
new file mode 100644
index 0000000000000..f7c6c4ad68a05
--- /dev/null
+++ b/code/modules/ruins/icemoonruin_code/hotsprings.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/ruins/icemoonruin_code/hotsprings.dm - SPLURT Station 13
+
+
+
+
+code/modules/ruins/icemoonruin_code/hotsprings.dm
+
+
+
+
+
+
+
diff --git a/code/modules/ruins/lavaland_ruin_code.html b/code/modules/ruins/lavaland_ruin_code.html
new file mode 100644
index 0000000000000..3a5dd8adf0b6d
--- /dev/null
+++ b/code/modules/ruins/lavaland_ruin_code.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/ruins/lavaland_ruin_code.dm - SPLURT Station 13
+
+
+
+
+code/modules/ruins/lavaland_ruin_code.dm
+
+
+
+
+ /obj /item /disk/design_disk/adv/knight_gear Wizard tower item
+ /obj /effect/mob_spawn /human/lavaland_syndicate Syndicate Listening Post
+
+
+
diff --git a/code/modules/ruins/lavalandruin_code/biodome_clown_planet.html b/code/modules/ruins/lavalandruin_code/biodome_clown_planet.html
new file mode 100644
index 0000000000000..c56a3a66a6e17
--- /dev/null
+++ b/code/modules/ruins/lavalandruin_code/biodome_clown_planet.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/ruins/lavalandruin_code/biodome_clown_planet.dm - SPLURT Station 13
+
+
+
+
+code/modules/ruins/lavalandruin_code/biodome_clown_planet.dm
+
+
+
+
+ /obj /item /paper /crumpled/bloody/ruins/lavaland/clown_planet/escape lavaland clown planet papers
+
+
+
diff --git a/code/modules/ruins/lavalandruin_code/sloth.html b/code/modules/ruins/lavalandruin_code/sloth.html
new file mode 100644
index 0000000000000..de0c2737b5312
--- /dev/null
+++ b/code/modules/ruins/lavalandruin_code/sloth.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/ruins/lavalandruin_code/sloth.dm - SPLURT Station 13
+
+
+
+
+code/modules/ruins/lavalandruin_code/sloth.dm
+
+
+
+
+ /obj /item /paper /fluff/stations/lavaland/sloth/note lavaland slot ruin items
+
+
+
diff --git a/code/modules/ruins/lavalandruin_code/surface.html b/code/modules/ruins/lavalandruin_code/surface.html
new file mode 100644
index 0000000000000..804172642c743
--- /dev/null
+++ b/code/modules/ruins/lavalandruin_code/surface.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/ruins/lavalandruin_code/surface.dm - SPLURT Station 13
+
+
+
+
+code/modules/ruins/lavalandruin_code/surface.dm
+
+
+
+
+ /obj /item /paper /fluff/stations/lavaland/surface/henderson_report lavaland surface papers
+
+
+
diff --git a/code/modules/ruins/spaceruin_code/DJstation.html b/code/modules/ruins/spaceruin_code/DJstation.html
new file mode 100644
index 0000000000000..12d9803f93fa2
--- /dev/null
+++ b/code/modules/ruins/spaceruin_code/DJstation.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/ruins/spaceruin_code/DJstation.dm - SPLURT Station 13
+
+
+
+
+code/modules/ruins/spaceruin_code/DJstation.dm
+
+
+
+
+
+
+
diff --git a/code/modules/ruins/spaceruin_code/TheDerelict.html b/code/modules/ruins/spaceruin_code/TheDerelict.html
new file mode 100644
index 0000000000000..bbdebeead00c2
--- /dev/null
+++ b/code/modules/ruins/spaceruin_code/TheDerelict.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/modules/ruins/spaceruin_code/TheDerelict.dm - SPLURT Station 13
+
+
+
+
+code/modules/ruins/spaceruin_code/TheDerelict.dm
+
+
+
+
+
+
+
diff --git a/code/modules/ruins/spaceruin_code/asteroid4.html b/code/modules/ruins/spaceruin_code/asteroid4.html
new file mode 100644
index 0000000000000..8605ce7d67d4b
--- /dev/null
+++ b/code/modules/ruins/spaceruin_code/asteroid4.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/ruins/spaceruin_code/asteroid4.dm - SPLURT Station 13
+
+
+
+
+code/modules/ruins/spaceruin_code/asteroid4.dm
+
+
+
+
+ /obj /item /paper /fluff/ruins/asteroid4/extraction asteroid4 items
+
+
+
diff --git a/code/modules/ruins/spaceruin_code/bigderelict1.html b/code/modules/ruins/spaceruin_code/bigderelict1.html
new file mode 100644
index 0000000000000..6acedf7af4758
--- /dev/null
+++ b/code/modules/ruins/spaceruin_code/bigderelict1.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/ruins/spaceruin_code/bigderelict1.dm - SPLURT Station 13
+
+
+
+
+code/modules/ruins/spaceruin_code/bigderelict1.dm
+
+
+
+
+ /obj /item /paper /crumpled/ruins/bigderelict1/manifest bigderelict1 items
+
+
+
diff --git a/code/modules/ruins/spaceruin_code/clericsden.html b/code/modules/ruins/spaceruin_code/clericsden.html
new file mode 100644
index 0000000000000..2bb302392d135
--- /dev/null
+++ b/code/modules/ruins/spaceruin_code/clericsden.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/ruins/spaceruin_code/clericsden.dm - SPLURT Station 13
+
+
+
+
+code/modules/ruins/spaceruin_code/clericsden.dm
+
+
+
+
+ /obj /item /disk/design_disk/adv/cleric_mace cleric's den items.
+
+
+
diff --git a/code/modules/ruins/spaceruin_code/crashedclownship.html b/code/modules/ruins/spaceruin_code/crashedclownship.html
new file mode 100644
index 0000000000000..f4f1bfeb79d28
--- /dev/null
+++ b/code/modules/ruins/spaceruin_code/crashedclownship.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/ruins/spaceruin_code/crashedclownship.dm - SPLURT Station 13
+
+
+
+
+code/modules/ruins/spaceruin_code/crashedclownship.dm
+
+
+
+
+ /obj /item /paper /fluff/ruins/crashedclownship/true_nation crashedclownship items
+
+
+
diff --git a/code/modules/ruins/spaceruin_code/deepstorage.html b/code/modules/ruins/spaceruin_code/deepstorage.html
new file mode 100644
index 0000000000000..2325865e626eb
--- /dev/null
+++ b/code/modules/ruins/spaceruin_code/deepstorage.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/ruins/spaceruin_code/deepstorage.dm - SPLURT Station 13
+
+
+
+
+code/modules/ruins/spaceruin_code/deepstorage.dm
+
+
+
+
+ /obj /item /paper /fluff/ruins/deepstorage/water_concern deepstorage items
+
+
+
diff --git a/code/modules/ruins/spaceruin_code/listeningstation.html b/code/modules/ruins/spaceruin_code/listeningstation.html
new file mode 100644
index 0000000000000..bc7aa70b9b978
--- /dev/null
+++ b/code/modules/ruins/spaceruin_code/listeningstation.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/ruins/spaceruin_code/listeningstation.dm - SPLURT Station 13
+
+
+
+
+code/modules/ruins/spaceruin_code/listeningstation.dm
+
+
+
+
+ /obj /item /paper /fluff/ruins/listeningstation/reports listening station
+
+
+
diff --git a/code/modules/ruins/spaceruin_code/miracle.html b/code/modules/ruins/spaceruin_code/miracle.html
new file mode 100644
index 0000000000000..56ffe1e0ead0d
--- /dev/null
+++ b/code/modules/ruins/spaceruin_code/miracle.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/ruins/spaceruin_code/miracle.dm - SPLURT Station 13
+
+
+
+
+code/modules/ruins/spaceruin_code/miracle.dm
+
+
+
+
+ /obj /item /storage/backpack/satchel/flat/secret/miracle_ruin miracle ruin
+
+
+
diff --git a/code/modules/ruins/spaceruin_code/oldstation.html b/code/modules/ruins/spaceruin_code/oldstation.html
new file mode 100644
index 0000000000000..1ec0e1ab9b6cd
--- /dev/null
+++ b/code/modules/ruins/spaceruin_code/oldstation.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/ruins/spaceruin_code/oldstation.dm - SPLURT Station 13
+
+
+
+
+code/modules/ruins/spaceruin_code/oldstation.dm
+
+
+
+
+
+
+
diff --git a/code/modules/ruins/spaceruin_code/originalcontent.html b/code/modules/ruins/spaceruin_code/originalcontent.html
new file mode 100644
index 0000000000000..9d41e0e0c4df4
--- /dev/null
+++ b/code/modules/ruins/spaceruin_code/originalcontent.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/ruins/spaceruin_code/originalcontent.dm - SPLURT Station 13
+
+
+
+
+code/modules/ruins/spaceruin_code/originalcontent.dm
+
+
+
+
+ /obj /item /paper /crumpled/ruins/originalcontent originalcontent items
+
+
+
diff --git a/code/modules/ruins/spaceruin_code/skelter.html b/code/modules/ruins/spaceruin_code/skelter.html
new file mode 100644
index 0000000000000..06f27daca1bd0
--- /dev/null
+++ b/code/modules/ruins/spaceruin_code/skelter.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/ruins/spaceruin_code/skelter.dm - SPLURT Station 13
+
+
+
+
+code/modules/ruins/spaceruin_code/skelter.dm
+
+
+
+
+
+
+
diff --git a/code/modules/ruins/spaceruin_code/spacehotel.html b/code/modules/ruins/spaceruin_code/spacehotel.html
new file mode 100644
index 0000000000000..a244a1cbc56ac
--- /dev/null
+++ b/code/modules/ruins/spaceruin_code/spacehotel.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/ruins/spaceruin_code/spacehotel.dm - SPLURT Station 13
+
+
+
+
+code/modules/ruins/spaceruin_code/spacehotel.dm
+
+
+
+
+ /obj /item /paper /fluff/ruins/spacehotel/notice spacehotel items
+
+
+
diff --git a/code/modules/ruins/spaceruin_code/whiteshipruin_box.html b/code/modules/ruins/spaceruin_code/whiteshipruin_box.html
new file mode 100644
index 0000000000000..4f57d7facf647
--- /dev/null
+++ b/code/modules/ruins/spaceruin_code/whiteshipruin_box.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/ruins/spaceruin_code/whiteshipruin_box.dm - SPLURT Station 13
+
+
+
+
+code/modules/ruins/spaceruin_code/whiteshipruin_box.dm
+
+
+
+
+
+
+
diff --git a/code/modules/shielding/helpers.html b/code/modules/shielding/helpers.html
new file mode 100644
index 0000000000000..77e5aa425235d
--- /dev/null
+++ b/code/modules/shielding/helpers.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ code/modules/shielding/helpers.dm - SPLURT Station 13
+
+
+
+
+code/modules/shielding/helpers.dm
+
+
+
+
+ /proc/hull_shielding_get_tiles_around_area
+ HELPER FILE FOR SHIELDING
+Gets hull exterior adjacent tiles of a certain area
+Area method.
+EXPENSIVE.
+If the area itself is already considered exterior, it'll find all tiles inside it that's next to an interior area.
+ /proc/hull_shielding_get_tiles_in_z
+ Gets hull adjacent exterior tiles of an entire zlevel
+EXPENSIVE.
+Gets the tiles in the exterior area touching to a non-exterior area
+
+
+
diff --git a/code/modules/shuttle/supply.html b/code/modules/shuttle/supply.html
new file mode 100644
index 0000000000000..b9f375933a177
--- /dev/null
+++ b/code/modules/shuttle/supply.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+ code/modules/shuttle/supply.dm - SPLURT Station 13
+
+
+
+
+code/modules/shuttle/supply.dm
+
+
+
+Define Details
+CRATE_TAX
+
+
+
+ How much to charge oversized goody orders
GOODY_FREE_SHIPPING_MAX
+
+
+
+ How many goody orders we can fit in a lockbox before we upgrade to a crate
+
+
+
diff --git a/code/modules/spells/spell_types/cone_spells.html b/code/modules/spells/spell_types/cone_spells.html
new file mode 100644
index 0000000000000..6592f89c73bc3
--- /dev/null
+++ b/code/modules/spells/spell_types/cone_spells.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/spells/spell_types/cone_spells.dm - SPLURT Station 13
+
+
+
+
+code/modules/spells/spell_types/cone_spells.dm
+
+
+
+
+
+
+
diff --git a/code/modules/spells/spell_types/construct_spells.html b/code/modules/spells/spell_types/construct_spells.html
new file mode 100644
index 0000000000000..3cd80fafd3751
--- /dev/null
+++ b/code/modules/spells/spell_types/construct_spells.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/spells/spell_types/construct_spells.dm - SPLURT Station 13
+
+
+
+
+code/modules/spells/spell_types/construct_spells.dm
+
+
+
+
+
+
+
diff --git a/code/modules/surgery/bone_mending.html b/code/modules/surgery/bone_mending.html
new file mode 100644
index 0000000000000..9c5cbb19bcb97
--- /dev/null
+++ b/code/modules/surgery/bone_mending.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/modules/surgery/bone_mending.dm - SPLURT Station 13
+
+
+
+
+code/modules/surgery/bone_mending.dm
+
+
+
+
+ /datum /surgery/repair_bone_hairline BONE FIXING SURGERIES//////
+Repair Hairline Fracture (Severe)
+ /datum /surgery/repair_bone_compound Repair Compound Fracture (Critical)
+ /datum /surgery_step/repair_bone_hairline Repair Hairline Fracture (Severe)
+ /datum /surgery_step/reset_compound_fracture Reset Compound Fracture (Crticial)
+ /datum /surgery_step/repair_bone_compound Repair Compound Fracture (Crticial)
+
+
+
diff --git a/code/modules/surgery/burn_dressing.html b/code/modules/surgery/burn_dressing.html
new file mode 100644
index 0000000000000..190560ef1bc63
--- /dev/null
+++ b/code/modules/surgery/burn_dressing.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+ code/modules/surgery/burn_dressing.dm - SPLURT Station 13
+
+
+
+
+code/modules/surgery/burn_dressing.dm
+
+
+
+
+ /datum /surgery/debride BURN FIXING SURGERIES//////
+Debride burnt flesh
+ /datum /surgery_step/debride Debride
+ /datum /surgery_step/dress Dressing burns
+
+
+
diff --git a/code/modules/surgery/healing.html b/code/modules/surgery/healing.html
new file mode 100644
index 0000000000000..3ccdebc7462cd
--- /dev/null
+++ b/code/modules/surgery/healing.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/modules/surgery/healing.dm - SPLURT Station 13
+
+
+
+
+code/modules/surgery/healing.dm
+
+
+
+
+ /datum /surgery/healing/brute BRUTE
+ /datum /surgery_step/heal/brute/basic BRUTE STEPS
+ /datum /surgery/healing/burn BURN
+ /datum /surgery_step/heal/burn/basic BURN STEPS
+ /datum /surgery/healing/combo COMBO
+ /datum /surgery_step/heal/combo COMBO STEPS
+
+
+
diff --git a/code/modules/surgery/limb_augmentation.html b/code/modules/surgery/limb_augmentation.html
new file mode 100644
index 0000000000000..546aaa5b1750a
--- /dev/null
+++ b/code/modules/surgery/limb_augmentation.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/surgery/limb_augmentation.dm - SPLURT Station 13
+
+
+
+
+code/modules/surgery/limb_augmentation.dm
+
+
+
+
+ /datum /surgery_step/replace_limb AUGMENTATION SURGERIES
+
+
+
diff --git a/code/modules/surgery/organs/eyes.html b/code/modules/surgery/organs/eyes.html
new file mode 100644
index 0000000000000..46066e33ec523
--- /dev/null
+++ b/code/modules/surgery/organs/eyes.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/surgery/organs/eyes.dm - SPLURT Station 13
+
+
+
+
+code/modules/surgery/organs/eyes.dm
+
+
+
+
+
+
+
diff --git a/code/modules/surgery/organs/vocal_cords.html b/code/modules/surgery/organs/vocal_cords.html
new file mode 100644
index 0000000000000..7b40eb85f47a4
--- /dev/null
+++ b/code/modules/surgery/organs/vocal_cords.html
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+ code/modules/surgery/organs/vocal_cords.dm - SPLURT Station 13
+
+
+
+
+code/modules/surgery/organs/vocal_cords.dm
+
+
+
+
+ VOG_MAX_STANDARD_POWER anything above this requires adminbus, to prevent a cultist from stacking chaplain + cult + specific listener = 8x, which is enough to instantly kill someone with damage.
+ VOG_MAX_BURST_DAMAGE max damage we can do in one "blast" to a listener
+ VOG_MAX_BURST_HEAL max healing we can do in one "blast" to a listener
+ /proc/voice_of_god
+ VOICE OF GOD
+ /proc/get_vog_special
+ get special role multiplier for voice of god. No double dipping.
+ /obj /item /organ /vocal_cords/velvet ENTHRAL VELVET CHORDS
+ /proc/velvetspeech
+ FermiChem
Define Details
+VOG_MAX_BURST_DAMAGE
+
+
+
+ max damage we can do in one "blast" to a listener
VOG_MAX_BURST_HEAL
+
+
+
+ max healing we can do in one "blast" to a listener
VOG_MAX_STANDARD_POWER
+
+
+
+ anything above this requires adminbus, to prevent a cultist from stacking chaplain + cult + specific listener = 8x, which is enough to instantly kill someone with damage.
+
+
+
diff --git a/code/modules/surgery/repair_puncture.html b/code/modules/surgery/repair_puncture.html
new file mode 100644
index 0000000000000..2a9511c92e7bc
--- /dev/null
+++ b/code/modules/surgery/repair_puncture.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ code/modules/surgery/repair_puncture.dm - SPLURT Station 13
+
+
+
+
+code/modules/surgery/repair_puncture.dm
+
+
+
+
+ REALIGN_INNARDS PUNCTURE FIXING SURGERIES
+ /datum /surgery/repair_puncture Repair puncture wounds
+ /datum /surgery_step/repair_innards realign the blood vessels so we can reweld them
+ /datum /surgery_step/seal_veins Sealing the vessels back together
Define Details
+REALIGN_INNARDS
+
+
+
+ PUNCTURE FIXING SURGERIES
+
+
+
diff --git a/code/modules/surgery/robot_healing.html b/code/modules/surgery/robot_healing.html
new file mode 100644
index 0000000000000..affe294acf87f
--- /dev/null
+++ b/code/modules/surgery/robot_healing.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/surgery/robot_healing.dm - SPLURT Station 13
+
+
+
+
+code/modules/surgery/robot_healing.dm
+
+
+
+
+ /datum /surgery_step/robot_heal/basic STEPS
+
+
+
diff --git a/code/modules/tgchat/message.html b/code/modules/tgchat/message.html
new file mode 100644
index 0000000000000..0f294ba4a23af
--- /dev/null
+++ b/code/modules/tgchat/message.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/tgchat/message.dm - SPLURT Station 13
+
+
+
+
+code/modules/tgchat/message.dm
+
+
+
+
+
+
+
diff --git a/code/modules/tgchat/to_chat.html b/code/modules/tgchat/to_chat.html
new file mode 100644
index 0000000000000..752285a6bd799
--- /dev/null
+++ b/code/modules/tgchat/to_chat.html
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+ code/modules/tgchat/to_chat.dm - SPLURT Station 13
+
+
+
+
+code/modules/tgchat/to_chat.dm
+
+
+
+
+ Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+ /proc/to_chat_immediate
+ Circumvents the message queue and sends the message
+to the recipient (target) as soon as possible.
+ /proc/to_chat
+ Sends the message to the recipient (target).
+
+
+
diff --git a/code/modules/tgs.html b/code/modules/tgs.html
new file mode 100644
index 0000000000000..389343bdb5636
--- /dev/null
+++ b/code/modules/tgs.html
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+ code/modules/tgs/README.md - SPLURT Station 13
+
+
+
+
+DMAPI Internals code/modules/tgs/README.md
+
+
+
+
+ This folder should be placed on it's own inside a codebase that wishes to use the TGS DMAPI. Warranty void if modified.
+
+includes.dm is the file that should be included by DM code, it handles including the rest.
+The core folder includes all code not directly part of any API version.
+The other versioned folders contain code for the different DMAPI versions.
+
+v3210 contains the final TGS3 API.
+v4 is the legacy DMAPI 4 (Used in TGS 4.0.X versions).
+v5 is the current DMAPI version used by TGS >=4.1.
+
+
+LICENSE is the MIT license for the DMAPI.
+
+APIs communicate with TGS in two ways. All versions implement TGS -> DM communication using /world/Topic. DM -> TGS communication, called the bridge method, is different for each version.
+
+
+
diff --git a/code/modules/tgs/core.html b/code/modules/tgs/core.html
new file mode 100644
index 0000000000000..c62f316fd4e8d
--- /dev/null
+++ b/code/modules/tgs/core.html
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+ code/modules/tgs/core/README.md - SPLURT Station 13
+
+
+
+
+Core DMAPI functions code/modules/tgs/core/README.md
+
+
+
+
+ This folder contains all DMAPI code not directly involved in an API.
+
+_definitions.dm contains defines needed across DMAPI internals.
+core.dm contains the implementations of the /world/proc/TgsXXX()
procs. Many map directly to the /datum/tgs_api
functions. It also contains the /datum selection and setup code.
+datum.dm contains the /datum/tgs_api
declarations that all APIs must implement.
+tgs_version.dm contains the /datum/tgs_version
definition
+
+
+
+
+
diff --git a/code/modules/tgs/v3210.html b/code/modules/tgs/v3210.html
new file mode 100644
index 0000000000000..99c8dc80d5033
--- /dev/null
+++ b/code/modules/tgs/v3210.html
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+ code/modules/tgs/v3210/README.md - SPLURT Station 13
+
+
+
+
+DMAPI V3 code/modules/tgs/v3210/README.md
+
+
+
+
+ This DMAPI implements bridge using file output which TGS monitors for.
+
+api.dm contains the bulk of the API code.
+commands.dm contains functions relating to /datum/tgs_chat_command
s.
+
+
+
+
diff --git a/code/modules/tgs/v4.html b/code/modules/tgs/v4.html
new file mode 100644
index 0000000000000..7be69f011abf6
--- /dev/null
+++ b/code/modules/tgs/v4.html
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+ code/modules/tgs/v4/README.md - SPLURT Station 13
+
+
+
+
+DMAPI V4 code/modules/tgs/v4/README.md
+
+
+
+
+ This DMAPI implements bridge requests using file output which TGS monitors for. It has a safe mode restriction.
+
+api.dm contains the bulk of the API code.
+commands.dm contains functions relating to /datum/tgs_chat_command
s.
+
+
+
+
diff --git a/code/modules/tgs/v5.html b/code/modules/tgs/v5.html
new file mode 100644
index 0000000000000..5fd83e933bf4f
--- /dev/null
+++ b/code/modules/tgs/v5.html
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+ code/modules/tgs/v5/README.md - SPLURT Station 13
+
+
+
+
+DMAPI V5 code/modules/tgs/v5/README.md
+
+
+
+
+ This DMAPI implements bridge requests using HTTP GET requests to TGS. It has no security restrictions.
+
+__interop_version.dm contains the version of the API used between the DMAPI and TGS.
+_defines.dm contains constant definitions.
+api.dm contains the bulk of the API code.
+bridge.dm contains functions related to making bridge requests.
+chunking.dm contains common function for splitting large raw data sets into chunks BYOND can natively process.
+commands.dm contains functions relating to /datum/tgs_chat_command
s.
+serializers.dm contains function to help convert interop /datum
s into a JSON encodable list()
format.
+topic.dm contains functions related to processing topic requests.
+undefs.dm Undoes the work of _defines.dm
.
+
+
+
+
diff --git a/code/modules/tgui/external.html b/code/modules/tgui/external.html
new file mode 100644
index 0000000000000..533b60db3aa5c
--- /dev/null
+++ b/code/modules/tgui/external.html
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+ code/modules/tgui/external.dm - SPLURT Station 13
+
+
+
+
+code/modules/tgui/external.dm
+
+
+
+
+ External tgui definitions, such as src_object APIs.
+Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+ /proc/tgui_Topic
+ Middleware for /client/Topic.
+
+
+
diff --git a/code/modules/tgui/states.html b/code/modules/tgui/states.html
new file mode 100644
index 0000000000000..eebbeed25f162
--- /dev/null
+++ b/code/modules/tgui/states.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+ code/modules/tgui/states.dm - SPLURT Station 13
+
+
+
+
+code/modules/tgui/states.dm
+
+
+
+
+ Base state and helpers for states. Just does some sanity checks,
+implement a proper state for in-depth checks.
+Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+
+
+
diff --git a/code/modules/tgui/states/admin.html b/code/modules/tgui/states/admin.html
new file mode 100644
index 0000000000000..bd7387452f525
--- /dev/null
+++ b/code/modules/tgui/states/admin.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/tgui/states/admin.dm - SPLURT Station 13
+
+
+
+
+code/modules/tgui/states/admin.dm
+
+
+
+
+ Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+
+
+
diff --git a/code/modules/tgui/states/always.html b/code/modules/tgui/states/always.html
new file mode 100644
index 0000000000000..4e67518368339
--- /dev/null
+++ b/code/modules/tgui/states/always.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/tgui/states/always.dm - SPLURT Station 13
+
+
+
+
+code/modules/tgui/states/always.dm
+
+
+
+
+ Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+
+
+
diff --git a/code/modules/tgui/states/conscious.html b/code/modules/tgui/states/conscious.html
new file mode 100644
index 0000000000000..23d88bf9f3c94
--- /dev/null
+++ b/code/modules/tgui/states/conscious.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/tgui/states/conscious.dm - SPLURT Station 13
+
+
+
+
+code/modules/tgui/states/conscious.dm
+
+
+
+
+ Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+
+
+
diff --git a/code/modules/tgui/states/contained.html b/code/modules/tgui/states/contained.html
new file mode 100644
index 0000000000000..6ab918922ae96
--- /dev/null
+++ b/code/modules/tgui/states/contained.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/tgui/states/contained.dm - SPLURT Station 13
+
+
+
+
+code/modules/tgui/states/contained.dm
+
+
+
+
+ Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+
+
+
diff --git a/code/modules/tgui/states/deep_inventory.html b/code/modules/tgui/states/deep_inventory.html
new file mode 100644
index 0000000000000..d08ae9bf45daf
--- /dev/null
+++ b/code/modules/tgui/states/deep_inventory.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/tgui/states/deep_inventory.dm - SPLURT Station 13
+
+
+
+
+code/modules/tgui/states/deep_inventory.dm
+
+
+
+
+ Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+
+
+
diff --git a/code/modules/tgui/states/default.html b/code/modules/tgui/states/default.html
new file mode 100644
index 0000000000000..05634d2b2706b
--- /dev/null
+++ b/code/modules/tgui/states/default.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/tgui/states/default.dm - SPLURT Station 13
+
+
+
+
+code/modules/tgui/states/default.dm
+
+
+
+
+ Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+
+
+
diff --git a/code/modules/tgui/states/fun.html b/code/modules/tgui/states/fun.html
new file mode 100644
index 0000000000000..f463a43172416
--- /dev/null
+++ b/code/modules/tgui/states/fun.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/tgui/states/fun.dm - SPLURT Station 13
+
+
+
+
+code/modules/tgui/states/fun.dm
+
+
+
+
+ Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+
+
+
diff --git a/code/modules/tgui/states/hands.html b/code/modules/tgui/states/hands.html
new file mode 100644
index 0000000000000..843edcc778ce1
--- /dev/null
+++ b/code/modules/tgui/states/hands.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/tgui/states/hands.dm - SPLURT Station 13
+
+
+
+
+code/modules/tgui/states/hands.dm
+
+
+
+
+ Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+
+
+
diff --git a/code/modules/tgui/states/human_adjacent.html b/code/modules/tgui/states/human_adjacent.html
new file mode 100644
index 0000000000000..6c7d545ae8b48
--- /dev/null
+++ b/code/modules/tgui/states/human_adjacent.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/tgui/states/human_adjacent.dm - SPLURT Station 13
+
+
+
+
+code/modules/tgui/states/human_adjacent.dm
+
+
+
+
+ Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+
+
+
diff --git a/code/modules/tgui/states/inventory.html b/code/modules/tgui/states/inventory.html
new file mode 100644
index 0000000000000..14140550053d6
--- /dev/null
+++ b/code/modules/tgui/states/inventory.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/tgui/states/inventory.dm - SPLURT Station 13
+
+
+
+
+code/modules/tgui/states/inventory.dm
+
+
+
+
+ Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+
+
+
diff --git a/code/modules/tgui/states/language_menu.html b/code/modules/tgui/states/language_menu.html
new file mode 100644
index 0000000000000..371a4d51c348f
--- /dev/null
+++ b/code/modules/tgui/states/language_menu.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/tgui/states/language_menu.dm - SPLURT Station 13
+
+
+
+
+code/modules/tgui/states/language_menu.dm
+
+
+
+
+ Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+
+
+
diff --git a/code/modules/tgui/states/never.html b/code/modules/tgui/states/never.html
new file mode 100644
index 0000000000000..774aa9c2f81ca
--- /dev/null
+++ b/code/modules/tgui/states/never.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/tgui/states/never.dm - SPLURT Station 13
+
+
+
+
+code/modules/tgui/states/never.dm
+
+
+
+
+ Copyright (c) 2021 Arm A. Hammer
+SPDX-License-Identifier: MIT
+
+
+
diff --git a/code/modules/tgui/states/not_incapacitated.html b/code/modules/tgui/states/not_incapacitated.html
new file mode 100644
index 0000000000000..c9f5d4eccd51e
--- /dev/null
+++ b/code/modules/tgui/states/not_incapacitated.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/tgui/states/not_incapacitated.dm - SPLURT Station 13
+
+
+
+
+code/modules/tgui/states/not_incapacitated.dm
+
+
+
+
+ Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+
+
+
diff --git a/code/modules/tgui/states/notcontained.html b/code/modules/tgui/states/notcontained.html
new file mode 100644
index 0000000000000..0e7e0347383b1
--- /dev/null
+++ b/code/modules/tgui/states/notcontained.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/tgui/states/notcontained.dm - SPLURT Station 13
+
+
+
+
+code/modules/tgui/states/notcontained.dm
+
+
+
+
+ Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+
+
+
diff --git a/code/modules/tgui/states/observer.html b/code/modules/tgui/states/observer.html
new file mode 100644
index 0000000000000..a94ade831ee52
--- /dev/null
+++ b/code/modules/tgui/states/observer.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/tgui/states/observer.dm - SPLURT Station 13
+
+
+
+
+code/modules/tgui/states/observer.dm
+
+
+
+
+ Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+
+
+
diff --git a/code/modules/tgui/states/physical.html b/code/modules/tgui/states/physical.html
new file mode 100644
index 0000000000000..0981e30027399
--- /dev/null
+++ b/code/modules/tgui/states/physical.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/tgui/states/physical.dm - SPLURT Station 13
+
+
+
+
+code/modules/tgui/states/physical.dm
+
+
+
+
+ Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+
+
+
diff --git a/code/modules/tgui/states/self.html b/code/modules/tgui/states/self.html
new file mode 100644
index 0000000000000..8c5686d66ff4f
--- /dev/null
+++ b/code/modules/tgui/states/self.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/tgui/states/self.dm - SPLURT Station 13
+
+
+
+
+code/modules/tgui/states/self.dm
+
+
+
+
+ Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+
+
+
diff --git a/code/modules/tgui/states/zlevel.html b/code/modules/tgui/states/zlevel.html
new file mode 100644
index 0000000000000..ad49f2d611334
--- /dev/null
+++ b/code/modules/tgui/states/zlevel.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/tgui/states/zlevel.dm - SPLURT Station 13
+
+
+
+
+code/modules/tgui/states/zlevel.dm
+
+
+
+
+ Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+
+
+
diff --git a/code/modules/tgui/status_composers.html b/code/modules/tgui/status_composers.html
new file mode 100644
index 0000000000000..c34514259d222
--- /dev/null
+++ b/code/modules/tgui/status_composers.html
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+ code/modules/tgui/status_composers.dm - SPLURT Station 13
+
+
+
+
+code/modules/tgui/status_composers.dm
+
+
+
+
+ /proc/default_ui_state
+ The sane defaults for a UI such as a computer or a machine.
+ /proc/ui_status_user_is_adjacent
+ Returns a UI status such that users adjacent to source will be able to interact,
+far away users will be able to see, and anyone farther won't see anything.
+Dead users will receive updates no matter what, though you likely want to add
+a [ui_status_only_living
] check for finer observer interactions.
+ /proc/ui_status_only_living
+ Returns a UI status such that the dead will be able to watch, but not interact.
+ /proc/ui_status_user_is_abled
+ Returns a UI status such that users with debilitating conditions, such as
+being dead or not having power for silicons, will not be able to interact.
+Being dead will disable UI, being incapacitated will continue updating it,
+and anything else will make it interactive.
+ /proc/ui_status_user_has_free_hands
+ Returns a UI status such that those without blocked hands will be able to interact,
+but everyone else can only watch.
+ /proc/ui_status_user_is_advanced_tool_user
+ Returns a UI status such that advanced tool users will be able to interact,
+but everyone else can only watch.
+ /proc/ui_status_silicon_has_access
+ Returns a UI status such that silicons will be able to interact with whatever
+they would have access to if this was a machine. For example, AIs can
+interact if there's cameras with wireless control is enabled.
+ /proc/ui_status_user_is_conscious_and_lying_down
+ Returns UI_INTERACTIVE if the user is conscious and lying down.
+Returns UI_UPDATE otherwise.
+ /proc/ui_status_user_strictly_adjacent
+ Return UI_INTERACTIVE if the user is strictly adjacent to the target atom, whether they can see it or not.
+Return UI_CLOSE otherwise.
+
+
+
diff --git a/code/modules/tgui/tgui.html b/code/modules/tgui/tgui.html
new file mode 100644
index 0000000000000..980daf64e51c5
--- /dev/null
+++ b/code/modules/tgui/tgui.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ code/modules/tgui/tgui.dm - SPLURT Station 13
+
+
+
+
+code/modules/tgui/tgui.dm
+
+
+
+
+ Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+ /datum/tgui tgui datum (represents a UI).
+
+
+
diff --git a/code/modules/tgui/tgui_window.html b/code/modules/tgui/tgui_window.html
new file mode 100644
index 0000000000000..0c15365e36446
--- /dev/null
+++ b/code/modules/tgui/tgui_window.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/tgui/tgui_window.dm - SPLURT Station 13
+
+
+
+
+code/modules/tgui/tgui_window.dm
+
+
+
+
+ Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+
+
+
diff --git a/code/modules/tgui_input/alert.html b/code/modules/tgui_input/alert.html
new file mode 100644
index 0000000000000..bc1660fdb1d95
--- /dev/null
+++ b/code/modules/tgui_input/alert.html
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+ code/modules/tgui_input/alert.dm - SPLURT Station 13
+
+
+
+
+code/modules/tgui_input/alert.dm
+
+
+
+
+ /proc/tgui_alert
+ Creates a TGUI alert window and returns the user's response.
+ /datum/tgui_alert Datum used for instantiating and using a TGUI-controlled modal that prompts the user with
+a message and has buttons for responses.
+ /proc/tgui_alert_async
+ Creates an asynchronous TGUI alert window with an associated callback.
+ /datum/tgui_alert/async An asynchronous version of tgui_modal to be used with callbacks instead of waiting on user responses.
+
+
+
diff --git a/code/modules/tgui_input/list.html b/code/modules/tgui_input/list.html
new file mode 100644
index 0000000000000..0be342d875e17
--- /dev/null
+++ b/code/modules/tgui_input/list.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/modules/tgui_input/list.dm - SPLURT Station 13
+
+
+
+
+code/modules/tgui_input/list.dm
+
+
+
+
+
+
+
diff --git a/code/modules/tgui_input/number.html b/code/modules/tgui_input/number.html
new file mode 100644
index 0000000000000..7fa2c1f684274
--- /dev/null
+++ b/code/modules/tgui_input/number.html
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+ code/modules/tgui_input/number.dm - SPLURT Station 13
+
+
+
+
+code/modules/tgui_input/number.dm
+
+
+
+
+ /proc/tgui_input_number
+ Creates a TGUI window with a number input. Returns the user's response as num | null.
+ /datum/tgui_input_number Datum used for instantiating and using a TGUI-controlled number input that prompts the user with
+a message and has an input for number entry.
+ /proc/tgui_input_number_async
+ Creates an asynchronous TGUI input num window with an associated callback.
+ /datum/tgui_input_number/async An asynchronous version of tgui_text_input to be used with callbacks instead of waiting on user responses.
+
+
+
diff --git a/code/modules/tgui_input/text.html b/code/modules/tgui_input/text.html
new file mode 100644
index 0000000000000..cb242c34238fb
--- /dev/null
+++ b/code/modules/tgui_input/text.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/modules/tgui_input/text.dm - SPLURT Station 13
+
+
+
+
+code/modules/tgui_input/text.dm
+
+
+
+
+
+
+
diff --git a/code/modules/tgui_panel/audio.html b/code/modules/tgui_panel/audio.html
new file mode 100644
index 0000000000000..19d30623f0238
--- /dev/null
+++ b/code/modules/tgui_panel/audio.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/tgui_panel/audio.dm - SPLURT Station 13
+
+
+
+
+code/modules/tgui_panel/audio.dm
+
+
+
+
+ Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+
+
+
diff --git a/code/modules/tgui_panel/external.html b/code/modules/tgui_panel/external.html
new file mode 100644
index 0000000000000..bf4b46cfdea93
--- /dev/null
+++ b/code/modules/tgui_panel/external.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/tgui_panel/external.dm - SPLURT Station 13
+
+
+
+
+code/modules/tgui_panel/external.dm
+
+
+
+
+ Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+
+
+
diff --git a/code/modules/tgui_panel/telemetry.html b/code/modules/tgui_panel/telemetry.html
new file mode 100644
index 0000000000000..27d842cf8c29d
--- /dev/null
+++ b/code/modules/tgui_panel/telemetry.html
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+ code/modules/tgui_panel/telemetry.dm - SPLURT Station 13
+
+
+
+
+code/modules/tgui_panel/telemetry.dm
+
+
+
+Define Details
+TGUI_TELEMETRY_MAX_CONNECTIONS
+
+
+
+ Maximum number of connection records allowed to analyze.
+Should match the value set in the browser.
TGUI_TELEMETRY_RESPONSE_WINDOW
+
+
+
+ Maximum time allocated for sending a telemetry packet.
+
+
+
diff --git a/code/modules/tgui_panel/tgui_panel.html b/code/modules/tgui_panel/tgui_panel.html
new file mode 100644
index 0000000000000..3250c456360c7
--- /dev/null
+++ b/code/modules/tgui_panel/tgui_panel.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+ code/modules/tgui_panel/tgui_panel.dm - SPLURT Station 13
+
+
+
+
+code/modules/tgui_panel/tgui_panel.dm
+
+
+
+
+ Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+ /datum/tgui_panel tgui_panel datum
+Hosts tgchat and other nice features.
+
+
+
diff --git a/code/modules/unit_tests.html b/code/modules/unit_tests.html
new file mode 100644
index 0000000000000..43b5349a50a77
--- /dev/null
+++ b/code/modules/unit_tests.html
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+ code/modules/unit_tests/README.md - SPLURT Station 13
+
+
+
+
+Unit Tests code/modules/unit_tests/README.md
+
+
+
+
+ What is unit testing?
+Unit tests are automated code to verify that parts of the game work exactly as they should. For example, a test to make sure that the amputation surgery actually amputates the limb . These are ran every time a PR is made, and thus are very helpful for preventing bugs from cropping up in your code that would've otherwise gone unnoticed. For example, would you have thought to check that beach boys would still work the same after editing pizza ? If you value your time, probably not.
+On their most basic level, when UNIT_TESTS
is defined, all subtypes of /datum/unit_test
will have their Run
proc executed. From here, if Fail
is called at any point, then the tests will report as failed.
+How do I write one?
+
+Find a relevant file.
+
+All unit test related code is in code/modules/unit_tests
. If you are adding a new test for a surgery, for example, then you'd open surgeries.dm
. If a relevant file does not exist, simply create one in this folder, then #include
it in _unit_tests.dm
.
+
+Create the unit test.
+
+To make a new unit test, you simply need to define a /datum/unit_test
.
+For example, let's suppose that we are creating a test to make sure a proc square
correctly raises inputs to the power of two. We'd start with first:
+/datum/unit_test/square/Run()
+
+This defines our new unit test, /datum/unit_test/square
. Inside this function, we're then going to run through whatever we want to check. Tests provide a few assertion functions to make this easy. For now, we're going to use TEST_ASSERT_EQUAL
.
+/datum/unit_test/square/Run()
+ TEST_ASSERT_EQUAL(square(3), 9, "square(3) did not return 9")
+ TEST_ASSERT_EQUAL(square(4), 16, "square(4) did not return 16")
+
+As you can hopefully tell, we're simply checking if the output of square
matches the output we are expecting. If the test fails, it'll report the error message given as well as whatever the actual output was.
+
+Run the unit test
+
+Open code/_compile_options.dm
and uncomment the following line.
+//#define UNIT_TESTS //If this is uncommented, we do a single run though of the game setup and tear down process with unit tests in between
+
+Then, run tgstation.dmb in Dream Daemon. Don't bother trying to connect, you won't need to. You'll be able to see the outputs of all the tests. You'll get to see which tests failed and for what reason. If they all pass, you're set!
+How to think about tests
+Unit tests exist to prevent bugs that would happen in a real game. Thus, they should attempt to emulate the game world wherever possible. For example, the quick swap sanity test emulates a real scenario of the bug it fixed occurring by creating a character and giving it real items. The unrecommended alternative would be to create special test-only items. This isn't a hard rule, the reagent method exposure tests create a test-only reagent for example, but do keep it in mind.
+Unit tests should also be just that--testing units of code. For example, instead of having one massive test for reagents, there are instead several smaller tests for testing exposure, metabolization, etc.
+The unit testing API
+You can find more information about all of these from their respective doc comments, but for a brief overview:
+/datum/unit_test
- The base for all tests to be ran. Subtypes must override Run()
. New()
and Destroy()
can be used for setup and teardown. To fail, use Fail(reason)
.
+/datum/unit_test/proc/allocate(type, ...)
- Allocates an instance of the provided type with the given arguments. Is automatically destroyed when the test is over. Commonly seen in the form of var/mob/living/carbon/human/human = allocate(/mob/living/carbon/human)
.
+TEST_ASSERT(assertion, reason)
- Stops the unit test and fails if the assertion is not met. For example: TEST_ASSERT(powered(), "Machine is not powered")
.
+TEST_ASSERT_EQUAL(a, b, message)
- Same as TEST_ASSERT
, but checks if a == b
. If not, gives a helpful message showing what both a
and b
were. For example: TEST_ASSERT_EQUAL(2 + 2, 4, "The universe is falling apart before our eyes!")
.
+TEST_ASSERT_NOTEQUAL(a, b, message)
- Same as TEST_ASSERT_EQUAL
, but reversed.
+TEST_FOCUS(test_path)
- Only run the test provided within the parameters. Useful for reducing noise. For example, if we only want to run our example square test, we can add TEST_FOCUS(/datum/unit_test/square)
. Should never be pushed in a pull request--you will be laughed at.
+Final Notes
+
+Writing tests before you attempt to fix the bug can actually speed up development a lot! It means you don't have to go in game and folllow the same exact steps manually every time. This process is known as "TDD" (test driven development). Write the test first, make sure it fails, then start work on the fix/feature, and you'll know you're done when your tests pass. If you do try this, do make sure to confirm in a non-testing environment just to double check.
+Make sure that your tests don't accidentally call RNG functions like prob
. Since RNG is seeded during tests, you may not realize you have until someone else makes a PR and the tests fail!
+Do your best not to change the behavior of non-testing code during tests. While it may sometimes be necessary in the case of situations such as the above, it is still a slippery slope that can lead to the code you're testing being too different from the production environment to be useful.
+
+
+
+
diff --git a/code/modules/unit_tests/_unit_tests.html b/code/modules/unit_tests/_unit_tests.html
new file mode 100644
index 0000000000000..0f966d52ff807
--- /dev/null
+++ b/code/modules/unit_tests/_unit_tests.html
@@ -0,0 +1,111 @@
+
+
+
+
+
+
+ code/modules/unit_tests/_unit_tests.dm - SPLURT Station 13
+
+
+
+
+code/modules/unit_tests/_unit_tests.dm
+
+
+
+
+ TEST_FAIL For advanced cases, fail unconditionally but don't return (so a test can return multiple results)
+ TEST_ASSERT Asserts that a condition is true
+If the condition is not true, fails the test
+ TEST_ASSERT_NOTNULL Asserts that a parameter is not null
+ TEST_ASSERT_NULL Asserts that a parameter is null
+ TEST_ASSERT_EQUAL Asserts that the two parameters passed are equal, fails otherwise
+Optionally allows an additional message in the case of a failure
+ TEST_ASSERT_NOTEQUAL Asserts that the two parameters passed are not equal, fails otherwise
+Optionally allows an additional message in the case of a failure
+ TEST_FOCUS Only run the test provided within the parentheses
+This is useful for debugging when you want to reduce noise, but should never be pushed
+Intended to be used in the manner of TEST_FOCUS(/datum/unit_test/math)
+ UNIT_TEST_PASSED Constants indicating unit test completion status
+ TEST_LONGER After most test steps, used for tests that run long so shorter issues can be noticed faster
+ TEST_CREATE_AND_DESTROY This must be the last test to run due to the inherent nature of the test iterating every single tangible atom in the game and qdeleting all of them (while taking long sleeps to make sure the garbage collector fires properly) taking a large amount of time.
+ TEST_OUTPUT_RED Change color to red on ANSI terminal output, if enabled with -DANSICOLORS.
+ TEST_OUTPUT_GREEN Change color to green on ANSI terminal output, if enabled with -DANSICOLORS.
+ TRAIT_SOURCE_UNIT_TESTS A trait source when adding traits through unit tests
Define Details
+TEST_ASSERT
+
+
+
+
+ Asserts that a condition is true
+If the condition is not true, fails the test
TEST_ASSERT_EQUAL
+
+
+
+
+ Asserts that the two parameters passed are equal, fails otherwise
+Optionally allows an additional message in the case of a failure
TEST_ASSERT_NOTEQUAL
+
+
+
+
+ Asserts that the two parameters passed are not equal, fails otherwise
+Optionally allows an additional message in the case of a failure
TEST_ASSERT_NOTNULL
+
+
+
+
+ Asserts that a parameter is not null
TEST_ASSERT_NULL
+
+
+
+
+ Asserts that a parameter is null
TEST_CREATE_AND_DESTROY
+
+
+
+ This must be the last test to run due to the inherent nature of the test iterating every single tangible atom in the game and qdeleting all of them (while taking long sleeps to make sure the garbage collector fires properly) taking a large amount of time.
TEST_FAIL
+
+
+
+
+ For advanced cases, fail unconditionally but don't return (so a test can return multiple results)
TEST_FOCUS
+
+
+
+
+ Only run the test provided within the parentheses
+This is useful for debugging when you want to reduce noise, but should never be pushed
+Intended to be used in the manner of TEST_FOCUS(/datum/unit_test/math)
TEST_LONGER
+
+
+
+ After most test steps, used for tests that run long so shorter issues can be noticed faster
TEST_OUTPUT_GREEN
+
+
+
+
+ Change color to green on ANSI terminal output, if enabled with -DANSICOLORS.
TEST_OUTPUT_RED
+
+
+
+
+ Change color to red on ANSI terminal output, if enabled with -DANSICOLORS.
TRAIT_SOURCE_UNIT_TESTS
+
+
+
+ A trait source when adding traits through unit tests
UNIT_TEST_PASSED
+
+
+
+ Constants indicating unit test completion status
+
+
+
diff --git a/code/modules/unit_tests/character_saving.html b/code/modules/unit_tests/character_saving.html
new file mode 100644
index 0000000000000..a6221007c6895
--- /dev/null
+++ b/code/modules/unit_tests/character_saving.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/modules/unit_tests/character_saving.dm - SPLURT Station 13
+
+
+
+
+code/modules/unit_tests/character_saving.dm
+
+
+
+Define Details
+UNIT_TEST_SAVING_FLAVOR_TEXT
+
+
+
+ CIT TESTS
+
+
+
diff --git a/code/modules/unit_tests/create_and_destroy.html b/code/modules/unit_tests/create_and_destroy.html
new file mode 100644
index 0000000000000..1ed062a8a846e
--- /dev/null
+++ b/code/modules/unit_tests/create_and_destroy.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/unit_tests/create_and_destroy.dm - SPLURT Station 13
+
+
+
+
+code/modules/unit_tests/create_and_destroy.dm
+
+
+
+
+ /datum /unit_test /create_and_destroy Delete one of every type, sleep a while, then check to see if anything has gone fucky
+
+
+
diff --git a/code/modules/unit_tests/dynamic_ruleset_sanity.html b/code/modules/unit_tests/dynamic_ruleset_sanity.html
new file mode 100644
index 0000000000000..3432828cfb8d3
--- /dev/null
+++ b/code/modules/unit_tests/dynamic_ruleset_sanity.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/unit_tests/dynamic_ruleset_sanity.dm - SPLURT Station 13
+
+
+
+
+code/modules/unit_tests/dynamic_ruleset_sanity.dm
+
+
+
+
+ /datum /unit_test /dynamic_roundstart_ruleset_sanity Verifies that roundstart dynamic rulesets are setup properly without external configuration.
+ /datum /unit_test /dynamic_unique_antag_flags Verifies that dynamic rulesets have unique antag_flag.
+
+
+
diff --git a/code/modules/unit_tests/spawn_mobs.html b/code/modules/unit_tests/spawn_mobs.html
new file mode 100644
index 0000000000000..68ccbf5e2a5c4
--- /dev/null
+++ b/code/modules/unit_tests/spawn_mobs.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/unit_tests/spawn_mobs.dm - SPLURT Station 13
+
+
+
+
+code/modules/unit_tests/spawn_mobs.dm
+
+
+
+
+ /datum /unit_test /spawn_mobs Unit test that spawns all mobs that can be spawned by golden slimes
+
+
+
diff --git a/code/modules/unit_tests/tgui_create_message.html b/code/modules/unit_tests/tgui_create_message.html
new file mode 100644
index 0000000000000..99e0768d07160
--- /dev/null
+++ b/code/modules/unit_tests/tgui_create_message.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/unit_tests/tgui_create_message.dm - SPLURT Station 13
+
+
+
+
+code/modules/unit_tests/tgui_create_message.dm
+
+
+
+
+ /datum /unit_test /tgui_create_message Test that TGUI_CREATE_MESSAGE
is correctly implemented
+
+
+
diff --git a/code/modules/uplink/uplink_items.html b/code/modules/uplink/uplink_items.html
new file mode 100644
index 0000000000000..e1cded52904fb
--- /dev/null
+++ b/code/modules/uplink/uplink_items.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/uplink/uplink_items.dm - SPLURT Station 13
+
+
+
+
+code/modules/uplink/uplink_items.dm
+
+
+
+
+
+
+
diff --git a/code/modules/vehicles/mecha/_mecha.html b/code/modules/vehicles/mecha/_mecha.html
new file mode 100644
index 0000000000000..6775189f66de1
--- /dev/null
+++ b/code/modules/vehicles/mecha/_mecha.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/vehicles/mecha/_mecha.dm - SPLURT Station 13
+
+
+
+
+code/modules/vehicles/mecha/_mecha.dm
+
+
+
+
+
+
+
diff --git a/code/modules/vehicles/mecha/combat/durand.html b/code/modules/vehicles/mecha/combat/durand.html
new file mode 100644
index 0000000000000..85e3b61ce09b3
--- /dev/null
+++ b/code/modules/vehicles/mecha/combat/durand.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ code/modules/vehicles/mecha/combat/durand.dm - SPLURT Station 13
+
+
+
+
+code/modules/vehicles/mecha/combat/durand.dm
+
+
+
+
+ /obj/durand_shield Shield processing
+*An object to take the hit for us when using the Durand's defense mode.
+It is spawned in during the durand's initilization, and always stays on the same tile.
+Normally invisible, until defense mode is actvated. When the durand detects an attack that should be blocked, the
+attack is passed to the shield. The shield takes the damage, uses it to calculate charge cost, and then sets its
+own integrity back to max. Shield is automatically dropped if we run out of power or the user gets out.
+
+
+
diff --git a/code/modules/vehicles/mecha/equipment/tools/medical_tools.html b/code/modules/vehicles/mecha/equipment/tools/medical_tools.html
new file mode 100644
index 0000000000000..7da25dd511bb3
--- /dev/null
+++ b/code/modules/vehicles/mecha/equipment/tools/medical_tools.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/vehicles/mecha/equipment/tools/medical_tools.dm - SPLURT Station 13
+
+
+
+
+code/modules/vehicles/mecha/equipment/tools/medical_tools.dm
+
+
+
+
+
+
+
diff --git a/code/modules/vehicles/mecha/equipment/tools/other_tools.html b/code/modules/vehicles/mecha/equipment/tools/other_tools.html
new file mode 100644
index 0000000000000..6822ac306f526
--- /dev/null
+++ b/code/modules/vehicles/mecha/equipment/tools/other_tools.html
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+ code/modules/vehicles/mecha/equipment/tools/other_tools.dm - SPLURT Station 13
+
+
+
+
+code/modules/vehicles/mecha/equipment/tools/other_tools.dm
+
+
+
+
+
+
+
diff --git a/code/modules/vehicles/mecha/mecha_actions.html b/code/modules/vehicles/mecha/mecha_actions.html
new file mode 100644
index 0000000000000..eea6d52d9d797
--- /dev/null
+++ b/code/modules/vehicles/mecha/mecha_actions.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/vehicles/mecha/mecha_actions.dm - SPLURT Station 13
+
+
+
+
+code/modules/vehicles/mecha/mecha_actions.dm
+
+
+
+
+ /datum /action /vehicle/sealed/mecha/mech_defense_mode Specific Ability Actions
+ /datum /action /vehicle/sealed/mecha/swap_seat swap seats, for two person mecha
+
+
+
diff --git a/code/modules/vehicles/mecha/mecha_construction_paths.html b/code/modules/vehicles/mecha/mecha_construction_paths.html
new file mode 100644
index 0000000000000..d2b9750b07a26
--- /dev/null
+++ b/code/modules/vehicles/mecha/mecha_construction_paths.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/vehicles/mecha/mecha_construction_paths.dm - SPLURT Station 13
+
+
+
+
+code/modules/vehicles/mecha/mecha_construction_paths.dm
+
+
+
+
+
+
+
diff --git a/code/modules/vehicles/mecha/mecha_parts.html b/code/modules/vehicles/mecha/mecha_parts.html
new file mode 100644
index 0000000000000..bbd5924ace209
--- /dev/null
+++ b/code/modules/vehicles/mecha/mecha_parts.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ code/modules/vehicles/mecha/mecha_parts.dm - SPLURT Station 13
+
+
+
+
+code/modules/vehicles/mecha/mecha_parts.dm
+
+
+
+
+ /obj /item /mecha_parts Mecha Parts
+ /obj /item /mecha_parts/chassis/ripley Ripley
+ /obj /item /mecha_parts/chassis/odysseus Odysseus
+ /obj /item /mecha_parts/chassis/gygax Gygax
+ /obj /item /mecha_parts/chassis/medigax Medical Gygax
+ /obj /item /mecha_parts/chassis/durand Durand
+ /obj /item /mecha_parts/chassis/honker HONK
+ /obj /item /mecha_parts/chassis/phazon Phazon
+ /obj /item /circuitboard /mecha Circuitboards
+
+
+
diff --git a/code/modules/vehicles/mecha/mecha_wreckage.html b/code/modules/vehicles/mecha/mecha_wreckage.html
new file mode 100644
index 0000000000000..a53b0996c1ed2
--- /dev/null
+++ b/code/modules/vehicles/mecha/mecha_wreckage.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/modules/vehicles/mecha/mecha_wreckage.dm - SPLURT Station 13
+
+
+
+
+code/modules/vehicles/mecha/mecha_wreckage.dm
+
+
+
+
+ /obj /structure/mecha_wreckage Mecha wreckage
+
+
+
diff --git a/code/modules/vending/_vending.html b/code/modules/vending/_vending.html
new file mode 100644
index 0000000000000..6463a5c002e3b
--- /dev/null
+++ b/code/modules/vending/_vending.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/vending/_vending.dm - SPLURT Station 13
+
+
+
+
+code/modules/vending/_vending.dm
+
+
+
+
+
+
+
diff --git a/code/modules/vore/eating/belly_obj.html b/code/modules/vore/eating/belly_obj.html
new file mode 100644
index 0000000000000..63692b35365b1
--- /dev/null
+++ b/code/modules/vore/eating/belly_obj.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ code/modules/vore/eating/belly_obj.dm - SPLURT Station 13
+
+
+
+
+code/modules/vore/eating/belly_obj.dm
+
+
+
+
+ /obj/belly Non-object variables
+Object-holding variables
+
+
+
diff --git a/code/world.html b/code/world.html
new file mode 100644
index 0000000000000..84610df29c904
--- /dev/null
+++ b/code/world.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ code/world.dm - SPLURT Station 13
+
+
+
+
+code/world.dm
+
+
+
+
+ /world Two possibilities exist: either we are alone in the Universe or we are not. Both are equally terrifying. ~ Arthur C. Clarke
+
+
+
diff --git a/datum.html b/datum.html
new file mode 100644
index 0000000000000..cbbf99e898d2c
--- /dev/null
+++ b/datum.html
@@ -0,0 +1,447 @@
+
+
+
+
+
+
+ /datum - SPLURT Station 13
+
+
+
+
+datum
+
+
+
+
+
+The absolute base class for everything
+A datum instantiated has no physical world prescence, use an atom if you want something
+that actually lives in the world
+Be very mindful about adding variables to this class, they are inherited by every single
+thing in the entire game, and so you can easily cause memory usage to rise a lot with careless
+use of variables at this level
Vars
+ active_timers Active timers with this datum as the target
+ comp_lookup Any datum registered to receive signals from this datum is in this list
+ datum_components Components attached to this datum
+ datum_flags Datum level flags
+ gc_destroyed Tick count time when this object was destroyed.
+ signal_enabled Is this datum capable of sending signals?
+ signal_procs Lazy associated list in the structure of signals:proctype
that are run when the datum receives that signal
+ status_traits Status traits attached to this datum
+ tgui_shared_states global
+ weak_reference A weak reference to another datum Procs
+ Destroy Default implementation of clean-up code.
+ GetComponent Return any component assigned to this datum of the given type
+This will throw an error if it's possible to have more than one component of that type on the parent
+ GetComponents Get all components of a given type that are attached to this datum
+ GetExactComponent Return any component assigned to this datum of the exact given type
+This will throw an error if it's possible to have more than one component of that type on the parent
+ LoadComponent Get existing component of type, or create it and return a reference to it
+ RegisterSignal Register to listen for a signal from the passed in target
+ TakeComponent Transfer this component to another parent
+ Topic Called when a href for this datum is clicked
+ TransferComponents Transfer all components to target
+ UnregisterSignal Stop listening to a given signal from target
+ _AddComponent Creates an instance of new_type
in the datum and attaches to it as parent
+Sends the COMSIG_COMPONENT_ADDED
signal to the datum
+Returns the component that was created. Or the old component in a dupe situation where COMPONENT_DUPE_UNIQUE
was set
+If this tries to add an component to an incompatible type, the component will be deleted and the result will be null
. This is very unperformant, try not to do it
+Properly handles duplicate situations based on the dupe_mode
var
+ _AddElement Finds the singleton for the element type given and attaches it to src
+ _RemoveElement Finds the singleton for the element type given and detaches it from src
+You only need additional arguments beyond the type if you're using ELEMENT_BESPOKE
+ _SendSignal Internal proc to handle most all of the signaling procedure
+Will runtime if used on datums with an empty component list
+Use the SEND_SIGNAL
define instead
+ deserialize_json Deserializes from JSON. Does not parse type.
+ deserialize_list Accepts a LIST from deserialize_datum. Should return src or another datum.
+ process This proc is called on a datum on every "cycle" if it is being processed by a subsystem. The time between each cycle is determined by the subsystem's "wait" setting.
+You can start and stop processing a datum using the START_PROCESSING and STOP_PROCESSING defines.
+ serialize_json Serializes into JSON. Does not encode type.
+ serialize_list Return a LIST for serialize_datum to encode! Not the actual json!
+ ui_act public
+ ui_assets public
+ ui_close public
+ ui_data public
+ ui_fallback public
+ ui_host private
+ ui_interact public
+ ui_state private
+ ui_static_data public
+ ui_status public
+ update_static_data public
+ Var Details active_timers
+
+
+
+
+
+ Active timers with this datum as the target
comp_lookup
+
+
+
+
+
+ Any datum registered to receive signals from this datum is in this list
+Lazy associated list in the structure of signal:registree/list of registrees
datum_components
+
+
+
+
+
+ Components attached to this datum
+Lazy associated list in the structure of type:component/list of components
datum_flags
+
+
+
+
+
+ Datum level flags
gc_destroyed
+
+
+
+
+
+ Tick count time when this object was destroyed.
+If this is non zero then the object has been garbage collected and is awaiting either
+a hard del by the GC subsystme, or to be autocollected (if it has no references)
signal_enabled
+
+
+
+
+
+ Is this datum capable of sending signals?
+Set to true when a signal has been registered
signal_procs
+ – /list/list/datum/callback
+
+
+
+
+ Lazy associated list in the structure of signals:proctype
that are run when the datum receives that signal
status_traits
+
+
+
+
+
+ Status traits attached to this datum
tgui_shared_states
+
+
+
+
+
+ global
+Associative list of JSON-encoded shared states that were set by
+tgui clients.
weak_reference
+
+
+
+
+
+ A weak reference to another datum
Proc Details Destroy(force, ...)
+
+
+
+
+
+ Default implementation of clean-up code.
+This should be overridden to remove all references pointing to the object being destroyed, if
+you do override it, make sure to call the parent and return it's return value by default
+Return an appropriate QDEL_HINT to modify handling of your deletion;
+in most cases this is QDEL_HINT_QUEUE .
+The base case is responsible for doing the following
+
+Erasing timers pointing to this datum
+Erasing compenents on this datum
+Notifying datums listening to signals from this datum that we are going away
+
+Returns QDEL_HINT_QUEUE
GetComponent
+
+ Return any component assigned to this datum of the given type
+This will throw an error if it's possible to have more than one component of that type on the parent
+Arguments:
+
+datum/component/c_type The typepath of the component you want to get a reference to
+ GetComponents(c_type)
+
+
+
+
+
+ Get all components of a given type that are attached to this datum
+Arguments:
+
+c_type The component type path
+ GetExactComponent
+
+ Return any component assigned to this datum of the exact given type
+This will throw an error if it's possible to have more than one component of that type on the parent
+Arguments:
+
+datum/component/c_type The typepath of the component you want to get a reference to
+ LoadComponent(component_type, ...)
+
+
+
+
+
+ Get existing component of type, or create it and return a reference to it
+Use this if the item needs to exist at the time of this call, but may not have been created before now
+Arguments:
+
+component_type The typepath of the component to create or return
+... additional arguments to be passed when creating the component if it does not exist
+ RegisterSignal(/datum /target, sig_type_or_types, proctype, override)
+
+
+
+
+
+ Register to listen for a signal from the passed in target
+This sets up a listening relationship such that when the target object emits a signal
+the source datum this proc is called upon, will recieve a callback to the given proctype
+Return values from procs registered must be a bitfield
+Arguments:
+
+datum/target The target to listen for signals from
+sig_type_or_types Either a string signal name, or a list of signal names (strings)
+proctype The proc to call back when the signal is emitted
+override If a previous registration exists you must explicitly set this
+ TakeComponent
+
+ Transfer this component to another parent
+Component is taken from source datum
+Arguments:
+
+datum/component/target Target datum to transfer to
+ Topic(href, /list/href_list)
+
+
+
+
+
+ Called when a href for this datum is clicked
+Sends a COMSIG_TOPIC signal
TransferComponents
+
+ Transfer all components to target
+All components from source datum are taken
+Arguments:
+
+/datum/target the target to move the components to
+ UnregisterSignal(/datum /target, sig_type_or_types)
+
+
+
+
+
+ Stop listening to a given signal from target
+Breaks the relationship between target and source datum, removing the callback when the signal fires
+Doesn't care if a registration exists or not
+Arguments:
+
+datum/target Datum to stop listening to signals from
+sig_typeor_types Signal string key or list of signal keys to stop listening to specifically
+ _AddComponent(/list/raw_args)
+
+
+
+
+
+ Creates an instance of new_type
in the datum and attaches to it as parent
+Sends the COMSIG_COMPONENT_ADDED
signal to the datum
+Returns the component that was created. Or the old component in a dupe situation where COMPONENT_DUPE_UNIQUE
was set
+If this tries to add an component to an incompatible type, the component will be deleted and the result will be null
. This is very unperformant, try not to do it
+Properly handles duplicate situations based on the dupe_mode
var
_AddElement(/list/arguments)
+
+
+
+
+
+ Finds the singleton for the element type given and attaches it to src
_RemoveElement(/list/arguments)
+
+
+
+
+
+ Finds the singleton for the element type given and detaches it from src
+You only need additional arguments beyond the type if you're using ELEMENT_BESPOKE
_SendSignal(sigtype, /list/arguments)
+
+
+
+
+
+ Internal proc to handle most all of the signaling procedure
+Will runtime if used on datums with an empty component list
+Use the SEND_SIGNAL
define instead
deserialize_json(/list/input, /list/options)
+
+
+
+
+
+ Deserializes from JSON. Does not parse type.
deserialize_list(json, /list/options)
+
+
+
+
+
+ Accepts a LIST from deserialize_datum. Should return src or another datum.
process(delta_time)
+
+
+
+
+
+ This proc is called on a datum on every "cycle" if it is being processed by a subsystem. The time between each cycle is determined by the subsystem's "wait" setting.
+You can start and stop processing a datum using the START_PROCESSING and STOP_PROCESSING defines.
+Since the wait setting of a subsystem can be changed at any time, it is important that any rate-of-change that you implement in this proc is multiplied by the delta_time that is sent as a parameter,
+Additionally, any "prob" you use in this proc should instead use the DT_PROB define to make sure that the final probability per second stays the same even if the subsystem's wait is altered.
+Examples where this must be considered:
+
+Implementing a cooldown timer, use mytimer -= delta_time
, not mytimer -= 1
. This way, mytimer
will always have the unit of seconds
+Damaging a mob, do L.adjustFireLoss(20 * delta_time)
, not L.adjustFireLoss(20)
. This way, the damage per second stays constant even if the wait of the subsystem is changed
+Probability of something happening, do if(DT_PROB(25, delta_time))
, not if(prob(25))
. This way, if the subsystem wait is e.g. lowered, there won't be a higher chance of this event happening per second
+
+If you override this do not call parent, as it will return PROCESS_KILL. This is done to prevent objects that dont override process() from staying in the processing list
serialize_json(/list/options)
+
+
+
+
+
+ Serializes into JSON. Does not encode type.
serialize_list(/list/options)
+
+
+
+
+
+ Return a LIST for serialize_datum to encode! Not the actual json!
ui_act
+
+ public
+Called on a UI when the UI receieves a href.
+Think of this as Topic().
+required action string The action/button that has been invoked by the user.
+required params list A list of parameters attached to the button.
+return bool If the user's input has been handled and the UI should update.
ui_assets
+
+ public
+Called on an object when a tgui object is being created, allowing you to
+push various assets to tgui, for examples spritesheets.
+return list List of asset datums or file paths.
ui_close
+
+ public
+Called on a UI's object when the UI is closed, not to be confused with
+client/verb/uiclose(), which closes the ui window
ui_data
+
+ public
+Data to be sent to the UI.
+This must be implemented for a UI to work.
+required user mob The mob interacting with the UI.
+return list Data to be sent to the UI.
ui_fallback(/list/payload)
+
+
+
+
+
+ public
+Called on a UI when the UI crashed.
+required payload list A list of the payload supposed to be set on the regular UI.
ui_host
+
+ private
+The UI's host object (usually src_object).
+This allows modules/datums to have the UI attached to them,
+and be a part of another object.
ui_interact
+
+ public
+Used to open and update UIs.
+If this proc is not implemented properly, the UI will not update correctly.
+required user mob The mob who opened/is using the UI.
+optional ui datum/tgui The UI to be updated, if it exists.
ui_state
+
+ private
+The UI's state controller to be used for created uis
+This is a proc over a var for memory reasons
ui_static_data
+
+ public
+Static Data to be sent to the UI.
+Static data differs from normal data in that it's large data that should be
+sent infrequently. This is implemented optionally for heavy uis that would
+be sending a lot of redundant data frequently. Gets squished into one
+object on the frontend side, but the static part is cached.
+required user mob The mob interacting with the UI.
+return list Statuic Data to be sent to the UI.
ui_status
+
+ public
+Checks the UI state for a mob.
+required user mob The mob who opened/is using the UI.
+required state datum/ui_state The state to check.
+return UI_state The state of the UI.
update_static_data
+
+ public
+Forces an update on static data. Should be done manually whenever something
+happens to change static data.
+required user the mob currently interacting with the ui
+optional ui ui to be updated
+
+
+
diff --git a/datum/SDQL2_query.html b/datum/SDQL2_query.html
new file mode 100644
index 0000000000000..83c6a1621637e
--- /dev/null
+++ b/datum/SDQL2_query.html
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+ /datum/SDQL2_query - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ SDQL_print Recursively prints out an object to text list for SDQL2 output to admins, with VV links and all.
+Recursion limit: 50
+Limit imposed by callers should be around 10000 objects
+Seriously, if you hit those limits, you're doing something wrong.
Proc Details SDQL_print(/datum /object, /list/text_list, print_nulls, recursion, linebreak)
+
+
+
+
+
+ Recursively prints out an object to text list for SDQL2 output to admins, with VV links and all.
+Recursion limit: 50
+Limit imposed by callers should be around 10000 objects
+Seriously, if you hit those limits, you're doing something wrong.
+
+
+
diff --git a/datum/abductor_gear.html b/datum/abductor_gear.html
new file mode 100644
index 0000000000000..bd3a50bd89542
--- /dev/null
+++ b/datum/abductor_gear.html
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+ /datum/abductor_gear - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details build_path
+
+
+
+
+
+ Build path of the gear itself
category
+
+
+
+
+
+ Category of the gear
cost
+
+
+
+
+
+ Credit cost of the gear
description
+
+
+
+
+
+ Description of the gear
id
+
+
+
+
+
+ Unique ID of the gear
name
+
+
+
+
+
+ Name of the gear
+
+
+
diff --git a/datum/achievement_data.html b/datum/achievement_data.html
new file mode 100644
index 0000000000000..39e469ee24919
--- /dev/null
+++ b/datum/achievement_data.html
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+ /datum/achievement_data - SPLURT Station 13
+
+
+
+
+
+
+Datum that handles
Vars
+ data Up to date list of all achievements and their info.
+ initialized Have we done our set-up yet?
+ original_cached_data Original status of achievement.
+ owner_ckey Ckey of this achievement data's owner Procs
+ get_achievement_status Getter for the status/score of an achievement
+ get_changed_data Gets list of changed rows in MassInsert format
+ get_data Updates local cache with db data for the given achievement type if it wasn't loaded yet.
+ reset Resets an achievement to default values.
+ unlock Unlocks an achievement of a specific type. achievement type is a typepath to the award, user is the mob getting the award, and value is an optional value to be used for defining a score to add to the leaderboard
+ Var Details data
+
+
+
+
+
+ Up to date list of all achievements and their info.
initialized
+
+
+
+
+
+ Have we done our set-up yet?
original_cached_data
+
+
+
+
+
+ Original status of achievement.
owner_ckey
+
+
+
+
+
+ Ckey of this achievement data's owner
Proc Details get_achievement_status(achievement_type)
+
+
+
+
+
+ Getter for the status/score of an achievement
get_changed_data()
+
+
+
+
+
+ Gets list of changed rows in MassInsert format
get_data(achievement_type)
+
+
+
+
+
+ Updates local cache with db data for the given achievement type if it wasn't loaded yet.
reset(achievement_type)
+
+
+
+
+
+ Resets an achievement to default values.
unlock(achievement_type, /mob /user, value)
+
+
+
+
+
+ Unlocks an achievement of a specific type. achievement type is a typepath to the award, user is the mob getting the award, and value is an optional value to be used for defining a score to add to the leaderboard
+
+
+
diff --git a/datum/action.html b/datum/action.html
new file mode 100644
index 0000000000000..0f7fd88ea225c
--- /dev/null
+++ b/datum/action.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ /datum/action - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ default_button_position Where any buttons we create should be by default. Accepts screen_loc and location defines
+ viewers List of all mobs that are viewing our action button -> A unique movable for them to view. Procs
+ update_status_on_signal A general use signal proc that reacts to an event and updates JUST our button's status
+ Var Details
+ Where any buttons we create should be by default. Accepts screen_loc and location defines
viewers
+
+
+
+
+
+ List of all mobs that are viewing our action button -> A unique movable for them to view.
Proc Details update_status_on_signal(/datum /source, new_stat, old_stat)
+
+
+
+
+
+ A general use signal proc that reacts to an event and updates JUST our button's status
+
+
+
diff --git a/datum/action/cooldown.html b/datum/action/cooldown.html
new file mode 100644
index 0000000000000..6678b7d54ad97
--- /dev/null
+++ b/datum/action/cooldown.html
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+ /datum/action/cooldown - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ Activate To be implemented by subtypes
+ InterceptClickOn Intercepts client owner clicks to activate the ability
+ PreActivate For signal calling
+ StartCooldown Starts a cooldown time to be shared with similar abilities, will use default cooldown time if an override is not specified
+ StartCooldownSelf Starts a cooldown time for this ability only, will use default cooldown time if an override is not specified
Proc Details Activate
+
+ To be implemented by subtypes
InterceptClickOn
+
+ Intercepts client owner clicks to activate the ability
PreActivate
+
+ For signal calling
StartCooldown(override_cooldown_time)
+
+
+
+
+
+ Starts a cooldown time to be shared with similar abilities, will use default cooldown time if an override is not specified
StartCooldownSelf(override_cooldown_time)
+
+
+
+
+
+ Starts a cooldown time for this ability only, will use default cooldown time if an override is not specified
+
+
+
diff --git a/datum/action/cooldown/bloodsucker.html b/datum/action/cooldown/bloodsucker.html
new file mode 100644
index 0000000000000..ce81a760236ea
--- /dev/null
+++ b/datum/action/cooldown/bloodsucker.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ /datum/action/cooldown/bloodsucker - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details background_icon_state_off
+
+
+
+
+
+ Background icon when the Power is NOT active.
background_icon_state_on
+
+
+
+
+
+ Background icon when the Power is active.
cooldown_time
+
+
+
+
+
+ Cooldown you'll have to wait between each use, decreases depending on level.
+
+
+
diff --git a/datum/action/cooldown/bloodsucker/targeted/haste.html b/datum/action/cooldown/bloodsucker/targeted/haste.html
new file mode 100644
index 0000000000000..d8b79c9d03777
--- /dev/null
+++ b/datum/action/cooldown/bloodsucker/targeted/haste.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /datum/action/cooldown/bloodsucker/targeted/haste - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ speed_override If set, uses this speed in deciseconds instead of world.tick_lag
+ Var Details speed_override
+
+
+
+
+
+ If set, uses this speed in deciseconds instead of world.tick_lag
+
+
+
diff --git a/datum/action/cooldown/riot.html b/datum/action/cooldown/riot.html
new file mode 100644
index 0000000000000..a2c54b99a75db
--- /dev/null
+++ b/datum/action/cooldown/riot.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /datum/action/cooldown/riot - SPLURT Station 13
+
+
+
+
+
+
+This action checks all nearby mice, and converts them into hostile rats. If no mice are nearby, creates a new one.
Procs
+ Activate Checks to see if there are any nearby mice. Does not count Rats.
Proc Details Activate()
+
+
+
+
+
+ Checks to see if there are any nearby mice. Does not count Rats.
+
+
+
diff --git a/datum/action/cooldown/spawn_induction_package.html b/datum/action/cooldown/spawn_induction_package.html
new file mode 100644
index 0000000000000..52fc61c74ad7d
--- /dev/null
+++ b/datum/action/cooldown/spawn_induction_package.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /datum/action/cooldown/spawn_induction_package - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ my_gang_datum The family antagonist datum of the "owner" of this action.
+ Var Details
+ The family antagonist datum of the "owner" of this action.
+
+
+
diff --git a/datum/action/innate/ability/humanoid_customization.html b/datum/action/innate/ability/humanoid_customization.html
new file mode 100644
index 0000000000000..03dff873a15bf
--- /dev/null
+++ b/datum/action/innate/ability/humanoid_customization.html
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+ /datum/action/innate/ability/humanoid_customization - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ change_form // NOTICE: This currently doens't support skin tone - if anyone wants to add this to non slimes, it's up to YOU to do this.
+/ (someone should also add genital color switching, more mutant color selection)
+maybe just make this entire thing tgui based. maybe.
Proc Details
+ // NOTICE: This currently doens't support skin tone - if anyone wants to add this to non slimes, it's up to YOU to do this.
+/ (someone should also add genital color switching, more mutant color selection)
+maybe just make this entire thing tgui based. maybe.
+
+
+
diff --git a/datum/action/innate/cult/blood_spell.html b/datum/action/innate/cult/blood_spell.html
new file mode 100644
index 0000000000000..9a7771920fa26
--- /dev/null
+++ b/datum/action/innate/cult/blood_spell.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /datum/action/innate/cult/blood_spell - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ positioned Have we already been positioned into our starting location?
+ Var Details positioned
+
+
+
+
+
+ Have we already been positioned into our starting location?
+
+
+
diff --git a/datum/action/innate/rune_shatter.html b/datum/action/innate/rune_shatter.html
new file mode 100644
index 0000000000000..0b2578381d828
--- /dev/null
+++ b/datum/action/innate/rune_shatter.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /datum/action/innate/rune_shatter - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ sword Reference to the rune knife it is inside of
+ Var Details
+ Reference to the rune knife it is inside of
+
+
+
diff --git a/datum/action/item_action/mod.html b/datum/action/item_action/mod.html
new file mode 100644
index 0000000000000..df98c1c4756f6
--- /dev/null
+++ b/datum/action/item_action/mod.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /datum/action/item_action/mod - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ ai_action Whether this action is intended for the AI. Stuff breaks a lot if this is done differently.
+ Var Details ai_action
+
+
+
+
+
+ Whether this action is intended for the AI. Stuff breaks a lot if this is done differently.
+
+
+
diff --git a/datum/action/item_action/stickmen.html b/datum/action/item_action/stickmen.html
new file mode 100644
index 0000000000000..a296ce01f680f
--- /dev/null
+++ b/datum/action/item_action/stickmen.html
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+ /datum/action/item_action/stickmen - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ rally Rallies your army of stickmen to whichever target the user is pointing.
+Should the user be on harm intent and the target be a living mob that's not the user or a fellow stickman,
+said target will be added to a list of foes which the stickmen will gladly dispose regardless of faction.
+This is designed so stickmen will move toward whatever you point at even when you don't want to, that's the downside.
Proc Details rally
+
+ Rallies your army of stickmen to whichever target the user is pointing.
+Should the user be on harm intent and the target be a living mob that's not the user or a fellow stickman,
+said target will be added to a list of foes which the stickmen will gladly dispose regardless of faction.
+This is designed so stickmen will move toward whatever you point at even when you don't want to, that's the downside.
+
+
+
diff --git a/datum/action/vehicle/ridden/scooter/skateboard/ollie.html b/datum/action/vehicle/ridden/scooter/skateboard/ollie.html
new file mode 100644
index 0000000000000..545bf5605402c
--- /dev/null
+++ b/datum/action/vehicle/ridden/scooter/skateboard/ollie.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /datum/action/vehicle/ridden/scooter/skateboard/ollie - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details next_ollie
+
+
+
+
+
+ Cooldown to next jump
+
+
+
diff --git a/datum/action/vehicle/sealed/mecha/ivanov_strike.html b/datum/action/vehicle/sealed/mecha/ivanov_strike.html
new file mode 100644
index 0000000000000..a8bc1f7278d71
--- /dev/null
+++ b/datum/action/vehicle/sealed/mecha/ivanov_strike.html
@@ -0,0 +1,96 @@
+
+
+
+
+
+
+ /datum/action/vehicle/sealed/mecha/ivanov_strike - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details rockets_left
+
+
+
+
+
+ how many rockets can we send with ivanov strike
strike_cooldown_time
+
+
+
+
+
+ cooldown time between strike uses
Proc Details drop_missile(/turf /target_turf)
+
+
+
+
+
+ drop_missile
+Called via intercepted clicks when the missile ability is active
+Spawns a droppod and starts the cooldown of the missile strike ability
+arguments:
+
+target_turf: turf of the atom that was clicked on
+ end_missile_targeting()
+
+
+
+
+
+ end_missile_targeting
+Called by the ivanov strike datum action or other actions that would end targetting
+Unhooks signals into clicking to call drop_missile plus other flavor like the overlay
on_equipment_click
+
+ signal called from clicking with equipment
on_melee_click
+
+ signal called from clicking with no equipment
+ reset_button_icon
+called after an addtimer when the cooldown is finished with the ivanov strike, resets the icon
start_missile_targeting()
+
+
+
+
+
+ start_missile_targeting
+Called by the ivanov strike datum action, hooks signals into clicking to call drop_missile
+Plus other flavor like the overlay
+
+
+
diff --git a/datum/action/vehicle/sealed/mecha/skyfall.html b/datum/action/vehicle/sealed/mecha/skyfall.html
new file mode 100644
index 0000000000000..5fe7472dbe5aa
--- /dev/null
+++ b/datum/action/vehicle/sealed/mecha/skyfall.html
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+ /datum/action/vehicle/sealed/mecha/skyfall - SPLURT Station 13
+
+
+
+
+
+
+Savannah Skyfall
+ Var Details skyfall_charge_level
+
+
+
+
+
+ skyfall builds up in charges every 2 seconds, when it reaches 5 charges the ability actually starts
skyfall_cooldown_time
+
+
+
+
+
+ cooldown time between skyfall uses
Proc Details abort_skyfall()
+
+
+
+
+
+ abort_skyfall
+Called by skyfall_charge_loop if the charging is interrupted.
+Applies cooldown and resets charge level
begin_landing()
+
+
+
+
+
+ begin_landing
+Called by skyfall_charge_loop after some time if it reaches full charge level.
+it's just the animations of the mecha coming down + another timer for the final landing effect
land()
+
+
+
+
+
+ land
+Called by skyfall_charge_loop after some time if it reaches full charge level.
+it's just the animations of the mecha coming down + another timer for the final landing effect
+ reset_button_icon
+called after an addtimer when the cooldown is finished with the skyfall, resets the icon
skyfall_charge_loop()
+
+
+
+
+
+ skyfall_charge_loop
+The actual skyfall loop itself. Repeatedly calls itself after a do_after, so any interruptions will call abort_skyfall and end the loop
+the other way the loop ends is if charge level (var it's ticking up) gets to SKYFALL_CHARGELEVEL_LAUNCH, in which case it ends the loop and does the ability.
+
+
+
diff --git a/datum/action_group.html b/datum/action_group.html
new file mode 100644
index 0000000000000..1b8e5bb453b16
--- /dev/null
+++ b/datum/action_group.html
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+ /datum/action_group - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ actions The actions we're managing
+ column_max Max amount of buttons we can have per row
+Indexes at 1
+ landing Our landing screen object
+ location The screen location we go by
+ max_rows How many rows of actions we can have at max before we just stop hiding
+Indexes at 1
+ north_offset The initial vertical offset of our action buttons
+ owner The hud we're owned by
+ pixel_north_offset The pixel vertical offset of our action buttons
+ row_offset How far "ahead" of the first row we start. Lets us "scroll" our rows
+Indexes at 1 Procs
+ ButtonNumberToScreenCoords Accepts a number represeting our position in the group, indexes at 0 to make the math nicer
+ clear_landing Clears any landing objects we may currently have
+ generate_landing Generates a landing object that can be dropped on to join this group
+ size Returns the amount of objects we're storing at the moment
+ Var Details actions
+ – /list/atom/movable/screen/movable/action_button
+
+
+
+
+ The actions we're managing
column_max
+
+
+
+
+
+ Max amount of buttons we can have per row
+Indexes at 1
+ Our landing screen object
location
+
+
+
+
+
+ The screen location we go by
max_rows
+
+
+
+
+
+ How many rows of actions we can have at max before we just stop hiding
+Indexes at 1
north_offset
+
+
+
+
+
+ The initial vertical offset of our action buttons
owner
+
+
+
+
+
+ The hud we're owned by
pixel_north_offset
+
+
+
+
+
+ The pixel vertical offset of our action buttons
row_offset
+
+
+
+
+
+ How far "ahead" of the first row we start. Lets us "scroll" our rows
+Indexes at 1
Proc Details
+ Accepts a number represeting our position in the group, indexes at 0 to make the math nicer
clear_landing()
+
+
+
+
+
+ Clears any landing objects we may currently have
generate_landing()
+
+
+
+
+
+ Generates a landing object that can be dropped on to join this group
size()
+
+
+
+
+
+ Returns the amount of objects we're storing at the moment
+
+
+
diff --git a/datum/actionspeed_modifier.html b/datum/actionspeed_modifier.html
new file mode 100644
index 0000000000000..76816464db9a3
--- /dev/null
+++ b/datum/actionspeed_modifier.html
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+ /datum/actionspeed_modifier - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ conflicts_with Other modification datums this conflicts with.
+ id Unique ID. You can never have different modifications with the same ID. By default, this SHOULD NOT be set. Only set it for cases where you're dynamically making modifiers/need to have two types overwrite each other. If unset, uses path (converted to text) as ID.
+ multiplicative_slowdown Multiplicative slowdown
+ priority Higher ones override lower priorities. This is NOT used for ID, ID must be unique, if it isn't unique the newer one overwrites automatically if overriding.
+ variable Whether or not this is a variable modifier. Variable modifiers can NOT be ever auto-cached. ONLY CHECKED VIA INITIAL(), EFFECTIVELY READ ONLY (and for very good reason)
+ Var Details conflicts_with
+
+
+
+
+
+ Other modification datums this conflicts with.
id
+
+
+
+
+
+ Unique ID. You can never have different modifications with the same ID. By default, this SHOULD NOT be set. Only set it for cases where you're dynamically making modifiers/need to have two types overwrite each other. If unset, uses path (converted to text) as ID.
multiplicative_slowdown
+
+
+
+
+
+ Multiplicative slowdown
priority
+
+
+
+
+
+ Higher ones override lower priorities. This is NOT used for ID, ID must be unique, if it isn't unique the newer one overwrites automatically if overriding.
variable
+
+
+
+
+
+ Whether or not this is a variable modifier. Variable modifiers can NOT be ever auto-cached. ONLY CHECKED VIA INITIAL(), EFFECTIVELY READ ONLY (and for very good reason)
+
+
+
diff --git a/datum/admin_help.html b/datum/admin_help.html
new file mode 100644
index 0000000000000..05e049a147039
--- /dev/null
+++ b/datum/admin_help.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /datum/admin_help - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ answered did we send "answered" to irc yet
+ Var Details answered
+
+
+
+
+
+ did we send "answered" to irc yet
+
+
+
diff --git a/datum/admins.html b/datum/admins.html
new file mode 100644
index 0000000000000..904a58e20aa30
--- /dev/null
+++ b/datum/admins.html
@@ -0,0 +1,148 @@
+
+
+
+
+
+
+ /datum/admins - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details tagged_datums
+
+
+
+
+
+ A lazylist of tagged datums, for quick reference with the View Tags verb
Proc Details HandleCMode()
+
+
+
+
+
+ new ban stuff
+new ban stuff
+WARNING! **
+The jobban stuff looks mangled and disgusting
+But it looks beautiful in-game
+-Nodrak
+**WARNING!
add_tagged_datum
+
+ Inserts the target_datum into /datum/admins/var/tagged_datums , for later reference.
+Arguments:
+
+target_datum - The datum you want to create a tag for
+
+ Clears tagged datums
+ Display all of the tagged datums
forceEvent()
+
+
+
+
+
+ Opens up the Force Event Panel
handle_tagged_del
+
+ Get ahead of the curve with deleting
makeAliens()
+
+
+
+
+
+ datum/admins/proc/makeAbductorTeam()
modify_traits
+
+ Allow admin to add or remove traits of datum
remove_tagged_datum(/datum /target_datum, silent)
+
+
+
+
+
+ Attempts to remove the specified datum from /datum/admins/var/tagged_datums if it exists
+Arguments:
+
+target_datum - The datum you want to remove from the tagged_datums list
+silent - If TRUE, won't print messages to the owner's chat
+ restart()
+
+
+
+
+
+ admins2.dm merge
show_player_panel
+
+ Panels
spawn_atom(object)
+
+
+
+
+
+ ADMIN HELPER PROCS
station_traits_panel()
+
+
+
+
+
+ Opens the station traits admin panel
+
+
+
diff --git a/datum/ai_laws.html b/datum/ai_laws.html
new file mode 100644
index 0000000000000..eb0cbc6814c03
--- /dev/null
+++ b/datum/ai_laws.html
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+ /datum/ai_laws - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ get_law_list Generates a list of all laws on this datum, including rendered HTML tags if required
Proc Details get_law_list(include_zeroth, show_numbers, render_html)
+
+
+
+
+
+ Generates a list of all laws on this datum, including rendered HTML tags if required
+Arguments:
+
+include_zeroth - Operator that controls if law 0 or law 666 is returned in the set
+show_numbers - Operator that controls if law numbers are prepended to the returned laws
+render_html - Operator controlling if HTML tags are rendered on the returned laws
+
+
+
+
diff --git a/datum/antagonist.html b/datum/antagonist.html
new file mode 100644
index 0000000000000..380b81901f36d
--- /dev/null
+++ b/datum/antagonist.html
@@ -0,0 +1,445 @@
+
+
+
+
+
+
+ /datum/antagonist - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ antag_hud_name Name of the antag hud we provide to this mob.
+ antag_hud_type What is the configuration of this antagonist's hud icon, such as it's screen position and style, so thatit doesn't break other in-game hud icons.
+ antag_memory String dialogue that is added to the player's in-round notes and memories regarding specifics of that antagonist, eg. the nuke code for nuke ops, or your unlock code for traitors.
+ antag_moodlet typepath of moodlet that the mob will gain when granted this antagonist type.
+ antagpanel_category Antagpanel will display these together, REQUIRED
+ blacklisted_quirks Quirks that will be removed upon gaining this antag. Pacifist and mute are default.
+ can_coexist_with_others Whether or not the person will be able to have more than one datum
+ hijack_speed If above 0, this is the multiplier for the speed at which we hijack the shuttle. Do not directly read, use hijack_speed().
+ info_button button to access antag interface
+ job_rank The define string we use to identify the role for bans/player polls to spawn a random new one in.
+ name Public name for this antagonist. Appears for player prompts and round-end reports.
+ objectives List of the objective datums that this role currently has, completing all objectives at round-end will cause this antagonist to greentext.
+ owner Mind that owns this datum
+ prevent_roundtype_conversion If false, the roundtype will still convert with this antag active
+ preview_outfit The typepath for the outfit to show in the preview for the preferences menu.
+ replace_banned Should replace jobbanned player with ghosts if granted.
+ requested_objective_changes Lazy list for antagonists to request the admins objectives.
+ roundend_category Section of roundend report, datums with same category will be displayed together, also default header for the section
+ show_in_antagpanel This will hide adding this antag type in antag panel, use only for internal subtypes that shouldn't be added directly but still show if possessed by mind
+ show_in_roundend Set to false to hide the antagonists from roundend report
+ show_name_in_check_antagonists Will append antagonist name in admin listings - use for categories that share more than one antag type
+ show_to_ghosts Should this antagonist be shown as antag to ghosts? Shouldn't be used for stealthy antagonists like traitors
+ silent Silent will prevent the gain/lose texts to show
+ soft_antag If set to true, the antag will not be added to the living antag list.
+ suicide_cry The battlecry this antagonist shouts when suiciding with C4/X4.
+ threat Amount of threat this antag poses, for dynamic mode
+ typecache_datum_blacklist List of datums this type can't coexist with
+ ui_name name of the UI that will try to open, right now having nothing means this won't exist but in the future all should. Procs
+ antag_panel_data Additional data to display in the antagonist panel section.
+For example, nuke disk code, genome count, etc
+ clean_request_from_del_objective Clears change requests from deleted objectives to avoid broken references.
+ clear_antag_moodies Proc that removes this antagonist's ascribed moodlet from the player.
+ farewell Proc that sends fluff or instructional messages to the player when they lose this antag datum.
+Use this proc for playing sounds, sending alerts, or otherwise informing the player that they're no longer a specific antagonist type.
+ finish_preview_icon Given an icon, will crop it to be consistent of those in the preferences menu.
+Not necessary, and in fact will look bad if it's anything other than a human.
+ get_admin_commands List of ["Command"] = CALLBACK(), user will be appeneded to callback arguments on execution
+ get_objectives generic helper to send objectives as data through tgui. supports smart objectives too!
+ get_preview_icon Returns the icon to show on the preferences menu.
+ get_team Proc that will return the team this antagonist belongs to, when called. Helpful with antagonists that may belong to multiple potential teams in a single round, like families.
+ give_antag_moodies Proc that assigns this antagonist's ascribed moodlet to the player.
+ greet Proc that sends fluff or instructional messages to the player when they are given this antag datum.
+Use this proc for playing sounds, sending alerts, or helping to setup non-gameplay influencing aspects of the antagonist type.
+ handle_clown_mutation Handles adding and removing the clumsy mutation from clown antags. Gets called in apply/remove_innate_effects
+ hijack_speed Gets how fast we can hijack the shuttle, return FALSE for can not hijack.
+Defaults to hijack_speed var, override for custom stuff like buffing hijack speed for hijack objectives or something.
+ is_banned Proc that checks the sent mob aganst the banlistfor this antagonist.
+Returns FALSE if no mob is sent, or the mob is not found to be banned.
+ on_body_transfer Called by the transfer_to() mind proc after the mind (mind.current and new_character.mind) has moved but before the player (key and client) is transfered.
+ on_gain Called by the add_antag_datum() mind proc after the instanced datum is added to the mind's antag_datums list.
+ on_mindshield This is called when the antagonist is successfully mindshielded.
+ on_removal Called by the remove_antag_datum() and remove_all_antag_datums() mind procs for the antag datum to handle its own removal and deletion.
+ pre_mindshield This is called when the antagonist is being mindshielded.
+ remove_blacklisted_quirks Removes invalid quirks.
+ render_preview_outfit Creates an icon from the preview outfit.
+Custom implementors of get_preview_icon
should use this, as the
+result of get_preview_icon
is expected to be the completed version.
+ replace_banned_player Proc that replaces a player who cannot play a specific antagonist due to being banned via a poll, and alerts the player of their being on the banlist.
+ roundend_report Proc that sends string information for the end-round report window to the server.
+This runs on every instance of every antagonist that exists at the end of the round.
+This is the body of the message, sandwiched between roundend_report_header and roundend_report_footer.
+ roundend_report_footer Proc that sends string data for the round-end report.
+Displayed after roundend_report and roundend_report_footer.
+Appears at the end of the roundend_catagory section.
+ roundend_report_header Proc that sends string data for the round-end report.
+Displayed before roundend_report and roundend_report_footer.
+Appears at start of roundend_catagory section.
+ threat Gets our threat level. Override this proc for custom functionality/dynamic threat level.
+ ui_interact ANTAGONIST UI STUFF
+ Var Details antag_hud_name
+
+
+
+
+
+ Name of the antag hud we provide to this mob.
antag_hud_type
+
+
+
+
+
+ What is the configuration of this antagonist's hud icon, such as it's screen position and style, so thatit doesn't break other in-game hud icons.
antag_memory
+
+
+
+
+
+ String dialogue that is added to the player's in-round notes and memories regarding specifics of that antagonist, eg. the nuke code for nuke ops, or your unlock code for traitors.
antag_moodlet
+
+
+
+
+
+ typepath of moodlet that the mob will gain when granted this antagonist type.
antagpanel_category
+
+
+
+
+
+ Antagpanel will display these together, REQUIRED
blacklisted_quirks
+
+
+
+
+
+ Quirks that will be removed upon gaining this antag. Pacifist and mute are default.
can_coexist_with_others
+
+
+
+
+
+ Whether or not the person will be able to have more than one datum
hijack_speed
+
+
+
+
+
+ If above 0, this is the multiplier for the speed at which we hijack the shuttle. Do not directly read, use hijack_speed().
+ button to access antag interface
job_rank
+
+
+
+
+
+ The define string we use to identify the role for bans/player polls to spawn a random new one in.
name
+
+
+
+
+
+ Public name for this antagonist. Appears for player prompts and round-end reports.
objectives
+
+
+
+
+
+ List of the objective datums that this role currently has, completing all objectives at round-end will cause this antagonist to greentext.
owner
+
+
+
+
+
+ Mind that owns this datum
prevent_roundtype_conversion
+
+
+
+
+
+ If false, the roundtype will still convert with this antag active
preview_outfit
+
+
+
+
+
+ The typepath for the outfit to show in the preview for the preferences menu.
replace_banned
+
+
+
+
+
+ Should replace jobbanned player with ghosts if granted.
requested_objective_changes
+
+
+
+
+
+ Lazy list for antagonists to request the admins objectives.
roundend_category
+
+
+
+
+
+ Section of roundend report, datums with same category will be displayed together, also default header for the section
show_in_antagpanel
+
+
+
+
+
+ This will hide adding this antag type in antag panel, use only for internal subtypes that shouldn't be added directly but still show if possessed by mind
show_in_roundend
+
+
+
+
+
+ Set to false to hide the antagonists from roundend report
show_name_in_check_antagonists
+
+
+
+
+
+ Will append antagonist name in admin listings - use for categories that share more than one antag type
show_to_ghosts
+
+
+
+
+
+ Should this antagonist be shown as antag to ghosts? Shouldn't be used for stealthy antagonists like traitors
silent
+
+
+
+
+
+ Silent will prevent the gain/lose texts to show
soft_antag
+
+
+
+
+
+ If set to true, the antag will not be added to the living antag list.
suicide_cry
+
+
+
+
+
+ The battlecry this antagonist shouts when suiciding with C4/X4.
threat
+
+
+
+
+
+ Amount of threat this antag poses, for dynamic mode
typecache_datum_blacklist
+
+
+
+
+
+ List of datums this type can't coexist with
ui_name
+
+
+
+
+
+ name of the UI that will try to open, right now having nothing means this won't exist but in the future all should.
Proc Details antag_panel_data()
+
+
+
+
+
+ Additional data to display in the antagonist panel section.
+For example, nuke disk code, genome count, etc
clean_request_from_del_objective(/datum /objective/source, force)
+
+
+
+
+
+ Clears change requests from deleted objectives to avoid broken references.
clear_antag_moodies()
+
+
+
+
+
+ Proc that removes this antagonist's ascribed moodlet from the player.
farewell()
+
+
+
+
+
+ Proc that sends fluff or instructional messages to the player when they lose this antag datum.
+Use this proc for playing sounds, sending alerts, or otherwise informing the player that they're no longer a specific antagonist type.
finish_preview_icon(/icon/icon)
+
+
+
+
+
+ Given an icon, will crop it to be consistent of those in the preferences menu.
+Not necessary, and in fact will look bad if it's anything other than a human.
get_admin_commands()
+
+
+
+
+
+ List of ["Command"] = CALLBACK(), user will be appeneded to callback arguments on execution
get_objectives()
+
+
+
+
+
+ generic helper to send objectives as data through tgui. supports smart objectives too!
get_preview_icon()
+
+
+
+
+
+ Returns the icon to show on the preferences menu.
get_team()
+
+
+
+
+
+ Proc that will return the team this antagonist belongs to, when called. Helpful with antagonists that may belong to multiple potential teams in a single round, like families.
give_antag_moodies()
+
+
+
+
+
+ Proc that assigns this antagonist's ascribed moodlet to the player.
greet()
+
+
+
+
+
+ Proc that sends fluff or instructional messages to the player when they are given this antag datum.
+Use this proc for playing sounds, sending alerts, or helping to setup non-gameplay influencing aspects of the antagonist type.
handle_clown_mutation(/mob /living /mob_override, message, removing)
+
+
+
+
+
+ Handles adding and removing the clumsy mutation from clown antags. Gets called in apply/remove_innate_effects
hijack_speed()
+
+
+
+
+
+ Gets how fast we can hijack the shuttle, return FALSE for can not hijack.
+Defaults to hijack_speed var, override for custom stuff like buffing hijack speed for hijack objectives or something.
is_banned
+
+ Proc that checks the sent mob aganst the banlistfor this antagonist.
+Returns FALSE if no mob is sent, or the mob is not found to be banned.
+
+mob/M: The mob that you are looking for on the banlist.
+ on_body_transfer
+
+ Called by the transfer_to() mind proc after the mind (mind.current and new_character.mind) has moved but before the player (key and client) is transfered.
on_gain()
+
+
+
+
+
+ Called by the add_antag_datum() mind proc after the instanced datum is added to the mind's antag_datums list.
on_mindshield
+
+ This is called when the antagonist is successfully mindshielded.
on_removal()
+
+
+
+
+
+ Called by the remove_antag_datum() and remove_all_antag_datums() mind procs for the antag datum to handle its own removal and deletion.
pre_mindshield
+
+ This is called when the antagonist is being mindshielded.
remove_blacklisted_quirks()
+
+
+
+
+
+ Removes invalid quirks.
+ Creates an icon from the preview outfit.
+Custom implementors of get_preview_icon
should use this, as the
+result of get_preview_icon
is expected to be the completed version.
replace_banned_player()
+
+
+
+
+
+ Proc that replaces a player who cannot play a specific antagonist due to being banned via a poll, and alerts the player of their being on the banlist.
roundend_report()
+
+
+
+
+
+ Proc that sends string information for the end-round report window to the server.
+This runs on every instance of every antagonist that exists at the end of the round.
+This is the body of the message, sandwiched between roundend_report_header and roundend_report_footer.
+ Proc that sends string data for the round-end report.
+Displayed after roundend_report and roundend_report_footer.
+Appears at the end of the roundend_catagory section.
+ Proc that sends string data for the round-end report.
+Displayed before roundend_report and roundend_report_footer.
+Appears at start of roundend_catagory section.
threat()
+
+
+
+
+
+ Gets our threat level. Override this proc for custom functionality/dynamic threat level.
ui_interact
+
+ ANTAGONIST UI STUFF
+
+
+
diff --git a/datum/antagonist/changeling.html b/datum/antagonist/changeling.html
new file mode 100644
index 0000000000000..e317e71cbd96a
--- /dev/null
+++ b/datum/antagonist/changeling.html
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+ /datum/antagonist/changeling - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ hostile_absorbed did we get succed by another changeling Procs
+ check_menu Checks if we are allowed to interact with a radial menu
+ select_dna Gives a changeling a list of all possible dnas in their profiles to choose from and returns profile containing their chosen dna
+ Var Details hostile_absorbed
+
+
+
+
+
+ did we get succed by another changeling
Proc Details
+ Checks if we are allowed to interact with a radial menu
+Arguments:
+
+user The carbon mob interacting with the menu
+ select_dna()
+
+
+
+
+
+ Gives a changeling a list of all possible dnas in their profiles to choose from and returns profile containing their chosen dna
+
+
+
diff --git a/datum/antagonist/gang.html b/datum/antagonist/gang.html
new file mode 100644
index 0000000000000..9d8a7f194de65
--- /dev/null
+++ b/datum/antagonist/gang.html
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+ /datum/antagonist/gang - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ acceptable_clothes The list of clothes that are acceptable to show allegiance to this family.
+ free_clothes The list of clothes that are given to family members upon induction into the family.
+ gang_id The abbreviation of the family corresponding to this family member datum.
+ gang_name The name of the family corresponding to this family member datum.
+ gang_team_type Type of team to create when creating the gang in the first place. Used for renames.
+ handler A reference to the handler datum that manages the families gamemode. In case of no handler (admin-spawned during round), this will be null; this is fine.
+ my_gang The overarching family that the owner of this datum is a part of. Family teams are generic and imprinted upon by the per-person antagonist datums.
+ original_name The gangster's original real name. Used for renaming stuff, kept between gang switches.
+ package_spawner The action used to spawn family induction packages.
+ starter_gangster Whether or not this family member is the first of their family. Procs
+ equip_gangster_in_inventory Gives a gangster their equipment in their backpack and / or pockets.
+ Var Details acceptable_clothes
+
+
+
+
+
+ The list of clothes that are acceptable to show allegiance to this family.
free_clothes
+
+
+
+
+
+ The list of clothes that are given to family members upon induction into the family.
gang_id
+
+
+
+
+
+ The abbreviation of the family corresponding to this family member datum.
gang_name
+
+
+
+
+
+ The name of the family corresponding to this family member datum.
gang_team_type
+
+
+
+
+
+ Type of team to create when creating the gang in the first place. Used for renames.
+ A reference to the handler datum that manages the families gamemode. In case of no handler (admin-spawned during round), this will be null; this is fine.
+ The overarching family that the owner of this datum is a part of. Family teams are generic and imprinted upon by the per-person antagonist datums.
original_name
+
+
+
+
+
+ The gangster's original real name. Used for renaming stuff, kept between gang switches.
+ The action used to spawn family induction packages.
starter_gangster
+
+
+
+
+
+ Whether or not this family member is the first of their family.
Proc Details equip_gangster_in_inventory()
+
+
+
+
+
+ Gives a gangster their equipment in their backpack and / or pockets.
+
+
+
diff --git a/datum/antagonist/heretic.html b/datum/antagonist/heretic.html
new file mode 100644
index 0000000000000..579422c174aea
--- /dev/null
+++ b/datum/antagonist/heretic.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /datum/antagonist/heretic - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ on_death What happens to the heretic once he dies, used to remove any custom perks
Proc Details on_death()
+
+
+
+
+
+ What happens to the heretic once he dies, used to remove any custom perks
+
+
+
diff --git a/datum/antagonist/ninja.html b/datum/antagonist/ninja.html
new file mode 100644
index 0000000000000..612e8930d777e
--- /dev/null
+++ b/datum/antagonist/ninja.html
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+ /datum/antagonist/ninja - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ give_equipment Whether or not this ninja receives the standard equipment
+ give_objectives Whether or not this ninja will obtain objectives Procs
+ addMemories Proc that adds the proper memories to the antag datum
+ addObjectives Proc that adds all the ninja's objectives to the antag datum.
+ equip_space_ninja Proc that equips the space ninja outfit on a given individual. By default this is the owner of the antagonist datum.
+ Var Details give_equipment
+
+
+
+
+
+ Whether or not this ninja receives the standard equipment
give_objectives
+
+
+
+
+
+ Whether or not this ninja will obtain objectives
Proc Details addMemories()
+
+
+
+
+
+ Proc that adds the proper memories to the antag datum
+Proc that adds the ninja starting memories to the owner of the antagonist datum.
addObjectives()
+
+
+
+
+
+ Proc that adds all the ninja's objectives to the antag datum.
+Proc that adds all the ninja's objectives to the antag datum. Called when the datum is gained.
equip_space_ninja
+
+ Proc that equips the space ninja outfit on a given individual. By default this is the owner of the antagonist datum.
+Proc that equips the space ninja outfit on a given individual. By default this is the owner of the antagonist datum.
+Arguments:
+
+ninja - The human to receive the gear
+Returns a proc call on the given human which will equip them with all the gear.
+
+
+
+
diff --git a/datum/antagonist/rev.html b/datum/antagonist/rev.html
new file mode 100644
index 0000000000000..4fc88c6880a1c
--- /dev/null
+++ b/datum/antagonist/rev.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ /datum/antagonist/rev - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ deconversion_reason when this antagonist is being de-antagged, this is why
+ victory_message What message should the player receive when they are being demoted, and the revolution has won? Procs
+ announce_victorious Checks if the revolution succeeded, and lets them know.
+ Var Details deconversion_reason
+
+
+
+
+
+ when this antagonist is being de-antagged, this is why
victory_message
+
+
+
+
+
+ What message should the player receive when they are being demoted, and the revolution has won?
Proc Details announce_victorious()
+
+
+
+
+
+ Checks if the revolution succeeded, and lets them know.
+
+
+
diff --git a/datum/antagonist/traitor.html b/datum/antagonist/traitor.html
new file mode 100644
index 0000000000000..4bea1cde7b3c3
--- /dev/null
+++ b/datum/antagonist/traitor.html
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+ /datum/antagonist/traitor - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ traitor_kind special datum about what kind of employer the trator has
+ uplink reference to the uplink this traitor was given, if they were. Procs
+ contractor_round_end Proc detailing contract kit buys/completed contracts/additional info
+ forge_traitor_objectives Generates a complete set of traitor objectives up to the traitor objective limit, including non-generic objectives such as martyr and hijack.
+ give_codewords Outputs this shift's codewords and responses to the antag's chat and copies them to their memory.
+ roundend_report_footer Get all the icons/total cost for all our items bought
+Special case for reinforcements, we want to show their ckey and name on round end.
+ Var Details
+ special datum about what kind of employer the trator has
+ reference to the uplink this traitor was given, if they were.
Proc Details contractor_round_end()
+
+
+
+
+
+ Proc detailing contract kit buys/completed contracts/additional info
forge_traitor_objectives()
+
+
+
+
+
+ Generates a complete set of traitor objectives up to the traitor objective limit, including non-generic objectives such as martyr and hijack.
give_codewords()
+
+
+
+
+
+ Outputs this shift's codewords and responses to the antag's chat and copies them to their memory.
+ Get all the icons/total cost for all our items bought
+Special case for reinforcements, we want to show their ckey and name on round end.
+
+
+
diff --git a/datum/antagonist/traitor/contractor_support.html b/datum/antagonist/traitor/contractor_support.html
new file mode 100644
index 0000000000000..e3caf78b8d51e
--- /dev/null
+++ b/datum/antagonist/traitor/contractor_support.html
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+ /datum/antagonist/traitor/contractor_support - SPLURT Station 13
+
+
+
+
+
+
+Support unit gets it's own very basic antag datum for admin logging.
+ Var Details contractor_team
+ – /datum /team/contractor_team
+
+
+
+
+ Don't give them an uplink.
give_objectives
+
+
+
+
+
+ We're already adding them in to the contractor's roundend.
should_equip
+
+
+
+
+
+ Not a proper/full antag.
show_in_antagpanel
+
+
+
+
+
+ We give them their own custom objective.
+
+
+
diff --git a/datum/asset.html b/datum/asset.html
new file mode 100644
index 0000000000000..d33c4a6dcf03d
--- /dev/null
+++ b/datum/asset.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /datum/asset - SPLURT Station 13
+
+
+
+
+
+
+Proc Details get_serialized_url_mappings()
+
+
+
+
+
+ Returns a cached tgui message of URL mappings
+
+
+
diff --git a/datum/asset/simple.html b/datum/asset/simple.html
new file mode 100644
index 0000000000000..00eab64da9014
--- /dev/null
+++ b/datum/asset/simple.html
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+ /datum/asset/simple - SPLURT Station 13
+
+
+
+
+
+
+If you don't need anything complicated.
Vars
+ assets list of assets for this datum in the form of:
+asset_filename = asset_file. At runtime the asset_file will be
+converted into a asset_cache datum.
+ keep_local_name TRUE for keeping local asset names when browse_rsc backend is used
+ legacy Set to true to have this asset also be sent via the legacy browse_rsc
+system when cdn transports are enabled?
+ Var Details assets
+
+
+
+
+
+ list of assets for this datum in the form of:
+asset_filename = asset_file. At runtime the asset_file will be
+converted into a asset_cache datum.
keep_local_name
+
+
+
+
+
+ TRUE for keeping local asset names when browse_rsc backend is used
legacy
+
+
+
+
+
+ Set to true to have this asset also be sent via the legacy browse_rsc
+system when cdn transports are enabled?
+
+
+
diff --git a/datum/asset/simple/namespaced.html b/datum/asset/simple/namespaced.html
new file mode 100644
index 0000000000000..d5e28ce425182
--- /dev/null
+++ b/datum/asset/simple/namespaced.html
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+ /datum/asset/simple/namespaced - SPLURT Station 13
+
+
+
+
+
+
+Namespace'ed assets (for static css and html files)
+When sent over a cdn transport, all assets in the same asset datum will exist in the same folder, as their plain names.
+Used to ensure css files can reference files by url() without having to generate the css at runtime, both the css file and the files it depends on must exist in the same namespace asset datum. (Also works for html)
+For example blah.css
with asset blah.png
will get loaded as namespaces/a3d..14f/f12..d3c.css
and namespaces/a3d..14f/blah.png
. allowing the css file to load blah.png
by a relative url rather then compute the generated url with get_url_mappings().
+The namespace folder's name will change if any of the assets change. (excluding parent assets)
Vars
+ parents parents - list of the parent asset or assets (in name = file assoicated format) for this namespace.
+parent assets must be referenced by their generated url, but if an update changes a parent asset, it won't change the namespace's identity. Procs
+ get_htmlloader Get a html string that will load a html asset.
+Needed because byond doesn't allow you to browse() to a url.
+ Var Details parents
+
+
+
+
+
+ parents - list of the parent asset or assets (in name = file assoicated format) for this namespace.
+parent assets must be referenced by their generated url, but if an update changes a parent asset, it won't change the namespace's identity.
Proc Details get_htmlloader(filename)
+
+
+
+
+
+ Get a html string that will load a html asset.
+Needed because byond doesn't allow you to browse() to a url.
+
+
+
diff --git a/datum/asset/spritesheet.html b/datum/asset/spritesheet.html
new file mode 100644
index 0000000000000..4dbdd050a2fec
--- /dev/null
+++ b/datum/asset/spritesheet.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ /datum/asset/spritesheet - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ ModifyInserted A simple proc handing the Icon for you to modify before it gets turned into an asset.
+ icon_size_id Returns the size class (ex design32x32) for a given sprite's icon
Proc Details ModifyInserted(/icon/pre_asset)
+
+
+
+
+
+ A simple proc handing the Icon for you to modify before it gets turned into an asset.
+Arguments:
+
+I: icon being turned into an asset
+ icon_size_id(sprite_name)
+
+
+
+
+
+ Returns the size class (ex design32x32) for a given sprite's icon
+Arguments:
+
+sprite_name - The sprite to get the size of
+
+
+
+
diff --git a/datum/asset/spritesheet/decals.html b/datum/asset/spritesheet/decals.html
new file mode 100644
index 0000000000000..7715adfc43788
--- /dev/null
+++ b/datum/asset/spritesheet/decals.html
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+ /datum/asset/spritesheet/decals - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details
+ The associated decal painter type to grab decals, colors, etc from.
preview_floor_icon
+
+
+
+
+
+ The floor icon used for blend_preview_floor()
preview_floor_state
+
+
+
+
+
+ The floor icon state used for blend_preview_floor()
Proc Details blend_preview_floor(/icon/decal)
+
+
+
+
+
+ Underlay an example floor for preview purposes, and return the new icon.
+Arguments:
+
+decal - the decal to place over the example floor tile
+ insert_state(decal, dir, color)
+
+
+
+
+
+ Insert a specific state into the spritesheet.
+Arguments:
+
+decal - the given decal base state.
+dir - the given direction.
+color - the given color.
+
+
+
+
diff --git a/datum/asset_cache_item.html b/datum/asset_cache_item.html
new file mode 100644
index 0000000000000..6f5c0064c3bd3
--- /dev/null
+++ b/datum/asset_cache_item.html
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+ /datum/asset_cache_item - SPLURT Station 13
+
+
+
+
+
+
+An internal datum containing info on items in the asset cache. Mainly used to cache md5 info for speed.
Vars
+ keep_local_name TRUE for keeping local asset names when browse_rsc backend is used
+ legacy Should this file also be sent via the legacy browse_rsc system
+when cdn transports are enabled?
+ namespace Used by the cdn system to keep legacy css assets with their parent
+css file. (css files resolve urls relative to the css file, so the
+legacy system can't be used if the css file itself could go out over
+the cdn)
+ namespace_parent True if this is the parent css or html file for an asset's namespace
+ Var Details keep_local_name
+
+
+
+
+
+ TRUE for keeping local asset names when browse_rsc backend is used
legacy
+
+
+
+
+
+ Should this file also be sent via the legacy browse_rsc system
+when cdn transports are enabled?
namespace
+
+
+
+
+
+ Used by the cdn system to keep legacy css assets with their parent
+css file. (css files resolve urls relative to the css file, so the
+legacy system can't be used if the css file itself could go out over
+the cdn)
namespace_parent
+
+
+
+
+
+ True if this is the parent css or html file for an asset's namespace
+
+
+
diff --git a/datum/asset_transport.html b/datum/asset_transport.html
new file mode 100644
index 0000000000000..16a98ba25a670
--- /dev/null
+++ b/datum/asset_transport.html
@@ -0,0 +1,109 @@
+
+
+
+
+
+
+ /datum/asset_transport - SPLURT Station 13
+
+
+
+
+
+
+Base browse_rsc asset transport
Vars
+ dont_mutate_filenames Don't mutate the filename of assets when sending via browse_rsc.
+This is to make it easier to debug issues with assets, and allow server operators to bypass issues that make it to production.
+If turning this on fixes asset issues, something isn't using get_asset_url and the asset isn't marked legacy, fix one of those. Procs
+ Initialize Initialize - Called when SSassets initializes.
+ Load Called when the transport is loaded by the config controller, not called on the default transport unless it gets loaded by a config change.
+ get_asset_url Returns a url for a given asset.
+asset_name - Name of the asset.
+asset_cache_item - asset cache item datum for the asset, optional, overrides asset_name
+ register_asset Register a browser asset with the asset cache system
+asset_name - the identifier of the asset
+asset - the actual asset file (or an asset_cache_item datum)
+returns a /datum/asset_cache_item.
+mutiple calls to register the same asset under the same asset_name return the same datum
+ send_assets Sends a list of browser assets to a client
+client - a client or mob
+asset_list - A list of asset filenames to be sent to the client. Can optionally be assoicated with the asset's asset_cache_item datum.
+Returns TRUE if any assets were sent.
+ send_assets_slow Precache files without clogging up the browse() queue, used for passively sending files on connection start.
+ validate_config Check the config is valid to load this transport
+Returns TRUE or FALSE
+ Var Details dont_mutate_filenames
+
+
+
+
+
+ Don't mutate the filename of assets when sending via browse_rsc.
+This is to make it easier to debug issues with assets, and allow server operators to bypass issues that make it to production.
+If turning this on fixes asset issues, something isn't using get_asset_url and the asset isn't marked legacy, fix one of those.
Proc Details Initialize(/list/assets)
+
+
+
+
+
+ Initialize - Called when SSassets initializes.
Load()
+
+
+
+
+
+ Called when the transport is loaded by the config controller, not called on the default transport unless it gets loaded by a config change.
get_asset_url
+
+ Returns a url for a given asset.
+asset_name - Name of the asset.
+asset_cache_item - asset cache item datum for the asset, optional, overrides asset_name
register_asset(asset_name, asset)
+
+
+
+
+
+ Register a browser asset with the asset cache system
+asset_name - the identifier of the asset
+asset - the actual asset file (or an asset_cache_item datum)
+returns a /datum/asset_cache_item.
+mutiple calls to register the same asset under the same asset_name return the same datum
send_assets(/client /client, /list/asset_list)
+
+
+
+
+
+ Sends a list of browser assets to a client
+client - a client or mob
+asset_list - A list of asset filenames to be sent to the client. Can optionally be assoicated with the asset's asset_cache_item datum.
+Returns TRUE if any assets were sent.
send_assets_slow(/client /client, /list/files, filerate)
+
+
+
+
+
+ Precache files without clogging up the browse() queue, used for passively sending files on connection start.
validate_config(log)
+
+
+
+
+
+ Check the config is valid to load this transport
+Returns TRUE or FALSE
+
+
+
diff --git a/datum/asset_transport/webroot.html b/datum/asset_transport/webroot.html
new file mode 100644
index 0000000000000..e2470ed4266e8
--- /dev/null
+++ b/datum/asset_transport/webroot.html
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+ /datum/asset_transport/webroot - SPLURT Station 13
+
+
+
+
+
+
+CDN Webroot asset transport.
Procs
+ get_asset_url Returns a url for a given asset.
+asset_name - Name of the asset.
+asset_cache_item - asset cache item datum for the asset, optional, overrides asset_name
+ load_existing_assets Processes thru any assets that were registered before we were loaded as a transport.
+ register_asset Register a browser asset with the asset cache system
+We also save it to the CDN webroot at this step instead of waiting for send_assets()
+asset_name - the identifier of the asset
+asset - the actual asset file or an asset_cache_item datum.
+ save_asset_to_webroot Saves the asset to the webroot taking into account namespaces and hashes.
+ send_assets webroot asset sending - does nothing unless passed legacy assets
+ send_assets_slow webroot slow asset sending - does nothing.
Proc Details get_asset_url
+
+ Returns a url for a given asset.
+asset_name - Name of the asset.
+asset_cache_item - asset cache item datum for the asset, optional, overrides asset_name
load_existing_assets()
+
+
+
+
+
+ Processes thru any assets that were registered before we were loaded as a transport.
register_asset(asset_name, asset)
+
+
+
+
+
+ Register a browser asset with the asset cache system
+We also save it to the CDN webroot at this step instead of waiting for send_assets()
+asset_name - the identifier of the asset
+asset - the actual asset file or an asset_cache_item datum.
+ Saves the asset to the webroot taking into account namespaces and hashes.
send_assets(/client /client, /list/asset_list)
+
+
+
+
+
+ webroot asset sending - does nothing unless passed legacy assets
send_assets_slow(/client /client, /list/files, filerate)
+
+
+
+
+
+ webroot slow asset sending - does nothing.
+
+
+
diff --git a/datum/award.html b/datum/award.html
new file mode 100644
index 0000000000000..953d762432e7b
--- /dev/null
+++ b/datum/award.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+ /datum/award - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ database_id What ID do we use in db, limited to 32 characters
+ icon Found in ui_icons/achievements
+ name Name of the achievement, If null it won't show up in the achievement browser. (Handy for inheritance trees) Procs
+ get_changed_rows This saves the changed data to the hub.
+ get_raw_value Get raw numerical achievement value from the database
+ load This proc loads the achievement data from the hub.
+ on_unlock Can be overriden for achievement specific events
+ Var Details database_id
+
+
+
+
+
+ What ID do we use in db, limited to 32 characters
icon
+
+
+
+
+
+ Found in ui_icons/achievements
name
+
+
+
+
+
+ Name of the achievement, If null it won't show up in the achievement browser. (Handy for inheritance trees)
Proc Details get_changed_rows(key, value)
+
+
+
+
+
+ This saves the changed data to the hub.
get_raw_value(key)
+
+
+
+
+
+ Get raw numerical achievement value from the database
load(key)
+
+
+
+
+
+ This proc loads the achievement data from the hub.
on_unlock
+
+ Can be overriden for achievement specific events
+
+
+
diff --git a/datum/bank_account.html b/datum/bank_account.html
new file mode 100644
index 0000000000000..87292025012c3
--- /dev/null
+++ b/datum/bank_account.html
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+ /datum/bank_account - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ bounty_num Returns the required item count, or required chemical units required to submit a bounty.
+ bounty_text Returns a string with the civilian bounty's description on it.
+ bounty_value Produces the value of the account's civilian bounty reward, if able.
+ reset_bounty Performs house-cleaning on variables when a civilian bounty is replaced, or, when a bounty is claimed.
Proc Details bounty_num()
+
+
+
+
+
+ Returns the required item count, or required chemical units required to submit a bounty.
bounty_text()
+
+
+
+
+
+ Returns a string with the civilian bounty's description on it.
bounty_value()
+
+
+
+
+
+ Produces the value of the account's civilian bounty reward, if able.
reset_bounty()
+
+
+
+
+
+ Performs house-cleaning on variables when a civilian bounty is replaced, or, when a bounty is claimed.
+
+
+
diff --git a/datum/biome.html b/datum/biome.html
new file mode 100644
index 0000000000000..61fcc05706d54
--- /dev/null
+++ b/datum/biome.html
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+ /datum/biome - SPLURT Station 13
+
+
+
+
+
+
+This datum handles the transitioning from a turf to a specific biome, and handles spawning decorative structures and mobs.
Vars
+ fauna_density Chance of having a mob from the fauna types list spawn
+ fauna_types list of type paths of mobs that can be spawned when the turf spawns fauna
+ flora_density Chance of having a structure from the flora types list spawn
+ flora_types list of type paths of objects that can be spawned when the turf spawns flora
+ turf_type Type of turf this biome creates Procs
+ generate_turf This proc handles the creation of a turf of a specific biome type
+ Var Details fauna_density
+
+
+
+
+
+ Chance of having a mob from the fauna types list spawn
fauna_types
+
+
+
+
+
+ list of type paths of mobs that can be spawned when the turf spawns fauna
flora_density
+
+
+
+
+
+ Chance of having a structure from the flora types list spawn
flora_types
+
+
+
+
+
+ list of type paths of objects that can be spawned when the turf spawns flora
turf_type
+
+
+
+
+
+ Type of turf this biome creates
Proc Details generate_turf
+
+ This proc handles the creation of a turf of a specific biome type
+
+
+
diff --git a/datum/bitfield.html b/datum/bitfield.html
new file mode 100644
index 0000000000000..2f410e39682a7
--- /dev/null
+++ b/datum/bitfield.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /datum/bitfield - SPLURT Station 13
+
+
+
+
+
+
+Specifies a bitfield for smarter debugging
Vars
+ flags An associative list of the readable flag and its true value
+ variable The variable name that contains the bitfield
+ Var Details flags
+
+
+
+
+
+ An associative list of the readable flag and its true value
variable
+
+
+
+
+
+ The variable name that contains the bitfield
+
+
+
diff --git a/datum/block_parry_data.html b/datum/block_parry_data.html
new file mode 100644
index 0000000000000..c51725a94e948
--- /dev/null
+++ b/datum/block_parry_data.html
@@ -0,0 +1,552 @@
+
+
+
+
+
+
+ /datum/block_parry_data - SPLURT Station 13
+
+
+
+
+
+
+Carries data like list data that would be a waste of memory if we initialized the list on every /item as we can cache datums easier.
Vars
+ autoparry_cooldown_absolute Hard autoparry cooldown
+ autoparry_mouse_delay_maximum ADVANCED - Autoparry requirement for time since last moused over for a specific object
+ autoparry_sequence_simulation Autoparry : Simulate a parry sequence starting at a certain tick, or simply simulate a single attack parry?
+ autoparry_sequence_start_time Decisecond of sequence to start on. -1 to start to 0th tick of active parry window.
+ autoparry_single_efficiency Single attack autoparry - efficiency
+ autoparry_single_efficiency_override Single attack autoparry - efficiency overrides by attack type, see above
+ block_active_priority The priority we get in mob/do_run_block() while we're being used to parry.
+ block_automatic_directions Directions that you can autoblock in. Null to default to normal directions.
+ block_automatic_enabled Can this item automatically block?
+ block_automatic_mitigation_multiplier Effectiveness multiplier for automated block. Only applies to efficiency, absorption and limits stay the same!
+ block_automatic_stamina_multiplier Stamina cost multiplier for automated block
+ block_damage_absorption Amount of "free" damage blocking absorbs
+ block_damage_absorption_override Override absorption, list("[ATTACK_TYPE_DEFINE]" = absorption), see [block_damage_absorption]
+ block_damage_limit Upper bound of damage block, anything above this will go right through.
+ block_damage_limit_override Override upper bound of damage block, list("[ATTACK_TYPE_DEFINE]" = absorption), see [block_damage_limit]
+ block_damage_multiplier Ratio of damage to allow through above absorption and below limit. Multiplied by damage to determine how much to let through. Lower is better.
+ block_damage_multiplier_override Override damage overrun efficiency, list("[ATTACK_TYPE_DEFINE]" = absorption), see [block_damage_efficiency]
+ block_end_click_cd_add Clickdelay added to user after block ends
+ block_lock_attacking Disallow attacking during block
+ block_lock_sprinting Disallow sprinting during block
+ block_no_stambuffer_regeneration Prevent stamina buffer regeneration while block?
+ block_no_stamina_regeneration Prevent stamina regeneration while block?
+ block_projectile_mitigation The blocked variable of on_hit() on projectiles is impacted by this. Higher is better, 0 to 100, percentage.
+ block_resting_attack_types_anydir Bitfield for attack types that we can block while down. This will work in any direction.
+ block_resting_attack_types_directional Bitfield for attack types that we can block while down but only in our normal directions.
+ block_resting_stamina_penalty_multiplier Multiplier to stamina damage taken for attacks blocked while downed.
+ block_resting_stamina_penalty_multiplier_override Override list for multiplier to stamina damage taken for attacks blocked while down. list("[ATTACK_TYPE_DEFINE]" = multiplier_number)
+ block_slowdown Our slowdown added while blocking
+ block_sounds Sounds for blocking
+ block_stamina_buffer_ratio Ratio of stamina incurred by chest (so after [block_stamina_limb_ratio] runs) that is buffered.
+ block_stamina_cost_per_second Stamina dealt directly via UseStaminaBuffer() per SECOND of block.
+ block_stamina_efficiency Default damage-to-stamina coefficient, higher is better. This is based on amount of damage BLOCKED, not initial damage, to prevent damage from "double dipping".
+ block_stamina_efficiency_override Override damage-to-stamina coefficient, see [block_efficiency], this should be list("[ATTACK_TYPE_DEFINE]" = coefficient_number)
+ block_stamina_limb_ratio Ratio of stamina incurred by blocking that goes to the arm holding the object instead of the chest. Has no effect if this is not held in hand.
+ block_start_delay Windup before we have our blocking active.
+ can_block_attack_types Attacks we can block
+ can_block_directions //////// BLOCKING ////////////
+NOTE: FOR ATTACK_TYPE_DEFINE, you MUST wrap it in "[DEFINE_HERE]"! The defines are bitflags, and therefore, NUMBERS!
+See defines. Point of reference is someone facing north.
+ parry_allow_repeated_counterattacks Allow multiple counterattacks per parry sequence. Bad idea.
+ parry_attack_types Attack types we can block
+ parry_automatic_enabled Can this data automatically parry? This is off by default because this is something that requires thought to balance.
+ parry_cooldown Parrying cooldown, separate of clickdelay. It must be this much deciseconds since their last parry for them to parry with this object.
+ parry_data Parry effect data.
+ parry_effect_icon_state Visual icon state override for parrying
+ parry_efficiency_considered_successful Efficiency must be at least this to be considered successful
+ parry_efficiency_perfect Efficiency in percent on perfect parry.
+ parry_efficiency_perfect_override Override for attack types, list("[ATTACK_TYPE_DEFINE]" = perecntage) for perfect efficiency.
+ parry_efficiency_to_counterattack Efficiency must be at least this to run automatic counterattack
+ parry_failed_clickcd_duration Clickdelay duration post-parry if you fail to parry an attack
+ parry_failed_cooldown_duration Parry cooldown post-parry if failed. This is ADDED to parry_cooldown!!!
+ parry_failed_stagger_duration Stagger duration post-parry if you fail to parry an attack
+ parry_flags Parry flags
+ parry_imperfect_falloff_percent Parry "efficiency" falloff in percent per decisecond once perfect window is over.
+ parry_imperfect_falloff_percent_override [parry_imperfect_falloff_percent] override for attack types, list("[ATTACK_TYPE_DEFINE]" = deciseconds)
+ parry_max_attacks Maximum attacks to parry successfully or unsuccessfully (but not efficiency < 0) during active period, hitting this immediately ends the sequence.
+ parry_respect_clickdelay //////// PARRYING ////////////
+Priority for mob/do_run_block() while we're being used to parry.
+Parry doesn't work if you aren't able to otherwise attack due to clickdelay
+ parry_sounds Sounds for parrying
+ parry_stamina_cost Parry stamina cost
+ parry_start_sound Parry start sound
+ parry_time_active Main parry window in deciseconds. This is between [parry_time_windup] and [parry_time_spindown]
+ parry_time_active_visual_override If set, overrides visual duration of active period
+ parry_time_perfect Perfect parry window in deciseconds from the start of the main window. 3 with main 5 = perfect on third decisecond of main window.
+ parry_time_perfect_leeway Time on both sides of perfect parry that still counts as part of the perfect window.
+ parry_time_perfect_leeway_override [parry_time_perfect_leeway] override for attack types, list("[ATTACK_TYPE_DEFINE]" = deciseconds)
+ parry_time_spindown Parry spindown duration in deciseconds. main stage end to this is the spindown stage, afterwards the parry fully ends.
+ parry_time_spindown_visual_override If set, overrides visual duration of spindown
+ parry_time_windup Parry windup duration in deciseconds. 0 to this is windup, afterwards is main stage.
+ parry_time_windup_visual_override If set, overrides visual duration of windup
+ perfect_parry_block_return_flags Flags added to return value
+ perfect_parry_block_return_list List appended to block return Procs
+ attack_type_list_scan Quirky proc to get average of flags in list that are in attack_type because why is attack_type a flag.
+ get_parry_efficiency Gets the percentage efficiency of our parry.
+ render_html_readout Generates a HTML render of this datum for self-documentation
+Maybe make this tgui-next someday haha god this is ugly as sin.
+Does NOT include the popout or title or anything. Just the variables and explanations..
+ Var Details autoparry_cooldown_absolute
+
+
+
+
+
+ Hard autoparry cooldown
autoparry_mouse_delay_maximum
+
+
+
+
+
+ ADVANCED - Autoparry requirement for time since last moused over for a specific object
autoparry_sequence_simulation
+
+
+
+
+
+ Autoparry : Simulate a parry sequence starting at a certain tick, or simply simulate a single attack parry?
autoparry_sequence_start_time
+
+
+
+
+
+ Decisecond of sequence to start on. -1 to start to 0th tick of active parry window.
autoparry_single_efficiency
+
+
+
+
+
+ Single attack autoparry - efficiency
autoparry_single_efficiency_override
+
+
+
+
+
+ Single attack autoparry - efficiency overrides by attack type, see above
block_active_priority
+
+
+
+
+
+ The priority we get in mob/do_run_block() while we're being used to parry.
block_automatic_directions
+
+
+
+
+
+ Directions that you can autoblock in. Null to default to normal directions.
block_automatic_enabled
+
+
+
+
+
+ Can this item automatically block?
block_automatic_mitigation_multiplier
+
+
+
+
+
+ Effectiveness multiplier for automated block. Only applies to efficiency, absorption and limits stay the same!
block_automatic_stamina_multiplier
+
+
+
+
+
+ Stamina cost multiplier for automated block
block_damage_absorption
+
+
+
+
+
+ Amount of "free" damage blocking absorbs
block_damage_absorption_override
+
+
+
+
+
+ Override absorption, list("[ATTACK_TYPE_DEFINE]" = absorption), see [block_damage_absorption]
block_damage_limit
+
+
+
+
+
+ Upper bound of damage block, anything above this will go right through.
block_damage_limit_override
+
+
+
+
+
+ Override upper bound of damage block, list("[ATTACK_TYPE_DEFINE]" = absorption), see [block_damage_limit]
block_damage_multiplier
+
+
+
+
+
+ Ratio of damage to allow through above absorption and below limit. Multiplied by damage to determine how much to let through. Lower is better.
block_damage_multiplier_override
+
+
+
+
+
+ Override damage overrun efficiency, list("[ATTACK_TYPE_DEFINE]" = absorption), see [block_damage_efficiency]
block_end_click_cd_add
+
+
+
+
+
+ Clickdelay added to user after block ends
block_lock_attacking
+
+
+
+
+
+ Disallow attacking during block
block_lock_sprinting
+
+
+
+
+
+ Disallow sprinting during block
block_no_stambuffer_regeneration
+
+
+
+
+
+ Prevent stamina buffer regeneration while block?
block_no_stamina_regeneration
+
+
+
+
+
+ Prevent stamina regeneration while block?
block_projectile_mitigation
+
+
+
+
+
+ The blocked variable of on_hit() on projectiles is impacted by this. Higher is better, 0 to 100, percentage.
block_resting_attack_types_anydir
+
+
+
+
+
+ Bitfield for attack types that we can block while down. This will work in any direction.
block_resting_attack_types_directional
+
+
+
+
+
+ Bitfield for attack types that we can block while down but only in our normal directions.
block_resting_stamina_penalty_multiplier
+
+
+
+
+
+ Multiplier to stamina damage taken for attacks blocked while downed.
block_resting_stamina_penalty_multiplier_override
+
+
+
+
+
+ Override list for multiplier to stamina damage taken for attacks blocked while down. list("[ATTACK_TYPE_DEFINE]" = multiplier_number)
block_slowdown
+
+
+
+
+
+ Our slowdown added while blocking
block_sounds
+
+
+
+
+
+ Sounds for blocking
block_stamina_buffer_ratio
+
+
+
+
+
+ Ratio of stamina incurred by chest (so after [block_stamina_limb_ratio] runs) that is buffered.
block_stamina_cost_per_second
+
+
+
+
+
+ Stamina dealt directly via UseStaminaBuffer() per SECOND of block.
block_stamina_efficiency
+
+
+
+
+
+ Default damage-to-stamina coefficient, higher is better. This is based on amount of damage BLOCKED, not initial damage, to prevent damage from "double dipping".
block_stamina_efficiency_override
+
+
+
+
+
+ Override damage-to-stamina coefficient, see [block_efficiency], this should be list("[ATTACK_TYPE_DEFINE]" = coefficient_number)
block_stamina_limb_ratio
+
+
+
+
+
+ Ratio of stamina incurred by blocking that goes to the arm holding the object instead of the chest. Has no effect if this is not held in hand.
block_start_delay
+
+
+
+
+
+ Windup before we have our blocking active.
can_block_attack_types
+
+
+
+
+
+ Attacks we can block
can_block_directions
+
+
+
+
+
+ //////// BLOCKING ////////////
+NOTE: FOR ATTACK_TYPE_DEFINE, you MUST wrap it in "[DEFINE_HERE]"! The defines are bitflags, and therefore, NUMBERS!
+See defines. Point of reference is someone facing north.
parry_allow_repeated_counterattacks
+
+
+
+
+
+ Allow multiple counterattacks per parry sequence. Bad idea.
parry_attack_types
+
+
+
+
+
+ Attack types we can block
parry_automatic_enabled
+
+
+
+
+
+ Can this data automatically parry? This is off by default because this is something that requires thought to balance.
parry_cooldown
+
+
+
+
+
+ Parrying cooldown, separate of clickdelay. It must be this much deciseconds since their last parry for them to parry with this object.
parry_data
+
+
+
+
+
+ Parry effect data.
parry_effect_icon_state
+
+
+
+
+
+ Visual icon state override for parrying
parry_efficiency_considered_successful
+
+
+
+
+
+ Efficiency must be at least this to be considered successful
parry_efficiency_perfect
+
+
+
+
+
+ Efficiency in percent on perfect parry.
parry_efficiency_perfect_override
+
+
+
+
+
+ Override for attack types, list("[ATTACK_TYPE_DEFINE]" = perecntage) for perfect efficiency.
parry_efficiency_to_counterattack
+
+
+
+
+
+ Efficiency must be at least this to run automatic counterattack
parry_failed_clickcd_duration
+
+
+
+
+
+ Clickdelay duration post-parry if you fail to parry an attack
parry_failed_cooldown_duration
+
+
+
+
+
+ Parry cooldown post-parry if failed. This is ADDED to parry_cooldown!!!
parry_failed_stagger_duration
+
+
+
+
+
+ Stagger duration post-parry if you fail to parry an attack
parry_flags
+
+
+
+
+
+ Parry flags
parry_imperfect_falloff_percent
+
+
+
+
+
+ Parry "efficiency" falloff in percent per decisecond once perfect window is over.
parry_imperfect_falloff_percent_override
+
+
+
+
+
+ [parry_imperfect_falloff_percent] override for attack types, list("[ATTACK_TYPE_DEFINE]" = deciseconds)
parry_max_attacks
+
+
+
+
+
+ Maximum attacks to parry successfully or unsuccessfully (but not efficiency < 0) during active period, hitting this immediately ends the sequence.
parry_respect_clickdelay
+
+
+
+
+
+ //////// PARRYING ////////////
+Priority for mob/do_run_block() while we're being used to parry.
+Parry doesn't work if you aren't able to otherwise attack due to clickdelay
parry_sounds
+
+
+
+
+
+ Sounds for parrying
parry_stamina_cost
+
+
+
+
+
+ Parry stamina cost
parry_start_sound
+
+
+
+
+
+ Parry start sound
parry_time_active
+
+
+
+
+
+ Main parry window in deciseconds. This is between [parry_time_windup] and [parry_time_spindown]
parry_time_active_visual_override
+
+
+
+
+
+ If set, overrides visual duration of active period
parry_time_perfect
+
+
+
+
+
+ Perfect parry window in deciseconds from the start of the main window. 3 with main 5 = perfect on third decisecond of main window.
parry_time_perfect_leeway
+
+
+
+
+
+ Time on both sides of perfect parry that still counts as part of the perfect window.
parry_time_perfect_leeway_override
+
+
+
+
+
+ [parry_time_perfect_leeway] override for attack types, list("[ATTACK_TYPE_DEFINE]" = deciseconds)
parry_time_spindown
+
+
+
+
+
+ Parry spindown duration in deciseconds. main stage end to this is the spindown stage, afterwards the parry fully ends.
parry_time_spindown_visual_override
+
+
+
+
+
+ If set, overrides visual duration of spindown
parry_time_windup
+
+
+
+
+
+ Parry windup duration in deciseconds. 0 to this is windup, afterwards is main stage.
parry_time_windup_visual_override
+
+
+
+
+
+ If set, overrides visual duration of windup
perfect_parry_block_return_flags
+
+
+
+
+
+ Flags added to return value
perfect_parry_block_return_list
+
+
+
+
+
+ List appended to block return
Proc Details attack_type_list_scan(/list/L, attack_type)
+
+
+
+
+
+ Quirky proc to get average of flags in list that are in attack_type because why is attack_type a flag.
get_parry_efficiency(attack_type, parry_time)
+
+
+
+
+
+ Gets the percentage efficiency of our parry.
+Returns a percentage in normal 0 to 100 scale, but not clamped to just 0 to 100.
+This is a proc to allow for overriding.
+@params
+
+attack_type - int, bitfield of the attack type(s)
+parry_time - deciseconds since start of the parry.
+ render_html_readout(block_data, parry_data)
+
+
+
+
+
+ Generates a HTML render of this datum for self-documentation
+Maybe make this tgui-next someday haha god this is ugly as sin.
+Does NOT include the popout or title or anything. Just the variables and explanations..
+
+
+
diff --git a/datum/callback.html b/datum/callback.html
new file mode 100644
index 0000000000000..28bced3e2ae84
--- /dev/null
+++ b/datum/callback.html
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+ /datum/callback - SPLURT Station 13
+
+
+
+
+
+
+A datum that holds a proc to be called on another object, used to track proccalls to other objects
+USAGE
+var/datum/callback/C = new(object|null, GLOBAL_PROC_REF(type/path|"procstring"), arg1, arg2, ... argn)
+var/timerid = addtimer(C, time, timertype)
+you can also use the compiler define shorthand
+var/timerid = addtimer(CALLBACK(object|null, PROC_REF(procname), arg1, arg2, ... argn), time, timertype)
+
+Note: proc strings can only be given for datum proc calls, global procs must be proc paths
+Also proc strings are strongly advised against because they don't compile error if the proc stops existing
+In some cases you can provide a shortform of the procname, see the proc typepath shortcuts documentation below
+INVOKING THE CALLBACK
+var/result = C.Invoke(args, to, add)
additional args are added after the ones given when the callback was created
+var/result = C.InvokeAsync(args, to, add)
Asyncronous - returns . on the first sleep then continues on in the background
+after the sleep/block ends, otherwise operates normally.
+PROC TYPEPATH SHORTCUTS
+(these operate on paths, not types, so to these shortcuts, datum is NOT a parent of atom, etc...)
+proc defined on current(src) object OR overridden at src or any of it's parents:
+PROC_REF(procname)
+CALLBACK(src, PROC_REF(some_proc_here))
+global proc
+GLOBAL_PROC_REF(procname)
+CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(some_proc_here))
+proc defined on some type
+TYPE_PROC_REF(/some/type, some_proc_here)
Vars
+ arguments A list of arguments to pass into the proc
+ delegate The proc we will be calling on the object
+ object The object we will be calling the proc on
+ user A weak reference to the user who triggered this callback Procs
+ Invoke Invoke this callback
+ InvokeAsync Invoke this callback async (waitfor=false)
+ New Create a new callback datum
+ Var Details arguments
+
+
+
+
+
+ A list of arguments to pass into the proc
delegate
+
+
+
+
+
+ The proc we will be calling on the object
object
+
+
+
+
+
+ The object we will be calling the proc on
user
+
+
+
+
+
+ A weak reference to the user who triggered this callback
Proc Details Invoke(...)
+
+
+
+
+
+ Invoke this callback
+Calls the registered proc on the registered object, if the user ref
+can be resolved it also inclues that as an arg
+If the datum being called on is varedited, the call is wrapped via WrapAdminProcCall
InvokeAsync(...)
+
+
+
+
+
+ Invoke this callback async (waitfor=false)
+Calls the registered proc on the registered object, if the user ref
+can be resolved it also inclues that as an arg
+If the datum being called on is varedited, the call is wrapped via WrapAdminProcCall
New(thingtocall, proctocall, ...)
+
+
+
+
+
+ Create a new callback datum
+Arguments
+
+thingtocall the object to call the proc on
+proctocall the proc to call on the target object
+... an optional list of extra arguments to pass to the proc
+
+
+
+
diff --git a/datum/centcom_announcer.html b/datum/centcom_announcer.html
new file mode 100644
index 0000000000000..ff95ca408189c
--- /dev/null
+++ b/datum/centcom_announcer.html
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+ /datum/centcom_announcer - SPLURT Station 13
+
+
+
+
+
+
+Data holder for the announcers that can be used in a game, this can be used to have alternative announcements outside of the default e.g.the intern
Vars
+ alert_sounds Sounds made when announcement is receivedc
+ command_report_sounds Sounds made when command report is received
+ custom_alert_message Override this to have a custom message to show instead of the normal priority announcement
+ event_sounds Event audio, can be used for specific event announcements and is assoc key - sound. If no sound is found the default is used.area
+ welcome_sounds Roundshift start audio
+ Var Details alert_sounds
+
+
+
+
+
+ Sounds made when announcement is receivedc
command_report_sounds
+
+
+
+
+
+ Sounds made when command report is received
custom_alert_message
+
+
+
+
+
+ Override this to have a custom message to show instead of the normal priority announcement
event_sounds
+
+
+
+
+
+ Event audio, can be used for specific event announcements and is assoc key - sound. If no sound is found the default is used.area
welcome_sounds
+
+
+
+
+
+ Roundshift start audio
+
+
+
diff --git a/datum/centcom_podlauncher.html b/datum/centcom_podlauncher.html
new file mode 100644
index 0000000000000..17381cacd945a
--- /dev/null
+++ b/datum/centcom_podlauncher.html
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+ /datum/centcom_podlauncher - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ ui_close /////////////////////////UTILITIES//////////////////
+/////////////////////////LAUNCH STYLE CHANGES//////////////////
+/////////////////////////POD EFFECTS//////////////////
+input specific tartget
+/////////////////////////TIMER DELAYS//////////////////
+/////////////////////////ADMIN SOUNDS//////////////////
+/////////////////////////STYLE CHANGES//////////////////
Proc Details ui_close
+
+ /////////////////////////UTILITIES//////////////////
+/////////////////////////LAUNCH STYLE CHANGES//////////////////
+/////////////////////////POD EFFECTS//////////////////
+input specific tartget
+/////////////////////////TIMER DELAYS//////////////////
+/////////////////////////ADMIN SOUNDS//////////////////
+/////////////////////////STYLE CHANGES//////////////////
+
+
+
diff --git a/datum/changelingprofile.html b/datum/changelingprofile.html
new file mode 100644
index 0000000000000..567e979d2a3e5
--- /dev/null
+++ b/datum/changelingprofile.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /datum/changelingprofile - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details profile_snapshot
+
+
+
+
+
+ Icon snapshot of the profile
+
+
+
diff --git a/datum/chatmessage.html b/datum/chatmessage.html
new file mode 100644
index 0000000000000..58e4464e42e27
--- /dev/null
+++ b/datum/chatmessage.html
@@ -0,0 +1,179 @@
+
+
+
+
+
+
+ /datum/chatmessage - SPLURT Station 13
+
+
+
+
+
+
+Datum for generating a message overlay on the map
Vars
+ approx_lines Contains the approximate amount of lines for height decay
+ current_z_idx The current index used for adjusting the layer of each sequential chat message such that recent messages will overlay older ones
+ eol_complete Contains the time that the EOL for the message will be complete, used for qdel scheduling
+ message The visual element of the chat messsage
+ message_loc The location in which the message is appearing
+ next Contains the reference to the next chatmessage in the bucket, used by runechat subsystem
+ owned_by The client who heard this message
+ prev Contains the reference to the previous chatmessage in the bucket, used by runechat subsystem
+ scheduled_destruction Contains the scheduled destruction time, used for scheduling EOL Procs
+ New Constructs a chat message overlay
+ colorize_string Gets a color for a name, will return the same color for a given string consistently within a round.atom
+ end_of_life Cached icons to show what language the user is speaking
+Applies final animations to overlay CHAT_MESSAGE_EOL_FADE deciseconds prior to message deletion
+Arguments:
+ enter_subsystem Enters the runechat subsystem with this chatmessage, inserting it into the end-of-life queue
+ generate_image Generates a chat message image representation
+ leave_subsystem Removes this chatmessage datum from the runechat subsystem
+ on_parent_qdel Calls qdel on the chatmessage when its parent is deleted, used to register qdel signal
+ Var Details approx_lines
+
+
+
+
+
+ Contains the approximate amount of lines for height decay
current_z_idx
+
+
+
+
+
+ The current index used for adjusting the layer of each sequential chat message such that recent messages will overlay older ones
eol_complete
+
+
+
+
+
+ Contains the time that the EOL for the message will be complete, used for qdel scheduling
message
+
+
+
+
+
+ The visual element of the chat messsage
message_loc
+
+
+
+
+
+ The location in which the message is appearing
+ Contains the reference to the next chatmessage in the bucket, used by runechat subsystem
owned_by
+
+
+
+
+
+ The client who heard this message
+ Contains the reference to the previous chatmessage in the bucket, used by runechat subsystem
scheduled_destruction
+
+
+
+
+
+ Contains the scheduled destruction time, used for scheduling EOL
Proc Details New(text, /atom /target, /mob /owner, /datum /language/language, /list/extra_classes, lifespan)
+
+
+
+
+
+ Constructs a chat message overlay
+Arguments:
+
+text - The text content of the overlay
+target - The target atom to display the overlay at
+owner - The mob that owns this overlay, only this mob will be able to view it
+language - The language this message was spoken in
+extra_classes - Extra classes to apply to the span that holds the text
+lifespan - The lifespan of the message in deciseconds
+ colorize_string(name, sat_shift, lum_shift)
+
+
+
+
+
+ Gets a color for a name, will return the same color for a given string consistently within a round.atom
+Note that this proc aims to produce pastel-ish colors using the HSL colorspace. These seem to be favorable for displaying on the map.
+Arguments:
+
+name - The name to generate a color for
+sat_shift - A value between 0 and 1 that will be multiplied against the saturation
+lum_shift - A value between 0 and 1 that will be multiplied against the luminescence
+ end_of_life(fadetime)
+
+
+
+
+
+ Cached icons to show what language the user is speaking
+Applies final animations to overlay CHAT_MESSAGE_EOL_FADE deciseconds prior to message deletion
+Arguments:
+
+fadetime - The amount of time to animate the message's fadeout for
+ enter_subsystem(new_sched_destruction)
+
+
+
+
+
+ Enters the runechat subsystem with this chatmessage, inserting it into the end-of-life queue
+This will also account for a chatmessage already being registered, and in which case
+the position will be updated to remove it from the previous location if necessary
+Arguments:
+
+new_sched_destruction Optional, when provided is used to update an existing message with the new specified time
+ generate_image(text, /atom /target, /mob /owner, /datum /language/language, /list/extra_classes, lifespan)
+
+
+
+
+
+ Generates a chat message image representation
+Arguments:
+
+text - The text content of the overlay
+target - The target atom to display the overlay at
+owner - The mob that owns this overlay, only this mob will be able to view it
+language - The language this message was spoken in
+extra_classes - Extra classes to apply to the span that holds the text
+lifespan - The lifespan of the message in deciseconds
+ leave_subsystem()
+
+
+
+
+
+ Removes this chatmessage datum from the runechat subsystem
on_parent_qdel()
+
+
+
+
+
+ Calls qdel on the chatmessage when its parent is deleted, used to register qdel signal
+
+
+
diff --git a/datum/chemical_reaction.html b/datum/chemical_reaction.html
new file mode 100644
index 0000000000000..8de97cecb45da
--- /dev/null
+++ b/datum/chemical_reaction.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /datum/chemical_reaction - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ priority Higher is higher priority, determines which order reactions are checked.
+ Var Details priority
+
+
+
+
+
+ Higher is higher priority, determines which order reactions are checked.
+
+
+
diff --git a/datum/client_interface.html b/datum/client_interface.html
new file mode 100644
index 0000000000000..04a4d407bb3e4
--- /dev/null
+++ b/datum/client_interface.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /datum/client_interface - SPLURT Station 13
+
+
+
+
+
+
+This should match the interface of /client wherever necessary.
Vars
+ prefs Player preferences datum for the client
+ view The view of the client, similar to /client/var/view.
+ Var Details
+ Player preferences datum for the client
view
+
+
+
+
+
+ The view of the client, similar to /client/var/view.
+
+
+
diff --git a/datum/component.html b/datum/component.html
new file mode 100644
index 0000000000000..7d8e740a7480d
--- /dev/null
+++ b/datum/component.html
@@ -0,0 +1,200 @@
+
+
+
+
+
+
+ /datum/component - SPLURT Station 13
+
+
+
+
+
+
+The component datum
+A component should be a single standalone unit
+of functionality, that works by receiving signals from it's parent
+object to provide some single functionality (i.e a slippery component)
+that makes the object it's attached to cause people to slip over.
+Useful when you want shared behaviour independent of type inheritance
Vars
+ can_transfer Only set to true if you are able to properly transfer this component
+At a minimum RegisterWithParent and UnregisterFromParent should be used
+Make sure you also implement PostTransfer for any post transfer handling
+ dupe_mode Defines how duplicate existing components are handled when added to a datum
+See COMPONENT_DUPE_*
definitions for available options
+ dupe_type The type to check for duplication
+null
means exact match on type
(default)
+Any other type means that and all subtypes
+ parent The datum this components belongs to Procs
+ CheckDupeComponent Called on a component when a component of the same type was added to the same parent with COMPONENT_DUPE_SELECTIVE
+See /datum/component/var/dupe_mode
+C
's type will always be the same of the called component
+return TRUE if you are absorbing the component, otherwise FALSE if you are fine having it exist as a duplicate component
+ Destroy Properly removes the component from parent
and cleans up references
+ InheritComponent Called on a component when a component of the same type was added to the same parent
+See /datum/component/var/dupe_mode
+C
's type will always be the same of the called component
+ Initialize Called during component creation with the same arguments as in new excluding parent.
+Do not call qdel(src)
from this function, return COMPONENT_INCOMPATIBLE
instead
+ New Create a new component.
+Additional arguments are passed to Initialize()
+ PostTransfer Callback Just after a component is transferred
+ PreTransfer Callback Just before this component is transferred
+ RegisterWithParent Register the component with the parent object
+ RemoveComponent Removes the component from parent, ends up with a null parent
+ UnregisterFromParent Unregister from our parent object
+ _GetInverseTypeList Internal proc to create a list of our type and all parent types
+ _JoinParent Internal proc to handle behaviour of components when joining a parent
+ _RemoveFromParent Internal proc to handle behaviour when being removed from a parent
+ ui_host Return the object that is the host of any UI's that this component has
+ Var Details can_transfer
+
+
+
+
+
+ Only set to true if you are able to properly transfer this component
+At a minimum RegisterWithParent and UnregisterFromParent should be used
+Make sure you also implement PostTransfer for any post transfer handling
dupe_mode
+
+
+
+
+
+ Defines how duplicate existing components are handled when added to a datum
+See COMPONENT_DUPE_*
definitions for available options
dupe_type
+
+
+
+
+
+ The type to check for duplication
+null
means exact match on type
(default)
+Any other type means that and all subtypes
parent
+
+
+
+
+
+ The datum this components belongs to
Proc Details CheckDupeComponent
+
+ Called on a component when a component of the same type was added to the same parent with COMPONENT_DUPE_SELECTIVE
+See /datum/component/var/dupe_mode
+C
's type will always be the same of the called component
+return TRUE if you are absorbing the component, otherwise FALSE if you are fine having it exist as a duplicate component
Destroy(force, silent)
+
+
+
+
+
+ Properly removes the component from parent
and cleans up references
+Arguments:
+
+force - makes it not check for and remove the component from the parent
+silent - deletes the component without sending a COMSIG_COMPONENT_REMOVING signal
+ InheritComponent
+
+ Called on a component when a component of the same type was added to the same parent
+See /datum/component/var/dupe_mode
+C
's type will always be the same of the called component
Initialize(...)
+
+
+
+
+
+ Called during component creation with the same arguments as in new excluding parent.
+Do not call qdel(src)
from this function, return COMPONENT_INCOMPATIBLE
instead
New(/list/raw_args)
+
+
+
+
+
+ Create a new component.
+Additional arguments are passed to Initialize()
+Arguments:
+
+datum/P the parent datum this component reacts to signals from
+ PostTransfer()
+
+
+
+
+
+ Callback Just after a component is transferred
+Use this to do any special setup you need to do after being moved to a new object
+Do not call qdel(src)
from this function, return COMPONENT_INCOMPATIBLE
instead
PreTransfer()
+
+
+
+
+
+ Callback Just before this component is transferred
+Use this to do any special cleanup you might need to do before being deregged from an object
RegisterWithParent()
+
+
+
+
+
+ Register the component with the parent object
+Use this proc to register with your parent object
+Overridable proc that's called when added to a new parent
RemoveComponent()
+
+
+
+
+
+ Removes the component from parent, ends up with a null parent
UnregisterFromParent()
+
+
+
+
+
+ Unregister from our parent object
+Use this proc to unregister from your parent object
+Overridable proc that's called when removed from a parent
_GetInverseTypeList(our_type)
+
+
+
+
+
+ Internal proc to create a list of our type and all parent types
_JoinParent()
+
+
+
+
+
+ Internal proc to handle behaviour of components when joining a parent
_RemoveFromParent()
+
+
+
+
+
+ Internal proc to handle behaviour when being removed from a parent
ui_host()
+
+
+
+
+
+ Return the object that is the host of any UI's that this component has
+
+
+
diff --git a/datum/component/area_sound_manager.html b/datum/component/area_sound_manager.html
new file mode 100644
index 0000000000000..0d538a04fe4a5
--- /dev/null
+++ b/datum/component/area_sound_manager.html
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+ /datum/component/area_sound_manager - SPLURT Station 13
+
+
+
+
+
+
+Allows you to set a theme for a set of areas without tying them to looping sounds explicitly
Vars
+ accepted_zs A list of "acceptable" z levels to be on. If you leave this, we're gonna delete ourselves
+ area_to_looping_type area -> looping sound type
+ our_loop Current sound loop
+ timerid The timer id of our current start delay, if it exists
+ Var Details accepted_zs
+
+
+
+
+
+ A list of "acceptable" z levels to be on. If you leave this, we're gonna delete ourselves
area_to_looping_type
+
+
+
+
+
+ area -> looping sound type
+ Current sound loop
timerid
+
+
+
+
+
+ The timer id of our current start delay, if it exists
+
+
+
diff --git a/datum/component/bodycamera_holder.html b/datum/component/bodycamera_holder.html
new file mode 100644
index 0000000000000..60abcbb6bbc0d
--- /dev/null
+++ b/datum/component/bodycamera_holder.html
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+ /datum/component/bodycamera_holder - SPLURT Station 13
+
+
+
+
+
+
+Bodycamera component
+Allows anything to have a body camera inserted into it
+ Var Details
+ The installed bodycamera
clothingtype_required
+
+
+
+
+
+ The clothing part this needs to be on. This could possibly just be done by checking the clothing's slot
Proc Details on_attackby
+
+ When items are used on it. Bodycamera/ID card
on_examine_more(/atom /source, /mob /user, /list/examine_list)
+
+
+
+
+
+ When examining
on_screwdriver_act
+
+ When a screwdriver is used on it
on_unequip(/mob /living /source, force, /atom /newloc, no_move, invdrop, silent)
+
+
+
+
+
+ When the camera holder is unequipped
+
+
+
diff --git a/datum/component/combat_mode.html b/datum/component/combat_mode.html
new file mode 100644
index 0000000000000..115b5ecf1518a
--- /dev/null
+++ b/datum/component/combat_mode.html
@@ -0,0 +1,114 @@
+
+
+
+
+
+
+ /datum/component/combat_mode - SPLURT Station 13
+
+
+
+
+
+
+Combat mode component. It makes the user face whichever atom the mouse pointer is hovering,
+amongst other things designed outside of this file, namely PvP and PvE stuff, hence the name.
+Can be toggled on and off by clicking the screen hud object or by pressing the assigned hotkey (default 'C')
Procs
+ check_flags Returns a field of flags that are contained in both the second arg and our bitfield variable.
+ disable_combat_mode Disables combat mode. Please use 'safe_disable_combat_mode' instead, if you wish to also disable the toggle flag.
+ enable_combat_mode Enables combat mode. Please use 'safe_enable_combat_mode' instead, if you wish to also enable the toggle flag.
+ onMouseMove Changes the user direction to (try) match the pointer.
+ on_death Disables combat mode upon death.
+ on_logout Disables combat mode upon logout
+ on_mob_hud_created Creates the hud screen object.
+ on_move Changes the user direction to (try) keep match the pointer.
+ safe_disable_combat_mode Disables intentionally being in combat mode. Please try to use the COMSIG_COMBAT_MODE_CHECK signal for feedback when possible.
+ safe_enable_combat_mode Enables intentionally being in combat mode. Please try to use the COMSIG_COMBAT_MODE_CHECK signal for feedback when possible.
+ update_combat_lock Combat mode can be locked out, forcibly disabled by a status trait.
+ user_toggle_intentional_combat_mode Toggles whether the user is intentionally in combat mode. THIS should be the proc you generally use! Has built in visual/to other player feedback, as well as an audible cue to ourselves.
Proc Details check_flags
+
+ Returns a field of flags that are contained in both the second arg and our bitfield variable.
disable_combat_mode(/mob /living /source, silent, forced, visible, locked, playsound)
+
+
+
+
+
+ Disables combat mode. Please use 'safe_disable_combat_mode' instead, if you wish to also disable the toggle flag.
enable_combat_mode(/mob /living /source, silent, forced, visible, locked, playsound)
+
+
+
+
+
+ Enables combat mode. Please use 'safe_enable_combat_mode' instead, if you wish to also enable the toggle flag.
onMouseMove(/mob /source, object, location, control, params)
+
+
+
+
+
+ Changes the user direction to (try) match the pointer.
on_death
+
+ Disables combat mode upon death.
on_logout
+
+ Disables combat mode upon logout
on_mob_hud_created(/mob /source)
+
+
+
+
+
+ Creates the hud screen object.
on_move
+
+ Changes the user direction to (try) keep match the pointer.
safe_disable_combat_mode
+
+ Disables intentionally being in combat mode. Please try to use the COMSIG_COMBAT_MODE_CHECK signal for feedback when possible.
safe_enable_combat_mode
+
+ Enables intentionally being in combat mode. Please try to use the COMSIG_COMBAT_MODE_CHECK signal for feedback when possible.
update_combat_lock()
+
+
+
+
+
+ Combat mode can be locked out, forcibly disabled by a status trait.
user_toggle_intentional_combat_mode
+
+ Toggles whether the user is intentionally in combat mode. THIS should be the proc you generally use! Has built in visual/to other player feedback, as well as an audible cue to ourselves.
+
+
+
diff --git a/datum/component/construction/mecha/powerarmor.html b/datum/component/construction/mecha/powerarmor.html
new file mode 100644
index 0000000000000..d50f6974a26c5
--- /dev/null
+++ b/datum/component/construction/mecha/powerarmor.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /datum/component/construction/mecha/powerarmor - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ get_steps Better than writing all of that new crap for something that's not even a mech.
Proc Details get_steps()
+
+
+
+
+
+ Better than writing all of that new crap for something that's not even a mech.
+
+
+
diff --git a/datum/component/container_item.html b/datum/component/container_item.html
new file mode 100644
index 0000000000000..56f63c36dc210
--- /dev/null
+++ b/datum/component/container_item.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /datum/component/container_item - SPLURT Station 13
+
+
+
+
+
+
+Container item, an item which can be stored by specialized containers.
Procs
+ try_attach Called when parent is added to the container.
Proc Details try_attach
+
+ Called when parent is added to the container.
+
+
+
diff --git a/datum/component/dejavu.html b/datum/component/dejavu.html
new file mode 100644
index 0000000000000..fcb4774d6ece7
--- /dev/null
+++ b/datum/component/dejavu.html
@@ -0,0 +1,110 @@
+
+
+
+
+
+
+ /datum/component/dejavu - SPLURT Station 13
+
+
+
+
+
+
+A component to reset the parent to its previous state after some time passes
Vars
+ brain_loss The starting value of brain loss at the beginning of the effect
+ brute_loss The starting value of brute loss at the beginning of the effect
+This only applies to simple animals
+ clone_loss The starting value of clone loss at the beginning of the effect
+ integrity The starting value of integrity at the beginning of the effect
+This only applies to objects
+ oxy_loss The starting value of oxygen loss at the beginning of the effect
+ rewind_interval How long to wait between each rewind
+ rewind_type Determined by the type of the parent so different behaviours can happen per type
+ rewinds_remaining How many rewinds will happen before the effect ends
+ saved_bodyparts A list of body parts saved at the beginning of the effect
+ starting_turf The turf the parent was on when this components was applied, they get moved back here after the duration
+ tox_loss The starting value of toxin loss at the beginning of the effect
+ Var Details brain_loss
+
+
+
+
+
+ The starting value of brain loss at the beginning of the effect
brute_loss
+
+
+
+
+
+ The starting value of brute loss at the beginning of the effect
+This only applies to simple animals
clone_loss
+
+
+
+
+
+ The starting value of clone loss at the beginning of the effect
integrity
+
+
+
+
+
+ The starting value of integrity at the beginning of the effect
+This only applies to objects
oxy_loss
+
+
+
+
+
+ The starting value of oxygen loss at the beginning of the effect
rewind_interval
+
+
+
+
+
+ How long to wait between each rewind
rewind_type
+
+
+
+
+
+ Determined by the type of the parent so different behaviours can happen per type
rewinds_remaining
+
+
+
+
+
+ How many rewinds will happen before the effect ends
saved_bodyparts
+ – /list/datum/saved_bodypart
+
+
+
+
+ A list of body parts saved at the beginning of the effect
starting_turf
+
+
+
+
+
+ The turf the parent was on when this components was applied, they get moved back here after the duration
tox_loss
+
+
+
+
+
+ The starting value of toxin loss at the beginning of the effect
+
+
+
diff --git a/datum/component/edible.html b/datum/component/edible.html
new file mode 100644
index 0000000000000..819c0c114e0a9
--- /dev/null
+++ b/datum/component/edible.html
@@ -0,0 +1,134 @@
+
+
+
+
+
+
+ /datum/component/edible - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ after_eat Callback to be ran for when you take a bite of something
+ bite_consumption Amount of reagents taken per bite
+ bitecount Amount of bites taken so far
+ eat_time Amount of seconds it takes to eat this food
+ eatverbs Message to send when eating
+ food_flags Flags for food
+ foodtypes Bitfield of the types of this food
+ junkiness Defines how much it lowers someones satiety (Need to eat, essentialy)
+ last_check_time Last time we checked for food likes Procs
+ CanConsume Checks whether or not the eater can actually consume the food
+ On_Consume Delete the item when it is fully eaten
+ TakeBite This function lets the eater take a bite and transfers the reagents to the eater.
+ TryToEat All the checks for the act of eating itself and
+ UseByAnimal Ability to feed food to puppers
+ checkLiked Check foodtypes to see if we should send a moodlet
+ Var Details
+ Callback to be ran for when you take a bite of something
bite_consumption
+
+
+
+
+
+ Amount of reagents taken per bite
bitecount
+
+
+
+
+
+ Amount of bites taken so far
eat_time
+
+
+
+
+
+ Amount of seconds it takes to eat this food
eatverbs
+
+
+
+
+
+ Message to send when eating
food_flags
+
+
+
+
+
+ Flags for food
foodtypes
+
+
+
+
+
+ Bitfield of the types of this food
junkiness
+
+
+
+
+
+ Defines how much it lowers someones satiety (Need to eat, essentialy)
last_check_time
+
+
+
+
+
+ Last time we checked for food likes
Proc Details CanConsume
+
+ Checks whether or not the eater can actually consume the food
On_Consume
+
+ Delete the item when it is fully eaten
TakeBite
+
+ This function lets the eater take a bite and transfers the reagents to the eater.
TryToEat
+
+ All the checks for the act of eating itself and
UseByAnimal
+
+ Ability to feed food to puppers
checkLiked(fraction, /mob /M)
+
+
+
+
+
+ Check foodtypes to see if we should send a moodlet
+
+
+
diff --git a/datum/component/embedded.html b/datum/component/embedded.html
new file mode 100644
index 0000000000000..381b70974272a
--- /dev/null
+++ b/datum/component/embedded.html
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+ /datum/component/embedded - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ harmful if both our pain multiplier and jostle pain multiplier are 0, we're harmless and can omit most of the damage related stuff Procs
+ Topic Someone is ripping out the item from the turf by hand
+ byeItemCarbon Something deleted or moved our weapon while it was embedded, how rude!
+ fallOutCarbon Called when then item randomly falls out of a carbon. This handles the damage and descriptors, then calls safe_remove()
+ initCarbon //////////HUMAN PROCS////////////////
+ initTurf ///////////TURF PROCS////////////////
+ itemMoved This proc handles if something knocked the invisible item loose from the turf somehow (probably an explosion). Just make it visible and say it fell loose, then get outta here.
+ jostleCheck Called every time a carbon with a harmful embed moves, rolling a chance for the item to cause pain. The chance is halved if the carbon is crawling or walking.
+ processCarbon Items embedded/stuck to carbons both check whether they randomly fall out (if applicable), as well as if the target mob and limb still exists.
+Items harmfully embedded in carbons have an additional check for random pain (if applicable)
+ ripOutCarbon Called when a carbon with an object embedded/stuck to them inspects themselves and clicks the appropriate link to begin ripping the item out. This handles the ripping attempt, descriptors, and dealing damage, then calls safe_remove()
+ safeRemoveCarbon This proc handles the final step and actual removal of an embedded/stuck item from a carbon, whether or not it was actually removed safely.
+Pass TRUE for to_hands if we want it to go to the victim's hands when they pull it out
+ Var Details harmful
+
+
+
+
+
+ if both our pain multiplier and jostle pain multiplier are 0, we're harmless and can omit most of the damage related stuff
Proc Details Topic(/datum /source, href_list)
+
+
+
+
+
+ Someone is ripping out the item from the turf by hand
byeItemCarbon()
+
+
+
+
+
+ Something deleted or moved our weapon while it was embedded, how rude!
fallOutCarbon()
+
+
+
+
+
+ Called when then item randomly falls out of a carbon. This handles the damage and descriptors, then calls safe_remove()
initCarbon()
+
+
+
+
+
+ //////////HUMAN PROCS////////////////
+Set up an instance of embedding for a carbon. This is basically an extension of Initialize() so not much to say
initTurf
+
+ ///////////TURF PROCS////////////////
+Turfs are much lower maintenance, since we don't care if they're in pain, but since they don't bleed or scream, we draw an overlay to show their status.
+The only difference pointy/sticky items make here is text descriptors and pointy objects making a spark shower on impact.
itemMoved()
+
+
+
+
+
+ This proc handles if something knocked the invisible item loose from the turf somehow (probably an explosion). Just make it visible and say it fell loose, then get outta here.
jostleCheck()
+
+
+
+
+
+ Called every time a carbon with a harmful embed moves, rolling a chance for the item to cause pain. The chance is halved if the carbon is crawling or walking.
processCarbon()
+
+
+
+
+
+ Items embedded/stuck to carbons both check whether they randomly fall out (if applicable), as well as if the target mob and limb still exists.
+Items harmfully embedded in carbons have an additional check for random pain (if applicable)
+ Called when a carbon with an object embedded/stuck to them inspects themselves and clicks the appropriate link to begin ripping the item out. This handles the ripping attempt, descriptors, and dealing damage, then calls safe_remove()
safeRemoveCarbon(to_hands)
+
+
+
+
+
+ This proc handles the final step and actual removal of an embedded/stuck item from a carbon, whether or not it was actually removed safely.
+Pass TRUE for to_hands if we want it to go to the victim's hands when they pull it out
+
+
+
diff --git a/datum/component/explodable.html b/datum/component/explodable.html
new file mode 100644
index 0000000000000..21684a22bff5f
--- /dev/null
+++ b/datum/component/explodable.html
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+ /datum/component/explodable - SPLURT Station 13
+
+
+
+
+
+
+Component specifically for explosion sensetive things, currently only applies to heat based explosions but can later perhaps be used for things that are dangerous to handle carelessly like nitroglycerin.
Procs
+ detonate Expldoe and remove the object
+ explodable_attack Called when you use this object to attack sopmething
+ explodable_attack_zone Called when you attack a specific body part of the thing this is equipped on. Useful for exploding pants.
+ is_hitting_zone Checks if we're hitting the zone this component is covering
Proc Details detonate()
+
+
+
+
+
+ Expldoe and remove the object
explodable_attack
+
+ Called when you use this object to attack sopmething
explodable_attack_zone(/datum /source, damage, damagetype, def_zone)
+
+
+
+
+
+ Called when you attack a specific body part of the thing this is equipped on. Useful for exploding pants.
is_hitting_zone(def_zone)
+
+
+
+
+
+ Checks if we're hitting the zone this component is covering
+
+
+
diff --git a/datum/component/field_of_vision.html b/datum/component/field_of_vision.html
new file mode 100644
index 0000000000000..cdad38e175ec3
--- /dev/null
+++ b/datum/component/field_of_vision.html
@@ -0,0 +1,191 @@
+
+
+
+
+
+
+ /datum/component/field_of_vision - SPLURT Station 13
+
+
+
+
+
+
+Field of Vision component. Does totally what you probably think it does,
+ergo preventing players from seeing what's behind them.
Vars
+ adj_mask A circle image used to somewhat uncover the adjacent portion of the shadow cone, making mobs and objects behind us somewhat visible.
+The owner mask is still required for those mob going over the default 32x32 px size btw.
+ angle How much is the cone rotated clockwise, purely backend. Please use rotate_shadow_cone() if you must.
+ current_fov_size The current screen size this field of vision is meant to fit for.
+ fov That special invisible, almost neigh indestructible movable
+that holds both shadow cone mask and image and follows the player around.
+ nested_locs A list of nested locations the mob is in, to ensure the above image works correctly.
+ owner_mask An image whose render_source is kept up to date to prevent the mob (or the topmost movable holding it) from being hidden by the mask.
+Will make it use vis_contents instead once a few byonds bugs with images and vis contents are fixed.
+ rot_scale Used to scale the shadow cone when rotating it to fit over the edges of the screen.
+ shadow_angle The inner angle of this cone, right hardset to 90, 180, or 270 degrees, until someone figures out a way to make it dynamic.
+ shadow_mask The mask portion of the cone, placed on a * render target plane so while not visible it still applies the filter.
+ visual_shadow The visual portion of the cone, placed on the highest layer of the wall plane
+ width_n_height_offsets A static list of offsets based on icon width and height, because render sources are centered unlike most other visuals,
+and that gives us some problems when the icon is larger or smaller than world.icon_size Procs
+ generate_fov_holder Generates the holder and images (if not generated yet) and adds them to client.images.
+Run when the component is registered to a player mob, or upon login.
+ hide_fov Hides the shadow, other visibility comsig procs will take it into account. Called when the mob dies.
+ manual_centered_render_source A hacky comsig proc for things that somehow decide to change icon on the go. may make a change_icon_file() proc later but...
+ on_change_view Called when the client view size is changed.
+ on_loc_moved Pretty much like the above, but meant for other movables the mob is stored in (bodybags, boxes, mechs etc).
+ on_mob_moved Called when the owner mob moves around. Used to keep shadow located right behind us,
+As well as modify the owner mask to match the topmost item.
+ on_reset_perspective Hides the shadow when looking through other items, shows it otherwise.
+ resize_fov Resizes the shadow to match the current screen size.
+Run when the client view size is changed, or if the player has a viewsize different than "15x15" on login/comp registration.
+ rotate_shadow_cone Rotates the shadow cone to a certain degree. Backend shenanigans.
+ show_fov Shows the shadow. Called when the mob is revived.
+ Var Details adj_mask
+
+
+
+
+
+ A circle image used to somewhat uncover the adjacent portion of the shadow cone, making mobs and objects behind us somewhat visible.
+The owner mask is still required for those mob going over the default 32x32 px size btw.
angle
+
+
+
+
+
+ How much is the cone rotated clockwise, purely backend. Please use rotate_shadow_cone() if you must.
current_fov_size
+
+
+
+
+
+ The current screen size this field of vision is meant to fit for.
+ That special invisible, almost neigh indestructible movable
+that holds both shadow cone mask and image and follows the player around.
nested_locs
+
+
+
+
+
+ A list of nested locations the mob is in, to ensure the above image works correctly.
owner_mask
+
+
+
+
+
+ An image whose render_source is kept up to date to prevent the mob (or the topmost movable holding it) from being hidden by the mask.
+Will make it use vis_contents instead once a few byonds bugs with images and vis contents are fixed.
rot_scale
+
+
+
+
+
+ Used to scale the shadow cone when rotating it to fit over the edges of the screen.
shadow_angle
+
+
+
+
+
+ The inner angle of this cone, right hardset to 90, 180, or 270 degrees, until someone figures out a way to make it dynamic.
shadow_mask
+
+
+
+
+
+ The mask portion of the cone, placed on a * render target plane so while not visible it still applies the filter.
visual_shadow
+
+
+
+
+
+ The visual portion of the cone, placed on the highest layer of the wall plane
width_n_height_offsets
+
+
+
+
+
+ A static list of offsets based on icon width and height, because render sources are centered unlike most other visuals,
+and that gives us some problems when the icon is larger or smaller than world.icon_size
Proc Details generate_fov_holder(/mob /M, _angle)
+
+
+
+
+
+ Generates the holder and images (if not generated yet) and adds them to client.images.
+Run when the component is registered to a player mob, or upon login.
hide_fov(/mob /source)
+
+
+
+
+
+ Hides the shadow, other visibility comsig procs will take it into account. Called when the mob dies.
manual_centered_render_source(/mob /source, old_icon)
+
+
+
+
+
+ A hacky comsig proc for things that somehow decide to change icon on the go. may make a change_icon_file() proc later but...
on_change_view(/mob /source, client, /list/old_view, /list/view)
+
+
+
+
+
+ Called when the client view size is changed.
on_loc_moved
+
+ Pretty much like the above, but meant for other movables the mob is stored in (bodybags, boxes, mechs etc).
on_mob_moved(/mob /source, /atom /oldloc, dir, forced)
+
+
+
+
+
+ Called when the owner mob moves around. Used to keep shadow located right behind us,
+As well as modify the owner mask to match the topmost item.
on_reset_perspective
+
+ Hides the shadow when looking through other items, shows it otherwise.
resize_fov(/list/old_view, /list/view)
+
+
+
+
+
+ Resizes the shadow to match the current screen size.
+Run when the client view size is changed, or if the player has a viewsize different than "15x15" on login/comp registration.
rotate_shadow_cone(new_angle)
+
+
+
+
+
+ Rotates the shadow cone to a certain degree. Backend shenanigans.
show_fov(/mob /source)
+
+
+
+
+
+ Shows the shadow. Called when the mob is revived.
+
+
+
diff --git a/datum/component/footstep.html b/datum/component/footstep.html
new file mode 100644
index 0000000000000..ad5332bdc888c
--- /dev/null
+++ b/datum/component/footstep.html
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+ /datum/component/footstep - SPLURT Station 13
+
+
+
+
+
+
+Footstep component. Plays footsteps at parents location when it is appropriate.
Vars
+ e_range e_range stands for extra range - aka how far the sound can be heard. This is added to the base value and ignored if there isn't a base value.
+ footstep_sounds This can be a list OR a soundfile OR null. Determines whatever sound gets played.
+ footstep_type footstep_type is a define which determines what kind of sounds should get chosen.
+ steps How many steps the parent has taken since the last time a footstep was played
+ volume volume determines the extra volume of the footstep. This is multiplied by the base volume, should there be one. Procs
+ prepare_step Prepares a footstep. Determines if it should get played. Returns the turf it should get played on. Note that it is always a /turf/open
+ Var Details e_range
+
+
+
+
+
+ e_range stands for extra range - aka how far the sound can be heard. This is added to the base value and ignored if there isn't a base value.
+ This can be a list OR a soundfile OR null. Determines whatever sound gets played.
+ footstep_type is a define which determines what kind of sounds should get chosen.
steps
+
+
+
+
+
+ How many steps the parent has taken since the last time a footstep was played
volume
+
+
+
+
+
+ volume determines the extra volume of the footstep. This is multiplied by the base volume, should there be one.
Proc Details prepare_step()
+
+
+
+
+
+ Prepares a footstep. Determines if it should get played. Returns the turf it should get played on. Note that it is always a /turf/open
+
+
+
diff --git a/datum/component/glory_kill.html b/datum/component/glory_kill.html
new file mode 100644
index 0000000000000..b8204f00f3816
--- /dev/null
+++ b/datum/component/glory_kill.html
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+ /datum/component/glory_kill - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ crusher_drop_mod Multiply crusher drop chance by (only for asteroid mobs)
+ health_given Health to give to our executioner
+ messages_crusher SAME AS ABOVE BUT CRUSHER
+ messages_pka SAME AS ABOVE THE ABOVE BUT PKA
+ messages_pka_bayonet SAME AS ABOVE BUT WITH A HONKING KNIFE ON THE FUCKING THING
+ messages_unarmed WHAT THE FUCK ARE THE MESSAGES SAID BY THIS FUCK WHEN HE'S GLORY KILLED WITH AN EMPTY HAND?
+ ready Is this ready to be glory killed
+ threshold With how much health our sate shall be sealed Procs
+ examined Let's give our slayer a chance (totally not abusable by spamming alt-click)
+ Var Details crusher_drop_mod
+
+
+
+
+
+ Multiply crusher drop chance by (only for asteroid mobs)
health_given
+
+
+
+
+
+ Health to give to our executioner
messages_crusher
+
+
+
+
+
+ SAME AS ABOVE BUT CRUSHER
messages_pka
+
+
+
+
+
+ SAME AS ABOVE THE ABOVE BUT PKA
messages_pka_bayonet
+
+
+
+
+
+ SAME AS ABOVE BUT WITH A HONKING KNIFE ON THE FUCKING THING
messages_unarmed
+
+
+
+
+
+ WHAT THE FUCK ARE THE MESSAGES SAID BY THIS FUCK WHEN HE'S GLORY KILLED WITH AN EMPTY HAND?
ready
+
+
+
+
+
+ Is this ready to be glory killed
threshold
+
+
+
+
+
+ With how much health our sate shall be sealed
Proc Details examined
+
+ Let's give our slayer a chance (totally not abusable by spamming alt-click)
+
+
+
diff --git a/datum/component/gps/item.html b/datum/component/gps/item.html
new file mode 100644
index 0000000000000..c5bbcdddf2654
--- /dev/null
+++ b/datum/component/gps/item.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+ /datum/component/gps/item - SPLURT Station 13
+
+
+
+
+
+
+GPS component subtype. Only gps/item's can be used to open the UI.
Vars
+ state UI state of GPS, altering when it can be used. Procs
+ interact Called on COMSIG_ITEM_ATTACK_SELF
+ on_AltClick Calls toggletracking
+ on_emp_act Called on COMSIG_ATOM_EMP_ACT
+ on_examine Called on COMSIG_PARENT_EXAMINE
+ reboot Restarts the GPS after getting turned off by an EMP.
+ toggletracking Toggles the tracking for the gps
+ Var Details
+ UI state of GPS, altering when it can be used.
Proc Details interact
+
+ Called on COMSIG_ITEM_ATTACK_SELF
on_AltClick
+
+ Calls toggletracking
on_emp_act(/datum /source, severity)
+
+
+
+
+
+ Called on COMSIG_ATOM_EMP_ACT
on_examine(/datum /source, /mob /user, /list/examine_list)
+
+
+
+
+
+ Called on COMSIG_PARENT_EXAMINE
reboot()
+
+
+
+
+
+ Restarts the GPS after getting turned off by an EMP.
toggletracking
+
+ Toggles the tracking for the gps
+
+
+
diff --git a/datum/component/identification.html b/datum/component/identification.html
new file mode 100644
index 0000000000000..6012740bc89da
--- /dev/null
+++ b/datum/component/identification.html
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+ /datum/component/identification - SPLURT Station 13
+
+
+
+
+
+
+Identification components
+ Var Details additional_examine_text
+
+
+
+
+
+ If this is set, show this on examine to the examiner if they know how to use it.
deconstructor_reveal_text
+
+
+
+
+
+ Added to deconstructive analyzer say on success if set
identification_effect_flags
+
+
+
+
+
+ General flags for what we should do.
identification_flags
+
+
+
+
+
+ General flags for how we should work.
identification_method_flags
+
+
+
+
+
+ General flags for how we can be identified.
+
+
+
diff --git a/datum/component/identification/syndicate.html b/datum/component/identification/syndicate.html
new file mode 100644
index 0000000000000..4e2ab0e696bf7
--- /dev/null
+++ b/datum/component/identification/syndicate.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ /datum/component/identification/syndicate - SPLURT Station 13
+
+
+
+
+
+
+Identification component subtype - Syndicate
+Checks if the user is a traitor.
+
+
+
diff --git a/datum/component/interaction_menu_granter.html b/datum/component/interaction_menu_granter.html
new file mode 100644
index 0000000000000..9e52ddbf4de3e
--- /dev/null
+++ b/datum/component/interaction_menu_granter.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+ /datum/component/interaction_menu_granter - SPLURT Station 13
+
+
+
+
+
+
+The menu itself, only var is target which is the mob you are interacting with
Proc Details on_target_deleted
+
+ Such a shame
+ The one interacting is clicker, the interacted is clicked.
+
+
+
diff --git a/datum/component/killerqueen.html b/datum/component/killerqueen.html
new file mode 100644
index 0000000000000..8b5f9f33e7ff7
--- /dev/null
+++ b/datum/component/killerqueen.html
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+ /datum/component/killerqueen - SPLURT Station 13
+
+
+
+
+
+
+KILLER QUEEN
+Simple contact bomb component
+Blows up the first person to touch it.
Vars
+ dev dev explosion radius
+ ex_strength strength of explosion on the touch-er. 0 to disable. usually only used if the normal explosion is disabled (this is the default).
+ examine_message examine message
+ exploded did we explode
+ failure callback to invoke with (parent) when deleting without an explosion
+ flame flame explosion radius
+ heavy heavy explosion radius
+ light light explosion radius
+ living_only only triggered by living mobs
+ pre_explode callback to invoke with (parent, victim) before standard detonation - useful for losing a reference to this component or implementing custom behavior. return FALSE to prevent explosion.
+ Var Details dev
+
+
+
+
+
+ dev explosion radius
ex_strength
+
+
+
+
+
+ strength of explosion on the touch-er. 0 to disable. usually only used if the normal explosion is disabled (this is the default).
examine_message
+
+
+
+
+
+ examine message
exploded
+
+
+
+
+
+ did we explode
+ callback to invoke with (parent) when deleting without an explosion
flame
+
+
+
+
+
+ flame explosion radius
heavy
+
+
+
+
+
+ heavy explosion radius
light
+
+
+
+
+
+ light explosion radius
living_only
+
+
+
+
+
+ only triggered by living mobs
pre_explode
+
+
+
+
+
+ callback to invoke with (parent, victim) before standard detonation - useful for losing a reference to this component or implementing custom behavior. return FALSE to prevent explosion.
+
+
+
diff --git a/datum/component/knockback.html b/datum/component/knockback.html
new file mode 100644
index 0000000000000..fc9ebf0061f31
--- /dev/null
+++ b/datum/component/knockback.html
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+ /datum/component/knockback - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details throw_anchored
+
+
+
+
+
+ whether this can throw anchored targets (tables, etc)
throw_distance
+
+
+
+
+
+ distance the atom will be thrown
throw_gentle
+
+
+
+
+
+ whether this is a gentle throw (default false means people thrown into walls are stunned / take damage)
Proc Details do_knockback(/atom /target, /mob /thrower, throw_dir)
+
+
+
+
+
+ Throw a target in a direction
+Arguments:
+
+target - Target atom to throw
+thrower - Thing that caused this atom to be thrown
+throw_dir - Direction to throw the atom
+
+ triggered after a hostile simplemob attacks something
item_afterattack(/obj /item /source, /atom /target, /mob /user, proximity_flag, click_parameters)
+
+
+
+
+
+ triggered after an item attacks something
projectile_hit
+
+ triggered after a projectile hits something
+
+
+
diff --git a/datum/component/label.html b/datum/component/label.html
new file mode 100644
index 0000000000000..bbbe9115b01df
--- /dev/null
+++ b/datum/component/label.html
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+ /datum/component/label - SPLURT Station 13
+
+
+
+
+
+
+The label component.
+This component is used to manage labels applied by the hand labeler.
+Atoms can only have one instance of this component, and therefore only one label at a time.
+This is to avoid having names like "Backpack (label1) (label2) (label3)". This is annoying and abnoxious to read.
+When a player clicks the atom with a hand labeler to apply a label, this component gets applied to it.
+If the labeler is off, the component will be removed from it, and the label will be removed from its name.
Vars
+ label_name The name of the label the player is applying to the parent. Procs
+ Examine This proc will trigger when someone examines the parent.
+It will attach the text found in the body of the proc to the examine_list
and display it to the player examining the parent.
+ InheritComponent This proc will fire after the parent is hit by a hand labeler which is trying to apply another label.
+Since the parent already has a label, it will remove the old one from the parent's name, and apply the new one.
+ OnAttackby This proc will trigger when any object is used to attack the parent.
+ apply_label Applies a label to the name of the parent in the format of: "parent_name (label)"
+ remove_label Removes the label from the parent's name
+ Var Details label_name
+
+
+
+
+
+ The name of the label the player is applying to the parent.
Proc Details Examine(/datum /source, /mob /user, /list/examine_list)
+
+
+
+
+
+ This proc will trigger when someone examines the parent.
+It will attach the text found in the body of the proc to the examine_list
and display it to the player examining the parent.
+Arguments:
+
+source: The parent.
+user: The mob exmaining the parent.
+examine_list: The current list of text getting passed from the parent's normal examine() proc.
+ InheritComponent
+
+ This proc will fire after the parent is hit by a hand labeler which is trying to apply another label.
+Since the parent already has a label, it will remove the old one from the parent's name, and apply the new one.
OnAttackby
+
+ This proc will trigger when any object is used to attack the parent.
+If the attacking object is not a hand labeler, it will return.
+If the attacking object is a hand labeler it will restore the name of the parent to what it was before this component was added to it, and the component will be deleted.
+Arguments:
+
+source: The parent.
+attacker: The object that is hitting the parent.
+user: The mob who is wielding the attacking object.
+ apply_label()
+
+
+
+
+
+ Applies a label to the name of the parent in the format of: "parent_name (label)"
remove_label()
+
+
+
+
+
+ Removes the label from the parent's name
+
+
+
diff --git a/datum/component/material_container.html b/datum/component/material_container.html
new file mode 100644
index 0000000000000..c6f7684c9082d
--- /dev/null
+++ b/datum/component/material_container.html
@@ -0,0 +1,249 @@
+
+
+
+
+
+
+ /datum/component/material_container - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ after_insert A callback invoked after materials are inserted into this container
+ allowed_materials The list of materials that this material container can accept
+ last_inserted_id The last main material that was inserted into this container
+ materials Map of material ref -> amount
+ max_amount The maximum amount of materials this material container can contain
+ precise_insertion Whether or not this material container allows specific amounts from sheets to be inserted
+ precondition A callback invoked before materials are inserted into this container
+ total_amount The total amount of materials this material container contains Procs
+ Initialize Sets up the proper signals and fills the list of materials with the appropriate references.
+ amount2sheet Turns a material amount into the amount of sheets it should output
+ can_hold_material The default check for whether we can add materials to this material container.
+ can_insert_amount_mat Proc for checking if there is room in the component, returning the amount or else the amount lacking.
+ get_categories Returns all the categories in a recipe.
+ get_item_material_amount returns the amount of material relevant to this container; if this container does not support glass, any glass in 'I' will not be taken into account
+ get_material_amount Returns the amount of a specific material in this container.
+ has_enough_of_category Returns TRUE if you have enough of a specified material category (Which could be multiple materials)
+ has_enough_of_material Returns TRUE if you have enough of the specified material.
+ has_materials Checks if its possible to afford a certain amount of materials. Takes a dictionary of materials.
+ has_space Proc that returns TRUE if the container has space
+ insert_amount_mat For inserting an amount of material
+ insert_item Proc specifically for inserting items, returns the amount of materials entered.
+ insert_item_materials Inserts the relevant materials from an item into this material container.
+ on_attackby Proc that allows players to fill the parent with mats
+ retrieve_all Proc to get all the materials and dump them as sheets
+ retrieve_sheets For spawning mineral sheets at a specific location. Used by machines to output sheets.
+ sheet2amount Turns an amount of sheets into the amount of material amount it should output
+ transer_amt_to Proc for transfering materials to another container.
+ use_amount_mat Uses an amount of a specific material, effectively removing it.
+ use_materials For consuming a dictionary of materials. mats is the map of materials to use and the corresponding amounts, example: list(M/datum/material/glass =100, datum/material/iron=200)
+ user_insert Proc used for when player inserts materials
+ Var Details after_insert
+
+
+
+
+
+ A callback invoked after materials are inserted into this container
allowed_materials
+
+
+
+
+
+ The list of materials that this material container can accept
last_inserted_id
+
+
+
+
+
+ The last main material that was inserted into this container
materials
+
+
+
+
+
+ Map of material ref -> amount
max_amount
+
+
+
+
+
+ The maximum amount of materials this material container can contain
precise_insertion
+
+
+
+
+
+ Whether or not this material container allows specific amounts from sheets to be inserted
precondition
+
+
+
+
+
+ A callback invoked before materials are inserted into this container
total_amount
+
+
+
+
+
+ The total amount of materials this material container contains
Proc Details Initialize(/list/mat_list, max_amt, _show_on_examine, /list/allowed_types, /datum /callback /_precondition, /datum /callback /_after_insert, _disable_attackby)
+
+
+
+
+
+ Sets up the proper signals and fills the list of materials with the appropriate references.
amount2sheet(amt)
+
+
+
+
+
+ Turns a material amount into the amount of sheets it should output
can_hold_material
+
+ The default check for whether we can add materials to this material container.
+Arguments:
+
+mat : The material we are checking for insertability.
+ can_insert_amount_mat(amt, mat)
+
+
+
+
+
+ Proc for checking if there is room in the component, returning the amount or else the amount lacking.
get_categories(/list/mats)
+
+
+
+
+
+ Returns all the categories in a recipe.
get_item_material_amount
+
+ returns the amount of material relevant to this container; if this container does not support glass, any glass in 'I' will not be taken into account
get_material_amount
+
+ Returns the amount of a specific material in this container.
has_enough_of_category(category, amount, multiplier)
+
+
+
+
+
+ Returns TRUE if you have enough of a specified material category (Which could be multiple materials)
has_enough_of_material
+
+ Returns TRUE if you have enough of the specified material.
has_materials(/list/mats, multiplier)
+
+
+
+
+
+ Checks if its possible to afford a certain amount of materials. Takes a dictionary of materials.
has_space(amt)
+
+
+
+
+
+ Proc that returns TRUE if the container has space
insert_amount_mat
+
+ For inserting an amount of material
insert_item
+
+ Proc specifically for inserting items, returns the amount of materials entered.
insert_item_materials
+
+ Inserts the relevant materials from an item into this material container.
+Arguments:
+
+source : The source of the materials we are inserting.
+multiplier: The multiplier for the materials being inserted.
+breakdown_flags: The breakdown bitflags that will be used to retrieve the materials from the source
+ on_attackby
+
+ Proc that allows players to fill the parent with mats
retrieve_all(target)
+
+
+
+
+
+ Proc to get all the materials and dump them as sheets
retrieve_sheets
+
+ For spawning mineral sheets at a specific location. Used by machines to output sheets.
sheet2amount(sheet_amt)
+
+
+
+
+
+ Turns an amount of sheets into the amount of material amount it should output
+ Proc for transfering materials to another container.
use_amount_mat
+
+ Uses an amount of a specific material, effectively removing it.
use_materials(/list/mats, multiplier)
+
+
+
+
+
+ For consuming a dictionary of materials. mats is the map of materials to use and the corresponding amounts, example: list(M/datum/material/glass =100, datum/material/iron=200)
user_insert
+
+ Proc used for when player inserts materials
+
+
+
diff --git a/datum/component/mood.html b/datum/component/mood.html
new file mode 100644
index 0000000000000..cf75f7b33cab4
--- /dev/null
+++ b/datum/component/mood.html
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+ /datum/component/mood - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ direct_sanity_drain Causes direct drain of someone's sanity, call it with a numerical value corresponding how badly you want to hurt their sanity
+ on_revive Called when parent is revived.
+ update_mood Called after moodevent/s have been added/removed.
Proc Details direct_sanity_drain(/datum /source, amount)
+
+
+
+
+
+ Causes direct drain of someone's sanity, call it with a numerical value corresponding how badly you want to hurt their sanity
on_revive(/datum /source, full_heal)
+
+
+
+
+
+ Called when parent is revived.
update_mood()
+
+
+
+
+
+ Called after moodevent/s have been added/removed.
+
+
+
diff --git a/datum/component/multiple_lives.html b/datum/component/multiple_lives.html
new file mode 100644
index 0000000000000..77b7d464e9344
--- /dev/null
+++ b/datum/component/multiple_lives.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+ /datum/component/multiple_lives - SPLURT Station 13
+
+
+
+
+
+
+A simple component that spawns a mob of the same type and transfers itself to it when parent dies.
+For more complex behaviors, use the COMSIG_ON_MULTIPLE_LIVES_RESPAWN comsig.
Vars
+ lives_left The number of respawns the living mob has left.
+ Var Details lives_left
+
+
+
+
+
+ The number of respawns the living mob has left.
+
+
+
diff --git a/datum/component/nanites.html b/datum/component/nanites.html
new file mode 100644
index 0000000000000..c3a142a52476f
--- /dev/null
+++ b/datum/component/nanites.html
@@ -0,0 +1,250 @@
+
+
+
+
+
+
+ /datum/component/nanites - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details can_be_deleted
+
+
+
+
+
+ Allow deletion
emp_desync_mod
+
+
+
+
+
+ EMP severity div for cloudsync reset chance
emp_flat_deletion_lower
+
+
+
+
+
+ EMP flat deletion lower
emp_flat_deletion_upper
+
+
+
+
+
+ EMP flat deletion upper
emp_percent_deletion_lower
+
+
+
+
+
+ EMP percent deletion lower
emp_percent_deletion_upper
+
+
+
+
+
+ EMP percent deletion upper
emp_severity_mod
+
+
+
+
+
+ EMP severity multiplier, capping to 0 to 100
minor_shock_deletion_lower
+
+
+
+
+
+ minor shock deletion lower
minor_shock_deletion_upper
+
+
+
+
+
+ minor shock deletion upper
permanent_programs
+ – /list/datum/nanite_program
+
+
+
+
+ Permanent programs - can never be deleted. does not count towards max_programs.
qdel_self_on_depletion
+
+
+
+
+
+ Delete ourselves when we're depleted.
requires_cloud_sync
+
+
+
+
+
+ Whether or not we can survive no cloud syncing without errors
shock_flat_deletion_lower
+
+
+
+
+
+ Shock flat deletion lower
shock_flat_deletion_upper
+
+
+
+
+
+ Shock flat deletion upper
shock_percent_deletion_lower
+
+
+
+
+
+ Shock percent deletion lower
shock_percent_deletion_upper
+
+
+
+
+
+ Shock percent deletion upper
start_time
+
+
+
+
+
+ Separate list of protocol programs, to avoid looping through the whole programs list when checking for conflicts
stealth
+
+
+
+
+
+ Timestamp to when the nanites were first inserted in the host
Proc Details add_permanent_program(/list/program, immutable)
+
+
+
+
+
+ Adds permanent programs
+WARNING: Has no sanity checks. Make sure you know what you are doing! (make sure programs do not conflict)
+ Adds a nanite program, replacing existing unique programs of the same type. A source program can be specified to copy its programming onto the new one.
adjust_nanites(/datum /source, amount)
+
+
+
+
+
+ Modifies the current nanite volume, then checks if the nanites are depleted or exceeding the maximum amount
check_console_locking()
+
+
+
+
+
+ Checks if we can block out console modification
check_host_lockout()
+
+
+
+
+
+ Checks if we can lock out host internal conscious modification
check_viral_prevention()
+
+
+
+
+
+ Checks if we can block out viral replica
cloud_sync()
+
+
+
+
+
+ Syncs the nanites to their assigned cloud copy, if it is available. If it is not, there is a small chance of a software error instead.
delete_nanites()
+
+
+
+
+
+ Used to rid ourselves
+Deletes nanites!
nanites_depleted()
+
+
+
+
+
+ Called when nanites are depleted.
+Deletes ourselves by default.
reject_excess_nanites()
+
+
+
+
+
+ Handles how nanites leave the host's body if they find out that they're currently exceeding the maximum supported amount
+
+IC explanation:
+Normally nanites simply discard excess volume by slowing replication or 'sweating' it out in imperceptible amounts,
+but if there is a large excess volume, likely due to a programming change that leaves them unable to support their current volume,
+the nanites attempt to leave the host as fast as necessary to prevent nanite poisoning. This can range from minor oozing to nanites
+rapidly bursting out from every possible pathway, causing temporary inconvenience to the host.
set_nanite_bar(remove)
+
+
+
+
+
+ Updates the nanite volume bar visible in diagnostic HUDs
sync
+
+ Syncs the nanite component to another, making it so programs are the same with the same programming (except activation status)
+
+
+
diff --git a/datum/component/omen.html b/datum/component/omen.html
new file mode 100644
index 0000000000000..ec0795658e2b0
--- /dev/null
+++ b/datum/component/omen.html
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+ /datum/component/omen - SPLURT Station 13
+
+
+
+
+
+
+omen.dm: For when you want someone to have a really bad day
+When you attach an omen component to someone, they start running the risk of all sorts of bad environmental injuries, like nearby vending machines randomly falling on you,
+or hitting your head really hard when you slip and fall, or... well, for now those two are all I have. More will come.
+Omens are removed once the victim is either maimed by one of the possible injuries, or if they receive a blessing (read: bashing with a bible) from the chaplain.
Vars
+ vessel Whatever's causing the omen, if there is one. Destroying the vessel won't stop the omen, but we destroy the vessel (if one exists) upon the omen ending Procs
+ check_accident check_accident() is called each step we take
+ check_bless Hijack the mood system to see if we get the blessing mood event to cancel the omen
+ check_slip If we get knocked down, see if we have a really bad slip and bash our head hard
+ Var Details vessel
+
+
+
+
+
+ Whatever's causing the omen, if there is one. Destroying the vessel won't stop the omen, but we destroy the vessel (if one exists) upon the omen ending
Proc Details check_accident
+
+ check_accident() is called each step we take
+While we're walking around, roll to see if there's any environmental hazards (currently only vending machines) on one of the adjacent tiles we can trigger.
+We do the prob() at the beginning to A. add some tension for /when/ it will strike, and B. (more importantly) ameliorate the fact that we're checking up to 5 turfs's contents each time
check_bless
+
+ Hijack the mood system to see if we get the blessing mood event to cancel the omen
check_slip
+
+ If we get knocked down, see if we have a really bad slip and bash our head hard
+
+
+
diff --git a/datum/component/pellet_cloud.html b/datum/component/pellet_cloud.html
new file mode 100644
index 0000000000000..bce5471fb8f7c
--- /dev/null
+++ b/datum/component/pellet_cloud.html
@@ -0,0 +1,218 @@
+
+
+
+
+
+
+ /datum/component/pellet_cloud - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ bodies For grenades, any /mob/living's the grenade is moved onto, see /datum/component/pellet_cloud/proc/handle_martyrs
+ hits how many pellets impacted something
+ num_pellets How many shrapnel projectiles are we responsible for tracking? May be reduced for grenades if someone dives on top of it. Defined by ammo casing for casings, derived from magnitude otherwise
+ pellet_delta For grenades, tracking how many pellets are removed due to martyrs and how many pellets are added due to the last person to touch it being on top of it
+ pellets The list of pellets we're responsible for tracking, once these are all accounted for, we finalize.
+ projectile_type What's the projectile path of the shrapnel we're shooting?
+ purple_hearts For grenades, tracking people who die covering a grenade for achievement purposes, see [/datum/component/pellet_cloud/proc/handle_martyrs()]
+ queued_delete If the parent tried deleting and we're not done yet, we send it to nullspace then delete it after
+ radius For grenades/landmines, how big is the radius of turfs we're targeting? Note this does not effect the projectiles range, only how many we generate
+ shooter for if we're an ammo casing being fired
+ targets_hit An associated list with the atom hit as the key and how many pellets they've eaten for the value, for printing aggregate messages
+ terminated how many pellets ranged out without hitting anything
+ wound_info_by_part Another associated list for hit bodyparts on carbons so we can track how much wounding potential we have for each bodypart Procs
+ create_blast_pellets create_blast_pellets() is for when we have a central point we want to shred the surroundings of with a ring of shrapnel, namely frag grenades and landmines.
+ create_casing_pellets create_casing_pellets() is for directed pellet clouds for ammo casings that have multiple pellets (buckshot and scatter lasers for instance)
+ finalize All of our pellets are accounted for, time to go target by target and tell them how many things they got hit by.
+ grenade_armed Look alive, we're armed! Now we start watching to see if anyone's covering us
+ grenade_dropped Someone dropped the grenade, so set them to the shooter in case they're on top of it when it goes off
+ grenade_moved Our grenade has moved, reset var/list/bodies so we're "on top" of any mobs currently on the tile
+ grenade_uncrossed Someone who was originally "under" the grenade has moved off the tile and is now eligible for being a martyr and "covering" it
+ handle_martyrs handle_martyrs() is used for grenades that shoot shrapnel to check if anyone threw themselves/were thrown on top of the grenade, thus absorbing a good chunk of the shrapnel
+ nullspace_parent Our grenade or landmine or caseless shell or whatever tried deleting itself, so we intervene and nullspace it until we're done here
+ on_target_qdel Someone who was originally "under" the grenade has moved off the tile and is now eligible for being a martyr and "covering" it
+ pellet_hit One of our pellets hit something, record what it was and check if we're done (terminated == num_pellets)
+ pellet_range One of our pellets disappeared due to hitting their max range (or just somehow got qdel'd), remove it from our list and check if we're done (terminated == num_pellets)
+ pew Minor convenience function for creating each shrapnel piece with circle explosions, mostly stolen from the MIRV component
+ Var Details bodies
+
+
+
+
+
+ For grenades, any /mob/living's the grenade is moved onto, see /datum/component/pellet_cloud/proc/handle_martyrs
hits
+
+
+
+
+
+ how many pellets impacted something
num_pellets
+
+
+
+
+
+ How many shrapnel projectiles are we responsible for tracking? May be reduced for grenades if someone dives on top of it. Defined by ammo casing for casings, derived from magnitude otherwise
pellet_delta
+
+
+
+
+
+ For grenades, tracking how many pellets are removed due to martyrs and how many pellets are added due to the last person to touch it being on top of it
pellets
+
+
+
+
+
+ The list of pellets we're responsible for tracking, once these are all accounted for, we finalize.
projectile_type
+
+
+
+
+
+ What's the projectile path of the shrapnel we're shooting?
purple_hearts
+
+
+
+
+
+ For grenades, tracking people who die covering a grenade for achievement purposes, see [/datum/component/pellet_cloud/proc/handle_martyrs()]
queued_delete
+
+
+
+
+
+ If the parent tried deleting and we're not done yet, we send it to nullspace then delete it after
radius
+
+
+
+
+
+ For grenades/landmines, how big is the radius of turfs we're targeting? Note this does not effect the projectiles range, only how many we generate
shooter
+
+
+
+
+
+ for if we're an ammo casing being fired
targets_hit
+
+
+
+
+
+ An associated list with the atom hit as the key and how many pellets they've eaten for the value, for printing aggregate messages
terminated
+
+
+
+
+
+ how many pellets ranged out without hitting anything
wound_info_by_part
+
+
+
+
+
+ Another associated list for hit bodyparts on carbons so we can track how much wounding potential we have for each bodypart
Proc Details create_blast_pellets
+
+ create_blast_pellets() is for when we have a central point we want to shred the surroundings of with a ring of shrapnel, namely frag grenades and landmines.
+Note that grenades have extra handling for someone throwing themselves/being thrown on top of it, while landmines do not (obviously, it's a landmine!). See [/datum/component/pellet_cloud/proc/handle_martyrs()]
create_casing_pellets
+
+ create_casing_pellets() is for directed pellet clouds for ammo casings that have multiple pellets (buckshot and scatter lasers for instance)
+Honestly this is mostly just a rehash of [/obj/item/ammo_casing/proc/fire_casing()] for pellet counts > 1, except this lets us tamper with the pellets and hook onto them for tracking purposes.
+The arguments really don't matter, this proc is triggered by COMSIG_PELLET_CLOUD_INIT which is only for this really, it's just a big mess of the state vars we need for doing the stuff over here.
finalize()
+
+
+
+
+
+ All of our pellets are accounted for, time to go target by target and tell them how many things they got hit by.
grenade_armed
+
+ Look alive, we're armed! Now we start watching to see if anyone's covering us
grenade_dropped
+
+ Someone dropped the grenade, so set them to the shooter in case they're on top of it when it goes off
grenade_moved()
+
+
+
+
+
+ Our grenade has moved, reset var/list/bodies so we're "on top" of any mobs currently on the tile
grenade_uncrossed
+
+ Someone who was originally "under" the grenade has moved off the tile and is now eligible for being a martyr and "covering" it
handle_martyrs
+
+ handle_martyrs() is used for grenades that shoot shrapnel to check if anyone threw themselves/were thrown on top of the grenade, thus absorbing a good chunk of the shrapnel
+Between the time the grenade is armed and the actual detonation, we set var/list/bodies to the list of mobs currently on the new tile, as if the grenade landed on top of them, tracking if any of them move off the tile and removing them from the "under" list
+Once the grenade detonates, handle_martyrs() is called and gets all the new mobs on the tile, and add the ones not in var/list/bodies to var/list/martyrs
+We then iterate through the martyrs and reduce the shrapnel magnitude for each mob on top of it, shredding each of them with some of the shrapnel they helped absorb. This can snuff out all of the shrapnel if there's enough bodies
+Note we track anyone who's alive and client'd when they get shredded in var/list/purple_hearts, for achievement checking later
nullspace_parent()
+
+
+
+
+
+ Our grenade or landmine or caseless shell or whatever tried deleting itself, so we intervene and nullspace it until we're done here
on_target_qdel
+
+ Someone who was originally "under" the grenade has moved off the tile and is now eligible for being a martyr and "covering" it
pellet_hit
+
+ One of our pellets hit something, record what it was and check if we're done (terminated == num_pellets)
+ One of our pellets disappeared due to hitting their max range (or just somehow got qdel'd), remove it from our list and check if we're done (terminated == num_pellets)
pew(/atom /target, spread)
+
+
+
+
+
+ Minor convenience function for creating each shrapnel piece with circle explosions, mostly stolen from the MIRV component
+
+
+
diff --git a/datum/component/personal_crafting.html b/datum/component/personal_crafting.html
new file mode 100644
index 0000000000000..e04e6d71309ef
--- /dev/null
+++ b/datum/component/personal_crafting.html
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+ /datum/component/personal_crafting - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ check_contents Check that the contents of the recipe meet the requirements.
Proc Details check_contents
+
+ Check that the contents of the recipe meet the requirements.
+user: The /mob that initated the crafting.
+R: The /datum/crafting_recipe being attempted.
+contents: List of items to search for R's reqs.
+
+
+
diff --git a/datum/component/plumbing.html b/datum/component/plumbing.html
new file mode 100644
index 0000000000000..071ede43cf492
--- /dev/null
+++ b/datum/component/plumbing.html
@@ -0,0 +1,164 @@
+
+
+
+
+
+
+ /datum/component/plumbing - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ active FALSE to pretty much just not exist in the plumbing world so we can be moved, TRUE to go plumbo mode
+ demand_connects direction in wich we act as a demander
+ ducterlays We can't just cut all of the parents' overlays, so we'll track them here
+ ducts Index with "1" = /datum/ductnet/theductpointingnorth etc. "1" being the num2text from NORTH define
+ reagents shortcut to our parents' reagent holder
+ supply_connects directions in wich we act as a supplier
+ turn_connects if TRUE connects will spin with the parent object visually and codually, so you can have it work in any direction. FALSE if you want it to be static
+ use_overlays TRUE if we wanna add proper pipe outless under our parent object. this is pretty good if i may so so myself Procs
+ can_add Can we be added to the ductnet?
+ can_give returns TRUE when they can give the specified amount and reagent. called by process request
+ create_overlays We create our luxurious piping overlays/underlays, to indicate where we do what. only called once if use_overlays = TRUE in Initialize()
+ disable we stop acting like a plumbing thing and disconnect if we are, so we can safely be moved and stuff
+ enable settle wherever we are, and start behaving like a piece of plumbing
+ get_original_direction Give the direction of a pipe, and it'll return wich direction it originally was when it's object pointed SOUTH
+ process_request check who can give us what we want, and how many each of them will give us
+ send_request called from in process(). only calls process_request(), but can be overwritten for children with special behaviour
+ toggle_active Toggle our machinery on or off. This is called by a hook from default_unfasten_wrench with anchored as only param, so we dont have to copypaste this on every object that can move
+ transfer_to this is where the reagent is actually transferred and is thus the finish point of our process()
+ update_dir We update our connects only when we settle down by taking our current and original direction to find our new connects
+If someone wants it to fucking spin while connected to something go actually knock yourself out
+ Var Details active
+
+
+
+
+
+ FALSE to pretty much just not exist in the plumbing world so we can be moved, TRUE to go plumbo mode
demand_connects
+
+
+
+
+
+ direction in wich we act as a demander
ducterlays
+
+
+
+
+
+ We can't just cut all of the parents' overlays, so we'll track them here
ducts
+
+
+
+
+
+ Index with "1" = /datum/ductnet/theductpointingnorth etc. "1" being the num2text from NORTH define
+ shortcut to our parents' reagent holder
supply_connects
+
+
+
+
+
+ directions in wich we act as a supplier
turn_connects
+
+
+
+
+
+ if TRUE connects will spin with the parent object visually and codually, so you can have it work in any direction. FALSE if you want it to be static
use_overlays
+
+
+
+
+
+ TRUE if we wanna add proper pipe outless under our parent object. this is pretty good if i may so so myself
Proc Details can_add
+
+ Can we be added to the ductnet?
can_give
+
+ returns TRUE when they can give the specified amount and reagent. called by process request
create_overlays()
+
+
+
+
+
+ We create our luxurious piping overlays/underlays, to indicate where we do what. only called once if use_overlays = TRUE in Initialize()
disable()
+
+
+
+
+
+ we stop acting like a plumbing thing and disconnect if we are, so we can safely be moved and stuff
enable()
+
+
+
+
+
+ settle wherever we are, and start behaving like a piece of plumbing
get_original_direction(dir)
+
+
+
+
+
+ Give the direction of a pipe, and it'll return wich direction it originally was when it's object pointed SOUTH
process_request(amount, reagent, dir)
+
+
+
+
+
+ check who can give us what we want, and how many each of them will give us
send_request(dir)
+
+
+
+
+
+ called from in process(). only calls process_request(), but can be overwritten for children with special behaviour
toggle_active(/obj /O, new_state)
+
+
+
+
+
+ Toggle our machinery on or off. This is called by a hook from default_unfasten_wrench with anchored as only param, so we dont have to copypaste this on every object that can move
+ this is where the reagent is actually transferred and is thus the finish point of our process()
update_dir()
+
+
+
+
+
+ We update our connects only when we settle down by taking our current and original direction to find our new connects
+If someone wants it to fucking spin while connected to something go actually knock yourself out
+
+
+
diff --git a/datum/component/plumbing/acclimator.html b/datum/component/plumbing/acclimator.html
new file mode 100644
index 0000000000000..b7f3f142d213a
--- /dev/null
+++ b/datum/component/plumbing/acclimator.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /datum/component/plumbing/acclimator - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ process We're overriding process and not send_request, because all process does is do the requests, so we might aswell cut out the middle man and save some code from running
Proc Details process()
+
+
+
+
+
+ We're overriding process and not send_request, because all process does is do the requests, so we might aswell cut out the middle man and save some code from running
+
+
+
diff --git a/datum/component/plumbing/filter.html b/datum/component/plumbing/filter.html
new file mode 100644
index 0000000000000..a56c2152d2562
--- /dev/null
+++ b/datum/component/plumbing/filter.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /datum/component/plumbing/filter - SPLURT Station 13
+
+
+
+
+
+
+The magical plumbing component used by the chemical filters. The different supply connects behave differently depending on the filters set on the chemical filter
Procs
+ can_give_in_direction We check if the direction and reagent are valid to give. Needed for filters since different outputs have different behaviours
Proc Details can_give_in_direction(dir, reagent)
+
+
+
+
+
+ We check if the direction and reagent are valid to give. Needed for filters since different outputs have different behaviours
+
+
+
diff --git a/datum/component/pregnancy.html b/datum/component/pregnancy.html
new file mode 100644
index 0000000000000..89bb1b749b71a
--- /dev/null
+++ b/datum/component/pregnancy.html
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+ /datum/component/pregnancy - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ baby_type type of baby the mother will plop out - needs to be subtype of /mob/living
+ oviposition this boolean is for identifying whether this preg is in the egg state or not
+ pregnancy_breast_growth breast growth
+ pregnancy_inflation this boolean is for saving whether or not we should inflate the belly if appropriate
+ revealed whether the pregnancy is revealed or not, scanners will reveal this no matter what
+ Var Details baby_type
+
+
+
+
+
+ type of baby the mother will plop out - needs to be subtype of /mob/living
oviposition
+
+
+
+
+
+ this boolean is for identifying whether this preg is in the egg state or not
pregnancy_breast_growth
+
+
+
+
+
+ breast growth
pregnancy_inflation
+
+
+
+
+
+ this boolean is for saving whether or not we should inflate the belly if appropriate
revealed
+
+
+
+
+
+ whether the pregnancy is revealed or not, scanners will reveal this no matter what
+
+
+
diff --git a/datum/component/pricetag.html b/datum/component/pricetag.html
new file mode 100644
index 0000000000000..da5bbb2ee103b
--- /dev/null
+++ b/datum/component/pricetag.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /datum/component/pricetag - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ default_profit_ratio Payee gets 100% of the value if no ratio has been set.
+ payees List of bank accounts this pricetag pays out to. Format is payees[bank_account] = profit_ratio.
+ Var Details default_profit_ratio
+
+
+
+
+
+ Payee gets 100% of the value if no ratio has been set.
payees
+
+
+
+
+
+ List of bank accounts this pricetag pays out to. Format is payees[bank_account] = profit_ratio.
+
+
+
diff --git a/datum/component/squeak.html b/datum/component/squeak.html
new file mode 100644
index 0000000000000..67b72d9b490c2
--- /dev/null
+++ b/datum/component/squeak.html
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+ /datum/component/squeak - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details cross_squeak_delay_chance
+
+
+
+
+
+ chance we'll be stopped from squeaking by cooldown when something crossing us squeaks
+ extra-range for this component's sound
sound_falloff_distance
+
+
+
+
+
+ when sounds start falling off for the squeak
sound_falloff_exponent
+
+
+
+
+
+ sound exponent for squeak. Defaults to 10 as squeaking is loud and annoying enough.
+
+
+
diff --git a/datum/component/storage.html b/datum/component/storage.html
new file mode 100644
index 0000000000000..f170877285dc3
--- /dev/null
+++ b/datum/component/storage.html
@@ -0,0 +1,173 @@
+
+
+
+
+
+
+ /datum/component/storage - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details max_combined_w_class
+
+
+
+
+
+ Max combined w_class. Applies to STORAGE_LIMIT_COMBINED_W_CLASS
max_items
+
+
+
+
+
+ Max items we can hold. Applies to STORAGE_LIMIT_MAX_ITEMS
max_volume
+
+
+
+
+
+ Max volume we can hold. Applies to STORAGE_LIMIT_VOLUME . Auto scaled on New() if unset.
max_w_class
+
+
+
+
+
+ Max w_class we can hold. Applies to STORAGE_LIMIT_COMBINED_W_CLASS and STORAGE_LIMIT_VOLUME
storage_flags
+
+
+
+
+
+ Storage flags, including what kinds of limiters we use for how many items we can hold
ui_by_mob
+
+
+
+
+
+ Ui objects by person. mob = list(objects)
Proc Details _process_numerical_display()
+
+
+
+
+
+ Generates a list of numbered_display datums for the numerical display system.
check_on_found
+
+ Check if we should trigger on_found()
+If this returns TRUE, it means an on_found() returned TRUE and immediately broke the chain.
+In most contexts, this should mean to stop.
get_max_volume()
+
+
+
+
+
+ Gets our max volume
get_ui_boxes()
+
+
+
+
+
+ Gets our ui_boxes, making it if it doesn't exist.
get_ui_close()
+
+
+
+
+
+ Gets our ui_close, making it if it doesn't exist.
get_ui_continuous()
+
+
+
+
+
+ Gets our ui_continuous, making it if it doesn't exist.
get_ui_left()
+
+
+
+
+
+ Gets our ui_left, making it if it doesn't exist.
on_logout
+
+ Proc triggered by signal to ensure logging out clients don't linger.
orient2hud_legacy(/mob /user, maxcolumns)
+
+
+
+
+
+ Orients all objects in legacy mode, and returns the objects to show to the user.
orient2hud_volumetric(/mob /user, maxcolumns)
+
+
+
+
+
+ Orients all objects in .. volumetric mode. Does not support numerical display!
ui_hide
+
+ Hides our UI from a mob
ui_show
+
+ Shows our UI to a mob.
volumetric_ui()
+
+
+
+
+
+ Returns TRUE if we are using volumetric UI instead of box UI
vv_edit_var(var_name, var_value)
+
+
+
+
+
+ VV hooked to ensure no lingering screen objects.
+
+
+
diff --git a/datum/component/storage/concrete/tcg.html b/datum/component/storage/concrete/tcg.html
new file mode 100644
index 0000000000000..a2c488942053e
--- /dev/null
+++ b/datum/component/storage/concrete/tcg.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /datum/component/storage/concrete/tcg - SPLURT Station 13
+
+
+
+
+
+
+A storage component to be used on card piles, for use as hands/decks/discard piles. Don't use on something that's not a card pile!
Proc Details can_be_inserted
+
+ The deck that the card pile is using for FAIR PLAY.
+
+
+
diff --git a/datum/component/tackler.html b/datum/component/tackler.html
new file mode 100644
index 0000000000000..742767e7f9e6d
--- /dev/null
+++ b/datum/component/tackler.html
@@ -0,0 +1,177 @@
+
+
+
+
+
+
+ /datum/component/tackler - SPLURT Station 13
+
+
+
+
+
+
+#tackle.dm
+For when you want to throw a person at something and have fun stuff happen
+This component is made for carbon mobs (really, humans), and allows its parent to throw themselves and perform tackles. This is done by enabling throw mode, then clicking on your
+intended target with an empty hand. You will then launch toward your target. If you hit a carbon, you'll roll to see how hard you hit them. If you hit a solid non-mob, you'll
+roll to see how badly you just messed yourself up. If, along your journey, you hit a table, you'll slam onto it and send up to MAX_TABLE_MESSES (8) /obj/items on the table flying,
+and take a bit of extra damage and stun for each thing launched.
+There are 2 """skill rolls""" involved here, which are handled and explained in sack() and rollTackle() (for roll 1, carbons), and splat() (for roll 2, walls and solid objects)
Vars
+ base_knockdown Launching a tackle calls Knockdown on you for this long, so this is your cooldown. Once you stand back up, you can tackle again.
+ min_distance Some gloves, generally ones that increase mobility, may have a minimum distance to fly. Rocket gloves are especially dangerous with this, be sure you'll hit your target or have a clear background if you miss, or else!
+ range Your max range for how far you can tackle.
+ skill_mod A flat modifier to your roll against your target, as described in rollTackle() . Slightly misleading, skills aren't relevant here, this is a matter of what type of gloves (or whatever) is granting you the ability to tackle.
+ speed How fast you sail through the air. Standard tackles are 1 speed, but gloves that throw you faster come at a cost: higher speeds make it more likely you'll be badly injured if you fly into a non-mob obstacle.
+ stamina_cost How much stamina it takes to launch a tackle
+ tackle The throwdatum we're currently dealing with, if we need it Procs
+ checkObstacle Check to see if we hit a table, and if so, make a big mess!
+ checkTackle See if we can tackle or not. If we can, leap!
+ registerTackle Store the thrownthing datum for later use
+ rollTackle If cat, "pounce" instead of "tackle".
+rollTackle()
+ sack If cat, "pounce" instead of "leap".
+sack()
+ splat splat()
+ splatWindow A special case for splatting for handling windows
+ Var Details base_knockdown
+
+
+
+
+
+ Launching a tackle calls Knockdown on you for this long, so this is your cooldown. Once you stand back up, you can tackle again.
min_distance
+
+
+
+
+
+ Some gloves, generally ones that increase mobility, may have a minimum distance to fly. Rocket gloves are especially dangerous with this, be sure you'll hit your target or have a clear background if you miss, or else!
range
+
+
+
+
+
+ Your max range for how far you can tackle.
skill_mod
+
+
+
+
+
+ A flat modifier to your roll against your target, as described in rollTackle() . Slightly misleading, skills aren't relevant here, this is a matter of what type of gloves (or whatever) is granting you the ability to tackle.
speed
+
+
+
+
+
+ How fast you sail through the air. Standard tackles are 1 speed, but gloves that throw you faster come at a cost: higher speeds make it more likely you'll be badly injured if you fly into a non-mob obstacle.
stamina_cost
+
+
+
+
+
+ How much stamina it takes to launch a tackle
+ The throwdatum we're currently dealing with, if we need it
Proc Details checkObstacle
+
+ Check to see if we hit a table, and if so, make a big mess!
checkTackle
+
+ See if we can tackle or not. If we can, leap!
+ Store the thrownthing datum for later use
rollTackle
+
+ If cat, "pounce" instead of "tackle".
+rollTackle()
+This handles all of the modifiers for the actual carbon-on-carbon tackling, and gets its own proc because of how many there are (with plenty more in mind!)
+The base roll is between (-3, 3), with negative numbers favoring the target, and positive numbers favoring the tackler. The target and the tackler are both assessed for
+how easy they are to knock over, with clumsiness and dwarfiness being strong maluses for each, and gigantism giving a bonus for each. These numbers and ideas
+are absolutely subject to change.
+In addition, after subtracting the defender's mod and adding the attacker's mod to the roll, the component's base (skill) mod is added as well. Some sources of tackles
+are better at taking people down, like the bruiser and rocket gloves, while the dolphin gloves have a malus in exchange for better mobility.
+ If cat, "pounce" instead of "leap".
+sack()
+sack() is called when you actually smack into something, assuming we're mid-tackle. First it deals with smacking into non-carbons, in two cases:
+
+If it's a non-carbon mob, we don't care, get out of here and do normal thrown-into-mob stuff
+Else, if it's something dense (walls, machinery, structures, most things other than the floor), go to splat() and get ready for some high grade shit
+
+If it's a carbon we hit, we'll call rollTackle() which rolls a die and calculates modifiers for both the tackler and target, then gives us a number. Negatives favor the target, while positives favor the tackler.
+Check rollTackle() for a more thorough explanation on the modifiers at play.
+Then, we figure out what effect we want, and we get to work! Note that with standard gripper gloves and no modifiers, the range of rolls is (-3, 3). The results are as follows, based on what we rolled:
+
+-inf to -5: Seriously botched tackle, tackler suffers a concussion, brute damage, and a 3 second paralyze, target suffers nothing
+-4 to -2: weak tackle, tackler gets 3 second knockdown, target gets shove slowdown but is otherwise fine
+-1 to 0: decent tackle, tackler gets up a bit quicker than the target
+1: solid tackle, tackler has more of an advantage getting up quicker
+2 to 4: expert tackle, tackler has sizeable advantage and lands on their feet with a free passive grab
+5 to inf: MONSTER tackle, tackler gets up immediately and gets a free aggressive grab, target takes sizeable stamina damage from the hit and is paralyzed for one and a half seconds and knocked down for three seconds
+
+Finally, we return a bitflag to [COMSIG_MOVABLE_IMPACT] that forces the hitpush to false so that we don't knock them away.
+ splat()
+This is where we handle diving into dense atoms, generally with effects ranging from bad to REALLY bad. This works as a percentile roll that is modified in two steps as detailed below. The higher
+the roll, the more severe the result.
+Mod 1: Speed
+* Base tackle speed is 1, which is what normal gripper gloves use. For other sources with higher speed tackles, like dolphin and ESPECIALLY rocket gloves, we obey Newton's laws and hit things harder.
+* For every unit of speed above 1, move the lower bound of the roll up by 15. Unlike Mod 2, this only serves to raise the lower bound, so it can't be directly counteracted by anything you can control.
+Mod 2: Misc
+-Flat modifiers, these take whatever you rolled and add/subtract to it, with the end result capped between the minimum from Mod 1 and 100. Note that since we can't roll higher than 100 to start with,
+wearing a helmet should be enough to remove any chance of permanently paralyzing yourself and dramatically lessen knocking yourself unconscious, even with rocket gloves. Will expand on maybe
+* Wearing a helmet: -6
+* Wearing armor: -6
+* Clumsy: +6
+Effects: Below are the outcomes based off your roll, in order of increasing severity
+* 1-63: Knocked down for a few seconds and a bit of brute and stamina damage
+* 64-83: Knocked silly, gain some confusion as well as the above
+* 84-93: Cranial trauma, get a concussion and more confusion, plus more damage
+* 94-98: Knocked unconscious, significant chance to get a random mild brain trauma, as well as a fair amount of damage
+* 99-100: Break your spinal cord, get paralyzed, take a bunch of damage too. Very unlucky!
+ A special case for splatting for handling windows
+
+
+
diff --git a/datum/component/twitch_plays.html b/datum/component/twitch_plays.html
new file mode 100644
index 0000000000000..51537e032d9c2
--- /dev/null
+++ b/datum/component/twitch_plays.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /datum/component/twitch_plays - SPLURT Station 13
+
+
+
+
+
+
+Observers voting on things through orbiting
+ Var Details players
+
+
+
+
+
+ Observers
+
+
+
diff --git a/datum/component/twitch_plays/simple_movement.html b/datum/component/twitch_plays/simple_movement.html
new file mode 100644
index 0000000000000..12df811bae48b
--- /dev/null
+++ b/datum/component/twitch_plays/simple_movement.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /datum/component/twitch_plays/simple_movement - SPLURT Station 13
+
+
+
+
+
+
+Simple movement one
+ Var Details allow_diagonal
+
+
+
+
+
+ Allow diagonals
votes
+
+
+
+
+
+ Movement votes by observer
+
+
+
diff --git a/datum/component/two_handed.html b/datum/component/two_handed.html
new file mode 100644
index 0000000000000..e8d2677661048
--- /dev/null
+++ b/datum/component/two_handed.html
@@ -0,0 +1,200 @@
+
+
+
+
+
+
+ /datum/component/two_handed - SPLURT Station 13
+
+
+
+
+
+
+Two Handed Component
+When applied to an item it will make it two handed
Vars
+ attacksound Play sound when unwielded
+ force_multiplier Are we holding the two handed item properly
+ force_unwielded The force of the item when weilded
+ force_wielded The multiplier applied to force when wielded, does not work with force_wielded, and force_unwielded
+ icon_wielded Does it have to be held in both hands
+ offhand_item The icon that will be used when wielded
+ require_twohands Play sound on attack when wielded
+ sharpened_increase Reference to the offhand created for the item
+ unwieldsound Play sound when wielded
+ wieldsound The force of the item when unweilded Procs
+ Initialize The amount of increase recived from sharpening the item
+Two Handed component
+ on_attack on_attack triggers on attack with the parent item
+ on_attack_self Triggered on attack self of the item containing the component
+ on_drop Triggered on drop of item containing the component
+ on_equip Triggered on equip of the item containing the component
+ on_moved on_moved Triggers on item moved
+ on_sharpen on_sharpen Triggers on usage of a sharpening stone on the item
+ on_swap_hands on_swap_hands Triggers on swapping hands, blocks swap if the other hand is busy
+ on_update_icon on_update_icon triggers on call to update parent items icon
+ unwield Unwield the two handed item
+ wield Wield the two handed item in both hands
+ Var Details attacksound
+
+
+
+
+
+ Play sound when unwielded
force_multiplier
+
+
+
+
+
+ Are we holding the two handed item properly
force_unwielded
+
+
+
+
+
+ The force of the item when weilded
force_wielded
+
+
+
+
+
+ The multiplier applied to force when wielded, does not work with force_wielded, and force_unwielded
icon_wielded
+
+
+
+
+
+ Does it have to be held in both hands
offhand_item
+
+
+
+
+
+ The icon that will be used when wielded
require_twohands
+
+
+
+
+
+ Play sound on attack when wielded
sharpened_increase
+
+
+
+
+
+ Reference to the offhand created for the item
unwieldsound
+
+
+
+
+
+ Play sound when wielded
wieldsound
+
+
+
+
+
+ The force of the item when unweilded
Proc Details Initialize(require_twohands, wieldsound, unwieldsound, attacksound, force_multiplier, force_wielded, force_unwielded, icon_wielded)
+
+
+
+
+
+ The amount of increase recived from sharpening the item
+Two Handed component
+vars:
+
+require_twohands (optional) Does the item need both hands to be carried
+wieldsound (optional) The sound to play when wielded
+unwieldsound (optional) The sound to play when unwielded
+attacksound (optional) The sound to play when wielded and attacking
+force_multiplier (optional) The force multiplier when wielded, do not use with force_wielded, and force_unwielded
+force_wielded (optional) The force setting when the item is wielded, do not use with force_multiplier
+force_unwielded (optional) The force setting when the item is unwielded, do not use with force_multiplier
+icon_wielded (optional) The icon to be used when wielded
+ on_attack
+
+ on_attack triggers on attack with the parent item
on_attack_self
+
+ Triggered on attack self of the item containing the component
on_drop
+
+ Triggered on drop of item containing the component
on_equip
+
+ Triggered on equip of the item containing the component
on_moved
+
+ on_moved Triggers on item moved
on_sharpen(/obj /item /item, amount, max_amount)
+
+
+
+
+
+ on_sharpen Triggers on usage of a sharpening stone on the item
on_swap_hands
+
+ on_swap_hands Triggers on swapping hands, blocks swap if the other hand is busy
on_update_icon
+
+ on_update_icon triggers on call to update parent items icon
+Updates the icon using icon_wielded if set
unwield
+
+ Unwield the two handed item
+vars:
+
+user The mob/living/carbon that is unwielding the item
+show_message (option) show a message to chat on unwield
+
+ Wield the two handed item in both hands
+vars:
+
+user The mob/living/carbon that is wielding the item
+
+
+
+
diff --git a/datum/component/uplink.html b/datum/component/uplink.html
new file mode 100644
index 0000000000000..f398350e99064
--- /dev/null
+++ b/datum/component/uplink.html
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+ /datum/component/uplink - SPLURT Station 13
+
+
+
+
+
+
+Uplinks
+All /obj/item(s) have a hidden_uplink var. By default it's null. Give the item one with 'new(src') (it must be in it's contents). Then add 'uses.'
+Use whatever conditionals you want to check that the user has an uplink, and then call interact() on their uplink.
+You might also want the uplink menu to open if active. Check if the uplink is 'active' and then interact() with it.
Vars
+ unlock_text Instructions on how to access the uplink based on location
+ Var Details unlock_text
+
+
+
+
+
+ Instructions on how to access the uplink based on location
+
+
+
diff --git a/datum/component/virtual_reality.html b/datum/component/virtual_reality.html
new file mode 100644
index 0000000000000..40a1f3daca69c
--- /dev/null
+++ b/datum/component/virtual_reality.html
@@ -0,0 +1,128 @@
+
+
+
+
+
+
+ /datum/component/virtual_reality - SPLURT Station 13
+
+
+
+
+
+
+The virtual reality turned component.
+Originally created to overcome issues of mob polymorphing locking the player inside virtual reality
+and allow for a more "immersive" virtual reality in a virtual reality experience.
+It relies on comically complex order of logic, expect things to break if procs such as mind/transfer_to() are revamped.
+In short, a barebone not so hardcoded VR framework.
+If you plan to add more devices that make use of this component, remember to isolate their code outta here where possible.
Procs
+ PostTransfer Required for the component to be transferable from mob to mob.
+ action_trigger The following procs simply acts as hooks for quit(), since components do not use callbacks anymore
+ connect Called when attempting to connect a mob to a virtual reality mob.
+This will return FALSE if the mob is without player or dead. TRUE otherwise
+ on_player_transfer Takes care of moving the component from a mob to another when their mind or ckey is transferred.
+The very reason this component even exists (else one would be stuck playing as a monky if monkyified)
+ player_hijacked Called when someone or something else is somewhat about to replace the mastermind's mob key somehow.
+And potentially lock the player in a broken virtual reality plot. Not really something to be proud of.
+ pre_player_transfer Called to stop the player mind from being transferred should the new mob happen to be one of our masterminds'.
+Since the target's mind.current is going to be null'd in the mind transfer process,
+This has to be done in a different signal proc than on_player_transfer(), by then the mastermind.current will be null.
+ quit Takes care of deleting itself, moving the player back to the mastermind's current and queueing the parent for deletion.
+It supports nested virtual realities by recursively calling vr_in_a_vr(), which in turns calls quit(),
+up to the deepest level, where the ckey will be transferred back to our mastermind's mob instead.
+The above operation is skipped when session_paused is TRUE (ergo no player in control of the current mob).
+vars:
+ switch_player Called when the mastermind mind is transferred to another mob.
+This is pretty much just going to simply quit the session until machineries support polymorphed occupants etcetera.
+ vr_in_a_vr Used for recursive virtual realities shenanigeans and should be called by the above proc.
+ you_only_live_once emag_act() hook. Makes the game deadlier, killing the mastermind mob too should the parent die.
Proc Details PostTransfer()
+
+
+
+
+
+ Required for the component to be transferable from mob to mob.
action_trigger
+
+ The following procs simply acts as hooks for quit(), since components do not use callbacks anymore
connect
+
+ Called when attempting to connect a mob to a virtual reality mob.
+This will return FALSE if the mob is without player or dead. TRUE otherwise
on_player_transfer
+
+ Takes care of moving the component from a mob to another when their mind or ckey is transferred.
+The very reason this component even exists (else one would be stuck playing as a monky if monkyified)
player_hijacked(/datum /source, /mob /our_character, /mob /their_character)
+
+
+
+
+
+ Called when someone or something else is somewhat about to replace the mastermind's mob key somehow.
+And potentially lock the player in a broken virtual reality plot. Not really something to be proud of.
pre_player_transfer
+
+ Called to stop the player mind from being transferred should the new mob happen to be one of our masterminds'.
+Since the target's mind.current is going to be null'd in the mind transfer process,
+This has to be done in a different signal proc than on_player_transfer(), by then the mastermind.current will be null.
quit(deathcheck, cleanup, /mob /override)
+
+
+
+
+
+ Takes care of deleting itself, moving the player back to the mastermind's current and queueing the parent for deletion.
+It supports nested virtual realities by recursively calling vr_in_a_vr(), which in turns calls quit(),
+up to the deepest level, where the ckey will be transferred back to our mastermind's mob instead.
+The above operation is skipped when session_paused is TRUE (ergo no player in control of the current mob).
+vars:
+
+deathcheck is used to kill the master, you want this FALSE unless for stuff that doesn't involve emagging.
+cleanup is used to queue the parent for the next vr_clean_master's run, where they'll be deleted should they be dead.
+mob/override is used for the recursive virtual reality explained above and shouldn't be used outside of vr_in_a_vr().
+ switch_player
+
+ Called when the mastermind mind is transferred to another mob.
+This is pretty much just going to simply quit the session until machineries support polymorphed occupants etcetera.
vr_in_a_vr(/mob /player, deathcheck, lethal_cleanup)
+
+
+
+
+
+ Used for recursive virtual realities shenanigeans and should be called by the above proc.
you_only_live_once()
+
+
+
+
+
+ emag_act() hook. Makes the game deadlier, killing the mastermind mob too should the parent die.
+
+
+
diff --git a/datum/computer_file/program.html b/datum/computer_file/program.html
new file mode 100644
index 0000000000000..8be64622f4c07
--- /dev/null
+++ b/datum/computer_file/program.html
@@ -0,0 +1,227 @@
+
+
+
+
+
+
+ /datum/computer_file/program - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ alert_able Whether this program can send alerts while minimized or closed. Used to show a mute button per program in the file manager
+ alert_pending Whether to highlight our program in the main screen. Intended for alerts, but loosely available for any need to notify of changed conditions. Think Windows task bar highlighting. Available even if alerts are muted.
+ alert_silenced Whether the user has muted this program's ability to send alerts.
+ available_on_ntnet Whether the program can be downloaded from NTNet. Set to FALSE to disable.
+ available_on_syndinet Whether the program can be downloaded from SyndiNet (accessible via emagging the computer). Set to TRUE to enable.
+ category Category in the NTDownloader.
+ computer Device that runs this program.
+ extended_desc Short description of this program's function.
+ filedesc User-friendly name of this program.
+ filename File name. FILE NAME MUST BE UNIQUE IF YOU WANT THE PROGRAM TO BE DOWNLOADABLE FROM NTNET!
+ ntnet_status NTNet status, updated every tick by computer running this program. Don't use this for checks if NTNet works, computers do that. Use this for calculations, etc.
+ program_icon Font Awesome icon to use as this program's icon in the modular computer main menu. Defaults to a basic program maximize window icon if not overridden.
+ program_icon_state Program-specific screen icon state
+ program_state PROGRAM_STATE_KILLED or PROGRAM_STATE_BACKGROUND or PROGRAM_STATE_ACTIVE - specifies whether this program is running.
+ required_access List of required accesses to run the program.
+ requires_ntnet Set to 1 for program to require nonstop NTNet connection to run. If NTNet connection is lost program crashes.
+ requires_ntnet_feature Optional, if above is set to 1 checks for specific function of NTNet (currently NTNET_SOFTWAREDOWNLOAD, NTNET_PEERTOPEER, NTNET_SYSTEMCONTROL and NTNET_COMMUNICATION)
+ tgui_id Name of the tgui interface
+ transfer_access List of required access to download or file host the program
+ ui_header Example: "something.gif" - a header image that will be rendered in computer's UI when this program is running at background. Images are taken from /icons/program_icons. Be careful not to use too large images!
+ usage_flags Bitflags (PROGRAM_CONSOLE, PROGRAM_LAPTOP, PROGRAM_TABLET combination) or PROGRAM_ALL Procs
+ can_run Check if the user can run program. Only humans can operate computer. Automatically called in run_program()
+ID must be inserted into a card slot to be read. If the program is not currently installed (as is the case when
+NT Software Hub is checking available software), a list can be given to be used instead.
+Arguments:
+user is a ref of the mob using the device.
+loud is a bool deciding if this proc should use to_chats
+access_to_check is an access level that will be checked against the ID
+transfer, if TRUE and access_to_check is null, will tell this proc to use the program's transfer_access in place of access_to_check
+access can contain a list of access numbers to check against. If access is not empty, it will be used istead of checking any inserted ID.
+ run_emag Called by the device when it is emagged.
+ tap Runs when the device is used to attack an atom in non-combat mode.
+ Var Details alert_able
+
+
+
+
+
+ Whether this program can send alerts while minimized or closed. Used to show a mute button per program in the file manager
alert_pending
+
+
+
+
+
+ Whether to highlight our program in the main screen. Intended for alerts, but loosely available for any need to notify of changed conditions. Think Windows task bar highlighting. Available even if alerts are muted.
alert_silenced
+
+
+
+
+
+ Whether the user has muted this program's ability to send alerts.
available_on_ntnet
+
+
+
+
+
+ Whether the program can be downloaded from NTNet. Set to FALSE to disable.
available_on_syndinet
+
+
+
+
+
+ Whether the program can be downloaded from SyndiNet (accessible via emagging the computer). Set to TRUE to enable.
category
+
+
+
+
+
+ Category in the NTDownloader.
+ Device that runs this program.
extended_desc
+
+
+
+
+
+ Short description of this program's function.
filedesc
+
+
+
+
+
+ User-friendly name of this program.
filename
+
+
+
+
+
+ File name. FILE NAME MUST BE UNIQUE IF YOU WANT THE PROGRAM TO BE DOWNLOADABLE FROM NTNET!
ntnet_status
+
+
+
+
+
+ NTNet status, updated every tick by computer running this program. Don't use this for checks if NTNet works, computers do that. Use this for calculations, etc.
program_icon
+
+
+
+
+
+ Font Awesome icon to use as this program's icon in the modular computer main menu. Defaults to a basic program maximize window icon if not overridden.
program_icon_state
+
+
+
+
+
+ Program-specific screen icon state
program_state
+
+
+
+
+
+ PROGRAM_STATE_KILLED or PROGRAM_STATE_BACKGROUND or PROGRAM_STATE_ACTIVE - specifies whether this program is running.
required_access
+
+
+
+
+
+ List of required accesses to run the program.
requires_ntnet
+
+
+
+
+
+ Set to 1 for program to require nonstop NTNet connection to run. If NTNet connection is lost program crashes.
requires_ntnet_feature
+
+
+
+
+
+ Optional, if above is set to 1 checks for specific function of NTNet (currently NTNET_SOFTWAREDOWNLOAD, NTNET_PEERTOPEER, NTNET_SYSTEMCONTROL and NTNET_COMMUNICATION)
tgui_id
+
+
+
+
+
+ Name of the tgui interface
transfer_access
+
+
+
+
+
+ List of required access to download or file host the program
+ Example: "something.gif" - a header image that will be rendered in computer's UI when this program is running at background. Images are taken from /icons/program_icons. Be careful not to use too large images!
usage_flags
+
+
+
+
+
+ Bitflags (PROGRAM_CONSOLE, PROGRAM_LAPTOP, PROGRAM_TABLET combination) or PROGRAM_ALL
Proc Details can_run(/mob /user, loud, access_to_check, transfer, /list/access)
+
+
+
+
+
+ Check if the user can run program. Only humans can operate computer. Automatically called in run_program()
+ID must be inserted into a card slot to be read. If the program is not currently installed (as is the case when
+NT Software Hub is checking available software), a list can be given to be used instead.
+Arguments:
+user is a ref of the mob using the device.
+loud is a bool deciding if this proc should use to_chats
+access_to_check is an access level that will be checked against the ID
+transfer, if TRUE and access_to_check is null, will tell this proc to use the program's transfer_access in place of access_to_check
+access can contain a list of access numbers to check against. If access is not empty, it will be used istead of checking any inserted ID.
run_emag()
+
+
+
+
+
+ Called by the device when it is emagged.
+Emagging the device allows certain programs to unlock new functions. However, the program will
+need to be downloaded first, and then handle the unlock on their own in their run_emag() proc.
+The device will allow an emag to be run multiple times, so the user can re-emag to run the
+override again, should they download something new. The run_emag() proc should return TRUE if
+the emagging affected anything, and FALSE if no change was made (already emagged, or has no
+emag functions).
tap
+
+ Runs when the device is used to attack an atom in non-combat mode.
+Simulates using the device to read or scan something. Tap is called by the computer during pre_attack
+and sends us all of the related info. If we return TRUE, the computer will stop the attack process
+there. What we do with the info is up to us, but we should only return TRUE if we actually perform
+an action of some sort.
+Arguments:
+A is the atom being tapped
+user is the person making the attack action
+params is anything the pre_attack() proc had in the same-named variable.
+
+
+
diff --git a/datum/computer_file/program/aidiag.html b/datum/computer_file/program/aidiag.html
new file mode 100644
index 0000000000000..63de7336a61ad
--- /dev/null
+++ b/datum/computer_file/program/aidiag.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /datum/computer_file/program/aidiag - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ restoring Variable dictating if we are in the process of restoring the AI in the inserted intellicard
+ Var Details restoring
+
+
+
+
+
+ Variable dictating if we are in the process of restoring the AI in the inserted intellicard
+
+
+
diff --git a/datum/computer_file/program/arcade.html b/datum/computer_file/program/arcade.html
new file mode 100644
index 0000000000000..1fb757e35e52f
--- /dev/null
+++ b/datum/computer_file/program/arcade.html
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+ /datum/computer_file/program/arcade - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ boss_id Determines which boss image to use on the UI.
+ game_active Returns TRUE if the game is being played.
+ heads_up Shows what text is shown on the app, usually showing the log of combat actions taken by the player.
+ pause_state This disables buttom actions from having any impact if TRUE. Resets to FALSE when the player is allowed to make an action again.
+ Var Details boss_id
+
+
+
+
+
+ Determines which boss image to use on the UI.
game_active
+
+
+
+
+
+ Returns TRUE if the game is being played.
heads_up
+
+
+
+
+
+ Shows what text is shown on the app, usually showing the log of combat actions taken by the player.
pause_state
+
+
+
+
+
+ This disables buttom actions from having any impact if TRUE. Resets to FALSE when the player is allowed to make an action again.
+
+
+
diff --git a/datum/computer_file/program/borg_monitor.html b/datum/computer_file/program/borg_monitor.html
new file mode 100644
index 0000000000000..c6b32136415d7
--- /dev/null
+++ b/datum/computer_file/program/borg_monitor.html
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+ /datum/computer_file/program/borg_monitor - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ DL_progress reference of a borg if we're downloading a log, or null if not.
+ DL_source A list to copy a borg's IC log list into
+ loglist Bool of if this app has already been emagged Procs
+ Destroy Progress of current download, 0 to 100, -1 for no current download
+ checkID Gets the ID's name, if one is inserted into the device. This is a seperate proc solely to be overridden by the syndicate version of the app.
+ evaluate_borg This proc is used to determin if a borg should be shown in the list (based on the borg's scrambledcodes var). Syndicate version overrides this to show only syndicate borgs.
+ Var Details DL_progress
+
+
+
+
+
+ reference of a borg if we're downloading a log, or null if not.
+ A list to copy a borg's IC log list into
loglist
+
+
+
+
+
+ Bool of if this app has already been emagged
Proc Details Destroy()
+
+
+
+
+
+ Progress of current download, 0 to 100, -1 for no current download
checkID()
+
+
+
+
+
+ Gets the ID's name, if one is inserted into the device. This is a seperate proc solely to be overridden by the syndicate version of the app.
+ This proc is used to determin if a borg should be shown in the list (based on the borg's scrambledcodes var). Syndicate version overrides this to show only syndicate borgs.
+
+
+
diff --git a/datum/computer_file/program/budgetorders.html b/datum/computer_file/program/budgetorders.html
new file mode 100644
index 0000000000000..3af401244664e
--- /dev/null
+++ b/datum/computer_file/program/budgetorders.html
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+ /datum/computer_file/program/budgetorders - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ blockade_warning If you're being raided by pirates, what do you tell the crew?
+ can_approve_requests Can this console approve purchase requests?
+ cargo_account The account this console processes and displays. Independent from the account the shuttle processes.
+ cargo_shuttle The name of the shuttle template being used as the cargo shuttle. 'supply' is default and contains critical code. Don't change this unless you know what you're doing.
+ contraband Can the tablet see or buy illegal stuff?
+ docking_away The docking port called when leaving the station.
+ docking_home The docking port called when returning to the station.
+ requestonly Are you actually placing orders with it?
+ safety_warning What do we say when the shuttle moves with living beings on it.
+ self_paid Is it being bought from a personal account, or is it being done via a budget/cargo?
+ stationcargo If this console can loan the cargo shuttle. Set to false to disable.
+ Var Details blockade_warning
+
+
+
+
+
+ If you're being raided by pirates, what do you tell the crew?
can_approve_requests
+
+
+
+
+
+ Can this console approve purchase requests?
cargo_account
+
+
+
+
+
+ The account this console processes and displays. Independent from the account the shuttle processes.
cargo_shuttle
+
+
+
+
+
+ The name of the shuttle template being used as the cargo shuttle. 'supply' is default and contains critical code. Don't change this unless you know what you're doing.
contraband
+
+
+
+
+
+ Can the tablet see or buy illegal stuff?
docking_away
+
+
+
+
+
+ The docking port called when leaving the station.
docking_home
+
+
+
+
+
+ The docking port called when returning to the station.
requestonly
+
+
+
+
+
+ Are you actually placing orders with it?
safety_warning
+
+
+
+
+
+ What do we say when the shuttle moves with living beings on it.
self_paid
+
+
+
+
+
+ Is it being bought from a personal account, or is it being done via a budget/cargo?
stationcargo
+
+
+
+
+
+ If this console can loan the cargo shuttle. Set to false to disable.
+
+
+
diff --git a/datum/computer_file/program/card_mod.html b/datum/computer_file/program/card_mod.html
new file mode 100644
index 0000000000000..5cbc918edab2a
--- /dev/null
+++ b/datum/computer_file/program/card_mod.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /datum/computer_file/program/card_mod - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ target_dept Which departments this computer has access to. Defined as access regions. null = all departments
+ Var Details target_dept
+
+
+
+
+
+ Which departments this computer has access to. Defined as access regions. null = all departments
+
+
+
diff --git a/datum/computer_file/program/portrait_printer.html b/datum/computer_file/program/portrait_printer.html
new file mode 100644
index 0000000000000..8e465a610dec6
--- /dev/null
+++ b/datum/computer_file/program/portrait_printer.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+ /datum/computer_file/program/portrait_printer - SPLURT Station 13
+
+
+
+
+
+
+portrait printer!
+Program that lets the curator browse all of the portraits in the database
+They are free to print them out as they please.
+
+
+
diff --git a/datum/computer_file/program/radar.html b/datum/computer_file/program/radar.html
new file mode 100644
index 0000000000000..87812cbf0d0ec
--- /dev/null
+++ b/datum/computer_file/program/radar.html
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+ /datum/computer_file/program/radar - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ arrowstyle Used by the tgui interface, themed NT or Syndicate.
+ last_icon_state Used to keep track of the last value program_icon_state was set to, to prevent constant unnecessary update_appearance() calls
+ next_scan Used to store when the next scan is available. Updated by the scan() proc.
+ objects List of trackable entities. Updated by the scan() proc.
+ pointercolor Used by the tgui interface, themed for NT or Syndicate colors.
+ selected Ref of the last trackable object selected by the user in the tgui window. Updated in the ui_act() proc. Procs
+ find_atom Finds the atom in the appropriate list that the selected
var indicates
+ scan Runs a scan of all the trackable atoms.
+ track Updates tracking information of the selected target.
+ trackable Checks the trackability of the selected target.
+ Var Details arrowstyle
+
+
+
+
+
+ Used by the tgui interface, themed NT or Syndicate.
last_icon_state
+
+
+
+
+
+ Used to keep track of the last value program_icon_state was set to, to prevent constant unnecessary update_appearance() calls
next_scan
+
+
+
+
+
+ Used to store when the next scan is available. Updated by the scan() proc.
objects
+
+
+
+
+
+ List of trackable entities. Updated by the scan() proc.
pointercolor
+
+
+
+
+
+ Used by the tgui interface, themed for NT or Syndicate colors.
selected
+
+
+
+
+
+ Ref of the last trackable object selected by the user in the tgui window. Updated in the ui_act() proc.
Proc Details find_atom()
+
+
+
+
+
+ Finds the atom in the appropriate list that the selected
var indicates
+The selected
var holds a REF, which is a string. A mob REF may be
+something like "mob_209". In order to find the actual atom, we need
+to search the appropriate list for the REF string. This is dependant
+on the program (Lifeline uses GLOB.human_list, while Fission360 uses
+GLOB.poi_list), but the result will be the same; evaluate the string and
+return an atom reference.
scan()
+
+
+
+
+
+ Runs a scan of all the trackable atoms.
+Checks each entry in the GLOB of the specific trackable atoms against
+the track() proc, and fill the objects list with lists containing the
+atoms' names and REFs. The objects list is handed to the tgui screen
+for displaying to, and being selected by, the user. A two second
+sleep is used to delay the scan, both for thematical reasons as well
+as to limit the load players may place on the server using these
+somewhat costly loops.
track()
+
+
+
+
+
+ Updates tracking information of the selected target.
+The track() proc updates the entire set of information about the location
+of the target, including whether the Ntos window should use a pinpointer
+crosshair over the up/down arrows, or none in favor of a rotating arrow
+for far away targets. This information is returned in the form of a list.
trackable
+
+ Checks the trackability of the selected target.
+If the target is on the computer's Z level, or both are on station Z
+levels, and the target isn't untrackable, return TRUE.
+Arguments:
+*arg1 is the atom being evaluated.
+
+
+
diff --git a/datum/computer_file/program/robocontrol.html b/datum/computer_file/program/robocontrol.html
new file mode 100644
index 0000000000000..c08639f84c0a0
--- /dev/null
+++ b/datum/computer_file/program/robocontrol.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ /datum/computer_file/program/robocontrol - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ botcount Number of simple robots on-station.
+ current_access Access granted by the used to summon robots.
+ current_user Used to find the location of the user for the purposes of summoning robots.
+ Var Details botcount
+
+
+
+
+
+ Number of simple robots on-station.
current_access
+
+
+
+
+
+ Access granted by the used to summon robots.
current_user
+
+
+
+
+
+ Used to find the location of the user for the purposes of summoning robots.
+
+
+
diff --git a/datum/computer_file/program/robotact.html b/datum/computer_file/program/robotact.html
new file mode 100644
index 0000000000000..163225ba6fbe6
--- /dev/null
+++ b/datum/computer_file/program/robotact.html
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+ /datum/computer_file/program/robotact - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ tablet A typed reference to the computer, specifying the borg tablet type Procs
+ force_full_update Forces a full update of the UI, if currently open.
+ Var Details
+ A typed reference to the computer, specifying the borg tablet type
Proc Details force_full_update()
+
+
+
+
+
+ Forces a full update of the UI, if currently open.
+Forces an update that includes refreshing ui_static_data. Called by
+law changes and borg log additions.
+
+
+
diff --git a/datum/computer_file/program/secureye.html b/datum/computer_file/program/secureye.html
new file mode 100644
index 0000000000000..5a650e69faa9c
--- /dev/null
+++ b/datum/computer_file/program/secureye.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /datum/computer_file/program/secureye - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details cam_plane_masters
+
+
+
+
+
+ All the plane masters that need to be applied.
last_camera_turf
+
+
+
+
+
+ The turf where the camera was last updated.
+
+
+
diff --git a/datum/computer_file/program/signaler.html b/datum/computer_file/program/signaler.html
new file mode 100644
index 0000000000000..4a7ce7b9f1ea9
--- /dev/null
+++ b/datum/computer_file/program/signaler.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ /datum/computer_file/program/signaler - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details radio_connection
+
+
+
+
+
+ Radio connection datum used by signalers.
signal_code
+
+
+
+
+
+ What is the saved signal code?
signal_frequency
+
+
+
+
+
+ What is the saved signal frequency?
+
+
+
diff --git a/datum/computer_file/program/supermatter_monitor.html b/datum/computer_file/program/supermatter_monitor.html
new file mode 100644
index 0000000000000..d0392fa5f4b05
--- /dev/null
+++ b/datum/computer_file/program/supermatter_monitor.html
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+ /datum/computer_file/program/supermatter_monitor - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ clear_signals Removes the signal listener for Supermatter delaminations from the selected supermatter.
+ send_alert Sends an SM delam alert to the computer.
+ send_start_alert Sends an SM delam start alert to the computer.
+ set_signals Sets up the signal listener for Supermatter delaminations.
Proc Details clear_signals()
+
+
+
+
+
+ Removes the signal listener for Supermatter delaminations from the selected supermatter.
+Pretty much does what it says.
send_alert()
+
+
+
+
+
+ Sends an SM delam alert to the computer.
+Triggered by a signal from the selected supermatter, this proc sends a notification
+to the computer if the program is either closed or minimized. We do not send these
+notifications to the comptuer if we're the active program, because engineers fixing
+the supermatter probably don't need constant beeping to distract them.
send_start_alert()
+
+
+
+
+
+ Sends an SM delam start alert to the computer.
+Triggered by a signal from the selected supermatter at the start of a delamination,
+this proc sends a notification to the computer if this program is the active one.
+We do this so that people carrying a tablet with NT CIMS open but with the NTOS window
+closed will still get one audio alert. This is not sent to computers with the program
+minimized or closed to avoid double-notifications.
set_signals()
+
+
+
+
+
+ Sets up the signal listener for Supermatter delaminations.
+Unregisters any old listners for SM delams, and then registers one for the SM refered
+to in the active
variable. This proc is also used with no active SM to simply clear
+the signal and exit.
+
+
+
diff --git a/datum/config_entry.html b/datum/config_entry.html
new file mode 100644
index 0000000000000..bb9916a20dc7f
--- /dev/null
+++ b/datum/config_entry.html
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+ /datum/config_entry - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ abstract_type Do not instantiate if type matches this
+ config_entry_value The configured value for this entry. This shouldn't be initialized in code, instead set default
+ default Read-only default value for this config entry, used for resetting value to defaults when necessary. This is what config_entry_value is initially set to
+ default_protection Stores the original protection configuration, used for set_default()
+ deprecated_by The config name of a configuration type that depricates this, if it exists
+ dupes_allowed Controls if error is thrown when duplicate configuration values for this entry type are encountered
+ modified Set to TRUE if the default has been overridden by a config entry
+ name Read-only, this is determined by the last portion of the derived entry type
+ postload_required Requires running OnPostload()
+ protection The /datum/config_entry type that supercedes this one
+ resident_file The file which this was loaded from, if any
+ vv_VAS Force validate and set on VV. VAS proccall guard will run regardless. Procs
+ set_default Returns the value of the configuration datum to its default, used for resetting a config value. Note this also sets the protection back to default.
+ Var Details abstract_type
+
+
+
+
+
+ Do not instantiate if type matches this
config_entry_value
+
+
+
+
+
+ The configured value for this entry. This shouldn't be initialized in code, instead set default
default
+
+
+
+
+
+ Read-only default value for this config entry, used for resetting value to defaults when necessary. This is what config_entry_value is initially set to
default_protection
+
+
+
+
+
+ Stores the original protection configuration, used for set_default()
deprecated_by
+
+
+
+
+
+ The config name of a configuration type that depricates this, if it exists
dupes_allowed
+
+
+
+
+
+ Controls if error is thrown when duplicate configuration values for this entry type are encountered
modified
+
+
+
+
+
+ Set to TRUE if the default has been overridden by a config entry
name
+
+
+
+
+
+ Read-only, this is determined by the last portion of the derived entry type
postload_required
+
+
+
+
+
+ Requires running OnPostload()
protection
+
+
+
+
+
+ The /datum/config_entry type that supercedes this one
resident_file
+
+
+
+
+
+ The file which this was loaded from, if any
vv_VAS
+
+
+
+
+
+ Force validate and set on VV. VAS proccall guard will run regardless.
Proc Details set_default()
+
+
+
+
+
+ Returns the value of the configuration datum to its default, used for resetting a config value. Note this also sets the protection back to default.
+
+
+
diff --git a/datum/config_entry/keyed_list.html b/datum/config_entry/keyed_list.html
new file mode 100644
index 0000000000000..5e09266e97fd8
--- /dev/null
+++ b/datum/config_entry/keyed_list.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /datum/config_entry/keyed_list - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ lowercase_key whether the key names will be lowercased on ValidateAndSet or not.
+ Var Details lowercase_key
+
+
+
+
+
+ whether the key names will be lowercased on ValidateAndSet or not.
+
+
+
diff --git a/datum/config_entry/str_list.html b/datum/config_entry/str_list.html
new file mode 100644
index 0000000000000..8e2d2bf7ca6f4
--- /dev/null
+++ b/datum/config_entry/str_list.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /datum/config_entry/str_list - SPLURT Station 13
+
+
+
+
+
+
+List config entry, used for configuring a list of strings
Vars
+ lowercase whether the string elements will be lowercased on ValidateAndSet or not.
+ Var Details lowercase
+
+
+
+
+
+ whether the string elements will be lowercased on ValidateAndSet or not.
+
+
+
diff --git a/datum/config_entry/string.html b/datum/config_entry/string.html
new file mode 100644
index 0000000000000..2f195e85fb609
--- /dev/null
+++ b/datum/config_entry/string.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /datum/config_entry/string - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ lowercase whether the string will be lowercased on ValidateAndSet or not.
+ Var Details lowercase
+
+
+
+
+
+ whether the string will be lowercased on ValidateAndSet or not.
+
+
+
diff --git a/datum/controller/configuration.html b/datum/controller/configuration.html
new file mode 100644
index 0000000000000..37e4595e17a59
--- /dev/null
+++ b/datum/controller/configuration.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /datum/controller/configuration - SPLURT Station 13
+
+
+
+
+
+
+Proc Details GetEntryDatum(entry_type)
+
+
+
+
+
+ Your typical GET but returns a config.
+
+
+
diff --git a/datum/controller/global_vars.html b/datum/controller/global_vars.html
new file mode 100644
index 0000000000000..27460c61100c7
--- /dev/null
+++ b/datum/controller/global_vars.html
@@ -0,0 +1,454 @@
+
+
+
+
+
+
+ /datum/controller/global_vars - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details GPS_list
+
+
+
+
+
+ Global GPS_list. All GPS components get saved in here for easy reference.
acid_overlay
+ – /static/mutable_appearance
+
+
+
+
+ ACID
adamantine_recipes
+
+
+
+
+
+ Others
admin_state
+
+
+
+
+
+ tgui state: admin_state
+Checks that the user is an admin, end-of-story.
always_state
+
+
+
+
+
+ tgui state: always_state
+Always grants the user UI_INTERACTIVE. Period.
announcer_keys
+
+
+
+
+
+ Global list of all of our announcer keys.
areas_by_type
+
+
+
+
+
+ An association from typepath to area instance. Only includes areas with unique
set.
conscious_state
+
+
+
+
+
+ tgui state: conscious_state
+Only checks if the user is conscious.
contained_state
+
+
+
+
+
+ tgui state: contained_state
+Checks that the user is inside the src_object.
+ All alive antags with clients.
current_observers_list
+
+
+
+
+
+ All observers with clients that joined as observers.
deep_inventory_state
+
+
+
+
+
+ tgui state: deep_inventory_state
+Checks that the src_object is in the user's deep
+(backpack, box, toolbox, etc) inventory.
default_state
+
+
+
+
+
+ tgui state: default_state
+Checks a number of things -- mostly physical distance for humans
+and view for robots.
dummySave
+
+
+
+
+
+ Save file used in icon2base64. Used for converting icons to base64.
em_block_color
+
+
+
+
+
+ A globaly cached version of EM_BLOCK_COLOR for quick access.
em_mask_matrix
+
+
+
+
+
+ A globaly cached version of EM_MASK_MATRIX for quick access.
emissive_color
+
+
+
+
+
+ A globaly cached version of EMISSIVE_COLOR for quick access.
families_override_theme
+
+
+
+
+
+ Forces the Families theme to be the one in this variable via variable editing. Used for debugging.
focused_tests
+
+
+
+
+
+ A list of every test that is currently focused.
+Use the PERFORM_ALL_TESTS macro instead.
fun_state
+
+
+
+
+
+ tgui state: fun_state
+Checks that the user has the fun privilige.
gateway_destinations
+
+
+
+
+
+ List of possible gateway destinations.
glide_size_multiplier
+
+
+
+
+
+ Compensating for time dialation
hands_state
+
+
+
+
+
+ tgui state: hands_state
+Checks that the src_object is in the user's hands.
human_adjacent_state
+
+
+
+
+
+ tgui state: human_adjacent_state
+In addition to default checks, only allows interaction for a
+human adjacent user.
inventory_state
+
+
+
+
+
+ tgui state: inventory_state
+Checks that the src_object is in the user's top-level
+(hand, ear, pocket, belt, etc) inventory.
+ tgui state: language_menu_state
living_heart_cache
+
+
+
+
+
+ internal_tick_usage is updated every tick by extools
+Heretics --
mafia_bad_signup
+
+
+
+
+
+ list of ghosts who want to play mafia that have since disconnected. They are kept in the lobby, but not counted for starting a game.
mafia_game
+
+
+
+
+
+ the current global mafia game running.
mafia_signup
+
+
+
+
+
+ list of ghosts who want to play mafia, every time someone enters the list it checks to see if enough are in
marker_beacon_colors
+
+
+
+
+
+ Marker Beacons
megafauna_spawn_list
+
+
+
+
+
+ Global list of megafauna spawns on cave gen
mod_themes
+
+
+
+
+
+ Global list of all /datum/mod_theme
never_state
+
+
+
+
+
+ tgui state: never_state
+Always closes the UI, no matter what. See the ui_state in religious_tool.dm to see an example
new_player_state
+
+
+
+
+
+ tgui state: new_player_state
+Checks that the user is a new_player, or if user is an admin
not_incapacitated_state
+
+
+
+
+
+ tgui state: not_incapacitated_state
+Checks that the user isn't incapacitated
not_incapacitated_turf_state
+
+
+
+
+
+ tgui state: not_incapacitated_turf_state
+Checks that the user isn't incapacitated and that their loc is a turf
notcontained_state
+
+
+
+
+
+ tgui state: notcontained_state
+Checks that the user is not inside src_object, and then makes the
+default checks.
observer_state
+
+
+
+
+
+ tgui state: observer_state
+Checks that the user is an observer/ghost.
physical_obscured_state
+
+
+
+
+
+ tgui state: physical_obscured_state
+Short-circuits the default state to only check physical distance, being in view doesn't matter
physical_state
+
+
+
+
+
+ tgui state: physical_state
+Short-circuits the default state to only check physical distance.
picture_log_directory
+
+
+
+
+
+ Picture logging
random_zlevels_generated
+
+
+
+
+
+ Away missions, VR, random z levels stuff.
+ We want reality_smash_tracker to exist only once and be accesable from anywhere.
req_console_assistance
+
+
+
+
+
+ Requests Console
+Originally written by errorage, updated by: Carn, needs more work though. I just added some security fixes
screentip_context_icons
+
+
+
+
+
+ Stores the cursor hint icons for screentip context.
self_state
+
+
+
+
+
+ tgui state: self_state
+Only checks that the user and src_object are the same.
slavers_ransom_values
+
+
+
+
+
+ Price table for when trying to set slave prices automatically
subsystem_log
+
+
+
+
+
+ cit logging
teleportlocs
+
+
+
+
+
+ A list of teleport locations
+Adding a wizard area teleport list because motherfucking lag -- Urist
+I am far too lazy to make it a proper list of areas so I'll just make it run the usual telepot routine at the start of the game
the_gateway
+
+
+
+
+
+ Station home gateway
trait_name_map
+
+
+
+
+
+ value -> trait name, generated on use from trait_by_type global
typing_indicator_overlays
+
+
+
+
+
+ state = overlay/image/object/type/whatever add_overlay will accept
ui_vorepanel_state
+
+
+
+
+
+ tgui state: vorepanel_state
+Only checks that the user and src_object are the same.
world_suspicious_login_log
+
+
+
+
+
+ Log associated with [/proc/log_suspicious_login()] - Intended to hold all logins that failed due to suspicious circumstances such as ban detection, CID randomisation etc.
z_state
+
+
+
+
+
+ tgui state: z_state
+Only checks that the Z-level of the user and src_object are the same.
+
+
+
diff --git a/datum/controller/master.html b/datum/controller/master.html
new file mode 100644
index 0000000000000..3a86ea3a89283
--- /dev/null
+++ b/datum/controller/master.html
@@ -0,0 +1,111 @@
+
+
+
+
+
+
+ /datum/controller/master - SPLURT Station 13
+
+
+
+
+
+
+Start of queue linked list
+End of queue linked list (used for appending to the list)
+Are we loading in a new map?
+for scheduling different subsystems for different stages of the round
Vars
+ current_ticklimit current tick limit, assigned before running a subsystem.
+used by CHECK_TICK as well so that the procs subsystems call can obey that SS's tick limits
+ iteration How many times have we ran
+ last_run world.time of last fire, for tracking lag outside of the mc
+ last_type_processed The type of the last subsystem to be fire()'d.
+ make_runtime makes the mc main loop runtime
+ processing Are we processing (higher values increase the processing delay by n ticks)
+ skip_ticks Only run ticker subsystems for the next n ticks.
+ sleep_delta How long is the MC sleeping between runs, read only (set by Loop() based off of anti-tick-contention heuristics)
+ stack_end_detector Stack end detector to detect stack overflows that kill the mc's main loop
+ subsystems List of subsystems to process(). Procs
+ laggy_byond_map_update_incoming Warns us that the end of tick byond map_update will be laggier then normal, so that we can just skip running subsystems this tick.
+ Var Details current_ticklimit
+
+
+
+
+
+ current tick limit, assigned before running a subsystem.
+used by CHECK_TICK as well so that the procs subsystems call can obey that SS's tick limits
iteration
+
+
+
+
+
+ How many times have we ran
last_run
+
+
+
+
+
+ world.time of last fire, for tracking lag outside of the mc
last_type_processed
+
+
+
+
+
+ The type of the last subsystem to be fire()'d.
make_runtime
+
+
+
+
+
+ makes the mc main loop runtime
processing
+
+
+
+
+
+ Are we processing (higher values increase the processing delay by n ticks)
skip_ticks
+
+
+
+
+
+ Only run ticker subsystems for the next n ticks.
sleep_delta
+
+
+
+
+
+ How long is the MC sleeping between runs, read only (set by Loop() based off of anti-tick-contention heuristics)
+ Stack end detector to detect stack overflows that kill the mc's main loop
subsystems
+
+
+
+
+
+ List of subsystems to process().
Proc Details laggy_byond_map_update_incoming()
+
+
+
+
+
+ Warns us that the end of tick byond map_update will be laggier then normal, so that we can just skip running subsystems this tick.
+
+
+
diff --git a/datum/controller/subsystem.html b/datum/controller/subsystem.html
new file mode 100644
index 0000000000000..7465f530fef2a
--- /dev/null
+++ b/datum/controller/subsystem.html
@@ -0,0 +1,232 @@
+
+
+
+
+
+
+ /datum/controller/subsystem - SPLURT Station 13
+
+
+
+
+
+
+Defines a subsystem to be managed by the Master Controller
+Simply define a child of this subsystem, using the [SUBSYSTEM_DEF] macro, and the MC will handle registration.
+Changing the name is required
Vars
+ can_fire Set to 0 to prevent fire() calls, mostly for admin use or subsystems that may be resumed later
+use the SS_NO_FIRE flag instead for systems that never fire to keep it from even being added to list that is checked every tick
+ cost Running average of the amount of milliseconds it takes the subsystem to complete a run (including all resumes but not the time spent paused)
+ failure_strikes How many times we suspect a subsystem type has crashed the MC, 3 strikes and you're out!
+ flags Subsystem Flags to control binary behavior. Flags must be set at compile time or before preinit finishes to take full effect. (You can also restart the mc to force them to process again)
+ init_order Order of initialization. Higher numbers are initialized first, lower numbers later. Use or create defines such as [INIT_ORDER_DEFAULT] so we can see the order in one file.
+ initialized This var is set to TRUE after the subsystem has been initialized.
+ last_fire Last world.time the subsystem completed a run (as in wasn't paused by [MC_TICK_CHECK])
+ name Name of the subsystem - you must change this
+ next_fire Scheduled world.time for next fire()
+ paused_tick_usage Tracks how much of a tick the subsystem has consumed in the current run
+ paused_ticks Tracks how many fires the subsystem has consecutively paused on in the current run
+ postponed_fires How many fires have we been requested to postpone
+ priority Priority Weight: When mutiple subsystems need to run in the same tick, higher priority subsystems will be given a higher share of the tick before MC_TICK_CHECK triggers a sleep, higher priority subsystems also run before lower priority subsystems
+ queue_next Next subsystem in the queue of subsystems to run this tick
+ queue_prev Previous subsystem in the queue of subsystems to run this tick
+ queued_priority Priority at the time the subsystem entered the queue. Needed to avoid changes in priority (by admins and the like) from breaking things.
+ queued_time Time the subsystem entered the queue, (for timing and priority reasons)
+ runlevels Bitmap of what game states can this subsystem fire at. See [RUNLEVELS_DEFAULT] for more details.
+ state Tracks the current execution state of the subsystem. Used to handle subsystems that sleep in fire so the mc doesn't run them again while they are sleeping
+ tick_overrun Running average of the amount of tick usage (in percents of a game tick) the subsystem has spent past its allocated time without pausing
+ tick_usage Running average of the amount of tick usage in percents of a tick it takes the subsystem to complete a run
+ ticks Tracks how many fires the subsystem takes to complete a run on average.
+ times_fired Tracks the amount of completed runs for the subsystem
+ wait Time to wait (in deciseconds) between each call to fire(). Must be a positive integer. Procs
+ OnConfigLoad Called after the config has been loaded or reloaded.
+ PreInit datum/controller/subsystem/New()
+ postpone Causes the next "cycle" fires to be missed. Effect is accumulative but can reset by calling update_nextfire(reset_time = TRUE)
+ update_nextfire
+ Var Details can_fire
+
+
+
+
+
+ Set to 0 to prevent fire() calls, mostly for admin use or subsystems that may be resumed later
+use the SS_NO_FIRE flag instead for systems that never fire to keep it from even being added to list that is checked every tick
cost
+
+
+
+
+
+ Running average of the amount of milliseconds it takes the subsystem to complete a run (including all resumes but not the time spent paused)
failure_strikes
+
+
+
+
+
+ How many times we suspect a subsystem type has crashed the MC, 3 strikes and you're out!
flags
+
+
+
+
+
+ Subsystem Flags to control binary behavior. Flags must be set at compile time or before preinit finishes to take full effect. (You can also restart the mc to force them to process again)
init_order
+
+
+
+
+
+ Order of initialization. Higher numbers are initialized first, lower numbers later. Use or create defines such as [INIT_ORDER_DEFAULT] so we can see the order in one file.
initialized
+
+
+
+
+
+ This var is set to TRUE after the subsystem has been initialized.
last_fire
+
+
+
+
+
+ Last world.time the subsystem completed a run (as in wasn't paused by [MC_TICK_CHECK])
name
+
+
+
+
+
+ Name of the subsystem - you must change this
next_fire
+
+
+
+
+
+ Scheduled world.time for next fire()
paused_tick_usage
+
+
+
+
+
+ Tracks how much of a tick the subsystem has consumed in the current run
paused_ticks
+
+
+
+
+
+ Tracks how many fires the subsystem has consecutively paused on in the current run
postponed_fires
+
+
+
+
+
+ How many fires have we been requested to postpone
priority
+
+
+
+
+
+ Priority Weight: When mutiple subsystems need to run in the same tick, higher priority subsystems will be given a higher share of the tick before MC_TICK_CHECK triggers a sleep, higher priority subsystems also run before lower priority subsystems
+ Next subsystem in the queue of subsystems to run this tick
+ Previous subsystem in the queue of subsystems to run this tick
queued_priority
+
+
+
+
+
+ Priority at the time the subsystem entered the queue. Needed to avoid changes in priority (by admins and the like) from breaking things.
queued_time
+
+
+
+
+
+ Time the subsystem entered the queue, (for timing and priority reasons)
runlevels
+
+
+
+
+
+ Bitmap of what game states can this subsystem fire at. See [RUNLEVELS_DEFAULT] for more details.
state
+
+
+
+
+
+ Tracks the current execution state of the subsystem. Used to handle subsystems that sleep in fire so the mc doesn't run them again while they are sleeping
tick_overrun
+
+
+
+
+
+ Running average of the amount of tick usage (in percents of a game tick) the subsystem has spent past its allocated time without pausing
tick_usage
+
+
+
+
+
+ Running average of the amount of tick usage in percents of a tick it takes the subsystem to complete a run
ticks
+
+
+
+
+
+ Tracks how many fires the subsystem takes to complete a run on average.
times_fired
+
+
+
+
+
+ Tracks the amount of completed runs for the subsystem
wait
+
+
+
+
+
+ Time to wait (in deciseconds) between each call to fire(). Must be a positive integer.
Proc Details OnConfigLoad()
+
+
+
+
+
+ Called after the config has been loaded or reloaded.
PreInit()
+
+
+
+
+
+ datum/controller/subsystem/New()
postpone(cycles)
+
+
+
+
+
+ Causes the next "cycle" fires to be missed. Effect is accumulative but can reset by calling update_nextfire(reset_time = TRUE)
update_nextfire(reset_time)
+
+
+
+
+
+
+Update next_fire for the next run.
+reset_time (bool) - Ignore things that would normally alter the next fire, like tick_overrun, and last_fire. (also resets postpone)
+
+
+
+
diff --git a/datum/controller/subsystem/achievements.html b/datum/controller/subsystem/achievements.html
new file mode 100644
index 0000000000000..53ad836c39beb
--- /dev/null
+++ b/datum/controller/subsystem/achievements.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ /datum/controller/subsystem/achievements - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details achievements
+ – /list/datum/award/achievement
+
+
+
+
+ List of achievements
awards
+
+
+
+
+
+ List of all awards
scores
+ – /list/datum/award/score
+
+
+
+
+ List of scores
+
+
+
diff --git a/datum/controller/subsystem/atoms.html b/datum/controller/subsystem/atoms.html
new file mode 100644
index 0000000000000..9ff76fe7033f5
--- /dev/null
+++ b/datum/controller/subsystem/atoms.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ /datum/controller/subsystem/atoms - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ queued_deletions Atoms that will be deleted once the subsystem is initialized Procs
+ InitAtom Init this specific atom
+ prepare_deletion Prepares an atom to be deleted once the atoms SS is initialized.
+ Var Details queued_deletions
+
+
+
+
+
+ Atoms that will be deleted once the subsystem is initialized
Proc Details InitAtom(/atom /A, /list/arguments)
+
+
+
+
+
+ Init this specific atom
prepare_deletion
+
+ Prepares an atom to be deleted once the atoms SS is initialized.
+
+
+
diff --git a/datum/controller/subsystem/communications.html b/datum/controller/subsystem/communications.html
new file mode 100644
index 0000000000000..af87f40cc40ca
--- /dev/null
+++ b/datum/controller/subsystem/communications.html
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+ /datum/controller/subsystem/communications - SPLURT Station 13
+
+
+
+
+
+
+Proc Details can_make_emergency_meeting
+
+ Check if a mob can call an emergency meeting
+Should only really happen during april fools.
+Checks to see that it's been at least 5 minutes since the last emergency meeting call.
+Arguments:
+
+user - Mob who called the meeting
+ emergency_meeting
+
+ Call an emergency meeting
+Communications subsystem wrapper for the call_emergency_meeting world proc.
+Checks to make sure the proc can be called, and handles
+relevant logging and timing. See that proc definition for more detail.
+Arguments:
+
+user - Mob who called the meeting
+
+
+
+
diff --git a/datum/controller/subsystem/discord.html b/datum/controller/subsystem/discord.html
new file mode 100644
index 0000000000000..5fdd663e29efc
--- /dev/null
+++ b/datum/controller/subsystem/discord.html
@@ -0,0 +1,194 @@
+
+
+
+
+
+
+ /datum/controller/subsystem/discord - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details common_words
+
+
+
+
+
+ Common words list, used to generate one time tokens
enabled
+
+
+
+
+
+ Is TGS enabled (If not we won't fire because otherwise this is useless)
notify_file
+
+
+
+
+
+ The file where notification status is saved
notify_members
+
+
+
+
+
+ People to save to notify file
notify_members_cache
+
+
+
+
+
+ Copy of previous list, so the SS doesnt have to fire if no new members have been added
people_to_notify
+
+
+
+
+
+ People to notify on roundstart
reverify_cache
+
+
+
+
+
+ People who have tried to verify this round already
Proc Details
+ Check if an account is linked for login
+This will look for a valid discord link for the new player's ckey. Defaults to TRUE if the server isn't configured for discord verification
+It better be called with ?. in case the subsystem is still Initializing
+Arguments:
+
+player: the new player to check
+
+Returns TRUE or FALSE
delete_nulls()
+
+
+
+
+
+ Delete NULL discord IDs in the database
+This will look for rows where discord_id is NULL and delete them.
+Hopefully will help fix the errors where people verify but are unable to enter the game
find_discord_link_by_ckey(ckey, timebound)
+
+
+
+
+
+ Find discord link entry by the passed in user ckey
+This will look into the discord link table and return the first entry that matches the given ckey
+Remember, multiple entries can exist
+Arguments:
+
+ckey the users ckey as a string
+timebound should we search only in the last 4 hours
+
+Returns a /datum/discord_link_record
find_discord_link_by_discord_id(discord_id, timebound)
+
+
+
+
+
+ Find discord link entry by the passed in user ckey
+This will look into the discord link table and return the first entry that matches the given ckey
+Remember, multiple entries can exist
+Arguments:
+
+discord_id The users discord id (string)
+timebound should we search only in the last 4 hours
+
+Returns a /datum/discord_link_record
find_discord_link_by_token(one_time_token, timebound)
+
+
+
+
+
+ Find discord link entry by the passed in user token
+This will look into the discord link table and return the first entry that matches the given one time token
+Remember, multiple entries can exist, as they are only guaranteed to be unique for their validity period
+Arguments:
+
+one_time_token the string of words representing the one time token
+timebound A boolean flag, that specifies if it should only look for entries within the last 4 hours, off by default
+
+Returns a /datum/discord_link_record
generate_one_time_token(ckey_for)
+
+
+
+
+
+ Generate a timebound token for discord verification
+This uses the common word list to generate a six word random token, this token can then be fed to a discord bot that has access
+to the same database, and it can use it to link a ckey to a discord id, with minimal user effort
+It returns the token to the calling proc, after inserting an entry into the discord_link table of the following form
+(unique_id, ckey, null, the current time, the one time token generated)
+the null value will be filled out with the discord id by the integrated discord bot when a user verifies
+
+Notes:
+
+The token is guaranteed to unique during it's validity period
+The validity period is currently set at 4 hours
+a token may not be unique outside it's validity window (to reduce conflicts)
+
+Arguments:
+
+ckey_for a string representing the ckey this token is for
+
+Returns a string representing the one time token
lookup_ckey(lookup_id)
+
+
+
+
+
+ Given a discord id as a string, look up the ckey attached to that account, if any
+This gets the most recent entry from the discord_link table that is associated with this discord id snowflake
+Arguments:
+
+lookup_id The discord id as a string
+ lookup_id(lookup_ckey)
+
+
+
+
+
+ Given a ckey, look up the discord user id attached to the user, if any
+This gets the most recent entry from the discord link table that is associated with the given ckey
+Arguments:
+
+lookup_ckey A string representing the ckey to search on
+
+
+
+
diff --git a/datum/controller/subsystem/economy.html b/datum/controller/subsystem/economy.html
new file mode 100644
index 0000000000000..af1e8d1d4ff03
--- /dev/null
+++ b/datum/controller/subsystem/economy.html
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+ /datum/controller/subsystem/economy - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ bounty_modifier The modifier multiplied to the value of bounties paid out.
+ export_total Contains the message to send to newscasters about earnings, updated on price_update()
+Total value of exported materials.
+ import_total Total value of imported goods.
+ mail_waiting Number of mail items generated.
+ pack_price_modifier The modifier multiplied to the value of cargo pack prices.
+ Var Details bounty_modifier
+
+
+
+
+
+ The modifier multiplied to the value of bounties paid out.
export_total
+
+
+
+
+
+ Contains the message to send to newscasters about earnings, updated on price_update()
+Total value of exported materials.
import_total
+
+
+
+
+
+ Total value of imported goods.
mail_waiting
+
+
+
+
+
+ Number of mail items generated.
pack_price_modifier
+
+
+
+
+
+ The modifier multiplied to the value of cargo pack prices.
+
+
+
diff --git a/datum/controller/subsystem/input.html b/datum/controller/subsystem/input.html
new file mode 100644
index 0000000000000..72a32e19045a9
--- /dev/null
+++ b/datum/controller/subsystem/input.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+ /datum/controller/subsystem/input - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ all_macrosets KEEP THIS UP TO DATE!
+ hotkey_mode_macros Macro set for hotkeys
+ input_mode_macros Macro set for classic.
+ macroset_classic_hotkey Classic mode map focused macro set. Manually set because it needs to be clientside and go to macroset_classic_input.
+ macroset_classic_input Classic mode input focused macro set. Manually set because we can't define ANY or ANY+UP for classic.
+ macroset_hotkey New hotkey mode macro set. All input goes into map, game keeps incessently setting your focus to map, we can use ANY all we want here; we don't care about the input bar, the user has to force the input bar every time they want to type. Procs
+ setup_macrosets Sets up the key list for classic mode for when badmins screw up vv's.
+ Var Details all_macrosets
+
+
+
+
+
+ KEEP THIS UP TO DATE!
hotkey_mode_macros
+
+
+
+
+
+ Macro set for hotkeys
+ Macro set for classic.
macroset_classic_hotkey
+
+
+
+
+
+ Classic mode map focused macro set. Manually set because it needs to be clientside and go to macroset_classic_input.
+ Classic mode input focused macro set. Manually set because we can't define ANY or ANY+UP for classic.
macroset_hotkey
+
+
+
+
+
+ New hotkey mode macro set. All input goes into map, game keeps incessently setting your focus to map, we can use ANY all we want here; we don't care about the input bar, the user has to force the input bar every time they want to type.
Proc Details setup_macrosets()
+
+
+
+
+
+ Sets up the key list for classic mode for when badmins screw up vv's.
+
+
+
diff --git a/datum/controller/subsystem/interactions.html b/datum/controller/subsystem/interactions.html
new file mode 100644
index 0000000000000..5aed69e8bf612
--- /dev/null
+++ b/datum/controller/subsystem/interactions.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+ /datum/controller/subsystem/interactions - SPLURT Station 13
+
+
+
+
+
+
+Proc Details prepare_blacklisted_mobs()
+
+
+
+
+
+ Blacklisting!
prepare_interactions()
+
+
+
+
+
+ Makes the interactions, they're also a global list because having it as a list and just hanging around there is stupid
+
+
+
diff --git a/datum/controller/subsystem/job.html b/datum/controller/subsystem/job.html
new file mode 100644
index 0000000000000..ce26d4a33d604
--- /dev/null
+++ b/datum/controller/subsystem/job.html
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+ /datum/controller/subsystem/job - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details real_job_name
+
+
+
+
+
+ Stores an associative list of job name -> its "real" counterpart. Built to handle alt titles
Proc Details DivideOccupations(/list/required_jobs)
+
+
+
+
+
+
+Proc DivideOccupations
+fills var "assigned_role" for all ready players.
+This proc must not have any side effect besides of modifying "assigned_role".
+ get_valid_overflow_jobs()
+
+
+
+
+
+ Returns a list of jobs that we are allowed to fuck with during random events
+
+
+
diff --git a/datum/controller/subsystem/mapping.html b/datum/controller/subsystem/mapping.html
new file mode 100644
index 0000000000000..8ca86dc2e7270
--- /dev/null
+++ b/datum/controller/subsystem/mapping.html
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+ /datum/controller/subsystem/mapping - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ biomes All possible biomes in assoc list as type || instance
+ obfuscation_next_id next id for separating obfuscated ids.
+ obfuscation_secret "secret" key
+ random_generated_ids_by_original Lookup list for random generated IDs.
+ z_to_station_z_index Lookup for zlevel to station z. text = num. Procs
+ get_obfuscated_id Generates an obfuscated but constant id for an original id for cases where you don't want players codediving for an id.
+WARNING: MAKE SURE PLAYERS ARE NOT ABLE TO ACCESS THIS. To save performance, it's just secret + an incrementing number. Very guessable if you know what the secret is.
+ initialize_biomes Initialize all biomes, assoc as type || instance
+ Var Details biomes
+
+
+
+
+
+ All possible biomes in assoc list as type || instance
obfuscation_next_id
+
+
+
+
+
+ next id for separating obfuscated ids.
obfuscation_secret
+
+
+
+
+
+ "secret" key
random_generated_ids_by_original
+
+
+
+
+
+ Lookup list for random generated IDs.
z_to_station_z_index
+
+
+
+
+
+ Lookup for zlevel to station z. text = num.
Proc Details get_obfuscated_id(original, id_type)
+
+
+
+
+
+ Generates an obfuscated but constant id for an original id for cases where you don't want players codediving for an id.
+WARNING: MAKE SURE PLAYERS ARE NOT ABLE TO ACCESS THIS. To save performance, it's just secret + an incrementing number. Very guessable if you know what the secret is.
initialize_biomes()
+
+
+
+
+
+ Initialize all biomes, assoc as type || instance
+
+
+
diff --git a/datum/controller/subsystem/materials.html b/datum/controller/subsystem/materials.html
new file mode 100644
index 0000000000000..2876a2b114577
--- /dev/null
+++ b/datum/controller/subsystem/materials.html
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+ /datum/controller/subsystem/materials - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ base_stack_recipes List of stackcrafting recipes for materials using base recipes
+ material_combos A cache of all material combinations that have been used
+ materials Dictionary of material.type || material ref
+ materials_by_category Dictionary of category || list of material refs
+ materialtypes_by_category Dictionary of category || list of material types, mostly used by rnd machines like autolathes.
+ rigid_stack_recipes List of stackcrafting recipes for materials using rigid recipes Procs
+ FindOrCreateMaterialCombo Returns a list to be used as an object's custom_materials. Lists will be cached and re-used based on the parameters.
+ InitializeMaterials Ran on initialize, populated the materials and materials_by_category dictionaries with their appropiate vars (See these variables for more info)
+ Var Details base_stack_recipes
+
+
+
+
+
+ List of stackcrafting recipes for materials using base recipes
material_combos
+
+
+
+
+
+ A cache of all material combinations that have been used
materials
+
+
+
+
+
+ Dictionary of material.type || material ref
materials_by_category
+
+
+
+
+
+ Dictionary of category || list of material refs
materialtypes_by_category
+
+
+
+
+
+ Dictionary of category || list of material types, mostly used by rnd machines like autolathes.
rigid_stack_recipes
+
+
+
+
+
+ List of stackcrafting recipes for materials using rigid recipes
Proc Details FindOrCreateMaterialCombo(/list/materials_declaration, multiplier)
+
+
+
+
+
+ Returns a list to be used as an object's custom_materials. Lists will be cached and re-used based on the parameters.
InitializeMaterials()
+
+
+
+
+
+ Ran on initialize, populated the materials and materials_by_category dictionaries with their appropiate vars (See these variables for more info)
+
+
+
diff --git a/datum/controller/subsystem/min_spawns.html b/datum/controller/subsystem/min_spawns.html
new file mode 100644
index 0000000000000..68d91fb84617e
--- /dev/null
+++ b/datum/controller/subsystem/min_spawns.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /datum/controller/subsystem/min_spawns - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ init_order this hot steaming pile of garbage makes sure theres a minimum of tendrils scattered around
+ Var Details init_order
+
+
+
+
+
+ this hot steaming pile of garbage makes sure theres a minimum of tendrils scattered around
+
+
+
diff --git a/datum/controller/subsystem/npcpool.html b/datum/controller/subsystem/npcpool.html
new file mode 100644
index 0000000000000..13e13f55ed576
--- /dev/null
+++ b/datum/controller/subsystem/npcpool.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /datum/controller/subsystem/npcpool - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details invoke_start
+
+
+
+
+
+ Invoke start time
invoking
+
+
+
+
+
+ catches sleeping
+
+
+
diff --git a/datum/controller/subsystem/parallax.html b/datum/controller/subsystem/parallax.html
new file mode 100644
index 0000000000000..63d76e714b98d
--- /dev/null
+++ b/datum/controller/subsystem/parallax.html
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+ /datum/controller/subsystem/parallax - SPLURT Station 13
+
+
+
+
+
+
+Proc Details get_parallax_datum(z)
+
+
+
+
+
+ Gets parallax for zlevel.
get_parallax_motion(z)
+
+
+
+
+
+ Gets parallax motion for a zlevel
+Returns null or list(speed, dir deg clockwise from north, windup, turnrate)
+THE RETURNED LIST MUST BE A 4-TUPLE, OR PARALLAX WILL CRASH.
+DO NOT SCREW WITH THIS UNLESS YOU KNOW WHAT YOU ARE DOING.
+This will override area motion
get_parallax_type(z)
+
+
+
+
+
+ Gets parallax type for zlevel.
get_parallax_vis_contents(z)
+
+
+
+
+
+ Gets parallax added vis contents for zlevel
reset_clients_on_z(z)
+
+
+
+
+
+ resets all parallax for clients on a z
update_clients_on_z(z)
+
+
+
+
+
+ updates all parallax for clients on a z
update_z_motion(z)
+
+
+
+
+
+ updates motion of all clients on z
+
+
+
diff --git a/datum/controller/subsystem/persistence.html b/datum/controller/subsystem/persistence.html
new file mode 100644
index 0000000000000..4f34fd1e81769
--- /dev/null
+++ b/datum/controller/subsystem/persistence.html
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+ /datum/controller/subsystem/persistence - SPLURT Station 13
+
+
+
+
+
+
+Persistence for cleanable debris.
+Stores recently played gamemodes, maps, etc.
+Secret satchel persistence - allows storing of items in underfloor satchels that's loaded later.
+Stores trophies in curator display cases
+ Var Details loaded_debris
+
+
+
+
+
+ tracks if we already loaded debris. Unlike everything else, this can actually be a major problem if some badmin procs it twice.
station_persistence_save_disabled
+
+
+
+
+
+ Marks if persistence save should be disabled
station_was_destroyed
+
+
+
+
+
+ Marks if the station got horribly destroyed
Proc Details SaveMapDebris()
+
+
+
+
+
+ reverse it
get_map_persistence_path()
+
+
+
+
+
+ Gets the persistence path of the current map.
+
+
+
diff --git a/datum/controller/subsystem/processing/dcs.html b/datum/controller/subsystem/processing/dcs.html
new file mode 100644
index 0000000000000..e50138730b99f
--- /dev/null
+++ b/datum/controller/subsystem/processing/dcs.html
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+ /datum/controller/subsystem/processing/dcs - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ GetIdFromArguments Generates an id for bespoke elements when given the argument list
+Generating the id here is a bit complex because we need to support named arguments
+Named arguments can appear in any order and we need them to appear after ordered arguments
+We assume that no one will pass in a named argument with a value of null
Proc Details GetIdFromArguments(/list/arguments)
+
+
+
+
+
+ Generates an id for bespoke elements when given the argument list
+Generating the id here is a bit complex because we need to support named arguments
+Named arguments can appear in any order and we need them to appear after ordered arguments
+We assume that no one will pass in a named argument with a value of null
+
+
+
diff --git a/datum/controller/subsystem/processing/instruments.html b/datum/controller/subsystem/processing/instruments.html
new file mode 100644
index 0000000000000..45c205d54d731
--- /dev/null
+++ b/datum/controller/subsystem/processing/instruments.html
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+ /datum/controller/subsystem/processing/instruments - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details current_instrument_channels
+
+
+
+
+
+ Current number of channels allocated for instruments
instrument_data
+ – /static/list/datum/instrument
+
+
+
+
+ List of all instrument data, associative id = datum
max_instrument_channels
+
+
+
+
+
+ Maximum instrument channels total instruments are allowed to use. This is so you don't have instruments deadlocking all sound channels.
musician_hearcheck_mindelay
+
+
+
+
+
+ Deciseconds between hearchecks. Too high and instruments seem to lag when people are moving around in terms of who can hear it. Too low and the server lags from this.
musician_maxlinechars
+
+
+
+
+
+ Max characters per line in songs
musician_maxlines
+
+
+
+
+
+ Max lines in songs
songs
+ – /static/list/datum/song
+
+
+
+
+ List of all song datums.
synthesizer_instrument_ids
+
+
+
+
+
+ Single cached list for synthesizer instrument ids, so you don't have to have a new list with every synthesizer.
+
+
+
diff --git a/datum/controller/subsystem/processing/station.html b/datum/controller/subsystem/processing/station.html
new file mode 100644
index 0000000000000..a8f300f40ab89
--- /dev/null
+++ b/datum/controller/subsystem/processing/station.html
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+ /datum/controller/subsystem/processing/station - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ announcer Currently active announcer. Starts as a type but gets initialized after traits are selected
+ selectable_traits_by_types Assoc list of trait type || assoc list of traits with weighted value. Used for picking traits from a specific category.
+ station_traits A list of currently active station traits Procs
+ pick_traits Picks traits of a specific category (e.g. bad or good) and a specified amount, then initializes them and adds them to the list of traits.
+ setup_trait Creates a given trait of a specific type, while also removing any blacklisted ones from the future pool.
+ Var Details
+ Currently active announcer. Starts as a type but gets initialized after traits are selected
selectable_traits_by_types
+
+
+
+
+
+ Assoc list of trait type || assoc list of traits with weighted value. Used for picking traits from a specific category.
station_traits
+
+
+
+
+
+ A list of currently active station traits
Proc Details pick_traits(trait_sign, amount)
+
+
+
+
+
+ Picks traits of a specific category (e.g. bad or good) and a specified amount, then initializes them and adds them to the list of traits.
setup_trait
+
+ Creates a given trait of a specific type, while also removing any blacklisted ones from the future pool.
+
+
+
diff --git a/datum/controller/subsystem/research.html b/datum/controller/subsystem/research.html
new file mode 100644
index 0000000000000..3437722fe5400
--- /dev/null
+++ b/datum/controller/subsystem/research.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /datum/controller/subsystem/research - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ anomaly_hard_limit_by_type The hard limits of cores created for each anomaly type. For faster code lookup without switch statements.
+ created_anomaly_types The global list of raw anomaly types that have been refined, for hard limits.
+ Var Details anomaly_hard_limit_by_type
+
+
+
+
+
+ The hard limits of cores created for each anomaly type. For faster code lookup without switch statements.
created_anomaly_types
+
+
+
+
+
+ The global list of raw anomaly types that have been refined, for hard limits.
+
+
+
diff --git a/datum/controller/subsystem/runechat.html b/datum/controller/subsystem/runechat.html
new file mode 100644
index 0000000000000..e4a4c33386706
--- /dev/null
+++ b/datum/controller/subsystem/runechat.html
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+ /datum/controller/subsystem/runechat - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ bucket_count How many messages are in the buckets
+ bucket_list List of buckets, each bucket holds every message that has to be killed that byond tick
+ bucket_resolution world.tick_lag the bucket was designed for
+ head_offset world.time of the first entry in the bucket list, effectively the 'start time' of the current buckets
+ practical_offset Index of the first non-empty bucket
+ second_queue Queue used for storing messages that are scheduled for deletion too far in the future for the buckets
+ Var Details bucket_count
+
+
+
+
+
+ How many messages are in the buckets
bucket_list
+
+
+
+
+
+ List of buckets, each bucket holds every message that has to be killed that byond tick
bucket_resolution
+
+
+
+
+
+ world.tick_lag the bucket was designed for
head_offset
+
+
+
+
+
+ world.time of the first entry in the bucket list, effectively the 'start time' of the current buckets
practical_offset
+
+
+
+
+
+ Index of the first non-empty bucket
second_queue
+ – /list/datum/chatmessage
+
+
+
+
+ Queue used for storing messages that are scheduled for deletion too far in the future for the buckets
+
+
+
diff --git a/datum/controller/subsystem/security_level.html b/datum/controller/subsystem/security_level.html
new file mode 100644
index 0000000000000..eeb7ad13cc537
--- /dev/null
+++ b/datum/controller/subsystem/security_level.html
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+ /datum/controller/subsystem/security_level - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ set_level Sets a new security level as our current level
Proc Details set_level(new_level)
+
+
+
+
+
+ Sets a new security level as our current level
+This is how everything should change the security level.
+Arguments:
+
+new_level - The new security level that will become our current level
+
+
+
+
diff --git a/datum/controller/subsystem/shuttle.html b/datum/controller/subsystem/shuttle.html
new file mode 100644
index 0000000000000..ee2ab2d0dcf89
--- /dev/null
+++ b/datum/controller/subsystem/shuttle.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+ /datum/controller/subsystem/shuttle - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ canEvac Check if we can call the evac shuttle.
+Returns TRUE if we can. Otherwise, returns a string detailing the problem.
Proc Details canEvac
+
+ Check if we can call the evac shuttle.
+Returns TRUE if we can. Otherwise, returns a string detailing the problem.
+
+
+
diff --git a/datum/controller/subsystem/sounds.html b/datum/controller/subsystem/sounds.html
new file mode 100644
index 0000000000000..34a4ac0404a1f
--- /dev/null
+++ b/datum/controller/subsystem/sounds.html
@@ -0,0 +1,148 @@
+
+
+
+
+
+
+ /datum/controller/subsystem/sounds - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ channel_list List of all channels as numbers
+ channel_random_low lower iteration position - Incremented and looped to get "random" sound channels for normal sounds. The channel at this index is returned when asking for a random channel.
+ channel_reserve_high higher reserve position - decremented and incremented to reserve sound channels, anything above this is reserved. The channel at this index is the highest unreserved channel.
+ random_channels_min Amount of channels to reserve for random usage rather than reservations being allowed to reserve all channels. Also a nice safeguard for when someone screws up.
+ reserved_channels Associative list of all reserved channels associated to their position. "[channel_number]" =
index as number
+ using_channels Assoc list, "[channel]" =
either the datum using it or TRUE for an unsafe-reserved (datumless reservation) channel
+ using_channels_by_datum Assoc list datum = list(channel1, channel2, ...) for what channels something reserved. Procs
+ available_channels_left How many channels we have left.
+ free_channel Frees a channel and updates the datastructure. Private proc.
+ free_datum_channels Frees all the channels a datum is using.
+ free_datumless_channels Frees all datumless channels
+ free_sound_channel Removes a channel from using list.
+ random_available_channel Random available channel, returns number
+ random_available_channel_text Random available channel, returns text.
+ reserve_channel Reserves a channel and updates the datastructure. Private proc.
+ reserve_sound_channel Reserves a channel for a datum. Automatic cleanup only when the datum is deleted. Returns an integer for channel.
+ reserve_sound_channel_datumless NO AUTOMATIC CLEANUP - If you use this, you better manually free it later! Returns an integer for channel.
+ Var Details channel_list
+
+
+
+
+
+ List of all channels as numbers
channel_random_low
+
+
+
+
+
+ lower iteration position - Incremented and looped to get "random" sound channels for normal sounds. The channel at this index is returned when asking for a random channel.
channel_reserve_high
+
+
+
+
+
+ higher reserve position - decremented and incremented to reserve sound channels, anything above this is reserved. The channel at this index is the highest unreserved channel.
random_channels_min
+
+
+
+
+
+ Amount of channels to reserve for random usage rather than reservations being allowed to reserve all channels. Also a nice safeguard for when someone screws up.
reserved_channels
+
+
+
+
+
+ Associative list of all reserved channels associated to their position. "[channel_number]" =
index as number
using_channels
+
+
+
+
+
+ Assoc list, "[channel]" =
either the datum using it or TRUE for an unsafe-reserved (datumless reservation) channel
using_channels_by_datum
+
+
+
+
+
+ Assoc list datum = list(channel1, channel2, ...) for what channels something reserved.
Proc Details available_channels_left()
+
+
+
+
+
+ How many channels we have left.
free_channel(number)
+
+
+
+
+
+ Frees a channel and updates the datastructure. Private proc.
free_datum_channels
+
+ Frees all the channels a datum is using.
free_datumless_channels()
+
+
+
+
+
+ Frees all datumless channels
free_sound_channel(channel)
+
+
+
+
+
+ Removes a channel from using list.
random_available_channel()
+
+
+
+
+
+ Random available channel, returns number
random_available_channel_text()
+
+
+
+
+
+ Random available channel, returns text.
reserve_channel()
+
+
+
+
+
+ Reserves a channel and updates the datastructure. Private proc.
reserve_sound_channel
+
+ Reserves a channel for a datum. Automatic cleanup only when the datum is deleted. Returns an integer for channel.
reserve_sound_channel_datumless()
+
+
+
+
+
+ NO AUTOMATIC CLEANUP - If you use this, you better manually free it later! Returns an integer for channel.
+
+
+
diff --git a/datum/controller/subsystem/sun.html b/datum/controller/subsystem/sun.html
new file mode 100644
index 0000000000000..da7102471b6da
--- /dev/null
+++ b/datum/controller/subsystem/sun.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /datum/controller/subsystem/sun - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details base_rotation
+
+
+
+
+
+ multiplier against base_rotation
Proc Details Initialize(start_timeofday)
+
+
+
+
+
+ base rotation in degrees per fire
+
+
+
diff --git a/datum/controller/subsystem/tgui.html b/datum/controller/subsystem/tgui.html
new file mode 100644
index 0000000000000..a83f79830ebef
--- /dev/null
+++ b/datum/controller/subsystem/tgui.html
@@ -0,0 +1,202 @@
+
+
+
+
+
+
+ /datum/controller/subsystem/tgui - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details basehtml
+
+
+
+
+
+ The HTML base used for all UIs.
current_run
+
+
+
+
+
+ A list of UIs scheduled to process
open_uis
+
+
+
+
+
+ A list of open UIs
open_uis_by_src
+
+
+
+
+
+ A list of open UIs, grouped by src_object.
Proc Details close_all_uis()
+
+
+
+
+
+ public
+Close all UIs regardless of their attachment to src_object.
+return int The number of UIs closed.
close_uis
+
+ public
+Close all UIs attached to src_object.
+required src_object datum The object/datum which owns the UIs.
+return int The number of UIs closed.
close_user_uis
+
+ public
+Close all UIs belonging to a user.
+required user mob The mob who opened/is using the UI.
+optional src_object datum If provided, only close UIs belonging this src_object.
+return int The number of UIs closed.
force_close_all_windows
+
+ public
+Force closes all tgui windows.
+required user mob
force_close_window(/mob /user, window_id)
+
+
+
+
+
+ public
+Force closes the tgui window by window_id.
+required user mob
+required window_id string
get_open_ui
+
+ public
+Get a open UI given a user and src_object.
+required user mob The mob who opened/is using the UI.
+required src_object datum The object/datum which owns the UI.
+return datum/tgui The found UI.
on_close
+
+ private
+Remove a UI from the list of open UIs.
+required ui datum/tgui The UI to be removed.
+return bool If the UI was removed or not.
on_logout
+
+ private
+Handle client logout, by closing all their UIs.
+required user mob The mob which logged out.
+return int The number of UIs closed.
on_open
+
+ private
+Add a UI to the list of open UIs.
+required ui datum/tgui The UI to be added.
on_transfer
+
+ private
+Handle clients switching mobs, by transferring their UIs.
+required user source The client's original mob.
+required user target The client's new mob.
+return bool If the UIs were transferred.
request_pooled_window
+
+ public
+Requests a usable tgui window from the pool.
+Returns null if pool was exhausted.
+required user mob
+return datum/tgui
try_update_ui
+
+ public
+Try to find an instance of a UI, and push an update to it.
+required user mob The mob who opened/is using the UI.
+required src_object datum The object/datum which owns the UI.
+optional ui datum/tgui The UI to be updated, if it exists.
+optional force_open bool If the UI should be re-opened instead of updated.
+return datum/tgui The found UI.
update_uis
+
+ public
+Update all UIs attached to src_object.
+required src_object datum The object/datum which owns the UIs.
+return int The number of UIs updated.
update_user_uis
+
+ public
+Update all UIs belonging to a user.
+required user mob The mob who opened/is using the UI.
+optional src_object datum If provided, only update UIs belonging this src_object.
+return int The number of UIs updated.
+
+
+
diff --git a/datum/controller/subsystem/ticker.html b/datum/controller/subsystem/ticker.html
new file mode 100644
index 0000000000000..d9e565bb7bf3e
--- /dev/null
+++ b/datum/controller/subsystem/ticker.html
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+ /datum/controller/subsystem/ticker - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ emergency_swap If the gamemode fails to be run too many times, we swap to a preset gamemode, this should give admins time to set their preferred one Procs
+ HandleRandomHardcoreScore Handles random hardcore point rewarding if it applies.
+ antag_report gotta escape nerd
+ declare_completion no score no glory
+ hardcore_random_report Generate a report for all players who made it out alive with a hardcore random character and prints their final score
+ log_roundend_report Log the round-end report as an HTML file
+ market_report Generate a report for how much money is on station, as well as the richest crewmember on the station.
+ medal_report This is the richest account on station at roundend.
+This is the station's total wealth at the end of the round.
+How many players joined the round.
+ Var Details emergency_swap
+
+
+
+
+
+ If the gamemode fails to be run too many times, we swap to a preset gamemode, this should give admins time to set their preferred one
Proc Details HandleRandomHardcoreScore
+
+ Handles random hardcore point rewarding if it applies.
antag_report()
+
+
+
+
+
+ gotta escape nerd
declare_completion()
+
+
+
+
+
+ no score no glory
hardcore_random_report()
+
+
+
+
+
+ Generate a report for all players who made it out alive with a hardcore random character and prints their final score
log_roundend_report()
+
+
+
+
+
+ Log the round-end report as an HTML file
+Composits the roundend report, and saves it in two locations.
+The report is first saved along with the round's logs
+Then, the report is copied to a fixed directory specifically for
+housing the server's last roundend report. In this location,
+the file will be overwritten at the end of each shift.
market_report()
+
+
+
+
+
+ Generate a report for how much money is on station, as well as the richest crewmember on the station.
medal_report()
+
+
+
+
+
+ This is the richest account on station at roundend.
+This is the station's total wealth at the end of the round.
+How many players joined the round.
+
+
+
diff --git a/datum/controller/subsystem/timer.html b/datum/controller/subsystem/timer.html
new file mode 100644
index 0000000000000..538f6e27735d8
--- /dev/null
+++ b/datum/controller/subsystem/timer.html
@@ -0,0 +1,127 @@
+
+
+
+
+
+
+ /datum/controller/subsystem/timer - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ bucket_auto_reset Boolean operator controlling if the timer SS will automatically reset buckets if it fails to invoke callbacks for an extended period of time
+ bucket_count How many timers are in the buckets
+ bucket_list List of buckets, each bucket holds every timer that has to run that byond tick
+ bucket_resolution world.tick_lag the bucket was designed for
+ clienttime_timers Special timers that run in real-time, not BYOND time; these are more expensive to run and maintain
+ hashes A hashlist dictionary used for storing unique timers
+ head_offset world.time of the first entry in the bucket list, effectively the 'start time' of the current buckets
+ last_invoke_tick Contains the last time that a timer's callback was invoked, or the last tick the SS fired if no timers are being processed
+ last_invoke_warning Contains the last time that a warning was issued for not invoking callbacks
+ practical_offset Index of the wrap around pivot for buckets. buckets before this are later running buckets wrapped around from the end of the bucket list.
+ second_queue Queue used for storing timers that do not fit into the current buckets
+ timer_id_dict List of all active timers associated to their timer ID (for easy lookup) Procs
+ get_timer_debug_string Generates a string with details about the timed event for debugging purposes
+ reset_buckets Destroys the existing buckets and creates new buckets from the existing timed events
+ Var Details bucket_auto_reset
+
+
+
+
+
+ Boolean operator controlling if the timer SS will automatically reset buckets if it fails to invoke callbacks for an extended period of time
bucket_count
+
+
+
+
+
+ How many timers are in the buckets
bucket_list
+
+
+
+
+
+ List of buckets, each bucket holds every timer that has to run that byond tick
bucket_resolution
+
+
+
+
+
+ world.tick_lag the bucket was designed for
clienttime_timers
+
+
+
+
+
+ Special timers that run in real-time, not BYOND time; these are more expensive to run and maintain
hashes
+
+
+
+
+
+ A hashlist dictionary used for storing unique timers
head_offset
+
+
+
+
+
+ world.time of the first entry in the bucket list, effectively the 'start time' of the current buckets
last_invoke_tick
+
+
+
+
+
+ Contains the last time that a timer's callback was invoked, or the last tick the SS fired if no timers are being processed
last_invoke_warning
+
+
+
+
+
+ Contains the last time that a warning was issued for not invoking callbacks
practical_offset
+
+
+
+
+
+ Index of the wrap around pivot for buckets. buckets before this are later running buckets wrapped around from the end of the bucket list.
second_queue
+
+
+
+
+
+ Queue used for storing timers that do not fit into the current buckets
timer_id_dict
+
+
+
+
+
+ List of all active timers associated to their timer ID (for easy lookup)
Proc Details get_timer_debug_string
+
+ Generates a string with details about the timed event for debugging purposes
reset_buckets()
+
+
+
+
+
+ Destroys the existing buckets and creates new buckets from the existing timed events
+
+
+
diff --git a/datum/controller/subsystem/vote.html b/datum/controller/subsystem/vote.html
new file mode 100644
index 0000000000000..9aa49b6973ae4
--- /dev/null
+++ b/datum/controller/subsystem/vote.html
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+ /datum/controller/subsystem/vote - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ choice_statclicks List of choice = object for statclick objects for statpanel voting
+statclick rework? 2: list("name"="id")
+ Var Details choice_statclicks
+
+
+
+
+
+ List of choice = object for statclick objects for statpanel voting
+statclick rework? 2: list("name"="id")
+
+
+
diff --git a/datum/crafting_recipe.html b/datum/crafting_recipe.html
new file mode 100644
index 0000000000000..a7e084b161fc3
--- /dev/null
+++ b/datum/crafting_recipe.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+ /datum/crafting_recipe - SPLURT Station 13
+
+
+
+
+
+
+Proc Details check_requirements(/mob /user, /list/collected_requirements)
+
+
+
+
+
+ Run custom pre-craft checks for this recipe
+user: The /mob that initiated the crafting
+collected_requirements: A list of lists of /obj/item instances that satisfy reqs. Top level list is keyed by requirement path.
+
+
+
diff --git a/datum/crafting_recipe/bloodsucker/blackcoffin.html b/datum/crafting_recipe/bloodsucker/blackcoffin.html
new file mode 100644
index 0000000000000..3a2c357c4729d
--- /dev/null
+++ b/datum/crafting_recipe/bloodsucker/blackcoffin.html
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+ /datum/crafting_recipe/bloodsucker/blackcoffin - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ time obj/item/stack/packageWrap = 8,
+obj/item/pipe = 2)
+ Var Details time
+
+
+
+
+
+ obj/item/stack/packageWrap = 8,
+obj/item/pipe = 2)
+
+
+
diff --git a/datum/crafting_recipe/silver_stake.html b/datum/crafting_recipe/silver_stake.html
new file mode 100644
index 0000000000000..ca393bb3e1617
--- /dev/null
+++ b/datum/crafting_recipe/silver_stake.html
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+ /datum/crafting_recipe/silver_stake - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ time obj/item/stack/packageWrap = 8,
+obj/item/pipe = 2)
+ Var Details time
+
+
+
+
+
+ obj/item/stack/packageWrap = 8,
+obj/item/pipe = 2)
+
+
+
diff --git a/datum/data/vending_product.html b/datum/data/vending_product.html
new file mode 100644
index 0000000000000..4bad278838610
--- /dev/null
+++ b/datum/data/vending_product.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+ /datum/data/vending_product - SPLURT Station 13
+
+
+
+
+
+
+A datum that represents a product that is vendable
Vars
+ age_restricted Whether spessmen with an ID with an age below AGE_MINOR (20 by default) can buy this item
+ amount How many of this product we currently have
+ colorable Whether the product can be recolored by the GAGS system
+ custom_premium_price Does the item have a custom premium price override
+ custom_price Does the item have a custom price override
+ max_amount How many we can store at maximum
+ product_path Typepath of the product that is created when this record "sells"
+ Var Details age_restricted
+
+
+
+
+
+ Whether spessmen with an ID with an age below AGE_MINOR (20 by default) can buy this item
amount
+
+
+
+
+
+ How many of this product we currently have
colorable
+
+
+
+
+
+ Whether the product can be recolored by the GAGS system
custom_premium_price
+
+
+
+
+
+ Does the item have a custom premium price override
custom_price
+
+
+
+
+
+ Does the item have a custom price override
max_amount
+
+
+
+
+
+ How many we can store at maximum
product_path
+
+
+
+
+
+ Typepath of the product that is created when this record "sells"
+
+
+
diff --git a/datum/datacore.html b/datum/datacore.html
new file mode 100644
index 0000000000000..798268800162c
--- /dev/null
+++ b/datum/datacore.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /datum/datacore - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ locked This list tracks characters spawned in the world and cannot be modified in-game. Currently referenced by respawn_character().
+ Var Details locked
+
+
+
+
+
+ This list tracks characters spawned in the world and cannot be modified in-game. Currently referenced by respawn_character().
+
+
+
diff --git a/datum/design.html b/datum/design.html
new file mode 100644
index 0000000000000..a808ff3919608
--- /dev/null
+++ b/datum/design.html
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+ /datum/design - SPLURT Station 13
+
+
+
+
+
+
+ Design Datums
+
+All the data for building stuff.
Vars
+ min_security_level minimum and security levels the design can be printed on. Currently only available for rnd production machinery and mechfab.
+ Var Details min_security_level
+
+
+
+
+
+ minimum and security levels the design can be printed on. Currently only available for rnd production machinery and mechfab.
+
+
+
diff --git a/datum/design/apc_board.html b/datum/design/apc_board.html
new file mode 100644
index 0000000000000..84034cf20b079
--- /dev/null
+++ b/datum/design/apc_board.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ /datum/design/apc_board - SPLURT Station 13
+
+
+
+
+
+
+///////Autolathe Designs /////
+Electronics
+
+
+
diff --git a/datum/design/beanbag_slug.html b/datum/design/beanbag_slug.html
new file mode 100644
index 0000000000000..2ad09622e6866
--- /dev/null
+++ b/datum/design/beanbag_slug.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ /datum/design/beanbag_slug - SPLURT Station 13
+
+
+
+
+
+
+//////Autolathe Designs /////
+Secgear
+
+
+
diff --git a/datum/design/bucket.html b/datum/design/bucket.html
new file mode 100644
index 0000000000000..7091a61668d07
--- /dev/null
+++ b/datum/design/bucket.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ /datum/design/bucket - SPLURT Station 13
+
+
+
+
+
+
+//////Autolathe Designs//////
+Tools
+
+
+
diff --git a/datum/design/kitchen_knife.html b/datum/design/kitchen_knife.html
new file mode 100644
index 0000000000000..3db9ffbb7af49
--- /dev/null
+++ b/datum/design/kitchen_knife.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ /datum/design/kitchen_knife - SPLURT Station 13
+
+
+
+
+
+
+//////Autolathe Designs /////
+Dinnerware
+
+
+
diff --git a/datum/design/rods.html b/datum/design/rods.html
new file mode 100644
index 0000000000000..0d51a67baac87
--- /dev/null
+++ b/datum/design/rods.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ /datum/design/rods - SPLURT Station 13
+
+
+
+
+
+
+///////Autolathe Designs/////
+Construction
+
+
+
diff --git a/datum/design/signaler.html b/datum/design/signaler.html
new file mode 100644
index 0000000000000..301e5c4244686
--- /dev/null
+++ b/datum/design/signaler.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ /datum/design/signaler - SPLURT Station 13
+
+
+
+
+
+
+//////Autolathe Designs /////
+T-Comms
+
+
+
diff --git a/datum/discord_link_record.html b/datum/discord_link_record.html
new file mode 100644
index 0000000000000..c3c60a345922b
--- /dev/null
+++ b/datum/discord_link_record.html
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+ /datum/discord_link_record - SPLURT Station 13
+
+
+
+
+
+
+Represents a record from the discord link table in a nicer format
Procs
+ New Generate a discord link datum from the values
Proc Details New(ckey, discord_id, one_time_token, timestamp, valid)
+
+
+
+
+
+ Generate a discord link datum from the values
+This is only used by SSdiscord wrapper functions for now, so you can reference the fields
+slightly easier
+Arguments:
+
+ckey Ckey as a string
+discord_id Discord id as a string
+one_time_token as a string
+timestamp as a string
+valid as a number of 0 or 1
+
+
+
+
diff --git a/datum/ductnet.html b/datum/ductnet.html
new file mode 100644
index 0000000000000..281f68aaa7d38
--- /dev/null
+++ b/datum/ductnet.html
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+ /datum/ductnet - SPLURT Station 13
+
+
+
+
+
+
+We handle the unity part of plumbing. We track who is connected to who.
Procs
+ add_duct Add a duct to our network
+ add_plumber add a plumbing object to either demanders or suppliers
+ assimilate we combine ductnets. this occurs when someone connects to seperate sets of fluid ducts
+ destroy_network destroy the network and tell all our ducts and plumbers we are gone
+ remove_duct Remove a duct from our network and commit suicide, because this is probably easier than to check who that duct was connected to and what part of us was lost
+ remove_plumber remove a plumber. we dont delete ourselves because ductnets dont persist through plumbing objects
Proc Details
+ Add a duct to our network
+ add a plumbing object to either demanders or suppliers
assimilate
+
+ we combine ductnets. this occurs when someone connects to seperate sets of fluid ducts
destroy_network(delete)
+
+
+
+
+
+ destroy the network and tell all our ducts and plumbers we are gone
remove_duct
+
+ Remove a duct from our network and commit suicide, because this is probably easier than to check who that duct was connected to and what part of us was lost
+ remove a plumber. we dont delete ourselves because ductnets dont persist through plumbing objects
+
+
+
diff --git a/datum/dynamic_ruleset.html b/datum/dynamic_ruleset.html
new file mode 100644
index 0000000000000..87c4b25511a58
--- /dev/null
+++ b/datum/dynamic_ruleset.html
@@ -0,0 +1,379 @@
+
+
+
+
+
+
+ /datum/dynamic_ruleset - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ antag_cap Judges the amount of antagonists to apply, for both solo and teams.
+Note that some antagonists (such as traitors, lings, heretics, etc) will add more based on how many times they've been scaled.
+Written as a linear equation--ceil(x/denominator) + offset, or as a fixed constant.
+If written as a linear equation, will be in the form of `list("denominator" = denominator, "offset" = offset).
+ antag_datum The antagonist datum that is assigned to the mobs mind on ruleset execution.
+ antag_flag Preferences flag such as ROLE_WIZARD that need to be turned on for players to be antag
+ antag_flag_override If a role is to be considered another for the purpose of banning.
+ assigned List of players that were selected for this rule
+ base_prob Base probability used in scaling. The higher it is, the more likely to scale. Kept as a var to allow for config editing._SendSignal(sigtype, list/arguments)
+ blocking_rules If a ruleset type which is in this list has been executed, then the ruleset will not be executed.
+ candidates List of players that are being drafted for this rule
+ cost Threat cost for this rule, this is decreased from the mode's threat when the rule is executed.
+ delay Delay for when execute will get called from the time of post_setup (roundstart) or process (midround/latejoin).
+Make sure your ruleset works with execute being called during the game when using this, and that the clean_up proc reverts it properly in case of faliure.
+ enemy_roles If set, there needs to be a certain amount of players doing those roles (among the players who won't be drafted) for the rule to be drafted IMPORTANT: DOES NOT WORK ON ROUNDSTART RULESETS.
+ exclusive_roles If set, rule will only accept candidates from those roles. If on a roundstart ruleset, requires the player to have the correct antag pref enabled and any of the possible roles enabled.
+ flags A flag that determines how the ruleset is handled. Check __DEFINES/dynamic.dm for an explanation of the accepted values.
+ indice_pop Calculated during acceptable(), used in scaling and team sizes.
+ maximum_players The maximum amount of players required for the rule to be considered.
+Anything below zero or exactly zero is ignored.
+ minimum_players The minimum amount of players required for the rule to be considered.
+ minimum_required_age The required minimum account age for this ruleset.
+ mode Reference to the mode, use this instead of SSticker.mode.
+ name For admin logging and round end screen.
+ persistent If set to TRUE, the rule won't be discarded after being executed, and dynamic will call rule_process() every time it ticks.
+ pop_per_requirement Pop range per requirement. If zero defaults to mode's pop_per_requirement.
+ protected_roles If set, and config flag protect_roles_from_antagonist is false, then the rule will not pick players from these roles.
+ repeatable If set to TRUE, dynamic mode will be able to draft this ruleset again later on. (doesn't apply for roundstart rules)
+ repeatable_weight_decrease If set higher than 0 decreases weight by itself causing the ruleset to appear less often the more it is repeated.
+ required_candidates The rule needs this many candidates (post-trimming) to be executed (example: Cult needs 4 players at round start)
+ required_enemies If enemy_roles was set, this is the amount of enemy job workers needed per threat_level range (0-10,10-20,etc) IMPORTANT: DOES NOT WORK ON ROUNDSTART RULESETS.
+ requirements Requirements are the threat level requirements per pop range.
+With the default values, The rule will never get drafted below 10 threat level (aka: "peaceful extended"), and it requires a higher threat level at lower pops.
+ restricted_roles If set, rule will deny candidates from those roles always.
+ ruletype For admin logging and round end screen, do not change this unless making a new rule type.
+ scaled_times How many times a rule has scaled up upon getting picked.
+ scaling_cost Cost per level the rule scales up.
+ total_cost Used for the roundend report
+ weight 0 -> 9, probability for this rule to be picked against other rules. If zero this will effectively disable the rule. Procs
+ acceptable By default, a rule is acceptable if it satisfies the threat level/population requirements.
+If your rule has extra checks, such as counting security officers, do that in ready() instead
+ clean_up Runs from gamemode process() if ruleset fails to start, like delayed rulesets not getting valid candidates.
+This one only handles refunding the threat, override in ruleset to clean up the rest.
+ execute Called on post_setup on roundstart and when the rule executes on midround and latejoin.
+Give your candidates or assignees equipment and antag datum here.
+ get_antag_cap Returns what the antag cap with the given population is.
+ get_weight Gets weight of the ruleset
+Note that this decreases weight if repeatable is TRUE and repeatable_weight_decrease is higher than 0
+Note: If you don't want repeatable rulesets to decrease their weight use the weight variable directly
+ pre_execute Called on game mode pre_setup for roundstart rulesets.
+Do everything you need to do before job is assigned here.
+IMPORTANT: ASSIGN special_role HERE
+ ready Here you can perform any additional checks you want. (such as checking the map etc)
+Remember that on roundstart no one knows what their job is at this point.
+IMPORTANT: If ready() returns TRUE, that means pre_execute() or execute() should never fail!
+ round_result Set mode result and news report here.
+Only called if ruleset is flagged as HIGH_IMPACT_RULESET
+ rule_process This is called if persistent variable is true everytime SSTicker ticks.
+ scale_up When picking rulesets, if dynamic picks the same one multiple times, it will "scale up".
+However, doing this blindly would result in lowpop rounds (think under 10 people) where over 80% of the crew is antags!
+This function is here to ensure the antag ratio is kept under control while scaling up.
+Returns how much threat to actually spend in the end.
+ trim_candidates Here you can remove candidates that do not meet your requirements.
+This means if their job is not correct or they have disconnected you can remove them from candidates here.
+Usually this does not need to be changed unless you need some specific requirements from your candidates.
+ Var Details antag_cap
+
+
+
+
+
+ Judges the amount of antagonists to apply, for both solo and teams.
+Note that some antagonists (such as traitors, lings, heretics, etc) will add more based on how many times they've been scaled.
+Written as a linear equation--ceil(x/denominator) + offset, or as a fixed constant.
+If written as a linear equation, will be in the form of `list("denominator" = denominator, "offset" = offset).
+ The antagonist datum that is assigned to the mobs mind on ruleset execution.
antag_flag
+
+
+
+
+
+ Preferences flag such as ROLE_WIZARD that need to be turned on for players to be antag
antag_flag_override
+
+
+
+
+
+ If a role is to be considered another for the purpose of banning.
assigned
+
+
+
+
+
+ List of players that were selected for this rule
base_prob
+
+
+
+
+
+ Base probability used in scaling. The higher it is, the more likely to scale. Kept as a var to allow for config editing._SendSignal(sigtype, list/arguments)
blocking_rules
+
+
+
+
+
+ If a ruleset type which is in this list has been executed, then the ruleset will not be executed.
candidates
+
+
+
+
+
+ List of players that are being drafted for this rule
cost
+
+
+
+
+
+ Threat cost for this rule, this is decreased from the mode's threat when the rule is executed.
delay
+
+
+
+
+
+ Delay for when execute will get called from the time of post_setup (roundstart) or process (midround/latejoin).
+Make sure your ruleset works with execute being called during the game when using this, and that the clean_up proc reverts it properly in case of faliure.
enemy_roles
+
+
+
+
+
+ If set, there needs to be a certain amount of players doing those roles (among the players who won't be drafted) for the rule to be drafted IMPORTANT: DOES NOT WORK ON ROUNDSTART RULESETS.
exclusive_roles
+
+
+
+
+
+ If set, rule will only accept candidates from those roles. If on a roundstart ruleset, requires the player to have the correct antag pref enabled and any of the possible roles enabled.
flags
+
+
+
+
+
+ A flag that determines how the ruleset is handled. Check __DEFINES/dynamic.dm for an explanation of the accepted values.
indice_pop
+
+
+
+
+
+ Calculated during acceptable(), used in scaling and team sizes.
maximum_players
+
+
+
+
+
+ The maximum amount of players required for the rule to be considered.
+Anything below zero or exactly zero is ignored.
minimum_players
+
+
+
+
+
+ The minimum amount of players required for the rule to be considered.
minimum_required_age
+
+
+
+
+
+ The required minimum account age for this ruleset.
+ Reference to the mode, use this instead of SSticker.mode.
name
+
+
+
+
+
+ For admin logging and round end screen.
persistent
+
+
+
+
+
+ If set to TRUE, the rule won't be discarded after being executed, and dynamic will call rule_process() every time it ticks.
pop_per_requirement
+
+
+
+
+
+ Pop range per requirement. If zero defaults to mode's pop_per_requirement.
protected_roles
+
+
+
+
+
+ If set, and config flag protect_roles_from_antagonist is false, then the rule will not pick players from these roles.
repeatable
+
+
+
+
+
+ If set to TRUE, dynamic mode will be able to draft this ruleset again later on. (doesn't apply for roundstart rules)
repeatable_weight_decrease
+
+
+
+
+
+ If set higher than 0 decreases weight by itself causing the ruleset to appear less often the more it is repeated.
required_candidates
+
+
+
+
+
+ The rule needs this many candidates (post-trimming) to be executed (example: Cult needs 4 players at round start)
required_enemies
+
+
+
+
+
+ If enemy_roles was set, this is the amount of enemy job workers needed per threat_level range (0-10,10-20,etc) IMPORTANT: DOES NOT WORK ON ROUNDSTART RULESETS.
requirements
+
+
+
+
+
+ Requirements are the threat level requirements per pop range.
+With the default values, The rule will never get drafted below 10 threat level (aka: "peaceful extended"), and it requires a higher threat level at lower pops.
restricted_roles
+
+
+
+
+
+ If set, rule will deny candidates from those roles always.
ruletype
+
+
+
+
+
+ For admin logging and round end screen, do not change this unless making a new rule type.
scaled_times
+
+
+
+
+
+ How many times a rule has scaled up upon getting picked.
scaling_cost
+
+
+
+
+
+ Cost per level the rule scales up.
total_cost
+
+
+
+
+
+ Used for the roundend report
weight
+
+
+
+
+
+ 0 -> 9, probability for this rule to be picked against other rules. If zero this will effectively disable the rule.
Proc Details acceptable(population, threat_level)
+
+
+
+
+
+ By default, a rule is acceptable if it satisfies the threat level/population requirements.
+If your rule has extra checks, such as counting security officers, do that in ready() instead
clean_up()
+
+
+
+
+
+ Runs from gamemode process() if ruleset fails to start, like delayed rulesets not getting valid candidates.
+This one only handles refunding the threat, override in ruleset to clean up the rest.
execute()
+
+
+
+
+
+ Called on post_setup on roundstart and when the rule executes on midround and latejoin.
+Give your candidates or assignees equipment and antag datum here.
get_antag_cap(population)
+
+
+
+
+
+ Returns what the antag cap with the given population is.
get_weight()
+
+
+
+
+
+ Gets weight of the ruleset
+Note that this decreases weight if repeatable is TRUE and repeatable_weight_decrease is higher than 0
+Note: If you don't want repeatable rulesets to decrease their weight use the weight variable directly
pre_execute()
+
+
+
+
+
+ Called on game mode pre_setup for roundstart rulesets.
+Do everything you need to do before job is assigned here.
+IMPORTANT: ASSIGN special_role HERE
ready(forced)
+
+
+
+
+
+ Here you can perform any additional checks you want. (such as checking the map etc)
+Remember that on roundstart no one knows what their job is at this point.
+IMPORTANT: If ready() returns TRUE, that means pre_execute() or execute() should never fail!
round_result()
+
+
+
+
+
+ Set mode result and news report here.
+Only called if ruleset is flagged as HIGH_IMPACT_RULESET
rule_process()
+
+
+
+
+
+ This is called if persistent variable is true everytime SSTicker ticks.
scale_up(population, max_scale)
+
+
+
+
+
+ When picking rulesets, if dynamic picks the same one multiple times, it will "scale up".
+However, doing this blindly would result in lowpop rounds (think under 10 people) where over 80% of the crew is antags!
+This function is here to ensure the antag ratio is kept under control while scaling up.
+Returns how much threat to actually spend in the end.
trim_candidates()
+
+
+
+
+
+ Here you can remove candidates that do not meet your requirements.
+This means if their job is not correct or they have disconnected you can remove them from candidates here.
+Usually this does not need to be changed unless you need some specific requirements from your candidates.
+
+
+
diff --git a/datum/dynamic_ruleset/latejoin/provocateur.html b/datum/dynamic_ruleset/latejoin/provocateur.html
new file mode 100644
index 0000000000000..73e3f59cf9ae7
--- /dev/null
+++ b/datum/dynamic_ruleset/latejoin/provocateur.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /datum/dynamic_ruleset/latejoin/provocateur - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details revs_win_threat_injection
+
+
+
+
+
+ How much threat should be injected when the revolution wins?
Proc Details check_eligible
+
+ Checks for revhead loss conditions and other antag datums.
+
+
+
diff --git a/datum/dynamic_ruleset/midround.html b/datum/dynamic_ruleset/midround.html
new file mode 100644
index 0000000000000..cc73682f44d2f
--- /dev/null
+++ b/datum/dynamic_ruleset/midround.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /datum/dynamic_ruleset/midround - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details required_type
+
+
+
+
+
+ What mob type the ruleset is restricted to.
restrict_ghost_roles
+
+
+
+
+
+ If the ruleset should be restricted from ghost roles.
+
+
+
diff --git a/datum/dynamic_ruleset/midround/autotraitor.html b/datum/dynamic_ruleset/midround/autotraitor.html
new file mode 100644
index 0000000000000..167f025ae4fd2
--- /dev/null
+++ b/datum/dynamic_ruleset/midround/autotraitor.html
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+ /datum/dynamic_ruleset/midround/autotraitor - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ has_failure_chance Whether or not this instance of sleeper agent should be randomly acceptable.
+If TRUE, then this has a threat level% chance to succeed.
+ Var Details has_failure_chance
+
+
+
+
+
+ Whether or not this instance of sleeper agent should be randomly acceptable.
+If TRUE, then this has a threat level% chance to succeed.
+
+
+
diff --git a/datum/dynamic_ruleset/midround/families.html b/datum/dynamic_ruleset/midround/families.html
new file mode 100644
index 0000000000000..970ef0cd4ce81
--- /dev/null
+++ b/datum/dynamic_ruleset/midround/families.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /datum/dynamic_ruleset/midround/families - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ handler A reference to the handler that is used to run pre_execute(), execute(), etc..
+ Var Details
+ A reference to the handler that is used to run pre_execute(), execute(), etc..
+
+
+
diff --git a/datum/dynamic_ruleset/midround/from_ghosts.html b/datum/dynamic_ruleset/midround/from_ghosts.html
new file mode 100644
index 0000000000000..eae46e12cf2c1
--- /dev/null
+++ b/datum/dynamic_ruleset/midround/from_ghosts.html
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+ /datum/dynamic_ruleset/midround/from_ghosts - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ makeBody Whether the ruleset should call generate_ruleset_body or not.
+ required_applicants The rule needs this many applicants to be properly executed. Procs
+ attempt_replacement Fired when there are no valid candidates. Will try to roll again in a minute.
+ review_applications Here is where you can check if your ghost applicants are valid for the ruleset.
+Called by send_applications().
+ send_applications This sends a poll to ghosts if they want to be a ghost spawn from a ruleset.
+ Var Details makeBody
+
+
+
+
+
+ Whether the ruleset should call generate_ruleset_body or not.
required_applicants
+
+
+
+
+
+ The rule needs this many applicants to be properly executed.
Proc Details attempt_replacement()
+
+
+
+
+
+ Fired when there are no valid candidates. Will try to roll again in a minute.
review_applications()
+
+
+
+
+
+ Here is where you can check if your ghost applicants are valid for the ruleset.
+Called by send_applications().
send_applications(/list/possible_volunteers)
+
+
+
+
+
+ This sends a poll to ghosts if they want to be a ghost spawn from a ruleset.
+
+
+
diff --git a/datum/dynamic_ruleset/roundstart.html b/datum/dynamic_ruleset/roundstart.html
new file mode 100644
index 0000000000000..54d07fce6fc2e
--- /dev/null
+++ b/datum/dynamic_ruleset/roundstart.html
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+ /datum/dynamic_ruleset/roundstart - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ ready Do your checks if the ruleset is ready to be executed here.
+Should ignore certain checks if forced is TRUE
+ trim_candidates Checks if candidates are connected and if they are banned or don't want to be the antagonist.
Proc Details ready(population, forced)
+
+
+
+
+
+ Do your checks if the ruleset is ready to be executed here.
+Should ignore certain checks if forced is TRUE
trim_candidates()
+
+
+
+
+
+ Checks if candidates are connected and if they are banned or don't want to be the antagonist.
+
+
+
diff --git a/datum/dynamic_ruleset/roundstart/families.html b/datum/dynamic_ruleset/roundstart/families.html
new file mode 100644
index 0000000000000..4652c7f7208eb
--- /dev/null
+++ b/datum/dynamic_ruleset/roundstart/families.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /datum/dynamic_ruleset/roundstart/families - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ handler A reference to the handler that is used to run pre_execute(), execute(), etc..
+ Var Details
+ A reference to the handler that is used to run pre_execute(), execute(), etc..
+
+
+
diff --git a/datum/dynamic_ruleset/roundstart/revs.html b/datum/dynamic_ruleset/roundstart/revs.html
new file mode 100644
index 0000000000000..b30782bc5a17f
--- /dev/null
+++ b/datum/dynamic_ruleset/roundstart/revs.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /datum/dynamic_ruleset/roundstart/revs - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details revs_win_threat_injection
+
+
+
+
+
+ How much threat should be injected when the revolution wins?
Proc Details check_eligible
+
+ Checks for revhead loss conditions and other antag datums.
+
+
+
diff --git a/datum/dynamic_snapshot.html b/datum/dynamic_snapshot.html
new file mode 100644
index 0000000000000..8de0d621e77bf
--- /dev/null
+++ b/datum/dynamic_snapshot.html
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+ /datum/dynamic_snapshot - SPLURT Station 13
+
+
+
+
+
+
+A "snapshot" of dynamic at an important point in time.
+Exported to JSON in the dynamic.json log file.
+ Var Details
+ The number of alive antags
alive_players
+
+
+
+
+
+ The number of alive players
dead_players
+
+
+
+
+
+ The number of dead players
observers
+
+
+
+
+
+ The number of observers
remaining_threat
+
+
+
+
+
+ The remaining midround threat
+ The rulesets chosen this snapshot
serialization
+
+
+
+
+
+ The cached serialization of this snapshot
time
+
+
+
+
+
+ The world.time when the snapshot was taken
total_players
+
+
+
+
+
+ The total number of players in the server
Proc Details to_list()
+
+
+
+
+
+ Convert the snapshot to an associative list
+
+
+
diff --git a/datum/dynamic_snapshot_ruleset.html b/datum/dynamic_snapshot_ruleset.html
new file mode 100644
index 0000000000000..1d88d3047ff8a
--- /dev/null
+++ b/datum/dynamic_snapshot_ruleset.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ /datum/dynamic_snapshot_ruleset - SPLURT Station 13
+
+
+
+
+
+
+A ruleset chosen during a snapshot
Vars
+ assigned The number of assigned antags
+ name The name of the ruleset chosen
+ scaled If it is a round start ruleset, how much it was scaled by
+ Var Details assigned
+
+
+
+
+
+ The number of assigned antags
name
+
+
+
+
+
+ The name of the ruleset chosen
scaled
+
+
+
+
+
+ If it is a round start ruleset, how much it was scaled by
+
+
+
diff --git a/datum/eldritch_knowledge.html b/datum/eldritch_knowledge.html
new file mode 100644
index 0000000000000..a9518b7550181
--- /dev/null
+++ b/datum/eldritch_knowledge.html
@@ -0,0 +1,181 @@
+
+
+
+
+
+
+ /datum/eldritch_knowledge - SPLURT Station 13
+
+
+
+
+
+
+#Eldritch Knowledge
+Datum that makes eldritch cultist interesting.
+Eldritch knowledge aren't instantiated anywhere roundstart, and are initalized and destroyed as the round goes on.
+ Var Details banned_knowledge
+
+
+
+
+
+ What knowledge is incompatible with this. This will simply make it impossible to research knowledges that are in banned_knowledge once this gets researched.
cost
+
+
+
+
+
+ Cost of knowledge in souls
desc
+
+
+
+
+
+ Description of the knowledge
gain_text
+
+
+
+
+
+ What shows up
name
+
+
+
+
+
+ Name of the knowledge
next_knowledge
+
+
+
+
+
+ Next knowledge in the research tree
required_atoms
+
+
+
+
+
+ Used with rituals, how many items this needs
result_atoms
+
+
+
+
+
+ What do we get out of this
route
+
+
+
+
+
+ What path is this on defaults to "Side"
sacs_needed
+
+
+
+
+
+ Required sacrifices to unlock
Proc Details cleanup_atoms(/list/atoms)
+
+
+
+
+
+ Used atom cleanup
+Overide this proc if you dont want ALL ATOMS to be destroyed. useful in many situations.
on_death
+
+ A proc that handles the code when the mob dies
+This proc is primarily used to end any soundloops when the heretic dies
on_eldritch_blade(target, user, proximity_flag, click_parameters)
+
+
+
+
+
+ Sickly blade act
+Gives addtional effects to sickly blade weapon
on_finished_recipe
+
+ What happens once the recipe is succesfully finished
+By default this proc creates atoms from result_atoms list. Override this is you want something else to happen.
on_gain
+
+ What happens when this is assigned to an antag datum
+This proc is called whenever a new eldritch knowledge is added to an antag datum
on_life
+
+ What happens every tick
+This proc is called on SSprocess in eldritch cultist antag datum. SSprocess happens roughly every second
on_lose
+
+ What happens when you loose this
+This proc is called whenever antagonist looses his antag datum, put cleanup code in here
on_mansus_grasp(/atom /target, /mob /user, proximity_flag, click_parameters)
+
+
+
+
+
+ Mansus grasp act
+Gives addtional effects to mansus grasp spell
on_ranged_attack_eldritch_blade(/atom /target, /mob /user, click_parameters)
+
+
+
+
+
+ Sickly blade distant act
+Same as /datum/eldritch_knowledge/proc/on_eldritch_blade but works on targets that are not in proximity to you.
recipe_snowflake_check(/list/atoms, loc)
+
+
+
+
+
+ Special check for recipes
+If you are adding a more complex summoning or something that requires a special check that parses through all the atoms in an area override this.
+
+
+
diff --git a/datum/eldritch_knowledge/final_eldritch/void_final.html b/datum/eldritch_knowledge/final_eldritch/void_final.html
new file mode 100644
index 0000000000000..f20f1aa0eb75b
--- /dev/null
+++ b/datum/eldritch_knowledge/final_eldritch/void_final.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /datum/eldritch_knowledge/final_eldritch/void_final - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ sound_loop soundloop for the void theme
+ storm Reference to the ongoing voidstorm that surrounds the heretic
+ Var Details
+ soundloop for the void theme
storm
+
+
+
+
+
+ Reference to the ongoing voidstorm that surrounds the heretic
+
+
+
diff --git a/datum/element.html b/datum/element.html
new file mode 100644
index 0000000000000..e65807d8462cc
--- /dev/null
+++ b/datum/element.html
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+ /datum/element - SPLURT Station 13
+
+
+
+
+
+
+A holder for simple behaviour that can be attached to many different types
+Only one element of each type is instanced during game init.
+Otherwise acts basically like a lightweight component.
Vars
+ element_flags Option flags for element behaviour
+ id_arg_index The index of the first attach argument to consider for duplicate elements Procs
+ Attach Activates the functionality defined by the element on the given target datum
+ Detach Deactivates the functionality defines by the element on the given datum
+ Var Details element_flags
+
+
+
+
+
+ Option flags for element behaviour
id_arg_index
+
+
+
+
+
+ The index of the first attach argument to consider for duplicate elements
+Is only used when flags contains ELEMENT_BESPOKE
+This is infinity so you must explicitly set this
Proc Details Attach
+
+ Activates the functionality defined by the element on the given target datum
Detach(/datum /source, force)
+
+
+
+
+
+ Deactivates the functionality defines by the element on the given datum
+
+
+
diff --git a/datum/element/bed_tuckable.html b/datum/element/bed_tuckable.html
new file mode 100644
index 0000000000000..d2807d7713c65
--- /dev/null
+++ b/datum/element/bed_tuckable.html
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+ /datum/element/bed_tuckable - SPLURT Station 13
+
+
+
+
+
+
+Tucking element, for things that can be tucked into bed.
Vars
+ rotation_degree our rotation degree - how much the item turns when in bed (+degrees turns it more parallel)
+ x_offset our pixel_x offset - how much the item moves x when in bed (+x is closer to the pillow)
+ y_offset our pixel_y offset - how much the item move y when in bed (-y is closer to the middle) Procs
+ tuck_into_bed Tuck our object into bed.
+ untuck If we rotate our object, then we need to un-rotate it when it's picked up
+ Var Details rotation_degree
+
+
+
+
+
+ our rotation degree - how much the item turns when in bed (+degrees turns it more parallel)
x_offset
+
+
+
+
+
+ our pixel_x offset - how much the item moves x when in bed (+x is closer to the pillow)
y_offset
+
+
+
+
+
+ our pixel_y offset - how much the item move y when in bed (-y is closer to the middle)
Proc Details tuck_into_bed
+
+ Tuck our object into bed.
+tucked - the object being tucked
+target_bed - the bed we're tucking them into
+tucker - the guy doing the tucking
untuck
+
+ If we rotate our object, then we need to un-rotate it when it's picked up
+tucked - the object that is tucked
+
+
+
diff --git a/datum/element/connect_loc.html b/datum/element/connect_loc.html
new file mode 100644
index 0000000000000..f62d37afab6c7
--- /dev/null
+++ b/datum/element/connect_loc.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+ /datum/element/connect_loc - SPLURT Station 13
+
+
+
+
+
+
+This element hooks a signal onto the loc the current object is on.
+When the object moves, it will unhook the signal and rehook it to the new object.
Vars
+ connections An assoc list of signal -> procpath to register to the loc this object is on.
+ Var Details connections
+
+
+
+
+
+ An assoc list of signal -> procpath to register to the loc this object is on.
+
+
+
diff --git a/datum/element/contextual_screentip_bare_hands.html b/datum/element/contextual_screentip_bare_hands.html
new file mode 100644
index 0000000000000..cb1234cd51f11
--- /dev/null
+++ b/datum/element/contextual_screentip_bare_hands.html
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+ /datum/element/contextual_screentip_bare_hands - SPLURT Station 13
+
+
+
+
+
+
+Apply basic contextual screentips when the user hovers over this item with an empty hand.
+A "Type B" interaction.
+This stacks with other contextual screentip elements, though you may want to register the signal/flag manually at that point for performance.
Vars
+ lmb_text If set, the text to show for LMB
+ lmb_text_combat_mode If set, the text to show for LMB when in combat mode. Otherwise, defaults to lmb_text.
+ rmb_text If set, the text to show for RMB
+ rmb_text_combat_mode If set, the text to show for RMB when in combat mode. Otherwise, defaults to rmb_text.
+ Var Details lmb_text
+
+
+
+
+
+ If set, the text to show for LMB
lmb_text_combat_mode
+
+
+
+
+
+ If set, the text to show for LMB when in combat mode. Otherwise, defaults to lmb_text.
rmb_text
+
+
+
+
+
+ If set, the text to show for RMB
rmb_text_combat_mode
+
+
+
+
+
+ If set, the text to show for RMB when in combat mode. Otherwise, defaults to rmb_text.
+
+
+
diff --git a/datum/element/contextual_screentip_item_typechecks.html b/datum/element/contextual_screentip_item_typechecks.html
new file mode 100644
index 0000000000000..a51b75f69d261
--- /dev/null
+++ b/datum/element/contextual_screentip_item_typechecks.html
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+ /datum/element/contextual_screentip_item_typechecks - SPLURT Station 13
+
+
+
+
+
+
+Apply basic contextual screentips when the user hovers over this item with a provided item.
+A "Type B" interaction.
+This stacks with other contextual screentip elements, though you may want to register the signal/flag manually at that point for performance.
+ Var Details item_paths_to_contexts
+
+
+
+
+
+ Map of item paths to contexts to usages
+
+
+
diff --git a/datum/element/contextual_screentip_sharpness.html b/datum/element/contextual_screentip_sharpness.html
new file mode 100644
index 0000000000000..2682da04c6119
--- /dev/null
+++ b/datum/element/contextual_screentip_sharpness.html
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+ /datum/element/contextual_screentip_sharpness - SPLURT Station 13
+
+
+
+
+
+
+Apply basic contextual screentips when the user hovers over this item with an item of the given tool behavior.
+A "Type B" interaction.
+This stacks with other contextual screentip elements, though you may want to register the signal/flag manually at that point for performance.
Vars
+ lmb_text If set, the text to show for LMB
+ rmb_text If set, the text to show for RMB
+ Var Details lmb_text
+
+
+
+
+
+ If set, the text to show for LMB
rmb_text
+
+
+
+
+
+ If set, the text to show for RMB
+
+
+
diff --git a/datum/element/contextual_screentip_tools.html b/datum/element/contextual_screentip_tools.html
new file mode 100644
index 0000000000000..34411a1ca52b2
--- /dev/null
+++ b/datum/element/contextual_screentip_tools.html
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+ /datum/element/contextual_screentip_tools - SPLURT Station 13
+
+
+
+
+
+
+Apply basic contextual screentips when the user hovers over this item with an item of the given tool behavior.
+A "Type B" interaction.
+This stacks with other contextual screentip elements, though you may want to register the signal/flag manually at that point for performance.
+ Var Details
+ Map of tool behaviors to contexts to usages
+
+
+
diff --git a/datum/element/embed.html b/datum/element/embed.html
new file mode 100644
index 0000000000000..81a70952c03fd
--- /dev/null
+++ b/datum/element/embed.html
@@ -0,0 +1,93 @@
+
+
+
+
+
+
+ /datum/element/embed - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ embed_chance whether we can skip assigning all the vars (since these are bespoke elements, we don't have to reset the vars every time we attach to something, we already know what we are!) Procs
+ checkEmbedMob Checking to see if we're gonna embed into a human
+ checkEmbedOther We need the hit_zone if we're embedding into a human, so this proc only handles if we're embedding into a turf
+ checkEmbedProjectile checkEmbedProjectile() is what we get when a projectile with a defined shrapnel_type impacts a target.
+ detachFromWeapon If we don't want to be embeddable anymore (deactivating an e-dagger for instance)
+ examined Someone inspected our embeddable item
+ severancePackage A different embed element has been attached, so we'll detach and let them handle things
+ tryForceEmbed Arguments:
+ Var Details embed_chance
+
+
+
+
+
+ whether we can skip assigning all the vars (since these are bespoke elements, we don't have to reset the vars every time we attach to something, we already know what we are!)
Proc Details checkEmbedMob
+
+ Checking to see if we're gonna embed into a human
checkEmbedOther
+
+ We need the hit_zone if we're embedding into a human, so this proc only handles if we're embedding into a turf
checkEmbedProjectile
+
+ checkEmbedProjectile() is what we get when a projectile with a defined shrapnel_type impacts a target.
+If we hit a valid target (carbon or closed turf), we create the shrapnel_type object and immediately call tryEmbed() on it, targeting what we impacted. That will lead
+it to call tryForceEmbed() on its own embed element (it's out of our hands here, our projectile is done), where it will run through all the checks it needs to.
detachFromWeapon(/obj /weapon)
+
+
+
+
+
+ If we don't want to be embeddable anymore (deactivating an e-dagger for instance)
examined
+
+ Someone inspected our embeddable item
severancePackage
+
+ A different embed element has been attached, so we'll detach and let them handle things
tryForceEmbed
+
+ Arguments:
+
+I- the item we're trying to insert into the target
+target- what we're trying to shish-kabob, either a bodypart or a carbon
+hit_zone- if our target is a carbon, try to hit them in this zone, if we don't have one, pick a random one. If our target is a bodypart, we already know where we're hitting.
+forced- if we want this to succeed 100%
+
+
+
+
diff --git a/datum/element/firestacker.html b/datum/element/firestacker.html
new file mode 100644
index 0000000000000..2c286691a7669
--- /dev/null
+++ b/datum/element/firestacker.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /datum/element/firestacker - SPLURT Station 13
+
+
+
+
+
+
+Can be applied to /atom/movable subtypes to make them apply fire stacks to things they hit
Vars
+ amount How many firestacks to apply per hit
+ Var Details amount
+
+
+
+
+
+ How many firestacks to apply per hit
+
+
+
diff --git a/datum/element/flavor_text.html b/datum/element/flavor_text.html
new file mode 100644
index 0000000000000..9af35256fa106
--- /dev/null
+++ b/datum/element/flavor_text.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ /datum/element/flavor_text - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ examine_full_view Examine FULLY views. Overrides examine_no_preview
+ examine_no_preview Do not attempt to render a preview on examine. If this is on, it will display as [flavor_name]
+ save_key For preference/DNA saving/loading. Null to prevent. Prefs are only loaded from obviously if it exists in preferences.features.
+ Var Details examine_full_view
+
+
+
+
+
+ Examine FULLY views. Overrides examine_no_preview
examine_no_preview
+
+
+
+
+
+ Do not attempt to render a preview on examine. If this is on, it will display as [flavor_name]
save_key
+
+
+
+
+
+ For preference/DNA saving/loading. Null to prevent. Prefs are only loaded from obviously if it exists in preferences.features.
+
+
+
diff --git a/datum/element/item_scaling.html b/datum/element/item_scaling.html
new file mode 100644
index 0000000000000..e4cc9d3d2314a
--- /dev/null
+++ b/datum/element/item_scaling.html
@@ -0,0 +1,118 @@
+
+
+
+
+
+
+ /datum/element/item_scaling - SPLURT Station 13
+
+
+
+
+
+
+Element for scaling item appearances in the overworld or in inventory/storage.
+This bespoke element allows for items to have varying sizes depending on their location.
+The overworld simply refers to items being on a turf. Inventory includes HUD item slots,
+and storage is anywhere a storage component is used.
+Scaling should affect the item's icon and all attached overlays (such as blood decals).
Vars
+ overworld_scaling Scaling value when the attached item is in the overworld (on a turf).
+ storage_scaling Scaling value when the attached item is in a storage component or inventory slot. Procs
+ Attach Attach proc for the item_scaling element
+ Detach Detach proc for the item_scaling element.
+ scale Scales the attached item's matrix.
+ scale_overworld Shrinks when inworld
+ scale_storage Enlarges when inhand or in storage.
+ Var Details overworld_scaling
+
+
+
+
+
+ Scaling value when the attached item is in the overworld (on a turf).
storage_scaling
+
+
+
+
+
+ Scaling value when the attached item is in a storage component or inventory slot.
Proc Details Attach(/atom /target, overworld_scaling, storage_scaling)
+
+
+
+
+
+ Attach proc for the item_scaling element
+The proc checks the target's type before attaching. It then initializes
+the target to overworld scaling. The target should then rescale if it is placed
+in inventory/storage on initialization. Relevant signals are registered to listen
+for pickup/drop or storage events. Scaling values of 1 will result in items
+returning to their original size.
+Arguments:
+
+target - Datum to attach the element to.
+overworld_scaling - Integer or float to scale the item in the overworld.
+storage_scaling - Integer or float to scale the item in storage/inventory.
+ Detach
+
+ Detach proc for the item_scaling element.
+All registered signals are unregistered, and the attached element is removed from the target datum.
+Arguments:
+
+target - Datum which the element is attached to.
+ scale(/datum /source, scaling)
+
+
+
+
+
+ Scales the attached item's matrix.
+The proc first narrows the type of the source to (datums do not have a transform matrix).
+It then creates an identity matrix, M, which is transformed by the scaling value.
+The object's transform variable (matrix) is then set to the resulting value of M.
+Arguments:
+
+source - Source datum which sent the signal.
+scaling - Integer or float to scale the item's matrix.
+ scale_overworld
+
+ Shrinks when inworld
+Longer detailed paragraph about the proc
+including any relevant detail
+Arguments:
+
+source - Source datum which sent the signal.
+ scale_storage
+
+ Enlarges when inhand or in storage.
+Longer detailed paragraph about the proc
+including any relevant detail
+Arguments:
+
+source - Source datum which sent the signal.
+
+
+
+
diff --git a/datum/element/mob_holder/micro.html b/datum/element/mob_holder/micro.html
new file mode 100644
index 0000000000000..09e13af7efab0
--- /dev/null
+++ b/datum/element/mob_holder/micro.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /datum/element/mob_holder/micro - SPLURT Station 13
+
+
+
+
+
+
+Proc Details on_requesting_context_from_item
+
+ Do not inherit from /mob_holder, interactions are different.
+
+
+
diff --git a/datum/element/object_reskinning.html b/datum/element/object_reskinning.html
new file mode 100644
index 0000000000000..beeb5a7e5ede4
--- /dev/null
+++ b/datum/element/object_reskinning.html
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+ /datum/element/object_reskinning - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ check_reskin_menu Checks if we are allowed to interact with a radial menu for reskins
Proc Details
+ Checks if we are allowed to interact with a radial menu for reskins
+Arguments:
+
+user The mob interacting with the menu
+obj The obj to be checking against
+
+
+
+
diff --git a/datum/element/photosynthesis.html b/datum/element/photosynthesis.html
new file mode 100644
index 0000000000000..ff5117550310a
--- /dev/null
+++ b/datum/element/photosynthesis.html
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+ /datum/element/photosynthesis - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ attached_atoms List of atoms this element is attached to. Doubles as a multiplier if the same element is attached multiple times to a target multiple times.
+ bonus_lum the minimum lum count over which where the target damage is adjusted.
+ light_bruteheal how much brute damage (or integrity, for objects) is healed (taken if positive) at maximum luminosity. (if lum_minus were 0)
+ light_burnheal how much burn damage is restored/taken at maximum luminosity. Mobs only.
+ light_nutrition_gain how nutrition recovery/expenses factor, not affected by bonus_lum and malus_lum. Mobs only.
+ light_oxyheal how much oxy damage is restored/taken at maximum luminosity. Mobs only.
+ light_toxheal how much tox damage is restored/taken at maximum luminosity. Mobs only.
+ lum_minus A value subtracted to the lum count, which allows targets to wilt or heal in the darkness.
+ malus_lum the maximum lum count under which the target damage is inversely adjusted.
+ Var Details attached_atoms
+
+
+
+
+
+ List of atoms this element is attached to. Doubles as a multiplier if the same element is attached multiple times to a target multiple times.
bonus_lum
+
+
+
+
+
+ the minimum lum count over which where the target damage is adjusted.
light_bruteheal
+
+
+
+
+
+ how much brute damage (or integrity, for objects) is healed (taken if positive) at maximum luminosity. (if lum_minus were 0)
light_burnheal
+
+
+
+
+
+ how much burn damage is restored/taken at maximum luminosity. Mobs only.
light_nutrition_gain
+
+
+
+
+
+ how nutrition recovery/expenses factor, not affected by bonus_lum and malus_lum. Mobs only.
light_oxyheal
+
+
+
+
+
+ how much oxy damage is restored/taken at maximum luminosity. Mobs only.
light_toxheal
+
+
+
+
+
+ how much tox damage is restored/taken at maximum luminosity. Mobs only.
lum_minus
+
+
+
+
+
+ A value subtracted to the lum count, which allows targets to wilt or heal in the darkness.
malus_lum
+
+
+
+
+
+ the maximum lum count under which the target damage is inversely adjusted.
+
+
+
diff --git a/datum/element/scavenging.html b/datum/element/scavenging.html
new file mode 100644
index 0000000000000..67132b9a0d448
--- /dev/null
+++ b/datum/element/scavenging.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /datum/element/scavenging - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ scavenge This proc has to be asynced (cough cough, do_after) in order to return the comsig values in time to stop the attack chain.
Proc Details scavenge(/atom /source, /mob /user, speed_multi)
+
+
+
+
+
+ This proc has to be asynced (cough cough, do_after) in order to return the comsig values in time to stop the attack chain.
+
+
+
diff --git a/datum/element/skirt_peeking.html b/datum/element/skirt_peeking.html
new file mode 100644
index 0000000000000..b7db1392a53bb
--- /dev/null
+++ b/datum/element/skirt_peeking.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /datum/element/skirt_peeking - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ try_notice Alright, they've peeked us and everything, did we notice it though?
Proc Details
+ Alright, they've peeked us and everything, did we notice it though?
+
+
+
diff --git a/datum/element/strippable.html b/datum/element/strippable.html
new file mode 100644
index 0000000000000..c5b3aaced92cf
--- /dev/null
+++ b/datum/element/strippable.html
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+ /datum/element/strippable - SPLURT Station 13
+
+
+
+
+
+
+An element for atoms that, when dragged and dropped onto a mob, opens a strip panel.
Vars
+ items An assoc list of keys to /datum/strippable_item
+ should_strip_proc_path A proc path that returns TRUE/FALSE if we should show the strip panel for this entity.
+If it does not exist, the strip menu will always show.
+Will be called with (mob/user).
+ strip_menus An existing strip menus
+ Var Details items
+
+
+
+
+
+ An assoc list of keys to /datum/strippable_item
should_strip_proc_path
+
+
+
+
+
+ A proc path that returns TRUE/FALSE if we should show the strip panel for this entity.
+If it does not exist, the strip menu will always show.
+Will be called with (mob/user).
+ An existing strip menus
+
+
+
diff --git a/datum/element/turf_z_transparency.html b/datum/element/turf_z_transparency.html
new file mode 100644
index 0000000000000..ef7fbd36f8f84
--- /dev/null
+++ b/datum/element/turf_z_transparency.html
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+ /datum/element/turf_z_transparency - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ Attach This proc sets up the signals to handle updating viscontents when turfs above/below update. Handle plane and layer here too so that they don't cover other obs/turfs in Dream Maker
+ show_bottom_level Called when there is no real turf below this turf
+ update_multiz Updates the viscontents or underlays below this tile.
Proc Details Attach(/datum /target, show_bottom_level)
+
+
+
+
+
+ This proc sets up the signals to handle updating viscontents when turfs above/below update. Handle plane and layer here too so that they don't cover other obs/turfs in Dream Maker
show_bottom_level
+
+ Called when there is no real turf below this turf
update_multiz(/turf /our_turf, prune_on_fail, init)
+
+
+
+
+
+ Updates the viscontents or underlays below this tile.
+
+
+
diff --git a/datum/font.html b/datum/font.html
new file mode 100644
index 0000000000000..ee803b26239f4
--- /dev/null
+++ b/datum/font.html
@@ -0,0 +1,142 @@
+
+
+
+
+
+
+ /datum/font - SPLURT Station 13
+
+
+
+
+
+
+A font datum, it exists to define a custom font to use in a span style later.
Vars
+ ascent distance above baseline (including whitespace)
+ average_width average character width
+ default_character default character (for undefined chars)
+ descent distance below baseline
+ end last character in metrics
+ ex_leading external leading vertical space, just plain blank
+ font_family The font file we link to.
+ height total height of a line
+ in_leading internal leading vertical space, for accent marks
+ max_width maximum character width
+ metrics Font features and metrics
+Generated by Lummox's dmifontsplus (https://www.byond.com/developer/LummoxJR/DmiFontsPlus)
+Note: these variable names have been changed, so you can't straight copy/paste from dmifontsplus.exe
+list of font size/spacing metrics
+ name Font name, just so people know what to put in their span style.
+ overhang extra width, such as from italics, for a line
+ start first character in metrics Procs
+ get_metrics Get font metrics
+From Lummox's dmifontsplus (https://www.byond.com/developer/LummoxJR/DmiFontsPlus)
+ Var Details ascent
+
+
+
+
+
+ distance above baseline (including whitespace)
average_width
+
+
+
+
+
+ average character width
default_character
+
+
+
+
+
+ default character (for undefined chars)
descent
+
+
+
+
+
+ distance below baseline
end
+
+
+
+
+
+ last character in metrics
ex_leading
+
+
+
+
+
+ external leading vertical space, just plain blank
font_family
+
+
+
+
+
+ The font file we link to.
height
+
+
+
+
+
+ total height of a line
in_leading
+
+
+
+
+
+ internal leading vertical space, for accent marks
max_width
+
+
+
+
+
+ maximum character width
metrics
+
+
+
+
+
+ Font features and metrics
+Generated by Lummox's dmifontsplus (https://www.byond.com/developer/LummoxJR/DmiFontsPlus)
+Note: these variable names have been changed, so you can't straight copy/paste from dmifontsplus.exe
+list of font size/spacing metrics
name
+
+
+
+
+
+ Font name, just so people know what to put in their span style.
overhang
+
+
+
+
+
+ extra width, such as from italics, for a line
start
+
+
+
+
+
+ first character in metrics
Proc Details get_metrics(text, flags, first_line)
+
+
+
+
+
+ Get font metrics
+From Lummox's dmifontsplus (https://www.byond.com/developer/LummoxJR/DmiFontsPlus)
+
+
+
diff --git a/datum/game_mode.html b/datum/game_mode.html
new file mode 100644
index 0000000000000..86455bdb72f20
--- /dev/null
+++ b/datum/game_mode.html
@@ -0,0 +1,99 @@
+
+
+
+
+
+
+ /datum/game_mode - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ current_players Associative list of current players, in order: living players, living antagonists, dead players and observers. Procs
+ admin_panel Mode specific admin panel.
+ can_make_vassal VassalCheckAntagValid(target.mind, check_antag_or_loyal)) // HAS_TRAIT(target, TRAIT_MINDSHIELD, "implant") ||
+ can_start Checks to see if the game can be setup and ran with the current number of players or whatnot.
+ convert_roundtype Allows rounds to basically be "rerolled" should the initial premise fall through. Also known as mulligan antags.
+ ghost_info Mode specific info for ghost game_info
+ make_antag_chance Handles late-join antag assignments
+ post_setup Everyone should now be on the station and have their normal gear. This is the place to give the special roles extra things
+ pre_setup Attempts to select players for special roles the mode might have.
+ process Called by the gameSSticker
+ Var Details current_players
+
+
+
+
+
+ Associative list of current players, in order: living players, living antagonists, dead players and observers.
Proc Details admin_panel()
+
+
+
+
+
+ Mode specific admin panel.
can_make_vassal
+
+ VassalCheckAntagValid(target.mind, check_antag_or_loyal)) // HAS_TRAIT(target, TRAIT_MINDSHIELD, "implant") ||
can_start()
+
+
+
+
+
+ Checks to see if the game can be setup and ran with the current number of players or whatnot.
convert_roundtype()
+
+
+
+
+
+ Allows rounds to basically be "rerolled" should the initial premise fall through. Also known as mulligan antags.
ghost_info()
+
+
+
+
+
+ Mode specific info for ghost game_info
make_antag_chance
+
+ Handles late-join antag assignments
post_setup(report)
+
+
+
+
+
+ Everyone should now be on the station and have their normal gear. This is the place to give the special roles extra things
pre_setup()
+
+
+
+
+
+ Attempts to select players for special roles the mode might have.
process()
+
+
+
+
+
+ Called by the gameSSticker
+
+
+
diff --git a/datum/game_mode/dynamic.html b/datum/game_mode/dynamic.html
new file mode 100644
index 0000000000000..e181eb65132d3
--- /dev/null
+++ b/datum/game_mode/dynamic.html
@@ -0,0 +1,554 @@
+
+
+
+
+
+
+ /datum/game_mode/dynamic - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ candidates List of candidates used on roundstart rulesets.
+ configuration Dynamic configuration, loaded on pre_setup
+ current_midround_rulesets The last drafted midround rulesets (without the current one included).
+Used for choosing different midround injections.
+ current_rules Rules that are processed, rule_process is called on the rules in this list.
+ executed_rules List of executed rulesets.
+ forced_injection When TRUE GetInjectionChance returns 100.
+ forced_latejoin_rule Forced ruleset to be executed for the next latejoin.
+ high_impact_ruleset_executed If a high impact ruleset was executed. Only one will run at a time in most circumstances.
+ higher_injection_chance The chance of injection increase when above higher_injection_chance_minimum_threat
+ higher_injection_chance_minimum_threat If above this threat, increase the chance of injection
+ hijacked_random_event_injection_chance The amount to inject when a round event is hijacked
+ initial_round_start_budget The initial round start budget for logging purposes, set once at the beginning of the round.
+ last_midround_injection_attempt The time when the last midround injection was attempted, whether or not it was successful
+ latejoin_delay_max The maximum time the recurring latejoin ruleset timer is allowed to be.
+ latejoin_delay_min The minimum time the recurring latejoin ruleset timer is allowed to be.
+ latejoin_injection_cooldown When world.time is over this number the mode tries to inject a latejoin ruleset.
+ latejoin_rules List of latejoin rules used for selecting the rules.
+ lower_injection_chance The chance of injection decrease when above lower_injection_chance_minimum_threat
+ lower_injection_chance_minimum_threat If below this threat, decrease the chance of injection
+ mid_round_budget Set at the beginning of the round. Spent by midrounds and latejoins.
+ midround_delay_max The maximum time the recurring midround ruleset timer is allowed to be.
+ midround_delay_min The minimum time the recurring midround ruleset timer is allowed to be.
+ midround_injection_cooldown When world.time is over this number the mode tries to inject a midround ruleset.
+ midround_injection_timer_id The timer ID for the cancellable midround rule injection
+ midround_rules List of midround rules used for selecting the rules.
+ only_ruleset_executed If a only ruleset has been executed.
+ peaceful_percentage How many percent of the rounds are more peaceful.
+ pop_per_requirement
+ random_event_hijack_maximum The maximum amount of time for antag random events to be hijacked.
+ random_event_hijack_minimum The minimum amount of time for antag random events to be hijacked.
+ random_event_hijacked Whether or not a random event has been hijacked this midround cycle
+ round_start_budget Set at the beginning of the round. Spent by the mode to "purchase" rules. Everything else goes in the postround budget.
+ roundstart_pop_ready Number of players who were ready on roundstart.
+ roundstart_split_curve_centre A number between -5 and +5.
+Equivalent to threat_curve_centre, but for the budget split.
+A negative value will weigh towards midround rulesets, and a positive
+value will weight towards roundstart ones.
+ roundstart_split_curve_width A number between 0.5 and 4.
+Equivalent to threat_curve_width, but for the budget split.
+Higher value will favour more variance in splits and
+lower value rounds closer to the average.
+ shown_threat The amount of threat shown on the piece of paper.
+Can differ from the actual threat amount.
+ snapshots A list of recorded "snapshots" of the round, stored in the dynamic.json log
+ threat_curve_centre A number between -5 and +5.
+A negative value will give a more peaceful round and
+a positive value will give a round with higher threat.
+ threat_curve_width A number between 0.5 and 4.
+Higher value will favour extreme rounds and
+lower value rounds closer to the average.
+ threat_level The "threat cap", threat shouldn't normally go above this and is used in ruleset calculations
+ threat_log Running information about the threat. Can store text or datum entries. Procs
+ admin_cancel_midround Fired when an admin cancels the current midround injection.
+ admin_different_midround Fired when an admin requests a different midround injection.
+ check_blocking Checks if a type in blocking_list is in rule_list.
+ configure_ruleset Apply configurations to rule.
+ create_threat Generate threat and increase the threat_level if it goes beyond, capped at 100
+ dynamic_log Log to messages and to the game
+ execute_midround_latejoin_rule Mainly here to facilitate delayed rulesets. All midround/latejoin rulesets are executed with a timered callback to this proc.
+ execute_midround_rule Fired after admins do not cancel a midround injection.
+ execute_roundstart_rule Mainly here to facilitate delayed rulesets. All roundstart rulesets are executed with a timered callback to this proc.
+ generate_budgets Generates the midround and roundstart budgets
+ generate_threat Generates the threat level using lorentz distribution and assigns peaceful_percentage.
+ get_injection_chance Gets the chance for latejoin injection, the dry_run argument is only used for forced injection.
+ get_midround_injection_chance Gets the chance for midround injection, the dry_run argument is only used for forced injection.
+Usually defers to the latejoin injection chance.
+ init_rulesets Returns a list of the provided rulesets.
+Configures their variables to match config.
+ lorentz_to_amount Turns the value generated by lorentz distribution to number between 0 and 100.
+Used for threat level and splitting the budgets.
+ new_snapshot Creates a new snapshot with the given rulesets chosen, and writes to the JSON output.
+ pick_latejoin_rule Executes a random latejoin ruleset from the list of drafted rules.
+ pick_midround_rule Executes a random midround ruleset from the list of drafted rules.
+ pick_ruleset From a list of rulesets, returns one based on weight and availability.
+Mutates the list that is passed into it to remove invalid rules.
+ picking_roundstart_rule Initializes the round start ruleset provided to it. Returns how much threat to spend.
+ picking_specific_rule An experimental proc to allow admins to call rules on the fly or have rules call other rules.
+ refund_threat Refund threat, but no more than threat_level.
+ remove_from_list Removes type from the list
+ rigged_roundstart A simple roundstart proc used when dynamic_forced_roundstart_ruleset has rules in it.
+ setup_rulesets Initializes the internal ruleset variables
+ spend_midround_budget Expend midround threat, can't fall under 0.
+ spend_roundstart_budget Expend round start threat, can't fall under 0.
+ update_log Updates the log for the current snapshots.
+ Var Details candidates
+
+
+
+
+
+ List of candidates used on roundstart rulesets.
configuration
+
+
+
+
+
+ Dynamic configuration, loaded on pre_setup
current_midround_rulesets
+
+
+
+
+
+ The last drafted midround rulesets (without the current one included).
+Used for choosing different midround injections.
current_rules
+
+
+
+
+
+ Rules that are processed, rule_process is called on the rules in this list.
executed_rules
+
+
+
+
+
+ List of executed rulesets.
forced_injection
+
+
+
+
+
+ When TRUE GetInjectionChance returns 100.
forced_latejoin_rule
+
+
+
+
+
+ Forced ruleset to be executed for the next latejoin.
high_impact_ruleset_executed
+
+
+
+
+
+ If a high impact ruleset was executed. Only one will run at a time in most circumstances.
higher_injection_chance
+
+
+
+
+
+ The chance of injection increase when above higher_injection_chance_minimum_threat
higher_injection_chance_minimum_threat
+
+
+
+
+
+ If above this threat, increase the chance of injection
hijacked_random_event_injection_chance
+
+
+
+
+
+ The amount to inject when a round event is hijacked
initial_round_start_budget
+
+
+
+
+
+ The initial round start budget for logging purposes, set once at the beginning of the round.
last_midround_injection_attempt
+
+
+
+
+
+ The time when the last midround injection was attempted, whether or not it was successful
latejoin_delay_max
+
+
+
+
+
+ The maximum time the recurring latejoin ruleset timer is allowed to be.
latejoin_delay_min
+
+
+
+
+
+ The minimum time the recurring latejoin ruleset timer is allowed to be.
latejoin_injection_cooldown
+
+
+
+
+
+ When world.time is over this number the mode tries to inject a latejoin ruleset.
latejoin_rules
+
+
+
+
+
+ List of latejoin rules used for selecting the rules.
lower_injection_chance
+
+
+
+
+
+ The chance of injection decrease when above lower_injection_chance_minimum_threat
lower_injection_chance_minimum_threat
+
+
+
+
+
+ If below this threat, decrease the chance of injection
mid_round_budget
+
+
+
+
+
+ Set at the beginning of the round. Spent by midrounds and latejoins.
midround_delay_max
+
+
+
+
+
+ The maximum time the recurring midround ruleset timer is allowed to be.
midround_delay_min
+
+
+
+
+
+ The minimum time the recurring midround ruleset timer is allowed to be.
midround_injection_cooldown
+
+
+
+
+
+ When world.time is over this number the mode tries to inject a midround ruleset.
midround_injection_timer_id
+
+
+
+
+
+ The timer ID for the cancellable midround rule injection
midround_rules
+
+
+
+
+
+ List of midround rules used for selecting the rules.
only_ruleset_executed
+
+
+
+
+
+ If a only ruleset has been executed.
peaceful_percentage
+
+
+
+
+
+ How many percent of the rounds are more peaceful.
pop_per_requirement
+
+
+
+
+
+
+Pop range per requirement.
+* If the value is five the range is:
+* 0-4, 5-9, 10-14, 15-19, 20-24, 25-29, 30-34, 35-39, 40-54, 45+
+* If it is six the range is:
+* 0-5, 6-11, 12-17, 18-23, 24-29, 30-35, 36-41, 42-47, 48-53, 54+
+* If it is seven the range is:
+* 0-6, 7-13, 14-20, 21-27, 28-34, 35-41, 42-48, 49-55, 56-62, 63+
+
+
+ random_event_hijack_maximum
+
+
+
+
+
+ The maximum amount of time for antag random events to be hijacked.
random_event_hijack_minimum
+
+
+
+
+
+ The minimum amount of time for antag random events to be hijacked.
random_event_hijacked
+
+
+
+
+
+ Whether or not a random event has been hijacked this midround cycle
round_start_budget
+
+
+
+
+
+ Set at the beginning of the round. Spent by the mode to "purchase" rules. Everything else goes in the postround budget.
roundstart_pop_ready
+
+
+
+
+
+ Number of players who were ready on roundstart.
roundstart_split_curve_centre
+
+
+
+
+
+ A number between -5 and +5.
+Equivalent to threat_curve_centre, but for the budget split.
+A negative value will weigh towards midround rulesets, and a positive
+value will weight towards roundstart ones.
roundstart_split_curve_width
+
+
+
+
+
+ A number between 0.5 and 4.
+Equivalent to threat_curve_width, but for the budget split.
+Higher value will favour more variance in splits and
+lower value rounds closer to the average.
shown_threat
+
+
+
+
+
+ The amount of threat shown on the piece of paper.
+Can differ from the actual threat amount.
snapshots
+ – /list/datum/dynamic_snapshot
+
+
+
+
+ A list of recorded "snapshots" of the round, stored in the dynamic.json log
threat_curve_centre
+
+
+
+
+
+ A number between -5 and +5.
+A negative value will give a more peaceful round and
+a positive value will give a round with higher threat.
threat_curve_width
+
+
+
+
+
+ A number between 0.5 and 4.
+Higher value will favour extreme rounds and
+lower value rounds closer to the average.
threat_level
+
+
+
+
+
+ The "threat cap", threat shouldn't normally go above this and is used in ruleset calculations
threat_log
+
+
+
+
+
+ Running information about the threat. Can store text or datum entries.
Proc Details admin_cancel_midround(/mob /user, timer_id)
+
+
+
+
+
+ Fired when an admin cancels the current midround injection.
admin_different_midround(/mob /user, timer_id)
+
+
+
+
+
+ Fired when an admin requests a different midround injection.
check_blocking(/list/blocking_list, /list/rule_list)
+
+
+
+
+
+ Checks if a type in blocking_list is in rule_list.
+ Apply configurations to rule.
create_threat(gain)
+
+
+
+
+
+ Generate threat and increase the threat_level if it goes beyond, capped at 100
dynamic_log(text)
+
+
+
+
+
+ Log to messages and to the game
execute_midround_latejoin_rule(sent_rule)
+
+
+
+
+
+ Mainly here to facilitate delayed rulesets. All midround/latejoin rulesets are executed with a timered callback to this proc.
execute_midround_rule
+
+ Fired after admins do not cancel a midround injection.
execute_roundstart_rule(sent_rule)
+
+
+
+
+
+ Mainly here to facilitate delayed rulesets. All roundstart rulesets are executed with a timered callback to this proc.
generate_budgets()
+
+
+
+
+
+ Generates the midround and roundstart budgets
generate_threat()
+
+
+
+
+
+ Generates the threat level using lorentz distribution and assigns peaceful_percentage.
get_injection_chance(dry_run)
+
+
+
+
+
+ Gets the chance for latejoin injection, the dry_run argument is only used for forced injection.
get_midround_injection_chance(dry_run)
+
+
+
+
+
+ Gets the chance for midround injection, the dry_run argument is only used for forced injection.
+Usually defers to the latejoin injection chance.
init_rulesets(ruleset_subtype)
+
+
+
+
+
+ Returns a list of the provided rulesets.
+Configures their variables to match config.
lorentz_to_amount(x)
+
+
+
+
+
+ Turns the value generated by lorentz distribution to number between 0 and 100.
+Used for threat level and splitting the budgets.
new_snapshot
+
+ Creates a new snapshot with the given rulesets chosen, and writes to the JSON output.
pick_latejoin_rule(/list/drafted_rules)
+
+
+
+
+
+ Executes a random latejoin ruleset from the list of drafted rules.
pick_midround_rule(/list/drafted_rules)
+
+
+
+
+
+ Executes a random midround ruleset from the list of drafted rules.
pick_ruleset(/list/drafted_rules)
+
+
+
+
+
+ From a list of rulesets, returns one based on weight and availability.
+Mutates the list that is passed into it to remove invalid rules.
picking_roundstart_rule
+
+ Initializes the round start ruleset provided to it. Returns how much threat to spend.
picking_specific_rule(ruletype, forced)
+
+
+
+
+
+ An experimental proc to allow admins to call rules on the fly or have rules call other rules.
refund_threat(regain)
+
+
+
+
+
+ Refund threat, but no more than threat_level.
remove_from_list(/list/type_list, type)
+
+
+
+
+
+ Removes type from the list
rigged_roundstart()
+
+
+
+
+
+ A simple roundstart proc used when dynamic_forced_roundstart_ruleset has rules in it.
setup_rulesets()
+
+
+
+
+
+ Initializes the internal ruleset variables
spend_midround_budget(cost)
+
+
+
+
+
+ Expend midround threat, can't fall under 0.
spend_roundstart_budget(cost)
+
+
+
+
+
+ Expend round start threat, can't fall under 0.
update_log()
+
+
+
+
+
+ Updates the log for the current snapshots.
+
+
+
diff --git a/datum/game_mode/gang.html b/datum/game_mode/gang.html
new file mode 100644
index 0000000000000..235ceb3450d92
--- /dev/null
+++ b/datum/game_mode/gang.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /datum/game_mode/gang - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ handler A reference to the handler that is used to run pre_setup(), post_setup(), etc..
+ Var Details
+ A reference to the handler that is used to run pre_setup(), post_setup(), etc..
+
+
+
diff --git a/datum/gang_handler.html b/datum/gang_handler.html
new file mode 100644
index 0000000000000..1495cc0dc155c
--- /dev/null
+++ b/datum/gang_handler.html
@@ -0,0 +1,292 @@
+
+
+
+
+
+
+ /datum/gang_handler - SPLURT Station 13
+
+
+
+
+Families gamemode / dynamic ruleset handler
+
+
+
+
+
+A special datum used by the families gamemode and dynamic rulesets to centralize code. "Family" and "gang" used interchangeably in code.
+This datum centralizes code used for the families gamemode / dynamic rulesets. Families incorporates a significant
+amount of unique processing; without this datum, that could would be duplicated. To ensure the maintainability
+of the families gamemode / rulesets, the code was moved to this datum. The gamemode / rulesets instance this
+datum, pass it lists (lists are passed by reference; removing candidates here removes candidates in the gamemode),
+and call its procs. Additionally, the families antagonist datum and families induction package also
+contain vars that reference this datum, allowing for new families / family members to add themselves
+to this datum's lists thereof (primarily used for point calculation). Despite this, the basic team mechanics
+themselves should function regardless of this datum's instantiation, should a player have the gang or cop
+antagonist datum added to them through methods external to the families gamemode / rulesets.
Vars
+ antag_candidates List of all eligible starting family members / undercover cops. Set externally (passed by reference) by gamemode / ruleset; used internally. Note that dynamic uses a list of mobs to handle candidates while game_modes use lists of minds! Don't be fooled!
+ check_counter A counter used to minimize the overhead of computationally intensive, periodic family point gain checks. Used and set internally.
+ cops_arrived Whether the space cops have arrived. Set internally; used internally, and for updating the wanted HUD.
+ current_theme The current chosen gamemode theme. Decides the available Gangs, objectives, and equipment.
+ deaths_during_shift_at_beginning Keeps track of the amount of deaths since the calling of pre_setup_analogue() if this is a midround handler. Used to prevent a high wanted level due to a large amount of deaths during the shift prior to the activation of this handler / the midround ruleset.
+ end_time The time, in deciseconds, that the space cops will arrive at. Calculated based on wanted level and start_time. Used and set internally.
+ gang_balance_cap The number of family members more that a family may have over other active families. Can be set externally; used internally.
+ gangbangers List of all family member minds. Used internally; added to internally, and externally by /obj/item/gang_induction_package when used to induct a new family member.
+ gangs List of all /datum/team/gang. Used internally; added to externally by /datum/antagonist/gang when it generates a new /datum/team/gang.
+ gangs_to_generate The number of families (and 1:1 corresponding undercover cops) that should be generated. Can be set externally; used internally.
+ midround_ruleset Whether the handler corresponds to a ruleset that does not trigger at round start. Should be set externally only if applicable; used internally.
+ restricted_jobs List of jobs not eligible for starting family member / undercover cop. Set externally (passed by reference) by gamemode / ruleset; used internally.
+ sent_announcement Whether the gamemode-announcing announcement has been sent. Used and set internally.
+ sent_second_announcement Whether the "5 minute warning" announcement has been sent. Used and set internally.
+ start_time The time, in deciseconds, that the datum's pre_setup() occured at. Used in end_time. Used and set internally.
+ undercover_cops List of all undercover cop minds. Used and set internally.
+ use_dynamic_timing Whether we want to use the 30 to 15 minute timer instead of the 60 to 30 minute timer, for Dynamic.
+ wanted_level The current wanted level. Set internally; used internally, and for updating the wanted HUD. Procs
+ New Sets antag_candidates and restricted_jobs.
+ announce_gang_locations Internal. Announces the presence of families to the entire station and sets sent_announcement to true to allow other checks to occur.
+ check_wanted_level Internal. Checks if our wanted level has changed; calls update_wanted_level. Only updates wanted level post the initial announcement and until the cops show up. After that, it's locked.
+ on_gain_wanted_level Internal. Updates the end_time and sends out an announcement if the wanted level has increased. Called by update_wanted_level().
+ on_lower_wanted_level Internal. Updates the end_time and sends out an announcement if the wanted level has decreased. Called by update_wanted_level().
+ post_setup_analogue post_setup() or execute() equivalent.
+ pre_setup_analogue pre_setup() or pre_execute() equivalent.
+ process_analogue process() or rule_process() equivalent.
+ send_in_the_fuzz Internal. Polls ghosts and sends in a team of space cops according to the wanted level, accompanied by an announcement. Will let the shuttle leave 10 minutes after sending. Freezes the wanted level.
+ set_round_result_analogue set_round_result() or round_result() equivalent.
+ update_wanted_level Internal. Updates the icon states for everyone, and calls procs that send out announcements / change the end_time if the wanted level has changed.
+ Var Details antag_candidates
+
+
+
+
+
+ List of all eligible starting family members / undercover cops. Set externally (passed by reference) by gamemode / ruleset; used internally. Note that dynamic uses a list of mobs to handle candidates while game_modes use lists of minds! Don't be fooled!
check_counter
+
+
+
+
+
+ A counter used to minimize the overhead of computationally intensive, periodic family point gain checks. Used and set internally.
cops_arrived
+
+
+
+
+
+ Whether the space cops have arrived. Set internally; used internally, and for updating the wanted HUD.
+ The current chosen gamemode theme. Decides the available Gangs, objectives, and equipment.
deaths_during_shift_at_beginning
+
+
+
+
+
+ Keeps track of the amount of deaths since the calling of pre_setup_analogue() if this is a midround handler. Used to prevent a high wanted level due to a large amount of deaths during the shift prior to the activation of this handler / the midround ruleset.
end_time
+
+
+
+
+
+ The time, in deciseconds, that the space cops will arrive at. Calculated based on wanted level and start_time. Used and set internally.
gang_balance_cap
+
+
+
+
+
+ The number of family members more that a family may have over other active families. Can be set externally; used internally.
gangbangers
+
+
+
+
+
+ List of all family member minds. Used internally; added to internally, and externally by /obj/item/gang_induction_package when used to induct a new family member.
gangs
+
+
+
+
+
+ List of all /datum/team/gang. Used internally; added to externally by /datum/antagonist/gang when it generates a new /datum/team/gang.
gangs_to_generate
+
+
+
+
+
+ The number of families (and 1:1 corresponding undercover cops) that should be generated. Can be set externally; used internally.
midround_ruleset
+
+
+
+
+
+ Whether the handler corresponds to a ruleset that does not trigger at round start. Should be set externally only if applicable; used internally.
restricted_jobs
+
+
+
+
+
+ List of jobs not eligible for starting family member / undercover cop. Set externally (passed by reference) by gamemode / ruleset; used internally.
sent_announcement
+
+
+
+
+
+ Whether the gamemode-announcing announcement has been sent. Used and set internally.
sent_second_announcement
+
+
+
+
+
+ Whether the "5 minute warning" announcement has been sent. Used and set internally.
start_time
+
+
+
+
+
+ The time, in deciseconds, that the datum's pre_setup() occured at. Used in end_time. Used and set internally.
undercover_cops
+
+
+
+
+
+ List of all undercover cop minds. Used and set internally.
use_dynamic_timing
+
+
+
+
+
+ Whether we want to use the 30 to 15 minute timer instead of the 60 to 30 minute timer, for Dynamic.
wanted_level
+
+
+
+
+
+ The current wanted level. Set internally; used internally, and for updating the wanted HUD.
Proc Details New(/list/given_candidates, /list/revised_restricted)
+
+
+
+
+
+ Sets antag_candidates and restricted_jobs.
+Sets the antag_candidates and restricted_jobs lists to the equivalent
+lists of its instantiating game_mode / dynamic_ruleset datum. As lists
+are passed by reference, the variable set in this datum and the passed list
+list used to set it are literally the same; changes to one affect the other.
+Like all New() procs, called when the datum is first instantiated.
+There's an annoying caveat here, though -- dynamic rulesets don't have
+lists of minds for candidates, they have lists of mobs. Ghost mobs, before
+the round has started. But we still want to preserve the structure of the candidates
+list by not duplicating it and making sure to remove the candidates as we use them.
+So there's a little bit of boilerplate throughout to preserve the sanctity of this reference.
+Arguments:
+
+given_candidates - The antag_candidates list or equivalent of the datum instantiating this one.
+revised_restricted - The restricted_jobs list or equivalent of the datum instantiating this one.
+ announce_gang_locations()
+
+
+
+
+
+ Internal. Announces the presence of families to the entire station and sets sent_announcement to true to allow other checks to occur.
check_wanted_level()
+
+
+
+
+
+ Internal. Checks if our wanted level has changed; calls update_wanted_level. Only updates wanted level post the initial announcement and until the cops show up. After that, it's locked.
on_gain_wanted_level(newlevel)
+
+
+
+
+
+ Internal. Updates the end_time and sends out an announcement if the wanted level has increased. Called by update_wanted_level().
on_lower_wanted_level(newlevel)
+
+
+
+
+
+ Internal. Updates the end_time and sends out an announcement if the wanted level has decreased. Called by update_wanted_level().
post_setup_analogue(return_if_no_gangs)
+
+
+
+
+
+ post_setup() or execute() equivalent.
+This proc is always called externally, by the instantiating game_mode / dynamic_ruleset.
+This is done during the post_setup() or execute() phase, after the pre_setup() / pre_execute() phase.
+It is intended to take the place of the code that would normally occupy the pre_setup()
+or pre_execute() proc. As such, it ensures that all prospective starting family members /
+undercover cops are eligible, and picks replacements if there were ineligible cops / family members.
+It then assigns gear to the finalized family members and undercover cops, adding them to its lists,
+and sets the families announcement proc (that does the announcing) to trigger in five minutes.
+Additionally, if given the argument TRUE, it will return FALSE if there are no eligible starting family members.
+This is only to be done if the instantiating datum is a dynamic_ruleset, as these require returns
+while a game_mode is not expected to return early during this phase.
+Arguments:
+
+return_if_no_gangs - Boolean that determines if the proc should return FALSE should it find no eligible family members. Should be used for dynamic only.
+ pre_setup_analogue()
+
+
+
+
+
+ pre_setup() or pre_execute() equivalent.
+This proc is always called externally, by the instantiating game_mode / dynamic_ruleset.
+This is done during the pre_setup() or pre_execute() phase, after first instantiation
+and the modification of gangs_to_generate, gang_balance_cap, and midround_ruleset.
+It is intended to take the place of the code that would normally occupy the pre_setup()
+or pre_execute() proc, were the code localized to the game_mode or dynamic_ruleset datum respectively
+as opposed to this handler. As such, it picks players to be chosen for starting familiy members
+or undercover cops prior to assignment to jobs. Sets start_time, default end_time,
+and the current value of deaths_during_shift, to ensure the wanted level only cares about
+the deaths since this proc has been called.
+Takes no arguments.
process_analogue()
+
+
+
+
+
+ process() or rule_process() equivalent.
+This proc is always called externally, by the instantiating game_mode / dynamic_ruleset.
+This is done during the process() or rule_process() phase, after post_setup() or
+execute() and at regular intervals thereafter. process() and rule_process() are optional
+for a game_mode / dynamic_ruleset, but are important for this gamemode. It is of central
+importance to the gamemode's flow, calculating wanted level updates, family point gain,
+and announcing + executing the arrival of the space cops, achieved through calling internal procs.
+Takes no arguments.
send_in_the_fuzz()
+
+
+
+
+
+ Internal. Polls ghosts and sends in a team of space cops according to the wanted level, accompanied by an announcement. Will let the shuttle leave 10 minutes after sending. Freezes the wanted level.
set_round_result_analogue()
+
+
+
+
+
+ set_round_result() or round_result() equivalent.
+This proc is always called externally, by the instantiating game_mode / dynamic_ruleset.
+This is done by the set_round_result() or round_result() procs, at roundend.
+Sets the ticker subsystem to the correct result based off of the relative populations
+of space cops and family members.
+Takes no arguments.
update_wanted_level(newlevel)
+
+
+
+
+
+ Internal. Updates the icon states for everyone, and calls procs that send out announcements / change the end_time if the wanted level has changed.
+
+
+
diff --git a/datum/gang_theme.html b/datum/gang_theme.html
new file mode 100644
index 0000000000000..0b2759e61d8ff
--- /dev/null
+++ b/datum/gang_theme.html
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+ /datum/gang_theme - SPLURT Station 13
+
+
+
+
+
+
+Gang themes for the Families gamemode. Used to determine the RP theme of the round, what gangs are present, and what their objectives are.
Vars
+ bonus_first_gangster_items Stuff given to the starting gangster at roundstart. Assoc list, type = list(item_type)
+ bonus_items Stuff given to every gangster in this theme.
+ description The radio announcement played after 5 minutes.
+ everyone_objective If this isn't null, everyone gets this objective.
+ gang_objectives The objectives for the gangs. Associative list, type = "objective"
+ involved_gangs All gangs in the theme, typepaths of gangs.
+ name The name of the theme.
+ starting_gangsters How many gangsters should each gang start with? Recommend to keep this in the ballpark of ensuring 9-10 total gangsters spawn.
+ Var Details bonus_first_gangster_items
+
+
+
+
+
+ Stuff given to the starting gangster at roundstart. Assoc list, type = list(item_type)
bonus_items
+
+
+
+
+
+ Stuff given to every gangster in this theme.
description
+
+
+
+
+
+ The radio announcement played after 5 minutes.
everyone_objective
+
+
+
+
+
+ If this isn't null, everyone gets this objective.
gang_objectives
+
+
+
+
+
+ The objectives for the gangs. Associative list, type = "objective"
involved_gangs
+
+
+
+
+
+ All gangs in the theme, typepaths of gangs.
name
+
+
+
+
+
+ The name of the theme.
starting_gangsters
+
+
+
+
+
+ How many gangsters should each gang start with? Recommend to keep this in the ballpark of ensuring 9-10 total gangsters spawn.
+
+
+
diff --git a/datum/gas_mixture.html b/datum/gas_mixture.html
new file mode 100644
index 0000000000000..e92df68145dda
--- /dev/null
+++ b/datum/gas_mixture.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /datum/gas_mixture - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ gas_list_view_only Never ever set this variable, hooked into vv_get_var for view variables viewing.
+ Var Details gas_list_view_only
+
+
+
+
+
+ Never ever set this variable, hooked into vv_get_var for view variables viewing.
+
+
+
diff --git a/datum/gateway_destination.html b/datum/gateway_destination.html
new file mode 100644
index 0000000000000..8183bbbce5b23
--- /dev/null
+++ b/datum/gateway_destination.html
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+ /datum/gateway_destination - SPLURT Station 13
+
+
+
+
+
+
+Corresponds to single entry in gateway control.
+Will NOT be added automatically to GLOB.gateway_destinations list.
Vars
+ enabled How long after roundstart this destination becomes active
+ hidden If disabled, the destination won't be available Procs
+ is_available Will not show on gateway controls at all.
+ Var Details enabled
+
+
+
+
+
+ How long after roundstart this destination becomes active
hidden
+
+
+
+
+
+ If disabled, the destination won't be available
Proc Details is_available()
+
+
+
+
+
+ Will not show on gateway controls at all.
+
+
+
diff --git a/datum/gateway_destination/gateway.html b/datum/gateway_destination/gateway.html
new file mode 100644
index 0000000000000..d5ef18c5dd5bd
--- /dev/null
+++ b/datum/gateway_destination/gateway.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /datum/gateway_destination/gateway - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details
+ The gateway this destination points at
+
+
+
diff --git a/datum/gateway_destination/point.html b/datum/gateway_destination/point.html
new file mode 100644
index 0000000000000..e7a55843b9427
--- /dev/null
+++ b/datum/gateway_destination/point.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /datum/gateway_destination/point - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ id Used by away landmarks
+ Var Details id
+
+
+
+
+
+ Used by away landmarks
+
+
+
diff --git a/datum/http_request.html b/datum/http_request.html
new file mode 100644
index 0000000000000..67c112c35684d
--- /dev/null
+++ b/datum/http_request.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /datum/http_request - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ output_file If present response body will be saved to this file.
+ Var Details output_file
+
+
+
+
+
+ If present response body will be saved to this file.
+
+
+
diff --git a/datum/hud.html b/datum/hud.html
new file mode 100644
index 0000000000000..7d48d047741fb
--- /dev/null
+++ b/datum/hud.html
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+ /datum/hud - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ extra_inventory Equipped item screens that don't show up even if using the initial toggle
+ extra_shown Extra inventory slots visible?
+ hunger UI element for hunger
+ screentip_text UI for screentips that appear when you mouse over things
+ thirst UI element for thirst
+ toggle_palette Whether or not screentips are enabled.
+This is updated by the preference for cheaper reads than would be
+had with a proc call, especially on one of the hottest procs in the
+game (MouseEntered).
+The color to use for the screentips.
+This is updated by the preference for cheaper reads than would be
+had with a proc call, especially on one of the hottest procs in the
+game (MouseEntered). Procs
+ build_action_groups Generates and fills new action groups with our mob's current actions
+ generate_landings Generates visual landings for all groups that the button is not a memeber of
+ hide_action Removes the passed in action from its current position on the screen
+ hide_landings Clears all currently visible landings
+ view_audit_buttons Ensures all of our buttons are properly within the bounds of our client's view, moves them if they're not
+ Var Details
+ Equipped item screens that don't show up even if using the initial toggle
+ Extra inventory slots visible?
+ UI element for hunger
screentip_text
+
+
+
+
+
+ UI for screentips that appear when you mouse over things
+ UI element for thirst
+ Whether or not screentips are enabled.
+This is updated by the preference for cheaper reads than would be
+had with a proc call, especially on one of the hottest procs in the
+game (MouseEntered).
+The color to use for the screentips.
+This is updated by the preference for cheaper reads than would be
+had with a proc call, especially on one of the hottest procs in the
+game (MouseEntered).
Proc Details build_action_groups()
+
+
+
+
+
+ Generates and fills new action groups with our mob's current actions
+ Generates visual landings for all groups that the button is not a memeber of
+ Removes the passed in action from its current position on the screen
hide_landings()
+
+
+
+
+
+ Clears all currently visible landings
+ Ensures all of our buttons are properly within the bounds of our client's view, moves them if they're not
+
+
+
diff --git a/datum/hud/new_player.html b/datum/hud/new_player.html
new file mode 100644
index 0000000000000..670357a608203
--- /dev/null
+++ b/datum/hud/new_player.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /datum/hud/new_player - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ menu_hud_status Whether the menu is currently on the client's screen or not
+ Var Details
+ Whether the menu is currently on the client's screen or not
+
+
+
diff --git a/datum/instrument.html b/datum/instrument.html
new file mode 100644
index 0000000000000..2ebc5a8661390
--- /dev/null
+++ b/datum/instrument.html
@@ -0,0 +1,127 @@
+
+
+
+
+
+
+ /datum/instrument - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ HIGHEST_KEY Don't touch this
+ LOWEST_KEY Don't touch this x2
+ abstract_type Used for categorization subtypes
+ admin_only Oh no - For truly troll instruments.
+ category Category
+ id Uniquely identifies this instrument so runtime changes are possible as opposed to paths. If this is unset, things will use path instead.
+ instrument_flags See __DEFINES/flags/instruments.dm
+ legacy_instrument_ext For legacy instruments, our file extension
+ legacy_instrument_path For legacy instruments, the path to our notes
+ name Name of the instrument
+ real_samples Write here however many samples, follow this syntax: "%note num%"='%sample file%' eg. "27"='synthesizer/e2.ogg'. Key must never be lower than 0 and higher than 127
+ samples assoc list key = /datum/instrument_key. do not fill this yourself!
+ songs_using What songs are using us
+ volume_multiplier Volume multiplier. Synthesized instruments are quite loud and I don't like to cut off potential detail via editing. (someone correct me if this isn't a thing)
+ Var Details HIGHEST_KEY
+
+
+
+
+
+ Don't touch this
LOWEST_KEY
+
+
+
+
+
+ Don't touch this x2
abstract_type
+
+
+
+
+
+ Used for categorization subtypes
admin_only
+
+
+
+
+
+ Oh no - For truly troll instruments.
category
+
+
+
+
+
+ Category
id
+
+
+
+
+
+ Uniquely identifies this instrument so runtime changes are possible as opposed to paths. If this is unset, things will use path instead.
instrument_flags
+
+
+
+
+
+ See __DEFINES/flags/instruments.dm
legacy_instrument_ext
+
+
+
+
+
+ For legacy instruments, our file extension
legacy_instrument_path
+
+
+
+
+
+ For legacy instruments, the path to our notes
name
+
+
+
+
+
+ Name of the instrument
real_samples
+
+
+
+
+
+ Write here however many samples, follow this syntax: "%note num%"='%sample file%' eg. "27"='synthesizer/e2.ogg'. Key must never be lower than 0 and higher than 127
samples
+
+
+
+
+
+ assoc list key = /datum/instrument_key. do not fill this yourself!
songs_using
+
+
+
+
+
+ What songs are using us
volume_multiplier
+
+
+
+
+
+ Volume multiplier. Synthesized instruments are quite loud and I don't like to cut off potential detail via editing. (someone correct me if this isn't a thing)
+
+
+
diff --git a/datum/interaction.html b/datum/interaction.html
new file mode 100644
index 0000000000000..f94c7050ca7be
--- /dev/null
+++ b/datum/interaction.html
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+ /datum/interaction - SPLURT Station 13
+
+
+
+
+
+
+The base of all interactions
Vars
+ additional_details Refuses to accept more than one entry for some reason, fix sometime Procs
+ display_interaction Display the message
+ do_action Actually doing the action, has a few checks to see if it's valid, usually overwritten to be make things actually happen and what-not
+ evaluate_target Same as evaluate_user, but for target
+ evaluate_user Checks if user can do an interaction, action_check is for whether you're actually doing it or not (useful for the menu and not removing the buttons)
+ post_interaction After the interaction, the base only plays the sound and only if it has one
+ Var Details additional_details
+
+
+
+
+
+ Refuses to accept more than one entry for some reason, fix sometime
Proc Details display_interaction
+
+ Display the message
do_action
+
+ Actually doing the action, has a few checks to see if it's valid, usually overwritten to be make things actually happen and what-not
evaluate_target
+
+ Same as evaluate_user, but for target
evaluate_user
+
+ Checks if user can do an interaction, action_check is for whether you're actually doing it or not (useful for the menu and not removing the buttons)
post_interaction
+
+ After the interaction, the base only plays the sound and only if it has one
+
+
+
diff --git a/datum/interaction/lewd.html b/datum/interaction/lewd.html
new file mode 100644
index 0000000000000..ba66d60ebd4a0
--- /dev/null
+++ b/datum/interaction/lewd.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /datum/interaction/lewd - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details require_user_num_feet
+
+
+
+
+
+ Use the number of required feet.
user_refractory_cost
+
+
+
+
+
+ Time before actions can be done again
+
+
+
diff --git a/datum/job.html b/datum/job.html
new file mode 100644
index 0000000000000..1fe89ce108430
--- /dev/null
+++ b/datum/job.html
@@ -0,0 +1,151 @@
+
+
+
+
+
+
+ /datum/job - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details allow_bureaucratic_error
+
+
+
+
+
+ Should this job be allowed to be picked for the bureaucratic error event?
always_can_respawn_as
+
+
+
+
+
+ Can you always join as this job even while respawning (should probably only be on for assistant)
considered_combat_role
+
+
+
+
+
+ Is this job considered a combat role for respawning? (usually sec/command)
exclusive_mail_goodies
+
+
+
+
+
+ If this job's mail goodies compete with generic goodies.
family_heirlooms
+
+
+
+
+
+ List of family heirlooms this job can get with the family heirloom quirk. List of types.
mail_goodies
+
+
+
+
+
+ Goodies that can be received via the mail system.
+Keep the _job definition for this empty and use /obj/item/mail to define general gifts.
random_spawns_possible
+
+
+
+
+
+ Is this job affected by weird spawns like the ones from station traits
starting_modifiers
+
+
+
+
+
+ Starting skill modifiers.
Proc Details after_latejoin_spawn
+
+ Called after a successful latejoin spawn.
+Client is in the mob.
+This happens after after_spawn()
after_roundstart_spawn
+
+ Called after a successful roundstart spawn.
+Client is not yet in the mob.
+This happens after after_spawn()
get_default_roundstart_spawn_point()
+
+
+
+
+
+ Handles finding and picking a valid roundstart effect landmark spawn point, in case no uncommon different spawning events occur.
get_latejoin_spawn_point()
+
+
+
+
+
+ Finds a valid latejoin spawn point, checking for events and special conditions.
get_mail_goodies(/mob /recipient)
+
+
+
+
+
+ An overridable getter for more dynamic goodies.
get_roundstart_spawn_point
+
+ Returns an atom where the mob should spawn in.
+ Checks if we should be created on a certain map
process_map_overrides
+
+ Processes map specific overrides
+
+
+
diff --git a/datum/job/mining.html b/datum/job/mining.html
new file mode 100644
index 0000000000000..b7a1545e13887
--- /dev/null
+++ b/datum/job/mining.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /datum/job/mining - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ paycheck_department Not necessarily easy itself, but it can be trivial to make lot of cash on this job.
+ Var Details paycheck_department
+
+
+
+
+
+ Not necessarily easy itself, but it can be trivial to make lot of cash on this job.
+
+
+
diff --git a/datum/jps_node.html b/datum/jps_node.html
new file mode 100644
index 0000000000000..1b75035379a23
--- /dev/null
+++ b/datum/jps_node.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+ /datum/jps_node - SPLURT Station 13
+
+
+
+
+
+
+The JPS Node datum represents a turf that we find interesting enough to add to the open list and possibly search for new tiles from
Vars
+ f_value The A* node weight (f_value = number_of_tiles + heuristic)
+ heuristic The A* node heuristic (a rough estimate of how far we are from the goal)
+ jumps How many steps it took to get here from the last node
+ node_goal Nodes store the endgoal so they can process their heuristic without a reference to the pathfind datum
+ number_tiles How many steps it's taken to get here from the start (currently pulling double duty as steps taken & cost to get here, since all moves incl diagonals cost 1 rn)
+ previous_node The node we just came from
+ tile The turf associated with this node
+ Var Details f_value
+
+
+
+
+
+ The A* node weight (f_value = number_of_tiles + heuristic)
heuristic
+
+
+
+
+
+ The A* node heuristic (a rough estimate of how far we are from the goal)
jumps
+
+
+
+
+
+ How many steps it took to get here from the last node
node_goal
+
+
+
+
+
+ Nodes store the endgoal so they can process their heuristic without a reference to the pathfind datum
number_tiles
+
+
+
+
+
+ How many steps it's taken to get here from the start (currently pulling double duty as steps taken & cost to get here, since all moves incl diagonals cost 1 rn)
previous_node
+
+
+
+
+
+ The node we just came from
tile
+
+
+
+
+
+ The turf associated with this node
+
+
+
diff --git a/datum/keybinding.html b/datum/keybinding.html
new file mode 100644
index 0000000000000..abcd07bb0caf9
--- /dev/null
+++ b/datum/keybinding.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /datum/keybinding - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ clientside Is this a clientside verb trigger? If so, this should be set to the name of the verb.
+ special Special - Needs to update special keys on update. clientside implis special.
+ Var Details clientside
+
+
+
+
+
+ Is this a clientside verb trigger? If so, this should be set to the name of the verb.
special
+
+
+
+
+
+ Special - Needs to update special keys on update. clientside implis special.
+
+
+
diff --git a/datum/keybinding/living.html b/datum/keybinding/living.html
new file mode 100644
index 0000000000000..fb0cc9d225b89
--- /dev/null
+++ b/datum/keybinding/living.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /datum/keybinding/living - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ can_use Technically you shouldn't be doing any actions if you were sleeping either but...
Proc Details can_use
+
+ Technically you shouldn't be doing any actions if you were sleeping either but...
+
+
+
diff --git a/datum/language_holder.html b/datum/language_holder.html
new file mode 100644
index 0000000000000..21db3d0368991
--- /dev/null
+++ b/datum/language_holder.html
@@ -0,0 +1,192 @@
+
+
+
+
+
+
+ /datum/language_holder - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ blocked_languages A list of blocked languages. Used to prevent understanding and speaking certain languages, ie for certain mobs, mutations etc.
+ language_menu Handles displaying the language menu UI.
+ omnitongue If true, overrides tongue limitations.
+ owner Tracks the entity that owns the holder.
+ selected_language Currently spoken language
+ spoken_languages A list of languages that can be spoken. Tongue organ may also set limits beyond this list.
+ understood_languages Understood languages. Procs
+ New Initializes, and copies in the languages from the current atom if available.
+ add_blocked_language Adds a single language or list of languages to the blocked language list.
+ can_speak_language Checks if you can speak the language. Tongue limitations should be supplied as an argument.
+ copy_languages Copies all languages from the supplied atom/language holder. Source should be overridden when you
+do not want the language overwritten by later atom updates or want to avoid blocked languages.
+ get_atom Gets the atom, since we some times need to check if the tongue has limitations.
+ get_random_spoken_language Gets a random spoken language, useful for forced speech and such.
+ get_random_understood_language Gets a random understood language, useful for hallucinations and such.
+ get_selected_language Returns selected language if it can be spoken, or decides, sets and returns a new selected language if possible.
+ grant_all_languages Grants every language to understood and spoken, and gives omnitongue.
+ grant_language Grants the supplied language.
+ has_language Checks if you have the language. If spoken is true, only checks if you can speak the language.
+ open_language_menu Opens a language menu reading from the language holder.
+ remove_all_languages Removes every language and optionally sets omnitongue false. If a non default source is supplied, only removes that source.
+ remove_blocked_language Removes a single language or list of languages from the blocked language list.
+ remove_language Removes a single language or source, removing all sources returns the pre-removal state of the language.
+ update_atom_languages Empties out the atom specific languages and updates them according to the supplied atoms language holder.
+ Var Details blocked_languages
+
+
+
+
+
+ A list of blocked languages. Used to prevent understanding and speaking certain languages, ie for certain mobs, mutations etc.
+ Handles displaying the language menu UI.
omnitongue
+
+
+
+
+
+ If true, overrides tongue limitations.
owner
+
+
+
+
+
+ Tracks the entity that owns the holder.
selected_language
+
+
+
+
+
+ Currently spoken language
spoken_languages
+
+
+
+
+
+ A list of languages that can be spoken. Tongue organ may also set limits beyond this list.
understood_languages
+
+
+
+
+
+ Understood languages.
Proc Details New(_owner)
+
+
+
+
+
+ Initializes, and copies in the languages from the current atom if available.
add_blocked_language(languages, source)
+
+
+
+
+
+ Adds a single language or list of languages to the blocked language list.
can_speak_language(language)
+
+
+
+
+
+ Checks if you can speak the language. Tongue limitations should be supplied as an argument.
copy_languages
+
+ Copies all languages from the supplied atom/language holder. Source should be overridden when you
+do not want the language overwritten by later atom updates or want to avoid blocked languages.
get_atom()
+
+
+
+
+
+ Gets the atom, since we some times need to check if the tongue has limitations.
get_random_spoken_language()
+
+
+
+
+
+ Gets a random spoken language, useful for forced speech and such.
get_random_understood_language()
+
+
+
+
+
+ Gets a random understood language, useful for hallucinations and such.
get_selected_language()
+
+
+
+
+
+ Returns selected language if it can be spoken, or decides, sets and returns a new selected language if possible.
grant_all_languages(understood, spoken, grant_omnitongue, source)
+
+
+
+
+
+ Grants every language to understood and spoken, and gives omnitongue.
grant_language(language, understood, spoken, source)
+
+
+
+
+
+ Grants the supplied language.
has_language(language, spoken)
+
+
+
+
+
+ Checks if you have the language. If spoken is true, only checks if you can speak the language.
+ Opens a language menu reading from the language holder.
remove_all_languages(source, remove_omnitongue)
+
+
+
+
+
+ Removes every language and optionally sets omnitongue false. If a non default source is supplied, only removes that source.
remove_blocked_language(languages, source)
+
+
+
+
+
+ Removes a single language or list of languages from the blocked language list.
remove_language(language, understood, spoken, source)
+
+
+
+
+
+ Removes a single language or source, removing all sources returns the pre-removal state of the language.
update_atom_languages
+
+ Empties out the atom specific languages and updates them according to the supplied atoms language holder.
+
+
+
diff --git a/datum/lift_master.html b/datum/lift_master.html
new file mode 100644
index 0000000000000..49a4343dd9cae
--- /dev/null
+++ b/datum/lift_master.html
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+ /datum/lift_master - SPLURT Station 13
+
+
+
+
+
+
+Collect and command
Procs
+ Check_lift_move Check destination turfs
+ MoveLift Moves the lift UP or DOWN, this is what users invoke with their hand.
+This is a SAFE proc, ensuring every part of the lift moves SANELY.
+It also locks controls for the (miniscule) duration of the movement, so the elevator cannot be broken by spamming.
+Arguments:
+going - UP or DOWN directions, where the lift should go. Keep in mind by this point checks of whether it should go up or down have already been done.
+user - Whomever made the lift movement.
+ MoveLiftHorizontal Moves the lift, this is what users invoke with their hand.
+This is a SAFE proc, ensuring every part of the lift moves SANELY.
+It also locks controls for the (miniscule) duration of the movement, so the elevator cannot be broken by spamming.
+ Rebuild_lift_plaform Collect all bordered platforms
+ set_controls Sets all lift parts's controls_locked variable. Used to prevent moving mid movement, or cooldowns.
Proc Details Check_lift_move(check_dir)
+
+
+
+
+
+ Check destination turfs
MoveLift(going, /mob /user)
+
+
+
+
+
+ Moves the lift UP or DOWN, this is what users invoke with their hand.
+This is a SAFE proc, ensuring every part of the lift moves SANELY.
+It also locks controls for the (miniscule) duration of the movement, so the elevator cannot be broken by spamming.
+Arguments:
+going - UP or DOWN directions, where the lift should go. Keep in mind by this point checks of whether it should go up or down have already been done.
+user - Whomever made the lift movement.
MoveLiftHorizontal(going, z)
+
+
+
+
+
+ Moves the lift, this is what users invoke with their hand.
+This is a SAFE proc, ensuring every part of the lift moves SANELY.
+It also locks controls for the (miniscule) duration of the movement, so the elevator cannot be broken by spamming.
+ Collect all bordered platforms
set_controls(state)
+
+
+
+
+
+ Sets all lift parts's controls_locked variable. Used to prevent moving mid movement, or cooldowns.
+
+
+
diff --git a/datum/lighting_object.html b/datum/lighting_object.html
new file mode 100644
index 0000000000000..89f4183483221
--- /dev/null
+++ b/datum/lighting_object.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ /datum/lighting_object - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ affected_turf the turf that our light is applied to
+ current_underlay the underlay we are currently applying to our turf to apply light
+ needs_update whether we are already in the SSlighting.objects_queue list
+ Var Details affected_turf
+
+
+
+
+
+ the turf that our light is applied to
current_underlay
+
+
+
+
+
+ the underlay we are currently applying to our turf to apply light
needs_update
+
+
+
+
+
+ whether we are already in the SSlighting.objects_queue list
+
+
+
diff --git a/datum/looping_sound.html b/datum/looping_sound.html
new file mode 100644
index 0000000000000..052de6db14328
--- /dev/null
+++ b/datum/looping_sound.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /datum/looping_sound - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details end_volume
+
+
+
+
+
+ Override for volume of end sound
start_volume
+
+
+
+
+
+ Override for volume of start sound
+
+
+
diff --git a/datum/mafia_controller.html b/datum/mafia_controller.html
new file mode 100644
index 0000000000000..12a012abc132b
--- /dev/null
+++ b/datum/mafia_controller.html
@@ -0,0 +1,555 @@
+
+
+
+
+
+
+ /datum/mafia_controller - SPLURT Station 13
+
+
+
+
+
+
+The mafia controller handles the mafia minigame in progress.
+It is first created when the first ghost signs up to play.
Vars
+ all_roles all roles in the game, dead or alive. check their game status if you only want living or dead.
+ current_map template picked when the game starts. used for the name and desc reading
+ current_setup_text Readable list of roles in current game, sent to the tgui panel for roles list > list("Psychologist x1", "Clown x2")
+ custom_setup for debugging and testing a full game, or adminbuse. If this is not empty, it will use this as a setup. clears when game is over
+ day_phase_period talk with others about the last night
+ debug used for debugging in testing (doesn't put people out of the game, some other shit i forgot, who knows just don't set this in live) honestly kinda deprecated
+ first_day_phase_period first day has no voting, and thus is shorter
+ judgement_abstain_votes and these (judgement_innocent_votes, judgement_abstain_votes and judgement_guilty_votes) are the judgement phase votes, aka people sorting themselves into guilty and innocent, and "eh, i don't really care" lists. whichever has more inno or guilty wins!
+ judgement_lynch_period guilty or innocent, we want a bit of time for players to process the outcome of the vote
+ judgement_phase_period defend yourself! don't get lynched! sometimes skipped if nobody votes.
+ landmarks spawn points for players, each one has a house
+ low_pop_mode Prioritizes clients to have cool antag roles
+ map_deleter map generation tool that deletes the current map after the game finishes
+ max_player Max player count
+ next_phase_timer current timer for phase
+ night_phase_period mafia talk at night and pick someone to kill, some town roles use their actions, etc etc.
+ on_trial current role on trial for the judgement phase, will die if guilty is greater than innocent
+ phase what part of the game you're playing in. day phases, night phases, judgement phases, etc.
+ player_outfit starting outfit for all mafia players. it's just a grey jumpsuit.
+ player_role_lookup exists to speed up role retrieval, it's a dict. player_role_lookup[player ckey]
will give you the role they play
+ required_player Required player count
+ spectators list of observers that should get game updates.
+ speed_up if enabled, the game has fallen under half pop and is sped up
+ town_center_landmark town center for when people get put on trial
+ turn how long the game has gone on for, changes with every sunrise. day one, night one, day two, etc.
+ victory_lap_period like the lynch period, players need to see what the other players in the game's roles were
+ votes group voting on one person, like putting people to trial or choosing who to kill as mafia
+ voting_phase_period vote someone to get put on trial Procs
+ add_setup_role Helper proc that adds a random role of a type to a setup. if it doesn't exist in the setup, it adds the path to the list and otherwise bumps the path in the list up one. unique roles can only get added once.
+ award_role PHASE ONE: TALLY UP ALL NUMBERS OF PEOPLE STILL ALIVE
+PHASE TWO: SEND STATS TO SOLO ANTAGS, SEE IF THEY WON OR TEAMS CANNOT WIN
+Lets the game award roles with all their checks and sanity, prevents achievements given out for debug games
+ basic_setup Called when enough players have signed up to fill a setup. DOESN'T NECESSARILY MEAN THE GAME WILL START.
+ check_signups Filters inactive player into a different list until they reconnect, and removes players who are no longer ghosts.
+ check_trial Players have voted someone up, and now the person must defend themselves while the town votes innocent or guilty.
+ check_victory Checks to see if a faction (or solo antagonist) has won.
+ create_bodies Called when the game is setting up, AFTER map is loaded but BEFORE the phase timers start. Creates and places each role's body and gives the correct player key
+ display_votes Adds mutable appearances to people who get publicly voted on (so not night votes) showing how many people are picking them
+Arguments:
+ end_game Cleans up the game, resetting variables back to the beginning and removing the map with the generator.
+ generate_random_setup Returns a semirandom setup with 12 roles. balance not guaranteed!
+ get_random_voter Returns a random person who voted for whatever vote (day vote, night kill vote)
+Arguments:
+ get_vote_count Returns how many people voted for the role, in whatever vote (day vote, night kill vote)
+Arguments:
+ get_vote_winner Returns whichever role got the most votes, in whatever vote (day vote, night kill vote)
+returns null if no votes
+Arguments:
+ lockdown After the voting and judgement phases, the game goes to night shutting the windows and beginning night with a proc.
+ lynch Players have voted innocent or guilty on the person on trial, and that person is now killed or returned home.
+ prepare_game Triggers at beginning of the game when there is a confirmed list of valid, ready players.
+Creates a 100% ready game that has NOT started (no players in bodies)
+Followed by start game
+ reset_votes Clears out the votes of a certain type (day votes, mafia kill votes) while leaving others untouched
+ resolve_night The end of the night, and a series of signals for the order of events on a night.
+ send_home Teenie helper proc to move players back to their home.
+Used in the above, but also used in the debug button "send all players home"
+Arguments:
+ start_day How every day starts.
+ start_game The game by this point is now all set up, and so we can put people in their bodies and start the first phase.
+ start_night The actual start of night for players. Mostly info is given at the start of the night as the end of the night is when votes and actions are submitted and tried.
+ start_the_end The end of the game is in two procs, because we want a bit of time for players to see eachothers roles.
+Because of how check_victory works, the game is halted in other places by this point.
+ start_voting_phase Players have finished the discussion period, and now must put up someone to the chopping block.
+ toggle_night_curtains Shuts poddoors attached to mafia.
+Arguments:
+ try_autostart Called when someone signs up, and sees if there are enough people in the signup list to begin.
+ vote_for Proc that goes off when players vote for something with their mafia panel.
+ Var Details all_roles
+
+
+
+
+
+ all roles in the game, dead or alive. check their game status if you only want living or dead.
+ template picked when the game starts. used for the name and desc reading
current_setup_text
+
+
+
+
+
+ Readable list of roles in current game, sent to the tgui panel for roles list > list("Psychologist x1", "Clown x2")
custom_setup
+
+
+
+
+
+ for debugging and testing a full game, or adminbuse. If this is not empty, it will use this as a setup. clears when game is over
day_phase_period
+
+
+
+
+
+ talk with others about the last night
debug
+
+
+
+
+
+ used for debugging in testing (doesn't put people out of the game, some other shit i forgot, who knows just don't set this in live) honestly kinda deprecated
first_day_phase_period
+
+
+
+
+
+ first day has no voting, and thus is shorter
judgement_abstain_votes
+
+
+
+
+
+ and these (judgement_innocent_votes, judgement_abstain_votes and judgement_guilty_votes) are the judgement phase votes, aka people sorting themselves into guilty and innocent, and "eh, i don't really care" lists. whichever has more inno or guilty wins!
judgement_lynch_period
+
+
+
+
+
+ guilty or innocent, we want a bit of time for players to process the outcome of the vote
judgement_phase_period
+
+
+
+
+
+ defend yourself! don't get lynched! sometimes skipped if nobody votes.
landmarks
+
+
+
+
+
+ spawn points for players, each one has a house
low_pop_mode
+
+
+
+
+
+ Prioritizes clients to have cool antag roles
map_deleter
+ – /datum /mapGenerator/massdelete
+
+
+
+
+ map generation tool that deletes the current map after the game finishes
max_player
+
+
+
+
+
+ Max player count
next_phase_timer
+
+
+
+
+
+ current timer for phase
night_phase_period
+
+
+
+
+
+ mafia talk at night and pick someone to kill, some town roles use their actions, etc etc.
+ current role on trial for the judgement phase, will die if guilty is greater than innocent
phase
+
+
+
+
+
+ what part of the game you're playing in. day phases, night phases, judgement phases, etc.
player_outfit
+
+
+
+
+
+ starting outfit for all mafia players. it's just a grey jumpsuit.
player_role_lookup
+
+
+
+
+
+ exists to speed up role retrieval, it's a dict. player_role_lookup[player ckey]
will give you the role they play
required_player
+
+
+
+
+
+ Required player count
spectators
+
+
+
+
+
+ list of observers that should get game updates.
speed_up
+
+
+
+
+
+ if enabled, the game has fallen under half pop and is sped up
town_center_landmark
+
+
+
+
+
+ town center for when people get put on trial
turn
+
+
+
+
+
+ how long the game has gone on for, changes with every sunrise. day one, night one, day two, etc.
victory_lap_period
+
+
+
+
+
+ like the lynch period, players need to see what the other players in the game's roles were
votes
+
+
+
+
+
+ group voting on one person, like putting people to trial or choosing who to kill as mafia
voting_phase_period
+
+
+
+
+
+ vote someone to get put on trial
Proc Details add_setup_role(setup_list, banned_roles, wanted_role_type)
+
+
+
+
+
+ Helper proc that adds a random role of a type to a setup. if it doesn't exist in the setup, it adds the path to the list and otherwise bumps the path in the list up one. unique roles can only get added once.
award_role
+
+ PHASE ONE: TALLY UP ALL NUMBERS OF PEOPLE STILL ALIVE
+PHASE TWO: SEND STATS TO SOLO ANTAGS, SEE IF THEY WON OR TEAMS CANNOT WIN
+Lets the game award roles with all their checks and sanity, prevents achievements given out for debug games
+Arguments:
+
+award: path of the award
+role: mafia_role datum to reward.
+ basic_setup()
+
+
+
+
+
+ Called when enough players have signed up to fill a setup. DOESN'T NECESSARILY MEAN THE GAME WILL START.
+Checks for a custom setup, if so gets the required players from that and if not it sets the player requirement to MAFIA_MAX_PLAYER_COUNT and generates one IF basic setup starts a game.
+Checks if everyone signed up is an observer, and is still connected. If people aren't, they're removed from the list.
+If there aren't enough players post sanity, it aborts. otherwise, it selects enough people for the game and starts preparing the game for real.
check_signups()
+
+
+
+
+
+ Filters inactive player into a different list until they reconnect, and removes players who are no longer ghosts.
+If a disconnected player gets a non-ghost mob and reconnects, they will be first put back into mafia_signup then filtered by that.
check_trial(verbose)
+
+
+
+
+
+ Players have voted someone up, and now the person must defend themselves while the town votes innocent or guilty.
+What players do in this phase:
+
+Vote innocent or guilty, if they are not on trial.
+Defend themselves and wait for judgement, if they are.
+Leads to the lynch phase.
+Arguments:
+verbose: boolean, announces whether there were votes or not. after judgement it goes back here with no voting period to end the day.
+ check_victory()
+
+
+
+
+
+ Checks to see if a faction (or solo antagonist) has won.
+Calculates in this order:
+
+counts up town, mafia, and solo
+solos can count as town members for the purposes of mafia winning
+sends the amount of living people to the solo antagonists, and see if they won OR block the victory of the teams
+checks if solos won from above, then if town, then if mafia
+starts the end of the game if a faction won
+returns TRUE if someone won the game, halting other procs from continuing in the case of a victory
+ create_bodies()
+
+
+
+
+
+ Called when the game is setting up, AFTER map is loaded but BEFORE the phase timers start. Creates and places each role's body and gives the correct player key
+Notably:
+
+Toggles godmode so the mafia players cannot kill themselves
+Adds signals for voting overlays, see display_votes proc
+gives mafia panel
+sends the greeting text (goals, role name, etc)
+ display_votes(/atom /source, /list/overlay_list)
+
+
+
+
+
+ Adds mutable appearances to people who get publicly voted on (so not night votes) showing how many people are picking them
+Arguments:
+
+source: the body of the role getting the overlays
+overlay_list: signal var passing the overlay list of the mob
+ end_game()
+
+
+
+
+
+ Cleans up the game, resetting variables back to the beginning and removing the map with the generator.
generate_random_setup()
+
+
+
+
+
+ Returns a semirandom setup with 12 roles. balance not guaranteed!
+please check the variables at the top of the proc to see how much of each role types it picks
get_random_voter(vote_type)
+
+
+
+
+
+ Returns a random person who voted for whatever vote (day vote, night kill vote)
+Arguments:
+
+vote_type: vote type (getting a random day voter, or mafia night voter)
+ get_vote_count(role, vote_type)
+
+
+
+
+
+ Returns how many people voted for the role, in whatever vote (day vote, night kill vote)
+Arguments:
+
+role: the mafia role the proc tries to get the amount of votes for
+vote_type: the vote type (getting how many day votes were for the role, or mafia night votes for the role)
+ get_vote_winner(vote_type)
+
+
+
+
+
+ Returns whichever role got the most votes, in whatever vote (day vote, night kill vote)
+returns null if no votes
+Arguments:
+
+vote_type: the vote type (getting the role that got the most day votes, or the role that got the most mafia votes)
+ lockdown()
+
+
+
+
+
+ After the voting and judgement phases, the game goes to night shutting the windows and beginning night with a proc.
lynch()
+
+
+
+
+
+ Players have voted innocent or guilty on the person on trial, and that person is now killed or returned home.
+What players do in this phase:
+
+r/watchpeopledie
+If the accused is killed, their true role is revealed to the rest of the players.
+ prepare_game(setup_list, ready_players)
+
+
+
+
+
+ Triggers at beginning of the game when there is a confirmed list of valid, ready players.
+Creates a 100% ready game that has NOT started (no players in bodies)
+Followed by start game
+Does the following:
+
+Picks map, and loads it
+Grabs landmarks if it is the first time it's loading
+Sets up the role list
+Puts players in each role randomly
+Arguments:
+setup_list: list of all the datum setups (fancy list of roles) that would work for the game
+ready_players: list of filtered, sane players (so not playing or disconnected) for the game to put into roles
+ reset_votes(vote_type)
+
+
+
+
+
+ Clears out the votes of a certain type (day votes, mafia kill votes) while leaving others untouched
resolve_night()
+
+
+
+
+
+ The end of the night, and a series of signals for the order of events on a night.
+Order of events, and what they mean:
+
+Start of resolve (NIGHT_START) is for activating night abilities that MUST go first
+Action phase (NIGHT_ACTION_PHASE) is for non-lethal day abilities
+Mafia then tallies votes and kills the highest voted person (note: one random voter visits that person for the purposes of roleblocking)
+Killing phase (NIGHT_KILL_PHASE) is for lethal night abilities
+End of resolve (NIGHT_END) is for cleaning up abilities that went off and i guess doing some that must go last
+Finally opens the curtains and calls the start of day phase, completing the cycle until check victory returns TRUE
+
+ Teenie helper proc to move players back to their home.
+Used in the above, but also used in the debug button "send all players home"
+Arguments:
+
+role: mafia role that is getting sent back to the game.
+ start_day()
+
+
+
+
+
+ How every day starts.
+What players do in this phase:
+
+If day one, just a small starting period to see who is in the game and check role, leading to the night phase.
+Otherwise, it's a longer period used to discuss events that happened during the night, leading to the voting phase.
+ start_game()
+
+
+
+
+
+ The game by this point is now all set up, and so we can put people in their bodies and start the first phase.
+Does the following:
+
+Creates bodies for all of the roles with the first proc
+Starts the first day manually (so no timer) with the second proc
+ start_night()
+
+
+
+
+
+ The actual start of night for players. Mostly info is given at the start of the night as the end of the night is when votes and actions are submitted and tried.
+What players do in this phase:
+
+Mafia are told to begin voting on who to kill
+Powers that are picked during the day announce themselves right now
+ start_the_end(message)
+
+
+
+
+
+ The end of the game is in two procs, because we want a bit of time for players to see eachothers roles.
+Because of how check_victory works, the game is halted in other places by this point.
+What players do in this phase:
+
+See everyone's role postgame
+See who won the game
+Arguments:
+message: string, if non-null it sends it to all players. used to announce team victories while solos are handled in check victory
+ start_voting_phase()
+
+
+
+
+
+ Players have finished the discussion period, and now must put up someone to the chopping block.
+What players do in this phase:
+
+Vote on which player to put up for lynching, leading to the judgement phase.
+If no votes are case, the judgement phase is skipped, leading to the night phase.
+ toggle_night_curtains(close)
+
+
+
+
+
+ Shuts poddoors attached to mafia.
+Arguments:
+
+close: boolean, the state you want the curtains in.
+ try_autostart()
+
+
+
+
+
+ Called when someone signs up, and sees if there are enough people in the signup list to begin.
+Only checks if everyone is actually valid to start (still connected and an observer) if there are enough players (basic_setup)
+ Proc that goes off when players vote for something with their mafia panel.
+If teams, it hides the tally overlay and only sends the vote messages to the team that is voting
+Arguments:
+
+voter: the mafia role that is trying to vote for...
+target: the mafia role that is getting voted for
+vote_type: type of vote submitted (is this the day vote? is this the mafia night vote?)
+teams: see mafia team defines for what to put in, makes the messages only send to a specific team (so mafia night votes only sending messages to mafia at night)
+
+
+
+
diff --git a/datum/mafia_role.html b/datum/mafia_role.html
new file mode 100644
index 0000000000000..555be1e9bec37
--- /dev/null
+++ b/datum/mafia_role.html
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+ /datum/mafia_role - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ actions action = uses
+ game_status so mafia have to also kill them to have a majority
+ hud_icon icon state in the mafia dmi of the hud of the role, used in the mafia ui
+ revealed_icon icon state in the mafia dmi of the hud of the role, used in the mafia ui
+ revealed_outfit what they get equipped with when they are revealed
+ role_flags role flags (special status of roles like detection immune)
+ role_type how the random setup chooses which roles get put in
+ special_theme set this to something cool for antagonists and their window will look different
+ vote_potential how many votes your role COULD count for, now or later. used in checking victory
+ vote_power how many votes submitted when you vote. used in voting, but not victory
+ winner_award what the role gets when it wins a game Procs
+ can_action Tests if a visitor can actually perform an action on this role. Verbose on purpose!
+ kill Tests kill immunities, if nothing prevents the kill, kills this role.
+ Var Details actions
+
+
+
+
+
+ action = uses
game_status
+
+
+
+
+
+ so mafia have to also kill them to have a majority
hud_icon
+
+
+
+
+
+ icon state in the mafia dmi of the hud of the role, used in the mafia ui
revealed_icon
+
+
+
+
+
+ icon state in the mafia dmi of the hud of the role, used in the mafia ui
revealed_outfit
+
+
+
+
+
+ what they get equipped with when they are revealed
role_flags
+
+
+
+
+
+ role flags (special status of roles like detection immune)
role_type
+
+
+
+
+
+ how the random setup chooses which roles get put in
special_theme
+
+
+
+
+
+ set this to something cool for antagonists and their window will look different
vote_potential
+
+
+
+
+
+ how many votes your role COULD count for, now or later. used in checking victory
vote_power
+
+
+
+
+
+ how many votes submitted when you vote. used in voting, but not victory
winner_award
+
+
+
+
+
+ what the role gets when it wins a game
Proc Details
+ Tests if a visitor can actually perform an action on this role. Verbose on purpose!
+Will return false if: Your visit is roleblocked, they have perished, or your visit was interrupted
+ Tests kill immunities, if nothing prevents the kill, kills this role.
+Does not count as visiting, see visit proc.
+
+
+
diff --git a/datum/map_config.html b/datum/map_config.html
new file mode 100644
index 0000000000000..a04fd2f9ea4a4
--- /dev/null
+++ b/datum/map_config.html
@@ -0,0 +1,99 @@
+
+
+
+
+
+
+ /datum/map_config - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details job_access_add
+
+
+
+
+
+ Add these accesses to jobs - type = list()
job_access_override
+
+
+
+
+
+ Override job accesses - type = list() - overrides everything else
job_access_remove
+
+
+
+
+
+ Remove these accesses from jobs - type = list()
job_blacklist
+
+
+
+
+
+ Jobs blacklist - if this is not empty, jobs in this aren't allowed.
job_override_spawn_positions
+
+
+
+
+
+ Job spawn position mod - type = number
job_override_total_positions
+
+
+
+
+
+ Job total position mod - type = number
job_whitelist
+
+
+
+
+
+ Jobs whitelist - if this is not empty, ONLY these jobs are allowed. Overrides blacklist.
orientation
+
+
+
+
+
+ Orientation to load in by default.
persistence_key
+
+
+
+
+
+ Persistence key: Defaults to ckey(map_name). If set to "NO_PERSIST", this map will have NO persistence.
Proc Details WriteNextMap()
+
+
+
+
+
+ badmin moments. Keep up to date with LoadConfig()!
+
+
+
diff --git a/datum/map_generator.html b/datum/map_generator.html
new file mode 100644
index 0000000000000..56936dfb6e344
--- /dev/null
+++ b/datum/map_generator.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /datum/map_generator - SPLURT Station 13
+
+
+
+
+
+
+This type is responsible for any map generation behavior that is done in areas, override this to allow for area-specific map generation. This generation is ran by areas in initialize.
Procs
+ generate_terrain This proc will be ran by areas on Initialize, and provides the areas turfs as argument to allow for generation.
Proc Details generate_terrain(/list/turfs)
+
+
+
+
+
+ This proc will be ran by areas on Initialize, and provides the areas turfs as argument to allow for generation.
+
+
+
diff --git a/datum/map_generator/cave_generator.html b/datum/map_generator/cave_generator.html
new file mode 100644
index 0000000000000..e08f79ea262ff
--- /dev/null
+++ b/datum/map_generator/cave_generator.html
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+ /datum/map_generator/cave_generator - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details birth_limit
+
+
+
+
+
+ How much neighbours does a dead cell need to become alive
closed_turf_types
+
+
+
+
+
+ Weighted list of the types that spawns if the turf is closed
death_limit
+
+
+
+
+
+ How little neighbours does a alive cell need to die
feature_spawn_chance
+
+
+
+
+
+ Base chance of spawning features
feature_spawn_list
+
+
+
+
+
+ Weighted list of extra features that can spawn in the area, such as geysers.
flora_spawn_chance
+
+
+
+
+
+ Base chance of spawning flora
flora_spawn_list
+
+
+
+
+
+ Weighted list of flora that can spawn in the area.
initial_closed_chance
+
+
+
+
+
+ Chance of cells starting closed
mob_spawn_chance
+
+
+
+
+
+ Base chance of spawning a mob
mob_spawn_list
+
+
+
+
+
+ Weighted list of mobs that can spawn in the area.
open_turf_types
+
+
+
+
+
+ Weighted list of the types that spawns if the turf is open
smoothing_iterations
+
+
+
+
+
+ Amount of smoothing iterations
string_gen
+
+
+
+
+
+ Unique ID for this spawner
+
+
+
diff --git a/datum/map_generator/jungle_generator.html b/datum/map_generator/jungle_generator.html
new file mode 100644
index 0000000000000..8d98137d36302
--- /dev/null
+++ b/datum/map_generator/jungle_generator.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ /datum/map_generator/jungle_generator - SPLURT Station 13
+
+
+
+
+
+
+Spawning isn't done in procs to save on overhead on the 60k turfs we're going through.
Vars
+ perlin_zoom Used to select "zoom" level into the perlin noise, higher numbers result in slower transitions
+ possible_biomes 2D list of all biomes based on heat and humidity combos. Procs
+ generate_terrain Seeds the rust-g perlin noise with a random number.
+ Var Details perlin_zoom
+
+
+
+
+
+ Used to select "zoom" level into the perlin noise, higher numbers result in slower transitions
possible_biomes
+
+
+
+
+
+ 2D list of all biomes based on heat and humidity combos.
Proc Details generate_terrain(/list/turfs)
+
+
+
+
+
+ Seeds the rust-g perlin noise with a random number.
+
+
+
diff --git a/datum/map_report.html b/datum/map_report.html
new file mode 100644
index 0000000000000..ad32f15e36166
--- /dev/null
+++ b/datum/map_report.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /datum/map_report - SPLURT Station 13
+
+
+
+
+
+
+An error report generated by /datum/parsed_map/proc/check_for_errors .
Vars
+ loadable Whether this map can be loaded safely despite the errors. Procs
+ show_to Show a rendered version of this report to a client.
+ Var Details loadable
+
+
+
+
+
+ Whether this map can be loaded safely despite the errors.
Proc Details show_to
+
+ Show a rendered version of this report to a client.
+
+
+
diff --git a/datum/map_template.html b/datum/map_template.html
new file mode 100644
index 0000000000000..eb41c73974d17
--- /dev/null
+++ b/datum/map_template.html
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+ /datum/map_template - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ discover_offset Takes in a type path, locates an instance of that type in the cached map, and calculates its offset from the origin of the map, returns this offset in the form list(x, y).
+ load Proc to trigger a load at a specific area. Calls on_map_loaded(T.z, loaded_bounds) afterwards.
Proc Details discover_offset(/obj /marker)
+
+
+
+
+
+ Takes in a type path, locates an instance of that type in the cached map, and calculates its offset from the origin of the map, returns this offset in the form list(x, y).
load(/turf /T, centered, orientation, annihilate, force_cache, rotate_placement_to_orientation)
+
+
+
+
+
+ Proc to trigger a load at a specific area. Calls on_map_loaded(T.z, loaded_bounds) afterwards.
+@params
+
+turf/T - Turf to load at
+centered - Center at T or load with the bottomright corner being at T
+orientation - SOUTH is default, anything else rotates the map to face it with the point of reference being the map itself is facing south by default. Cardinals only, don't be a 4head and put in multiple flags. It won't work or be pretty if you try.
+annihilate - Should we destroy stuff in our bounds while loading
+force_cache - Should we force the parsed shuttle to cache instead of being GC'd post loading if it wasn't going to be cached by default
+rotate_placement_to_orientation - Has no effect if centered. Should we rotate where we load it around the turf we're loading at? Used for stuff like engine submaps when the station is rotated.
+
+
+
+
diff --git a/datum/map_template/shuttle.html b/datum/map_template/shuttle.html
new file mode 100644
index 0000000000000..3913302f310d6
--- /dev/null
+++ b/datum/map_template/shuttle.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ /datum/map_template/shuttle - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ can_be_bought Can the be legitimately purchased by the station? Used by hardcoded or pre-mapped shuttles like the lavaland or cargo shuttle.
+ credit_cost How much does this shuttle cost the cargo budget to purchase? Put in terms of CARGO_CRATE_VALUE to properly scale the cost with the current balance of cargo's income.
+ movement_force If set, overrides default movement_force on shuttle
+ Var Details can_be_bought
+
+
+
+
+
+ Can the be legitimately purchased by the station? Used by hardcoded or pre-mapped shuttles like the lavaland or cargo shuttle.
credit_cost
+
+
+
+
+
+ How much does this shuttle cost the cargo budget to purchase? Put in terms of CARGO_CRATE_VALUE to properly scale the cost with the current balance of cargo's income.
movement_force
+
+
+
+
+
+ If set, overrides default movement_force on shuttle
+
+
+
diff --git a/datum/map_template/shuttle/emergency/narnar.html b/datum/map_template/shuttle/emergency/narnar.html
new file mode 100644
index 0000000000000..0fb676665224d
--- /dev/null
+++ b/datum/map_template/shuttle/emergency/narnar.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /datum/map_template/shuttle/emergency/narnar - SPLURT Station 13
+
+
+
+
+
+
+Proc Details prerequisites_met()
+
+
+
+
+
+ The joke is the number so no defines
+
+
+
diff --git a/datum/martial_art.html b/datum/martial_art.html
new file mode 100644
index 0000000000000..bfe813d675f54
--- /dev/null
+++ b/datum/martial_art.html
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+ /datum/martial_art - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ block_parry_data Set this variable to something not null, this'll be the preferred unarmed parry in most cases if [can_martial_parry] is TRUE. YOU MUST RUN [get_block_parry_data(this)] INSTEAD OF DIRECTLY ACCESSING!
+ can_martial_parry Can we be used to unarmed parry? Procs
+ active_parry_reflex_counter Called when an attack is parried and block_parra_data indicates to use a proc to handle counterattack.
+ on_active_parry Called when an attack is parried using this, whether or not the parry was successful.
+ on_projectile_hit Gets called when a projectile hits the owner. Returning anything other than BULLET_ACT_HIT will stop the projectile from hitting the mob.
+ Var Details
+ Set this variable to something not null, this'll be the preferred unarmed parry in most cases if [can_martial_parry] is TRUE. YOU MUST RUN [get_block_parry_data(this)] INSTEAD OF DIRECTLY ACCESSING!
can_martial_parry
+
+
+
+
+
+ Can we be used to unarmed parry?
Proc Details active_parry_reflex_counter(/mob /living /owner, /atom /object, damage, attack_text, attack_type, armour_penetration, /mob /attacker, def_zone, /list/return_list, parry_efficiency, /list/effect_text)
+
+
+
+
+
+ Called when an attack is parried and block_parra_data indicates to use a proc to handle counterattack.
on_active_parry(/mob /living /owner, /atom /object, damage, attack_text, attack_type, armour_penetration, /mob /attacker, def_zone, /list/block_return, parry_efficiency, parry_time, autoparry)
+
+
+
+
+
+ Called when an attack is parried using this, whether or not the parry was successful.
+ Gets called when a projectile hits the owner. Returning anything other than BULLET_ACT_HIT will stop the projectile from hitting the mob.
+
+
+
diff --git a/datum/martial_art/cqc/blueshield.html b/datum/martial_art/cqc/blueshield.html
new file mode 100644
index 0000000000000..adace625ba60f
--- /dev/null
+++ b/datum/martial_art/cqc/blueshield.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /datum/martial_art/cqc/blueshield - SPLURT Station 13
+
+
+
+
+
+
+Subtype of CQC. Only used for the Blueshit.
Procs
+ can_use Prevents use if the Blueshit is not on the bridge or the captain'soffice .
Proc Details can_use
+
+ Prevents use if the Blueshit is not on the bridge or the captain'soffice .
+
+
+
diff --git a/datum/martial_art/cqc/under_siege.html b/datum/martial_art/cqc/under_siege.html
new file mode 100644
index 0000000000000..65f550ee75e9a
--- /dev/null
+++ b/datum/martial_art/cqc/under_siege.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /datum/martial_art/cqc/under_siege - SPLURT Station 13
+
+
+
+
+
+
+Subtype of CQC. Only used for the chef.
Procs
+ can_use Prevents use if the cook is not in the kitchen.
Proc Details can_use
+
+ Prevents use if the cook is not in the kitchen.
+
+
+
diff --git a/datum/martial_art/the_sleeping_carp.html b/datum/martial_art/the_sleeping_carp.html
new file mode 100644
index 0000000000000..6aa918508e733
--- /dev/null
+++ b/datum/martial_art/the_sleeping_carp.html
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+ /datum/martial_art/the_sleeping_carp - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ dropKick Keelhaul: Harm Grab combo, knocks people down, deals stamina damage while they're on the floor
+ launchKick this var is so that the strong punch is always aiming for the body part the user is targeting and not trying to apply to the chest before deviating
+this is the critical hit damage added to the attack if it rolls, it starts at 0 because it'll be changed when rolled
+Crashing Wave Kick: Harm Disarm combo, throws people seven tiles backwards
+ strongPunch Gnashing Teeth: Harm Harm, high force punch on every second harm punch, has a chance to crit for near triple damage
Proc Details
+ Keelhaul: Harm Grab combo, knocks people down, deals stamina damage while they're on the floor
+ this var is so that the strong punch is always aiming for the body part the user is targeting and not trying to apply to the chest before deviating
+this is the critical hit damage added to the attack if it rolls, it starts at 0 because it'll be changed when rolled
+Crashing Wave Kick: Harm Disarm combo, throws people seven tiles backwards
+ Gnashing Teeth: Harm Harm, high force punch on every second harm punch, has a chance to crit for near triple damage
+
+
+
diff --git a/datum/material.html b/datum/material.html
new file mode 100644
index 0000000000000..ff83e07748442
--- /dev/null
+++ b/datum/material.html
@@ -0,0 +1,237 @@
+
+
+
+
+
+
+ /datum/material - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ alpha Base alpha of the material, is used for greyscale icons.
+ armor_modifiers Armor modifiers, multiplies an items normal armor vars by these amounts.
+ beauty_modifier How beautiful is this material per unit.
+ cached_texture_filter a cached icon for the texture filter
+ categories Bitflags that influence how SSmaterials handles this material.
+Materials "Traits". its a map of key = category | Value = Bool. Used to define what it can be used for
+ color Base color of the material, is used for greyscale. Item isn't changed in color if this is null.
+ desc A short description of the material. Not used anywhere, yet...
+ id What the material is indexed by in the SSmaterials.materials list. Defaults to the type of the material.
+ integrity_modifier This is a modifier for integrity, and resembles the strength of the material
+ item_sound_override Can be used to override the sound items make, lets add some SLOSHing.
+ name What the material is referred to as IC.
+ shard_type What type of shard the material will shatter to
+ sheet_type The type of sheet this material creates. This should be replaced as soon as possible by greyscale sheets
+ strength_modifier This is a modifier for force, and resembles the strength of the material
+ texture_layer_icon_state what texture icon state to overlay
+ turf_sound_override Can be used to override the stepsound a turf makes. MORE SLOOOSH
+ value_per_unit This is the amount of value per 1 unit of the material Procs
+ Initialize
+ on_accidental_mat_consumption This proc is called when the mat is found in an item that's consumed by accident. see /obj/item/proc/on_accidental_consumption.
+Arguments
+ on_applied This proc is called when the material is added to an object.
+ on_applied_obj This proc is called when the material is added to an object specifically.
+ on_removed This proc is called when the material is removed from an object.
+ on_removed_obj This proc is called when the material is removed from an object specifically.
+ return_composition
+ Var Details alpha
+
+
+
+
+
+ Base alpha of the material, is used for greyscale icons.
armor_modifiers
+
+
+
+
+
+ Armor modifiers, multiplies an items normal armor vars by these amounts.
beauty_modifier
+
+
+
+
+
+ How beautiful is this material per unit.
cached_texture_filter
+
+
+
+
+
+ a cached icon for the texture filter
categories
+
+
+
+
+
+ Bitflags that influence how SSmaterials handles this material.
+Materials "Traits". its a map of key = category | Value = Bool. Used to define what it can be used for
color
+
+
+
+
+
+ Base color of the material, is used for greyscale. Item isn't changed in color if this is null.
desc
+
+
+
+
+
+ A short description of the material. Not used anywhere, yet...
id
+
+
+
+
+
+ What the material is indexed by in the SSmaterials.materials list. Defaults to the type of the material.
integrity_modifier
+
+
+
+
+
+ This is a modifier for integrity, and resembles the strength of the material
item_sound_override
+
+
+
+
+
+ Can be used to override the sound items make, lets add some SLOSHing.
name
+
+
+
+
+
+ What the material is referred to as IC.
shard_type
+
+
+
+
+
+ What type of shard the material will shatter to
sheet_type
+
+
+
+
+
+ The type of sheet this material creates. This should be replaced as soon as possible by greyscale sheets
strength_modifier
+
+
+
+
+
+ This is a modifier for force, and resembles the strength of the material
texture_layer_icon_state
+
+
+
+
+
+ what texture icon state to overlay
turf_sound_override
+
+
+
+
+
+ Can be used to override the stepsound a turf makes. MORE SLOOOSH
value_per_unit
+
+
+
+
+
+ This is the amount of value per 1 unit of the material
Proc Details Initialize(_id, ...)
+
+
+
+
+
+ on_accidental_mat_consumption
+
+ This proc is called when the mat is found in an item that's consumed by accident. see /obj/item/proc/on_accidental_consumption.
+Arguments
+
+M - person consuming the mat
+S - (optional) item the mat is contained in (NOT the item with the mat itself)
+ on_applied(/atom /source, amount, material_flags)
+
+
+
+
+
+ This proc is called when the material is added to an object.
on_applied_obj(/obj /o, amount, material_flags)
+
+
+
+
+
+ This proc is called when the material is added to an object specifically.
on_removed(/atom /source, amount, material_flags)
+
+
+
+
+
+ This proc is called when the material is removed from an object.
on_removed_obj(/obj /o, amount, material_flags)
+
+
+
+
+
+ This proc is called when the material is removed from an object specifically.
return_composition(amount, breakdown_flags)
+
+
+
+
+
+
+
+
+
diff --git a/datum/mind.html b/datum/mind.html
new file mode 100644
index 0000000000000..97e41e415efdd
--- /dev/null
+++ b/datum/mind.html
@@ -0,0 +1,169 @@
+
+
+
+
+
+
+ /datum/mind - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details ambitions
+
+
+
+
+
+ Lazy list for antagonists to set goals they wish to achieve, to be shown at the round-end report.
has_ever_been_ai
+
+
+
+
+
+ has this mind ever been an AI
original_character
+
+
+
+
+
+ Weakref to the character we spawned in as- either at roundstart or latejoin, so we know for persistent scars if we ended as the same person or not
+ Our skill holder.
special_statuses
+
+
+
+
+
+ A lazy list of statuses to add next to this mind in the traitor panel
Proc Details action_skill_mod(skill, value, threshold, modifier_is_multiplier)
+
+
+
+
+
+ Generic value modifier proc that uses one skill.
+Args:
+
+value : the value to modify, may be a delay, damage, probability.
+threshold : The difficulty of the action, in short. Refer to __DEFINES/skills/defines.dm for the defines.
+modifier_is_multiplier : wheter the modifier is a multiplier or a divisor.
+ auto_gain_experience(skill, value, maximum, silent)
+
+
+
+
+
+ Automatic skill increase, multiplied by skill affinity if existing.
+Only works if skill is numerical or levelled..
boost_skill_value_to(skill, value, silent, current)
+
+
+
+
+
+ Boosts a skill to a value if not aobve
equip_traitor
+
+ give_uplink
+A mind proc for giving anyone an uplink.
+arguments:
+
+silent: if this should send a message to the mind getting the uplink. traitors do not use this silence, but the silence var on their antag datum.
+antag_datum: the antag datum of the uplink owner, for storing it in antag memory. optional!
+ get_hijack_speed()
+
+
+
+
+
+ Sets our can_hijack to the fastest speed our antag datums allow.
get_skill_affinity(skill, apply_modifiers)
+
+
+
+
+
+ Grabs our affinity for a skill. !!This is a multiplier!!
get_skill_level(skill, apply_modifiers, round)
+
+
+
+
+
+ Grabs the level of a skill. Only supported by skills with tiers or levels.
get_skill_value(skill, apply_modifiers)
+
+
+
+
+
+ Grabs the value of a skill.
item_action_skills_mod(/obj /item /I, value, traits, bad_traits, modifier_is_multiplier)
+
+
+
+
+
+ Generic value modifier proc that uses several skills, intended for items.
+Args:
+
+item/I : the item used in this action. its used_skills list variable contains the skills exercised with it.
+value : the value to modify, may be a delay, damage, probability.
+traits : the required traits each skill (either in I.used_skills or the skill datum skill_traits) must have to influence
+
+ the value.
+
+
+bad_traits : the opposite of the above.
+modifier_is_multiplier : wheter the modifier is a multiplier or a divisor.
+
+ Remove the antagonists that should not persist when being borged
set_skill_value(skill, value, silent)
+
+
+
+
+
+ Sets the value of a skill.
+
+
+
diff --git a/datum/mod_theme.html b/datum/mod_theme.html
new file mode 100644
index 0000000000000..70a998f16c77e
--- /dev/null
+++ b/datum/mod_theme.html
@@ -0,0 +1,162 @@
+
+
+
+
+
+
+ /datum/mod_theme - SPLURT Station 13
+
+
+
+
+
+
+MODsuit theme, instanced once and then used by MODsuits to grab various statistics.
+ Var Details allowed
+
+
+
+
+
+ Allowed items in the chestplate's suit storage.
armor
+
+
+
+
+
+ Armor shared across the MOD pieces.
cell_drain
+
+
+
+
+
+ How much battery power the MOD uses by just being on
complexity_max
+
+
+
+
+
+ How much modules can the MOD carry without malfunctioning.
default_skin
+
+
+
+
+
+ Default skin of the MOD.
desc
+
+
+
+
+
+ Description added to the MOD.
extended_desc
+
+
+
+
+
+ Extended description on examine_more
inbuilt_modules
+
+
+
+
+
+ List of inbuilt modules. These are different from the pre-equipped suits, you should mainly use these for unremovable modules with 0 complexity.
max_heat_protection_temperature
+
+
+
+
+
+ Max heat protection shared across the MOD pieces.
min_cold_protection_temperature
+
+
+
+
+
+ Max cold protection shared across the MOD pieces.
module_blacklist
+
+
+
+
+
+ Modules blacklisted from the MOD.
name
+
+
+
+
+
+ Theme name for the MOD.
permeability_coefficient
+
+
+
+
+
+ Permeability shared across the MOD pieces.
resistance_flags
+
+
+
+
+
+ Resistance flags shared across the MOD pieces.
siemens_coefficient
+
+
+
+
+
+ Siemens shared across the MOD pieces.
skins
+
+
+
+
+
+ List of skins with their appropriate clothing flags.
slowdown_active
+
+
+
+
+
+ Slowdown of the MOD when active.
slowdown_inactive
+
+
+
+
+
+ Slowdown of the MOD when not active.
ui_theme
+
+
+
+
+
+ Theme used by the MOD TGUI.
+
+
+
diff --git a/datum/mood_event.html b/datum/mood_event.html
new file mode 100644
index 0000000000000..5663d090fed8f
--- /dev/null
+++ b/datum/mood_event.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /datum/mood_event - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ mood_change For descriptions, use the span classes bold nicegreen, nicegreen, none, warning and boldwarning in order from great to horrible.
+ Var Details mood_change
+
+
+
+
+
+ For descriptions, use the span classes bold nicegreen, nicegreen, none, warning and boldwarning in order from great to horrible.
+
+
+
diff --git a/datum/movespeed_modifier.html b/datum/movespeed_modifier.html
new file mode 100644
index 0000000000000..fedff7491568f
--- /dev/null
+++ b/datum/movespeed_modifier.html
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+ /datum/movespeed_modifier - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ absolute_max_tiles_per_second Absolute max tiles we can boost to
+ blacklisted_movetypes Movetypes this never applies to
+ complex_calculation Next two variables depend on this: Should we do advanced calculations?
+ conflicts_with Other modification datums this conflicts with.
+ id Unique ID. You can never have different modifications with the same ID. By default, this SHOULD NOT be set. Only set it for cases where you're dynamically making modifiers/need to have two types overwrite each other. If unset, uses path (converted to text) as ID.
+ max_tiles_per_second_boost Max tiles per second we can boost
+ movetypes Movetypes this applies to
+ multiplicative_slowdown Multiplicative slowdown
+ priority Determines order. Lower priorities are applied first.
+ variable Whether or not this is a variable modifier. Variable modifiers can NOT be ever auto-cached. ONLY CHECKED VIA INITIAL(), EFFECTIVELY READ ONLY (and for very good reason) Procs
+ apply_multiplicative Returns new multiplicative movespeed after modification.
+ Var Details absolute_max_tiles_per_second
+
+
+
+
+
+ Absolute max tiles we can boost to
blacklisted_movetypes
+
+
+
+
+
+ Movetypes this never applies to
complex_calculation
+
+
+
+
+
+ Next two variables depend on this: Should we do advanced calculations?
conflicts_with
+
+
+
+
+
+ Other modification datums this conflicts with.
id
+
+
+
+
+
+ Unique ID. You can never have different modifications with the same ID. By default, this SHOULD NOT be set. Only set it for cases where you're dynamically making modifiers/need to have two types overwrite each other. If unset, uses path (converted to text) as ID.
max_tiles_per_second_boost
+
+
+
+
+
+ Max tiles per second we can boost
movetypes
+
+
+
+
+
+ Movetypes this applies to
multiplicative_slowdown
+
+
+
+
+
+ Multiplicative slowdown
priority
+
+
+
+
+
+ Determines order. Lower priorities are applied first.
variable
+
+
+
+
+
+ Whether or not this is a variable modifier. Variable modifiers can NOT be ever auto-cached. ONLY CHECKED VIA INITIAL(), EFFECTIVELY READ ONLY (and for very good reason)
Proc Details apply_multiplicative(existing, /mob /target)
+
+
+
+
+
+ Returns new multiplicative movespeed after modification.
+
+
+
diff --git a/datum/movespeed_modifier/sprinting.html b/datum/movespeed_modifier/sprinting.html
new file mode 100644
index 0000000000000..0130254b7a6d5
--- /dev/null
+++ b/datum/movespeed_modifier/sprinting.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /datum/movespeed_modifier/sprinting - SPLURT Station 13
+
+
+
+
+
+
+Proc Details apply_multiplicative(existing, /mob /target)
+
+
+
+
+
+ for speed reasons this is sorta copypasty.
+
+
+
diff --git a/datum/mutation/human/hulk.html b/datum/mutation/human/hulk.html
new file mode 100644
index 0000000000000..eb70c2e5b4b38
--- /dev/null
+++ b/datum/mutation/human/hulk.html
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+ /datum/mutation/human/hulk - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ break_an_arm Checks damage of a hulk's arm and applies bone wounds as necessary.
Proc Details break_an_arm
+
+ Checks damage of a hulk's arm and applies bone wounds as necessary.
+Called by specific atoms being attacked, such as walls. If an atom
+does not call this proc, than punching that atom will not cause
+arm breaking (even if the atom deals recoil damage to hulks).
+Arguments:
+arg1 is the arm to evaluate damage of and possibly break.
+
+
+
diff --git a/datum/nanite_program.html b/datum/nanite_program.html
new file mode 100644
index 0000000000000..86daa446ccd19
--- /dev/null
+++ b/datum/nanite_program.html
@@ -0,0 +1,108 @@
+
+
+
+
+
+
+ /datum/nanite_program - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ corruptable Corruptable - able to have code/configuration changed
+ error_flicking error flicking - able to be randomly toggled by errors
+ extra_settings Don't ever override this or I will come to your house and stand menacingly behind a bush
+ immutable immutable - cannot be overwritten by other programs Procs
+ copy_extra_settings_to Copy of the list instead of direct reference for obvious reasons
+ get_extra_setting_value You probably shouldn't be overriding this one, but I'm not a cop.
+ get_extra_settings_frontend Used for getting information about the extra settings to the frontend
+ is_permanent Checks if we're a permanent program
+ register_extra_settings Register extra settings by overriding this.
+extra_settings[name] = new typepath() for each extra setting
+ self_destruct Attempts to destroy ourselves
+ set_extra_setting You can override this if you need to have special behavior after setting certain settings.
+ Var Details corruptable
+
+
+
+
+
+ Corruptable - able to have code/configuration changed
error_flicking
+
+
+
+
+
+ error flicking - able to be randomly toggled by errors
+ Don't ever override this or I will come to your house and stand menacingly behind a bush
immutable
+
+
+
+
+
+ immutable - cannot be overwritten by other programs
Proc Details
+ Copy of the list instead of direct reference for obvious reasons
+ You probably shouldn't be overriding this one, but I'm not a cop.
+ Used for getting information about the extra settings to the frontend
is_permanent()
+
+
+
+
+
+ Checks if we're a permanent program
+ Register extra settings by overriding this.
+extra_settings[name] = new typepath() for each extra setting
self_destruct()
+
+
+
+
+
+ Attempts to destroy ourselves
+ You can override this if you need to have special behavior after setting certain settings.
+
+
+
diff --git a/datum/ntnet_conversation.html b/datum/ntnet_conversation.html
new file mode 100644
index 0000000000000..86cf60fb3f921
--- /dev/null
+++ b/datum/ntnet_conversation.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ /datum/ntnet_conversation - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details active_clients
+
+
+
+
+
+ chat clients who are active or minimized
muted_clients
+
+
+
+
+
+ clients muted by operator
offline_clients
+
+
+
+
+
+ chat clients who have exited out of the program.
+
+
+
diff --git a/datum/objective/door_jack.html b/datum/objective/door_jack.html
new file mode 100644
index 0000000000000..3af3e9624958c
--- /dev/null
+++ b/datum/objective/door_jack.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /datum/objective/door_jack - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ doors_required How many doors that need to be opened using the gloves to pass the objective
+ Var Details doors_required
+
+
+
+
+
+ How many doors that need to be opened using the gloves to pass the objective
+
+
+
diff --git a/datum/objective/hijack.html b/datum/objective/hijack.html
new file mode 100644
index 0000000000000..74599e631aafe
--- /dev/null
+++ b/datum/objective/hijack.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /datum/objective/hijack - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ hijack_speed_override Overrides the hijack speed of any antagonist datum it is on ONLY, no other datums are impacted.
+ Var Details hijack_speed_override
+
+
+
+
+
+ Overrides the hijack speed of any antagonist datum it is on ONLY, no other datums are impacted.
+
+
+
diff --git a/datum/outfit.html b/datum/outfit.html
new file mode 100644
index 0000000000000..45004453feac2
--- /dev/null
+++ b/datum/outfit.html
@@ -0,0 +1,328 @@
+
+
+
+
+
+
+ /datum/outfit - SPLURT Station 13
+
+
+
+
+
+
+This is a clean system of applying outfits to mobs, if you need to equip someone in a uniform
+this is the way to do it cleanly and properly.
+You can also specify an outfit datum on a job to have it auto equipped to the mob on join
+/mob/living/carbon/human/proc/equipOutfit(outfit) is the mob level proc to equip an outfit
+and you pass it the relevant datum outfit
+outfits can also be saved as json blobs downloadable by a client and then can be uploaded
+by that user to recreate the outfit, this is used by admins to allow for custom event outfits
+that can be restored at a later date
Vars
+ accessory Any clothing accessory item
+ back Type path of item to go in back slot
+ backpack_contents list of items that should go in the backpack of the user
+ belt Type path of item to go in belt slot
+ box Internals box. Will be inserted at the start of backpack_contents
+ chameleon_extras extra types for chameleon outfit changes, mostly guns
+ ears Type path of item to go in ears slot
+ ears_extra Slot for the opposite ear.
+ glasses Type path of item to go in the glasses slot
+ gloves Type path of item to go in gloves slot
+ head Type path of item to go in head slot
+ id Type path of item to go in the idcard slot
+ implants Any implants the mob should start implanted with
+ internals_slot ID of the slot containing a gas tank
+ l_hand Type path of item to go in the right hand
+ l_pocket Type path of item for left pocket slot
+ mask Type path of item to go in mask slot
+ name Name of the outfit (shows up in the equip admin verb)
+ neck Type path of item to go in neck slot
+ r_pocket Type path of item for right pocket slot
+ shirt Slot for the undershirt (which is quite a foreign concept to me) or bras
+ shoes Type path of item to go in shoes slot
+ socks Slot for socks, yes, the thing that usually goes before your shoes
+ suit Type path of item to go in suit slot
+ suit_store Type path of item to go in suit storage slot
+ toggle_helmet Should the toggle helmet proc be called on the helmet during equip
+ underwear Slot for underwear like boxers and panties
+ uniform Type path of item to go in uniform slot
+ wrists Slot for the part of your arms that isn't quite hands yet. Procs
+ apply_fingerprints Apply a fingerprint from the passed in human to all items in the outfit
+ copy_from Copy most vars from another outfit to this one
+ equip Equips all defined types and paths to the mob passed in
+ get_chameleon_disguise_info Return a list of all the types that are required to disguise as this outfit type
+ get_json_data Return a json list of this outfit
+ load_from Create an outfit datum from a list of json data
+ post_equip Called after the equip proc has finished
+ pre_equip Called at the start of the equip proc
+ save_to_file Prompt the passed in mob client to download this outfit as a json blob
+ Var Details accessory
+
+
+
+
+
+ Any clothing accessory item
back
+
+
+
+
+
+ Type path of item to go in back slot
backpack_contents
+
+
+
+
+
+ list of items that should go in the backpack of the user
+Format of this list should be: list(path=count,otherpath=count)
belt
+
+
+
+
+
+ Type path of item to go in belt slot
box
+
+
+
+
+
+ Internals box. Will be inserted at the start of backpack_contents
+ extra types for chameleon outfit changes, mostly guns
+Format of this list is (typepath, typepath, typepath)
+These are all added and returns in the list for get_chamelon_diguise_info proc
ears
+
+
+
+
+
+ Type path of item to go in ears slot
+ Slot for the opposite ear.
glasses
+
+
+
+
+
+ Type path of item to go in the glasses slot
gloves
+
+
+
+
+
+ Type path of item to go in gloves slot
head
+
+
+
+
+
+ Type path of item to go in head slot
id
+
+
+
+
+
+ Type path of item to go in the idcard slot
implants
+
+
+
+
+
+ Any implants the mob should start implanted with
+Format of this list is (typepath, typepath, typepath)
internals_slot
+
+
+
+
+
+ ID of the slot containing a gas tank
l_hand
+
+
+
+
+
+ Type path of item to go in the right hand
l_pocket
+
+
+
+
+
+ Type path of item for left pocket slot
mask
+
+
+
+
+
+ Type path of item to go in mask slot
name
+
+
+
+
+
+ Name of the outfit (shows up in the equip admin verb)
neck
+
+
+
+
+
+ Type path of item to go in neck slot
r_pocket
+
+
+
+
+
+ Type path of item for right pocket slot
shirt
+
+
+
+
+
+ Slot for the undershirt (which is quite a foreign concept to me) or bras
shoes
+
+
+
+
+
+ Type path of item to go in shoes slot
socks
+
+
+
+
+
+ Slot for socks, yes, the thing that usually goes before your shoes
suit
+
+
+
+
+
+ Type path of item to go in suit slot
suit_store
+
+
+
+
+
+ Type path of item to go in suit storage slot
+(make sure it's valid for that suit)
toggle_helmet
+
+
+
+
+
+ Should the toggle helmet proc be called on the helmet during equip
underwear
+
+
+
+
+
+ Slot for underwear like boxers and panties
+ Type path of item to go in uniform slot
wrists
+
+
+
+
+
+ Slot for the part of your arms that isn't quite hands yet.
Proc Details
+ Apply a fingerprint from the passed in human to all items in the outfit
+Used for forensics setup when the mob is first equipped at roundstart
+essentially calls add_fingerprint to every defined item on the human
copy_from
+
+ Copy most vars from another outfit to this one
equip
+
+ Equips all defined types and paths to the mob passed in
+Extra Arguments
+
+visualsOnly true if this is only for display (in the character setup screen)
+
+If visualsOnly is true, you can omit any work that doesn't visually appear on the character sprite
get_chameleon_disguise_info()
+
+
+
+
+
+ Return a list of all the types that are required to disguise as this outfit type
get_json_data()
+
+
+
+
+
+ Return a json list of this outfit
load_from(/list/outfit_data)
+
+
+
+
+
+ Create an outfit datum from a list of json data
post_equip
+
+ Called after the equip proc has finished
+All items are on the mob at this point, use this proc to toggle internals
+fiddle with id bindings and accesses etc
+Extra Arguments
+
+visualsOnly true if this is only for display (in the character setup screen)
+
+If visualsOnly is true, you can omit any work that doesn't visually appear on the character sprite
pre_equip
+
+ Called at the start of the equip proc
+Override to change the value of the slots depending on client prefs, species and
+other such sources of change
+Extra Arguments
+
+visualsOnly true if this is only for display (in the character setup screen)
+
+If visualsOnly is true, you can omit any work that doesn't visually appear on the character sprite
save_to_file(/mob /admin)
+
+
+
+
+
+ Prompt the passed in mob client to download this outfit as a json blob
+
+
+
diff --git a/datum/parallax.html b/datum/parallax.html
new file mode 100644
index 0000000000000..c44e491e88a6e
--- /dev/null
+++ b/datum/parallax.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ /datum/parallax - SPLURT Station 13
+
+
+
+
+
+
+Holds parallax information.
Vars
+ layers Parallax layers
+ objects List of parallax objects - these are cloned to a parallax holder using Clone on each. Procs
+ GetObjects Gets a new version of the objects inside - used when applying to a holder.
+ Var Details layers
+
+
+
+
+
+ Parallax layers
objects
+ – /list/atom/movable/screen/parallax_layer
+
+
+
+
+ List of parallax objects - these are cloned to a parallax holder using Clone on each.
Proc Details GetObjects()
+
+
+
+
+
+ Gets a new version of the objects inside - used when applying to a holder.
+
+
+
diff --git a/datum/parallax_holder.html b/datum/parallax_holder.html
new file mode 100644
index 0000000000000..35f089f03154e
--- /dev/null
+++ b/datum/parallax_holder.html
@@ -0,0 +1,190 @@
+
+
+
+
+
+
+ /datum/parallax_holder - SPLURT Station 13
+
+
+
+
+
+
+Holds all the information about a client's parallax
+Not on mob because parallax is area based, not mob based.
+How parallax works:
+
+Layers - normal layers, scroll with movement to relative position, can scroll
+Absolute - absolute layers, scroll with movement to absolute position, cannot scroll
+Vis - vis_contents-like model - things in this are directly applied and get no processing whatsoever. Things like overmap ships can use this.
+ Vars
+ cached_eye Eye we were last anchored to - used to detect eye changes
+ forced_eye force this eye as the "real" eye - useful for secondary maps
+ last last turf loc
+ last_area last area - for parallax scrolling/loop animations
+ layers all layers
+ owner Client that owns us
+ parallax The parallax object we're currently rendering
+ planemaster_override override planemaster we manipulate for turning and other effects
+ scroll_speed current scroll speed in DS per scroll
+ scroll_turn current scroll turn - applied after angle. if angle is 0 (picture moving north) and turn is 90, it would be like if you turned your viewport 90 deg clockwise.
+ scrolling currently scrolling?
+ secondary_map are we not on the main map? if so, put map id here
+ vis vis contents
+ vis_holder Holder object for vis Procs
+ Animation Runs a modifier to parallax as an animation.
+ Eye Gets the eye we should be centered on
+ GetPlaneMaster Gets the base parallax planemaster for things like turning
+ HardResetAnimations fully resets animation state
+ StopScrolling Smoothly stops the animation, turning to a certain angle as needed.
+ Sync Syncs us to our parallax objects. Does NOT check if we should have those objects, that's Reset()'s job.
+ UpdateMotion Updates motion if needed
+ Var Details cached_eye
+
+
+
+
+
+ Eye we were last anchored to - used to detect eye changes
forced_eye
+
+
+
+
+
+ force this eye as the "real" eye - useful for secondary maps
last
+
+
+
+
+
+ last turf loc
last_area
+
+
+
+
+
+ last area - for parallax scrolling/loop animations
layers
+ – /list/atom/movable/screen/parallax_layer
+
+
+
+
+ all layers
owner
+
+
+
+
+
+ Client that owns us
+ The parallax object we're currently rendering
planemaster_override
+
+
+
+
+
+ override planemaster we manipulate for turning and other effects
+ current scroll speed in DS per scroll
+ current scroll turn - applied after angle. if angle is 0 (picture moving north) and turn is 90, it would be like if you turned your viewport 90 deg clockwise.
+ currently scrolling?
secondary_map
+
+
+
+
+
+ are we not on the main map? if so, put map id here
vis
+
+
+
+
+
+ vis contents
vis_holder
+
+
+
+
+
+ Holder object for vis
Proc Details Animation(speed, turn, windup, turn_speed, force)
+
+
+
+
+
+ Runs a modifier to parallax as an animation.
+@params
+speed - ds per loop
+turn - angle clockwise from north to turn the motion to
+windup - ds to spend on windups. 0 for immediate.
+turn_speed - ds to spend on turning. 0 for immediate.
Eye()
+
+
+
+
+
+ Gets the eye we should be centered on
GetPlaneMaster()
+
+
+
+
+
+ Gets the base parallax planemaster for things like turning
HardResetAnimations()
+
+
+
+
+
+ fully resets animation state
+ Smoothly stops the animation, turning to a certain angle as needed.
Sync(auto_z_change, force)
+
+
+
+
+
+ Syncs us to our parallax objects. Does NOT check if we should have those objects, that's Reset()'s job.
+Doesn't move/update positions/screen locs either.
+Also ensures movedirs are correct for the eye's pos.
UpdateMotion(auto_z_change, force)
+
+
+
+
+
+ Updates motion if needed
+
+
+
diff --git a/datum/parsed_map.html b/datum/parsed_map.html
new file mode 100644
index 0000000000000..65f108849ae4b
--- /dev/null
+++ b/datum/parsed_map.html
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+ /datum/parsed_map - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ bounds Offset bounds. Same as parsed_bounds until load().
+ parsed_bounds Unoffset bounds. Null on parse failure. Procs
+ New Parse a map, possibly cropping it.
+Do not use the crop function unless strictly necessary.
+WARNING: Crop function crops based on the tiles you'd see in the map editor. If you're planning to load it in in a different orientation later, you better have done the math.
+It's recommended that you do not crop using this at all.
+ check_for_errors Check a parsed but not yet loaded map for errors.
+ load Load the parsed map into the world. See /proc/load_map for arguments.
+ Var Details bounds
+
+
+
+
+
+ Offset bounds. Same as parsed_bounds until load().
parsed_bounds
+
+
+
+
+
+ Unoffset bounds. Null on parse failure.
Proc Details New(tfile, x_lower, x_upper, y_lower, y_upper, z_lower, z_upper, measureOnly)
+
+
+
+
+
+ Parse a map, possibly cropping it.
+Do not use the crop function unless strictly necessary.
+WARNING: Crop function crops based on the tiles you'd see in the map editor. If you're planning to load it in in a different orientation later, you better have done the math.
+It's recommended that you do not crop using this at all.
check_for_errors()
+
+
+
+
+
+ Check a parsed but not yet loaded map for errors.
+Returns a /datum/map_report if there are errors or FALSE
otherwise.
load(x_offset, y_offset, z_offset, cropMap, no_changeturf, x_lower, x_upper, y_lower, y_upper, placeOnTop, orientation, annihilate_tiles, /datum /map_orientation_pattern/forced_pattern)
+
+
+
+
+
+ Load the parsed map into the world. See /proc/load_map for arguments.
+
+
+
diff --git a/datum/pathfind.html b/datum/pathfind.html
new file mode 100644
index 0000000000000..b37d8709b6e0f
--- /dev/null
+++ b/datum/pathfind.html
@@ -0,0 +1,154 @@
+
+
+
+
+
+
+ /datum/pathfind - SPLURT Station 13
+
+
+
+
+
+
+The datum used to handle the JPS pathfinding, completely self-contained
Vars
+ avoid A specific turf we're avoiding, like if a mulebot is being blocked by someone t-posing in a doorway we're trying to get through
+ caller The thing that we're actually trying to path for
+ end The turf we're trying to path to (note that this won't track a moving target)
+ id An ID card representing what access we have and what doors we can open. Its location relative to the pathing atom is irrelevant
+ max_distance I don't know what this does vs , but they limit how far we can search before giving up on a path
+ mintargetdist How far away we have to get to the end target before we can call it quits
+ open The open list/stack we pop nodes out from (TODO: make this a normal list and macro-ize the heap operations to reduce proc overhead)
+ path The list we compile at the end if successful to pass back
+ simulated_only Space is big and empty, if this is TRUE then we ignore pathing through unsimulated tiles
+ sources An assoc list that serves as the closed list & tracks what turfs came from where. Key is the turf, and the value is what turf it came from
+ start The turf where we started at Procs
+ diag_scan_spec For performing diagonal scans from a given starting turf.
+ lateral_scan_spec For performing lateral scans from a given starting turf.
+ search search() is the proc you call to kick off and handle the actual pathfinding, and kills the pathfind datum instance when it's done.
+ unwind_path Called when we've hit the goal with the node that represents the last tile, then sets the path var to that path so it can be returned by datum/pathfind/proc/search
+ Var Details avoid
+
+
+
+
+
+ A specific turf we're avoiding, like if a mulebot is being blocked by someone t-posing in a doorway we're trying to get through
+ The thing that we're actually trying to path for
end
+
+
+
+
+
+ The turf we're trying to path to (note that this won't track a moving target)
id
+
+
+
+
+
+ An ID card representing what access we have and what doors we can open. Its location relative to the pathing atom is irrelevant
max_distance
+
+
+
+
+
+ I don't know what this does vs , but they limit how far we can search before giving up on a path
mintargetdist
+
+
+
+
+
+ How far away we have to get to the end target before we can call it quits
open
+
+
+
+
+
+ The open list/stack we pop nodes out from (TODO: make this a normal list and macro-ize the heap operations to reduce proc overhead)
path
+
+
+
+
+
+ The list we compile at the end if successful to pass back
simulated_only
+
+
+
+
+
+ Space is big and empty, if this is TRUE then we ignore pathing through unsimulated tiles
sources
+
+
+
+
+
+ An assoc list that serves as the closed list & tracks what turfs came from where. Key is the turf, and the value is what turf it came from
start
+
+
+
+
+
+ The turf where we started at
Proc Details diag_scan_spec
+
+ For performing diagonal scans from a given starting turf.
+Unlike lateral scans, these only are called from the main search loop, so we don't need to worry about returning anything,
+though we do need to handle the return values of our lateral subscans of course.
+Arguments:
+
+original_turf: What turf did we start this scan at?
+heading: What direction are we going in? Obviously, should be diagonal
+parent_node: We should always have a parent node for diagonals
+ lateral_scan_spec
+
+ For performing lateral scans from a given starting turf.
+These scans are called from both the main search loop, as well as subscans for diagonal scans, and they treat finding interesting turfs slightly differently.
+If we're doing a normal lateral scan, we already have a parent node supplied, so we just create the new node and immediately insert it into the heap, ezpz.
+If we're part of a subscan, we still need for the diagonal scan to generate a parent node, so we return a node datum with just the turf and let the diag scan
+proc handle transferring the values and inserting them into the heap.
+Arguments:
+
+original_turf: What turf did we start this scan at?
+heading: What direction are we going in? Obviously, should be cardinal
+parent_node: Only given for normal lateral scans, if we don't have one, we're a diagonal subscan.
+ search()
+
+
+
+
+
+ search() is the proc you call to kick off and handle the actual pathfinding, and kills the pathfind datum instance when it's done.
+If a valid path was found, it's returned as a list. If invalid or cross-z-level params are entered, or if there's no valid path found, we
+return null, which /proc/get_path_to translates to an empty list (notable for simple bots, who need empty lists)
unwind_path
+
+ Called when we've hit the goal with the node that represents the last tile, then sets the path var to that path so it can be returned by datum/pathfind/proc/search
+
+
+
diff --git a/datum/physiology.html b/datum/physiology.html
new file mode 100644
index 0000000000000..a3a16a41be520
--- /dev/null
+++ b/datum/physiology.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /datum/physiology - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ footstep_type footstep type override for both shoeless and not footstep sounds.
+ Var Details
+ footstep type override for both shoeless and not footstep sounds.
+
+
+
diff --git a/datum/plant_gene.html b/datum/plant_gene.html
new file mode 100644
index 0000000000000..114279dc8c0a1
--- /dev/null
+++ b/datum/plant_gene.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /datum/plant_gene - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ get_name These flags tells the genemodder if we want the gene to be extractable, only removable or neither.
Proc Details get_name()
+
+
+
+
+
+ These flags tells the genemodder if we want the gene to be extractable, only removable or neither.
+
+
+
diff --git a/datum/plant_gene/trait.html b/datum/plant_gene/trait.html
new file mode 100644
index 0000000000000..fd90706bcfed5
--- /dev/null
+++ b/datum/plant_gene/trait.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /datum/plant_gene/trait - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ on_grow This proc triggers when the tray processes and a roll is sucessful, the success chance scales with production.
Proc Details
+ This proc triggers when the tray processes and a roll is sucessful, the success chance scales with production.
+
+
+
diff --git a/datum/plant_gene/trait/cell_charge.html b/datum/plant_gene/trait/cell_charge.html
new file mode 100644
index 0000000000000..0b1c8fc1058ff
--- /dev/null
+++ b/datum/plant_gene/trait/cell_charge.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /datum/plant_gene/trait/cell_charge - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ on_slip Some extra modifiers to already existing traits
Proc Details
+ Some extra modifiers to already existing traits
+
+
+
diff --git a/datum/plant_gene/trait/eyes.html b/datum/plant_gene/trait/eyes.html
new file mode 100644
index 0000000000000..2dc0af8572480
--- /dev/null
+++ b/datum/plant_gene/trait/eyes.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /datum/plant_gene/trait/eyes - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ googly Our googly eyes appearance.
+ Var Details googly
+
+
+
+
+
+ Our googly eyes appearance.
+
+
+
diff --git a/datum/plant_gene/trait/slip.html b/datum/plant_gene/trait/slip.html
new file mode 100644
index 0000000000000..4c78692e708ab
--- /dev/null
+++ b/datum/plant_gene/trait/slip.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /datum/plant_gene/trait/slip - SPLURT Station 13
+
+
+
+
+
+
+Proc Details
+ moved from core code
+
+
+
diff --git a/datum/powernet.html b/datum/powernet.html
new file mode 100644
index 0000000000000..ea57534c3696d
--- /dev/null
+++ b/datum/powernet.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+ /datum/powernet - SPLURT Station 13
+
+
+
+
+
+
+Proc Details
+ ... delete it
add_machine
+
+ ... delete it
+
+
+
diff --git a/datum/preferences.html b/datum/preferences.html
new file mode 100644
index 0000000000000..a29d36a12c09c
--- /dev/null
+++ b/datum/preferences.html
@@ -0,0 +1,309 @@
+
+
+
+
+
+
+ /datum/preferences - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ auto_fit_viewport Should we automatically fit the viewport?
+ broadcast_login_logout If we want to broadcast deadchat connect/disconnect messages
+ characters_joined_as Characters they have joined the round under - Lazylist of names
+ chat_on_map Runechat preference. If true, certain messages will be displayed on the map, not ust on the chat area. Boolean.
+ deadmin A separate variable for deadmin toggles, only deals with those.
+ dnr_triggered did they DNR? used to prevent respawns.
+ favorite_outfits What outfit typepaths we've favorited in the SelectEquipment menu
+ fertility Can john spaceman get gregnant if all conditions are right? (has a womb and is not on contraceptives)
+ gear_points loadout stuff
+ hardcore_survival_score This var stores the amount of points the owner will get for making it out alive.
+ hearted Someone thought we were nice! We get a little heart in OOC until we join the server past the below time (we can keep it until the end of the round otherwise)
+ hearted_until If we have a hearted commendations, we honor it every time the player loads preferences until this time has been passed
+ key_bindings Custom Keybindings
+ last_id Last CID the person was seen on
+ last_ip Last IP the person was seen on
+ log_clicks Do we log their clicks to disk?
+ long_strip_menu Strip menu style
+ max_chat_length Limit preference on the size of the message. Requires chat_on_map to have effect.
+ medical_records Medical record note section
+ modless_key_bindings List with a key string associated to a list of keybindings. Unlike key_bindings, this one operates on raw key, allowing for binding a key that triggers regardless of if a modifier is depressed as long as the raw key is sent.
+ muted Flags for admin mutes
+ persistent_scars If we have persistent scars enabled
+ pixel_size What size should pixels be displayed as? 0 is strech to fit
+ playtime_reward_cloak The playtime_reward_cloak variable can be set to TRUE from the prefs menu only once the user has gained over 5K playtime hours. If true, it allows the user to get a cool looking roundstart cloak.
+ pregnancy_breast_growth Self explanitory
+ pregnancy_inflation Does john spaceman look like a gluttonous slob if he pregent?
+ respawn_did_cryo did they cryo on their last ghost?
+ respawn_restrictions_active Are we currently subject to respawn restrictions? Usually set by us using the "respawn" verb, but can be lifted by admins.
+ respawn_time_of_death time of death we consider for respawns
+ scaling_method What scaling method should we use?
+ scars_index Which of the 5 persistent scar slots we randomly roll to load for this round, if enabled. Actually rolled in [/datum/preferences/proc/load_character(slot)]
+ scars_list We have 5 slots for persistent scars, if enabled we pick a random one to load (empty by default) and scars at the end of the shift if we survived as our original person
+ security_records Security record note section
+ see_chat_non_mob Whether non-mob messages will be displayed, such as machine vendor announcements. Requires chat_on_map to have effect. Boolean.
+ see_rc_emotes Whether emotes will be displayed on runechat. Requires chat_on_map to have effect. Boolean.
+ slots_joined_as Slots they have joined the round under - Lazylist of numbers
+ virility Does john spaceman's cum actually impregnate people?
+ widescreenpref Should we be in the widescreen mode set by the config? Procs
+ force_reset_keybindings Resets the client's keybindings. Asks them for which
+ force_reset_keybindings_direct Does the actual reset
+ Var Details auto_fit_viewport
+
+
+
+
+
+ Should we automatically fit the viewport?
broadcast_login_logout
+
+
+
+
+
+ If we want to broadcast deadchat connect/disconnect messages
characters_joined_as
+
+
+
+
+
+ Characters they have joined the round under - Lazylist of names
chat_on_map
+
+
+
+
+
+ Runechat preference. If true, certain messages will be displayed on the map, not ust on the chat area. Boolean.
deadmin
+
+
+
+
+
+ A separate variable for deadmin toggles, only deals with those.
dnr_triggered
+
+
+
+
+
+ did they DNR? used to prevent respawns.
favorite_outfits
+
+
+
+
+
+ What outfit typepaths we've favorited in the SelectEquipment menu
fertility
+
+
+
+
+
+ Can john spaceman get gregnant if all conditions are right? (has a womb and is not on contraceptives)
gear_points
+
+
+
+
+
+ loadout stuff
hardcore_survival_score
+
+
+
+
+
+ This var stores the amount of points the owner will get for making it out alive.
hearted
+
+
+
+
+
+ Someone thought we were nice! We get a little heart in OOC until we join the server past the below time (we can keep it until the end of the round otherwise)
hearted_until
+
+
+
+
+
+ If we have a hearted commendations, we honor it every time the player loads preferences until this time has been passed
key_bindings
+
+
+
+
+
+ Custom Keybindings
last_id
+
+
+
+
+
+ Last CID the person was seen on
last_ip
+
+
+
+
+
+ Last IP the person was seen on
log_clicks
+
+
+
+
+
+ Do we log their clicks to disk?
+ Strip menu style
max_chat_length
+
+
+
+
+
+ Limit preference on the size of the message. Requires chat_on_map to have effect.
medical_records
+
+
+
+
+
+ Medical record note section
modless_key_bindings
+
+
+
+
+
+ List with a key string associated to a list of keybindings. Unlike key_bindings, this one operates on raw key, allowing for binding a key that triggers regardless of if a modifier is depressed as long as the raw key is sent.
muted
+
+
+
+
+
+ Flags for admin mutes
persistent_scars
+
+
+
+
+
+ If we have persistent scars enabled
pixel_size
+
+
+
+
+
+ What size should pixels be displayed as? 0 is strech to fit
playtime_reward_cloak
+
+
+
+
+
+ The playtime_reward_cloak variable can be set to TRUE from the prefs menu only once the user has gained over 5K playtime hours. If true, it allows the user to get a cool looking roundstart cloak.
pregnancy_breast_growth
+
+
+
+
+
+ Self explanitory
pregnancy_inflation
+
+
+
+
+
+ Does john spaceman look like a gluttonous slob if he pregent?
respawn_did_cryo
+
+
+
+
+
+ did they cryo on their last ghost?
respawn_restrictions_active
+
+
+
+
+
+ Are we currently subject to respawn restrictions? Usually set by us using the "respawn" verb, but can be lifted by admins.
respawn_time_of_death
+
+
+
+
+
+ time of death we consider for respawns
scaling_method
+
+
+
+
+
+ What scaling method should we use?
scars_index
+
+
+
+
+
+ Which of the 5 persistent scar slots we randomly roll to load for this round, if enabled. Actually rolled in [/datum/preferences/proc/load_character(slot)]
scars_list
+
+
+
+
+
+ We have 5 slots for persistent scars, if enabled we pick a random one to load (empty by default) and scars at the end of the shift if we survived as our original person
security_records
+
+
+
+
+
+ Security record note section
see_chat_non_mob
+
+
+
+
+
+ Whether non-mob messages will be displayed, such as machine vendor announcements. Requires chat_on_map to have effect. Boolean.
see_rc_emotes
+
+
+
+
+
+ Whether emotes will be displayed on runechat. Requires chat_on_map to have effect. Boolean.
slots_joined_as
+
+
+
+
+
+ Slots they have joined the round under - Lazylist of numbers
virility
+
+
+
+
+
+ Does john spaceman's cum actually impregnate people?
widescreenpref
+
+
+
+
+
+ Should we be in the widescreen mode set by the config?
Proc Details force_reset_keybindings()
+
+
+
+
+
+ Resets the client's keybindings. Asks them for which
force_reset_keybindings_direct(hotkeys)
+
+
+
+
+
+ Does the actual reset
+
+
+
diff --git a/datum/progressbar.html b/datum/progressbar.html
new file mode 100644
index 0000000000000..fee31fbde25f1
--- /dev/null
+++ b/datum/progressbar.html
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+ /datum/progressbar - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ bar The progress bar visual element.
+ bar_loc The target where this progress bar is applied and where it is shown.
+ goal Effectively the number of steps the progress bar will need to do before reaching completion.
+ last_progress Control check to see if the progress was interrupted before reaching its goal.
+ listindex Variable to ensure smooth visual stacking on multiple progress bars.
+ user The mob whose client sees the progress bar.
+ user_client The client seeing the progress bar. Procs
+ add_prog_bar_image_to_client Adds a smoothly-appearing progress bar image to the player's screen.
+ clean_user_client Removes the progress bar image from the user_client and nulls the variable, if it exists.
+ end_progress Called on progress end, be it successful or a failure. Wraps up things to delete the datum and bar.
+ on_user_delete Called right before the user's Destroy()
+ on_user_login Called by user's Login(), it transfers the progress bar image to the new client.
+ update Updates the progress bar image visually.
+ Var Details bar
+
+
+
+
+
+ The progress bar visual element.
bar_loc
+
+
+
+
+
+ The target where this progress bar is applied and where it is shown.
goal
+
+
+
+
+
+ Effectively the number of steps the progress bar will need to do before reaching completion.
last_progress
+
+
+
+
+
+ Control check to see if the progress was interrupted before reaching its goal.
listindex
+
+
+
+
+
+ Variable to ensure smooth visual stacking on multiple progress bars.
user
+
+
+
+
+
+ The mob whose client sees the progress bar.
user_client
+
+
+
+
+
+ The client seeing the progress bar.
Proc Details add_prog_bar_image_to_client()
+
+
+
+
+
+ Adds a smoothly-appearing progress bar image to the player's screen.
clean_user_client
+
+ Removes the progress bar image from the user_client and nulls the variable, if it exists.
end_progress()
+
+
+
+
+
+ Called on progress end, be it successful or a failure. Wraps up things to delete the datum and bar.
on_user_delete
+
+ Called right before the user's Destroy()
on_user_login
+
+ Called by user's Login(), it transfers the progress bar image to the new client.
update(progress)
+
+
+
+
+
+ Updates the progress bar image visually.
+
+
+
diff --git a/datum/quirk.html b/datum/quirk.html
new file mode 100644
index 0000000000000..e476adccd7521
--- /dev/null
+++ b/datum/quirk.html
@@ -0,0 +1,110 @@
+
+
+
+
+
+
+ /datum/quirk - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ antag_removal_text Text will be given to the quirk holder if they get an antag that has it blacklisted.
+ desc The description of the quirk
+ gain_text Text displayed when this quirk is assigned to a mob (and not transferred)
+ lose_text Text displayed when this quirk is removed from a mob (and not transferred)
+ mail_goodies A lazylist of items people can receive from mail who have this quirk enabled
+The base weight for the each quirk's mail goodies list to be selected is 5
+then the item selected is determined by pick(selected_quirk.mail_goodies)
+ medical_record_text This text will appear on medical records for the trait.
+ mob_trait if applicable, apply and remove this mob trait
+ name The name of the quirk
+ on_spawn_immediate should we immediately call on_spawn or add a timer to trigger
+ quirk_holder Reference to the mob currently tied to this quirk datum. Quirks are not singletons.
+ value What the quirk is worth in preferences, zero = neutral / free
+ Var Details antag_removal_text
+
+
+
+
+
+ Text will be given to the quirk holder if they get an antag that has it blacklisted.
desc
+
+
+
+
+
+ The description of the quirk
gain_text
+
+
+
+
+
+ Text displayed when this quirk is assigned to a mob (and not transferred)
lose_text
+
+
+
+
+
+ Text displayed when this quirk is removed from a mob (and not transferred)
mail_goodies
+
+
+
+
+
+ A lazylist of items people can receive from mail who have this quirk enabled
+The base weight for the each quirk's mail goodies list to be selected is 5
+then the item selected is determined by pick(selected_quirk.mail_goodies)
medical_record_text
+
+
+
+
+
+ This text will appear on medical records for the trait.
mob_trait
+
+
+
+
+
+ if applicable, apply and remove this mob trait
name
+
+
+
+
+
+ The name of the quirk
+ should we immediately call on_spawn or add a timer to trigger
quirk_holder
+
+
+
+
+
+ Reference to the mob currently tied to this quirk datum. Quirks are not singletons.
value
+
+
+
+
+
+ What the quirk is worth in preferences, zero = neutral / free
+
+
+
diff --git a/datum/quirk/longtimer.html b/datum/quirk/longtimer.html
new file mode 100644
index 0000000000000..89c776f2e8f69
--- /dev/null
+++ b/datum/quirk/longtimer.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /datum/quirk/longtimer - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ max_scars the maximum amount of scars we can generate
+ min_scars the minimum amount of scars we can generate
+ Var Details max_scars
+
+
+
+
+
+ the maximum amount of scars we can generate
min_scars
+
+
+
+
+
+ the minimum amount of scars we can generate
+
+
+
diff --git a/datum/quirk/nyctophobia.html b/datum/quirk/nyctophobia.html
new file mode 100644
index 0000000000000..8ede7a0b60f46
--- /dev/null
+++ b/datum/quirk/nyctophobia.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /datum/quirk/nyctophobia - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ on_holder_moved Called when the quirk holder moves. Updates the quirk holder's mood.
Proc Details on_holder_moved
+
+ Called when the quirk holder moves. Updates the quirk holder's mood.
+
+
+
diff --git a/datum/reagent.html b/datum/reagent.html
new file mode 100644
index 0000000000000..b45e058de371c
--- /dev/null
+++ b/datum/reagent.html
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+ /datum/reagent - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ on_hydroponics_apply New, standardized method for chemicals to affect hydroponics trays.
+Defined on a per-chem level as opposed to by the tray.
+Can affect plant's health, stats, or cause the plant to react in certain ways.
Proc Details
+ New, standardized method for chemicals to affect hydroponics trays.
+Defined on a per-chem level as opposed to by the tray.
+Can affect plant's health, stats, or cause the plant to react in certain ways.
+
+
+
diff --git a/datum/reagent/determination.html b/datum/reagent/determination.html
new file mode 100644
index 0000000000000..87430e77c81d7
--- /dev/null
+++ b/datum/reagent/determination.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /datum/reagent/determination - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ significant Whether we've had at least WOUND_DETERMINATION_SEVERE (2.5u) of determination at any given time. No damage slowdown immunity or indication we're having a second wind if it's just a single moderate wound
+ Var Details significant
+
+
+
+
+
+ Whether we've had at least WOUND_DETERMINATION_SEVERE (2.5u) of determination at any given time. No damage slowdown immunity or indication we're having a second wind if it's just a single moderate wound
+
+
+
diff --git a/datum/reagent/lube.html b/datum/reagent/lube.html
new file mode 100644
index 0000000000000..b2c2cde72eb80
--- /dev/null
+++ b/datum/reagent/lube.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /datum/reagent/lube - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ reaction_turf What kind of slipperiness gets added to turfs.
Proc Details reaction_turf
+
+ What kind of slipperiness gets added to turfs.
+
+
+
diff --git a/datum/reagent/medicine/coagulant.html b/datum/reagent/medicine/coagulant.html
new file mode 100644
index 0000000000000..393e6e26e3692
--- /dev/null
+++ b/datum/reagent/medicine/coagulant.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /datum/reagent/medicine/coagulant - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ clot_coeff_per_wound If we have multiple bleeding wounds, we count the number of bleeding wounds, then multiply the clot rate by this^(n) before applying it to each cut, so more cuts = less clotting per cut (though still more total clotting)
+ clot_rate How much base clotting we do per bleeding wound, multiplied by the below number for each bleeding wound
+ Var Details clot_coeff_per_wound
+
+
+
+
+
+ If we have multiple bleeding wounds, we count the number of bleeding wounds, then multiply the clot rate by this^(n) before applying it to each cut, so more cuts = less clotting per cut (though still more total clotting)
clot_rate
+
+
+
+
+
+ How much base clotting we do per bleeding wound, multiplied by the below number for each bleeding wound
+
+
+
diff --git a/datum/reagent/metalgen.html b/datum/reagent/metalgen.html
new file mode 100644
index 0000000000000..e9883ec2ae45a
--- /dev/null
+++ b/datum/reagent/metalgen.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /datum/reagent/metalgen - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ metal_morph turn an object into a special material
Proc Details
+ turn an object into a special material
+
+
+
diff --git a/datum/reagent/water.html b/datum/reagent/water.html
new file mode 100644
index 0000000000000..beba34912f69d
--- /dev/null
+++ b/datum/reagent/water.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /datum/reagent/water - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ on_hydroponics_apply For weird backwards situations where water manages to get added to trays nutrients, as opposed to being snowflaked away like usual.
Proc Details
+ For weird backwards situations where water manages to get added to trays nutrients, as opposed to being snowflaked away like usual.
+
+
+
diff --git a/datum/reagents.html b/datum/reagents.html
new file mode 100644
index 0000000000000..b456880650930
--- /dev/null
+++ b/datum/reagents.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ /datum/reagents - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ end_metabolization Signals that metabolization has stopped, triggering the end of trait-based effects
+ metabolize Triggers metabolizing for all the reagents in this holder
Proc Details
+ Signals that metabolization has stopped, triggering the end of trait-based effects
+ Triggers metabolizing for all the reagents in this holder
+Arguments:
+
+mob/living/carbon/carbon - The mob to metabolize in, if null it uses [/datum/reagents/var/my_atom]
+delta_time - the time in server seconds between proc calls (when performing normally it will be 2)
+times_fired - the number of times the owner's life() tick has been called aka The number of times SSmobs has fired
+can_overdose - Allows overdosing
+liverless - Stops reagents that aren't set as [/datum/reagent/var/self_consuming] from metabolizing
+
+
+
+
diff --git a/datum/reality_smash_tracker.html b/datum/reality_smash_tracker.html
new file mode 100644
index 0000000000000..44a437dae1a75
--- /dev/null
+++ b/datum/reality_smash_tracker.html
@@ -0,0 +1,86 @@
+
+
+
+
+
+
+ /datum/reality_smash_tracker - SPLURT Station 13
+
+
+
+
+
+
+#Reality smash tracker
+Stupid fucking list holder, DONT create new ones, it will break the game, this is automnatically created whenever eldritch cultists are created.
+Tracks relevant data, generates relevant data, useful tool
Vars
+ smashes list of tracked reality smashes
+ targets List of mobs with ability to see the smashes Procs
+ AddMind Adds a mind to the list of people that can see the reality smashes
+ Generate Generates a set amount of reality smashes based on the N value
+ RandomSpawnSmash CIT CHANGE
+ RemoveMind Removes a mind from the list of people that can see the reality smashes
+ ReworkNetwork Automatically fixes the target and smash network
+ Var Details smashes
+
+
+
+
+
+ list of tracked reality smashes
targets
+
+
+
+
+
+ List of mobs with ability to see the smashes
Proc Details AddMind
+
+ Adds a mind to the list of people that can see the reality smashes
+Use this whenever you want to add someone to the list
Generate(/mob /caller)
+
+
+
+
+
+ Generates a set amount of reality smashes based on the N value
+Automatically creates more reality smashes
RandomSpawnSmash(deferred)
+
+
+
+
+
+ CIT CHANGE
+Creates a singular reality smash
+Credit to slimelust
RemoveMind
+
+ Removes a mind from the list of people that can see the reality smashes
+Use this whenever you want to remove someone from the list
ReworkNetwork()
+
+
+
+
+
+ Automatically fixes the target and smash network
+Fixes any bugs that are caused by late Generate() or exchanging clients
+
+
+
diff --git a/datum/round_event.html b/datum/round_event.html
new file mode 100644
index 0000000000000..843d73199a37d
--- /dev/null
+++ b/datum/round_event.html
@@ -0,0 +1,95 @@
+
+
+
+
+
+
+ /datum/round_event - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ activeFor How long the event has existed. You don't need to change this.
+ announce_chance Probability of announcing, used in prob(), 0 to 100, default 100. Called in process, and for a second time in the ion storm event.
+ announce_when When in the lifetime to call announce(). If you don't want it to announce use announce_chance, below.
+This is in seconds - so 1 = ~2 seconds in.
+ current_players Amount of of alive, non-AFK human players on server at the time of event start
+ end_when When in the lifetime the event should end.
+This is in seconds - so 1 = ~2 seconds in.
+ fakeable Can be faked by fake news event.
+ start_when When in the lifetime to call start().
+This is in seconds - so 1 = ~2 seconds in. Procs
+ announce_to_ghosts Called after something followable has been spawned by an event
+Provides ghosts a follow link to an atom if possible
+Only called once.
+ Var Details activeFor
+
+
+
+
+
+ How long the event has existed. You don't need to change this.
announce_chance
+
+
+
+
+
+ Probability of announcing, used in prob(), 0 to 100, default 100. Called in process, and for a second time in the ion storm event.
announce_when
+
+
+
+
+
+ When in the lifetime to call announce(). If you don't want it to announce use announce_chance, below.
+This is in seconds - so 1 = ~2 seconds in.
current_players
+
+
+
+
+
+ Amount of of alive, non-AFK human players on server at the time of event start
end_when
+
+
+
+
+
+ When in the lifetime the event should end.
+This is in seconds - so 1 = ~2 seconds in.
fakeable
+
+
+
+
+
+ Can be faked by fake news event.
start_when
+
+
+
+
+
+ When in the lifetime to call start().
+This is in seconds - so 1 = ~2 seconds in.
Proc Details announce_to_ghosts(/atom /atom_of_interest)
+
+
+
+
+
+ Called after something followable has been spawned by an event
+Provides ghosts a follow link to an atom if possible
+Only called once.
+
+
+
diff --git a/datum/round_event/ghost_role/sentience.html b/datum/round_event/ghost_role/sentience.html
new file mode 100644
index 0000000000000..7b8b224aebf86
--- /dev/null
+++ b/datum/round_event/ghost_role/sentience.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /datum/round_event/ghost_role/sentience - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ blacklisted_biotypes Blacklisted mob_biotypes - Hey can we like, not have player controlled megafauna?
+ Var Details blacklisted_biotypes
+
+
+
+
+
+ Blacklisted mob_biotypes - Hey can we like, not have player controlled megafauna?
+
+
+
diff --git a/datum/round_event/stray_cargo.html b/datum/round_event/stray_cargo.html
new file mode 100644
index 0000000000000..6521d53e6e507
--- /dev/null
+++ b/datum/round_event/stray_cargo.html
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+ /datum/round_event/stray_cargo - SPLURT Station 13
+
+
+
+
+
+
+Spawns a cargo pod containing a random cargo supply pack on a random area of the station
Vars
+ possible_pack_types Randomly picked area
+ stray_spawnable_supply_packs List of possible supply packs dropped in the pod, if empty picks from the cargo list Procs
+ announce List of default spawnable supply packs, filtered from the cargo list
+ find_event_area Picks an area that wouldn't risk critical damage if hit by a pod explosion
+ make_pod Handles the creation of the pod, in case it needs to be modified beforehand
+ setup Tries to find a valid area, throws an error if none are found
+Also randomizes the start timer
+ start Spawns a random supply pack, puts it in a pod, and spawns it on a random tile of the selected area
+ Var Details possible_pack_types
+
+
+
+
+
+ Randomly picked area
stray_spawnable_supply_packs
+
+
+
+
+
+ List of possible supply packs dropped in the pod, if empty picks from the cargo list
Proc Details announce(fake)
+
+
+
+
+
+ List of default spawnable supply packs, filtered from the cargo list
find_event_area()
+
+
+
+
+
+ Picks an area that wouldn't risk critical damage if hit by a pod explosion
make_pod()
+
+
+
+
+
+ Handles the creation of the pod, in case it needs to be modified beforehand
setup()
+
+
+
+
+
+ Tries to find a valid area, throws an error if none are found
+Also randomizes the start timer
start()
+
+
+
+
+
+ Spawns a random supply pack, puts it in a pod, and spawns it on a random tile of the selected area
+
+
+
diff --git a/datum/round_event/stray_cargo/syndicate.html b/datum/round_event/stray_cargo/syndicate.html
new file mode 100644
index 0000000000000..6e6ed87db1a2e
--- /dev/null
+++ b/datum/round_event/stray_cargo/syndicate.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /datum/round_event/stray_cargo/syndicate - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ make_pod Apply the syndicate pod skin
Proc Details make_pod()
+
+
+
+
+
+ Apply the syndicate pod skin
+
+
+
diff --git a/datum/round_event_control.html b/datum/round_event_control.html
new file mode 100644
index 0000000000000..9294e6f4087a2
--- /dev/null
+++ b/datum/round_event_control.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /datum/round_event_control - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details dynamic_should_hijack
+
+
+
+
+
+ Whether or not dynamic should hijack this event
+
+
+
diff --git a/datum/rust_spread.html b/datum/rust_spread.html
new file mode 100644
index 0000000000000..67a19ee49202d
--- /dev/null
+++ b/datum/rust_spread.html
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+ /datum/rust_spread - SPLURT Station 13
+
+
+
+
+
+
+#Rust spread datum
+Simple datum that automatically spreads rust around it
+Simple implementation of automatically growing entity
Proc Details compile_turfs()
+
+
+
+
+
+ Compile turfs
+Recreates all edge_turfs as well as normal turfs.
+
+
+
diff --git a/datum/scar.html b/datum/scar.html
new file mode 100644
index 0000000000000..d18465df876dc
--- /dev/null
+++ b/datum/scar.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+ /datum/scar - SPLURT Station 13
+
+
+
+
+
+
+scars are cosmetic datums that are assigned to bodyparts once they recover from wounds. Each wound type and severity have their own descriptions for what the scars
+look like, and then each body part has a list of "specific locations" like your elbow or wrist or wherever the scar can appear, to make it more interesting than "right arm"
+Arguments:
Vars
+ applicable_zones What zones this scar can be applied to
+ coverable Whether this scar can actually be covered up by clothing
+ fake Scars from the longtimer quirk are "fake" and won't be saved with persistent scarring, since it makes you spawn with a lot by default
+ visibility How many tiles away someone can see this scar, goes up with severity. Clothes covering this limb will decrease visibility by 1 each, except for the head/face which is a binary "is mask obscuring face" check Procs
+ format Used to format a scar to safe in preferences for persistent scars
+ format_amputated Used to format a scar to safe in preferences for persistent scars
+ generate generate() is used to actually fill out the info for a scar, according to the limb and wound it is provided.
+ get_examine_description What will show up in examine_more() if this scar is visible
+ is_visible Whether a scar can currently be seen by the viewer
+ lazy_attach Used when we finalize a scar from a healing cut
+ load Used to "load" a persistent scar
+ Var Details applicable_zones
+
+
+
+
+
+ What zones this scar can be applied to
coverable
+
+
+
+
+
+ Whether this scar can actually be covered up by clothing
fake
+
+
+
+
+
+ Scars from the longtimer quirk are "fake" and won't be saved with persistent scarring, since it makes you spawn with a lot by default
visibility
+
+
+
+
+
+ How many tiles away someone can see this scar, goes up with severity. Clothes covering this limb will decrease visibility by 1 each, except for the head/face which is a binary "is mask obscuring face" check
Proc Details
+ Used to format a scar to safe in preferences for persistent scars
+ Used to format a scar to safe in preferences for persistent scars
+ generate() is used to actually fill out the info for a scar, according to the limb and wound it is provided.
+After creating a scar, call this on it while targeting the scarred bodypart with a given wound to apply the scar.
+Arguments:
+
+BP- The bodypart being targeted
+W- The wound being used to generate the severity and description info
+add_to_scars- Should always be TRUE unless you're just storing a scar for later usage, like how cuts want to store a scar for the highest severity of cut, rather than the severity when the wound is fully healed (probably demoted to moderate)
+ get_examine_description(/mob /viewer)
+
+
+
+
+
+ What will show up in examine_more() if this scar is visible
is_visible(/mob /viewer)
+
+
+
+
+
+ Whether a scar can currently be seen by the viewer
+ Used when we finalize a scar from a healing cut
load(/obj /item /bodypart /BP, version, description, specific_location, severity)
+
+
+
+
+
+ Used to "load" a persistent scar
+
+
+
diff --git a/datum/secrets_menu.html b/datum/secrets_menu.html
new file mode 100644
index 0000000000000..fa844f6e81229
--- /dev/null
+++ b/datum/secrets_menu.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /datum/secrets_menu - SPLURT Station 13
+
+
+
+
+
+
+Proc Details ui_act(action, params)
+
+
+
+
+
+ fun! buttons.
+
+
+
diff --git a/datum/select_equipment.html b/datum/select_equipment.html
new file mode 100644
index 0000000000000..c569cd28a9c09
--- /dev/null
+++ b/datum/select_equipment.html
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+ /datum/select_equipment - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ outfit_entry Packs up data about an outfit as an assoc list to send to the UI as an outfit entry.
Proc Details outfit_entry(category, identifier, name, priority, custom_entry)
+
+
+
+
+
+ Packs up data about an outfit as an assoc list to send to the UI as an outfit entry.
+Args:
+
+
+category (string) - The tab it will be under
+
+
+identifier (typepath or ref) - This will sent this back to ui_act to preview or spawn in an outfit.
+
+
+Must be unique between all entries.
+
+
+name (string) - Will be the text on the button
+
+
+priority (bool)(optional) - If True, the UI will sort the entry to the top, right below favorites.
+
+
+custom_entry (bool)(optional) - Send the identifier with a "ref" keyword instead of "path",
+
+
+for the UI to tell apart custom outfits from normal ones.
+
+
+Returns (list) An outfit entry
+
+
+
diff --git a/datum/signal/subspace.html b/datum/signal/subspace.html
new file mode 100644
index 0000000000000..5766cbee36644
--- /dev/null
+++ b/datum/signal/subspace.html
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+ /datum/signal/subspace - SPLURT Station 13
+
+
+
+
+
+
+Here is the big, bad function that broadcasts a message given the appropriate
+parameters.
+@param M:
+Reference to the mob/speaker, stored in signal.data["mob"]
+@param vmask:
+Boolean value if the mob is "hiding" its identity via voice mask, stored in
+signal.data["vmask"]
+@param vmessage:
+If specified, will display this as the message; such as "chimpering"
+for monkeys if the mob is not understood. Stored in signal.data["vmessage"].
+@param radio:
+Reference to the radio broadcasting the message, stored in signal.data["radio"]
+@param message:
+The actual string message to display to mobs who understood mob M. Stored in
+signal.data["message"]
+@param name:
+The name to display when a mob receives the message. signal.data["name"]
+@param job:
+The name job to display for the AI when it receives the message. signal.data["job"]
+@param realname:
+The "real" name associated with the mob. signal.data["realname"]
+@param vname:
+If specified, will use this name when mob M is not understood. signal.data["vname"]
+@param data:
+If specified:
+1 -- Will only broadcast to intercoms
+2 -- Will only broadcast to intercoms and station-bounced radios
+3 -- Broadcast to syndicate frequency
+4 -- AI can't track down this person. Useful for imitation broadcasts where you can't find the actual mob
+@param compression:
+If 0, the signal is audible
+If nonzero, the signal may be partially inaudible or just complete gibberish.
+@param level:
+The list of Z levels that the sending radio is broadcasting to. Having 0 in the list broadcasts on all levels
+@param freq
+The frequency of the signal
+
+
+
diff --git a/datum/skill.html b/datum/skill.html
new file mode 100644
index 0000000000000..06547e229ee26
--- /dev/null
+++ b/datum/skill.html
@@ -0,0 +1,150 @@
+
+
+
+
+
+
+ /datum/skill - SPLURT Station 13
+
+
+
+
+
+
+Skill datums
Vars
+ abstract_type Abstract type
+ base_multiplier Base multiplier used in skill competency operations.
+ competency_multiplier Value added to the base multiplier depending on overall competency compared to maximum value/level.
+ competency_thresholds skill threshold used in generic skill competency operations.
+ desc Our description
+ item_skill_gain_multi Experience gain multiplier gained from using items.
+ max_levels List of max levels. Only used in level skills, but present here for helper macros.
+ name Our name
+ name_color Color of the name as shown in the html readout
+ progression_type Our progression type. These are mostly used to skip typechecks overhead, don't go around messing with these.
+ skill_gain_quantisation Skill gain quantisation
+ skill_traits A list of ways this skill can affect or be affected through actions and skill modifiers.
+ ui_category Index of this skill in the UI Procs
+ get_skill_data Get a list of data used in the skill panel menu.
+ is_value_greater Checks if a value is greater
+ sanitize_value Ensures what someone's setting as a value for this skill is valid.
+ set_skill_value Sets the new value of this skill in the holder skills list.
+As well as possible feedback messages or secondary effects on value change, that's on you.
+ Var Details abstract_type
+
+
+
+
+
+ Abstract type
base_multiplier
+
+
+
+
+
+ Base multiplier used in skill competency operations.
competency_multiplier
+
+
+
+
+
+ Value added to the base multiplier depending on overall competency compared to maximum value/level.
competency_thresholds
+
+
+
+
+
+ skill threshold used in generic skill competency operations.
desc
+
+
+
+
+
+ Our description
item_skill_gain_multi
+
+
+
+
+
+ Experience gain multiplier gained from using items.
max_levels
+
+
+
+
+
+ List of max levels. Only used in level skills, but present here for helper macros.
name
+
+
+
+
+
+ Our name
name_color
+
+
+
+
+
+ Color of the name as shown in the html readout
progression_type
+
+
+
+
+
+ Our progression type. These are mostly used to skip typechecks overhead, don't go around messing with these.
skill_gain_quantisation
+
+
+
+
+
+ Skill gain quantisation
skill_traits
+
+
+
+
+
+ A list of ways this skill can affect or be affected through actions and skill modifiers.
ui_category
+
+
+
+
+
+ Index of this skill in the UI
Proc Details
+ Get a list of data used in the skill panel menu.
is_value_greater(existing, new_value)
+
+
+
+
+
+ Checks if a value is greater
sanitize_value(new_value)
+
+
+
+
+
+ Ensures what someone's setting as a value for this skill is valid.
set_skill_value
+
+ Sets the new value of this skill in the holder skills list.
+As well as possible feedback messages or secondary effects on value change, that's on you.
+
+
+
diff --git a/datum/skill/enum.html b/datum/skill/enum.html
new file mode 100644
index 0000000000000..5ebab508c5078
--- /dev/null
+++ b/datum/skill/enum.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /datum/skill/enum - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details valid_values
+
+
+
+
+
+ Valid values for the skill
+
+
+
diff --git a/datum/skill/level.html b/datum/skill/level.html
new file mode 100644
index 0000000000000..7ebc9b8f26560
--- /dev/null
+++ b/datum/skill/level.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /datum/skill/level - SPLURT Station 13
+
+
+
+
+
+
+Classing r p g styled skills, tiered by lvl, and current/nextlvl experience.
Proc Details get_skill_level_value(num)
+
+
+
+
+
+ Gets the base value required to reach a level specified by the 'num' arg.
+
+
+
diff --git a/datum/skill/numerical.html b/datum/skill/numerical.html
new file mode 100644
index 0000000000000..98f1ba11e0361
--- /dev/null
+++ b/datum/skill/numerical.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /datum/skill/numerical - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details max_value
+
+
+
+
+
+ Max value of this skill
min_value
+
+
+
+
+
+ Min value of this skill
+
+
+
diff --git a/datum/skill_holder.html b/datum/skill_holder.html
new file mode 100644
index 0000000000000..cd620680a7d2b
--- /dev/null
+++ b/datum/skill_holder.html
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+ /datum/skill_holder - SPLURT Station 13
+
+
+
+
+
+
+Skill holder datums
+All procs are tied to the mind, since they are always expected to have a skill holder anyway.
Vars
+ all_current_skill_modifiers List of all current skill modifiers, so we don't add the same ones twice.
+ need_static_data_update For UI updates.
+ original_values List of original values stored at the time a modifier with the MODIFIER_SKILL_ORIGIN_DIFF enabled was added.
+ owner The mind datum this skill is associated with, only used for the check_skills UI
+ see_skill_mods Whether modifiers and final skill values or only base values are displayed.
+ selected_category The current selected skill category.
+ skill_affinities Same as [skills] but affinities, which are multiplied to increase amount when gaining skills.
+ skill_levels Let's say we want to get a specific skill "level" without looping through a proc everytime.
+Only supported by skills with tiers or levels.
+ skill_value_mods current skill modifiers lists, per value, affinity, level.
+ skills Our list of skills and values. Lazylist. Associative. Keys are datum typepaths to the skill.
+ Var Details all_current_skill_modifiers
+
+
+
+
+
+ List of all current skill modifiers, so we don't add the same ones twice.
need_static_data_update
+
+
+
+
+
+ For UI updates.
original_values
+
+
+
+
+
+ List of original values stored at the time a modifier with the MODIFIER_SKILL_ORIGIN_DIFF enabled was added.
owner
+
+
+
+
+
+ The mind datum this skill is associated with, only used for the check_skills UI
see_skill_mods
+
+
+
+
+
+ Whether modifiers and final skill values or only base values are displayed.
selected_category
+
+
+
+
+
+ The current selected skill category.
skill_affinities
+
+
+
+
+
+ Same as [skills] but affinities, which are multiplied to increase amount when gaining skills.
skill_levels
+
+
+
+
+
+ Let's say we want to get a specific skill "level" without looping through a proc everytime.
+Only supported by skills with tiers or levels.
skill_value_mods
+
+
+
+
+
+ current skill modifiers lists, per value, affinity, level.
skills
+
+
+
+
+
+ Our list of skills and values. Lazylist. Associative. Keys are datum typepaths to the skill.
+
+
+
diff --git a/datum/skill_modifier.html b/datum/skill_modifier.html
new file mode 100644
index 0000000000000..492dc737e62a1
--- /dev/null
+++ b/datum/skill_modifier.html
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+ /datum/skill_modifier - SPLURT Station 13
+
+
+
+
+
+
+Base skill modifier datum, used to modify a player skills without directly touching their values, levels and affinity
+and cause lots of edge cases. These are fairly simple overall... make a subtype though, don't use this one.
Vars
+ affinity_mod skill affinity modifier, can be a multiplier or addendum, depending on the modifier_flags.
+ identifier The identifier key this skill modifier is associated with.
+ level_mod skill level modifier, see above.
+ modifier_flags flags for this skill modifier.
+ name Name and description of the skill modifier, used in the UI
+ priority Priority of this skill modifier compared to other ones.
+ target_skills target skills, can be a specific skill typepath or a list of skill traits.
+ target_skills_key the GLOB.potential_skills_per_mod key generated on runtime. You shouldn't be var-editing it.
+ value_mod skill value modifier, see above. Procs
+ on_mind_transfer Body bound modifier signal procs.
+ Var Details affinity_mod
+
+
+
+
+
+ skill affinity modifier, can be a multiplier or addendum, depending on the modifier_flags.
identifier
+
+
+
+
+
+ The identifier key this skill modifier is associated with.
level_mod
+
+
+
+
+
+ skill level modifier, see above.
modifier_flags
+
+
+
+
+
+ flags for this skill modifier.
name
+
+
+
+
+
+ Name and description of the skill modifier, used in the UI
priority
+
+
+
+
+
+ Priority of this skill modifier compared to other ones.
target_skills
+
+
+
+
+
+ target skills, can be a specific skill typepath or a list of skill traits.
target_skills_key
+
+
+
+
+
+ the GLOB.potential_skills_per_mod key generated on runtime. You shouldn't be var-editing it.
value_mod
+
+
+
+
+
+ skill value modifier, see above.
Proc Details on_mind_transfer
+
+ Body bound modifier signal procs.
+
+
+
diff --git a/datum/slaver_gear.html b/datum/slaver_gear.html
new file mode 100644
index 0000000000000..3c301910b7649
--- /dev/null
+++ b/datum/slaver_gear.html
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+ /datum/slaver_gear - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details build_path
+
+
+
+
+
+ Build path of the gear itself
category
+
+
+
+
+
+ Category of the gear
cost
+
+
+
+
+
+ Credit cost of the gear
description
+
+
+
+
+
+ Description of the gear
name
+
+
+
+
+
+ Name of the gear
+
+
+
diff --git a/datum/song.html b/datum/song.html
new file mode 100644
index 0000000000000..099627aee6835
--- /dev/null
+++ b/datum/song.html
@@ -0,0 +1,525 @@
+
+
+
+
+
+
+ /datum/song - SPLURT Station 13
+
+
+
+
+
+
+These are the actual backend behind instruments.
+They attach to an atom and provide the editor + playback functionality.
Vars
+ allowed_instrument_ids What instruments our built in picker can use. The picker won't show unless this is longer than one.
+ cached_exponential_dropoff Do not directly set, use update_sustain()
+ cached_legacy_dir Cached legacy dir for legacy instruments
+ cached_legacy_ext Cached legacy ext for legacy instruments
+ cached_linear_dropoff /////// DO NOT DIRECTLY SET THESE!
+Do not directly set, use update_sustain()
+ cached_samples Cached list of samples, referenced directly from the instrument for synthesized instruments
+ channels_idle List of channels that aren't being used, as text. This is to prevent unnecessary freeing and reallocations from SSsounds/SSinstruments.
+ channels_playing Channel as text = current volume percentage but it's 0 to 100 instead of 0 to 1.
+ compiled_chords Playing variables
+Build by compile_chords()
+Must be rebuilt on instrument switch.
+Compilation happens when we start playing and is cleared after we finish playing.
+Format: list of chord lists, with chordlists having (key1, key2, key3, tempodiv)
+ current_chord Current chord we're on.
+ debug_mode If this is enabled, some things won't be strictly cleared when they usually are (liked compiled_chords on play stop)
+ delay_by Amount of delay to wait before playing the next chord
+ editing Are we currently editing?
+ elapsed_delay Current section of a long chord we're on, so we don't need to make a billion chords, one for every unit ticklag.
+ full_sustain_held_note Should we not decay our last played note?
+ hearing_mobs The list of mobs that can hear us
+ help Is the help screen open?
+ instrument_range How far we can be heard
+ last_channel_played Last channel to play. text.
+ last_hearcheck Last world.time we checked for who can hear us
+ legacy Are we operating in legacy mode (so if the instrument is a legacy instrument)
+ lines Our song lines
+ max_repeats Maximum times we can repeat
+ max_sound_channels Max sound channels to occupy
+ max_volume Max volume
+ min_volume Min volume - This is so someone doesn't decide it's funny to set it to 0 and play invisible songs.
+ name Name of the song
+ note_shift ////////// !!FUN!! - Only works in synthesized mode! /////////////////
+Note numbers to shift.
+ octave_min DO NOT TOUCH THESE
+ parent The atom we're attached to/playing from
+ playing Are we currently playing?
+ repeat Repeats left
+ sustain_dropoff_volume When a note is considered dead if it is below this in volume
+ sustain_exponential_dropoff Exponential sustain dropoff rate per decisecond
+ sustain_linear_duration Total duration of linear sustain for 100 volume note to get to SUSTAIN_DROPOFF
+ sustain_mode The kind of sustain we're using
+ tempo delay between notes in deciseconds
+ user_playing Person playing us
+ using_instrument ///////// Cached instrument variables /////////////
+Instrument we are currently using
+ using_sound_channels Current channels, so we can save a length() call.
+ volume Our volume Procs
+ compile_chords Compiles chords.
+ compile_legacy Compiles our lines into "chords" with filenames for legacy playback. This makes there have to be a bit of lag at the beginning of the song, but repeats will not have to parse it again, and overall playback won't be impacted by as much lag.
+ compile_synthesized Compiles our lines into "chords" with numbers. This makes there have to be a bit of lag at the beginning of the song, but repeats will not have to parse it again, and overall playback won't be impacted by as much lag.
+ do_hearcheck Checks and stores which mobs can hear us. Terminates sounds for mobs that leave our range.
+ get_bpm Gets our beats per minute based on our tempo.
+ play_chord Plays a chord.
+ playkey_legacy Proc to play a legacy note. Just plays the sound to hearing mobs (and does hearcheck if necessary), no fancy channel/sustain/management.
+ playkey_synth Plays a specific numerical key from our instrument to anyone who can hear us.
+Does a hearing check if enough time has passed.
+ pop_channel Pops a channel we have reserved so we don't have to release and re-request them from SSsounds every time we play a note. This is faster.
+ process_decay Decays our channels and updates their volumes to mobs who can hear us.
+ process_song Processes our song.
+ sanitize_tempo Sanitizes tempo to a value that makes sense and fits the current world.tick_lag.
+ set_bpm Sets our tempo from a beats-per-minute, sanitizing it to a valid number first.
+ set_dropoff_volume Setter for setting how low the volume has to get before a note is considered "dead" and dropped
+ set_exponential_drop_rate Setter for setting exponential falloff factor.
+ set_instrument Sets our instrument, caching anything necessary for faster accessing. Accepts an ID, typepath, or instantiated instrument datum.
+ set_linear_falloff_duration Setter for setting linear falloff duration.
+ set_volume Setter for setting output volume.
+ should_stop_playing Checks if we should halt playback.
+ start_playing Attempts to start playing our song.
+ stop_playing Stops playing, terminating all sounds if in synthesized mode. Clears hearing_mobs.
+ tempodiv_to_delay Converts a tempodiv to ticks to elapse before playing the next chord, taking into account our tempo.
+ terminate_all_sounds Stops all sounds we are "responsible" for. Only works in synthesized mode.
+ terminate_sound_mob Stops all sounds we are responsible for in a given person. Only works in synthesized mode.
+ updateDialog Updates the window for our users. Override down the line.
+ update_sustain Updates our cached linear/exponential falloff stuff, saving calculations down the line.
+ Var Details allowed_instrument_ids
+
+
+
+
+
+ What instruments our built in picker can use. The picker won't show unless this is longer than one.
cached_exponential_dropoff
+
+
+
+
+
+ Do not directly set, use update_sustain()
cached_legacy_dir
+
+
+
+
+
+ Cached legacy dir for legacy instruments
cached_legacy_ext
+
+
+
+
+
+ Cached legacy ext for legacy instruments
cached_linear_dropoff
+
+
+
+
+
+ /////// DO NOT DIRECTLY SET THESE!
+Do not directly set, use update_sustain()
cached_samples
+
+
+
+
+
+ Cached list of samples, referenced directly from the instrument for synthesized instruments
channels_idle
+
+
+
+
+
+ List of channels that aren't being used, as text. This is to prevent unnecessary freeing and reallocations from SSsounds/SSinstruments.
channels_playing
+
+
+
+
+
+ Channel as text = current volume percentage but it's 0 to 100 instead of 0 to 1.
compiled_chords
+
+
+
+
+
+ Playing variables
+Build by compile_chords()
+Must be rebuilt on instrument switch.
+Compilation happens when we start playing and is cleared after we finish playing.
+Format: list of chord lists, with chordlists having (key1, key2, key3, tempodiv)
current_chord
+
+
+
+
+
+ Current chord we're on.
debug_mode
+
+
+
+
+
+ If this is enabled, some things won't be strictly cleared when they usually are (liked compiled_chords on play stop)
delay_by
+
+
+
+
+
+ Amount of delay to wait before playing the next chord
editing
+
+
+
+
+
+ Are we currently editing?
elapsed_delay
+
+
+
+
+
+ Current section of a long chord we're on, so we don't need to make a billion chords, one for every unit ticklag.
full_sustain_held_note
+
+
+
+
+
+ Should we not decay our last played note?
hearing_mobs
+
+
+
+
+
+ The list of mobs that can hear us
help
+
+
+
+
+
+ Is the help screen open?
instrument_range
+
+
+
+
+
+ How far we can be heard
last_channel_played
+
+
+
+
+
+ Last channel to play. text.
last_hearcheck
+
+
+
+
+
+ Last world.time we checked for who can hear us
legacy
+
+
+
+
+
+ Are we operating in legacy mode (so if the instrument is a legacy instrument)
lines
+
+
+
+
+
+ Our song lines
max_repeats
+
+
+
+
+
+ Maximum times we can repeat
max_sound_channels
+
+
+
+
+
+ Max sound channels to occupy
max_volume
+
+
+
+
+
+ Max volume
min_volume
+
+
+
+
+
+ Min volume - This is so someone doesn't decide it's funny to set it to 0 and play invisible songs.
name
+
+
+
+
+
+ Name of the song
note_shift
+
+
+
+
+
+ ////////// !!FUN!! - Only works in synthesized mode! /////////////////
+Note numbers to shift.
octave_min
+
+
+
+
+
+ DO NOT TOUCH THESE
parent
+
+
+
+
+
+ The atom we're attached to/playing from
playing
+
+
+
+
+
+ Are we currently playing?
repeat
+
+
+
+
+
+ Repeats left
sustain_dropoff_volume
+
+
+
+
+
+ When a note is considered dead if it is below this in volume
sustain_exponential_dropoff
+
+
+
+
+
+ Exponential sustain dropoff rate per decisecond
sustain_linear_duration
+
+
+
+
+
+ Total duration of linear sustain for 100 volume note to get to SUSTAIN_DROPOFF
sustain_mode
+
+
+
+
+
+ The kind of sustain we're using
tempo
+
+
+
+
+
+ delay between notes in deciseconds
user_playing
+
+
+
+
+
+ Person playing us
using_instrument
+
+
+
+
+
+ ///////// Cached instrument variables /////////////
+Instrument we are currently using
using_sound_channels
+
+
+
+
+
+ Current channels, so we can save a length() call.
volume
+
+
+
+
+
+ Our volume
Proc Details compile_chords()
+
+
+
+
+
+ Compiles chords.
compile_legacy()
+
+
+
+
+
+ Compiles our lines into "chords" with filenames for legacy playback. This makes there have to be a bit of lag at the beginning of the song, but repeats will not have to parse it again, and overall playback won't be impacted by as much lag.
compile_synthesized()
+
+
+
+
+
+ Compiles our lines into "chords" with numbers. This makes there have to be a bit of lag at the beginning of the song, but repeats will not have to parse it again, and overall playback won't be impacted by as much lag.
do_hearcheck()
+
+
+
+
+
+ Checks and stores which mobs can hear us. Terminates sounds for mobs that leave our range.
get_bpm()
+
+
+
+
+
+ Gets our beats per minute based on our tempo.
play_chord(/list/chord)
+
+
+
+
+
+ Plays a chord.
playkey_legacy(note, acc, oct, /mob /user)
+
+
+
+
+
+ Proc to play a legacy note. Just plays the sound to hearing mobs (and does hearcheck if necessary), no fancy channel/sustain/management.
+Arguments:
+
+note is a number from 1-7 for A-G
+acc is either "b", "n", or "#"
+oct is 1-8 (or 9 for C)
+ playkey_synth(key, /mob /user)
+
+
+
+
+
+ Plays a specific numerical key from our instrument to anyone who can hear us.
+Does a hearing check if enough time has passed.
pop_channel()
+
+
+
+
+
+ Pops a channel we have reserved so we don't have to release and re-request them from SSsounds every time we play a note. This is faster.
process_decay(wait_ds)
+
+
+
+
+
+ Decays our channels and updates their volumes to mobs who can hear us.
+Arguments:
+
+wait_ds - the deciseconds we should decay by. This is to compensate for any lag, as otherwise songs would get pretty nasty during high time dilation.
+ process_song(wait)
+
+
+
+
+
+ Processes our song.
sanitize_tempo(new_tempo)
+
+
+
+
+
+ Sanitizes tempo to a value that makes sense and fits the current world.tick_lag.
set_bpm(bpm)
+
+
+
+
+
+ Sets our tempo from a beats-per-minute, sanitizing it to a valid number first.
set_dropoff_volume(volume)
+
+
+
+
+
+ Setter for setting how low the volume has to get before a note is considered "dead" and dropped
set_exponential_drop_rate(drop)
+
+
+
+
+
+ Setter for setting exponential falloff factor.
set_instrument
+
+ Sets our instrument, caching anything necessary for faster accessing. Accepts an ID, typepath, or instantiated instrument datum.
set_linear_falloff_duration(duration)
+
+
+
+
+
+ Setter for setting linear falloff duration.
set_volume(volume)
+
+
+
+
+
+ Setter for setting output volume.
should_stop_playing
+
+ Checks if we should halt playback.
start_playing
+
+ Attempts to start playing our song.
stop_playing()
+
+
+
+
+
+ Stops playing, terminating all sounds if in synthesized mode. Clears hearing_mobs.
tempodiv_to_delay(tempodiv)
+
+
+
+
+
+ Converts a tempodiv to ticks to elapse before playing the next chord, taking into account our tempo.
terminate_all_sounds(clear_channels)
+
+
+
+
+
+ Stops all sounds we are "responsible" for. Only works in synthesized mode.
terminate_sound_mob
+
+ Stops all sounds we are responsible for in a given person. Only works in synthesized mode.
updateDialog
+
+ Updates the window for our users. Override down the line.
update_sustain()
+
+
+
+
+
+ Updates our cached linear/exponential falloff stuff, saving calculations down the line.
+
+
+
diff --git a/datum/sortInstance.html b/datum/sortInstance.html
new file mode 100644
index 0000000000000..cd47858b926f6
--- /dev/null
+++ b/datum/sortInstance.html
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+ /datum/sortInstance - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ gallopRight Like gallopLeft, except that if the range contains an element equal to
+key, gallopRight returns the index after the rightmost equal element.
Proc Details gallopRight(key, base, len, hint)
+
+
+
+
+
+ Like gallopLeft, except that if the range contains an element equal to
+key, gallopRight returns the index after the rightmost equal element.
+@param key the key whose insertion point to search for
+@param a the array in which to search
+@param base the index of the first element in the range
+@param len the length of the range; must be > 0
+@param hint the index at which to begin the search, 0 <= hint < n.
+The closer hint is to the result, the faster this method will run.
+@param c the comparator used to order the range, and to search
+@return the int k, 0 <= k <= n such that a[b + k - 1] <= key < a[b + k]
+
+
+
diff --git a/datum/species.html b/datum/species.html
new file mode 100644
index 0000000000000..e2a6a0f8411a7
--- /dev/null
+++ b/datum/species.html
@@ -0,0 +1,587 @@
+
+
+
+
+
+
+ /datum/species - SPLURT Station 13
+
+
+
+
+
+
+Datum that handles different species in the game.
+This datum handles species in the game, such as lizardpeople, mothmen, zombies, skeletons, etc.
+It is used in carbon humans to determine various things about them, like their food preferences, if they have biological genders, their damage resistances, and more.
Vars
+ armor Percentage modifier for overall defense of the race, or less defense, if it's negative.
+ ass_image For custom overrides for species ass images
+ attack_type Type of damage attack does. Ethereals attack with burn damage for example.
+ attack_verb Punch-specific attack verb.
+ breathid What gas does this species breathe? Used by suffocation screen alerts, most of actual gas breathing is handled by mutantlungs. See [life.dm][code/modules/mob/living/carbon/human/life.dm]
+ brutemod multiplier for brute damage
+ burnmod multiplier for burn damage
+ cold_offset moves their safe minimum temp by this value.
+ coldmod multiplier for damage from cold temperature
+ damage_overlay_type What kind of damage overlays (if any) appear on our species when wounded? If this is "", does not add an overlay.
+ disliked_food Bitfield for food types that the species dislikes, giving them disgust. Humans hate raw food, for example.
+ exotic_blood If your race bleeds something other than bog standard blood, change this to reagent id. For example, ethereals bleed liquid electricity.
+ exotic_blood_blend_mode Which blend mode should this species blood use?
+ exotic_blood_color Assume human as the default blood colour, override this default by species subtypes
+ exotic_bloodtype If your race uses a non standard bloodtype (A+, O-, AB-, etc). For example, lizards have L type blood.
+ family_heirlooms List of family heirlooms this species can get with the family heirloom quirk. List of types.
+ fixed_mut_color To use MUTCOLOR with a fixed color that's independent of the mcolor feature in DNA.
+ fly The actual flying ability given to flying species
+ flying_species Is this species a flying species? Used as an easy check for some things
+ grab_sound Special sound for grabbing
+ grad_color The gradient color used to color the gradient.
+ grad_style The gradient style used for the mob's hair.
+ hair_alpha The alpha used by the hair. 255 is completely solid, 0 is invisible.
+ hair_color This allows races to have specific hair colors. If null, it uses the H's hair/facial hair colors. If "mutcolor", it uses the H's mutant_color. If "fixedmutcolor", it uses fixedmutcolor
+ heatmod multiplier for damage from hot temperature
+ hot_offset moves their safe maximum temp by this value.
+ id If the game needs to manually check your race to do something not included in a proc here, it will use this.
+ inert_mutation Special mutation that can be found in the genepool exclusively in this species. Dont leave empty or changing species will be a headache
+ inherent_biotypes List of biotypes the mob belongs to. Used by diseases.
+ inherent_traits Generic traits tied to having the species.
+ liked_food Bitfield for food types that the species likes, giving them a mood boost. Lizards like meat, for example.
+ meat What the species drops when gibbed by a gibber machine.
+ mutant_bodyparts Visible CURRENT bodyparts that are unique to a species.
+DO NOT USE THIS AS A LIST OF ALL POSSIBLE BODYPARTS AS IT WILL FUCK
+SHIT UP! Changes to this list for non-species specific bodyparts (ie
+cat ears and tails) should be assigned at organ level if possible.
+Assoc values are defaults for given bodyparts, also modified by aforementioned organs.
+They also allow for faster '[]' list access versus 'in'. Other than that, they are useless right now.
+Layer hiding is handled by [/datum/species/proc/handle_mutant_bodyparts] below.
+ mutant_brain Replaces default brain with a different organ
+ mutant_heart Replaces default heart with a different organ
+ mutant_organs Internal organs that are unique to this race, like a tail.
+ mutantappendix Replaces default appendix with a different organ.
+ mutantears Replaces default ears with a different organ
+ mutanteyes Replaces default lungs with a different organ
+Replaces default eyes with a different organ
+ mutanthands Forces an item into this species' hands. Only an honorary mutantthing because this is not an organ and not loaded in the same way, you've been warned to do your research.
+ mutantliver Replaces default liver with a different organ
+ mutantstomach Replaces default stomach with a different organ
+ mutanttail CIT SPECIFIC Mutant tail
+ mutanttongue Replaces default tongue with a different organ
+ name This is the fluff name. They are displayed on health analyzers and in the character setup menu. Leave them generic for other servers to customize.
+ no_equip Inventory slots the race can't equip stuff to. Golems cannot wear jumpsuits, for example.
+ nojumpsuit Allows the species to equip items that normally require a jumpsuit without having one equipped. Used by golems.
+ offset_features Clothing offsets. If a species has a different body than other species, you can offset clothing so they look less weird.
+ outfit_important_for_life A path to an outfit that is important for species life e.g. plasmaman outfit
+ payday_modifier multiplier for money paid at payday
+ punchdamagehigh Highest possible punch damage this species can give.
+ punchdamagelow Lowest possible punch damage this species can give. If this is set to 0, punches will always miss.
+ punchstunthreshold Damage at which punches from this race will stun
+ say_mod Affects the speech message, for example: Motharula flutters, "My speech message is flutters!"
+ sexes Whether or not the race has sexual characteristics (biological genders). At the moment this is only FALSE for skeletons and shadows
+ siemens_coeff Base electrocution coefficient. Basically a multiplier for damage from electrocutions.
+ skinned_type What skin the species drops when gibbed by a gibber machine.
+ special_step_sounds Sounds to override barefeet walking
+ species_language_holder What languages this species can understand and say. Use a language holder datum in this var.
+ species_traits Species-only traits. Can be found in code/__DEFINES/DNA.dm
+ speedmod Multiplier for the race's speed. Positive numbers make it move slower, negative numbers make it move faster.
+ stunmod multiplier for stun durations
+ toxic_food Bitfield for food types that the species absolutely hates, giving them even more disgust than disliked food. Meat is "toxic" to moths, for example.
+ typing_indicator_state Our default override for typing indicator state
+ use_skintones Does the species use skintones or not? As of now only used by humans.
+ wings_icon Current wings icon Procs
+ check_roundstart_eligible Checks if a species is eligible to be picked at roundstart.
+ copy_properties_from Copies some vars and properties over that should be kept when creating a copy of this species.
+ get_biological_state The human species version of /mob/living/carbon/proc/get_biological_state . Depends on the HAS_FLESH and HAS_BONE species traits, having bones lets you have bone wounds, having flesh lets you have burn, slash, and piercing wounds
+ handle_digestion LIFE
+ on_species_gain Proc called when a carbon becomes this species.
+ random_name Generates a random name for a carbon.
+ regenerate_organs Corrects organs in a carbon, removing ones it doesn't need and adding ones it does.
+ Var Details armor
+
+
+
+
+
+ Percentage modifier for overall defense of the race, or less defense, if it's negative.
ass_image
+
+
+
+
+
+ For custom overrides for species ass images
attack_type
+
+
+
+
+
+ Type of damage attack does. Ethereals attack with burn damage for example.
attack_verb
+
+
+
+
+
+ Punch-specific attack verb.
breathid
+
+
+
+
+
+ What gas does this species breathe? Used by suffocation screen alerts, most of actual gas breathing is handled by mutantlungs. See [life.dm][code/modules/mob/living/carbon/human/life.dm]
brutemod
+
+
+
+
+
+ multiplier for brute damage
burnmod
+
+
+
+
+
+ multiplier for burn damage
cold_offset
+
+
+
+
+
+ moves their safe minimum temp by this value.
coldmod
+
+
+
+
+
+ multiplier for damage from cold temperature
damage_overlay_type
+
+
+
+
+
+ What kind of damage overlays (if any) appear on our species when wounded? If this is "", does not add an overlay.
disliked_food
+
+
+
+
+
+ Bitfield for food types that the species dislikes, giving them disgust. Humans hate raw food, for example.
exotic_blood
+
+
+
+
+
+ If your race bleeds something other than bog standard blood, change this to reagent id. For example, ethereals bleed liquid electricity.
exotic_blood_blend_mode
+
+
+
+
+
+ Which blend mode should this species blood use?
exotic_blood_color
+
+
+
+
+
+ Assume human as the default blood colour, override this default by species subtypes
exotic_bloodtype
+
+
+
+
+
+ If your race uses a non standard bloodtype (A+, O-, AB-, etc). For example, lizards have L type blood.
family_heirlooms
+
+
+
+
+
+ List of family heirlooms this species can get with the family heirloom quirk. List of types.
fixed_mut_color
+
+
+
+
+
+ To use MUTCOLOR with a fixed color that's independent of the mcolor feature in DNA.
fly
+
+
+
+
+
+ The actual flying ability given to flying species
flying_species
+
+
+
+
+
+ Is this species a flying species? Used as an easy check for some things
grab_sound
+
+
+
+
+
+ Special sound for grabbing
grad_color
+
+
+
+
+
+ The gradient color used to color the gradient.
grad_style
+
+
+
+
+
+ The gradient style used for the mob's hair.
hair_alpha
+
+
+
+
+
+ The alpha used by the hair. 255 is completely solid, 0 is invisible.
hair_color
+
+
+
+
+
+ This allows races to have specific hair colors. If null, it uses the H's hair/facial hair colors. If "mutcolor", it uses the H's mutant_color. If "fixedmutcolor", it uses fixedmutcolor
heatmod
+
+
+
+
+
+ multiplier for damage from hot temperature
hot_offset
+
+
+
+
+
+ moves their safe maximum temp by this value.
id
+
+
+
+
+
+ If the game needs to manually check your race to do something not included in a proc here, it will use this.
inert_mutation
+
+
+
+
+
+ Special mutation that can be found in the genepool exclusively in this species. Dont leave empty or changing species will be a headache
inherent_biotypes
+
+
+
+
+
+ List of biotypes the mob belongs to. Used by diseases.
inherent_traits
+
+
+
+
+
+ Generic traits tied to having the species.
liked_food
+
+
+
+
+
+ Bitfield for food types that the species likes, giving them a mood boost. Lizards like meat, for example.
meat
+
+
+
+
+
+ What the species drops when gibbed by a gibber machine.
mutant_bodyparts
+
+
+
+
+
+ Visible CURRENT bodyparts that are unique to a species.
+DO NOT USE THIS AS A LIST OF ALL POSSIBLE BODYPARTS AS IT WILL FUCK
+SHIT UP! Changes to this list for non-species specific bodyparts (ie
+cat ears and tails) should be assigned at organ level if possible.
+Assoc values are defaults for given bodyparts, also modified by aforementioned organs.
+They also allow for faster '[]' list access versus 'in'. Other than that, they are useless right now.
+Layer hiding is handled by [/datum/species/proc/handle_mutant_bodyparts] below.
+ Replaces default brain with a different organ
mutant_heart
+
+
+
+
+
+ Replaces default heart with a different organ
mutant_organs
+
+
+
+
+
+ Internal organs that are unique to this race, like a tail.
mutantappendix
+
+
+
+
+
+ Replaces default appendix with a different organ.
mutantears
+
+
+
+
+
+ Replaces default ears with a different organ
+ Replaces default lungs with a different organ
+Replaces default eyes with a different organ
mutanthands
+
+
+
+
+
+ Forces an item into this species' hands. Only an honorary mutantthing because this is not an organ and not loaded in the same way, you've been warned to do your research.
mutantliver
+
+
+
+
+
+ Replaces default liver with a different organ
mutantstomach
+
+
+
+
+
+ Replaces default stomach with a different organ
mutanttail
+
+
+
+
+
+ CIT SPECIFIC Mutant tail
mutanttongue
+
+
+
+
+
+ Replaces default tongue with a different organ
name
+
+
+
+
+
+ This is the fluff name. They are displayed on health analyzers and in the character setup menu. Leave them generic for other servers to customize.
no_equip
+
+
+
+
+
+ Inventory slots the race can't equip stuff to. Golems cannot wear jumpsuits, for example.
nojumpsuit
+
+
+
+
+
+ Allows the species to equip items that normally require a jumpsuit without having one equipped. Used by golems.
offset_features
+
+
+
+
+
+ Clothing offsets. If a species has a different body than other species, you can offset clothing so they look less weird.
outfit_important_for_life
+
+
+
+
+
+ A path to an outfit that is important for species life e.g. plasmaman outfit
payday_modifier
+
+
+
+
+
+ multiplier for money paid at payday
punchdamagehigh
+
+
+
+
+
+ Highest possible punch damage this species can give.
punchdamagelow
+
+
+
+
+
+ Lowest possible punch damage this species can give. If this is set to 0, punches will always miss.
punchstunthreshold
+
+
+
+
+
+ Damage at which punches from this race will stun
say_mod
+
+
+
+
+
+ Affects the speech message, for example: Motharula flutters, "My speech message is flutters!"
sexes
+
+
+
+
+
+ Whether or not the race has sexual characteristics (biological genders). At the moment this is only FALSE for skeletons and shadows
siemens_coeff
+
+
+
+
+
+ Base electrocution coefficient. Basically a multiplier for damage from electrocutions.
skinned_type
+
+
+
+
+
+ What skin the species drops when gibbed by a gibber machine.
special_step_sounds
+
+
+
+
+
+ Sounds to override barefeet walking
species_language_holder
+
+
+
+
+
+ What languages this species can understand and say. Use a language holder datum in this var.
species_traits
+
+
+
+
+
+ Species-only traits. Can be found in code/__DEFINES/DNA.dm
speedmod
+
+
+
+
+
+ Multiplier for the race's speed. Positive numbers make it move slower, negative numbers make it move faster.
stunmod
+
+
+
+
+
+ multiplier for stun durations
toxic_food
+
+
+
+
+
+ Bitfield for food types that the species absolutely hates, giving them even more disgust than disliked food. Meat is "toxic" to moths, for example.
typing_indicator_state
+
+
+
+
+
+ Our default override for typing indicator state
use_skintones
+
+
+
+
+
+ Does the species use skintones or not? As of now only used by humans.
wings_icon
+
+
+
+
+
+ Current wings icon
Proc Details check_roundstart_eligible()
+
+
+
+
+
+ Checks if a species is eligible to be picked at roundstart.
+Checks the config to see if this species is allowed to be picked in the character setup menu.
+Used by /proc/generate_selectable_species .
copy_properties_from
+
+ Copies some vars and properties over that should be kept when creating a copy of this species.
+Used by slimepeople to copy themselves, and by the DNA datum to hardset DNA to a species
+Arguments:
+
+old_species - The species that the carbon used to be before copying
+
+ The human species version of /mob/living/carbon/proc/get_biological_state . Depends on the HAS_FLESH and HAS_BONE species traits, having bones lets you have bone wounds, having flesh lets you have burn, slash, and piercing wounds
+ LIFE
on_species_gain
+
+ Proc called when a carbon becomes this species.
+This sets up and adds/changes/removes things, qualities, abilities, and traits so that the transformation is as smooth and bugfree as possible.
+Produces a [COMSIG_SPECIES_GAIN] signal.
+Arguments:
+
+C - Carbon, this is whoever became the new species.
+old_species - The species that the carbon used to be before becoming this race, used for regenerating organs.
+pref_load - Preferences to be loaded from character setup, loads in preferred mutant things like bodyparts, digilegs, skin color, etc.
+ random_name(gender, unique, lastname)
+
+
+
+
+
+ Generates a random name for a carbon.
+This generates a random unique name based on a human's species and gender.
+Arguments:
+
+gender - The gender that the name should adhere to. Use MALE for male names, use anything else for female names.
+unique - If true, ensures that this new name is not a duplicate of anyone else's name currently on the station.
+lastname - Does this species' naming system adhere to the last name system? Set to false if it doesn't.
+ regenerate_organs
+
+ Corrects organs in a carbon, removing ones it doesn't need and adding ones it does.
+Takes all organ slots, removes organs a species should not have, adds organs a species should have.
+can use replace_current to refresh all organs, creating an entirely new set.
+Arguments:
+
+C - carbon, the owner of the species datum AKA whoever we're regenerating organs in
+old_species - datum, used when regenerate organs is called in a switching species to remove old mutant organs.
+replace_current - boolean, forces all old organs to get deleted whether or not they pass the species' ability to keep that organ
+excluded_zones - list, add zone defines to block organs inside of the zones from getting handled. see headless mutation for an example
+
+
+
+
diff --git a/datum/sprite_accessory/snouts/mam_snouts.html b/datum/sprite_accessory/snouts/mam_snouts.html
new file mode 100644
index 0000000000000..9d13e4ecb849c
--- /dev/null
+++ b/datum/sprite_accessory/snouts/mam_snouts.html
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+ /datum/sprite_accessory/snouts/mam_snouts - SPLURT Station 13
+
+
+
+
+
+
+************ Lizard compatable snoots ***********
+/datum/sprite_accessory/snouts/bird
+name = "Beak"
+icon_state = "bird"
+icon = 'modular_citadel/icons/mob/mam_snouts.dmi'
+color_src = MATRIXED
+/datum/sprite_accessory/snouts/bigbeak
+name = "Big Beak"
+icon_state = "bigbeak"
+icon = 'modular_citadel/icons/mob/mam_snouts.dmi'
+color_src = MATRIXED
+/datum/sprite_accessory/snouts/bug
+name = "Bug"
+icon_state = "bug"
+icon = 'modular_citadel/icons/mob/mam_snouts.dmi'
+extra2 = TRUE
+extra2_color_src = MUTCOLORS3
+/datum/sprite_accessory/snouts/elephant
+name = "Elephant"
+icon_state = "elephant"
+icon = 'modular_citadel/icons/mob/mam_snouts.dmi'
+color_src = MATRIXED
+extra = TRUE
+extra_color_src = MUTCOLORS3
+/datum/sprite_accessory/snouts/lcanid
+name = "Mammal, Long"
+icon_state = "lcanid"
+icon = 'modular_citadel/icons/mob/mam_snouts.dmi'
+color_src = MATRIXED
+/datum/sprite_accessory/snouts/lcanidalt
+name = "Mammal, Long ALT"
+icon_state = "lcanidalt"
+icon = 'modular_citadel/icons/mob/mam_snouts.dmi'
+color_src = MATRIXED
+/datum/sprite_accessory/snouts/scanid
+name = "Mammal, Short"
+icon_state = "scanid"
+icon = 'modular_citadel/icons/mob/mam_snouts.dmi'
+color_src = MATRIXED
+/datum/sprite_accessory/snouts/scanidalt
+name = "Mammal, Short ALT"
+icon_state = "scanidalt"
+icon = 'modular_citadel/icons/mob/mam_snouts.dmi'
+color_src = MATRIXED
+/datum/sprite_accessory/snouts/wolf
+name = "Mammal, Thick"
+icon_state = "wolf"
+icon = 'modular_citadel/icons/mob/mam_snouts.dmi'
+color_src = MATRIXED
+/datum/sprite_accessory/snouts/wolfalt
+name = "Mammal, Thick ALT"
+icon_state = "wolfalt"
+icon = 'modular_citadel/icons/mob/mam_snouts.dmi'
+color_src = MATRIXED
+/datum/sprite_accessory/snouts/redpanda
+name = "WahCoon"
+icon_state = "wah"
+icon = 'modular_citadel/icons/mob/mam_snouts.dmi'
+color_src = MATRIXED
+/datum/sprite_accessory/snouts/rhino
+name = "Horn"
+icon_state = "rhino"
+icon = 'modular_citadel/icons/mob/mam_snouts.dmi'
+color_src = MATRIXED
+extra = TRUE
+extra = MUTCOLORS3
+/datum/sprite_accessory/snouts/rodent
+name = "Rodent"
+icon_state = "rodent"
+icon = 'modular_citadel/icons/mob/mam_snouts.dmi'
+color_src = MATRIXED
+/datum/sprite_accessory/snouts/husky
+name = "Husky"
+icon_state = "husky"
+icon = 'modular_citadel/icons/mob/mam_snouts.dmi'
+color_src = MATRIXED
+/datum/sprite_accessory/snouts/otie
+name = "Otie"
+icon_state = "otie"
+icon = 'modular_citadel/icons/mob/mam_snouts.dmi'
+color_src = MATRIXED
+/datum/sprite_accessory/snouts/pede
+name = "Scolipede"
+icon_state = "pede"
+icon = 'modular_citadel/icons/mob/mam_snouts.dmi'
+color_src = MATRIXED
+/datum/sprite_accessory/snouts/sergal
+name = "Sergal"
+icon_state = "sergal"
+icon = 'modular_citadel/icons/mob/mam_snouts.dmi'
+color_src = MATRIXED
+/datum/sprite_accessory/snouts/shark
+name = "Shark"
+icon_state = "shark"
+color_src = MATRIXED
+icon = 'modular_citadel/icons/mob/mam_snouts.dmi'
+/datum/sprite_accessory/snouts/toucan
+name = "Toucan"
+icon_state = "toucan"
+icon = 'modular_citadel/icons/mob/mam_snouts.dmi'
+color_src = MATRIXED
+Mammal Snouts
+
+
+
diff --git a/datum/sprite_accessory/tails_animated/lizard.html b/datum/sprite_accessory/tails_animated/lizard.html
new file mode 100644
index 0000000000000..80b71b85a2417
--- /dev/null
+++ b/datum/sprite_accessory/tails_animated/lizard.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /datum/sprite_accessory/tails_animated/lizard - SPLURT Station 13
+
+
+
+
+
+
+Proc Details
+ Lizard Tails
+
+
+
diff --git a/datum/stack_canary.html b/datum/stack_canary.html
new file mode 100644
index 0000000000000..52b68fcaf2aa1
--- /dev/null
+++ b/datum/stack_canary.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /datum/stack_canary - SPLURT Station 13
+
+
+
+
+
+
+Stack canary. Will go away if the stack it was primed by is ended by byond for return or stack overflow reasons.
Procs
+ use_variable empty proc to avoid warnings about unused variables. Call this proc on your canary in the stack it's watching.
Proc Details use_variable()
+
+
+
+
+
+ empty proc to avoid warnings about unused variables. Call this proc on your canary in the stack it's watching.
+
+
+
diff --git a/datum/stack_end_detector.html b/datum/stack_end_detector.html
new file mode 100644
index 0000000000000..95267583699ef
--- /dev/null
+++ b/datum/stack_end_detector.html
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+ /datum/stack_end_detector - SPLURT Station 13
+
+
+
+
+
+
+Stack End Detector.
+Can detect if a given code stack has exited, used by the mc for stack overflow detection.
Procs
+ check Returns true if the stack is still going. Calling before the canary has been primed also returns true
+ prime_canary
Proc Details check()
+
+
+
+
+
+ Returns true if the stack is still going. Calling before the canary has been primed also returns true
prime_canary()
+
+
+
+
+
+
+Prime the stack overflow detector.
+Store the return value of this proc call in a proc level var.
+Can only be called once.
+
+
+
+
diff --git a/datum/stack_recipe.html b/datum/stack_recipe.html
new file mode 100644
index 0000000000000..561953bfb4848
--- /dev/null
+++ b/datum/stack_recipe.html
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+ /datum/stack_recipe - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ applies_mats If TRUE, the created atom will gain custom mat datums
+ max_res_amount Max amount of resulting atoms made
+ on_floor If the atom requires a floor below
+ one_per_turf If only one of the resulting atom is allowed per turf
+ placement_checks Bitflag of additional placement checks required to place. (STACK_CHECK_CARDINALS|STACK_CHECK_ADJACENT)
+ req_amount Amount of stack required to make
+ res_amount Amount of resulting atoms made
+ result_type What atom the recipe makes, typepath
+ time How long it takes to make
+ title The title of the recipe
+ trait_booster What trait, if any, boosts the construction speed of this item
+ trait_modifier How much the trait above, if supplied, boosts the construct speed of this item
+ Var Details applies_mats
+
+
+
+
+
+ If TRUE, the created atom will gain custom mat datums
max_res_amount
+
+
+
+
+
+ Max amount of resulting atoms made
on_floor
+
+
+
+
+
+ If the atom requires a floor below
one_per_turf
+
+
+
+
+
+ If only one of the resulting atom is allowed per turf
placement_checks
+
+
+
+
+
+ Bitflag of additional placement checks required to place. (STACK_CHECK_CARDINALS|STACK_CHECK_ADJACENT)
req_amount
+
+
+
+
+
+ Amount of stack required to make
res_amount
+
+
+
+
+
+ Amount of resulting atoms made
result_type
+
+
+
+
+
+ What atom the recipe makes, typepath
time
+
+
+
+
+
+ How long it takes to make
title
+
+
+
+
+
+ The title of the recipe
trait_booster
+
+
+
+
+
+ What trait, if any, boosts the construction speed of this item
trait_modifier
+
+
+
+
+
+ How much the trait above, if supplied, boosts the construct speed of this item
+
+
+
diff --git a/datum/station_trait.html b/datum/station_trait.html
new file mode 100644
index 0000000000000..564cbc6869551
--- /dev/null
+++ b/datum/station_trait.html
@@ -0,0 +1,127 @@
+
+
+
+
+
+
+ /datum/station_trait - SPLURT Station 13
+
+
+
+
+
+
+Base class of station traits. These are used to influence rounds in one way or the other by influencing the levers of the station.
Vars
+ blacklist What traits are incompatible with this one?
+ can_revert Whether or not this trait can be reverted by an admin
+ force Whether this trait is always enabled; generally used for debugging
+ name Name of the trait
+ report_message What message to show in the centcom report?
+ show_in_report Does this trait show in the centcom report?
+ trait_flags Extra flags for station traits such as it being abstract
+ trait_processes Whether or not this trait uses process()
+ trait_to_give What code-trait does this station trait give? gives none if null
+ trait_type The type of this trait. Used to classify how this trait influences the station
+ weight Chance relative to other traits of its type to be picked Procs
+ get_report type of info the centcom report has on this trait, if any.
+ on_round_start Proc ran when round starts. Use this for roundstart effects.
+ revert Will attempt to revert the station trait, used by admins.
+ Var Details blacklist
+
+
+
+
+
+ What traits are incompatible with this one?
can_revert
+
+
+
+
+
+ Whether or not this trait can be reverted by an admin
force
+
+
+
+
+
+ Whether this trait is always enabled; generally used for debugging
name
+
+
+
+
+
+ Name of the trait
report_message
+
+
+
+
+
+ What message to show in the centcom report?
show_in_report
+
+
+
+
+
+ Does this trait show in the centcom report?
trait_flags
+
+
+
+
+
+ Extra flags for station traits such as it being abstract
trait_processes
+
+
+
+
+
+ Whether or not this trait uses process()
trait_to_give
+
+
+
+
+
+ What code-trait does this station trait give? gives none if null
trait_type
+
+
+
+
+
+ The type of this trait. Used to classify how this trait influences the station
weight
+
+
+
+
+
+ Chance relative to other traits of its type to be picked
Proc Details get_report()
+
+
+
+
+
+ type of info the centcom report has on this trait, if any.
on_round_start()
+
+
+
+
+
+ Proc ran when round starts. Use this for roundstart effects.
revert()
+
+
+
+
+
+ Will attempt to revert the station trait, used by admins.
+
+
+
diff --git a/datum/station_trait/bot_languages.html b/datum/station_trait/bot_languages.html
new file mode 100644
index 0000000000000..2c7b1193e818d
--- /dev/null
+++ b/datum/station_trait/bot_languages.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /datum/station_trait/bot_languages - SPLURT Station 13
+
+
+
+
+
+
+Proc Details on_round_start()
+
+
+
+
+
+ What "caused" our robots to go haywire (fluff)
+
+
+
diff --git a/datum/station_trait/ian_adventure.html b/datum/station_trait/ian_adventure.html
new file mode 100644
index 0000000000000..8fa0ca9786e13
--- /dev/null
+++ b/datum/station_trait/ian_adventure.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /datum/station_trait/ian_adventure - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ do_corgi_respawn Moves the new dog somewhere safe, equips it with the old one's inventory and makes it deadchat_playable.
Proc Details do_corgi_respawn
+
+ Moves the new dog somewhere safe, equips it with the old one's inventory and makes it deadchat_playable.
+
+
+
diff --git a/datum/station_trait/random_event_weight_modifier.html b/datum/station_trait/random_event_weight_modifier.html
new file mode 100644
index 0000000000000..5c111fb446073
--- /dev/null
+++ b/datum/station_trait/random_event_weight_modifier.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ /datum/station_trait/random_event_weight_modifier - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details event_control_path
+
+
+
+
+
+ The path to the round_event_control that we modify.
max_occurrences_modifier
+
+
+
+
+
+ Flat modifier added to the amount of max occurances the random event can have.
weight_multiplier
+
+
+
+
+
+ Multiplier applied to the weight of the event.
+
+
+
diff --git a/datum/status_effect.html b/datum/status_effect.html
new file mode 100644
index 0000000000000..f089667ac5357
--- /dev/null
+++ b/datum/status_effect.html
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+ /datum/status_effect - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ blocks_sprint If this is TRUE, the user will have sprint forcefully disabled while this is active.
+ status_type How many of the effect can be on one mob, and what happens when you try to add another
+ tick do we tick()? Procs
+ action_cooldown_mod Multiplied to clickdelays
+ before_remove Called before being removed; returning FALSE will cancel removal
+ Var Details blocks_sprint
+
+
+
+
+
+ If this is TRUE, the user will have sprint forcefully disabled while this is active.
status_type
+
+
+
+
+
+ How many of the effect can be on one mob, and what happens when you try to add another
tick
+
+
+
+
+
+ do we tick()?
Proc Details action_cooldown_mod()
+
+
+
+
+
+ Multiplied to clickdelays
before_remove()
+
+
+
+
+
+ Called before being removed; returning FALSE will cancel removal
+
+
+
diff --git a/datum/status_effect/cloudstruck.html b/datum/status_effect/cloudstruck.html
new file mode 100644
index 0000000000000..17c3a8fb0afe0
--- /dev/null
+++ b/datum/status_effect/cloudstruck.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /datum/status_effect/cloudstruck - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ mob_overlay This overlay is applied to the owner for the duration of the effect.
+ Var Details mob_overlay
+
+
+
+
+
+ This overlay is applied to the owner for the duration of the effect.
+
+
+
diff --git a/datum/status_effect/eldritch.html b/datum/status_effect/eldritch.html
new file mode 100644
index 0000000000000..7105f6fd6d77a
--- /dev/null
+++ b/datum/status_effect/eldritch.html
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+ /datum/status_effect/eldritch - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details effect_sprite
+
+
+
+
+
+ path for the underlay
marked_underlay
+
+
+
+
+
+ underlay used to indicate that someone is marked
Proc Details on_effect()
+
+
+
+
+
+ What happens when this mark gets popped
+Adds actual functionality to each mark
+
+
+
diff --git a/datum/status_effect/eldritch/ash.html b/datum/status_effect/eldritch/ash.html
new file mode 100644
index 0000000000000..f2a5316924d2f
--- /dev/null
+++ b/datum/status_effect/eldritch/ash.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /datum/status_effect/eldritch/ash - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ repetitions Dictates how much damage and stamina loss this mark will cause.
+ Var Details repetitions
+
+
+
+
+
+ Dictates how much damage and stamina loss this mark will cause.
+
+
+
diff --git a/datum/status_effect/ice_block_talisman.html b/datum/status_effect/ice_block_talisman.html
new file mode 100644
index 0000000000000..1f5660030fac6
--- /dev/null
+++ b/datum/status_effect/ice_block_talisman.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /datum/status_effect/ice_block_talisman - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ cube Stored icon overlay for the hit mob, removed when effect is removed Procs
+ owner_moved Blocks movement from the status effect owner
+ Var Details cube
+
+
+
+
+
+ Stored icon overlay for the hit mob, removed when effect is removed
Proc Details owner_moved()
+
+
+
+
+
+ Blocks movement from the status effect owner
+
+
+
diff --git a/datum/status_effect/limp.html b/datum/status_effect/limp.html
new file mode 100644
index 0000000000000..358c304a27788
--- /dev/null
+++ b/datum/status_effect/limp.html
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+ /datum/status_effect/limp - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ left The left leg of the limping person
+ next_leg Which leg we're limping with next
+ right The right leg of the limping person
+ slowdown_left How many deciseconds we limp for on the left leg
+ slowdown_right How many deciseconds we limp for on the right leg
+ Var Details
+ The left leg of the limping person
+ Which leg we're limping with next
+ The right leg of the limping person
slowdown_left
+
+
+
+
+
+ How many deciseconds we limp for on the left leg
slowdown_right
+
+
+
+
+
+ How many deciseconds we limp for on the right leg
+
+
+
diff --git a/datum/status_effect/offering.html b/datum/status_effect/offering.html
new file mode 100644
index 0000000000000..75eb56fb1e483
--- /dev/null
+++ b/datum/status_effect/offering.html
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+ /datum/status_effect/offering - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ give_alert_type The type of alert given to people when offered, in case you need to override some behavior (like for high-fives)
+ offered_item The actual item being offered
+ possible_takers The people who were offered this item at the start Procs
+ check_owner_in_range The offerer moved, see if anyone is out of range now
+ check_taker_in_range One of our possible takers moved, see if they left us hanging
+ dropped_item We lost the item, give it up
+ register_candidate Hook up the specified carbon mob to be offered the item in question, give them the alert and signals and all
+ remove_candidate Remove the alert and signals for the specified carbon mob. Automatically removes the status effect when we lost the last taker
+ Var Details give_alert_type
+
+
+
+
+
+ The type of alert given to people when offered, in case you need to override some behavior (like for high-fives)
offered_item
+
+
+
+
+
+ The actual item being offered
possible_takers
+
+
+
+
+
+ The people who were offered this item at the start
Proc Details check_owner_in_range
+
+ The offerer moved, see if anyone is out of range now
check_taker_in_range
+
+ One of our possible takers moved, see if they left us hanging
dropped_item
+
+ We lost the item, give it up
register_candidate
+
+ Hook up the specified carbon mob to be offered the item in question, give them the alert and signals and all
remove_candidate
+
+ Remove the alert and signals for the specified carbon mob. Automatically removes the status effect when we lost the last taker
+
+
+
diff --git a/datum/status_effect/wound.html b/datum/status_effect/wound.html
new file mode 100644
index 0000000000000..e32c6b90daf0a
--- /dev/null
+++ b/datum/status_effect/wound.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /datum/status_effect/wound - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ check_remove check if the wound getting removed is the wound we're tied to
Proc Details
+ check if the wound getting removed is the wound we're tied to
+
+
+
diff --git a/datum/strip_menu.html b/datum/strip_menu.html
new file mode 100644
index 0000000000000..93a8dbf49e5ce
--- /dev/null
+++ b/datum/strip_menu.html
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+ /datum/strip_menu - SPLURT Station 13
+
+
+
+
+
+
+A representation of the stripping UI
Vars
+ interactions A lazy list of user mobs to a list of strip menu keys that they're interacting with
+ owner The owner who has the element /datum/element/strippable
+ strippable The strippable element itself Procs
+ ui_act Customize the strip menu
+ Var Details interactions
+
+
+
+
+
+ A lazy list of user mobs to a list of strip menu keys that they're interacting with
+ The owner who has the element /datum/element/strippable
+ The strippable element itself
Proc Details ui_act
+
+ Customize the strip menu
+
+
+
diff --git a/datum/strippable_item.html b/datum/strippable_item.html
new file mode 100644
index 0000000000000..856301b3f9926
--- /dev/null
+++ b/datum/strippable_item.html
@@ -0,0 +1,142 @@
+
+
+
+
+
+
+ /datum/strippable_item - SPLURT Station 13
+
+
+
+
+
+
+A representation of an item that can be stripped down
Vars
+ key The STRIPPABLE_ITEM_* key
+ warn_dangerous_clothing Should we warn about dangerous clothing? Procs
+ alternate_action Performs an alternative action on this strippable_item.
+has_alternate_action
needs to be TRUE.
+ finish_equip The proc that places the item on the source. This should not yield.
+ finish_unequip The proc that unequips the item from the source. This should not yield.
+ get_alternate_action Returns the ID of this item's strippable action.
+Return null
if there is no alternate action.
+Any return value of this must be in StripMenu.
+ get_item Gets the item from the given source.
+ get_obscuring Returns a STRIPPABLE_OBSCURING_* define to report on whether or not this is obscured.
+ should_show Returns whether or not this item should show.
+ start_equip Start the equipping process. This is the proc you should yield in.
+Returns TRUE/FALSE depending on if it is allowed.
+ start_unequip Start the unequipping process. This is the proc you should yield in.
+Returns TRUE/FALSE depending on if it is allowed.
+ try_equip Tries to equip the item onto the given source.
+Returns TRUE/FALSE depending on if it is allowed.
+This should be used for checking if an item CAN be equipped.
+It should not perform the equipping itself.
+ try_unequip Tries to unequip the item from the given source.
+Returns TRUE/FALSE depending on if it is allowed.
+This should be used for checking if it CAN be unequipped.
+It should not perform the unequipping itself.
+ Var Details key
+
+
+
+
+
+ The STRIPPABLE_ITEM_* key
warn_dangerous_clothing
+
+
+
+
+
+ Should we warn about dangerous clothing?
Proc Details alternate_action
+
+ Performs an alternative action on this strippable_item.
+has_alternate_action
needs to be TRUE.
finish_equip
+
+ The proc that places the item on the source. This should not yield.
finish_unequip
+
+ The proc that unequips the item from the source. This should not yield.
get_alternate_action
+
+ Returns the ID of this item's strippable action.
+Return null
if there is no alternate action.
+Any return value of this must be in StripMenu.
get_item
+
+ Gets the item from the given source.
get_obscuring
+
+ Returns a STRIPPABLE_OBSCURING_* define to report on whether or not this is obscured.
should_show
+
+ Returns whether or not this item should show.
start_equip
+
+ Start the equipping process. This is the proc you should yield in.
+Returns TRUE/FALSE depending on if it is allowed.
start_unequip
+
+ Start the unequipping process. This is the proc you should yield in.
+Returns TRUE/FALSE depending on if it is allowed.
try_equip
+
+ Tries to equip the item onto the given source.
+Returns TRUE/FALSE depending on if it is allowed.
+This should be used for checking if an item CAN be equipped.
+It should not perform the equipping itself.
try_unequip
+
+ Tries to unequip the item from the given source.
+Returns TRUE/FALSE depending on if it is allowed.
+This should be used for checking if it CAN be unequipped.
+It should not perform the unequipping itself.
+
+
+
diff --git a/datum/strippable_item/hand.html b/datum/strippable_item/hand.html
new file mode 100644
index 0000000000000..6eab127d7390c
--- /dev/null
+++ b/datum/strippable_item/hand.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /datum/strippable_item/hand - SPLURT Station 13
+
+
+
+
+
+
+A strippable item for a hand
+ Var Details hand_index
+
+
+
+
+
+ Which hand?
+
+
+
diff --git a/datum/strippable_item/mob_item_slot.html b/datum/strippable_item/mob_item_slot.html
new file mode 100644
index 0000000000000..6f7d6822b548e
--- /dev/null
+++ b/datum/strippable_item/mob_item_slot.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /datum/strippable_item/mob_item_slot - SPLURT Station 13
+
+
+
+
+
+
+A preset for equipping items onto mob slots
+ Var Details item_slot
+
+
+
+
+
+ The ITEM_SLOT_* to equip to.
Proc Details get_equip_delay
+
+ Returns the delay of equipping this item to a mob
+
+
+
diff --git a/datum/strippable_item/mob_item_slot/pocket.html b/datum/strippable_item/mob_item_slot/pocket.html
new file mode 100644
index 0000000000000..39ec914bc31d8
--- /dev/null
+++ b/datum/strippable_item/mob_item_slot/pocket.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /datum/strippable_item/mob_item_slot/pocket - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ pocket_side Which pocket we're referencing. Used for visible text.
+ Var Details pocket_side
+
+
+
+
+
+ Which pocket we're referencing. Used for visible text.
+
+
+
diff --git a/datum/summon_weapon.html b/datum/summon_weapon.html
new file mode 100644
index 0000000000000..b2702b7f66f29
--- /dev/null
+++ b/datum/summon_weapon.html
@@ -0,0 +1,226 @@
+
+
+
+
+
+
+ /datum/summon_weapon - SPLURT Station 13
+
+
+
+
+
+
+A singular summoned object
+How summon weapons work:
+Reset() - makes it go back to its master.
+Target() - locks onto a target for a duration
+The biggest challenge is synchronizing animations.
+Variables keep track of when things tick, but,
+animations are client-timed, and not server-timed
+Animations:
+The weapon can only track its "intended" angle and dist
+"Current" pixel x/y are always calculated relative to a target from the current orbiting atom the physical effect is on
+There's 3 animations,
+MoveTo(location, angle, dist, rotation)
+Orbit(location)
+Rotate(degrees)
+And an non-animation that just snaps it to a location,
+HardReset(location)
+ Var Details angle
+
+
+
+
+
+ current angle from victim - clockwise from 0. null if not attacking.
angle_vary
+
+
+
+
+
+ rand dist to rotate during reattack phase
animation_lock
+
+
+
+
+
+ animation locked until
animation_timerid
+
+
+
+
+
+ animation lock timer
appearance
+
+
+
+
+
+ mutable_appearance to use, will skip making from icon/icon state if so
+ the actual effect
attack_damage
+
+
+
+
+
+ attack damage
attack_length
+
+
+
+
+
+ attack length in deciseconds - this is the attack animation speed in total
attack_sound
+
+
+
+
+
+ attack sound
attack_speed
+
+
+
+
+
+ attack delay in deciseconds - this is time spent between attacks
attack_type
+
+
+
+
+
+ attack damtype
attack_verb
+
+
+
+
+
+ attack verb
dist
+
+
+
+
+
+ current distance from victim - pixels
+ host
icon
+
+
+
+
+
+ icon file
icon_state
+
+
+
+
+
+ icon state
name
+
+
+
+
+
+ name
orbit_dist
+
+
+
+
+
+ orbit distance from victim - pixels
orbit_dist_vary
+
+
+
+
+
+ orbit distance variation from victim
reset_speed
+
+
+
+
+
+ reset animation duration
reset_timerid
+
+
+
+
+
+ reset timerid
rotation
+
+
+
+
+
+ current rotation - angles clockwise from north
state
+
+
+
+
+
+ current state
victim
+
+
+
+
+
+ currently locked attack target
Proc Details MoveTo(/atom /destination, /atom /relative_to, angle, dist, rotation, time)
+
+
+
+
+
+ relative to defaults to current location
Rotate(degrees, time, rotation)
+
+
+
+
+
+ rotation defaults to facing towards locked atom
+
+
+
diff --git a/datum/summon_weapon_host.html b/datum/summon_weapon_host.html
new file mode 100644
index 0000000000000..48aa5236c52c7
--- /dev/null
+++ b/datum/summon_weapon_host.html
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+ /datum/summon_weapon_host - SPLURT Station 13
+
+
+
+
+
+
+Serves as the master datum for summon weapons
Vars
+ active suppressed?
+ attacking active projectiles - refreshing a projectile reorders the list, so if they all have the same stack durations, you can trust the list to have last-refreshed at [1]
+ controlled actual projectiles
+ idle idle projectiles
+ master master atom
+ range range
+ stack_time default stack time
+ weapon_type projectile type
+ Var Details active
+
+
+
+
+
+ suppressed?
attacking
+ – /list/datum/summon_weapon
+
+
+
+
+ active projectiles - refreshing a projectile reorders the list, so if they all have the same stack durations, you can trust the list to have last-refreshed at [1]
controlled
+ – /list/datum/summon_weapon
+
+
+
+
+ actual projectiles
idle
+ – /list/datum/summon_weapon
+
+
+
+
+ idle projectiles
master
+
+
+
+
+
+ master atom
range
+
+
+
+
+
+ range
stack_time
+
+
+
+
+
+ default stack time
weapon_type
+
+
+
+
+
+ projectile type
+
+
+
diff --git a/datum/supply_pack/misc/syndicate.html b/datum/supply_pack/misc/syndicate.html
new file mode 100644
index 0000000000000..9740e353a7fb3
--- /dev/null
+++ b/datum/supply_pack/misc/syndicate.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ /datum/supply_pack/misc/syndicate - SPLURT Station 13
+
+
+
+
+
+
+Special supply crate that generates random syndicate gear up to a determined TC value
Vars
+ contains Cannot be ordered via cargo
+ uplink_flags Total TC worth of contained uplink items Procs
+ fill Syndicate Packs
+ Var Details contains
+
+
+
+
+
+ Cannot be ordered via cargo
uplink_flags
+
+
+
+
+
+ Total TC worth of contained uplink items
Proc Details
+ Syndicate Packs
+
+
+
diff --git a/datum/team/gang.html b/datum/team/gang.html
new file mode 100644
index 0000000000000..79b1892a4895f
--- /dev/null
+++ b/datum/team/gang.html
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+ /datum/team/gang - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ acceptable_clothes The list of clothes that are acceptable to show allegiance to this family.
+ current_theme The current theme. Used to pull important stuff such as spawning equipment and objectives.
+ free_clothes The list of clothes that are given to family members upon induction into the family.
+ gang_id The abbreviation of this family.
+ my_gang_datum The specific, occupied family member antagonist datum that is used to reach the handler / check objectives, and from which the above properties (sans points) are inherited. Procs
+ rename_gangster Allow gangs to have custom naming schemes for their gangsters.
+ Var Details acceptable_clothes
+
+
+
+
+
+ The list of clothes that are acceptable to show allegiance to this family.
+ The current theme. Used to pull important stuff such as spawning equipment and objectives.
free_clothes
+
+
+
+
+
+ The list of clothes that are given to family members upon induction into the family.
gang_id
+
+
+
+
+
+ The abbreviation of this family.
+ The specific, occupied family member antagonist datum that is used to reach the handler / check objectives, and from which the above properties (sans points) are inherited.
Proc Details rename_gangster(/datum /mind /gangster, original_name, starter_gangster)
+
+
+
+
+
+ Allow gangs to have custom naming schemes for their gangsters.
+
+
+
diff --git a/datum/team/revolution.html b/datum/team/revolution.html
new file mode 100644
index 0000000000000..8789a26d8919b
--- /dev/null
+++ b/datum/team/revolution.html
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+ /datum/team/revolution - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ check_heads_victory Checks if heads have won
+ check_rev_victory Checks if revs have won
+ process_victory Updates the state of the world depending on if revs won or loss.
+Returns who won, at which case this method should no longer be called.
+If revs_win_injection_amount is passed, then that amount of threat will be added if the revs win.
+ round_result Mutates the ticker to report that the revs have won
Proc Details check_heads_victory()
+
+
+
+
+
+ Checks if heads have won
check_rev_victory()
+
+
+
+
+
+ Checks if revs have won
process_victory(revs_win_injection_amount)
+
+
+
+
+
+ Updates the state of the world depending on if revs won or loss.
+Returns who won, at which case this method should no longer be called.
+If revs_win_injection_amount is passed, then that amount of threat will be added if the revs win.
round_result(finished)
+
+
+
+
+
+ Mutates the ticker to report that the revs have won
+
+
+
diff --git a/datum/tgs_api/v5.html b/datum/tgs_api/v5.html
new file mode 100644
index 0000000000000..ae647987fd3b8
--- /dev/null
+++ b/datum/tgs_api/v5.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /datum/tgs_api/v5 - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ intercepted_message_queue List of chat messages list()s that attempted to be sent during a topic call. To be bundled in the result of the call
+ offline_message_queue List of chat messages list()s that attempted to be sent during a topic call. To be bundled in the result of the call
+ Var Details intercepted_message_queue
+
+
+
+
+
+ List of chat messages list()s that attempted to be sent during a topic call. To be bundled in the result of the call
offline_message_queue
+
+
+
+
+
+ List of chat messages list()s that attempted to be sent during a topic call. To be bundled in the result of the call
+
+
+
diff --git a/datum/tgs_chat_channel.html b/datum/tgs_chat_channel.html
new file mode 100644
index 0000000000000..8c134df9976ad
--- /dev/null
+++ b/datum/tgs_chat_channel.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+ /datum/tgs_chat_channel - SPLURT Station 13
+
+
+
+
+
+
+Represents a connected chat channel.
+ Var Details connection_name
+
+
+
+
+
+ Name of the chat connection. This is the IRC server address or the Discord guild.
custom_tag
+
+
+
+
+
+ Tag string associated with the channel in TGS.
embeds_supported
+
+
+
+
+
+ [TRUE]/[FALSE] if the channel supports embeds.
friendly_name
+
+
+
+
+
+ User friendly name of the channel.
id
+
+
+
+
+
+ TGS internal channel ID.
is_admin_channel
+
+
+
+
+
+ [TRUE]/[FALSE] based on if the server operator has marked this channel for game admins only.
is_private_channel
+
+
+
+
+
+ [TRUE]/[FALSE] if the channel is a private message channel for a /datum/tgs_chat_user .
+
+
+
diff --git a/datum/tgs_chat_command.html b/datum/tgs_chat_command.html
new file mode 100644
index 0000000000000..8e52e7bf83587
--- /dev/null
+++ b/datum/tgs_chat_command.html
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+ /datum/tgs_chat_command - SPLURT Station 13
+
+
+
+
+
+
+User definable chat command.
Vars
+ admin_only If this command should be available to game administrators only.
+ help_text The help text displayed for this command.
+ ignore_type A subtype of /datum/tgs_chat_command that is ignored when enumerating available commands. Use this to create shared base /datums for commands.
+ name The string to trigger this command on a chat bot. e.g @bot name ...
or !tgs name ...
. Procs
+ Run Process command activation. Should return a /datum/tgs_message_content to respond to the issuer with.
+ Var Details admin_only
+
+
+
+
+
+ If this command should be available to game administrators only.
help_text
+
+
+
+
+
+ The help text displayed for this command.
ignore_type
+
+
+
+
+
+ A subtype of /datum/tgs_chat_command that is ignored when enumerating available commands. Use this to create shared base /datums for commands.
name
+
+
+
+
+
+ The string to trigger this command on a chat bot. e.g @bot name ...
or !tgs name ...
.
Proc Details
+ Process command activation. Should return a /datum/tgs_message_content to respond to the issuer with.
+sender - The /datum/tgs_chat_user who issued the command.
+params - The trimmed string following the command `/datum/tgs_chat_command/var/name].
+
+
+
diff --git a/datum/tgs_chat_embed/footer.html b/datum/tgs_chat_embed/footer.html
new file mode 100644
index 0000000000000..5ed03fa42017c
--- /dev/null
+++ b/datum/tgs_chat_embed/footer.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /datum/tgs_chat_embed/footer - SPLURT Station 13
+
+
+
+
+
+
+See https://discord.com/developers/docs/resources/channel#embed-object-embed-footer-structure for details.
Vars
+ text Must be set in New().
+ Var Details text
+
+
+
+
+
+ Must be set in New().
+
+
+
diff --git a/datum/tgs_chat_embed/media.html b/datum/tgs_chat_embed/media.html
new file mode 100644
index 0000000000000..e7ea3e2b3021c
--- /dev/null
+++ b/datum/tgs_chat_embed/media.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /datum/tgs_chat_embed/media - SPLURT Station 13
+
+
+
+
+
+
+Common datum for similar discord embed medias.
Vars
+ url Must be set in New().
+ Var Details url
+
+
+
+
+
+ Must be set in New().
+
+
+
diff --git a/datum/tgs_chat_embed/structure.html b/datum/tgs_chat_embed/structure.html
new file mode 100644
index 0000000000000..f8a35296f747b
--- /dev/null
+++ b/datum/tgs_chat_embed/structure.html
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+ /datum/tgs_chat_embed/structure - SPLURT Station 13
+
+
+
+
+
+
+User definable chat embed. Currently mirrors Discord chat embeds. See https://discord.com/developers/docs/resources/channel#embed-object-embed-structure for details.
Vars
+ colour Colour must be #AARRGGBB or #RRGGBB hex string.
+ image See https://discord.com/developers/docs/resources/channel#embed-object-embed-image-structure for details.
+ thumbnail See https://discord.com/developers/docs/resources/channel#embed-object-embed-thumbnail-structure for details.
+ timestamp Timestamp must be encoded as: time2text(world.timeofday, "YYYY-MM-DD hh:mm:ss"). Use the active timezone.
+ video See https://discord.com/developers/docs/resources/channel#embed-object-embed-image-structure for details.
+ Var Details colour
+
+
+
+
+
+ Colour must be #AARRGGBB or #RRGGBB hex string.
+ See https://discord.com/developers/docs/resources/channel#embed-object-embed-image-structure for details.
+ See https://discord.com/developers/docs/resources/channel#embed-object-embed-thumbnail-structure for details.
timestamp
+
+
+
+
+
+ Timestamp must be encoded as: time2text(world.timeofday, "YYYY-MM-DD hh:mm:ss"). Use the active timezone.
+ See https://discord.com/developers/docs/resources/channel#embed-object-embed-image-structure for details.
+
+
+
diff --git a/datum/tgs_chat_user.html b/datum/tgs_chat_user.html
new file mode 100644
index 0000000000000..48ab7b00224cd
--- /dev/null
+++ b/datum/tgs_chat_user.html
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+ /datum/tgs_chat_user - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details
+ The /datum/tgs_chat_channel the user was from.
friendly_name
+
+
+
+
+
+ The user's display name.
id
+
+
+
+
+
+ TGS internal user ID.
mention
+
+
+
+
+
+ The string to use to ping this user in a message.
+
+
+
diff --git a/datum/tgs_event_handler.html b/datum/tgs_event_handler.html
new file mode 100644
index 0000000000000..97217f6672dd3
--- /dev/null
+++ b/datum/tgs_event_handler.html
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+ /datum/tgs_event_handler - SPLURT Station 13
+
+
+
+
+
+
+User definable handler for TGS events.
+ Var Details receive_health_checks
+
+
+
+
+
+ If the handler receieves TGS_EVENT_HEALTH_CHECK events.
Proc Details HandleEvent(event_code, ...)
+
+
+
+
+
+ User definable callback for handling TGS events.
+event_code - One of the TGS_EVENT_ defines. Extra parameters will be documented in each.
+
+
+
diff --git a/datum/tgs_message_content.html b/datum/tgs_message_content.html
new file mode 100644
index 0000000000000..0dbe246b8887d
--- /dev/null
+++ b/datum/tgs_message_content.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /datum/tgs_message_content - SPLURT Station 13
+
+
+
+
+
+
+User definable chat message.
Vars
+ embed The /datum/tgs_chat_embed to embed in the message. Not supported on all chat providers.
+ text The tring content of the message. Must be provided in New().
+ Var Details
+ The /datum/tgs_chat_embed to embed in the message. Not supported on all chat providers.
text
+
+
+
+
+
+ The tring content of the message. Must be provided in New().
+
+
+
diff --git a/datum/tgs_revision_information.html b/datum/tgs_revision_information.html
new file mode 100644
index 0000000000000..aed490192d9a0
--- /dev/null
+++ b/datum/tgs_revision_information.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ /datum/tgs_revision_information - SPLURT Station 13
+
+
+
+
+
+
+Represents git revision information.
Vars
+ commit Full SHA of the commit.
+ origin_commit Full sha of last known remote commit. This may be null if the TGS repository is not currently tracking a remote branch.
+ timestamp ISO 8601 timestamp of when the commit was created.
+ Var Details commit
+
+
+
+
+
+ Full SHA of the commit.
origin_commit
+
+
+
+
+
+ Full sha of last known remote commit. This may be null if the TGS repository is not currently tracking a remote branch.
timestamp
+
+
+
+
+
+ ISO 8601 timestamp of when the commit was created.
+
+
+
diff --git a/datum/tgs_revision_information/test_merge.html b/datum/tgs_revision_information/test_merge.html
new file mode 100644
index 0000000000000..98354f0c3f475
--- /dev/null
+++ b/datum/tgs_revision_information/test_merge.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+ /datum/tgs_revision_information/test_merge - SPLURT Station 13
+
+
+
+
+
+
+Represents a merge of a GitHub pull request.
Vars
+ author The Username of the test merge source's author.
+ body The test merge source's body when it was merged.
+ comment Optional comment left by the TGS user who initiated the merge.
+ head_commit The SHA of the test merge when that was merged.
+ number The test merge number.
+ title The test merge source's title when it was merged.
+ url An http URL to the test merge source.
+ Var Details author
+
+
+
+
+
+ The Username of the test merge source's author.
body
+
+
+
+
+
+ The test merge source's body when it was merged.
+ Optional comment left by the TGS user who initiated the merge.
head_commit
+
+
+
+
+
+ The SHA of the test merge when that was merged.
number
+
+
+
+
+
+ The test merge number.
title
+
+
+
+
+
+ The test merge source's title when it was merged.
url
+
+
+
+
+
+ An http URL to the test merge source.
+
+
+
diff --git a/datum/tgs_version.html b/datum/tgs_version.html
new file mode 100644
index 0000000000000..81718814f2b10
--- /dev/null
+++ b/datum/tgs_version.html
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+ /datum/tgs_version - SPLURT Station 13
+
+
+
+
+
+
+Represents a version.
+ Var Details deprecated_patch
+
+
+
+
+
+ Legacy version number. Generally null.
deprefixed_parameter
+
+
+
+
+
+ String value minus prefix.
minor
+
+
+
+
+
+ The minor version number. null for wildcards.
patch
+
+
+
+
+
+ The patch version number. null for wildcards.
raw_parameter
+
+
+
+
+
+ Unparsed string value.
suite
+
+
+
+
+
+ The suite/major version number.
+
+
+
diff --git a/datum/tgui.html b/datum/tgui.html
new file mode 100644
index 0000000000000..e88a8e0e7911e
--- /dev/null
+++ b/datum/tgui.html
@@ -0,0 +1,263 @@
+
+
+
+
+
+
+ /datum/tgui - SPLURT Station 13
+
+
+
+
+
+
+tgui datum (represents a UI).
+ Var Details autoupdate
+
+
+
+
+
+ Update the UI every MC tick.
children
+
+
+
+
+
+ Children of this UI
closing
+
+
+
+
+
+ Stops further updates when close() was called.
initialized
+
+
+
+
+
+ If the UI has been initialized yet.
interface
+
+
+
+
+
+ The interface (template) to be used for this UI.
opened_at
+
+
+
+
+
+ Time of opening the window.
parent_ui
+
+
+
+
+
+ The Parent UI
refresh_cooldown
+
+
+
+
+
+ Rate limit client refreshes to prevent DoS.
refreshing
+
+
+
+
+
+ Timed refreshing state
src_object
+
+
+
+
+
+ The object which owns the UI.
+ Topic state used to determine status/interactability.
status
+
+
+
+
+
+ The status/visibility of the UI.
title
+
+
+
+
+
+ The title of te UI.
user
+
+
+
+
+
+ The mob who opened/is using the UI.
+ The window_id for browse() and onclose().
window_key
+
+
+
+
+
+ Key that is used for remembering the window geometry.
window_size
+
+
+
+
+
+ Deprecated: Window size.
Proc Details New(/mob /user, /datum /src_object, interface, title, /datum /tgui /parent_ui, ui_x, ui_y)
+
+
+
+
+
+ public
+Create a new UI.
+required user mob The mob who opened/is using the UI.
+required src_object datum The object or datum which owns the UI.
+required interface string The interface used to render the UI.
+optional title string The title of the UI.
+optional ui_x int Deprecated: Window width.
+optional ui_y int Deprecated: Window height.
+return datum/tgui The requested UI.
close(can_be_suspended, logout)
+
+
+
+
+
+ public
+Close the UI.
+optional can_be_suspended bool
get_payload(custom_data, with_data, with_static_data)
+
+
+
+
+
+ private
+Package the data to send to the UI, as JSON.
+return list
on_message(type, /list/payload, /list/href_list)
+
+
+
+
+
+ private
+Callback for handling incoming tgui messages.
open()
+
+
+
+
+
+ public
+Open this UI (and initialize it with data).
+return bool - TRUE if a new pooled window is opened, FALSE in all other situations including if a new pooled window didn't open because one already exists.
process(delta_time, force)
+
+
+
+
+
+ private
+Run an update cycle for this UI. Called internally by SStgui
+every second or so.
process_status()
+
+
+
+
+
+ private
+Updates the status, and returns TRUE if status has changed.
send_asset
+
+ public
+Makes an asset available to use in tgui.
+required asset datum/asset
+return bool - true if an asset was actually sent
send_full_update(custom_data, force)
+
+
+
+
+
+ public
+Send a full update to the client (includes static data).
+optional custom_data list Custom data to send instead of ui_data.
+optional force bool Send an update even if UI is not interactive.
send_update(custom_data, force)
+
+
+
+
+
+ public
+Send a partial update to the client (excludes static data).
+optional custom_data list Custom data to send instead of ui_data.
+optional force bool Send an update even if UI is not interactive.
set_autoupdate(autoupdate)
+
+
+
+
+
+ public
+Enable/disable auto-updating of the UI.
+required value bool Enable/disable auto-updating.
set_state
+
+ public
+Replace current ui.state with a new one.
+required state datum/ui_state/state Next state
+
+
+
diff --git a/datum/tgui_alert.html b/datum/tgui_alert.html
new file mode 100644
index 0000000000000..0f8313ceffce6
--- /dev/null
+++ b/datum/tgui_alert.html
@@ -0,0 +1,95 @@
+
+
+
+
+
+
+ /datum/tgui_alert - SPLURT Station 13
+
+
+
+
+
+
+Datum used for instantiating and using a TGUI-controlled modal that prompts the user with
+a message and has buttons for responses.
Vars
+ autofocus The bool that controls if this modal should grab window focus
+ buttons The list of buttons (responses) provided on the TGUI window
+ choice The button that the user has pressed, null if no selection has been made
+ closed Boolean field describing if the tgui_modal was closed by the user.
+ message The textual body of the TGUI window
+ start_time The time at which the tgui_modal was created, for displaying timeout progress.
+ timeout The lifespan of the tgui_modal, after which the window will close and delete itself.
+ title The title of the TGUI window Procs
+ wait Waits for a user's response to the tgui_modal's prompt before returning. Returns early if
+the window was closed by the user.
+ Var Details autofocus
+
+
+
+
+
+ The bool that controls if this modal should grab window focus
+ The list of buttons (responses) provided on the TGUI window
choice
+
+
+
+
+
+ The button that the user has pressed, null if no selection has been made
closed
+
+
+
+
+
+ Boolean field describing if the tgui_modal was closed by the user.
message
+
+
+
+
+
+ The textual body of the TGUI window
start_time
+
+
+
+
+
+ The time at which the tgui_modal was created, for displaying timeout progress.
timeout
+
+
+
+
+
+ The lifespan of the tgui_modal, after which the window will close and delete itself.
title
+
+
+
+
+
+ The title of the TGUI window
Proc Details wait()
+
+
+
+
+
+ Waits for a user's response to the tgui_modal's prompt before returning. Returns early if
+the window was closed by the user.
+
+
+
diff --git a/datum/tgui_alert/async.html b/datum/tgui_alert/async.html
new file mode 100644
index 0000000000000..07fffb0b41598
--- /dev/null
+++ b/datum/tgui_alert/async.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /datum/tgui_alert/async - SPLURT Station 13
+
+
+
+
+
+
+An asynchronous version of tgui_modal to be used with callbacks instead of waiting on user responses.
Vars
+ callback The callback to be invoked by the tgui_modal upon having a choice made.
+ Var Details
+ The callback to be invoked by the tgui_modal upon having a choice made.
+
+
+
diff --git a/datum/tgui_input_number.html b/datum/tgui_input_number.html
new file mode 100644
index 0000000000000..6a16fe98f9734
--- /dev/null
+++ b/datum/tgui_input_number.html
@@ -0,0 +1,118 @@
+
+
+
+
+
+
+ /datum/tgui_input_number - SPLURT Station 13
+
+
+
+
+
+
+Datum used for instantiating and using a TGUI-controlled number input that prompts the user with
+a message and has an input for number entry.
Vars
+ closed Boolean field describing if the tgui_input_number was closed by the user.
+ default The default (or current) value, shown as a default. Users can press reset with this.
+ entry The entry that the user has return_typed in.
+ max_value The maximum value that can be entered.
+ message The prompt's body, if any, of the TGUI window.
+ min_value The minimum value that can be entered.
+ round_value Whether the submitted number is rounded down into an integer.
+ start_time The time at which the number input was created, for displaying timeout progress.
+ timeout The lifespan of the number input, after which the window will close and delete itself.
+ title The title of the TGUI window Procs
+ Destroy Checks for empty numbers - bank accounts, etc.
+Sanity check
+ wait Waits for a user's response to the tgui_input_number's prompt before returning. Returns early if
+the window was closed by the user.
+ Var Details closed
+
+
+
+
+
+ Boolean field describing if the tgui_input_number was closed by the user.
default
+
+
+
+
+
+ The default (or current) value, shown as a default. Users can press reset with this.
entry
+
+
+
+
+
+ The entry that the user has return_typed in.
max_value
+
+
+
+
+
+ The maximum value that can be entered.
message
+
+
+
+
+
+ The prompt's body, if any, of the TGUI window.
min_value
+
+
+
+
+
+ The minimum value that can be entered.
round_value
+
+
+
+
+
+ Whether the submitted number is rounded down into an integer.
start_time
+
+
+
+
+
+ The time at which the number input was created, for displaying timeout progress.
timeout
+
+
+
+
+
+ The lifespan of the number input, after which the window will close and delete itself.
title
+
+
+
+
+
+ The title of the TGUI window
Proc Details Destroy(force, ...)
+
+
+
+
+
+ Checks for empty numbers - bank accounts, etc.
+Sanity check
wait()
+
+
+
+
+
+ Waits for a user's response to the tgui_input_number's prompt before returning. Returns early if
+the window was closed by the user.
+
+
+
diff --git a/datum/tgui_input_number/async.html b/datum/tgui_input_number/async.html
new file mode 100644
index 0000000000000..598c1d35c91af
--- /dev/null
+++ b/datum/tgui_input_number/async.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /datum/tgui_input_number/async - SPLURT Station 13
+
+
+
+
+
+
+An asynchronous version of tgui_text_input to be used with callbacks instead of waiting on user responses.
Vars
+ callback The callback to be invoked by the tgui_text_input upon having a choice made. Procs
+ set_entry datum/tgui_input_number/async/tgui_close(mob/user)
+ Var Details
+ The callback to be invoked by the tgui_text_input upon having a choice made.
Proc Details set_entry(entry)
+
+
+
+
+
+ datum/tgui_input_number/async/tgui_close(mob/user)
+
+
+
diff --git a/datum/tgui_input_text.html b/datum/tgui_input_text.html
new file mode 100644
index 0000000000000..65edea354e854
--- /dev/null
+++ b/datum/tgui_input_text.html
@@ -0,0 +1,110 @@
+
+
+
+
+
+
+ /datum/tgui_input_text - SPLURT Station 13
+
+
+
+
+
+
+tgui_input_text
+Datum used for instantiating and using a TGUI-controlled text input that prompts the user with
+a message and has an input for text entry.
Vars
+ closed Boolean field describing if the tgui_input_text was closed by the user.
+ default The default (or current) value, shown as a default.
+ encode Whether the input should be stripped using html_encode
+ entry The entry that the user has return_typed in.
+ max_length The maximum length for text entry
+ message The prompt's body, if any, of the TGUI window.
+ multiline Multiline input for larger input boxes.
+ start_time The time at which the text input was created, for displaying timeout progress.
+ timeout The lifespan of the text input, after which the window will close and delete itself.
+ title The title of the TGUI window Procs
+ wait Waits for a user's response to the tgui_text_input's prompt before returning. Returns early if
+the window was closed by the user.
+ Var Details closed
+
+
+
+
+
+ Boolean field describing if the tgui_input_text was closed by the user.
default
+
+
+
+
+
+ The default (or current) value, shown as a default.
encode
+
+
+
+
+
+ Whether the input should be stripped using html_encode
entry
+
+
+
+
+
+ The entry that the user has return_typed in.
max_length
+
+
+
+
+
+ The maximum length for text entry
message
+
+
+
+
+
+ The prompt's body, if any, of the TGUI window.
multiline
+
+
+
+
+
+ Multiline input for larger input boxes.
start_time
+
+
+
+
+
+ The time at which the text input was created, for displaying timeout progress.
timeout
+
+
+
+
+
+ The lifespan of the text input, after which the window will close and delete itself.
title
+
+
+
+
+
+ The title of the TGUI window
Proc Details wait()
+
+
+
+
+
+ Waits for a user's response to the tgui_text_input's prompt before returning. Returns early if
+the window was closed by the user.
+
+
+
diff --git a/datum/tgui_input_text/async.html b/datum/tgui_input_text/async.html
new file mode 100644
index 0000000000000..70d2c181bfbc2
--- /dev/null
+++ b/datum/tgui_input_text/async.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /datum/tgui_input_text/async - SPLURT Station 13
+
+
+
+
+
+
+An asynchronous version of tgui_text_input to be used with callbacks instead of waiting on user responses.
Vars
+ callback The callback to be invoked by the tgui_text_input upon having a choice made. Procs
+ set_entry datum/tgui_input_text/async/tgui_close(mob/user)
+ Var Details
+ The callback to be invoked by the tgui_text_input upon having a choice made.
Proc Details set_entry(entry)
+
+
+
+
+
+ datum/tgui_input_text/async/tgui_close(mob/user)
+
+
+
diff --git a/datum/tgui_list_input.html b/datum/tgui_list_input.html
new file mode 100644
index 0000000000000..757f288be5570
--- /dev/null
+++ b/datum/tgui_list_input.html
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+ /datum/tgui_list_input - SPLURT Station 13
+
+
+
+
+
+
+Client does NOT have tgui_input on: Returns regular input
+tgui_list_input
+Datum used for instantiating and using a TGUI-controlled list input that prompts the user with
+a message and shows a list of selectable options
Vars
+ choice The button that the user has pressed, null if no selection has been made
+ closed Boolean field describing if the tgui_list_input was closed by the user.
+ default The default item to be selected
+ items The list of items (responses) provided on the TGUI window
+ items_map Items (strings specifically) mapped to the actual value (e.g. a mob or a verb)
+ message The textual body of the TGUI window
+ start_time The time at which the tgui_list_input was created, for displaying timeout progress.
+ timeout The lifespan of the tgui_list_input, after which the window will close and delete itself.
+ title The title of the TGUI window Procs
+ wait Waits for a user's response to the tgui_list_input's prompt before returning. Returns early if
+the window was closed by the user.
+ Var Details choice
+
+
+
+
+
+ The button that the user has pressed, null if no selection has been made
closed
+
+
+
+
+
+ Boolean field describing if the tgui_list_input was closed by the user.
default
+
+
+
+
+
+ The default item to be selected
items
+
+
+
+
+
+ The list of items (responses) provided on the TGUI window
items_map
+
+
+
+
+
+ Items (strings specifically) mapped to the actual value (e.g. a mob or a verb)
message
+
+
+
+
+
+ The textual body of the TGUI window
start_time
+
+
+
+
+
+ The time at which the tgui_list_input was created, for displaying timeout progress.
timeout
+
+
+
+
+
+ The lifespan of the tgui_list_input, after which the window will close and delete itself.
title
+
+
+
+
+
+ The title of the TGUI window
Proc Details wait()
+
+
+
+
+
+ Waits for a user's response to the tgui_list_input's prompt before returning. Returns early if
+the window was closed by the user.
+
+
+
diff --git a/datum/tgui_list_input/async.html b/datum/tgui_list_input/async.html
new file mode 100644
index 0000000000000..967df41f9fbf9
--- /dev/null
+++ b/datum/tgui_list_input/async.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /datum/tgui_list_input/async - SPLURT Station 13
+
+
+
+
+
+
+An asynchronous version of tgui_list_input to be used with callbacks instead of waiting on user responses.
Vars
+ callback The callback to be invoked by the tgui_list_input upon having a choice made. Procs
+ set_choice datum/tgui_list_input/async/tgui_close(mob/user)
+ Var Details
+ The callback to be invoked by the tgui_list_input upon having a choice made.
Proc Details set_choice(choice)
+
+
+
+
+
+ datum/tgui_list_input/async/tgui_close(mob/user)
+
+
+
diff --git a/datum/tgui_panel.html b/datum/tgui_panel.html
new file mode 100644
index 0000000000000..b1339ab20951e
--- /dev/null
+++ b/datum/tgui_panel.html
@@ -0,0 +1,132 @@
+
+
+
+
+
+
+ /datum/tgui_panel - SPLURT Station 13
+
+
+
+
+
+
+tgui_panel datum
+Hosts tgchat and other nice features.
+ Var Details telemetry_analyzed_at
+
+
+
+
+
+ Time of telemetry analysis completion
telemetry_connections
+
+
+
+
+
+ List of previous client connections
telemetry_requested_at
+
+
+
+
+
+ Time of telemetry request
Proc Details analyze_telemetry(payload)
+
+
+
+
+
+ private
+Analyzes a telemetry packet.
+Is currently only useful for detecting ban evasion attempts.
initialize(force)
+
+
+
+
+
+ public
+Initializes tgui panel.
is_ready()
+
+
+
+
+
+ public
+TRUE if panel is initialized and ready to receive messages.
on_initialize_timed_out()
+
+
+
+
+
+ private
+Called when initialization has timed out.
on_message(type, payload)
+
+
+
+
+
+ private
+Callback for handling incoming tgui messages.
play_music(url, extra_data)
+
+
+
+
+
+ public
+Sends music data to the browser.
+Optional settings:
+
+pitch: the playback rate
+start: the start time of the sound
+end: when the musics stops playing
+
+required url string Must be an https URL.
+optional extra_data list Optional settings.
request_telemetry()
+
+
+
+
+
+ private
+Requests some telemetry from the client.
send_roundrestart()
+
+
+
+
+
+ public
+Sends a round restart notification.
stop_music()
+
+
+
+
+
+ public
+Stops playing music through the browser.
+
+
+
diff --git a/datum/tgui_window.html b/datum/tgui_window.html
new file mode 100644
index 0000000000000..b31137d11b6ea
--- /dev/null
+++ b/datum/tgui_window.html
@@ -0,0 +1,164 @@
+
+
+
+
+
+
+ /datum/tgui_window - SPLURT Station 13
+
+
+
+
+
+
+Proc Details New(/client /client, id, pooled)
+
+
+
+
+
+ public
+Create a new tgui window.
+required client /client
+required id string A unique window identifier.
acquire_lock
+
+ public
+Acquire the window lock. Pool will not be able to provide this window
+to other UIs for the duration of the lock.
+Can be given an optional tgui datum, which will be automatically
+subscribed to incoming messages via the on_message proc.
+optional ui /datum/tgui
can_be_suspended()
+
+
+
+
+
+ public
+Checks if the window can be sanely suspended.
+return bool
close(can_be_suspended, logout)
+
+
+
+
+
+ public
+Close the UI.
+optional can_be_suspended bool
flush_message_queue()
+
+
+
+
+
+ private
+Sends queued messages if the queue wasn't empty.
initialize(fancy, assets, inline_html, inline_js, inline_css)
+
+
+
+
+
+ public
+Initializes the window with a fresh page. Puts window into the "loading"
+state. You can begin sending messages right after initializing. Messages
+will be put into the queue until the window finishes loading.
+optional inline_assets list List of assets to inline into the html.
+optional inline_html string Custom HTML to inject.
+optional fancy bool If TRUE, will hide the window titlebar.
is_ready()
+
+
+
+
+
+ public
+Checks if the window is ready to receive data.
+return bool
on_message(type, payload, href_list)
+
+
+
+
+
+ private
+Callback for handling incoming tgui messages.
release_lock()
+
+
+
+
+
+ public
+Release the window lock.
send_asset
+
+ public
+Makes an asset available to use in tgui.
+required asset datum/asset
+return bool - TRUE if any assets had to be sent to the client
send_message(type, payload, force)
+
+
+
+
+
+ public
+Sends a message to tgui window.
+required type string Message type
+required payload list Message payload
+optional force bool Send regardless of the ready status.
send_raw_message(message, force)
+
+
+
+
+
+ public
+Sends a raw payload to tgui window.
+required message string JSON+urlencoded blob to send.
+optional force bool Send regardless of the ready status.
subscribe(/datum /object, delegate)
+
+
+
+
+
+ public
+Subscribes the datum to consume window messages on a specified proc.
+Note, that this supports only one subscriber, because code for that
+is simpler and therefore faster. If necessary, this can be rewritten
+to support multiple subscribers.
unsubscribe
+
+ public
+Unsubscribes the datum. Do not forget to call this when cleaning up.
+
+
+
diff --git a/datum/thrownthing.html b/datum/thrownthing.html
new file mode 100644
index 0000000000000..2652751335ef9
--- /dev/null
+++ b/datum/thrownthing.html
@@ -0,0 +1,197 @@
+
+
+
+
+
+
+ /datum/thrownthing - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ callback If a thrown thing has a callback, it can be invoked here within thrownthing.
+ delayed_time How long an object has been paused for, to be added to the travel time.
+ diagonal_error How many tiles that need to be moved in order to travel to the target.
+ diagonals_first A variable that helps in describing objects thrown at an angle, if it should be moved diagonally first or last.
+ dist_travelled Tracks how far a thrownthing has traveled mid-throw for the purposes of maxrange
+ dist_x Distance to travel in the X axis/direction.
+ dist_y Distance to travel in the y axis/direction.
+ dx The Horizontal direction we're traveling (EAST or WEST)
+ dy The VERTICAL direction we're traveling (NORTH or SOUTH)
+ force The movement force provided to a given object in transit. More info on these in move_force.dm
+ gentle If the throw is gentle, then the thrownthing is harmless on impact.
+ init_dir The initial direction of the thrower of the thrownthing for building the trajectory of the throw.
+ initial_target Weakref to the original intended target of the throw, to prevent hardDels
+ last_move The last world.time value stored when the thrownthing was moving.
+ maxrange The maximum number of turfs that the thrownthing will travel to reach it's target.
+ paused Mainly exists for things that would freeze a thrown object in place, like a timestop'd tile. Or a Tractor Beam.
+ pure_diagonal Set to TRUE if the throw is exclusively diagonal (45 Degree angle throws for example)
+ speed The speed of the projectile thrownthing being thrown.
+ start_time The start_time obtained via world.time for the purposes of tiles moved/tick.
+ target_turf The turf that the target was on, if it's not a turf itself.
+ target_zone If the target happens to be a carbon and that carbon has a body zone aimed at, this is carried on here.
+ thrower If a mob is the one who has thrown the object, then it's moved here.
+ thrownthing Defines the atom that has been thrown (Objects and Mobs, mostly.) Procs
+ on_thrownthing_qdel Defines the datum behavior on the thrownthing's qdeletion event.
+ Var Details
+ If a thrown thing has a callback, it can be invoked here within thrownthing.
delayed_time
+
+
+
+
+
+ How long an object has been paused for, to be added to the travel time.
diagonal_error
+
+
+
+
+
+ How many tiles that need to be moved in order to travel to the target.
diagonals_first
+
+
+
+
+
+ A variable that helps in describing objects thrown at an angle, if it should be moved diagonally first or last.
dist_travelled
+
+
+
+
+
+ Tracks how far a thrownthing has traveled mid-throw for the purposes of maxrange
dist_x
+
+
+
+
+
+ Distance to travel in the X axis/direction.
dist_y
+
+
+
+
+
+ Distance to travel in the y axis/direction.
dx
+
+
+
+
+
+ The Horizontal direction we're traveling (EAST or WEST)
dy
+
+
+
+
+
+ The VERTICAL direction we're traveling (NORTH or SOUTH)
force
+
+
+
+
+
+ The movement force provided to a given object in transit. More info on these in move_force.dm
gentle
+
+
+
+
+
+ If the throw is gentle, then the thrownthing is harmless on impact.
init_dir
+
+
+
+
+
+ The initial direction of the thrower of the thrownthing for building the trajectory of the throw.
initial_target
+
+
+
+
+
+ Weakref to the original intended target of the throw, to prevent hardDels
last_move
+
+
+
+
+
+ The last world.time value stored when the thrownthing was moving.
maxrange
+
+
+
+
+
+ The maximum number of turfs that the thrownthing will travel to reach it's target.
paused
+
+
+
+
+
+ Mainly exists for things that would freeze a thrown object in place, like a timestop'd tile. Or a Tractor Beam.
pure_diagonal
+
+
+
+
+
+ Set to TRUE if the throw is exclusively diagonal (45 Degree angle throws for example)
speed
+
+
+
+
+
+ The speed of the projectile thrownthing being thrown.
start_time
+
+
+
+
+
+ The start_time obtained via world.time for the purposes of tiles moved/tick.
target_turf
+
+
+
+
+
+ The turf that the target was on, if it's not a turf itself.
target_zone
+
+
+
+
+
+ If the target happens to be a carbon and that carbon has a body zone aimed at, this is carried on here.
thrower
+
+
+
+
+
+ If a mob is the one who has thrown the object, then it's moved here.
thrownthing
+
+
+
+
+
+ Defines the atom that has been thrown (Objects and Mobs, mostly.)
Proc Details on_thrownthing_qdel
+
+ Defines the datum behavior on the thrownthing's qdeletion event.
+
+
+
diff --git a/datum/timedevent.html b/datum/timedevent.html
new file mode 100644
index 0000000000000..59ae4740f280d
--- /dev/null
+++ b/datum/timedevent.html
@@ -0,0 +1,135 @@
+
+
+
+
+
+
+ /datum/timedevent - SPLURT Station 13
+
+
+
+
+
+
+This is the actual timer, it contains the callback and necessary data to maintain
+the timer.
+See the documentation for the timer subsystem for an explanation of the buckets referenced
+below in next and prev
Vars
+ callBack The callback to invoke after the timer completes
+ flags Flags associated with the timer, see _DEFINES/subsystems.dm
+ hash Unique hash generated when TIMER_UNIQUE flag is present
+ id ID used for timers when the TIMER_STOPPABLE flag is present
+ name An informative name generated for the timer as its representation in strings, useful for debugging
+ next Next timed event in the bucket
+ prev Previous timed event in the bucket
+ source The source of the timedevent, whatever called addtimer
+ spent Time at which the timer was invoked or destroyed
+ timeToRun The time at which the callback should be invoked at
+ wait The length of the timer Procs
+ bucketEject Removes this timed event from any relevant buckets, or the secondary queue
+ bucketJoin Attempts to add this timed event to a bucket, will enter the secondary queue
+if there are no appropriate buckets at this time.
+ getcallingtype Returns a string of the type of the callback for this timer
+ Var Details
+ The callback to invoke after the timer completes
flags
+
+
+
+
+
+ Flags associated with the timer, see _DEFINES/subsystems.dm
hash
+
+
+
+
+
+ Unique hash generated when TIMER_UNIQUE flag is present
id
+
+
+
+
+
+ ID used for timers when the TIMER_STOPPABLE flag is present
name
+
+
+
+
+
+ An informative name generated for the timer as its representation in strings, useful for debugging
+ Next timed event in the bucket
+ Previous timed event in the bucket
source
+
+
+
+
+
+ The source of the timedevent, whatever called addtimer
spent
+
+
+
+
+
+ Time at which the timer was invoked or destroyed
timeToRun
+
+
+
+
+
+ The time at which the callback should be invoked at
wait
+
+
+
+
+
+ The length of the timer
Proc Details bucketEject()
+
+
+
+
+
+ Removes this timed event from any relevant buckets, or the secondary queue
bucketJoin()
+
+
+
+
+
+ Attempts to add this timed event to a bucket, will enter the secondary queue
+if there are no appropriate buckets at this time.
+Secondary queueing of timed events will occur when the timespan covered by the existing
+buckets is exceeded by the time at which this timed event is scheduled to be invoked.
+If the timed event is tracking client time, it will be added to a special bucket.
getcallingtype()
+
+
+
+
+
+ Returns a string of the type of the callback for this timer
+
+
+
diff --git a/datum/traitor_class.html b/datum/traitor_class.html
new file mode 100644
index 0000000000000..e3feec07d0354
--- /dev/null
+++ b/datum/traitor_class.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /datum/traitor_class - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ min_players Minimum players for this to randomly roll via get_random_traitor_kind().
+ tgui_theme Specific tgui theme for the player's antag info panel.
+ Var Details min_players
+
+
+
+
+
+ Minimum players for this to randomly roll via get_random_traitor_kind().
tgui_theme
+
+
+
+
+
+ Specific tgui theme for the player's antag info panel.
+
+
+
diff --git a/datum/ui_state.html b/datum/ui_state.html
new file mode 100644
index 0000000000000..c5a711d9ff384
--- /dev/null
+++ b/datum/ui_state.html
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+ /datum/ui_state - SPLURT Station 13
+
+
+
+
+
+
+Proc Details can_use_topic(src_object, /mob /user)
+
+
+
+
+
+ private
+Checks if a user can use src_object's UI, and returns the state.
+Can call a mob proc, which allows overrides for each mob.
+required src_object datum The object/datum which owns the UI.
+required user mob The mob who opened/is using the UI.
+return UI_state The state of the UI.
+
+
+
diff --git a/datum/unit_test.html b/datum/unit_test.html
new file mode 100644
index 0000000000000..293ccc8e9b337
--- /dev/null
+++ b/datum/unit_test.html
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+ /datum/unit_test - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ priority The priority of the test, the larger it is the later it fires
+ run_loc_floor_bottom_left The bottom left floor turf of the testing zone
+ run_loc_floor_top_right The top right floor turf of the testing zone Procs
+ allocate Allocates an instance of the provided type, and places it somewhere in an available loc
+Instances allocated through this proc will be destroyed when the test is over
+ log_for_test Logs a test message. Will use GitHub action syntax found at https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions
+ Var Details priority
+
+
+
+
+
+ The priority of the test, the larger it is the later it fires
run_loc_floor_bottom_left
+
+
+
+
+
+ The bottom left floor turf of the testing zone
run_loc_floor_top_right
+
+
+
+
+
+ The top right floor turf of the testing zone
Proc Details allocate(type, ...)
+
+
+
+
+
+ Allocates an instance of the provided type, and places it somewhere in an available loc
+Instances allocated through this proc will be destroyed when the test is over
log_for_test(text, priority, file, line)
+
+
+
+
+
+ Logs a test message. Will use GitHub action syntax found at https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions
+
+
+
diff --git a/datum/unit_test/binary_insert.html b/datum/unit_test/binary_insert.html
new file mode 100644
index 0000000000000..87aea2521c6d6
--- /dev/null
+++ b/datum/unit_test/binary_insert.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /datum/unit_test/binary_insert - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ Run A test to ensure the sanity of BINARY_INSERT
Proc Details Run()
+
+
+
+
+
+ A test to ensure the sanity of BINARY_INSERT
+
+
+
diff --git a/datum/unit_test/container_resist.html b/datum/unit_test/container_resist.html
new file mode 100644
index 0000000000000..adfb6e60c66d4
--- /dev/null
+++ b/datum/unit_test/container_resist.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /datum/unit_test/container_resist - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ Run Test that you can resist out of a container
Proc Details Run()
+
+
+
+
+
+ Test that you can resist out of a container
+
+
+
diff --git a/datum/unit_test/interactions.html b/datum/unit_test/interactions.html
new file mode 100644
index 0000000000000..7798ae1bdaab8
--- /dev/null
+++ b/datum/unit_test/interactions.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /datum/unit_test/interactions - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ Run SANDSTORM TESTS
Proc Details Run()
+
+
+
+
+
+ SANDSTORM TESTS
+
+
+
diff --git a/datum/unit_test/machine_disassembly.html b/datum/unit_test/machine_disassembly.html
new file mode 100644
index 0000000000000..eb87022f16d80
--- /dev/null
+++ b/datum/unit_test/machine_disassembly.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /datum/unit_test/machine_disassembly - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ Run Ensures that when disassembling a machine, all the parts are given back
Proc Details Run()
+
+
+
+
+
+ Ensures that when disassembling a machine, all the parts are given back
+
+
+
diff --git a/datum/unit_test/merge_type.html b/datum/unit_test/merge_type.html
new file mode 100644
index 0000000000000..2250c38fd4998
--- /dev/null
+++ b/datum/unit_test/merge_type.html
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+ /datum/unit_test/merge_type - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ Run the limbs have no wound resistance like the chest and head do, so let's go with the r_arm
+In order of the wound types we're trying to inflict, what sharpness do we need to deal them?
+Since burn wounds need burn damage, duh
Proc Details Run()
+
+
+
+
+
+ the limbs have no wound resistance like the chest and head do, so let's go with the r_arm
+In order of the wound types we're trying to inflict, what sharpness do we need to deal them?
+Since burn wounds need burn damage, duh
+
+
+
diff --git a/datum/unit_test/stop_drop_and_roll.html b/datum/unit_test/stop_drop_and_roll.html
new file mode 100644
index 0000000000000..ed382d00faa52
--- /dev/null
+++ b/datum/unit_test/stop_drop_and_roll.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /datum/unit_test/stop_drop_and_roll - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ Run Test that stop, drop, and roll lowers fire stacks
Proc Details Run()
+
+
+
+
+
+ Test that stop, drop, and roll lowers fire stacks
+
+
+
diff --git a/datum/unit_test/test_human_base.html b/datum/unit_test/test_human_base.html
new file mode 100644
index 0000000000000..f12d288a0ed04
--- /dev/null
+++ b/datum/unit_test/test_human_base.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /datum/unit_test/test_human_base - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ Run This test is used to make sure a flesh-and-bone base human can suffer all the types of wounds, and that suffering more severe wounds removes and replaces the lesser wound. Also tests that [/mob/living/carbon/proc/fully_heal] removes all wounds
Proc Details Run()
+
+
+
+
+
+ This test is used to make sure a flesh-and-bone base human can suffer all the types of wounds, and that suffering more severe wounds removes and replaces the lesser wound. Also tests that [/mob/living/carbon/proc/fully_heal] removes all wounds
+
+
+
diff --git a/datum/unit_test/test_human_bone.html b/datum/unit_test/test_human_bone.html
new file mode 100644
index 0000000000000..828fd603ae61a
--- /dev/null
+++ b/datum/unit_test/test_human_bone.html
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+ /datum/unit_test/test_human_bone - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ Run the limbs have no wound resistance like the chest and head do, so let's go with the r_arm
+In order of the wound types we're trying to inflict, what sharpness do we need to deal them?
+Since burn wounds need burn damage, duh
+This test is used for making sure species with bones but no flesh (skeletons, plasmamen) can only suffer BONE_WOUNDS, and nothing tagged with FLESH_WOUND (it's possible to require both)
Proc Details Run()
+
+
+
+
+
+ the limbs have no wound resistance like the chest and head do, so let's go with the r_arm
+In order of the wound types we're trying to inflict, what sharpness do we need to deal them?
+Since burn wounds need burn damage, duh
+This test is used for making sure species with bones but no flesh (skeletons, plasmamen) can only suffer BONE_WOUNDS, and nothing tagged with FLESH_WOUND (it's possible to require both)
+
+
+
diff --git a/datum/uplink_item.html b/datum/uplink_item.html
new file mode 100644
index 0000000000000..077901f640c42
--- /dev/null
+++ b/datum/uplink_item.html
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+ /datum/uplink_item - SPLURT Station 13
+
+
+
+
+
+
+Uplink Items
+Items that can be spawned from an uplink. Can be limited by gamemode.
Vars
+ purchasable_from A bitfield to represent what uplinks can purchase this item.
+See [code/__DEFINES/uplink.dm
].
+ Var Details purchasable_from
+
+
+
+
+
+ A bitfield to represent what uplinks can purchase this item.
+See [code/__DEFINES/uplink.dm
].
+
+
+
diff --git a/datum/wave_explosion.html b/datum/wave_explosion.html
new file mode 100644
index 0000000000000..80e48d72043c6
--- /dev/null
+++ b/datum/wave_explosion.html
@@ -0,0 +1,234 @@
+
+
+
+
+
+
+ /datum/wave_explosion - SPLURT Station 13
+
+
+
+
+
+
+New force-blastwave explosion system
+ Var Details block_resistance
+
+
+
+
+
+ block = block / this, if 0 any block is absolute
cycle
+
+
+
+
+
+ What cycle are we on?
cycle_speed
+
+
+
+
+
+ Time to wait between cycles
cycle_start
+
+
+
+
+
+ When we started the current cycle
edges
+
+
+
+
+
+ The "edges" + dirs that need to be processed this cycle. turf = dir flags
exploded_last
+
+
+
+
+
+ The last ring that's been exploded. Any turfs in this will completely ignore the current cycle. Turf = TRUE
finished
+
+
+
+
+
+ Are we currently finished?
fire_probability
+
+
+
+
+
+ Fire probability per tile
flash_range
+
+
+
+
+
+ Flash range
hard_obstacle_mod
+
+
+
+
+
+ Hard obstcales get this mod INSTEAD of object damage mod
id
+
+
+
+
+
+ Our unique nuumerical ID
index
+
+
+
+
+
+ Current index for list
mob_damage_mod
+
+
+
+
+
+ Mob damage mod
mob_deafen_mod
+
+
+
+
+
+ Mob deafen mod
mob_gib_mod
+
+
+
+
+
+ Mob gib mod
next_id
+
+
+
+
+
+ Next unique numerical ID
object_damage_mod
+
+
+
+
+
+ Object damage mod
power_considered_dead
+
+
+
+
+
+ Explosion power at which point to consider to be a dead expansion
power_falloff_constant
+
+
+
+
+
+ Base explosion power falloff subtract (applied second)
power_falloff_factor
+
+
+
+
+
+ Base explosion power falloff multiplier (applied first)
power_initial
+
+
+
+
+
+ Explosion power we were initially at
powers
+
+
+
+
+
+ The powers of the current turf edges. turf = power
running
+
+
+
+
+
+ Are we currently running?
silent
+
+
+
+
+
+ Are we silent/do we make the screenshake/sounds?
source
+
+
+
+
+
+ What atom we originated from, if any
start_time
+
+
+
+
+
+ world.time we started at
wall_destroy_mod
+
+
+
+
+
+ Wall destruction mod
window_shatter_mod
+
+
+
+
+
+ Window shatter mod. Overrides both [hard_obstcale_mod] and [object_damage_mod]
Proc Details tick()
+
+
+
+
+
+ Called by SSexplosions to propagate this.
+Return TRUE if postponed
+
+
+
diff --git a/datum/weather.html b/datum/weather.html
new file mode 100644
index 0000000000000..edb63bd1c503b
--- /dev/null
+++ b/datum/weather.html
@@ -0,0 +1,313 @@
+
+
+
+
+
+
+ /datum/weather - SPLURT Station 13
+
+
+
+
+
+
+Causes weather to occur on a z level in certain area types
+The effects of weather occur across an entire z-level. For instance, lavaland has periodic ash storms that scorch most unprotected creatures.
+Weather always occurs on different z levels at different times, regardless of weather type.
+Can have custom durations, targets, and can automatically protect indoor areas.
Vars
+ aesthetic If the weather has no purpose but aesthetics.
+ area_type Types of area to affect
+ barometer_predictable Whether a barometer can predict when the weather will happen
+ desc description of weather
+ end_duration In deciseconds, how long the "wind-down" graphic will appear before vanishing entirely
+ end_message Displayed once the weather is over
+ end_overlay Area overlay while weather is ending
+ end_sound Sound that plays while weather is ending
+ immunity_type Used by mobs (or movables containing mobs, such as enviro bags) to prevent them from being affected by the weather.
+ impacted_areas Areas to be affected by the weather, calculated when the weather begins
+ impacted_z_levels The list of z-levels that this weather is actively affecting
+ name name of weather
+ next_hit_time For barometers to know when the next storm will hit
+ overlay_layer Since it's above everything else, this is the layer used by default. TURF_LAYER is below mobs and walls if you need to use that.
+ overlay_plane Plane for the overlay
+ perpetual This causes the weather to only end if forced to
+ probability Weight amongst other eligible weather. if zero, will never happen randomly.
+ protect_indoors TRUE value protects areas with outdoors marked as false, regardless of area type
+ protected_areas Areas that are protected and excluded from the affected areas.
+ stage The stage of the weather, from 1-4
+ target_trait The z-level trait to affect when run randomly or when not overridden.
+ telegraph_duration In deciseconds, how long from the beginning of the telegraph until the weather begins
+ telegraph_message The message displayed in chat to foreshadow the weather's beginning
+ telegraph_overlay The overlay applied to all tiles on the z-level
+ telegraph_sound The sound file played to everyone on an affected z-level
+ weather_color Color to apply to the area while weather is occuring
+ weather_duration In deciseconds, how long the weather lasts once it begins
+ weather_duration_lower See above - this is the lowest possible duration
+ weather_duration_upper See above - this is the highest possible duration
+ weather_message Displayed in chat once the weather begins in earnest
+ weather_overlay Area overlay while the weather is occuring
+ weather_sound Looping sound while weather is occuring Procs
+ can_weather_act Returns TRUE if the living mob can be affected by the weather
+ end Fully ends the weather
+ start Starts the actual weather and effects from it
+ telegraph Telegraphs the beginning of the weather on the impacted z levels
+ update_areas Updates the overlays on impacted areas
+ weather_act Affects the mob with whatever the weather does
+ wind_down Weather enters the winding down phase, stops effects
+ Var Details aesthetic
+
+
+
+
+
+ If the weather has no purpose but aesthetics.
area_type
+
+
+
+
+
+ Types of area to affect
barometer_predictable
+
+
+
+
+
+ Whether a barometer can predict when the weather will happen
desc
+
+
+
+
+
+ description of weather
end_duration
+
+
+
+
+
+ In deciseconds, how long the "wind-down" graphic will appear before vanishing entirely
end_message
+
+
+
+
+
+ Displayed once the weather is over
end_overlay
+
+
+
+
+
+ Area overlay while weather is ending
end_sound
+
+
+
+
+
+ Sound that plays while weather is ending
immunity_type
+
+
+
+
+
+ Used by mobs (or movables containing mobs, such as enviro bags) to prevent them from being affected by the weather.
impacted_areas
+
+
+
+
+
+ Areas to be affected by the weather, calculated when the weather begins
impacted_z_levels
+
+
+
+
+
+ The list of z-levels that this weather is actively affecting
name
+
+
+
+
+
+ name of weather
next_hit_time
+
+
+
+
+
+ For barometers to know when the next storm will hit
overlay_layer
+
+
+
+
+
+ Since it's above everything else, this is the layer used by default. TURF_LAYER is below mobs and walls if you need to use that.
overlay_plane
+
+
+
+
+
+ Plane for the overlay
perpetual
+
+
+
+
+
+ This causes the weather to only end if forced to
probability
+
+
+
+
+
+ Weight amongst other eligible weather. if zero, will never happen randomly.
protect_indoors
+
+
+
+
+
+ TRUE value protects areas with outdoors marked as false, regardless of area type
protected_areas
+
+
+
+
+
+ Areas that are protected and excluded from the affected areas.
stage
+
+
+
+
+
+ The stage of the weather, from 1-4
target_trait
+
+
+
+
+
+ The z-level trait to affect when run randomly or when not overridden.
telegraph_duration
+
+
+
+
+
+ In deciseconds, how long from the beginning of the telegraph until the weather begins
telegraph_message
+
+
+
+
+
+ The message displayed in chat to foreshadow the weather's beginning
telegraph_overlay
+
+
+
+
+
+ The overlay applied to all tiles on the z-level
telegraph_sound
+
+
+
+
+
+ The sound file played to everyone on an affected z-level
weather_color
+
+
+
+
+
+ Color to apply to the area while weather is occuring
weather_duration
+
+
+
+
+
+ In deciseconds, how long the weather lasts once it begins
weather_duration_lower
+
+
+
+
+
+ See above - this is the lowest possible duration
weather_duration_upper
+
+
+
+
+
+ See above - this is the highest possible duration
weather_message
+
+
+
+
+
+ Displayed in chat once the weather begins in earnest
weather_overlay
+
+
+
+
+
+ Area overlay while the weather is occuring
weather_sound
+
+
+
+
+
+ Looping sound while weather is occuring
Proc Details can_weather_act
+
+ Returns TRUE if the living mob can be affected by the weather
end()
+
+
+
+
+
+ Fully ends the weather
+Effects no longer occur and area overlays are removed
+Removes weather from processing completely
start()
+
+
+
+
+
+ Starts the actual weather and effects from it
+Updates area overlays and sends sounds and messages to mobs to notify them
+Begins dealing effects from weather to mobs in the area
telegraph()
+
+
+
+
+
+ Telegraphs the beginning of the weather on the impacted z levels
+Sends sounds and details to mobs in the area
+Calculates duration and hit areas, and makes a callback for the actual weather to start
update_areas()
+
+
+
+
+
+ Updates the overlays on impacted areas
weather_act
+
+ Affects the mob with whatever the weather does
wind_down()
+
+
+
+
+
+ Weather enters the winding down phase, stops effects
+Updates areas to be in the winding down phase
+Sends sounds and messages to mobs to notify them
+
+
+
diff --git a/datum/wires.html b/datum/wires.html
new file mode 100644
index 0000000000000..bb9a8918b4f89
--- /dev/null
+++ b/datum/wires.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /datum/wires - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ emp_pulse Called from [/atom/proc/emp_act]
Proc Details emp_pulse(severity)
+
+
+
+
+
+ Called from [/atom/proc/emp_act]
+
+
+
diff --git a/datum/wound.html b/datum/wound.html
new file mode 100644
index 0000000000000..5370683bad696
--- /dev/null
+++ b/datum/wound.html
@@ -0,0 +1,397 @@
+
+
+
+
+
+
+ /datum/wound - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ a_or_from needed for "your arm has a compound fracture" vs "your arm has some third degree burns"
+ already_scarred If we've already tried scarring while removing (remove_wound can be called twice in a del chain, let's be nice to our code yeah?) TODO: make this cleaner
+ attached_surgery If we're operating on this wound and it gets healed, we'll nix the surgery too
+ base_treat_time How long it will take to treat this wound with a standard effective tool, assuming it doesn't need surgery
+ blood_flow How much we're contributing to this limb's bleed_rate
+ cryo_progress if you're a lazy git and just throw them in cryo, the wound will go away after accumulating severity * 25 power
+ damage_mulitplier_penalty Incoming damage on this limb will be multiplied by this, to simulate tenderness and vulnerability (mostly burns).
+ desc The description shown on the scanners
+ disabling If having this wound makes currently makes the parent bodypart unusable
+ examine_desc What the limb looks like on a cursory examine
+ from_smite If we forced this wound through badmin smite, we won't count it towards the round totals
+ interaction_efficiency_penalty Using this limb in a do_after interaction will multiply the length by this duration (arms)
+ limb The bodypart we're parented to
+ limp_slowdown If set and this wound is applied to a leg, we take this many deciseconds extra per step on this leg
+ name What it's named
+ occur_text The visible message when this happens
+ processes If we need to process each life tick
+ scar_keyword What kind of scars this wound will create description wise once healed
+ severity Either WOUND_SEVERITY_TRIVIAL (meme wounds like stubbed toe), WOUND_SEVERITY_MODERATE, WOUND_SEVERITY_SEVERE, or WOUND_SEVERITY_CRITICAL (or maybe WOUND_SEVERITY_LOSS)
+ sound_effect This sound will be played upon the wound being applied
+ status_effect_type What status effect we assign on application
+ threshold_minimum The minimum we need to roll on /obj/item/bodypart/proc/check_wounding to begin suffering this wound, see check_wounding_mods() for more
+ threshold_penalty How much having this wound will add to all future check_wounding() rolls on this limb, to allow progression to worse injuries with repeated damage
+ treat_text The basic treatment suggested by health analyzers
+ treatable_by Specific items such as bandages or sutures that can try directly treating this wound
+ treatable_by_grabbed Specific items such as bandages or sutures that can try directly treating this wound only if the user has the victim in an aggressive grab or higher
+ treatable_tool Tools with the specified tool flag will also be able to try directly treating this wound
+ viable_zones What body zones can we affect
+ victim Who owns the body part that we're wounding
+ wound_flags What flags apply to this wound
+ wound_type The list of wounds it belongs in, WOUND_LIST_BLUNT, WOUND_LIST_SLASH, or WOUND_LIST_BURN Procs
+ apply_wound apply_wound() is used once a wound type is instantiated to assign it to a bodypart, and actually come into play.
+ check_grab_treatments Return TRUE if we have an item that can only be used while aggro grabbed (unhanded aggro grab treatments go in /datum/wound/proc/try_handling ). Treatment is still is handled in /datum/wound/proc/treat
+ crush Called when we're crushed in an airlock or firedoor, for one of the improvised joint dislocation fixes
+ drag_bleed_amount Used when we're being dragged while bleeding, the value we return is how much bloodloss this wound causes from being dragged. Since it's a proc, you can let bandages soak some of the blood
+ get_examine_description get_examine_description() is used in carbon/examine and human/examine to show the status of this wound. Useful if you need to show some status like the wound being splinted or bandaged.
+ handle_process If var/processing is TRUE, this is run on each life tick
+ on_stasis Called when the patient is undergoing stasis, so that having fully treated a wound doesn't make you sit there helplessly until you think to unbuckle them
+ on_synthflesh When synthflesh is applied to the victim, we call this. No sense in setting up an entire chem reaction system for wounds when we only care for a few chems. Probably will change in the future
+ on_xadone Called from cryoxadone and pyroxadone when they're proc'ing. Wounds will slowly be fixed separately from other methods when these are in effect. crappy name but eh
+ receive_damage When our parent bodypart is hurt
+ remove_wound Remove the wound from whatever it's afflicting, and cleans up whateverstatus effects it had or modifiers it had on interaction times. ignore_limb is used for detachments where we only want to forget the victim
+ replace_wound replace_wound() is used when you want to replace the current wound with a new wound, presumably of the same category, just of a different severity (either up or down counts)
+ second_wind Additional beneficial effects when the wound is gained, in case you want to give a temporary boost to allow the victim to try an escape or last stand
+ still_exists For use in do_after callback checks
+ treat Someone is using something that might be used for treating the wound on this limb
+ try_handling Like try_treating() but for unhanded interactions from humans, used by joint dislocations for manual bodypart chiropractice for example.
+ try_treating try_treating() is an intercept run from [/mob/living/carbon/proc/attackby] right after surgeries but before anything else. Return TRUE here if the item is something that is relevant to treatment to take over the interaction.
+ wound_injury The immediate negative effects faced as a result of the wound
+ Var Details a_or_from
+
+
+
+
+
+ needed for "your arm has a compound fracture" vs "your arm has some third degree burns"
already_scarred
+
+
+
+
+
+ If we've already tried scarring while removing (remove_wound can be called twice in a del chain, let's be nice to our code yeah?) TODO: make this cleaner
attached_surgery
+
+
+
+
+
+ If we're operating on this wound and it gets healed, we'll nix the surgery too
base_treat_time
+
+
+
+
+
+ How long it will take to treat this wound with a standard effective tool, assuming it doesn't need surgery
blood_flow
+
+
+
+
+
+ How much we're contributing to this limb's bleed_rate
cryo_progress
+
+
+
+
+
+ if you're a lazy git and just throw them in cryo, the wound will go away after accumulating severity * 25 power
damage_mulitplier_penalty
+
+
+
+
+
+ Incoming damage on this limb will be multiplied by this, to simulate tenderness and vulnerability (mostly burns).
desc
+
+
+
+
+
+ The description shown on the scanners
disabling
+
+
+
+
+
+ If having this wound makes currently makes the parent bodypart unusable
examine_desc
+
+
+
+
+
+ What the limb looks like on a cursory examine
from_smite
+
+
+
+
+
+ If we forced this wound through badmin smite, we won't count it towards the round totals
interaction_efficiency_penalty
+
+
+
+
+
+ Using this limb in a do_after interaction will multiply the length by this duration (arms)
+ The bodypart we're parented to
limp_slowdown
+
+
+
+
+
+ If set and this wound is applied to a leg, we take this many deciseconds extra per step on this leg
name
+
+
+
+
+
+ What it's named
occur_text
+
+
+
+
+
+ The visible message when this happens
processes
+
+
+
+
+
+ If we need to process each life tick
scar_keyword
+
+
+
+
+
+ What kind of scars this wound will create description wise once healed
severity
+
+
+
+
+
+ Either WOUND_SEVERITY_TRIVIAL (meme wounds like stubbed toe), WOUND_SEVERITY_MODERATE, WOUND_SEVERITY_SEVERE, or WOUND_SEVERITY_CRITICAL (or maybe WOUND_SEVERITY_LOSS)
sound_effect
+
+
+
+
+
+ This sound will be played upon the wound being applied
status_effect_type
+
+
+
+
+
+ What status effect we assign on application
threshold_minimum
+
+
+
+
+
+ The minimum we need to roll on /obj/item/bodypart/proc/check_wounding to begin suffering this wound, see check_wounding_mods() for more
threshold_penalty
+
+
+
+
+
+ How much having this wound will add to all future check_wounding() rolls on this limb, to allow progression to worse injuries with repeated damage
treat_text
+
+
+
+
+
+ The basic treatment suggested by health analyzers
treatable_by
+
+
+
+
+
+ Specific items such as bandages or sutures that can try directly treating this wound
treatable_by_grabbed
+
+
+
+
+
+ Specific items such as bandages or sutures that can try directly treating this wound only if the user has the victim in an aggressive grab or higher
+ Tools with the specified tool flag will also be able to try directly treating this wound
viable_zones
+
+
+
+
+
+ What body zones can we affect
+ Who owns the body part that we're wounding
wound_flags
+
+
+
+
+
+ What flags apply to this wound
wound_type
+
+
+
+
+
+ The list of wounds it belongs in, WOUND_LIST_BLUNT, WOUND_LIST_SLASH, or WOUND_LIST_BURN
Proc Details apply_wound
+
+ apply_wound() is used once a wound type is instantiated to assign it to a bodypart, and actually come into play.
+Arguments:
+
+L: The bodypart we're wounding, we don't care about the person, we can get them through the limb
+silent: Not actually necessary I don't think, was originally used for demoting wounds so they wouldn't make new messages, but I believe old_wound took over that, I may remove this shortly
+old_wound: If our new wound is a replacement for one of the same time (promotion or demotion), we can reference the old one just before it's removed to copy over necessary vars
+smited- If this is a smite, we don't care about this wound for stat tracking purposes (not yet implemented)
+ check_grab_treatments
+
+ Return TRUE if we have an item that can only be used while aggro grabbed (unhanded aggro grab treatments go in /datum/wound/proc/try_handling ). Treatment is still is handled in /datum/wound/proc/treat
crush()
+
+
+
+
+
+ Called when we're crushed in an airlock or firedoor, for one of the improvised joint dislocation fixes
drag_bleed_amount()
+
+
+
+
+
+ Used when we're being dragged while bleeding, the value we return is how much bloodloss this wound causes from being dragged. Since it's a proc, you can let bandages soak some of the blood
get_examine_description
+
+ get_examine_description() is used in carbon/examine and human/examine to show the status of this wound. Useful if you need to show some status like the wound being splinted or bandaged.
+Return the full string line you want to show, note that we're already dealing with the 'warning' span at this point, and that \n is already appended for you in the place this is called from
+Arguments:
+
+mob/user: The user examining the wound's owner, if that matters
+ handle_process()
+
+
+
+
+
+ If var/processing is TRUE, this is run on each life tick
on_stasis()
+
+
+
+
+
+ Called when the patient is undergoing stasis, so that having fully treated a wound doesn't make you sit there helplessly until you think to unbuckle them
on_synthflesh(power)
+
+
+
+
+
+ When synthflesh is applied to the victim, we call this. No sense in setting up an entire chem reaction system for wounds when we only care for a few chems. Probably will change in the future
on_xadone(power)
+
+
+
+
+
+ Called from cryoxadone and pyroxadone when they're proc'ing. Wounds will slowly be fixed separately from other methods when these are in effect. crappy name but eh
receive_damage(wounding_type, wounding_dmg, wound_bonus)
+
+
+
+
+
+ When our parent bodypart is hurt
remove_wound(ignore_limb, replaced)
+
+
+
+
+
+ Remove the wound from whatever it's afflicting, and cleans up whateverstatus effects it had or modifiers it had on interaction times. ignore_limb is used for detachments where we only want to forget the victim
replace_wound(new_type, smited)
+
+
+
+
+
+ replace_wound() is used when you want to replace the current wound with a new wound, presumably of the same category, just of a different severity (either up or down counts)
+This proc actually instantiates the new wound based off the specific type path passed, then returns the new instantiated wound datum.
+Arguments:
+
+new_type- The TYPE PATH of the wound you want to replace this, like /datum/wound/slash/severe
+smited- If this is a smite, we don't care about this wound for stat tracking purposes (not yet implemented)
+ second_wind()
+
+
+
+
+
+ Additional beneficial effects when the wound is gained, in case you want to give a temporary boost to allow the victim to try an escape or last stand
still_exists()
+
+
+
+
+
+ For use in do_after callback checks
treat
+
+ Someone is using something that might be used for treating the wound on this limb
+ Like try_treating() but for unhanded interactions from humans, used by joint dislocations for manual bodypart chiropractice for example.
try_treating
+
+ try_treating() is an intercept run from [/mob/living/carbon/proc/attackby] right after surgeries but before anything else. Return TRUE here if the item is something that is relevant to treatment to take over the interaction.
+This proc leads into /datum/wound/proc/treat and probably shouldn't be added onto in children types. You can specify what items or tools you want to be intercepted
+with var/list/treatable_by and var/treatable_tool, then if an item fulfills one of those requirements and our wound claims it first, it goes over to treat() and treat_self().
+Arguments:
+
+I: The item we're trying to use
+user: The mob trying to use it on us
+ wound_injury
+
+ The immediate negative effects faced as a result of the wound
+
+
+
diff --git a/datum/wound/blunt.html b/datum/wound/blunt.html
new file mode 100644
index 0000000000000..880f1f40788a8
--- /dev/null
+++ b/datum/wound/blunt.html
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+ /datum/wound/blunt - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ active_trauma If we suffer severe head booboos, we can get brain traumas tied to them
+ brain_trauma_group What brain trauma group, if any, we can draw from for head wounds
+ gelled Have we been bone gel'd?
+ internal_bleeding_chance If this is a chest wound and this is set, we have this chance to cough up blood when hit in the chest
+ next_trauma_cycle If we deal brain traumas, when is the next one due?
+ regen_points_current Our current counter for gel + surgical tape regeneration
+ regen_points_needed If we did the gel + surgical tape healing method for fractures, how many regen points we need
+ taped Have we been taped?
+ trauma_cycle_cooldown How long do we wait +/- 20% for the next trauma? Procs
+ attack_with_hurt_hand If we're a human who's punching something with a broken arm, we might hurt ourselves doing so
+ gel if someone is using bone gel on our wound
+ tape if someone is using surgical tape on our wound
+ Var Details active_trauma
+
+
+
+
+
+ If we suffer severe head booboos, we can get brain traumas tied to them
brain_trauma_group
+
+
+
+
+
+ What brain trauma group, if any, we can draw from for head wounds
gelled
+
+
+
+
+
+ Have we been bone gel'd?
internal_bleeding_chance
+
+
+
+
+
+ If this is a chest wound and this is set, we have this chance to cough up blood when hit in the chest
next_trauma_cycle
+
+
+
+
+
+ If we deal brain traumas, when is the next one due?
regen_points_current
+
+
+
+
+
+ Our current counter for gel + surgical tape regeneration
regen_points_needed
+
+
+
+
+
+ If we did the gel + surgical tape healing method for fractures, how many regen points we need
taped
+
+
+
+
+
+ Have we been taped?
trauma_cycle_cooldown
+
+
+
+
+
+ How long do we wait +/- 20% for the next trauma?
Proc Details attack_with_hurt_hand(/mob /M, /atom /target, proximity)
+
+
+
+
+
+ If we're a human who's punching something with a broken arm, we might hurt ourselves doing so
+ if someone is using bone gel on our wound
tape
+
+ if someone is using surgical tape on our wound
+
+
+
diff --git a/datum/wound/blunt/moderate.html b/datum/wound/blunt/moderate.html
new file mode 100644
index 0000000000000..92b3608f3f458
--- /dev/null
+++ b/datum/wound/blunt/moderate.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+ /datum/wound/blunt/moderate - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ chiropractice If someone is snapping our dislocated joint back into place by hand with an aggro grab and help intent
+ malpractice If someone is snapping our dislocated joint into a fracture by hand with an aggro grab and harm or disarm intent
Proc Details
+ If someone is snapping our dislocated joint back into place by hand with an aggro grab and help intent
+ If someone is snapping our dislocated joint into a fracture by hand with an aggro grab and harm or disarm intent
+
+
+
diff --git a/datum/wound/burn.html b/datum/wound/burn.html
new file mode 100644
index 0000000000000..465a900be6e85
--- /dev/null
+++ b/datum/wound/burn.html
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+ /datum/wound/burn - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ flesh_damage How much damage to our flesh we currently have. Once both this and infestation reach 0, the wound is considered healed
+ flesh_healing Our current counter for how much flesh regeneration we have stacked from regenerative mesh/synthflesh/whatever, decrements each tick and lowers flesh_damage
+ infestation Our current level of infection
+ infestation_rate How quickly infection breeds on this burn if we don't have disinfectant
+ sanitization Our current level of sanitization/anti-infection, from disinfectants/alcohol/UV lights. While positive, totally pauses and slowly reverses infestation effects each tick
+ strikes_to_lose_limb Once we reach infestation beyond WOUND_INFESTATION_SEPSIS, we get this many warnings before the limb is completely paralyzed (you'd have to ignore a really bad burn for a really long time for this to happen) Procs
+ mesh if someone is using mesh on our burns
+ ointment if someone is using ointment on our burns
+ uv Paramedic UV penlights
+ Var Details flesh_damage
+
+
+
+
+
+ How much damage to our flesh we currently have. Once both this and infestation reach 0, the wound is considered healed
flesh_healing
+
+
+
+
+
+ Our current counter for how much flesh regeneration we have stacked from regenerative mesh/synthflesh/whatever, decrements each tick and lowers flesh_damage
infestation
+
+
+
+
+
+ Our current level of infection
infestation_rate
+
+
+
+
+
+ How quickly infection breeds on this burn if we don't have disinfectant
sanitization
+
+
+
+
+
+ Our current level of sanitization/anti-infection, from disinfectants/alcohol/UV lights. While positive, totally pauses and slowly reverses infestation effects each tick
strikes_to_lose_limb
+
+
+
+
+
+ Once we reach infestation beyond WOUND_INFESTATION_SEPSIS, we get this many warnings before the limb is completely paralyzed (you'd have to ignore a really bad burn for a really long time for this to happen)
Proc Details
+ if someone is using mesh on our burns
ointment
+
+ if someone is using ointment on our burns
+ Paramedic UV penlights
+
+
+
diff --git a/datum/wound/loss.html b/datum/wound/loss.html
new file mode 100644
index 0000000000000..da29fc0c4500f
--- /dev/null
+++ b/datum/wound/loss.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /datum/wound/loss - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ apply_dismember Our special proc for our special dismembering, the wounding type only matters for what text we have
Proc Details apply_dismember
+
+ Our special proc for our special dismembering, the wounding type only matters for what text we have
+
+
+
diff --git a/datum/wound/pierce.html b/datum/wound/pierce.html
new file mode 100644
index 0000000000000..4e205b19a1a91
--- /dev/null
+++ b/datum/wound/pierce.html
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+ /datum/wound/pierce - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ gauzed_clot_rate If gauzed, what percent of the internal bleeding actually clots of the total absorption rate
+ initial_flow How much blood we start losing when this wound is first applied
+ internal_bleeding_chance When hit on this bodypart, we have this chance of losing some blood + the incoming damage
+ internal_bleeding_coefficient If we let off blood when hit, the max blood lost is this * the incoming damage Procs
+ suture If someone is using a suture to close this cut
+ tool_cauterize If someone is using either a cautery tool or something with heat to cauterize this pierce
+ Var Details gauzed_clot_rate
+
+
+
+
+
+ If gauzed, what percent of the internal bleeding actually clots of the total absorption rate
initial_flow
+
+
+
+
+
+ How much blood we start losing when this wound is first applied
internal_bleeding_chance
+
+
+
+
+
+ When hit on this bodypart, we have this chance of losing some blood + the incoming damage
internal_bleeding_coefficient
+
+
+
+
+
+ If we let off blood when hit, the max blood lost is this * the incoming damage
Proc Details
+ If someone is using a suture to close this cut
+ If someone is using either a cautery tool or something with heat to cauterize this pierce
+
+
+
diff --git a/datum/wound/slash.html b/datum/wound/slash.html
new file mode 100644
index 0000000000000..820dd5be622f3
--- /dev/null
+++ b/datum/wound/slash.html
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+ /datum/wound/slash - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ clot_rate How fast our blood flow will naturally decrease per tick, not only do larger cuts bleed more faster, they clot slower
+ demotes_to Once the blood flow drops below minimum_flow, we demote it to this type of wound. If there's none, we're all better
+ highest_flow The maximum flow we've had so far
+ highest_scar A bad system I'm using to track the worst scar we earned (since we can demote, we want the biggest our wound has been, not what it was when it was cured (probably moderate))
+ initial_flow How much blood we start losing when this wound is first applied
+ max_per_type How much staunching per type (cautery, suturing, bandaging) you can have before that type is no longer effective for this cut NOT IMPLEMENTED
+ minimum_flow When we have less than this amount of flow, either from treatment or clotting, we demote to a lower cut or are healed of the wound Procs
+ las_cauterize If someone's putting a laser gun up to our cut to cauterize it
+ lick_wounds if a felinid is licking this cut to reduce bleeding
+ suture If someone is using a suture to close this cut
+ tool_cauterize If someone is using either a cautery tool or something with heat to cauterize this cut
+ Var Details clot_rate
+
+
+
+
+
+ How fast our blood flow will naturally decrease per tick, not only do larger cuts bleed more faster, they clot slower
demotes_to
+
+
+
+
+
+ Once the blood flow drops below minimum_flow, we demote it to this type of wound. If there's none, we're all better
highest_flow
+
+
+
+
+
+ The maximum flow we've had so far
highest_scar
+
+
+
+
+
+ A bad system I'm using to track the worst scar we earned (since we can demote, we want the biggest our wound has been, not what it was when it was cured (probably moderate))
initial_flow
+
+
+
+
+
+ How much blood we start losing when this wound is first applied
max_per_type
+
+
+
+
+
+ How much staunching per type (cautery, suturing, bandaging) you can have before that type is no longer effective for this cut NOT IMPLEMENTED
minimum_flow
+
+
+
+
+
+ When we have less than this amount of flow, either from treatment or clotting, we demote to a lower cut or are healed of the wound
Proc Details las_cauterize
+
+ If someone's putting a laser gun up to our cut to cauterize it
+ if a felinid is licking this cut to reduce bleeding
+ If someone is using a suture to close this cut
+ If someone is using either a cautery tool or something with heat to cauterize this cut
+
+
+
diff --git a/dmdoc.css b/dmdoc.css
new file mode 100644
index 0000000000000..367f005d2a85d
--- /dev/null
+++ b/dmdoc.css
@@ -0,0 +1,112 @@
+body {
+ margin: auto;
+ background: #f4f4f4;
+ color: #333333;
+ font-size: 16px;
+ line-height: 1.3;
+ max-width: 73%;
+ overflow-y: scroll;
+ font-family: Arial, Helvetica, sans-serif;
+}
+pre, code {
+ background: white;
+ tab-size: 4;
+ -moz-tab-size: 4;
+}
+pre {
+ padding: 8px;
+ white-space: pre-wrap;
+}
+code {
+ font-family: Consolas, "DejaVu Sans Mono", "Courier New", Courier, monospace;
+}
+a {
+ color: #333333;
+}
+article {
+ margin: 2.5% auto;
+}
+header, footer {
+ margin: 2.5% -6px;
+ border: 1px solid #444444;
+ border-radius: 5px;
+ padding: 5px;
+}
+h1 aside, h2 aside, h3 aside, h4 aside, h5 aside {
+ display: inline;
+ font-weight: normal;
+ font-size: smaller;
+}
+aside.declaration, aside.parent {
+ display: inline-block;
+ position: relative;
+ text-align: right;
+ width: 100px;
+ margin-right: -100px;
+ right: 105px;
+}
+aside.declaration {
+ font-style: italic;
+}
+table.summary tr:first-child > td > :first-child {
+ margin-top: 0;
+}
+table.summary tr:last-child > td > :last-child {
+ margin-bottom: 0;
+}
+table.summary th, table.summary td {
+ text-align: left;
+ vertical-align: top;
+ padding-left: 0;
+ padding-right: 1em;
+}
+table.summary th {
+ padding-left: 1em;
+ padding-bottom: 4px;
+ text-indent: -1em;
+}
+.no-substance {
+ color: #888888;
+}
+:target {
+ background-color: white;
+ border-radius: 5px;
+ padding-left: 3px;
+ padding-right: 3px;
+ margin-left: -3px;
+ margin-right: 3px;
+}
+img[src="git.png"] {
+ opacity: 0.8;
+}
+.expander {
+ cursor: pointer;
+ display: inline-block;
+ position: relative;
+ text-align: right;
+ width: 50px;
+ margin-right: -50px;
+ right: 53px;
+}
+
+@media (prefers-color-scheme: dark) {
+ body {
+ background-color: #151520;
+ color: #e0e0e0;
+ }
+ a {
+ color: #e0e0e0;
+ }
+ header, footer {
+ border-color: #d0d0d0;
+ }
+ .no-substance {
+ color: #bbbbbb;
+ }
+ pre, code, :target {
+ background-color: #252530;
+ }
+ img[src="git.png"] {
+ filter: invert(1);
+ }
+}
diff --git a/dmdoc.js b/dmdoc.js
new file mode 100644
index 0000000000000..6bf31f7e94411
--- /dev/null
+++ b/dmdoc.js
@@ -0,0 +1,58 @@
+// ----------------------------------------------------------------------------
+// Index page tree browsing
+
+document.addEventListener("DOMContentLoaded", function() {
+ var items = document.getElementsByClassName("index-tree");
+ var nodes = [];
+
+ for (var i = 0; i < items.length; ++i) {
+ var node = items[i];
+ var parent = node.parentElement;
+ if (!parent || parent.tagName.toLowerCase() != "li") {
+ continue;
+ }
+ node.hidden = true;
+ parent.style.listStyle = "none";
+ var expander = document.createElement("span");
+ expander.className = "expander";
+ expander.textContent = "\u2795";
+ expander.addEventListener("click", function(node) {
+ return function(event) {
+ if (event.target.tagName.toLowerCase() == "a") {
+ return;
+ }
+ event.preventDefault();
+ event.stopPropagation(true);
+ node.hidden = !node.hidden;
+ this.textContent = node.hidden ? "\u2795" : "\u2796";
+ };
+ }(node));
+
+ if (node.parentElement.parentElement.classList.contains("modules")) {
+ node.hidden = false;
+ expander.textContent = "\u2796";
+ }
+
+ parent.insertBefore(expander, parent.firstChild);
+ nodes.push({ node, expander });
+ }
+
+ if (nodes.length) {
+ var toggle = document.createElement("a");
+ toggle.href = "#";
+ toggle.appendChild(document.createTextNode("Toggle All"));
+ toggle.addEventListener("click", function(event) {
+ event.preventDefault();
+
+ var hidden = !nodes[1].node.hidden;
+ for (var i = 0; i < nodes.length; ++i) {
+ nodes[i].node.hidden = hidden;
+ nodes[i].expander.textContent = hidden ? "\u2795" : "\u2796";
+ }
+ });
+
+ var header = document.getElementsByTagName("header")[0];
+ header.appendChild(document.createTextNode(" \u2014 "));
+ header.appendChild(toggle);
+ }
+});
diff --git a/git.png b/git.png
new file mode 100644
index 0000000000000000000000000000000000000000..c190e8538b5c10d941a5527d6cd86cf088502733
GIT binary patch
literal 2383
zcmb_edsGuw8o!ev4?qHLT``Cz^-=7uB0>*HMP}Aw@h!E|Ajk>IT2LP0Er?`BrH9h0
zAoYRZA@+dPvsR@=2?e?{)w(<)gk8jH1rj#6krhZt*yc6K?2PB^>Hf3b)9%js=Kk*d
zzTY?B_uYHuo~ex65$od>-~|Bi*}N%c7XT2(-U66m&eui8GY}THZTCh7f9}=DeY=N=
z@hjN1<6U41@f)~IqA9peQXQAmZ2Pqk0zlBQIp%k}i=oLspV+q%0wgKdPa#=ZVfPP|
z4?kD6%2tQpE79N2Mi!N&CiZvT8#!Gn{p0na_lukQdM_H&zg*Ce-dbQ#C;4h_TMQZX
zi!0LVx372fx?09Qct7bvjZ1neD4OepJYL%Golw(H+HGek_{Byu-ADlN066e~{xt)(
z2#iUZmJhZ|<^Lu7Pt^9%3C;d!h%o2wXqjZsNANrI$~N%IonO&I{pE6bXku<7I~^6UnH?lSDA3~xW&VC4@aay)c)7xXX<
zUu`=E)QcrRBY)2@HnNOB@I#k@!Yu;NV&QpffkwmYUKfBHuEHyMJe}PRB1E{s0M83y
zJp2ToIi$q`1uS5x&v_mncFT);T6i9U9_5!&PfvO?PG9f@2atWLMlP11s6suQ5fTkF
zvhm^lD4s(V^{#_C<$6`H(aTQ~NZc^r6!|mna_xjUF?!X;(Lxp@a@|KkgErKl;p^;K
zT$c+fR*cfAD4tHW=4uc-h$0G0F3b`5ozh0V^DYNQQB
zAvA=B1~Zk*@c9xnMsd9kLKQ8kJc<3rAs(>zofqNbs?S7VJfb5F)Mzs=LYov@OIT0u
z9MYr#Q8d$U{nS<*yg?rg=(RY%J1t;}q5A`w^)t%;5Q#E%67jjP&0az;M*)HuwXFc6
zs7_*|K*#j8)Wc-4xaV?Mzkubja-dL*A{$t#_*Gn~v{w0%8jUmd=gIkk>W{f5Y(K!o
zCM@U2(aK$MNB)BDa4?$y+aN3rFS_YC^x`WR%KPF&cWciVSA?Fx)aZ7DH~Z&8K=DW`
zMq?NH0bK>N%D1mT4E0zmPI(>X0IHcl&}?>s6H7tPx+FGL0-MUpUoiQ}>A8kkv%8Vg
zbOuuouR2Lz124!|3g>^UM^=)N(+SV!cVh{7XVshUq_v=KJtwpACR)0TJ_h};#u~qO
zRSok>$~#VLP>z3J8;j3I(~h%O(fIbsGPnBOY{SJScQn0hy@B&^)IgU!c$!m`fhp-#
z>z^%0&wZ`IhVn-}jx=J5e%GbJg|2@DVx^zb!DhvgLE;08RqhDVhr85x)3IChefLb=
z4t=tFQH05u;S$ZdjbZ&O-gksH{!S%Mukx
z?}sAvfncOUzi<6?Cy;`LjH5PtdD(|?+x=C^3xi&CJY}t!X$d(6_v$uZb
zpW={KdWX2Kf6J|P$N!bHjs8t8^cnVlk$EjjF+LgdHC4>1ZXdVZeT@`{l0h$|NrxMd
z9K2v6LLJm6UW-Ns9^S^Yo#3TEajqU`4w@N)NWMZsb$Xe=6zdZgTC^*OIdV36A5QdT
zunlkQJ*bGr>CT3w5Va3(dJF3inksw-&RERFEKm0P=zIfoXVW}&RU%z=+9I8==yLZR
zm;v2+IagP;KvyjfBE=zOu;D!%Nx`c+VH?bQZqDZ0^xU@bWSD`3XCt2MGSfm+m$&3w
zC3DP~+);=)1#*=rqRGEo`Angm7%P2lzKJv2;<%EpfsQhft%F1lrJd`$M3v_Xj`lPri4CU
zEG)y3OpuZENVU$9{fTxisoE(cnu-4X;r3*R+DhMv_2&yw$ZtdCwqeJuqN&@{*pfJo
zeCFYV%u6uvTM6#$g4<*`4yMJvIt9exv|&-WlPeJD+%sU>U-BOX!z*6OavE9jzm4}j
z1plLHAGGFMrS*Nc_7mXK+Fxj6$SWzij%Jvyzp>M(+GEx}Dabu?b>t-U#Jv4jrs(YU
uu*mfpirO`AcnbGKEqUPIF?8O0O4v1cuzhf6?OOJ?X!FJ$F*i4)9RDY%f@^R9
literal 0
HcmV?d00001
diff --git a/global.html b/global.html
new file mode 100644
index 0000000000000..19d75f1644308
--- /dev/null
+++ b/global.html
@@ -0,0 +1,1707 @@
+
+
+
+
+
+
+ (global) - SPLURT Station 13
+
+
+
+
+(global)
+
+
+
+
+
+Vars
+ Failsafe Failsafe
+ Master StonedMC
+ SSdiscord
+ SSfastprocess obj/item/weapon/implant/integrated_circuit
+ SSrunechat
+ SStgui tgui subsystem
+ SStimer Procs
+ CreateBans DEBUG
+ GetJobName Gets the job title, if the job name is an alt title, locates the original title using a prebuilt cache
+ HeapPathWeightCompare TODO: Macro this to reduce proc overhead
+ WrapAdminProcCall Wrapper for proccalls where the datum is flagged as vareditted
+ ___TraitAdd DO NOT USE ___TraitAdd OR ___TraitRemove as a replacement for ADD_TRAIT / REMOVE_TRAIT defines. To be used explicitly for callback.
+ ___TraitRemove DO NOT USE ___TraitAdd OR ___TraitRemove as a replacement for ADD_TRAIT / REMOVE_TRAIT defines. To be used explicitly for callback.
+ _addtimer Create a new timer and insert it in the queue.
+You should not call this directly, and should instead use the addtimer macro, which includes source information.
+ _turf_in_offset Locating turfs
+ actionspeed_data_null_check Checks if a action speed modifier is valid and not missing any data
+ add_keybinding Adds an instanced keybinding to the global tracker
+ add_verb handles adding verbs and updating the stat panel browser
+ announce_arrival Send a message in common radio when a player arrives
+ block_calculate_resultant_damage Considers a block return_list and calculates damage to use from that.
+ callHook @file hooks.dm
+Implements hooks, a simple way to run code on pre-defined events.
+ call_emergency_meeting If the announcer overrides alert messages, use that message.
+Summon the crew for an emergency meeting
+ callback_select Runs a list of callbacks asyncronously, returning only when all have finished
+ check_admin_pings Checks a given message to see if any of the words contain an active admin's ckey with an @ before it
+ color_matrix_contrast_percent Exxagerates or removes brightness
+ color_matrix_hsv Builds a color matrix that transforms the hue, saturation, and value, all in one operation.
+ color_matrix_rotation Moves all colors angle degrees around the color wheel while maintaining intensity of the color and not affecting whites
+TODO: Need a version that only affects one color (ie shift red to blue but leave greens and blues alone)
+ color_matrix_saturation_percent Exxagerates or removes colors
+ completed_bounty_count Subtype Gens
+ create_mafia_game Creates the global datum for playing mafia games, destroys the last if that's required and returns the new.
+ create_strippable_list Creates an assoc list of keys to /datum/strippable_item
+ cultslur Makes you talk like you got cult stunned, which is slurring but with some dark messages
+ cut_relative_direction Takes a screen_loc string and cut out any directions like NORTH or SOUTH
+ dd_file2list Reading files
+ dd_hasprefix Prefix checking
+ dd_hassuffix Suffix checking
+ dd_replacetext Replacing text
+ dd_text2list Turning text into lists
+ debug_variable Get displayed variable in VV variable list
+ default_ui_state The sane defaults for a UI such as a computer or a machine.
+ delete_all_SS_and_recreate_master Delete all existing SS to basically start over
+ deltimer Delete a timer
+ diff_appearances Takes two appearances as args, prints out, logs, and returns a text representation of their differences
+Including suboverlays
+ emissive_appearance Produces a mutable appearance glued to the [EMISSIVE_PLANE] dyed to be the EMISSIVE_COLOR .
+ end_cooldown Callback called by a timer to end an associative-list-indexed cooldown.
+ english_list_assoc English_list but associative supporting. Higher overhead.
+@depricated
+ find_record Returns datum/data/record
+ finish_unequip_mob A utility function for /datum/strippable_item
s to finish unequipping an item from a mob.
+ firing_squad firing_squad is a proc for the :B:erforate smite to shoot each individual bullet at them, so that we can add actual delays without sleep() nonsense
+ format_frequency Format frequency by moving the decimal.
+ generate_asset_name Generate a filename for this asset
+The same asset will always lead to the same asset name
+(Generated names do not include file extention.)
+ generate_bitfields Turns /datum/bitfield subtypes into a list for use in debugging
+ generate_chemwiki_line datum/reagent/medicine, /datum/reagent/toxin, /datum/reagent/consumable, /datum/reagent/plantnutriment, /datum/reagent/uranium,
+datum/reagent/colorful_reagent, /datum/reagent/mutationtoxin, /datum/reagent/fermi, /datum/reagent/drug, /datum/reagent/impure
+ generate_selectable_species Generates species available to choose in character setup at roundstart
+ get_allowed_instrument_ids Get all non admin_only instruments.
+ get_atom_on_turf Returns the top-most atom sitting on the turf.
+For example, using this on a disk, which is in a bag, on a mob,
+will return the mob because it's on the turf.
+ get_base_area Returns the base area the target is located in if there is one.
+Alternatively, returns the area as is.
+ get_bbox_of_atoms Get a bounding box of a list of atoms.
+ get_cached_actionspeed_modifier Grabs a STATIC MODIFIER datum from cache. YOU MUST NEVER EDIT THESE DATUMS, OR IT WILL AFFECT ANYTHING ELSE USING IT TOO!
+ get_cached_movespeed_modifier Grabs a STATIC MODIFIER datum from cache. YOU MUST NEVER EDIT THESE DATUMS, OR IT WILL AFFECT ANYTHING ELSE USING IT TOO!
+ get_path_to This file contains the stuff you need for using JPS (Jump Point Search) pathing, an alternative to A* that skips
+over large numbers of uninteresting tiles resulting in much quicker pathfinding solutions. Mind that diagonals
+cost the same as cardinal moves currently, so paths may look a bit strange, but should still be optimal.
+ get_ranged_target_turf_direct Get ranged target turf, but with direct targets as opposed to directions
+ get_sub_areas Returns either null, or a list containing every sub area associated with our base area.
+If include_base is TRUE, the base area will also be added to the return list.
+ get_sub_areas_contents Simple proc that returns a sum of all contents from every sub area,
+Think of the above but for all contents, not just turfs, and without target z.
+ get_sub_areas_turfs Proc used for purposes similar to get_areas_turfs(), but aimed to include associated areas.
+Only accepts area instances and paths for the first arg, no text strings.
+Returns a list of all turfs found in the sub areas (including the base's if include_base is TRUE)
+and located in a z level matching target_z, or anywhere if target_z is 0
+ get_thirst Don't blame me if they have negative thirst, admeme.
+ get_valid_screen_location Returns a valid location to place a screen object without overflowing the viewport
+ get_vog_special get special role multiplier for voice of god. No double dipping.
+ getleftblocks DNA HELPER-PROCS
+ hull_shielding_get_tiles_around_area HELPER FILE FOR SHIELDING
+Gets hull exterior adjacent tiles of a certain area
+Area method.
+EXPENSIVE.
+If the area itself is already considered exterior, it'll find all tiles inside it that's next to an interior area.
+ hull_shielding_get_tiles_in_z Gets hull adjacent exterior tiles of an entire zlevel
+EXPENSIVE.
+Gets the tiles in the exterior area touching to a non-exterior area
+ icon2base64 Converts an icon to base64. Operates by putting the icon in the iconCache savefile,
+exporting it as text, and then parsing the base64 from that.
+(This relies on byond automatically storing icons in savefiles as base64)
+ init_keybindings Creates and sorts all the keybinding datums
+ is_ctf_target hey uhhh don't hit anyone behind them
+ is_energy_reflectable_projectile //// MISC HELPERS ////////
+Is this atom reflectable with ""standardized"" reflection methods like you know eshields and deswords and similar
+ is_guest_key Returns whether or not a player is a guest using their ckey as an input
+ isemptylist @depricated
+ json_deserialize_datum Convert a list of json to datum
+ json_serialize_datum Convert a datum into a json blob
+ listgetindex @depricated
+ lizard_name NAMEOF that actually works in static definitions because src::type requires src to be defined
+ load_map Shortcut function to parse a map and apply it to the world.
+ log_combat Log a combat message in the attack log
+ log_suspicious_login Writes to a special log file if the log_suspicious_login config flag is set,
+which is intended to contain all logins that failed under suspicious circumstances.
+ log_tgui Appends a tgui-related log entry. All arguments are optional.
+ log_wound log_wound() is for when someone is attacked and suffers a wound. Note that this only captures wounds from damage, so smites/forced wounds aren't logged, as well as demotions like cuts scabbing over
+ make_datum_references_lists Initial Building
+ md5asfile Save file as an external file then md5 it.
+Used because md5ing files stored in the rsc sometimes gives incorrect md5 results.
+ md5filepath Returns the md5 of a file at a given path.
+ message_centcom Used by communications consoles to message CentCom
+ message_syndicate Used by communications consoles to message the Syndicate
+ message_to_html Message-related procs
+ movespeed_data_null_check Checks if a move speed modifier is valid and not missing any data
+ nuke_request Used by communications consoles to request the nuclear launch codes
+ offset_to_screen_loc Takes a list in the form (x_offset, y_offset)
+And converts it to a screen loc string
+Accepts an optional view string/size to force the screen_loc around, so it can't go out of scope
+ overlays2text Converts an overlay list into text for debug printing
+Of note: overlays aren't actually mutable appearances, they're just appearances
+Don't have access to that type tho, so this is the best you're gonna get
+ parse_caught_click_modifiers Returns a turf based on text inputs, original turf and viewing client
+ pick_n_take Pick a random element from the list and remove it from the list.
+ podspawn One proc for easy spawning of pods in the code to drop off items before whizzling (please don't proc call this in game, it will destroy you)
+ process_teleport_locs Generate a list of turfs you can teleport to from the areas list
+ qdel Should be treated as a replacement for the 'del' keyword.
+ realize_appearance_queue Takes a list of appearnces, makes them mutable so they can be properly vv'd and inspected
+ recover_all_SS_and_recreate_master Recreate all SSs which will still cause data survive due to Recover(), the new Master will then find and take them from global.vars
+ recursive_organ_check
+ release_gas_to Releases gas from src to output air. This means that it can not transfer air to gas mixture with higher pressure.
+a global proc due to rustmos
+ remove_image_from_client Removes an image from a client's .images
. Useful as a callback.
+ remove_verb handles removing verb and sending it to browser to update, use this for removing verbs
+ reset_cooldown Proc used by stoppable timers to end a cooldown before the time has ran out.
+ return_unused_frequency returns a random unused frequency between MIN_FREE_FREQ & MAX_FREE_FREQ if free = TRUE, and MIN_FREQ & MAX_FREQ if FALSE
+ rgb_construct_color_matrix Assembles a color matrix, defaulting to identity
+ rgba_construct_color_matrix Assembles a color matrix, defaulting to identity
+ rustg_get_version Gets the version of rust_g
+ rustg_redis_disconnect_rq Disconnects from a previously connected redis server
+ rustg_unix_timestamp Returns the timestamp as a string
+ safepick @depricated
+ sanitize_css_class_name Removes all non-alphanumerics from the text, keep in mind this can lead to id conflicts
+ sanitize_frequency Ensure the frequency is within bounds of what it should be sending/receiving at
+ sanitize_hexcolor Sanitizes a hexadecimal color. Always outputs lowercase.
+ sanitize_ooccolor Makes sure the input color is text with a # at the start followed by 6 hexadecimal characters. Examples: "#ff1234", "#A38321", COLOR_GREEN_GRAY
+ scramble_message_replace_chars Slightly expensive proc to scramble a message using equal probabilities of character replacement from a list. DOES NOT SUPPORT HTML!
+ screen_loc_to_offset Takes a screen loc string in the format
+"+-left-offset:+-pixel,+-bottom-offset:+-pixel"
+Where the :pixel is optional, and returns
+A list in the format (x_offset, y_offset)
+We require context to get info out of screen locs that contain relative info, so NORTH, SOUTH, etc
+ seedify Finds and extracts seeds from an object
+ send2adminchat Sends a message to TGS admin chat channels.
+ send2chat Sends a message to TGS chat channels.
+ send2otherserver Sends a message to a set of cross-communications-enabled servers using world topic calls
+ setup_mod_themes Global proc that sets up all MOD themes as singletons in a list and returns it.
+ single_path_typecache_immutable Makes a typecache of a single typecache
+ slur Makes you speak like you're drunk
+ sound_to_playing_players Citadel edit - Citadel reverb
+End
+ stars Convert random parts of a passed in message to stars
+ start_unequip_mob A utility function for /datum/strippable_item
s to start unequipping an item from a mob.
+ stripped_multiline_input_or_reflect stripped_multiline_input but reflects to the user instead if it's too big and returns null.
+ stutter Adds stuttering to the message passed in
+ tgalert DEPRECATED: USE tgui_alert(...) INSTEAD
+ tgui_Topic Middleware for /client/Topic.
+ tgui_alert Creates a TGUI alert window and returns the user's response.
+ tgui_alert_async Creates an asynchronous TGUI alert window with an associated callback.
+ tgui_input_list Creates a TGUI input list window and returns the user's response.
+ tgui_input_list_async Creates an asynchronous TGUI input list window with an associated callback.
+ tgui_input_number Creates a TGUI window with a number input. Returns the user's response as num | null.
+ tgui_input_number_async Creates an asynchronous TGUI input num window with an associated callback.
+ tgui_input_text Creates a TGUI window with a text input. Returns the user's response.
+ tgui_input_text_async Creates an asynchronous TGUI input text window with an associated callback.
+ timeleft Get the remaining deciseconds on a timer
+ to_chat Sends the message to the recipient (target).
+ to_chat_immediate Circumvents the message queue and sends the message
+to the recipient (target) as soon as possible.
+ transfer_randomized_list Penalties start
+ transform_matrix_construct constructs a transform matrix, defaulting to identity
+ typecacheof Like typesof() or subtypesof(), but returns a typecache instead of a list
+ ui_status_only_living Returns a UI status such that the dead will be able to watch, but not interact.
+ ui_status_silicon_has_access Returns a UI status such that silicons will be able to interact with whatever
+they would have access to if this was a machine. For example, AIs can
+interact if there's cameras with wireless control is enabled.
+ ui_status_user_has_free_hands Returns a UI status such that those without blocked hands will be able to interact,
+but everyone else can only watch.
+ ui_status_user_is_abled Returns a UI status such that users with debilitating conditions, such as
+being dead or not having power for silicons, will not be able to interact.
+Being dead will disable UI, being incapacitated will continue updating it,
+and anything else will make it interactive.
+ ui_status_user_is_adjacent Returns a UI status such that users adjacent to source will be able to interact,
+far away users will be able to see, and anyone farther won't see anything.
+Dead users will receive updates no matter what, though you likely want to add
+a [ui_status_only_living
] check for finer observer interactions.
+ ui_status_user_is_advanced_tool_user Returns a UI status such that advanced tool users will be able to interact,
+but everyone else can only watch.
+ ui_status_user_is_conscious_and_lying_down Returns UI_INTERACTIVE if the user is conscious and lying down.
+Returns UI_UPDATE otherwise.
+ ui_status_user_strictly_adjacent Return UI_INTERACTIVE if the user is strictly adjacent to the target atom, whether they can see it or not.
+Return UI_CLOSE otherwise.
+ unformat_frequency Opposite of format, returns as a number
+ url2htmlloader Return html to load a url.
+for use inside of browse() calls to html assets that might be loaded on a cdn.
+ valid_window_location Checks whether the target turf is in a valid state to accept a directional window
+or other directional pseudo-dense object such as railings.
+ velvetspeech FermiChem
+ view_to_pixels Takes a string or num view, and converts it to pixel width/height in a list(pixel_width, pixel_height)
+ voice_of_god VOICE OF GOD
+ wave_explosion Creates a wave explosion at a certain place
+ woundscan Displays wounds with extended information on their status vs medscanners
+ zone2body_parts_covered For finding out what body parts a body zone covers, the inverse of the below basically
+ Var Details Failsafe
+ – /static/datum /controller/failsafe
+
+
+
+
+ Failsafe
+Pretty much pokes the MC to make sure it's still alive.
+ StonedMC
+Designed to properly split up a given tick among subsystems
+Note: if you read parts of this code and think "why is it doing it that way"
+Odds are, there is a reason
+ Discord Subsystem
+This subsystem handles some integrations with discord
+NOTES:
+
+There is a DB table to track ckeys and associated discord IDs. (discord_link)
+This system REQUIRES TGS for notifying users at end of the round
+The SS uses fire() instead of just pure shutdown, so people can be notified if it comes back after a crash, where the SS wasn't properly shutdown
+It only writes to the disk every 5 minutes, and it won't write to disk if the file is the same as it was the last time it was written. This is to save on disk writes
+The system is kept per-server (EG: Terry will not notify people who pressed notify on Sybil), but the accounts are between servers so you dont have to relink on each server.
+
+HOW NOTIFYING WORKS ROUNDSTART:
+
+The file is loaded and the discord IDs are extracted
+A ping is sent to the discord with the IDs of people who wished to be notified
+The file is emptied
+
+MIDROUND:
+
+Someone usees the notify verb, it adds their discord ID to the list.
+On fire, it will write that to the disk, as long as conditions above are correct
+
+END ROUND:
+
+The file is force-saved, incase it hasn't fired at end round
+
+This is an absolute clusterfuck, but its my clusterfuck -aa07
SSfastprocess
+
+
+
+
+
+ obj/item/weapon/implant/integrated_circuit
+ Runechat Subsystem
+Maintains a timer-like system to handle destruction of runechat messages. Much of this code is modeled
+after or adapted from the timer subsystem.
+Note that this has the same structure for storing and queueing messages as the timer subsystem does
+for handling timers: the bucket_list is a list of chatmessage datums, each of which are the head
+of a circularly linked list. Any given index in bucket_list could be null, representing an empty bucket.
+ tgui subsystem
+Contains all tgui state and subsystem code.
+ Timer Subsystem
+Handles creation, callbacks, and destruction of timed events.
+It is important to understand the buckets used in the timer subsystem are just a series of circular doubly-linked
+lists. The object at a given index in bucket_list is a /datum/timedevent, the head of a circular list, which has prev
+and next references for the respective elements in that bucket's circular list.
Proc Details CreateBans()
+
+
+
+
+
+ DEBUG
GetJobName(jobName)
+
+
+
+
+
+ Gets the job title, if the job name is an alt title, locates the original title using a prebuilt cache
+ TODO: Macro this to reduce proc overhead
WrapAdminProcCall(/datum /target, procname, /list/arguments)
+
+
+
+
+
+ Wrapper for proccalls where the datum is flagged as vareditted
___TraitAdd(target, trait, source)
+
+
+
+
+
+ DO NOT USE ___TraitAdd OR ___TraitRemove as a replacement for ADD_TRAIT / REMOVE_TRAIT defines. To be used explicitly for callback.
___TraitRemove(target, trait, source)
+
+
+
+
+
+ DO NOT USE ___TraitAdd OR ___TraitRemove as a replacement for ADD_TRAIT / REMOVE_TRAIT defines. To be used explicitly for callback.
_addtimer
+
+ Create a new timer and insert it in the queue.
+You should not call this directly, and should instead use the addtimer macro, which includes source information.
+Arguments:
+
+callback the callback to call on timer finish
+wait deciseconds to run the timer for
+flags flags for this timer, see: code__DEFINES\subsystems.dm
+ _turf_in_offset(s, x, y, z)
+
+
+
+
+
+ Locating turfs
+ Checks if a action speed modifier is valid and not missing any data
add_keybinding
+
+ Adds an instanced keybinding to the global tracker
add_verb(/client /target, verb_or_list_to_add)
+
+
+
+
+
+ handles adding verbs and updating the stat panel browser
+pass the verb type path to this instead of adding it directly to verbs so the statpanel can update
+Arguments:
+
+target - Who the verb is being added to, client or mob typepath
+verb - typepath to a verb, or a list of verbs, supports lists of lists
+ announce_arrival
+
+ Send a message in common radio when a player arrives
block_calculate_resultant_damage(damage, /list/block_return)
+
+
+
+
+
+ Considers a block return_list and calculates damage to use from that.
callHook(hook, /list/args)
+
+
+
+
+
+ @file hooks.dm
+Implements hooks, a simple way to run code on pre-defined events.
+
+
+@page hooks Code hooks
+
+
+@section hooks Hooks
+
+
+A hook is defined under /hook in the type tree.
+
+
+To add some code to be called by the hook, define a proc under the type, as so:
+
+
+@code
+/hook/foo/proc/bar()
+if(1)
+return TRUE //Sucessful
+else
+return FALSE //Error, or runtime.
+
+
+@endcode
+
+
+All hooks must return nonzero on success, as runtimes will force return null.
+
+
+Calls a hook, executing every piece of code that's attached to it.
+@param hook Identifier of the hook to call.
+@returns 1 if all hooked code runs successfully, 0 otherwise.
call_emergency_meeting
+
+ If the announcer overrides alert messages, use that message.
+Summon the crew for an emergency meeting
+Teleports the crew to a specified area, and tells everyone (via an announcement) who called the meeting. Should only be used during april fools!
+Arguments:
+
+user - Mob who called the meeting
+button_zone - Area where the meeting was called and where everyone will get teleported to
+ callback_select(/list/callbacks, /list/callback_args, savereturns, resolution)
+
+
+
+
+
+ Runs a list of callbacks asyncronously, returning only when all have finished
+Callbacks can be repeated, to call it multiple times
+Arguments:
+
+list/callbacks the list of callbacks to be called
+list/callback_args the list of lists of arguments to pass into each callback
+savereturns Optionally save and return the list of returned values from each of the callbacks
+resolution The number of byond ticks between each time you check if all callbacks are complete
+ check_admin_pings(msg)
+
+
+
+
+
+ Checks a given message to see if any of the words contain an active admin's ckey with an @ before it
+Returns nothing if no pings are found, otherwise returns an associative list with ckey -> client
+Also modifies msg to underline the pings, then stores them in the key ADMINSAY_PING_UNDERLINE_NAME_INDEX for returning
+Arguments:
+
+msg - the message being scanned
+ color_matrix_contrast_percent(percent)
+
+
+
+
+
+ Exxagerates or removes brightness
color_matrix_hsv(hue, saturation, value)
+
+
+
+
+
+ Builds a color matrix that transforms the hue, saturation, and value, all in one operation.
color_matrix_rotation(angle)
+
+
+
+
+
+ Moves all colors angle degrees around the color wheel while maintaining intensity of the color and not affecting whites
+TODO: Need a version that only affects one color (ie shift red to blue but leave greens and blues alone)
color_matrix_saturation_percent(percent)
+
+
+
+
+
+ Exxagerates or removes colors
completed_bounty_count()
+
+
+
+
+
+ Subtype Gens
+Strict Type Gens
+Dynamic Gens
+Cutoff for Non-Low Priority Bounties
+Low Priority Gens
create_mafia_game()
+
+
+
+
+
+ Creates the global datum for playing mafia games, destroys the last if that's required and returns the new.
create_strippable_list(types)
+
+
+
+
+
+ Creates an assoc list of keys to /datum/strippable_item
cultslur(phrase)
+
+
+
+
+
+ Makes you talk like you got cult stunned, which is slurring but with some dark messages
cut_relative_direction(fragment)
+
+
+
+
+
+ Takes a screen_loc string and cut out any directions like NORTH or SOUTH
dd_file2list(file_path, separator)
+
+
+
+
+
+ Reading files
dd_hasprefix(text, prefix)
+
+
+
+
+
+ Prefix checking
dd_hassuffix(text, suffix)
+
+
+
+
+
+ Suffix checking
dd_replacetext(text, search_string, replacement_string)
+
+
+
+
+
+ Replacing text
dd_text2list(text, separator)
+
+
+
+
+
+ Turning text into lists
debug_variable(name, value, level, /datum /D, sanitize)
+
+
+
+
+
+ Get displayed variable in VV variable list
default_ui_state
+
+ The sane defaults for a UI such as a computer or a machine.
delete_all_SS_and_recreate_master()
+
+
+
+
+
+ Delete all existing SS to basically start over
deltimer(id)
+
+
+
+
+
+ Delete a timer
+Arguments:
+
+id a timerid or a /datum/timedevent
+ diff_appearances(/mutable_appearance/first, /mutable_appearance/second, iter)
+
+
+
+
+
+ Takes two appearances as args, prints out, logs, and returns a text representation of their differences
+Including suboverlays
emissive_appearance(icon, icon_state, layer, alpha, appearance_flags)
+
+
+
+
+
+ Produces a mutable appearance glued to the [EMISSIVE_PLANE] dyed to be the EMISSIVE_COLOR .
end_cooldown(/datum /source, index)
+
+
+
+
+
+ Callback called by a timer to end an associative-list-indexed cooldown.
+Arguments:
+
+source - datum storing the cooldown
+index - string index storing the cooldown on the cooldowns associative list
+
+This sends a signal reporting the cooldown end.
english_list_assoc(/list/input, nothing_text, and_text, comma_text, final_comma_text)
+
+
+
+
+
+ English_list but associative supporting. Higher overhead.
+@depricated
find_record(field, value, /list/L)
+
+
+
+
+
+ Returns datum/data/record
finish_unequip_mob
+
+ A utility function for /datum/strippable_item
s to finish unequipping an item from a mob.
firing_squad
+
+ firing_squad is a proc for the :B:erforate smite to shoot each individual bullet at them, so that we can add actual delays without sleep() nonsense
+Hilariously, if you drag someone away mid smite, the bullets will still chase after them from the original spot, possibly hitting other people. Too funny to fix imo
+Arguments:
+
+target- guy we're shooting obviously
+source_turf- where the bullet begins, preferably on a turf next to the target
+body_zone- which bodypart we're aiming for, if there is one there
+wound_bonus- the wounding power we're assigning to the bullet, since we don't care about the base one
+damage- the damage we're assigning to the bullet, since we don't care about the base one
+
+ Format frequency by moving the decimal.
generate_asset_name(file)
+
+
+
+
+
+ Generate a filename for this asset
+The same asset will always lead to the same asset name
+(Generated names do not include file extention.)
generate_bitfields()
+
+
+
+
+
+ Turns /datum/bitfield subtypes into a list for use in debugging
generate_chemwiki_line
+
+ datum/reagent/medicine, /datum/reagent/toxin, /datum/reagent/consumable, /datum/reagent/plantnutriment, /datum/reagent/uranium,
+datum/reagent/colorful_reagent, /datum/reagent/mutationtoxin, /datum/reagent/fermi, /datum/reagent/drug, /datum/reagent/impure
generate_selectable_species(clear)
+
+
+
+
+
+ Generates species available to choose in character setup at roundstart
+This proc generates which species are available to pick from in character setup.
+If there are no available roundstart species, defaults to human.
get_allowed_instrument_ids()
+
+
+
+
+
+ Get all non admin_only instruments.
get_atom_on_turf
+
+ Returns the top-most atom sitting on the turf.
+For example, using this on a disk, which is in a bag, on a mob,
+will return the mob because it's on the turf.
+Arguments
+
+something_in_turf - a movable within the turf, somewhere.
+stop_type - optional - stops looking if stop_type is found in the turf, returning that type (if found).
+ get_base_area
+
+ Returns the base area the target is located in if there is one.
+Alternatively, returns the area as is.
get_bbox_of_atoms(/list/atoms)
+
+
+
+
+
+ Get a bounding box of a list of atoms.
+Arguments:
+
+atoms - List of atoms. Can accept output of view() and range() procs.
+
+Returns: list(x1, y1, x2, y2)
get_cached_actionspeed_modifier(modtype)
+
+
+
+
+
+ Grabs a STATIC MODIFIER datum from cache. YOU MUST NEVER EDIT THESE DATUMS, OR IT WILL AFFECT ANYTHING ELSE USING IT TOO!
get_cached_movespeed_modifier(modtype)
+
+
+
+
+
+ Grabs a STATIC MODIFIER datum from cache. YOU MUST NEVER EDIT THESE DATUMS, OR IT WILL AFFECT ANYTHING ELSE USING IT TOO!
get_path_to(caller, end, max_distance, mintargetdist, id, simulated_only, /turf /exclude, skip_first)
+
+
+
+
+
+ This file contains the stuff you need for using JPS (Jump Point Search) pathing, an alternative to A* that skips
+over large numbers of uninteresting tiles resulting in much quicker pathfinding solutions. Mind that diagonals
+cost the same as cardinal moves currently, so paths may look a bit strange, but should still be optimal.
+This is the proc you use whenever you want to have pathfinding more complex than "try stepping towards the thing".
+If no path was found, returns an empty list, which is important for bots like medibots who expect an empty list rather than nothing.
+Arguments:
+
+caller: The movable atom that's trying to find the path
+end: What we're trying to path to. It doesn't matter if this is a turf or some other atom, we're gonna just path to the turf it's on anyway
+max_distance: The maximum number of steps we can take in a given path to search (default: 30, 0 = infinite)
+mintargetdistance: Minimum distance to the target before path returns, could be used to get near a target, but not right to it - for an AI mob with a gun, for example.
+id: An ID card representing what access we have and what doors we can open. Its location relative to the pathing atom is irrelevant
+simulated_only: Whether we consider turfs without atmos simulation (AKA do we want to ignore space)
+exclude: If we want to avoid a specific turf, like if we're a mulebot who already got blocked by some turf
+skip_first: Whether or not to delete the first item in the path. This would be done because the first item is the starting tile, which can break movement for some creatures.
+ get_ranged_target_turf_direct(/atom /A, /atom /target, range, offset)
+
+
+
+
+
+ Get ranged target turf, but with direct targets as opposed to directions
+Starts at atom A and gets the exact angle between A and target
+Moves from A with that angle, Range amount of times, until it stops, bound to map size
+Arguments:
+
+A - Initial Firer / Position
+target - Target to aim towards
+range - Distance of returned target turf from A
+offset - Angle offset, 180 input would make the returned target turf be in the opposite direction
+ get_sub_areas(/atom /target, include_base)
+
+
+
+
+
+ Returns either null, or a list containing every sub area associated with our base area.
+If include_base is TRUE, the base area will also be added to the return list.
get_sub_areas_contents(/area /A, include_base)
+
+
+
+
+
+ Simple proc that returns a sum of all contents from every sub area,
+Think of the above but for all contents, not just turfs, and without target z.
get_sub_areas_turfs(/area /A, target_z, include_base)
+
+
+
+
+
+ Proc used for purposes similar to get_areas_turfs(), but aimed to include associated areas.
+Only accepts area instances and paths for the first arg, no text strings.
+Returns a list of all turfs found in the sub areas (including the base's if include_base is TRUE)
+and located in a z level matching target_z, or anywhere if target_z is 0
get_thirst
+
+ Don't blame me if they have negative thirst, admeme.
get_valid_screen_location(target_loc, target_offset, view)
+
+
+
+
+
+ Returns a valid location to place a screen object without overflowing the viewport
+
+target: The target location as a purely number based screen_loc string "+-left-offset:+-pixel,+-bottom-offset:+-pixel"
+target_offset: The amount we want to offset the target location by. We explictly don't care about direction here, we will try all 4
+view: The view variable of the client we're doing this for. We use this to get the size of the screen
+
+Returns a screen loc representing the valid location
get_vog_special
+
+ get special role multiplier for voice of god. No double dipping.
getleftblocks(input, blocknumber, blocksize)
+
+
+
+
+
+ DNA HELPER-PROCS
hull_shielding_get_tiles_around_area(/area /instance, check_tick)
+
+
+
+
+
+ HELPER FILE FOR SHIELDING
+Gets hull exterior adjacent tiles of a certain area
+Area method.
+EXPENSIVE.
+If the area itself is already considered exterior, it'll find all tiles inside it that's next to an interior area.
hull_shielding_get_tiles_in_z(zlevel, check_tick, recurse, /list/outlist, /list/scanned_zlevels)
+
+
+
+
+
+ Gets hull adjacent exterior tiles of an entire zlevel
+EXPENSIVE.
+Gets the tiles in the exterior area touching to a non-exterior area
icon2base64(/icon/icon)
+
+
+
+
+
+ Converts an icon to base64. Operates by putting the icon in the iconCache savefile,
+exporting it as text, and then parsing the base64 from that.
+(This relies on byond automatically storing icons in savefiles as base64)
init_keybindings()
+
+
+
+
+
+ Creates and sorts all the keybinding datums
is_ctf_target
+
+ hey uhhh don't hit anyone behind them
is_energy_reflectable_projectile
+
+ //// MISC HELPERS ////////
+Is this atom reflectable with ""standardized"" reflection methods like you know eshields and deswords and similar
is_guest_key(key)
+
+
+
+
+
+ Returns whether or not a player is a guest using their ckey as an input
isemptylist(/list/L)
+
+
+
+
+
+ @depricated
json_deserialize_datum(/list/jsonlist, /list/options, target_type, strict_target_type)
+
+
+
+
+
+ Convert a list of json to datum
json_serialize_datum(/datum /D, /list/options)
+
+
+
+
+
+ Convert a datum into a json blob
listgetindex(/list/L, index)
+
+
+
+
+
+ @depricated
lizard_name(gender)
+
+
+
+
+
+ NAMEOF that actually works in static definitions because src::type requires src to be defined
load_map(dmm_file, x_offset, y_offset, z_offset, cropMap, measureOnly, no_changeturf, x_lower, x_upper, y_lower, y_upper, placeOnTop, orientation, annihilate_tiles, crop_relative_to_game_world)
+
+
+
+
+
+ Shortcut function to parse a map and apply it to the world.
+
+dmm_file
: A .dmm file to load (Required).
+x_offset
, y_offset
, z_offset
: Positions representign where to load the map (Optional).
+cropMap
: When true, the map will be cropped to fit the existing world dimensions (Optional).
+measureOnly
: When true, no changes will be made to the world (Optional).
+no_changeturf
: When true, turf/AfterChange won't be called on loaded turfs
+x_lower
, x_upper
, y_lower
, y_upper
: Coordinates (relative to the game world) to crop to (Optional).
+placeOnTop
: Whether to use turf/PlaceOnTop rather than turf/ChangeTurf (Optional).
+ log_combat(/atom /user, /atom /target, what_done, /atom /object, addition)
+
+
+
+
+
+ Log a combat message in the attack log
+Arguments:
+
+atom/user - argument is the actor performing the action
+atom/target - argument is the target of the action
+what_done - is a verb describing the action (e.g. punched, throwed, kicked, etc.)
+atom/object - is a tool with which the action was made (usually an item)
+addition - is any additional text, which will be appended to the rest of the log line
+ log_suspicious_login(text, access_log_mirror)
+
+
+
+
+
+ Writes to a special log file if the log_suspicious_login config flag is set,
+which is intended to contain all logins that failed under suspicious circumstances.
+Mirrors this log entry to log_access when access_log_mirror is TRUE, so this proc
+doesn't need to be used alongside log_access and can replace it where appropriate.
log_tgui
+
+ Appends a tgui-related log entry. All arguments are optional.
log_wound(/atom /victim, /datum /wound /suffered_wound, dealt_damage, dealt_wound_bonus, dealt_bare_wound_bonus, base_roll)
+
+
+
+
+
+ log_wound() is for when someone is attacked and suffers a wound. Note that this only captures wounds from damage, so smites/forced wounds aren't logged, as well as demotions like cuts scabbing over
+Note that this has no info on the attack that dealt the wound: information about where damage came from isn't passed to the bodypart's damaged proc. When in doubt, check the attack log for attacks at that same time
+TODO later: Add logging for healed wounds, though that will require some rewriting of healing code to prevent admin heals from spamming the logs. Not high priority
+Arguments:
+
+victim- The guy who got wounded
+suffered_wound- The wound, already applied, that we're logging. It has to already be attached so we can get the limb from it
+dealt_damage- How much damage is associated with the attack that dealt with this wound.
+dealt_wound_bonus- The wound_bonus, if one was specified, of the wounding attack
+dealt_bare_wound_bonus- The bare_wound_bonus, if one was specified and applied , of the wounding attack. Not shown if armor was present
+base_roll- Base wounding ability of an attack is a random number from 1 to (dealt_damage ** WOUND_DAMAGE_EXPONENT). This is the number that was rolled in there, before mods
+ make_datum_references_lists()
+
+
+
+
+
+ Initial Building
md5asfile(file)
+
+
+
+
+
+ Save file as an external file then md5 it.
+Used because md5ing files stored in the rsc sometimes gives incorrect md5 results.
md5filepath(path)
+
+
+
+
+
+ Returns the md5 of a file at a given path.
message_centcom(text, /mob /sender)
+
+
+
+
+
+ Used by communications consoles to message CentCom
message_syndicate(text, /mob /sender)
+
+
+
+
+
+ Used by communications consoles to message the Syndicate
message_to_html(message)
+
+
+
+
+
+ Message-related procs
+Message format (/list):
+
+type - Message type, must be one of defines in code/__DEFINES/chat.dm
+text - Plain message text
+html - HTML message text
+Optional metadata, can be any key/value pair.
+
+Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+ Checks if a move speed modifier is valid and not missing any data
nuke_request(text, /mob /sender)
+
+
+
+
+
+ Used by communications consoles to request the nuclear launch codes
offset_to_screen_loc(x_offset, y_offset, view)
+
+
+
+
+
+ Takes a list in the form (x_offset, y_offset)
+And converts it to a screen loc string
+Accepts an optional view string/size to force the screen_loc around, so it can't go out of scope
overlays2text(/list/overlays)
+
+
+
+
+
+ Converts an overlay list into text for debug printing
+Of note: overlays aren't actually mutable appearances, they're just appearances
+Don't have access to that type tho, so this is the best you're gonna get
parse_caught_click_modifiers(/list/modifiers, /turf /origin, /client /viewing_client)
+
+
+
+
+
+ Returns a turf based on text inputs, original turf and viewing client
pick_n_take(/list/L)
+
+
+
+
+
+ Pick a random element from the list and remove it from the list.
podspawn(specifications)
+
+
+
+
+
+ One proc for easy spawning of pods in the code to drop off items before whizzling (please don't proc call this in game, it will destroy you)
+Arguments:
+
+specifications: special mods to the pod, see non var edit specifications for details on what you should fill this with
+Non var edit specifications:
+target = where you want the pod to drop
+path = a special specific pod path if you want, this can save you a lot of var edits
+style = style of the pod, defaults to the normal pod
+spawn = spawned path or a list of the paths spawned, what you're sending basically
+Returns the pod spawned, in case you want to spawn items yourself and modify them before putting them in.
+ process_teleport_locs()
+
+
+
+
+
+ Generate a list of turfs you can teleport to from the areas list
+Includes areas if they're not a shuttle or not not teleport or have no contents
+The chosen turf is the first item in the areas contents that is a station level
+The returned list of turfs is sorted by name
qdel(/datum /D, force, ...)
+
+
+
+
+
+ Should be treated as a replacement for the 'del' keyword.
+Datums passed to this will be given a chance to clean up references to allow the GC to collect them.
realize_appearance_queue(/list/appearances)
+
+
+
+
+
+ Takes a list of appearnces, makes them mutable so they can be properly vv'd and inspected
recover_all_SS_and_recreate_master()
+
+
+
+
+
+ Recreate all SSs which will still cause data survive due to Recover(), the new Master will then find and take them from global.vars
recursive_organ_check
+
+
+recursive_organ_check
+
+inputs: O (object to start with)
+outputs:
+description: A pseudo-recursive loop based off of the recursive mob check, this check looks for any organs held
+
+ within 'O', toggling their frozen flag. This check excludes items held within other safe organ
+
+
+
+ storage units, so that only the lowest level of container dictates whether we do or don't decompose
+
+
+
+
+ release_gas_to
+
+ Releases gas from src to output air. This means that it can not transfer air to gas mixture with higher pressure.
+a global proc due to rustmos
remove_image_from_client
+
+ Removes an image from a client's .images
. Useful as a callback.
remove_verb(/client /target, verb_or_list_to_remove)
+
+
+
+
+
+ handles removing verb and sending it to browser to update, use this for removing verbs
+pass the verb type path to this instead of removing it from verbs so the statpanel can update
+Arguments:
+
+target - Who the verb is being removed from, client or mob typepath
+verb - typepath to a verb, or a list of verbs, supports lists of lists
+ reset_cooldown(/datum /source, index)
+
+
+
+
+
+ Proc used by stoppable timers to end a cooldown before the time has ran out.
+Arguments:
+
+source - datum storing the cooldown
+index - string index storing the cooldown on the cooldowns associative list
+
+This sends a signal reporting the cooldown end, passing the time left as an argument.
return_unused_frequency(free)
+
+
+
+
+
+ returns a random unused frequency between MIN_FREE_FREQ & MAX_FREE_FREQ if free = TRUE, and MIN_FREQ & MAX_FREQ if FALSE
rgb_construct_color_matrix(rr, rg, rb, gr, gg, gb, br, bg, bb, cr, cg, cb)
+
+
+
+
+
+ Assembles a color matrix, defaulting to identity
rgba_construct_color_matrix(rr, rg, rb, ra, gr, gg, gb, ga, br, bg, bb, ba, ar, ag, ab, aa, cr, cg, cb, ca)
+
+
+
+
+
+ Assembles a color matrix, defaulting to identity
rustg_get_version()
+
+
+
+
+
+ Gets the version of rust_g
rustg_redis_disconnect_rq()
+
+
+
+
+
+ Disconnects from a previously connected redis server
rustg_unix_timestamp()
+
+
+
+
+
+ Returns the timestamp as a string
safepick(/list/L)
+
+
+
+
+
+ @depricated
sanitize_css_class_name(name)
+
+
+
+
+
+ Removes all non-alphanumerics from the text, keep in mind this can lead to id conflicts
sanitize_frequency(frequency, free)
+
+
+
+
+
+ Ensure the frequency is within bounds of what it should be sending/receiving at
sanitize_hexcolor(color, desired_format, include_crunch, default, default_replacement)
+
+
+
+
+
+ Sanitizes a hexadecimal color. Always outputs lowercase.
+@params
+
+color - input color, 3 or 6 characters without the #.
+desired_format - 3 or 6 characters without the potential #. can only put in 3 or 6 here.
+include_crunch - do we put a # at the start
+default - default color. must be 3 or 6 characters with or without #.
+default_replacement - what we replace broken letters with.
+ sanitize_ooccolor(color)
+
+
+
+
+
+ Makes sure the input color is text with a # at the start followed by 6 hexadecimal characters. Examples: "#ff1234", "#A38321", COLOR_GREEN_GRAY
scramble_message_replace_chars(original, replaceprob, /list/replacementchars, replace_letters_only, replace_whitespace)
+
+
+
+
+
+ Slightly expensive proc to scramble a message using equal probabilities of character replacement from a list. DOES NOT SUPPORT HTML!
screen_loc_to_offset(screen_loc, view)
+
+
+
+
+
+ Takes a screen loc string in the format
+"+-left-offset:+-pixel,+-bottom-offset:+-pixel"
+Where the :pixel is optional, and returns
+A list in the format (x_offset, y_offset)
+We require context to get info out of screen locs that contain relative info, so NORTH, SOUTH, etc
+ Finds and extracts seeds from an object
+Checks if the object is such that creates a seed when extracted. Used by seed
+extractors or posably anything that would create seeds in some way. The seeds
+are dropped either at the extractor, if it exists, or where the original object
+was and it qdel's the object
+Arguments:
+
+O - Object containing the seed, can be the loc of the dumping of seeds
+t_max - Amount of seed copies to dump, -1 is ranomized
+extractor - Seed Extractor, used as the dumping loc for the seeds and seed multiplier
+user - checks if we can remove the object from the inventory
+ send2adminchat(category, message, embed_links)
+
+
+
+
+
+ Sends a message to TGS admin chat channels.
+category - The category of the mssage.
+message - The message to send.
send2chat(message, channel_tag, admin_only)
+
+
+
+
+
+ Sends a message to TGS chat channels.
+message - The message to send.
+channel_tag - Required. If "", the message with be sent to all connected (Game-type for TGS3) channels. Otherwise, it will be sent to TGS4 channels with that tag (Delimited by ','s).
+admin_only - Determines if this communication can only be sent to admin only channels.
send2otherserver(source, msg, type, target_servers, /list/additional_data)
+
+
+
+
+
+ Sends a message to a set of cross-communications-enabled servers using world topic calls
+Arguments:
+
+source - Who sent this message
+msg - The message body
+type - The type of message, becomes the topic command under the hood
+target_servers - A collection of servers to send the message to, defined in config
+additional_data - An (optional) associated list of extra parameters and data to send with this world topic call
+ setup_mod_themes()
+
+
+
+
+
+ Global proc that sets up all MOD themes as singletons in a list and returns it.
single_path_typecache_immutable(path)
+
+
+
+
+
+ Makes a typecache of a single typecache
+Obviously in BYOND we don't have the efficiency around here to have proper enforcement so
+If you use this you better know what you're doing. The list you get back is globally cached and if it's modified, you might break multiple things.
slur(phrase, strength)
+
+
+
+
+
+ Makes you speak like you're drunk
sound_to_playing_players(soundin, volume, vary, frequency, channel, pressure_affected, /sound/S)
+
+
+
+
+
+ Citadel edit - Citadel reverb
+End
stars(phrase, probability)
+
+
+
+
+
+ Convert random parts of a passed in message to stars
+
+phrase - the string to convert
+probability - probability any character gets changed
+
+This proc is dangerously laggy, avoid it or die
start_unequip_mob
+
+ A utility function for /datum/strippable_item
s to start unequipping an item from a mob.
+ stripped_multiline_input but reflects to the user instead if it's too big and returns null.
stutter(phrase)
+
+
+
+
+
+ Adds stuttering to the message passed in
tgalert(/mob /User, Message, Title, Button1, Button2, Button3, StealFocus, Timeout)
+
+
+
+
+
+ DEPRECATED: USE tgui_alert(...) INSTEAD
+Designed as a drop in replacement for alert(); functions the same. (outside of needing User specified)
+Arguments:
+
+User - The user to show the alert to.
+Message - The textual body of the alert.
+Title - The title of the alert's window.
+Button1 - The first button option.
+Button2 - The second button option.
+Button3 - The third button option.
+StealFocus - Boolean operator controlling if the alert will steal the user's window focus.
+Timeout - The timeout of the window, after which no responses will be valid.
+ tgui_Topic(href_list)
+
+
+
+
+
+ Middleware for /client/Topic.
+return bool If TRUE, prevents propagation of the topic call.
tgui_alert(/mob /user, message, title, /list/buttons, timeout, autofocus, strict_byond)
+
+
+
+
+
+ Creates a TGUI alert window and returns the user's response.
+This proc should be used to create alerts that the caller will wait for a response from.
+Arguments:
+
+user - The user to show the alert to.
+message - The content of the alert, shown in the body of the TGUI window.
+title - The of the alert modal, shown on the top of the TGUI window.
+buttons - The options that can be chosen by the user, each string is assigned a button on the UI.
+timeout - The timeout of the alert, after which the modal will close and qdel itself. Set to zero for no timeout.
+autofocus - The bool that controls if this alert should grab window focus.
+ tgui_alert_async(/mob /user, message, title, /list/buttons, /datum /callback /callback, timeout, autofocus)
+
+
+
+
+
+ Creates an asynchronous TGUI alert window with an associated callback.
+This proc should be used to create alerts that invoke a callback with the user's chosen option.
+Arguments:
+
+user - The user to show the alert to.
+message - The content of the alert, shown in the body of the TGUI window.
+title - The of the alert modal, shown on the top of the TGUI window.
+buttons - The options that can be chosen by the user, each string is assigned a button on the UI.
+callback - The callback to be invoked when a choice is made.
+timeout - The timeout of the alert, after which the modal will close and qdel itself. Disabled by default, can be set to seconds otherwise.
+
+ Creates a TGUI input list window and returns the user's response.
+This proc should be used to create alerts that the caller will wait for a response from.
+Arguments:
+
+user - The user to show the input box to.
+message - The content of the input box, shown in the body of the TGUI window.
+title - The title of the input box, shown on the top of the TGUI window.
+items - The options that can be chosen by the user, each string is assigned a button on the UI.
+default - The option with this value will be selected on first paint of the TGUI window.
+timeout - The timeout of the input box, after which the input box will close and qdel itself. Set to zero for no timeout.
+strict_modern - Disabled the preference check of the input box, only allowing the TGUI window to show.
+
+ Creates an asynchronous TGUI input list window with an associated callback.
+This proc should be used to create inputs that invoke a callback with the user's chosen option.
+Arguments:
+
+user - The user to show the input box to.
+message - The content of the input box, shown in the body of the TGUI window.
+title - The title of the input box, shown on the top of the TGUI window.
+items - The options that can be chosen by the user, each string is assigned a button on the UI.
+default - The option with this value will be selected on first paint of the TGUI window.
+callback - The callback to be invoked when a choice is made.
+timeout - The timeout of the input box, after which the menu will close and qdel itself. Set to zero for no timeout.
+
+ Creates a TGUI window with a number input. Returns the user's response as num | null.
+This proc should be used to create windows for number entry that the caller will wait for a response from.
+If tgui fancy chat is turned off: Will return a normal input. If a max or min value is specified, will
+validate the input inside the UI and ui_act.
+Arguments:
+
+user - The user to show the number input to.
+message - The content of the number input, shown in the body of the TGUI window.
+title - The title of the number input modal, shown on the top of the TGUI window.
+default - The default (or current) value, shown as a placeholder. Users can press refresh with this.
+max_value - Specifies a maximum value. If none is set, any number can be entered. Pressing "max" defaults to 1000.
+min_value - Specifies a minimum value. Often 0.
+timeout - The timeout of the number input, after which the modal will close and qdel itself. Set to zero for no timeout.
+round_value - whether the inputted number is rounded down into an integer.
+
+ Creates an asynchronous TGUI input num window with an associated callback.
+This proc should be used to create inputs that invoke a callback with the user's chosen option.
+Arguments:
+
+user - The user to show the input box to.
+message - The content of the input box, shown in the body of the TGUI window.
+title - The title of the input box, shown on the top of the TGUI window.
+default - The default value pre-populated in the input box.
+callback - The callback to be invoked when a choice is made.
+timeout - The timeout of the input box, after which the menu will close and qdel itself. Set to zero for no timeout.
+round_value - whether the inputted number is rounded down into an integer.
+ tgui_input_text(/mob /user, message, title, default, max_length, multiline, encode, timeout, prevent_enter)
+
+
+
+
+
+ Creates a TGUI window with a text input. Returns the user's response.
+This proc should be used to create windows for text entry that the caller will wait for a response from.
+If tgui fancy chat is turned off: Will return a normal input. If max_length is specified, will return
+stripped_multiline_input.
+Arguments:
+
+user - The user to show the text input to.
+message - The content of the text input, shown in the body of the TGUI window.
+title - The title of the text input modal, shown on the top of the TGUI window.
+default - The default (or current) value, shown as a placeholder.
+max_length - Specifies a max length for input. MAX_MESSAGE_LEN is default (4096)
+multiline - Bool that determines if the input box is much larger. Good for large messages, laws, etc.
+encode - Toggling this determines if input is filtered via html_encode. Setting this to FALSE gives raw input.
+timeout - The timeout of the textbox, after which the modal will close and qdel itself. Set to zero for no timeout.
+ tgui_input_text_async(/mob /user, message, title, default, /datum /callback /callback, max_length, multiline, encode, timeout)
+
+
+
+
+
+ Creates an asynchronous TGUI input text window with an associated callback.
+This proc should be used to create inputs that invoke a callback with the user's chosen option.
+Arguments:
+
+user - The user to show the input box to.
+message - The content of the input box, shown in the body of the TGUI window.
+title - The title of the input box, shown on the top of the TGUI window.
+default - The default value pre-populated in the input box.
+callback - The callback to be invoked when a choice is made.
+timeout - The timeout of the input box, after which the menu will close and qdel itself. Set to zero for no timeout.
+ timeleft(id)
+
+
+
+
+
+ Get the remaining deciseconds on a timer
+Arguments:
+
+id a timerid or a /datum/timedevent
+ to_chat(target, html, type, text, avoid_highlighting, handle_whitespace, trailing_newline, confidential)
+
+
+
+
+
+ Sends the message to the recipient (target).
+Recommended way to write to_chat calls:
+to_chat(client,
+ type = MESSAGE_TYPE_INFO,
+ html = "You have found <strong>[object]</strong>")
+
+ Circumvents the message queue and sends the message
+to the recipient (target) as soon as possible.
transfer_randomized_list(/list/destination, /list/list1, /list/list2)
+
+
+
+
+
+ Penalties start
+ constructs a transform matrix, defaulting to identity
typecacheof(path, ignore_root_path, only_root_path)
+
+
+
+
+
+ Like typesof() or subtypesof(), but returns a typecache instead of a list
ui_status_only_living(/mob /user, source)
+
+
+
+
+
+ Returns a UI status such that the dead will be able to watch, but not interact.
ui_status_silicon_has_access
+
+ Returns a UI status such that silicons will be able to interact with whatever
+they would have access to if this was a machine. For example, AIs can
+interact if there's cameras with wireless control is enabled.
ui_status_user_has_free_hands
+
+ Returns a UI status such that those without blocked hands will be able to interact,
+but everyone else can only watch.
ui_status_user_is_abled
+
+ Returns a UI status such that users with debilitating conditions, such as
+being dead or not having power for silicons, will not be able to interact.
+Being dead will disable UI, being incapacitated will continue updating it,
+and anything else will make it interactive.
ui_status_user_is_adjacent
+
+ Returns a UI status such that users adjacent to source will be able to interact,
+far away users will be able to see, and anyone farther won't see anything.
+Dead users will receive updates no matter what, though you likely want to add
+a [ui_status_only_living
] check for finer observer interactions.
+ Returns a UI status such that advanced tool users will be able to interact,
+but everyone else can only watch.
ui_status_user_is_conscious_and_lying_down
+
+ Returns UI_INTERACTIVE if the user is conscious and lying down.
+Returns UI_UPDATE otherwise.
ui_status_user_strictly_adjacent
+
+ Return UI_INTERACTIVE if the user is strictly adjacent to the target atom, whether they can see it or not.
+Return UI_CLOSE otherwise.
+ Opposite of format, returns as a number
url2htmlloader(url)
+
+
+
+
+
+ Return html to load a url.
+for use inside of browse() calls to html assets that might be loaded on a cdn.
valid_window_location(/turf /dest_turf, test_dir, is_fulltile)
+
+
+
+
+
+ Checks whether the target turf is in a valid state to accept a directional window
+or other directional pseudo-dense object such as railings.
+Returns FALSE if the target turf cannot accept a directional window or railing.
+Returns TRUE otherwise.
+Arguments:
+
+dest_turf - The destination turf to check for existing windows and railings
+test_dir - The prospective dir of some atom you'd like to put on this turf.
+is_fulltile - Whether the thing you're attempting to move to this turf takes up the entire tile or whether it supports multiple movable atoms on its tile.
+ velvetspeech(message, /mob /living /user, base_multiplier, message_admins, debug)
+
+
+
+
+
+ FermiChem
view_to_pixels(view)
+
+
+
+
+
+ Takes a string or num view, and converts it to pixel width/height in a list(pixel_width, pixel_height)
voice_of_god(message, /mob /living /user, /list/span_list, base_multiplier, include_speaker, message_admins)
+
+
+
+
+
+ VOICE OF GOD
wave_explosion(/turf /target, power, factor, constant, flash, fire, /atom /source, speed, silent, bypass_logging, block_resistance, start_immediately)
+
+
+
+
+
+ Creates a wave explosion at a certain place
woundscan
+
+ Displays wounds with extended information on their status vs medscanners
zone2body_parts_covered(def_zone)
+
+
+
+
+
+ For finding out what body parts a body zone covers, the inverse of the below basically
+
+
+
diff --git a/image.html b/image.html
new file mode 100644
index 0000000000000..c776ebaee9535
--- /dev/null
+++ b/image.html
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+ /image - SPLURT Station 13
+
+
+
+
+image
+
+
+
+
+
+Vars
+ realized_overlays List of overlay "keys" (info about the appearance) -> mutable versions of static appearances
+Drawn from the overlays list
+ realized_underlays List of underlay "keys" (info about the appearance) -> mutable versions of static appearances
+Drawn from the underlays list Procs
+ realize_overlays Takes the image's existing overlays, and makes them mutable so they can be properly vv'd in the realized_overlays list
+ Var Details realized_overlays
+
+
+
+
+
+ List of overlay "keys" (info about the appearance) -> mutable versions of static appearances
+Drawn from the overlays list
realized_underlays
+
+
+
+
+
+ List of underlay "keys" (info about the appearance) -> mutable versions of static appearances
+Drawn from the underlays list
Proc Details realize_overlays()
+
+
+
+
+
+ Takes the image's existing overlays, and makes them mutable so they can be properly vv'd in the realized_overlays list
+
+
+
diff --git a/index.html b/index.html
new file mode 100644
index 0000000000000..4970752514093
--- /dev/null
+++ b/index.html
@@ -0,0 +1,3455 @@
+
+
+
+
+
+
+ Index - SPLURT Station 13
+
+
+
+
+
+
+
+SPLURT Station 13
+
+
+
+Modules
+(799 modules,
+ 1155/9497 macros, 12.2%)
+
+ code
+ __DEFINES
+ __HELPERS
+ __SANDCODE/ DEFINES
+ __SPLURTCODE/ DEFINES
+ __byond_version_compat
+ _globalvars
+ _onclick/ hud
+ _rendering
+ controllers
+ configuration
+ failsafe
+ hooks
+ master
+ subsystem
+ chat - Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+ garbage
+ materials - How material datums work
+Materials are now instanced datums, with an associative list of them being kept in SSmaterials. We only instance the materials once and then re-use these instances for everything.
+ overlays
+ persistence/ _persistence
+ processing/ fastprocess
+ runechat
+ tgui - Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+ timer
+
+
+ datums
+ game
+ modules
+ actionspeed/ _actionspeed_modifier - Actionspeed modification datums.
+ admin
+ antagonists
+ assembly
+ Asset cache system
+ atmospherics
+ awaymissions
+ balloon_alert/ balloon_alert
+ Buildmode
+ cargo
+ clothing
+ events
+ food_and_drinks
+ games/ unum
+ holiday/halloween/ jacqueen
+ hydroponics
+ instruments
+ jobs/ access
+ In-code keypress handling system - This whole system is heavily based off of forum_account's keyboard library.
+Thanks to forum_account for saving the day, the library can be found
+here !
+ language/ language_holder - Language holders will either exist in an atom/movable or a mind. Creation of language holders happens
+automatically when they are needed, for example when something tries to speak.
+Where a mind is available, the mind language holder will be the one "in charge". The mind holder
+will update its languages based on the atom holder, and will get updated as part of
+transformations and other events that cause new languages to become available.
+Every language holder has three lists of languages (and sources for each of them):
+ lighting/ emissive_blocker
+ mafia
+ mapping
+ mining
+ mob
+ clickdelay
+ dead/ new_player
+ living
+ blood
+ carbon
+ living - Proc that actually does the grab resisting. Return TRUE if successful. Does not check that a grab exists! Use attempt_resist_grab() instead of this in general!
+Forced is if something other than the user mashing movement keys/pressing resist button did it, silent is if it makes messages (like "attempted to resist" and "broken free").
+Forced does NOT force success!
+ living_active_parry
+ living_block
+ living_blocking_parrying
+ silicon/robot/ robot
+ simple_animal
+
+ mob_helpers
+ say_vr
+ typing_indicator
+
+ mod
+ modular_computers
+ movespeed/ _movespeed_modifier - Movespeed modification datums.
+ newscaster/ news_network
+ ninja
+ paperwork
+ plumbing
+ power
+ projectiles
+ reagents
+ chem_wiki_render
+ chemistry - NOTE: IF YOU UPDATE THE REAGENT-SYSTEM, ALSO UPDATE THIS README.
+ fermi - How to code fermichem reactions:
+First off, probably read though the readme for standard reagent mechanisms, this builds on top of that.
+ machinery/ chem_dispenser
+ reagents
+ recipes/ others
+
+ reagent_containers
+
+ recycling/disposal/ multiz
+ research
+ ruins
+ shielding/ helpers
+ shuttle/ supply
+ spells/ spell_types
+ surgery
+ tgchat
+ message
+ to_chat - Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+
+ DMAPI Internals - This folder should be placed on it's own inside a codebase that wishes to use the TGS DMAPI. Warranty void if modified.
+ Core DMAPI functions - This folder contains all DMAPI code not directly involved in an API.
+ DMAPI V3 - This DMAPI implements bridge using file output which TGS monitors for.
+ DMAPI V4 - This DMAPI implements bridge requests using file output which TGS monitors for. It has a safe mode restriction.
+ DMAPI V5 - This DMAPI implements bridge requests using HTTP GET requests to TGS. It has no security restrictions.
+
+ tgui
+ external - External tgui definitions, such as src_object APIs.
+ states - Base state and helpers for states. Just does some sanity checks,
+implement a proper state for in-depth checks.
+ admin - Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+ always - Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+ conscious - Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+ contained - Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+ deep_inventory - Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+ default - Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+ fun - Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+ hands - Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+ human_adjacent - Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+ inventory - Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+ language_menu - Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+ never - Copyright (c) 2021 Arm A. Hammer
+SPDX-License-Identifier: MIT
+ not_incapacitated - Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+ notcontained - Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+ observer - Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+ physical - Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+ self - Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+ zlevel - Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+
+ status_composers
+ tgui - Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+ tgui_window - Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+
+ tgui_input
+ tgui_panel
+ audio - Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+ external - Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+ telemetry - Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+ tgui_panel - Copyright (c) 2020 Aleksej Komarov
+SPDX-License-Identifier: MIT
+
+ Unit Tests
+ uplink/ uplink_items
+ vehicles/ mecha
+ vending/ _vending
+ vore/eating/ belly_obj
+
+ world
+
+ interface/ fonts
+ modular_citadel - Hooray modularity!
+ modular_sand
+ code
+ controllers/configuration/entries/ sandstorm_balance
+ datums
+ game
+ modules
+ mob/living/simple_animal/hostile/mining_mobs/ elites
+ reagents/chemistry/ reagents
+ research/ designs
+ telescience/ telepad
+
+
+ icons
+
+ About modularizing defines - Since #define clauses can't be properly modularized and need to be loaded first than the rest of the code for it to catch them, the modular_splurt/code/_DEFINES/ folder has been deleted and all of its contents have been moved to code\__SPLURTCODE\DEFINES
+ code
+ __HELPERS/ spawns
+ controllers/subsystem/ discord
+ datums
+ game
+ modules
+
+ sound/voice/catpeople/ credits
+
+ tools
+
+
+
+
+Types
+(801 detailed/1581 documented/32558 total, 4.9%)
+
+ (global)
+ area - A grouping of tiles into a logical space, mostly used by map editors
+ edina
+ crew_quarters - Edina specific derivitives
+ street - Nova Edina Streets
+
+ icemoon - Ice Moon Areas
+ lavaland - Lavaland Areas
+ mine - Mine areas
+ shuttle
+ abandoned - White Ship
+ hunter - Bounty Hunter Shuttles
+ pirate - Pirate Shuttle
+ slaveship - Slave Trader Shuttle
+ syndicate - Multi-area shuttles
+Syndicate infiltrator
+ transit - Single-area shuttles
+
+ space
+ survivalpod - Survival Pod
+
+ atom - The base type for nearly all physical objects in SS13
+ movable
+ emissive_blocker - Internal atom that copies an appearance on to the blocker plane
+ fov_holder - The shadow cone's mask and visual images holder which can't locate inside the mob,
+lest they inherit the mob opacity and cause a lot of hindrance
+ screen
+ action_landing - Exists so you have a place to put your buttons when you move them around
+ alert
+ give
+ highfive
+ secret_handshake - Families handshakes
+
+ status_effect
+ pregnancy - Who is the liar but he who denies that Jesus is the Christ? This is the antichrist, he who denies the Father and the Son.
+ wound - WOUNDS
+
+
+ background - A generic background object.
+It is also implicitly used to allocate a rectangle on the map, which will
+be used for auto-scaling the map.
+ button_palette
+ combattoggle - The screen button.
+ fullscreen
+ inventory
+ lobby
+ button
+ bottom/ poll
+ character_setup - Prefs menu
+ collapse
+ join - Shown when the game has started
+ ready - Button that appears before the game has started
+
+ shutter
+
+ map_view - A screen object, which acts as a container for turfs and other things
+you want to show on the map, which you usually attach to "vis_contents".
+ movable
+ palette_scroll
+ parallax_layer
+ plane_master
+ emissive - Handles emissive overlays and emissive blockers.
+ field_of_vision - Contains all shadow cone masks, whose image overrides are displayed only to their respective owners.
+ field_of_vision_blocker - Used to display the owner and its adjacent surroundings through the FoV plane mask.
+ field_of_vision_visual - Stores the visible portion of the FoV shadow cone.
+ floor - Contains just the floor
+ game_world - Contains most things in the game world
+ lighting - Contains all lighting objects
+ openspace - Things rendered on "openspace"; holes in multi-z
+ parallax - Contains space parallax
+
+ storage/volumetric_box/ center
+ wanted
+
+ summon_weapon_effect
+
+
+ client
+ datum - The absolute base class for everything
+ SDQL2_query
+ abductor_gear
+ achievement_data - Datum that handles
+ action
+ changeling
+ gloves - *
+|CLAWS |
+*
+ suit
+ armor - *
+|ARMOR |
+*
+ organic_space_suit -
+|SPACE SUIT + HELMET |
+* *
+
+ weapon
+ arm_blade - *
+|ARM BLADE |
+*
+ shield -
+|SHIELD |
+*
+ tentacle -
+|COMBAT TENTACLES |
+* *
+
+
+ cooldown
+ bloodsucker
+ targeted - TARGETTED POWERS
+
+ coffer - This action creates trash, money, dirt, and cheese.
+ riot - This action checks all nearby mice, and converts them into hostile rats. If no mice are nearby, creates a new one.
+ scavenge - Creates a chance to spawn more trash or gibs to repopulate. Otherwise, spawns a corpse or dirt.
+ spawn_induction_package
+
+ innate
+ ability
+ cult
+ rune_shatter
+ seek_master - Master-Tracker
+
+ item_action
+ vehicle
+ ridden/scooter/skateboard/ ollie
+ sealed/ mecha
+ ivanov_strike
+ mech_defense_mode - Specific Ability Actions
+ skyfall - Savannah Skyfall
+ swap_seat - swap seats, for two person mecha
+
+
+
+ action_group
+ actionspeed_modifier
+ admin_help
+ admins
+ ai_laws
+ antagonist
+ changeling
+ gang
+ heretic
+ heretic_monster - Tracking reasons
+ ninja
+ rev
+ revolution_enemy - "Enemy of the Revolutionary", given to heads and security when the revolution wins
+ traitor
+ contractor_support - Support unit gets it's own very basic antag datum for admin logging.
+
+
+ asset
+ simple - If you don't need anything complicated.
+ irv - Sandstorm content
+ namespaced - Namespace'ed assets (for static css and html files)
+When sent over a cdn transport, all assets in the same asset datum will exist in the same folder, as their plain names.
+Used to ensure css files can reference files by url() without having to generate the css at runtime, both the css file and the files it depends on must exist in the same namespace asset datum. (Also works for html)
+For example blah.css
with asset blah.png
will get loaded as namespaces/a3d..14f/f12..d3c.css
and namespaces/a3d..14f/blah.png
. allowing the css file to load blah.png
by a relative url rather then compute the generated url with get_url_mappings().
+The namespace folder's name will change if any of the assets change. (excluding parent assets)
+
+ spritesheet
+
+ asset_cache_item - An internal datum containing info on items in the asset cache. Mainly used to cache md5 info for speed.
+ asset_transport - Base browse_rsc asset transport
+ webroot - CDN Webroot asset transport.
+
+ award
+ achievement - Achievements are one-off awards for usually doing cool things.
+ mafia
+ assistant - ALL THE ACHIEVEMENTS FOR WINNING A ROUND AS A ROLE
+ universally_hated - ALL THE ACHIEVEMENTS FOR MISC MAFIA ODDITIES
+
+
+ score - Scores are for leaderboarded things, such as killcount of a specific boss
+ hardcore_random - How many times did we survive being a cripple?
+ intento_score - How high of a score on the Intento did we get?
+ maintenance_pill - How many maintenance pills did you eat?
+
+
+ bank_account
+ biome - This datum handles the transitioning from a turf to a specific biome, and handles spawning decorative structures and mobs.
+ bitfield - Specifies a bitfield for smarter debugging
+ block_parry_data - Carries data like list data that would be a waste of memory if we initialized the list on every /item as we can cache datums easier.
+ unarmed
+ human - Unarmed parry data for human
+ pugilist - Unarmed parry data for pugilists
+
+
+ brain_trauma/severe/split_personality/ brainwashing - BRAINWASHING
+ Callback Datums - A datum that holds a proc to be called on another object, used to track proccalls to other objects
+ callback_select - Helper datum for the select callbacks proc
+ centcom_announcer - Data holder for the announcers that can be used in a game, this can be used to have alternative announcements outside of the default e.g.the intern
+ centcom_podlauncher
+ changelingprofile
+ Chat Message Overlay - Datum for generating a message overlay on the map
+ chemical_reaction
+ acetone - Other goon stuff
+ ammonia - Cleaning and hydroponics
+ coldscales - Race Base Drinks
+ goldschlager - COCKTAILS
+ mush - Tea Base Drinks
+ sbiten - DRINKS THAT REQUIRED IMPROVED SPRITES BELOW:: -Agouri
+ surfactant - foam and foam precursor
+ synth_blood - Synthblood
+ tofu - FOOD MIXTURES
+ virus_food - VIROLOGY
+ white_glitter/ blue - Glitter
+
+ client_interface - This should match the interface of /client wherever necessary.
+ Component - The component datum
+ area_sound_manager - Allows you to set a theme for a set of areas without tying them to looping sounds explicitly
+ bodycamera_holder - Bodycamera component
+ butchering/ recycler - Special snowflake component only used for the recycler.
+ combat_mode - Combat mode component. It makes the user face whichever atom the mouse pointer is hovering,
+amongst other things designed outside of this file, namely PvP and PvE stuff, hence the name.
+Can be toggled on and off by clicking the screen hud object or by pressing the assigned hotkey (default 'C')
+ construction/ mecha - Construction datums
+ container_item - Container item, an item which can be stored by specialized containers.
+ tank_holder - Tank holder item - Added to an object which can be added to a tank holder.
+
+ dejavu - A component to reset the parent to its previous state after some time passes
+ edible
+ embedded
+ explodable - Component specifically for explosion sensetive things, currently only applies to heat based explosions but can later perhaps be used for things that are dangerous to handle carelessly like nitroglycerin.
+ field_of_vision - Field of Vision component. Does totally what you probably think it does,
+ergo preventing players from seeing what's behind them.
+ footstep - Footstep component. Plays footsteps at parents location when it is appropriate.
+ glory_kill
+ gps - GPS component. Atoms that have this show up on gps. Pretty simple stuff.
+ item - GPS component subtype. Only gps/item's can be used to open the UI.
+
+ identification - Identification components
+ syndicate - Identification component subtype - Syndicate
+
+ interaction_menu_granter - The menu itself, only var is target which is the mob you are interacting with
+ killerqueen - KILLER QUEEN
+ knockback
+ label - The label component.
+ material_container
+ mood
+ multiple_lives - A simple component that spawns a mob of the same type and transfers itself to it when parent dies.
+For more complex behaviors, use the COMSIG_ON_MULTIPLE_LIVES_RESPAWN comsig.
+ nanites
+ permanent - Subtype that doesn't erase itself from running out
+
+ omen - omen.dm: For when you want someone to have a really bad day
+ pellet_cloud
+ personal_crafting
+ plumbing
+ acclimator
+ filter - The magical plumbing component used by the chemical filters. The different supply connects behave differently depending on the filters set on the chemical filter
+ simple_demand - has one pipe input that only takes, example is manual output pipe
+ simple_supply - has one pipe output that only supplies. example is liquid pump and manual input pipe
+ tank - input and output, like a holding tank
+
+ pregnancy
+ pricetag
+ riding/ human - Yes, I said humans. No, this won't end well...
+ squeak
+ storage
+ concrete/ tcg - A storage component to be used on card piles, for use as hands/decks/discard piles. Don't use on something that's not a card pile!
+
+ tackler - #tackle.dm
+ thermite - for telling HOW big of a mess we just made
+ twitch_plays - Observers voting on things through orbiting
+ two_handed - Two Handed Component
+ uplink - Uplinks
+ virtual_reality - The virtual reality turned component.
+Originally created to overcome issues of mob polymorphing locking the player inside virtual reality
+and allow for a more "immersive" virtual reality in a virtual reality experience.
+It relies on comically complex order of logic, expect things to break if procs such as mind/transfer_to() are revamped.
+In short, a barebone not so hardcoded VR framework.
+If you plan to add more devices that make use of this component, remember to isolate their code outta here where possible.
+
+ computer_file/ program
+ aidiag
+ arcade
+ borg_monitor
+ budgetorders
+ card_mod
+ job_management - The time since the last job opening was created
+ ntnetdownload/ syndicate - This app only lists programs normally found in the emagged section of the normal downloader app
+ portrait_printer
+ power_monitor - this is a copy of something that is already in the database- it should not be able to be saved.
+ radar
+ fission360 - A program that tracks nukes and nuclear accessories
+ lifeline - A program that tracks crew members via suit sensors
+
+ robocontrol
+ robotact
+ secureye
+ signaler
+ supermatter_monitor
+
+ config_entry
+ flag
+ allow_combat_role_respawn - Allows respawning as a combat role, defined as security/head.
+ allow_non_assistant_respawn - Allows respawning as non-assistant. Overrides all others of this type.
+ allow_same_character_respawn - Allows respawning as the same character as a previous life
+ crypto_ignore_atmos - CRYPTOMINERS
+ emergency_tgui_logging - forces log_href for tgui
+ log_access - log login/logout
+ log_admin - log admin actions
+ log_adminchat - log admin chat messages
+ log_attack - log attack messages
+ log_craft - log crafting
+ log_econ - log economy
+ log_emote - log emotes
+ log_game - log game events
+ log_job_debug - log roundstart divide occupations debug information to a file
+ log_law - log lawchanges
+ log_manifest - log crew manifest to seperate file
+ log_mecha - log mech data
+ log_ooc - log OOC channel
+ log_pda - log pda messages
+ log_pictures - log photos taken by players with a camera
+ log_prayer - log prayers
+ log_say - log client say
+ log_shuttle - log shuttle related actions, ie shuttle computers, shuttle manipulator, emergency console
+ log_suspicious_login - Config entry which special logging of failed logins under suspicious circumstances.
+ log_telecomms - log telecomms messages
+ log_twitter - log certain expliotable parrots and other such fun things in a JSON file of twitter valid phrases.
+ log_victim - log attack messages
+ log_virus - log virology data
+ log_vote - log voting
+ log_whisper - log client whisper
+ log_world_topic - log all world.Topic() calls
+ persistent_debris - Whether or not to use the persistence system for cleanable objects
+ persistent_debris_only - Whether or not to nuke all roundstart debris that isn't due to persistence if the above is true
+ persistent_debris_wipe_on_nuke - Wipe dirty stuff on nuke
+ picture_logging_camera - This is... shitcode, literally same as above, if one of them is inactive, won't log at all, PLEASE FUCKING REMOVE THIS.
+ protolock_during_lowpop - R&D Machinery
+ respawn_penalty_includes_observe - Observing penalizes for respawns, not just joining.
+ respawns_enabled - Allows usage of respawn system
+ tetris_no_science - TETRIS ARCADE MACHINE
+ use_field_of_vision - Enables the FoV component, which hides objects and mobs behind the parent from their sight, unless they turn around, duh.
+Camera mobs, AIs, ghosts and some other are of course exempt from this. This also doesn't influence simplemob AI, for the best.
+
+ keyed_list
+ cross_server_bunker_override - cit config
+ respawn_chaos_gamemodes - Gamemode config tags that are banned from respawning
+
+ number
+ autodoc_time_surgery_base - AUTODOC
+ bluespaceminer_mult_output - BLUESPACE MINER
+ defib_cmd_time_limit - Seconds for CMD on defib-with-memory-loss policy config to display instead of defib-intact config
+ dirt_alpha_starting - Alpha dirt starts at
+ error_cooldown - The "cooldown" time for each occurrence of a unique error
+ error_limit - How many occurrences before the next will silence them
+ error_msg_delay - How long to wait between messaging admins about occurrences of a unique error
+ error_silence_time - How long a unique error will be silenced for
+ initial_gear_points - Initial loadout points
+ outdated_movedelay - Outdated move delay
+ persistent_debris_global_max - Max amount of objects to store, total
+ persistent_debris_type_max - Max amount of objects to store per type
+ respawn_delay - Minutes before allowing respawns.
+ respawn_delay_cryo - Minutes before allowing respawn, if user cryo'd.
+ respawn_minimum_delay_roundstart - Minutes from roundstart before someone can respawn
+ stamina_combat
+ base_regeneration - Base regeneration per second
+ buffer_max - Maximum stamina buffer
+ out_of_combat_timer - Seconds until percent_regeneration_out_of_combat kicks in
+ overdraw_penalty_factor - Factor to multiply by for stamina usage past buffer into health
+ percent_regeneration_out_of_combat - After out_of_combat_timer elapses, additionally regenerate this percent of total stamina per second. Unaffected by combat mode.
+ post_action_penalty_delay - Seconds after an action for which your regeneration is penalized
+ post_action_penalty_factor - Factor to multiply by for penalizing post-action-stamina-regen
+
+ turf_dirt_threshold - Amount of dirtyness tiles need to spawn dirt.
+ turf_dirty_multiplier - Dirtyness multiplier for making turfs dirty
+ vote_autotransfer_initial - Length of time before the first autotransfer vote is called (deciseconds, default 2 hours)
+Set to 0 to disable the subsystem altogether.
+ vote_autotransfer_interval - length of time to wait before subsequent autotransfer votes (deciseconds, default 30 minutes)
+ vote_autotransfer_maximum - maximum extensions until the round autoends.
+Set to 0 to force automatic crew transfer after the 'vote_autotransfer_initial' elapsed.
+Set to -1 to disable the maximum extensions cap.
+
+ str_list - List config entry, used for configuring a list of strings
+ string
+
+ contractor_item
+ blackout - We give a reference to the mind that'll be the support unit
+ contractor_pinpointer - We're not regenerating already completed/aborted/extracting contracts, but we don't want to repeat their targets.
+Reroll contracts without duplicates
+Set our target list with the new set we've generated.
+
+ controller
+ crafting_recipe
+ arrow - AMMO CRAFTING
+ bloodsucker/ blackcoffin
+ chemical_payload - BOMB CRAFTING
+ food
+ aesirsalad - SALADS
+ amanitajelly - SOUP
+ amanitapie - OTHER PIES
+ appendixburger - EXOTIC
+ apple_sc - SNOW CONES
+ applecake - FRUIT CAKE
+ applepie - FRUITS
+ baguette - MISC
+ beefnoodle - NOODLES
+ birthdaycake - FANCY
+ bread - BREAD
+ burger - STANDARD BURGS
+ burrito - "MEXICAN"
+ butteredtoast - TOAST
+ candiedapple - SWEETS
+ chawanmushi - Eastern Foods
+ cherrycupcake - CUPCAKES
+ clownburger - MYSTICAL
+ copypasta - SPAGHETTI
+ dankpizza - PIZZA!!!
+ donkpocket - DONKPOCCKETS
+ donut - DONUTS
+ jelly/ apple - JELLY DONUTS
+ slimejelly/ apple - SLIME DONUTS
+
+ dough - MISC
+ friedegg - EGG RECIPE's
+ goldenappletart - TARTS
+ holycake - SPECIAL
+ humankebab - KEBABS
+ meatslab - MISC RECIPE's
+ mime_sc - I don't like seperating the clown and mime.
+ muffin - MUFFINS
+ piedough - OTHER
+ pineapplepizza/ anomaly - Special Pizzas
+ raisincookie - COOKIES
+ redburger - COLORED BURGERS
+ sandwich - SANDWICHES
+ sashimi - Sushi
+ spidereggsham - MR SPIDER
+ sushi_rice - Sushi Components
+ tuna_can - FISH
+ waffles - WAFFLES AND PANCAKES
+
+ pipebow - GUNS CRAFTING
+ silver_stake
+
+ data/ vending record datum - A datum that represents a product that is vendable
+ datacore
+ design
+ RPED - Stock Parts
+ acclimator - Plumbing
+ alienscalpel - Alien Surgical Tools
+ alienwrench - Alien Tools
+ apc_board - ///////Autolathe Designs /////
+ basic_cell - Power
+ basic_l_arm - Medical Prosthetics
+ beacon - Blue Space
+ beanbag_slug - //////Autolathe Designs /////
+ board - Computer Boards
+ aicore - AI Module Disks
+ autobottler - AutoBottler Designs
+ cargo - CARGO Boards
+ comm_monitor - ENGINE Boards
+ gibber - CIV Boards
+ limbgrower - MEDICAL Boards
+ message_server - Telecomm Server
+ ore_silo - CARGO Boards
+ pandemic - MEDICAL Boards
+ rdcamera - SCI Boards
+ recycler - MISC Boards
+ ripley_main - Mecha Module Disks
+ seccamera - SECURITY Boards
+ smes - ENGINE Boards
+ subspace_receiver - Subspace Telecomms
+ teleport_station - SCI Boards
+
+ bodybag - Body Bags
+ borg_upgrade_rename - Borg Upgrades
+ broom - Janitor Designs
+ bucket - //////Autolathe Designs//////
+ c38/ sec - Weapons & Ammo
+ camera - MISC
+ cargo_express - Mining
+ chestmob - Limb Grower Designs
+ cyberimp_welding - Cybernetic Implants
+ defibrillator - Defibrillator Tech
+ design_disk - Disk Construction Disks
+ disk/ normal - Computer Parts
+ encryption - Headset Encryption
+ health_hud - HUDs
+ holosign - Holosign Designs
+ implanter - Regular Implants
+ intellicard - Non-Board Computer Stuff
+ ipc_heart - Synth Organs
+ ipc_stomach - Synth Organs
+ kitchen_knife - //////Autolathe Designs /////
+ large_welding_tool - Hacked Gear
+ mech_scattershot - Mecha Equpment
+ meteor_defence - Meteors
+ milk - Biogenerator Designs
+ mmi - Medical Tools
+ nanite_remote - Nanite Devices
+ nanites
+ flesh_eating - WEAPONIZED NANITES
+ glitch - DEFECTIVE NANITES
+ kickstart - NANITE PROTOCOLS
+ metabolic_synthesis - UTILITY NANITES
+ nervous - AUGMENTATION NANITES
+ regenerative - MEDICAL NANITES
+ sensor_health - SENSOR NANITES
+ shock - SUPPRESSION NANITES
+
+ oxygen_tank - Internal Tanks
+ plasteel_alloy - SMELTABLE ALLOYS
+ powerarmor_skeleton - Power Armor
+ quantum_keycard - Tools
+ rcd_upgrade/ frames - Tools
+ reactive_armour - Armour
+ rods - ///////Autolathe Designs/////
+ scalpel - Medical
+ seclite - Security
+ shuttle_speed_upgrade - Shuttle Upgrades
+ signaler - //////Autolathe Designs /////
+ sticky_tape - Tape
+ surgery - Surgery Designs
+ tackle_dolphin - Tackle Gloves
+ ultimatebeaker - End of Power Armor
+ welding_mask - Misc
+
+ discord_link_record - Represents a record from the discord link table in a nicer format
+ disease_ability/ symptom
+ medium/ shedding - MEDIUM
+ mild - BASE SYMPTOM TYPES
+ powerful
+ fire - POWERFUL
+ heal/ starlight - HEALING SUBTYPE
+
+
+ dna - DNA DATUM
+ ductnet - We handle the unity part of plumbing. We track who is connected to who.
+ dynamic_ruleset
+ latejoin/ provocateur
+ midround
+ autotraitor
+ blob_infection - Infects a random player, making them explode into a blob.
+ families
+ from_ghosts
+ revenant - Revenant ruleset
+ sentient_disease - Sentient Disease ruleset
+
+ pirates - Space Pirates ruleset
+
+ roundstart
+ families
+ revs
+ traitor - Probability the AI going malf will be accompanied by an ion storm announcement and some ion laws.
+The probability to replace an existing law with an ion law instead of adding a new ion law.
+
+
+ dynamic_snapshot - A "snapshot" of dynamic at an important point in time.
+Exported to JSON in the dynamic.json log file.
+ dynamic_snapshot_ruleset - A ruleset chosen during a snapshot
+ effect_system/ trail_follow - ///// Attach a trail to any object, that spawns when it moves (like for the jetpack)
+just pass in the object to attach it to in set_up
+Then do start() to start it and stop() to stop it, obviously
+and don't call start() in a loop that will be repeated otherwise it'll get spammed!
+ eldritch_knowledge - #Eldritch Knowledge
+ element - A holder for simple behaviour that can be attached to many different types
+ bed_tuckable - Tucking element, for things that can be tucked into bed.
+ connect_loc - This element hooks a signal onto the loc the current object is on.
+When the object moves, it will unhook the signal and rehook it to the new object.
+ contextual_screentip_bare_hands - Apply basic contextual screentips when the user hovers over this item with an empty hand.
+A "Type B" interaction.
+This stacks with other contextual screentip elements, though you may want to register the signal/flag manually at that point for performance.
+ contextual_screentip_item_typechecks - Apply basic contextual screentips when the user hovers over this item with a provided item.
+A "Type B" interaction.
+This stacks with other contextual screentip elements, though you may want to register the signal/flag manually at that point for performance.
+ contextual_screentip_sharpness - Apply basic contextual screentips when the user hovers over this item with an item of the given tool behavior.
+A "Type B" interaction.
+This stacks with other contextual screentip elements, though you may want to register the signal/flag manually at that point for performance.
+ contextual_screentip_tools - Apply basic contextual screentips when the user hovers over this item with an item of the given tool behavior.
+A "Type B" interaction.
+This stacks with other contextual screentip elements, though you may want to register the signal/flag manually at that point for performance.
+ dwarfism - Very similar to squish, but for dwarves and shorties
+ embed
+ firestacker - Can be applied to /atom/movable subtypes to make them apply fire stacks to things they hit
+ flavor_text
+ item_scaling - Element for scaling item appearances in the overworld or in inventory/storage.
+ mob_holder/ micro
+ object_reskinning
+ photosynthesis
+ scavenging
+ skirt_peeking
+ strippable - An element for atoms that, when dragged and dropped onto a mob, opens a strip panel.
+ swimming - Just for marking when someone's swimming.
+ turf_z_transparency
+ weather_listener - This element just handles creating and destroying an area sound manager that's hooked into weather stuff
+
+ emote/ living
+ subtle - EMOTE CODE
+ subtler - SUBTLE 2: NO GHOST BOOGALOO
+ subtler_table - SUBTLE 3: DARE DICE
+
+ fantasy_affix
+ bane - Good suffixes
+ fool - Bad suffixes
+
+ font - A font datum, it exists to define a custom font to use in a span style later.
+ grand9k - For clean results on map, use only sizing pt, multiples of 6: 6pt 12pt 18pt 24pt etc. - Not for use with px sizing
+Can be used in TGUI etc, px sizing is pt / 0.75. 6pt = 8px, 12pt = 16px etc.
+Base font
+ size_6pt - For icon overlays
+Grand9K 6pt metrics generated using Lummox's dmifontsplus (https://www.byond.com/developer/LummoxJR/DmiFontsPlus)
+Note: these variable names have been changed, so you can't straight copy/paste from dmifontsplus.exe
+
+ pixellari - For clean results on map, use only sizing pt, multiples of 12: 12pt 24pt 48pt etc. - Not for use with px sizing
+Can be used in TGUI etc, px sizing is pt / 0.75. 12pt = 16px, 24pt = 32px etc.
+Base font
+ size_12pt - For icon overlays
+Pixellari 12pt metrics generated using Lummox's dmifontsplus (https://www.byond.com/developer/LummoxJR/DmiFontsPlus)
+Note: these variable names have been changed, so you can't straight copy/paste from dmifontsplus.exe
+
+ spessfont - For clean results on map, use only sizing pt, multiples of 6: 6t 12pt 18pt etc. - Not for use with px sizing
+Can be used in TGUI etc, px sizing is pt / 0.75. 12pt = 16px, 24pt = 32px etc.
+Base font
+ size_6pt - For icon overlays
+Spess Font 6pt metrics generated using Lummox's dmifontsplus (https://www.byond.com/developer/LummoxJR/DmiFontsPlus)
+Note: these variable names have been changed, so you can't straight copy/paste from dmifontsplus.exe
+
+ tiny_unicode - For clean results on map, use only sizing pt, multiples of 12: 12pt 24pt 48pt etc. - Not for use with px sizing
+Can be used in TGUI etc, px sizing is pt / 0.75. 12pt = 16px, 24pt = 32px etc.
+Base font
+ size_12pt - For icon overlays
+TinyUnicode 12pt metrics generated using Lummox's dmifontsplus (https://www.byond.com/developer/LummoxJR/DmiFontsPlus)
+Note: these variable names have been changed, so you can't straight copy/paste from dmifontsplus.exe
+
+
+ force_event - Force Event Panel
+ forced_movement - Each tick goes through one full cycle.
+ game_mode
+ Families gamemode / dynamic ruleset handler - A special datum used by the families gamemode and dynamic rulesets to centralize code. "Family" and "gang" used interchangeably in code.
+ gang_theme - Gang themes for the Families gamemode. Used to determine the RP theme of the round, what gangs are present, and what their objectives are.
+ gas_mixture
+ gateway_destination - Corresponds to single entry in gateway control.
+ http_request
+ hud
+ instrument
+ interaction - The base of all interactions
+ job
+ jps_node - The JPS Node datum represents a turf that we find interesting enough to add to the open list and possibly search for new tiles from
+ keybinding
+ language_holder
+ lift_master - Collect and command
+ lighting_object
+ looping_sound
+ mafia_controller - The mafia controller handles the mafia minigame in progress.
+It is first created when the first ghost signs up to play.
+ mafia_role
+ mafia - MAFIA ROLES/// they're the "anti-town" working to kill off townies to win
+ traitor - SOLO ROLES/// they range from anomalous factors to deranged killers that try to win alone.
+
+ map_config
+ map_generator - This type is responsible for any map generation behavior that is done in areas, override this to allow for area-specific map generation. This generation is ran by areas in initialize.
+ map_preloader - Preloader datum
+ map_report - An error report generated by /datum/parsed_map/proc/check_for_errors .
+ map_template
+ martial_art
+ material
+ adamantine - Stronk force increase
+ bananium - Honks and slips
+ biomass - Force decrease and mushy sound effect. (Not yet implemented)
+ bluespace - Can cause bluespace effects on use. (Teleportation) (Not yet implemented)
+ diamond - Small force increase, for diamond swords
+ glass - Breaks extremely easily but is transparent.
+ gold - Slight force decrease. It's gold, it's soft as fuck.
+ iron - Has no special properties.
+ meat - It's gross, gets the name of it's owner, and is all kinds of fucked up
+ mythril - RPG Magic. (Admin only)
+ plasma - Adds firestacks on hit (Still needs support to turn into gas on destruction)
+ plastic - Force decrease
+ silver - Has no special properties. Could be good against vampires in the future perhaps.
+ titanium - Mediocre force increase
+ uranium - Is slightly radioactive
+
+ mind
+ mod_theme - MODsuit theme, instanced once and then used by MODsuits to grab various statistics.
+ mood_event
+ movespeed_modifier
+ mutation/ human
+ hulk
+ thermal - Thermal Vision lets you see mobs through walls
+ x_ray - X-ray Vision lets you see through walls.
+
+
+ nanite_program
+ protocol - A nanite program containing a behaviour protocol. Only one protocol of each class can be active at once.
+
+ news_network - Contains all the news datum of a newscaster system.
+ ntnet_conversation
+ objective
+ Outfit datums - This is a clean system of applying outfits to mobs, if you need to equip someone in a uniform
+this is the way to do it cleanly and properly.
+ parallax - Holds parallax information.
+ Parallax holders - Holds all the information about a client's parallax
+ parsed_map
+ pathfind - The datum used to handle the JPS pathfinding, completely self-contained
+ physiology
+ plant_gene
+ powernet
+ preferences
+ progressbar
+ qdel_item - Qdel Item: Holds statistics on each type that passes thru qdel
+Holds the type as a string for this type
+Total number of times it's passed thru qdel.
+Total amount of milliseconds spent processing this type's Destroy()
+Times it was queued for soft deletion but failed to soft delete.
+Different from failures because it also includes QDEL_HINT_HARDDEL deletions
+Total amount of milliseconds spent hard deleting this type.
+Highest time spent hard_deleting this in ms.
+Number of times hard deletes took longer than the configured threshold
+Number of times it's not respected force=TRUE
+Number of times it's not even bother to give a qdel hint
+Number of times it's slept in its destroy
+ quirk
+ reagent
+ colorful_reagent/ crayonpowder - Coloured Crayon Powder
+ consumable
+ entpoly - Lavaland Flora Reagents
+ ethanol - I don't know who made this header before I refactored alcohols but I'm going to fucking strangle them because it was so ugly, holy Christ
+ orangejuice - DRINKS BELOW, Beer is up there though, along with cola. Cap'n Pete's Cuban Spiced Rum
+
+ determination
+ fermi/ butt_enlarger - Ass enhancer
+ lube
+ superlube - Stronger kind of lube. Applies TURF_WET_SUPERLUBE.
+
+ medicine/ coagulant
+ metalgen
+ plantnutriment - Hydroponics stuff
+ toxin - Poison stuff (Toxins & Acids)
+ water
+
+ reagents
+ reality_smash_tracker - #Reality smash tracker
+ round_event
+ ghost_role/ sentience
+ stray_cargo - Spawns a cargo pod containing a random cargo supply pack on a random area of the station
+
+ round_event_control
+ jacqueen - EVENT
+ spooky - You will appear adjacent to the beacon
+ stray_cargo - Spawns a cargo pod containing a random cargo supply pack on a random area of the station
+ syndicate - Places that shouldn't explode
+Subtypes from the above that actually should explode.
+A rare variant that drops a crate containing syndicate uplink items
+
+
+ rust_spread - #Rust spread datum
+ scar - scars are cosmetic datums that are assigned to bodyparts once they recover from wounds. Each wound type and severity have their own descriptions for what the scars
+look like, and then each body part has a list of "specific locations" like your elbow or wrist or wherever the scar can appear, to make it more interesting than "right arm"
+ secrets_menu
+ select_equipment
+ signal/ subspace - Here is the big, bad function that broadcasts a message given the appropriate
+parameters.
+ skill - Skill datums
+ enum
+ level - Classing r p g styled skills, tiered by lvl, and current/nextlvl experience.
+ numerical
+
+ skill_holder - Skill holder datums
+All procs are tied to the mind, since they are always expected to have a skill holder anyway.
+ skill_modifier - Base skill modifier datum, used to modify a player skills without directly touching their values, levels and affinity
+and cause lots of edge cases. These are fairly simple overall... make a subtype though, don't use this one.
+ job - Jobbie skill modifiers.
+ level - Level skill modifiers below.
+
+
+ slaver_gear
+ Song datum - These are the actual backend behind instruments.
+They attach to an atom and provide the editor + playback functionality.
+ sortInstance
+ species datum - Datum that handles different species in the game.
+ jelly
+ luminescent - LUMINESCENTS
+ roundstartslime - Round Start Slimes
+ slime - SLIMEPEOPLE
+ stargazer - STARGAZERS
+
+
+ sprite_accessory
+ antenna - IPC Antennas
+ ears
+ human
+ axolotl - Human Ears
+ bnnuy - Tall Ears
+
+ mam_ears - Furry Ears
+
+ insect_fluff - Insect Markings
+ hyena - Insect Markings
+
+ legs/ none - Leggy
+ mam_body_markings - Furry Markings
+ pigeon - Furry Markings
+
+ screen - IPC SCREENS
+ snouts/ mam_snouts - ************ Lizard compatable snoots ***********
+/datum/sprite_accessory/snouts/bird
+name = "Beak"
+icon_state = "bird"
+icon = 'modular_citadel/icons/mob/mam_snouts.dmi'
+color_src = MATRIXED
+ fbird - *** Snouts ***
+but higher up
+
+ tails
+ human/ none - Human Tails
+ mam_tails - Furry Tails
+
+ tails_animated/ lizard
+ taur - Taur Bodies
+ xeno_dorsal - Xeno Dorsal Tubes
+ xeno_head - Xeno Heads
+ xeno_tail - Xeno Tails
+
+ stack_canary - Stack canary. Will go away if the stack it was primed by is ended by byond for return or stack overflow reasons.
+ stack_end_detector - Stack End Detector.
+Can detect if a given code stack has exited, used by the mc for stack overflow detection.
+ stack_recipe
+ station_trait - Base class of station traits. These are used to influence rounds in one way or the other by influencing the levers of the station.
+ status_effect
+ cloudstruck
+ eldritch
+ firecookie - CONSUMING EXTRACTS
+ grouped - Status effect from multiple sources, when all sources are removed, so is the effect
+Adds itself to sources and destroys itself if one exists already, there are never multiple
+ ice_block_talisman
+ leash_dom - STATUS EFFECTS
+ limp
+ offering
+ stabilized - STABILIZED EXTRACTS
+ wound
+
+ strip_menu - A representation of the stripping UI
+ strippable_item - A representation of an item that can be stripped down
+ hand - A strippable item for a hand
+ mob_item_slot - A preset for equipping items onto mob slots
+
+ summon_weapon - A singular summoned object
+ summon_weapon_host - Serves as the master datum for summon weapons
+ supply_pack
+ costumes_toys - Toys
+ formalwear - Costumes
+
+ critter - Livestock
+ emergency - Emergency
+ engine - Engine Construction
+ engineering - Engineering
+ materials - Canisters & Materials
+ bz - Canisters
+ cardboard50 - Materials
+ fueltank - Tanks
+
+ medical - Medical
+ bodybags - Equipment
+ sprays - Medical Kits
+ virus - Virology
+
+ misc - Miscellaneous
+ anvil - Paperwork and Writing Supplies
+ candles - Misc Supplies
+ carpet - Misc + Decor
+ coloredsheets - Entertainment
+ lewd - Lewd Supplies
+ syndicate - Special supply crate that generates random syndicate gear up to a determined TC value
+
+ organic - Organic
+ combomeal2 - Meals
+ food - Raw Ingredients
+ hydroponics/ beekeeping_suits - Hydroponics
+ party - Misc
+
+ science - Science
+ raw_flux_anomaly - RAW ANOMALY CORES
+
+ security - Security
+ service - Service
+ advlighting - Janitor
+ buildabar - Chef, Botanist, Bartender
+ wrapping_paper - Cargo
+
+ vending - Vending
+ bartending - Service, Medical, Sec
+ wardrobes/ autodrobe - Wardrobe Vendors
+
+
+ surgery
+ debride - BURN FIXING SURGERIES//////
+Debride burnt flesh
+ healing
+ brute - BRUTE
+ burn - BURN
+ combo - COMBO
+
+ repair_bone_compound - Repair Compound Fracture (Critical)
+ repair_bone_hairline - BONE FIXING SURGERIES//////
+Repair Hairline Fracture (Severe)
+ repair_puncture - Repair puncture wounds
+
+ surgery_step
+ debride - Debride
+ dress - Dressing burns
+ heal
+ brute/ basic - BRUTE STEPS
+ burn/ basic - BURN STEPS
+ combo - COMBO STEPS
+
+ repair_bone_compound - Repair Compound Fracture (Crticial)
+ repair_bone_hairline - Repair Hairline Fracture (Severe)
+ repair_innards - realign the blood vessels so we can reweld them
+ replace_limb - AUGMENTATION SURGERIES
+ reset_compound_fracture - Reset Compound Fracture (Crticial)
+ robot_heal/ basic - STEPS
+ seal_veins - Sealing the vessels back together
+
+ team
+ contractor_team - Team for storing both the contractor and their support unit - only really for the HUD and admin logging.
+ gang
+ revolution
+
+ techweb_node
+ alientech - Alien technology
+ basic_plasma - plasma tech
+ basic_shuttle_tech - shuttle tech
+ basic_tools - Tools
+ biotech - Biotech
+ bluespace_basic - Bluespace tech
+ cloning - Medical
+ clown - Clown tech
+ comptech - Computer tech
+ datatheory - data theory tech
+ emp_basic - EMP tech
+ engineering - engineering tech
+ imp_wt_surgery - Advanced Surgery
+ light_apps - B.E.P.I.S. Locked Techs
+ mech - mech technology
+ nanite_base - Nanites
+ robotics - robotics tech
+ sticky_basic - Tape tech
+ surplus_limbs - Cybernetics
+ weaponry - weaponry tech
+
+ tgs_api/ v5
+ tgs_chat_channel - Represents a connected chat channel.
+ tgs_chat_command - User definable chat command.
+ tgs_chat_embed
+ field - See https://discord.com/developers/docs/resources/channel#embed-object-embed-field-structure for details. Must have name and value set in New().
+ footer - See https://discord.com/developers/docs/resources/channel#embed-object-embed-footer-structure for details.
+ media - Common datum for similar discord embed medias.
+ provider - See https://discord.com/developers/docs/resources/channel#embed-object-embed-provider-structure for details.
+ author - See https://discord.com/developers/docs/resources/channel#embed-object-embed-author-structure for details. Must have name set in New().
+
+ structure - User definable chat embed. Currently mirrors Discord chat embeds. See https://discord.com/developers/docs/resources/channel#embed-object-embed-structure for details.
+
+ tgs_chat_user
+ tgs_event_handler - User definable handler for TGS events.
+ tgs_message_content - User definable chat message.
+ tgs_revision_information - Represents git revision information.
+ test_merge - Represents a merge of a GitHub pull request.
+
+ tgs_version - Represents a version.
+ tgui - tgui datum (represents a UI).
+ tgui_alert - Datum used for instantiating and using a TGUI-controlled modal that prompts the user with
+a message and has buttons for responses.
+ async tgui_modal - An asynchronous version of tgui_modal to be used with callbacks instead of waiting on user responses.
+
+ tgui_input_number - Datum used for instantiating and using a TGUI-controlled number input that prompts the user with
+a message and has an input for number entry.
+ async tgui_text_input - An asynchronous version of tgui_text_input to be used with callbacks instead of waiting on user responses.
+
+ tgui_input_text - tgui_input_text
+ async tgui_text_input - An asynchronous version of tgui_text_input to be used with callbacks instead of waiting on user responses.
+
+ tgui_list_input - Client does NOT have tgui_input on: Returns regular input
+ async tgui_list_input - An asynchronous version of tgui_list_input to be used with callbacks instead of waiting on user responses.
+
+ tgui_panel - tgui_panel datum
+Hosts tgchat and other nice features.
+ tgui_window
+ thrownthing
+ Timed Event - This is the actual timer, it contains the callback and necessary data to maintain
+the timer.
+ traitor_class
+ ui_state
+ unit_test
+ binary_insert
+ container_resist
+ create_and_destroy - Delete one of every type, sleep a while, then check to see if anything has gone fucky
+ dynamic_roundstart_ruleset_sanity - Verifies that roundstart dynamic rulesets are setup properly without external configuration.
+ dynamic_unique_antag_flags - Verifies that dynamic rulesets have unique antag_flag.
+ interactions
+ machine_disassembly
+ merge_type
+ spawn_mobs - Unit test that spawns all mobs that can be spawned by golden slimes
+ stop_drop_and_roll
+ test_human_base
+ test_human_bone
+ tgui_create_message - Test that TGUI_CREATE_MESSAGE
is correctly implemented
+
+ uplink_item - Uplink Items
+ view_data - Container for client viewsize
+ wave_explosion - New force-blastwave explosion system
+ weather - Causes weather to occur on a z level in certain area types
+ wires
+ wound
+
+ image
+ mob - CLICKDELAY HANDLING SYSTEM
+How this works is mobs can never do actions until their next_action is at or below world.time, but things can specify extra cooldown
+to check for either from the time of last_action or from the end of next_action.
+ dead
+ living - Mob Living
+ brain
+ carbon
+ alien
+ human
+ dummy/ consistent - Provides a dummy that is consistently bald, white, naked, etc.
+
+
+ silicon
+ ai
+ robot
+ nocell - This is the subtype that gets created by robot suits. It's needed so that those kind of borgs don't have a useless cell in them
+
+
+ simple_animal
+ bot
+ drone
+ hostile
+ asteroid
+ elite
+ Goliath Broodmother - A stronger, faster variation of the goliath. Has the ability to spawn baby goliaths, which it can later detonate at will.
+When it's health is below half, tendrils will spawn randomly around it. When it is below a quarter of health, this effect is doubled.
+It's attacks are as follows:
+ Candy - Kind of like bubblegum's rebellious teenage son/daughter.
+Has 4 attacks.
+Charge - Charges at it's target.
+Bloody Trap - Traps it's target between some walls, and then charges at them.
+Meat Shield - Knockbacks all targets in the 3 tiles he faces, and then creates a wall.
+Knockdown - Deals damage and knockbacks all targets in a 2 tile radius.
+ Drakeling - A small drake/dragon.
+Has four attacks.
+ Herald - A slow-moving projectile user with a few tricks up it's sleeve. Less unga-bunga than Colossus, with more cleverness in it's fighting style.
+As it's health gets lower, the amount of projectiles fired per-attack increases.
+It's attacks are as follows:
+ Legionnaire - A towering skeleton, embodying the power of Legion.
+As it's health gets lower, the head does more damage.
+It's attacks are as follows:
+ Necropolis priest - Kind of like BD miner's son trying to impress their dad.
+Has four attacks.
+ Pandora - A box with a similar design to the Hierophant which trades large, single attacks for more frequent smaller ones.
+As it's health gets lower, the time between it's attacks decrease.
+It's attacks are as follows:
+
+ ice_demon
+ ice_whelp
+ lobstrosity
+ polarbear
+ wolf
+
+ carp/ cayenne
+ construct
+ armored - Juggernaut
+ builder - Artificer
+ noncult - Non-cult Artificer
+
+ harvester - Harvester
+ wraith - Wraith
+
+ eldritch
+ guardian
+ illusion/ escape - Actual Types
+ megafauna
+ plaguerat
+ regalrat
+ Space Dragon - A space-faring leviathan-esque monster which breathes fire and summons carp. Spawned during its respective midround antagonist event.
+ swarmer - The Mob itself
+ syndicate
+ civilian - Misc
+ ranged - Guns
+ space - Melee
+
+ venus_human_trap - Venus Human Trap
+
+ imp - The Monster
+ jacq - MOBS
+ mouse
+ parrot
+ slaughter - The Monster
+ slime
+
+
+
+ obj
+ belly - Non-object variables
+Object-holding variables
+ docking_port
+ durand_shield - Shield processing
+*An object to take the hit for us when using the Durand's defense mode.
+It is spawned in during the durand's initilization, and always stays on the same tile.
+Normally invisible, until defense mode is actvated. When the durand detects an attack that should be blocked, the
+attack is passed to the shield. The shield takes the damage, uses it to calculate charge cost, and then sets its
+own integrity back to max. Shield is automatically dropped if we run out of power or the user gets out.
+ effect
+ abstract/ parry - Effects
+ anomaly
+ beam/ i_beam - IBeam
+ broken_illusion
+ decal
+ eldritch
+ forcefield/ mime - Mimewalls
+ landmark/start/ hangover
+ light_emitter - Light
+ red_energy_sword - Base mob
+
+ mapping_helpers
+ meatgrinder - Meatgrinder
+ mine
+ mob_spawn
+ human
+ bridgeofficer - Officers+Nanotrasen Security
+ corpse/ assistant - Civilians
+ lavaland_syndicate - Syndicate Listening Post
+ skeleton - Spooky Undead
+
+ robot - obj/item/kirbyplants/diamond
+
+ overlay
+ status_display_text - Nice overlay to make text smoothly scroll with no client updates after setup.
+ typing_indicator - Default typing indicator
+ vis
+
+ particle_effect/ smoke - SMOKE SYSTEMS
+ proc_holder
+ alien - STUN
+ spell
+ aoe_turf
+ conjure/construct/ lesser - Construct Spells
+ rust_conversion/ small - What we want is the 3 tiles around the user and the tile under him to be rusted, so min(dist,1)-1 causes us to get 0 for these tiles, rest of the tiles are based on chance
+
+ cone
+ staggered - This type of cone gradually affects each level of the cone instead of affecting the entire area at once.
+
+ pointed
+ targeted/ fire_sworn
+
+
+ projectile/tracer/ legion - Used for the legion turret beam.
+ tracer - Used for the legion turret tracer.
+
+ reality_smash
+ skyfall_landingzone - a simple indicator of where the skyfall is going to land.
+ spawner/lootdrop/space/ fancytool
+ advmedicalonly - Mail loot spawner. Drop pool of advanced medical tools typically from research. Not endgame content.
+ engineonly - Mail loot spawner. Some sort of random and rare building tool. No alien tech here.
+ raremedicalonly - Mail loot spawner. Some sort of random and rare surgical tool. Alien tech found here.
+
+
+ item
+ ai_module
+ core - Full Core Boards
+ freeformcore - Freeform Core
+ full
+ antimov - Antimov
+ asimov - Asimov
+ asimovpp - Asimov++
+ balance - Guardian of Balance
+ corp - Corporate
+ custom - Custom
+ drone - Mother Drone
+ hippocratic - Robodoctor
+ hulkamania - H.O.G.A.N.
+ liveandletlive - Live And Let Live
+ overthrow - Overthrow
+ paladin - P.A.L.A.D.I.N. 3.5e
+ paladin_devotion - P.A.L.A.D.I.N. 5e
+ reporter - Reporter
+ robocop - Robocop
+ thermurderdynamic - Thermodynamic
+ tyrant - T.Y.R.A.N.T.
+
+
+ remove - Law Removal
+ reset - Reset
+ supplied - Modules
+ freeform - New Freeform
+ oxygen - OxygenIsToxicToHumans
+ protectStation - ProtectStation
+ quarantine - Quarantine
+ safeguard - Safeguard
+
+ syndicate - Hacked AI Module
+ toyAI - Ion Module
+ zeroth/ oneHuman - OneCrew
+
+ airlock_painter
+ ammo_box/ magazine
+ flechette - magazine
+ toy/ x9 - toy memes
+toy memes
+
+ ammo_casing
+ c46x30mm/ rubber - security rifles special ammo
+ caseless/ flechetteap - ammo casings (CASELESS AMMO CASINGS WOOOOOOOO)
+
+ antag_spawner
+ contract - WIZARD
+ nuke_ops - BORGS AND OPERATIVES
+ borg_tele - SYNDICATE BORG
+ clown - CLOWN OP
+
+ slaughter_demon - SLAUGHTER DEMON
+ slaver_borg - SLAVER BORG
+
+ assembly
+ control
+ flash - The z level to which the elevator should travel
+The amount of z levels between the our and targetZ
+Direction (up/down) needed to go to reach targetZ
+How long it will/should take us to reach the target Z level
+ signaler
+
+ barcode
+ bodycam_upgrade - The bodycamera
+ bodypart
+ bokken_blade - BOKKEN CRAFTNG PIECES
+ bombcore - Bomb Cores
+ training - Bomb Core Subtypes
+
+ bong - BONGS
+ book
+ granter - books that teach things (intrinsic actions like bar flinging, spells like fireball or smoke, or martial arts)
+ action - ACTION BUTTONS
+ martial - MARTIAL ARTS
+ spell - SPELLS
+ trait - TRAITS
+
+ manual - MANUALS (BOOKS)
+ random
+
+ borg - Cyborg Spec Items
+ sight - HUD/SIGHT things
+ upgrade
+
+ borg_shapeshifter
+ bounty_cube - Upon completion of a civilian bounty, one of these is created. It is sold to cargo to give the cargo budget bounty money, and the person who completed it cash.
+ broom
+ canvas
+ card
+ mining_access_card - Conscript kit
+ mining_point_card - Mining Point Card
+
+ cardboard_cutout
+ cardpack
+ chainsaw
+ chisel - Elder Atmosian
+ circuitboard
+ computer/white_ship/ ruin - ruined whiteship
+ mecha - Circuitboards
+ savannah_ivanov/ peripherals - Circuitboards
+
+
+ civ_bounty_beacon - Beacon to launch a new bounty setup when activated.
+ clipboard - Clipboard
+ clothing
+ glasses/ hud
+ gloves
+ head
+ mask
+ chameleon
+ facehugger/ toy - Mining Equipment Vendor Items
+ frog - frog mask - reeee!!
+ gas/ Ninja Mask - Space ninja's mask. Makes you sound like a real anime girl. Barely able to be considered a real upside.
+ luchador - This makes it so that your name shows up as unknown when wearing the mask.
+ void_mask
+
+ neck
+ shoes
+ dominaheels - Domina heels
+ latex_socks - Latex socks
+ mod
+ Ninja Shoes - Space ninja's shoes. Gives him armor on his feet.
+
+ suit
+ hooded
+ explorer - Explorer's Suit and Mask
+ exo - Exo-Suit and Mask
+ heva - HEVA Suit and Mask
+
+ teshari/standard/ lightgrey_grey - obj/item/clothing/suit/hooded/teshari/standard/rainbow
+
+ space
+ hardsuit/ shielded - SHIELDED
+ ctf - Capture the Flag
+ swat - SWAT version
+ syndi - Syndicate Version
+
+ Ninja Suit - Space ninja's suit. Provides him with most of his powers.
+
+
+ underwear/briefs/panties/ Hyperstation 13 portal underwear - Wear it, cannot be worn if not pointing to the bits you have.
+
+ coin - Coin
+ computer_hardware
+ ai_slot
+ battery
+ card_slot
+ hard_drive/small/ nukeops - For tablets given to nuke ops
+ recharger/ cyborg - This recharger exists only in borg built-in tablets. I would have tied it to the borg's cell but
+the program that displays laws should always be usable, and the exceptions were starting to pile.
+
+ construction/ plumbing
+ conveyor_sorter
+ coupon
+ cult_spear
+ deactivated_swarmer - Deactivated swarmer shell
+ defibrillator
+ dice - Dice
+ disk
+ design_disk/ adv
+ cleric_mace - cleric's den items.
+ knight_gear - Wizard tower item
+
+ medical - Defibrillator Disks
+
+ dogborg_tongue - Dogborg stuff
+Mere cosmetic dogborg items, remnants of what were once the most annoying cyborg modules.
+ dualsaber
+ dyespray
+ eldritch_potion
+ electronics
+ Energy Katana - The space ninja's katana.
+ extinguisher
+ fireaxe
+ flashlight/pen/ paramedic
+ Hyperstation 13 fleshlight - Humbley request this doesnt get ported to other code bases, we strive to make things unique on our server and we dont have a lot of coders
+but if you absolutely must. please give us some credit~ <3
+made by quotefox and heavily modified by SandPoot
+ forbidden_book
+ gang_induction_package
+ genital_equipment
+ glasswork/ glass_base
+ dish - Chem Disk
+ flask_large - Large Bulb Flask
+ flask_small - Small Bulb Flask
+ glass_lens - Lens
+ spouty - Spouty Flask
+ tea_cup - Tea Cup
+ tea_plate - Tea Plates
+
+ grenade
+ chem_grenade/ metalfoam - PREMADE GRENADES
+ plastic/ c4 - The Explosives
+ Spider Charge - A unique version of c4 possessed only by the space ninja. Has a stronger blast radius.
+Can only be detonated by space ninjas with the bombing objective. Can only be set up where the objective says it can.
+When it primes, the space ninja responsible will have their objective set to complete.
+
+ primer
+
+ gripper - Grippers oh god oh fuck
+ service - End Cargo Borg Items
+
+ guardiancreator - Creation
+ gun
+ ballistic
+ automatic
+ flechette - the gun itself
+ laser/ ctf - hey uhh don't hit anyone behind them
+ magrifle/ pistol - magpistol
+ pistol/ antitank - Anti Tank Pistol
+ toy/pistol/ stealth - foam stealth pistol
+ x9 - XCOM X9 AR
+
+
+ energy
+ beam_rifle
+ laser/ bluetag - Laser Tag
+ lasercannon - Laser Cannon
+
+ medbeam/ mech - Mech Version
+
+ hand_item
+ hardened_spike
+ hivelordstabilizer - Hivelord stabilizer
+ kinetic_crusher - Mining Hammer
+ kitchen/knife/ bloodletter
+ lazarus_injector - Lazarus Injector
+ leash - OBJECT
+ lipstick
+ living_heart
+ mail - Mail is tamper-evident and unresealable, postmarked by CentCom for an individual recepient.
+ malf_upgrade - AI Upgrades
+ mecha_parts - Mecha Parts
+ chassis
+ durand - Durand
+ gygax - Gygax
+ honker - HONK
+ medigax - Medical Gygax
+ odysseus - Odysseus
+ phazon - Phazon
+ powerarmor - Custom Mech Parts //////
+ ripley - Ripley
+ savannah_ivanov - Phazon
+
+ mecha_equipment
+ anticcw_armor_booster - ARMOR BOOSTER MODULES
+ generator - GENERATOR
+ gravcatapult - GRAVITATIONAL CATAPULT
+ medical
+ mechmedbeam - Medical Beam
+ syringe_gun - Syringe Gun
+
+ repair_droid - REPAIR DROID
+ teleporter - TELEPORTER
+ tesla_energy_relay - TESLA ENERGY RELAY
+ thrusters - THRUSTERS
+ weapon/ballistic/launcher/ punching_glove
+ wormhole_generator - WORMHOLE GENERATOR
+
+ mecha_tracking
+
+ melee
+ milking_machine
+ mind_controller - MIND CONTROL COLLAR
+ mine_bot_upgrade - Minebot Upgrades
+ mining_scanner - Mining Scanners
+ mining_voucher - Mining Equipment Vendor Items
+ mjollnir
+ mod - MODsuits, trade-off between armor and utility
+ control
+ module
+ anomaly_locked
+ antigrav - Anti-Gravity - Makes the user weightless.
+ teleporter - Teleporter - Lets the user teleport to a nearby location.
+
+ balloon - Rave Visor - Pointless
+Tanner - Maybe another time
+Balloon Blower - Blows a balloon.
+ bikehorn - Criminal Capture
+Mirage grenade dispenser
+Projectile Dampener
+Active Sonar
+Bike Horn - Plays a bike horn sound.
+ clamp - Hydraulic Clamp - Lets you pick up and drop crates.
+ constructor - Constructor - Lets you build quicker and create RCD holograms.
+ defibrillator - Injector - No piercing syringes, replace another time
+Organ Thrower
+Patrient Transport
+Defibrillator - Gives the suit an extendable pair of shock paddles.
+ dispenser - Dispenser - Dispenses an item after a time passes.
+ dna_lock - Longfall
+Thermal Regulator - Naw.
+DNA Lock - Prevents people without the set DNA from activating the suit.
+ drill - Drill - Lets you dig through rock and basalt.
+ emp_shield - EMP Shield - Protects the suit from EMPs.
+ flashlight - Flashlight - Gives the suit a customizable flashlight.
+ gps - Internal GPS - Extends a GPS you can use.
+ health_analyzer - Health Analyzer - Gives the user a ranged health analyzer and their health status in the panel.
+ holster - Pepper Shoulders
+Holster - Instantly holsters any not huge gun.
+ jetpack - Ion Jetpack - Lets the user fly freely through space using battery charge.
+ magboot - Magnetic Stability - Gives the user a slowdown but makes them negate gravity and be immune to slips.
+ magnetic_harness - Magnetic Harness - Automatically puts guns in your suit storage when you drop them.
+ megaphone - Megaphone - Lets you speak loud.
+ microwave_beam - Microwave Beam - Microwaves items instantly.
+ mister - Mister - Sprays water over an area.
+ atmos - Resin Mister - Sprays resin over an area.
+
+ mouthhole - Eating Apparatus - Lets the user eat/drink with the suit on.
+ orebag
+ paper_dispenser - Paper Dispenser - Dispenses (sometimes burning) paper sheets.
+ quick_carry - Quick Carry - Lets the user carry bodies quicker.
+ rad_protection - Radiation Protection - Protects the user from radiation, gives them a geiger counter and rad info in the panel.
+ reagent_scanner - Reagent Scanner - Lets the user scan reagents.
+ springlock - Sign Language Translator - I want, but no
+Springlock Mechanism - allows your modsuit to activate faster, but reagents are very dangerous.
+ stamp - Stamper - Extends a stamp that can switch between accept/deny modes.
+ stealth - Cloaking - Lowers the user's visibility, can be interrupted by being touched or attacked.
+ storage - Storage - Adds a storage component to the suit.
+ surgical_processor - Thread Ripper
+Surgical Processor - Lets you do advanced surgeries portably.
+ t_ray - T-Ray Scan - Scans the terrain for undertile objects.
+ tether - Emergency Tether - Shoots a grappling hook projectile in 0g that throws the user towards it.
+ visor - Base Visor - Adds a specific HUD and traits to you.
+ welding - Welding Protection - Makes the helmet protect from flashes and welding.
+
+
+ modular_computer
+ tablet
+ integrated - Borg Built-in tablet interface
+ nukeops - Given to Nuke Ops members.
+ syndicate_contract_uplink/preset/ uplink
+
+
+ multitool - Multitool -- A multitool is used for hacking electronic devices.
+ necromantic_stone - Necromantic Stone
+ nullrod
+ offhand - The offhand dummy item for two handed items
+ organ
+ brain
+ eyes
+ genital
+ regenerative_core - Hivelord core
+ vocal_cords/ velvet - ENTHRAL VELVET CHORDS
+
+ paper - Paper is now using markdown (like in github pull notes) for ALL rendering
+so we do loose a bit of functionality but we gain in easy of use of
+paper and getting rid of that crashing bug
+ construction - Construction paper
+ crumpled
+ bloody/ruins/lavaland/clown_planet/ escape - lavaland clown planet papers
+ ruins
+ bigderelict1/ manifest - bigderelict1 items
+ originalcontent - originalcontent items
+ snowdin/ foreshadowing - papers
+
+
+ fluff
+ awaymissions/wildwest/ grinder - wildwest papers
+ ruins
+ asteroid4/ extraction - asteroid4 items
+ crashedclownship/ true_nation - crashedclownship items
+ deepstorage/ water_concern - deepstorage items
+ djstation - djstation items
+ listeningstation/ reports - listening station
+ oldstation - Oldstation items
+ skelter/ cloner - skelter items
+ spacehotel/ notice - spacehotel items
+ thederelict/ equipment - thederelict items
+
+ stations
+ centcom/ disk_memo - CentCom
+ lavaland
+ orm_notice - Lavaland
+ sloth/ note - lavaland slot ruin items
+ surface/ henderson_report - lavaland surface papers
+
+
+
+ guides
+ cogstation/ job_changes - Cogstation.
+ jobs/ hydroponics - Job guides n' fluff
+
+ natural
+
+ pet_carrier/ bluespace
+ pickaxe - Pickaxes & Drills & Shovels
+ pinpointer
+ pitchfork
+ Hyperstation 13 portal fleshlight - kinky!
+ price_tagger
+ projectile
+ beam
+ lasertag/ ray - RAYGUN MEMES
+ legion - Used for the legion turret.
+
+ bullet
+ cflechetteap - ///Flechette Launcher///
+projectiles
+ cflechetteshredder - unique variant
+ spinfusor - spinfusor stuff
+
+ frost_orb
+ kiss
+ magic/ animate - mob/living/simple_animal/hostile/mushroom,
+ tether
+
+ radio/ borg - Borg Radios
+ Raw Anomaly Cores - The current precursor to anomaly cores, these are manufactured into 'finished' anomaly cores for use in research, items, and more.
+ rcl
+ reagent_containers
+ food - Food.
+ condiment - Condiments
+ drinks - Drinks.
+ bottle - Alchohol bottles! -Agouri
+ molotov - MOLOTOV
+ orangejuice - JUICES AND STUFF
+
+ coffee - Drinks
+ shaker - drinkingglass and shaker
+ soda_cans - soda_cans
+ trophy - Drinks. END
+
+ snacks
+ candy - SNACKS FROM VENDING MACHINES
+ chocolateegg - EGGS
+ cookie - OTHER
+ cubancarp - FISH
+ cube - Cubes
+ customizable/ burger - Customizable Food Types
+ donut - DONUTS
+ jelly - JELLY DONUTS
+ slimejelly - SLIME DONUTS
+
+
+ dough - Dough Ingredients
+ meat
+ rawcutlet - MEAT CUTLETS
+ slab
+ human - HUMAN MEATS
+ synthmeat - OTHER MEATS
+
+ steak - MEAT STEAKS
+
+ muffin - MUFFINS
+ pizza - PIZZA
+ salad - SALAD
+ store - All the food items that can store an item inside itself, like bread or cake.
+ sushi_rice - Sushi Components
+ sushie_basic - Sushi
+ tofu - MEATS AND ALIKE
+ waffles - WAFFLES
+
+
+ pill
+ shadowtoxin - this pill is used only in a legion mob drop
+ zoom - drugs
+
+ spray
+ waterflower/ superlube - Subtype used for the lavaland clown ruin.
+
+ syringe
+
+ relic - SPECIAL ITEMS
+ resonator - Resonator
+ restraints
+ resurrection_crystal
+ reverse_bear_trap
+ robot_module
+ robot_suit
+ rtl
+ sales_tagger
+ scrying - Scrying
+ seeds
+ lavaland - LAVALAND FLORA
+
+ shield
+ shockpaddles
+ singularityhammer
+ slime_extract - Slime Extracts
+ slimecross - SLIME CROSSBREEDS
+ slimepotion - Slime-derived potions
+ slime_reviver - Unique things.
+
+ soulstone
+ spear
+ stack
+ staff/ bostaff
+ stock_parts/ cell
+ storage
+ backpack/satchel/flat/secret/ miracle_ruin - miracle ruin
+ bag
+ mail - Mailbag.
+ money - Money bag
+
+ book/ bible
+ box
+ blue/ cryostorage_items - The box
+ clown - clown box & honkbot assembly
+ papersack
+
+ dice - Dice Bags
+ fancy/ rollingpapers
+ pod
+ portable_chem_mixer
+ toolbox/ mechanical
+
+ summon - Simple summon weapon code in this file
+ syndicatedetonator - Syndicate Detonator (aka the big red button)
+ tank
+ throwing_star/stamina/ Ninja Throwing Star - a throwing star which specifically makes sure you know it came from a real ninja.
+ toy
+ cards
+ cardhand
+ deck/ unum - A deck of unum cards. Classic.
+
+ crayon
+ plush
+ carpplushie - If there are no snowflake plushies we'll default to base plush, so we grab from the valid list
+ cube - cube guy thing. beware, very silly
+
+
+ transfer_valve
+ uplink
+ veilrender - Veil Render
+ vibro_weapon
+ wormhole_jaunter - Jaunter
+
+ machinery
+ abductor
+ atmospherics
+ components
+ trinary/ nuclear_reactor - What is this?
+Moderators list (Not gonna keep this accurate forever):
+Fuel Type:
+Oxygen: Power production multiplier. Allows you to run a low plasma, high oxy mix, and still get a lot of power.
+Plasma: Power production gas. More plasma -> more power, but it enriches your fuel and makes the reactor much, much harder to control.
+Tritium: Extremely efficient power production gas. Will cause chernobyl if used improperly.
+Moderation Type:
+N2: Helps you regain control of the reaction by increasing control rod effectiveness, will massively boost the rad production of the reactor.
+CO2: Super effective shutdown gas for runaway reactions. MASSIVE RADIATION PENALTY!
+Pluoxium: Same as N2, but no cancer-rads!
+Permeability Type:
+BZ: Increases your reactor's ability to transfer its heat to the coolant, thus letting you cool it down faster (but your output will get hotter)
+Water Vapour: More efficient permeability modifier
+Hyper Noblium: Extremely efficient permeability increase. (10x as efficient as bz)
+Depletion type:
+Nitryl: When you need weapons grade plutonium yesterday. Causes your fuel to deplete much, much faster. Not a huge amount of use outside of sabotage.
+Sabotage:
+Meltdown:
+Flood reactor moderator with plasma, they won't be able to mitigate the reaction with control rods.
+Shut off coolant entirely. Raise control rods.
+Swap all fuel out with spent fuel, as it's way stronger.
+Blowout:
+Shut off exit valve for quick overpressure.
+Cause a pipefire in the coolant line (LETHAL).
+Tack heater onto coolant line (can also cause straight meltdown)
+Tips:
+Be careful to not exhaust your plasma supply. I recommend you DON'T max out the moderator input when youre running plasma + o2, or you're at a tangible risk of running out of those gasses from atmos.
+The reactor CHEWS through moderator. It does not do this slowly. Be very careful with that!
+ unary
+
+ pipe/simple/ multiz - This is an atmospherics pipe which can relay air up/down a deck.
+
+ autolathe
+ biogenerator
+ chem_dispenser/ apothecary - An unique, less efficient model found in the medbay apothecary room.
+ computer
+ cryopod
+ door
+ doppler_array/research/ science
+ duct
+ multilayered - has a total of 5 layers and doesnt give a shit about color. its also dumb so doesnt autoconnect.
+
+ gateway
+ gear_painter
+ gravity_generator/ part
+ holopad
+ hydroponics
+ hypnochair
+ light_switch - The light switch. Can have multiple per area.
+ limbgrower - The limbgrower. Makes organd and limbs with synthflesh and chems.
+See [limbgrower_designs.dm] for everything we can make.
+ manned_turret - MANNED TURRET
+ mecha_part_fabricator
+ medipen_refiller
+ mineral - Mineral processing unit console
+ equipment_vendor - Mining Equipment Vendor
+ golem - Golem Point Vendor
+
+ labor_claim_console - Prisoners' Console
+ labor_points_checker - Point Lookup Console
+ ore_redemption - Ore Redemption Unit
+ processing_unit - Mineral processing unit
+ stacking_machine - Mineral stacking unit
+ laborstacker - Prisoner Collection Unit
+
+ stacking_unit_console - Mineral stacking unit console
+ unloading_machine - Unloading unit
+
+ modular_computer
+ navbeacon
+ photocopier
+ piratepad/ civilian - Pad for the Civilian Bounty Control.
+ plate_press
+ plumbing - Basic plumbing object.
+It doesn't really hold anything special, YET.
+Objects that are plumbing but not a subtype are as of writing liquid pumps and the reagent_dispenser tank
+Also please note that the plumbing component is toggled on and off by the component using a signal from default_unfasten_wrench, so dont worry about it
+ acclimator - this the plumbing version of a heater/freezer.
+ bottler
+ disposer - see if machine has enough to fill
+pick a reagent_container that could be used
+see if it would overflow else inject
+glass was full so we move it away
+slime extracts need inject
+no need to move slimecross industrial things
+ fermenter
+ filter - chemical plumbing filter. If it's not filtered by left and right, it goes straight.
+ input - We can empty beakers in here and everything
+ liquid_pump - We pump liquids from activated(plungerated) geysers to a plumbing outlet. We don't need to be wired.
+ output - We can fill beakers in here and everything. we dont inheret from input because it has nothing that we need
+ pill_press - We take a constant input of reagents, and produce a pill once a set volume is reached
+ reaction_chamber - a reaction chamber for plumbing. pretty much everything can react, but this one keeps the reagents seperated and only reacts under your given terms
+ splitter - it splits the reagents however you want. So you can "every 60 units, 45 goes left and 15 goes straight". The side direction is EAST, you can change this in the component
+ synthesizer - A single machine that produces a single chem. Can be placed in unison with others through plumbing to create chemical factories
+
+ pool
+ porta_turret
+ porta_turret_cover - PORTABLE TURRET COVER
+ portable_atmospherics/ canister
+ power
+ recharger
+ research/ Explosive compressor machines - The explosive compressor machine used in anomaly core production.
+ seed_extractor
+ shieldwall - Containment Field START
+ smartfridge
+ status_display - Status display which can show images and scrolling text.
+ ai - Pictograph display which the AI can use to emote.
+ evac - Evac display which shows shuttle timer or message set by Command.
+ shuttle - General-purpose shuttle status display.
+ supply - Supply display which shows the status of the supply shuttle.
+
+ suit_storage_unit
+ syndicatebomb/ training - Bomb Subtypes
+ telepad - SCI TELEPAD
+ the_singularitygen - SINGULARITY SPAWNER
+ turretid
+ vending machines - Captalism in the year 2525, everything in a vending machine, even love
+
+ modular_map_root
+ singularity/ wizard - TEAR IN REALITY
+ structure
+ alien/resin/ flower_bud_enemy - Kudzu Flower Bud
+ barricade/ wooden - BARRICADE TYPES
+ bed/ double
+ bloodsucker/ candelabrum
+ bonfire - BONFIRES
+ bookcase
+ cable
+ cannon
+ Carp Rift - The portals Space Dragon summons to bring carp onto the station.
+ carving_block
+ chair/ greyscale - Material chair
+ closet
+ crate
+ mail - Crate for mail from CentCom.
+ economy
+ full - Crate for mail that automatically generates a lot of mail. Usually only normal mail, but on lowpop it may end up just being junk.
+ preopen - Used in the mail strike shuttle loan event
+Opened mail crate
+
+ miningcar - Mining car (Crate like thing, not the rail car)
+ secure/ owned
+
+ secure_closet/cargo/ owned
+ supplypod
+ wardrobe/ miner - Miner Lockers
+
+ constructshell - Transferring to constructs
+ displaycase/ forsale
+ disposalpipe/trunk/multiz/ down - Set the multiz direction of your trunk. 1 = up, 2 = down
+ eldritch_crucible
+ Energy Net - Energy net which ensnares prey until it is destroyed. Used by space ninjas.
+ filingcabinet
+ flora/ rock
+ fluff/ iced_abductor
+ girder/ cult - cult girder
+ glowshroom
+ grille
+ janitorialcart
+ legionturret - A basic turret that shoots at nearby mobs. Intended to be used for the legion megafauna.
+ loom - This is a loom. It's usually made out of wood and used to weave fabric like durathread or cotton into their respective cloth types.
+ mecha_wreckage - Mecha wreckage
+ noticeboard
+ ore_box - Ore box
+ railing
+ safe
+ sign/ painting
+ spawner/ ice_moon
+ statue
+ bananium - bananium
+ bronze - bronze
+ custom
+ diamond - diamond
+ gold - gold
+ plasma - plasma
+ sandstone - sandstone
+ silver - silver
+ snow - snow
+ uranium - //////////////STATUES//////////////////////////
+uranium
+
+ table
+ rolling - Table on wheels
+
+ tank_holder - ?
+ trap/ eldritch
+ window
+
+ vehicle
+
+ procpath - Represents a proc or verb path.
+ turf - Any floor or wall. What makes up the station and the rest of the map.
+ closed
+ indestructible/ splashscreen
+ mineral - Mineral deposits
+ wall
+ mineral
+ plastitanium - Plastitanium walls
+ titanium - Titanium walls
+
+ r_wall/syndicate/ pirate - Pirate Ship walls
+
+
+ open
+ floor
+ catwalk_floor
+ glass
+ plating/ asteroid - Asteroid
+ basalt/ lava_land_surface - Surface. The surface is warm, but survivable without a suit. Internals are required. The floors break to chasms, which drop you into the underground.
+
+
+ lava - LAVA
+ openspace/ icemoon
+ space
+ water/ cursed_spring - Turns whoever enters into a mob
+
+
+ World - Two possibilities exist: either we are alone in the Universe or we are not. Both are equally terrifying. ~ Arthur C. Clarke
+
+
+
+
+
+
+
diff --git a/interface/fonts/fonts_datum.html b/interface/fonts/fonts_datum.html
new file mode 100644
index 0000000000000..6b9e2cf956fea
--- /dev/null
+++ b/interface/fonts/fonts_datum.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ interface/fonts/fonts_datum.dm - SPLURT Station 13
+
+
+
+
+interface/fonts/fonts_datum.dm
+
+
+
+
+ /datum/font A font datum, it exists to define a custom font to use in a span style later.
+
+
+
diff --git a/interface/fonts/grand_9k.html b/interface/fonts/grand_9k.html
new file mode 100644
index 0000000000000..75c47449dae66
--- /dev/null
+++ b/interface/fonts/grand_9k.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ interface/fonts/grand_9k.dm - SPLURT Station 13
+
+
+
+
+interface/fonts/grand_9k.dm
+
+
+
+
+ /datum /font /grand9k For clean results on map, use only sizing pt, multiples of 6: 6pt 12pt 18pt 24pt etc. - Not for use with px sizing
+Can be used in TGUI etc, px sizing is pt / 0.75. 6pt = 8px, 12pt = 16px etc.
+Base font
+ /datum /font /grand9k/size_6pt For icon overlays
+Grand9K 6pt metrics generated using Lummox's dmifontsplus (https://www.byond.com/developer/LummoxJR/DmiFontsPlus)
+Note: these variable names have been changed, so you can't straight copy/paste from dmifontsplus.exe
+
+
+
diff --git a/interface/fonts/license.html b/interface/fonts/license.html
new file mode 100644
index 0000000000000..e572b475b3d8b
--- /dev/null
+++ b/interface/fonts/license.html
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+ interface/fonts/license.txt - SPLURT Station 13
+
+
+
+
+interface/fonts/license.txt
+
+
+
+
+ Grand9K Pixel created by Jayvee Enaguas. Licensed under Creative Commons Attribution 4.0 International (CC BY 4.0)
+(https://creativecommons.org/licenses/by/4.0/) (https://www.dafont.com/grand9k-pixel.font)
+
+Pixellari created by Zacchary Dempsey-Plante. Website indicates free for commercial use.
+(https://www.dafont.com/pixellari.font?fpp=200)
+
+Spess Font created by MTandi (discord) for /tg/station.
+
+Tiny Unicode created by Jakob Riedle/DuffsDevice. Website indicates free for commercial use.
+(https://fontmeme.com/fonts/tiny-unicode-font/)
+
+VCR OSD Mono created by Riciery Leal/mrmanet. Website indicates 100% free, author confirms it's free for all to use.
+(https://www.dafont.com/font-comment.php?file=vcr_osd_mono)
+
+
+
+
diff --git a/interface/fonts/pixellari.html b/interface/fonts/pixellari.html
new file mode 100644
index 0000000000000..f5e06cf077565
--- /dev/null
+++ b/interface/fonts/pixellari.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ interface/fonts/pixellari.dm - SPLURT Station 13
+
+
+
+
+interface/fonts/pixellari.dm
+
+
+
+
+ /datum /font /pixellari For clean results on map, use only sizing pt, multiples of 12: 12pt 24pt 48pt etc. - Not for use with px sizing
+Can be used in TGUI etc, px sizing is pt / 0.75. 12pt = 16px, 24pt = 32px etc.
+Base font
+ /datum /font /pixellari/size_12pt For icon overlays
+Pixellari 12pt metrics generated using Lummox's dmifontsplus (https://www.byond.com/developer/LummoxJR/DmiFontsPlus)
+Note: these variable names have been changed, so you can't straight copy/paste from dmifontsplus.exe
+
+
+
diff --git a/interface/fonts/spess_font.html b/interface/fonts/spess_font.html
new file mode 100644
index 0000000000000..da88fa9e4eb10
--- /dev/null
+++ b/interface/fonts/spess_font.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ interface/fonts/spess_font.dm - SPLURT Station 13
+
+
+
+
+interface/fonts/spess_font.dm
+
+
+
+
+ /datum /font /spessfont For clean results on map, use only sizing pt, multiples of 6: 6t 12pt 18pt etc. - Not for use with px sizing
+Can be used in TGUI etc, px sizing is pt / 0.75. 12pt = 16px, 24pt = 32px etc.
+Base font
+ /datum /font /spessfont/size_6pt For icon overlays
+Spess Font 6pt metrics generated using Lummox's dmifontsplus (https://www.byond.com/developer/LummoxJR/DmiFontsPlus)
+Note: these variable names have been changed, so you can't straight copy/paste from dmifontsplus.exe
+
+
+
diff --git a/interface/fonts/tiny_unicode.html b/interface/fonts/tiny_unicode.html
new file mode 100644
index 0000000000000..92da38480b2db
--- /dev/null
+++ b/interface/fonts/tiny_unicode.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ interface/fonts/tiny_unicode.dm - SPLURT Station 13
+
+
+
+
+interface/fonts/tiny_unicode.dm
+
+
+
+
+ /datum /font /tiny_unicode For clean results on map, use only sizing pt, multiples of 12: 12pt 24pt 48pt etc. - Not for use with px sizing
+Can be used in TGUI etc, px sizing is pt / 0.75. 12pt = 16px, 24pt = 32px etc.
+Base font
+ /datum /font /tiny_unicode/size_12pt For icon overlays
+TinyUnicode 12pt metrics generated using Lummox's dmifontsplus (https://www.byond.com/developer/LummoxJR/DmiFontsPlus)
+Note: these variable names have been changed, so you can't straight copy/paste from dmifontsplus.exe
+
+
+
diff --git a/mob.html b/mob.html
new file mode 100644
index 0000000000000..7b797899ed8e3
--- /dev/null
+++ b/mob.html
@@ -0,0 +1,1100 @@
+
+
+
+
+
+
+ /mob - SPLURT Station 13
+
+
+
+
+
+
+CLICKDELAY HANDLING SYSTEM
+How this works is mobs can never do actions until their next_action is at or below world.time, but things can specify extra cooldown
+to check for either from the time of last_action or from the end of next_action.
+Clickdelay should always be checked via [CheckActionCooldown()], never manually!
Vars
+ LAssailant The last mob/living/carbon to push/drag/grab this mob (mostly used by slimes friend recognition)
+ ability_actions ability = action button instance.
+ ability_properties ability = list(data). see __DEFINES/mobs/innate_abilities.dm
+ action_cooldown_adjust Simple modification variable added to amount on adjust and on checking time since last action using [CheckActionCooldown()].
+This should only be manually modified via addition.
+ action_cooldown_mod Simple modification variable multiplied to next action modifier on adjust and on checking time since last action using [CheckActionCooldown()].
+This should only be manually modified using multipliers.
+ actionspeed_mod_immunities List of action speed modifiers ignored by this mob. List -> List (id) -> List (sources)
+ actionspeed_modification List of action speed modifiers applying to this mob
+ cached_multiplicative_actions_slowdown The calculated mob action speed slowdown based on the modifiers list
+ cached_multiplicative_slowdown The calculated mob speed slowdown based on the modifiers list
+ deathsound The sound made on death
+ do_afters For storing what do_after's someone has, in case we want to restrict them to only one of a certain do_after at a time
+ examine_cursor_icon Cursor icon used when holding shift over things
+ focus What receives our keyboard input. src by default.
+ fullscreens Fullscreen objects
+ innate_abilities Ability system based on action buttons. Can be ported to base /mob or /mob/living later if needed, easily - the procs are currently on living/carbon/human/innate_abilities.dm
+datum traits-style lazylist of abilities
+ is_shifted Whether the mob is pixel shifted or not
+ last_action Generic clickdelay variable. Marks down the last world.time we did something that should cause or impact generic clickdelay. This should be directly set or set using [DelayNextAction()]. This should only be checked using [CheckActionCooldown()].
+ last_action_immediate The difference between the above and this is this is set immediately before even the pre-attack begins to ensure clickdelay is respected.
+Then, it is flushed or discarded using [FlushLastAttack()] or [DiscardLastAttack()] respectively.
+ mob_transforming Whether or not the mob is currently being transformed into another mob or into another state of being. This will prevent it from moving or doing realistically anything.
+Don't you DARE use this for a cheap way to ensure someone is stunned in your code.
+ mock_client A mock client, provided by tests and friends
+ movespeed_mod_immunities List of movement speed modifiers ignored by this mob. List -> List (id) -> List (sources)
+ movespeed_modification List of movement speed modifiers applying to this mob
+ next_action Generic clickdelay variable. Next world.time we should be able to do something that respects generic clickdelay. This should be set using [DelayNextAction()] This should only be checked using [CheckActionCooldown()].
+ next_action_immediate Ditto
+ next_resist Minimum world time for another resist. This should only be checked using [CheckResistCooldown()].
+ passthroughable Takes the four cardinal direction defines. Any atoms moving into this atom's tile will be allowed to from the added directions.
+ resist_cooldown How long we should wait before allowing another resist. This should only be manually modified using multipliers.
+ shifting If we are in the shifting setting.
+ sound_environment_override Override for sound_environments. If this is set the user will always hear a specific type of reverb (Instead of the area defined reverb)
+ tgui_open_uis global
+ typing_indicator_current Current state of our typing indicator. Used for cut overlay, DO NOT RUNTIME ASSIGN OTHER THAN FROM SHOW/CLEAR. Used to absolutely ensure we do not get stuck overlays.
+ typing_indicator_enabled ////TYPING INDICATORS///////
+Set to true if we want to show typing indicators.
+ typing_indicator_state Default icon_state of our typing indicator. Currently only supports paths (because anything else is, as of time of typing this, unnecesary.
+ typing_indicator_timerid The timer that will remove our indicator for early aborts (like when an user finishes their message)
+ unarmed_attack_speed Default clickdelay for an UnarmedAttack() that successfully passes. Respects action_cooldown_mod. Procs
+ CheckActionCooldown Checks if we can do another action.
+Returns TRUE if we can and FALSE if we cannot.
+ CheckResistCooldown Checks if we can resist again.
+ CommonClickOn Common mob click code
+ DelayNextAction Applies a delay to next_action before we can do our next action.
+ DiscardCurrentAction Discards last_action and next_action
+ Dizzy Set the dizzyness of a mob to a passed in amount
+ EstimatedNextActionTime Get estimated time of next attack.
+ FlushCurrentAction Flushes last_action and next_action
+ GetActionCooldownAdjust Gets action_cooldown_adjust
+ GetActionCooldownMod Gets action_cooldown_mod.
+ Jitter Set the jitter of a mob
+ MarkResistTime Mark the last resist as now.
+ SetNextAction Sets our next action to. The difference is DelayNextAction cannot reduce next_action under any circumstances while this can.
+ add_actionspeed_modifier Add a action speed modifier to a mob. If a variable subtype is passed in as the first argument, it will make a new datum. If ID conflicts, it will overwrite the old ID.
+ add_movespeed_modifier Add a move speed modifier to a mob. If a variable subtype is passed in as the first argument, it will make a new datum. If ID conflicts, it will overwrite the old ID.
+ add_to_alive_mob_list Adds the mob reference to the list of all mobs alive. If mob is cliented, it adds it to the list of all living player-mobs.
+ add_to_current_dead_players Adds the cliented mob reference to either the list of dead player-mobs or to the list of observers, depending on how they joined the game.
+ add_to_current_living_antags Adds the cliented mob reference to the list of living antag player-mobs.
+ add_to_current_living_players Adds the cliented mob reference to the list of living player-mobs. If the mob is an antag, it adds it to the list of living antag player-mobs.
+ add_to_dead_mob_list Adds the mob reference to the list of all the dead mobs. If mob is cliented, it adds it to the list of all dead player-mobs.
+ add_to_mob_list Adds the mob reference to the list and directory of all mobs. Called on Initialize().
+ add_to_player_list Adds the cliented mob reference to the list of all player-mobs, besides to either the of dead or alive player-mob lists, as appropriate. Called on Login().
+ adjust_blindness Adjust a mobs blindness by an amount
+ adjust_blurriness Adjust the current blurriness of the mobs vision by amount
+ adjust_bodytemperature Adjust the body temperature of a mob, with min/max settings
+ adjust_disgust Adjust the disgust level of a mob
+ adjust_drugginess Adjust the drugginess of a mob
+ adjust_nutrition Adjust the nutrition of a mob
+ adjust_thirst Adjust the thirst of a mob
+ attempt_resist_grab Proc to resist a grab. moving_resist is TRUE if this began by someone attempting to move. Return FALSE if still grabbed/failed to break out. Use this instead of resist_grab() directly.
+ audible_message Show a message to all mobs in earshot of this one
+ blind_eyes Sets a mob's blindness to an amount if it was not above it already, similar to how status effects work
+ blur_eyes Make the mobs vision blurry
+ check_obscured_slots Checks for slots that are currently obscured by other garments.
+ clear_from_recent_examines our active hand, to check if it's disabled/detatched
+how long it takes for the blind person to find the thing they're examining
+our current intent, so we can go back to it after touching
+ clear_fullscreen Wipes a fullscreen of a certain category
+ clear_typing_indicator Removes typing indicator.
+ create_chat_message Creates a message overlay at a defined location for a given speaker
+ display_typing_indicator Displays typing indicator.
+@param timeout_override - Sets how long until this will disappear on its own without the user finishing their message or logging out. Defaults to src.typing_indicator_timeout
+@param state_override - Sets the state that we will fetch. Defaults to src.get_typing_indicator_icon_state()
+@param force - shows even if src.typing_indcator_enabled is FALSE.
+ dispose_rendering destroys screen rendering. call on mob del
+ dropItemToGround Used to drop an item (if it exists) to the ground.
+ equipped_speed_mods Gets the combined speed modification of all worn items
+Except base mob type doesnt really wear items
+ examinate Examine a mob
+ generate_typing_indicator Generates the mutable appearance for typing indicator. Should prevent stuck overlays.
+ get_ability_property Gets an ability property
+ get_actionspeed_modifiers Get the action speed modifiers list of the mob
+ get_active_hand Get the bodypart for whatever hand we have active, Only relevant for carbons
+ get_config_multiplicative_speed Get the global config movespeed of a mob by type
+ get_indicator_overlay Fetches the typing indicator we'll use from GLOB.typing_indicator_overlays
+ get_movespeed_modifier_datum Gets the movespeed modifier datum of a modifier on a mob. Returns null if not found.
+DANGER: IT IS UP TO THE PERSON USING THIS TO MAKE SURE THE MODIFIER IS NOT MODIFIED IF IT HAPPENS TO BE GLOBAL/CACHED.
+ get_movespeed_modifiers Get the move speed modifiers list of the mob
+ get_num_held_items Find number of held items, multihand compatible
+ get_proc_holders Gets all relevant proc holders for the browser statpenl
+ get_spells_for_statpanel Convert a list of spells into a displyable list for the statpanel
+ get_status_tab_items Adds this list to the output to the stat browser
+ get_top_level_mob SUBTLE COMMAND
+ get_typing_indicator_icon_state Gets the state we will use for typing indicators. Defaults to src.typing_indicator_state
+ grant_ability_from_source Grants an ability from a source
+ handle_eye_contact handle_eye_contact() is called when we examine() something. If we examine an alive mob with a mind who has examined us in the last second within 5 tiles, we make eye contact!
+ has_actionspeed_modifier Is there a actionspeed modifier for this mob
+ has_movespeed_modifier Is there a movespeed modifier for this mob
+ hide_fullscreens Removes fullscreens from client but not the mob
+ init_rendering initializes screen rendering. call on mob new
+ initialize_actionspeed Adds a default action speed
+ interact_with Attempts to open the tgui menu
+ list_interaction_attributes
+ onShuttleMove Mob move procs
+ overlay_fullscreen Adds a fullscreen overlay
+ pointed Point at an atom
+ reload_fullscreen Ensures all fullscreens are on client.
+ reload_rendering loads screen rendering. call on mob login
+ remove_ability_from_source Removes an ability from a source
+ remove_actionspeed_modifier Remove a action speed modifier from a mob, whether static or variable.
+ remove_from_alive_mob_list Removes the mob reference from the list of all mobs alive. If mob is cliented, it removes it from the list of all living player-mobs.
+ remove_from_current_dead_players Removes the mob reference from either the list of dead player-mobs or from the list of observers, depending on how they joined the game.
+ remove_from_current_living_antags Removes the mob reference from the list of living antag player-mobs.
+ remove_from_current_living_players Removes the mob reference from the list of living player-mobs. If the mob is an antag, it removes it from the list of living antag player-mobs.
+ remove_from_dead_mob_list Remvoes the mob reference from list of all the dead mobs. If mob is cliented, it adds it to the list of all dead player-mobs.
+ remove_from_mob_list Removes the mob reference from the list and directory of all mobs. Called on Destroy().
+ remove_from_player_list Removes the mob reference from the list of all player-mobs, besides from either the of dead or alive player-mob lists, as appropriate. Called on Logout().
+ remove_movespeed_modifier Remove a move speed modifier from a mob, whether static or variable.
+ setGrabState Updates the grab state of the mob and updates movespeed
+ set_ability_property Sets an ability property
+ set_blindness Force set the blindness of a mob to some level
+ set_blurriness Set the mobs blurriness of vision to an amount
+ set_disgust Set the disgust level of a mob
+ set_dizziness FOrce set the dizzyness of a mob
+ set_drugginess Set the drugginess of a mob
+ set_nutrition Force set the mob nutrition
+ set_species DNA MOB-PROCS
+ set_stat Used to wrap stat setting to trigger on-stat-change functionality.
+Must be used instead of directly setting a mob's stat var,
+so that the signal is sent properly.
+ shared_ui_interaction public
+ shuttleRotate Mob rotate procs
+ total_multiplicative_slowdown Calculate the total slowdown of all movespeed modifiers
+ update_actionspeed Go through the list of actionspeed modifiers and calculate a final actionspeed. ANY ADD/REMOVE DONE IN UPDATE_actionspeed MUST HAVE THE UPDATE ARGUMENT SET AS FALSE!
+ update_blindness proc that adds and removes blindness overlays when necessary
+ update_config_movespeed Set or update the global movespeed config on a mob
+ update_movespeed Go through the list of movespeed modifiers and calculate a final movespeed. ANY ADD/REMOVE DONE IN UPDATE_MOVESPEED MUST HAVE THE UPDATE ARGUMENT SET AS FALSE!
+ visible_message Adds the functionality to self_message.
+ vv_edit_var Handles the special case of editing the movement var
+ wipe_fullscreens Wipes all fullscreens
+ Var Details LAssailant
+
+
+
+
+
+ The last mob/living/carbon to push/drag/grab this mob (mostly used by slimes friend recognition)
ability_actions
+
+
+
+
+
+ ability = action button instance.
ability_properties
+
+
+
+
+
+ ability = list(data). see __DEFINES/mobs/innate_abilities.dm
action_cooldown_adjust
+
+
+
+
+
+ Simple modification variable added to amount on adjust and on checking time since last action using [CheckActionCooldown()].
+This should only be manually modified via addition.
action_cooldown_mod
+
+
+
+
+
+ Simple modification variable multiplied to next action modifier on adjust and on checking time since last action using [CheckActionCooldown()].
+This should only be manually modified using multipliers.
actionspeed_mod_immunities
+
+
+
+
+
+ List of action speed modifiers ignored by this mob. List -> List (id) -> List (sources)
actionspeed_modification
+
+
+
+
+
+ List of action speed modifiers applying to this mob
cached_multiplicative_actions_slowdown
+
+
+
+
+
+ The calculated mob action speed slowdown based on the modifiers list
cached_multiplicative_slowdown
+
+
+
+
+
+ The calculated mob speed slowdown based on the modifiers list
deathsound
+
+
+
+
+
+ The sound made on death
+leave null for no sound. used for *deathgasp
do_afters
+
+
+
+
+
+ For storing what do_after's someone has, in case we want to restrict them to only one of a certain do_after at a time
examine_cursor_icon
+
+
+
+
+
+ Cursor icon used when holding shift over things
focus
+
+
+
+
+
+ What receives our keyboard input. src by default.
fullscreens
+
+
+
+
+
+ Fullscreen objects
innate_abilities
+
+
+
+
+
+ Ability system based on action buttons. Can be ported to base /mob or /mob/living later if needed, easily - the procs are currently on living/carbon/human/innate_abilities.dm
+datum traits-style lazylist of abilities
is_shifted
+
+
+
+
+
+ Whether the mob is pixel shifted or not
last_action
+
+
+
+
+
+ Generic clickdelay variable. Marks down the last world.time we did something that should cause or impact generic clickdelay. This should be directly set or set using [DelayNextAction()]. This should only be checked using [CheckActionCooldown()].
+ The difference between the above and this is this is set immediately before even the pre-attack begins to ensure clickdelay is respected.
+Then, it is flushed or discarded using [FlushLastAttack()] or [DiscardLastAttack()] respectively.
+ Whether or not the mob is currently being transformed into another mob or into another state of being. This will prevent it from moving or doing realistically anything.
+Don't you DARE use this for a cheap way to ensure someone is stunned in your code.
+ A mock client, provided by tests and friends
movespeed_mod_immunities
+
+
+
+
+
+ List of movement speed modifiers ignored by this mob. List -> List (id) -> List (sources)
movespeed_modification
+
+
+
+
+
+ List of movement speed modifiers applying to this mob
next_action
+
+
+
+
+
+ Generic clickdelay variable. Next world.time we should be able to do something that respects generic clickdelay. This should be set using [DelayNextAction()] This should only be checked using [CheckActionCooldown()].
+ Ditto
next_resist
+
+
+
+
+
+ Minimum world time for another resist. This should only be checked using [CheckResistCooldown()].
passthroughable
+
+
+
+
+
+ Takes the four cardinal direction defines. Any atoms moving into this atom's tile will be allowed to from the added directions.
resist_cooldown
+
+
+
+
+
+ How long we should wait before allowing another resist. This should only be manually modified using multipliers.
shifting
+
+
+
+
+
+ If we are in the shifting setting.
sound_environment_override
+
+
+
+
+
+ Override for sound_environments. If this is set the user will always hear a specific type of reverb (Instead of the area defined reverb)
tgui_open_uis
+
+
+
+
+
+ global
+Tracks open UIs for a user.
typing_indicator_current
+
+
+
+
+
+ Current state of our typing indicator. Used for cut overlay, DO NOT RUNTIME ASSIGN OTHER THAN FROM SHOW/CLEAR. Used to absolutely ensure we do not get stuck overlays.
typing_indicator_enabled
+
+
+
+
+
+ ////TYPING INDICATORS///////
+Set to true if we want to show typing indicators.
typing_indicator_state
+
+
+
+
+
+ Default icon_state of our typing indicator. Currently only supports paths (because anything else is, as of time of typing this, unnecesary.
typing_indicator_timerid
+
+
+
+
+
+ The timer that will remove our indicator for early aborts (like when an user finishes their message)
unarmed_attack_speed
+
+
+
+
+
+ Default clickdelay for an UnarmedAttack() that successfully passes. Respects action_cooldown_mod.
Proc Details CheckActionCooldown(cooldown, from_next_action, ignore_mod, ignore_next_action, immediate)
+
+
+
+
+
+ Checks if we can do another action.
+Returns TRUE if we can and FALSE if we cannot.
+@params
+
+cooldown - Time required since last action. Defaults to 0.5
+from_next_action - Defaults to FALSE. Should we check from the tail end of next_action instead of last_action?
+ignore_mod - Defaults to FALSE. Ignore all adjusts and multipliers. Do not use this unless you know what you are doing and have a good reason.
+ignore_next_action - Defaults to FALSE. Ignore next_action and only care about cooldown param and everything else. Generally unused.
+immediate - Defaults to FALSE. Checks last action using immediate, used on the head end of an attack. This is to prevent colliding attacks in case of sleep. Not that you should sleep() in an attack but.. y'know.
+ CheckResistCooldown()
+
+
+
+
+
+ Checks if we can resist again.
CommonClickOn(/atom /A, params)
+
+
+
+
+
+ Common mob click code
DelayNextAction(amount, ignore_mod, considered_action, immediate, flush)
+
+
+
+
+
+ Applies a delay to next_action before we can do our next action.
+@params
+
+amount - Amount to delay by
+ignore_mod - ignores next action adjust and mult
+considered_action - Defaults to TRUE - If TRUE, sets last_action to world.time.
+immediate - defaults to TRUE - if TRUE, writes to cached/last_attack_immediate instead of last_attack. This ensures it can't collide with any delay checks in the actual attack.
+flush - defaults to FALSE - Use this while using this proc outside of clickcode to ensure everything is set properly. This should never be set to TRUE if this is called from clickcode.
+ DiscardCurrentAction()
+
+
+
+
+
+ Discards last_action and next_action
Dizzy(amount)
+
+
+
+
+
+ Set the dizzyness of a mob to a passed in amount
+Except if dizziness is already higher in which case it does nothing
EstimatedNextActionTime()
+
+
+
+
+
+ Get estimated time of next attack.
FlushCurrentAction()
+
+
+
+
+
+ Flushes last_action and next_action
GetActionCooldownAdjust()
+
+
+
+
+
+ Gets action_cooldown_adjust
GetActionCooldownMod()
+
+
+
+
+
+ Gets action_cooldown_mod.
Jitter(amount)
+
+
+
+
+
+ Set the jitter of a mob
MarkResistTime(extra_cooldown, override)
+
+
+
+
+
+ Mark the last resist as now.
+@params
+
+extra_cooldown - Extra cooldown to apply to next_resist. Defaults to this mob's resist_cooldown.
+override - Defaults to FALSE - if TRUE, extra_cooldown will replace the old next_resist even if the old is longer.
+ SetNextAction(amount, ignore_mod, considered_action, immediate, flush)
+
+
+
+
+
+ Sets our next action to. The difference is DelayNextAction cannot reduce next_action under any circumstances while this can.
add_actionspeed_modifier
+
+ Add a action speed modifier to a mob. If a variable subtype is passed in as the first argument, it will make a new datum. If ID conflicts, it will overwrite the old ID.
add_movespeed_modifier
+
+ Add a move speed modifier to a mob. If a variable subtype is passed in as the first argument, it will make a new datum. If ID conflicts, it will overwrite the old ID.
add_to_alive_mob_list()
+
+
+
+
+
+ Adds the mob reference to the list of all mobs alive. If mob is cliented, it adds it to the list of all living player-mobs.
add_to_current_dead_players()
+
+
+
+
+
+ Adds the cliented mob reference to either the list of dead player-mobs or to the list of observers, depending on how they joined the game.
+ Adds the cliented mob reference to the list of living antag player-mobs.
add_to_current_living_players()
+
+
+
+
+
+ Adds the cliented mob reference to the list of living player-mobs. If the mob is an antag, it adds it to the list of living antag player-mobs.
add_to_dead_mob_list()
+
+
+
+
+
+ Adds the mob reference to the list of all the dead mobs. If mob is cliented, it adds it to the list of all dead player-mobs.
add_to_mob_list()
+
+
+
+
+
+ Adds the mob reference to the list and directory of all mobs. Called on Initialize().
add_to_player_list()
+
+
+
+
+
+ Adds the cliented mob reference to the list of all player-mobs, besides to either the of dead or alive player-mob lists, as appropriate. Called on Login().
adjust_blindness(amount)
+
+
+
+
+
+ Adjust a mobs blindness by an amount
+Will apply the blind alerts if needed
adjust_blurriness(amount)
+
+
+
+
+
+ Adjust the current blurriness of the mobs vision by amount
adjust_bodytemperature(amount, min_temp, max_temp)
+
+
+
+
+
+ Adjust the body temperature of a mob, with min/max settings
adjust_disgust(amount)
+
+
+
+
+
+ Adjust the disgust level of a mob
adjust_drugginess(amount)
+
+
+
+
+
+ Adjust the drugginess of a mob
adjust_nutrition(change, max)
+
+
+
+
+
+ Adjust the nutrition of a mob
adjust_thirst(change, max)
+
+
+
+
+
+ Adjust the thirst of a mob
attempt_resist_grab(moving_resist, forced, log)
+
+
+
+
+
+ Proc to resist a grab. moving_resist is TRUE if this began by someone attempting to move. Return FALSE if still grabbed/failed to break out. Use this instead of resist_grab() directly.
audible_message(message, deaf_message, hearing_distance, self_message, /list/ignored_mobs, runechat_popup, rune_msg)
+
+
+
+
+
+ Show a message to all mobs in earshot of this one
+This would be for audible actions by the src mob
+vars:
+
+message is the message output to anyone who can hear.
+self_message (optional) is what the src mob hears.
+deaf_message (optional) is what deaf people will see.
+hearing_distance (optional) is the range, how many tiles away the message can be heard.
+ignored_mobs (optional) doesn't show any message to any given mob in the list.
+ blind_eyes(amount)
+
+
+
+
+
+ Sets a mob's blindness to an amount if it was not above it already, similar to how status effects work
blur_eyes(amount)
+
+
+
+
+
+ Make the mobs vision blurry
check_obscured_slots()
+
+
+
+
+
+ Checks for slots that are currently obscured by other garments.
clear_from_recent_examines
+
+ our active hand, to check if it's disabled/detatched
+how long it takes for the blind person to find the thing they're examining
+our current intent, so we can go back to it after touching
clear_fullscreen(category, animated)
+
+
+
+
+
+ Wipes a fullscreen of a certain category
+Second argument is for animation delay.
clear_typing_indicator()
+
+
+
+
+
+ Removes typing indicator.
create_chat_message(/atom /movable /speaker, /datum /language/message_language, raw_message, /list/spans, message_mode)
+
+
+
+
+
+ Creates a message overlay at a defined location for a given speaker
+Arguments:
+
+speaker - The atom who is saying this message
+message_language - The language that the message is said in
+raw_message - The text content of the message
+spans - Additional classes to be added to the message
+message_mode - Bitflags relating to the mode of the message
+ display_typing_indicator(timeout_override, state_override, force)
+
+
+
+
+
+ Displays typing indicator.
+@param timeout_override - Sets how long until this will disappear on its own without the user finishing their message or logging out. Defaults to src.typing_indicator_timeout
+@param state_override - Sets the state that we will fetch. Defaults to src.get_typing_indicator_icon_state()
+@param force - shows even if src.typing_indcator_enabled is FALSE.
dispose_rendering()
+
+
+
+
+
+ destroys screen rendering. call on mob del
dropItemToGround(/obj /item /I, force, silent, invdrop)
+
+
+
+
+
+ Used to drop an item (if it exists) to the ground.
+
+Will pass as TRUE is successfully dropped, or if there is no item to drop.
+Will pass FALSE if the item can not be dropped due to TRAIT_NODROP via doUnEquip()
+If the item can be dropped, it will be forceMove()'d to the ground and the turf's Entered() will be called.
+ equipped_speed_mods()
+
+
+
+
+
+ Gets the combined speed modification of all worn items
+Except base mob type doesnt really wear items
examinate
+
+ Examine a mob
+mob verbs are faster than object verbs. See
+this byond forum post
+for why this isn't atom/verb/examine()
generate_typing_indicator()
+
+
+
+
+
+ Generates the mutable appearance for typing indicator. Should prevent stuck overlays.
get_ability_property(ability, property)
+
+
+
+
+
+ Gets an ability property
get_actionspeed_modifiers()
+
+
+
+
+
+ Get the action speed modifiers list of the mob
get_active_hand()
+
+
+
+
+
+ Get the bodypart for whatever hand we have active, Only relevant for carbons
get_config_multiplicative_speed(floating)
+
+
+
+
+
+ Get the global config movespeed of a mob by type
get_indicator_overlay(state)
+
+
+
+
+
+ Fetches the typing indicator we'll use from GLOB.typing_indicator_overlays
get_movespeed_modifier_datum(id)
+
+
+
+
+
+ Gets the movespeed modifier datum of a modifier on a mob. Returns null if not found.
+DANGER: IT IS UP TO THE PERSON USING THIS TO MAKE SURE THE MODIFIER IS NOT MODIFIED IF IT HAPPENS TO BE GLOBAL/CACHED.
get_movespeed_modifiers()
+
+
+
+
+
+ Get the move speed modifiers list of the mob
get_num_held_items()
+
+
+
+
+
+ Find number of held items, multihand compatible
get_proc_holders()
+
+
+
+
+
+ Gets all relevant proc holders for the browser statpenl
get_spells_for_statpanel(/list/spells)
+
+
+
+
+
+ Convert a list of spells into a displyable list for the statpanel
+Shows charge and other important info
get_status_tab_items()
+
+
+
+
+
+ Adds this list to the output to the stat browser
get_top_level_mob()
+
+
+
+
+
+ SUBTLE COMMAND
get_typing_indicator_icon_state()
+
+
+
+
+
+ Gets the state we will use for typing indicators. Defaults to src.typing_indicator_state
grant_ability_from_source(/list/abilities, source)
+
+
+
+
+
+ Grants an ability from a source
+ handle_eye_contact() is called when we examine() something. If we examine an alive mob with a mind who has examined us in the last second within 5 tiles, we make eye contact!
+Note that if either party has their face obscured, the other won't get the notice about the eye contact
+Also note that examine_more() doesn't proc this or extend the timer, just because it's simpler this way and doesn't lose much.
+The nice part about relying on examining is that we don't bother checking visibility, because we already know they were both visible to each other within the last second, and the one who triggers it is currently seeing them
has_actionspeed_modifier
+
+ Is there a actionspeed modifier for this mob
has_movespeed_modifier
+
+ Is there a movespeed modifier for this mob
hide_fullscreens()
+
+
+
+
+
+ Removes fullscreens from client but not the mob
init_rendering()
+
+
+
+
+
+ initializes screen rendering. call on mob new
initialize_actionspeed()
+
+
+
+
+
+ Adds a default action speed
interact_with()
+
+
+
+
+
+ Attempts to open the tgui menu
list_interaction_attributes()
+
+
+
+
+
+ # Interactions code by HONKERTRON feat TestUnit
+
+
+Contains a lot ammount of ERP and MEHANOYEBLYA
+CREDIT TO ATMTA STATION FOR MOST OF THIS CODE, I ONLY MADE IT WORK IN /vg/ - Matt
+Rewritten 30/08/16 by Zuhayr, sry if I removed anything important.
+I removed ERP and replaced it with handholding. Nothing of worth was lost. - Vic
+Fuck you, Vic. ERP is back. - TT
+
+
+using var/ on everything, also TRUE
+
+
+"TGUIzes" the panel because yes - SandPoot
+Makes all the code good because yes as well - SandPoot
+ onShuttleMove
+
+ Mob move procs
overlay_fullscreen(category, type, severity)
+
+
+
+
+
+ Adds a fullscreen overlay
+@params
+
+category - string - must exist. will overwrite any other screen in this category. defaults to type.
+type - the typepath of the screen
+severity - severity - different screen objects have differing severities
+ pointed(/atom /target, params)
+
+
+
+
+
+ Point at an atom
+mob verbs are faster than object verbs. See
+this byond forum post
+for why this isn't atom/verb/pointed()
+note: ghosts can point, this is intended
+visible_message will handle invisibility properly
+overridden here and in /mob/dead/observer for different point span classes and sanity checks
reload_fullscreen()
+
+
+
+
+
+ Ensures all fullscreens are on client.
reload_rendering()
+
+
+
+
+
+ loads screen rendering. call on mob login
remove_ability_from_source(/list/abilities, source)
+
+
+
+
+
+ Removes an ability from a source
remove_actionspeed_modifier
+
+ Remove a action speed modifier from a mob, whether static or variable.
remove_from_alive_mob_list()
+
+
+
+
+
+ Removes the mob reference from the list of all mobs alive. If mob is cliented, it removes it from the list of all living player-mobs.
remove_from_current_dead_players()
+
+
+
+
+
+ Removes the mob reference from either the list of dead player-mobs or from the list of observers, depending on how they joined the game.
+ Removes the mob reference from the list of living antag player-mobs.
remove_from_current_living_players()
+
+
+
+
+
+ Removes the mob reference from the list of living player-mobs. If the mob is an antag, it removes it from the list of living antag player-mobs.
remove_from_dead_mob_list()
+
+
+
+
+
+ Remvoes the mob reference from list of all the dead mobs. If mob is cliented, it adds it to the list of all dead player-mobs.
remove_from_mob_list()
+
+
+
+
+
+ Removes the mob reference from the list and directory of all mobs. Called on Destroy().
remove_from_player_list()
+
+
+
+
+
+ Removes the mob reference from the list of all player-mobs, besides from either the of dead or alive player-mob lists, as appropriate. Called on Logout().
remove_movespeed_modifier
+
+ Remove a move speed modifier from a mob, whether static or variable.
setGrabState(newstate)
+
+
+
+
+
+ Updates the grab state of the mob and updates movespeed
set_ability_property(ability, property, value)
+
+
+
+
+
+ Sets an ability property
set_blindness(amount)
+
+
+
+
+
+ Force set the blindness of a mob to some level
set_blurriness(amount)
+
+
+
+
+
+ Set the mobs blurriness of vision to an amount
set_disgust(amount)
+
+
+
+
+
+ Set the disgust level of a mob
set_dizziness(amount)
+
+
+
+
+
+ FOrce set the dizzyness of a mob
set_drugginess(amount)
+
+
+
+
+
+ Set the drugginess of a mob
set_nutrition(change)
+
+
+
+
+
+ Force set the mob nutrition
set_species
+
+ DNA MOB-PROCS
set_stat(new_stat)
+
+
+
+
+
+ Used to wrap stat setting to trigger on-stat-change functionality.
+Must be used instead of directly setting a mob's stat var,
+so that the signal is sent properly.
shared_ui_interaction(src_object)
+
+
+
+
+
+ public
+Standard interaction/sanity checks. Different mob types may have overrides.
+return UI_state The state of the UI.
shuttleRotate(rotation, params)
+
+
+
+
+
+ Mob rotate procs
total_multiplicative_slowdown()
+
+
+
+
+
+ Calculate the total slowdown of all movespeed modifiers
update_actionspeed()
+
+
+
+
+
+ Go through the list of actionspeed modifiers and calculate a final actionspeed. ANY ADD/REMOVE DONE IN UPDATE_actionspeed MUST HAVE THE UPDATE ARGUMENT SET AS FALSE!
update_blindness()
+
+
+
+
+
+ proc that adds and removes blindness overlays when necessary
update_config_movespeed()
+
+
+
+
+
+ Set or update the global movespeed config on a mob
update_movespeed()
+
+
+
+
+
+ Go through the list of movespeed modifiers and calculate a final movespeed. ANY ADD/REMOVE DONE IN UPDATE_MOVESPEED MUST HAVE THE UPDATE ARGUMENT SET AS FALSE!
visible_message(message, self_message, blind_message, vision_distance, /list/ignored_mobs, /mob /target, target_message, omni, runechat_popup, rune_msg)
+
+
+
+
+
+ Adds the functionality to self_message.
vv_edit_var(var_name, var_value)
+
+
+
+
+
+ Handles the special case of editing the movement var
wipe_fullscreens()
+
+
+
+
+
+ Wipes all fullscreens
+
+
+
diff --git a/mob/dead/new_player.html b/mob/dead/new_player.html
new file mode 100644
index 0000000000000..a2880fb8e84a6
--- /dev/null
+++ b/mob/dead/new_player.html
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+ /mob/dead/new_player - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ age_gate_result Is there a result we want to read from the age gate
+ ineligible_for_roles Used to make sure someone doesn't get spammed with messages if they're ineligible for roles
+ new_character For instant transfer once the round is set up
+ reset_hud_cooldown Cooldown for the Reset Lobby Menu HUD verb
+ spawning Referenced when you want to delete the new_player later on in the code. Procs
+ reset_menu_hud Resets the Lobby Menu HUD, recreating and reassigning it to the new player
+ respawn_latejoin_check Checks if we can latejoin on the currently selected slot, taking into account respawn status.
+ vote_on_irv_poll Processes vote form data and saves results to the database for an IRV type poll.
+ vote_on_multi_poll Processes vote form data and saves results to the database for a multiple choice type poll.
+ Var Details age_gate_result
+
+
+
+
+
+ Is there a result we want to read from the age gate
ineligible_for_roles
+
+
+
+
+
+ Used to make sure someone doesn't get spammed with messages if they're ineligible for roles
new_character
+
+
+
+
+
+ For instant transfer once the round is set up
reset_hud_cooldown
+
+
+
+
+
+ Cooldown for the Reset Lobby Menu HUD verb
spawning
+
+
+
+
+
+ Referenced when you want to delete the new_player later on in the code.
Proc Details
+ Resets the Lobby Menu HUD, recreating and reassigning it to the new player
respawn_latejoin_check(notify)
+
+
+
+
+
+ Checks if we can latejoin on the currently selected slot, taking into account respawn status.
vote_on_irv_poll(pollid, /list/votelist)
+
+
+
+
+
+ Processes vote form data and saves results to the database for an IRV type poll.
vote_on_multi_poll(pollid, optionid)
+
+
+
+
+
+ Processes vote form data and saves results to the database for a multiple choice type poll.
+
+
+
diff --git a/mob/dead/observer.html b/mob/dead/observer.html
new file mode 100644
index 0000000000000..b7008134fef18
--- /dev/null
+++ b/mob/dead/observer.html
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+ /mob/dead/observer - SPLURT Station 13
+
+
+
+
+
+
+Proc Details do_respawn(penalize)
+
+
+
+
+
+ Handles respawning
respawn()
+
+
+
+
+
+ Attempts to respawn.
time_left_to_respawn()
+
+
+
+
+
+ Gets time left until we can respawn. Returns 0 if we can respawn now.
transfer_to_lobby()
+
+
+
+
+
+ Actual proc that removes us and puts us back on lobby
+Returns the new mob.
+
+
+
diff --git a/mob/living.html b/mob/living.html
new file mode 100644
index 0000000000000..509de304562cd
--- /dev/null
+++ b/mob/living.html
@@ -0,0 +1,788 @@
+
+
+
+
+
+
+ /mob/living - SPLURT Station 13
+
+
+
+
+
+
+Mob Living
Vars
+ active_block_item The item the user is actively blocking with if any.
+ active_parry_item The itme the user is currently parrying with, if any.
+ block_parry_data Our block_parry_data for unarmed blocks/parries. Currently only used for parrying, as unarmed block isn't implemented yet. YOU MUST RUN [get_block_parry_data(this)] INSTEAD OF DIRECTLY ACCESSING!
+ buckle_message_cooldown Next world.time when we can get the "you can't move while buckled to [thing]" message.
+ combat_flags / CITADEL STATION COMBAT ////
+See __DEFINES/combat.dm
+ combatmessagecooldown Next world.time when we will show a visible message on entering combat mode voluntarily again.
+ default_block_parry_data Default
+ last_autoparry Last autoparry
+ navigate_cooldown Cooldown of the navigate() verb.
+ next_preyloop Next time vore sounds get played for the prey, do not change manually as it is intended to be set automatically
+ parry_end_time_last world.time of last parry end
+ parry_start_time world.time of parry action start
+ parry_visual_effect Current parry effect.
+ parrying Whether or not the user is in the middle of an active parry. Set to UNARMED_PARRY , [ITEM_PARRY], [MARTIAL_PARRY] if parrying.
+ pugilist_block_parry_data If we're a pugilist
+ stamina_buffer Our stamina buffer
+ stamina_buffer_last_use Last time we used stamina buffer
+ stamina_buffer_regen_last Last time stamina buffer regen was done
+ stamina_buffer_regen_mod Stamina buffer regen modifier
+ successful_parries Successful parries within the current parry cycle. It's a list of efficiency percentages.
+ successful_parry_counterattacks Current parry counterattacks. Makes sure we can only counterattack someone once per parry.
+ vore_organs List of vore containers inside a mob
+ vore_selected Default to no vore capability.
+ vore_smell What the character smells like
+ vore_taste What the character tastes like Procs
+ BiologicalLife Handles biological life processes like chemical metabolism, breathing, etc
+Returns TRUE or FALSE based on if we were interrupted. This is used by overridden variants to check if they should stop.
+ HealAllImmobilityUpTo Makes sure all 5 of the non-knockout immobilizing status effects are lower or equal to amount.
+ IsDazed DAZED
+ IsFrozen FROZEN
+ IsImmobilized IMMOBILIZED
+ IsKnockdown KNOCKDOWN
+ IsParalyzed PARALYZED
+ IsSleeping SLEEPING
+ IsStaggered STAGGERED
+ IsStun STUN
+ IsUnconscious UNCONSCIOUS
+ Life Called by SSmobs at an interval of 2 seconds.
+Splits off into PhysicalLife() and BiologicalLife(). Override those instead of this.
+ PhysicalLife Handles physical life processes like being on fire. Don't ask why this is considered "Life".
+Returns TRUE or FALSE based on if we were interrupted. This is used by overridden variants to check if they should stop.
+ RechargeStaminaBuffer Boosts our stamina buffer by this much.
+ ShoveOffBalance OFF BALANCE/SHOVIES
+ UpdateStaminaBuffer Updates our stamina buffer amount.
+ UseStaminaBuffer Attempts to use an amount of stamina from our stamina buffer.
+Does not use anything if we don't have enough.
+ active_block_effect_end Visual effect cleanup for starting a directional block
+ active_block_effect_start Visual effect setup for starting a directional block
+ active_parry_reflex_counter Called when an attack is parried and block_parra_data indicates to use a proc to handle counterattack.
+ add_movespeed_mod_immunities Ignores specific slowdowns. Accepts a list of slowdowns.
+ add_quirk DISABILITIES
+ add_stun_absorption STUN ABSORPTION
+ apply_damage Applies damage to this mob
+ attempt_auto_parry Attempts to automatically parry an attacker.
+ bleedDragAmount Returns how much blood we're losing from being dragged a tile, from [mob/living/proc/makeTrail]
+ can_move_under_living whether or not we can slide under another living mob. defaults to if we're not dense. CanPass should check "overriding circumstances" like buckled mobs/having PASSMOB flag, etc.
+ change_gender Gender Change
+ check_orgasm Acts properly if the given genital has orgasm modifiers
+ check_unarmed_parry_activation_special Check if we can unarmed parry
+ cure_blind TRAIT PROCS
+ determine_parry_method Massive snowflake proc for getting something to parry with.
+ do_facefart U N H O L Y
+ do_resist The actual proc for resisting. Return TRUE to give CLICK_CD_RESIST clickdelay.
+ do_run_block
+ electrocute_act As the name suggests, this should be called to apply electric shocks.
+ end_parry_sequence Called via timer when the parry sequence ends.
+ find_active_block_item Gets the first item we can that can block, but if that fails, default to active held item.COMSIG_ENABLE_COMBAT_MODE
+ find_backup_parry_item Tries to find a backup parry item.
+Does not look at active held item.
+ find_nearest_stair_or_ladder Finds nearest ladder or staircase either up or down.
+ get_blocking_items Gets an unsortedlist of objects to run block checks on. List must have associative values for priorities!
+ get_equipped_items Used to return a list of equipped items on a mob; does not include held items (use get_all_gear)
+ get_fluid_mod Returns the fluid modifier if the genital has one.
+ get_parry_data Gets the datum/block_parry_data we're going to use to parry.
+ get_parry_stage Gets the stage of our parry sequence we're currently in.
+ get_parry_time Gets the current decisecond "frame" of an active parry.
+ handle_block_parry Called every life tick to handle blocking/parrying effects.
+ handle_parry_ending_effects Handles ending effects for parrying.
+ handle_parry_starting_effects Handles starting effects for parrying.
+ handle_post_sex Handles the sex, if cumming returns true.
+ hasparasites parasite tracking/finding procs
+ hud_set_nanite_indicator Diagnostic HUDs!
+ ignore_slowdown Ignores all slowdowns that lack the IGNORE_NOSLOW flag.
+ initiate_parry_sequence Initiates a parrying sequence.
+ is_barefoot Are we wearing something that covers our shoes?
+ is_bottomless Are we wearing something that covers our groin?
+ is_topless Are we wearing something that covers our chest?
+ keybind_parry Called from keybindings.
+ keybind_start_active_blocking Proc called by keybindings to start active blocking.
+ keybind_stop_active_blocking Proc called by keybindings to stop active blocking.
+ keybind_toggle_active_blocking Proc called by keybindings to toggle active blocking.
+ remove_movespeed_mod_immunities Unignores specific slowdowns. Accepts a list of slowdowns.
+ resist Resist verb for attempting to get out of whatever is restraining your motion. Gives you resist clickdelay if do_resist() returns true.
+ run_parry same return values as normal blocking, called with absolute highest priority in the block "chain".
+ run_parry_countereffects Run counterattack if any
+ shared_living_ui_distance public
+ subtle VERB CODE
+ subtler VERB CODE 2
+ subtler_table VERB CODE 3
+ toggle_admin_freeze Toggle admin frozen
+ toggle_admin_sleep Toggle admin sleeping
+ transfer_blood_to BLOOD TRANSFERS
+ unignore_slowdown Unignores all slowdowns that lack the IGNORE_NOSLOW flag.
+ update_size Returns false on failure
+ Var Details active_block_item
+
+
+
+
+
+ The item the user is actively blocking with if any.
active_parry_item
+
+
+
+
+
+ The itme the user is currently parrying with, if any.
+ Our block_parry_data for unarmed blocks/parries. Currently only used for parrying, as unarmed block isn't implemented yet. YOU MUST RUN [get_block_parry_data(this)] INSTEAD OF DIRECTLY ACCESSING!
buckle_message_cooldown
+
+
+
+
+
+ Next world.time when we can get the "you can't move while buckled to [thing]" message.
combat_flags
+
+
+
+
+
+ / CITADEL STATION COMBAT ////
+See __DEFINES/combat.dm
combatmessagecooldown
+
+
+
+
+
+ Next world.time when we will show a visible message on entering combat mode voluntarily again.
+ Default
last_autoparry
+
+
+
+
+
+ Last autoparry
navigate_cooldown
+
+
+
+
+
+ Cooldown of the navigate() verb.
next_preyloop
+
+
+
+
+
+ Next time vore sounds get played for the prey, do not change manually as it is intended to be set automatically
parry_end_time_last
+
+
+
+
+
+ world.time of last parry end
parry_start_time
+
+
+
+
+
+ world.time of parry action start
+ Current parry effect.
parrying
+
+
+
+
+
+ Whether or not the user is in the middle of an active parry. Set to UNARMED_PARRY , [ITEM_PARRY], [MARTIAL_PARRY] if parrying.
+ If we're a pugilist
stamina_buffer
+
+
+
+
+
+ Our stamina buffer
stamina_buffer_last_use
+
+
+
+
+
+ Last time we used stamina buffer
stamina_buffer_regen_last
+
+
+
+
+
+ Last time stamina buffer regen was done
stamina_buffer_regen_mod
+
+
+
+
+
+ Stamina buffer regen modifier
successful_parries
+
+
+
+
+
+ Successful parries within the current parry cycle. It's a list of efficiency percentages.
successful_parry_counterattacks
+
+
+
+
+
+ Current parry counterattacks. Makes sure we can only counterattack someone once per parry.
vore_organs
+
+
+
+
+
+ List of vore containers inside a mob
vore_selected
+
+
+
+
+
+ Default to no vore capability.
vore_smell
+
+
+
+
+
+ What the character smells like
vore_taste
+
+
+
+
+
+ What the character tastes like
Proc Details BiologicalLife(delta_time, times_fired)
+
+
+
+
+
+ Handles biological life processes like chemical metabolism, breathing, etc
+Returns TRUE or FALSE based on if we were interrupted. This is used by overridden variants to check if they should stop.
HealAllImmobilityUpTo(amount, updating, ignore_canstun)
+
+
+
+
+
+ Makes sure all 5 of the non-knockout immobilizing status effects are lower or equal to amount.
IsDazed()
+
+
+
+
+
+ DAZED
IsFrozen()
+
+
+
+
+
+ FROZEN
IsImmobilized()
+
+
+
+
+
+ IMMOBILIZED
IsKnockdown()
+
+
+
+
+
+ KNOCKDOWN
IsParalyzed()
+
+
+
+
+
+ PARALYZED
IsSleeping()
+
+
+
+
+
+ SLEEPING
IsStaggered()
+
+
+
+
+
+ STAGGERED
IsStun()
+
+
+
+
+
+ STUN
IsUnconscious()
+
+
+
+
+
+ UNCONSCIOUS
Life(seconds, times_fired)
+
+
+
+
+
+ Called by SSmobs at an interval of 2 seconds.
+Splits off into PhysicalLife() and BiologicalLife(). Override those instead of this.
PhysicalLife(seconds, times_fired)
+
+
+
+
+
+ Handles physical life processes like being on fire. Don't ask why this is considered "Life".
+Returns TRUE or FALSE based on if we were interrupted. This is used by overridden variants to check if they should stop.
RechargeStaminaBuffer(amount)
+
+
+
+
+
+ Boosts our stamina buffer by this much.
ShoveOffBalance(amount)
+
+
+
+
+
+ OFF BALANCE/SHOVIES
UpdateStaminaBuffer(updating_hud)
+
+
+
+
+
+ Updates our stamina buffer amount.
UseStaminaBuffer(amount, warn, considered_action)
+
+
+
+
+
+ Attempts to use an amount of stamina from our stamina buffer.
+Does not use anything if we don't have enough.
+Returns TRUE or FALSE based on if we have it.
active_block_effect_end()
+
+
+
+
+
+ Visual effect cleanup for starting a directional block
active_block_effect_start()
+
+
+
+
+
+ Visual effect setup for starting a directional block
active_parry_reflex_counter(/mob /living /owner, /atom /object, damage, attack_text, attack_type, armour_penetration, /mob /attacker, def_zone, /list/return_list, parry_efficiency, /list/effect_text)
+
+
+
+
+
+ Called when an attack is parried and block_parra_data indicates to use a proc to handle counterattack.
add_movespeed_mod_immunities(source, slowdown_type, update)
+
+
+
+
+
+ Ignores specific slowdowns. Accepts a list of slowdowns.
add_quirk(quirktype, spawn_effects)
+
+
+
+
+
+ DISABILITIES
add_stun_absorption(key, duration, priority, message, self_message, examine_message)
+
+
+
+
+
+ STUN ABSORPTION
apply_damage(damage, damagetype, def_zone, blocked, forced, spread_damage, wound_bonus, bare_wound_bonus, sharpness)
+
+
+
+
+
+ Applies damage to this mob
+Sends [COMSIG_MOB_APPLY_DAMAGE]
+Arguuments:
+
+damage - amount of damage
+damagetype - one of [BRUTE], [BURN], [TOX], [OXY], [CLONE], [STAMINA]
+def_zone - zone that is being hit if any
+blocked - armor value applied
+forced - bypass hit percentage
+spread_damage - used in overrides
+
+Returns TRUE if damage applied
attempt_auto_parry(/atom /object, damage, attack_text, attack_type, armour_penetration, /mob /attacker, def_zone, /list/return_list)
+
+
+
+
+
+ Attempts to automatically parry an attacker.
bleedDragAmount()
+
+
+
+
+
+ Returns how much blood we're losing from being dragged a tile, from [mob/living/proc/makeTrail]
can_move_under_living
+
+ whether or not we can slide under another living mob. defaults to if we're not dense. CanPass should check "overriding circumstances" like buckled mobs/having PASSMOB flag, etc.
change_gender()
+
+
+
+
+
+ Gender Change
check_orgasm
+
+ Acts properly if the given genital has orgasm modifiers
+Arguments:
+
+genital: Genital to check for any orgasm modifiers.
+ check_unarmed_parry_activation_special()
+
+
+
+
+
+ Check if we can unarmed parry
cure_blind(source)
+
+
+
+
+
+ TRAIT PROCS
determine_parry_method(silent, autoparry)
+
+
+
+
+
+ Massive snowflake proc for getting something to parry with.
+@return list of [method, data, tool], where method is the parry method define, data is the block_parry_data var that must be run through return_block_parry_data, and tool is the concept/object/martial art/etc used.
do_facefart
+
+ U N H O L Y
do_resist()
+
+
+
+
+
+ The actual proc for resisting. Return TRUE to give CLICK_CD_RESIST clickdelay.
do_run_block(real_attack, /atom /object, damage, attack_text, attack_type, armour_penetration, /mob /attacker, def_zone, /list/return_list, attack_direction)
+
+
+
+
+
+
+The actual proc for block checks. DO NOT USE THIS DIRECTLY UNLESS YOU HAVE VERY GOOD REASON TO. To reduce copypaste for differences between handling for real attacks and virtual checks.
+
+
+ electrocute_act(shock_damage, source, siemens_coeff, flags)
+
+
+
+
+
+ As the name suggests, this should be called to apply electric shocks.
end_parry_sequence()
+
+
+
+
+
+ Called via timer when the parry sequence ends.
find_active_block_item()
+
+
+
+
+
+ Gets the first item we can that can block, but if that fails, default to active held item.COMSIG_ENABLE_COMBAT_MODE
find_backup_parry_item()
+
+
+
+
+
+ Tries to find a backup parry item.
+Does not look at active held item.
find_nearest_stair_or_ladder(direction)
+
+
+
+
+
+ Finds nearest ladder or staircase either up or down.
+Arguments:
+
+direction - UP or DOWN.
+ get_blocking_items()
+
+
+
+
+
+ Gets an unsortedlist of objects to run block checks on. List must have associative values for priorities!
get_equipped_items(include_pockets)
+
+
+
+
+
+ Used to return a list of equipped items on a mob; does not include held items (use get_all_gear)
+Argument(s):
+
+Optional - include_pockets (TRUE/FALSE), whether or not to include the pockets and suit storage in the returned list
+
+ Returns the fluid modifier if the genital has one.
+Arguments:
+
+amount: Amount of fluid to be released.
+genital: Genital to check for any fluid modifiers.
+ get_parry_data()
+
+
+
+
+
+ Gets the datum/block_parry_data we're going to use to parry.
get_parry_stage()
+
+
+
+
+
+ Gets the stage of our parry sequence we're currently in.
get_parry_time()
+
+
+
+
+
+ Gets the current decisecond "frame" of an active parry.
handle_block_parry(seconds)
+
+
+
+
+
+ Called every life tick to handle blocking/parrying effects.
handle_parry_ending_effects
+
+ Handles ending effects for parrying.
handle_parry_starting_effects
+
+ Handles starting effects for parrying.
handle_post_sex
+
+ Handles the sex, if cumming returns true.
hasparasites()
+
+
+
+
+
+ parasite tracking/finding procs
hud_set_nanite_indicator()
+
+
+
+
+
+ Diagnostic HUDs!
ignore_slowdown(source)
+
+
+
+
+
+ Ignores all slowdowns that lack the IGNORE_NOSLOW flag.
initiate_parry_sequence(silent, /list/override_method_data)
+
+
+
+
+
+ Initiates a parrying sequence.
+ Are we wearing something that covers our shoes?
is_bottomless()
+
+
+
+
+
+ Are we wearing something that covers our groin?
is_topless()
+
+
+
+
+
+ Are we wearing something that covers our chest?
keybind_parry()
+
+
+
+
+
+ Called from keybindings.
keybind_start_active_blocking()
+
+
+
+
+
+ Proc called by keybindings to start active blocking.
keybind_stop_active_blocking()
+
+
+
+
+
+ Proc called by keybindings to stop active blocking.
keybind_toggle_active_blocking()
+
+
+
+
+
+ Proc called by keybindings to toggle active blocking.
remove_movespeed_mod_immunities(source, slowdown_type, update)
+
+
+
+
+
+ Unignores specific slowdowns. Accepts a list of slowdowns.
resist()
+
+
+
+
+
+ Resist verb for attempting to get out of whatever is restraining your motion. Gives you resist clickdelay if do_resist() returns true.
run_parry(/atom /object, damage, attack_text, attack_type, armour_penetration, /mob /attacker, def_zone, /list/return_list, allow_auto)
+
+
+
+
+
+ same return values as normal blocking, called with absolute highest priority in the block "chain".
run_parry_countereffects(/atom /object, damage, attack_text, attack_type, armour_penetration, /mob /attacker, def_zone, /list/return_list, parry_efficiency, /datum /block_parry_data /data)
+
+
+
+
+
+ Run counterattack if any
shared_living_ui_distance
+
+ public
+Distance versus interaction check.
+required src_object atom/movable The object which owns the UI.
+return UI_state The state of the UI.
subtle()
+
+
+
+
+
+ VERB CODE
subtler()
+
+
+
+
+
+ VERB CODE 2
subtler_table()
+
+
+
+
+
+ VERB CODE 3
toggle_admin_freeze
+
+ Toggle admin frozen
toggle_admin_sleep
+
+ Toggle admin sleeping
transfer_blood_to
+
+ BLOOD TRANSFERS
unignore_slowdown(source)
+
+
+
+
+
+ Unignores all slowdowns that lack the IGNORE_NOSLOW flag.
update_size(new_size, cur_size)
+
+
+
+
+
+ Returns false on failure
+
+
+
diff --git a/mob/living/brain.html b/mob/living/brain.html
new file mode 100644
index 0000000000000..082788e6e7277
--- /dev/null
+++ b/mob/living/brain.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+ /mob/living/brain - SPLURT Station 13
+
+
+
+
+
+
+Proc Details blind_eyes()
+
+
+
+
+
+ EYE_BLIND
blur_eyes()
+
+
+
+
+
+ EYE_BLURRY
+
+
+
diff --git a/mob/living/carbon.html b/mob/living/carbon.html
new file mode 100644
index 0000000000000..d00bcfe93c763
--- /dev/null
+++ b/mob/living/carbon.html
@@ -0,0 +1,260 @@
+
+
+
+
+
+
+ /mob/living/carbon - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ all_scars All of the scars a carbon has afflicted throughout their limbs
+ all_wounds All of the wounds a carbon has afflicted throughout their limbs
+ cold_protection Protection (insulation) from the cold, Value 0-1 corresponding to the percentage of protection
+ heat_protection Protection (insulation) from the heat, Value 0-1 corresponding to the percentage of protection
+ transformation_timer Timer id of any transformation Procs
+ adjustOrganLoss
+ check_self_for_injuries Check ourselves to see if we've got any shrapnel, return true if we do. This is a much simpler version of what humans do, we only indicate we're checking ourselves if there's actually shrapnel
+ check_stimulation Returns a lust value depending if the genital has a lust modifier.
+ check_virus Medical HUD! Basic mode needs suit sensors on.
+ doSprintLossTiles Sprint buffer
+ electrocute_act Adds to the parent by also adding functionality to propagate shocks through pulling and doing some fluff effects.
+ generate_fake_scars generate_fake_scars()- for when you want to scar someone, but you don't want to hurt them first. These scars don't count for temporal scarring (hence, fake)
+ genital_menu Attempts to open the tgui menu
+ getOrganLoss
+ get_biological_state get_biological_state is a helper used to see what kind of wounds we roll for. By default we just assume carbons (read:monkeys) are flesh and bone, but humans rely on their species datums
+ get_traumas TRAUMAS
+ get_wounded_bodyparts Returns a list of bodyparts with wounds (in case someone has a wound on an otherwise fully healed limb)
+ give Proc called when offering an item to another player
+ humanize Humanize
+ immortality For the Wishgranter
+ remove_all_embedded_objects Remove all embedded objects from all limbs on the carbon mob
+ remove_embedded_object Remove a specific embedded item from the carbon mob
+ secondary_shock Called slightly after electrocute act to reduce jittering and apply a secondary stun.
+ setOrganLoss
+ take Proc called when the player clicks the give alert
+ take_overall_damage damage MANY bodyparts, in random order
+ Var Details all_scars
+
+
+
+
+
+ All of the scars a carbon has afflicted throughout their limbs
all_wounds
+
+
+
+
+
+ All of the wounds a carbon has afflicted throughout their limbs
cold_protection
+
+
+
+
+
+ Protection (insulation) from the cold, Value 0-1 corresponding to the percentage of protection
heat_protection
+
+
+
+
+
+ Protection (insulation) from the heat, Value 0-1 corresponding to the percentage of protection
+ Timer id of any transformation
Proc Details adjustOrganLoss(slot, amount, maximum)
+
+
+
+
+
+
+adjustOrganLoss
+
+inputs: slot (organ slot, like ORGAN_SLOT_HEART), amount (damage to be done), and maximum (currently an arbitrarily large number, can be set so as to limit damage)
+outputs:
+description: If an organ exists in the slot requested, and we are capable of taking damage (we don't have GODMODE on), call the damage proc on that organ.
+
+
+ check_self_for_injuries()
+
+
+
+
+
+ Check ourselves to see if we've got any shrapnel, return true if we do. This is a much simpler version of what humans do, we only indicate we're checking ourselves if there's actually shrapnel
check_stimulation(amount, genital)
+
+
+
+
+
+ Returns a lust value depending if the genital has a lust modifier.
+Arguments:
+
+amount: Amount of lust given.
+genital: Genital to check for any lust modifiers.
+TODO - TURN THE TRAITS INTO COMPONENTS
+ check_virus()
+
+
+
+
+
+ Medical HUD! Basic mode needs suit sensors on.
doSprintLossTiles(tiles)
+
+
+
+
+
+ Sprint buffer
electrocute_act(shock_damage, source, siemens_coeff, flags)
+
+
+
+
+
+ Adds to the parent by also adding functionality to propagate shocks through pulling and doing some fluff effects.
generate_fake_scars(num_scars, forced_type)
+
+
+
+
+
+ generate_fake_scars()- for when you want to scar someone, but you don't want to hurt them first. These scars don't count for temporal scarring (hence, fake)
+If you want a specific wound scar, pass that wound type as the second arg, otherwise you can pass a list like WOUND_LIST_SLASH to generate a random cut scar.
+Arguments:
+
+num_scars- A number for how many scars you want to add
+forced_type- Which wound or category of wounds you want to choose from, WOUND_LIST_BLUNT, WOUND_LIST_SLASH, or WOUND_LIST_BURN (or some combination). If passed a list, picks randomly from the listed wounds. Defaults to all 3 types
+
+ Attempts to open the tgui menu
getOrganLoss(slot)
+
+
+
+
+
+
+getOrganLoss
+
+inputs: slot (organ slot, like ORGAN_SLOT_HEART)
+outputs: organ damage
+description: If an organ exists in the slot requested, return the amount of damage that organ has
+
+
+ get_biological_state()
+
+
+
+
+
+ get_biological_state is a helper used to see what kind of wounds we roll for. By default we just assume carbons (read:monkeys) are flesh and bone, but humans rely on their species datums
+go look at the species def for more info /datum/species/proc/get_biological_state
get_traumas()
+
+
+
+
+
+ TRAUMAS
get_wounded_bodyparts(brute, burn, stamina, status)
+
+
+
+
+
+ Returns a list of bodyparts with wounds (in case someone has a wound on an otherwise fully healed limb)
give(target)
+
+
+
+
+
+ Proc called when offering an item to another player
+This handles creating an alert and adding an overlay to it
humanize(tr_flags)
+
+
+
+
+
+ Humanize
immortality()
+
+
+
+
+
+ For the Wishgranter
remove_all_embedded_objects()
+
+
+
+
+
+ Remove all embedded objects from all limbs on the carbon mob
remove_embedded_object
+
+ Remove a specific embedded item from the carbon mob
secondary_shock(should_stun)
+
+
+
+
+
+ Called slightly after electrocute act to reduce jittering and apply a secondary stun.
setOrganLoss(slot, amount)
+
+
+
+
+
+
+ Proc called when the player clicks the give alert
+Handles checking if the player taking the item has open slots and is in range of the offerer
+Also deals with the actual transferring of the item to the players hands
+Arguments:
+
+offerer - The person giving the original item
+I - The item being given by the offerer
+ take_overall_damage(brute, burn, stamina, updating_health, required_status)
+
+
+
+
+
+ damage MANY bodyparts, in random order
+
+
+
diff --git a/mob/living/carbon/alien.html b/mob/living/carbon/alien.html
new file mode 100644
index 0000000000000..ad5dcac509b64
--- /dev/null
+++ b/mob/living/carbon/alien.html
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+ /mob/living/carbon/alien - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ can_ventcrawl Whether they can ventcrawl; this is set individually for 'humanoid' and 'royal' types
+'royal' types (Praetorian, Queen) cannot ventcrawl
+ meleeKnockdownPower How much power they have for DefaultCombatKnockdown when attacking humans
+ meleeSlashHumanPower How much brute damage without armor piercing they do against mobs in melee
+ meleeSlashSAPower How much brute damage they do to simple animals Procs
+ toggle_gender Handles modular code for Xenomorph features
+ Var Details can_ventcrawl
+
+
+
+
+
+ Whether they can ventcrawl; this is set individually for 'humanoid' and 'royal' types
+'royal' types (Praetorian, Queen) cannot ventcrawl
meleeKnockdownPower
+
+
+
+
+
+ How much power they have for DefaultCombatKnockdown when attacking humans
meleeSlashHumanPower
+
+
+
+
+
+ How much brute damage without armor piercing they do against mobs in melee
meleeSlashSAPower
+
+
+
+
+
+ How much brute damage they do to simple animals
Proc Details toggle_gender()
+
+
+
+
+
+ Handles modular code for Xenomorph features
+
+
+
diff --git a/mob/living/carbon/human.html b/mob/living/carbon/human.html
new file mode 100644
index 0000000000000..423737c88cc73
--- /dev/null
+++ b/mob/living/carbon/human.html
@@ -0,0 +1,190 @@
+
+
+
+
+
+
+ /mob/living/carbon/human - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details afk_thefts
+
+
+
+
+
+ When an braindead player has their equipment fiddled with, we log that info here for when they come back so they know who took their ID while they were DC'd for 30 seconds
combat_flags
+
+
+
+
+
+ Enable stamina combat
grad_color
+
+
+
+
+
+ Colour used for the hair gradient.
grad_style
+
+
+
+
+
+ Style used for the hair gradient.
Proc Details canUseHUD()
+
+
+
+
+
+ HUDs
clean_lips()
+
+
+
+
+
+ A wrapper for mob/living/carbon/human/proc/update_lips that tells us if there were lip styles to change
clothingonpart
+
+ Get all the clothing on a specific body part
copy_clothing_prefs
+
+ copies over clothing preferences like underwear to another human
electrocute_act(shock_damage, source, siemens_coeff, flags)
+
+
+
+
+
+ Calculates the siemens coeff based on clothing and species, can also restart hearts.
+ For use formatting all of the scars this human has for saving for persistent scarring
get_equipped_items(include_pockets)
+
+
+
+
+
+ Used to return a list of equipped items on a human mob; does not include held items (use get_all_gear)
+Argument(s):
+
+Optional - include_pockets (TRUE/FALSE), whether or not to include the pockets and suit storage in the returned list
+ handle_fire()
+
+
+
+
+
+ FIRE CODE
load_scar(scar_line)
+
+
+
+
+
+ Takes a single scar from the persistent scar loader and recreates it from the saved data
sec_hud_set_ID()
+
+
+
+
+
+ Security HUDs! Basic mode shows only the job.
set_antag_target_indicator()
+
+
+
+
+
+ Mob's target prefs
socks_hidden()
+
+
+
+
+
+ Proc to check if socks are hidden.
something_horrible()
+
+
+
+
+
+ DNA HELPER-PROCS
spec_trait_examine_font()
+
+
+
+
+
+ spec_trait_examine_font()
+This gets a humanoid's special examine font, which is used to color their species name during examine / health analyzing.
+The first of these that applies is returned.
+Returns:
+
+Metallic font if robotic
+Cyan if a toxinlover
+Purple if plasmaperson
+Rock / Brownish if a golem
+Green if none of the others apply (aka, generic organic)
+ undershirt_hidden()
+
+
+
+
+
+ Proc to check if undershirt is hidden.
underwear_hidden()
+
+
+
+
+
+ Proc to check if underwear is hidden.
update_lips(new_style, new_colour, apply_trait)
+
+
+
+
+
+ Used to update the makeup on a human and apply/remove lipstick traits, then store/unstore them on the head object in case it gets severed
+
+
+
diff --git a/mob/living/silicon.html b/mob/living/silicon.html
new file mode 100644
index 0000000000000..c72a2769706f9
--- /dev/null
+++ b/mob/living/silicon.html
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+ /mob/living/silicon - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ emagged Whether we have been emagged Procs
+ get_ui_access Returns a UI status representing this silicon's capability to access
+the given source. Called by ui_status_silicon_has_access
.
+ Var Details emagged
+
+
+
+
+
+ Whether we have been emagged
Proc Details get_ui_access
+
+ Returns a UI status representing this silicon's capability to access
+the given source. Called by ui_status_silicon_has_access
.
+
+
+
diff --git a/mob/living/silicon/ai.html b/mob/living/silicon/ai.html
new file mode 100644
index 0000000000000..313e7d2b77d45
--- /dev/null
+++ b/mob/living/silicon/ai.html
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+ /mob/living/silicon/ai - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ alert_control Station alert datum for showing alerts UI
+ is_anchored whether AI is anchored or not, used for checks
+ lastloc remember AI's last location
+ opened whether its cover is opened, so you can wirecut it for deconstruction
+ posibrain_inside whether its mmi is a posibrain or regular mmi when going ai mob to ai core structure Procs
+ wrench_act emags access panel lock, so you can crowbar it without robotics access or consent
+ Var Details alert_control
+
+
+
+
+
+ Station alert datum for showing alerts UI
is_anchored
+
+
+
+
+
+ whether AI is anchored or not, used for checks
lastloc
+
+
+
+
+
+ remember AI's last location
opened
+
+
+
+
+
+ whether its cover is opened, so you can wirecut it for deconstruction
posibrain_inside
+
+
+
+
+
+ whether its mmi is a posibrain or regular mmi when going ai mob to ai core structure
Proc Details wrench_act
+
+ emags access panel lock, so you can crowbar it without robotics access or consent
+
+
+
diff --git a/mob/living/silicon/robot.html b/mob/living/silicon/robot.html
new file mode 100644
index 0000000000000..0c32a043579f2
--- /dev/null
+++ b/mob/living/silicon/robot.html
@@ -0,0 +1,435 @@
+
+
+
+
+
+
+ /mob/living/silicon/robot - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ can_ride_typecache What types of mobs are allowed to ride/buckle to this mob
+ disabled_modules For checking which modules are disabled or not.
+ ident Random serial number generated for each cyborg upon its initialization
+ lampButton Lamp button reference
+ lamp_color Set lamp color
+ lamp_doom Set to true if a doomsday event is locking our lamp to on and RED
+ lamp_enabled If the lamp is turned on
+ lamp_functional If the lamp isn't broken.
+ lamp_intensity Lamp brightness. Starts at 3, but can be 1 - 5.
+ modularInterface The reference to the built-in tablet that borgs carry.
+ opened If this is a path, this gets created as an object in Initialize.
+ previous_health the last health before updating - to check net change in health
+ vtec_disabled vtec shorted out Procs
+ Exited Checking Exited() to detect if a hat gets up and walks off.
+Drones and pAIs might do this, after all.
+ activated Checks if the item is currently in a slot.
+ add_to_upgrades Moves the upgrade inside the robot and registers relevant signals.
+ apply_upgrade Called when a mob uses an upgrade on an open borg. Checks to make sure the upgrade can be applied
+ break_all_cyborg_slots Breaks all of a cyborg's slots.
+ break_cyborg_slot Breaks the slot number, changing the icon.
+ cycle_modules Cycles through the list of enabled modules, deselecting the current one and selecting the next one.
+ deploy_init deploy_init: Deploys AI unit into AI shell
+ deselect_module Deselects the module in the slot module_num.
+Arguments
+ dump_into_mmi Dumps the current occupant of the cyborg into an MMI at the passed location
+Returns the borg's MMI on success
+ equip_module_to_slot What's the first free slot for the borg?
+Is passed an item and a module slot. Equips the item to that borg slot.
+ get_active_held_item Returns the thing in our active hand (whatever is in our active module-slot, in this case)
+ get_selected_module The number of module slots we're checking
+Returns the slot number of the selected module, or zero if no modules are selected.
+ is_invalid_module_number Checks if the provided module number is a valid number.
+ logevent Records an IC event log entry in the cyborg's internal tablet.
+ make_shell make_shell: Makes an AI shell out of a cyborg unit
+ observer_screen_update Updates the observers's screens with cyborg itemss.
+Arguments
+ on_upgrade_deleted Called when an applied upgrade is deleted.
+ remove_from_upgrades Called when an upgrade is moved outside the robot. So don't call this directly, use forceMove etc.
+ repair_all_cyborg_slots Repairs all slots. Unbroken slots are unaffected.
+ repair_cyborg_slot Repairs the slot number, updating the icon.
+ revert_shell revert_shell: Reverts AI shell back into a normal cyborg unit
+ select_module Selects the module in the slot module_num.
+Arguments
+ smash_headlamp Handles headlamp smashing
+ toggle_gender Allows "cyborg" players to change gender at will - Modularised here
+ toggle_headlamp Handles headlamp toggling, disabling, and color setting.
+ toggle_module Toggles selection of the module in the slot module_num.
+Arguments
+ uneq_active Unequips the active held item, if there is one.
+ uneq_all Unequips all held items.
+ unequip_module_from_slot Unequips item item_module from slot module_num. Deletes it if delete_after = TRUE.
+ update_icons this is bad code
+ update_sight the current percent health of the robot (-1 to 1)
+ Var Details can_ride_typecache
+
+
+
+
+
+ What types of mobs are allowed to ride/buckle to this mob
disabled_modules
+
+
+
+
+
+ For checking which modules are disabled or not.
ident
+
+
+
+
+
+ Random serial number generated for each cyborg upon its initialization
+ Lamp button reference
lamp_color
+
+
+
+
+
+ Set lamp color
lamp_doom
+
+
+
+
+
+ Set to true if a doomsday event is locking our lamp to on and RED
lamp_enabled
+
+
+
+
+
+ If the lamp is turned on
lamp_functional
+
+
+
+
+
+ If the lamp isn't broken.
lamp_intensity
+
+
+
+
+
+ Lamp brightness. Starts at 3, but can be 1 - 5.
+ The reference to the built-in tablet that borgs carry.
opened
+
+
+
+
+
+ If this is a path, this gets created as an object in Initialize.
previous_health
+
+
+
+
+
+ the last health before updating - to check net change in health
vtec_disabled
+
+
+
+
+
+ vtec shorted out
Proc Details
+ Checking Exited() to detect if a hat gets up and walks off.
+Drones and pAIs might do this, after all.
activated
+
+ Checks if the item is currently in a slot.
+If the item is found in a slot, this returns TRUE. Otherwise, it returns FALSE
+Modified to accept items inside of grippers, used for code\modules\tgui\states\hands.dm:27
+Arguments
+
+item_module - the item being checked
+ add_to_upgrades
+
+ Moves the upgrade inside the robot and registers relevant signals.
apply_upgrade
+
+ Called when a mob uses an upgrade on an open borg. Checks to make sure the upgrade can be applied
break_all_cyborg_slots()
+
+
+
+
+
+ Breaks all of a cyborg's slots.
break_cyborg_slot(module_num)
+
+
+
+
+
+ Breaks the slot number, changing the icon.
+Arguments
+
+module_num - the slot number being repaired.
+ cycle_modules()
+
+
+
+
+
+ Cycles through the list of enabled modules, deselecting the current one and selecting the next one.
+ deploy_init: Deploys AI unit into AI shell
+Arguments:
+
+AI - AI unit that initiated the deployment into the AI shell
+ deselect_module(module_num)
+
+
+
+
+
+ Deselects the module in the slot module_num.
+Arguments
+
+module_num - the slot number being de-selected
+ dump_into_mmi(/atom /at_location)
+
+
+
+
+
+ Dumps the current occupant of the cyborg into an MMI at the passed location
+Returns the borg's MMI on success
equip_module_to_slot(/obj /item /item_module, module_num)
+
+
+
+
+
+ What's the first free slot for the borg?
+Is passed an item and a module slot. Equips the item to that borg slot.
+Arguments
+
+item_module - the item being equipped to a slot
+module_num - the slot number being equipped to.
+ get_active_held_item(get_gripper)
+
+
+
+
+
+ Returns the thing in our active hand (whatever is in our active module-slot, in this case)
+Arguments
+
+get_gripper - If the active module is a gripper, should we return the gripper or the contained item? (if the gripper contains nothing, returns the gripper anyways)
+ get_selected_module()
+
+
+
+
+
+ The number of module slots we're checking
+Returns the slot number of the selected module, or zero if no modules are selected.
is_invalid_module_number(module_num, check_all_slots)
+
+
+
+
+
+ Checks if the provided module number is a valid number.
+If the number is between 1 and 3 (if check_all_slots is true) or between 1 and the number of disabled
+modules (if check_all_slots is false), then it returns FALSE. Otherwise, it returns TRUE.
+Arguments
+
+module_num - the passed module num that is checked for validity.
+check_all_slots - TRUE = the proc checks all slots | FALSE = the proc only checks un-disabled slots
+ logevent(string)
+
+
+
+
+
+ Records an IC event log entry in the cyborg's internal tablet.
+Creates an entry in the borglog list of the cyborg's internal tablet, listing the current
+in-game time followed by the message given. These logs can be seen by the cyborg in their
+BorgUI tablet app. By design, logging fails if the cyborg is dead.
+Arguments:
+arg1: a string containing the message to log.
+ make_shell: Makes an AI shell out of a cyborg unit
+Arguments:
+
+board - B.O.R.I.S. module board used for transforming the cyborg into AI shell
+ observer_screen_update
+
+ Updates the observers's screens with cyborg itemss.
+Arguments
+
+item_module - the item being added or removed from the screen
+add - whether or not the item is being added, or removed.
+ on_upgrade_deleted
+
+ Called when an applied upgrade is deleted.
remove_from_upgrades
+
+ Called when an upgrade is moved outside the robot. So don't call this directly, use forceMove etc.
repair_all_cyborg_slots()
+
+
+
+
+
+ Repairs all slots. Unbroken slots are unaffected.
repair_cyborg_slot(module_num)
+
+
+
+
+
+ Repairs the slot number, updating the icon.
+Arguments
+
+module_num - the module number being repaired.
+ revert_shell()
+
+
+
+
+
+ revert_shell: Reverts AI shell back into a normal cyborg unit
select_module(module_num)
+
+
+
+
+
+ Selects the module in the slot module_num.
+Arguments
+
+module_num - the slot number being selected
+ smash_headlamp()
+
+
+
+
+
+ Handles headlamp smashing
+When called (such as by the shadowperson lighteater's attack), this proc will break the borg's headlamp
+and then call toggle_headlamp to disable the light. It also plays a sound effect of glass breaking, and
+tells the borg what happened to its chat. Broken lights can be repaired by using a flashlight on the borg.
toggle_gender()
+
+
+
+
+
+ Allows "cyborg" players to change gender at will - Modularised here
toggle_headlamp(turn_off, update_color)
+
+
+
+
+
+ Handles headlamp toggling, disabling, and color setting.
+The initial if statment is a bit long, but the gist of it is that should the lamp be on AND the update_color
+arg be true, we should simply change the color of the lamp but not disable it. Otherwise, should the turn_off
+arg be true, the lamp already be enabled, any of the normal reasons the lamp would turn off happen, or the
+update_color arg be passed with the lamp not on, we should set the lamp off. The update_color arg is only
+ever true when this proc is called from the borg tablet, when the color selection feature is used.
+Arguments:
+
+arg1 - turn_off, if enabled will force the lamp into an off state (rather than toggling it if possible)
+arg2 - update_color, if enabled, will adjust the behavior of the proc to change the color of the light if it is already on.
+ toggle_module(module_num)
+
+
+
+
+
+ Toggles selection of the module in the slot module_num.
+Arguments
+
+module_num - the slot number being toggled
+ uneq_active()
+
+
+
+
+
+ Unequips the active held item, if there is one.
+Will always consider dropping gripper contents first.
uneq_all()
+
+
+
+
+
+ Unequips all held items.
unequip_module_from_slot(/obj /item /item_module, module_num)
+
+
+
+
+
+ Unequips item item_module from slot module_num. Deletes it if delete_after = TRUE.
+Arguments
+
+item_module - the item being unequipped
+module_num - the slot number being unequipped.
+ update_icons()
+
+
+
+
+
+ this is bad code
update_sight()
+
+
+
+
+
+ the current percent health of the robot (-1 to 1)
+
+
+
diff --git a/mob/living/simple_animal.html b/mob/living/simple_animal.html
new file mode 100644
index 0000000000000..ee92c05f974a5
--- /dev/null
+++ b/mob/living/simple_animal.html
@@ -0,0 +1,374 @@
+
+
+
+
+
+
+ /mob/living/simple_animal - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ AIStatus The Status of our AI, can be set to AI_ON (On, usual processing), AI_IDLE (Will not process, but will return to AI_ON if an enemy comes near), AI_OFF (Off, Not processing ever), AI_Z_OFF (Temporarily off due to nonpresence of players).
+ access_card Innate access uses an internal ID card.
+ animal_species Sorry, no spider+corgi buttbabies.
+ armour_penetration How much armour they ignore, as a flat reduction from the targets armour value.
+ atmos_requirements Atmos effect - Yes, you can make creatures that require plasma or co2 to survive. N2O is a trace gas and handled separately, hence why it isn't here. It'd be hard to add it. Hard and me don't mix (Yes, yes make all the dick jokes you want with that.) - Errorage
+ attack_verb_continuous Attacking verb in present continuous tense.
+ attack_verb_simple Attacking verb in present simple tense.
+ attacked_sound Played when someone punches the creature.
+ blood_volume How much blud it has for bloodsucking
+ buffed In the event that you want to have a buffing effect on the mob, but don't want it to stack with other effects, any outside force that applies a buff to a simple mob should at least set this to TRUE, so we have something to check against.
+ can_have_ai once we have become sentient, we can never go back.
+ childtype Hot simple_animal baby making vars.
+ damage_coeff 1 for full damage , 0 for none , -1 for 1:1 heal from that source.
+ death_sound The sound played on death.
+ del_on_death causes mob to be deleted on death, useful for mobs that spawn lootable corpses.
+ dextrous If the creature has, and can use, hands.
+ emote_hear Hearable emotes
+ emote_see Unlike speak_emote, the list of things in this variable only show by themselves with no spoken text. IE: Ian barks, Ian yaps.
+ environment_smash Set to 1 to allow breaking of crates,lockers,racks,tables; 2 for walls; 3 for Rwalls.
+ footstep_type What kind of footstep this mob should have. Null if it shouldn't have any.
+ force_threshold Minimum force required to deal any damage.
+ friendly_verb_continuous Attacking, but without damage, verb in present continuous tense.
+ friendly_verb_simple Attacking, but without damage, verb in present simple tense.
+ gold_core_spawnable If the mob can be spawned with a gold slime core. HOSTILE_SPAWN are spawned with plasma, FRIENDLY_SPAWN are spawned with blood.
+ healable Healable by medical stacks? Defaults to yes.
+ icon_dead icon when the animal is dead. Don't use animated icons for this.
+ icon_gib We only try to show a gibbing animation if this exists.
+ loot list of things spawned at mob's loc when it dies.
+ melee_damage_lower LETTING SIMPLE ANIMALS ATTACK? WHAT COULD GO WRONG. Defaults to zero so Ian can still be cuddly.
+ melee_damage_type Damage type of a simple mob's melee attack, should it do damage.
+ minbodytemp Temperature effect.
+ my_z I don't want to confuse this with client registered_z.
+ obj_damage How much damage this simple animal does to objects, if any.
+ response_disarm_continuous Disarm-intent verb in present continuous tense.
+ response_disarm_simple Disarm-intent verb in present simple tense.
+ response_harm_continuous Harm-intent verb in present continuous tense.
+ response_harm_simple Harm-intent verb in present simple tense.
+ response_help_continuous When someone interacts with the simple animal.
+Help-intent verb in present continuous tense.
+ response_help_simple Help-intent verb in present simple tense.
+ sentience_type Sentience type, for slime potions.
+ shouldwakeup convenience var for forcibly waking up an idling AI on next check.
+ speak_emote Emotes while speaking IE: Ian [emote], [text] -- Ian barks, "WOOF!". Spoken text is generated from the speak variable.
+ speed LETS SEE IF I CAN SET SPEEDS FOR SIMPLE MOBS WITHOUT DESTROYING EVERYTHING. Higher speed is slower, negative speed is faster.
+ stop_automated_movement Use this to temporarely stop random movement or to if you write special movement code for animals.
+ stop_automated_movement_when_pulled When set to 1 this stops the animal from moving when someone is pulling it.
+ tame Domestication.
+ unsuitable_atmos_damage This damage is taken when atmos doesn't fit all the requirements above.
+ wander Does the mob wander around when idle?
+ weather_immunities List of weather immunity traits that are then added on Initialize(), see traits.dm.
+ Var Details AIStatus
+
+
+
+
+
+ The Status of our AI, can be set to AI_ON (On, usual processing), AI_IDLE (Will not process, but will return to AI_ON if an enemy comes near), AI_OFF (Off, Not processing ever), AI_Z_OFF (Temporarily off due to nonpresence of players).
access_card
+
+
+
+
+
+ Innate access uses an internal ID card.
animal_species
+
+
+
+
+
+ Sorry, no spider+corgi buttbabies.
armour_penetration
+
+
+
+
+
+ How much armour they ignore, as a flat reduction from the targets armour value.
atmos_requirements
+
+
+
+
+
+ Atmos effect - Yes, you can make creatures that require plasma or co2 to survive. N2O is a trace gas and handled separately, hence why it isn't here. It'd be hard to add it. Hard and me don't mix (Yes, yes make all the dick jokes you want with that.) - Errorage
attack_verb_continuous
+
+
+
+
+
+ Attacking verb in present continuous tense.
attack_verb_simple
+
+
+
+
+
+ Attacking verb in present simple tense.
attacked_sound
+
+
+
+
+
+ Played when someone punches the creature.
blood_volume
+
+
+
+
+
+ How much blud it has for bloodsucking
buffed
+
+
+
+
+
+ In the event that you want to have a buffing effect on the mob, but don't want it to stack with other effects, any outside force that applies a buff to a simple mob should at least set this to TRUE, so we have something to check against.
can_have_ai
+
+
+
+
+
+ once we have become sentient, we can never go back.
childtype
+
+
+
+
+
+ Hot simple_animal baby making vars.
damage_coeff
+
+
+
+
+
+ 1 for full damage , 0 for none , -1 for 1:1 heal from that source.
death_sound
+
+
+
+
+
+ The sound played on death.
del_on_death
+
+
+
+
+
+ causes mob to be deleted on death, useful for mobs that spawn lootable corpses.
dextrous
+
+
+
+
+
+ If the creature has, and can use, hands.
emote_hear
+
+
+
+
+
+ Hearable emotes
emote_see
+
+
+
+
+
+ Unlike speak_emote, the list of things in this variable only show by themselves with no spoken text. IE: Ian barks, Ian yaps.
environment_smash
+
+
+
+
+
+ Set to 1 to allow breaking of crates,lockers,racks,tables; 2 for walls; 3 for Rwalls.
+ What kind of footstep this mob should have. Null if it shouldn't have any.
force_threshold
+
+
+
+
+
+ Minimum force required to deal any damage.
friendly_verb_continuous
+
+
+
+
+
+ Attacking, but without damage, verb in present continuous tense.
friendly_verb_simple
+
+
+
+
+
+ Attacking, but without damage, verb in present simple tense.
gold_core_spawnable
+
+
+
+
+
+ If the mob can be spawned with a gold slime core. HOSTILE_SPAWN are spawned with plasma, FRIENDLY_SPAWN are spawned with blood.
healable
+
+
+
+
+
+ Healable by medical stacks? Defaults to yes.
icon_dead
+
+
+
+
+
+ icon when the animal is dead. Don't use animated icons for this.
icon_gib
+
+
+
+
+
+ We only try to show a gibbing animation if this exists.
loot
+
+
+
+
+
+ list of things spawned at mob's loc when it dies.
melee_damage_lower
+
+
+
+
+
+ LETTING SIMPLE ANIMALS ATTACK? WHAT COULD GO WRONG. Defaults to zero so Ian can still be cuddly.
melee_damage_type
+
+
+
+
+
+ Damage type of a simple mob's melee attack, should it do damage.
minbodytemp
+
+
+
+
+
+ Temperature effect.
my_z
+
+
+
+
+
+ I don't want to confuse this with client registered_z.
obj_damage
+
+
+
+
+
+ How much damage this simple animal does to objects, if any.
response_disarm_continuous
+
+
+
+
+
+ Disarm-intent verb in present continuous tense.
response_disarm_simple
+
+
+
+
+
+ Disarm-intent verb in present simple tense.
response_harm_continuous
+
+
+
+
+
+ Harm-intent verb in present continuous tense.
response_harm_simple
+
+
+
+
+
+ Harm-intent verb in present simple tense.
response_help_continuous
+
+
+
+
+
+ When someone interacts with the simple animal.
+Help-intent verb in present continuous tense.
response_help_simple
+
+
+
+
+
+ Help-intent verb in present simple tense.
sentience_type
+
+
+
+
+
+ Sentience type, for slime potions.
shouldwakeup
+
+
+
+
+
+ convenience var for forcibly waking up an idling AI on next check.
speak_emote
+
+
+
+
+
+ Emotes while speaking IE: Ian [emote], [text] -- Ian barks, "WOOF!". Spoken text is generated from the speak variable.
speed
+
+
+
+
+
+ LETS SEE IF I CAN SET SPEEDS FOR SIMPLE MOBS WITHOUT DESTROYING EVERYTHING. Higher speed is slower, negative speed is faster.
stop_automated_movement
+
+
+
+
+
+ Use this to temporarely stop random movement or to if you write special movement code for animals.
stop_automated_movement_when_pulled
+
+
+
+
+
+ When set to 1 this stops the animal from moving when someone is pulling it.
tame
+
+
+
+
+
+ Domestication.
unsuitable_atmos_damage
+
+
+
+
+
+ This damage is taken when atmos doesn't fit all the requirements above.
wander
+
+
+
+
+
+ Does the mob wander around when idle?
weather_immunities
+
+
+
+
+
+ List of weather immunity traits that are then added on Initialize(), see traits.dm.
+
+
+
diff --git a/mob/living/simple_animal/bot.html b/mob/living/simple_animal/bot.html
new file mode 100644
index 0000000000000..eedaf19a0495a
--- /dev/null
+++ b/mob/living/simple_animal/bot.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /mob/living/simple_animal/bot - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ get_mode_ui Returns a status string about the bot's current status, if it's moving, manually controlled, or idle.
Proc Details get_mode_ui()
+
+
+
+
+
+ Returns a status string about the bot's current status, if it's moving, manually controlled, or idle.
+
+
+
diff --git a/mob/living/simple_animal/bot/floorbot.html b/mob/living/simple_animal/bot/floorbot.html
new file mode 100644
index 0000000000000..8644d5273fe77
--- /dev/null
+++ b/mob/living/simple_animal/bot/floorbot.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /mob/living/simple_animal/bot/floorbot - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ check_bot_working Checks a given turf to see if another floorbot is there, working as well.
Proc Details check_bot_working(/turf /active_turf)
+
+
+
+
+
+ Checks a given turf to see if another floorbot is there, working as well.
+
+
+
diff --git a/mob/living/simple_animal/drone.html b/mob/living/simple_animal/drone.html
new file mode 100644
index 0000000000000..e5c90ca0a28fa
--- /dev/null
+++ b/mob/living/simple_animal/drone.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /mob/living/simple_animal/drone - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ freeCamera This isn't currently needed since drones do jack shit with cameras. I hate this code so much
Proc Details freeCamera
+
+ This isn't currently needed since drones do jack shit with cameras. I hate this code so much
+
+
+
diff --git a/mob/living/simple_animal/hostile.html b/mob/living/simple_animal/hostile.html
new file mode 100644
index 0000000000000..554399b0948a5
--- /dev/null
+++ b/mob/living/simple_animal/hostile.html
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+ /mob/living/simple_animal/hostile - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ charge_cooldown Declares a cooldown for potential charges right off the bat.
+ charge_distance In a charge, how many tiles will the charger travel?
+ charge_frequency How often can the charging mob actually charge? Effects the cooldown between charges.
+ charge_state Tracks if the target is actively charging.
+ charger When a target is found, will the mob attempt to charge at it's target?
+ knockdown_time If the mob is charging, how long will it stun it's target on success, and itself on failure? Procs
+ AICanContinue AI Status
+ ListTargets HOSTILE MOB TARGETTING AND AGGRESSION
+ charge_end Proc that handles a charge attack after it's concluded.
+ death END HOSTILE MOB TARGETTING AND AGGRESSION
+ enter_charge Proc that handles a charge attack windup for a mob.
+ handle_charge_target Proc that throws the mob at the target after the windup.
+ throw_impact Proc that handles the charge impact of the charging mob.
+ Var Details charge_cooldown
+
+
+
+
+
+ Declares a cooldown for potential charges right off the bat.
charge_distance
+
+
+
+
+
+ In a charge, how many tiles will the charger travel?
charge_frequency
+
+
+
+
+
+ How often can the charging mob actually charge? Effects the cooldown between charges.
charge_state
+
+
+
+
+
+ Tracks if the target is actively charging.
charger
+
+
+
+
+
+ When a target is found, will the mob attempt to charge at it's target?
knockdown_time
+
+
+
+
+
+ If the mob is charging, how long will it stun it's target on success, and itself on failure?
Proc Details AICanContinue(/list/possible_targets)
+
+
+
+
+
+ AI Status
ListTargets()
+
+
+
+
+
+ HOSTILE MOB TARGETTING AND AGGRESSION
charge_end()
+
+
+
+
+
+ Proc that handles a charge attack after it's concluded.
death(gibbed)
+
+
+
+
+
+ END HOSTILE MOB TARGETTING AND AGGRESSION
enter_charge
+
+ Proc that handles a charge attack windup for a mob.
handle_charge_target
+
+ Proc that throws the mob at the target after the windup.
throw_impact
+
+ Proc that handles the charge impact of the charging mob.
+
+
+
diff --git a/mob/living/simple_animal/hostile/asteroid/elite/broodmother.html b/mob/living/simple_animal/hostile/asteroid/elite/broodmother.html
new file mode 100644
index 0000000000000..0f4876dbf3f80
--- /dev/null
+++ b/mob/living/simple_animal/hostile/asteroid/elite/broodmother.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+ /mob/living/simple_animal/hostile/asteroid/elite/broodmother - SPLURT Station 13
+
+
+
+
+
+
+A stronger, faster variation of the goliath. Has the ability to spawn baby goliaths, which it can later detonate at will.
+When it's health is below half, tendrils will spawn randomly around it. When it is below a quarter of health, this effect is doubled.
+It's attacks are as follows:
+
+Spawns a 3x3/plus shape of tentacles on the target location
+Spawns 2 baby goliaths on its tile, up to a max of 8. Children blow up when they die.
+The broodmother lets out a noise, and is able to move faster for 6.5 seconds.
+Summons your children around you.
+The broodmother is a fight revolving around stage control, as the activator has to manage the baby goliaths and the broodmother herself, along with all the tendrils.
+
+
+
+
diff --git a/mob/living/simple_animal/hostile/asteroid/elite/drakeling.html b/mob/living/simple_animal/hostile/asteroid/elite/drakeling.html
new file mode 100644
index 0000000000000..2a73c5a6e1ca9
--- /dev/null
+++ b/mob/living/simple_animal/hostile/asteroid/elite/drakeling.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /mob/living/simple_animal/hostile/asteroid/elite/drakeling - SPLURT Station 13
+
+
+
+
+
+
+A small drake/dragon.
+Has four attacks.
+
+Lava moat - Creates a moat of lava around themselves.
+Lava rivers - Creates lava rivers in all cardinal directions.
+Firespew - Spews fire in the direction they're facing.
+Fire moat - Spews fire in all directions.
+
+
+
+
diff --git a/mob/living/simple_animal/hostile/asteroid/elite/herald.html b/mob/living/simple_animal/hostile/asteroid/elite/herald.html
new file mode 100644
index 0000000000000..5fc995703a74c
--- /dev/null
+++ b/mob/living/simple_animal/hostile/asteroid/elite/herald.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+ /mob/living/simple_animal/hostile/asteroid/elite/herald - SPLURT Station 13
+
+
+
+
+
+
+A slow-moving projectile user with a few tricks up it's sleeve. Less unga-bunga than Colossus, with more cleverness in it's fighting style.
+As it's health gets lower, the amount of projectiles fired per-attack increases.
+It's attacks are as follows:
+
+Fires three projectiles in a a given direction.
+Fires a spread in every cardinal and diagonal direction at once, then does it again after a bit.
+Shoots a single, golden bolt. Wherever it lands, the herald will be teleported to the location.
+Spawns a mirror which reflects projectiles directly at the target.
+Herald is a more concentrated variation of the Colossus fight, having less projectiles overall, but more focused attacks.
+
+
+
+
diff --git a/mob/living/simple_animal/hostile/asteroid/elite/legionnaire.html b/mob/living/simple_animal/hostile/asteroid/elite/legionnaire.html
new file mode 100644
index 0000000000000..5b8ae2f8f9b52
--- /dev/null
+++ b/mob/living/simple_animal/hostile/asteroid/elite/legionnaire.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+ /mob/living/simple_animal/hostile/asteroid/elite/legionnaire - SPLURT Station 13
+
+
+
+
+
+
+A towering skeleton, embodying the power of Legion.
+As it's health gets lower, the head does more damage.
+It's attacks are as follows:
+
+Charges at the target after a telegraph, throwing them across the arena should it connect.
+Legionnaire's head detaches, attacking as it's own entity. Has abilities of it's own later into the fight. Once dead, regenerates after a brief period. If the skill is used while the head is off, it will be killed.
+Leaves a pile of bones at your location. Upon using this skill again, you'll swap locations with the bone pile.
+Spews a cloud of smoke from it's maw, wherever said maw is.
+A unique fight incorporating the head mechanic of legion into a whole new beast. Combatants will need to make sure the tag-team of head and body don't lure them into a deadly trap.
+
+
+
+
diff --git a/mob/living/simple_animal/hostile/asteroid/elite/minerpriest.html b/mob/living/simple_animal/hostile/asteroid/elite/minerpriest.html
new file mode 100644
index 0000000000000..7a55d5ab40deb
--- /dev/null
+++ b/mob/living/simple_animal/hostile/asteroid/elite/minerpriest.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /mob/living/simple_animal/hostile/asteroid/elite/minerpriest - SPLURT Station 13
+
+
+
+
+
+
+Kind of like BD miner's son trying to impress their dad.
+Has four attacks.
+
+Axe Slam - Slams his axe on the ground, hurting everyone is his direction in a 3 tile radius
+Summon Shambler - Summons a shambling miner that focuses on the target.
+Dash - Dashes in the target's general direction
+Axe Throw - Throws an axe at the target
+
+
+
+
diff --git a/mob/living/simple_animal/hostile/asteroid/elite/pandora.html b/mob/living/simple_animal/hostile/asteroid/elite/pandora.html
new file mode 100644
index 0000000000000..961fb10c6c1f6
--- /dev/null
+++ b/mob/living/simple_animal/hostile/asteroid/elite/pandora.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+ /mob/living/simple_animal/hostile/asteroid/elite/pandora - SPLURT Station 13
+
+
+
+
+
+
+A box with a similar design to the Hierophant which trades large, single attacks for more frequent smaller ones.
+As it's health gets lower, the time between it's attacks decrease.
+It's attacks are as follows:
+
+Fires hierophant blasts in a straight line. Can only fire in a straight line in 8 directions, being the diagonals and cardinals.
+Creates a box of hierophant blasts around the target. If they try to run away to avoid it, they'll very likely get hit.
+Teleports the pandora from one location to another, almost identical to Hierophant.
+Spawns a 5x5 AOE at the location of choice, spreading out from the center.
+Pandora's fight mirrors Hierophant's closely, but has stark differences in attack effects. Instead of long-winded dodge times and long cooldowns, Pandora constantly attacks the opponent, but leaves itself open for attack.
+
+
+
+
diff --git a/mob/living/simple_animal/hostile/asteroid/ice_demon.html b/mob/living/simple_animal/hostile/asteroid/ice_demon.html
new file mode 100644
index 0000000000000..c7291a1fa9286
--- /dev/null
+++ b/mob/living/simple_animal/hostile/asteroid/ice_demon.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /mob/living/simple_animal/hostile/asteroid/ice_demon - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details teleport_distance
+
+
+
+
+
+ Distance the demon will teleport from the target
+
+
+
diff --git a/mob/living/simple_animal/hostile/asteroid/ice_whelp.html b/mob/living/simple_animal/hostile/asteroid/ice_whelp.html
new file mode 100644
index 0000000000000..e8efb3322937c
--- /dev/null
+++ b/mob/living/simple_animal/hostile/asteroid/ice_whelp.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /mob/living/simple_animal/hostile/asteroid/ice_whelp - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details fire_range
+
+
+
+
+
+ How far the whelps fire can go
+
+
+
diff --git a/mob/living/simple_animal/hostile/asteroid/lobstrosity.html b/mob/living/simple_animal/hostile/asteroid/lobstrosity.html
new file mode 100644
index 0000000000000..d7af46f6e5851
--- /dev/null
+++ b/mob/living/simple_animal/hostile/asteroid/lobstrosity.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+ /mob/living/simple_animal/hostile/asteroid/lobstrosity - SPLURT Station 13
+
+
+
+
+
+
+Lobstrosities, the poster boy of charging AI mobs. Drops crab meat and bones.
+
+Outside of charging, it's intended behavior is that it is generally slow moving, but makes up for that with a knockdown attack to score additional hits.
+
+
+
diff --git a/mob/living/simple_animal/hostile/asteroid/polarbear.html b/mob/living/simple_animal/hostile/asteroid/polarbear.html
new file mode 100644
index 0000000000000..5625c002b1a8b
--- /dev/null
+++ b/mob/living/simple_animal/hostile/asteroid/polarbear.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /mob/living/simple_animal/hostile/asteroid/polarbear - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details aggressive_message_said
+
+
+
+
+
+ Message for when the polar bear starts to attack faster
+
+
+
diff --git a/mob/living/simple_animal/hostile/asteroid/wolf.html b/mob/living/simple_animal/hostile/asteroid/wolf.html
new file mode 100644
index 0000000000000..6149e2dd9de00
--- /dev/null
+++ b/mob/living/simple_animal/hostile/asteroid/wolf.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /mob/living/simple_animal/hostile/asteroid/wolf - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details retreat_message_said
+
+
+
+
+
+ Message for when the wolf decides to start running away
+
+
+
diff --git a/mob/living/simple_animal/hostile/carp/cayenne.html b/mob/living/simple_animal/hostile/carp/cayenne.html
new file mode 100644
index 0000000000000..c45baf512b92e
--- /dev/null
+++ b/mob/living/simple_animal/hostile/carp/cayenne.html
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+ /mob/living/simple_animal/hostile/carp/cayenne - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ colored_disk_mouth Location of the file storing disk overlays
+Colored disk mouth appearance for adding it as a mouth overlay
+ disky Keeping track of the nuke disk for the functionality of storing it.
+ Var Details colored_disk_mouth
+
+
+
+
+
+ Location of the file storing disk overlays
+Colored disk mouth appearance for adding it as a mouth overlay
disky
+
+
+
+
+
+ Keeping track of the nuke disk for the functionality of storing it.
+
+
+
diff --git a/mob/living/simple_animal/hostile/construct.html b/mob/living/simple_animal/hostile/construct.html
new file mode 100644
index 0000000000000..4221518bbabeb
--- /dev/null
+++ b/mob/living/simple_animal/hostile/construct.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /mob/living/simple_animal/hostile/construct - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ theme Theme controls color. THEME_CULT is red THEME_WIZARD is purple and THEME_HOLY is blue Procs
+ update_health_hud ui stuff
+ Var Details theme
+
+
+
+
+
+ Theme controls color. THEME_CULT is red THEME_WIZARD is purple and THEME_HOLY is blue
Proc Details update_health_hud()
+
+
+
+
+
+ ui stuff
+
+
+
diff --git a/mob/living/simple_animal/hostile/eldritch.html b/mob/living/simple_animal/hostile/eldritch.html
new file mode 100644
index 0000000000000..d644899bba70e
--- /dev/null
+++ b/mob/living/simple_animal/hostile/eldritch.html
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+ /mob/living/simple_animal/hostile/eldritch - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ spells_to_add Innate spells that are supposed to be added when a beast is created Procs
+ add_spells Add_spells
+ Var Details spells_to_add
+
+
+
+
+
+ Innate spells that are supposed to be added when a beast is created
Proc Details add_spells()
+
+
+
+
+
+ Add_spells
+Goes through spells_to_add and adds each spell to the mind.
+
+
+
diff --git a/mob/living/simple_animal/hostile/eldritch/armsy.html b/mob/living/simple_animal/hostile/eldritch/armsy.html
new file mode 100644
index 0000000000000..f44e7358e63aa
--- /dev/null
+++ b/mob/living/simple_animal/hostile/eldritch/armsy.html
@@ -0,0 +1,96 @@
+
+
+
+
+
+
+ /mob/living/simple_animal/hostile/eldritch/armsy - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details allow_pulling
+
+
+
+
+
+ Allow / disallow pulling
+ Previous segment in the chain
current_stacks
+
+
+
+
+
+ Currently eaten arms
+ Next segment in the chain
oldloc
+
+
+
+
+
+ Your old location
stacks_to_grow
+
+
+
+
+
+ How many arms do we have to eat to expand?
Proc Details contract_next_chain_into_single_tile()
+
+
+
+
+
+ Updates chain links to force move onto a single tile
has_gravity
+
+ next link
+previous link
+current link
update_chain_links()
+
+
+
+
+
+ Updates the next mob in the chain to move to our last location, fixed the worm if somehow broken.
+
+
+
diff --git a/mob/living/simple_animal/hostile/guardian.html b/mob/living/simple_animal/hostile/guardian.html
new file mode 100644
index 0000000000000..a64b7b8ed97ff
--- /dev/null
+++ b/mob/living/simple_animal/hostile/guardian.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /mob/living/simple_animal/hostile/guardian - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details music_datum
+
+
+
+
+
+ sigh, fine.
+
+
+
diff --git a/mob/living/simple_animal/hostile/guardian/gravitokinetic.html b/mob/living/simple_animal/hostile/guardian/gravitokinetic.html
new file mode 100644
index 0000000000000..92e291944bcc7
--- /dev/null
+++ b/mob/living/simple_animal/hostile/guardian/gravitokinetic.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /mob/living/simple_animal/hostile/guardian/gravitokinetic - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ death Removes gravity from affected mobs upon guardian death to prevent permanent effects
Proc Details death()
+
+
+
+
+
+ Removes gravity from affected mobs upon guardian death to prevent permanent effects
+
+
+
diff --git a/mob/living/simple_animal/hostile/megafauna.html b/mob/living/simple_animal/hostile/megafauna.html
new file mode 100644
index 0000000000000..64ec034a3a238
--- /dev/null
+++ b/mob/living/simple_animal/hostile/megafauna.html
@@ -0,0 +1,134 @@
+
+
+
+
+
+
+ /mob/living/simple_animal/hostile/megafauna - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ achievement_type Achievement given to surrounding players when the megafauna is killed
+ anger_modifier Modifies attacks when at lower health
+ attack_action_types Attack actions, sets chosen_attack to the number in the action
+ chosen_attack The chosen attack by the megafauna
+ crusher_achievement_type Crusher achievement given to players when megafauna is killed
+ crusher_loot Crusher loot dropped when the megafauna is killed with a crusher
+ elimination If the megafauna was actually killed (not just dying, then transforming into another type)
+ internal Internal tracking GPS inside fauna
+ nest_range Range the megafauna can move from their nest (if they have one
+ recovery_time Next time the megafauna can use a melee attack
+ score_achievement_type Score given to players when megafauna is killed
+ small_sprite_type If there is a small sprite icon for players controlling the megafauna to use
+ true_spawn If this is a megafauna that is real (has achievements, gps signal) Procs
+ SetRecoveryTime Sets the next time the megafauna can use a melee or ranged attack, in deciseconds
+ grant_achievement Grants medals and achievements to surrounding players
+ Var Details achievement_type
+
+
+
+
+
+ Achievement given to surrounding players when the megafauna is killed
anger_modifier
+
+
+
+
+
+ Modifies attacks when at lower health
attack_action_types
+
+
+
+
+
+ Attack actions, sets chosen_attack to the number in the action
chosen_attack
+
+
+
+
+
+ The chosen attack by the megafauna
crusher_achievement_type
+
+
+
+
+
+ Crusher achievement given to players when megafauna is killed
crusher_loot
+
+
+
+
+
+ Crusher loot dropped when the megafauna is killed with a crusher
elimination
+
+
+
+
+
+ If the megafauna was actually killed (not just dying, then transforming into another type)
internal
+
+
+
+
+
+ Internal tracking GPS inside fauna
nest_range
+
+
+
+
+
+ Range the megafauna can move from their nest (if they have one
recovery_time
+
+
+
+
+
+ Next time the megafauna can use a melee attack
score_achievement_type
+
+
+
+
+
+ Score given to players when megafauna is killed
small_sprite_type
+
+
+
+
+
+ If there is a small sprite icon for players controlling the megafauna to use
true_spawn
+
+
+
+
+
+ If this is a megafauna that is real (has achievements, gps signal)
Proc Details SetRecoveryTime(buffer_time, ranged_buffer_time)
+
+
+
+
+
+ Sets the next time the megafauna can use a melee or ranged attack, in deciseconds
grant_achievement(medaltype, scoretype, crusher_kill, /list/grant_achievement)
+
+
+
+
+
+ Grants medals and achievements to surrounding players
+
+
+
diff --git a/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.html b/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.html
new file mode 100644
index 0000000000000..0d6b4c3e90184
--- /dev/null
+++ b/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+ /mob/living/simple_animal/hostile/megafauna/demonic_frost_miner - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ enraged If the demonic frost miner is in its enraged state
+ enraging If the demonic frost miner is currently transforming to its enraged state
+ projectile_speed_multiplier Modifies the speed of the projectiles the demonic frost miner shoots out Procs
+ check_enraged Checks if the demonic frost miner is ready to be enraged
+ frost_orbs Shoots out homing frost orbs that explode into ice blast projectiles after a couple seconds
+ ice_shotgun Shoots out ice blasts in a shotgun like pattern
+ snowball_machine_gun Shoots out snowballs with a random spread
+ Var Details enraged
+
+
+
+
+
+ If the demonic frost miner is in its enraged state
enraging
+
+
+
+
+
+ If the demonic frost miner is currently transforming to its enraged state
projectile_speed_multiplier
+
+
+
+
+
+ Modifies the speed of the projectiles the demonic frost miner shoots out
Proc Details check_enraged()
+
+
+
+
+
+ Checks if the demonic frost miner is ready to be enraged
frost_orbs(added_delay, shoot_times)
+
+
+
+
+
+ Shoots out homing frost orbs that explode into ice blast projectiles after a couple seconds
ice_shotgun(shots, /list/patterns)
+
+
+
+
+
+ Shoots out ice blasts in a shotgun like pattern
snowball_machine_gun(shots, spread)
+
+
+
+
+
+ Shoots out snowballs with a random spread
+
+
+
diff --git a/mob/living/simple_animal/hostile/megafauna/legion.html b/mob/living/simple_animal/hostile/megafauna/legion.html
new file mode 100644
index 0000000000000..45ded3b4f6d36
--- /dev/null
+++ b/mob/living/simple_animal/hostile/megafauna/legion.html
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+ /mob/living/simple_animal/hostile/megafauna/legion - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ AttackingTarget In addition to parent functionality, this will also turn the target into a small legion if they are unconcious.
+ Split Splits legion into smaller skulls.
+ adjustHealth This makes sure that the legion door opens on taking damage, so you can't cheese this boss.
+ charge_target Attack proc. Gives legion some movespeed buffs and switches the AI to melee. At lower sizes, this also throws the skull at the player.
+ create_legion_skull Attack proc. Spawns a singular legion skull.
+ create_legion_turrets Attack proc. Creates up to three legion turrets on suitable turfs nearby.
+ reset_charge Resets the charge buffs.
+ setVarsAfterSplit Sets the variables for new legion skulls. Usually called after splitting.
+ throw_impact Deals some extra damage on throw impact.
+ throw_thyself This is the proc that actually does the throwing. Charge only adds a timer for this.
Proc Details AttackingTarget()
+
+
+
+
+
+ In addition to parent functionality, this will also turn the target into a small legion if they are unconcious.
Split()
+
+
+
+
+
+ Splits legion into smaller skulls.
adjustHealth(amount, updating_health, forced)
+
+
+
+
+
+ This makes sure that the legion door opens on taking damage, so you can't cheese this boss.
charge_target()
+
+
+
+
+
+ Attack proc. Gives legion some movespeed buffs and switches the AI to melee. At lower sizes, this also throws the skull at the player.
create_legion_skull()
+
+
+
+
+
+ Attack proc. Spawns a singular legion skull.
create_legion_turrets(minimum, maximum)
+
+
+
+
+
+ Attack proc. Creates up to three legion turrets on suitable turfs nearby.
reset_charge()
+
+
+
+
+
+ Resets the charge buffs.
+ Sets the variables for new legion skulls. Usually called after splitting.
+ Deals some extra damage on throw impact.
throw_thyself()
+
+
+
+
+
+ This is the proc that actually does the throwing. Charge only adds a timer for this.
+
+
+
diff --git a/mob/living/simple_animal/hostile/megafauna/wendigo.html b/mob/living/simple_animal/hostile/megafauna/wendigo.html
new file mode 100644
index 0000000000000..9aff646d37dd2
--- /dev/null
+++ b/mob/living/simple_animal/hostile/megafauna/wendigo.html
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+ /mob/living/simple_animal/hostile/megafauna/wendigo - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ can_move If the wendigo is allowed to move
+ starting Saves the turf the megafauna was created at (spawns exit portal here)
+ stomp_range Range for wendigo stomping when it moves
+ stored_move_dirs Stores directions the mob is moving, then calls that a move has fully ended when these directions are removed in moved Procs
+ disorienting_scream Shakes all nearby enemies screens and animates the wendigo shaking up and down
+ ground_slam Slams the ground around the wendigo throwing back enemies caught nearby
+ heavy_stomp Larger but slower ground stomp
+ teleport Teleports to a location 4 turfs away from the enemy in view
+ Var Details can_move
+
+
+
+
+
+ If the wendigo is allowed to move
starting
+
+
+
+
+
+ Saves the turf the megafauna was created at (spawns exit portal here)
stomp_range
+
+
+
+
+
+ Range for wendigo stomping when it moves
stored_move_dirs
+
+
+
+
+
+ Stores directions the mob is moving, then calls that a move has fully ended when these directions are removed in moved
Proc Details disorienting_scream()
+
+
+
+
+
+ Shakes all nearby enemies screens and animates the wendigo shaking up and down
ground_slam(range, delay)
+
+
+
+
+
+ Slams the ground around the wendigo throwing back enemies caught nearby
heavy_stomp()
+
+
+
+
+
+ Larger but slower ground stomp
teleport()
+
+
+
+
+
+ Teleports to a location 4 turfs away from the enemy in view
+
+
+
diff --git a/mob/living/simple_animal/hostile/plaguerat.html b/mob/living/simple_animal/hostile/plaguerat.html
new file mode 100644
index 0000000000000..936ce48f1fb50
--- /dev/null
+++ b/mob/living/simple_animal/hostile/plaguerat.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /mob/living/simple_animal/hostile/plaguerat - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ be_fruitful Checks the mouse cap, if it's above the cap, doesn't spawn a mouse. If below, spawns a mouse and adds it to cheeserats.
Proc Details be_fruitful()
+
+
+
+
+
+ Checks the mouse cap, if it's above the cap, doesn't spawn a mouse. If below, spawns a mouse and adds it to cheeserats.
+
+
+
diff --git a/mob/living/simple_animal/hostile/regalrat.html b/mob/living/simple_animal/hostile/regalrat.html
new file mode 100644
index 0000000000000..978f0fecde7a4
--- /dev/null
+++ b/mob/living/simple_animal/hostile/regalrat.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /mob/living/simple_animal/hostile/regalrat - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ Initialize Number assigned to rats and mice, checked when determining infighting.
Proc Details Initialize(mapload)
+
+
+
+
+
+ Number assigned to rats and mice, checked when determining infighting.
+
+
+
diff --git a/mob/living/simple_animal/hostile/space_dragon.html b/mob/living/simple_animal/hostile/space_dragon.html
new file mode 100644
index 0000000000000..273398be644d4
--- /dev/null
+++ b/mob/living/simple_animal/hostile/space_dragon.html
@@ -0,0 +1,300 @@
+
+
+
+
+
+
+ /mob/living/simple_animal/hostile/space_dragon - SPLURT Station 13
+
+
+
+
+
+
+A space-faring leviathan-esque monster which breathes fire and summons carp. Spawned during its respective midround antagonist event.
+A space-faring monstrosity who has the ability to breathe dangerous fire breath and uses its powerful wings to knock foes away.
+Normally spawned as an antagonist during the Space Dragon event, Space Dragon's main goal is to open three rifts from which to pull a great tide of carp onto the station.
+Space Dragon can summon only one rift at a time, and can do so anywhere a blob is allowed to spawn. In order to trigger his victory condition, Space Dragon must summon and defend three rifts while they charge.
+Space Dragon, when spawned, has five minutes to summon the first rift. Failing to do so will cause Space Dragon to return from whence he came.
+When the rift spawns, ghosts can interact with it to spawn in as space carp to help complete the mission. One carp is granted when the rift is first summoned, with an extra one every 30 seconds.
+Once the victory condition is met, all current rifts become invulnerable to damage, are allowed to spawn infinite sentient space carp, and Space Dragon gets unlimited rage.
+Alternatively, if the shuttle arrives while Space Dragon is still active, their victory condition will automatically be met and all the rifts will immediately become fully charged.
+If a charging rift is destroyed, Space Dragon will be incredibly slowed, and the endlag on his gust attack is greatly increased on each use.
+Space Dragon has the following abilities to assist him with his objective:
+
+Can shoot fire in straight line, dealing 30 burn damage and setting those suseptible on fire.
+Can use his wings to temporarily stun and knock back any nearby mobs. This attack has no cooldown, but instead has endlag after the attack where Space Dragon cannot act. This endlag's time decreases over time, but is added to every time he uses the move.
+Can swallow mob corpses to heal for half their max health. Any corpses swallowed are stored within him, and will be regurgitated on death.
+Can tear through any type of wall. This takes 4 seconds for most walls, and 12 seconds for reinforced walls.
+ Vars
+ chosen_color The color of the space dragon.
+ gust_distance The distance Space Dragon's gust reaches
+ gust_tiredness The amount of tiredness to add to Space Dragon per use of gust
+ maxRiftTimer Maximum amount of time which can pass without a rift before Space Dragon despawns.
+ objective_complete Whether or not Space Dragon has completed their objective, and thus triggered the ending sequence.
+ rift The innate ability to summon rifts
+ riftTimer Current time since the the last rift was activated. If set to -1, does not increment.
+ rift_list A list of all of the rifts created by Space Dragon. Used for setting them all to infinite carp spawn when Space Dragon wins, and removing them when Space Dragon dies.
+ rifts_charged How many rifts have been successfully charged
+ tearing_wall Determines whether or not Space Dragon is currently tearing through a wall.
+ tiredness How much endlag using Wing Gust should apply. Each use of wing gust increments this, and it decreases over time.
+ tiredness_mult A multiplier to how much each use of wing gust should add to the tiredness variable. Set to 5 if the current rift is destroyed.
+ using_special Determines whether or not Space Dragon is in the middle of using wing gust. If set to true, prevents him from moving and doing certain actions. Procs
+ add_dragon_overlay Adds the proper overlay to the space dragon.
+ color_selection Allows space dragon to choose a color for itself.
+ destroy_rifts Destroys all of Space Dragon's current rifts.
+ dragon_fire_line What occurs on each tile to actually create the fire.
+ dragon_name Allows space dragon to choose its own name.
+ eat Handles consuming and storing consumed things inside Space Dragon
+ empty_contents Disperses the contents of the mob on the surrounding tiles.
+ fire_stream Spawns fire at each position in a line from the source to the target.
+ line_target Determines a line of turfs from sources's position to the target with length range.
+ permanant_empower Gives Space Dragon their the rift speed buff permanantly.
+ reset_status Resets Space Dragon's status after using wing gust.
+ rift_depower Removes Space Dragon's rift speed buff.
+ rift_empower Handles Space Dragon's temporary empowerment after boosting a rift.
+ useGust Handles wing gust from the windup all the way to the endlag at the end.
+ victory Sets up Space Dragon's victory for completing the objectives.
+ Var Details chosen_color
+
+
+
+
+
+ The color of the space dragon.
gust_distance
+
+
+
+
+
+ The distance Space Dragon's gust reaches
gust_tiredness
+
+
+
+
+
+ The amount of tiredness to add to Space Dragon per use of gust
maxRiftTimer
+
+
+
+
+
+ Maximum amount of time which can pass without a rift before Space Dragon despawns.
objective_complete
+
+
+
+
+
+ Whether or not Space Dragon has completed their objective, and thus triggered the ending sequence.
rift
+
+
+
+
+
+ The innate ability to summon rifts
riftTimer
+
+
+
+
+
+ Current time since the the last rift was activated. If set to -1, does not increment.
rift_list
+ – /list/obj/structure/carp_rift
+
+
+
+
+ A list of all of the rifts created by Space Dragon. Used for setting them all to infinite carp spawn when Space Dragon wins, and removing them when Space Dragon dies.
rifts_charged
+
+
+
+
+
+ How many rifts have been successfully charged
tearing_wall
+
+
+
+
+
+ Determines whether or not Space Dragon is currently tearing through a wall.
tiredness
+
+
+
+
+
+ How much endlag using Wing Gust should apply. Each use of wing gust increments this, and it decreases over time.
tiredness_mult
+
+
+
+
+
+ A multiplier to how much each use of wing gust should add to the tiredness variable. Set to 5 if the current rift is destroyed.
using_special
+
+
+
+
+
+ Determines whether or not Space Dragon is in the middle of using wing gust. If set to true, prevents him from moving and doing certain actions.
Proc Details add_dragon_overlay()
+
+
+
+
+
+ Adds the proper overlay to the space dragon.
+Clears the current overlay on space dragon and adds a proper one for whatever animation he's in.
color_selection()
+
+
+
+
+
+ Allows space dragon to choose a color for itself.
+Prompts the space dragon to choose a color, from which it will then apply to itself.
+If an invalid color is given, will re-prompt the dragon until a proper color is chosen.
destroy_rifts()
+
+
+
+
+
+ Destroys all of Space Dragon's current rifts.
+QDeletes all the current rifts after removing their references to other objects.
+Currently, the only reference they have is to the Dragon which created them, so we clear that before deleting them.
+Currently used when Space Dragon dies or one of his rifts is destroyed.
dragon_fire_line
+
+ What occurs on each tile to actually create the fire.
+Creates a fire on the given turf.
+It creates a hotspot on the given turf, damages any living mob with 30 burn damage, and damages mechs by 50.
+It can only hit any given target once.
+Arguments:
+
+turf/T - The turf to trigger the effects on.
+ dragon_name()
+
+
+
+
+
+ Allows space dragon to choose its own name.
+Prompts the space dragon to choose a name, which it will then apply to itself.
+If the name is invalid, will re-prompt the dragon until a proper name is chosen.
+ Handles consuming and storing consumed things inside Space Dragon
+Plays a sound and then stores the consumed thing inside Space Dragon.
+Used in AttackingTarget(), paired with a heal should it succeed.
+Arguments:
+
+atom/movable/A - The thing being consumed
+ empty_contents()
+
+
+
+
+
+ Disperses the contents of the mob on the surrounding tiles.
+Randomly places the contents of the mob onto surrounding tiles.
+Has a 10% chance to place on the same tile as the mob.
fire_stream
+
+ Spawns fire at each position in a line from the source to the target.
+Spawns fire at each position in a line from the source to the target.
+Stops if it comes into contact with a solid wall, a window, or a door.
+Delays the spawning of each fire by 1.5 deciseconds.
+Arguments:
+line_target(offset, range, /atom /at)
+
+
+
+
+
+ Determines a line of turfs from sources's position to the target with length range.
+Determines a line of turfs from the source's position to the target with length range.
+The line will extend on past the target if the range is large enough, and not reach the target if range is small enough.
+Arguments:
+
+offset - whether or not to aim slightly to the left or right of the target
+range - how many turfs should we go out for
+atom/at - The target
+ permanant_empower()
+
+
+
+
+
+ Gives Space Dragon their the rift speed buff permanantly.
+Gives Space Dragon the enraged speed buff from charging rifts permanantly.
+Only happens in circumstances where Space Dragon completes their objective.
reset_status()
+
+
+
+
+
+ Resets Space Dragon's status after using wing gust.
+Resets Space Dragon's status after using wing gust.
+If it isn't dead by the time it calls this method, reset the sprite back to the normal living sprite.
+Also sets the using_special variable to FALSE, allowing Space Dragon to move and attack freely again.
rift_depower()
+
+
+
+
+
+ Removes Space Dragon's rift speed buff.
+Removes Space Dragon's speed buff from charging a rift. This is only called
+in rift_empower, which uses a timer to call this after 30 seconds. Also
+removes the red glow from Space Dragon which is synonymous with the speed buff.
rift_empower(is_permanent)
+
+
+
+
+
+ Handles Space Dragon's temporary empowerment after boosting a rift.
+Empowers and depowers Space Dragon after a successful rift charge.
+Empowered, Space Dragon regains all his health and becomes temporarily faster for 30 seconds, along with being tinted red.
useGust(timer)
+
+
+
+
+
+ Handles wing gust from the windup all the way to the endlag at the end.
+Handles the wing gust attack from start to finish, based on the timer.
+When intially triggered, starts at 0. Until the timer reaches 10, increase Space Dragon's y position by 2 and call back to the function in 1.5 deciseconds.
+When the timer is at 10, trigger the attack. Change Space Dragon's sprite. reset his y position, and push all living creatures back in a 3 tile radius and stun them for 5 seconds.
+Stay in the ending state for how much our tiredness dictates and add to our tiredness.
+Arguments:
+
+timer - The timer used for the windup.
+ victory()
+
+
+
+
+
+ Sets up Space Dragon's victory for completing the objectives.
+Triggers when Space Dragon completes his objective.
+Calls the shuttle with a coefficient of 3, making it impossible to recall.
+Sets all of his rifts to allow for infinite sentient carp spawns
+Also plays appropiate sounds and CENTCOM messages.
+
+
+
diff --git a/mob/living/simple_animal/hostile/swarmer.html b/mob/living/simple_animal/hostile/swarmer.html
new file mode 100644
index 0000000000000..e17c9b9ac4364
--- /dev/null
+++ b/mob/living/simple_animal/hostile/swarmer.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+ /mob/living/simple_animal/hostile/swarmer - SPLURT Station 13
+
+
+
+
+
+
+The Mob itself
Proc Details AttackingTarget()
+
+
+
+
+
+ CTRL CLICK FOR SWARMERS AND SWARMER_ACT()'S
Fabricate(/atom /fabrication_object, fabrication_cost)
+
+
+
+
+
+ END CTRL CLICK FOR SWARMERS
+
+
+
diff --git a/mob/living/simple_animal/hostile/venus_human_trap.html b/mob/living/simple_animal/hostile/venus_human_trap.html
new file mode 100644
index 0000000000000..5bfe41e570161
--- /dev/null
+++ b/mob/living/simple_animal/hostile/venus_human_trap.html
@@ -0,0 +1,99 @@
+
+
+
+
+
+
+ /mob/living/simple_animal/hostile/venus_human_trap - SPLURT Station 13
+
+
+
+
+
+
+Venus Human Trap
+The result of a kudzu flower bud, these enemies use vines to drag prey close to them for attack.
+A carnivorious plant which uses vines to catch and ensnare prey. Spawns from kudzu flower buds.
+Each one has a maximum of four vines, which can be attached to a variety of things. Carbons are stunned when a vine is attached to them, and movable entities are pulled closer over time.
+Attempting to attach a vine to something with a vine already attached to it will pull all movable targets closer on command.
+Once the prey is in melee range, melee attacks from the venus human trap heals itself for 10% of its max health, assuming the target is alive.
+Akin to certain spiders, venus human traps can also be possessed and controlled by ghosts.
Vars
+ max_vines The maximum amount of vines a plant can have at one time
+ playable_plant Whether or not this plant is ghost possessable
+ vine_grab_distance How far away a plant can attach a vine to something
+ vines A list of all the plant's vines Procs
+ humanize_plant Sets a ghost to control the plant if the plant is eligible
+ pull_vines Manages how the vines should affect the things they're attached to.
+ remove_vine Removes a vine from the list.
+ Var Details max_vines
+
+
+
+
+
+ The maximum amount of vines a plant can have at one time
playable_plant
+
+
+
+
+
+ Whether or not this plant is ghost possessable
vine_grab_distance
+
+
+
+
+
+ How far away a plant can attach a vine to something
vines
+
+
+
+
+
+ A list of all the plant's vines
Proc Details humanize_plant
+
+ Sets a ghost to control the plant if the plant is eligible
+Asks the interacting ghost if they would like to control the plant.
+If they answer yes, and another ghost hasn't taken control, sets the ghost to control the plant.
+Arguments:
+
+mob/user - The ghost to possibly control the plant
+ pull_vines()
+
+
+
+
+
+ Manages how the vines should affect the things they're attached to.
+Pulls all movable targets of the vines closer to the plant
+If the target is on the same tile as the plant, destroy the vine
+Removes any QDELETED vines from the vines list.
remove_vine(/datum /beam/vine, force)
+
+
+
+
+
+ Removes a vine from the list.
+Removes the vine from our list.
+Called specifically when the vine is about to be destroyed, so we don't have any null references.
+Arguments:
+
+datum/beam/vine - The vine to be removed from the list.
+
+
+
+
diff --git a/mob/living/simple_animal/jacq.html b/mob/living/simple_animal/jacq.html
new file mode 100644
index 0000000000000..55a9101ca6e5b
--- /dev/null
+++ b/mob/living/simple_animal/jacq.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /mob/living/simple_animal/jacq - SPLURT Station 13
+
+
+
+
+
+
+MOBS
Vars
+ busy I'm busy, don't move.
+ Var Details busy
+
+
+
+
+
+ I'm busy, don't move.
+
+
+
diff --git a/mob/living/simple_animal/mouse.html b/mob/living/simple_animal/mouse.html
new file mode 100644
index 0000000000000..13144b68fadb2
--- /dev/null
+++ b/mob/living/simple_animal/mouse.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+ /mob/living/simple_animal/mouse - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ be_fruitful Checks the mouse cap, if it's above the cap, doesn't spawn a mouse. If below, spawns a mouse and adds it to cheeserats.
+ evolve Spawns a new regal rat, says some good jazz, and if sentient, transfers the relivant mind.
Proc Details be_fruitful()
+
+
+
+
+
+ Checks the mouse cap, if it's above the cap, doesn't spawn a mouse. If below, spawns a mouse and adds it to cheeserats.
evolve()
+
+
+
+
+
+ Spawns a new regal rat, says some good jazz, and if sentient, transfers the relivant mind.
+
+
+
diff --git a/mob/living/simple_animal/parrot.html b/mob/living/simple_animal/parrot.html
new file mode 100644
index 0000000000000..dbc03d84c61f5
--- /dev/null
+++ b/mob/living/simple_animal/parrot.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /mob/living/simple_animal/parrot - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details spawns_with_headset
+
+
+
+
+
+ spawns with headset
+
+
+
diff --git a/mob/living/simple_animal/slime.html b/mob/living/simple_animal/slime.html
new file mode 100644
index 0000000000000..f9bc42957ebfb
--- /dev/null
+++ b/mob/living/simple_animal/slime.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /mob/living/simple_animal/slime - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details colour
+
+
+
+
+
+ TIME FOR SUBSPECIES
effectmod
+
+
+
+
+
+ CORE-CROSSING CODE
+
+
+
diff --git a/modular_citadel.html b/modular_citadel.html
new file mode 100644
index 0000000000000..a282590ab0e1f
--- /dev/null
+++ b/modular_citadel.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ modular_citadel/README.md - SPLURT Station 13
+
+
+
+
+modular_citadel/README.md
+
+
+
+
+ Hooray modularity!
+Things that modify core files without directly touching said core files go here. This is similar to how Hippie handles things.
+This stops dreammaker from throwing errors and warnings if you try to compile these files while they're inside code/citadel/.
+
+
+
diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/handguns.html b/modular_citadel/code/modules/projectiles/guns/ballistic/handguns.html
new file mode 100644
index 0000000000000..1ea185f412853
--- /dev/null
+++ b/modular_citadel/code/modules/projectiles/guns/ballistic/handguns.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ modular_citadel/code/modules/projectiles/guns/ballistic/handguns.dm - SPLURT Station 13
+
+
+
+
+modular_citadel/code/modules/projectiles/guns/ballistic/handguns.dm
+
+
+
+
+
+
+
diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/rifles.html b/modular_citadel/code/modules/projectiles/guns/ballistic/rifles.html
new file mode 100644
index 0000000000000..e159f1463ffdd
--- /dev/null
+++ b/modular_citadel/code/modules/projectiles/guns/ballistic/rifles.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ modular_citadel/code/modules/projectiles/guns/ballistic/rifles.dm - SPLURT Station 13
+
+
+
+
+modular_citadel/code/modules/projectiles/guns/ballistic/rifles.dm
+
+
+
+
+
+
+
diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/spinfusor.html b/modular_citadel/code/modules/projectiles/guns/ballistic/spinfusor.html
new file mode 100644
index 0000000000000..4d38f3e82ecf1
--- /dev/null
+++ b/modular_citadel/code/modules/projectiles/guns/ballistic/spinfusor.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ modular_citadel/code/modules/projectiles/guns/ballistic/spinfusor.dm - SPLURT Station 13
+
+
+
+
+modular_citadel/code/modules/projectiles/guns/ballistic/spinfusor.dm
+
+
+
+
+
+
+
diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.html b/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.html
new file mode 100644
index 0000000000000..2d1362116d520
--- /dev/null
+++ b/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm - SPLURT Station 13
+
+
+
+
+modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm
+
+
+
+
+
+
+
diff --git a/modular_citadel/sound/voice/pain emote credits.html b/modular_citadel/sound/voice/pain emote credits.html
new file mode 100644
index 0000000000000..4df8bad9ec3fd
--- /dev/null
+++ b/modular_citadel/sound/voice/pain emote credits.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ modular_citadel/sound/voice/pain emote credits.txt - SPLURT Station 13
+
+
+
+
+modular_citadel/sound/voice/pain emote credits.txt
+
+
+
+
+ pain emote sound ported from https://gitlab.com/cmdevs/colonial-warfare```
+
+
+
+
diff --git a/modular_sand/code/controllers/configuration/entries/sandstorm_balance.html b/modular_sand/code/controllers/configuration/entries/sandstorm_balance.html
new file mode 100644
index 0000000000000..8aa015393bf61
--- /dev/null
+++ b/modular_sand/code/controllers/configuration/entries/sandstorm_balance.html
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+ modular_sand/code/controllers/configuration/entries/sandstorm_balance.dm - SPLURT Station 13
+
+
+
+
+modular_sand/code/controllers/configuration/entries/sandstorm_balance.dm
+
+
+
+
+
+
+
diff --git a/modular_sand/code/datums/components/container_item/container_item.html b/modular_sand/code/datums/components/container_item/container_item.html
new file mode 100644
index 0000000000000..3cdd80dc02be6
--- /dev/null
+++ b/modular_sand/code/datums/components/container_item/container_item.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ modular_sand/code/datums/components/container_item/container_item.dm - SPLURT Station 13
+
+
+
+
+modular_sand/code/datums/components/container_item/container_item.dm
+
+
+
+
+
+
+
diff --git a/modular_sand/code/datums/components/container_item/tank_holder.html b/modular_sand/code/datums/components/container_item/tank_holder.html
new file mode 100644
index 0000000000000..39110da32d2d0
--- /dev/null
+++ b/modular_sand/code/datums/components/container_item/tank_holder.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ modular_sand/code/datums/components/container_item/tank_holder.dm - SPLURT Station 13
+
+
+
+
+modular_sand/code/datums/components/container_item/tank_holder.dm
+
+
+
+
+
+
+
diff --git a/modular_sand/code/datums/components/interaction_menu_granter.html b/modular_sand/code/datums/components/interaction_menu_granter.html
new file mode 100644
index 0000000000000..66a42e5bc6364
--- /dev/null
+++ b/modular_sand/code/datums/components/interaction_menu_granter.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ modular_sand/code/datums/components/interaction_menu_granter.dm - SPLURT Station 13
+
+
+
+
+modular_sand/code/datums/components/interaction_menu_granter.dm
+
+
+
+
+
+
+
diff --git a/modular_sand/code/datums/interactions/_interaction.html b/modular_sand/code/datums/interactions/_interaction.html
new file mode 100644
index 0000000000000..c4cffe0164e3c
--- /dev/null
+++ b/modular_sand/code/datums/interactions/_interaction.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ modular_sand/code/datums/interactions/_interaction.dm - SPLURT Station 13
+
+
+
+
+modular_sand/code/datums/interactions/_interaction.dm
+
+
+
+
+
+
+
diff --git a/modular_sand/code/game/mecha/mecha_parts.html b/modular_sand/code/game/mecha/mecha_parts.html
new file mode 100644
index 0000000000000..9b0b147e48ead
--- /dev/null
+++ b/modular_sand/code/game/mecha/mecha_parts.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ modular_sand/code/game/mecha/mecha_parts.dm - SPLURT Station 13
+
+
+
+
+modular_sand/code/game/mecha/mecha_parts.dm
+
+
+
+
+
+
+
diff --git a/modular_sand/code/game/objects/items/fleshlight.html b/modular_sand/code/game/objects/items/fleshlight.html
new file mode 100644
index 0000000000000..60c9ef4f88476
--- /dev/null
+++ b/modular_sand/code/game/objects/items/fleshlight.html
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+ modular_sand/code/game/objects/items/fleshlight.dm - SPLURT Station 13
+
+
+
+
+modular_sand/code/game/objects/items/fleshlight.dm
+
+
+
+
+ /obj /item /fleshlight Humbley request this doesnt get ported to other code bases, we strive to make things unique on our server and we dont have a lot of coders
+but if you absolutely must. please give us some credit~ <3
+made by quotefox and heavily modified by SandPoot
+ /obj /item /portallight kinky!
+ /obj /item /clothing /underwear/briefs/panties/portalpanties Wear it, cannot be worn if not pointing to the bits you have.
+
+
+
diff --git a/modular_sand/code/game/objects/items/plushes.html b/modular_sand/code/game/objects/items/plushes.html
new file mode 100644
index 0000000000000..ba14b9ca70878
--- /dev/null
+++ b/modular_sand/code/game/objects/items/plushes.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ modular_sand/code/game/objects/items/plushes.dm - SPLURT Station 13
+
+
+
+
+modular_sand/code/game/objects/items/plushes.dm
+
+
+
+
+
+
+
diff --git a/modular_sand/code/game/objects/structures/ghost_role_spawners.html b/modular_sand/code/game/objects/structures/ghost_role_spawners.html
new file mode 100644
index 0000000000000..8008e5a7eb47c
--- /dev/null
+++ b/modular_sand/code/game/objects/structures/ghost_role_spawners.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ modular_sand/code/game/objects/structures/ghost_role_spawners.dm - SPLURT Station 13
+
+
+
+
+modular_sand/code/game/objects/structures/ghost_role_spawners.dm
+
+
+
+
+
+
+
diff --git a/modular_sand/code/game/objects/structures/tank_holder.html b/modular_sand/code/game/objects/structures/tank_holder.html
new file mode 100644
index 0000000000000..a43a950a1ceeb
--- /dev/null
+++ b/modular_sand/code/game/objects/structures/tank_holder.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ modular_sand/code/game/objects/structures/tank_holder.dm - SPLURT Station 13
+
+
+
+
+modular_sand/code/game/objects/structures/tank_holder.dm
+
+
+
+
+
+
+
diff --git a/modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/candy.html b/modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/candy.html
new file mode 100644
index 0000000000000..275c3533b7b34
--- /dev/null
+++ b/modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/candy.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/candy.dm - SPLURT Station 13
+
+
+
+
+modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/candy.dm
+
+
+
+
+ /mob /living /simple_animal /hostile /asteroid/elite/candy Kind of like bubblegum's rebellious teenage son/daughter.
+Has 4 attacks.
+Charge - Charges at it's target.
+Bloody Trap - Traps it's target between some walls, and then charges at them.
+Meat Shield - Knockbacks all targets in the 3 tiles he faces, and then creates a wall.
+Knockdown - Deals damage and knockbacks all targets in a 2 tile radius.
+
+
+
diff --git a/modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/drakeling.html b/modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/drakeling.html
new file mode 100644
index 0000000000000..e6423e5d36587
--- /dev/null
+++ b/modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/drakeling.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/drakeling.dm - SPLURT Station 13
+
+
+
+
+modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/drakeling.dm
+
+
+
+
+
+
+
diff --git a/modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/fanaticminer.html b/modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/fanaticminer.html
new file mode 100644
index 0000000000000..412cfc9603aac
--- /dev/null
+++ b/modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/fanaticminer.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/fanaticminer.dm - SPLURT Station 13
+
+
+
+
+modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/fanaticminer.dm
+
+
+
+
+
+
+
diff --git a/modular_sand/code/modules/reagents/chemistry/reagents.html b/modular_sand/code/modules/reagents/chemistry/reagents.html
new file mode 100644
index 0000000000000..3496c42ec49d3
--- /dev/null
+++ b/modular_sand/code/modules/reagents/chemistry/reagents.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ modular_sand/code/modules/reagents/chemistry/reagents.dm - SPLURT Station 13
+
+
+
+
+modular_sand/code/modules/reagents/chemistry/reagents.dm
+
+
+
+
+ /proc/get_thirst
+ Don't blame me if they have negative thirst, admeme.
+
+
+
diff --git a/modular_sand/code/modules/research/designs/mechfabricator_designs.html b/modular_sand/code/modules/research/designs/mechfabricator_designs.html
new file mode 100644
index 0000000000000..fa5af19e2a730
--- /dev/null
+++ b/modular_sand/code/modules/research/designs/mechfabricator_designs.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ modular_sand/code/modules/research/designs/mechfabricator_designs.dm - SPLURT Station 13
+
+
+
+
+modular_sand/code/modules/research/designs/mechfabricator_designs.dm
+
+
+
+
+
+
+
diff --git a/modular_sand/code/modules/research/designs/medical_designs.html b/modular_sand/code/modules/research/designs/medical_designs.html
new file mode 100644
index 0000000000000..4d11ccdd560eb
--- /dev/null
+++ b/modular_sand/code/modules/research/designs/medical_designs.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ modular_sand/code/modules/research/designs/medical_designs.dm - SPLURT Station 13
+
+
+
+
+modular_sand/code/modules/research/designs/medical_designs.dm
+
+
+
+
+
+
+
diff --git a/modular_sand/code/modules/research/designs/telecomms_designs.html b/modular_sand/code/modules/research/designs/telecomms_designs.html
new file mode 100644
index 0000000000000..0eb9471140d07
--- /dev/null
+++ b/modular_sand/code/modules/research/designs/telecomms_designs.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ modular_sand/code/modules/research/designs/telecomms_designs.dm - SPLURT Station 13
+
+
+
+
+modular_sand/code/modules/research/designs/telecomms_designs.dm
+
+
+
+
+
+
+
diff --git a/modular_sand/code/modules/telescience/telepad.html b/modular_sand/code/modules/telescience/telepad.html
new file mode 100644
index 0000000000000..ea1fc3a8e5c68
--- /dev/null
+++ b/modular_sand/code/modules/telescience/telepad.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ modular_sand/code/modules/telescience/telepad.dm - SPLURT Station 13
+
+
+
+
+modular_sand/code/modules/telescience/telepad.dm
+
+
+
+
+
+
+
diff --git a/modular_sand/icons/mob/cyborg/Drakeborg-licensing.html b/modular_sand/icons/mob/cyborg/Drakeborg-licensing.html
new file mode 100644
index 0000000000000..3cf53f702dda6
--- /dev/null
+++ b/modular_sand/icons/mob/cyborg/Drakeborg-licensing.html
@@ -0,0 +1,96 @@
+
+
+
+
+
+
+ modular_sand/icons/mob/cyborg/Drakeborg-licensing.txt - SPLURT Station 13
+
+
+
+
+modular_sand/icons/mob/cyborg/Drakeborg-licensing.txt
+
+
+
+
+ Drakeborg & drakeplushies are created by deviantart.com/mizartz
+
+https://creativecommons.org/licenses/by-nc-sa/3.0/
+Attribution-NonCommercial-ShareAlike 3.0 Unported
+
+CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE.
+License
+THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
+
+BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS.
+
+1. Definitions
+
+"Adaptation" means a work based upon the Work, or upon the Work and other pre-existing works, such as a translation, adaptation, derivative work, arrangement of music or other alterations of a literary or artistic work, or phonogram or performance and includes cinematographic adaptations or any other form in which the Work may be recast, transformed, or adapted including in any form recognizably derived from the original, except that a work that constitutes a Collection will not be considered an Adaptation for the purpose of this License. For the avoidance of doubt, where the Work is a musical work, performance or phonogram, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered an Adaptation for the purpose of this License.
+"Collection" means a collection of literary or artistic works, such as encyclopedias and anthologies, or performances, phonograms or broadcasts, or other works or subject matter other than works listed in Section 1(g) below, which, by reason of the selection and arrangement of their contents, constitute intellectual creations, in which the Work is included in its entirety in unmodified form along with one or more other contributions, each constituting separate and independent works in themselves, which together are assembled into a collective whole. A work that constitutes a Collection will not be considered an Adaptation (as defined above) for the purposes of this License.
+"Distribute" means to make available to the public the original and copies of the Work or Adaptation, as appropriate, through sale or other transfer of ownership.
+"License Elements" means the following high-level license attributes as selected by Licensor and indicated in the title of this License: Attribution, Noncommercial, ShareAlike.
+"Licensor" means the individual, individuals, entity or entities that offer(s) the Work under the terms of this License.
+"Original Author" means, in the case of a literary or artistic work, the individual, individuals, entity or entities who created the Work or if no individual or entity can be identified, the publisher; and in addition (i) in the case of a performance the actors, singers, musicians, dancers, and other persons who act, sing, deliver, declaim, play in, interpret or otherwise perform literary or artistic works or expressions of folklore; (ii) in the case of a phonogram the producer being the person or legal entity who first fixes the sounds of a performance or other sounds; and, (iii) in the case of broadcasts, the organization that transmits the broadcast.
+"Work" means the literary and/or artistic work offered under the terms of this License including without limitation any production in the literary, scientific and artistic domain, whatever may be the mode or form of its expression including digital form, such as a book, pamphlet and other writing; a lecture, address, sermon or other work of the same nature; a dramatic or dramatico-musical work; a choreographic work or entertainment in dumb show; a musical composition with or without words; a cinematographic work to which are assimilated works expressed by a process analogous to cinematography; a work of drawing, painting, architecture, sculpture, engraving or lithography; a photographic work to which are assimilated works expressed by a process analogous to photography; a work of applied art; an illustration, map, plan, sketch or three-dimensional work relative to geography, topography, architecture or science; a performance; a broadcast; a phonogram; a compilation of data to the extent it is protected as a copyrightable work; or a work performed by a variety or circus performer to the extent it is not otherwise considered a literary or artistic work.
+"You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation.
+"Publicly Perform" means to perform public recitations of the Work and to communicate to the public those public recitations, by any means or process, including by wire or wireless means or public digital performances; to make available to the public Works in such a way that members of the public may access these Works from a place and at a place individually chosen by them; to perform the Work to the public by any means or process and the communication to the public of the performances of the Work, including by public digital performance; to broadcast and rebroadcast the Work by any means including signs, sounds or images.
+"Reproduce" means to make copies of the Work by any means including without limitation by sound or visual recordings and the right of fixation and reproducing fixations of the Work, including storage of a protected performance or phonogram in digital form or other electronic medium.
+2. Fair Dealing Rights. Nothing in this License is intended to reduce, limit, or restrict any uses free from copyright or rights arising from limitations or exceptions that are provided for in connection with the copyright protection under copyright law or other applicable laws.
+
+3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below:
+
+to Reproduce the Work, to incorporate the Work into one or more Collections, and to Reproduce the Work as incorporated in the Collections;
+to create and Reproduce Adaptations provided that any such Adaptation, including any translation in any medium, takes reasonable steps to clearly label, demarcate or otherwise identify that changes were made to the original Work. For example, a translation could be marked "The original work was translated from English to Spanish," or a modification could indicate "The original work has been modified.";
+to Distribute and Publicly Perform the Work including as incorporated in Collections; and,
+to Distribute and Publicly Perform Adaptations.
+The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. Subject to Section 8(f), all rights not expressly granted by Licensor are hereby reserved, including but not limited to the rights described in Section 4(e).
+
+4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions:
+
+You may Distribute or Publicly Perform the Work only under the terms of this License. You must include a copy of, or the Uniform Resource Identifier (URI) for, this License with every copy of the Work You Distribute or Publicly Perform. You may not offer or impose any terms on the Work that restrict the terms of this License or the ability of the recipient of the Work to exercise the rights granted to that recipient under the terms of the License. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties with every copy of the Work You Distribute or Publicly Perform. When You Distribute or Publicly Perform the Work, You may not impose any effective technological measures on the Work that restrict the ability of a recipient of the Work from You to exercise the rights granted to that recipient under the terms of the License. This Section 4(a) applies to the Work as incorporated in a Collection, but this does not require the Collection apart from the Work itself to be made subject to the terms of this License. If You create a Collection, upon notice from any Licensor You must, to the extent practicable, remove from the Collection any credit as required by Section 4(d), as requested. If You create an Adaptation, upon notice from any Licensor You must, to the extent practicable, remove from the Adaptation any credit as required by Section 4(d), as requested.
+You may Distribute or Publicly Perform an Adaptation only under: (i) the terms of this License; (ii) a later version of this License with the same License Elements as this License; (iii) a Creative Commons jurisdiction license (either this or a later license version) that contains the same License Elements as this License (e.g., Attribution-NonCommercial-ShareAlike 3.0 US) ("Applicable License"). You must include a copy of, or the URI, for Applicable License with every copy of each Adaptation You Distribute or Publicly Perform. You may not offer or impose any terms on the Adaptation that restrict the terms of the Applicable License or the ability of the recipient of the Adaptation to exercise the rights granted to that recipient under the terms of the Applicable License. You must keep intact all notices that refer to the Applicable License and to the disclaimer of warranties with every copy of the Work as included in the Adaptation You Distribute or Publicly Perform. When You Distribute or Publicly Perform the Adaptation, You may not impose any effective technological measures on the Adaptation that restrict the ability of a recipient of the Adaptation from You to exercise the rights granted to that recipient under the terms of the Applicable License. This Section 4(b) applies to the Adaptation as incorporated in a Collection, but this does not require the Collection apart from the Adaptation itself to be made subject to the terms of the Applicable License.
+You may not exercise any of the rights granted to You in Section 3 above in any manner that is primarily intended for or directed toward commercial advantage or private monetary compensation. The exchange of the Work for other copyrighted works by means of digital file-sharing or otherwise shall not be considered to be intended for or directed toward commercial advantage or private monetary compensation, provided there is no payment of any monetary compensation in con-nection with the exchange of copyrighted works.
+If You Distribute, or Publicly Perform the Work or any Adaptations or Collections, You must, unless a request has been made pursuant to Section 4(a), keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) the name of the Original Author (or pseudonym, if applicable) if supplied, and/or if the Original Author and/or Licensor designate another party or parties (e.g., a sponsor institute, publishing entity, journal) for attribution ("Attribution Parties") in Licensor's copyright notice, terms of service or by other reasonable means, the name of such party or parties; (ii) the title of the Work if supplied; (iii) to the extent reasonably practicable, the URI, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and, (iv) consistent with Section 3(b), in the case of an Adaptation, a credit identifying the use of the Work in the Adaptation (e.g., "French translation of the Work by Original Author," or "Screenplay based on original Work by Original Author"). The credit required by this Section 4(d) may be implemented in any reasonable manner; provided, however, that in the case of a Adaptation or Collection, at a minimum such credit will appear, if a credit for all contributing authors of the Adaptation or Collection appears, then as part of these credits and in a manner at least as prominent as the credits for the other contributing authors. For the avoidance of doubt, You may only use the credit required by this Section for the purpose of attribution in the manner set out above and, by exercising Your rights under this License, You may not implicitly or explicitly assert or imply any connection with, sponsorship or endorsement by the Original Author, Licensor and/or Attribution Parties, as appropriate, of You or Your use of the Work, without the separate, express prior written permission of the Original Author, Licensor and/or Attribution Parties.
+For the avoidance of doubt:
+
+Non-waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme cannot be waived, the Licensor reserves the exclusive right to collect such royalties for any exercise by You of the rights granted under this License;
+Waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme can be waived, the Licensor reserves the exclusive right to collect such royalties for any exercise by You of the rights granted under this License if Your exercise of such rights is for a purpose or use which is otherwise than noncommercial as permitted under Section 4(c) and otherwise waives the right to collect royalties through any statutory or compulsory licensing scheme; and,
+Voluntary License Schemes. The Licensor reserves the right to collect royalties, whether individually or, in the event that the Licensor is a member of a collecting society that administers voluntary licensing schemes, via that society, from any exercise by You of the rights granted under this License that is for a purpose or use which is otherwise than noncommercial as permitted under Section 4(c).
+Except as otherwise agreed in writing by the Licensor or as may be otherwise permitted by applicable law, if You Reproduce, Distribute or Publicly Perform the Work either by itself or as part of any Adaptations or Collections, You must not distort, mutilate, modify or take other derogatory action in relation to the Work which would be prejudicial to the Original Author's honor or reputation. Licensor agrees that in those jurisdictions (e.g. Japan), in which any exercise of the right granted in Section 3(b) of this License (the right to make Adaptations) would be deemed to be a distortion, mutilation, modification or other derogatory action prejudicial to the Original Author's honor and reputation, the Licensor will waive or not assert, as appropriate, this Section, to the fullest extent permitted by the applicable national law, to enable You to reasonably exercise Your right under Section 3(b) of this License (right to make Adaptations) but not otherwise.
+5. Representations, Warranties and Disclaimer
+
+UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING AND TO THE FULLEST EXTENT PERMITTED BY APPLICABLE LAW, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO THIS EXCLUSION MAY NOT APPLY TO YOU.
+
+6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. Termination
+
+This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Adaptations or Collections from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License.
+Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above.
+8. Miscellaneous
+
+Each time You Distribute or Publicly Perform the Work or a Collection, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License.
+Each time You Distribute or Publicly Perform an Adaptation, Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License.
+If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent.
+This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You.
+The rights granted under, and the subject matter referenced, in this License were drafted utilizing the terminology of the Berne Convention for the Protection of Literary and Artistic Works (as amended on September 28, 1979), the Rome Convention of 1961, the WIPO Copyright Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 and the Universal Copyright Convention (as revised on July 24, 1971). These rights and subject matter take effect in the relevant jurisdiction in which the License terms are sought to be enforced according to the corresponding provisions of the implementation of those treaty provisions in the applicable national law. If the standard suite of rights granted under applicable copyright law includes additional rights not granted under this License, such additional rights are deemed to be included in the License; this License is not intended to restrict the license of any rights under applicable law.
+Creative Commons Notice
+Creative Commons is not a party to this License, and makes no warranty whatsoever in connection with the Work. Creative Commons will not be liable to You or any party on any legal theory for any damages whatsoever, including without limitation any general, special, incidental or consequential damages arising in connection to this license. Notwithstanding the foregoing two (2) sentences, if Creative Commons has expressly identified itself as the Licensor hereunder, it shall have all rights and obligations of Licensor.
+
+Except for the limited purpose of indicating to the public that the Work is licensed under the CCPL, Creative Commons does not authorize the use by either party of the trademark "Creative Commons" or any related trademark or logo of Creative Commons without the prior written consent of Creative Commons. Any permitted use will be in compliance with Creative Commons' then-current trademark usage guidelines, as may be published on its website or otherwise made available upon request from time to time. For the avoidance of doubt, this trademark restriction does not form part of this License.
+
+Creative Commons may be contacted at https://creativecommons.org/.```
+
+
+
+
diff --git a/modular_sand/icons/obj/license.html b/modular_sand/icons/obj/license.html
new file mode 100644
index 0000000000000..753a9cc833ab9
--- /dev/null
+++ b/modular_sand/icons/obj/license.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+ modular_sand/icons/obj/license.txt - SPLURT Station 13
+
+
+
+
+modular_sand/icons/obj/license.txt
+
+
+
+
+ modular_sand/icons/obj/plushies.dmi's icon state of secdrake and meddrake by Mizartz. It has been licensed under the CC BY-NC-SA 3.0 license.
+
+CC BY-NC-SA 3.0 https://creativecommons.org/licenses/by-nc-sa/3.0/```
+
+
+
+
diff --git a/modular_splurt.html b/modular_splurt.html
new file mode 100644
index 0000000000000..cec92a9ae8276
--- /dev/null
+++ b/modular_splurt.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ modular_splurt/README.md - SPLURT Station 13
+
+
+
+
+About modularizing defines
+
+
+
+
+ Since #define clauses can't be properly modularized and need to be loaded first than the rest of the code for it to catch them, the modular_splurt/code/_DEFINES/ folder has been deleted and all of its contents have been moved to code\__SPLURTCODE\DEFINES
+Please use this folder the same way you'd use the _DEFINES folder once found inside this directory
+
+
+
diff --git a/modular_splurt/code/__HELPERS/spawns.html b/modular_splurt/code/__HELPERS/spawns.html
new file mode 100644
index 0000000000000..9bd85b3f279fe
--- /dev/null
+++ b/modular_splurt/code/__HELPERS/spawns.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ modular_splurt/code/__HELPERS/spawns.dm - SPLURT Station 13
+
+
+
+
+modular_splurt/code/__HELPERS/spawns.dm
+
+
+
+
+ /proc/podspawn
+ One proc for easy spawning of pods in the code to drop off items before whizzling (please don't proc call this in game, it will destroy you)
+
+
+
diff --git a/modular_splurt/code/controllers/subsystem/discord.html b/modular_splurt/code/controllers/subsystem/discord.html
new file mode 100644
index 0000000000000..f02b312fcc17e
--- /dev/null
+++ b/modular_splurt/code/controllers/subsystem/discord.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ modular_splurt/code/controllers/subsystem/discord.dm - SPLURT Station 13
+
+
+
+
+modular_splurt/code/controllers/subsystem/discord.dm
+
+
+
+
+
+
+
diff --git a/modular_splurt/code/datums/dna.html b/modular_splurt/code/datums/dna.html
new file mode 100644
index 0000000000000..76e950106e5cb
--- /dev/null
+++ b/modular_splurt/code/datums/dna.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ modular_splurt/code/datums/dna.dm - SPLURT Station 13
+
+
+
+
+modular_splurt/code/datums/dna.dm
+
+
+
+
+
+
+
diff --git a/modular_splurt/code/datums/interactions/lewd/lewd_datums.html b/modular_splurt/code/datums/interactions/lewd/lewd_datums.html
new file mode 100644
index 0000000000000..49f3cd001e321
--- /dev/null
+++ b/modular_splurt/code/datums/interactions/lewd/lewd_datums.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ modular_splurt/code/datums/interactions/lewd/lewd_datums.dm - SPLURT Station 13
+
+
+
+
+modular_splurt/code/datums/interactions/lewd/lewd_datums.dm
+
+
+
+
+
+
+
diff --git a/modular_splurt/code/datums/status_effects/pregnancy.html b/modular_splurt/code/datums/status_effects/pregnancy.html
new file mode 100644
index 0000000000000..2c8502824cce2
--- /dev/null
+++ b/modular_splurt/code/datums/status_effects/pregnancy.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ modular_splurt/code/datums/status_effects/pregnancy.dm - SPLURT Station 13
+
+
+
+
+modular_splurt/code/datums/status_effects/pregnancy.dm
+
+
+
+
+
+
+
diff --git a/modular_splurt/code/game/area/areas/shuttles.html b/modular_splurt/code/game/area/areas/shuttles.html
new file mode 100644
index 0000000000000..79963f3728e80
--- /dev/null
+++ b/modular_splurt/code/game/area/areas/shuttles.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ modular_splurt/code/game/area/areas/shuttles.dm - SPLURT Station 13
+
+
+
+
+modular_splurt/code/game/area/areas/shuttles.dm
+
+
+
+
+ /area /shuttle/slaveship Slave Trader Shuttle
+
+
+
diff --git a/modular_splurt/code/game/objects/items/lewd_items/leash.html b/modular_splurt/code/game/objects/items/lewd_items/leash.html
new file mode 100644
index 0000000000000..6a65f3b087169
--- /dev/null
+++ b/modular_splurt/code/game/objects/items/lewd_items/leash.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ modular_splurt/code/game/objects/items/lewd_items/leash.dm - SPLURT Station 13
+
+
+
+
+modular_splurt/code/game/objects/items/lewd_items/leash.dm
+
+
+
+
+
+
+
diff --git a/modular_splurt/code/game/objects/items/robot/robot_items.html b/modular_splurt/code/game/objects/items/robot/robot_items.html
new file mode 100644
index 0000000000000..c2b4e8c0fc16f
--- /dev/null
+++ b/modular_splurt/code/game/objects/items/robot/robot_items.html
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+ modular_splurt/code/game/objects/items/robot/robot_items.dm - SPLURT Station 13
+
+
+
+
+modular_splurt/code/game/objects/items/robot/robot_items.dm
+
+
+
+Define Details
+MAX_PAPER_INTEGRATED_CLIPBOARD
+
+
+
+ Cargo Borg Items
+
+
+
diff --git a/modular_splurt/code/game/objects/structures/bed_chairs/sofa.html b/modular_splurt/code/game/objects/structures/bed_chairs/sofa.html
new file mode 100644
index 0000000000000..1a98cebc44e6e
--- /dev/null
+++ b/modular_splurt/code/game/objects/structures/bed_chairs/sofa.html
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+ modular_splurt/code/game/objects/structures/bed_chairs/sofa.dm - SPLURT Station 13
+
+
+
+
+modular_splurt/code/game/objects/structures/bed_chairs/sofa.dm
+
+
+
+Define Details
+COLORED_SOFA
+ (path, color_name, sofa_color)
+
+
+
+ Create colored subtypes for sofas
+
+
+
diff --git a/modular_splurt/code/game/objects/structures/cannons/cannon.html b/modular_splurt/code/game/objects/structures/cannons/cannon.html
new file mode 100644
index 0000000000000..c9f26f372aa6b
--- /dev/null
+++ b/modular_splurt/code/game/objects/structures/cannons/cannon.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+ modular_splurt/code/game/objects/structures/cannons/cannon.dm - SPLURT Station 13
+
+
+
+
+modular_splurt/code/game/objects/structures/cannons/cannon.dm
+
+
+
+Define Details
+BAD_FUEL_DAMAGE_TAX
+
+
+
+ how much projectile damage is lost when using a bad fuel
BAD_FUEL_EXPLODE_PROBABILTY
+
+
+
+ extra chance it explodes upon firing
+
+
+
diff --git a/modular_splurt/code/modules/antagonists/_common/antag_spawner.html b/modular_splurt/code/modules/antagonists/_common/antag_spawner.html
new file mode 100644
index 0000000000000..0472f928e5d1b
--- /dev/null
+++ b/modular_splurt/code/modules/antagonists/_common/antag_spawner.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ modular_splurt/code/modules/antagonists/_common/antag_spawner.dm - SPLURT Station 13
+
+
+
+
+modular_splurt/code/modules/antagonists/_common/antag_spawner.dm
+
+
+
+
+ /obj /item /antag_spawner/slaver_borg SLAVER BORG
+
+
+
diff --git a/modular_splurt/code/modules/clothing/lewd_clothing/collar/kink_collars.html b/modular_splurt/code/modules/clothing/lewd_clothing/collar/kink_collars.html
new file mode 100644
index 0000000000000..26b8d0b08a543
--- /dev/null
+++ b/modular_splurt/code/modules/clothing/lewd_clothing/collar/kink_collars.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ modular_splurt/code/modules/clothing/lewd_clothing/collar/kink_collars.dm - SPLURT Station 13
+
+
+
+
+modular_splurt/code/modules/clothing/lewd_clothing/collar/kink_collars.dm
+
+
+
+
+ /obj /item /mind_controller MIND CONTROL COLLAR
+
+
+
diff --git a/modular_splurt/code/modules/clothing/lewd_clothing/foot/lewd_shoes.html b/modular_splurt/code/modules/clothing/lewd_clothing/foot/lewd_shoes.html
new file mode 100644
index 0000000000000..c50dc10965015
--- /dev/null
+++ b/modular_splurt/code/modules/clothing/lewd_clothing/foot/lewd_shoes.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ modular_splurt/code/modules/clothing/lewd_clothing/foot/lewd_shoes.dm - SPLURT Station 13
+
+
+
+
+modular_splurt/code/modules/clothing/lewd_clothing/foot/lewd_shoes.dm
+
+
+
+
+
+
+
diff --git a/modular_splurt/code/modules/clothing/misc/body_camera.html b/modular_splurt/code/modules/clothing/misc/body_camera.html
new file mode 100644
index 0000000000000..8e6e947dfd6b9
--- /dev/null
+++ b/modular_splurt/code/modules/clothing/misc/body_camera.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ modular_splurt/code/modules/clothing/misc/body_camera.dm - SPLURT Station 13
+
+
+
+
+modular_splurt/code/modules/clothing/misc/body_camera.dm
+
+
+
+
+
+
+
diff --git a/modular_splurt/code/modules/clothing/suits/cloaks.html b/modular_splurt/code/modules/clothing/suits/cloaks.html
new file mode 100644
index 0000000000000..57092a1f016d6
--- /dev/null
+++ b/modular_splurt/code/modules/clothing/suits/cloaks.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ modular_splurt/code/modules/clothing/suits/cloaks.dm - SPLURT Station 13
+
+
+
+
+modular_splurt/code/modules/clothing/suits/cloaks.dm
+
+
+
+
+
+
+
diff --git a/modular_splurt/code/modules/discord/discord_link_record.html b/modular_splurt/code/modules/discord/discord_link_record.html
new file mode 100644
index 0000000000000..ae119fb4881ee
--- /dev/null
+++ b/modular_splurt/code/modules/discord/discord_link_record.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ modular_splurt/code/modules/discord/discord_link_record.dm - SPLURT Station 13
+
+
+
+
+modular_splurt/code/modules/discord/discord_link_record.dm
+
+
+
+
+
+
+
diff --git a/modular_splurt/code/modules/jobs/job_types/blueshield.html b/modular_splurt/code/modules/jobs/job_types/blueshield.html
new file mode 100644
index 0000000000000..ba478ddfad33f
--- /dev/null
+++ b/modular_splurt/code/modules/jobs/job_types/blueshield.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ modular_splurt/code/modules/jobs/job_types/blueshield.dm - SPLURT Station 13
+
+
+
+
+modular_splurt/code/modules/jobs/job_types/blueshield.dm
+
+
+
+
+
+
+
diff --git a/modular_splurt/code/modules/mapping/modular_map_loader.html b/modular_splurt/code/modules/mapping/modular_map_loader.html
new file mode 100644
index 0000000000000..b4b5357c70303
--- /dev/null
+++ b/modular_splurt/code/modules/mapping/modular_map_loader.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+ modular_splurt/code/modules/mapping/modular_map_loader/README.md - SPLURT Station 13
+
+
+
+
+Modular Map Loader modular_splurt/code/modules/mapping/modular_map_loader/README.md
+
+
+
+
+ Concept
+Modular map loading is a system to allow maps to be generated with random variants by selecting from a set of pre-made modules. The system is designed to be as simple as possible for mappers to use, with a minimum of interaction with the code required.
+Implementation /obj/modular_map_root
+This root object handled picking and loading in map modules. It has two variables, and one proc.
+
+var/config_file
- A string, points to a TOML configuration file, which is used to hold the information necessary to pull the correct map files and place them on the correct roots. This will be the same for all roots on a map.
+var/key
- A string, used to pull a list of .dmm
files from the configuration file.
+load_map()
- Called asynchronously in the root's Initialize()
. This proc creates a new instance of /datum/map_template/map_module
, ingests the configuration file config_file
points to, and picks a .dmm
file path which maps to the root's key
, by picking a random filename from among those which key
maps to, and appending it to a folder path. This file path is passed into the map templace instance's load()
, and the template takes over.
+
+INITIALIZE_IMMEDIATE is used to ensure the ruins are loaded at the right time to avoid runtime errors related to lighting.
+/datum/map_template/map_module
+This map templace subtype is responsible for loading in the module, it has two variables and two relevant procs.
+
+var/x_offset
and var/y_offset
- Integers, used to store the offsets used to correctly align the module when it is loaded.
+load()
- Extends the functionality of the general map template's load()
to allow a map to be specified at runtime. This means preload_size()
must be called again here as the template's map file has been changed. The origin turf for the map to be loaded from is set using the offsets, and the map is loaded as per the parent.
+preload_size()
- Extends the functionality of the general map template's preload_size()
to run the discover_offset
proc, calculating the offset of /obj/modular_map_connector
and setting the offset variables accordingly.
+
+/obj/modular_map_connector
+This object is used only to determine the offsets to be used on loading, and has no other functionality.
+TOML configuration
+This TOML file is used to map between a list of .dmm
files and a string key. The file consists of two parts. The first is a line
+directory = "_maps/etc/"
+
+which points at a folder containing the .dmm
files of the modules used in the map. The second is a series of tables
+[rooms.example]
+modules = ["example_1.dmm", "example_2.dmm"]
+
+which contains the mapping between the key "example"
and the list of filenames ["example_1.dmm", "example_2.dmm"]
.
+/datum/unit_test/modular_map_loader
+This is the unit test for modular map loading. It performs two checks on every subtype of /obj/modular_map_root
. First it checks if the file config_file
points at, and if it does not the test is failed because the file does not exist. If it does exist, it then attempts to read the file, if this is null it means the fild is not valid TOML, and the test is failed because the TOML file is invalid.
+How-To
+This section will cover the basics of how to use map modules as a mapper. If you want a concrete example to look at, the space ruin _maps/RandomRuins/SpaceRuins/DJstation.dmm
and its associated code, configuration and modules employ all the techniques covered in this tutorial.
+The Main Map
+First we need to create a map, as we usually would. Let's say we want to create a new space ruin foobar.dmm
, and we put it in the appropriate folder as usual, _maps/RandomRuins/SpaceRuins/foobar.dmm
. We now need to create three more things.
+
+code/modules/ruins/spaceruin_code/foobar.dm
- A code file like would be used to store any code specific to this map.
+strings/modular_maps/foobar.toml
- A configuration file, this will be looked at in more detail later.
+_maps/RandomRuins/SpaceRuins/foobar/
- A new subfolder, which is where we will put the .dmm
files for the modules.
+
+In code/modules/ruins/spaceruin_code/foobar.dm
we need to add a small piece of code to define a new modular map root type for our map, which should look like this
+/obj/modular_map_root/foobar
+ config_file = "strings/modular_maps/foobar.toml"
+
+This means when we place root objects /obj/modular_map_root
in our new map, we use this subtype that points to the correct configuration file.
+When creating our main map, we place one of these roots in the location we want to generate a module at. Typically this would be placed at a natural landmark, such as a doorway. We then edit the varaibles of the placed root object, and set the key
var to some string, let's use key = vault
. Make the rest of the map, ensuring that every root you want to use a unique set of modules has a unique key
.
+Module Maps
+Now we need to make the modules to be placed on our roots. These will be saved in the folder we created earlier, _maps/RandomRuins/SpaceRuins/foobar/
. Modules do not have to be the same size, so long as all modules will fit properly on the root without running into other parts of the map.
+When making a module, you need to include a connector object /obj/modular_map_connector
. When the module is loaded, it will be offset so this connector is placed on top of the root on the main map.
+We will be making the first variant of our vault module, so we save this as vault_1.dmm
, following the format [key]_[number].dmm
. Keep doing this until all your modules have been made.
+If you wish, you can also place another root on a module, if for some reason that module's position is dependent on the current one. IF you do this, make sure you've placed a root with the same key on every variant of the current module (unless you only want it to appear on certain varaints of this one.)
+Configuration
+Now we go back to our configuration file strings/modular_maps/foobar.toml
. Say we ended up using three different sets of modules in our map, vault
, airlock
and bathroom
, each of which have two variants. We want our .toml
file to look like this
+directory = "_maps/RandomRuins/SpaceRuins/foobar/"
+
+[rooms.vault]
+modules = ["vault_1.dmm", "vault_2.dmm"]
+
+[rooms.airlock]
+modules = ["airlock_1.dmm", "airlock_2.dmm"]
+
+[rooms.bathroom]
+modules = ["bathroom_1.dmm", "bathroom_2.dmm"]
+
+Let's break down what is happening here.
+directory = "_maps/RandomRuins/SpaceRuins/foobar/"
points to the folder where our modules are stored.
+[rooms.vault]
identifies the following line as being the modules for a root with key = vault
.
+modules = ["vault_1.dmm", "vault_2.dmm"]
specifies which map files within the folder are to be associated with this key.
+Once this configuration is done, the map should be fully functional. Compile and run, place your map somewhere, and continue doing this until you have satisfied yourself that everything looks how you expected it to. Remember to do everything else you need to do when adding any new ruin, or whatever kind of map you made.
+Common Mistakes
+
+My map has modules that didn't load!
+
+Check your configuration is correct. Do the filenames given for the problem root match the names of the map files? Is the key specified in the configuration file the same as the one on the root in the map?
+
+A module is loading in the wrong location!
+
+Check the positioning of the connector is correct, and that only one is placed on the module.
+
+My ruin is spawning too close to or overlapping with something!
+
+Make sure your main map is large enough to fully contain the most expansive variation that can possibly be chosen.
+
+Parts of my map are overlapping with each other!
+
+Make sure modules placed adjacent or close to each other have no combination of variants which can overlap with each other, this may take some trial and error in complicated cases.
+
+My map still isn't working and I don't know what's wrong!
+
+Ping @Maintainer in our coding channels if you need any help or find any problems
+
+
+
diff --git a/modular_splurt/code/modules/mob/dead/new_player/sprite_accesories/body_markings.html b/modular_splurt/code/modules/mob/dead/new_player/sprite_accesories/body_markings.html
new file mode 100644
index 0000000000000..bf69ab2040ce3
--- /dev/null
+++ b/modular_splurt/code/modules/mob/dead/new_player/sprite_accesories/body_markings.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ modular_splurt/code/modules/mob/dead/new_player/sprite_accesories/body_markings.dm - SPLURT Station 13
+
+
+
+
+modular_splurt/code/modules/mob/dead/new_player/sprite_accesories/body_markings.dm
+
+
+
+
+ /datum /sprite_accessory/mam_body_markings/pigeon Furry Markings
+ /datum /sprite_accessory/insect_fluff/hyena Insect Markings
+
+
+
diff --git a/modular_splurt/code/modules/mob/living/silicon/robot/robot_modules.html b/modular_splurt/code/modules/mob/living/silicon/robot/robot_modules.html
new file mode 100644
index 0000000000000..290fe9b2d35f7
--- /dev/null
+++ b/modular_splurt/code/modules/mob/living/silicon/robot/robot_modules.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ modular_splurt/code/modules/mob/living/silicon/robot/robot_modules.dm - SPLURT Station 13
+
+
+
+
+modular_splurt/code/modules/mob/living/silicon/robot/robot_modules.dm
+
+
+
+
+
+
+
diff --git a/modular_splurt/code/modules/research/designs/mechfabricator_designs.html b/modular_splurt/code/modules/research/designs/mechfabricator_designs.html
new file mode 100644
index 0000000000000..cfdfe16092dca
--- /dev/null
+++ b/modular_splurt/code/modules/research/designs/mechfabricator_designs.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ modular_splurt/code/modules/research/designs/mechfabricator_designs.dm - SPLURT Station 13
+
+
+
+
+modular_splurt/code/modules/research/designs/mechfabricator_designs.dm
+
+
+
+
+
+
+
diff --git a/modular_splurt/code/modules/vehicles/mecha/combat/savannah_ivanov.html b/modular_splurt/code/modules/vehicles/mecha/combat/savannah_ivanov.html
new file mode 100644
index 0000000000000..391d332221594
--- /dev/null
+++ b/modular_splurt/code/modules/vehicles/mecha/combat/savannah_ivanov.html
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+ modular_splurt/code/modules/vehicles/mecha/combat/savannah_ivanov.dm - SPLURT Station 13
+
+
+
+
+modular_splurt/code/modules/vehicles/mecha/combat/savannah_ivanov.dm
+
+
+
+Define Details
+SKYFALL_CHARGELEVEL_LAUNCH
+
+
+
+ enough charge level to take off, basically done charging
SKYFALL_SINGLE_CHARGE_TIME
+
+
+
+ how much time between charge_level going up by 1
TOTAL_SKYFALL_LEAP_TIME
+
+
+
+ how much time you're in the air
+
+
+
diff --git a/modular_splurt/code/modules/vehicles/mecha/mecha_parts.html b/modular_splurt/code/modules/vehicles/mecha/mecha_parts.html
new file mode 100644
index 0000000000000..73001c68b0c44
--- /dev/null
+++ b/modular_splurt/code/modules/vehicles/mecha/mecha_parts.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ modular_splurt/code/modules/vehicles/mecha/mecha_parts.dm - SPLURT Station 13
+
+
+
+
+modular_splurt/code/modules/vehicles/mecha/mecha_parts.dm
+
+
+
+
+
+
+
diff --git a/modular_splurt/sound/voice/catpeople/credits.html b/modular_splurt/sound/voice/catpeople/credits.html
new file mode 100644
index 0000000000000..3893e1b03fc2b
--- /dev/null
+++ b/modular_splurt/sound/voice/catpeople/credits.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ modular_splurt/sound/voice/catpeople/credits.txt - SPLURT Station 13
+
+
+
+
+modular_splurt/sound/voice/catpeople/credits.txt
+
+
+
+
+ Sound Files ported from https://github.com/Nyanotrasen/Nyanotrasen/ created by Elijahrane```
+
+
+
+
diff --git a/obj.html b/obj.html
new file mode 100644
index 0000000000000..1c0727ae128a2
--- /dev/null
+++ b/obj.html
@@ -0,0 +1,114 @@
+
+
+
+
+
+
+ /obj - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ always_reskinnable Can always be modified
+ bare_wound_bonus If this attacks a human with no wound armor on the affected body part, add this to the wound mod. Some attacks may be significantly worse at wounding if there's even a slight layer of armor to absorb some of it vs bare flesh
+ current_skin The item reskin
+ damage_deflection Damage under this value will be completely ignored
+ reskin_binding How to bring up the reskinning menu
+ unique_reskin List of options to reskin.
+ wound_bonus How good a given object is at causing wounds on carbons. Higher values equal better shots at creating serious wounds. Procs
+ CanAStarPass This proc is used for telling whether something can pass by this object in a given direction, for use by the pathfinding system.
+ fire_act FIRE
+ reskin_obj Do you want to make overrides, of course you do! Will be called if an object was reskinned successfully
+ setAnchored @depricated DO NOT USE
+ Var Details always_reskinnable
+
+
+
+
+
+ Can always be modified
bare_wound_bonus
+
+
+
+
+
+ If this attacks a human with no wound armor on the affected body part, add this to the wound mod. Some attacks may be significantly worse at wounding if there's even a slight layer of armor to absorb some of it vs bare flesh
current_skin
+
+
+
+
+
+ The item reskin
damage_deflection
+
+
+
+
+
+ Damage under this value will be completely ignored
reskin_binding
+
+
+
+
+
+ How to bring up the reskinning menu
unique_reskin
+
+
+
+
+
+ List of options to reskin.
wound_bonus
+
+
+
+
+
+ How good a given object is at causing wounds on carbons. Higher values equal better shots at creating serious wounds.
Proc Details CanAStarPass
+
+ This proc is used for telling whether something can pass by this object in a given direction, for use by the pathfinding system.
+Trying to generate one long path across the station will call this proc on every single object on every single tile that we're seeing if we can move through, likely
+multiple times per tile since we're likely checking if we can access said tile from multiple directions, so keep these as lightweight as possible.
+Arguments:
+
+ID- An ID card representing what access we have (and thus if we can open things like airlocks or windows to pass through them). The ID card's physical location does not matter, just the reference
+to_dir- What direction we're trying to move in, relevant for things like directional windows that only block movement in certain directions
+caller- The movable we're checking pass flags for, if we're making any such checks
+ fire_act(exposed_temperature, exposed_volume)
+
+
+
+
+
+ FIRE
reskin_obj
+
+ Do you want to make overrides, of course you do! Will be called if an object was reskinned successfully
setAnchored(anchorvalue)
+
+
+
+
+
+ @depricated DO NOT USE
+
+
+
diff --git a/obj/belly.html b/obj/belly.html
new file mode 100644
index 0000000000000..1d304337e1161
--- /dev/null
+++ b/obj/belly.html
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+ /obj/belly - SPLURT Station 13
+
+
+
+
+
+
+Non-object variables
+Object-holding variables
Procs
+ process_belly Non-object variables
+Object-holding variables
Proc Details process_belly(times_fired, wait)
+
+
+
+
+
+ Non-object variables
+Object-holding variables
+
+
+
diff --git a/obj/docking_port.html b/obj/docking_port.html
new file mode 100644
index 0000000000000..c0a4568cb275b
--- /dev/null
+++ b/obj/docking_port.html
@@ -0,0 +1,140 @@
+
+
+
+
+
+
+ /obj/docking_port - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ delete_after Delete this port after ship fly off.
+ dheight position relative to covered area, parallel to dir. You shouldn't modify this for mobile dockingports, set automatically.
+ dir Common standard is for this to point -away- from the dockingport door, ie towards the ship
+ dwidth position relative to covered area, perpendicular to dir. You shouldn't modify this for mobile dockingports, set automatically.
+ height size of covered area, parallel to dir. You shouldn't modify this for mobile dockingports, set automatically.
+ hidden are we invisible to shuttle navigation computers?
+ id The identifier of the port or ship.
+This will be used in numerous other places like the console,
+stationary ports and whatnot to tell them your ship's mobile
+port can be used in these places, or the docking port is compatible, etc.
+ port_destinations Possible destinations
+ registered are we registered in SSshuttles?
+ width size of covered area, perpendicular to dir. You shouldn't modify this for mobile dockingports, set automatically. Procs
+ register register to SSshuttles
+ return_coords returns a list(x0,y0, x1,y1) where points 0 and 1 are bounding corners of the projected rectangle
+ return_ordered_turfs returns turfs within our projected rectangle in a specific order.this ensures that turfs are copied over in the same order, regardless of any rotation
+ return_turfs returns turfs within our projected rectangle in no particular order
+ unregister unregister from SSshuttles
+ Var Details delete_after
+
+
+
+
+
+ Delete this port after ship fly off.
dheight
+
+
+
+
+
+ position relative to covered area, parallel to dir. You shouldn't modify this for mobile dockingports, set automatically.
dir
+
+
+
+
+
+ Common standard is for this to point -away- from the dockingport door, ie towards the ship
dwidth
+
+
+
+
+
+ position relative to covered area, perpendicular to dir. You shouldn't modify this for mobile dockingports, set automatically.
height
+
+
+
+
+
+ size of covered area, parallel to dir. You shouldn't modify this for mobile dockingports, set automatically.
hidden
+
+
+
+
+
+ are we invisible to shuttle navigation computers?
id
+
+
+
+
+
+ The identifier of the port or ship.
+This will be used in numerous other places like the console,
+stationary ports and whatnot to tell them your ship's mobile
+port can be used in these places, or the docking port is compatible, etc.
port_destinations
+
+
+
+
+
+ Possible destinations
registered
+
+
+
+
+
+ are we registered in SSshuttles?
width
+
+
+
+
+
+ size of covered area, perpendicular to dir. You shouldn't modify this for mobile dockingports, set automatically.
Proc Details register()
+
+
+
+
+
+ register to SSshuttles
return_coords(_x, _y, _dir)
+
+
+
+
+
+ returns a list(x0,y0, x1,y1) where points 0 and 1 are bounding corners of the projected rectangle
return_ordered_turfs(_x, _y, _z, _dir)
+
+
+
+
+
+ returns turfs within our projected rectangle in a specific order.this ensures that turfs are copied over in the same order, regardless of any rotation
return_turfs()
+
+
+
+
+
+ returns turfs within our projected rectangle in no particular order
unregister()
+
+
+
+
+
+ unregister from SSshuttles
+
+
+
diff --git a/obj/docking_port/mobile.html b/obj/docking_port/mobile.html
new file mode 100644
index 0000000000000..de52426c7b858
--- /dev/null
+++ b/obj/docking_port/mobile.html
@@ -0,0 +1,140 @@
+
+
+
+
+
+
+ /obj/docking_port/mobile - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ callTime time spent in transit (deciseconds). Should not be lower then 10 seconds without editing the animation of the hyperspace ripples.
+ can_move_docking_ports if this shuttle can move docking ports other than the one it is docked at
+ ignitionTime time spent "starting the engines". Also rate limits how often we try to reserve transit space if its ever full of transiting shuttles.
+ mode current shuttle mode
+ movement_force Whether or not you want your ship to knock people down, and also whether it will throw them several tiles upon launching.
+ parallax_speed parallax speed in seconds per loop
+ port_direction relative direction of the docking port from the front of the shuttle. NORTH is towards front, EAST would be starboard side, WEST port, etc.
+ prearrivalTime time spent after transit 'landing' before actually arriving
+ preferred_direction The direction the shuttle prefers to travel in, ie what direction the animation will cause it to appear to be traveling in
+ rechargeTime time spent after arrival before being able to begin ignition
+ timer used as a timer (if you want time left to complete move, use timeLeft proc) Procs
+ beforeShuttleMove Misc move procs
+ get_status_text_tgui Gets shuttle location status in a form of string for tgui interfaces
+ initiate_docking This is the main proc. It instantly moves our mobile port to stationary port new_dock
.
+ preflight_check Both lists are associative with a turf:bitflag structure. (new_turfs bitflag space unused currently)
+The bitflag contains the data for what inhabitants of that coordinate should be moved to the new location
+The bitflags can be found in __DEFINES/shuttles.dm
+ Var Details callTime
+
+
+
+
+
+ time spent in transit (deciseconds). Should not be lower then 10 seconds without editing the animation of the hyperspace ripples.
can_move_docking_ports
+
+
+
+
+
+ if this shuttle can move docking ports other than the one it is docked at
ignitionTime
+
+
+
+
+
+ time spent "starting the engines". Also rate limits how often we try to reserve transit space if its ever full of transiting shuttles.
mode
+
+
+
+
+
+ current shuttle mode
movement_force
+
+
+
+
+
+ Whether or not you want your ship to knock people down, and also whether it will throw them several tiles upon launching.
parallax_speed
+
+
+
+
+
+ parallax speed in seconds per loop
port_direction
+
+
+
+
+
+ relative direction of the docking port from the front of the shuttle. NORTH is towards front, EAST would be starboard side, WEST port, etc.
prearrivalTime
+
+
+
+
+
+ time spent after transit 'landing' before actually arriving
preferred_direction
+
+
+
+
+
+ The direction the shuttle prefers to travel in, ie what direction the animation will cause it to appear to be traveling in
rechargeTime
+
+
+
+
+
+ time spent after arrival before being able to begin ignition
timer
+
+
+
+
+
+ used as a timer (if you want time left to complete move, use timeLeft proc)
Proc Details beforeShuttleMove
+
+ Misc move procs
get_status_text_tgui()
+
+
+
+
+
+ Gets shuttle location status in a form of string for tgui interfaces
initiate_docking
+
+ This is the main proc. It instantly moves our mobile port to stationary port new_dock
.
preflight_check(/list/old_turfs, /list/new_turfs, /list/areas_to_move, rotation)
+
+
+
+
+
+ Both lists are associative with a turf:bitflag structure. (new_turfs bitflag space unused currently)
+The bitflag contains the data for what inhabitants of that coordinate should be moved to the new location
+The bitflags can be found in __DEFINES/shuttles.dm
+Hiding turfs if necessary
+Unhiding turfs if necessary
+
+
+
diff --git a/obj/docking_port/stationary/picked.html b/obj/docking_port/stationary/picked.html
new file mode 100644
index 0000000000000..96afa4dd0e0c7
--- /dev/null
+++ b/obj/docking_port/stationary/picked.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/docking_port/stationary/picked - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ shuttlekeys Holds a list of map name strings for the port to pick from
+ Var Details shuttlekeys
+
+
+
+
+
+ Holds a list of map name strings for the port to pick from
+
+
+
diff --git a/obj/docking_port/stationary/random.html b/obj/docking_port/stationary/random.html
new file mode 100644
index 0000000000000..6848f64b68202
--- /dev/null
+++ b/obj/docking_port/stationary/random.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /obj/docking_port/stationary/random - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ edge_distance Minimal distance from the map edge, setting this too low can result in shuttle landing on the edge and getting "sliced"
+ target_area The area the pod tries to land at
+ Var Details edge_distance
+
+
+
+
+
+ Minimal distance from the map edge, setting this too low can result in shuttle landing on the edge and getting "sliced"
target_area
+
+
+
+
+
+ The area the pod tries to land at
+
+
+
diff --git a/obj/durand_shield.html b/obj/durand_shield.html
new file mode 100644
index 0000000000000..49ce877e8f57b
--- /dev/null
+++ b/obj/durand_shield.html
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+ /obj/durand_shield - SPLURT Station 13
+
+
+
+
+
+
+Shield processing
+*An object to take the hit for us when using the Durand's defense mode.
+It is spawned in during the durand's initilization, and always stays on the same tile.
+Normally invisible, until defense mode is actvated. When the durand detects an attack that should be blocked, the
+attack is passed to the shield. The shield takes the damage, uses it to calculate charge cost, and then sets its
+own integrity back to max. Shield is automatically dropped if we run out of power or the user gets out.
Vars
+ chassis Our link back to the durand
+ switching To keep track of things during the animation Procs
+ activate Handles activating and deactivating the shield. This proc is called by a signal sent from the mech's action button
+and relayed by the mech itself. The "forced" variabe, signal_args[1], will skip the to-pilot text and is meant for when
+the shield is disabled by means other than the action button (like running out of power)
+Arguments:
+ Var Details
+ Our link back to the durand
switching
+
+
+
+
+
+ To keep track of things during the animation
Proc Details activate(/datum /source, /mob /owner, /list/signal_args)
+
+
+
+
+
+ Handles activating and deactivating the shield. This proc is called by a signal sent from the mech's action button
+and relayed by the mech itself. The "forced" variabe, signal_args[1], will skip the to-pilot text and is meant for when
+the shield is disabled by means other than the action button (like running out of power)
+Arguments:
+
+source: the shield
+owner: mob that activated the shield
+signal_args: whether it's forced
+
+
+
+
diff --git a/obj/effect/abstract/parry.html b/obj/effect/abstract/parry.html
new file mode 100644
index 0000000000000..16c42501e956a
--- /dev/null
+++ b/obj/effect/abstract/parry.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/effect/abstract/parry - SPLURT Station 13
+
+
+
+
+
+
+Effects
Vars
+ owner The person we're on
+ Var Details owner
+
+
+
+
+
+ The person we're on
+
+
+
diff --git a/obj/effect/anomaly.html b/obj/effect/anomaly.html
new file mode 100644
index 0000000000000..43f9a7c83e8f9
--- /dev/null
+++ b/obj/effect/anomaly.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/effect/anomaly - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details core_drop_chance
+
+
+
+
+
+ chance we drop a core when neutralized
+
+
+
diff --git a/obj/effect/broken_illusion.html b/obj/effect/broken_illusion.html
new file mode 100644
index 0000000000000..bb5827c991e41
--- /dev/null
+++ b/obj/effect/broken_illusion.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /obj/effect/broken_illusion - SPLURT Station 13
+
+
+
+
+
+
+Proc Details show_presence()
+
+
+
+
+
+ Makes this obj appear out of nothing
+
+
+
diff --git a/obj/effect/decal/chempuff.html b/obj/effect/decal/chempuff.html
new file mode 100644
index 0000000000000..823e80ed96e24
--- /dev/null
+++ b/obj/effect/decal/chempuff.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /obj/effect/decal/chempuff - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ hit_thing proc called to handle us hitting something
Proc Details hit_thing(/atom /A, bump_hit)
+
+
+
+
+
+ proc called to handle us hitting something
+
+
+
diff --git a/obj/effect/decal/cleanable.html b/obj/effect/decal/cleanable.html
new file mode 100644
index 0000000000000..1a990dd832d69
--- /dev/null
+++ b/obj/effect/decal/cleanable.html
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+ /obj/effect/decal/cleanable - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details persistence_allow_stacking
+
+
+
+
+
+ Can we stack multiple in one tile?
persistent
+
+
+
+
+
+ Is this kind of cleanable decal persistent
wiped_by_floor_change
+
+
+
+
+
+ Are we deleted by turf changes?
Proc Details PersistenceLoad(/list/data)
+
+
+
+
+
+ Loads from a data list.
PersistenceSave(/list/data)
+
+
+
+
+
+ A data list is passed into this.
+This should return null to skip saving, or the type of data to save. Type must be /cleanable.
+
+
+
diff --git a/obj/effect/decal/cleanable/conveyor_sorter.html b/obj/effect/decal/cleanable/conveyor_sorter.html
new file mode 100644
index 0000000000000..a0fdf65f0c38c
--- /dev/null
+++ b/obj/effect/decal/cleanable/conveyor_sorter.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ /obj/effect/decal/cleanable/conveyor_sorter - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ parent_item the parent conveyor sorter lister item, used for deletion
+ sorting_list the list of items that will be sorted to the sorted direction
+ use_cooldown To prevent spam
+ Var Details
+ the parent conveyor sorter lister item, used for deletion
sorting_list
+
+
+
+
+
+ the list of items that will be sorted to the sorted direction
use_cooldown
+
+
+
+
+
+ To prevent spam
+
+
+
diff --git a/obj/effect/eldritch.html b/obj/effect/eldritch.html
new file mode 100644
index 0000000000000..c3d06237f8026
--- /dev/null
+++ b/obj/effect/eldritch.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/effect/eldritch - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ is_in_use Used mainly for summoning ritual to prevent spamming the rune to create millions of monsters.
+ Var Details is_in_use
+
+
+
+
+
+ Used mainly for summoning ritual to prevent spamming the rune to create millions of monsters.
+
+
+
diff --git a/obj/effect/landmark/start/hangover.html b/obj/effect/landmark/start/hangover.html
new file mode 100644
index 0000000000000..e8bd59a8fc2cc
--- /dev/null
+++ b/obj/effect/landmark/start/hangover.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /obj/effect/landmark/start/hangover - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ debris A list of everything this hangover spawn created Procs
+ make_hungover Spawns the mob with some drugginess/drunkeness, and some disgust.
+ Var Details debris
+
+
+
+
+
+ A list of everything this hangover spawn created
Proc Details make_hungover(/mob /hangover_mob)
+
+
+
+
+
+ Spawns the mob with some drugginess/drunkeness, and some disgust.
+
+
+
diff --git a/obj/effect/mapping_helpers/custom_icon.html b/obj/effect/mapping_helpers/custom_icon.html
new file mode 100644
index 0000000000000..6b482096086ff
--- /dev/null
+++ b/obj/effect/mapping_helpers/custom_icon.html
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+ /obj/effect/mapping_helpers/custom_icon - SPLURT Station 13
+
+
+
+
+
+
+Fetches an external dmi and applies to the target object
Vars
+ first_match_only Will inject into all fitting the criteria if false, otherwise first found.
+ icon_url This should return raw dmi in response to http get request. For example: "https://github.com/tgstation/SS13-sprites/raw/master/mob/medu.dmi?raw=true"
+ target_name Will inject into atoms with this name.
+ target_type Will inject into atoms of this type.
+ target_variable This is the var tha will be set with the fetched icon. In case you want to set some secondary icon sheets like inhands and such. Procs
+ fetch_icon TODO put this injector stuff under common root
+ Var Details first_match_only
+
+
+
+
+
+ Will inject into all fitting the criteria if false, otherwise first found.
icon_url
+
+
+
+
+
+ This should return raw dmi in response to http get request. For example: "https://github.com/tgstation/SS13-sprites/raw/master/mob/medu.dmi?raw=true"
target_name
+
+
+
+
+
+ Will inject into atoms with this name.
target_type
+
+
+
+
+
+ Will inject into atoms of this type.
target_variable
+
+
+
+
+
+ This is the var tha will be set with the fetched icon. In case you want to set some secondary icon sheets like inhands and such.
Proc Details fetch_icon(url)
+
+
+
+
+
+ TODO put this injector stuff under common root
+
+
+
diff --git a/obj/effect/mapping_helpers/network_builder.html b/obj/effect/mapping_helpers/network_builder.html
new file mode 100644
index 0000000000000..36867cf9d3a13
--- /dev/null
+++ b/obj/effect/mapping_helpers/network_builder.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ /obj/effect/mapping_helpers/network_builder - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ custom_spawned set var to true to not del on lateload
+ network_directions what directions we know connections are in Procs
+ LateInitialize How this works: On LateInitialize, detect all directions that this should be applicable to, and do what it needs to do, and then inform all network builders in said directions that it's been around since it won't be around afterwards.
+ Var Details custom_spawned
+
+
+
+
+
+ set var to true to not del on lateload
network_directions
+
+
+
+
+
+ what directions we know connections are in
Proc Details LateInitialize()
+
+
+
+
+
+ How this works: On LateInitialize, detect all directions that this should be applicable to, and do what it needs to do, and then inform all network builders in said directions that it's been around since it won't be around afterwards.
+
+
+
diff --git a/obj/effect/mapping_helpers/network_builder/atmos_pipe.html b/obj/effect/mapping_helpers/network_builder/atmos_pipe.html
new file mode 100644
index 0000000000000..aef51a582e848
--- /dev/null
+++ b/obj/effect/mapping_helpers/network_builder/atmos_pipe.html
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+ /obj/effect/mapping_helpers/network_builder/atmos_pipe - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ pipe_color Color to set our pipes to
+ pipe_layer Layer to put our pipes on
+ visible_pipes Whether or not pipes we make are visible Procs
+ build_network Directions should only ever have cardinals.
+ scan_directions Scans directions, sets network_directions to have every direction that we can link to. If there's another power cable builder detected, make sure they know we're here by adding us to their cable directions list before we're deleted.
+ Var Details pipe_color
+
+
+
+
+
+ Color to set our pipes to
pipe_layer
+
+
+
+
+
+ Layer to put our pipes on
visible_pipes
+
+
+
+
+
+ Whether or not pipes we make are visible
Proc Details build_network()
+
+
+
+
+
+ Directions should only ever have cardinals.
scan_directions()
+
+
+
+
+
+ Scans directions, sets network_directions to have every direction that we can link to. If there's another power cable builder detected, make sure they know we're here by adding us to their cable directions list before we're deleted.
+
+
+
diff --git a/obj/effect/mapping_helpers/network_builder/power_cable.html b/obj/effect/mapping_helpers/network_builder/power_cable.html
new file mode 100644
index 0000000000000..65ffa8e9e7734
--- /dev/null
+++ b/obj/effect/mapping_helpers/network_builder/power_cable.html
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+ /obj/effect/mapping_helpers/network_builder/power_cable - SPLURT Station 13
+
+
+
+
+
+
+Automatically links on init to power cables and other cable builder helpers. Only supports cardinals.
Vars
+ cable_color cable color as from GLOB.cable_colors
+ knot Whether or not we forcefully make a knot Procs
+ build_network Directions should only ever have cardinals.
+ scan_directions Scans directions, sets network_directions to have every direction that we can link to. If there's another power cable builder detected, make sure they know we're here by adding us to their cable directions list before we're deleted.
+ Var Details cable_color
+
+
+
+
+
+ cable color as from GLOB.cable_colors
knot
+
+
+
+
+
+ Whether or not we forcefully make a knot
Proc Details build_network()
+
+
+
+
+
+ Directions should only ever have cardinals.
scan_directions()
+
+
+
+
+
+ Scans directions, sets network_directions to have every direction that we can link to. If there's another power cable builder detected, make sure they know we're here by adding us to their cable directions list before we're deleted.
+
+
+
diff --git a/obj/effect/mapping_helpers/trait_injector.html b/obj/effect/mapping_helpers/trait_injector.html
new file mode 100644
index 0000000000000..90f69bd678179
--- /dev/null
+++ b/obj/effect/mapping_helpers/trait_injector.html
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+ /obj/effect/mapping_helpers/trait_injector - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ first_match_only Will inject into all fitting the criteria if false, otherwise first found.
+ target_name Will inject into atoms with this name.
+ target_type Will inject into atoms of this type.
+ trait_name Name of the trait, in the lower-case text (NOT the upper-case define) form.
+ Var Details first_match_only
+
+
+
+
+
+ Will inject into all fitting the criteria if false, otherwise first found.
target_name
+
+
+
+
+
+ Will inject into atoms with this name.
target_type
+
+
+
+
+
+ Will inject into atoms of this type.
trait_name
+
+
+
+
+
+ Name of the trait, in the lower-case text (NOT the upper-case define) form.
+
+
+
diff --git a/obj/effect/mine.html b/obj/effect/mine.html
new file mode 100644
index 0000000000000..6e9f6f3c2d379
--- /dev/null
+++ b/obj/effect/mine.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/effect/mine - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ triggered We manually check to see if we've been triggered in case multiple atoms cross us in the time between the mine being triggered and it actually deleting, to avoid a race condition with multiple detonations
+ Var Details triggered
+
+
+
+
+
+ We manually check to see if we've been triggered in case multiple atoms cross us in the time between the mine being triggered and it actually deleting, to avoid a race condition with multiple detonations
+
+
+
diff --git a/obj/effect/mob_spawn.html b/obj/effect/mob_spawn.html
new file mode 100644
index 0000000000000..972854f4e7c03
--- /dev/null
+++ b/obj/effect/mob_spawn.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /obj/effect/mob_spawn - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ allow_spawn override this to add special spawn conditions to a ghost role
Proc Details allow_spawn(/mob /user, silent)
+
+
+
+
+
+ override this to add special spawn conditions to a ghost role
+
+
+
diff --git a/obj/effect/overlay/vis.html b/obj/effect/overlay/vis.html
new file mode 100644
index 0000000000000..2e09dc13439c7
--- /dev/null
+++ b/obj/effect/overlay/vis.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /obj/effect/overlay/vis - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ cache_expiration overlays which go unused for this amount of time get cleaned up
+ unused When detected to be unused it gets set to world.time, after a while it gets removed
+ Var Details cache_expiration
+
+
+
+
+
+ overlays which go unused for this amount of time get cleaned up
unused
+
+
+
+
+
+ When detected to be unused it gets set to world.time, after a while it gets removed
+
+
+
diff --git a/obj/effect/proc_holder/spell.html b/obj/effect/proc_holder/spell.html
new file mode 100644
index 0000000000000..2e06d05c400f4
--- /dev/null
+++ b/obj/effect/proc_holder/spell.html
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+ /obj/effect/proc_holder/spell - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ can_target can_target: Checks if we are allowed to cast the spell on a target.
Proc Details can_target(/atom /target, /mob /user, silent)
+
+
+
+
+
+ can_target: Checks if we are allowed to cast the spell on a target.
+Arguments:
+
+target The atom that is being targeted by the spell.
+user The mob using the spell.
+silent If the checks should not give any feedback messages.
+
+
+
+
diff --git a/obj/effect/proc_holder/spell/cone.html b/obj/effect/proc_holder/spell/cone.html
new file mode 100644
index 0000000000000..50de48d2774b4
--- /dev/null
+++ b/obj/effect/proc_holder/spell/cone.html
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+ /obj/effect/proc_holder/spell/cone - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ cone_levels This controls how many levels the cone has, increase this value to make a bigger cone.
+ respect_density This value determines if the cone penetrates walls. Procs
+ calculate_cone_shape This proc adjusts the cones width depending on the level.
+ cone_helper This proc creates a list of turfs that are hit by the cone
+ do_cone_effects This proc does obj, mob and turf cone effects on all targets in a list
+ do_mob_cone_effect This proc deterimines how the spell will affect mobs.
+ do_obj_cone_effect This proc deterimines how the spell will affect objects.
+ do_turf_cone_effect This proc deterimines how the spell will affect turfs.
+ Var Details cone_levels
+
+
+
+
+
+ This controls how many levels the cone has, increase this value to make a bigger cone.
respect_density
+
+
+
+
+
+ This value determines if the cone penetrates walls.
Proc Details calculate_cone_shape(current_level)
+
+
+
+
+
+ This proc adjusts the cones width depending on the level.
cone_helper(/turf /starter_turf, dir_to_use, cone_levels)
+
+
+
+
+
+ This proc creates a list of turfs that are hit by the cone
do_cone_effects(/list/target_turf_list, level)
+
+
+
+
+
+ This proc does obj, mob and turf cone effects on all targets in a list
do_mob_cone_effect
+
+ This proc deterimines how the spell will affect mobs.
do_obj_cone_effect(/obj /target_obj, level)
+
+
+
+
+
+ This proc deterimines how the spell will affect objects.
do_turf_cone_effect(/turf /target_turf, level)
+
+
+
+
+
+ This proc deterimines how the spell will affect turfs.
+
+
+
diff --git a/obj/effect/proc_holder/spell/pointed.html b/obj/effect/proc_holder/spell/pointed.html
new file mode 100644
index 0000000000000..554d2e8f9e418
--- /dev/null
+++ b/obj/effect/proc_holder/spell/pointed.html
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+ /obj/effect/proc_holder/spell/pointed - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ active_msg Message showing to the spell owner upon activating pointed spell.
+ aim_assist Variable dictating if the spell will use turf based aim assist
+ deactive_msg Message showing to the spell owner upon deactivating pointed spell.
+ self_castable Variable dictating if the user is allowed to cast a spell on himself. Procs
+ intercept_check intercept_check: Specific spell checks for InterceptClickOn() targets.
+ on_activation on_activation: What happens upon pointed spell activation.
+ on_deactivation on_activation: What happens upon pointed spell deactivation.
+ Var Details active_msg
+
+
+
+
+
+ Message showing to the spell owner upon activating pointed spell.
aim_assist
+
+
+
+
+
+ Variable dictating if the spell will use turf based aim assist
deactive_msg
+
+
+
+
+
+ Message showing to the spell owner upon deactivating pointed spell.
self_castable
+
+
+
+
+
+ Variable dictating if the user is allowed to cast a spell on himself.
Proc Details intercept_check(/mob /user, /atom /target, silent)
+
+
+
+
+
+ intercept_check: Specific spell checks for InterceptClickOn() targets.
+Arguments:
+
+user The mob using the ranged spell via intercept.
+target The atom that is being targeted by the spell via intercept.
+silent If the checks should produce not any feedback messages for the user.
+ on_activation
+
+ on_activation: What happens upon pointed spell activation.
+Arguments:
+
+user The mob interacting owning the spell.
+ on_deactivation
+
+ on_activation: What happens upon pointed spell deactivation.
+Arguments:
+
+user The mob interacting owning the spell.
+
+
+
+
diff --git a/obj/effect/proc_holder/spell/pointed/barnyardcurse.html b/obj/effect/proc_holder/spell/pointed/barnyardcurse.html
new file mode 100644
index 0000000000000..713172c01d4bb
--- /dev/null
+++ b/obj/effect/proc_holder/spell/pointed/barnyardcurse.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/effect/proc_holder/spell/pointed/barnyardcurse - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details compatible_mobs_typecache
+
+
+
+
+
+ List of mobs which are allowed to be a target of the spell
+
+
+
diff --git a/obj/effect/proc_holder/spell/pointed/mind_transfer.html b/obj/effect/proc_holder/spell/pointed/mind_transfer.html
new file mode 100644
index 0000000000000..5245675f5e220
--- /dev/null
+++ b/obj/effect/proc_holder/spell/pointed/mind_transfer.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /obj/effect/proc_holder/spell/pointed/mind_transfer - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details unconscious_amount_caster
+
+
+
+
+
+ For how long is the caster stunned for after the spell
unconscious_amount_victim
+
+
+
+
+
+ For how long is the victim stunned for after the spell
+
+
+
diff --git a/obj/effect/proc_holder/spell/targeted/fire_sworn.html b/obj/effect/proc_holder/spell/targeted/fire_sworn.html
new file mode 100644
index 0000000000000..a188d29dd122f
--- /dev/null
+++ b/obj/effect/proc_holder/spell/targeted/fire_sworn.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ /obj/effect/proc_holder/spell/targeted/fire_sworn - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details current_user
+
+
+
+
+
+ who casted it right now
duration
+
+
+
+
+
+ how long it lasts
has_fire_ring
+
+
+
+
+
+ Determines if you get the fire ring effect
+
+
+
diff --git a/obj/effect/reality_smash.html b/obj/effect/reality_smash.html
new file mode 100644
index 0000000000000..744e132f280e2
--- /dev/null
+++ b/obj/effect/reality_smash.html
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+ /obj/effect/reality_smash - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ image_state We cannot use icon_state since this is invisible, functions the same way but with custom behaviour.
+ img Tracked image
+ minds Who can see us? Procs
+ AddMind Makes the mind able to see this effect
+ RemoveMind Makes the mind not able to see this effect
+ generate_name Generates random name
+ Var Details image_state
+
+
+
+
+
+ We cannot use icon_state since this is invisible, functions the same way but with custom behaviour.
img
+
+
+
+
+
+ Tracked image
minds
+
+
+
+
+
+ Who can see us?
Proc Details AddMind
+
+ Makes the mind able to see this effect
RemoveMind
+
+ Makes the mind not able to see this effect
generate_name()
+
+
+
+
+
+ Generates random name
+
+
+
diff --git a/obj/effect/skyfall_landingzone.html b/obj/effect/skyfall_landingzone.html
new file mode 100644
index 0000000000000..d334a8999b056
--- /dev/null
+++ b/obj/effect/skyfall_landingzone.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /obj/effect/skyfall_landingzone - SPLURT Station 13
+
+
+
+
+
+
+a simple indicator of where the skyfall is going to land.
Vars
+ mecha reference to mecha following Procs
+ follow called when the mecha moves
+ Var Details
+ reference to mecha following
Proc Details follow
+
+ called when the mecha moves
+
+
+
diff --git a/obj/item.html b/obj/item.html
new file mode 100644
index 0000000000000..cbcb54ff782f0
--- /dev/null
+++ b/obj/item.html
@@ -0,0 +1,648 @@
+
+
+
+
+
+
+ /obj/item - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ attack_speed Amount of time to check for from a mob's last attack, checked before an attack happens. Lower = faster attacks
+ attack_unwieldlyness Amount of time to hard-stagger (no clicking at all) the mob when attacking. Lower = better
+ block_chance The 0% to 100% chance for the default implementation of random block rolls.
+ block_priority Block priority, higher means we check this higher in the "chain".
+ clickdelay_from_next_action This item checks clickdelay from a user's delayed next action variable rather than the last time they attacked.
+ clickdelay_ignores_next_action This item ignores next action delays.
+ clickdelay_mod_bypass This item bypasses any click delay mods
+ drop_sound Sound uses when dropping the item, or when its thrown.
+ dye_color Used as the dye color source in the washing machine only (at the moment). Can be a hex color or a key corresponding to a registry entry, see washing_machine.dm
+ dying_key What dye registry should be looked at when dying this item; see washing_machine.dm
+ equip_sound Sound used when equipping the item into a valid slot
+ force_string string form of an item's force. Edit this var only to set a custom force string
+ hitsound Sound played when you hit something with the item
+ item_flags Item flags for the item
+ item_state icon state name for inhand overlays
+ lefthand_file Icon file for left hand inhand overlays
+ mob_overlay_icon Icon file for mob worn overlays.
+no var for state because it should always be the same as icon_state
+ mob_throw_hit_sound Used when yate into a mob
+ pickup_sound Sound uses when picking the item up (into your hands)
+ righthand_file Icon file for right inhand overlays
+ sharpness All items with sharpness of SHARP_EDGED or higher will automatically get the butchering component.
+ stagger_force How long, in deciseconds, this staggers for, if null it will autocalculate from w_class and force. Unlike total mass this supports 0 and negatives.
+ stealthy_audio Whether or not we use stealthy audio levels for this item's attack sounds
+ throw_verb Used if we want to have a custom verb text for throwing. "John Spaceman flicks the ciggerate" for example.
+ thrownby A weakref to the mob who threw the item
+ total_mass The amount of stamina it takes to swing an item in a normal melee attack do not lie to me and say it's for realism because it ain't. If null it will autocalculate from w_class.
+ undyeable Whether the item is unaffected by standard dying.
+ used_skills Skills vars
+ usesound Played when the item is used, for example tools
+ w_class Weight class for how much storage capacity it uses and how big it physically is meaning storages can't hold it if their maximum weight class isn't as high as it.
+ w_volume Volume override for the item, otherwise automatically calculated from w_class. Procs
+ ApplyAttackCooldown Called after a successful attack to set a mob's clickdelay.
+ CheckAttackCooldown Checks if a user's clickdelay is met for a standard attack, this is called before an attack happens.
+ GetEstimatedAttackSpeed Get estimated time that a user has to not attack for to use us
+ UseStaminaBufferStandard Uses the amount of stamina required for a standard hit
+ active_block_calculate_final_damage Calculates FINAL ATTACK DAMAGE after mitigation
+ active_block_do_stamina_damage Apply the stamina damage to our user, notice how damage argument is stamina_amount.
+ active_block_stamina_cost Amount of stamina from damage blocked. Note that the damage argument is damage_blocked.
+ active_parry_reflex_counter Called when an attack is parried and block_parra_data indicates to use a proc to handle counterattack.
+ add_item_context Creates a "Type-A" contextual screentip interaction.
+When a user hovers over something with this item in hand, this proc will be called in order
+to provide context for contextual screentips.
+You must call register_item_context()
in order for this to be registered.
+A screentip context list is a list that has context keys (SCREENTIP_CONTEXT_*, from __DEFINES/screentips.dm)
+that map to the action as text.
+If you mutate the list in this signal, you must return CONTEXTUAL_SCREENTIP_SET.
+source
can, in all cases, be replaced with src
, and only exists because this proc directly connects to a signal.
+ afterattack Called after attacking something if the melee attack chain isn't interrupted before.
+Also called when clicking on something with an item without being in melee range
+ attack Called when someone uses us to attack a mob in melee combat.
+ blockable_directions Gets the block direction bitflags of what we can block.
+ can_active_block Returns if we can actively block.
+ can_active_parry Determines if we can actively parry.
+ can_block_direction Checks if we can block from a specific direction from our direction.
+ can_block_directions_multiple can_block_direction but for "compound" directions to check all of them and return the number of directions that were blocked.
+ check_block Returns block information using list/block_return. Used for check_block() on mobs.
+ cyborg_unequip Parent proc - triggers when an item/module is unequipped from a cyborg.
+ digest_act ////// Auto-Emotes /////
+Prey Loop Refresh/hack
+////// Exit Early //////
+/// Absorbed Handling //
+///// Sound vars ///////
+////// Make any noise /////
+ disableEmbedding For when you want to disable an item's embedding capabilities (like transforming weapons and such), this proc will detach any active embed elements from it.
+ do_stagger_action totally not an untested, arbitrary equation.
+ dropped Called when a mob drops an item.
+ equipped Called after an item is placed in an equipment slot.
+ failedEmbed In case we want to do something special (like self delete) upon failing to embed in something, return true
+ get_block_parry_data Gets this item's datum/block_parry_data
+ get_w_volume Get an item's volume that it uses when being stored.
+ getweight How much stamina this takes to swing this is not for realism purposes hecc off.
+ isEmbedHarmless Does the current embedding var meet the criteria for being harmless? Namely, does it explicitly define the pain multiplier and jostle pain mult to be 0? If so, return true.
+ melee_attack_chain This is the proc that handles the order of an item_attack.
+The order of procs called is:
+tool_act on the target. If it returns TRUE, the chain will be stopped.
+pre_attack() on src. If this returns TRUE, the chain will be stopped.
+attackby on the target. If it returns TRUE, the chain will be stopped.
+and lastly
+afterattack. The return value does not matter.
+ melee_stagger_duration How long this staggers for. 0 and negatives supported.
+ on_active_parry Called when an attack is parried using this, whether or not the parry was successful.
+ on_offer_taken An interrupt for someone trying to accept an offered item, called mainly from /mob/living/carbon/proc/take , in case you want to run your own take behavior instead.
+ on_offered An interrupt for offering an item to other people, called mainly from /mob/living/carbon/proc/give , in case you want to run your own offer behavior instead.
+ on_outfit_equip Special stuff you want to do when an outfit equips this item.
+ on_thrown Called by the carbon throw_item() proc. Returns null if the item negates the throw, or a reference to the thing to suffer the throw else.
+ pick_painting_tool_color Common proc used by painting tools like spraycans and palettes that can access the entire 24 bits color space.
+ ranged_attack_chain Like melee_attack_chain but for ranged.
+ register_item_context Create a "Type-A" contextual screentip interaction, registering to add_item_context()
.
+This will run add_item_context()
when the item hovers over another object for context.
+add_item_context()
will not be called unless this is run.
+This is not necessary for Type-A interactions, as you can just apply the flag and register to the signal yourself.
+ run_block Runs block and returns flag for do_run_block to process.
+ set_slowdown Sets our slowdown and updates equipment slowdown of any mob we're equipped on.
+ tryEmbed tryEmbed() is for when you want to try embedding something without dealing with the damage + hit messages of calling hitby() on the item while targetting the target.
+ updateEmbedding For when you want to add/update the embedding on an item. Uses the vars in [/obj/item/embedding], and defaults to config values for values that aren't set. Will automatically detach previous embed elements on this item.
+ update_action_buttons Updates all action buttons associated with this item
+ Var Details attack_speed
+
+
+
+
+
+ Amount of time to check for from a mob's last attack, checked before an attack happens. Lower = faster attacks
attack_unwieldlyness
+
+
+
+
+
+ Amount of time to hard-stagger (no clicking at all) the mob when attacking. Lower = better
block_chance
+
+
+
+
+
+ The 0% to 100% chance for the default implementation of random block rolls.
block_priority
+
+
+
+
+
+ Block priority, higher means we check this higher in the "chain".
clickdelay_from_next_action
+
+
+
+
+
+ This item checks clickdelay from a user's delayed next action variable rather than the last time they attacked.
clickdelay_ignores_next_action
+
+
+
+
+
+ This item ignores next action delays.
clickdelay_mod_bypass
+
+
+
+
+
+ This item bypasses any click delay mods
drop_sound
+
+
+
+
+
+ Sound uses when dropping the item, or when its thrown.
dye_color
+
+
+
+
+
+ Used as the dye color source in the washing machine only (at the moment). Can be a hex color or a key corresponding to a registry entry, see washing_machine.dm
dying_key
+
+
+
+
+
+ What dye registry should be looked at when dying this item; see washing_machine.dm
equip_sound
+
+
+
+
+
+ Sound used when equipping the item into a valid slot
force_string
+
+
+
+
+
+ string form of an item's force. Edit this var only to set a custom force string
hitsound
+
+
+
+
+
+ Sound played when you hit something with the item
item_flags
+
+
+
+
+
+ Item flags for the item
item_state
+
+
+
+
+
+ icon state name for inhand overlays
lefthand_file
+
+
+
+
+
+ Icon file for left hand inhand overlays
mob_overlay_icon
+
+
+
+
+
+ Icon file for mob worn overlays.
+no var for state because it should always be the same as icon_state
mob_throw_hit_sound
+
+
+
+
+
+ Used when yate into a mob
pickup_sound
+
+
+
+
+
+ Sound uses when picking the item up (into your hands)
righthand_file
+
+
+
+
+
+ Icon file for right inhand overlays
sharpness
+
+
+
+
+
+ All items with sharpness of SHARP_EDGED or higher will automatically get the butchering component.
stagger_force
+
+
+
+
+
+ How long, in deciseconds, this staggers for, if null it will autocalculate from w_class and force. Unlike total mass this supports 0 and negatives.
stealthy_audio
+
+
+
+
+
+ Whether or not we use stealthy audio levels for this item's attack sounds
throw_verb
+
+
+
+
+
+ Used if we want to have a custom verb text for throwing. "John Spaceman flicks the ciggerate" for example.
thrownby
+
+
+
+
+
+ A weakref to the mob who threw the item
total_mass
+
+
+
+
+
+ The amount of stamina it takes to swing an item in a normal melee attack do not lie to me and say it's for realism because it ain't. If null it will autocalculate from w_class.
undyeable
+
+
+
+
+
+ Whether the item is unaffected by standard dying.
used_skills
+
+
+
+
+
+ Skills vars
usesound
+
+
+
+
+
+ Played when the item is used, for example tools
w_class
+
+
+
+
+
+ Weight class for how much storage capacity it uses and how big it physically is meaning storages can't hold it if their maximum weight class isn't as high as it.
w_volume
+
+
+
+
+
+ Volume override for the item, otherwise automatically calculated from w_class.
Proc Details ApplyAttackCooldown(/mob /user, /atom /target, attackchain_flags)
+
+
+
+
+
+ Called after a successful attack to set a mob's clickdelay.
CheckAttackCooldown
+
+ Checks if a user's clickdelay is met for a standard attack, this is called before an attack happens.
GetEstimatedAttackSpeed()
+
+
+
+
+
+ Get estimated time that a user has to not attack for to use us
UseStaminaBufferStandard(/mob /living /user, multiplier, trait, warn)
+
+
+
+
+
+ Uses the amount of stamina required for a standard hit
active_block_calculate_final_damage(/mob /living /owner, /atom /object, damage, attack_text, attack_type, armour_penetration, /mob /attacker, def_zone, final_block_chance, /list/block_return, passive)
+
+
+
+
+
+ Calculates FINAL ATTACK DAMAGE after mitigation
active_block_do_stamina_damage(/mob /living /owner, /atom /object, stamina_amount, attack_text, attack_type, armour_penetration, /mob /attacker, def_zone, final_block_chance, /list/block_return)
+
+
+
+
+
+ Apply the stamina damage to our user, notice how damage argument is stamina_amount.
active_block_stamina_cost(/mob /living /owner, /atom /object, damage_blocked, attack_text, attack_type, armour_penetration, /mob /attacker, def_zone, final_block_chance, /list/block_return, passive)
+
+
+
+
+
+ Amount of stamina from damage blocked. Note that the damage argument is damage_blocked.
active_parry_reflex_counter(/mob /living /owner, /atom /object, damage, attack_text, attack_type, armour_penetration, /mob /attacker, def_zone, /list/return_list, parry_efficiency, /list/effect_text)
+
+
+
+
+
+ Called when an attack is parried and block_parra_data indicates to use a proc to handle counterattack.
add_item_context
+
+ Creates a "Type-A" contextual screentip interaction.
+When a user hovers over something with this item in hand, this proc will be called in order
+to provide context for contextual screentips.
+You must call register_item_context()
in order for this to be registered.
+A screentip context list is a list that has context keys (SCREENTIP_CONTEXT_*, from __DEFINES/screentips.dm)
+that map to the action as text.
+If you mutate the list in this signal, you must return CONTEXTUAL_SCREENTIP_SET.
+source
can, in all cases, be replaced with src
, and only exists because this proc directly connects to a signal.
afterattack(/atom /target, /mob /user, proximity_flag, click_parameters)
+
+
+
+
+
+ Called after attacking something if the melee attack chain isn't interrupted before.
+Also called when clicking on something with an item without being in melee range
+WARNING: This does not automatically check clickdelay if not in a melee attack! Be sure to account for this!
+@params
+
+target - The thing we clicked
+user - mob of person clicking
+proximity_flag - are we in melee range/doing it in a melee attack
+click_parameters - mouse control parameters, check BYOND ref.
+ attack
+
+ Called when someone uses us to attack a mob in melee combat.
+This proc respects CheckAttackCooldown() default clickdelay handling.
+@params
+blockable_directions(passive)
+
+
+
+
+
+ Gets the block direction bitflags of what we can block.
can_active_block()
+
+
+
+
+
+ Returns if we can actively block.
can_active_parry
+
+ Determines if we can actively parry.
can_block_direction(our_dir, their_dir, passive)
+
+
+
+
+
+ Checks if we can block from a specific direction from our direction.
+@params
+
+our_dir - our direction.
+their_dir - their direction. Must be a single direction, or NONE for an attack from the same tile. This is incoming direction.
+ can_block_directions_multiple(our_dir, /list/their_dirs)
+
+
+
+
+
+ can_block_direction but for "compound" directions to check all of them and return the number of directions that were blocked.
+@params
+
+our_dir - our direction.
+their_dirs - list of their directions as we cannot use bitfields here.
+ check_block(/mob /living /owner, /atom /object, damage, attack_text, attack_type, armour_penetration, /mob /attacker, def_zone, final_block_chance, /list/block_return)
+
+
+
+
+
+ Returns block information using list/block_return. Used for check_block() on mobs.
cyborg_unequip
+
+ Parent proc - triggers when an item/module is unequipped from a cyborg.
digest_act
+
+ ////// Auto-Emotes /////
+Prey Loop Refresh/hack
+////// Exit Early //////
+/// Absorbed Handling //
+///// Sound vars ///////
+////// Make any noise /////
disableEmbedding()
+
+
+
+
+
+ For when you want to disable an item's embedding capabilities (like transforming weapons and such), this proc will detach any active embed elements from it.
do_stagger_action
+
+ totally not an untested, arbitrary equation.
dropped(/mob /user, silent)
+
+
+
+
+
+ Called when a mob drops an item.
equipped(/mob /user, slot, initial)
+
+
+
+
+
+ Called after an item is placed in an equipment slot.
+Note that hands count as slots.
+Arguments:
+
+user is mob that equipped it
+slot uses the slot_X defines found in setup.dm for items that can be placed in multiple slots
+Initial is used to indicate whether or not this is the initial equipment (job datums etc) or just a player doing it
+ failedEmbed()
+
+
+
+
+
+ In case we want to do something special (like self delete) upon failing to embed in something, return true
get_block_parry_data()
+
+
+
+
+
+ Gets this item's datum/block_parry_data
get_w_volume()
+
+
+
+
+
+ Get an item's volume that it uses when being stored.
getweight
+
+ How much stamina this takes to swing this is not for realism purposes hecc off.
isEmbedHarmless()
+
+
+
+
+
+ Does the current embedding var meet the criteria for being harmless? Namely, does it explicitly define the pain multiplier and jostle pain mult to be 0? If so, return true.
melee_attack_chain(/mob /user, /atom /target, params, attackchain_flags, damage_multiplier)
+
+
+
+
+
+ This is the proc that handles the order of an item_attack.
+The order of procs called is:
+tool_act on the target. If it returns TRUE, the chain will be stopped.
+pre_attack() on src. If this returns TRUE, the chain will be stopped.
+attackby on the target. If it returns TRUE, the chain will be stopped.
+and lastly
+afterattack. The return value does not matter.
melee_stagger_duration(force_override)
+
+
+
+
+
+ How long this staggers for. 0 and negatives supported.
on_active_parry(/mob /living /owner, /atom /object, damage, attack_text, attack_type, armour_penetration, /mob /attacker, def_zone, /list/block_return, parry_efficiency, parry_time, autoparry)
+
+
+
+
+
+ Called when an attack is parried using this, whether or not the parry was successful.
+ An interrupt for someone trying to accept an offered item, called mainly from /mob/living/carbon/proc/take , in case you want to run your own take behavior instead.
+Return TRUE if you want to interrupt the taking.
+Arguments:
+offerer - the person offering the item
+taker - the person trying to accept the offer
on_offered
+
+ An interrupt for offering an item to other people, called mainly from /mob/living/carbon/proc/give , in case you want to run your own offer behavior instead.
+Return TRUE if you want to interrupt the offer.
+Arguments:
+offerer - the person offering the item
on_outfit_equip
+
+ Special stuff you want to do when an outfit equips this item.
on_thrown
+
+ Called by the carbon throw_item() proc. Returns null if the item negates the throw, or a reference to the thing to suffer the throw else.
+ Common proc used by painting tools like spraycans and palettes that can access the entire 24 bits color space.
ranged_attack_chain(/mob /user, /atom /target, params)
+
+
+
+
+
+ Like melee_attack_chain but for ranged.
register_item_context()
+
+
+
+
+
+ Create a "Type-A" contextual screentip interaction, registering to add_item_context()
.
+This will run add_item_context()
when the item hovers over another object for context.
+add_item_context()
will not be called unless this is run.
+This is not necessary for Type-A interactions, as you can just apply the flag and register to the signal yourself.
run_block(/mob /living /owner, /atom /object, damage, attack_text, attack_type, armour_penetration, /mob /attacker, def_zone, final_block_chance, /list/block_return)
+
+
+
+
+
+ Runs block and returns flag for do_run_block to process.
set_slowdown(new_slowdown)
+
+
+
+
+
+ Sets our slowdown and updates equipment slowdown of any mob we're equipped on.
tryEmbed(/atom /target, forced, silent)
+
+
+
+
+
+ tryEmbed() is for when you want to try embedding something without dealing with the damage + hit messages of calling hitby() on the item while targetting the target.
+Really, this is used mostly with projectiles with shrapnel payloads, from /datum/element/embed/proc/checkEmbedProjectile , and called on said shrapnel. Mostly acts as an intermediate between different embed elements.
+Arguments:
+
+
+target- Either a body part, a carbon, or a closed turf. What are we hitting?
+
+
+forced- Do we want this to go through 100%?
+
+ updateEmbedding()
+
+
+
+
+
+ For when you want to add/update the embedding on an item. Uses the vars in [/obj/item/embedding], and defaults to config values for values that aren't set. Will automatically detach previous embed elements on this item.
+ Updates all action buttons associated with this item
+Arguments:
+
+status_only - Update only current availability status of the buttons to show if they are ready or not to use
+force - Force buttons update even if the given button icon state has not changed
+
+
+
+
diff --git a/obj/item/airlock_painter.html b/obj/item/airlock_painter.html
new file mode 100644
index 0000000000000..877e4df5dd9db
--- /dev/null
+++ b/obj/item/airlock_painter.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ /obj/item/airlock_painter - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ available_paint_jobs Associate list of all paint jobs the airlock painter can apply. The key is the name of the airlock the user will see. The value is the type path of the airlock
+ initial_ink_type The type path to instantiate for the ink cartridge the device initially comes with, eg. /obj/item/toner
+ ink The ink cartridge to pull charges from.
+ Var Details available_paint_jobs
+
+
+
+
+
+ Associate list of all paint jobs the airlock painter can apply. The key is the name of the airlock the user will see. The value is the type path of the airlock
initial_ink_type
+
+
+
+
+
+ The type path to instantiate for the ink cartridge the device initially comes with, eg. /obj/item/toner
ink
+
+
+
+
+
+ The ink cartridge to pull charges from.
+
+
+
diff --git a/obj/item/airlock_painter/decal.html b/obj/item/airlock_painter/decal.html
new file mode 100644
index 0000000000000..f4711379df1cd
--- /dev/null
+++ b/obj/item/airlock_painter/decal.html
@@ -0,0 +1,125 @@
+
+
+
+
+
+
+ /obj/item/airlock_painter/decal - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ color_list List of color options as list(user-friendly label, color value to return)
+ decal_list List of decal options as list(user-friendly label, icon state base value to return)
+ dir_list List of direction options as list(user-friendly label, dir value to return)
+ spritesheet_type The type path of the spritesheet being used for the frontend.
+ stored_color The current color of the decal being printed.
+ stored_custom_color Current custom color
+ stored_decal The current base icon state of the decal being printed.
+ stored_decal_total The full icon state of the decal being printed.
+ stored_dir The current direction of the decal being printed
+ supports_custom_color Does this printer implementation support custom colors? Procs
+ get_decal_path Return the final icon_state for the given decal options
+ paint_floor Actually add current decal to the floor.
+ Var Details color_list
+
+
+
+
+
+ List of color options as list(user-friendly label, color value to return)
decal_list
+
+
+
+
+
+ List of decal options as list(user-friendly label, icon state base value to return)
dir_list
+
+
+
+
+
+ List of direction options as list(user-friendly label, dir value to return)
spritesheet_type
+
+
+
+
+
+ The type path of the spritesheet being used for the frontend.
stored_color
+
+
+
+
+
+ The current color of the decal being printed.
stored_custom_color
+
+
+
+
+
+ Current custom color
stored_decal
+
+
+
+
+
+ The current base icon state of the decal being printed.
stored_decal_total
+
+
+
+
+
+ The full icon state of the decal being printed.
stored_dir
+
+
+
+
+
+ The current direction of the decal being printed
supports_custom_color
+
+
+
+
+
+ Does this printer implementation support custom colors?
Proc Details get_decal_path(decal, color, dir)
+
+
+
+
+
+ Return the final icon_state for the given decal options
+Arguments:
+
+decal - the selected decal base icon state
+color - the selected color
+dir - the selected dir
+ paint_floor
+
+ Actually add current decal to the floor.
+Responsible for actually adding the element to the turf for maximum flexibility.area
+Can be overriden for different decal behaviors.
+Arguments:
+
+target - The turf being painted to
+
+
+
+
diff --git a/obj/item/airlock_painter/decal/tile.html b/obj/item/airlock_painter/decal/tile.html
new file mode 100644
index 0000000000000..77d08495b5beb
--- /dev/null
+++ b/obj/item/airlock_painter/decal/tile.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /obj/item/airlock_painter/decal/tile - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details default_alpha
+
+
+
+
+
+ Default alpha for /obj/effect/turf_decal/tile
rgba_regex
+
+
+
+
+
+ Regex to split alpha out.
+
+
+
diff --git a/obj/item/ammo_casing.html b/obj/item/ammo_casing.html
new file mode 100644
index 0000000000000..6aebadb56afbb
--- /dev/null
+++ b/obj/item/ammo_casing.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/item/ammo_casing - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ click_cooldown_override Override this to make the gun check for a different cooldown rather than CLICK_CD_RANGE, which is 4 deciseconds.
+ Var Details click_cooldown_override
+
+
+
+
+
+ Override this to make the gun check for a different cooldown rather than CLICK_CD_RANGE, which is 4 deciseconds.
+
+
+
diff --git a/obj/item/assembly.html b/obj/item/assembly.html
new file mode 100644
index 0000000000000..276bfa0f60ded
--- /dev/null
+++ b/obj/item/assembly.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+ /obj/item/assembly - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ holder_movement Called when the holder is moved
+ on_detach Call this when detaching it from a device. handles any special functions that need to be updated ex post facto
Proc Details holder_movement()
+
+
+
+
+
+ Called when the holder is moved
on_detach()
+
+
+
+
+
+ Call this when detaching it from a device. handles any special functions that need to be updated ex post facto
+
+
+
diff --git a/obj/item/assembly/control.html b/obj/item/assembly/control.html
new file mode 100644
index 0000000000000..1af7fc3e2b4e6
--- /dev/null
+++ b/obj/item/assembly/control.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ /obj/item/assembly/control - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ can_change_id Can the ID be changed if used in hand?
+ id Our ID. Make the first character ! if you want to obfuscate it as a mapper via randomization.
+ show_id Show ID?
+ Var Details can_change_id
+
+
+
+
+
+ Can the ID be changed if used in hand?
id
+
+
+
+
+
+ Our ID. Make the first character ! if you want to obfuscate it as a mapper via randomization.
show_id
+
+
+
+
+
+ Show ID?
+
+
+
diff --git a/obj/item/assembly/control/electrochromatic.html b/obj/item/assembly/control/electrochromatic.html
new file mode 100644
index 0000000000000..3eaf8c1b21f61
--- /dev/null
+++ b/obj/item/assembly/control/electrochromatic.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/item/assembly/control/electrochromatic - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ on Stores our status to prevent windows from desyncing.
+ Var Details on
+
+
+
+
+
+ Stores our status to prevent windows from desyncing.
+
+
+
diff --git a/obj/item/assembly/signaler.html b/obj/item/assembly/signaler.html
new file mode 100644
index 0000000000000..a05121cb4ede9
--- /dev/null
+++ b/obj/item/assembly/signaler.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /obj/item/assembly/signaler - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ suicide_mob Holds a reference string to the mob, decides how much of a gamer you are.
+ suicider Holds the mind that commited suicide.
+ Var Details suicide_mob
+
+
+
+
+
+ Holds a reference string to the mob, decides how much of a gamer you are.
suicider
+
+
+
+
+
+ Holds the mind that commited suicide.
+
+
+
diff --git a/obj/item/barcode.html b/obj/item/barcode.html
new file mode 100644
index 0000000000000..389f62fdbe199
--- /dev/null
+++ b/obj/item/barcode.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/item/barcode - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ payments_acc All values inheirited from the sales tagger it came from.
+ Var Details
+ All values inheirited from the sales tagger it came from.
+
+
+
diff --git a/obj/item/bodycam_upgrade.html b/obj/item/bodycam_upgrade.html
new file mode 100644
index 0000000000000..36ed2f1257f59
--- /dev/null
+++ b/obj/item/bodycam_upgrade.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+ /obj/item/bodycam_upgrade - SPLURT Station 13
+
+
+
+
+
+
+The bodycamera
+This is the item that gets installed into items that have the bodycamera_holder element
+ Var Details builtin_bodycamera
+
+
+
+
+
+ The camera itself.
+
+
+
diff --git a/obj/item/bodypart.html b/obj/item/bodypart.html
new file mode 100644
index 0000000000000..7147efefe0775
--- /dev/null
+++ b/obj/item/bodypart.html
@@ -0,0 +1,230 @@
+
+
+
+
+
+
+ /obj/item/bodypart - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ current_gauze If we have a gauze wrapping currently applied (not including splints)
+ disable_threshold Threshold at which we are disabled. Defaults to max_damage if unset.
+ disabled_wound_penalty When this bodypart hits max damage, this number is added to all wound rolls. Obviously only relevant for bodyparts that have damage caps.
+ forcereplace does this limb have replacement capability, despite probably not being robotic?
+ generic_bleedstacks How much generic bleedstacks we have on this bodypart
+ last_maxed So we know if we need to scream if this limb hits max damage
+ scars The scars currently afflicting this body part
+ scars_covered_by_clothes A hat won't cover your face, but a shirt covering your chest will cover your... you know, chest
+ wound_damage_multiplier Our current stored wound damage multiplier
+ wound_resistance This number is subtracted from all wound rolls on this bodypart, higher numbers mean more defense, negative means easier to wound
+ wounds The wounds currently afflicting this body part Procs
+ apply_gauze apply_gauze() is used to- well, apply gauze to a bodypart
+ check_wounding check_wounding() is where we handle rolling for, selecting, and applying a wound if we meet the criteria
+ check_woundings_mods check_wounding_mods() is where we handle the various modifiers of a wound roll
+ get_disable_threshold Gets the damage at which point we're disabled.
+ get_mangled_state get_mangled_state() is relevant for flesh and bone bodyparts, and returns whether this bodypart has mangled skin, mangled bone, or both (or neither i guess)
+ get_organs since organs aren't actually stored in the bodypart themselves while attached to a person, we have to query the owner for what we should have
+ get_wound_type Get whatever wound of the given type is currently attached to this limb, if any
+ painless_wound_roll Allows us to roll for and apply a wound without actually dealing damage. Used for aggregate wounding power with pellet clouds
+ seep_gauze seep_gauze() is for when a gauze wrapping absorbs blood or pus from wounds, lowering its absorption capacity.
+ try_dismember try_dismember() is used, once we've confirmed that a flesh and bone bodypart has both the skin and bone mangled, to actually roll for it
+ update_wounds update_wounds() is called whenever a wound is gained or lost on this bodypart, as well as if there's a change of some kind on a bone wound possibly changing disabled status
+ Var Details current_gauze
+
+
+
+
+
+ If we have a gauze wrapping currently applied (not including splints)
disable_threshold
+
+
+
+
+
+ Threshold at which we are disabled. Defaults to max_damage if unset.
disabled_wound_penalty
+
+
+
+
+
+ When this bodypart hits max damage, this number is added to all wound rolls. Obviously only relevant for bodyparts that have damage caps.
forcereplace
+
+
+
+
+
+ does this limb have replacement capability, despite probably not being robotic?
generic_bleedstacks
+
+
+
+
+
+ How much generic bleedstacks we have on this bodypart
last_maxed
+
+
+
+
+
+ So we know if we need to scream if this limb hits max damage
scars
+
+
+
+
+
+ The scars currently afflicting this body part
scars_covered_by_clothes
+
+
+
+
+
+ A hat won't cover your face, but a shirt covering your chest will cover your... you know, chest
wound_damage_multiplier
+
+
+
+
+
+ Our current stored wound damage multiplier
wound_resistance
+
+
+
+
+
+ This number is subtracted from all wound rolls on this bodypart, higher numbers mean more defense, negative means easier to wound
wounds
+
+
+
+
+
+ The wounds currently afflicting this body part
Proc Details apply_gauze
+
+ apply_gauze() is used to- well, apply gauze to a bodypart
+As of the Wounds 2 PR, all bleeding is now bodypart based rather than the old bleedstacks system, and 90% of standard bleeding comes from flesh wounds (the exception is embedded weapons).
+The same way bleeding is totaled up by bodyparts, gauze now applies to all wounds on the same part. Thus, having a slash wound, a pierce wound, and a broken bone wound would have the gauze
+applying blood staunching to the first two wounds, while also acting as a sling for the third one. Once enough blood has been absorbed or all wounds with the ACCEPTS_GAUZE flag have been cleared,
+the gauze falls off.
+Arguments:
+
+gauze- Just the gauze stack we're taking a sheet from to apply here
+ check_wounding(woundtype, damage, wound_bonus, bare_wound_bonus)
+
+
+
+
+
+ check_wounding() is where we handle rolling for, selecting, and applying a wound if we meet the criteria
+We generate a "score" for how woundable the attack was based on the damage and other factors discussed in [/obj/item/bodypart/proc/check_wounding_mods], then go down the list from most severe to least severe wounds in that category.
+We can promote a wound from a lesser to a higher severity this way, but we give up if we have a wound of the given type and fail to roll a higher severity, so no sidegrades/downgrades
+Arguments:
+
+woundtype- Either WOUND_BLUNT, WOUND_SLASH, WOUND_PIERCE, or WOUND_BURN based on the attack type.
+damage- How much damage is tied to this attack, since wounding potential scales with damage in an attack (see: WOUND_DAMAGE_EXPONENT)
+wound_bonus- The wound_bonus of an attack
+bare_wound_bonus- The bare_wound_bonus of an attack
+ check_woundings_mods(wounding_type, damage, wound_bonus, bare_wound_bonus)
+
+
+
+
+
+ check_wounding_mods() is where we handle the various modifiers of a wound roll
+A short list of things we consider: any armor a human target may be wearing, and if they have no wound armor on the limb, if we have a bare_wound_bonus to apply, plus the plain wound_bonus
+We also flick through all of the wounds we currently have on this limb and add their threshold penalties, so that having lots of bad wounds makes you more liable to get hurt worse
+Lastly, we add the inherent wound_resistance variable the bodypart has (heads and chests are slightly harder to wound), and a small bonus if the limb is already disabled
+Arguments:
+
+It's the same ones on [receive_damage]
+ get_disable_threshold()
+
+
+
+
+
+ Gets the damage at which point we're disabled.
get_mangled_state()
+
+
+
+
+
+ get_mangled_state() is relevant for flesh and bone bodyparts, and returns whether this bodypart has mangled skin, mangled bone, or both (or neither i guess)
+Dismemberment for flesh and bone requires the victim to have the skin on their bodypart destroyed (either a critical cut or piercing wound), and at least a hairline fracture
+(severe bone), at which point we can start rolling for dismembering. The attack must also deal at least 10 damage, and must be a brute attack of some kind (sorry for now, cakehat, maybe later)
+Returns: BODYPART_MANGLED_NONE if we're fine, BODYPART_MANGLED_FLESH if our skin is broken, BODYPART_MANGLED_BONE if our bone is broken, or BODYPART_MANGLED_BOTH if both are broken and we're up for dismembering
get_organs()
+
+
+
+
+
+ since organs aren't actually stored in the bodypart themselves while attached to a person, we have to query the owner for what we should have
get_wound_type(checking_type)
+
+
+
+
+
+ Get whatever wound of the given type is currently attached to this limb, if any
painless_wound_roll(wounding_type, phantom_wounding_dmg, wound_bonus, bare_wound_bonus, sharpness)
+
+
+
+
+
+ Allows us to roll for and apply a wound without actually dealing damage. Used for aggregate wounding power with pellet clouds
seep_gauze(seep_amt)
+
+
+
+
+
+ seep_gauze() is for when a gauze wrapping absorbs blood or pus from wounds, lowering its absorption capacity.
+The passed amount of seepage is deducted from the bandage's absorption capacity, and if we reach a negative absorption capacity, the bandages fall off and we're left with nothing.
+Arguments:
+
+seep_amt - How much absorption capacity we're removing from our current bandages (think, how much blood or pus are we soaking up this tick?)
+ try_dismember(wounding_type, wounding_dmg, wound_bonus, bare_wound_bonus)
+
+
+
+
+
+ try_dismember() is used, once we've confirmed that a flesh and bone bodypart has both the skin and bone mangled, to actually roll for it
+Mangling is described in the above proc, [/obj/item/bodypart/proc/get_mangled_state()]. This simply makes the roll for whether we actually dismember or not
+using how damaged the limb already is, and how much damage this blow was for. If we have a critical bone wound instead of just a severe, we add +10% to the roll.
+Lastly, we choose which kind of dismember we want based on the wounding type we hit with. Note we don't care about all the normal mods or armor for this
+Arguments:
+
+wounding_type: Either WOUND_BLUNT, WOUND_SLASH, or WOUND_PIERCE, basically only matters for the dismember message
+wounding_dmg: The damage of the strike that prompted this roll, higher damage = higher chance
+wound_bonus: Not actually used right now, but maybe someday
+bare_wound_bonus: ditto above
+ update_wounds(replaced)
+
+
+
+
+
+ update_wounds() is called whenever a wound is gained or lost on this bodypart, as well as if there's a change of some kind on a bone wound possibly changing disabled status
+Covers tabulating the damage multipliers we have from wounds (burn specifically), as well as deleting our gauze wrapping if we don't have any wounds that can use bandaging
+Arguments:
+
+replaced- If true, this is being called from the remove_wound() of a wound that's being replaced, so the bandage that already existed is still relevant, but the new wound hasn't been added yet
+
+
+
+
diff --git a/obj/item/book/random.html b/obj/item/book/random.html
new file mode 100644
index 0000000000000..f61520c04aad0
--- /dev/null
+++ b/obj/item/book/random.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /obj/item/book/random - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ random_category The category of books to pick from when creating this book.
+ random_loaded If this book has already been 'generated' yet.
+ Var Details random_category
+
+
+
+
+
+ The category of books to pick from when creating this book.
random_loaded
+
+
+
+
+
+ If this book has already been 'generated' yet.
+
+
+
diff --git a/obj/item/borg/upgrade.html b/obj/item/borg/upgrade.html
new file mode 100644
index 0000000000000..64a4ecd87983f
--- /dev/null
+++ b/obj/item/borg/upgrade.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ /obj/item/borg/upgrade - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ abstract_type Means this is a basetype and should not be used
+ module_flags Bitflags listing module compatibility. Used in the exosuit fabricator for creating sub-categories.
+ show_amount Show the amount of this module that is installed
+ Var Details abstract_type
+
+
+
+
+
+ Means this is a basetype and should not be used
module_flags
+
+
+
+
+
+ Bitflags listing module compatibility. Used in the exosuit fabricator for creating sub-categories.
show_amount
+
+
+
+
+
+ Show the amount of this module that is installed
+
+
+
diff --git a/obj/item/borg_shapeshifter.html b/obj/item/borg_shapeshifter.html
new file mode 100644
index 0000000000000..fff25289da157
--- /dev/null
+++ b/obj/item/borg_shapeshifter.html
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+ /obj/item/borg_shapeshifter - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ check_menu check_menu: Checks if we are allowed to interact with a radial menu
Proc Details
+ check_menu: Checks if we are allowed to interact with a radial menu
+Arguments:
+
+user The mob interacting with a menu
+
+
+
+
diff --git a/obj/item/bounty_cube.html b/obj/item/bounty_cube.html
new file mode 100644
index 0000000000000..3e005b51bd43c
--- /dev/null
+++ b/obj/item/bounty_cube.html
@@ -0,0 +1,127 @@
+
+
+
+
+
+
+ /obj/item/bounty_cube - SPLURT Station 13
+
+
+
+
+
+
+Upon completion of a civilian bounty, one of these is created. It is sold to cargo to give the cargo budget bounty money, and the person who completed it cash.
+ Var Details bounty_handler_account
+
+
+
+
+
+ Bank account of the person who receives the handling tip.
bounty_holder
+
+
+
+
+
+ Who completed the bounty.
bounty_holder_account
+
+
+
+
+
+ Bank account of the person who completed the bounty.
bounty_holder_job
+
+
+
+
+
+ What job the bounty holder had.
bounty_name
+
+
+
+
+
+ What the bounty was for.
bounty_value
+
+
+
+
+
+ Value of the bounty that this bounty cube sells for.
handler_tip
+
+
+
+
+
+ Multiplier for the bounty payout received by the person who claims the handling tip.
holder_cut
+
+
+
+
+
+ Multiplier for the bounty payout received by the person who completed the bounty.
nag_cooldown
+
+
+
+
+
+ Time between nags.
nag_cooldown_multiplier
+
+
+
+
+
+ How much the time between nags extends each nag.
next_nag_time
+
+
+
+
+
+ Next world tick to nag Supply listeners.
radio
+
+
+
+
+
+ Our internal radio.
radio_key
+
+
+
+
+
+ The key our internal radio uses.
speed_bonus
+
+
+
+
+
+ Multiplier for the bounty payout received by the Supply budget if the cube is sent without having to nag.
+
+
+
diff --git a/obj/item/broom.html b/obj/item/broom.html
new file mode 100644
index 0000000000000..8904d90c74e5b
--- /dev/null
+++ b/obj/item/broom.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+ /obj/item/broom - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ on_unwield triggered on unwield of two handed item
+ on_wield triggered on wield of two handed item
Proc Details on_unwield
+
+ triggered on unwield of two handed item
on_wield
+
+ triggered on wield of two handed item
+
+
+
diff --git a/obj/item/canvas.html b/obj/item/canvas.html
new file mode 100644
index 0000000000000..5a5357dee14a7
--- /dev/null
+++ b/obj/item/canvas.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/item/canvas - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ no_save boolean that blocks persistence from saving it. enabled from printing copies, because we do not want to save copies.
+ Var Details no_save
+
+
+
+
+
+ boolean that blocks persistence from saving it. enabled from printing copies, because we do not want to save copies.
+
+
+
diff --git a/obj/item/cardboard_cutout.html b/obj/item/cardboard_cutout.html
new file mode 100644
index 0000000000000..3b9ab7b5d3aa4
--- /dev/null
+++ b/obj/item/cardboard_cutout.html
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+ /obj/item/cardboard_cutout - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ deceptive If the cutout actually appears as what it portray and not a discolored version
+ possible_appearances Possible restyles for the cutout, add an entry in change_appearance() if you add to here
+ pushed_over If the cutout is pushed over and has to be righted Procs
+ change_appearance change_appearance: Changes a skin of the cardboard cutout based on a user's choice
+ check_menu check_menu: Checks if we are allowed to interact with a radial menu
+ Var Details deceptive
+
+
+
+
+
+ If the cutout actually appears as what it portray and not a discolored version
possible_appearances
+
+
+
+
+
+ Possible restyles for the cutout, add an entry in change_appearance() if you add to here
pushed_over
+
+
+
+
+
+ If the cutout is pushed over and has to be righted
Proc Details
+ change_appearance: Changes a skin of the cardboard cutout based on a user's choice
+Arguments:
+
+crayon The crayon used to change and recolor the cardboard cutout
+user The mob choosing a skin of the cardboard cutout
+
+ check_menu: Checks if we are allowed to interact with a radial menu
+Arguments:
+
+user The mob interacting with a menu
+crayon The crayon used to interact with a menu
+
+
+
+
diff --git a/obj/item/cardpack.html b/obj/item/cardpack.html
new file mode 100644
index 0000000000000..0f17506d77e08
--- /dev/null
+++ b/obj/item/cardpack.html
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+ /obj/item/cardpack - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ card_count The amount of cards to draw from the rarity table
+ contains_coin Chance of the pack having a coin in it out of 10
+ guar_rarity The guaranteed rarity table, acts about the same as the rarity table. it can have as many or as few raritys as you'd like
+ guaranteed_count The amount of cards to draw from the guarenteed rarity table
+ rarity_table The rarity table, the set must contain at least one of each
+ series The card series to look in
+ Var Details card_count
+
+
+
+
+
+ The amount of cards to draw from the rarity table
contains_coin
+
+
+
+
+
+ Chance of the pack having a coin in it out of 10
guar_rarity
+
+
+
+
+
+ The guaranteed rarity table, acts about the same as the rarity table. it can have as many or as few raritys as you'd like
guaranteed_count
+
+
+
+
+
+ The amount of cards to draw from the guarenteed rarity table
rarity_table
+
+
+
+
+
+ The rarity table, the set must contain at least one of each
series
+
+
+
+
+
+ The card series to look in
+
+
+
diff --git a/obj/item/chainsaw.html b/obj/item/chainsaw.html
new file mode 100644
index 0000000000000..df866a4652dcc
--- /dev/null
+++ b/obj/item/chainsaw.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+ /obj/item/chainsaw - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ on_unwield triggered on unwield of two handed item
+ on_wield triggered on wield of two handed item
Proc Details on_unwield
+
+ triggered on unwield of two handed item
on_wield
+
+ triggered on wield of two handed item
+
+
+
diff --git a/obj/item/chisel.html b/obj/item/chisel.html
new file mode 100644
index 0000000000000..72de1d1fa56ed
--- /dev/null
+++ b/obj/item/chisel.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ /obj/item/chisel - SPLURT Station 13
+
+
+
+
+
+
+Elder Atmosian
+ Var Details
+ Block we're currently carving in
sculpting
+
+
+
+
+
+ Currently sculpting
tracked_user
+
+
+
+
+
+ If tracked user moves we stop sculpting
+
+
+
diff --git a/obj/item/circuitboard.html b/obj/item/circuitboard.html
new file mode 100644
index 0000000000000..699db1042710e
--- /dev/null
+++ b/obj/item/circuitboard.html
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+ /obj/item/circuitboard - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ onstation determines if the circuit board originated from a vendor off station or not. Procs
+ configure_machine Used to allow the circuitboard to configure a machine in some way, shape or form.
+ Var Details onstation
+
+
+
+
+
+ determines if the circuit board originated from a vendor off station or not.
Proc Details
+ Used to allow the circuitboard to configure a machine in some way, shape or form.
+Arguments:
+
+machine - The machine to attempt to configure.
+
+
+
+
diff --git a/obj/item/clipboard.html b/obj/item/clipboard.html
new file mode 100644
index 0000000000000..0531c09aa6e56
--- /dev/null
+++ b/obj/item/clipboard.html
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+ /obj/item/clipboard - SPLURT Station 13
+
+
+
+
+
+
+Clipboard
+ Var Details integrated_pen
+
+
+
+
+
+ Is the pen integrated?
pen
+
+
+
+
+
+ The stored pen
toppaper_ref
+
+
+
+
+
+ Weakref of the topmost piece of paper
+This is used for the paper displayed on the clipboard's icon
+and it is the one attacked, when attacking the clipboard.
+(As you can't organise contents directly in BYOND)
Proc Details on_top_paper_change()
+
+
+
+
+
+ This is a simple proc to handle calling update_icon() upon receiving the top paper's COMSIG_ATOM_UPDATE_APPEARANCE
.
remove_paper
+
+ Take out the topmost paper
+
+
+
diff --git a/obj/item/clipboard/cyborg.html b/obj/item/clipboard/cyborg.html
new file mode 100644
index 0000000000000..fe092750e5d81
--- /dev/null
+++ b/obj/item/clipboard/cyborg.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ /obj/item/clipboard/cyborg - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details paper_charge_cost
+
+
+
+
+
+ How much charge is required to print a piece of paper?
printer_cooldown
+
+
+
+
+
+ When was the last time the printer was used?
printer_cooldown_time
+
+
+
+
+
+ How long is the integrated printer's cooldown?
+
+
+
diff --git a/obj/item/clothing.html b/obj/item/clothing.html
new file mode 100644
index 0000000000000..3b0ebde0979e9
--- /dev/null
+++ b/obj/item/clothing.html
@@ -0,0 +1,96 @@
+
+
+
+
+
+
+ /obj/item/clothing - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ armor_list These are armor values that protect the wearer, taken from the clothing's armor datum. List updates on examine because it's currently only used to print armor ratings to chat in Topic().
+ durability_list These are armor values that protect the clothing, taken from its armor datum. List updates on examine because it's currently only used to print armor ratings to chat in Topic(). Procs
+ armor_to_protection_class Rounds armor_value to nearest 10, divides it by 10 and then expresses it in roman numerals up to 10
+ bristle If we're a clothing with at least 1 shredded/disabled zone, give the wearer a periodic heads up letting them know their clothes are damaged
+ disable_zone disable_zone() is used to disable a given bodypart's protection on our clothing item, mainly from [/obj/item/clothing/proc/take_damage_zone()]
+ take_damage_zone take_damage_zone() is used for dealing damage to specific bodyparts on a worn piece of clothing, meant to be called from [/obj/item/bodypart/proc/check_woundings_mods()]
+ Var Details armor_list
+
+
+
+
+
+ These are armor values that protect the wearer, taken from the clothing's armor datum. List updates on examine because it's currently only used to print armor ratings to chat in Topic().
durability_list
+
+
+
+
+
+ These are armor values that protect the clothing, taken from its armor datum. List updates on examine because it's currently only used to print armor ratings to chat in Topic().
Proc Details armor_to_protection_class(armor_value)
+
+
+
+
+
+ Rounds armor_value to nearest 10, divides it by 10 and then expresses it in roman numerals up to 10
+Rounds armor_value to nearest 10, divides it by 10
+and then expresses it in roman numerals up to 10
+Arguments:
+
+armor_value - Number we're converting
+ bristle
+
+ If we're a clothing with at least 1 shredded/disabled zone, give the wearer a periodic heads up letting them know their clothes are damaged
disable_zone(def_zone, damage_type)
+
+
+
+
+
+ disable_zone() is used to disable a given bodypart's protection on our clothing item, mainly from [/obj/item/clothing/proc/take_damage_zone()]
+This proc disables all protection on the specified bodypart for this piece of clothing: it'll be as if it doesn't cover it at all anymore (because it won't!)
+If every possible bodypart has been disabled on the clothing, we put it out of commission entirely and mark it as shredded, whereby it will have to be repaired in
+order to equip it again. Also note we only consider it damaged if there's more than one bodypart disabled.
+Arguments:
+
+def_zone: The bodypart zone we're disabling
+damage_type: Only really relevant for the verb for describing the breaking, and maybe obj_destruction()
+ take_damage_zone(def_zone, damage_amount, damage_type, armour_penetration)
+
+
+
+
+
+ take_damage_zone() is used for dealing damage to specific bodyparts on a worn piece of clothing, meant to be called from [/obj/item/bodypart/proc/check_woundings_mods()]
+This proc only matters when a bodypart that this clothing is covering is harmed by a direct attack (being on fire or in space need not apply), and only if this clothing covers
+
+more than one bodypart to begin with. No point in tracking damage by zone for a hat, and I'm not cruel enough to let you fully break them in a few shots.
+Also if limb_integrity is 0, then this clothing doesn't have bodypart damage enabled so skip it.
+Arguments:
+
+def_zone: The bodypart zone in question
+damage_amount: Incoming damage
+damage_type: BRUTE or BURN
+armour_penetration: If the attack had armour_penetration
+
+
+
+
diff --git a/obj/item/clothing/glasses/hud.html b/obj/item/clothing/glasses/hud.html
new file mode 100644
index 0000000000000..9041e7f33efd4
--- /dev/null
+++ b/obj/item/clothing/glasses/hud.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/item/clothing/glasses/hud - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ hud_trait Used for topic calls. Just because you have a HUD display doesn't mean you should be able to interact with stuff.
+ Var Details hud_trait
+
+
+
+
+
+ Used for topic calls. Just because you have a HUD display doesn't mean you should be able to interact with stuff.
+
+
+
diff --git a/obj/item/clothing/gloves/fingerless/pugilist.html b/obj/item/clothing/gloves/fingerless/pugilist.html
new file mode 100644
index 0000000000000..e7bbc130210f2
--- /dev/null
+++ b/obj/item/clothing/gloves/fingerless/pugilist.html
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+ /obj/item/clothing/gloves/fingerless/pugilist - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ enhancement Extra damage through the punch.
+ inherited_trait Main trait added by the gloves to the user on wear.
+ secondary_trait Secondary trait added by the gloves to the user on wear.
+ silent do we give the flavortext for wearing them
+ wornonce did you ever get around to wearing these or no
+ wound_enhancement extra wound bonus through the punch (MAYBE DON'T BE GENEROUS WITH THIS)
+ Var Details enhancement
+
+
+
+
+
+ Extra damage through the punch.
inherited_trait
+
+
+
+
+
+ Main trait added by the gloves to the user on wear.
secondary_trait
+
+
+
+
+
+ Secondary trait added by the gloves to the user on wear.
silent
+
+
+
+
+
+ do we give the flavortext for wearing them
wornonce
+
+
+
+
+
+ did you ever get around to wearing these or no
wound_enhancement
+
+
+
+
+
+ extra wound bonus through the punch (MAYBE DON'T BE GENEROUS WITH THIS)
+
+
+
diff --git a/obj/item/clothing/gloves/mod.html b/obj/item/clothing/gloves/mod.html
new file mode 100644
index 0000000000000..6351cc2126c08
--- /dev/null
+++ b/obj/item/clothing/gloves/mod.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /obj/item/clothing/gloves/mod - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ show_overslot Replaces these gloves on the wearer with the overslot ones
Proc Details show_overslot()
+
+
+
+
+
+ Replaces these gloves on the wearer with the overslot ones
+
+
+
diff --git a/obj/item/clothing/gloves/space_ninja.html b/obj/item/clothing/gloves/space_ninja.html
new file mode 100644
index 0000000000000..b92fc872b48f0
--- /dev/null
+++ b/obj/item/clothing/gloves/space_ninja.html
@@ -0,0 +1,96 @@
+
+
+
+
+
+
+ /obj/item/clothing/gloves/space_ninja - SPLURT Station 13
+
+
+
+
+
+
+Space ninja's gloves. Gives access to a number of special interactions.
+Gloves only found from space ninjas. Allows the wearer to access special interactions with various objects.
+These interactions are detailed in ninjaDrainAct.dm in the suit file.
+These interactions are toggled by an action tied to the gloves. The interactions will not activate if the user is also not wearing a ninja suit.
Vars
+ borg_hack_success Whether or not the cyborg hack was used to syndify a cyborg
+ candrain Whether or not we can currently drain something
+ communication_console_hack_success Whether or not the communication console hack was used to summon another antagonist
+ door_hack_counter How many times the gloves have been used to force open doors.
+ draining Whether or not we're currently draining something
+ maxdrain Maximum amount of power we can drain in a single drain action
+ mindrain Minimum amount of power we can drain in a single drain action
+ security_console_hack_success Whether or not the security console hack was used to set everyone to arrest Procs
+ toggledrain Proc called to toggle the ninja glove's special abilities.
+ Var Details borg_hack_success
+
+
+
+
+
+ Whether or not the cyborg hack was used to syndify a cyborg
candrain
+
+
+
+
+
+ Whether or not we can currently drain something
communication_console_hack_success
+
+
+
+
+
+ Whether or not the communication console hack was used to summon another antagonist
door_hack_counter
+
+
+
+
+
+ How many times the gloves have been used to force open doors.
draining
+
+
+
+
+
+ Whether or not we're currently draining something
maxdrain
+
+
+
+
+
+ Maximum amount of power we can drain in a single drain action
mindrain
+
+
+
+
+
+ Minimum amount of power we can drain in a single drain action
security_console_hack_success
+
+
+
+
+
+ Whether or not the security console hack was used to set everyone to arrest
Proc Details toggledrain()
+
+
+
+
+
+ Proc called to toggle the ninja glove's special abilities.
+Used to toggle whether or not the ninja glove's abilities will activate on touch.
+
+
+
diff --git a/obj/item/clothing/gloves/tackler.html b/obj/item/clothing/gloves/tackler.html
new file mode 100644
index 0000000000000..669c59f6c5bef
--- /dev/null
+++ b/obj/item/clothing/gloves/tackler.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+ /obj/item/clothing/gloves/tackler - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details base_knockdown
+
+
+
+
+
+ See: /datum/component/tackler/var/base_knockdown
min_distance
+
+
+
+
+
+ See: /datum/component/tackler/var/min_distance
skill_mod
+
+
+
+
+
+ See: /datum/component/tackler/var/skill_mod
tackle_range
+
+
+
+
+
+ See: /datum/component/tackler/var/range
tackle_speed
+
+
+
+
+
+ See: /datum/component/tackler/var/speed
tackle_stam_cost
+
+
+
+
+
+ See: /datum/component/tackler/var/stamina_cost
+ For storing our tackler datum so we can remove it after
+
+
+
diff --git a/obj/item/clothing/head.html b/obj/item/clothing/head.html
new file mode 100644
index 0000000000000..0dcbbf5ad0af2
--- /dev/null
+++ b/obj/item/clothing/head.html
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+ /obj/item/clothing/head - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ throw_impact Special throw_impact for hats to frisbee hats at people to place them on their heads.
+ worn_overlays if the thrown object's target zone isn't the head
+ignore any hats with downsides when worn
+if the hat happens to be capable of holding contents and has something in it. mostly to prevent super cheesy stuff like stuffing a mini-bomb in a hat and throwing it
+hats in the borg's blacklist bounce off
Proc Details throw_impact
+
+ Special throw_impact for hats to frisbee hats at people to place them on their heads.
worn_overlays(isinhands, icon_file, used_state, style_flags)
+
+
+
+
+
+ if the thrown object's target zone isn't the head
+ignore any hats with downsides when worn
+if the hat happens to be capable of holding contents and has something in it. mostly to prevent super cheesy stuff like stuffing a mini-bomb in a hat and throwing it
+hats in the borg's blacklist bounce off
+
+
+
diff --git a/obj/item/clothing/head/helmet/space/hardsuit/mining.html b/obj/item/clothing/head/helmet/space/hardsuit/mining.html
new file mode 100644
index 0000000000000..4db283361bd1b
--- /dev/null
+++ b/obj/item/clothing/head/helmet/space/hardsuit/mining.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+ /obj/item/clothing/head/helmet/space/hardsuit/mining - SPLURT Station 13
+
+
+
+
+
+
+Proc Details update_icon_state()
+
+
+
+
+
+ h suffix for helmet
+Sprited by Dexxiol#3462 :)
+
+
+
diff --git a/obj/item/clothing/head/helmet/space/plasmaman.html b/obj/item/clothing/head/helmet/space/plasmaman.html
new file mode 100644
index 0000000000000..f6925d9f837a2
--- /dev/null
+++ b/obj/item/clothing/head/helmet/space/plasmaman.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /obj/item/clothing/head/helmet/space/plasmaman - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ wipe_that_smile_off_your_face gets called when receiving the CLEAN_ACT signal from something, i.e soap or a shower. exists to remove any smiley faces drawn on the helmet.
Proc Details wipe_that_smile_off_your_face()
+
+
+
+
+
+ gets called when receiving the CLEAN_ACT signal from something, i.e soap or a shower. exists to remove any smiley faces drawn on the helmet.
+
+
+
diff --git a/obj/item/clothing/head/helmet/space/space_ninja.html b/obj/item/clothing/head/helmet/space/space_ninja.html
new file mode 100644
index 0000000000000..bafb716cc8fc7
--- /dev/null
+++ b/obj/item/clothing/head/helmet/space/space_ninja.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ /obj/item/clothing/head/helmet/space/space_ninja - SPLURT Station 13
+
+
+
+
+
+
+Space ninja's hood. Provides armor and blocks AI tracking.
+A hood that only exists as a part of space ninja's starting kit. Provides armor equal of space ninja's suit and disallows an AI to track the wearer.
+
+
+
diff --git a/obj/item/clothing/head/ushanka.html b/obj/item/clothing/head/ushanka.html
new file mode 100644
index 0000000000000..2691a8172a20d
--- /dev/null
+++ b/obj/item/clothing/head/ushanka.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /obj/item/clothing/head/ushanka - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ downsprite Sprite visible when the ushanka flaps are folded down.
+ upsprite Sprite visible when the ushanka flaps are folded up.
+ Var Details downsprite
+
+
+
+
+
+ Sprite visible when the ushanka flaps are folded down.
upsprite
+
+
+
+
+
+ Sprite visible when the ushanka flaps are folded up.
+
+
+
diff --git a/obj/item/clothing/mask.html b/obj/item/clothing/mask.html
new file mode 100644
index 0000000000000..21598c242a152
--- /dev/null
+++ b/obj/item/clothing/mask.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+ /obj/item/clothing/mask - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ adjustmask Proc that moves gas/breath masks out of the way, disabling them and allowing pill/food consumption
+The flavor_details variable is for masks that use this function only to toggle HIDEFACE for identity.
Proc Details adjustmask
+
+ Proc that moves gas/breath masks out of the way, disabling them and allowing pill/food consumption
+The flavor_details variable is for masks that use this function only to toggle HIDEFACE for identity.
+
+
+
diff --git a/obj/item/clothing/mask/chameleon.html b/obj/item/clothing/mask/chameleon.html
new file mode 100644
index 0000000000000..86ae541fbbe41
--- /dev/null
+++ b/obj/item/clothing/mask/chameleon.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/item/clothing/mask/chameleon - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details chameleon_action
+
+
+
+
+
+ This determines if the voice changer is on or off.
+
+
+
diff --git a/obj/item/clothing/mask/facehugger/toy.html b/obj/item/clothing/mask/facehugger/toy.html
new file mode 100644
index 0000000000000..bf702ae717b1d
--- /dev/null
+++ b/obj/item/clothing/mask/facehugger/toy.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ /obj/item/clothing/mask/facehugger/toy - SPLURT Station 13
+
+
+
+
+
+
+Mining Equipment Vendor Items
+Facehugger toy
+
+
+
diff --git a/obj/item/clothing/mask/gas/space_ninja.html b/obj/item/clothing/mask/gas/space_ninja.html
new file mode 100644
index 0000000000000..502e6b7a63e98
--- /dev/null
+++ b/obj/item/clothing/mask/gas/space_ninja.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ /obj/item/clothing/mask/gas/space_ninja - SPLURT Station 13
+
+
+
+
+
+
+Space ninja's mask. Makes you sound like a real anime girl. Barely able to be considered a real upside.
+A mask which only spawns as a part of space ninja's starting kit. Functions as a gas mask.
+
+
+
diff --git a/obj/item/clothing/mask/void_mask.html b/obj/item/clothing/mask/void_mask.html
new file mode 100644
index 0000000000000..42e3e2ac419eb
--- /dev/null
+++ b/obj/item/clothing/mask/void_mask.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/item/clothing/mask/void_mask - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details
+ Who is wearing this
+
+
+
diff --git a/obj/item/clothing/neck/eldritch_amulet.html b/obj/item/clothing/neck/eldritch_amulet.html
new file mode 100644
index 0000000000000..1555181d73778
--- /dev/null
+++ b/obj/item/clothing/neck/eldritch_amulet.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/item/clothing/neck/eldritch_amulet - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ trait What trait do we want to add upon equipiing
+ Var Details trait
+
+
+
+
+
+ What trait do we want to add upon equipiing
+
+
+
diff --git a/obj/item/clothing/neck/necklace/dope/merchant.html b/obj/item/clothing/neck/necklace/dope/merchant.html
new file mode 100644
index 0000000000000..6994588cca245
--- /dev/null
+++ b/obj/item/clothing/neck/necklace/dope/merchant.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /obj/item/clothing/neck/necklace/dope/merchant - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ profit_scaling scales the amount received in case an admin wants to emulate taxes/fees.
+ selling toggles between sell (TRUE) and get price post-fees (FALSE)
+ Var Details profit_scaling
+
+
+
+
+
+ scales the amount received in case an admin wants to emulate taxes/fees.
selling
+
+
+
+
+
+ toggles between sell (TRUE) and get price post-fees (FALSE)
+
+
+
diff --git a/obj/item/clothing/shoes.html b/obj/item/clothing/shoes.html
new file mode 100644
index 0000000000000..590301913686d
--- /dev/null
+++ b/obj/item/clothing/shoes.html
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+ /obj/item/clothing/shoes - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ can_be_tied Whether these shoes have laces that can be tied/untied
+ lace_time How long it takes to lace/unlace these shoes
+ our_alert any alerts we have active
+ tied Are we currently tied? Can either be SHOES_UNTIED, SHOES_TIED, or SHOES_KNOTTED Procs
+ adjust_laces adjust_laces adjusts whether our shoes (assuming they can_be_tied) and tied, untied, or knotted
+ check_trip check_trip runs on each step to see if we fall over as a result of our lace status. Knotted laces are a guaranteed trip, while untied shoes are just a chance to stumble
+ handle_tying handle_tying deals with all the actual tying/untying/knotting, inferring your intent from who you are in relation to the state of the laces
+ still_shoed our_guy here is the wearer, if one exists (and he must exist, or we don't care)
+checking to make sure we're still on the person we're supposed to be, for lacing do_after's
+ Var Details can_be_tied
+
+
+
+
+
+ Whether these shoes have laces that can be tied/untied
lace_time
+
+
+
+
+
+ How long it takes to lace/unlace these shoes
+ any alerts we have active
tied
+
+
+
+
+
+ Are we currently tied? Can either be SHOES_UNTIED, SHOES_TIED, or SHOES_KNOTTED
Proc Details adjust_laces(state, /mob /user)
+
+
+
+
+
+ adjust_laces adjusts whether our shoes (assuming they can_be_tied) and tied, untied, or knotted
+In addition to setting the state, it will deal with getting rid of alerts if they exist, as well as registering and unregistering the stepping signals
+Arguments:
+
+state: SHOES_UNTIED, SHOES_TIED, or SHOES_KNOTTED, depending on what you want them to become
+user: used to check to see if we're the ones unknotting our own laces
+ check_trip()
+
+
+
+
+
+ check_trip runs on each step to see if we fall over as a result of our lace status. Knotted laces are a guaranteed trip, while untied shoes are just a chance to stumble
handle_tying
+
+ handle_tying deals with all the actual tying/untying/knotting, inferring your intent from who you are in relation to the state of the laces
+If you're the wearer, you want them to move towards tied-ness (knotted -> untied -> tied). If you're not, you're pranking them, so you're moving towards knotted-ness (tied -> untied -> knotted)
+Arguments:
+
+user: who is the person interacting with the shoes?
+ still_shoed
+
+ our_guy here is the wearer, if one exists (and he must exist, or we don't care)
+checking to make sure we're still on the person we're supposed to be, for lacing do_after's
+
+
+
diff --git a/obj/item/clothing/shoes/mod.html b/obj/item/clothing/shoes/mod.html
new file mode 100644
index 0000000000000..11ab17814870b
--- /dev/null
+++ b/obj/item/clothing/shoes/mod.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /obj/item/clothing/shoes/mod - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ show_overslot Replaces these shoes on the wearer with the overslot ones
Proc Details show_overslot()
+
+
+
+
+
+ Replaces these shoes on the wearer with the overslot ones
+
+
+
diff --git a/obj/item/clothing/shoes/space_ninja.html b/obj/item/clothing/shoes/space_ninja.html
new file mode 100644
index 0000000000000..b97d8a16d80f2
--- /dev/null
+++ b/obj/item/clothing/shoes/space_ninja.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+ /obj/item/clothing/shoes/space_ninja - SPLURT Station 13
+
+
+
+
+
+
+Space ninja's shoes. Gives him armor on his feet.
+Space ninja's ninja shoes. How mousey. Gives him slip protection and protection against attacks.
+Also are temperature resistant.
+
+
+
diff --git a/obj/item/clothing/suit/hooded.html b/obj/item/clothing/suit/hooded.html
new file mode 100644
index 0000000000000..4eddcae9d580f
--- /dev/null
+++ b/obj/item/clothing/suit/hooded.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/item/clothing/suit/hooded - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ alternative_mode Alternative mode for hiding the hood, instead of storing the hood in the suit it qdels it, useful for when you deal with hooded suit with storage.
+ Var Details alternative_mode
+
+
+
+
+
+ Alternative mode for hiding the hood, instead of storing the hood in the suit it qdels it, useful for when you deal with hooded suit with storage.
+
+
+
diff --git a/obj/item/clothing/suit/space/space_ninja.html b/obj/item/clothing/suit/space/space_ninja.html
new file mode 100644
index 0000000000000..71b22dd53c1e2
--- /dev/null
+++ b/obj/item/clothing/suit/space/space_ninja.html
@@ -0,0 +1,282 @@
+
+
+
+
+
+
+ /obj/item/clothing/suit/space/space_ninja - SPLURT Station 13
+
+
+
+
+
+
+Space ninja's suit. Provides him with most of his powers.
+Space ninja's suit. Gives space ninja all his iconic powers, which are mostly kept in
+the folder ninja_equipment_actions. Has a lot of unique stuff going on, so make sure to check
+the variables. Check suit_attackby to see radium interaction, disk copying, and cell replacement.
Vars
+ a_boost Whether or not the adrenaline boost ability is available
+ a_transfer Units of radium required to refill the adrenaline boost
+ affecting The person wearing the suit
+ n_mask The space ninja's mask.
+ s_acost Additional energy cost for cloaking per process
+ s_busy Whether or not the wearer is in the middle of an action, like hacking.
+ s_coold The suit's current cooldown. If not 0, blocks usage of most abilities, and decrements its value by 1 every process
+ s_cost How much energy the suit expends in a single process
+ s_delay How fast the suit is at certain actions, like draining power from things
+ s_initialized Whether or not the suit is currently booted up. Starts off.
+ s_longdelay How fast the suit is at certain riskier actions, like hacking communications consoles.
+ stealth Whether or not the suit is currently in stealth mode. Procs
+ cancel_stealth Proc called to cancel stealth.
+ deinitialize Deinitializes the ninja suit
+ lock_suit Proc called to lock the important gear pieces onto space ninja's body.
+ ninitialize Initializes the ninja suit
+ ninja_sword_recall Proc called to recall the ninja's sword.
+ ninjaboost Proc called to activate space ninja's adrenaline.
+ ninjaboost_after Proc called to inject the ninja with radium.
+ ninjacost Proc called to check if the ninja can afford an ability's cost.
+ ninjanet Proc called to ensnare a person in a energy net.
+ ninjapulse Proc called to allow the ninja to EMP the nearby area.
+ ninjastar Proc called to create a ninja star in the ninja's hands.
+ terminate Proc used to delete all the attachments and itself.
+ toggle_on_off Toggles the ninja suit on/off
+ toggle_stealth Proc called to toggle ninja stealth.
+ unlock_suit Proc called to unlock all the gear off space ninja's body.
+ Var Details a_boost
+
+
+
+
+
+ Whether or not the adrenaline boost ability is available
a_transfer
+
+
+
+
+
+ Units of radium required to refill the adrenaline boost
+ The person wearing the suit
+ The space ninja's mask.
s_acost
+
+
+
+
+
+ Additional energy cost for cloaking per process
s_busy
+
+
+
+
+
+ Whether or not the wearer is in the middle of an action, like hacking.
s_coold
+
+
+
+
+
+ The suit's current cooldown. If not 0, blocks usage of most abilities, and decrements its value by 1 every process
s_cost
+
+
+
+
+
+ How much energy the suit expends in a single process
s_delay
+
+
+
+
+
+ How fast the suit is at certain actions, like draining power from things
s_initialized
+
+
+
+
+
+ Whether or not the suit is currently booted up. Starts off.
s_longdelay
+
+
+
+
+
+ How fast the suit is at certain riskier actions, like hacking communications consoles.
stealth
+
+
+
+
+
+ Whether or not the suit is currently in stealth mode.
Proc Details cancel_stealth()
+
+
+
+
+
+ Proc called to cancel stealth.
+Called to cancel the stealth effect if it is ongoing.
+Does nothing otherwise.
+Arguments:
+
+Returns false if either the ninja no longer exists or is already visible, returns true if we successfully made the ninja visible.
+ deinitialize
+
+ Deinitializes the ninja suit
+Deinitializes the ninja suit through eight phases, each of which calls this proc with an incremented phase
+Arguments:
+
+delay - The delay between each phase of deinitialization
+ninja - The human who is being affected by the suit
+phase - The phase of deinitialization
+
+ Proc called to lock the important gear pieces onto space ninja's body.
+Called during the suit startup to lock all gear pieces onto space ninja.
+Terminates if a gear piece is not being worn. Also gives the ninja the inability to use firearms.
+If the person in the suit isn't a ninja when this is called, this proc just gibs them instead.
+Arguments:
+
+ninja - The person wearing the suit.
+Returns false if the locking fails due to lack of all suit parts, and true if it succeeds.
+ ninitialize
+
+ Initializes the ninja suit
+Initializes the ninja suit through seven phases, each of which calls this proc with an incremented phase
+Arguments:
+
+delay - The delay between each phase of initialization
+ninja - The human who is being affected by the suit
+phase - The phase of initialization
+ ninja_sword_recall()
+
+
+
+
+
+ Proc called to recall the ninja's sword.
+Called to summon the ninja's katana back to them
+If the katana can see the ninja, it will throw itself towards them.
+If not, the katana will teleport itself to the ninja.
ninjaboost()
+
+
+
+
+
+ Proc called to activate space ninja's adrenaline.
+Proc called to use space ninja's adrenaline. Gets the ninja out of almost any stun.
+Also makes them shout MGS references when used. After a bit, it injects the user with
+radium by calling a different proc.
ninjaboost_after()
+
+
+
+
+
+ Proc called to inject the ninja with radium.
+Used after 7 seconds of using the ninja's adrenaline.
+Injects the user with how much radium the suit needs to refill an adrenaline boost.
ninjacost(cost, specificCheck)
+
+
+
+
+
+ Proc called to check if the ninja can afford an ability's cost.
+Proc which determine whether or not a space ninja can afford to use a specific ability.
+It can also cancel stealth if the ability requested it.
+Arguments:
+
+cost - the energy cost of the ability
+specificCheck - Determines if the check is a normal one, an adrenaline one, or a stealth cancel check.
+Returns TRUE or the current cooldown timer if we can't perform the ability, and FALSE if we can.
+ ninjanet()
+
+
+
+
+
+ Proc called to ensnare a person in a energy net.
+Used to ensnare a target in an energy net, preventing them from moving until the net is broken.
+Costs 40E, which is 40% of the default battery's max charge. Intended as a means of reliably locking down an opponent when ninja stars won't suffice.
ninjapulse()
+
+
+
+
+
+ Proc called to allow the ninja to EMP the nearby area.
+Proc called to allow the ninja to EMP the nearby area. By default, costs 500E, which is half of the default battery's max charge.
+Also affects the ninja as well.
ninjastar()
+
+
+
+
+
+ Proc called to create a ninja star in the ninja's hands.
+Called to create a ninja star in the wearer's hand. The ninja
+star doesn't do much up-front damage, but deals stamina damage
+as the target moves around, forcing a finish or flee scenario.
terminate()
+
+
+
+
+
+ Proc used to delete all the attachments and itself.
+Can be called to entire rid of the suit pieces and the suit itself.
toggle_on_off()
+
+
+
+
+
+ Toggles the ninja suit on/off
+Attempts to initialize or deinitialize the ninja suit
toggle_stealth()
+
+
+
+
+
+ Proc called to toggle ninja stealth.
+Proc called to toggle whether or not the ninja is in stealth mode.
+If cancelling, calls a separate proc in case something else needs to quickly cancel stealth.
+ Proc called to unlock all the gear off space ninja's body.
+Proc which is essentially the opposite of lock_suit. Lets you take off all the suit parts.
+Also gets rid of the objection to using firearms from the wearer.
+Arguments:
+
+ninja - The person wearing the suit.
+
+
+
+
diff --git a/obj/item/computer_hardware.html b/obj/item/computer_hardware.html
new file mode 100644
index 0000000000000..faac4a6b82259
--- /dev/null
+++ b/obj/item/computer_hardware.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+ /obj/item/computer_hardware - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ try_eject Implement this when your hardware contains an object that the user can eject.
Proc Details try_eject
+
+ Implement this when your hardware contains an object that the user can eject.
+Examples include ejecting cells from battery modules, ejecting an ID card from a card reader
+or ejecting an Intellicard from an AI card slot.
+Arguments:
+
+user - The mob requesting the eject.
+forced - Whether this action should be forced in some way.
+
+
+
+
diff --git a/obj/item/computer_hardware/ai_slot.html b/obj/item/computer_hardware/ai_slot.html
new file mode 100644
index 0000000000000..fd551508603e2
--- /dev/null
+++ b/obj/item/computer_hardware/ai_slot.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /obj/item/computer_hardware/ai_slot - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ Exited What happens when the intellicard is removed (or deleted) from the module, through try_eject() or not.
Proc Details Exited
+
+ What happens when the intellicard is removed (or deleted) from the module, through try_eject() or not.
+
+
+
diff --git a/obj/item/computer_hardware/battery.html b/obj/item/computer_hardware/battery.html
new file mode 100644
index 0000000000000..d78b08b6fa2a6
--- /dev/null
+++ b/obj/item/computer_hardware/battery.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /obj/item/computer_hardware/battery - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ Exited What happens when the battery is removed (or deleted) from the module, through try_eject() or not.
Proc Details Exited
+
+ What happens when the battery is removed (or deleted) from the module, through try_eject() or not.
+
+
+
diff --git a/obj/item/computer_hardware/card_slot.html b/obj/item/computer_hardware/card_slot.html
new file mode 100644
index 0000000000000..7a38f0c8a033b
--- /dev/null
+++ b/obj/item/computer_hardware/card_slot.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+ /obj/item/computer_hardware/card_slot - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ Exited What happens when the ID card is removed (or deleted) from the module, through try_eject() or not.
+ swap_slot Swaps the card_slot hardware between using the dedicated card slot bay on a computer, and using an expansion bay.
Proc Details Exited
+
+ What happens when the ID card is removed (or deleted) from the module, through try_eject() or not.
swap_slot()
+
+
+
+
+
+ Swaps the card_slot hardware between using the dedicated card slot bay on a computer, and using an expansion bay.
+
+
+
diff --git a/obj/item/construction/plumbing.html b/obj/item/construction/plumbing.html
new file mode 100644
index 0000000000000..589de423cc453
--- /dev/null
+++ b/obj/item/construction/plumbing.html
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+ /obj/item/construction/plumbing - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ blueprint type of the plumbing machine
+ choices index, used in the attack self to get the type. stored here since it doesnt change
+ name_to_type index, used in the attack self to get the type. stored here since it doesnt change Procs
+ create_machine pretty much rcd_create, but named differently to make myself feel less bad for copypasting from a sibling-type
+ Var Details blueprint
+
+
+
+
+
+ type of the plumbing machine
choices
+
+
+
+
+
+ index, used in the attack self to get the type. stored here since it doesnt change
name_to_type
+
+
+
+
+
+ index, used in the attack self to get the type. stored here since it doesnt change
Proc Details create_machine
+
+ pretty much rcd_create, but named differently to make myself feel less bad for copypasting from a sibling-type
+
+
+
diff --git a/obj/item/conveyor_sorter.html b/obj/item/conveyor_sorter.html
new file mode 100644
index 0000000000000..531d4b193aea0
--- /dev/null
+++ b/obj/item/conveyor_sorter.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /obj/item/conveyor_sorter - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ current_sort the list of things that are currently within the sorting list
+ spawned_sorters the list of conveyor sorters spawned by
+ Var Details current_sort
+
+
+
+
+
+ the list of things that are currently within the sorting list
spawned_sorters
+
+
+
+
+
+ the list of conveyor sorters spawned by
+
+
+
diff --git a/obj/item/coupon.html b/obj/item/coupon.html
new file mode 100644
index 0000000000000..305f345187204
--- /dev/null
+++ b/obj/item/coupon.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /obj/item/coupon - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ generate Choose what our prize is :D
Proc Details generate()
+
+
+
+
+
+ Choose what our prize is :D
+
+
+
diff --git a/obj/item/cult_spear.html b/obj/item/cult_spear.html
new file mode 100644
index 0000000000000..8c7050b37156a
--- /dev/null
+++ b/obj/item/cult_spear.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+ /obj/item/cult_spear - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ on_unwield triggered on unwield of two handed item
+ on_wield triggered on wield of two handed item
Proc Details on_unwield
+
+ triggered on unwield of two handed item
on_wield
+
+ triggered on wield of two handed item
+
+
+
diff --git a/obj/item/defibrillator.html b/obj/item/defibrillator.html
new file mode 100644
index 0000000000000..7a002281088ba
--- /dev/null
+++ b/obj/item/defibrillator.html
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+ /obj/item/defibrillator - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ cell_removable If the cell can be removed via screwdriver
+ charge_state The icon state for the charge bar overlay, not applied if null
+ emagged_state The icon state for the emagged overlay, not applied if null
+ nocell_state The icon state for the missing cell overlay, not applied if null
+ paddle_state The icon state for the paddle overlay, not applied if null
+ powered_state The icon state for the powered on overlay, not applied if null
+ Var Details cell_removable
+
+
+
+
+
+ If the cell can be removed via screwdriver
charge_state
+
+
+
+
+
+ The icon state for the charge bar overlay, not applied if null
emagged_state
+
+
+
+
+
+ The icon state for the emagged overlay, not applied if null
nocell_state
+
+
+
+
+
+ The icon state for the missing cell overlay, not applied if null
paddle_state
+
+
+
+
+
+ The icon state for the paddle overlay, not applied if null
powered_state
+
+
+
+
+
+ The icon state for the powered on overlay, not applied if null
+
+
+
diff --git a/obj/item/dualsaber.html b/obj/item/dualsaber.html
new file mode 100644
index 0000000000000..ebd1678b6ad15
--- /dev/null
+++ b/obj/item/dualsaber.html
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+ /obj/item/dualsaber - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ can_reflect Can this reflect all energy projectiles? Procs
+ on_unwield Triggered on unwield of two handed item
+switch hitsounds
+ on_wield Triggered on wield of two handed item
+Specific hulk checks due to reflection chance for balance issues and switches hitsounds.
+ Var Details can_reflect
+
+
+
+
+
+ Can this reflect all energy projectiles?
Proc Details
+ Triggered on unwield of two handed item
+switch hitsounds
+ Triggered on wield of two handed item
+Specific hulk checks due to reflection chance for balance issues and switches hitsounds.
+
+
+
diff --git a/obj/item/dyespray.html b/obj/item/dyespray.html
new file mode 100644
index 0000000000000..833e08d32cfda
--- /dev/null
+++ b/obj/item/dyespray.html
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+ /obj/item/dyespray - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ dye Applies a gradient and a gradient color to a mob.
Proc Details dye(/mob /target)
+
+
+
+
+
+ Applies a gradient and a gradient color to a mob.
+Arguments:
+
+target - The mob who we will apply the gradient and gradient color to.
+
+
+
+
diff --git a/obj/item/eldritch_potion.html b/obj/item/eldritch_potion.html
new file mode 100644
index 0000000000000..35d441aca37d9
--- /dev/null
+++ b/obj/item/eldritch_potion.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /obj/item/eldritch_potion - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ status_effect Typepath to the status effect this is supposed to hold Procs
+ effect The effect of the potion if it has any special one, in general try not to override this and utilize the status_effect var to make custom effects.
+ Var Details status_effect
+
+
+
+
+
+ Typepath to the status effect this is supposed to hold
Proc Details effect
+
+ The effect of the potion if it has any special one, in general try not to override this and utilize the status_effect var to make custom effects.
+
+
+
diff --git a/obj/item/electronics/airlock.html b/obj/item/electronics/airlock.html
new file mode 100644
index 0000000000000..66e69eb952608
--- /dev/null
+++ b/obj/item/electronics/airlock.html
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+ /obj/item/electronics/airlock - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ accesses A list of all granted accesses
+ holder A holder of the electronics, in case of them working as an integrated part
+ one_access If the airlock should require ALL or only ONE of the listed accesses
+ unres_sides Unrestricted sides, or sides of the airlock that will open regardless of access
+ Var Details accesses
+
+
+
+
+
+ A list of all granted accesses
holder
+
+
+
+
+
+ A holder of the electronics, in case of them working as an integrated part
one_access
+
+
+
+
+
+ If the airlock should require ALL or only ONE of the listed accesses
unres_sides
+
+
+
+
+
+ Unrestricted sides, or sides of the airlock that will open regardless of access
+
+
+
diff --git a/obj/item/electronics/electrochromatic_kit.html b/obj/item/electronics/electrochromatic_kit.html
new file mode 100644
index 0000000000000..4440ccac12850
--- /dev/null
+++ b/obj/item/electronics/electrochromatic_kit.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/item/electronics/electrochromatic_kit - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ id Electrochromatic ID
+ Var Details id
+
+
+
+
+
+ Electrochromatic ID
+
+
+
diff --git a/obj/item/energy_katana.html b/obj/item/energy_katana.html
new file mode 100644
index 0000000000000..e7f7fe629c281
--- /dev/null
+++ b/obj/item/energy_katana.html
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+ /obj/item/energy_katana - SPLURT Station 13
+
+
+
+
+
+
+The space ninja's katana.
+The katana that only space ninja spawns with. Comes with 30 force and throwforce, along with a signature special jaunting system.
+Upon clicking on a tile with the dash on, the user will teleport to that tile, assuming their target was not dense.
+The katana has 3 dashes stored at maximum, and upon using the dash, it will return 20 seconds after it was used.
+It also has a special feature where if it is tossed at a space ninja who owns it (determined by the ninja suit), the ninja will catch the katana instead of being hit by it.
Procs
+ returnToOwner Proc called when the katana is recalled to its space ninja.
Proc Details returnToOwner
+
+ Proc called when the katana is recalled to its space ninja.
+Proc called when space ninja is hit with its suit's katana or the recall ability is used.
+Arguments:
+
+user - To whom the katana is returning to.
+doSpark - whether or not the katana will spark when it returns.
+caught - boolean for whether or not the katana was caught or was teleported back.
+
+
+
+
diff --git a/obj/item/extinguisher.html b/obj/item/extinguisher.html
new file mode 100644
index 0000000000000..41ac2f0ec02c1
--- /dev/null
+++ b/obj/item/extinguisher.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/item/extinguisher - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details tank_holder_icon_state
+
+
+
+
+
+ Icon state when inside a tank holder
+
+
+
diff --git a/obj/item/fireaxe.html b/obj/item/fireaxe.html
new file mode 100644
index 0000000000000..ec04f9d7c8e72
--- /dev/null
+++ b/obj/item/fireaxe.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+ /obj/item/fireaxe - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ on_unwield triggered on unwield of two handed item
+ on_wield triggered on wield of two handed item
Proc Details on_unwield
+
+ triggered on unwield of two handed item
on_wield
+
+ triggered on wield of two handed item
+
+
+
diff --git a/obj/item/flashlight/pen/paramedic.html b/obj/item/flashlight/pen/paramedic.html
new file mode 100644
index 0000000000000..5b7f9c91249e2
--- /dev/null
+++ b/obj/item/flashlight/pen/paramedic.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ /obj/item/flashlight/pen/paramedic - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details uv_cooldown
+
+
+
+
+
+ Our current UV cooldown
uv_cooldown_length
+
+
+
+
+
+ How long between UV fryings
uv_power
+
+
+
+
+
+ How much sanitization to apply to the burn wound
+
+
+
diff --git a/obj/item/forbidden_book.html b/obj/item/forbidden_book.html
new file mode 100644
index 0000000000000..a907ef6531d38
--- /dev/null
+++ b/obj/item/forbidden_book.html
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+ /obj/item/forbidden_book - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details blacklisted_turfs
+
+
+
+
+
+ Where we cannot create the rune?
charge
+
+
+
+
+
+ how many charges do we have?
last_user
+
+
+
+
+
+ Last person that touched this
Proc Details draw_rune
+
+ Draws a rune on a selected turf
get_power_from_influence
+
+ Gives you a charge and destroys a corresponding influence
remove_rune
+
+ Removes runes from the selected turf
+
+
+
diff --git a/obj/item/gang_induction_package.html b/obj/item/gang_induction_package.html
new file mode 100644
index 0000000000000..bd6e6b66e75ed
--- /dev/null
+++ b/obj/item/gang_induction_package.html
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+ /obj/item/gang_induction_package - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ gang_to_use The typepath of the gang antagonist datum that the person who uses the package should have added to them -- remember that the distinction between e.g. Ballas and Grove Street is on the antag datum level, not the team datum level.
+ handler References the active families gamemode handler (if one exists), for adding new family members to.
+ team_to_use The team datum that the person who uses this package should be added to. Procs
+ add_to_gang Adds the user to the family that this package corresponds to, dispenses the free_clothes of that family, and adds them to the handler if it exists.
+ attempt_join_gang Checks if the user is trying to use the package of the family they are in, and if not, adds them to the family, with some differing processing depending on whether the user is already a family member.
+ Var Details gang_to_use
+
+
+
+
+
+ The typepath of the gang antagonist datum that the person who uses the package should have added to them -- remember that the distinction between e.g. Ballas and Grove Street is on the antag datum level, not the team datum level.
+ References the active families gamemode handler (if one exists), for adding new family members to.
+ The team datum that the person who uses this package should be added to.
Proc Details add_to_gang
+
+ Adds the user to the family that this package corresponds to, dispenses the free_clothes of that family, and adds them to the handler if it exists.
attempt_join_gang
+
+ Checks if the user is trying to use the package of the family they are in, and if not, adds them to the family, with some differing processing depending on whether the user is already a family member.
+
+
+
diff --git a/obj/item/genital_equipment.html b/obj/item/genital_equipment.html
new file mode 100644
index 0000000000000..dc34980ca03c9
--- /dev/null
+++ b/obj/item/genital_equipment.html
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+ /obj/item/genital_equipment - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ item_inserted Runs after the item has been inserted in a genital
+ item_inserting Item-specific checks to run before inserting in a genital
+ item_removed Runs after the item has been removed from a genital
+ item_removing Item-specific checks to run before removing from a genital
Proc Details
+ Runs after the item has been inserted in a genital
+ Item-specific checks to run before inserting in a genital
+ Runs after the item has been removed from a genital
+ Item-specific checks to run before removing from a genital
+
+
+
diff --git a/obj/item/grenade.html b/obj/item/grenade.html
new file mode 100644
index 0000000000000..890dc5502b75c
--- /dev/null
+++ b/obj/item/grenade.html
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+ /obj/item/grenade - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ ex_dev how big of a devastation explosion radius on prime
+ ex_flame how big of a flame explosion radius on prime
+ ex_heavy how big of a heavy explosion radius on prime
+ ex_light how big of a light explosion radius on prime
+ shrapnel_radius the higher this number, the more projectiles are created as shrapnel
+ shrapnel_type if set, will spew out projectiles of this type
+ Var Details ex_dev
+
+
+
+
+
+ how big of a devastation explosion radius on prime
ex_flame
+
+
+
+
+
+ how big of a flame explosion radius on prime
ex_heavy
+
+
+
+
+
+ how big of a heavy explosion radius on prime
ex_light
+
+
+
+
+
+ how big of a light explosion radius on prime
shrapnel_radius
+
+
+
+
+
+ the higher this number, the more projectiles are created as shrapnel
shrapnel_type
+
+
+
+
+
+ if set, will spew out projectiles of this type
+
+
+
diff --git a/obj/item/grenade/primer.html b/obj/item/grenade/primer.html
new file mode 100644
index 0000000000000..41532d1ebeb6f
--- /dev/null
+++ b/obj/item/grenade/primer.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /obj/item/grenade/primer - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ shrapnel_type how many times we need to "rotate" the charge in hand per extra tile of magnitude Procs
+ attack_self how many times we've "rotated" the charge
+ Var Details shrapnel_type
+
+
+
+
+
+ how many times we need to "rotate" the charge in hand per extra tile of magnitude
Proc Details attack_self
+
+ how many times we've "rotated" the charge
+
+
+
diff --git a/obj/item/gun.html b/obj/item/gun.html
new file mode 100644
index 0000000000000..ec8738a566b94
--- /dev/null
+++ b/obj/item/gun.html
@@ -0,0 +1,139 @@
+
+
+
+
+
+
+ /obj/item/gun - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ burst_shot_delay The time between shots in burst.
+ burst_size Weapon is burst fire if this is above 1
+ busy_action Used in gun-in-mouth execution/suicide and similar, while TRUE nothing should work on this like firing or modification and so on and so forth.
+ can_circuit can we be put in a circuit
+ can_emitter can we be put in an emitter
+ can_turret can we be put into a turret
+ dir_recoil_amp directional recoil multiplier
+ fire_delay The time between firing actions, this means between bursts if this is burst weapon. The reason this is 0 is because you are still, by default, limited by clickdelay.
+ fire_select Current fire selection, can choose between burst, single, and full auto.
+ fire_select_modes What modes does this weapon have? Put SELECT_FULLY_AUTOMATIC in here to enable fully automatic behaviours.
+ firing Currently firing, whether or not it's a burst or not.
+ last_fire Last world.time this was fired
+ projectile_damage_multiplier Just 'slightly' snowflakey way to modify projectile damage for projectiles fired from this gun.
+ selector_switch_icon if i`1t has an icon for a selector switch indicating current firemode. Procs
+ set_gun_light Swaps the gun's seclight, dropping the old seclight if it has not been qdel'd.
+ Var Details burst_shot_delay
+
+
+
+
+
+ The time between shots in burst.
burst_size
+
+
+
+
+
+ Weapon is burst fire if this is above 1
busy_action
+
+
+
+
+
+ Used in gun-in-mouth execution/suicide and similar, while TRUE nothing should work on this like firing or modification and so on and so forth.
can_circuit
+
+
+
+
+
+ can we be put in a circuit
can_emitter
+
+
+
+
+
+ can we be put in an emitter
can_turret
+
+
+
+
+
+ can we be put into a turret
dir_recoil_amp
+
+
+
+
+
+ directional recoil multiplier
fire_delay
+
+
+
+
+
+ The time between firing actions, this means between bursts if this is burst weapon. The reason this is 0 is because you are still, by default, limited by clickdelay.
fire_select
+
+
+
+
+
+ Current fire selection, can choose between burst, single, and full auto.
fire_select_modes
+
+
+
+
+
+ What modes does this weapon have? Put SELECT_FULLY_AUTOMATIC in here to enable fully automatic behaviours.
firing
+
+
+
+
+
+ Currently firing, whether or not it's a burst or not.
last_fire
+
+
+
+
+
+ Last world.time this was fired
projectile_damage_multiplier
+
+
+
+
+
+ Just 'slightly' snowflakey way to modify projectile damage for projectiles fired from this gun.
selector_switch_icon
+
+
+
+
+
+ if i`1t has an icon for a selector switch indicating current firemode.
Proc Details set_gun_light(/obj /item /flashlight/seclite/new_light)
+
+
+
+
+
+ Swaps the gun's seclight, dropping the old seclight if it has not been qdel'd.
+Returns the former gun_light that has now been replaced by this proc.
+Arguments:
+
+new_light - The new light to attach to the weapon. Can be null, which will mean the old light is removed with no replacement.
+
+
+
+
diff --git a/obj/item/gun/ballistic.html b/obj/item/gun/ballistic.html
new file mode 100644
index 0000000000000..efb45198e0284
--- /dev/null
+++ b/obj/item/gun/ballistic.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /obj/item/gun/ballistic - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ on_sawoff is something supposed to happen here?
Proc Details on_sawoff
+
+ is something supposed to happen here?
+
+
+
diff --git a/obj/item/gun/energy.html b/obj/item/gun/energy.html
new file mode 100644
index 0000000000000..e579f50b96247
--- /dev/null
+++ b/obj/item/gun/energy.html
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+ /obj/item/gun/energy - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ ammo_type = TRUE/FALSE decides if the user can switch to it of their own accord
+ current_firemode_index The index of the ammo_types/firemodes which we're using right now
+ right_click_overridden SET THIS TO TRUE IF YOU OVERRIDE altafterattack() or ANY right click action! If this is FALSE, the gun will show in examine its default right click behavior, which is to switch modes.
+ shot_type_overlay If TRUE, when modifystate is TRUE this energy gun gets an overlay based on its selected shot type, like "[icon_state]_disable". Procs
+ get_charge_ratio Used by update_icon_state() and update_overlays()
+ select_fire This is the proc used in general for when a user switches firemodes. Just goes to next firemode by default.
+ Var Details ammo_type
+
+
+
+
+
+ = TRUE/FALSE decides if the user can switch to it of their own accord
current_firemode_index
+
+
+
+
+
+ The index of the ammo_types/firemodes which we're using right now
right_click_overridden
+
+
+
+
+
+ SET THIS TO TRUE IF YOU OVERRIDE altafterattack() or ANY right click action! If this is FALSE, the gun will show in examine its default right click behavior, which is to switch modes.
shot_type_overlay
+
+
+
+
+
+ If TRUE, when modifystate is TRUE this energy gun gets an overlay based on its selected shot type, like "[icon_state]_disable".
Proc Details get_charge_ratio()
+
+
+
+
+
+ Used by update_icon_state() and update_overlays()
select_fire
+
+ This is the proc used in general for when a user switches firemodes. Just goes to next firemode by default.
+
+
+
diff --git a/obj/item/gun/energy/beam_rifle.html b/obj/item/gun/energy/beam_rifle.html
new file mode 100644
index 0000000000000..d2fd5539c8fa6
--- /dev/null
+++ b/obj/item/gun/energy/beam_rifle.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/item/gun/energy/beam_rifle - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details zoom_target_view_increase
+
+
+
+
+
+ The radius you want to zoom by
+
+
+
diff --git a/obj/item/hand_item/circlegame.html b/obj/item/hand_item/circlegame.html
new file mode 100644
index 0000000000000..f76e2599e00bf
--- /dev/null
+++ b/obj/item/hand_item/circlegame.html
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+ /obj/item/hand_item/circlegame - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ GOTTEM Stage 3B: We face our reckoning (unless we moved away or they're incapacitated)
+ ownerExamined Stage 1: The mistake is made
+ selfGottem Stage 3A: We face our own failures
+ waitASecond Stage 2: Fear sets in
Proc Details GOTTEM
+
+ Stage 3B: We face our reckoning (unless we moved away or they're incapacitated)
ownerExamined
+
+ Stage 1: The mistake is made
selfGottem
+
+ Stage 3A: We face our own failures
waitASecond
+
+ Stage 2: Fear sets in
+
+
+
diff --git a/obj/item/hand_item/kisser.html b/obj/item/hand_item/kisser.html
new file mode 100644
index 0000000000000..791aa688af709
--- /dev/null
+++ b/obj/item/hand_item/kisser.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /obj/item/hand_item/kisser - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ cheek_kiss TRUE if the user was aiming anywhere but the mouth when they offer the kiss, if it's offered
+ kiss_type The kind of projectile this version of the kiss blower fires
+ Var Details cheek_kiss
+
+
+
+
+
+ TRUE if the user was aiming anywhere but the mouth when they offer the kiss, if it's offered
kiss_type
+
+
+
+
+
+ The kind of projectile this version of the kiss blower fires
+
+
+
diff --git a/obj/item/hand_item/slapper.html b/obj/item/hand_item/slapper.html
new file mode 100644
index 0000000000000..b6b9ad712b4d9
--- /dev/null
+++ b/obj/item/hand_item/slapper.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /obj/item/hand_item/slapper - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ on_offer_taken Yeah broh! This is where we do the high-fiving (or high-tenning :o)
Proc Details
+ Yeah broh! This is where we do the high-fiving (or high-tenning :o)
+
+
+
diff --git a/obj/item/hand_item/slapper/secret_handshake.html b/obj/item/hand_item/slapper/secret_handshake.html
new file mode 100644
index 0000000000000..6feaf0182f1d6
--- /dev/null
+++ b/obj/item/hand_item/slapper/secret_handshake.html
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+ /obj/item/hand_item/slapper/secret_handshake - SPLURT Station 13
+
+
+
+
+
+
+Gangster secret handshakes.
Vars
+ gang_to_use The typepath of the gang antagonist datum that the person who uses the package should have added to them -- remember that the distinction between e.g. Ballas and Grove Street is on the antag datum level, not the team datum level.
+ handler References the active families gamemode handler (if one exists), for adding new family members to.
+ team_to_use The team datum that the person who uses this package should be added to. Procs
+ add_to_gang Adds the user to the family that this package corresponds to, dispenses the free_clothes of that family, and adds them to the handler if it exists.
+ attempt_join_gang Checks if the user is trying to use the package of the family they are in, and if not, adds them to the family, with some differing processing depending on whether the user is already a family member.
+ Var Details gang_to_use
+
+
+
+
+
+ The typepath of the gang antagonist datum that the person who uses the package should have added to them -- remember that the distinction between e.g. Ballas and Grove Street is on the antag datum level, not the team datum level.
+ References the active families gamemode handler (if one exists), for adding new family members to.
+ The team datum that the person who uses this package should be added to.
Proc Details add_to_gang
+
+ Adds the user to the family that this package corresponds to, dispenses the free_clothes of that family, and adds them to the handler if it exists.
attempt_join_gang
+
+ Checks if the user is trying to use the package of the family they are in, and if not, adds them to the family, with some differing processing depending on whether the user is already a family member.
+
+
+
diff --git a/obj/item/hardened_spike.html b/obj/item/hardened_spike.html
new file mode 100644
index 0000000000000..753687a246035
--- /dev/null
+++ b/obj/item/hardened_spike.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/item/hardened_spike - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ missed if we missed our target
+ Var Details missed
+
+
+
+
+
+ if we missed our target
+
+
+
diff --git a/obj/item/kinetic_crusher.html b/obj/item/kinetic_crusher.html
new file mode 100644
index 0000000000000..7babbaa6cf29c
--- /dev/null
+++ b/obj/item/kinetic_crusher.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+ /obj/item/kinetic_crusher - SPLURT Station 13
+
+
+
+
+
+
+Mining Hammer
Procs
+ on_unwield triggered on unwield of two handed item
+ on_wield triggered on wield of two handed item
Proc Details on_unwield
+
+ triggered on unwield of two handed item
on_wield
+
+ triggered on wield of two handed item
+
+
+
diff --git a/obj/item/kinetic_crusher/glaive.html b/obj/item/kinetic_crusher/glaive.html
new file mode 100644
index 0000000000000..e976718436067
--- /dev/null
+++ b/obj/item/kinetic_crusher/glaive.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+ /obj/item/kinetic_crusher/glaive - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ on_unwield triggered on unwield of two handed item
+ on_wield triggered on wield of two handed item
Proc Details on_unwield
+
+ triggered on unwield of two handed item
on_wield
+
+ triggered on wield of two handed item
+
+
+
diff --git a/obj/item/kitchen/knife/bloodletter.html b/obj/item/kitchen/knife/bloodletter.html
new file mode 100644
index 0000000000000..f5653decd945f
--- /dev/null
+++ b/obj/item/kitchen/knife/bloodletter.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/item/kitchen/knife/bloodletter - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details bleed_stacks_per_hit
+
+
+
+
+
+ Bleed stacks applied when an organic mob target is hit
+
+
+
diff --git a/obj/item/lipstick.html b/obj/item/lipstick.html
new file mode 100644
index 0000000000000..75b2de268abc7
--- /dev/null
+++ b/obj/item/lipstick.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/item/lipstick - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ lipstick_trait A trait that's applied while someone has this lipstick applied, and is removed when the lipstick is removed
+ Var Details lipstick_trait
+
+
+
+
+
+ A trait that's applied while someone has this lipstick applied, and is removed when the lipstick is removed
+
+
+
diff --git a/obj/item/living_heart.html b/obj/item/living_heart.html
new file mode 100644
index 0000000000000..0f3afd2c729a6
--- /dev/null
+++ b/obj/item/living_heart.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/item/living_heart - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details
+ Target
+
+
+
diff --git a/obj/item/mail.html b/obj/item/mail.html
new file mode 100644
index 0000000000000..d7e8d3fdaa245
--- /dev/null
+++ b/obj/item/mail.html
@@ -0,0 +1,127 @@
+
+
+
+
+
+
+ /obj/item/mail - SPLURT Station 13
+
+
+
+
+
+
+Mail is tamper-evident and unresealable, postmarked by CentCom for an individual recepient.
Vars
+ department_colors mail will have the color of the department the recipient is in.
+ generic_goodies Goodies which can be given to anyone. The base weight for cash is 56. For there to be a 50/50 chance of getting a department item, they need 56 weight as well.
+ goodie_count How many goodies this mail contains.
+ postmarked Does the letter have the postmark overlay?
+ recipient_ref Weak reference to who this mail is for and who can open it.
+ sort_tag Destination tagging for the mail sorter.
+ stamp_max Maximum number of stamps on the letter.
+ stamp_offset_x Physical offset of stamps on the object. X direction.
+ stamp_offset_y Physical offset of stamps on the object. Y direction.
+ stamped Does the letter have a stamp overlay?
+ stamps List of all stamp overlays on the letter. Procs
+ initialize_for_recipient Accepts a mind to initialize goodies for a piece of mail.
+ junk_mail Alternate setup, just complete garbage inside and anyone can open
+ unwrap proc for unwrapping a mail. Goes just for an unwrapping procces, returns FALSE if it fails.
+ Var Details department_colors
+
+
+
+
+
+ mail will have the color of the department the recipient is in.
generic_goodies
+
+
+
+
+
+ Goodies which can be given to anyone. The base weight for cash is 56. For there to be a 50/50 chance of getting a department item, they need 56 weight as well.
goodie_count
+
+
+
+
+
+ How many goodies this mail contains.
postmarked
+
+
+
+
+
+ Does the letter have the postmark overlay?
recipient_ref
+
+
+
+
+
+ Weak reference to who this mail is for and who can open it.
sort_tag
+
+
+
+
+
+ Destination tagging for the mail sorter.
stamp_max
+
+
+
+
+
+ Maximum number of stamps on the letter.
stamp_offset_x
+
+
+
+
+
+ Physical offset of stamps on the object. X direction.
stamp_offset_y
+
+
+
+
+
+ Physical offset of stamps on the object. Y direction.
stamped
+
+
+
+
+
+ Does the letter have a stamp overlay?
stamps
+
+
+
+
+
+ List of all stamp overlays on the letter.
Proc Details initialize_for_recipient
+
+ Accepts a mind to initialize goodies for a piece of mail.
junk_mail()
+
+
+
+
+
+ Alternate setup, just complete garbage inside and anyone can open
unwrap
+
+ proc for unwrapping a mail. Goes just for an unwrapping procces, returns FALSE if it fails.
+
+
+
diff --git a/obj/item/mail/junkmail.html b/obj/item/mail/junkmail.html
new file mode 100644
index 0000000000000..bda178663d02f
--- /dev/null
+++ b/obj/item/mail/junkmail.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /obj/item/mail/junkmail - SPLURT Station 13
+
+
+
+
+
+
+Proc Details Initialize()
+
+
+
+
+
+ Subtype that's always junkmail
+
+
+
diff --git a/obj/item/mecha_parts/chassis/powerarmor.html b/obj/item/mecha_parts/chassis/powerarmor.html
new file mode 100644
index 0000000000000..ecafaa8e5315d
--- /dev/null
+++ b/obj/item/mecha_parts/chassis/powerarmor.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ /obj/item/mecha_parts/chassis/powerarmor - SPLURT Station 13
+
+
+
+
+
+
+Custom Mech Parts //////
+/// Power Armor (Not actually a mech but meh)
+
+
+
diff --git a/obj/item/mecha_parts/mecha_equipment.html b/obj/item/mecha_parts/mecha_equipment.html
new file mode 100644
index 0000000000000..20be64bd22fad
--- /dev/null
+++ b/obj/item/mecha_parts/mecha_equipment.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ /obj/item/mecha_parts/mecha_equipment - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ mech_flags Bitflag. Used by exosuit fabricator to assign sub-categories based on which exosuits can equip this.
+ range Bitflag. Determines the range of the equipment. Procs
+ do_after_checks do after checks for the mecha equipment do afters
+ Var Details mech_flags
+
+
+
+
+
+ Bitflag. Used by exosuit fabricator to assign sub-categories based on which exosuits can equip this.
range
+
+
+
+
+
+ Bitflag. Determines the range of the equipment.
Proc Details do_after_checks
+
+ do after checks for the mecha equipment do afters
+
+
+
diff --git a/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/punching_glove.html b/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/punching_glove.html
new file mode 100644
index 0000000000000..3ed02251fdd3d
--- /dev/null
+++ b/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/punching_glove.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/punching_glove - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ can_toggle_lethal TRUE - Can toggle between lethal and non-lethal || FALSE - Cannot toggle
+ punch_damage Damage done by the glove on contact. Also used to determine throw distance (damage / 5)
+ Var Details can_toggle_lethal
+
+
+
+
+
+ TRUE - Can toggle between lethal and non-lethal || FALSE - Cannot toggle
punch_damage
+
+
+
+
+
+ Damage done by the glove on contact. Also used to determine throw distance (damage / 5)
+
+
+
diff --git a/obj/item/mecha_parts/mecha_tracking.html b/obj/item/mecha_parts/mecha_tracking.html
new file mode 100644
index 0000000000000..c16e77fd9797d
--- /dev/null
+++ b/obj/item/mecha_parts/mecha_tracking.html
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+ /obj/item/mecha_parts/mecha_tracking - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ ai_beacon If this beacon allows for AI control. Exists to avoid using istype() on checking
+ chassis The Mecha that this tracking beacon is attached to
+ recharging Cooldown variable for EMP pulsing Procs
+ get_mecha_info Returns a html formatted string describing attached mech status
+ recharge Resets recharge variable, allowing tracker to be EMP pulsed again
+ shock Attempts to EMP mech that the tracker is attached to, if there is one and tracker is not on cooldown
+ Var Details ai_beacon
+
+
+
+
+
+ If this beacon allows for AI control. Exists to avoid using istype() on checking
+ The Mecha that this tracking beacon is attached to
recharging
+
+
+
+
+
+ Cooldown variable for EMP pulsing
Proc Details get_mecha_info()
+
+
+
+
+
+ Returns a html formatted string describing attached mech status
recharge()
+
+
+
+
+
+ Resets recharge variable, allowing tracker to be EMP pulsed again
shock()
+
+
+
+
+
+ Attempts to EMP mech that the tracker is attached to, if there is one and tracker is not on cooldown
+
+
+
diff --git a/obj/item/melee/baton.html b/obj/item/melee/baton.html
new file mode 100644
index 0000000000000..1d4f3ceb44f11
--- /dev/null
+++ b/obj/item/melee/baton.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/item/melee/baton - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details block_percent_to_counter
+
+
+
+
+
+ block percent needed to prevent knockdown/disarm
+
+
+
diff --git a/obj/item/melee/classic_baton.html b/obj/item/melee/classic_baton.html
new file mode 100644
index 0000000000000..703935cff6af8
--- /dev/null
+++ b/obj/item/melee/classic_baton.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/item/melee/classic_baton - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details block_percent_to_counter
+
+
+
+
+
+ block mitigation needed to prevent knockdown/disarms
+
+
+
diff --git a/obj/item/melee/rune_knife.html b/obj/item/melee/rune_knife.html
new file mode 100644
index 0000000000000..61daefd44c57d
--- /dev/null
+++ b/obj/item/melee/rune_knife.html
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+ /obj/item/melee/rune_knife - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details blacklisted_turfs
+
+
+
+
+
+ turfs that you cannot draw carvings on
current_runes
+
+
+
+
+
+ A list of current runes
drawing
+
+
+
+
+
+ A check to see if you are in process of drawing a rune
+ Linked action
max_rune_amt
+
+
+
+
+
+ Max amount of runes
Proc Details carve_rune(/atom /target, /mob /user, proximity_flag, click_parameters)
+
+
+
+
+
+ Action of carving runes, gives you the ability to click on floor and choose a rune of your need.
+
+
+
diff --git a/obj/item/melee/skateboard.html b/obj/item/melee/skateboard.html
new file mode 100644
index 0000000000000..11a2ff6494d45
--- /dev/null
+++ b/obj/item/melee/skateboard.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/item/melee/skateboard - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details board_item_type
+
+
+
+
+
+ The vehicle counterpart for the board
+
+
+
diff --git a/obj/item/melee/transforming/cleaving_saw.html b/obj/item/melee/transforming/cleaving_saw.html
new file mode 100644
index 0000000000000..98ae3e5f7bcfe
--- /dev/null
+++ b/obj/item/melee/transforming/cleaving_saw.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ /obj/item/melee/transforming/cleaving_saw - SPLURT Station 13
+
+
+
+
+
+
+Bosses
+ Var Details roll_orientation
+
+
+
+
+
+ do you spin when dodgerolling
roll_range
+
+
+
+
+
+ how far are we rolling?
roll_stamcost
+
+
+
+
+
+ how much stamina does it cost to roll?
+
+
+
diff --git a/obj/item/melee/transforming/energy/sword/saber.html b/obj/item/melee/transforming/energy/sword/saber.html
new file mode 100644
index 0000000000000..e02a8f934f781
--- /dev/null
+++ b/obj/item/melee/transforming/energy/sword/saber.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /obj/item/melee/transforming/energy/sword/saber - SPLURT Station 13
+
+
+
+
+
+
+Proc Details attackby
+
+ this is for the radial
+
+
+
diff --git a/obj/item/milking_machine.html b/obj/item/milking_machine.html
new file mode 100644
index 0000000000000..1745d97729199
--- /dev/null
+++ b/obj/item/milking_machine.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /obj/item/milking_machine - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ afterattack (x == y) equals x != y except the latter is clearer
Proc Details
+ (x == y) equals x != y except the latter is clearer
+
+
+
diff --git a/obj/item/mining_voucher.html b/obj/item/mining_voucher.html
new file mode 100644
index 0000000000000..9ad81fb22055e
--- /dev/null
+++ b/obj/item/mining_voucher.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ /obj/item/mining_voucher - SPLURT Station 13
+
+
+
+
+
+
+Mining Equipment Vendor Items
+Mining Equipment Voucher
+
+
+
diff --git a/obj/item/mjollnir.html b/obj/item/mjollnir.html
new file mode 100644
index 0000000000000..04e451b044442
--- /dev/null
+++ b/obj/item/mjollnir.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+ /obj/item/mjollnir - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ on_unwield triggered on unwield of two handed item
+ on_wield triggered on wield of two handed item
Proc Details on_unwield
+
+ triggered on unwield of two handed item
on_wield
+
+ triggered on wield of two handed item
+
+
+
diff --git a/obj/item/mod/control.html b/obj/item/mod/control.html
new file mode 100644
index 0000000000000..02b86d9fdf644
--- /dev/null
+++ b/obj/item/mod/control.html
@@ -0,0 +1,313 @@
+
+
+
+
+
+
+ /obj/item/mod/control - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ activating If the suit is currently activating/deactivating.
+ activation_step_time How long this MOD takes each part to seal.
+ active If the suit is deployed and turned on.
+ ai AI/pAI mob inhabiting the MOD.
+ boots MOD boots.
+ cell MOD cell.
+ cell_drain Power usage of the MOD.
+ chestplate MOD chestplate.
+ complexity How much module complexity this MOD is carrying.
+ complexity_max How much module complexity can this MOD carry.
+ cooldown_mod_move Cooldown for AI moves.
+ extended_desc Extended description of the theme.
+ gauntlets MOD gauntlets.
+ helmet MOD helmet.
+ initial_modules Modules the MOD should spawn with.
+ interface_break If the suit interface is broken.
+ malfunctioning If the suit is malfunctioning.
+ mod_parts List of parts (helmet, chestplate, gauntlets, boots).
+ modules Modules the MOD currently possesses.
+ movedelay Delay between moves as AI.
+ open If the suit wire/module hatch is open.
+ seconds_electrified How long the MOD is electrified for.
+ selected_module Currently used module.
+ skin Looks of the MOD.
+ slowdown_active Slowdown of the MOD when active.
+ slowdown_inactive Slowdown of the MOD when not active.
+ theme The MOD's theme, decides on some stuff like armor and statistics.
+ ui_theme Theme of the MOD TGUI
+ wearer Person wearing the MODsuit. Procs
+ choose_deploy Creates a radial menu from which the user chooses parts of the suit to deploy/retract. Repeats until all parts are extended or retracted.
+ conceal Retract a part of the suit from the user
+ deploy Deploys a part of the suit onto the user.
+ extract_pai Simple proc to extract the pAI from the MODsuit. It's the proc to call if you want to take it out,
+remove_pai() is there so atom_destruction() doesn't have any risk of sleeping.
+ finish_activation Finishes the suit's activation, starts processing
+ insert_pai Simple proc to insert the pAI into the MODsuit.
+ quick_activation Quickly deploys all the suit parts and if successful, seals them and turns on the suit. Intended mostly for outfits.
+ remove_pai Simple proc that handles the safe removal of the pAI from a MOD control unit.
+ seal_part Seals or unseals the given part
+ toggle_activate Starts the activation sequence, where parts of the suit activate one by one until the whole suit is on
+ Var Details activating
+
+
+
+
+
+ If the suit is currently activating/deactivating.
activation_step_time
+
+
+
+
+
+ How long this MOD takes each part to seal.
active
+
+
+
+
+
+ If the suit is deployed and turned on.
+ AI/pAI mob inhabiting the MOD.
+ MOD boots.
+ MOD cell.
cell_drain
+
+
+
+
+
+ Power usage of the MOD.
chestplate
+
+
+
+
+
+ MOD chestplate.
complexity
+
+
+
+
+
+ How much module complexity this MOD is carrying.
complexity_max
+
+
+
+
+
+ How much module complexity can this MOD carry.
cooldown_mod_move
+
+
+
+
+
+ Cooldown for AI moves.
extended_desc
+
+
+
+
+
+ Extended description of the theme.
+ MOD gauntlets.
+ MOD helmet.
initial_modules
+
+
+
+
+
+ Modules the MOD should spawn with.
interface_break
+
+
+
+
+
+ If the suit interface is broken.
malfunctioning
+
+
+
+
+
+ If the suit is malfunctioning.
mod_parts
+
+
+
+
+
+ List of parts (helmet, chestplate, gauntlets, boots).
modules
+
+
+
+
+
+ Modules the MOD currently possesses.
movedelay
+
+
+
+
+
+ Delay between moves as AI.
open
+
+
+
+
+
+ If the suit wire/module hatch is open.
seconds_electrified
+
+
+
+
+
+ How long the MOD is electrified for.
+ Currently used module.
skin
+
+
+
+
+
+ Looks of the MOD.
slowdown_active
+
+
+
+
+
+ Slowdown of the MOD when active.
slowdown_inactive
+
+
+
+
+
+ Slowdown of the MOD when not active.
+ The MOD's theme, decides on some stuff like armor and statistics.
ui_theme
+
+
+
+
+
+ Theme of the MOD TGUI
+ Person wearing the MODsuit.
Proc Details choose_deploy
+
+ Creates a radial menu from which the user chooses parts of the suit to deploy/retract. Repeats until all parts are extended or retracted.
conceal(/mob /user, part)
+
+
+
+
+
+ Retract a part of the suit from the user
deploy(/mob /user, part)
+
+
+
+
+
+ Deploys a part of the suit onto the user.
+ Simple proc to extract the pAI from the MODsuit. It's the proc to call if you want to take it out,
+remove_pai() is there so atom_destruction() doesn't have any risk of sleeping.
+user - The person trying to take out the pAI from the MODsuit.
+forced - Whether or not we skip the checks and just eject the pAI. Defaults to FALSE.
+feedback - Whether to give feedback via balloon alerts or not. Defaults to TRUE.
finish_activation(on)
+
+
+
+
+
+ Finishes the suit's activation, starts processing
insert_pai
+
+ Simple proc to insert the pAI into the MODsuit.
+user - The person trying to put the pAI into the MODsuit.
+card - The pAI card we're slotting in the MODsuit.
quick_activation()
+
+
+
+
+
+ Quickly deploys all the suit parts and if successful, seals them and turns on the suit. Intended mostly for outfits.
remove_pai(feedback)
+
+
+
+
+
+ Simple proc that handles the safe removal of the pAI from a MOD control unit.
+Arguments:
+
+feedback - Whether or not we want to give balloon alert feedback to the ai. Defaults to FALSE.
+ seal_part
+
+ Seals or unseals the given part
toggle_activate(/mob /user, force_deactivate)
+
+
+
+
+
+ Starts the activation sequence, where parts of the suit activate one by one until the whole suit is on
+
+
+
diff --git a/obj/item/mod/module.html b/obj/item/mod/module.html
new file mode 100644
index 0000000000000..cc031d42e198f
--- /dev/null
+++ b/obj/item/mod/module.html
@@ -0,0 +1,337 @@
+
+
+
+
+
+
+ /obj/item/mod/module - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details active
+
+
+
+
+
+ Is the module active
active_power_cost
+
+
+
+
+
+ Power use when active
allowed_in_phaseout
+
+
+
+
+
+ If we're allowed to use this module while phased out.
allowed_inactive
+
+
+
+
+
+ If we're allowed to use this module while the suit is disabled.
complexity
+
+
+
+
+
+ How much space it takes up in the MOD
cooldown_time
+
+
+
+
+
+ Cooldown after use
cooldown_timer
+
+
+
+
+
+ Timer for the cooldown
device
+
+
+
+
+
+ If we're an active module, what item are we?
idle_power_cost
+
+
+
+
+
+ Power use when idle
incompatible_modules
+
+
+
+
+
+ What modules are we incompatible with?
+ Linked MODsuit
module_type
+
+
+
+
+
+ If it's passive, togglable, usable or active
overlay_icon_file
+
+
+
+
+
+ Icon file for the overlay.
overlay_state_active
+
+
+
+
+
+ Overlay given to the user when the module is active
overlay_state_inactive
+
+
+
+
+
+ Overlay given to the user when the module is inactive
overlay_state_use
+
+
+
+
+
+ Overlay given to the user when the module is used, lasts until cooldown finishes
removable
+
+
+
+
+
+ If it can be removed
tgui_id
+
+
+
+
+
+ ID used by their TGUI
use_mod_colors
+
+
+
+
+
+ Does the overlay use the control unit's colors?
use_power_cost
+
+
+
+
+
+ Power use when used, we call it manually
used_signal
+
+
+
+
+
+ The mouse button needed to use this module
Proc Details add_ui_configuration(display_name, type, value, /list/values)
+
+
+
+
+
+ Generates an element of the get_configuration list with a display name, type and value
add_ui_data()
+
+
+
+
+
+ Adds additional things to the MODsuit ui_data()
+ Receives configure edits from the TGUI and edits the vars
drain_power(amount)
+
+
+
+
+
+ Drains power from the suit cell
generate_worn_overlay()
+
+
+
+
+
+ Generates an icon to be used for the suit's worn overlays
get_configuration()
+
+
+
+
+
+ Creates a list of configuring options for this module
on_activation()
+
+
+
+
+
+ Called when the module is activated
on_active_process(delta_time)
+
+
+
+
+
+ Called on the MODsuit's process if it is an active module
on_deactivation()
+
+
+
+
+
+ Called when the module is deactivated
on_device_deletion
+
+ Called when the device gets deleted on active modules
on_equip()
+
+
+
+
+
+ Called when the MODsuit is equipped
on_exit
+
+ Called when the device moves to a different place on active modules
on_install()
+
+
+
+
+
+ Called from MODsuit's install() proc, so when the module is installed.
on_process(delta_time)
+
+
+
+
+
+ Called on the MODsuit's process
on_select()
+
+
+
+
+
+ Called when the module is selected from the TGUI
on_select_use
+
+ Called when an activated module without a device is used
on_special_click
+
+ Called when an activated module without a device is active and the user alt/middle-clicks
on_suit_activation()
+
+
+
+
+
+ Called when the MODsuit is activated
on_suit_deactivation()
+
+
+
+
+
+ Called when the MODsuit is deactivated
on_unequip()
+
+
+
+
+
+ Called when the MODsuit is unequipped
on_uninstall()
+
+
+
+
+
+ Called from MODsuit's uninstall() proc, so when the module is uninstalled.
on_use()
+
+
+
+
+
+ Called when the module is used
update_signal()
+
+
+
+
+
+ Updates the signal used by active modules to be activated
+
+
+
diff --git a/obj/item/mod/module/anomaly_locked.html b/obj/item/mod/module/anomaly_locked.html
new file mode 100644
index 0000000000000..844fd887cb231
--- /dev/null
+++ b/obj/item/mod/module/anomaly_locked.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ /obj/item/mod/module/anomaly_locked - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details accepted_anomalies
+
+
+
+
+
+ Accepted types of anomaly cores.
+ The core item the module runs off.
prebuilt
+
+
+
+
+
+ If this one starts with a core in.
+
+
+
diff --git a/obj/item/mod/module/anomaly_locked/teleporter.html b/obj/item/mod/module/anomaly_locked/teleporter.html
new file mode 100644
index 0000000000000..7958efe4568b6
--- /dev/null
+++ b/obj/item/mod/module/anomaly_locked/teleporter.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/item/mod/module/anomaly_locked/teleporter - SPLURT Station 13
+
+
+
+
+
+
+Teleporter - Lets the user teleport to a nearby location.
+ Var Details teleport_time
+
+
+
+
+
+ Time it takes to teleport
+
+
+
diff --git a/obj/item/mod/module/clamp.html b/obj/item/mod/module/clamp.html
new file mode 100644
index 0000000000000..52e2d860f729c
--- /dev/null
+++ b/obj/item/mod/module/clamp.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ /obj/item/mod/module/clamp - SPLURT Station 13
+
+
+
+
+
+
+Hydraulic Clamp - Lets you pick up and drop crates.
+ Var Details load_time
+
+
+
+
+
+ Time it takes to load a crate.
max_crates
+
+
+
+
+
+ The max amount of crates you can carry.
stored_crates
+
+
+
+
+
+ The crates stored in the module.
+
+
+
diff --git a/obj/item/mod/module/dispenser.html b/obj/item/mod/module/dispenser.html
new file mode 100644
index 0000000000000..7e07368f30a6d
--- /dev/null
+++ b/obj/item/mod/module/dispenser.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /obj/item/mod/module/dispenser - SPLURT Station 13
+
+
+
+
+
+
+Dispenser - Dispenses an item after a time passes.
+ Var Details dispense_time
+
+
+
+
+
+ Time it takes for us to dispense.
dispense_type
+
+
+
+
+
+ Path we dispense.
+
+
+
diff --git a/obj/item/mod/module/dna_lock.html b/obj/item/mod/module/dna_lock.html
new file mode 100644
index 0000000000000..70727df500402
--- /dev/null
+++ b/obj/item/mod/module/dna_lock.html
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+ /obj/item/mod/module/dna_lock - SPLURT Station 13
+
+
+
+
+
+
+Longfall
+Thermal Regulator - Naw.
+DNA Lock - Prevents people without the set DNA from activating the suit.
Vars
+ dna The DNA we lock with.
+ Var Details dna
+
+
+
+
+
+ The DNA we lock with.
+
+
+
diff --git a/obj/item/mod/module/drill.html b/obj/item/mod/module/drill.html
new file mode 100644
index 0000000000000..9267fb4dcf35c
--- /dev/null
+++ b/obj/item/mod/module/drill.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/item/mod/module/drill - SPLURT Station 13
+
+
+
+
+
+
+Drill - Lets you dig through rock and basalt.
Vars
+ stored Pickaxe we have stored.
+ Var Details stored
+
+
+
+
+
+ Pickaxe we have stored.
+
+
+
diff --git a/obj/item/mod/module/flashlight.html b/obj/item/mod/module/flashlight.html
new file mode 100644
index 0000000000000..392ba35277d78
--- /dev/null
+++ b/obj/item/mod/module/flashlight.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ /obj/item/mod/module/flashlight - SPLURT Station 13
+
+
+
+
+
+
+Flashlight - Gives the suit a customizable flashlight.
+ Var Details base_power
+
+
+
+
+
+ Charge drain per range amount.
max_range
+
+
+
+
+
+ Maximum range we can set.
min_range
+
+
+
+
+
+ Minimum range we can set.
+
+
+
diff --git a/obj/item/mod/module/health_analyzer.html b/obj/item/mod/module/health_analyzer.html
new file mode 100644
index 0000000000000..8357358d92ff8
--- /dev/null
+++ b/obj/item/mod/module/health_analyzer.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /obj/item/mod/module/health_analyzer - SPLURT Station 13
+
+
+
+
+
+
+Health Analyzer - Gives the user a ranged health analyzer and their health status in the panel.
Vars
+ mode Scanning mode, changes how we scan something.
+ modes List of all scanning modes.
+ Var Details mode
+
+
+
+
+
+ Scanning mode, changes how we scan something.
modes
+
+
+
+
+
+ List of all scanning modes.
+
+
+
diff --git a/obj/item/mod/module/holster.html b/obj/item/mod/module/holster.html
new file mode 100644
index 0000000000000..970749391f3cb
--- /dev/null
+++ b/obj/item/mod/module/holster.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+ /obj/item/mod/module/holster - SPLURT Station 13
+
+
+
+
+
+
+Pepper Shoulders
+Holster - Instantly holsters any not huge gun.
+ Var Details holstered
+
+
+
+
+
+ Gun we have holstered.
+
+
+
diff --git a/obj/item/mod/module/jetpack.html b/obj/item/mod/module/jetpack.html
new file mode 100644
index 0000000000000..fc8f6cb7964d6
--- /dev/null
+++ b/obj/item/mod/module/jetpack.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /obj/item/mod/module/jetpack - SPLURT Station 13
+
+
+
+
+
+
+Ion Jetpack - Lets the user fly freely through space using battery charge.
Vars
+ full_speed Do we give the wearer a speed buff.
+ stabilizers Do we stop the wearer from gliding in space.
+ Var Details full_speed
+
+
+
+
+
+ Do we give the wearer a speed buff.
stabilizers
+
+
+
+
+
+ Do we stop the wearer from gliding in space.
+
+
+
diff --git a/obj/item/mod/module/magboot.html b/obj/item/mod/module/magboot.html
new file mode 100644
index 0000000000000..fc682bfe6de97
--- /dev/null
+++ b/obj/item/mod/module/magboot.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/item/mod/module/magboot - SPLURT Station 13
+
+
+
+
+
+
+Magnetic Stability - Gives the user a slowdown but makes them negate gravity and be immune to slips.
+ Var Details slowdown_active
+
+
+
+
+
+ Slowdown added onto the suit.
+
+
+
diff --git a/obj/item/mod/module/magnetic_harness.html b/obj/item/mod/module/magnetic_harness.html
new file mode 100644
index 0000000000000..d97f056810d88
--- /dev/null
+++ b/obj/item/mod/module/magnetic_harness.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ /obj/item/mod/module/magnetic_harness - SPLURT Station 13
+
+
+
+
+
+
+Magnetic Harness - Automatically puts guns in your suit storage when you drop them.
+ Var Details already_allowed_guns
+
+
+
+
+
+ The guns already allowed by the modsuit chestplate.
guns_typecache
+
+
+
+
+
+ The typecache of all guns we allow.
magnet_delay
+
+
+
+
+
+ Time before we activate the magnet.
+
+
+
diff --git a/obj/item/mod/module/megaphone.html b/obj/item/mod/module/megaphone.html
new file mode 100644
index 0000000000000..8587ad33109b3
--- /dev/null
+++ b/obj/item/mod/module/megaphone.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/item/mod/module/megaphone - SPLURT Station 13
+
+
+
+
+
+
+Megaphone - Lets you speak loud.
Vars
+ voicespan List of spans we add to the speaker.
+ Var Details voicespan
+
+
+
+
+
+ List of spans we add to the speaker.
+
+
+
diff --git a/obj/item/mod/module/mister.html b/obj/item/mod/module/mister.html
new file mode 100644
index 0000000000000..8400fa63c0aa8
--- /dev/null
+++ b/obj/item/mod/module/mister.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/item/mod/module/mister - SPLURT Station 13
+
+
+
+
+
+
+Mister - Sprays water over an area.
Vars
+ volume Volume of our reagent holder.
+ Var Details volume
+
+
+
+
+
+ Volume of our reagent holder.
+
+
+
diff --git a/obj/item/mod/module/mouthhole.html b/obj/item/mod/module/mouthhole.html
new file mode 100644
index 0000000000000..b546e13ae2b48
--- /dev/null
+++ b/obj/item/mod/module/mouthhole.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /obj/item/mod/module/mouthhole - SPLURT Station 13
+
+
+
+
+
+
+Eating Apparatus - Lets the user eat/drink with the suit on.
+ Var Details
+ Former flags of the helmet.
+ Former visor flags of the helmet.
+
+
+
diff --git a/obj/item/mod/module/orebag.html b/obj/item/mod/module/orebag.html
new file mode 100644
index 0000000000000..e31ce61603690
--- /dev/null
+++ b/obj/item/mod/module/orebag.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/item/mod/module/orebag - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ stored Pickaxe we have stored.
+ Var Details stored
+
+
+
+
+
+ Pickaxe we have stored.
+
+
+
diff --git a/obj/item/mod/module/paper_dispenser.html b/obj/item/mod/module/paper_dispenser.html
new file mode 100644
index 0000000000000..4d2ed5487a3ae
--- /dev/null
+++ b/obj/item/mod/module/paper_dispenser.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/item/mod/module/paper_dispenser - SPLURT Station 13
+
+
+
+
+
+
+Paper Dispenser - Dispenses (sometimes burning) paper sheets.
Vars
+ num_sheets_dispensed The total number of sheets created by this MOD. The more sheets, them more likely they set on fire.
+ Var Details num_sheets_dispensed
+
+
+
+
+
+ The total number of sheets created by this MOD. The more sheets, them more likely they set on fire.
+
+
+
diff --git a/obj/item/mod/module/springlock.html b/obj/item/mod/module/springlock.html
new file mode 100644
index 0000000000000..35652798c8a79
--- /dev/null
+++ b/obj/item/mod/module/springlock.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ /obj/item/mod/module/springlock - SPLURT Station 13
+
+
+
+
+
+
+Sign Language Translator - I want, but no
+Springlock Mechanism - allows your modsuit to activate faster, but reagents are very dangerous.
Proc Details on_activate_spring_block
+
+ Signal fired when wearer attempts to activate/deactivate suits
on_wearer_exposed(/atom /source, /list/reagents, /datum /reagents /source_reagents, methods, volume_modifier, show_message, from_gas)
+
+
+
+
+
+ Signal fired when wearer is exposed to reagents
snap_shut()
+
+
+
+
+
+ Delayed death proc of the suit after the wearer is exposed to reagents
+
+
+
diff --git a/obj/item/mod/module/stealth.html b/obj/item/mod/module/stealth.html
new file mode 100644
index 0000000000000..c1b91480c55be
--- /dev/null
+++ b/obj/item/mod/module/stealth.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /obj/item/mod/module/stealth - SPLURT Station 13
+
+
+
+
+
+
+Cloaking - Lowers the user's visibility, can be interrupted by being touched or attacked.
Vars
+ bumpoff Whether or not the cloak turns off on bumping.
+ stealth_alpha The alpha applied when the cloak is on.
+ Var Details bumpoff
+
+
+
+
+
+ Whether or not the cloak turns off on bumping.
stealth_alpha
+
+
+
+
+
+ The alpha applied when the cloak is on.
+
+
+
diff --git a/obj/item/mod/module/storage.html b/obj/item/mod/module/storage.html
new file mode 100644
index 0000000000000..794cbb4a4b567
--- /dev/null
+++ b/obj/item/mod/module/storage.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/item/mod/module/storage - SPLURT Station 13
+
+
+
+
+
+
+Storage - Adds a storage component to the suit.
Vars
+ stored Bag we have stored.
+ Var Details stored
+
+
+
+
+
+ Bag we have stored.
+
+
+
diff --git a/obj/item/mod/module/t_ray.html b/obj/item/mod/module/t_ray.html
new file mode 100644
index 0000000000000..77182fb632b97
--- /dev/null
+++ b/obj/item/mod/module/t_ray.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/item/mod/module/t_ray - SPLURT Station 13
+
+
+
+
+
+
+T-Ray Scan - Scans the terrain for undertile objects.
Vars
+ range T-ray scan range.
+ Var Details range
+
+
+
+
+
+ T-ray scan range.
+
+
+
diff --git a/obj/item/mod/module/visor.html b/obj/item/mod/module/visor.html
new file mode 100644
index 0000000000000..e7b43e68c5279
--- /dev/null
+++ b/obj/item/mod/module/visor.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /obj/item/mod/module/visor - SPLURT Station 13
+
+
+
+
+
+
+Base Visor - Adds a specific HUD and traits to you.
+ Var Details hud_type
+
+
+
+
+
+ The HUD type given by the visor.
visor_traits
+
+
+
+
+
+ The traits given by the visor.
+
+
+
diff --git a/obj/item/modular_computer.html b/obj/item/modular_computer.html
new file mode 100644
index 0000000000000..aa6d5f633c505
--- /dev/null
+++ b/obj/item/modular_computer.html
@@ -0,0 +1,108 @@
+
+
+
+
+
+
+ /obj/item/modular_computer - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ all_components List of "connection ports" in this computer and the components with which they are plugged
+ expansion_bays Lazy List of extra hardware slots that can be used modularly.
+ looping_sound Whether or not this modular computer uses the looping sound
+ max_bays Number of total expansion bays this computer has available.
+ soundloop Looping sound for when the computer is on Procs
+ alert_call Displays notification text alongside a soundbeep when requested to by a program.
+ play_ping Plays a ping sound.
+ set_flashlight_color Sets the computer's light color, if it has a light.
+ toggle_flashlight Toggles the computer's flashlight, if it has one.
+ Var Details all_components
+
+
+
+
+
+ List of "connection ports" in this computer and the components with which they are plugged
expansion_bays
+
+
+
+
+
+ Lazy List of extra hardware slots that can be used modularly.
looping_sound
+
+
+
+
+
+ Whether or not this modular computer uses the looping sound
max_bays
+
+
+
+
+
+ Number of total expansion bays this computer has available.
+ Looping sound for when the computer is on
Proc Details
+ Displays notification text alongside a soundbeep when requested to by a program.
+After checking tha the requesting program is allowed to send an alert, creates
+a visible message of the requested text alongside a soundbeep. This proc adds
+text to indicate that the message is coming from this device and the program
+on it, so the supplied text should be the exact message and ending punctuation.
+Arguments:
+The program calling this proc.
+The message that the program wishes to display.
play_ping()
+
+
+
+
+
+ Plays a ping sound.
+Timers runtime if you try to make them call playsound. Yep.
set_flashlight_color(color)
+
+
+
+
+
+ Sets the computer's light color, if it has a light.
+Called from ui_act(), this proc takes a color string and applies it.
+It is seperated from ui_act() to be overwritten as needed.
+Arguments:
+
+color is the string that holds the color value that we should use. Proc auto-fails if this is null.
+ toggle_flashlight()
+
+
+
+
+
+ Toggles the computer's flashlight, if it has one.
+Called from ui_act(), does as the name implies.
+It is seperated from ui_act() to be overwritten as needed.
+
+
+
diff --git a/obj/item/modular_computer/tablet/integrated.html b/obj/item/modular_computer/tablet/integrated.html
new file mode 100644
index 0000000000000..b8913f3d01bf4
--- /dev/null
+++ b/obj/item/modular_computer/tablet/integrated.html
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+ /obj/item/modular_computer/tablet/integrated - SPLURT Station 13
+
+
+
+
+
+
+Borg Built-in tablet interface
Vars
+ borglog IC log that borgs can view in their personal management app
+ borgo Ref to the borg we're installed in. Set by the borg during our creation.
+ robotact Ref to the RoboTact app. Important enough to borgs to deserve a ref. Procs
+ get_robotact Returns a ref to the RoboTact app, creating the app if need be.
+ Var Details borglog
+
+
+
+
+
+ IC log that borgs can view in their personal management app
+ Ref to the borg we're installed in. Set by the borg during our creation.
+ Ref to the RoboTact app. Important enough to borgs to deserve a ref.
Proc Details get_robotact()
+
+
+
+
+
+ Returns a ref to the RoboTact app, creating the app if need be.
+The RoboTact app is important for borgs, and so should always be available.
+This proc will look for it in the tablet's robotact var, then check the
+hard drive if the robotact var is unset, and finally attempt to create a new
+copy if the hard drive does not contain the app. If the hard drive rejects
+the new copy (such as due to lack of space), the proc will crash with an error.
+RoboTact is supposed to be undeletable, so these will create runtime messages.
+
+
+
diff --git a/obj/item/modular_computer/tablet/nukeops.html b/obj/item/modular_computer/tablet/nukeops.html
new file mode 100644
index 0000000000000..c024167599090
--- /dev/null
+++ b/obj/item/modular_computer/tablet/nukeops.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /obj/item/modular_computer/tablet/nukeops - SPLURT Station 13
+
+
+
+
+
+
+Given to Nuke Ops members.
Proc Details Initialize(mapload)
+
+
+
+
+
+ Given to Nuke Ops members.
+
+
+
diff --git a/obj/item/modular_computer/tablet/syndicate_contract_uplink/preset/uplink.html b/obj/item/modular_computer/tablet/syndicate_contract_uplink/preset/uplink.html
new file mode 100644
index 0000000000000..b3358109e7d1e
--- /dev/null
+++ b/obj/item/modular_computer/tablet/syndicate_contract_uplink/preset/uplink.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /obj/item/modular_computer/tablet/syndicate_contract_uplink/preset/uplink - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ Initialize Given by the syndicate as part of the contract uplink bundle - loads in the Contractor Uplink.
Proc Details Initialize(mapload)
+
+
+
+
+
+ Given by the syndicate as part of the contract uplink bundle - loads in the Contractor Uplink.
+
+
+
diff --git a/obj/item/nullrod.html b/obj/item/nullrod.html
new file mode 100644
index 0000000000000..56f8309f67bec
--- /dev/null
+++ b/obj/item/nullrod.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ /obj/item/nullrod - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ check_menu check_menu: Checks if we are allowed to interact with a radial menu
+ reskin_holy_weapon reskin_holy_weapon: Shows a user a list of all available nullrod reskins and based on his choice replaces the nullrod with the reskinned version
Proc Details
+ check_menu: Checks if we are allowed to interact with a radial menu
+Arguments:
+
+user The mob interacting with a menu
+ reskin_holy_weapon
+
+ reskin_holy_weapon: Shows a user a list of all available nullrod reskins and based on his choice replaces the nullrod with the reskinned version
+Arguments:
+
+M The mob choosing a nullrod reskin
+
+
+
+
diff --git a/obj/item/organ.html b/obj/item/organ.html
new file mode 100644
index 0000000000000..784aa60611f5e
--- /dev/null
+++ b/obj/item/organ.html
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+ /obj/item/organ - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ healing_factor Healing factor and decay factor function on % of maxhealth, and do not work by applying a static number per tick
+ prev_damage Organ variables for determining what we alert the owner with when they pass/clear the damage thresholds
+ useable When you take a bite you cant jam it in for surgery anymore. Procs
+ applyOrganDamage Adjusts an organ's damage by the amount "d", up to a maximum amount, which is by default max damage
+ check_damage_thresholds
+ examine Damage decrements by a percent of its maxhealth
+Damage decrements again by a percent of its maxhealth, up to a total of 4 extra times depending on the owner's satiety
+ setOrganDamage SETS an organ's damage to the amount "d", and in doing so clears or sets the failing flag, good for when you have an effect that should fix an organ if broken
+ Var Details healing_factor
+
+
+
+
+
+ Healing factor and decay factor function on % of maxhealth, and do not work by applying a static number per tick
prev_damage
+
+
+
+
+
+ Organ variables for determining what we alert the owner with when they pass/clear the damage thresholds
useable
+
+
+
+
+
+ When you take a bite you cant jam it in for surgery anymore.
Proc Details applyOrganDamage(d, maximum)
+
+
+
+
+
+ Adjusts an organ's damage by the amount "d", up to a maximum amount, which is by default max damage
check_damage_thresholds()
+
+
+
+
+
+
+check_damage_thresholds
+
+
+ examine
+
+ Damage decrements by a percent of its maxhealth
+Damage decrements again by a percent of its maxhealth, up to a total of 4 extra times depending on the owner's satiety
setOrganDamage(d)
+
+
+
+
+
+ SETS an organ's damage to the amount "d", and in doing so clears or sets the failing flag, good for when you have an effect that should fix an organ if broken
+
+
+
diff --git a/obj/item/organ/brain.html b/obj/item/organ/brain.html
new file mode 100644
index 0000000000000..e59deff0329e5
--- /dev/null
+++ b/obj/item/organ/brain.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /obj/item/organ/brain - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ decay_factor The brain's organ variables are significantly more different than the other organs, with half the decay rate for balance reasons, and twice the maxHealth Procs
+ has_trauma_type TRAUMAS
+ Var Details decay_factor
+
+
+
+
+
+ The brain's organ variables are significantly more different than the other organs, with half the decay rate for balance reasons, and twice the maxHealth
Proc Details has_trauma_type(brain_trauma_type, resilience)
+
+
+
+
+
+ TRAUMAS
+
+
+
diff --git a/obj/item/organ/eyes.html b/obj/item/organ/eyes.html
new file mode 100644
index 0000000000000..094c1acd7ed97
--- /dev/null
+++ b/obj/item/organ/eyes.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /obj/item/organ/eyes - SPLURT Station 13
+
+
+
+
+
+
+Proc Details apply_damaged_eye_effects()
+
+
+
+
+
+ Applies effects to our owner based on how damaged our eyes are
+
+
+
diff --git a/obj/item/organ/genital.html b/obj/item/organ/genital.html
new file mode 100644
index 0000000000000..315e200b42202
--- /dev/null
+++ b/obj/item/organ/genital.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /obj/item/organ/genital - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details always_accessible
+
+
+
+
+
+ Controls whenever a genital is always accessible
Proc Details toggle_accessibility(accessibility)
+
+
+
+
+
+ Toggles whether such genital can always be accessed
+
+
+
diff --git a/obj/item/paper.html b/obj/item/paper.html
new file mode 100644
index 0000000000000..bcc51aca6bd28
--- /dev/null
+++ b/obj/item/paper.html
@@ -0,0 +1,111 @@
+
+
+
+
+
+
+ /obj/item/paper - SPLURT Station 13
+
+
+
+
+
+
+Paper is now using markdown (like in github pull notes) for ALL rendering
+so we do loose a bit of functionality but we gain in easy of use of
+paper and getting rid of that crashing bug
Vars
+ contact_poison Overlay info
+ form_fields When the sheet can be "filled out"
+This is an associated list
+ info What's actually written on the paper.
+ stamped Positioning for the stamp in tgui
+ stamps The (text for the) stamps on the paper. Procs
+ copy This proc copies this sheet of paper to a new
+sheet. Used by carbon papers and the photocopier machine.
+ fire_act Normaly you just stamp, you don't need to read the thing
+ setText This proc sets the text of the paper and updates the
+icons. You can modify the pen_color after if need
+be.
+ ui_data TODO: show the sheet will bloodied or crinkling?
+ ui_host WHHHHY
+This does the overlay stuff
+ Var Details
+ Overlay info
+ When the sheet can be "filled out"
+This is an associated list
info
+
+
+
+
+
+ What's actually written on the paper.
stamped
+
+
+
+
+
+ Positioning for the stamp in tgui
stamps
+
+
+
+
+
+ The (text for the) stamps on the paper.
Proc Details copy(paper_type, /atom /location, colored)
+
+
+
+
+
+ This proc copies this sheet of paper to a new
+sheet. Used by carbon papers and the photocopier machine.
fire_act(exposed_temperature, exposed_volume)
+
+
+
+
+
+ Normaly you just stamp, you don't need to read the thing
setText(text)
+
+
+
+
+
+ This proc sets the text of the paper and updates the
+icons. You can modify the pen_color after if need
+be.
ui_data
+
+ TODO: show the sheet will bloodied or crinkling?
ui_host
+
+ WHHHHY
+This does the overlay stuff
+
+
+
diff --git a/obj/item/paper/natural.html b/obj/item/paper/natural.html
new file mode 100644
index 0000000000000..d806f95dde9d0
--- /dev/null
+++ b/obj/item/paper/natural.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /obj/item/paper/natural - SPLURT Station 13
+
+
+
+
+
+
+Proc Details Initialize(mapload)
+
+
+
+
+
+ Natural paper
+
+
+
diff --git a/obj/item/pet_carrier/bluespace.html b/obj/item/pet_carrier/bluespace.html
new file mode 100644
index 0000000000000..f88070733afcb
--- /dev/null
+++ b/obj/item/pet_carrier/bluespace.html
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+ /obj/item/pet_carrier/bluespace - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details occupant_gas_supply
+
+
+
+
+
+ gas supply for simplemobs so they don't die
sipping_level
+
+
+
+
+
+ level until the reagent gets INGEST ed instead of TOUCH
sipping_probably
+
+
+
+
+
+ prob50 level of sipping
transfer_rate
+
+
+
+
+
+ chem transfer rate / second
+
+
+
diff --git a/obj/item/pinpointer.html b/obj/item/pinpointer.html
new file mode 100644
index 0000000000000..25fcc819187ee
--- /dev/null
+++ b/obj/item/pinpointer.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/item/pinpointer - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details resets_target
+
+
+
+
+
+ resets target on toggle
+
+
+
diff --git a/obj/item/pitchfork.html b/obj/item/pitchfork.html
new file mode 100644
index 0000000000000..1d807daad7819
--- /dev/null
+++ b/obj/item/pitchfork.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+ /obj/item/pitchfork - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ on_unwield triggered on unwield of two handed item
+ on_wield triggered on wield of two handed item
Proc Details on_unwield
+
+ triggered on unwield of two handed item
on_wield
+
+ triggered on wield of two handed item
+
+
+
diff --git a/obj/item/price_tagger.html b/obj/item/price_tagger.html
new file mode 100644
index 0000000000000..e01a49f8ce53d
--- /dev/null
+++ b/obj/item/price_tagger.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/item/price_tagger - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ price the price of the item
+ Var Details price
+
+
+
+
+
+ the price of the item
+
+
+
diff --git a/obj/item/projectile.html b/obj/item/projectile.html
new file mode 100644
index 0000000000000..489c0457c88e9
--- /dev/null
+++ b/obj/item/projectile.html
@@ -0,0 +1,440 @@
+
+
+
+
+
+
+ /obj/item/projectile - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ embed_falloff_tile How much we want to drop the embed_chance value, if we can embed, per tile, for falloff purposes
+ force_hit If the object being hit can pass ths damage on to something else, it should not do it for this bullet
+ hit_stunned_targets If TRUE, hit mobs even if they're on the floor and not our target
+ hit_threshhold If objects are below this layer, we pass through them
+ hitscan_effect_generation Used in generate_hitscan_tracers to determine which "cycle" we're on.
+ hitscan_movement_decisecond_equivalency How many deciseconds are each hitscan movement considered. Used for homing and other things that use seconds for timing rather than ticks.
+ homing_turn_speed How fast the projectile turns towards its homing targets, in angle per second.
+ ignore_source_check If TRUE, we can hit our firer.
+ impacted We already impacted these things, do not impact them again. Used to make sure we can pierce things we want to pierce. Lazylist, typecache style (object = TRUE) for performance.
+ pass_flags
+ phasing_ignore_direct_target If FALSE, allow us to hit something directly targeted/clicked/whatnot even if we're able to phase through it
+ pierces number of times we've pierced something. Incremented BEFORE bullet_act and on_hit proc!
+ pixel_increment_amount The number of pixels we increment by. THIS IS NOT SPEED, DO NOT TOUCH THIS UNLESS YOU KNOW WHAT YOU ARE DOING. In general, lower values means more linetrace accuracy up to a point at cost of performance.
+ pixel_move_interrupted Used to detect jumps in the middle of a pixel_move. Yes, this is ugly as sin code-wise but it works.
+ pixels_per_second Pixels moved per second.
+ pixels_range_leftover "leftover" pixels for Range() calculation as pixel_move() was moved to simulated semi-pixel movement and Range() is in tiles.
+ pixels_tick_leftover "leftover" tick pixels and stuff yeah, so we don't round off things and introducing tracing inaccuracy.
+ projectile_phasing Bitflag for things the projectile should just phase through entirely - No hitting unless direct target and [phasing_ignore_direct_target] is FALSE. Uses pass_flags flags.
+ projectile_piercing Bitflag for things the projectile should hit, but pierce through without deleting itself. Defers to projectile_phasing. Uses pass_flags flags.
+ range Range of the projectile, de-incrementing every step. The projectile deletes itself at 0. This is in tiles.
+ ricochet_auto_aim_angle On ricochet, if ricochet_auto_aim_range is nonzero, we'll consider any mobs within this range of the normal angle of incidence to home in on, higher = more auto aim
+ ricochet_auto_aim_range On ricochet, if nonzero, we consider all mobs within this range of our projectile at the time of ricochet to home in on like Revolver Ocelot, as governed by ricochet_auto_aim_angle
+ ricochet_chance 0-100, the base chance of ricocheting, before being modified by the atom we shoot and our chance decay
+ ricochet_decay_chance 0-1 (or more, I guess) multiplier, the ricochet_chance is modified by multiplying this after each ricochet
+ ricochet_decay_damage 0-1 (or more, I guess) multiplier, the projectile's damage is modified by multiplying this after each ricochet
+ ricochet_incidence_leeway the angle of impact must be within this many degrees of the struck surface, set to 0 to allow any angle
+ ricochets how many times we've ricochet'd so far (instance variable, not a stat)
+ ricochets_max how many times we can ricochet max
+ sharpness For telling whether we want to roll for bone breaking or lacerations if we're bothering with wounds
+ shrapnel_type If defined, on hit we create an item of this type then call hitby() on the hit target with this, mainly used for embedding items (bullets) in targets
+ temporary_unstoppable_movement We are flagged PHASING temporarily to not stop moving when we Bump something but want to keep going anyways.
+ wound_falloff_tile How much we want to drop both wound_bonus and bare_wound_bonus (to a minimum of 0 for the latter) per tile, for falloff purposes
+ zone_accuracy_factor factor to multiply by for zone accuracy percent. Procs
+ CanPassThrough Projectile can pass through
+Used to not even attempt to Bump() or fail to Cross() anything we already hit.
+ Crossed Projectile crossed: When something enters a projectile's tile, make sure the projectile hits it if it should be hitting it.
+ Impact Called when the projectile hits something
+This can either be from it bumping something,
+or it passing over a turf/being crossed and scanning that there is infact
+a valid target it needs to hit.
+This target isn't however necessarily WHAT it hits
+that is determined by process_hit and select_target.
+ Moved Projectile moved:
+ Range Artificially modified to be called at around every world.icon_size pixels of movement.
+WARNING: Range() can only be called once per pixel_increment_amount pixels.
+ pixel_move The proc to make the projectile go, using a simulated pixel movement line trace.
+Note: deciseconds_equivalent is currently only used for homing, times is the number of times to move pixel_increment_amount.
+Trajectory multiplier directly modifies the factor of pixel_increment_amount to go per time.
+It's complicated, so probably just don't mess with this unless you know what you're doing.
+ prehit_pierce Checks if we should pierce something.
+ process_hit The primary workhorse proc of projectile impacts.
+This is a RECURSIVE call - process_hit is called on the first selected target, and then repeatedly called if the projectile still hasn't been deleted.
+ return_predicted_turf_after_moves one move is a tile.
+ scan_crossed_hit Scan if we should hit something and hit it if we need to
+The difference between this and handling in Impact is
+In this we strictly check if we need to Impact() something in specific
+If we do, we do
+We don't even check if it got hit already - Impact() does that
+In impact there's more code for selecting WHAT to hit
+So this proc is more of checking if we should hit something at all BY having an atom cross us.
+ scan_moved_turf Scans if we should hit something on the turf we just moved to if we haven't already
+ select_target Selects a target to hit from a turf
+ Var Details embed_falloff_tile
+
+
+
+
+
+ How much we want to drop the embed_chance value, if we can embed, per tile, for falloff purposes
force_hit
+
+
+
+
+
+ If the object being hit can pass ths damage on to something else, it should not do it for this bullet
hit_stunned_targets
+
+
+
+
+
+ If TRUE, hit mobs even if they're on the floor and not our target
hit_threshhold
+
+
+
+
+
+ If objects are below this layer, we pass through them
hitscan_effect_generation
+
+
+
+
+
+ Used in generate_hitscan_tracers to determine which "cycle" we're on.
hitscan_movement_decisecond_equivalency
+
+
+
+
+
+ How many deciseconds are each hitscan movement considered. Used for homing and other things that use seconds for timing rather than ticks.
homing_turn_speed
+
+
+
+
+
+ How fast the projectile turns towards its homing targets, in angle per second.
ignore_source_check
+
+
+
+
+
+ If TRUE, we can hit our firer.
impacted
+
+
+
+
+
+ We already impacted these things, do not impact them again. Used to make sure we can pierce things we want to pierce. Lazylist, typecache style (object = TRUE) for performance.
pass_flags
+
+
+
+
+
+
+
+PROJECTILE PIERCING
+* WARNING:
+* Projectile piercing MUST be done using these variables.
+* Ordinary passflags will result in can_hit_target being false unless directly clicked on - similar to projectile_phasing but without even going to process_hit.
+* The two flag variables below both use pass flags.
+* In the context of LETPASStHROW, it means the projectile will ignore things that are currently "in the air" from a throw.
+* Also, projectiles sense hits using Bump(), and then pierce them if necessary.
+* They simply do not follow conventional movement rules.
+* NEVER flag a projectile as PHASING movement type.
+* If you so badly need to make one go through *everything*, override check_pierce() for your projectile to always return PROJECTILE_PIERCE_PHASE/HIT.
+
+
+
+The "usual" flags of pass_flags is used in that can_hit_target ignores these unless they're specifically targeted/clicked on. This behavior entirely bypasses process_hit if triggered, rather than phasing which uses prehit_pierce() to check.
phasing_ignore_direct_target
+
+
+
+
+
+ If FALSE, allow us to hit something directly targeted/clicked/whatnot even if we're able to phase through it
pierces
+
+
+
+
+
+ number of times we've pierced something. Incremented BEFORE bullet_act and on_hit proc!
pixel_increment_amount
+
+
+
+
+
+ The number of pixels we increment by. THIS IS NOT SPEED, DO NOT TOUCH THIS UNLESS YOU KNOW WHAT YOU ARE DOING. In general, lower values means more linetrace accuracy up to a point at cost of performance.
pixel_move_interrupted
+
+
+
+
+
+ Used to detect jumps in the middle of a pixel_move. Yes, this is ugly as sin code-wise but it works.
pixels_per_second
+
+
+
+
+
+ Pixels moved per second.
pixels_range_leftover
+
+
+
+
+
+ "leftover" pixels for Range() calculation as pixel_move() was moved to simulated semi-pixel movement and Range() is in tiles.
pixels_tick_leftover
+
+
+
+
+
+ "leftover" tick pixels and stuff yeah, so we don't round off things and introducing tracing inaccuracy.
projectile_phasing
+
+
+
+
+
+ Bitflag for things the projectile should just phase through entirely - No hitting unless direct target and [phasing_ignore_direct_target] is FALSE. Uses pass_flags flags.
projectile_piercing
+
+
+
+
+
+ Bitflag for things the projectile should hit, but pierce through without deleting itself. Defers to projectile_phasing. Uses pass_flags flags.
range
+
+
+
+
+
+ Range of the projectile, de-incrementing every step. The projectile deletes itself at 0. This is in tiles.
ricochet_auto_aim_angle
+
+
+
+
+
+ On ricochet, if ricochet_auto_aim_range is nonzero, we'll consider any mobs within this range of the normal angle of incidence to home in on, higher = more auto aim
ricochet_auto_aim_range
+
+
+
+
+
+ On ricochet, if nonzero, we consider all mobs within this range of our projectile at the time of ricochet to home in on like Revolver Ocelot, as governed by ricochet_auto_aim_angle
ricochet_chance
+
+
+
+
+
+ 0-100, the base chance of ricocheting, before being modified by the atom we shoot and our chance decay
ricochet_decay_chance
+
+
+
+
+
+ 0-1 (or more, I guess) multiplier, the ricochet_chance is modified by multiplying this after each ricochet
ricochet_decay_damage
+
+
+
+
+
+ 0-1 (or more, I guess) multiplier, the projectile's damage is modified by multiplying this after each ricochet
ricochet_incidence_leeway
+
+
+
+
+
+ the angle of impact must be within this many degrees of the struck surface, set to 0 to allow any angle
ricochets
+
+
+
+
+
+ how many times we've ricochet'd so far (instance variable, not a stat)
ricochets_max
+
+
+
+
+
+ how many times we can ricochet max
sharpness
+
+
+
+
+
+ For telling whether we want to roll for bone breaking or lacerations if we're bothering with wounds
shrapnel_type
+
+
+
+
+
+ If defined, on hit we create an item of this type then call hitby() on the hit target with this, mainly used for embedding items (bullets) in targets
temporary_unstoppable_movement
+
+
+
+
+
+ We are flagged PHASING temporarily to not stop moving when we Bump something but want to keep going anyways.
wound_falloff_tile
+
+
+
+
+
+ How much we want to drop both wound_bonus and bare_wound_bonus (to a minimum of 0 for the latter) per tile, for falloff purposes
zone_accuracy_factor
+
+
+
+
+
+ factor to multiply by for zone accuracy percent.
Proc Details CanPassThrough(/atom /blocker, /turf /target, blocker_opinion)
+
+
+
+
+
+ Projectile can pass through
+Used to not even attempt to Bump() or fail to Cross() anything we already hit.
+ Projectile crossed: When something enters a projectile's tile, make sure the projectile hits it if it should be hitting it.
Impact
+
+ Called when the projectile hits something
+This can either be from it bumping something,
+or it passing over a turf/being crossed and scanning that there is infact
+a valid target it needs to hit.
+This target isn't however necessarily WHAT it hits
+that is determined by process_hit and select_target.
+Furthermore, this proc shouldn't check can_hit_target - this should only be called if can hit target is already checked.
+Also, we select_target to find what to process_hit first.
Moved(/atom /OldLoc, Dir)
+
+
+
+
+
+ Projectile moved:
+If not fired yet, do not do anything. Else,
+If temporary unstoppable movement used for piercing through things we already hit (impacted list) is set, unset it.
+Scan turf we're now in for anything we can/should hit. This is useful for hitting non dense objects the user
+directly clicks on, as well as for PHASING projectiles to be able to hit things at all as they don't ever Bump().
Range()
+
+
+
+
+
+ Artificially modified to be called at around every world.icon_size pixels of movement.
+WARNING: Range() can only be called once per pixel_increment_amount pixels.
pixel_move(times, hitscanning, seconds_equivalent, trajectory_multiplier, allow_animation)
+
+
+
+
+
+ The proc to make the projectile go, using a simulated pixel movement line trace.
+Note: deciseconds_equivalent is currently only used for homing, times is the number of times to move pixel_increment_amount.
+Trajectory multiplier directly modifies the factor of pixel_increment_amount to go per time.
+It's complicated, so probably just don't mess with this unless you know what you're doing.
prehit_pierce
+
+ Checks if we should pierce something.
+NOT meant to be a pure proc, since this replaces prehit() which was used to do things.
+Return PROJECTILE_DELETE_WITHOUT_HITTING to delete projectile without hitting at all!
process_hit
+
+ The primary workhorse proc of projectile impacts.
+This is a RECURSIVE call - process_hit is called on the first selected target, and then repeatedly called if the projectile still hasn't been deleted.
+Order of operations:
+
+Checks if we are deleted, or if we're somehow trying to hit a null, in which case, bail out
+Adds the thing we're hitting to impacted so we can make sure we don't doublehit
+Checks piercing - stores this.
+Afterwards:
+Hit and delete, hit without deleting and pass through, pass through without hitting, or delete without hitting depending on result
+If we're going through without hitting, find something else to hit if possible and recurse, set unstoppable movement to true
+If we're deleting without hitting, delete and return
+Otherwise, send signal of COMSIG_PROJECTILE_PREHIT to target
+Then, hit, deleting ourselves if necessary.
+@params
+T - Turf we're on/supposedly hitting
+target - target we're hitting
+bumped - target we originally bumped. it's here to ensure that if something blocks our projectile by means of Cross() failure, we hit it
+even if it is not dense.
+hit_something - only should be set by recursive calling by this proc - tracks if we hit something already
+
+Returns if we hit something.
+return_predicted_turf_after_moves(moves, forced_angle)
+
+
+
+
+
+ one move is a tile.
scan_crossed_hit
+
+ Scan if we should hit something and hit it if we need to
+The difference between this and handling in Impact is
+In this we strictly check if we need to Impact() something in specific
+If we do, we do
+We don't even check if it got hit already - Impact() does that
+In impact there's more code for selecting WHAT to hit
+So this proc is more of checking if we should hit something at all BY having an atom cross us.
scan_moved_turf()
+
+
+
+
+
+ Scans if we should hit something on the turf we just moved to if we haven't already
+This proc is a little high in overhead but allows us to not snowflake CanPass in living and other things.
select_target
+
+ Selects a target to hit from a turf
+@params
+T - The turf
+target - The "preferred" atom to hit, usually what we Bumped() first.
+bumped - used to track if something is the reason we impacted in the first place.
+If set, this atom is always treated as dense by can_hit_target.
+Priority:
+0. Anything that is already in impacted is ignored no matter what. Furthermore, in any bracket, if the target atom parameter is in it, that's hit first.
+Furthermore, can_hit_target is always checked. This (entire proc) is PERFORMANCE OVERHEAD!! But, it shouldn't be ""too"" bad and I frankly don't have a better generic non snowflakey way that I can think of right now at 3 AM.
+FURTHERMORE, mobs/objs have a density check from can_hit_target - to hit non dense objects over a turf, you must click on them, same for mobs that usually wouldn't get hit.
+
+The thing originally aimed at/clicked on
+Mobs - picks lowest buckled mob to prevent scarp piggybacking memes
+Objs
+Turf
+Nothing
+
+
+
+
diff --git a/obj/item/projectile/frost_orb.html b/obj/item/projectile/frost_orb.html
new file mode 100644
index 0000000000000..982304d96ea23
--- /dev/null
+++ b/obj/item/projectile/frost_orb.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /obj/item/projectile/frost_orb - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ orb_explosion Called when the orb is exploding, shoots out projectiles
Proc Details orb_explosion(projectile_speed_multiplier)
+
+
+
+
+
+ Called when the orb is exploding, shoots out projectiles
+
+
+
diff --git a/obj/item/projectile/kiss.html b/obj/item/projectile/kiss.html
new file mode 100644
index 0000000000000..395e5bc3e0898
--- /dev/null
+++ b/obj/item/projectile/kiss.html
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+ /obj/item/projectile/kiss - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ harmless_on_hit To get around shielded modsuits & such being set off by kisses when they shouldn't, we take a page from hallucination projectiles
+and simply fake our on hit effects. This lets kisses remain incorporeal without having to make some new trait for this one niche situation.
+This fake hit only happens if we can deal damage and if we hit a living thing. Otherwise, we just do normal on hit effects.
Proc Details harmless_on_hit
+
+ To get around shielded modsuits & such being set off by kisses when they shouldn't, we take a page from hallucination projectiles
+and simply fake our on hit effects. This lets kisses remain incorporeal without having to make some new trait for this one niche situation.
+This fake hit only happens if we can deal damage and if we hit a living thing. Otherwise, we just do normal on hit effects.
+
+
+
diff --git a/obj/item/projectile/tether.html b/obj/item/projectile/tether.html
new file mode 100644
index 0000000000000..568be95772583
--- /dev/null
+++ b/obj/item/projectile/tether.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/item/projectile/tether - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ line Reference to the beam following the projectile.
+ Var Details line
+
+
+
+
+
+ Reference to the beam following the projectile.
+
+
+
diff --git a/obj/item/raw_anomaly_core.html b/obj/item/raw_anomaly_core.html
new file mode 100644
index 0000000000000..783ea85fe9dfa
--- /dev/null
+++ b/obj/item/raw_anomaly_core.html
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+ /obj/item/raw_anomaly_core - SPLURT Station 13
+
+
+
+
+
+
+The current precursor to anomaly cores, these are manufactured into 'finished' anomaly cores for use in research, items, and more.
+The current amounts created is stored in SSresearch.created_anomaly_types[ANOMALY_CORE_TYPE_DEFINE] = amount
+The hard limits are in code/__DEFINES/anomalies.dm
+ Var Details anomaly_type
+
+
+
+
+
+ Anomaly type
Proc Details create_core(newloc, del_self, count_towards_limit)
+
+
+
+
+
+ Created the resulting core after being "made" into it.
+Arguments:
+
+newloc - Where the new core will be created
+del_self - should we qdel(src)
+count_towards_limit - should we increment the amount of created cores on SSresearch
+
+
+
+
diff --git a/obj/item/rcl.html b/obj/item/rcl.html
new file mode 100644
index 0000000000000..1d778ee4f1ece
--- /dev/null
+++ b/obj/item/rcl.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+ /obj/item/rcl - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ on_unwield triggered on unwield of two handed item
+ on_wield triggered on wield of two handed item
Proc Details on_unwield
+
+ triggered on unwield of two handed item
on_wield
+
+ triggered on wield of two handed item
+
+
+
diff --git a/obj/item/reagent_containers/food.html b/obj/item/reagent_containers/food.html
new file mode 100644
index 0000000000000..c76c58c890f23
--- /dev/null
+++ b/obj/item/reagent_containers/food.html
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+ /obj/item/reagent_containers/food - SPLURT Station 13
+
+
+
+
+
+
+Food.
+Note: When adding food items with dummy parents, make sure to add
+the parent to the exclusion list in code/__HELPERS/unsorted.dm's
+get_random_food proc.
+
+
+
diff --git a/obj/item/reagent_containers/food/snacks.html b/obj/item/reagent_containers/food/snacks.html
new file mode 100644
index 0000000000000..001285e4a3a56
--- /dev/null
+++ b/obj/item/reagent_containers/food/snacks.html
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+ /obj/item/reagent_containers/food/snacks - SPLURT Station 13
+
+
+
+
+
+
+
+Items in the "Snacks" subcategory are food items that people actually eat. The key points are that they are created
+already filled with reagents and are destroyed when empty. Additionally, they make a "munching" noise when eaten.
+Notes by Darem: Food in the "snacks" subtype can hold a maximum of 50 units. Generally speaking, you don't want to go over 40
+total for the item because you want to leave space for extra condiments. If you want effect besides healing, add a reagent for
+it. Try to stick to existing reagents when possible (so if you want a stronger healing effect, just use omnizine). On use
+effect (such as the old officer eating a donut code) requires a unique reagent (unless you can figure out a better way).
+The nutriment reagent and bitesize variable replace the old heal_amt and amount variables. Each unit of nutriment is equal to
+2 of the old heal_amt variable. Bitesize is the rate at which the reagents are consumed. So if you have 6 nutriment and a
+bitesize of 2, then it'll take 3 bites to eat. Unlike the old system, the contained reagents are evenly spread among all
+the bites. No more contained reagents = no more bites.
+Food formatting and crafting examples.
+/obj/item/reagent_containers/food/snacks/saltedcornchips //Identification path for the object.
+ name = "salted corn chips" //Name that displays when hovered over.
+ desc = "Manufactured in a far away factory." //Description on examine.
+ icon_state = "saltychip" //Refers to an icon, usually in food.dmi
+ bitesize = 3 //How many reagents are consumed in each bite.
+ list_reagents = list(/datum/reagent/consumable/nutriment = 6, //What's inside the snack, but only if spawned. For example, from a chemical reaction, vendor, or slime core spawn.
+ /datum/reagent/consumable/nutriment/vitamin = 2)
+ bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, //What's -added- to the food, in addition to the reagents contained inside the foods used to craft it. Basically, a reward for cooking.
+ /datum/reagent/consumable/nutriment/vitamin = 1) ^^For example. Egg+Egg = 2Egg + Bonus Reagents.
+ filling_color = "#F4A460" //What color it will use if put in a custom food.
+ tastes = list("salt" = 1, "oil" = 1) //Descriptive flavoring displayed when eaten. IE: "You taste a bit of salt and a bit of oil."
+ foodtype = GRAIN | JUNKFOOD //Tag for racial or custom food preferences. IE: Most Lizards cannot have GRAIN.
+
+Crafting Recipe (See files in code/modules/food_and_drinks/recipes/tablecraft/)
+
+/datum/crafting_recipe/food/nachos
+ name ="Salted Corn Chips" //Name that displays in the Crafting UI
+ reqs = list( //The list of ingredients to make the food.
+ /obj/item/reagent_containers/food/snacks/tortilla = 1,
+ /datum/reagent/consumable/sodiumchloride = 1 //As a note, reagents and non-food items don't get added to the food. If you
+ ) ^^want the reagents, make sure the food item has it listed under bonus_reagents.
+ result = /obj/item/reagent_containers/food/snacks/saltedcornchips //Resulting object.
+ subcategory = CAT_MISCFOOD //Subcategory the food falls under in the Food Tab of the crafting menu.
+
+All foods are distributed among various categories. Use common sense.
Proc Details afterattack(/obj /item /reagent_containers/M, /mob /user, proximity)
+
+
+
+
+
+ Dunking
+
+
+
diff --git a/obj/item/reagent_containers/food/snacks/donut.html b/obj/item/reagent_containers/food/snacks/donut.html
new file mode 100644
index 0000000000000..20dfcc1decfe1
--- /dev/null
+++ b/obj/item/reagent_containers/food/snacks/donut.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /obj/item/reagent_containers/food/snacks/donut - SPLURT Station 13
+
+
+
+
+
+
+DONUTS
Procs
+ in_box_sprite Returns the sprite of the donut while in a donut box
Proc Details in_box_sprite()
+
+
+
+
+
+ Returns the sprite of the donut while in a donut box
+
+
+
diff --git a/obj/item/reagent_containers/spray.html b/obj/item/reagent_containers/spray.html
new file mode 100644
index 0000000000000..38b793095043c
--- /dev/null
+++ b/obj/item/reagent_containers/spray.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ /obj/item/reagent_containers/spray - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details last_spray
+
+
+
+
+
+ Last world.time of spray
spray_cooldown
+
+
+
+
+
+ Spray cooldown
spray_delay
+
+
+
+
+
+ Amount of time it takes for a spray to completely travel.
+
+
+
diff --git a/obj/item/reagent_containers/syringe.html b/obj/item/reagent_containers/syringe.html
new file mode 100644
index 0000000000000..5b7b768446a0f
--- /dev/null
+++ b/obj/item/reagent_containers/syringe.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /obj/item/reagent_containers/syringe - SPLURT Station 13
+
+
+
+
+
+
+Proc Details get_rounded_vol()
+
+
+
+
+
+ Used by update_icon() and update_overlays()
+
+
+
diff --git a/obj/item/relic.html b/obj/item/relic.html
new file mode 100644
index 0000000000000..68b263d8e1844
--- /dev/null
+++ b/obj/item/relic.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /obj/item/relic - SPLURT Station 13
+
+
+
+
+
+
+SPECIAL ITEMS
Proc Details throwSmoke
+
+ RELIC PROCS
+
+
+
diff --git a/obj/item/restraints.html b/obj/item/restraints.html
new file mode 100644
index 0000000000000..1e961653cfe66
--- /dev/null
+++ b/obj/item/restraints.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/item/restraints - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details allow_breakout_movement
+
+
+
+
+
+ allow movement at all during breakout
+
+
+
diff --git a/obj/item/restraints/legcuffs/bola.html b/obj/item/restraints/legcuffs/bola.html
new file mode 100644
index 0000000000000..70e9601fe7247
--- /dev/null
+++ b/obj/item/restraints/legcuffs/bola.html
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+ /obj/item/restraints/legcuffs/bola - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ ensnare Attempts to legcuff someone with the bola
Proc Details
+ Attempts to legcuff someone with the bola
+Arguments:
+
+C - the carbon that we will try to ensnare
+
+
+
+
diff --git a/obj/item/resurrection_crystal.html b/obj/item/resurrection_crystal.html
new file mode 100644
index 0000000000000..4f3305c3b0fa5
--- /dev/null
+++ b/obj/item/resurrection_crystal.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /obj/item/resurrection_crystal - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ resurrect Resurrects the target when they die by cloning them into a new duplicate body and transferring their mind to the clone on a safe station turf
Proc Details resurrect
+
+ Resurrects the target when they die by cloning them into a new duplicate body and transferring their mind to the clone on a safe station turf
+
+
+
diff --git a/obj/item/reverse_bear_trap.html b/obj/item/reverse_bear_trap.html
new file mode 100644
index 0000000000000..fbcbf277e90d2
--- /dev/null
+++ b/obj/item/reverse_bear_trap.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /obj/item/reverse_bear_trap - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ arm note: this timer overlay increments one frame every second (to simulate a clock ticking). If you want to instead have it do a full cycle in a minute, set the 'delay' of each frame of the icon overlay to 75 rather than 10, and the worn overlay to twice that.
Proc Details arm()
+
+
+
+
+
+ note: this timer overlay increments one frame every second (to simulate a clock ticking). If you want to instead have it do a full cycle in a minute, set the 'delay' of each frame of the icon overlay to 75 rather than 10, and the worn overlay to twice that.
+
+
+
diff --git a/obj/item/robot_module.html b/obj/item/robot_module.html
new file mode 100644
index 0000000000000..5a4054b8462f6
--- /dev/null
+++ b/obj/item/robot_module.html
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+ /obj/item/robot_module - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ Initialize End Cargo Borg
+ check_menu check_menu: Checks if we are allowed to interact with a radial menu
Proc Details Initialize()
+
+
+
+
+
+ End Cargo Borg
+ check_menu: Checks if we are allowed to interact with a radial menu
+Arguments:
+
+user The mob interacting with a menu
+
+
+
+
diff --git a/obj/item/robot_suit.html b/obj/item/robot_suit.html
new file mode 100644
index 0000000000000..454e1f9c2a535
--- /dev/null
+++ b/obj/item/robot_suit.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+ /obj/item/robot_suit - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ drop_all_parts Drops all included parts to the passed location
+This will also dissassemble the parts being dropped into components as well
Proc Details drop_all_parts
+
+ Drops all included parts to the passed location
+This will also dissassemble the parts being dropped into components as well
+
+
+
diff --git a/obj/item/rtl.html b/obj/item/rtl.html
new file mode 100644
index 0000000000000..54ade996be643
--- /dev/null
+++ b/obj/item/rtl.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+ /obj/item/rtl - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ on_unwield triggered on unwield of two handed item
+ on_wield triggered on wield of two handed item
Proc Details on_unwield
+
+ triggered on unwield of two handed item
on_wield
+
+ triggered on wield of two handed item
+
+
+
diff --git a/obj/item/sales_tagger.html b/obj/item/sales_tagger.html
new file mode 100644
index 0000000000000..a684aa2d5183e
--- /dev/null
+++ b/obj/item/sales_tagger.html
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+ /obj/item/sales_tagger - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ cut_max Maximum value for cut_multiplier.
+ cut_min Minimum value for cut_multiplier.
+ cut_multiplier Details the percentage the scanned account recieves off the final sale.
+The person who tagged this will receive the sale value multiplied by this number.
+ payments_acc The account which is recieving the split profits.
+ Var Details cut_max
+
+
+
+
+
+ Maximum value for cut_multiplier.
cut_min
+
+
+
+
+
+ Minimum value for cut_multiplier.
cut_multiplier
+
+
+
+
+
+ Details the percentage the scanned account recieves off the final sale.
+The person who tagged this will receive the sale value multiplied by this number.
+ The account which is recieving the split profits.
+
+
+
diff --git a/obj/item/seeds.html b/obj/item/seeds.html
new file mode 100644
index 0000000000000..9276a3a31b855
--- /dev/null
+++ b/obj/item/seeds.html
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+ /obj/item/seeds - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ adjust_yield Setters procs
+ harvest_userless Reference to the tray/soil the seeds are planted in.
+Count used for creating the correct amount of results to the harvest.
+List of plants all harvested from the same batch.
+Tile of the harvester to deposit the growables.
+Name of the grown products.
+The Number of products produced by the plant, typically the yield.
+ set_mutability This proc adds a mutability_flag to a gene
+ unset_mutability This proc removes a mutability_flag from a gene
Proc Details adjust_yield(adjustamt)
+
+
+
+
+
+ Setters procs
harvest_userless()
+
+
+
+
+
+ Reference to the tray/soil the seeds are planted in.
+Count used for creating the correct amount of results to the harvest.
+List of plants all harvested from the same batch.
+Tile of the harvester to deposit the growables.
+Name of the grown products.
+The Number of products produced by the plant, typically the yield.
set_mutability(typepath, mutability)
+
+
+
+
+
+ This proc adds a mutability_flag to a gene
unset_mutability(typepath, mutability)
+
+
+
+
+
+ This proc removes a mutability_flag from a gene
+
+
+
diff --git a/obj/item/shield.html b/obj/item/shield.html
new file mode 100644
index 0000000000000..b78601b12231a
--- /dev/null
+++ b/obj/item/shield.html
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+ /obj/item/shield - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details last_shieldbash
+
+
+
+
+
+ Last shieldbash world.time
shield_flags
+
+
+
+
+
+ Shield flags
shieldbash_brutedamage
+
+
+
+
+
+ Shield bashing brute damage
shieldbash_cooldown
+
+
+
+
+
+ Shieldbashing cooldown
shieldbash_knockback
+
+
+
+
+
+ Shieldbashing knockback
shieldbash_push_distance
+
+
+
+
+
+ Shield bashing push distance
shieldbash_stagger_duration
+
+
+
+
+
+ Shield bashing stagger duration
shieldbash_stamcost
+
+
+
+
+
+ Shieldbashing stamina cost
shieldbash_stamdmg
+
+
+
+
+
+ Shield bashing stamina damage
+
+
+
diff --git a/obj/item/shield/riot/implant.html b/obj/item/shield/riot/implant.html
new file mode 100644
index 0000000000000..60a1b6ec36391
--- /dev/null
+++ b/obj/item/shield/riot/implant.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /obj/item/shield/riot/implant - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ take_damage Entirely overriden take_damage. This shouldn't exist outside of an implant (other than maybe christmas).
Proc Details take_damage(damage_amount, damage_type, damage_flag, sound_effect, attack_dir, armour_penetration)
+
+
+
+
+
+ Entirely overriden take_damage. This shouldn't exist outside of an implant (other than maybe christmas).
+
+
+
diff --git a/obj/item/shockpaddles.html b/obj/item/shockpaddles.html
new file mode 100644
index 0000000000000..41a94e6e1349a
--- /dev/null
+++ b/obj/item/shockpaddles.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+ /obj/item/shockpaddles - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ on_unwield triggered on unwield of two handed item
+ on_wield triggered on wield of two handed item
Proc Details on_unwield
+
+ triggered on unwield of two handed item
on_wield
+
+ triggered on wield of two handed item
+
+
+
diff --git a/obj/item/singularityhammer.html b/obj/item/singularityhammer.html
new file mode 100644
index 0000000000000..8687e91981ded
--- /dev/null
+++ b/obj/item/singularityhammer.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+ /obj/item/singularityhammer - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ on_unwield triggered on unwield of two handed item
+ on_wield triggered on wield of two handed item
Proc Details on_unwield
+
+ triggered on unwield of two handed item
on_wield
+
+ triggered on wield of two handed item
+
+
+
diff --git a/obj/item/soulstone.html b/obj/item/soulstone.html
new file mode 100644
index 0000000000000..0efc80baf3f70
--- /dev/null
+++ b/obj/item/soulstone.html
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+ /obj/item/soulstone - SPLURT Station 13
+
+
+
+
+
+
+Proc Details
+ Capturing
attack_self
+
+ Options for using captured souls
transfer_soul(choice, target, /mob /user)
+
+
+
+
+
+ Proc for moving soul in and out off stone
+
+
+
diff --git a/obj/item/spear.html b/obj/item/spear.html
new file mode 100644
index 0000000000000..6dee3102594d1
--- /dev/null
+++ b/obj/item/spear.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+ /obj/item/spear - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ on_unwield triggered on unwield of two handed item
+ on_wield triggered on wield of two handed item
Proc Details on_unwield
+
+ triggered on unwield of two handed item
on_wield
+
+ triggered on wield of two handed item
+
+
+
diff --git a/obj/item/stack.html b/obj/item/stack.html
new file mode 100644
index 0000000000000..6846ac934dcbc
--- /dev/null
+++ b/obj/item/stack.html
@@ -0,0 +1,198 @@
+
+
+
+
+
+
+ /obj/item/stack - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ absorption_capacity How much blood flow this stack can absorb if used as a bandage on a cut wound, note that absorption is how much we lower the flow rate, not the raw amount of blood we suck up
+ absorption_rate How quickly we lower the blood flow on a cut wound we're bandaging. Expected lifetime of this bandage in ticks is thus absorption_capacity/absorption_rate, or until the cut heals, whichever comes first
+ material_type Datum material type that this stack is made of
+ matter_amount Amount of matter for RCD
+ splint_factor If set and this used as a splint for a broken bone wound, this is used as a multiplier for applicable slowdowns (lower = better) (also for speeding up burn recoveries) Procs
+ add
+ build_recipe Returns a list of properties of a given recipe
+ can_merge
+ is_valid_recipe Checks if the recipe is valid to be used
+ recursively_build_recipes Builds all recipes in a given recipe list and returns an association list containing them
+ set_custom_materials Override to make things like metalgen accurately set custom materials
+ set_mats_per_unit
+ split_stack
+ update_custom_materials Updates the custom materials list of this stack.
+ Var Details absorption_capacity
+
+
+
+
+
+ How much blood flow this stack can absorb if used as a bandage on a cut wound, note that absorption is how much we lower the flow rate, not the raw amount of blood we suck up
absorption_rate
+
+
+
+
+
+ How quickly we lower the blood flow on a cut wound we're bandaging. Expected lifetime of this bandage in ticks is thus absorption_capacity/absorption_rate, or until the cut heals, whichever comes first
material_type
+
+
+
+
+
+ Datum material type that this stack is made of
matter_amount
+
+
+
+
+
+ Amount of matter for RCD
splint_factor
+
+
+
+
+
+ If set and this used as a splint for a broken bone wound, this is used as a multiplier for applicable slowdowns (lower = better) (also for speeding up burn recoveries)
Proc Details add(_amount)
+
+
+
+
+
+
+ Returns a list of properties of a given recipe
+Arguments:
+
+R - The stack recipe we are using to get a list of properties
+ can_merge
+
+ is_valid_recipe
+
+ Checks if the recipe is valid to be used
+Arguments:
+
+R - The stack recipe we are checking if it is valid
+recipe_list - The list of recipes we are using to check the given recipe
+ recursively_build_recipes(/list/recipe_to_iterate)
+
+
+
+
+
+ Builds all recipes in a given recipe list and returns an association list containing them
+Arguments:
+
+recipe_to_iterate - The list of recipes we are using to build recipes
+ set_custom_materials(/list/materials, multiplier, is_update)
+
+
+
+
+
+ Override to make things like metalgen accurately set custom materials
set_mats_per_unit(/list/mats, multiplier)
+
+
+
+
+
+ split_stack(/mob /user, amount)
+
+
+
+
+
+ update_custom_materials()
+
+
+
+
+
+ Updates the custom materials list of this stack.
+
+
+
diff --git a/obj/item/stack/cannonball.html b/obj/item/stack/cannonball.html
new file mode 100644
index 0000000000000..b54e65383bb9e
--- /dev/null
+++ b/obj/item/stack/cannonball.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/item/stack/cannonball - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ projectile_type the type of projectile this type of cannonball item turns into.
+ Var Details
+ the type of projectile this type of cannonball item turns into.
+
+
+
diff --git a/obj/item/stack/conveyor.html b/obj/item/stack/conveyor.html
new file mode 100644
index 0000000000000..9f27136c1f9e5
--- /dev/null
+++ b/obj/item/stack/conveyor.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/item/stack/conveyor - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details id
+
+
+
+
+
+ id for linking
+
+
+
diff --git a/obj/item/stack/ducts.html b/obj/item/stack/ducts.html
new file mode 100644
index 0000000000000..3c2239c2c33c7
--- /dev/null
+++ b/obj/item/stack/ducts.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ /obj/item/stack/ducts - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ duct_color Color of our duct
+ duct_layer Default layer of our duct
+ layers Assoc index with all the available layers. yes five might be a bit much. Colors uses a global by the way
+ Var Details duct_color
+
+
+
+
+
+ Color of our duct
duct_layer
+
+
+
+
+
+ Default layer of our duct
layers
+
+
+
+
+
+ Assoc index with all the available layers. yes five might be a bit much. Colors uses a global by the way
+
+
+
diff --git a/obj/item/stack/license_plates/filled.html b/obj/item/stack/license_plates/filled.html
new file mode 100644
index 0000000000000..9687413e0a1cf
--- /dev/null
+++ b/obj/item/stack/license_plates/filled.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /obj/item/stack/license_plates/filled - SPLURT Station 13
+
+
+
+
+
+
+Proc Details update_icon_state()
+
+
+
+
+
+ Override to allow for variations
+
+
+
diff --git a/obj/item/stack/medical.html b/obj/item/stack/medical.html
new file mode 100644
index 0000000000000..737238e49d4bb
--- /dev/null
+++ b/obj/item/stack/medical.html
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+ /obj/item/stack/medical - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ flesh_regeneration How much we add to flesh_healing for burn wounds on application
+ heal_brute How much brute we heal per application
+ heal_burn How much burn we heal per application
+ sanitization How much sanitization to apply to burns on application
+ stop_bleeding How much we reduce bleeding per application on cut wounds
+ Var Details flesh_regeneration
+
+
+
+
+
+ How much we add to flesh_healing for burn wounds on application
heal_brute
+
+
+
+
+
+ How much brute we heal per application
heal_burn
+
+
+
+
+
+ How much burn we heal per application
sanitization
+
+
+
+
+
+ How much sanitization to apply to burns on application
stop_bleeding
+
+
+
+
+
+ How much we reduce bleeding per application on cut wounds
+
+
+
diff --git a/obj/item/stack/medical/mesh.html b/obj/item/stack/medical/mesh.html
new file mode 100644
index 0000000000000..cca0fe2244e16
--- /dev/null
+++ b/obj/item/stack/medical/mesh.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/item/stack/medical/mesh - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ grind_results This var determines if the sterile packaging of the mesh has been opened.
+ Var Details grind_results
+
+
+
+
+
+ This var determines if the sterile packaging of the mesh has been opened.
+
+
+
diff --git a/obj/item/stack/sheet.html b/obj/item/stack/sheet.html
new file mode 100644
index 0000000000000..efef359a697f6
--- /dev/null
+++ b/obj/item/stack/sheet.html
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+ /obj/item/stack/sheet - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ point_value turn-in value for the gulag stacker - loosely relative to its rarity
+ shard_type the shard debris typepath left over by solar panels and windows etc.
+ sheettype this is used for girders in the creation of walls/false walls
+ walltype What type of wall does this sheet spawn Procs
+ on_solar_construction Called on the glass sheet upon solar construction (duh):
+Different glass sheets can modify different stas/vars, such as obj_integrity or efficiency
+and possibly extra effects if you wish to code them.
+Keep in mind the solars' max_integrity is set equal to the obj_integrity later,
+so you won't have to do so here.
+ Var Details point_value
+
+
+
+
+
+ turn-in value for the gulag stacker - loosely relative to its rarity
shard_type
+
+
+
+
+
+ the shard debris typepath left over by solar panels and windows etc.
sheettype
+
+
+
+
+
+ this is used for girders in the creation of walls/false walls
walltype
+
+
+
+
+
+ What type of wall does this sheet spawn
Proc Details
+ Called on the glass sheet upon solar construction (duh):
+Different glass sheets can modify different stas/vars, such as obj_integrity or efficiency
+and possibly extra effects if you wish to code them.
+Keep in mind the solars' max_integrity is set equal to the obj_integrity later,
+so you won't have to do so here.
+
+
+
diff --git a/obj/item/stack/tile.html b/obj/item/stack/tile.html
new file mode 100644
index 0000000000000..249fc72c0c03a
--- /dev/null
+++ b/obj/item/stack/tile.html
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+ /obj/item/stack/tile - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ mineralType Determines certain welder interactions. //included - tile floofing
+ tile_reskin_types Cached associative lazy list to hold the radial options for tile reskinning. See tile_reskinning.dm for more information. Pattern: list[type] -> image
+ turf_type What type of turf does this tile produce. //included - tile floofing Procs
+ tile_reskin_list Caches associative lists with type path index keys and images of said type's initial icon state (typepath -> image).
+ Var Details mineralType
+
+
+
+
+
+ Determines certain welder interactions. //included - tile floofing
tile_reskin_types
+
+
+
+
+
+ Cached associative lazy list to hold the radial options for tile reskinning. See tile_reskinning.dm for more information. Pattern: list[type] -> image
turf_type
+
+
+
+
+
+ What type of turf does this tile produce. //included - tile floofing
Proc Details tile_reskin_list(/list/values)
+
+
+
+
+
+ Caches associative lists with type path index keys and images of said type's initial icon state (typepath -> image).
+
+
+
diff --git a/obj/item/staff/bostaff.html b/obj/item/staff/bostaff.html
new file mode 100644
index 0000000000000..662557d77848a
--- /dev/null
+++ b/obj/item/staff/bostaff.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+ /obj/item/staff/bostaff - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ on_unwield triggered on unwield of two handed item
+ on_wield triggered on wield of two handed item
Proc Details on_unwield
+
+ triggered on unwield of two handed item
on_wield
+
+ triggered on wield of two handed item
+
+
+
diff --git a/obj/item/stock_parts/cell.html b/obj/item/stock_parts/cell.html
new file mode 100644
index 0000000000000..d03482f889f0f
--- /dev/null
+++ b/obj/item/stock_parts/cell.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /obj/item/stock_parts/cell - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ grown_battery If it's a grown that acts as a battery, add a wire overlay to it.
+ has_charge_overlay If true, add the o1 and o2 overlays based on charge level.
+ Var Details grown_battery
+
+
+
+
+
+ If it's a grown that acts as a battery, add a wire overlay to it.
has_charge_overlay
+
+
+
+
+
+ If true, add the o1 and o2 overlays based on charge level.
+
+
+
diff --git a/obj/item/storage/book/bible.html b/obj/item/storage/book/bible.html
new file mode 100644
index 0000000000000..59c572289efb4
--- /dev/null
+++ b/obj/item/storage/book/bible.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/item/storage/book/bible - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ check_menu Checks if we are allowed to interact with the radial
Proc Details
+ Checks if we are allowed to interact with the radial
+Arguements: user The mob interacting with the menu
+
+
+
diff --git a/obj/item/storage/box/papersack.html b/obj/item/storage/box/papersack.html
new file mode 100644
index 0000000000000..c6c3372524322
--- /dev/null
+++ b/obj/item/storage/box/papersack.html
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+ /obj/item/storage/box/papersack - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ papersack_designs A list of all available papersack reskins Procs
+ check_menu check_menu: Checks if we are allowed to interact with a radial menu
+ Var Details papersack_designs
+
+
+
+
+
+ A list of all available papersack reskins
Proc Details
+ check_menu: Checks if we are allowed to interact with a radial menu
+Arguments:
+
+user The mob interacting with a menu
+P The pen used to interact with a menu
+
+
+
+
diff --git a/obj/item/storage/fancy/rollingpapers.html b/obj/item/storage/fancy/rollingpapers.html
new file mode 100644
index 0000000000000..3f181f90616ff
--- /dev/null
+++ b/obj/item/storage/fancy/rollingpapers.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /obj/item/storage/fancy/rollingpapers - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ icon_type The value in here has NOTHING to do with icons. It needs to be this for the proper examine. Procs
+ update_icon_state Overrides to do nothing because fancy boxes are fucking insane.
+ Var Details icon_type
+
+
+
+
+
+ The value in here has NOTHING to do with icons. It needs to be this for the proper examine.
Proc Details update_icon_state()
+
+
+
+
+
+ Overrides to do nothing because fancy boxes are fucking insane.
+
+
+
diff --git a/obj/item/storage/pod.html b/obj/item/storage/pod.html
new file mode 100644
index 0000000000000..9d68a3779bd81
--- /dev/null
+++ b/obj/item/storage/pod.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /obj/item/storage/pod - SPLURT Station 13
+
+
+
+
+
+
+Proc Details afterShuttleMove(/turf /oldT, /list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir, rotation)
+
+
+
+
+
+ Item move procs
+
+
+
diff --git a/obj/item/storage/portable_chem_mixer.html b/obj/item/storage/portable_chem_mixer.html
new file mode 100644
index 0000000000000..2b63cf984eccb
--- /dev/null
+++ b/obj/item/storage/portable_chem_mixer.html
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+ /obj/item/storage/portable_chem_mixer - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ amount Creating an empty slot for a beaker that can be added to dispense into
+ dispensable_reagents The amount of reagent that is to be dispensed currently Procs
+ ComponentInitialize List in which all currently dispensable reagents go
+ replace_beaker Replaces the beaker of the portable chemical mixer with another beaker, or simply adds the new beaker if none is in currently
+ update_contents Updates the contents of the portable chemical mixer
+ Var Details amount
+
+
+
+
+
+ Creating an empty slot for a beaker that can be added to dispense into
dispensable_reagents
+
+
+
+
+
+ The amount of reagent that is to be dispensed currently
Proc Details ComponentInitialize()
+
+
+
+
+
+ List in which all currently dispensable reagents go
replace_beaker
+
+ Replaces the beaker of the portable chemical mixer with another beaker, or simply adds the new beaker if none is in currently
+Checks if a valid user and a valid new beaker exist and attempts to replace the current beaker in the portable chemical mixer with the one in hand. Simply places the new beaker in if no beaker is currently loaded
+Arguments:
+
+mob/living/user - The user who is trying to exchange beakers
+
+obj/item/reagent_containers/new_beaker - The new beaker that the user wants to put into the device
+
+
+ update_contents()
+
+
+
+
+
+ Updates the contents of the portable chemical mixer
+A list of dispensable reagents is created by iterating through each source beaker in the portable chemical beaker and reading its contents
+
+
+
diff --git a/obj/item/storage/toolbox/mechanical.html b/obj/item/storage/toolbox/mechanical.html
new file mode 100644
index 0000000000000..11296bd57002a
--- /dev/null
+++ b/obj/item/storage/toolbox/mechanical.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/item/storage/toolbox/mechanical - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ has_soul If FALSE, someone with a ensouled soulstone can sacrifice a spirit to change the sprite of this toolbox.
+ Var Details has_soul
+
+
+
+
+
+ If FALSE, someone with a ensouled soulstone can sacrifice a spirit to change the sprite of this toolbox.
+
+
+
diff --git a/obj/item/summon.html b/obj/item/summon.html
new file mode 100644
index 0000000000000..ac0b3d38b55a3
--- /dev/null
+++ b/obj/item/summon.html
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+ /obj/item/summon - SPLURT Station 13
+
+
+
+
+
+
+Simple summon weapon code in this file
+tl;dr latch onto target, repeatedly proc attacks, animate using transforms,
+no real hitboxes/collisions, think of /datum/component/orbit-adjacent
+ Var Details
+ our summon weapon host
host_type
+
+
+
+
+
+ datum type
melee_only
+
+
+
+
+
+ are we a ranged weapon?
range
+
+
+
+
+
+ range summons will chase to
stack_duration
+
+
+
+
+
+ how long it takes for a "stack" to fall off by itself
summon_count
+
+
+
+
+
+ number of summons
+
+
+
diff --git a/obj/item/tank.html b/obj/item/tank.html
new file mode 100644
index 0000000000000..87d4c30d5c2e1
--- /dev/null
+++ b/obj/item/tank.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/item/tank - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details tank_holder_icon_state
+
+
+
+
+
+ Icon state when in a tank holder. Null makes it incompatible with tank holder.
+
+
+
diff --git a/obj/item/throwing_star/stamina/ninja.html b/obj/item/throwing_star/stamina/ninja.html
new file mode 100644
index 0000000000000..1c18892a66f19
--- /dev/null
+++ b/obj/item/throwing_star/stamina/ninja.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+ /obj/item/throwing_star/stamina/ninja - SPLURT Station 13
+
+
+
+
+
+
+a throwing star which specifically makes sure you know it came from a real ninja.
+The most important item in the entire codebase, as without it we would all cease to exist.
+Inherits everything that makes it interesting the stamina throwing star, but the most
+important change made is that its name specifically has the prefix, 'ninja' in it.
+This provides the detective role with information to play off of by ensuring that his
+assumption that a space ninja is aboard the ship to be true when he find 20 of these in
+the captain's back. Along with this, its throwforce is 10 instead of the 5 of the stamina
+throwing star, meaning it'll do a little more damage than the stamina throwing star does as well.
+Changes to this item need to be approved by all maintainers, so if you do change it, make sure
+you go through the proper channels, lest you get permabanned. Do I make myself clear?
+
+
+
diff --git a/obj/item/toy/cards/cardhand.html b/obj/item/toy/cards/cardhand.html
new file mode 100644
index 0000000000000..b4d5ef6346baa
--- /dev/null
+++ b/obj/item/toy/cards/cardhand.html
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+ /obj/item/toy/cards/cardhand - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ check_menu check_menu: Checks if we are allowed to interact with a radial menu
+ update_sprite This proc updates the sprite for when you create a hand of cards
Proc Details
+ check_menu: Checks if we are allowed to interact with a radial menu
+Arguments:
+
+user The mob interacting with a menu
+ update_sprite()
+
+
+
+
+
+ This proc updates the sprite for when you create a hand of cards
+
+
+
diff --git a/obj/item/toy/crayon.html b/obj/item/toy/crayon.html
new file mode 100644
index 0000000000000..22d4a531688cd
--- /dev/null
+++ b/obj/item/toy/crayon.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /obj/item/toy/crayon - SPLURT Station 13
+
+
+
+
+
+
+Proc Details can_claim_for_gang
+
+ Gang mode stuff
+
+
+
diff --git a/obj/item/toy/plush.html b/obj/item/toy/plush.html
new file mode 100644
index 0000000000000..c35dfd6ddca8d
--- /dev/null
+++ b/obj/item/toy/plush.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/item/toy/plush - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details __ADMIN_SET_TO_ID
+
+
+
+
+
+ wrapper, do not use, read only
+
+
+
diff --git a/obj/item/transfer_valve.html b/obj/item/transfer_valve.html
new file mode 100644
index 0000000000000..4340fb421999a
--- /dev/null
+++ b/obj/item/transfer_valve.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /obj/item/transfer_valve - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ ready Returns if this is ready to be detonated. Checks if both tanks are in place.
Proc Details ready()
+
+
+
+
+
+ Returns if this is ready to be detonated. Checks if both tanks are in place.
+
+
+
diff --git a/obj/item/uplink.html b/obj/item/uplink.html
new file mode 100644
index 0000000000000..6de4443647672
--- /dev/null
+++ b/obj/item/uplink.html
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+ /obj/item/uplink - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ uplink_flag The uplink flag for this type.
+See [code/__DEFINES/uplink.dm
]
+ Var Details uplink_flag
+
+
+
+
+
+ The uplink flag for this type.
+See [code/__DEFINES/uplink.dm
]
+
+
+
diff --git a/obj/item/vibro_weapon.html b/obj/item/vibro_weapon.html
new file mode 100644
index 0000000000000..e27736357d890
--- /dev/null
+++ b/obj/item/vibro_weapon.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+ /obj/item/vibro_weapon - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ on_unwield triggered on unwield of two handed item
+ on_wield triggered on wield of two handed item
Proc Details on_unwield
+
+ triggered on unwield of two handed item
on_wield
+
+ triggered on wield of two handed item
+
+
+
diff --git a/obj/machinery.html b/obj/machinery.html
new file mode 100644
index 0000000000000..cf3d9a1fe0a30
--- /dev/null
+++ b/obj/machinery.html
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+ /obj/machinery - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ atmos_processing Boolean on whether this machines interact with atmos Procs
+ AI_notify_hack Alerts the AI that a hack is in progress.
+ set_machine_stat Called when we want to change the value of the stat variable. Holds bitflags.
+ Var Details atmos_processing
+
+
+
+
+
+ Boolean on whether this machines interact with atmos
Proc Details AI_notify_hack()
+
+
+
+
+
+ Alerts the AI that a hack is in progress.
+Sends all AIs a message that a hack is occurring. Specifically used for space ninja tampering as this proc was originally in the ninja files.
+However, the proc may also be used elsewhere.
set_machine_stat(new_value)
+
+
+
+
+
+ Called when we want to change the value of the stat variable. Holds bitflags.
+
+
+
diff --git a/obj/machinery/abductor/console.html b/obj/machinery/abductor/console.html
new file mode 100644
index 0000000000000..8cb1376f52951
--- /dev/null
+++ b/obj/machinery/abductor/console.html
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+ /obj/machinery/abductor/console - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ compact_mode Dictates if the compact mode of the interface is on or off
+ possible_gear Possible gear to be dispensed
+ selected_cat Currently selected gear category Procs
+ get_abductor_gear get_abductor_gear: Returns a list of a filtered abductor gear sorted by categories
+ Var Details compact_mode
+
+
+
+
+
+ Dictates if the compact mode of the interface is on or off
possible_gear
+
+
+
+
+
+ Possible gear to be dispensed
selected_cat
+
+
+
+
+
+ Currently selected gear category
Proc Details get_abductor_gear()
+
+
+
+
+
+ get_abductor_gear: Returns a list of a filtered abductor gear sorted by categories
+
+
+
diff --git a/obj/machinery/abductor/experiment.html b/obj/machinery/abductor/experiment.html
new file mode 100644
index 0000000000000..920941af250d6
--- /dev/null
+++ b/obj/machinery/abductor/experiment.html
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+ /obj/machinery/abductor/experiment - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ experiment experiment: Performs selected experiment on occupant mob, resulting in a point reward on success
+ send_back send_back: Sends a mob back to a selected teleport location if safe
Proc Details experiment(/mob /occupant, type, /mob /user)
+
+
+
+
+
+ experiment: Performs selected experiment on occupant mob, resulting in a point reward on success
+Arguments:
+
+occupant The mob inside the machine
+type The type of experiment to be performed
+user The mob starting the experiment
+
+ send_back: Sends a mob back to a selected teleport location if safe
+Arguments:
+
+H The human mob to be sent back
+
+
+
+
diff --git a/obj/machinery/atmospherics.html b/obj/machinery/atmospherics.html
new file mode 100644
index 0000000000000..a4bdb8c17ab2e
--- /dev/null
+++ b/obj/machinery/atmospherics.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /obj/machinery/atmospherics - SPLURT Station 13
+
+
+
+
+
+
+Proc Details shuttleRotate(rotation, params)
+
+
+
+
+
+ Machine rotate procs
+
+
+
diff --git a/obj/machinery/atmospherics/components/unary/cryo_cell.html b/obj/machinery/atmospherics/components/unary/cryo_cell.html
new file mode 100644
index 0000000000000..6164b13041540
--- /dev/null
+++ b/obj/machinery/atmospherics/components/unary/cryo_cell.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/machinery/atmospherics/components/unary/cryo_cell - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ treating_wounds Cryo will continue to treat people with 0 damage but existing wounds, but will sound off when damage healing is done in case doctors want to directly treat the wounds instead
+ Var Details treating_wounds
+
+
+
+
+
+ Cryo will continue to treat people with 0 damage but existing wounds, but will sound off when damage healing is done in case doctors want to directly treat the wounds instead
+
+
+
diff --git a/obj/machinery/atmospherics/components/unary/tank.html b/obj/machinery/atmospherics/components/unary/tank.html
new file mode 100644
index 0000000000000..31fb18a64107e
--- /dev/null
+++ b/obj/machinery/atmospherics/components/unary/tank.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/machinery/atmospherics/components/unary/tank - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ gas_type The typepath of the gas this tank should be filled with.
+ Var Details gas_type
+
+
+
+
+
+ The typepath of the gas this tank should be filled with.
+
+
+
diff --git a/obj/machinery/atmospherics/pipe/simple/multiz.html b/obj/machinery/atmospherics/pipe/simple/multiz.html
new file mode 100644
index 0000000000000..c21063407d356
--- /dev/null
+++ b/obj/machinery/atmospherics/pipe/simple/multiz.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /obj/machinery/atmospherics/pipe/simple/multiz - SPLURT Station 13
+
+
+
+
+
+
+This is an atmospherics pipe which can relay air up/down a deck.
Procs
+ pipeline_expansion Attempts to locate a multiz pipe that's above us, if it finds one it merges us into its pipenet
Proc Details pipeline_expansion()
+
+
+
+
+
+ Attempts to locate a multiz pipe that's above us, if it finds one it merges us into its pipenet
+
+
+
diff --git a/obj/machinery/autolathe.html b/obj/machinery/autolathe.html
new file mode 100644
index 0000000000000..7cd0d28be3cd1
--- /dev/null
+++ b/obj/machinery/autolathe.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/machinery/autolathe - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ creation_efficiency the multiplier for how much materials the created object takes from this machines stored materials
+ Var Details creation_efficiency
+
+
+
+
+
+ the multiplier for how much materials the created object takes from this machines stored materials
+
+
+
diff --git a/obj/machinery/biogenerator.html b/obj/machinery/biogenerator.html
new file mode 100644
index 0000000000000..bddcbe7516add
--- /dev/null
+++ b/obj/machinery/biogenerator.html
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+ /obj/machinery/biogenerator - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ selected_cat Currently selected category in the UI Procs
+ activate activate: Activates biomass processing and converts all inserted grown products into biomass
+ Var Details selected_cat
+
+
+
+
+
+ Currently selected category in the UI
Proc Details activate
+
+ activate: Activates biomass processing and converts all inserted grown products into biomass
+Arguments:
+
+user The mob starting the biomass processing
+
+
+
+
diff --git a/obj/machinery/computer/arcade/battle.html b/obj/machinery/computer/arcade/battle.html
new file mode 100644
index 0000000000000..7f68dae8d62f6
--- /dev/null
+++ b/obj/machinery/computer/arcade/battle.html
@@ -0,0 +1,169 @@
+
+
+
+
+
+
+ /obj/machinery/computer/arcade/battle - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ blocked the player cannot make any move while this is set to TRUE. should only TRUE during enemy turns.
+ bomb_cooldown unique to the emag mode, acts as a time limit where the player dies when it reaches 0.
+ chosen_weapon weapon wielded by the enemy, the shotgun doesn't count.
+ enemy_hp Enemy health/attack points
+ enemy_passive the list of passive skill the enemy currently has. the actual passives are added in the enemy_setup() proc
+ finishing_move if all the enemy's weakpoints have been triggered becomes TRUE
+ gameover if the enemy or player died. restart the game when TRUE
+ last_three_move used to remember the last three move of the player before this turn.
+ max_passive the number of passives the enemy will start with
+ pissed_off linked to passives, when it's equal or above the max_passive finishing move will become TRUE
+ player_hp Player health
+ player_mp player magic points
+ temp Temporary message, for attack messages, etc
+ timer_id used to clear the enemy_action proc timer when the game is restarted
+ weapons weapon used by the enemy, pure fluff.for certain actions Procs
+ arcade_action happens after a player action and before the enemy turn. the enemy turn will be cancelled if there's a gameover.
+ enemy_action the enemy turn, the enemy's action entirely depend on their current passive and a teensy tiny bit of randomness
+ enemy_setup creates the enemy base stats for a new round along with the enemy passives
+ screen_setup sets up the main screen for the user
+ weakpoint_check used to check if the last three move of the player are the one we want in the right order and if the passive's weakpoint has been triggered yet
+ Var Details blocked
+
+
+
+
+
+ the player cannot make any move while this is set to TRUE. should only TRUE during enemy turns.
bomb_cooldown
+
+
+
+
+
+ unique to the emag mode, acts as a time limit where the player dies when it reaches 0.
chosen_weapon
+
+
+
+
+
+ weapon wielded by the enemy, the shotgun doesn't count.
enemy_hp
+
+
+
+
+
+ Enemy health/attack points
enemy_passive
+
+
+
+
+
+ the list of passive skill the enemy currently has. the actual passives are added in the enemy_setup() proc
finishing_move
+
+
+
+
+
+ if all the enemy's weakpoints have been triggered becomes TRUE
gameover
+
+
+
+
+
+ if the enemy or player died. restart the game when TRUE
last_three_move
+
+
+
+
+
+ used to remember the last three move of the player before this turn.
max_passive
+
+
+
+
+
+ the number of passives the enemy will start with
pissed_off
+
+
+
+
+
+ linked to passives, when it's equal or above the max_passive finishing move will become TRUE
player_hp
+
+
+
+
+
+ Player health
player_mp
+
+
+
+
+
+ player magic points
temp
+
+
+
+
+
+ Temporary message, for attack messages, etc
timer_id
+
+
+
+
+
+ used to clear the enemy_action proc timer when the game is restarted
weapons
+
+
+
+
+
+ weapon used by the enemy, pure fluff.for certain actions
Proc Details arcade_action(/mob /user, player_stance, attackamt)
+
+
+
+
+
+ happens after a player action and before the enemy turn. the enemy turn will be cancelled if there's a gameover.
enemy_action(player_stance, /mob /user)
+
+
+
+
+
+ the enemy turn, the enemy's action entirely depend on their current passive and a teensy tiny bit of randomness
enemy_setup(player_skill)
+
+
+
+
+
+ creates the enemy base stats for a new round along with the enemy passives
screen_setup
+
+ sets up the main screen for the user
weakpoint_check(passive, first_move, second_move, third_move)
+
+
+
+
+
+ used to check if the last three move of the player are the one we want in the right order and if the passive's weakpoint has been triggered yet
+
+
+
diff --git a/obj/machinery/computer/camera_advanced.html b/obj/machinery/computer/camera_advanced.html
new file mode 100644
index 0000000000000..6f85128f29e6d
--- /dev/null
+++ b/obj/machinery/computer/camera_advanced.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/machinery/computer/camera_advanced - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details should_supress_view_changes
+
+
+
+
+
+ Should we suppress the user's view?
+
+
+
diff --git a/obj/machinery/computer/camera_advanced/shuttle_docker.html b/obj/machinery/computer/camera_advanced/shuttle_docker.html
new file mode 100644
index 0000000000000..8f69fb49143d0
--- /dev/null
+++ b/obj/machinery/computer/camera_advanced/shuttle_docker.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /obj/machinery/computer/camera_advanced/shuttle_docker - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ canDesignateTarget Make one use port that deleted after fly off, to don't lose info that need on to properly fly off.
Proc Details canDesignateTarget()
+
+
+
+
+
+ Make one use port that deleted after fly off, to don't lose info that need on to properly fly off.
+
+
+
diff --git a/obj/machinery/computer/cargo.html b/obj/machinery/computer/cargo.html
new file mode 100644
index 0000000000000..26fbcfa75f671
--- /dev/null
+++ b/obj/machinery/computer/cargo.html
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+ /obj/machinery/computer/cargo - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ can_approve_requests Can you approve requests placed for cargo? Works differently between the app and the computer.
+ can_send Can the supply console send the shuttle back and forth? Used in the UI backend.
+ is_express var that makes express console use rockets
+ message_cooldown var that tracks message cooldown
+ radio radio used by the console to send messages on supply channel
+ requestonly Can this console only send requests?
+ Var Details can_approve_requests
+
+
+
+
+
+ Can you approve requests placed for cargo? Works differently between the app and the computer.
can_send
+
+
+
+
+
+ Can the supply console send the shuttle back and forth? Used in the UI backend.
is_express
+
+
+
+
+
+ var that makes express console use rockets
message_cooldown
+
+
+
+
+
+ var that tracks message cooldown
radio
+
+
+
+
+
+ radio used by the console to send messages on supply channel
requestonly
+
+
+
+
+
+ Can this console only send requests?
+
+
+
diff --git a/obj/machinery/computer/communications.html b/obj/machinery/computer/communications.html
new file mode 100644
index 0000000000000..4e469349b921c
--- /dev/null
+++ b/obj/machinery/computer/communications.html
@@ -0,0 +1,155 @@
+
+
+
+
+
+
+ /obj/machinery/computer/communications - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details alert_level_tick
+
+
+
+
+
+ How many times the alert level has been changed
+Used to clear the modal to change alert level
authorize_access
+
+
+
+
+
+ The access that the card had on login
authorize_name
+
+
+
+
+
+ The name of the user who logged in
cyborg_state
+
+
+
+
+
+ The current state of the UI for AIs
important_action_cooldown
+
+
+
+
+
+ Cooldown for important actions, such as messaging CentCom or other sectors
last_status_display
+
+
+
+
+
+ The last lines used for changing the status display
messages
+ – /list/datum/comm_message
+
+
+
+
+ The messages this console has been sent
report_print_cooldown
+
+
+
+
+
+ Cooldown between printing announcement papers
state
+
+
+
+
+
+ The current state of the UI
Proc Details authenticated
+
+ Are we a silicon, OR logged in?
authenticated_as_non_silicon_captain
+
+ Are we NOT a silicon, AND we're logged in as the captain?
authenticated_as_silicon_or_captain
+
+ Are we a silicon, OR we're logged in as the captain?
can_buy_shuttles
+
+ Returns TRUE if the user can buy shuttles.
+If they cannot, returns FALSE or a string detailing why.
emergency_meeting
+
+ Call an emergency meeting
+Comm Console wrapper for the Communications subsystem wrapper for the call_emergency_meeting world proc.
+Checks to make sure the proc can be called, and handles relevant feedback, logging and timing.
+See the SScommunications proc definition for more detail, in short, teleports the entire crew to
+the bridge for a meetup. Should only really happen during april fools.
+Arguments:
+
+user - Mob who called the meeting
+ has_communication()
+
+
+
+
+
+ Returns whether or not the communications console can communicate with the station
override_cooldown()
+
+
+
+
+
+ Override the cooldown for special actions
+Used in places such as CentCom messaging back so that the crew can answer right away
+
+
+
diff --git a/obj/machinery/computer/cryopod.html b/obj/machinery/computer/cryopod.html
new file mode 100644
index 0000000000000..0f94ea80b115c
--- /dev/null
+++ b/obj/machinery/computer/cryopod.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/machinery/computer/cryopod - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ allow_items Does this console store items? if NOT, will dump all items when the user cryo's instead
+ Var Details allow_items
+
+
+
+
+
+ Does this console store items? if NOT, will dump all items when the user cryo's instead
+
+
+
diff --git a/obj/machinery/computer/piratepad_control.html b/obj/machinery/computer/piratepad_control.html
new file mode 100644
index 0000000000000..62d3a9b17e1bd
--- /dev/null
+++ b/obj/machinery/computer/piratepad_control.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/machinery/computer/piratepad_control - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ pad_ref Reference to the specific pad that the control computer is linked up to.
+ Var Details pad_ref
+
+
+
+
+
+ Reference to the specific pad that the control computer is linked up to.
+
+
+
diff --git a/obj/machinery/computer/piratepad_control/civilian.html b/obj/machinery/computer/piratepad_control/civilian.html
new file mode 100644
index 0000000000000..4cad852361e1c
--- /dev/null
+++ b/obj/machinery/computer/piratepad_control/civilian.html
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+ /obj/machinery/computer/piratepad_control/civilian - SPLURT Station 13
+
+
+
+
+
+
+Computer for assigning new civilian bounties, and sending bounties for collection.
Procs
+ add_bounties Here is where cargo bounties are added to the player's bank accounts, then adjusted and scaled into a civilian bounty.
+ id_eject Removes A stored ID card.
+ id_insert Self explanitory, holds the ID card inthe console for bounty payout and manipulation.
+ send This fully rewrites base behavior in order to only check for bounty objects, and nothing else.
Proc Details add_bounties()
+
+
+
+
+
+ Here is where cargo bounties are added to the player's bank accounts, then adjusted and scaled into a civilian bounty.
id_eject
+
+ Removes A stored ID card.
id_insert
+
+ Self explanitory, holds the ID card inthe console for bounty payout and manipulation.
send()
+
+
+
+
+
+ This fully rewrites base behavior in order to only check for bounty objects, and nothing else.
+
+
+
diff --git a/obj/machinery/computer/pod.html b/obj/machinery/computer/pod.html
new file mode 100644
index 0000000000000..3bb1d85e25138
--- /dev/null
+++ b/obj/machinery/computer/pod.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+ /obj/machinery/computer/pod - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ connected Connected mass driver
+ id ID of the launch control
+ massdriver_countdown Countdown timer for the mass driver's delayed launch functionality.
+ range Range in which we search for a mass drivers and poddoors nearby
+ time Time before auto launch
+ timing If the launch timer counts down Procs
+ alarm Initiates launching sequence by checking if all components are functional, opening poddoors, firing mass drivers and then closing poddoors
+ Var Details connected
+
+
+
+
+
+ Connected mass driver
id
+
+
+
+
+
+ ID of the launch control
massdriver_countdown
+
+
+
+
+
+ Countdown timer for the mass driver's delayed launch functionality.
range
+
+
+
+
+
+ Range in which we search for a mass drivers and poddoors nearby
time
+
+
+
+
+
+ Time before auto launch
timing
+
+
+
+
+
+ If the launch timer counts down
Proc Details alarm()
+
+
+
+
+
+ Initiates launching sequence by checking if all components are functional, opening poddoors, firing mass drivers and then closing poddoors
+
+
+
diff --git a/obj/machinery/computer/rdconsole.html b/obj/machinery/computer/rdconsole.html
new file mode 100644
index 0000000000000..b267601fb1f36
--- /dev/null
+++ b/obj/machinery/computer/rdconsole.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/machinery/computer/rdconsole - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details last_long_action
+
+
+
+
+
+ Long action cooldown to prevent spam
+
+
+
diff --git a/obj/machinery/computer/scan_consolenew.html b/obj/machinery/computer/scan_consolenew.html
new file mode 100644
index 0000000000000..f49e110fc4c6e
--- /dev/null
+++ b/obj/machinery/computer/scan_consolenew.html
@@ -0,0 +1,632 @@
+
+
+
+
+
+
+ /obj/machinery/computer/scan_consolenew - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details can_use_scanner
+
+
+
+
+
+ Used for setting tgui data - Whether the connected DNA Scanner is usable
connected_scanner
+
+
+
+
+
+ Currently connected DNA Scanner
crispr_charges
+
+
+
+
+
+ Counter for CRISPR charges
delayed_action
+
+
+
+
+
+ Current delayed action, used for delayed enzyme transfer on scanner door close
diskette
+
+
+
+
+
+ Currently stored genetic data diskette
genetic_makeup_buffer
+
+
+
+
+
+ Maximum number of enzymes we can store
injector_selection
+
+
+
+
+
+ Assoc list of all advanced injectors. Keys are injector names. Values are lists of mutations.
injectorready
+
+
+
+
+
+ World time when injectors are ready to be printed
is_crispr_ready
+
+
+
+
+
+ Used for setting tgui data - Is CRISPR ready?
is_injector_ready
+
+
+
+
+
+ Used for setting tgui data - Whether injectors are ready to be printed
is_joker_ready
+
+
+
+
+
+ Used for setting tgui data - Whether JOKER algorithm is ready
is_pulsing_rads
+
+
+
+
+
+ Used for setting tgui data - Wheher an enzyme pulse operation is ongoing
is_scramble_ready
+
+
+
+
+
+ Used for setting tgui data - Whether Scramble DNA is ready
is_viable_occupant
+
+
+
+
+
+ Used for setting tgui data - Whether the current DNA Scanner occupant is viable for genetic modification
jokerready
+
+
+
+
+
+ World time when JOKER algorithm can be used in DNA Consoles
max_chromosomes
+
+
+
+
+
+ Maximum number of chromosomes that DNA Consoles are able to store.
max_injector_instability
+
+
+
+
+
+ Maximum total instability of all combined mutations allowed on an advanced injector
max_injector_mutations
+
+
+
+
+
+ Maximum number of mutation that an advanced injector can store
max_injector_selections
+
+
+
+
+
+ Maximum number of advanced injectors that DNA Consoles store
max_storage
+
+
+
+
+
+ Maximum number of mutations that DNA Consoles are able to store
rad_pulse_index
+
+
+
+
+
+ Index of the enzyme being modified during delayed enzyme pulse operations
rad_pulse_timer
+
+
+
+
+
+ World time when the enzyme pulse should complete
radduration
+
+
+
+
+
+ Duration for enzyme radiation pulses
radstrength
+
+
+
+
+
+ Strength for enzyme radiation pulses
scanner_occupant
+
+
+
+
+
+ Current DNA Scanner occupant
scrambleready
+
+
+
+
+
+ World time when Scramble can be used in DNA Consoles
stored_chromosomes
+
+
+
+
+
+ List of all chromosomes stored in the DNA Console
stored_mutations
+
+
+
+
+
+ List of all mutations stored on the DNA Console
stored_research
+
+
+
+
+
+ Link to the techweb's stored research. Used to retrieve stored mutations
tgui_advinjector_mutations
+
+
+
+
+
+ Used for setting tgui data - List of occupant mutations
tgui_console_chromosomes
+
+
+
+
+
+ Used for setting tgui data - List of DNA Console chromosomes
tgui_console_mutations
+
+
+
+
+
+ Used for setting tgui data - List of DNA Console stored mutations
tgui_diskette_mutations
+
+
+
+
+
+ Used for setting tgui data - List of diskette stored mutations
tgui_genetic_makeup
+
+
+
+
+
+ Used for setting tgui data - List of occupant mutations
tgui_occupant_mutations
+
+
+
+
+
+ Used for setting tgui data - List of occupant mutations
tgui_view_state
+
+
+
+
+
+ State of tgui view, i.e. which tab is currently active, or which genome we're currently looking at.
time_to_injector
+
+
+
+
+
+ Used for setting tgui data - Time until injectors are ready
time_to_joker
+
+
+
+
+
+ Used for setting tgui data - Time until joker is ready
time_to_pulse
+
+
+
+
+
+ Used for setting tgui data - Time until the enzyme pulse is complete
time_to_scramble
+
+
+
+
+
+ Used for setting tgui data - Time until scramble is ready
Proc Details apply_genetic_makeup(type, buffer_slot)
+
+
+
+
+
+ build_chrom_list(mutation)
+
+
+
+
+
+ build_genetic_makeup_list()
+
+
+
+
+
+ Builds the genetic makeup list which will be sent to tgui interface.
build_mutation_list(can_modify_occ)
+
+
+
+
+
+ can_modify_occupant()
+
+
+
+
+
+ check_discovery(alias)
+
+
+
+
+
+ connect_to_scanner()
+
+
+
+
+
+ eject_disk
+
+ get_mut_by_ref(ref, target_flags)
+
+
+
+
+
+ on_scanner_close()
+
+
+
+
+
+ on_scanner_open()
+
+
+
+
+
+ rad_pulse()
+
+
+
+
+
+ randomize_radiation_accuracy(position, radduration, number_of_blocks)
+
+
+
+
+
+ scanner_operational()
+
+
+
+
+
+ Checks if there is a connected DNA Scanner that is operational
scramble(input, rs)
+
+
+
+
+
+ set_default_state()
+
+
+
+
+
+ Sets the default state for the tgui interface.
+
+
+
diff --git a/obj/machinery/computer/security.html b/obj/machinery/computer/security.html
new file mode 100644
index 0000000000000..d593f89c89fd2
--- /dev/null
+++ b/obj/machinery/computer/security.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /obj/machinery/computer/security - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details cam_plane_masters
+
+
+
+
+
+ All the plane masters that need to be applied.
last_camera_turf
+
+
+
+
+
+ The turf where the camera was last updated.
+
+
+
diff --git a/obj/machinery/computer/shuttle.html b/obj/machinery/computer/shuttle.html
new file mode 100644
index 0000000000000..6f5b18d739ed2
--- /dev/null
+++ b/obj/machinery/computer/shuttle.html
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+ /obj/machinery/computer/shuttle - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ admin_controlled Variable dictating if the attached shuttle requires authorization from the admin staff to move
+ destination ID of the currently selected destination of the attached shuttle
+ no_destination_swap Variable dictating if the attached shuttle is forbidden to change destinations mid-flight
+ possible_destinations Possible destinations of the attached shuttle
+ request_cooldown Authorization request cooldown to prevent request spam to admin staff
+ shuttleId ID of the attached shuttle
+ Var Details admin_controlled
+
+
+
+
+
+ Variable dictating if the attached shuttle requires authorization from the admin staff to move
destination
+
+
+
+
+
+ ID of the currently selected destination of the attached shuttle
no_destination_swap
+
+
+
+
+
+ Variable dictating if the attached shuttle is forbidden to change destinations mid-flight
possible_destinations
+
+
+
+
+
+ Possible destinations of the attached shuttle
request_cooldown
+
+
+
+
+
+ Authorization request cooldown to prevent request spam to admin staff
shuttleId
+
+
+
+
+
+ ID of the attached shuttle
+
+
+
diff --git a/obj/machinery/computer/shuttle/pod.html b/obj/machinery/computer/shuttle/pod.html
new file mode 100644
index 0000000000000..39a1de67448ca
--- /dev/null
+++ b/obj/machinery/computer/shuttle/pod.html
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+ /obj/machinery/computer/shuttle/pod - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ check_lock Signal handler for checking if we should lock or unlock escape pods accordingly to a newly set security level
Proc Details check_lock(/datum /source, new_level)
+
+
+
+
+
+ Signal handler for checking if we should lock or unlock escape pods accordingly to a newly set security level
+Arguments:
+
+source The datum source of the signal
+new_level The new security level that is in effect
+
+
+
+
diff --git a/obj/machinery/computer/slavery.html b/obj/machinery/computer/slavery.html
new file mode 100644
index 0000000000000..6fb08e71f0f83
--- /dev/null
+++ b/obj/machinery/computer/slavery.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /obj/machinery/computer/slavery - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details compact_mode
+
+
+
+
+
+ Dictates if the compact mode of the interface is on or off
possible_gear
+
+
+
+
+
+ Possible gear to be dispensed
+
+
+
diff --git a/obj/machinery/computer/vaultcontroller.html b/obj/machinery/computer/vaultcontroller.html
new file mode 100644
index 0000000000000..87af772fb8f5f
--- /dev/null
+++ b/obj/machinery/computer/vaultcontroller.html
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+ /obj/machinery/computer/vaultcontroller - SPLURT Station 13
+
+
+
+
+
+
+Vault controller for use on the derelict/KS13.
Proc Details activate_lock()
+
+
+
+
+
+ Attempts to lock/unlock vault doors, if machine is charged.
attempt_siphon()
+
+
+
+
+
+ Tries to charge from powernet excess, no upper limit except max charge.
+ Handles the doors closing
+ Handles the doors opening
find_airlocks()
+
+
+
+
+
+ Initializes airlock links.
lock_vault()
+
+
+
+
+
+ Attempts to lock the vault doors
unlock_vault()
+
+
+
+
+
+ Attempts to unlock the vault doors
update_cable()
+
+
+
+
+
+ Looks for a cable connection beneath the machine.
+
+
+
diff --git a/obj/machinery/cryopod.html b/obj/machinery/cryopod.html
new file mode 100644
index 0000000000000..a48393cda29b2
--- /dev/null
+++ b/obj/machinery/cryopod.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ /obj/machinery/cryopod - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details control_computer_weakref
+
+
+
+
+
+ Weakref to our controller
despawn_world_time
+
+
+
+
+
+ Cooldown for when it's now safe to try an despawn the player.
time_till_despawn
+
+
+
+
+
+ Time until despawn when a mob enters a cryopod. You can cryo other people in pods.
+
+
+
diff --git a/obj/machinery/door.html b/obj/machinery/door.html
new file mode 100644
index 0000000000000..1fd1df3d46d29
--- /dev/null
+++ b/obj/machinery/door.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/machinery/door - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ can_open_with_hands Whether or not the door can be opened by hand (used for blast doors and shutters)
+ Var Details can_open_with_hands
+
+
+
+
+
+ Whether or not the door can be opened by hand (used for blast doors and shutters)
+
+
+
diff --git a/obj/machinery/door/airlock.html b/obj/machinery/door/airlock.html
new file mode 100644
index 0000000000000..4902b219e84c1
--- /dev/null
+++ b/obj/machinery/door/airlock.html
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+ /obj/machinery/door/airlock - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details unelectrify_timerid
+
+
+
+
+
+ sigh
Proc Details beforeShuttleMove
+
+ Turf move procs
+Area move procs
+Machinery move procs
should_try_removing_electronics()
+
+
+
+
+
+ Returns if a crowbar would remove the airlock electronics
+
+
+
diff --git a/obj/machinery/door/airlock/vault/derelict.html b/obj/machinery/door/airlock/vault/derelict.html
new file mode 100644
index 0000000000000..ca37b7f8af5a8
--- /dev/null
+++ b/obj/machinery/door/airlock/vault/derelict.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /obj/machinery/door/airlock/vault/derelict - SPLURT Station 13
+
+
+
+
+
+
+Airlock that can't be deconstructed, broken or hacked.
Procs
+ attackby Overrides screwdriver attack to prevent all deconstruction and hacking.
Proc Details attackby
+
+ Overrides screwdriver attack to prevent all deconstruction and hacking.
+
+
+
diff --git a/obj/machinery/door/keycard.html b/obj/machinery/door/keycard.html
new file mode 100644
index 0000000000000..b239a3c8edb74
--- /dev/null
+++ b/obj/machinery/door/keycard.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /obj/machinery/door/keycard - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ open_message Message that occurs when the door is opened
+ puzzle_id Make sure that the key has the same puzzle_id as the keycard door!
+ Var Details open_message
+
+
+
+
+
+ Message that occurs when the door is opened
puzzle_id
+
+
+
+
+
+ Make sure that the key has the same puzzle_id as the keycard door!
+
+
+
diff --git a/obj/machinery/doppler_array/research/science.html b/obj/machinery/doppler_array/research/science.html
new file mode 100644
index 0000000000000..19397bd3f937b
--- /dev/null
+++ b/obj/machinery/doppler_array/research/science.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/machinery/doppler_array/research/science - SPLURT Station 13
+
+
+
+
+
+
+Proc Details Initialize(mapload)
+
+
+
+
+
+ The Point Calculator
+The Point Capper
+
+
+
diff --git a/obj/machinery/duct.html b/obj/machinery/duct.html
new file mode 100644
index 0000000000000..e584673736b5e
--- /dev/null
+++ b/obj/machinery/duct.html
@@ -0,0 +1,232 @@
+
+
+
+
+
+
+ /obj/machinery/duct - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ active wheter to even bother with plumbing code or not
+ capacity amount we can transfer per process. note that the ductnet can carry as much as the lowest capacity duct
+ color_to_color_support TRUE to let colors connect when forced with a wrench, false to just not do that at all
+ connects bitfield with the directions we're connected in
+ drop_on_wrench wheter we just unanchored or drop whatever is in the variable. either is safe
+ duct our ductnet, wich tracks what we're connected to
+ duct_color the color of our duct
+ duct_layer 1,2,4,8,16
+ dumb set to TRUE to disable smart duct behaviour
+ ignore_colors TRUE to ignore colors, so yeah we also connect with other colors without issue
+ lock_connects wheter we allow our connects to be changed after initialization or not
+ lock_layers whether we allow our layers to be altered
+ neighbours track ducts we're connected to. Mainly for ducts we connect to that we normally wouldn't, like different layers and colors, for when we regenerate the ducts Procs
+ add_connects add a connect direction
+ add_neighbour add a duct as neighbour. this means we're connected and will connect again if we ever regenerate
+ attempt_connect start looking around us for stuff to connect to
+ can_anchor collection of all the sanity checks to prevent us from stacking ducts that shouldn't be stacked
+ connect_duct connect to a duct
+ connect_network see if whatever we found can be connected to
+ connect_plumber connect to a plumbing object
+ create_duct create a new duct datum
+ disconnect_duct we disconnect ourself from our neighbours. we also destroy our ductnet and tell our neighbours to make a new one
+ generate_connects Special proc to draw a new connect frame based on neighbours. not the norm so we can support multiple duct kinds
+ get_adjacent_ducts get a list of the ducts we can connect to if we are dumb
+ handle_layer update the layer we are on
+ lose_neighbours remove all our neighbours, and remove us from our neighbours aswell
+ reconnect ''''''''''''''''optimized''''''''''''''''' proc for quickly reconnecting after a duct net was destroyed
+ remove_connects remove a connect direction
+ reset_connects remove our connects
+ Var Details active
+
+
+
+
+
+ wheter to even bother with plumbing code or not
capacity
+
+
+
+
+
+ amount we can transfer per process. note that the ductnet can carry as much as the lowest capacity duct
color_to_color_support
+
+
+
+
+
+ TRUE to let colors connect when forced with a wrench, false to just not do that at all
connects
+
+
+
+
+
+ bitfield with the directions we're connected in
drop_on_wrench
+
+
+
+
+
+ wheter we just unanchored or drop whatever is in the variable. either is safe
+ our ductnet, wich tracks what we're connected to
duct_color
+
+
+
+
+
+ the color of our duct
duct_layer
+
+
+
+
+
+ 1,2,4,8,16
dumb
+
+
+
+
+
+ set to TRUE to disable smart duct behaviour
ignore_colors
+
+
+
+
+
+ TRUE to ignore colors, so yeah we also connect with other colors without issue
lock_connects
+
+
+
+
+
+ wheter we allow our connects to be changed after initialization or not
lock_layers
+
+
+
+
+
+ whether we allow our layers to be altered
neighbours
+
+
+
+
+
+ track ducts we're connected to. Mainly for ducts we connect to that we normally wouldn't, like different layers and colors, for when we regenerate the ducts
Proc Details add_connects(new_connects)
+
+
+
+
+
+ add a connect direction
add_neighbour
+
+ add a duct as neighbour. this means we're connected and will connect again if we ever regenerate
attempt_connect()
+
+
+
+
+
+ start looking around us for stuff to connect to
can_anchor
+
+ collection of all the sanity checks to prevent us from stacking ducts that shouldn't be stacked
connect_duct
+
+ connect to a duct
connect_network
+
+ see if whatever we found can be connected to
connect_plumber
+
+ connect to a plumbing object
create_duct()
+
+
+
+
+
+ create a new duct datum
disconnect_duct(skipanchor)
+
+
+
+
+
+ we disconnect ourself from our neighbours. we also destroy our ductnet and tell our neighbours to make a new one
generate_connects()
+
+
+
+
+
+ Special proc to draw a new connect frame based on neighbours. not the norm so we can support multiple duct kinds
get_adjacent_ducts()
+
+
+
+
+
+ get a list of the ducts we can connect to if we are dumb
handle_layer()
+
+
+
+
+
+ update the layer we are on
lose_neighbours()
+
+
+
+
+
+ remove all our neighbours, and remove us from our neighbours aswell
reconnect()
+
+
+
+
+
+ ''''''''''''''''optimized''''''''''''''''' proc for quickly reconnecting after a duct net was destroyed
remove_connects(dead_connects)
+
+
+
+
+
+ remove a connect direction
reset_connects()
+
+
+
+
+
+ remove our connects
+
+
+
diff --git a/obj/machinery/duct/multilayered.html b/obj/machinery/duct/multilayered.html
new file mode 100644
index 0000000000000..f510f32a4d4b8
--- /dev/null
+++ b/obj/machinery/duct/multilayered.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /obj/machinery/duct/multilayered - SPLURT Station 13
+
+
+
+
+
+
+has a total of 5 layers and doesnt give a shit about color. its also dumb so doesnt autoconnect.
Procs
+ connect_duct don't connect to other multilayered stuff because honestly it shouldn't be done and I dont wanna deal with it
Proc Details connect_duct
+
+ don't connect to other multilayered stuff because honestly it shouldn't be done and I dont wanna deal with it
+
+
+
diff --git a/obj/machinery/gateway.html b/obj/machinery/gateway.html
new file mode 100644
index 0000000000000..2cc5889406797
--- /dev/null
+++ b/obj/machinery/gateway.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+ /obj/machinery/gateway - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ destination This is our own destination, pointing at this gateway
+ destination_name Name of the generated destination
+ destination_type Type of instanced gateway destination, needs to be subtype of /datum/gateway_destination/gateway
+ light_overlay Overlay of the lights. They light up fully when it charges fully.
+ portal bumper object, the thing that starts actual teleport
+ portal_visuals Visual object for handling the viscontents
+ target This is current active destination
+ Var Details
+ This is our own destination, pointing at this gateway
destination_name
+
+
+
+
+
+ Name of the generated destination
destination_type
+
+
+
+
+
+ Type of instanced gateway destination, needs to be subtype of /datum/gateway_destination/gateway
light_overlay
+
+
+
+
+
+ Overlay of the lights. They light up fully when it charges fully.
portal
+ – /obj /effect/gateway_portal_bumper
+
+
+
+
+ bumper object, the thing that starts actual teleport
portal_visuals
+ – /obj /effect/gateway_portal_effect
+
+
+
+
+ Visual object for handling the viscontents
+ This is current active destination
+
+
+
diff --git a/obj/machinery/gear_painter.html b/obj/machinery/gear_painter.html
new file mode 100644
index 0000000000000..d3eae528569bb
--- /dev/null
+++ b/obj/machinery/gear_painter.html
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+ /obj/machinery/gear_painter - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ allow_mobs Allow holder'd mobs
+ minimum_matrix_lightness Minimum lightness for matrix mode, tested using 4 test colors of full red, green, blue, white.
+ minimum_matrix_tests Minimum matrix tests that must pass for something to be considered a valid color (see above)
+ minimum_normal_lightness Minimum lightness for normal mode
+ temp Temporary messages Procs
+ build_preview Produces the preview image of the item, used in the UI, the way the color is not stacking is a sin.
+ Var Details allow_mobs
+
+
+
+
+
+ Allow holder'd mobs
minimum_matrix_lightness
+
+
+
+
+
+ Minimum lightness for matrix mode, tested using 4 test colors of full red, green, blue, white.
minimum_matrix_tests
+
+
+
+
+
+ Minimum matrix tests that must pass for something to be considered a valid color (see above)
minimum_normal_lightness
+
+
+
+
+
+ Minimum lightness for normal mode
temp
+
+
+
+
+
+ Temporary messages
Proc Details build_preview()
+
+
+
+
+
+ Produces the preview image of the item, used in the UI, the way the color is not stacking is a sin.
+
+
+
diff --git a/obj/machinery/gravity_generator/part.html b/obj/machinery/gravity_generator/part.html
new file mode 100644
index 0000000000000..f6b7be1e125c8
--- /dev/null
+++ b/obj/machinery/gravity_generator/part.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /obj/machinery/gravity_generator/part - SPLURT Station 13
+
+
+
+
+
+
+Proc Details on_update_icon(/obj /machinery /gravity_generator/source, updates, updated)
+
+
+
+
+
+ Used to eat args
+
+
+
diff --git a/obj/machinery/holopad.html b/obj/machinery/holopad.html
new file mode 100644
index 0000000000000..671a9d5148d09
--- /dev/null
+++ b/obj/machinery/holopad.html
@@ -0,0 +1,148 @@
+
+
+
+
+
+
+ /obj/machinery/holopad - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ calling If we are currently calling another holopad
+ disk Record disk
+ force_answer_call Calls will be automatically answered after a couple rings, here for debugging
+ holo_calls Array of /datum/holocalls
+ holo_range Change to change how far the AI can move away from the holopad before deactivating
+ holorays Holoray-mob link
+ last_request To prevent request spam. ~Carn
+ loop_mode Currently looping a recording
+ masters List of living mobs that use the holopad
+ outgoing_call Currently outgoing holocall, do not modify the datums only check and call the public procs
+ record_mode Currently recording
+ record_start Recording start time
+ record_user User that inititiated the recording
+ replay_holo Replay hologram
+ replay_mode Currently replaying a recording
+ secure For pads in secure areas; do not allow forced connecting Procs
+ hangup_all_calls hangup_all_calls: Disconnects all current holocalls from the holopad
+ Var Details calling
+
+
+
+
+
+ If we are currently calling another holopad
disk
+
+
+
+
+
+ Record disk
force_answer_call
+
+
+
+
+
+ Calls will be automatically answered after a couple rings, here for debugging
holo_calls
+
+
+
+
+
+ Array of /datum/holocalls
holo_range
+
+
+
+
+
+ Change to change how far the AI can move away from the holopad before deactivating
holorays
+
+
+
+
+
+ Holoray-mob link
last_request
+
+
+
+
+
+ To prevent request spam. ~Carn
loop_mode
+
+
+
+
+
+ Currently looping a recording
masters
+
+
+
+
+
+ List of living mobs that use the holopad
outgoing_call
+
+
+
+
+
+ Currently outgoing holocall, do not modify the datums only check and call the public procs
record_mode
+
+
+
+
+
+ Currently recording
record_start
+
+
+
+
+
+ Recording start time
record_user
+
+
+
+
+
+ User that inititiated the recording
replay_holo
+ – /obj /effect/overlay/holo_pad_hologram
+
+
+
+
+ Replay hologram
replay_mode
+
+
+
+
+
+ Currently replaying a recording
secure
+
+
+
+
+
+ For pads in secure areas; do not allow forced connecting
Proc Details hangup_all_calls()
+
+
+
+
+
+ hangup_all_calls: Disconnects all current holocalls from the holopad
+
+
+
diff --git a/obj/machinery/hydroponics.html b/obj/machinery/hydroponics.html
new file mode 100644
index 0000000000000..79229367039af
--- /dev/null
+++ b/obj/machinery/hydroponics.html
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+ /obj/machinery/hydroponics - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ adjustWater Tray Setters - The following procs adjust the tray or plants variables, and make sure that the stat doesn't go out of bounds.
+ apply_chemicals This is NOW the gradual affects that each chemical applies on every process() proc. Nutrients now use a more robust reagent holder in order to apply less insane
+stat changes as opposed to 271 lines of individual statline effects. Shoutout to the original comments on chems, I just cleaned a few up.
+ mutation_roll Contains the reagents within the tray.
+ plantdies Plant Death Proc.
+Cleans up various stats for the plant upon death, including pests, harvestability, and plant health.
Proc Details adjustWater(adjustamt)
+
+
+
+
+
+ Tray Setters - The following procs adjust the tray or plants variables, and make sure that the stat doesn't go out of bounds.
apply_chemicals
+
+ This is NOW the gradual affects that each chemical applies on every process() proc. Nutrients now use a more robust reagent holder in order to apply less insane
+stat changes as opposed to 271 lines of individual statline effects. Shoutout to the original comments on chems, I just cleaned a few up.
mutation_roll
+
+ Contains the reagents within the tray.
plantdies()
+
+
+
+
+
+ Plant Death Proc.
+Cleans up various stats for the plant upon death, including pests, harvestability, and plant health.
+
+
+
diff --git a/obj/machinery/hypnochair.html b/obj/machinery/hypnochair.html
new file mode 100644
index 0000000000000..358884118d72d
--- /dev/null
+++ b/obj/machinery/hypnochair.html
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+ /obj/machinery/hypnochair - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ interrogating Keeps track of the victim to apply effects if it teleports away
+ message_cooldown Timer ID for interrogations
+ start_time Is the device currently interrogating someone?
+ timerid Trigger phrase to implant
+ trigger_phrase Time when the interrogation was started, to calculate effect in case of interruption Procs
+ Initialize Cooldown for breakout message
+ Var Details interrogating
+
+
+
+
+
+ Keeps track of the victim to apply effects if it teleports away
message_cooldown
+
+
+
+
+
+ Timer ID for interrogations
start_time
+
+
+
+
+
+ Is the device currently interrogating someone?
timerid
+
+
+
+
+
+ Trigger phrase to implant
trigger_phrase
+
+
+
+
+
+ Time when the interrogation was started, to calculate effect in case of interruption
Proc Details Initialize(mapload)
+
+
+
+
+
+ Cooldown for breakout message
+
+
+
diff --git a/obj/machinery/limbgrower.html b/obj/machinery/limbgrower.html
new file mode 100644
index 0000000000000..226d96504e5a4
--- /dev/null
+++ b/obj/machinery/limbgrower.html
@@ -0,0 +1,95 @@
+
+
+
+
+
+
+ /obj/machinery/limbgrower - SPLURT Station 13
+
+
+
+
+
+
+The limbgrower. Makes organd and limbs with synthflesh and chems.
+See [limbgrower_designs.dm] for everything we can make.
Vars
+ being_built The design we're printing currently.
+ busy If we're currently printing something.
+ categories All the categories of organs we can print.
+ production_coefficient How efficient our machine is. Better parts = less chemicals used and less power used. Range of 1 to 0.25.
+ production_speed How long it takes for us to print a limb. Affected by production_coefficient.
+ selected_category The category of limbs we're browing in our UI.
+ stored_research Our internal techweb for limbgrower designs. Procs
+ build_item All the reagents we're using to make our organ.
+The amount of power we're going to use, based on how much reagent we use.
+ emag_act Emagging a limbgrower allows you to build synthetic armblades.
+ Var Details being_built
+
+
+
+
+
+ The design we're printing currently.
busy
+
+
+
+
+
+ If we're currently printing something.
categories
+
+
+
+
+
+ All the categories of organs we can print.
production_coefficient
+
+
+
+
+
+ How efficient our machine is. Better parts = less chemicals used and less power used. Range of 1 to 0.25.
production_speed
+
+
+
+
+
+ How long it takes for us to print a limb. Affected by production_coefficient.
selected_category
+
+
+
+
+
+ The category of limbs we're browing in our UI.
stored_research
+
+
+
+
+
+ Our internal techweb for limbgrower designs.
Proc Details build_item(/list/modified_consumed_reagents_list)
+
+
+
+
+
+ All the reagents we're using to make our organ.
+The amount of power we're going to use, based on how much reagent we use.
emag_act
+
+ Emagging a limbgrower allows you to build synthetic armblades.
+
+
+
diff --git a/obj/machinery/mecha_part_fabricator.html b/obj/machinery/mecha_part_fabricator.html
new file mode 100644
index 0000000000000..b2d34fd29f67d
--- /dev/null
+++ b/obj/machinery/mecha_part_fabricator.html
@@ -0,0 +1,302 @@
+
+
+
+
+
+
+ /obj/machinery/mecha_part_fabricator - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ being_built The current design datum that the machine is building.
+ build_finish World time when the build will finish.
+ build_materials Reference to all materials used in the creation of the item being_built.
+ build_start World time when the build started.
+ component_coeff Coefficient for the efficiency of material usage in item building. Based on the installed parts.
+ link_on_init Whether the Exofab links to the ore silo on init. Special derelict or maintanance variants should set this to FALSE.
+ part_sets A list of categories that valid MECHFAB design datums will broadly categorise themselves under.
+ process_queue Whether or not the machine is building the entire queue automagically.
+ queue Current items in the build queue.
+ rmat Reference to a remote material inventory, such as an ore silo.
+ stored_part Part currently stored in the Exofab.
+ stored_research Copy of the currently synced techweb.
+ time_coeff Coefficient for the speed of item building. Based on the installed parts. Procs
+ add_part_set_to_queue Adds a list of datum designs to the build queue.
+ add_to_queue Adds a datum design to the build queue.
+ build_next_in_queue Attempts to build the next item in the build queue.
+ build_part Starts the build process for a given design datum.
+ check_resources Checks if the Exofab has enough resources to print a given item.
+ dispense_built_part Dispenses a part to the tile infront of the Exosuit Fab.
+ eject_sheets Eject material sheets.
+ get_construction_time_w_coeff Calculates the coefficient-modified build time of a design.
+ get_resource_cost_w_coeff Calculates the coefficient-modified resource cost of a single material component of a design's recipe.
+ get_resources_w_coeff Calculates resource/material costs for printing an item based on the machine's resource coefficient.
+ list_queue Generates a list of parts formatted for tgui based on the current build queue.
+ on_finish_printing Intended to be called when the exofab has stopped working and is no longer printing items.
+ on_start_printing Intended to be called when an item starts printing.
+ output_available_resources Generates a list of resources / materials available to this Exosuit Fab
+ output_part_info Generates an info list for a given part.
+ remove_from_queue Removes datum design from the build queue based on index.
+ sync Syncs machine with R&D servers.
+ Var Details being_built
+
+
+
+
+
+ The current design datum that the machine is building.
build_finish
+
+
+
+
+
+ World time when the build will finish.
build_materials
+
+
+
+
+
+ Reference to all materials used in the creation of the item being_built.
build_start
+
+
+
+
+
+ World time when the build started.
component_coeff
+
+
+
+
+
+ Coefficient for the efficiency of material usage in item building. Based on the installed parts.
link_on_init
+
+
+
+
+
+ Whether the Exofab links to the ore silo on init. Special derelict or maintanance variants should set this to FALSE.
part_sets
+
+
+
+
+
+ A list of categories that valid MECHFAB design datums will broadly categorise themselves under.
process_queue
+
+
+
+
+
+ Whether or not the machine is building the entire queue automagically.
queue
+
+
+
+
+
+ Current items in the build queue.
rmat
+
+
+
+
+
+ Reference to a remote material inventory, such as an ore silo.
stored_part
+
+
+
+
+
+ Part currently stored in the Exofab.
stored_research
+ – /datum /techweb/specialized/autounlocking/exofab
+
+
+
+
+ Copy of the currently synced techweb.
time_coeff
+
+
+
+
+
+ Coefficient for the speed of item building. Based on the installed parts.
Proc Details add_part_set_to_queue(/list/part_list)
+
+
+
+
+
+ Adds a list of datum designs to the build queue.
+Will only add designs that are in this machine's stored techweb.
+Does final checks for datum IDs and makes sure this machine can build the designs.
+
+part_list - List of datum design ids for designs to add to the queue.
+ add_to_queue
+
+ Adds a datum design to the build queue.
+Returns TRUE if successful and FALSE if the design was not added to the queue.
+
+D - Datum design to add to the queue.
+ build_next_in_queue(verbose)
+
+
+
+
+
+ Attempts to build the next item in the build queue.
+Returns FALSE if either there are no more parts to build or the next part is not buildable.
+Returns TRUE if the next part has started building.
+
+verbose - Whether the machine should use say() procs. Set to FALSE to disable the machine saying reasons for failure to build.
+ build_part
+
+ Starts the build process for a given design datum.
+Returns FALSE if the procedure fails. Returns TRUE when being_built is set.
+Uses materials.
+
+D - Design datum to attempt to print.
+verbose - Whether the machine should use say() procs. Set to FALSE to disable the machine saying reasons for failure to build.
+ check_resources
+
+ Checks if the Exofab has enough resources to print a given item.
+Returns FALSE if the design has no reagents used in its construction (?) or if there are insufficient resources.
+Returns TRUE if there are sufficient resources to print the item.
+
+D - Design datum to calculate the modified resource cost of.
+ dispense_built_part
+
+ Dispenses a part to the tile infront of the Exosuit Fab.
+Returns FALSE is the machine cannot dispense the part on the appropriate turf.
+Return TRUE if the part was successfully dispensed.
+
+D - Design datum to attempt to dispense.
+ eject_sheets(eject_sheet, eject_amt)
+
+
+
+
+
+ Eject material sheets.
+Returns the number of sheets successfully ejected.
+eject_sheet - Byond REF of the material to eject.
+eject_amt - Number of sheets to attempt to eject.
get_construction_time_w_coeff(construction_time, roundto)
+
+
+
+
+
+ Calculates the coefficient-modified build time of a design.
+Returns coefficient-modified build time of a given design.
+
+D - Design datum to calculate the modified build time of.
+roundto - Rounding value for round() proc
+ get_resource_cost_w_coeff
+
+ Calculates the coefficient-modified resource cost of a single material component of a design's recipe.
+Returns coefficient-modified resource cost for the given material component.
+
+D - Design datum to pull the resource cost from.
+resource - Material datum reference to the resource to calculate the cost of.
+roundto - Rounding value for round() proc
+ get_resources_w_coeff
+
+ Calculates resource/material costs for printing an item based on the machine's resource coefficient.
+Returns a list of k,v resources with their amounts.
+
+D - Design datum to calculate the modified resource cost of.
+ list_queue()
+
+
+
+
+
+ Generates a list of parts formatted for tgui based on the current build queue.
+Returns a formatted list of lists containing formatted part information for every part in the build queue.
on_finish_printing()
+
+
+
+
+
+ Intended to be called when the exofab has stopped working and is no longer printing items.
+Removes the overlay to show the fab working and sets idle power usage settings. Additionally resets the description and turns off queue processing.
on_start_printing()
+
+
+
+
+
+ Intended to be called when an item starts printing.
+Adds the overlay to show the fab working and sets active power usage settings.
output_available_resources()
+
+
+
+
+
+ Generates a list of resources / materials available to this Exosuit Fab
+Returns null if there is no material container available.
+List format is list(material_name = list(amount = ..., ref = ..., etc.))
output_part_info
+
+ Generates an info list for a given part.
+Returns a list of part information.
+
+D - Design datum to get information on.
+categories - Boolean, whether or not to parse snowflake categories into the part information list.
+ remove_from_queue(index)
+
+
+
+
+
+ Removes datum design from the build queue based on index.
+Returns TRUE if successful and FALSE if a design was not removed from the queue.
+
+index - Index in the build queue of the element to remove.
+ sync()
+
+
+
+
+
+ Syncs machine with R&D servers.
+Requires an R&D Console visible within 7 tiles. Copies techweb research. Updates tgui's state data.
+
+
+
diff --git a/obj/machinery/medipen_refiller.html b/obj/machinery/medipen_refiller.html
new file mode 100644
index 0000000000000..fa21f6067c6db
--- /dev/null
+++ b/obj/machinery/medipen_refiller.html
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+ /obj/machinery/medipen_refiller - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ allowed list of medipen subtypes it can refill
+ busy var to prevent glitches in the animation Procs
+ attackby handles the messages and animation, calls refill to end the animation
+ refill refills the medipen
+ Var Details allowed
+
+
+
+
+
+ list of medipen subtypes it can refill
busy
+
+
+
+
+
+ var to prevent glitches in the animation
Proc Details attackby
+
+ handles the messages and animation, calls refill to end the animation
refill(/obj /item /reagent_containers/hypospray/medipen/P, /mob /user)
+
+
+
+
+
+ refills the medipen
+
+
+
diff --git a/obj/machinery/mineral.html b/obj/machinery/mineral.html
new file mode 100644
index 0000000000000..f2b1dc493f533
--- /dev/null
+++ b/obj/machinery/mineral.html
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+ /obj/machinery/mineral - SPLURT Station 13
+
+
+
+
+
+
+Mineral processing unit console
Vars
+ input_dir The current direction of input_turf
, in relation to the machine.
+ input_turf The turf the machines listens to for items to pick up. Calls the pickup_item()
proc.
+ needs_item_input Determines if this machine needs to pick up items. Used to avoid registering signals to /mineral
machines that don't pickup items.
+ output_dir The current direction, in relation to the machine, that items will be output to. Procs
+ pickup_item Base proc for all /mineral
subtype machines to use. Place your item pickup behavior in this proc when you override it for your specific machine.
+ register_input_turf Gets the turf in the input_dir
direction adjacent to the machine, and registers signals for ATOM_ENTERED and ATOM_CREATED. Calls the pickup_item()
proc when it receives these signals.
+ unload_mineral Generic unloading proc. Takes an atom as an argument and forceMove's it to the turf adjacent to this machine in the output_dir
direction.
+ unregister_input_turf Unregisters signals that are registered the machine's input turf, if it has one.
+ Var Details
+ The current direction of input_turf
, in relation to the machine.
+ The turf the machines listens to for items to pick up. Calls the pickup_item()
proc.
+ Determines if this machine needs to pick up items. Used to avoid registering signals to /mineral
machines that don't pickup items.
output_dir
+
+
+
+
+
+ The current direction, in relation to the machine, that items will be output to.
Proc Details pickup_item
+
+ Base proc for all /mineral
subtype machines to use. Place your item pickup behavior in this proc when you override it for your specific machine.
+Called when the COMSIG_ATOM_ENTERED and COMSIG_ATOM_CREATED signals are sent.
+Arguments:
+
+source - the turf that is listening for the signals.
+target - the atom that just moved onto the source
turf.
+oldLoc - the old location that target
was at before moving onto source
.
+
+ Gets the turf in the input_dir
direction adjacent to the machine, and registers signals for ATOM_ENTERED and ATOM_CREATED. Calls the pickup_item()
proc when it receives these signals.
unload_mineral
+
+ Generic unloading proc. Takes an atom as an argument and forceMove's it to the turf adjacent to this machine in the output_dir
direction.
+ Unregisters signals that are registered the machine's input turf, if it has one.
+
+
+
diff --git a/obj/machinery/mineral/labor_claim_console.html b/obj/machinery/mineral/labor_claim_console.html
new file mode 100644
index 0000000000000..e9612ed6878dc
--- /dev/null
+++ b/obj/machinery/mineral/labor_claim_console.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ /obj/machinery/mineral/labor_claim_console - SPLURT Station 13
+
+
+
+
+
+
+Prisoners' Console
+ Var Details Radio
+
+
+
+
+
+ Needed to send messages to sec radio
machinedir
+
+
+
+
+
+ Direction of the stacking machine
stacking_machine
+
+
+
+
+
+ Connected stacking machine
+
+
+
diff --git a/obj/machinery/mineral/stacking_unit_console.html b/obj/machinery/mineral/stacking_unit_console.html
new file mode 100644
index 0000000000000..3da27bdf33adb
--- /dev/null
+++ b/obj/machinery/mineral/stacking_unit_console.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /obj/machinery/mineral/stacking_unit_console - SPLURT Station 13
+
+
+
+
+
+
+Mineral stacking unit console
Vars
+ machine Connected stacking machine
+ machinedir Direction for which console looks for stacking machine to connect to
+ Var Details machine
+
+
+
+
+
+ Connected stacking machine
machinedir
+
+
+
+
+
+ Direction for which console looks for stacking machine to connect to
+
+
+
diff --git a/obj/machinery/modular_computer.html b/obj/machinery/modular_computer.html
new file mode 100644
index 0000000000000..4d12dcdd41c92
--- /dev/null
+++ b/obj/machinery/modular_computer.html
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+ /obj/machinery/modular_computer - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ base_active_power_usage Power usage when the computer is open (screen is active) and can be interacted with. Remember hardware can use power too.
+ base_idle_power_usage Power usage when the computer is idle and screen is off (currently only applies to laptops)
+ cpu CPU that handles most logic while this type only handles power and other specific things.
+ hardware_flag A flag that describes this device type
+ icon_state_powered Icon state when the computer is turned on.
+ icon_state_unpowered Icon state when the computer is turned off.
+ last_power_usage Power usage during last tick
+ light_strength Light luminosity when turned on
+ max_hardware_size Maximal hardware size. Currently, tablets have 1, laptops 2 and consoles 3. Limits what hardware types can be installed.
+ screen_icon_screensaver Icon state overlay when the computer is powered, but not 'switched on'.
+ screen_icon_state_menu Icon state overlay when the computer is turned on, but no program is loaded that would override the screen.
+ steel_sheet_cost Amount of steel sheets refunded when disassembling an empty frame of this computer. Procs
+ relay_icon_update Eats the "source" arg because update_icon actually expects args now.
+ Var Details base_active_power_usage
+
+
+
+
+
+ Power usage when the computer is open (screen is active) and can be interacted with. Remember hardware can use power too.
base_idle_power_usage
+
+
+
+
+
+ Power usage when the computer is idle and screen is off (currently only applies to laptops)
+ CPU that handles most logic while this type only handles power and other specific things.
hardware_flag
+
+
+
+
+
+ A flag that describes this device type
icon_state_powered
+
+
+
+
+
+ Icon state when the computer is turned on.
icon_state_unpowered
+
+
+
+
+
+ Icon state when the computer is turned off.
last_power_usage
+
+
+
+
+
+ Power usage during last tick
light_strength
+
+
+
+
+
+ Light luminosity when turned on
max_hardware_size
+
+
+
+
+
+ Maximal hardware size. Currently, tablets have 1, laptops 2 and consoles 3. Limits what hardware types can be installed.
screen_icon_screensaver
+
+
+
+
+
+ Icon state overlay when the computer is powered, but not 'switched on'.
+ Icon state overlay when the computer is turned on, but no program is loaded that would override the screen.
steel_sheet_cost
+
+
+
+
+
+ Amount of steel sheets refunded when disassembling an empty frame of this computer.
Proc Details relay_icon_update(/datum /source, updates, updated)
+
+
+
+
+
+ Eats the "source" arg because update_icon actually expects args now.
+
+
+
diff --git a/obj/machinery/modular_computer/console.html b/obj/machinery/modular_computer/console.html
new file mode 100644
index 0000000000000..b49547b05bb0d
--- /dev/null
+++ b/obj/machinery/modular_computer/console.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/machinery/modular_computer/console - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details console_department
+
+
+
+
+
+ Used in New() to set network tag according to our area.
+
+
+
diff --git a/obj/machinery/modular_computer/console/preset/cargochat.html b/obj/machinery/modular_computer/console/preset/cargochat.html
new file mode 100644
index 0000000000000..029958c8257f2
--- /dev/null
+++ b/obj/machinery/modular_computer/console/preset/cargochat.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/machinery/modular_computer/console/preset/cargochat - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ chatprogram chat client installed on this computer, just helpful for linking all the computers
+ Var Details
+ chat client installed on this computer, just helpful for linking all the computers
+
+
+
diff --git a/obj/machinery/navbeacon.html b/obj/machinery/navbeacon.html
new file mode 100644
index 0000000000000..2122c1df8bb40
--- /dev/null
+++ b/obj/machinery/navbeacon.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /obj/machinery/navbeacon - SPLURT Station 13
+
+
+
+
+
+
+Proc Details glob_lists_register(init)
+
+
+
+
+
+ Registers the navbeacon to the global beacon lists
+
+
+
diff --git a/obj/machinery/photocopier.html b/obj/machinery/photocopier.html
new file mode 100644
index 0000000000000..da5b28282b55d
--- /dev/null
+++ b/obj/machinery/photocopier.html
@@ -0,0 +1,214 @@
+
+
+
+
+
+
+ /obj/machinery/photocopier - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ ass A reference to a mob on top of the photocopier trying to copy their ass. Null if there is no mob.
+ busy Indicates whether the printer is currently busy copying or not.
+ color_mode Used with photos. Determines if the copied photo will be in greyscale or color.
+ document_copy A reference to an /obj/item/documents
inside the copier, if one is inserted. Otherwise null.
+ num_copies How many copies will be printed with one click of the "copy" button.
+ paper_copy A reference to an /obj/item/paper
inside the copier, if one is inserted. Otherwise null.
+ photo_copy A reference to an /obj/item/photo
inside the copier, if one is inserted. Otherwise null.
+ toner_cartridge A reference to the toner cartridge that's inserted into the copier. Null if there is no cartridge. Procs
+ check_ass Checks the living mob ass
exists and its location is the same as the photocopier.
+ copier_blocked Checks if the copier is deleted, or has something dense at its location. Called in MouseDrop_T()
+ copier_empty Checks if there is an item inserted into the copier or a mob sitting on top of it.
+ do_copy_loop Will invoke the passed in copy_cb
callback in 1 second intervals, and charge the user 5 credits for each copy made.
+ do_insertion Inserts the item into the copier. Called in attackby()
after a human mob clicked on the copier with a paper, photo, or document.
+ give_pixel_offset Gives items a random x and y pixel offset, between -10 and 10 for each.
+ has_enough_toner Determines if the photocopier has enough toner to create num_copies
amount of copies of the currently inserted item.
+ make_ass_copy Handles the copying of an ass photo.
+ make_devil_paper_copy Handles the copying of devil contract paper. Transfers all the text, stamps and so on from the old paper, to the copy.
+ make_document_copy Handles the copying of documents.
+ make_paper_copy Handles the copying of paper. Transfers all the text, stamps and so on from the old paper, to the copy.
+ make_photo_copy Handles the copying of photos, which can be printed in either color or greyscale.
+ remove_photocopy Called when someone hits the "remove item" button on the copier UI.
+ reset_busy Sets busy to FALSE
. Created as a proc so it can be used in callbacks.
+ Var Details ass
+
+
+
+
+
+ A reference to a mob on top of the photocopier trying to copy their ass. Null if there is no mob.
busy
+
+
+
+
+
+ Indicates whether the printer is currently busy copying or not.
color_mode
+
+
+
+
+
+ Used with photos. Determines if the copied photo will be in greyscale or color.
document_copy
+
+
+
+
+
+ A reference to an /obj/item/documents
inside the copier, if one is inserted. Otherwise null.
num_copies
+
+
+
+
+
+ How many copies will be printed with one click of the "copy" button.
paper_copy
+
+
+
+
+
+ A reference to an /obj/item/paper
inside the copier, if one is inserted. Otherwise null.
photo_copy
+
+
+
+
+
+ A reference to an /obj/item/photo
inside the copier, if one is inserted. Otherwise null.
toner_cartridge
+
+
+
+
+
+ A reference to the toner cartridge that's inserted into the copier. Null if there is no cartridge.
Proc Details check_ass()
+
+
+
+
+
+ Checks the living mob ass
exists and its location is the same as the photocopier.
+Returns FALSE if ass
doesn't exist or is not at the copier's location. Returns TRUE otherwise.
copier_blocked()
+
+
+
+
+
+ Checks if the copier is deleted, or has something dense at its location. Called in MouseDrop_T()
copier_empty()
+
+
+
+
+
+ Checks if there is an item inserted into the copier or a mob sitting on top of it.
+Return FALSE
is the copier has something inside of it. Returns TRUE
if it doesn't.
do_copy_loop
+
+ Will invoke the passed in copy_cb
callback in 1 second intervals, and charge the user 5 credits for each copy made.
+Arguments:
+
+copy_cb - a callback for which proc to call. Should only be one of the make_x_copy()
procs, such as make_paper_copy()
.
+user - the mob who clicked copy.
+ do_insertion
+
+ Inserts the item into the copier. Called in attackby()
after a human mob clicked on the copier with a paper, photo, or document.
+Arugments:
+
+object - the object that got inserted.
+user - the mob that inserted the object.
+ give_pixel_offset
+
+ Gives items a random x and y pixel offset, between -10 and 10 for each.
+This is done that when someone prints multiple papers, we dont have them all appear to be stacked in the same exact location.
+Arguments:
+
+copied_item - The paper, document, or photo that was just spawned on top of the printer.
+ has_enough_toner()
+
+
+
+
+
+ Determines if the photocopier has enough toner to create num_copies
amount of copies of the currently inserted item.
make_ass_copy()
+
+
+
+
+
+ Handles the copying of an ass photo.
+Calls check_ass()
first to make sure that ass
exists, among other conditions. Since this proc is called from a timer, it's possible that it was removed.
+Additionally checks that the mob has their clothes off.
make_devil_paper_copy()
+
+
+
+
+
+ Handles the copying of devil contract paper. Transfers all the text, stamps and so on from the old paper, to the copy.
+Checks first if paper_copy
exists. Since this proc is called from a timer, it's possible that it was removed.
+Does not check if it has enough toner because devil contracts cost no toner to print.
make_document_copy()
+
+
+
+
+
+ Handles the copying of documents.
+Checks first if document_copy
exists. Since this proc is called from a timer, it's possible that it was removed.
make_paper_copy()
+
+
+
+
+
+ Handles the copying of paper. Transfers all the text, stamps and so on from the old paper, to the copy.
+Checks first if paper_copy
exists. Since this proc is called from a timer, it's possible that it was removed.
make_photo_copy()
+
+
+
+
+
+ Handles the copying of photos, which can be printed in either color or greyscale.
+Checks first if photo_copy
exists. Since this proc is called from a timer, it's possible that it was removed.
remove_photocopy
+
+ Called when someone hits the "remove item" button on the copier UI.
+If the user is a silicon, it drops the object at the location of the copier. If the user is not a silicon, it tries to put the object in their hands first.
+Sets busy
to FALSE
because if the inserted item is removed, the copier should halt copying.
+Arguments:
+
+object - the item we're trying to remove.
+user - the user removing the item.
+ reset_busy()
+
+
+
+
+
+ Sets busy to FALSE
. Created as a proc so it can be used in callbacks.
+
+
+
diff --git a/obj/machinery/plate_press.html b/obj/machinery/plate_press.html
new file mode 100644
index 0000000000000..4b603f29138a4
--- /dev/null
+++ b/obj/machinery/plate_press.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /obj/machinery/plate_press - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ work_press This proc attempts to create a plate. User cannot move during this process.
Proc Details work_press
+
+ This proc attempts to create a plate. User cannot move during this process.
+
+
+
diff --git a/obj/machinery/plumbing.html b/obj/machinery/plumbing.html
new file mode 100644
index 0000000000000..6801d0bb42bde
--- /dev/null
+++ b/obj/machinery/plumbing.html
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+ /obj/machinery/plumbing - SPLURT Station 13
+
+
+
+
+
+
+Basic plumbing object.
+It doesn't really hold anything special, YET.
+Objects that are plumbing but not a subtype are as of writing liquid pumps and the reagent_dispenser tank
+Also please note that the plumbing component is toggled on and off by the component using a signal from default_unfasten_wrench, so dont worry about it
Vars
+ buffer Plumbing machinery is always gonna need reagents, so we might aswell put it here
+ rcd_constructable wheter we partake in rcd construction or not
+ rcd_cost cost of the plumbing rcd construction
+ rcd_delay delay of constructing it throught the plumbing rcd
+ reagent_flags Flags for reagents, like INJECTABLE, TRANSPARENT bla bla everything thats in DEFINES/reagents.dm
+ Var Details buffer
+
+
+
+
+
+ Plumbing machinery is always gonna need reagents, so we might aswell put it here
rcd_constructable
+
+
+
+
+
+ wheter we partake in rcd construction or not
rcd_cost
+
+
+
+
+
+ cost of the plumbing rcd construction
rcd_delay
+
+
+
+
+
+ delay of constructing it throught the plumbing rcd
reagent_flags
+
+
+
+
+
+ Flags for reagents, like INJECTABLE, TRANSPARENT bla bla everything thats in DEFINES/reagents.dm
+
+
+
diff --git a/obj/machinery/plumbing/acclimator.html b/obj/machinery/plumbing/acclimator.html
new file mode 100644
index 0000000000000..39268ea1029ac
--- /dev/null
+++ b/obj/machinery/plumbing/acclimator.html
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+ /obj/machinery/plumbing/acclimator - SPLURT Station 13
+
+
+
+
+
+
+this the plumbing version of a heater/freezer.
Vars
+ acclimate_state COOLING, HEATING or NEUTRAL. We track this for change, so we dont needlessly update our icon
+ allowed_temperature_difference I cant find a good name for this. Basically if target is 300, and this is 10, it will still target 300 but will start emptying itself at 290 and 310.
+ emptying *We can't take anything in, at least till we're emptied. Down side of the round robin chem transfer, otherwise while emptying 5u of an unreacted chem gets added,
+and you get nasty leftovers
+ enabled Are we turned on or off? this is from the on and off button
+ heater_coefficient cool/heat power
+ target_temperature towards wich temperature do we build?
+ Var Details acclimate_state
+
+
+
+
+
+ COOLING, HEATING or NEUTRAL. We track this for change, so we dont needlessly update our icon
allowed_temperature_difference
+
+
+
+
+
+ I cant find a good name for this. Basically if target is 300, and this is 10, it will still target 300 but will start emptying itself at 290 and 310.
emptying
+
+
+
+
+
+ *We can't take anything in, at least till we're emptied. Down side of the round robin chem transfer, otherwise while emptying 5u of an unreacted chem gets added,
+and you get nasty leftovers
enabled
+
+
+
+
+
+ Are we turned on or off? this is from the on and off button
heater_coefficient
+
+
+
+
+
+ cool/heat power
target_temperature
+
+
+
+
+
+ towards wich temperature do we build?
+
+
+
diff --git a/obj/machinery/plumbing/bottler.html b/obj/machinery/plumbing/bottler.html
new file mode 100644
index 0000000000000..e4d41be2b6c6a
--- /dev/null
+++ b/obj/machinery/plumbing/bottler.html
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+ /obj/machinery/plumbing/bottler - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details badspot
+
+
+
+
+
+ where beakers that are already full will be sent
goodspot
+
+
+
+
+
+ where things are sent
+ where things are taken
wanted_amount
+
+
+
+
+
+ how much do we fill
Proc Details interact
+
+ changing input ammount with a window
setDir(newdir)
+
+
+
+
+
+ changes the tile array
+
+
+
diff --git a/obj/machinery/plumbing/disposer.html b/obj/machinery/plumbing/disposer.html
new file mode 100644
index 0000000000000..1f09586741b8f
--- /dev/null
+++ b/obj/machinery/plumbing/disposer.html
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+ /obj/machinery/plumbing/disposer - SPLURT Station 13
+
+
+
+
+
+
+see if machine has enough to fill
+pick a reagent_container that could be used
+see if it would overflow else inject
+glass was full so we move it away
+slime extracts need inject
+no need to move slimecross industrial things
+ Var Details disposal_rate
+
+
+
+
+
+ we remove 10 reagents per second
+
+
+
diff --git a/obj/machinery/plumbing/fermenter.html b/obj/machinery/plumbing/fermenter.html
new file mode 100644
index 0000000000000..4987469cf0409
--- /dev/null
+++ b/obj/machinery/plumbing/fermenter.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/machinery/plumbing/fermenter - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details eat_dir
+
+
+
+
+
+ input dir
+
+
+
diff --git a/obj/machinery/plumbing/filter.html b/obj/machinery/plumbing/filter.html
new file mode 100644
index 0000000000000..3da77bdede3ee
--- /dev/null
+++ b/obj/machinery/plumbing/filter.html
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+ /obj/machinery/plumbing/filter - SPLURT Station 13
+
+
+
+
+
+
+chemical plumbing filter. If it's not filtered by left and right, it goes straight.
Vars
+ english_left whitelist of chems but their name instead of path
+ english_right whitelist of chems but their name instead of path
+ left whitelist of chems id's that go to the left side. Empty to disable port
+ right whitelist of chem id's that go to the right side. Empty to disable port
+ Var Details english_left
+
+
+
+
+
+ whitelist of chems but their name instead of path
english_right
+
+
+
+
+
+ whitelist of chems but their name instead of path
left
+
+
+
+
+
+ whitelist of chems id's that go to the left side. Empty to disable port
right
+
+
+
+
+
+ whitelist of chem id's that go to the right side. Empty to disable port
+
+
+
diff --git a/obj/machinery/plumbing/liquid_pump.html b/obj/machinery/plumbing/liquid_pump.html
new file mode 100644
index 0000000000000..786a489fb4012
--- /dev/null
+++ b/obj/machinery/plumbing/liquid_pump.html
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+ /obj/machinery/plumbing/liquid_pump - SPLURT Station 13
+
+
+
+
+
+
+We pump liquids from activated(plungerated) geysers to a plumbing outlet. We don't need to be wired.
Vars
+ geyser The geyser object
+ geyserless set to true if the loop couldnt find a geyser in process, so it remembers and stops checking every loop until moved. more accurate name would be absolutely_no_geyser_under_me_so_dont_try
+ pump_power units we pump per process (2 seconds)
+ volume volume of our internal buffer Procs
+ default_unfasten_wrench please note that the component has a hook in the parent call, wich handles activating and deactivating
+ pump pump up that sweet geyser nectar
+ Var Details geyser
+
+
+
+
+
+ The geyser object
geyserless
+
+
+
+
+
+ set to true if the loop couldnt find a geyser in process, so it remembers and stops checking every loop until moved. more accurate name would be absolutely_no_geyser_under_me_so_dont_try
pump_power
+
+
+
+
+
+ units we pump per process (2 seconds)
volume
+
+
+
+
+
+ volume of our internal buffer
Proc Details default_unfasten_wrench
+
+ please note that the component has a hook in the parent call, wich handles activating and deactivating
pump()
+
+
+
+
+
+ pump up that sweet geyser nectar
+
+
+
diff --git a/obj/machinery/plumbing/pill_press.html b/obj/machinery/plumbing/pill_press.html
new file mode 100644
index 0000000000000..4185bd8642538
--- /dev/null
+++ b/obj/machinery/plumbing/pill_press.html
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+ /obj/machinery/plumbing/pill_press - SPLURT Station 13
+
+
+
+
+
+
+We take a constant input of reagents, and produce a pill once a set volume is reached
+ Var Details current_volume
+
+
+
+
+
+ selected size of the product
max_bottle_volume
+
+
+
+
+
+ maximum size of a bottle
max_floor_products
+
+
+
+
+
+ max amount of pills allowed on our tile before we start storing them instead
max_patch_volume
+
+
+
+
+
+ maximum size of a patch
max_pill_volume
+
+
+
+
+
+ maximum size of a pill
max_volume
+
+
+
+
+
+ the maximum size a pill or patch can be
min_volume
+
+
+
+
+
+ the minimum size a pill or patch can be
pill_number
+
+
+
+
+
+ the icon_state number for the pill.
pill_styles
+
+
+
+
+
+ list of id's and icons for the pill selection of the ui
product
+
+
+
+
+
+ current operating product (pills or patches)
product_name
+
+
+
+
+
+ prefix for the product name
stored_products
+
+
+
+
+
+ list of products stored in the machine, so we dont have 610 pills on one tile
+
+
+
diff --git a/obj/machinery/plumbing/reaction_chamber.html b/obj/machinery/plumbing/reaction_chamber.html
new file mode 100644
index 0000000000000..b5149269e2fcf
--- /dev/null
+++ b/obj/machinery/plumbing/reaction_chamber.html
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+ /obj/machinery/plumbing/reaction_chamber - SPLURT Station 13
+
+
+
+
+
+
+a reaction chamber for plumbing. pretty much everything can react, but this one keeps the reagents seperated and only reacts under your given terms
Vars
+ emptying our reagent goal has been reached, so now we lock our inputs and start emptying
+ required_reagents *list of set reagents that the reaction_chamber allows in, and must all be present before mixing is enabled.
+* example: list(/datum/reagent/water = 20, /datum/reagent/fuel/oil = 50)
+ Var Details emptying
+
+
+
+
+
+ our reagent goal has been reached, so now we lock our inputs and start emptying
required_reagents
+
+
+
+
+
+ *list of set reagents that the reaction_chamber allows in, and must all be present before mixing is enabled.
+* example: list(/datum/reagent/water = 20, /datum/reagent/fuel/oil = 50)
+
+
+
diff --git a/obj/machinery/plumbing/splitter.html b/obj/machinery/plumbing/splitter.html
new file mode 100644
index 0000000000000..70b9bb2f344ec
--- /dev/null
+++ b/obj/machinery/plumbing/splitter.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ /obj/machinery/plumbing/splitter - SPLURT Station 13
+
+
+
+
+
+
+it splits the reagents however you want. So you can "every 60 units, 45 goes left and 15 goes straight". The side direction is EAST, you can change this in the component
Vars
+ transfer_side how much we must transfer to the side
+ transfer_straight how much we must transfer straight. note input can be as high as 10 reagents per process, usually
+ turn_straight constantly switches between TRUE and FALSE. TRUE means the batch tick goes straight, FALSE means the next batch goes in the side duct.
+ Var Details transfer_side
+
+
+
+
+
+ how much we must transfer to the side
transfer_straight
+
+
+
+
+
+ how much we must transfer straight. note input can be as high as 10 reagents per process, usually
turn_straight
+
+
+
+
+
+ constantly switches between TRUE and FALSE. TRUE means the batch tick goes straight, FALSE means the next batch goes in the side duct.
+
+
+
diff --git a/obj/machinery/plumbing/synthesizer.html b/obj/machinery/plumbing/synthesizer.html
new file mode 100644
index 0000000000000..d5be03df8c16c
--- /dev/null
+++ b/obj/machinery/plumbing/synthesizer.html
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+ /obj/machinery/plumbing/synthesizer - SPLURT Station 13
+
+
+
+
+
+
+A single machine that produces a single chem. Can be placed in unison with others through plumbing to create chemical factories
Vars
+ amount Amount we produce for every process. Ideally keep under 5 since thats currently the standard duct capacity
+ buffer The maximum we can produce for every process
+ dispensable_reagents straight up copied from chem dispenser. Being a subtype would be extremely tedious and making it global would restrict potential subtypes using different dispensable_reagents
+ possible_amounts I track them here because I have no idea how I'd make tgui loop like that
+ reagent_id The reagent we are producing. We are a typepath, but are also typecast because there's several occations where we need to use initial.
+ Var Details amount
+
+
+
+
+
+ Amount we produce for every process. Ideally keep under 5 since thats currently the standard duct capacity
buffer
+
+
+
+
+
+ The maximum we can produce for every process
dispensable_reagents
+
+
+
+
+
+ straight up copied from chem dispenser. Being a subtype would be extremely tedious and making it global would restrict potential subtypes using different dispensable_reagents
possible_amounts
+
+
+
+
+
+ I track them here because I have no idea how I'd make tgui loop like that
reagent_id
+
+
+
+
+
+ The reagent we are producing. We are a typepath, but are also typecast because there's several occations where we need to use initial.
+
+
+
diff --git a/obj/machinery/pool/controller.html b/obj/machinery/pool/controller.html
new file mode 100644
index 0000000000000..b558bbb1c41f7
--- /dev/null
+++ b/obj/machinery/pool/controller.html
@@ -0,0 +1,176 @@
+
+
+
+
+
+
+ /obj/machinery/pool/controller - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details bloody
+
+
+
+
+
+ Is the pool bloody?
drainable
+
+
+
+
+
+ Whether or not the pool can be drained
draining
+
+
+
+
+
+ Just to prevent spam
interact_delay
+
+
+
+
+
+ Next world.time you can interact with settings
last_reagent_process
+
+
+
+
+
+ Last time we process_reagents()'d
+ Pool drain
linked_filter
+
+
+
+
+
+ Pool filter
linked_mist
+
+
+
+
+
+ Linked mist effects
linked_turfs
+
+
+
+
+
+ Pool turfs
max_beaker_transfer
+
+
+
+
+
+ Maximum amount we will take from a beaker
min_reagent_amount
+
+
+
+
+
+ Minimum amount of a reagent for it to work on us
mist_state
+
+
+
+
+
+ Is pool mist currently on?
mobs_in_pool
+
+
+
+
+
+ All mobs in pool
noreact_reagents
+
+
+
+
+
+ ADMINBUS ONLY - WHETHER OR NOT WE HAVE NOREACT ;)
old_rcolor
+
+
+
+
+
+ Old reagent color, used to determine if update_color needs to reset colors.
reagent_tick_interval
+
+
+
+
+
+ how fast in deciseconds between reagent processes
respect_reagent_blacklist
+
+
+
+
+
+ Reagent blacklisting
scan_range
+
+
+
+
+
+ How far it scans for pool objects
shocked
+
+
+
+
+
+ Airlock style shocks
temperature
+
+
+
+
+
+ See __DEFINES/pool.dm, temperature defines
temperature_unlocked
+
+
+
+
+
+ Can we use unsafe temperatures
+
+
+
diff --git a/obj/machinery/pool/drain.html b/obj/machinery/pool/drain.html
new file mode 100644
index 0000000000000..ea29fc7ee9367
--- /dev/null
+++ b/obj/machinery/pool/drain.html
@@ -0,0 +1,99 @@
+
+
+
+
+
+
+ /obj/machinery/pool/drain - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details active
+
+
+
+
+
+ Active/on?
+ Parent controller
cycles_left
+
+
+
+
+
+ Cycles left for fill/drain while active
drain_suck_range
+
+
+
+
+
+ Drain mode suction range
fill_push_range
+
+
+
+
+
+ Fill mode knock away range
filling
+
+
+
+
+
+ Filling or draining
item_suction_range
+
+
+
+
+
+ Drain item suction range
suck_in_once_per
+
+
+
+
+
+ Suck in once per x ticks
whirling_mobs
+
+
+
+
+
+ Mobs we are swirling around
Proc Details whirl_mob
+
+ dangerous proc don't fuck with, admins
+
+
+
diff --git a/obj/machinery/porta_turret.html b/obj/machinery/porta_turret.html
new file mode 100644
index 0000000000000..d7ccf307b910c
--- /dev/null
+++ b/obj/machinery/porta_turret.html
@@ -0,0 +1,274 @@
+
+
+
+
+
+
+ /obj/machinery/porta_turret - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details always_up
+
+
+
+
+
+ Will stay active
base
+
+
+
+
+
+ For turrets inside other objects
base_icon_state
+
+
+
+
+
+ Base turret icon state
controllock
+
+
+
+
+
+ If the turret responds to control panels
cover
+
+
+
+
+
+ The cover that is covering this turret
+ Linked turret control panel of the turret
faction
+
+
+
+
+
+ Same faction mobs will never be shot at, no matter the other settings
gun_charge
+
+
+
+
+
+ The charge of the gun when retrieved from wreckage
has_cover
+
+
+
+
+
+ Hides the cover
installation
+
+
+
+
+
+ The type of weapon installed by default
last_fired
+
+
+
+
+
+ World.time the turret last fired
lethal_projectile
+
+
+
+
+
+ Lethal mode projectile type
lethal_projectile_sound
+
+
+
+
+
+ Sound of lethal projectile
locked
+
+
+
+
+
+ If the turret's behaviour control access is locked
manual_control
+
+
+
+
+
+ If the turret is manually controlled
mode
+
+
+
+
+
+ In which mode is turret in, stun or lethal
nonlethal_projectile
+
+
+
+
+
+ Projectile to use in stun mode when the target is resting, if any
nonlethal_projectile_sound
+
+
+
+
+
+ Sound of stun projectile wen the target is resting, optional
on
+
+
+
+
+
+ Determines if the turret is on
power_channel
+
+
+
+
+
+ Only people with Security access
quit_action
+
+
+
+
+
+ Action button holder for quitting manual control
raised
+
+
+
+
+
+ If the turret cover is "open" and the turret is raised
raising
+
+
+
+
+
+ If the turret is currently opening or closing its cover
remote_controller
+
+
+
+
+
+ Mob that is remotely controlling the turret
reqpower
+
+
+
+
+
+ Power needed per shot
scan_range
+
+
+
+
+
+ Scan range of the turret for locating targets
shot_delay
+
+
+
+
+
+ Ticks until next shot (1.5 ?)
shot_stagger
+
+
+
+
+
+ MISSING:
spark_system
+ – /datum /effect_system/spark_spread
+
+
+
+
+ The spark system, used for generating... sparks?
stored_gun
+
+
+
+
+
+ What stored gun is in the turret
stun_projectile
+
+
+
+
+
+ Stun mode projectile type
stun_projectile_sound
+
+
+
+
+
+ Sound of stun projectile
toggle_action
+
+
+
+
+
+ Action button holder for switching between turret modes when manually controlling
turret_flags
+
+
+
+
+
+ Turret flags about who is turret allowed to shoot
wall_turret_direction
+
+
+
+
+
+ The turret will try to shoot from a turf in that direction when in a wall
+
+
+
diff --git a/obj/machinery/portable_atmospherics/canister.html b/obj/machinery/portable_atmospherics/canister.html
new file mode 100644
index 0000000000000..3141aab87c6c0
--- /dev/null
+++ b/obj/machinery/portable_atmospherics/canister.html
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+ /obj/machinery/portable_atmospherics/canister - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ req_access Set the tier of the canister and overlay used
+ temperature_resistance Max amount of heat allowed inside of the canister before it starts to melt (different tiers have different limits)
+Max amount of pressure allowed inside of the canister before it starts to break (different tiers have different limits) Procs
+ ui_state function used to check the limit of the canisters and also set the amount of damage that the canister can receive, if the heat and pressure are way higher than the limit the more damage will be done
+ Var Details req_access
+
+
+
+
+
+ Set the tier of the canister and overlay used
temperature_resistance
+
+
+
+
+
+ Max amount of heat allowed inside of the canister before it starts to melt (different tiers have different limits)
+Max amount of pressure allowed inside of the canister before it starts to break (different tiers have different limits)
Proc Details ui_state
+
+ function used to check the limit of the canisters and also set the amount of damage that the canister can receive, if the heat and pressure are way higher than the limit the more damage will be done
+
+
+
diff --git a/obj/machinery/power/apc.html b/obj/machinery/power/apc.html
new file mode 100644
index 0000000000000..5db2f945c58c2
--- /dev/null
+++ b/obj/machinery/power/apc.html
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+ /obj/machinery/power/apc - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ autoset Returns the new status value for an APC channel.
+ check_updates Checks for what icon updates we will need to handle
+ setsubsystem Used by external forces to set the APCs channel status's.
Proc Details autoset(val, on)
+
+
+
+
+
+ Returns the new status value for an APC channel.
+// val 0=off, 1=off(auto) 2=on 3=on(auto)
+// on 0=off, 1=on, 2=autooff
+TODO: Make this use bitflags instead. It should take at most three lines, but it's out of scope for now.
+Arguments:
+
+val: The current status of the power channel.
+
+APC_CHANNEL_OFF : The APCs channel has been manually set to off. This channel will not automatically change.
+APC_CHANNEL_AUTO_OFF : The APCs channel is running on automatic and is currently off. Can be automatically set to APC_CHANNEL_AUTO_ON .
+APC_CHANNEL_ON : The APCs channel has been manually set to on. This will be automatically changed only if the APC runs completely out of power or is disabled.
+APC_CHANNEL_AUTO_ON : The APCs channel is running on automatic and is currently on. Can be automatically set to APC_CHANNEL_AUTO_OFF .
+
+
+on: An enum dictating how to change the channel's status.
+
+AUTOSET_FORCE_OFF : The APC forces the channel to turn off. This includes manually set channels.
+AUTOSET_ON : The APC allows automatic channels to turn back on.
+AUTOSET_OFF : The APC turns automatic channels off.
+
+
+ check_updates()
+
+
+
+
+
+ Checks for what icon updates we will need to handle
setsubsystem(val)
+
+
+
+
+
+ Used by external forces to set the APCs channel status's.
+Arguments:
+
+val: The desired value of the subsystem:
+
+
+
+
+
+
diff --git a/obj/machinery/power/deck_relay.html b/obj/machinery/power/deck_relay.html
new file mode 100644
index 0000000000000..da19c343f3d44
--- /dev/null
+++ b/obj/machinery/power/deck_relay.html
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+ /obj/machinery/power/deck_relay - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ above The relay that's below us (for bridging powernets)
+ anchored The relay that's above us (for bridging powernets) Procs
+ find_relays Locates relays that are above and below this object
+ multitool_act Allows you to scan the relay with a multitool to see stats.
+ refresh Handles re-acquiring + merging powernets found by find_relays()
+ Var Details
+ The relay that's below us (for bridging powernets)
anchored
+
+
+
+
+
+ The relay that's above us (for bridging powernets)
Proc Details find_relays()
+
+
+
+
+
+ Locates relays that are above and below this object
+ Allows you to scan the relay with a multitool to see stats.
refresh()
+
+
+
+
+
+ Handles re-acquiring + merging powernets found by find_relays()
+
+
+
diff --git a/obj/machinery/power/solar.html b/obj/machinery/power/solar.html
new file mode 100644
index 0000000000000..0a7988645786b
--- /dev/null
+++ b/obj/machinery/power/solar.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+ /obj/machinery/power/solar - SPLURT Station 13
+
+
+
+
+
+
+Proc Details occlusion_setup()
+
+
+
+
+
+ trace towards sun to see if we're in shadow
update_solar_exposure()
+
+
+
+
+
+ calculates the fraction of the sunlight that the panel receives
+
+
+
diff --git a/obj/machinery/power/solar_control.html b/obj/machinery/power/solar_control.html
new file mode 100644
index 0000000000000..424819d60029c
--- /dev/null
+++ b/obj/machinery/power/solar_control.html
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+ /obj/machinery/power/solar_control - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details
+ SOLAR_TRACK_OFF, SOLAR_TRACK_TIMED, SOLAR_TRACK_AUTO
track
+
+
+
+
+
+ degree change per minute
Proc Details set_panels(azimuth)
+
+
+
+
+
+ Rotates the panel to the passed angles
timed_track()
+
+
+
+
+
+ Ran every time the sun updates.
+
+
+
diff --git a/obj/machinery/power/supermatter_crystal.html b/obj/machinery/power/supermatter_crystal.html
new file mode 100644
index 0000000000000..cfe1fcbb3baa3
--- /dev/null
+++ b/obj/machinery/power/supermatter_crystal.html
@@ -0,0 +1,342 @@
+
+
+
+
+
+
+ /obj/machinery/power/supermatter_crystal - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ base_icon_state Used for changing icon states for diff base sprites
+ bullet_energy How much the bullets damage should be multiplied by when it is added to the internal variables
+ combined_gas The last air sample's total molar count, will always be above or equal to 0
+ common_channel The common channel
+ countdown An effect we show to admins and ghosts the percentage of delam we're at
+ damage The amount of damage we have currently
+ damage_archived The damage we had before this cycle. Used to limit the damage we can take each cycle, and for safe_alert
+ damage_penalty_point When we pass this amount of damage we start shooting bolts
+ dynamic_heat_resistance Affects the amount of damage and minimum point at which the sm takes heat damage
+ emergency_alert The alert we send when we've reached emergency_point
+ emergency_point The point at which we start sending messages to the common channel
+ engineering_channel The engineering channel
+ explosion_point The point at which we delam
+ final_countdown Are we exploding?
+ gas_change_rate Determines the rate of positve change in gas comp values
+ gasefficency The portion of the gasmix we're on that we should remove
+ gasmix_power_ratio Affects the power gain the sm experiances from heat
+ gl_uid The amount of supermatters that have been created this round
+ hallucination_power How much hallucination should we produce per unit of power?
+ has_been_powered Boolean used for logging if we've been powered
+ has_reached_emergency Boolean used for logging if we've passed the emergency point
+ is_main_engine Used along with a global var to track if we can give out the sm sliver stealing objective
+ last_accent_sound cooldown tracker for accent sounds
+ lastwarning Time in 1/10th of seconds since the last sent warning
+ matter_power Takes the energy throwing things into the sm generates and slowly turns it into actual power
+ mole_heat_penalty Used to increase or lessen the amount of damage the sm takes from heat based on molar counts.
+ moveable Can it be moved?
+ power Refered to as eer on the moniter. This value effects gas output, heat, damage, and radiation.
+ power_changes Disables power changes
+ powerloss_dynamic_scaling Based on co2 percentage, slowly moves between 0 and 1. We use it to calc the powerloss_inhibitor
+ powerloss_inhibitor Uses powerloss_dynamic_scaling and combined_gas to lessen the effects of our powerloss functions
+ processes Disables the sm's proccessing totally.
+ produces_gas Disables the production of gas, and pretty much any handling of it we do.
+ radio Our internal radio
+ radio_key The key our internal radio uses
+ safe_alert Our "Shit is no longer fucked" message. We send it when damage is less then damage_archived
+ soundloop Our soundloop
+ takes_damage Disables all methods of taking damage
+ uid The id of our supermatter
+ warning_alert The alert we send when we've reached warning_point
+ warning_point The point at which we should start sending messeges about the damage to the engi channels.
+ zap_cutoff The cutoff for a bolt jumping, grows with heat, lowers with higher mol count,
+ zap_icon Tracks the bolt color we are using Procs
+ bullet_act EXPERIMENTAL, HUGBOXY AS HELL CITADEL CHANGES: Even in a vaccum, update gas composition and modifiers.
+This means that the SM will usually have a very small explosion if it ends up being breached to space,
+and CO2 tesla delaminations basically require multiple grounding rods to stabilize it long enough to not have it vent.
+ Var Details base_icon_state
+
+
+
+
+
+ Used for changing icon states for diff base sprites
bullet_energy
+
+
+
+
+
+ How much the bullets damage should be multiplied by when it is added to the internal variables
combined_gas
+
+
+
+
+
+ The last air sample's total molar count, will always be above or equal to 0
common_channel
+
+
+
+
+
+ The common channel
countdown
+ – /obj /effect/countdown/supermatter
+
+
+
+
+ An effect we show to admins and ghosts the percentage of delam we're at
damage
+
+
+
+
+
+ The amount of damage we have currently
damage_archived
+
+
+
+
+
+ The damage we had before this cycle. Used to limit the damage we can take each cycle, and for safe_alert
damage_penalty_point
+
+
+
+
+
+ When we pass this amount of damage we start shooting bolts
dynamic_heat_resistance
+
+
+
+
+
+ Affects the amount of damage and minimum point at which the sm takes heat damage
emergency_alert
+
+
+
+
+
+ The alert we send when we've reached emergency_point
emergency_point
+
+
+
+
+
+ The point at which we start sending messages to the common channel
engineering_channel
+
+
+
+
+
+ The engineering channel
explosion_point
+
+
+
+
+
+ The point at which we delam
final_countdown
+
+
+
+
+
+ Are we exploding?
gas_change_rate
+
+
+
+
+
+ Determines the rate of positve change in gas comp values
gasefficency
+
+
+
+
+
+ The portion of the gasmix we're on that we should remove
gasmix_power_ratio
+
+
+
+
+
+ Affects the power gain the sm experiances from heat
gl_uid
+
+
+
+
+
+ The amount of supermatters that have been created this round
hallucination_power
+
+
+
+
+
+ How much hallucination should we produce per unit of power?
has_been_powered
+
+
+
+
+
+ Boolean used for logging if we've been powered
has_reached_emergency
+
+
+
+
+
+ Boolean used for logging if we've passed the emergency point
is_main_engine
+
+
+
+
+
+ Used along with a global var to track if we can give out the sm sliver stealing objective
last_accent_sound
+
+
+
+
+
+ cooldown tracker for accent sounds
lastwarning
+
+
+
+
+
+ Time in 1/10th of seconds since the last sent warning
matter_power
+
+
+
+
+
+ Takes the energy throwing things into the sm generates and slowly turns it into actual power
mole_heat_penalty
+
+
+
+
+
+ Used to increase or lessen the amount of damage the sm takes from heat based on molar counts.
moveable
+
+
+
+
+
+ Can it be moved?
power
+
+
+
+
+
+ Refered to as eer on the moniter. This value effects gas output, heat, damage, and radiation.
power_changes
+
+
+
+
+
+ Disables power changes
powerloss_dynamic_scaling
+
+
+
+
+
+ Based on co2 percentage, slowly moves between 0 and 1. We use it to calc the powerloss_inhibitor
powerloss_inhibitor
+
+
+
+
+
+ Uses powerloss_dynamic_scaling and combined_gas to lessen the effects of our powerloss functions
processes
+
+
+
+
+
+ Disables the sm's proccessing totally.
produces_gas
+
+
+
+
+
+ Disables the production of gas, and pretty much any handling of it we do.
radio
+
+
+
+
+
+ Our internal radio
radio_key
+
+
+
+
+
+ The key our internal radio uses
safe_alert
+
+
+
+
+
+ Our "Shit is no longer fucked" message. We send it when damage is less then damage_archived
soundloop
+
+
+
+
+
+ Our soundloop
takes_damage
+
+
+
+
+
+ Disables all methods of taking damage
uid
+
+
+
+
+
+ The id of our supermatter
warning_alert
+
+
+
+
+
+ The alert we send when we've reached warning_point
warning_point
+
+
+
+
+
+ The point at which we should start sending messeges about the damage to the engi channels.
zap_cutoff
+
+
+
+
+
+ The cutoff for a bolt jumping, grows with heat, lowers with higher mol count,
zap_icon
+
+
+
+
+
+ Tracks the bolt color we are using
Proc Details
+ EXPERIMENTAL, HUGBOXY AS HELL CITADEL CHANGES: Even in a vaccum, update gas composition and modifiers.
+This means that the SM will usually have a very small explosion if it ends up being breached to space,
+and CO2 tesla delaminations basically require multiple grounding rods to stabilize it long enough to not have it vent.
+END CITADEL CHANGES
+
+
+
diff --git a/obj/machinery/power/tracker.html b/obj/machinery/power/tracker.html
new file mode 100644
index 0000000000000..dc9da15739706
--- /dev/null
+++ b/obj/machinery/power/tracker.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /obj/machinery/power/tracker - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ sun_update Tell the controller to turn the solar panels
Proc Details sun_update(/datum /source, /datum /sun/primary_sun, /list/datum/sun/suns)
+
+
+
+
+
+ Tell the controller to turn the solar panels
+
+
+
diff --git a/obj/machinery/recharger.html b/obj/machinery/recharger.html
new file mode 100644
index 0000000000000..f8a82c8a03cd5
--- /dev/null
+++ b/obj/machinery/recharger.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/machinery/recharger - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details finished_recharging
+
+
+
+
+
+ Did we finish recharging the currently inserted item?
+
+
+
diff --git a/obj/machinery/research/explosive_compressor.html b/obj/machinery/research/explosive_compressor.html
new file mode 100644
index 0000000000000..777192ec0c729
--- /dev/null
+++ b/obj/machinery/research/explosive_compressor.html
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+ /obj/machinery/research/explosive_compressor - SPLURT Station 13
+
+
+
+
+
+
+The explosive compressor machine used in anomaly core production.
+Uses the standard toxins/tank explosion scaling to compress raw anomaly cores into completed ones. The required explosion radius increases as more cores of that type are created.
Vars
+ inserted_bomb The TTV inserted in the machine.
+ inserted_core The raw core inserted in the machine.
+ last_requirements_say The last time we did say_requirements(), because someone will inevitably click spam this. Procs
+ do_implosion The ""explosion"" proc.
+ get_required_radius Determines how much explosive power (last value, so light impact theoretical radius) is required to make a certain anomaly type.
+ say_requirements Says (no, literally) the data of required explosive power for a certain anomaly type.
+ Var Details
+ The TTV inserted in the machine.
+ The raw core inserted in the machine.
last_requirements_say
+
+
+
+
+
+ The last time we did say_requirements(), because someone will inevitably click spam this.
Proc Details do_implosion()
+
+
+
+
+
+ The ""explosion"" proc.
get_required_radius(anomaly_type)
+
+
+
+
+
+ Determines how much explosive power (last value, so light impact theoretical radius) is required to make a certain anomaly type.
+Returns null if the max amount has already been reached.
+Arguments:
+
+anomaly_type - anomaly type define
+
+ Says (no, literally) the data of required explosive power for a certain anomaly type.
+
+
+
diff --git a/obj/machinery/seed_extractor.html b/obj/machinery/seed_extractor.html
new file mode 100644
index 0000000000000..a67e6affc0cfb
--- /dev/null
+++ b/obj/machinery/seed_extractor.html
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+ /obj/machinery/seed_extractor - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ piles Associated list of seeds, they are all weak refs. We check the len to see how many refs we have for each Procs
+ add_seed
+ generate_seed_string Generate seed string
+ Var Details piles
+
+
+
+
+
+ Associated list of seeds, they are all weak refs. We check the len to see how many refs we have for each
Proc Details add_seed
+
+
+
+Add Seeds Proc.
+
+Adds the seeds to the contents and to an associated list that pregenerates the data
+needed to go to the ui handler
+
+
+ generate_seed_string
+
+ Generate seed string
+Creates a string based of the traits of a seed. We use this string as a bucket for all
+seeds that match as well as the key the ui uses to get the seed. We also use the key
+for the data shown in the ui. Javascript parses this string to display
+Arguments:
+
+O - seed to generate the string from
+
+
+
+
diff --git a/obj/machinery/smartfridge.html b/obj/machinery/smartfridge.html
new file mode 100644
index 0000000000000..922d8a1ccba98
--- /dev/null
+++ b/obj/machinery/smartfridge.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ /obj/machinery/smartfridge - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ max_n_of_items What path boards used to construct it should build into when dropped. Needed so we don't accidentally have them build variants with items preloaded in them. Procs
+ attackby Item Adding
+ dispense Really simple proc, just moves the object "O" into the hands of mob "M" if able, done so I could modify the proc a little for the organ fridge
+ Var Details max_n_of_items
+
+
+
+
+
+ What path boards used to construct it should build into when dropped. Needed so we don't accidentally have them build variants with items preloaded in them.
Proc Details attackby
+
+ Item Adding
dispense
+
+ Really simple proc, just moves the object "O" into the hands of mob "M" if able, done so I could modify the proc a little for the organ fridge
+
+
+
diff --git a/obj/machinery/status_display.html b/obj/machinery/status_display.html
new file mode 100644
index 0000000000000..4b688eeddaabe
--- /dev/null
+++ b/obj/machinery/status_display.html
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+ /obj/machinery/status_display - SPLURT Station 13
+
+
+
+
+
+
+Status display which can show images and scrolling text.
Procs
+ remove_messages Remove both message objs and null the fields.
+Don't call this in subclasses.
+ set_messages Immediately change the display to the given two lines.
+ set_picture Immediately change the display to the given picture.
+ update Update the display and, if necessary, re-enable processing.
+ update_message Create/update message overlay.
+They must be handled as real objects for the animation to run.
+Don't call this in subclasses.
+Arguments:
Proc Details remove_messages()
+
+
+
+
+
+ Remove both message objs and null the fields.
+Don't call this in subclasses.
set_messages(line1, line2)
+
+
+
+
+
+ Immediately change the display to the given two lines.
set_picture(state)
+
+
+
+
+
+ Immediately change the display to the given picture.
update()
+
+
+
+
+
+ Update the display and, if necessary, re-enable processing.
update_message(/obj /effect/overlay/status_display_text/overlay, line_y, message)
+
+
+
+
+
+ Create/update message overlay.
+They must be handled as real objects for the animation to run.
+Don't call this in subclasses.
+Arguments:
+
+overlay - the current /obj/effect/overlay/status_display_text instance
+line_y - The Y offset to render the text.
+message - the new message text.
+Returns new /obj/effect/overlay/status_display_text or null if unchanged.
+
+
+
+
diff --git a/obj/machinery/status_display/ai.html b/obj/machinery/status_display/ai.html
new file mode 100644
index 0000000000000..5916d10a8f41c
--- /dev/null
+++ b/obj/machinery/status_display/ai.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/machinery/status_display/ai - SPLURT Station 13
+
+
+
+
+
+
+Pictograph display which the AI can use to emote.
Vars
+ emotion_map A mapping between AI_EMOTION_* string constants, which also double as user readable descriptions, and the name of the iconfile.
+ Var Details emotion_map
+
+
+
+
+
+ A mapping between AI_EMOTION_* string constants, which also double as user readable descriptions, and the name of the iconfile.
+
+
+
diff --git a/obj/machinery/suit_storage_unit.html b/obj/machinery/suit_storage_unit.html
new file mode 100644
index 0000000000000..44d6036afd522
--- /dev/null
+++ b/obj/machinery/suit_storage_unit.html
@@ -0,0 +1,149 @@
+
+
+
+
+
+
+ /obj/machinery/suit_storage_unit - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ breakout_time How long it takes to break out of the SSU.
+ charge_rate How fast it charges cells in a suit
+ helmet_type What type of space helmet the unit starts with when spawned.
+ locked If the SSU's doors are locked closed. Can be toggled manually via the UI, but is also locked automatically when the UV decontamination sequence is running.
+ mask_type What type of breathmask the unit starts with when spawned.
+ message_cooldown Cooldown for occupant breakout messages via relaymove()
+ mod_type What type of MOD the unit starts with when spawned.
+ safeties If the safety wire is cut/pulsed, the SSU can run the decontamination sequence while occupied by a mob. The mob will be burned during every cycle of cook().
+ shoes_type What type of shoes the unit starts with when spawned.
+ storage_type What type of additional item the unit starts with when spawned.
+ suit_type What type of spacesuit the unit starts with when spawned.
+ uv If UV decontamination sequence is running. See cook()
+ uv_cycles How many cycles remain for the decontamination sequence.
+ uv_super If the hack wire is cut/pulsed.
+Modifies effects of cook() Procs
+ cook UV decontamination sequence.
+Duration is determined by the uv_cycles var.
+Effects determined by the uv_super var.
+ Var Details breakout_time
+
+
+
+
+
+ How long it takes to break out of the SSU.
charge_rate
+
+
+
+
+
+ How fast it charges cells in a suit
helmet_type
+
+
+
+
+
+ What type of space helmet the unit starts with when spawned.
locked
+
+
+
+
+
+ If the SSU's doors are locked closed. Can be toggled manually via the UI, but is also locked automatically when the UV decontamination sequence is running.
mask_type
+
+
+
+
+
+ What type of breathmask the unit starts with when spawned.
message_cooldown
+
+
+
+
+
+ Cooldown for occupant breakout messages via relaymove()
mod_type
+
+
+
+
+
+ What type of MOD the unit starts with when spawned.
safeties
+
+
+
+
+
+ If the safety wire is cut/pulsed, the SSU can run the decontamination sequence while occupied by a mob. The mob will be burned during every cycle of cook().
shoes_type
+
+
+
+
+
+ What type of shoes the unit starts with when spawned.
storage_type
+
+
+
+
+
+ What type of additional item the unit starts with when spawned.
suit_type
+
+
+
+
+
+ What type of spacesuit the unit starts with when spawned.
uv
+
+
+
+
+
+ If UV decontamination sequence is running. See cook()
uv_cycles
+
+
+
+
+
+ How many cycles remain for the decontamination sequence.
uv_super
+
+
+
+
+
+ If the hack wire is cut/pulsed.
+Modifies effects of cook()
+
+If FALSE, decontamination sequence will clear radiation for all atoms (and their contents) contained inside the unit, and burn any mobs inside.
+If TRUE, decontamination sequence will delete all items contained within, and if occupied by a mob, intensifies burn damage delt. All wires will be cut at the end.
+ Proc Details cook()
+
+
+
+
+
+ UV decontamination sequence.
+Duration is determined by the uv_cycles var.
+Effects determined by the uv_super var.
+
+If FALSE, all atoms (and their contents) contained are cleared of radiation. If a mob is inside, they are burned every cycle.
+If TRUE, all items contained are destroyed, and burn damage applied to the mob is increased. All wires will be cut at the end.
+All atoms still inside at the end of all cycles are ejected from the unit.
+
+
+
+
diff --git a/obj/machinery/turretid.html b/obj/machinery/turretid.html
new file mode 100644
index 0000000000000..2c4516372d421
--- /dev/null
+++ b/obj/machinery/turretid.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+ /obj/machinery/turretid - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ ailock AI is unable to use this machine if set to TRUE
+ control_area An area in which linked turrets are located, it can be an area name, path or nothing
+ enabled Variable dictating if linked turrets are active and will shoot targets
+ lethal Variable dictating if linked turrets will shoot lethal projectiles
+ locked Variable dictating if the panel is locked, preventing changes to turret settings
+ shoot_cyborgs Variable dictating if linked turrets will shoot cyborgs
+ turrets List of all linked turrets
+ Var Details ailock
+
+
+
+
+
+ AI is unable to use this machine if set to TRUE
control_area
+
+
+
+
+
+ An area in which linked turrets are located, it can be an area name, path or nothing
enabled
+
+
+
+
+
+ Variable dictating if linked turrets are active and will shoot targets
lethal
+
+
+
+
+
+ Variable dictating if linked turrets will shoot lethal projectiles
locked
+
+
+
+
+
+ Variable dictating if the panel is locked, preventing changes to turret settings
shoot_cyborgs
+
+
+
+
+
+ Variable dictating if linked turrets will shoot cyborgs
turrets
+
+
+
+
+
+ List of all linked turrets
+
+
+
diff --git a/obj/machinery/vending.html b/obj/machinery/vending.html
new file mode 100644
index 0000000000000..62d9fe2ec45f4
--- /dev/null
+++ b/obj/machinery/vending.html
@@ -0,0 +1,423 @@
+
+
+
+
+
+
+ /obj/machinery/vending - SPLURT Station 13
+
+
+
+
+
+
+Captalism in the year 2525, everything in a vending machine, even love
Vars
+ Radio used for narcing on underages
+ active Is the machine active (No sales pitches if off)!
+ age_restrictions Whether our age check is currently functional
+ bill Bills we accept?
+ canload_access_list ID's that can load this vending machine wtih refills
+ coin Coins that we accept?
+ contraband List of products this machine sells when you hack it
+ cost_multiplier_per_dept cost multiplier per department or access
+ default_price Default price of items if not overridden
+ extended_inventory can we access the hidden inventory?
+ extra_price Default price of premium items if not overridden
+ icon_deny Icon to flash when user is denied a vend
+ icon_vend Icon when vending an item to the user
+ input_display_header Display header on the input view
+ last_reply Last world tick we sent a vent reply
+ last_shopper The ref of the last mob to shop with us
+ last_slogan Last world tick we sent a slogan message out
+ light_mask Name of lighting mask for the vending machine
+ loaded_items how many items have been inserted in a vendor
+ onstation Is this item on station or not
+ onstation_override A variable to change on a per instance basis on the map that allows the instance to force cost and ID requirements
+ premium List of premium products this machine sells
+ product_ads String of small ad messages in the vending screen - random chance
+ product_slogans String of slogans separated by semicolons, optional
+ products List of products this machine sells
+ purchase_message_cooldown Next world time to send a purchase message
+ scan_id Are we checking the users ID
+ seconds_electrified World ticks the machine is electified for
+ shoot_inventory When this is TRUE, we fire items at customers! We're broken!
+ shoot_inventory_chance How likely this is to happen (prob 100) per second
+ slogan_delay How many ticks until we can send another
+ small_ads Small ad messages in the vending screen - random chance of popping up whenever you open it
+ vend_ready Are we ready to vend?? Is it time??
+ vend_reply Message sent post vend (Thank you for shopping!) Procs
+ Initialize Initialize the vending machine
+ build_inventory Build the inventory of the vending machine from it's product and record lists
+ canLoadItem Are we able to load the item passed in
+ compartmentLoadAccessCheck Is the passed in user allowed to load this vending machines compartments
+ pre_throw A callback called before an item is tossed out
+ refill_inventory Refill our inventory from the passed in product list into the record list
+ restock Prices of vending machines are all increased uniformly.
+Refill a vending machine from a refill canister
+ shock Shock the passed in user
+ speak Speak the given message verbally
+ throw_impact Crush the mob that the vending machine got thrown at
+ throw_item Throw an item from our internal inventory out in front of us
+ tilt Tilts ontop of the atom supplied, if crit is true some extra shit can happen. Returns TRUE if it dealt damage to something.
+ unbuild_inventory Given a record list, go through and and return a list of type -> amount
+ update_canister Set up a refill canister that matches this machines products
+ Var Details Radio
+
+
+
+
+
+ used for narcing on underages
active
+
+
+
+
+
+ Is the machine active (No sales pitches if off)!
age_restrictions
+
+
+
+
+
+ Whether our age check is currently functional
bill
+
+
+
+
+
+ Bills we accept?
canload_access_list
+
+
+
+
+
+ ID's that can load this vending machine wtih refills
coin
+
+
+
+
+
+ Coins that we accept?
contraband
+
+
+
+
+
+ List of products this machine sells when you hack it
+form should be list(/type/path = amount, /type/path2 = amount2)
cost_multiplier_per_dept
+
+
+
+
+
+ cost multiplier per department or access
default_price
+
+
+
+
+
+ Default price of items if not overridden
extended_inventory
+
+
+
+
+
+ can we access the hidden inventory?
+ Default price of premium items if not overridden
icon_deny
+
+
+
+
+
+ Icon to flash when user is denied a vend
icon_vend
+
+
+
+
+
+ Icon when vending an item to the user
+ Display header on the input view
last_reply
+
+
+
+
+
+ Last world tick we sent a vent reply
last_shopper
+
+
+
+
+
+ The ref of the last mob to shop with us
last_slogan
+
+
+
+
+
+ Last world tick we sent a slogan message out
light_mask
+
+
+
+
+
+ Name of lighting mask for the vending machine
loaded_items
+
+
+
+
+
+ how many items have been inserted in a vendor
onstation
+
+
+
+
+
+ Is this item on station or not
+if it doesn't originate from off-station during mapload, everything is free
onstation_override
+
+
+
+
+
+ A variable to change on a per instance basis on the map that allows the instance to force cost and ID requirements
premium
+
+
+
+
+
+ List of premium products this machine sells
+form should be list(/type/path, /type/path2) as there is only ever one in stock
product_ads
+
+
+
+
+
+ String of small ad messages in the vending screen - random chance
product_slogans
+
+
+
+
+
+ String of slogans separated by semicolons, optional
products
+
+
+
+
+
+ List of products this machine sells
+form should be list(/type/path = amount, /type/path2 = amount2)
purchase_message_cooldown
+
+
+
+
+
+ Next world time to send a purchase message
scan_id
+
+
+
+
+
+ Are we checking the users ID
seconds_electrified
+
+
+
+
+
+ World ticks the machine is electified for
shoot_inventory
+
+
+
+
+
+ When this is TRUE, we fire items at customers! We're broken!
shoot_inventory_chance
+
+
+
+
+
+ How likely this is to happen (prob 100) per second
slogan_delay
+
+
+
+
+
+ How many ticks until we can send another
small_ads
+
+
+
+
+
+ Small ad messages in the vending screen - random chance of popping up whenever you open it
vend_ready
+
+
+
+
+
+ Are we ready to vend?? Is it time??
vend_reply
+
+
+
+
+
+ Message sent post vend (Thank you for shopping!)
Proc Details Initialize(mapload)
+
+
+
+
+
+ Initialize the vending machine
+Builds the vending machine inventory, sets up slogans and other such misc work
+This also sets the onstation var to:
+
+FALSE - if the machine was maploaded on a zlevel that doesn't pass the is_station_level check
+TRUE - all other cases
+ build_inventory(/list/productlist, /list/recordlist, start_empty)
+
+
+
+
+
+ Build the inventory of the vending machine from it's product and record lists
+This builds up a full set of /datum/data/vending_products from the product list of the vending machine type
+Arguments:
+
+productlist - the list of products that need to be converted
+recordlist - the list containing /datum/data/vending_product datums
+startempty - should we set vending_product record amount from the product list (so it's prefilled at roundstart)
+ canLoadItem
+
+ Are we able to load the item passed in
+Arguments:
+
+I - the item being loaded
+user - the user doing the loading
+ compartmentLoadAccessCheck
+
+ Is the passed in user allowed to load this vending machines compartments
+Arguments:
+
+user - mob that is doing the loading of the vending machine
+ pre_throw
+
+ A callback called before an item is tossed out
+Override this if you need to do any special case handling
+Arguments:
+
+I - obj/item being thrown
+ refill_inventory(/list/productlist, /list/recordlist)
+
+
+
+
+
+ Refill our inventory from the passed in product list into the record list
+Arguments:
+
+productlist - list of types -> amount
+recordlist - existing record datums
+ restock(/obj /item /vending_refill/canister)
+
+
+
+
+
+ Prices of vending machines are all increased uniformly.
+Refill a vending machine from a refill canister
+This takes the products from the refill canister and then fills the products,contraband and premium product categories
+Arguments:
+
+canister - the vending canister we are refilling from
+ shock
+
+ Shock the passed in user
+This checks we have power and that the passed in prob is passed, then generates some sparks
+and calls electrocute_mob on the user
+Arguments:
+
+user - the user to shock
+prb - probability the shock happens
+ speak(message)
+
+
+
+
+
+ Speak the given message verbally
+Checks if the machine is powered and the message exists
+Arguments:
+
+message - the message to speak
+ throw_impact
+
+ Crush the mob that the vending machine got thrown at
throw_item()
+
+
+
+
+
+ Throw an item from our internal inventory out in front of us
+This is called when we are hacked, it selects a random product from the records that has an amount > 0
+This item is then created and tossed out in front of us with a visible message
tilt(/atom /fatty, crit)
+
+
+
+
+
+ Tilts ontop of the atom supplied, if crit is true some extra shit can happen. Returns TRUE if it dealt damage to something.
unbuild_inventory(/list/recordlist)
+
+
+
+
+
+ Given a record list, go through and and return a list of type -> amount
update_canister()
+
+
+
+
+
+ Set up a refill canister that matches this machines products
+This is used when the machine is deconstructed, so the items aren't "lost"
+
+
+
diff --git a/obj/machinery/vending/custom.html b/obj/machinery/vending/custom.html
new file mode 100644
index 0000000000000..3c682da44393a
--- /dev/null
+++ b/obj/machinery/vending/custom.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ /obj/machinery/vending/custom - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details base64_cache
+
+
+
+
+
+ Base64 cache of custom icons.
max_loaded_items
+
+
+
+
+
+ max number of items that the custom vendor can hold
+ where the money is sent
+
+
+
diff --git a/obj/modular_map_root.html b/obj/modular_map_root.html
new file mode 100644
index 0000000000000..f278b77c7b383
--- /dev/null
+++ b/obj/modular_map_root.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ /obj/modular_map_root - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ config_file Points to a .toml file storing configuration data about the modules associated with this root
+ key Key used to look up the appropriate map paths in the associated .toml file Procs
+ load_map Randonly selects a map file from the TOML config specified in config_file, loads it, then deletes itself.
+ Var Details config_file
+
+
+
+
+
+ Points to a .toml file storing configuration data about the modules associated with this root
key
+
+
+
+
+
+ Key used to look up the appropriate map paths in the associated .toml file
Proc Details load_map()
+
+
+
+
+
+ Randonly selects a map file from the TOML config specified in config_file, loads it, then deletes itself.
+
+
+
diff --git a/obj/structure/alien/resin/flower_bud_enemy.html b/obj/structure/alien/resin/flower_bud_enemy.html
new file mode 100644
index 0000000000000..ecd0b85f85d9f
--- /dev/null
+++ b/obj/structure/alien/resin/flower_bud_enemy.html
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+ /obj/structure/alien/resin/flower_bud_enemy - SPLURT Station 13
+
+
+
+
+
+
+Kudzu Flower Bud
+A flower created by flowering kudzu which spawns a venus human trap after a certain amount of time has passed.
+A flower created by kudzu with the flowering mutation. Spawns a venus human trap after 2 minutes under normal circumstances.
+Also spawns 4 vines going out in diagonal directions from the bud. Any living creature not aligned with plants is damaged by these vines.
+Once it grows a venus human trap, the bud itself will destroy itself.
Vars
+ growth_time The amount of time it takes to create a venus human trap, in deciseconds Procs
+ bear_fruit Spawns a venus human trap, then qdels itself.
+ Var Details growth_time
+
+
+
+
+
+ The amount of time it takes to create a venus human trap, in deciseconds
Proc Details bear_fruit()
+
+
+
+
+
+ Spawns a venus human trap, then qdels itself.
+Displays a message, spawns a human venus trap, then qdels itself.
+
+
+
diff --git a/obj/structure/bed/double.html b/obj/structure/bed/double.html
new file mode 100644
index 0000000000000..a02985cf339e5
--- /dev/null
+++ b/obj/structure/bed/double.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/structure/bed/double - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ goldilocks The mob who buckled to this bed second, to avoid other mobs getting pixel-shifted before he unbuckles.
+ Var Details goldilocks
+
+
+
+
+
+ The mob who buckled to this bed second, to avoid other mobs getting pixel-shifted before he unbuckles.
+
+
+
diff --git a/obj/structure/bloodsucker/candelabrum.html b/obj/structure/bloodsucker/candelabrum.html
new file mode 100644
index 0000000000000..79c1e1b7eff81
--- /dev/null
+++ b/obj/structure/bloodsucker/candelabrum.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /obj/structure/bloodsucker/candelabrum - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ Destroy obj/structure/bloodsucker/candelabrum/is_hot() // candle.dm
Proc Details Destroy()
+
+
+
+
+
+ obj/structure/bloodsucker/candelabrum/is_hot() // candle.dm
+
+
+
diff --git a/obj/structure/bookcase.html b/obj/structure/bookcase.html
new file mode 100644
index 0000000000000..5a23b83d95abc
--- /dev/null
+++ b/obj/structure/bookcase.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ /obj/structure/bookcase - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ books_to_load How many random books to generate.
+ load_random_books When enabled, books_to_load number of random books will be generated for this bookcase when first interacted with.
+ random_category The category of books to pick from when populating random books.
+ Var Details books_to_load
+
+
+
+
+
+ How many random books to generate.
load_random_books
+
+
+
+
+
+ When enabled, books_to_load number of random books will be generated for this bookcase when first interacted with.
random_category
+
+
+
+
+
+ The category of books to pick from when populating random books.
+
+
+
diff --git a/obj/structure/cable.html b/obj/structure/cable.html
new file mode 100644
index 0000000000000..2e1f3ea111cb5
--- /dev/null
+++ b/obj/structure/cable.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /obj/structure/cable - SPLURT Station 13
+
+
+
+
+
+
+Proc Details shuttleRotate(rotation, params)
+
+
+
+
+
+ Structure rotate procs
+
+
+
diff --git a/obj/structure/cannon.html b/obj/structure/cannon.html
new file mode 100644
index 0000000000000..4973e63e0cb63
--- /dev/null
+++ b/obj/structure/cannon.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/structure/cannon - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details anchorable_cannon
+
+
+
+
+
+ whether the cannon can be unwrenched from the ground.
+
+
+
diff --git a/obj/structure/carp_rift.html b/obj/structure/carp_rift.html
new file mode 100644
index 0000000000000..a2e2510e133db
--- /dev/null
+++ b/obj/structure/carp_rift.html
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+ /obj/structure/carp_rift - SPLURT Station 13
+
+
+
+
+
+
+The portals Space Dragon summons to bring carp onto the station.
+The portals Space Dragon summons to bring carp onto the station. His main objective is to summon 3 of them and protect them from being destroyed.
+The portals can summon sentient space carp in limited amounts. The portal also changes color based on whether or not a carp spawn is available.
+Once it is fully charged, it becomes indestructible, and intermitently spawns non-sentient carp. It is still destroyed if Space Dragon dies.
Vars
+ carp_interval The interval for adding additional space carp spawns to the rift.
+ carp_stored How many carp spawns it has available.
+ charge_state Current charge state of the rift.
+ dragon A reference to the Space Dragon that created it.
+ last_carp_inc The time since an extra carp was added to the ghost role spawning pool.
+ max_charge The maximum charge the rift can have.
+ time_charged The amount of time the rift has charged for. Procs
+ summon_carp Used to create carp controlled by ghosts when the option is available.
+ update_check Does a series of checks based on the portal's status.
+ Var Details carp_interval
+
+
+
+
+
+ The interval for adding additional space carp spawns to the rift.
carp_stored
+
+
+
+
+
+ How many carp spawns it has available.
charge_state
+
+
+
+
+
+ Current charge state of the rift.
+ A reference to the Space Dragon that created it.
last_carp_inc
+
+
+
+
+
+ The time since an extra carp was added to the ghost role spawning pool.
max_charge
+
+
+
+
+
+ The maximum charge the rift can have.
time_charged
+
+
+
+
+
+ The amount of time the rift has charged for.
Proc Details summon_carp
+
+ Used to create carp controlled by ghosts when the option is available.
+Creates a carp for the ghost to control if we have a carp spawn available.
+Gives them prompt to control a carp, and if our circumstances still allow if when they hit yes, spawn them in as a carp.
+Also add them to the list of carps in Space Dragon's antgonist datum, so they'll be displayed as having assisted him on round end.
+Arguments:
+
+mob/user - The ghost which will take control of the carp.
+ update_check()
+
+
+
+
+
+ Does a series of checks based on the portal's status.
+Performs a number of checks based on the current charge of the portal, and triggers various effects accordingly.
+If the current charge is a multiple of carp_interval, add an extra carp spawn.
+If we're halfway charged, announce to the crew our location in a CENTCOM announcement.
+If we're fully charged, tell the crew we are, change our color to yellow, become invulnerable, and give Space Dragon the ability to make another rift, if he hasn't summoned 3 total.
+
+
+
diff --git a/obj/structure/carving_block.html b/obj/structure/carving_block.html
new file mode 100644
index 0000000000000..8daa0c0a0618e
--- /dev/null
+++ b/obj/structure/carving_block.html
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+ /obj/structure/carving_block - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details completion
+
+
+
+
+
+ statue completion from 0 to 1.0
current_preset_type
+
+
+
+
+
+ Currently chosen preset statue type
current_target
+
+
+
+
+
+ The thing it will look like - Unmodified resulting statue appearance
greyscale_with_value_bump
+
+
+
+
+
+ HSV color filters parameters
target_appearance_with_filters
+
+
+
+
+
+ Greyscaled target with cutout filter
Proc Details get_possible_statues()
+
+
+
+
+
+ Returns a list of preset statues carvable from this block depending on the custom materials
+
+
+
diff --git a/obj/structure/closet.html b/obj/structure/closet.html
new file mode 100644
index 0000000000000..36e77ab66265f
--- /dev/null
+++ b/obj/structure/closet.html
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+ /obj/structure/closet - SPLURT Station 13
+
+
+
+
+
+
+Proc Details after_close
+
+ Proc to override for effects after closing a door
after_open
+
+ Proc to override for effects after opening a door
+ cit specific
+
+
+
diff --git a/obj/structure/closet/crate/mail.html b/obj/structure/closet/crate/mail.html
new file mode 100644
index 0000000000000..c9416bc490b92
--- /dev/null
+++ b/obj/structure/closet/crate/mail.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /obj/structure/closet/crate/mail - SPLURT Station 13
+
+
+
+
+
+
+Crate for mail from CentCom.
Vars
+ postmarked if it'll show the nt mark on the crate Procs
+ populate Fills this mail crate with N pieces of mail, where N is the lower of the amount var passed, and the maximum capacity of this crate. If N is larger than the number of alive human players, the excess will be junkmail.
+ Var Details postmarked
+
+
+
+
+
+ if it'll show the nt mark on the crate
Proc Details populate(amount)
+
+
+
+
+
+ Fills this mail crate with N pieces of mail, where N is the lower of the amount var passed, and the maximum capacity of this crate. If N is larger than the number of alive human players, the excess will be junkmail.
+
+
+
diff --git a/obj/structure/closet/crate/mail/economy.html b/obj/structure/closet/crate/mail/economy.html
new file mode 100644
index 0000000000000..bf0fbbed2caa8
--- /dev/null
+++ b/obj/structure/closet/crate/mail/economy.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /obj/structure/closet/crate/mail/economy - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ Initialize Crate for mail that automatically depletes the economy subsystem's pending mail counter.
Proc Details Initialize(mapload)
+
+
+
+
+
+ Crate for mail that automatically depletes the economy subsystem's pending mail counter.
+
+
+
diff --git a/obj/structure/closet/crate/secure/owned.html b/obj/structure/closet/crate/secure/owned.html
new file mode 100644
index 0000000000000..9b80064ae29b4
--- /dev/null
+++ b/obj/structure/closet/crate/secure/owned.html
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+ /obj/structure/closet/crate/secure/owned - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details
+ Account of the person buying the crate if private purchasing.
department_account
+
+
+
+
+
+ Department of the person buying the crate if buying via the NIRN app.
department_purchase
+
+
+
+
+
+ Is the crate being bought by a person, or a budget card?
privacy_lock
+
+
+
+
+
+ Is the secure crate opened or closed?
+
+
+
diff --git a/obj/structure/closet/secure_closet/cargo/owned.html b/obj/structure/closet/secure_closet/cargo/owned.html
new file mode 100644
index 0000000000000..d2eaa0e7eb63a
--- /dev/null
+++ b/obj/structure/closet/secure_closet/cargo/owned.html
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+ /obj/structure/closet/secure_closet/cargo/owned - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details
+ Account of the person buying the crate if private purchasing.
department_account
+
+
+
+
+
+ Department of the person buying the crate if buying via the NIRN app.
department_purchase
+
+
+
+
+
+ Is the crate being bought by a person, or a budget card?
privacy_lock
+
+
+
+
+
+ Is the secure crate opened or closed?
+
+
+
diff --git a/obj/structure/closet/supplypod.html b/obj/structure/closet/supplypod.html
new file mode 100644
index 0000000000000..025054aad09aa
--- /dev/null
+++ b/obj/structure/closet/supplypod.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/structure/closet/supplypod - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ pod_flags List of bitflags for supply pods, see: code__DEFINES\obj_flags.dm
+ Var Details pod_flags
+
+
+
+
+
+ List of bitflags for supply pods, see: code__DEFINES\obj_flags.dm
+
+
+
diff --git a/obj/structure/displaycase/forsale.html b/obj/structure/displaycase/forsale.html
new file mode 100644
index 0000000000000..e2fe5aa62dd09
--- /dev/null
+++ b/obj/structure/displaycase/forsale.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ /obj/structure/displaycase/forsale - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ payments_acc The Account which will receive payment for purchases. Set by the first ID to swipe the tray.
+ sale_price The price of the item being sold. Altered by grab intent ID use.
+ viewing_ui We're using the same trick as paper does in order to cache the image, and only load the UI when messed with.
+ Var Details
+ The Account which will receive payment for purchases. Set by the first ID to swipe the tray.
sale_price
+
+
+
+
+
+ The price of the item being sold. Altered by grab intent ID use.
viewing_ui
+
+
+
+
+
+ We're using the same trick as paper does in order to cache the image, and only load the UI when messed with.
+
+
+
diff --git a/obj/structure/eldritch_crucible.html b/obj/structure/eldritch_crucible.html
new file mode 100644
index 0000000000000..315aabb124cb3
--- /dev/null
+++ b/obj/structure/eldritch_crucible.html
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+ /obj/structure/eldritch_crucible - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ current_mass How much mass this currently holds
+ in_use Check to see if it is currently being used.
+ max_mass Maximum amount of mass Procs
+ devour Proc that eats the active limb of the victim
+ Var Details current_mass
+
+
+
+
+
+ How much mass this currently holds
in_use
+
+
+
+
+
+ Check to see if it is currently being used.
max_mass
+
+
+
+
+
+ Maximum amount of mass
Proc Details
+ Proc that eats the active limb of the victim
+
+
+
diff --git a/obj/structure/energy_net.html b/obj/structure/energy_net.html
new file mode 100644
index 0000000000000..356fe20378ef3
--- /dev/null
+++ b/obj/structure/energy_net.html
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+ /obj/structure/energy_net - SPLURT Station 13
+
+
+
+
+
+
+Energy net which ensnares prey until it is destroyed. Used by space ninjas.
+Energy net which keeps its target from moving until it is destroyed. Used to send
+players to a holding area in which they could never leave, but such feature has since
+been removed.
Vars
+ affecting The creature currently caught in the net
+ Var Details affecting
+
+
+
+
+
+ The creature currently caught in the net
+
+
+
diff --git a/obj/structure/filingcabinet/employment.html b/obj/structure/filingcabinet/employment.html
new file mode 100644
index 0000000000000..28d0d3b2c3e0b
--- /dev/null
+++ b/obj/structure/filingcabinet/employment.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/structure/filingcabinet/employment - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ virgin This var is so that its filled on crew interaction to be as accurate (including latejoins) as possible, true until first interact
+ Var Details virgin
+
+
+
+
+
+ This var is so that its filled on crew interaction to be as accurate (including latejoins) as possible, true until first interact
+
+
+
diff --git a/obj/structure/filingcabinet/medical.html b/obj/structure/filingcabinet/medical.html
new file mode 100644
index 0000000000000..0fb9c96d8dc9f
--- /dev/null
+++ b/obj/structure/filingcabinet/medical.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/structure/filingcabinet/medical - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ virgin This var is so that its filled on crew interaction to be as accurate (including latejoins) as possible, true until first interact
+ Var Details virgin
+
+
+
+
+
+ This var is so that its filled on crew interaction to be as accurate (including latejoins) as possible, true until first interact
+
+
+
diff --git a/obj/structure/flora/rock.html b/obj/structure/flora/rock.html
new file mode 100644
index 0000000000000..b1fcae2fcf703
--- /dev/null
+++ b/obj/structure/flora/rock.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /obj/structure/flora/rock - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ mineAmount Amount of the itemstack to drop
+ mineResult Itemstack that is dropped when a rock is mined with a pickaxe
+ Var Details mineAmount
+
+
+
+
+
+ Amount of the itemstack to drop
mineResult
+
+
+
+
+
+ Itemstack that is dropped when a rock is mined with a pickaxe
+
+
+
diff --git a/obj/structure/fluff/iced_abductor.html b/obj/structure/fluff/iced_abductor.html
new file mode 100644
index 0000000000000..dd2eac3aa799a
--- /dev/null
+++ b/obj/structure/fluff/iced_abductor.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/structure/fluff/iced_abductor - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ name Unless more non-machine ayy structures made, it will stay in fluff.
+ Var Details name
+
+
+
+
+
+ Unless more non-machine ayy structures made, it will stay in fluff.
+
+
+
diff --git a/obj/structure/glowshroom.html b/obj/structure/glowshroom.html
new file mode 100644
index 0000000000000..e706418b3ecee
--- /dev/null
+++ b/obj/structure/glowshroom.html
@@ -0,0 +1,111 @@
+
+
+
+
+
+
+ /obj/structure/glowshroom - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details blacklisted_glowshroom_turfs
+
+
+
+
+
+ Turfs where the glowshroom cannot spread to
delay_decay
+
+
+
+
+
+ Time interval between glowshroom decay checks
delay_spread
+
+
+
+
+
+ Time interval between glowshroom "spreads"
floor
+
+
+
+
+
+ Boolean to indicate if the shroom is on the floor/wall
generation
+
+
+
+
+
+ Mushroom generation number
+ Internal seed of the glowshroom, stats are stored here
spreadIntoAdjacentChance
+
+
+
+
+
+ Chance to spread into adjacent tiles (0-100)
Proc Details Decay(spread, amount)
+
+
+
+
+
+ Causes the glowshroom to decay by decreasing its endurance.
+Arguments:
+
+spread - Boolean to indicate if the decay is due to spreading or natural decay.
+amount - Amount of endurance to be reduced due to spread decay.
+ Initialize
+
+ Creates a new glowshroom structure.
+
+Arguments:
+
+newseed - Seed of the shroom
+mutate_stats - If the plant needs to mutate their stats
+spread - If the plant is a result of spreading, reduce its stats
+ Spread()
+
+
+
+
+
+ Causes glowshroom spreading across the floor/walls.
+
+
+
diff --git a/obj/structure/grille.html b/obj/structure/grille.html
new file mode 100644
index 0000000000000..e2f47e1eb4b93
--- /dev/null
+++ b/obj/structure/grille.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /obj/structure/grille - SPLURT Station 13
+
+
+
+
+
+
+Proc Details beforeShuttleMove
+
+ Structure move procs
+
+
+
diff --git a/obj/structure/janitorialcart.html b/obj/structure/janitorialcart.html
new file mode 100644
index 0000000000000..8f2b884543119
--- /dev/null
+++ b/obj/structure/janitorialcart.html
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+ /obj/structure/janitorialcart - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ check_menu check_menu: Checks if we are allowed to interact with a radial menu
Proc Details
+ check_menu: Checks if we are allowed to interact with a radial menu
+Arguments:
+
+user The mob interacting with a menu
+
+
+
+
diff --git a/obj/structure/legionturret.html b/obj/structure/legionturret.html
new file mode 100644
index 0000000000000..131d1d439069b
--- /dev/null
+++ b/obj/structure/legionturret.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+ /obj/structure/legionturret - SPLURT Station 13
+
+
+
+
+
+
+A basic turret that shoots at nearby mobs. Intended to be used for the legion megafauna.
Vars
+ faction Compared with the targeted mobs. If they have the faction, turret won't shoot.
+ initial_firing_time Time until the tracer gets shot
+ projectile_type What kind of projectile the actual damaging part should be.
+ shot_delay How long it takes between shooting the tracer and the projectile. Procs
+ fire Called when attacking a target. Shoots a projectile at the turf underneath the target.
+ fire_beam Called shot_delay after the turret shot the tracer. Shoots a projectile into the same direction.
+ set_up_shot Handles an extremely basic AI
+ Var Details faction
+
+
+
+
+
+ Compared with the targeted mobs. If they have the faction, turret won't shoot.
initial_firing_time
+
+
+
+
+
+ Time until the tracer gets shot
projectile_type
+
+
+
+
+
+ What kind of projectile the actual damaging part should be.
shot_delay
+
+
+
+
+
+ How long it takes between shooting the tracer and the projectile.
Proc Details fire
+
+ Called when attacking a target. Shoots a projectile at the turf underneath the target.
fire_beam(angle)
+
+
+
+
+
+ Called shot_delay after the turret shot the tracer. Shoots a projectile into the same direction.
set_up_shot()
+
+
+
+
+
+ Handles an extremely basic AI
+
+
+
diff --git a/obj/structure/loom.html b/obj/structure/loom.html
new file mode 100644
index 0000000000000..d460486cc2a7e
--- /dev/null
+++ b/obj/structure/loom.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /obj/structure/loom - SPLURT Station 13
+
+
+
+
+
+
+This is a loom. It's usually made out of wood and used to weave fabric like durathread or cotton into their respective cloth types.
Procs
+ weave Handles the weaving.
Proc Details
+ Handles the weaving.
+
+
+
diff --git a/obj/structure/noticeboard.html b/obj/structure/noticeboard.html
new file mode 100644
index 0000000000000..d41fbc6f7942f
--- /dev/null
+++ b/obj/structure/noticeboard.html
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+ /obj/structure/noticeboard - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ notices Current number of a pinned notices Procs
+ remove_item Removes an item from the notice board
+ Var Details notices
+
+
+
+
+
+ Current number of a pinned notices
Proc Details remove_item
+
+ Removes an item from the notice board
+Arguments:
+
+item - The item that is to be removed
+user - The mob that is trying to get the item removed, if there is one
+
+
+
+
diff --git a/obj/structure/railing.html b/obj/structure/railing.html
new file mode 100644
index 0000000000000..b77fabe0ec992
--- /dev/null
+++ b/obj/structure/railing.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /obj/structure/railing - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ ini_dir Initial direction of the railing. Procs
+ wrench_act Implements behaviour that makes it possible to unanchor the railing.
+ Var Details ini_dir
+
+
+
+
+
+ Initial direction of the railing.
Proc Details
+ Implements behaviour that makes it possible to unanchor the railing.
+
+
+
diff --git a/obj/structure/safe.html b/obj/structure/safe.html
new file mode 100644
index 0000000000000..15985af8d8e34
--- /dev/null
+++ b/obj/structure/safe.html
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+ /obj/structure/safe - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ current_tumbler_index The index in the tumblers list of the tumbler dial position that needs to be hit
+ dial The position the dial is pointing to
+ explosion_count Tough, but breakable if explosion counts reaches set value
+ locked Whether the safe is locked or not
+ maxspace The maximum combined w_class of stuff in the safe
+ number_of_tumblers The amount of tumblers that will be generated
+ open Whether the safe is open or not
+ space The combined w_class of everything in the safe
+ tumblers The list of tumbler dial positions that need to be hit Procs
+ check_broken Checks if safe is considered in a broken state for force-opening the safe
+ check_unlocked Called every dial turn to determine whether the safe should unlock or not.
+ notify_user Called every dial turn to provide feedback if possible.
+ Var Details current_tumbler_index
+
+
+
+
+
+ The index in the tumblers list of the tumbler dial position that needs to be hit
dial
+
+
+
+
+
+ The position the dial is pointing to
explosion_count
+
+
+
+
+
+ Tough, but breakable if explosion counts reaches set value
locked
+
+
+
+
+
+ Whether the safe is locked or not
maxspace
+
+
+
+
+
+ The maximum combined w_class of stuff in the safe
number_of_tumblers
+
+
+
+
+
+ The amount of tumblers that will be generated
open
+
+
+
+
+
+ Whether the safe is open or not
space
+
+
+
+
+
+ The combined w_class of everything in the safe
tumblers
+
+
+
+
+
+ The list of tumbler dial positions that need to be hit
Proc Details check_broken()
+
+
+
+
+
+ Checks if safe is considered in a broken state for force-opening the safe
check_unlocked()
+
+
+
+
+
+ Called every dial turn to determine whether the safe should unlock or not.
notify_user(user, canhear, sounds, total_ticks, current_tick)
+
+
+
+
+
+ Called every dial turn to provide feedback if possible.
+
+
+
diff --git a/obj/structure/sign/painting.html b/obj/structure/sign/painting.html
new file mode 100644
index 0000000000000..475bf0fc1a9ab
--- /dev/null
+++ b/obj/structure/sign/painting.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /obj/structure/sign/painting - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details current_canvas
+
+
+
+
+
+ Canvas we're currently displaying.
desc_with_canvas
+
+
+
+
+
+ Description set when canvas is added.
+
+
+
diff --git a/obj/structure/spawner/ice_moon.html b/obj/structure/spawner/ice_moon.html
new file mode 100644
index 0000000000000..b5b74bf774d7f
--- /dev/null
+++ b/obj/structure/spawner/ice_moon.html
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+ /obj/structure/spawner/ice_moon - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ clear_rock Clears rocks around the spawner when it is created
+ destroy_effect Effects and messages created when the spawner is destroyed
+ drop_loot Drops items after the spawner is destroyed
Proc Details clear_rock()
+
+
+
+
+
+ Clears rocks around the spawner when it is created
destroy_effect()
+
+
+
+
+
+ Effects and messages created when the spawner is destroyed
drop_loot()
+
+
+
+
+
+ Drops items after the spawner is destroyed
+
+
+
diff --git a/obj/structure/statue.html b/obj/structure/statue.html
new file mode 100644
index 0000000000000..5147a00c3c959
--- /dev/null
+++ b/obj/structure/statue.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ /obj/structure/statue - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details abstract_type
+
+
+
+
+
+ Abstract root type
art_type
+
+
+
+
+
+ Art component subtype added to this statue
impressiveness
+
+
+
+
+
+ Beauty component mood modifier
+
+
+
diff --git a/obj/structure/statue/custom.html b/obj/structure/statue/custom.html
new file mode 100644
index 0000000000000..0984282be25ac
--- /dev/null
+++ b/obj/structure/statue/custom.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/structure/statue/custom - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details content_ma
+
+
+
+
+
+ primary statue overlay
+
+
+
diff --git a/obj/structure/table.html b/obj/structure/table.html
new file mode 100644
index 0000000000000..a34cda1f068f6
--- /dev/null
+++ b/obj/structure/table.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+ /obj/structure/table - SPLURT Station 13
+
+
+
+
+
+
+Proc Details connected_floodfill(max)
+
+
+
+
+
+ Gets all connected tables
+Cardinals only
+
+
+
diff --git a/obj/structure/tank_holder.html b/obj/structure/tank_holder.html
new file mode 100644
index 0000000000000..9ed640c3d96de
--- /dev/null
+++ b/obj/structure/tank_holder.html
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+ /obj/structure/tank_holder - SPLURT Station 13
+
+
+
+
+
+
+?
Vars
+ tank The stored tank. If this is a path, it gets created into contents at Initialize. Procs
+ after_detach_tank Call this after taking the tank from contents in order to update references, icon
+and density.
+ Var Details tank
+
+
+
+
+
+ The stored tank. If this is a path, it gets created into contents at Initialize.
Proc Details after_detach_tank()
+
+
+
+
+
+ Call this after taking the tank from contents in order to update references, icon
+and density.
+
+
+
diff --git a/obj/structure/trap/eldritch.html b/obj/structure/trap/eldritch.html
new file mode 100644
index 0000000000000..a23d61c68ce28
--- /dev/null
+++ b/obj/structure/trap/eldritch.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /obj/structure/trap/eldritch - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ owner Owner of the trap Procs
+ set_owner Proc that sets the owner
+ Var Details owner
+
+
+
+
+
+ Owner of the trap
Proc Details set_owner(/mob /_owner)
+
+
+
+
+
+ Proc that sets the owner
+
+
+
diff --git a/obj/structure/window.html b/obj/structure/window.html
new file mode 100644
index 0000000000000..d2a36bce241d8
--- /dev/null
+++ b/obj/structure/window.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /obj/structure/window - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ electrochromatic_id Electrochromatic ID. Set the first character to ! to replace with a SSmapping generated pseudorandom obfuscated ID for mapping purposes.
+ electrochromatic_status Electrochromatic status
+ Var Details electrochromatic_id
+
+
+
+
+
+ Electrochromatic ID. Set the first character to ! to replace with a SSmapping generated pseudorandom obfuscated ID for mapping purposes.
electrochromatic_status
+
+
+
+
+
+ Electrochromatic status
+
+
+
diff --git a/obj/vehicle/ridden/scooter/skateboard.html b/obj/vehicle/ridden/scooter/skateboard.html
new file mode 100644
index 0000000000000..c12ac924bdc68
--- /dev/null
+++ b/obj/vehicle/ridden/scooter/skateboard.html
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+ /obj/vehicle/ridden/scooter/skateboard - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ board_icon Stores the default icon state
+ board_item_type The handheld item counterpart for the board
+ grinding Whether the board is currently grinding
+ instability Stamina drain multiplier
+ next_crash Stores the time of the last crash plus a short cooldown, affects availability and outcome of certain actions Procs
+ grind Moves the vehicle forward and if it lands on a table, repeats
+ Var Details board_icon
+
+
+
+
+
+ Stores the default icon state
board_item_type
+
+
+
+
+
+ The handheld item counterpart for the board
grinding
+
+
+
+
+
+ Whether the board is currently grinding
instability
+
+
+
+
+
+ Stamina drain multiplier
next_crash
+
+
+
+
+
+ Stores the time of the last crash plus a short cooldown, affects availability and outcome of certain actions
Proc Details grind()
+
+
+
+
+
+ Moves the vehicle forward and if it lands on a table, repeats
+
+
+
diff --git a/obj/vehicle/sealed/car/clowncar.html b/obj/vehicle/sealed/car/clowncar.html
new file mode 100644
index 0000000000000..d2e0b7629a590
--- /dev/null
+++ b/obj/vehicle/sealed/car/clowncar.html
@@ -0,0 +1,132 @@
+
+
+
+
+
+
+ /obj/vehicle/sealed/car/clowncar - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ cannonmode Current status of the cannon, alternates between CLOWN_CANNON_INACTIVE, CLOWN_CANNON_BUSY and CLOWN_CANNON_READY
+ dice_cooldown_time Cooldown time inbetween [/obj/vehicle/sealed/car/clowncar/proc/roll_the_dice()] usages
+ headlight_colors list of headlight colors we use to pick through when we have party mode due to emag
+ thankscount How many times kidnappers in the clown car said thanks Procs
+ activate_cannon Finalizes canon activation
+ cover_in_oil Deploys oil when the clowncar moves in oil deploy mode
+ deactivate_cannon Finalizes canon deactivation
+ fire_cannon_at Fires the cannon where the user clicks
+ increment_thanks_counter Increments the thanks counter every time someone thats been kidnapped thanks the driver
+ reset_icon resets the icon and iconstate of the clowncar after it was set to singulo states
+ roll_the_dice Plays a random funky effect
+Only available while car is emagged
+Possible effects:
+ stop_dropping_oil Stops dropping oil after the time has run up
+ toggle_cannon Toggles the on and off state of the clown cannon that shoots random kidnapped people
+ Var Details cannonmode
+
+
+
+
+
+ Current status of the cannon, alternates between CLOWN_CANNON_INACTIVE, CLOWN_CANNON_BUSY and CLOWN_CANNON_READY
dice_cooldown_time
+
+
+
+
+
+ Cooldown time inbetween [/obj/vehicle/sealed/car/clowncar/proc/roll_the_dice()] usages
headlight_colors
+
+
+
+
+
+ list of headlight colors we use to pick through when we have party mode due to emag
thankscount
+
+
+
+
+
+ How many times kidnappers in the clown car said thanks
Proc Details activate_cannon()
+
+
+
+
+
+ Finalizes canon activation
cover_in_oil()
+
+
+
+
+
+ Deploys oil when the clowncar moves in oil deploy mode
deactivate_cannon()
+
+
+
+
+
+ Finalizes canon deactivation
fire_cannon_at
+
+ Fires the cannon where the user clicks
increment_thanks_counter()
+
+
+
+
+
+ Increments the thanks counter every time someone thats been kidnapped thanks the driver
reset_icon()
+
+
+
+
+
+ resets the icon and iconstate of the clowncar after it was set to singulo states
roll_the_dice
+
+ Plays a random funky effect
+Only available while car is emagged
+Possible effects:
+
+Spawn bananapeel
+Spawn random reagent foam
+Make the clown car look like a singulo temporarily
+Spawn Laughing chem gas
+Drop oil
+Fart and make everyone nearby laugh
+ stop_dropping_oil()
+
+
+
+
+
+ Stops dropping oil after the time has run up
toggle_cannon
+
+ Toggles the on and off state of the clown cannon that shoots random kidnapped people
+
+
+
diff --git a/obj/vehicle/sealed/mecha.html b/obj/vehicle/sealed/mecha.html
new file mode 100644
index 0000000000000..069e95c7cfe90
--- /dev/null
+++ b/obj/vehicle/sealed/mecha.html
@@ -0,0 +1,574 @@
+
+
+
+
+
+
+ /obj/vehicle/sealed/mecha - SPLURT Station 13
+
+
+
+
+
+
+WELCOME TO MECHA.DM, ENJOY YOUR STAY
+Mechs are now (finally) vehicles, this means you can make them multicrew
+They can also grant select ability buttons based on occupant bitflags
+Movement is handled through vehicle_move() which is called by relaymove
+Clicking is done by way of signals registering to the entering mob
+NOTE: MMIS are NOT mobs but instead contain a brain that is, so you need special checks
+AI also has special checks becaus it gets in and out of the mech differently
+Always call remove_occupant(mob) when leaving the mech so the mob is removed properly
+For multi-crew, you need to set how the occupants recieve ability bitflags corresponding to their status on the vehicle(i.e: driver, gunner etc)
+Abilities can then be set to only apply for certain bitflags and are assigned as such automatically
+Clicks are wither translated into mech_melee_attack (see mech_melee_attack.dm)
+Or are used to call action() on equipped gear
+Cooldown for gear is on the mech because exploits
Vars
+ active_thrusters /Action vars
+Ref to any active thrusters we might have
+ allow_diagonal_movement Whether this mech is allowed to move diagonally
+ bumpsmash Whether or not the mech destroys walls by running into it.
+ cabin_air Internal air mix datum
+ capacitor Keeps track of the mech's capacitor
+ cell Keeps track of the mech's cell
+ completely_disabled Just stop the mech from doing anything
+ connected_port The connected air port, if we have one
+ construction_state Whether the mechs maintenance protocols are on or off
+ defense_mode Bool for energy shield on/off
+ deflect_chance chance to deflect the incoming projectiles, hits, or lesser the effect of ex_act.
+ destruction_sleep_duration Time you get slept for if you get forcible ejected by the mech exploding
+ dir_in What direction will the mech face when entered/powered on? Defaults to South.
+ dna_lock Stores the DNA enzymes of a carbon so tht only they can access the mech
+ equipment_disabled if we cant use our equipment(such as due to EMP)
+ exit_delay TIme taken to leave the mech
+ facing_modifiers Modifiers for directional armor
+ internal_damage Bitflags for internal damage
+ internal_damage_threshold health percentage below which internal damage is possible
+ internal_tank The internal air tank obj of the mech
+ internal_tank_valve The setting of the valve on the internal tank
+ internals_req_access required access to change internal components
+ is_currently_ejecting Currently ejecting, and unable to do things
+ lavaland_only Bool for whether this mech can only be used on lavaland
+ leg_overload_coeff Energy use modifier for leg overload
+ leg_overload_mode Bool for leg overload on/off
+ lights_power How powerful our lights are
+ max_equip Maximum amount of equipment we can have
+ mecha_flags Contains flags for the mecha
+ melee_cooldown Cooldown duration between melee punches
+ melee_energy_drain How much energy we drain each time we mechpunch someone
+ normal_step_energy_drain How much energy the mech will consume each time it moves. This variable is a backup for when leg actuators affect the energy drain.
+ operation_req_access required access level for mecha operation
+ overload_step_energy_drain_min The minimum amount of energy charge consumed by leg overload
+ phase_state icon_state for flick() when phazing
+ phasing Bool for if the mech is currently phasing
+ phasing_energy_drain Power we use every time we phaze through something
+ radio Special version of the radio, which is unsellable
+ scanmod Keeps track of the mech's scanning module
+ selected Current active equipment
+ silicon_icon_state Whether outside viewers can see the pilot inside
+In case theres a different iconstate for AI/MMI pilot(currently only used for ripley)
+ smashcooldown Cooldown length between bumpsmashes
+ smoke_charges Remaining smoke charges
+ smoke_cooldown Cooldown between using smoke
+ spark_system Spark effects are handled by this datum
+ step_energy_drain How much energy the mech will consume each time it moves. this is the current active energy consumed
+ step_silent Whether our steps are silent, for example in zero-G
+ stepsound Sound played when the mech moves
+ strafe Wether we are strafing
+ turnsound Sound played when the mech walks
+ use_internal_tank ////////ATMOS
+Whether we are currrently drawing from the internal tank
+ wreckage Typepath for the wreckage it spawns when destroyed Procs
+ Topic Topic
+ add_airtank Updates the values given by scanning module and capacitor tier, called when a part is removed or inserted.
+ add_capacitor Adds a capacitor, for use in Map-spawned mechs, Nuke Ops mechs, and admin-spawned mechs. Mechs built by hand will replace this.
+ add_cell Adds a cell, for use in Map-spawned mechs, Nuke Ops mechs, and admin-spawned mechs. Mechs built by hand will replace this.
+ add_scanmod Adds a scanning module, for use in Map-spawned mechs, Nuke Ops mechs, and admin-spawned mechs. Mechs built by hand will replace this.
+ aimob_enter_mech Handles an actual AI (simple_animal mecha pilot) entering the mech
+ aimob_exit_mech Handles an actual AI (simple_animal mecha pilot) exiting the mech
+ ammo_resupply Ammo stuff
+ attack_ai AI piloting
+ check_for_internal_damage Internal damage
+ generate_action_type MECHA ACTIONS
+ get_actions Returns HTML for mech actions. Ideally, this proc would be empty for the base mecha. Segmented for easy refactoring.
+ get_commands HTML for commands.
+ get_equipment_list HTML for list of equipment.
+ get_stats_html Rendering stats window
+ get_stats_part Returns the status of the mech.
+ has_charge Power stuff
+ on_mouseclick Action processing
+ operation_allowed Access stuff
+ play_stepsound ///// Movement procs ////////
+ remove_air Atmospheric stuff
+ report_internal_damage HTML for internal damage.
+ stationary_repair Repairs internal damage if the mech hasn't moved.
+ Var Details
+ /Action vars
+Ref to any active thrusters we might have
allow_diagonal_movement
+
+
+
+
+
+ Whether this mech is allowed to move diagonally
bumpsmash
+
+
+
+
+
+ Whether or not the mech destroys walls by running into it.
+ Internal air mix datum
capacitor
+
+
+
+
+
+ Keeps track of the mech's capacitor
+ Keeps track of the mech's cell
completely_disabled
+
+
+
+
+
+ Just stop the mech from doing anything
connected_port
+
+
+
+
+
+ The connected air port, if we have one
construction_state
+
+
+
+
+
+ Whether the mechs maintenance protocols are on or off
defense_mode
+
+
+
+
+
+ Bool for energy shield on/off
deflect_chance
+
+
+
+
+
+ chance to deflect the incoming projectiles, hits, or lesser the effect of ex_act.
destruction_sleep_duration
+
+
+
+
+
+ Time you get slept for if you get forcible ejected by the mech exploding
dir_in
+
+
+
+
+
+ What direction will the mech face when entered/powered on? Defaults to South.
dna_lock
+
+
+
+
+
+ Stores the DNA enzymes of a carbon so tht only they can access the mech
equipment_disabled
+
+
+
+
+
+ if we cant use our equipment(such as due to EMP)
exit_delay
+
+
+
+
+
+ TIme taken to leave the mech
facing_modifiers
+
+
+
+
+
+ Modifiers for directional armor
internal_damage
+
+
+
+
+
+ Bitflags for internal damage
internal_damage_threshold
+
+
+
+
+
+ health percentage below which internal damage is possible
+ The internal air tank obj of the mech
internal_tank_valve
+
+
+
+
+
+ The setting of the valve on the internal tank
internals_req_access
+
+
+
+
+
+ required access to change internal components
is_currently_ejecting
+
+
+
+
+
+ Currently ejecting, and unable to do things
lavaland_only
+
+
+
+
+
+ Bool for whether this mech can only be used on lavaland
leg_overload_coeff
+
+
+
+
+
+ Energy use modifier for leg overload
leg_overload_mode
+
+
+
+
+
+ Bool for leg overload on/off
lights_power
+
+
+
+
+
+ How powerful our lights are
max_equip
+
+
+
+
+
+ Maximum amount of equipment we can have
mecha_flags
+
+
+
+
+
+ Contains flags for the mecha
melee_cooldown
+
+
+
+
+
+ Cooldown duration between melee punches
melee_energy_drain
+
+
+
+
+
+ How much energy we drain each time we mechpunch someone
normal_step_energy_drain
+
+
+
+
+
+ How much energy the mech will consume each time it moves. This variable is a backup for when leg actuators affect the energy drain.
operation_req_access
+
+
+
+
+
+ required access level for mecha operation
overload_step_energy_drain_min
+
+
+
+
+
+ The minimum amount of energy charge consumed by leg overload
phase_state
+
+
+
+
+
+ icon_state for flick() when phazing
phasing
+
+
+
+
+
+ Bool for if the mech is currently phasing
phasing_energy_drain
+
+
+
+
+
+ Power we use every time we phaze through something
radio
+
+
+
+
+
+ Special version of the radio, which is unsellable
scanmod
+ – /obj /item /stock_parts/scanning_module
+
+
+
+
+ Keeps track of the mech's scanning module
+ Current active equipment
silicon_icon_state
+
+
+
+
+
+ Whether outside viewers can see the pilot inside
+In case theres a different iconstate for AI/MMI pilot(currently only used for ripley)
smashcooldown
+
+
+
+
+
+ Cooldown length between bumpsmashes
smoke_charges
+
+
+
+
+
+ Remaining smoke charges
smoke_cooldown
+
+
+
+
+
+ Cooldown between using smoke
spark_system
+ – /datum /effect_system/spark_spread
+
+
+
+
+ Spark effects are handled by this datum
step_energy_drain
+
+
+
+
+
+ How much energy the mech will consume each time it moves. this is the current active energy consumed
step_silent
+
+
+
+
+
+ Whether our steps are silent, for example in zero-G
stepsound
+
+
+
+
+
+ Sound played when the mech moves
strafe
+
+
+
+
+
+ Wether we are strafing
turnsound
+
+
+
+
+
+ Sound played when the mech walks
use_internal_tank
+
+
+
+
+
+ ////////ATMOS
+Whether we are currrently drawing from the internal tank
wreckage
+
+
+
+
+
+ Typepath for the wreckage it spawns when destroyed
Proc Details Topic(href, href_list)
+
+
+
+
+
+ Topic
add_airtank()
+
+
+
+
+
+ Updates the values given by scanning module and capacitor tier, called when a part is removed or inserted.
+/// Helpers /////////
add_capacitor(/obj /item /stock_parts/capacitor/cap)
+
+
+
+
+
+ Adds a capacitor, for use in Map-spawned mechs, Nuke Ops mechs, and admin-spawned mechs. Mechs built by hand will replace this.
+ Adds a cell, for use in Map-spawned mechs, Nuke Ops mechs, and admin-spawned mechs. Mechs built by hand will replace this.
add_scanmod(/obj /item /stock_parts/scanning_module/sm)
+
+
+
+
+
+ Adds a scanning module, for use in Map-spawned mechs, Nuke Ops mechs, and admin-spawned mechs. Mechs built by hand will replace this.
aimob_enter_mech
+
+ Handles an actual AI (simple_animal mecha pilot) entering the mech
aimob_exit_mech
+
+ Handles an actual AI (simple_animal mecha pilot) exiting the mech
ammo_resupply(/obj /item /mecha_ammo/A, /mob /user, fail_chat_override)
+
+
+
+
+
+ Ammo stuff
+ AI piloting
check_for_internal_damage(/list/possible_int_damage, ignore_threshold)
+
+
+
+
+
+ Internal damage
generate_action_type()
+
+
+
+
+
+ MECHA ACTIONS
get_actions
+
+ Returns HTML for mech actions. Ideally, this proc would be empty for the base mecha. Segmented for easy refactoring.
get_commands()
+
+
+
+
+
+ HTML for commands.
get_equipment_list()
+
+
+
+
+
+ HTML for list of equipment.
get_stats_html
+
+ Rendering stats window
get_stats_part
+
+ Returns the status of the mech.
has_charge(amount)
+
+
+
+
+
+ Power stuff
on_mouseclick(/mob /user, /atom /target, params)
+
+
+
+
+
+ Action processing
operation_allowed
+
+ Access stuff
play_stepsound()
+
+
+
+
+
+ ///// Movement procs ////////
+Plays the mech step sound effect. Split from movement procs so that other mechs (HONK) can override this one specific part.
remove_air(amount)
+
+
+
+
+
+ Atmospheric stuff
report_internal_damage()
+
+
+
+
+
+ HTML for internal damage.
stationary_repair(location)
+
+
+
+
+
+ Repairs internal damage if the mech hasn't moved.
+
+
+
diff --git a/obj/vehicle/sealed/mecha/combat/durand.html b/obj/vehicle/sealed/mecha/combat/durand.html
new file mode 100644
index 0000000000000..3ba9f81f734f3
--- /dev/null
+++ b/obj/vehicle/sealed/mecha/combat/durand.html
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+ /obj/vehicle/sealed/mecha/combat/durand - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ defense_check *Checks if defense mode is enabled, and if the attacker is standing in an area covered by the shield.
+Expects a turf. Returns true if the attack should be blocked, false if not.
+ relay Relays the signal from the action button to the shield, and creates a new shield if the old one is MIA.
Proc Details defense_check
+
+ *Checks if defense mode is enabled, and if the attacker is standing in an area covered by the shield.
+Expects a turf. Returns true if the attack should be blocked, false if not.
relay(/datum /source, /mob /owner, /list/signal_args)
+
+
+
+
+
+ Relays the signal from the action button to the shield, and creates a new shield if the old one is MIA.
+
+
+
diff --git a/obj/vehicle/sealed/mecha/combat/savannah_ivanov.html b/obj/vehicle/sealed/mecha/combat/savannah_ivanov.html
new file mode 100644
index 0000000000000..a720514f06a50
--- /dev/null
+++ b/obj/vehicle/sealed/mecha/combat/savannah_ivanov.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+ /obj/vehicle/sealed/mecha/combat/savannah_ivanov - SPLURT Station 13
+
+
+
+
+
+
+Savannah-Ivanov!
+A two person mecha that delegates moving to the driver and shooting to the pilot.
+...Hilarious, right?
+
+
+
diff --git a/obj/vehicle/sealed/mecha/working.html b/obj/vehicle/sealed/mecha/working.html
new file mode 100644
index 0000000000000..72ea92aee9a29
--- /dev/null
+++ b/obj/vehicle/sealed/mecha/working.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /obj/vehicle/sealed/mecha/working - SPLURT Station 13
+
+
+
+
+
+
+Proc Details collect_ore()
+
+
+
+
+
+ Handles collecting ore.
+Checks for a hydraulic clamp or ore box manager and if it finds an ore box inside them puts ore in the ore box.
+
+
+
diff --git a/obj/vehicle/sealed/mecha/working/ripley.html b/obj/vehicle/sealed/mecha/working/ripley.html
new file mode 100644
index 0000000000000..9a2e2e92d1eb7
--- /dev/null
+++ b/obj/vehicle/sealed/mecha/working/ripley.html
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+ /obj/vehicle/sealed/mecha/working/ripley - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ cargo List of all things in Ripley's Cargo Compartment
+ cargo_capacity How much things Ripley can carry in their Cargo Compartment
+ fast_pressure_step_in How fast the mech is in low pressure
+ hides Amount of Goliath hides attached to the mech
+ slow_pressure_step_in How fast the mech is in normal pressure Procs
+ update_pressure Makes the mecha go faster and halves the mecha drill cooldown if in Lavaland pressure.
+ Var Details cargo
+
+
+
+
+
+ List of all things in Ripley's Cargo Compartment
cargo_capacity
+
+
+
+
+
+ How much things Ripley can carry in their Cargo Compartment
fast_pressure_step_in
+
+
+
+
+
+ How fast the mech is in low pressure
hides
+
+
+
+
+
+ Amount of Goliath hides attached to the mech
slow_pressure_step_in
+
+
+
+
+
+ How fast the mech is in normal pressure
Proc Details update_pressure()
+
+
+
+
+
+ Makes the mecha go faster and halves the mecha drill cooldown if in Lavaland pressure.
+Checks for Lavaland pressure, if that works out the mech's speed is equal to fast_pressure_step_in and the cooldown for the mecha drill is halved. If not it uses slow_pressure_step_in and drill cooldown is normal.
+
+
+
diff --git a/procpath.html b/procpath.html
new file mode 100644
index 0000000000000..3583fad7e61ac
--- /dev/null
+++ b/procpath.html
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+ /procpath - SPLURT Station 13
+
+
+
+
+
+
+Represents a proc or verb path.
+Despite having no DM-defined static type, proc paths have some variables,
+listed below. These are not modifiable, but for a given procpath P,
+new P(null, "Name", "Desc")
can be used to create a new procpath with the
+same code but new name
and desc
values. The other variables cannot be
+changed in this way.
+This type exists only to act as an annotation, providing reasonable static
+typing for procpaths. Previously, types like /atom/verb
were used, with
+the name
and desc
vars of /atom
thus being accessible. Proc and verb
+paths will fail istype
and ispath
checks against /procpath
.
Vars
+ category The category or tab the verb will appear in.
+ desc The verb's help text or description.
+ hidden Whether or not the verb appears in statpanel and commandbar when you press space
+ invisibility Only clients/mobs with see_invisibility
higher can use the verb.
+ name A text string of the verb's name.
+ Var Details category
+
+
+
+
+
+ The category or tab the verb will appear in.
desc
+
+
+
+
+
+ The verb's help text or description.
hidden
+
+
+
+
+
+ Whether or not the verb appears in statpanel and commandbar when you press space
invisibility
+
+
+
+
+
+ Only clients/mobs with see_invisibility
higher can use the verb.
name
+
+
+
+
+
+ A text string of the verb's name.
+
+
+
diff --git a/tools/CreditsTool/remappings.html b/tools/CreditsTool/remappings.html
new file mode 100644
index 0000000000000..65c67f822f5a7
--- /dev/null
+++ b/tools/CreditsTool/remappings.html
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+ tools/CreditsTool/remappings.txt - SPLURT Station 13
+
+
+
+
+tools/CreditsTool/remappings.txt
+
+
+
+
+ # To make your name something other than your github name type it in the format "<github name> <credited name>
+# e.g.
+# Cyberboss Jordan Brown
+# To suppress your name from appearing in the credits do "<github name> __REMOVE__
+# e.g.
+# Cyberboss __REMOVE__
+
+tgstation-server Thanks for playing!
+
+optimumtact oranges
+qustinnus Floyd / Qustinnus
+catalystfd __REMOVE__
+TheVekter Vekter
+ChangelingRain Joan
+NewSta1 NewSta
+theOperand Miauw
+PraiseRatvar Frozenguy5
+FuryMcFlurry Fury McFlurry
+vuonojenmustaturska Naksu
+praisenarsie Frozenguy5
+MrDoomBringer Mr. DoomBringer
+Fikou Dr. Fikou
+TiviPlus Tivi Plus
+tralezab Trale Zab
+Iamgoofball goofball
+Tharcoonvagh Tharcoon
+Rectification itseasytosee
+ATHATH ATH1909
+trollbreeder troll breeder
+BuffEngineering Buff Engineering```
+
+
+
+
diff --git a/tools/HitboxExpander.html b/tools/HitboxExpander.html
new file mode 100644
index 0000000000000..fc8173fd3996e
--- /dev/null
+++ b/tools/HitboxExpander.html
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+ tools/HitboxExpander/README.txt - SPLURT Station 13
+
+
+
+
+tools/HitboxExpander/README.txt
+
+
+
+
+ Usage: tools/bootstrap/python -m HitboxExpander <path_to_file.dmi or png>
+
+This tool expands the hitbox of the given image by 1 pixel.
+Works by changing some of the fully-transparent pixels to alpha=1 black pixels.
+Naked human eye usually cannot notice the difference.
+
+No space carps or corgis have been used or injured in the production of this tool.
+
+
+
+
diff --git a/tools/LinuxOneShot.html b/tools/LinuxOneShot.html
new file mode 100644
index 0000000000000..18fddd255c74b
--- /dev/null
+++ b/tools/LinuxOneShot.html
@@ -0,0 +1,107 @@
+
+
+
+
+
+
+ tools/LinuxOneShot/README.md - SPLURT Station 13
+
+
+
+
+tools/LinuxOneShot/README.md
+
+
+
+
+ This is @Cyberboss rage code
+The goal is a one stop solution for hosting /tg/station on linux via Docker. Will not work with Docker on Windows.
+This requires Docker with the docker-compose
command to be installed on your system. See ubuntu instructions here . If you fail to find the docker-ce
package refer to this StackOverflow answer .
+Some basic configuration options in docker-compose.yml
before starting:
+
+Change TGS_ADMIN_CKEY to your ckey so you may have initial control over the server.
+Change TGS_SCHEMA_MAJOR_VERSION to your repo's latest schema major version.
+Change TGS_SCHEMA_MINOR_VERSION to your repo's latest schema minor version.
+If you want to change the MariaDB password, there are three locations in the file it must be changed from its default value of ChangeThisInBothMariaDBAndTgsConnectionString
.
+Change TGS_BYOND to set the initial BYOND version.
+Ports are mapped in the form <external>:<internal>
NEVER change the internal port. If you want to prevent a service from being exposed, delete/comment out the entire line.
+
+The first (3306) is the exposed mariadb port. Do not expose this over the internet without changing the password. In general it's a bad idea.
+The second (1337) is the exposed DreamDaemon port
+The third (5000) is the exposed TGS API port. Do not expose this over the internet. Setup an HTTPS reverse proxy instead.
+
+
+Change TGS_REPO to set the repository used. Note, this must be a /tg/ derivative from at least 2019 that implements the latest TGS DreamMaker API . Repositories that follow tgstation/tgstation will have this automatically. It also must contain a prefixed SQL schema setup file.
+
+To launch, change to this directory and run docker-compose up
. The initial setup will take a long time. If that fails, Ctrl+C out, run docker-compose down
, remove ./TGS_Instances
and ./Database
, and try again. Once setup is complete, you can either leave the terminal running, or Ctrl+C
out (this will stop DreamDaemon) and run docker-compose -d
to run it in the background.
+What it does:
+
+Starts mariadb with the data files in ./Database
on port 3306
+Installs and starts Tgs4 (using latest stable docker tag, no HTTPS) on port 5000. Configuration in ./TGS_Config
, logs in ./TGS_Logs
.
+Configures a TGS instance for tgstation in ./TGS_Instances
(SetupProgram)
+
+The instance is configured to autostart
+Repo is cloned from the origin specified in the docker-compose.yml
+BYOND version is set to the latest one specified in the docker-compose.yml
+A script will be run to setup dependencies. This does the following every time the game is built:
+
+Reads dependency information from dependencies.sh
in the root of the repository
+Installs the following necessary packages into the TGS image
+
+Rust/cargo
+git
+cmake
+grep
+g++-6
+g++-6-multilib
+mysql-client
+libmariadb-dev:i386
+libssl-dev:i386
+
+
+Builds rust-g in ./TGS_Instances/main/Configuration/EventScripts/rust-g
and copies the artifact to the game directory.
+Builds BSQL in ./TGS_Instances/main/Configuration/EventScripts/BSQL
and copies the artifact to the game directory.
+Sets up ./TGS_Instances/main/Configuration/GameStaticFiles/config
with the initial repository config.
+Sets up ./TGS_Instances/main/Configuration/GameStaticFiles/data
.
+If it doesn't exist, create the ss13_db
database on the mariadb server and populate it with the repository's.
+
+
+Start DreamDaemon and configure it to autostart and keep it running via TGS.
+Updates will be pulled from the default repository branch and deployed every hour
+
+
+
+What it DOESN'T do:
+
+Configure sane MariaDB security
+TGS Test merging
+TGS Chat bots
+Handle updating BYOND versions
+Handle updating the database schema
+Manage TGS users, permissions, or change the default admin password
+Provide HTTPS for TGS
+Expose the DB to the internet UNLESS you have port 3306 forwarded for some ungodly reason
+Port forward or setup firewall rules for DreamDaemon or TGS
+Notify you of TGS errors past initial setup
+Keep MariaDB logs
+Backup ANYTHING
+Pretend like it's a long term solution
+
+This is enough to host a production level server !!!IN THEORY!!! This script guarantees nothing and comes with no warranty
+You can change the TGS_BYOND and TGS_REPO variables when setting up the first time. But further configuration must be done with TGS itself.
+You can connect to TGS with Tgstation.Server.ControlPanel (Binaries provided for windows, must be compiled manually on Linux).
+
+Connect to http://localhost:5000
. Be sure to Use Plain HTTP
and Default Credentials
+
+You should learn how to manually setup TGS if you truly want control over what your server does.
+You have been warned.
+
+
+
diff --git a/tools/Redirector/config.html b/tools/Redirector/config.html
new file mode 100644
index 0000000000000..35fc0c8acb56a
--- /dev/null
+++ b/tools/Redirector/config.html
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+ tools/Redirector/config.txt - SPLURT Station 13
+
+
+
+
+tools/Redirector/config.txt
+
+
+
+
+ [SERVERS]
+## Simply enter a list of servers to poll. Be sure to specify a server name in parentheses.
+
+(Sibyl #1) byond://game.nanotrasen.com:1337
+
+(Sibyl #2) byond://game.nanotrasen.com:2337
+
+
+[ADMINS]
+## Specify some standard Windows filepaths (you may use relative paths) for admin txt lists to poll.
+
+C:\SS13\config\admins.txt
+
+
+
+
diff --git a/tools/Redirector/textprocs.html b/tools/Redirector/textprocs.html
new file mode 100644
index 0000000000000..9b255e1c4aa16
--- /dev/null
+++ b/tools/Redirector/textprocs.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ tools/Redirector/textprocs.dm - SPLURT Station 13
+
+
+
+
+tools/Redirector/textprocs.dm
+
+
+
+
+
+
+
diff --git a/tools/UnquotedListAssociations/2016-11-27-unquoted_list_associations_log.html b/tools/UnquotedListAssociations/2016-11-27-unquoted_list_associations_log.html
new file mode 100644
index 0000000000000..0db71eb62d352
--- /dev/null
+++ b/tools/UnquotedListAssociations/2016-11-27-unquoted_list_associations_log.html
@@ -0,0 +1,2994 @@
+
+
+
+
+
+
+ tools/UnquotedListAssociations/2016-11-27-unquoted_list_associations_log.txt - SPLURT Station 13
+
+
+
+
+tools/UnquotedListAssociations/2016-11-27-unquoted_list_associations_log.txt
+
+
+
+
+ ..code\datums\outfit.dm
+list(path = count)
+list(otherpath = count)
+Total Unquoted List Associations: 2
+..code\game\gamemodes\blob\theblob.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 80)
+list(acid = 70)
+Total Unquoted List Associations: 8
+..code\game\gamemodes\blob\blobs\core.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 75)
+list(acid = 90)
+Total Unquoted List Associations: 8
+..code\game\gamemodes\blob\blobs\node.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 65)
+list(acid = 90)
+Total Unquoted List Associations: 8
+..code\game\gamemodes\blob\blobs\shield.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 90)
+list(acid = 90)
+Total Unquoted List Associations: 8
+..code\game\gamemodes\changeling\powers\mutations.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 90)
+list(acid = 90)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 90)
+list(acid = 90)
+list(bullet = 40)
+list(laser = 40)
+list(energy = 20)
+list(bomb = 10)
+list(bio = 4)
+list(rad = 0)
+list(fire = 90)
+list(acid = 90)
+list(bullet = 40)
+list(laser = 40)
+list(energy = 20)
+list(bomb = 10)
+list(bio = 4)
+list(rad = 0)
+list(fire = 90)
+list(acid = 90)
+Total Unquoted List Associations: 32
+..code\game\gamemodes\clock_cult\clock_items\clockwork_armor.dm
+list(bullet = 70)
+list(energy = 0)
+list(bomb = 60)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 100)
+list(bullet = 70)
+list(energy = 0)
+list(bomb = 60)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 100)
+list(bullet = 70)
+list(energy = 0)
+list(bomb = 60)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 100)
+Total Unquoted List Associations: 21
+..code\game\gamemodes\clock_cult\clock_scriptures\scripture_revenant.dm
+list(time = 88)
+Total Unquoted List Associations: 1
+..code\game\gamemodes\cult\cult_items.dm
+list(bullet = 10)
+list(laser = 5)
+list(energy = 5)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 10)
+list(acid = 10)
+list(bullet = 30)
+list(laser = 50)
+list(energy = 20)
+list(bomb = 25)
+list(bio = 10)
+list(rad = 0)
+list(fire = 10)
+list(acid = 10)
+list(bullet = 30)
+list(laser = 30)
+list(energy = 20)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 10)
+list(acid = 10)
+list(bullet = 30)
+list(laser = 50)
+list(energy = 20)
+list(bomb = 25)
+list(bio = 10)
+list(rad = 0)
+list(fire = 10)
+list(acid = 10)
+list(bullet = 50)
+list(laser = 30)
+list(energy = 15)
+list(bomb = 30)
+list(bio = 30)
+list(rad = 30)
+list(fire = 40)
+list(acid = 75)
+list(bullet = 50)
+list(laser = 30)
+list(energy = 15)
+list(bomb = 30)
+list(bio = 30)
+list(rad = 30)
+list(fire = 40)
+list(acid = 75)
+list(bullet = 40)
+list(laser = 50)
+list(energy = 30)
+list(bomb = 50)
+list(bio = 30)
+list(rad = 30)
+list(fire = 50)
+list(acid = 60)
+list(bullet = 40)
+list(laser = 50)
+list(energy = 30)
+list(bomb = 50)
+list(bio = 30)
+list(rad = 30)
+list(fire = 50)
+list(acid = 50)
+list(fire = 0)
+list(acid = 0)
+list(fire = 0)
+list(acid = 0)
+Total Unquoted List Associations: 68
+..code\game\gamemodes\gang\dominator.dm
+list(bullet = 50)
+list(laser = 50)
+list(energy = 50)
+list(bomb = 10)
+list(bio = 100)
+list(rad = 100)
+list(fire = 10)
+list(acid = 70)
+Total Unquoted List Associations: 8
+..code\game\gamemodes\gang\gang_datum.dm
+list(bullet = 30)
+list(laser = 10)
+list(energy = 10)
+list(bomb = 20)
+list(bio = 0)
+list(rad = 0)
+list(fire = 30)
+list(acid = 30)
+Total Unquoted List Associations: 8
+..code\game\gamemodes\miniantags\abduction\abduction_gear.dm
+list(bullet = 15)
+list(laser = 15)
+list(energy = 15)
+list(bomb = 15)
+list(bio = 15)
+list(rad = 15)
+list(fire = 70)
+list(acid = 70)
+list(bullet = 15)
+list(laser = 15)
+list(energy = 15)
+list(bomb = 15)
+list(bio = 15)
+list(rad = 15)
+list(fire = 70)
+list(acid = 70)
+list(bullet = 50)
+list(laser = 50)
+list(energy = 50)
+list(bomb = 50)
+list(bio = 50)
+list(rad = 50)
+list(fire = 90)
+list(acid = 90)
+Total Unquoted List Associations: 24
+..code\game\gamemodes\nuclear\nuclearbomb.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 30)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 100)
+Total Unquoted List Associations: 8
+..code\game\machinery\ai_slipper.dm
+list(bullet = 20)
+list(laser = 20)
+list(energy = 20)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 50)
+list(acid = 30)
+Total Unquoted List Associations: 8
+..code\game\machinery\buttons.dm
+list(bullet = 50)
+list(laser = 50)
+list(energy = 50)
+list(bomb = 10)
+list(bio = 100)
+list(rad = 100)
+list(fire = 90)
+list(acid = 70)
+Total Unquoted List Associations: 8
+..code\game\machinery\deployable.dm
+list(bullet = 50)
+list(laser = 50)
+list(energy = 50)
+list(bomb = 10)
+list(bio = 100)
+list(rad = 100)
+list(fire = 10)
+list(acid = 0)
+Total Unquoted List Associations: 8
+..code\game\machinery\firealarm.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 100)
+list(rad = 100)
+list(fire = 90)
+list(acid = 30)
+Total Unquoted List Associations: 8
+..code\game\machinery\hologram.dm
+list(bullet = 20)
+list(laser = 20)
+list(energy = 20)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 50)
+list(acid = 0)
+Total Unquoted List Associations: 8
+..code\game\machinery\igniter.dm
+list(bullet = 30)
+list(laser = 70)
+list(energy = 50)
+list(bomb = 20)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 70)
+Total Unquoted List Associations: 8
+..code\game\machinery\machinery.dm
+list(bullet = 10)
+list(laser = 10)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 50)
+list(acid = 70)
+Total Unquoted List Associations: 8
+..code\game\machinery\navbeacon.dm
+list(bullet = 70)
+list(laser = 70)
+list(energy = 70)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 80)
+list(acid = 80)
+Total Unquoted List Associations: 8
+..code\game\machinery\newscaster.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 50)
+list(acid = 30)
+Total Unquoted List Associations: 8
+..code\game\machinery\requests_console.dm
+list(bullet = 30)
+list(laser = 30)
+list(energy = 30)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 90)
+list(acid = 90)
+Total Unquoted List Associations: 8
+..code\game\machinery\spaceheater.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 100)
+list(rad = 100)
+list(fire = 80)
+list(acid = 10)
+Total Unquoted List Associations: 8
+..code\game\machinery\vending.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 50)
+list(acid = 70)
+list(bullet = 100)
+list(laser = 100)
+list(energy = 100)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 50)
+list(bullet = 100)
+list(laser = 100)
+list(energy = 100)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 50)
+list(bullet = 100)
+list(laser = 100)
+list(energy = 100)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 50)
+list(bullet = 100)
+list(laser = 100)
+list(energy = 100)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 50)
+list(bullet = 100)
+list(laser = 100)
+list(energy = 100)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 50)
+list(bullet = 100)
+list(laser = 100)
+list(energy = 100)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 50)
+list(bullet = 100)
+list(laser = 100)
+list(energy = 100)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 50)
+list(bullet = 100)
+list(laser = 100)
+list(energy = 100)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 50)
+list(bullet = 100)
+list(laser = 100)
+list(energy = 100)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 50)
+list(bullet = 100)
+list(laser = 100)
+list(energy = 100)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 50)
+list(bullet = 100)
+list(laser = 100)
+list(energy = 100)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 50)
+list(bullet = 100)
+list(laser = 100)
+list(energy = 100)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 50)
+list(bullet = 100)
+list(laser = 100)
+list(energy = 100)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 70)
+list(bullet = 100)
+list(laser = 100)
+list(energy = 100)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 50)
+list(bullet = 100)
+list(laser = 100)
+list(energy = 100)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 50)
+list(bullet = 100)
+list(laser = 100)
+list(energy = 100)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 50)
+Total Unquoted List Associations: 136
+..code\game\machinery\camera\camera.dm
+list(bullet = 20)
+list(laser = 20)
+list(energy = 20)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 90)
+list(acid = 50)
+Total Unquoted List Associations: 8
+..code\game\machinery\computer\computer.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 40)
+list(acid = 20)
+Total Unquoted List Associations: 8
+..code\game\machinery\doors\door.dm
+list(bullet = 30)
+list(laser = 20)
+list(energy = 20)
+list(bomb = 10)
+list(bio = 100)
+list(rad = 100)
+list(fire = 80)
+list(acid = 70)
+Total Unquoted List Associations: 8
+..code\game\machinery\doors\firedoor.dm
+list(bullet = 30)
+list(laser = 20)
+list(energy = 20)
+list(bomb = 10)
+list(bio = 100)
+list(rad = 100)
+list(fire = 95)
+list(acid = 70)
+Total Unquoted List Associations: 8
+..code\game\machinery\doors\poddoor.dm
+list(bullet = 100)
+list(laser = 100)
+list(energy = 100)
+list(bomb = 50)
+list(bio = 100)
+list(rad = 100)
+list(fire = 100)
+list(acid = 70)
+Total Unquoted List Associations: 8
+..code\game\machinery\doors\windowdoor.dm
+list(bullet = 50)
+list(laser = 50)
+list(energy = 50)
+list(bomb = 10)
+list(bio = 100)
+list(rad = 100)
+list(fire = 70)
+list(acid = 100)
+Total Unquoted List Associations: 8
+..code\game\machinery\porta_turret\portable_turret.dm
+list(bullet = 30)
+list(laser = 30)
+list(energy = 30)
+list(bomb = 30)
+list(bio = 0)
+list(rad = 0)
+list(fire = 90)
+list(acid = 90)
+Total Unquoted List Associations: 8
+..code\game\mecha\mecha.dm
+list(bullet = 10)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 100)
+Total Unquoted List Associations: 8
+..code\game\mecha\combat\combat.dm
+list(bullet = 30)
+list(laser = 15)
+list(energy = 20)
+list(bomb = 20)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 100)
+Total Unquoted List Associations: 8
+..code\game\mecha\combat\durand.dm
+list(bullet = 35)
+list(laser = 15)
+list(energy = 10)
+list(bomb = 20)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 100)
+Total Unquoted List Associations: 8
+..code\game\mecha\combat\gygax.dm
+list(bullet = 20)
+list(laser = 30)
+list(energy = 15)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 100)
+list(bullet = 40)
+list(laser = 50)
+list(energy = 35)
+list(bomb = 20)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 100)
+Total Unquoted List Associations: 16
+..code\game\mecha\combat\honker.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 100)
+Total Unquoted List Associations: 8
+..code\game\mecha\combat\marauder.dm
+list(bullet = 55)
+list(laser = 40)
+list(energy = 30)
+list(bomb = 30)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 100)
+Total Unquoted List Associations: 8
+..code\game\mecha\combat\phazon.dm
+list(bullet = 30)
+list(laser = 30)
+list(energy = 30)
+list(bomb = 30)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 100)
+Total Unquoted List Associations: 8
+..code\game\mecha\combat\reticence.dm
+list(bullet = 20)
+list(laser = 30)
+list(energy = 15)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 100)
+Total Unquoted List Associations: 8
+..code\game\mecha\working\ripley.dm
+list(bullet = 20)
+list(laser = 10)
+list(energy = 20)
+list(bomb = 40)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 100)
+list(bullet = 30)
+list(laser = 30)
+list(energy = 30)
+list(bomb = 60)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 100)
+Total Unquoted List Associations: 16
+..code\game\objects\items.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 0)
+list(acid = 0)
+Total Unquoted List Associations: 8
+..code\game\objects\objs.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 0)
+list(acid = 0)
+Total Unquoted List Associations: 8
+..code\game\objects\structures.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 50)
+list(acid = 50)
+Total Unquoted List Associations: 8
+..code\game\objects\items\religion.dm
+list(bullet = 50)
+list(laser = 50)
+list(energy = 40)
+list(bomb = 60)
+list(bio = 0)
+list(rad = 0)
+list(fire = 60)
+list(acid = 60)
+list(bullet = 50)
+list(laser = 50)
+list(energy = 40)
+list(bomb = 60)
+list(bio = 0)
+list(rad = 0)
+list(fire = 60)
+list(acid = 60)
+list(bullet = 60)
+list(laser = 60)
+list(energy = 50)
+list(bomb = 70)
+list(bio = 50)
+list(rad = 50)
+list(fire = 60)
+list(acid = 60)
+list(bullet = 50)
+list(laser = 50)
+list(energy = 40)
+list(bomb = 60)
+list(bio = 0)
+list(rad = 0)
+list(fire = 60)
+list(acid = 60)
+Total Unquoted List Associations: 32
+..code\game\objects\items\devices\PDA\PDA.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 100)
+Total Unquoted List Associations: 8
+..code\game\objects\items\stacks\sheets\glass.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 50)
+list(acid = 100)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 70)
+list(acid = 100)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 100)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 50)
+list(acid = 100)
+Total Unquoted List Associations: 24
+..code\game\objects\items\stacks\sheets\sheet_types.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 80)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 50)
+list(acid = 0)
+Total Unquoted List Associations: 16
+..code\game\objects\items\stacks\tiles\tile_types.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 70)
+Total Unquoted List Associations: 8
+..code\game\objects\items\weapons\cards_ids.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 100)
+Total Unquoted List Associations: 8
+..code\game\objects\items\weapons\defib.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 50)
+list(acid = 50)
+Total Unquoted List Associations: 8
+..code\game\objects\items\weapons\handcuffs.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 50)
+list(acid = 50)
+Total Unquoted List Associations: 8
+..code\game\objects\items\weapons\kitchen.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 50)
+list(acid = 30)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 50)
+list(acid = 50)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 0)
+list(acid = 0)
+Total Unquoted List Associations: 24
+..code\game\objects\items\weapons\pneumaticCannon.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 60)
+list(acid = 50)
+Total Unquoted List Associations: 8
+..code\game\objects\items\weapons\powerfist.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 40)
+Total Unquoted List Associations: 8
+..code\game\objects\items\weapons\RCD.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 50)
+Total Unquoted List Associations: 8
+..code\game\objects\items\weapons\RPD.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 50)
+Total Unquoted List Associations: 8
+..code\game\objects\items\weapons\RSF.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 0)
+list(acid = 0)
+Total Unquoted List Associations: 8
+..code\game\objects\items\weapons\shields.dm
+list(bullet = 50)
+list(laser = 50)
+list(energy = 0)
+list(bomb = 30)
+list(bio = 0)
+list(rad = 0)
+list(fire = 80)
+list(acid = 70)
+Total Unquoted List Associations: 8
+..code\game\objects\items\weapons\singularityhammer.dm
+list(bullet = 50)
+list(laser = 50)
+list(energy = 0)
+list(bomb = 50)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 100)
+Total Unquoted List Associations: 8
+..code\game\objects\items\weapons\stunbaton.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 50)
+list(bio = 0)
+list(rad = 0)
+list(fire = 80)
+list(acid = 80)
+Total Unquoted List Associations: 8
+..code\game\objects\items\weapons\teleportation.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 30)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 100)
+Total Unquoted List Associations: 8
+..code\game\objects\items\weapons\tools.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 50)
+list(acid = 30)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 50)
+list(acid = 30)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 50)
+list(acid = 30)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 30)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 50)
+list(acid = 30)
+Total Unquoted List Associations: 40
+..code\game\objects\items\weapons\twohanded.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 30)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 70)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 50)
+list(acid = 30)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 30)
+Total Unquoted List Associations: 32
+..code\game\objects\items\weapons\vending_items.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 70)
+list(acid = 30)
+Total Unquoted List Associations: 8
+..code\game\objects\items\weapons\weaponry.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 70)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 50)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 50)
+Total Unquoted List Associations: 24
+..code\game\objects\items\weapons\melee\energy.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 30)
+Total Unquoted List Associations: 8
+..code\game\objects\items\weapons\storage\backpack.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 60)
+list(acid = 50)
+Total Unquoted List Associations: 8
+..code\game\objects\items\weapons\tanks\tanks.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 10)
+list(bio = 0)
+list(rad = 0)
+list(fire = 80)
+list(acid = 30)
+Total Unquoted List Associations: 8
+..code\game\objects\items\weapons\tanks\watertank.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 30)
+Total Unquoted List Associations: 8
+..code\game\objects\structures\barsigns.dm
+list(bullet = 20)
+list(laser = 20)
+list(energy = 100)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 50)
+list(acid = 50)
+Total Unquoted List Associations: 8
+..code\game\objects\structures\displaycase.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 10)
+list(bio = 0)
+list(rad = 0)
+list(fire = 70)
+list(acid = 100)
+Total Unquoted List Associations: 8
+..code\game\objects\structures\fireaxe.dm
+list(bullet = 20)
+list(laser = 0)
+list(energy = 100)
+list(bomb = 10)
+list(bio = 100)
+list(rad = 100)
+list(fire = 90)
+list(acid = 50)
+Total Unquoted List Associations: 8
+..code\game\objects\structures\grille.dm
+list(bullet = 70)
+list(laser = 70)
+list(energy = 100)
+list(bomb = 10)
+list(bio = 100)
+list(rad = 100)
+list(fire = 0)
+list(acid = 0)
+Total Unquoted List Associations: 8
+..code\game\objects\structures\holosign.dm
+list(bullet = 50)
+list(laser = 50)
+list(energy = 50)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 20)
+list(acid = 20)
+Total Unquoted List Associations: 8
+..code\game\objects\structures\lattice.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 80)
+list(acid = 50)
+Total Unquoted List Associations: 8
+..code\game\objects\structures\mineral_doors.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 100)
+list(bomb = 10)
+list(bio = 100)
+list(rad = 100)
+list(fire = 50)
+list(acid = 50)
+Total Unquoted List Associations: 8
+..code\game\objects\structures\plasticflaps.dm
+list(bullet = 80)
+list(laser = 80)
+list(energy = 100)
+list(bomb = 50)
+list(bio = 100)
+list(rad = 100)
+list(fire = 50)
+list(acid = 50)
+Total Unquoted List Associations: 8
+..code\game\objects\structures\signs.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 50)
+list(acid = 50)
+Total Unquoted List Associations: 8
+..code\game\objects\structures\tables_racks.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 80)
+list(acid = 100)
+list(bullet = 30)
+list(laser = 30)
+list(energy = 100)
+list(bomb = 20)
+list(bio = 0)
+list(rad = 0)
+list(fire = 80)
+list(acid = 70)
+Total Unquoted List Associations: 16
+..code\game\objects\structures\window.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 80)
+list(acid = 100)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 25)
+list(bio = 100)
+list(rad = 100)
+list(fire = 80)
+list(acid = 100)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 25)
+list(bio = 100)
+list(rad = 100)
+list(fire = 80)
+list(acid = 100)
+list(bullet = 25)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 25)
+list(bio = 100)
+list(rad = 100)
+list(fire = 80)
+list(acid = 100)
+Total Unquoted List Associations: 32
+..code\game\objects\structures\crates_lockers\closets.dm
+list(bullet = 10)
+list(laser = 10)
+list(energy = 0)
+list(bomb = 10)
+list(bio = 0)
+list(rad = 0)
+list(fire = 70)
+list(acid = 60)
+Total Unquoted List Associations: 8
+..code\game\objects\structures\crates_lockers\closets\secure\secure_closets.dm
+list(bullet = 50)
+list(laser = 50)
+list(energy = 100)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 80)
+list(acid = 80)
+Total Unquoted List Associations: 8
+..code\game\objects\structures\crates_lockers\crates\secure.dm
+list(bullet = 50)
+list(laser = 50)
+list(energy = 100)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 80)
+list(acid = 80)
+Total Unquoted List Associations: 8
+..code\modules\atmospherics\machinery\airalarm.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 100)
+list(bomb = 0)
+list(bio = 100)
+list(rad = 100)
+list(fire = 90)
+list(acid = 30)
+Total Unquoted List Associations: 8
+..code\modules\atmospherics\machinery\atmosmachinery.dm
+list(bullet = 10)
+list(laser = 10)
+list(energy = 100)
+list(bomb = 0)
+list(bio = 100)
+list(rad = 100)
+list(fire = 100)
+list(acid = 70)
+Total Unquoted List Associations: 8
+..code\modules\atmospherics\machinery\components\unary_devices\cryo.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 100)
+list(bomb = 0)
+list(bio = 100)
+list(rad = 100)
+list(fire = 30)
+list(acid = 30)
+Total Unquoted List Associations: 8
+..code\modules\atmospherics\machinery\components\unary_devices\thermomachine.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 100)
+list(bomb = 0)
+list(bio = 100)
+list(rad = 100)
+list(fire = 80)
+list(acid = 30)
+Total Unquoted List Associations: 8
+..code\modules\atmospherics\machinery\other\meter.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 100)
+list(bomb = 0)
+list(bio = 100)
+list(rad = 100)
+list(fire = 40)
+list(acid = 0)
+Total Unquoted List Associations: 8
+..code\modules\atmospherics\machinery\portable\canister.dm
+list(bullet = 50)
+list(laser = 50)
+list(energy = 100)
+list(bomb = 10)
+list(bio = 100)
+list(rad = 100)
+list(fire = 80)
+list(acid = 50)
+Total Unquoted List Associations: 8
+..code\modules\atmospherics\machinery\portable\portable_atmospherics.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 100)
+list(bomb = 0)
+list(bio = 100)
+list(rad = 100)
+list(fire = 60)
+list(acid = 30)
+Total Unquoted List Associations: 8
+..code\modules\awaymissions\mission_
+list(bullet = 10)
+list(laser = 0)
+list(energy = 5)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 25)
+list(acid = 25)
+Total Unquoted List Associations: 8
+..code\modules\client\preferences.dm
+list(widthPerColumn = 295)
+list(height = 620)
+Total Unquoted List Associations: 2
+..code\modules\clothing\chameleon.dm
+list(bullet = 10)
+list(laser = 10)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 50)
+list(acid = 50)
+list(bullet = 10)
+list(laser = 10)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 50)
+list(acid = 50)
+list(bullet = 10)
+list(laser = 10)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 50)
+list(acid = 50)
+list(bullet = 10)
+list(laser = 10)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 50)
+list(acid = 50)
+list(bullet = 5)
+list(laser = 5)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 50)
+list(acid = 50)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 0)
+list(acid = 0)
+list(bullet = 5)
+list(laser = 5)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 50)
+list(acid = 50)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 0)
+list(acid = 0)
+list(bullet = 10)
+list(laser = 10)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 50)
+list(acid = 50)
+Total Unquoted List Associations: 72
+..code\modules\clothing\clothing.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 0)
+list(acid = 0)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 100)
+list(rad = 50)
+list(fire = 80)
+list(acid = 70)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 100)
+list(rad = 50)
+list(fire = 80)
+list(acid = 70)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 0)
+list(acid = 0)
+Total Unquoted List Associations: 32
+..code\modules\clothing\glasses\glasses.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 80)
+list(acid = 100)
+Total Unquoted List Associations: 8
+..code\modules\clothing\gloves\color.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 70)
+list(acid = 50)
+Total Unquoted List Associations: 8
+..code\modules\clothing\gloves\miscellaneous.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 70)
+list(acid = 30)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 80)
+list(acid = 50)
+list(bullet = 35)
+list(laser = 35)
+list(energy = 20)
+list(bomb = 35)
+list(bio = 35)
+list(rad = 35)
+list(fire = 0)
+list(acid = 0)
+Total Unquoted List Associations: 24
+..code\modules\clothing\head\hardhat.dm
+list(bullet = 5)
+list(laser = 20)
+list(energy = 10)
+list(bomb = 20)
+list(bio = 10)
+list(rad = 20)
+list(fire = 100)
+list(acid = 50)
+Total Unquoted List Associations: 8
+..code\modules\clothing\head\helmet.dm
+list(bullet = 30)
+list(laser = 30)
+list(energy = 10)
+list(bomb = 25)
+list(bio = 0)
+list(rad = 0)
+list(fire = 50)
+list(acid = 50)
+list(bullet = 40)
+list(laser = 10)
+list(energy = 10)
+list(bomb = 40)
+list(bio = 0)
+list(rad = 0)
+list(fire = 50)
+list(acid = 50)
+list(bullet = 15)
+list(laser = 5)
+list(energy = 5)
+list(bomb = 5)
+list(bio = 2)
+list(rad = 0)
+list(fire = 50)
+list(acid = 50)
+list(bullet = 30)
+list(laser = 30)
+list(energy = 30)
+list(bomb = 50)
+list(bio = 90)
+list(rad = 20)
+list(fire = 50)
+list(acid = 50)
+list(bullet = 30)
+list(laser = 25)
+list(energy = 10)
+list(bomb = 25)
+list(bio = 10)
+list(rad = 0)
+list(fire = 50)
+list(acid = 50)
+list(bullet = 0)
+list(laser = 25)
+list(energy = 10)
+list(bomb = 10)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 50)
+list(bullet = 10)
+list(laser = 20)
+list(energy = 10)
+list(bomb = 20)
+list(bio = 0)
+list(rad = 0)
+list(fire = 0)
+list(acid = 50)
+list(bullet = 10)
+list(laser = 20)
+list(energy = 10)
+list(bomb = 20)
+list(bio = 0)
+list(rad = 0)
+list(fire = 0)
+list(acid = 50)
+list(bullet = 15)
+list(laser = 5)
+list(energy = 5)
+list(bomb = 5)
+list(bio = 2)
+list(rad = 0)
+list(fire = 0)
+list(acid = 50)
+list(bullet = 25)
+list(laser = 25)
+list(energy = 10)
+list(bomb = 10)
+list(bio = 5)
+list(rad = 20)
+list(fire = 40)
+list(acid = 20)
+Total Unquoted List Associations: 80
+..code\modules\clothing\head\jobs.dm
+list(bullet = 15)
+list(laser = 25)
+list(energy = 10)
+list(bomb = 25)
+list(bio = 0)
+list(rad = 0)
+list(fire = 50)
+list(acid = 50)
+list(bullet = 15)
+list(laser = 25)
+list(energy = 10)
+list(bomb = 25)
+list(bio = 0)
+list(rad = 0)
+list(fire = 50)
+list(acid = 50)
+list(bullet = 5)
+list(laser = 25)
+list(energy = 10)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 30)
+list(acid = 50)
+list(bullet = 30)
+list(laser = 25)
+list(energy = 10)
+list(bomb = 25)
+list(bio = 10)
+list(rad = 0)
+list(fire = 50)
+list(acid = 60)
+list(bullet = 30)
+list(laser = 30)
+list(energy = 10)
+list(bomb = 25)
+list(bio = 0)
+list(rad = 0)
+list(fire = 30)
+list(acid = 60)
+list(bullet = 30)
+list(laser = 30)
+list(energy = 10)
+list(bomb = 25)
+list(bio = 0)
+list(rad = 0)
+list(fire = 20)
+list(acid = 50)
+list(bullet = 30)
+list(laser = 30)
+list(energy = 10)
+list(bomb = 25)
+list(bio = 0)
+list(rad = 0)
+list(fire = 30)
+list(acid = 50)
+Total Unquoted List Associations: 56
+..code\modules\clothing\head\misc.dm
+list(bullet = 15)
+list(laser = 30)
+list(energy = 10)
+list(bomb = 25)
+list(bio = 0)
+list(rad = 0)
+list(fire = 50)
+list(acid = 50)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 15)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 50)
+Total Unquoted List Associations: 16
+..code\modules\clothing\head\misc_special.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 60)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 0)
+list(acid = 0)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 0)
+list(acid = 0)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 0)
+list(acid = 0)
+Total Unquoted List Associations: 32
+..code\modules\clothing\head\soft_caps.dm
+list(bullet = 25)
+list(laser = 25)
+list(energy = 10)
+list(bomb = 25)
+list(bio = 0)
+list(rad = 0)
+list(fire = 20)
+list(acid = 50)
+Total Unquoted List Associations: 8
+..code\modules\clothing\masks\gasmask.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 55)
+list(bullet = 0)
+list(laser = 2)
+list(energy = 2)
+list(bomb = 0)
+list(bio = 75)
+list(rad = 0)
+list(fire = 0)
+list(acid = 0)
+Total Unquoted List Associations: 16
+..code\modules\clothing\masks\miscellaneous.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 25)
+list(rad = 0)
+list(fire = 0)
+list(acid = 0)
+Total Unquoted List Associations: 8
+..code\modules\clothing\neck\ties.dm
+list(bullet = 5)
+list(laser = 5)
+list(energy = 5)
+list(bomb = 20)
+list(bio = 20)
+list(rad = 5)
+list(fire = 0)
+list(acid = 25)
+Total Unquoted List Associations: 8
+..code\modules\clothing\shoes\miscellaneous.dm
+list(bullet = 25)
+list(laser = 25)
+list(energy = 25)
+list(bomb = 50)
+list(bio = 10)
+list(rad = 0)
+list(fire = 70)
+list(acid = 50)
+list(bullet = 30)
+list(laser = 25)
+list(energy = 25)
+list(bomb = 50)
+list(bio = 30)
+list(rad = 30)
+list(fire = 90)
+list(acid = 50)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 40)
+list(acid = 75)
+Total Unquoted List Associations: 24
+..code\modules\clothing\spacesuits\chronosuit.dm
+list(bullet = 30)
+list(laser = 60)
+list(energy = 60)
+list(bomb = 30)
+list(bio = 90)
+list(rad = 90)
+list(fire = 100)
+list(acid = 100)
+list(bullet = 60)
+list(laser = 60)
+list(energy = 60)
+list(bomb = 30)
+list(bio = 90)
+list(rad = 90)
+list(fire = 100)
+list(acid = 1000)
+Total Unquoted List Associations: 16
+..code\modules\clothing\spacesuits\flightsuit.dm
+list(bullet = 20)
+list(laser = 20)
+list(energy = 10)
+list(bomb = 30)
+list(bio = 100)
+list(rad = 75)
+list(fire = 100)
+list(acid = 100)
+list(bullet = 20)
+list(laser = 20)
+list(energy = 10)
+list(bomb = 30)
+list(bio = 100)
+list(rad = 75)
+list(fire = 100)
+list(acid = 100)
+list(bullet = 20)
+list(laser = 20)
+list(energy = 10)
+list(bomb = 30)
+list(bio = 100)
+list(rad = 75)
+list(fire = 100)
+list(acid = 100)
+Total Unquoted List Associations: 24
+..code\modules\clothing\spacesuits\hardsuit.dm
+list(bullet = 5)
+list(laser = 10)
+list(energy = 5)
+list(bomb = 10)
+list(bio = 100)
+list(rad = 75)
+list(fire = 50)
+list(acid = 75)
+list(bullet = 5)
+list(laser = 10)
+list(energy = 5)
+list(bomb = 10)
+list(bio = 100)
+list(rad = 75)
+list(fire = 50)
+list(acid = 75)
+list(bullet = 5)
+list(laser = 10)
+list(energy = 5)
+list(bomb = 10)
+list(bio = 100)
+list(rad = 75)
+list(fire = 100)
+list(acid = 75)
+list(bullet = 5)
+list(laser = 10)
+list(energy = 5)
+list(bomb = 10)
+list(bio = 100)
+list(rad = 75)
+list(fire = 100)
+list(acid = 75)
+list(bullet = 5)
+list(laser = 10)
+list(energy = 5)
+list(bomb = 10)
+list(bio = 100)
+list(rad = 0)
+list(fire = 100)
+list(acid = 75)
+list(bullet = 5)
+list(laser = 10)
+list(energy = 5)
+list(bomb = 10)
+list(bio = 100)
+list(rad = 0)
+list(fire = 100)
+list(acid = 75)
+list(bullet = 5)
+list(laser = 10)
+list(energy = 5)
+list(bomb = 50)
+list(bio = 100)
+list(rad = 90)
+list(fire = 100)
+list(acid = 90)
+list(bullet = 5)
+list(laser = 10)
+list(energy = 5)
+list(bomb = 50)
+list(bio = 100)
+list(rad = 90)
+list(fire = 100)
+list(acid = 90)
+list(bullet = 5)
+list(laser = 10)
+list(energy = 5)
+list(bomb = 50)
+list(bio = 100)
+list(rad = 50)
+list(fire = 50)
+list(acid = 75)
+list(bullet = 5)
+list(laser = 10)
+list(energy = 5)
+list(bomb = 50)
+list(bio = 100)
+list(rad = 50)
+list(fire = 50)
+list(acid = 75)
+list(bullet = 50)
+list(laser = 30)
+list(energy = 15)
+list(bomb = 35)
+list(bio = 100)
+list(rad = 50)
+list(fire = 50)
+list(acid = 90)
+list(bullet = 50)
+list(laser = 30)
+list(energy = 15)
+list(bomb = 35)
+list(bio = 100)
+list(rad = 50)
+list(fire = 50)
+list(acid = 90)
+list(bullet = 60)
+list(laser = 50)
+list(energy = 25)
+list(bomb = 55)
+list(bio = 100)
+list(rad = 70)
+list(fire = 100)
+list(acid = 100)
+list(bullet = 60)
+list(laser = 50)
+list(energy = 25)
+list(bomb = 55)
+list(bio = 100)
+list(rad = 70)
+list(fire = 100)
+list(acid = 100)
+list(bullet = 40)
+list(laser = 40)
+list(energy = 20)
+list(bomb = 35)
+list(bio = 100)
+list(rad = 50)
+list(fire = 100)
+list(acid = 100)
+list(bullet = 40)
+list(laser = 40)
+list(energy = 20)
+list(bomb = 35)
+list(bio = 100)
+list(rad = 50)
+list(fire = 100)
+list(acid = 100)
+list(bullet = 5)
+list(laser = 10)
+list(energy = 5)
+list(bomb = 10)
+list(bio = 100)
+list(rad = 50)
+list(fire = 75)
+list(acid = 75)
+list(bullet = 5)
+list(laser = 10)
+list(energy = 5)
+list(bomb = 10)
+list(bio = 100)
+list(rad = 50)
+list(fire = 75)
+list(acid = 75)
+list(bullet = 5)
+list(laser = 10)
+list(energy = 5)
+list(bomb = 100)
+list(bio = 100)
+list(rad = 60)
+list(fire = 60)
+list(acid = 80)
+list(bullet = 5)
+list(laser = 10)
+list(energy = 5)
+list(bomb = 100)
+list(bio = 100)
+list(rad = 60)
+list(fire = 60)
+list(acid = 80)
+list(bullet = 15)
+list(laser = 30)
+list(energy = 10)
+list(bomb = 10)
+list(bio = 100)
+list(rad = 50)
+list(fire = 75)
+list(acid = 75)
+list(bullet = 15)
+list(laser = 30)
+list(energy = 10)
+list(bomb = 10)
+list(bio = 100)
+list(rad = 50)
+list(fire = 75)
+list(acid = 75)
+list(bullet = 25)
+list(laser = 30)
+list(energy = 10)
+list(bomb = 25)
+list(bio = 100)
+list(rad = 50)
+list(fire = 95)
+list(acid = 95)
+list(bullet = 25)
+list(laser = 30)
+list(energy = 10)
+list(bomb = 25)
+list(bio = 100)
+list(rad = 50)
+list(fire = 95)
+list(acid = 95)
+list(bullet = 50)
+list(laser = 50)
+list(energy = 25)
+list(bomb = 50)
+list(bio = 100)
+list(rad = 50)
+list(fire = 100)
+list(acid = 100)
+list(bullet = 50)
+list(laser = 50)
+list(energy = 25)
+list(bomb = 50)
+list(bio = 100)
+list(rad = 50)
+list(fire = 100)
+list(acid = 100)
+list(bullet = 5)
+list(laser = 10)
+list(energy = 5)
+list(bomb = 10)
+list(bio = 100)
+list(rad = 75)
+list(fire = 60)
+list(acid = 30)
+list(bullet = 5)
+list(laser = 10)
+list(energy = 5)
+list(bomb = 10)
+list(bio = 100)
+list(rad = 75)
+list(fire = 60)
+list(acid = 30)
+list(bullet = 15)
+list(laser = 30)
+list(energy = 10)
+list(bomb = 10)
+list(bio = 100)
+list(rad = 50)
+list(fire = 100)
+list(acid = 100)
+list(bullet = 30)
+list(laser = 30)
+list(energy = 30)
+list(bomb = 50)
+list(bio = 100)
+list(rad = 100)
+list(fire = 95)
+list(acid = 95)
+list(bullet = 30)
+list(laser = 30)
+list(energy = 30)
+list(bomb = 50)
+list(bio = 100)
+list(rad = 100)
+list(fire = 95)
+list(acid = 95)
+list(bullet = 50)
+list(laser = 30)
+list(energy = 15)
+list(bomb = 35)
+list(bio = 100)
+list(rad = 50)
+list(fire = 100)
+list(acid = 100)
+list(bullet = 50)
+list(laser = 30)
+list(energy = 15)
+list(bomb = 35)
+list(bio = 100)
+list(rad = 50)
+list(fire = 100)
+list(acid = 100)
+list(bullet = 80)
+list(laser = 50)
+list(energy = 50)
+list(bomb = 100)
+list(bio = 100)
+list(rad = 100)
+list(fire = 100)
+list(acid = 100)
+list(bullet = 80)
+list(laser = 50)
+list(energy = 50)
+list(bomb = 100)
+list(bio = 100)
+list(rad = 100)
+list(fire = 100)
+list(acid = 100)
+Total Unquoted List Associations: 280
+..code\modules\clothing\spacesuits\miscellaneous.dm
+list(bullet = 80)
+list(laser = 50)
+list(energy = 50)
+list(bomb = 100)
+list(bio = 100)
+list(rad = 100)
+list(fire = 100)
+list(acid = 100)
+list(bullet = 80)
+list(laser = 50)
+list(energy = 50)
+list(bomb = 100)
+list(bio = 100)
+list(rad = 100)
+list(fire = 100)
+list(acid = 100)
+list(bullet = 30)
+list(laser = 30)
+list(energy = 30)
+list(bomb = 50)
+list(bio = 90)
+list(rad = 20)
+list(fire = 100)
+list(acid = 100)
+list(bullet = 80)
+list(laser = 50)
+list(energy = 50)
+list(bomb = 100)
+list(bio = 100)
+list(rad = 100)
+list(fire = 100)
+list(acid = 100)
+list(bullet = 80)
+list(laser = 50)
+list(energy = 50)
+list(bomb = 100)
+list(bio = 100)
+list(rad = 100)
+list(fire = 100)
+list(acid = 100)
+list(bullet = 50)
+list(laser = 30)
+list(energy = 15)
+list(bomb = 30)
+list(bio = 30)
+list(rad = 30)
+list(fire = 60)
+list(acid = 75)
+list(bullet = 50)
+list(laser = 30)
+list(energy = 15)
+list(bomb = 30)
+list(bio = 30)
+list(rad = 30)
+list(fire = 60)
+list(acid = 75)
+list(bullet = 50)
+list(laser = 50)
+list(energy = 50)
+list(bomb = 50)
+list(bio = 100)
+list(rad = 100)
+list(fire = 80)
+list(acid = 80)
+list(bullet = 50)
+list(laser = 30)
+list(energy = 50)
+list(bomb = 50)
+list(bio = 100)
+list(rad = 100)
+list(fire = 0)
+list(acid = 95)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 100)
+list(rad = 20)
+list(fire = 50)
+list(acid = 65)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 100)
+list(rad = 20)
+list(fire = 50)
+list(acid = 65)
+list(bullet = 40)
+list(laser = 30)
+list(energy = 25)
+list(bomb = 100)
+list(bio = 100)
+list(rad = 100)
+list(fire = 80)
+list(acid = 80)
+list(bullet = 40)
+list(laser = 30)
+list(energy = 25)
+list(bomb = 100)
+list(bio = 100)
+list(rad = 100)
+list(fire = 80)
+list(acid = 80)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 100)
+list(rad = 75)
+list(fire = 60)
+list(acid = 75)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 100)
+list(rad = 75)
+list(fire = 60)
+list(acid = 75)
+Total Unquoted List Associations: 120
+..code\modules\clothing\spacesuits\plasmamen.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 100)
+list(rad = 0)
+list(fire = 100)
+list(acid = 75)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 100)
+list(rad = 0)
+list(fire = 100)
+list(acid = 75)
+Total Unquoted List Associations: 16
+..code\modules\clothing\spacesuits\syndi.dm
+list(bullet = 50)
+list(laser = 30)
+list(energy = 15)
+list(bomb = 30)
+list(bio = 30)
+list(rad = 30)
+list(fire = 80)
+list(acid = 85)
+list(bullet = 50)
+list(laser = 30)
+list(energy = 15)
+list(bomb = 30)
+list(bio = 30)
+list(rad = 30)
+list(fire = 80)
+list(acid = 85)
+Total Unquoted List Associations: 16
+..code\modules\clothing\suits\armor.dm
+list(bullet = 30)
+list(laser = 30)
+list(energy = 10)
+list(bomb = 25)
+list(bio = 0)
+list(rad = 0)
+list(fire = 50)
+list(acid = 50)
+list(bullet = 30)
+list(laser = 30)
+list(energy = 10)
+list(bomb = 25)
+list(bio = 0)
+list(rad = 0)
+list(fire = 70)
+list(acid = 90)
+list(bullet = 40)
+list(laser = 50)
+list(energy = 10)
+list(bomb = 25)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 90)
+list(bullet = 10)
+list(laser = 10)
+list(energy = 10)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 80)
+list(acid = 80)
+list(bullet = 25)
+list(laser = 25)
+list(energy = 10)
+list(bomb = 25)
+list(bio = 0)
+list(rad = 0)
+list(fire = 50)
+list(acid = 50)
+list(bullet = 80)
+list(laser = 10)
+list(energy = 10)
+list(bomb = 40)
+list(bio = 0)
+list(rad = 0)
+list(fire = 50)
+list(acid = 50)
+list(bullet = 10)
+list(laser = 60)
+list(energy = 50)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 100)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 100)
+list(acid = 100)
+list(bullet = 80)
+list(laser = 50)
+list(energy = 50)
+list(bomb = 100)
+list(bio = 100)
+list(rad = 100)
+list(fire = 90)
+list(acid = 90)
+list(bullet = 80)
+list(laser = 50)
+list(energy = 50)
+list(bomb = 100)
+list(bio = 100)
+list(rad = 100)
+list(fire = 90)
+list(acid = 90)
+list(bullet = 80)
+list(laser = 50)
+list(energy = 50)
+list(bomb = 100)
+list(bio = 100)
+list(rad = 100)
+list(fire = 90)
+list(acid = 90)
+Total Unquoted List Associations: 88
+..code\modules\clothing\suits\bio.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 100)
+list(rad = 20)
+list(fire = 30)
+list(acid = 100)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 100)
+list(rad = 20)
+list(fire = 30)
+list(acid = 100)
+list(bullet = 15)
+list(laser = 25)
+list(energy = 10)
+list(bomb = 25)
+list(bio = 100)
+list(rad = 20)
+list(fire = 30)
+list(acid = 100)
+list(bullet = 15)
+list(laser = 25)
+list(energy = 10)
+list(bomb = 25)
+list(bio = 100)
+list(rad = 20)
+list(fire = 30)
+list(acid = 100)
+Total Unquoted List Associations: 32
+..code\modules\clothing\suits\cloaks.dm
+list(bullet = 30)
+list(laser = 50)
+list(energy = 40)
+list(bomb = 70)
+list(bio = 60)
+list(rad = 50)
+list(fire = 100)
+list(acid = 100)
+list(bullet = 30)
+list(laser = 50)
+list(energy = 40)
+list(bomb = 70)
+list(bio = 60)
+list(rad = 50)
+list(fire = 100)
+list(acid = 100)
+Total Unquoted List Associations: 16
+..code\modules\clothing\suits\jobs.dm
+list(bullet = 10)
+list(laser = 25)
+list(energy = 10)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 0)
+list(acid = 45)
+Total Unquoted List Associations: 8
+..code\modules\clothing\suits\labcoat.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 50)
+list(rad = 0)
+list(fire = 50)
+list(acid = 50)
+Total Unquoted List Associations: 8
+..code\modules\clothing\suits\miscellaneous.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 50)
+list(rad = 0)
+list(fire = 0)
+list(acid = 0)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 30)
+list(rad = 0)
+list(fire = 0)
+list(acid = 0)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 10)
+list(rad = 0)
+list(fire = 0)
+list(acid = 0)
+list(bullet = 30)
+list(laser = 30)
+list(energy = 10)
+list(bomb = 25)
+list(bio = 0)
+list(rad = 0)
+list(fire = 0)
+list(acid = 50)
+list(bullet = 15)
+list(laser = 30)
+list(energy = 10)
+list(bomb = 25)
+list(bio = 0)
+list(rad = 0)
+list(fire = 0)
+list(acid = 45)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 50)
+list(rad = 0)
+list(fire = 0)
+list(acid = 45)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 10)
+list(bio = 0)
+list(rad = 0)
+list(fire = 0)
+list(acid = 0)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 20)
+list(fire = 30)
+list(acid = 45)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 0)
+list(acid = 0)
+Total Unquoted List Associations: 72
+..code\modules\clothing\suits\utility.dm
+list(bullet = 0)
+list(laser = 20)
+list(energy = 10)
+list(bomb = 100)
+list(bio = 0)
+list(rad = 0)
+list(fire = 80)
+list(acid = 50)
+list(bullet = 0)
+list(laser = 20)
+list(energy = 10)
+list(bomb = 100)
+list(bio = 0)
+list(rad = 0)
+list(fire = 80)
+list(acid = 50)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 60)
+list(rad = 100)
+list(fire = 30)
+list(acid = 30)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 60)
+list(rad = 100)
+list(fire = 30)
+list(acid = 30)
+Total Unquoted List Associations: 32
+..code\modules\clothing\suits\wiz_robe.dm
+list(bullet = 20)
+list(laser = 20)
+list(energy = 20)
+list(bomb = 20)
+list(bio = 20)
+list(rad = 20)
+list(fire = 100)
+list(acid = 100)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 0)
+list(acid = 0)
+list(bullet = 20)
+list(laser = 20)
+list(energy = 20)
+list(bomb = 20)
+list(bio = 20)
+list(rad = 20)
+list(fire = 100)
+list(acid = 100)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 0)
+list(acid = 0)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 0)
+list(acid = 0)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 0)
+list(acid = 0)
+list(bullet = 20)
+list(laser = 20)
+list(energy = 20)
+list(bomb = 20)
+list(bio = 20)
+list(rad = 20)
+list(fire = 100)
+list(acid = 100)
+list(bullet = 20)
+list(laser = 20)
+list(energy = 20)
+list(bomb = 20)
+list(bio = 20)
+list(rad = 20)
+list(fire = 100)
+list(acid = 100)
+Total Unquoted List Associations: 64
+..code\modules\clothing\under\miscellaneous.dm
+list(bullet = 100)
+list(laser = 100)
+list(energy = 100)
+list(bomb = 100)
+list(bio = 100)
+list(rad = 100)
+list(fire = 100)
+list(acid = 100)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 100)
+list(rad = 0)
+list(fire = 95)
+list(acid = 95)
+Total Unquoted List Associations: 16
+..code\modules\clothing\under\syndicate.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 50)
+list(acid = 40)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 50)
+list(acid = 40)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 0)
+list(acid = 0)
+Total Unquoted List Associations: 24
+..code\modules\clothing\under\ties.dm
+list(bullet = 5)
+list(laser = 5)
+list(energy = 5)
+list(bomb = 20)
+list(bio = 20)
+list(rad = 5)
+list(fire = 0)
+list(acid = 25)
+Total Unquoted List Associations: 8
+..code\modules\clothing\under\trek.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 0)
+list(acid = 0)
+Total Unquoted List Associations: 8
+..code\modules\clothing\under\jobs\civilian.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 10)
+list(rad = 0)
+list(fire = 0)
+list(acid = 0)
+Total Unquoted List Associations: 8
+..code\modules\clothing\under\jobs\engineering.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 10)
+list(fire = 80)
+list(acid = 40)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 10)
+list(fire = 60)
+list(acid = 20)
+Total Unquoted List Associations: 16
+..code\modules\clothing\under\jobs\medsci.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 10)
+list(bio = 10)
+list(rad = 0)
+list(fire = 0)
+list(acid = 35)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 10)
+list(bio = 10)
+list(rad = 0)
+list(fire = 0)
+list(acid = 0)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 10)
+list(bio = 10)
+list(rad = 0)
+list(fire = 0)
+list(acid = 0)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 10)
+list(bio = 0)
+list(rad = 0)
+list(fire = 0)
+list(acid = 0)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 10)
+list(rad = 0)
+list(fire = 50)
+list(acid = 65)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 10)
+list(rad = 0)
+list(fire = 0)
+list(acid = 0)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 10)
+list(rad = 0)
+list(fire = 0)
+list(acid = 0)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 10)
+list(rad = 0)
+list(fire = 0)
+list(acid = 0)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 10)
+list(rad = 0)
+list(fire = 0)
+list(acid = 0)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 10)
+list(rad = 0)
+list(fire = 0)
+list(acid = 0)
+Total Unquoted List Associations: 80
+..code\modules\clothing\under\jobs\security.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 30)
+list(acid = 30)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 30)
+list(acid = 30)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 30)
+list(acid = 30)
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 50)
+list(acid = 50)
+Total Unquoted List Associations: 32
+..code\modules\events\holiday\xmas.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 0)
+list(acid = 0)
+Total Unquoted List Associations: 8
+..code\modules\library\lib_items.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 50)
+list(acid = 0)
+Total Unquoted List Associations: 8
+..code\modules\mining\equipment.dm
+list(bullet = 20)
+list(laser = 20)
+list(energy = 20)
+list(bomb = 50)
+list(bio = 100)
+list(rad = 50)
+list(fire = 50)
+list(acid = 50)
+list(bullet = 20)
+list(laser = 20)
+list(energy = 20)
+list(bomb = 50)
+list(bio = 100)
+list(rad = 50)
+list(fire = 50)
+list(acid = 50)
+list(bullet = 5)
+list(laser = 5)
+list(energy = 5)
+list(bomb = 0)
+list(bio = 50)
+list(rad = 0)
+list(fire = 20)
+list(acid = 40)
+Total Unquoted List Associations: 24
+..code\modules\modular_computers\computers\item\computer.dm
+list(bullet = 20)
+list(laser = 20)
+list(energy = 100)
+list(bomb = 0)
+list(bio = 100)
+list(rad = 100)
+list(fire = 0)
+list(acid = 0)
+Total Unquoted List Associations: 8
+..code\modules\ninja\suit\head.dm
+list(bullet = 50)
+list(laser = 30)
+list(energy = 15)
+list(bomb = 30)
+list(bio = 30)
+list(rad = 25)
+list(fire = 100)
+list(acid = 100)
+Total Unquoted List Associations: 8
+..code\modules\ninja\suit\shoes.dm
+list(bullet = 50)
+list(laser = 30)
+list(energy = 15)
+list(bomb = 30)
+list(bio = 30)
+list(rad = 30)
+list(fire = 100)
+list(acid = 100)
+Total Unquoted List Associations: 8
+..code\modules\ninja\suit\suit.dm
+list(bullet = 50)
+list(laser = 30)
+list(energy = 15)
+list(bomb = 30)
+list(bio = 30)
+list(rad = 30)
+list(fire = 100)
+list(acid = 100)
+Total Unquoted List Associations: 8
+..code\modules\power\apc.dm
+list(bullet = 20)
+list(laser = 10)
+list(energy = 100)
+list(bomb = 30)
+list(bio = 100)
+list(rad = 100)
+list(fire = 90)
+list(acid = 50)
+Total Unquoted List Associations: 8
+..code\modules\power\lighting.dm
+list(bullet = 10)
+list(laser = 10)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 80)
+list(acid = 50)
+Total Unquoted List Associations: 8
+..code\modules\power\singularity\field_generator.dm
+list(bullet = 10)
+list(laser = 100)
+list(energy = 100)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 50)
+list(acid = 70)
+Total Unquoted List Associations: 8
+..code\modules\power\singularity\particle_accelerator\particle_accelerator.dm
+list(bullet = 20)
+list(laser = 20)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 90)
+list(acid = 80)
+Total Unquoted List Associations: 8
+..code\modules\reagents\chem_splash.dm
+list(extra_heat = 0)
+list(threatscale = 1)
+list(adminlog = 1)
+Total Unquoted List Associations: 3
+..code\modules\reagents\reagent_containers\glass.dm
+list(bullet = 0)
+list(laser = 0)
+list(energy = 0)
+list(bomb = 0)
+list(bio = 0)
+list(rad = 0)
+list(fire = 75)
+list(acid = 50)
+Total Unquoted List Associations: 8
+..code\modules\recycling\disposal-structures.dm
+list(bullet = 10)
+list(laser = 10)
+list(energy = 100)
+list(bomb = 0)
+list(bio = 100)
+list(rad = 100)
+list(fire = 90)
+list(acid = 30)
+Total Unquoted List Associations: 8
+..code\modules\recycling\disposal-unit.dm
+list(bullet = 10)
+list(laser = 10)
+list(energy = 100)
+list(bomb = 0)
+list(bio = 100)
+list(rad = 100)
+list(fire = 90)
+list(acid = 30)
+Total Unquoted List Associations: 8
+..code\modules\vehicles\vehicle.dm
+list(bullet = 30)
+list(laser = 30)
+list(energy = 0)
+list(bomb = 30)
+list(bio = 0)
+list(rad = 0)
+list(fire = 60)
+list(acid = 60)
+Total Unquoted List Associations: 8
+146/2012 files have Unquoted List Associations in them
+There are 2673 total Unquoted List Associations```
+
+
+
+
diff --git a/tools/UnstandardnessTestForDM.html b/tools/UnstandardnessTestForDM.html
new file mode 100644
index 0000000000000..ba7ff4ab4c4d4
--- /dev/null
+++ b/tools/UnstandardnessTestForDM.html
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+ tools/UnstandardnessTestForDM/readme.txt - SPLURT Station 13
+
+
+
+
+tools/UnstandardnessTestForDM/readme.txt
+
+
+
+
+ the compiled exe file for the Unstandardness text for DM program is in:
+UnstandardnessTestForDM\bin\Debug\UnstandardnessTestForDM.exe
+
+You have to move it to the root folder (where the dme file is) and run it from there for it to work.
+
+
+
+
diff --git a/tools/UnstandardnessTestForDM/UnstandardnessTestForDM/obj/x86/Debug/UnstandardnessTestForDM.csproj.FileListAbsolute.html b/tools/UnstandardnessTestForDM/UnstandardnessTestForDM/obj/x86/Debug/UnstandardnessTestForDM.csproj.FileListAbsolute.html
new file mode 100644
index 0000000000000..5c5ef25441369
--- /dev/null
+++ b/tools/UnstandardnessTestForDM/UnstandardnessTestForDM/obj/x86/Debug/UnstandardnessTestForDM.csproj.FileListAbsolute.html
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+ tools/UnstandardnessTestForDM/UnstandardnessTestForDM/obj/x86/Debug/UnstandardnessTestForDM.csproj.FileListAbsolute.txt - SPLURT Station 13
+
+
+
+
+tools/UnstandardnessTestForDM/UnstandardnessTestForDM/obj/x86/Debug/UnstandardnessTestForDM.csproj.FileListAbsolute.txt
+
+
+
+
+ c:\users\baloh\documents\visual studio 2010\Projects\UnstandardnessTestForDM\UnstandardnessTestForDM\bin\Debug\UnstandardnessTestForDM.exe
+c:\users\baloh\documents\visual studio 2010\Projects\UnstandardnessTestForDM\UnstandardnessTestForDM\bin\Debug\UnstandardnessTestForDM.pdb
+c:\users\baloh\documents\visual studio 2010\Projects\UnstandardnessTestForDM\UnstandardnessTestForDM\obj\x86\Debug\ResolveAssemblyReference.cache
+c:\users\baloh\documents\visual studio 2010\Projects\UnstandardnessTestForDM\UnstandardnessTestForDM\obj\x86\Debug\UnstandardnessTestForDM.Form1.resources
+c:\users\baloh\documents\visual studio 2010\Projects\UnstandardnessTestForDM\UnstandardnessTestForDM\obj\x86\Debug\UnstandardnessTestForDM.Properties.Resources.resources
+c:\users\baloh\documents\visual studio 2010\Projects\UnstandardnessTestForDM\UnstandardnessTestForDM\obj\x86\Debug\GenerateResource.read.1.tlog
+c:\users\baloh\documents\visual studio 2010\Projects\UnstandardnessTestForDM\UnstandardnessTestForDM\obj\x86\Debug\GenerateResource.write.1.tlog
+c:\users\baloh\documents\visual studio 2010\Projects\UnstandardnessTestForDM\UnstandardnessTestForDM\obj\x86\Debug\UnstandardnessTestForDM.exe
+c:\users\baloh\documents\visual studio 2010\Projects\UnstandardnessTestForDM\UnstandardnessTestForDM\obj\x86\Debug\UnstandardnessTestForDM.pdb
+C:\Users\Baloh\Desktop\tgs13\tools\UnstandardnessTestForDM\UnstandardnessTestForDM\bin\Debug\UnstandardnessTestForDM.exe
+C:\Users\Baloh\Desktop\tgs13\tools\UnstandardnessTestForDM\UnstandardnessTestForDM\bin\Debug\UnstandardnessTestForDM.pdb
+C:\Users\Baloh\Desktop\tgs13\tools\UnstandardnessTestForDM\UnstandardnessTestForDM\obj\x86\Debug\ResolveAssemblyReference.cache
+C:\Users\Baloh\Desktop\tgs13\tools\UnstandardnessTestForDM\UnstandardnessTestForDM\obj\x86\Debug\UnstandardnessTestForDM.Form1.resources
+C:\Users\Baloh\Desktop\tgs13\tools\UnstandardnessTestForDM\UnstandardnessTestForDM\obj\x86\Debug\UnstandardnessTestForDM.Properties.Resources.resources
+C:\Users\Baloh\Desktop\tgs13\tools\UnstandardnessTestForDM\UnstandardnessTestForDM\obj\x86\Debug\GenerateResource.read.1.tlog
+C:\Users\Baloh\Desktop\tgs13\tools\UnstandardnessTestForDM\UnstandardnessTestForDM\obj\x86\Debug\GenerateResource.write.1.tlog
+C:\Users\Baloh\Desktop\tgs13\tools\UnstandardnessTestForDM\UnstandardnessTestForDM\obj\x86\Debug\UnstandardnessTestForDM.exe
+C:\Users\Baloh\Desktop\tgs13\tools\UnstandardnessTestForDM\UnstandardnessTestForDM\obj\x86\Debug\UnstandardnessTestForDM.pdb
+
+
+
+
diff --git a/tools/UpdatePaths/apc_pixel_offsets.html b/tools/UpdatePaths/apc_pixel_offsets.html
new file mode 100644
index 0000000000000..dace874b5d1f6
--- /dev/null
+++ b/tools/UpdatePaths/apc_pixel_offsets.html
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+ tools/UpdatePaths/apc_pixel_offsets.txt - SPLURT Station 13
+
+
+
+
+tools/UpdatePaths/apc_pixel_offsets.txt
+
+
+
+
+ /obj/machinery/power/apc/@SUBTYPES{dir = 1} : @OLD{@OLD; pixel_y = 23}
+/obj/machinery/power/apc/@SUBTYPES{dir = 2} : @OLD{@OLD; pixel_y = -23}
+/obj/machinery/power/apc/@SUBTYPES{dir = 4} : @OLD{@OLD; pixel_x = 24}
+/obj/machinery/power/apc/@SUBTYPES{dir = 8} : @OLD{@OLD; pixel_x = -25}
+
+
+
+
diff --git a/tools/UpdatePaths/bridge_to_command.html b/tools/UpdatePaths/bridge_to_command.html
new file mode 100644
index 0000000000000..62a511f246ba0
--- /dev/null
+++ b/tools/UpdatePaths/bridge_to_command.html
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+ tools/UpdatePaths/bridge_to_command.txt - SPLURT Station 13
+
+
+
+
+tools/UpdatePaths/bridge_to_command.txt
+
+
+
+
+ /area/bridge : /area/command/bridge
+/area/bridge/meeting_room : /area/command/meeting_room
+/area/bridge/meeting_room/council : /area/command/meeting_room/council
+/area/bridge/showroom/corporate : /area/command/corporate_showroom
+/area/service/heads/captain : /area/command/heads_quarters/captain
+/area/service/heads/captain/private : /area/command/heads_quarters/captain/private
+/area/service/heads/chief : /area/command/heads_quarters/ce
+/area/service/heads/chief/private : /area/command/heads_quarters/ce/private
+/area/service/heads/cmo : /area/command/heads_quarters/cmo
+/area/service/heads/cmo/private : /area/command/heads_quarters/cmo/private
+/area/service/heads/hop : /area/command/heads_quarters/hop
+/area/service/heads/hop/private : /area/command/heads_quarters/hop/private
+/area/service/heads/hos : /area/command/heads_quarters/hos
+/area/service/heads/hos/private : /area/command/heads_quarters/hos/private
+/area/service/heads/hor : /area/command/heads_quarters/rd
+/area/crew_quarters/heads/hor/private : /area/command/heads_quarters/rd/private
+
+
+
+
+
diff --git a/tools/UpdatePaths/cornersfix.html b/tools/UpdatePaths/cornersfix.html
new file mode 100644
index 0000000000000..55c2de53157c6
--- /dev/null
+++ b/tools/UpdatePaths/cornersfix.html
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+ tools/UpdatePaths/cornersfix.txt - SPLURT Station 13
+
+
+
+
+tools/UpdatePaths/cornersfix.txt
+
+
+
+
+ /obj/effect/turf_decal/stripes/corner {dir=1} : /obj/item/bear_armor {@OLD;dir=8}
+/obj/effect/turf_decal/stripes/corner {dir=2} : /obj/effect/turf_decal/stripes/corner {@OLD;dir=@SKIP}
+/obj/effect/turf_decal/stripes/corner {dir=4} : /obj/effect/turf_decal/stripes/corner {@OLD;dir=1}
+/obj/effect/turf_decal/stripes/corner {dir=8} : /obj/effect/turf_decal/stripes/corner {@OLD;dir=4}
+/obj/item/bear_armor {dir=8} : /obj/effect/turf_decal/stripes/corner {@OLD}
+/obj/effect/turf_decal/stripes/red/corner {dir=1} : /obj/item/bear_armor {@OLD;dir=8}
+/obj/effect/turf_decal/stripes/red/corner {dir=2} : /obj/effect/turf_decal/stripes/red/corner {@OLD;dir=@SKIP}
+/obj/effect/turf_decal/stripes/red/corner {dir=4} : /obj/effect/turf_decal/stripes/red/corner {@OLD;dir=1}
+/obj/effect/turf_decal/stripes/red/corner {dir=8} : /obj/effect/turf_decal/stripes/red/corner {@OLD;dir=4}
+/obj/item/bear_armor {dir=8} : /obj/effect/turf_decal/stripes/red/corner {@OLD}
+/obj/effect/turf_decal/stripes/white/corner {dir=1} : /obj/item/bear_armor {@OLD;dir=8}
+/obj/effect/turf_decal/stripes/white/corner {dir=2} : /obj/effect/turf_decal/stripes/white/corner {@OLD;dir=@SKIP}
+/obj/effect/turf_decal/stripes/white/corner {dir=4} : /obj/effect/turf_decal/stripes/white/corner {@OLD;dir=1}
+/obj/effect/turf_decal/stripes/white/corner {dir=8} : /obj/effect/turf_decal/stripes/white/corner {@OLD;dir=4}
+/obj/item/bear_armor {dir=8} : /obj/effect/turf_decal/stripes/white/corner {@OLD}
+/obj/effect/turf_decal/box/corners {dir=1} : /obj/item/bear_armor {@OLD;dir=8}
+/obj/effect/turf_decal/box/corners {dir=2} : /obj/effect/turf_decal/box/corners {@OLD;dir=@SKIP}
+/obj/effect/turf_decal/box/corners {dir=4} : /obj/effect/turf_decal/box/corners {@OLD;dir=1}
+/obj/effect/turf_decal/box/corners {dir=8} : /obj/effect/turf_decal/box/corners {@OLD;dir=4}
+/obj/item/bear_armor {dir=8} : /obj/effect/turf_decal/box/corners {@OLD}
+/obj/effect/turf_decal/box/red/corners {dir=1} : /obj/item/bear_armor {@OLD;dir=8}
+/obj/effect/turf_decal/box/red/corners {dir=2} : /obj/effect/turf_decal/box/red/corners {@OLD;dir=@SKIP}
+/obj/effect/turf_decal/box/red/corners {dir=4} : /obj/effect/turf_decal/box/red/corners {@OLD;dir=1}
+/obj/effect/turf_decal/box/red/corners {dir=8} : /obj/effect/turf_decal/box/red/corners {@OLD;dir=4}
+/obj/item/bear_armor {dir=8} : /obj/effect/turf_decal/box/red/corners {@OLD}
+/obj/effect/turf_decal/box/white/corners {dir=1} : /obj/item/bear_armor {@OLD;dir=8}
+/obj/effect/turf_decal/box/white/corners {dir=2} : /obj/effect/turf_decal/box/white/corners {@OLD;dir=@SKIP}
+/obj/effect/turf_decal/box/white/corners {dir=4} : /obj/effect/turf_decal/box/white/corners {@OLD;dir=1}
+/obj/effect/turf_decal/box/white/corners {dir=8} : /obj/effect/turf_decal/box/white/corners {@OLD;dir=4}
+/obj/item/bear_armor {dir=8} : /obj/effect/turf_decal/box/white/corners {@OLD}```
+
+
+
+
diff --git a/tools/UpdatePaths/turfs2decals.html b/tools/UpdatePaths/turfs2decals.html
new file mode 100644
index 0000000000000..78a41fd496d2d
--- /dev/null
+++ b/tools/UpdatePaths/turfs2decals.html
@@ -0,0 +1,494 @@
+
+
+
+
+
+
+ tools/UpdatePaths/turfs2decals.txt - SPLURT Station 13
+
+
+
+
+tools/UpdatePaths/turfs2decals.txt
+
+
+
+
+ /turf/open/floor/circuit/killroom : /turf/open/floor/circuit/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/airless/asteroid : /obj/effect/turf_decal/sand , /turf/open/floor/plasteel/airless {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/airless/bar : /obj/effect/turf_decal/tile/bar , /obj/effect/turf_decal/tile/bar {dir=1} , /turf/open/floor/plasteel/airless {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/arrival {dir=1} : /obj/effect/turf_decal/tile/blue {dir=4} , /turf/open/floor/plasteel/white/corner {@OLD;dir=1}
+/turf/open/floor/plasteel/arrival {dir=@UNSET} : /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel/white/corner {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/arrival {dir=2} : /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel/white/corner {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/arrival {dir=4} : /obj/effect/turf_decal/tile/blue {dir=4} , /turf/open/floor/plasteel/white/corner {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/arrival {dir=5} : /obj/effect/turf_decal/tile/blue {dir=4} , /turf/open/floor/plasteel/cafeteria {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/arrival {dir=6} : /obj/effect/turf_decal/tile/blue {dir=4} , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel/white/corner {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/arrival {dir=8} : /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel/white/corner {@OLD;dir=1}
+/turf/open/floor/plasteel/arrival {dir=9} : /obj/effect/turf_decal/tile/blue {dir=4} , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel/white/corner {@OLD;dir=1}
+/turf/open/floor/plasteel/arrival {dir=10} : /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel/cafeteria {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/arrival/corner {dir=1} : /turf/open/floor/plasteel/white/corner {@OLD}
+/turf/open/floor/plasteel/arrival/corner {dir=@UNSET} : /turf/open/floor/plasteel/white/corner {@OLD}
+/turf/open/floor/plasteel/arrival/corner {dir=2} : /turf/open/floor/plasteel/white/corner {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/arrival/corner {dir=4} : /obj/effect/turf_decal/tile/blue {dir=@OLD} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/arrival/corner {dir=8} : /obj/effect/turf_decal/tile/blue {dir=@OLD} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/asteroid : /obj/effect/turf_decal/sand , /turf/open/floor/plasteel
+/turf/open/floor/plasteel/bar : /obj/effect/turf_decal/tile/bar , /obj/effect/turf_decal/tile/bar {dir=1} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/barber : /obj/effect/turf_decal/tile/blue {dir=4} , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel/cafeteria {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/blue : /obj/effect/turf_decal/tile/blue {dir=1} , /obj/effect/turf_decal/tile/blue , /obj/effect/turf_decal/tile/blue {dir=4} , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/blue/side {dir=1} : /obj/effect/turf_decal/tile/blue {dir=1} , /obj/effect/turf_decal/tile/blue {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/blue/side {dir=@UNSET} : /obj/effect/turf_decal/tile/blue , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/blue/side {dir=2} : /obj/effect/turf_decal/tile/blue , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/blue/side {dir=4} : /obj/effect/turf_decal/tile/blue , /obj/effect/turf_decal/tile/blue {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/blue/side {dir=5} : /obj/effect/turf_decal/tile/blue {dir=1} , /obj/effect/turf_decal/tile/blue , /obj/effect/turf_decal/tile/blue {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/blue/side {dir=6} : /obj/effect/turf_decal/tile/blue , /obj/effect/turf_decal/tile/blue {dir=4} , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/blue/side {dir=8} : /obj/effect/turf_decal/tile/blue {dir=1} , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/blue/side {dir=9} : /obj/effect/turf_decal/tile/blue {dir=1} , /obj/effect/turf_decal/tile/blue {dir=4} , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/blue/side {dir=10} : /obj/effect/turf_decal/tile/blue {dir=1} , /obj/effect/turf_decal/tile/blue , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/blue/corner : /obj/effect/turf_decal/tile/blue {dir=@OLD} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/blueyellow : /obj/effect/turf_decal/tile/blue {dir=1} , /obj/effect/turf_decal/tile/blue , /obj/effect/turf_decal/tile/yellow {dir=4} , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/blueyellow/side {dir=1} : /obj/effect/turf_decal/tile/blue {dir=1} , /obj/effect/turf_decal/tile/yellow {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/blueyellow/side {dir=@UNSET} : /obj/effect/turf_decal/tile/blue , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/blueyellow/side {dir=2} : /obj/effect/turf_decal/tile/blue , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/blueyellow/side {dir=4} : /obj/effect/turf_decal/tile/blue , /obj/effect/turf_decal/tile/yellow {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/blueyellow/side {dir=5} : /obj/effect/turf_decal/tile/blue {dir=1} , /obj/effect/turf_decal/tile/blue , /obj/effect/turf_decal/tile/yellow {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/blueyellow/side {dir=6} : /obj/effect/turf_decal/tile/blue , /obj/effect/turf_decal/tile/yellow {dir=4} , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/blueyellow/side {dir=8} : /obj/effect/turf_decal/tile/blue {dir=1} , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/blueyellow/side {dir=9} : /obj/effect/turf_decal/tile/blue {dir=1} , /obj/effect/turf_decal/tile/yellow {dir=4} , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/blueyellow/side {dir=10} : /obj/effect/turf_decal/tile/blue {dir=1} , /obj/effect/turf_decal/tile/blue , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/brown {dir=1} : /obj/effect/turf_decal/tile/brown {dir=1} , /obj/effect/turf_decal/tile/brown {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/brown {dir=@UNSET} : /obj/effect/turf_decal/tile/brown , /obj/effect/turf_decal/tile/brown {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/brown {dir=2} : /obj/effect/turf_decal/tile/brown , /obj/effect/turf_decal/tile/brown {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/brown {dir=4} : /obj/effect/turf_decal/tile/brown , /obj/effect/turf_decal/tile/brown {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/brown {dir=5} : /obj/effect/turf_decal/tile/brown {dir=1} , /obj/effect/turf_decal/tile/brown , /obj/effect/turf_decal/tile/brown {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/brown {dir=6} : /obj/effect/turf_decal/tile/brown , /obj/effect/turf_decal/tile/brown {dir=4} , /obj/effect/turf_decal/tile/brown {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/brown {dir=8} : /obj/effect/turf_decal/tile/brown {dir=1} , /obj/effect/turf_decal/tile/brown {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/brown {dir=9} : /obj/effect/turf_decal/tile/brown {dir=1} , /obj/effect/turf_decal/tile/brown {dir=4} , /obj/effect/turf_decal/tile/brown {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/brown {dir=10} : /obj/effect/turf_decal/tile/brown {dir=1} , /obj/effect/turf_decal/tile/brown , /obj/effect/turf_decal/tile/brown {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/brown/corner : /obj/effect/turf_decal/tile/brown {dir=@OLD} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/brown/telecomms {dir=1} : /obj/effect/turf_decal/tile/brown {dir=1} , /obj/effect/turf_decal/tile/brown {dir=4} , /turf/open/floor/plasteel/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/brown/telecomms {dir=@UNSET} : /obj/effect/turf_decal/tile/brown , /obj/effect/turf_decal/tile/brown {dir=8} , /turf/open/floor/plasteel/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/brown/telecomms {dir=2} : /obj/effect/turf_decal/tile/brown , /obj/effect/turf_decal/tile/brown {dir=8} , /turf/open/floor/plasteel/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/brown/telecomms {dir=4} : /obj/effect/turf_decal/tile/brown , /obj/effect/turf_decal/tile/brown {dir=4} , /turf/open/floor/plasteel/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/brown/telecomms {dir=5} : /obj/effect/turf_decal/tile/brown {dir=1} , /obj/effect/turf_decal/tile/brown , /obj/effect/turf_decal/tile/brown {dir=4} , /turf/open/floor/plasteel/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/brown/telecomms {dir=6} : /obj/effect/turf_decal/tile/brown , /obj/effect/turf_decal/tile/brown {dir=4} , /obj/effect/turf_decal/tile/brown {dir=8} , /turf/open/floor/plasteel/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/brown/telecomms {dir=8} : /obj/effect/turf_decal/tile/brown {dir=1} , /obj/effect/turf_decal/tile/brown {dir=8} , /turf/open/floor/plasteel/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/brown/telecomms {dir=9} : /obj/effect/turf_decal/tile/brown {dir=1} , /obj/effect/turf_decal/tile/brown {dir=4} , /obj/effect/turf_decal/tile/brown {dir=8} , /turf/open/floor/plasteel/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/brown/telecomms {dir=10} : /obj/effect/turf_decal/tile/brown {dir=1} , /obj/effect/turf_decal/tile/brown , /obj/effect/turf_decal/tile/brown {dir=8} , /turf/open/floor/plasteel/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/brown/telecomms/mainframe {dir=1} : /obj/effect/turf_decal/tile/brown {dir=1} , /obj/effect/turf_decal/tile/brown {dir=4} , /turf/open/floor/plasteel/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/brown/telecomms/mainframe {dir=@UNSET} : /obj/effect/turf_decal/tile/brown , /obj/effect/turf_decal/tile/brown {dir=8} , /turf/open/floor/plasteel/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/brown/telecomms/mainframe {dir=2} : /obj/effect/turf_decal/tile/brown , /obj/effect/turf_decal/tile/brown {dir=8} , /turf/open/floor/plasteel/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/brown/telecomms/mainframe {dir=4} : /obj/effect/turf_decal/tile/brown , /obj/effect/turf_decal/tile/brown {dir=4} , /turf/open/floor/plasteel/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/brown/telecomms/mainframe {dir=5} : /obj/effect/turf_decal/tile/brown {dir=1} , /obj/effect/turf_decal/tile/brown , /obj/effect/turf_decal/tile/brown {dir=4} , /turf/open/floor/plasteel/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/brown/telecomms/mainframe {dir=6} : /obj/effect/turf_decal/tile/brown , /obj/effect/turf_decal/tile/brown {dir=4} , /obj/effect/turf_decal/tile/brown {dir=8} , /turf/open/floor/plasteel/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/brown/telecomms/mainframe {dir=8} : /obj/effect/turf_decal/tile/brown {dir=1} , /obj/effect/turf_decal/tile/brown {dir=8} , /turf/open/floor/plasteel/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/brown/telecomms/mainframe {dir=9} : /obj/effect/turf_decal/tile/brown {dir=1} , /obj/effect/turf_decal/tile/brown {dir=4} , /obj/effect/turf_decal/tile/brown {dir=8} , /turf/open/floor/plasteel/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/brown/telecomms/mainframe {dir=10} : /obj/effect/turf_decal/tile/brown {dir=1} , /obj/effect/turf_decal/tile/brown , /obj/effect/turf_decal/tile/brown {dir=8} , /turf/open/floor/plasteel/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/brownold {dir=1} : /obj/effect/turf_decal/tile/brown {dir=1} , /obj/effect/turf_decal/tile/brown {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/brownold {dir=@UNSET} : /obj/effect/turf_decal/tile/brown , /obj/effect/turf_decal/tile/brown {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/brownold {dir=2} : /obj/effect/turf_decal/tile/brown , /obj/effect/turf_decal/tile/brown {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/brownold {dir=4} : /obj/effect/turf_decal/tile/brown , /obj/effect/turf_decal/tile/brown {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/brownold {dir=5} : /obj/effect/turf_decal/tile/brown {dir=1} , /obj/effect/turf_decal/tile/brown , /obj/effect/turf_decal/tile/brown {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/brownold {dir=6} : /obj/effect/turf_decal/tile/brown , /obj/effect/turf_decal/tile/brown {dir=4} , /obj/effect/turf_decal/tile/brown {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/brownold {dir=8} : /obj/effect/turf_decal/tile/brown {dir=1} , /obj/effect/turf_decal/tile/brown {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/brownold {dir=9} : /obj/effect/turf_decal/tile/brown {dir=1} , /obj/effect/turf_decal/tile/brown {dir=4} , /obj/effect/turf_decal/tile/brown {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/brownold {dir=10} : /obj/effect/turf_decal/tile/brown {dir=1} , /obj/effect/turf_decal/tile/brown , /obj/effect/turf_decal/tile/brown {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/brownold/corner : /obj/effect/turf_decal/tile/brown {dir=@OLD} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/caution {dir=1} : /obj/effect/turf_decal/tile/yellow {dir=4} , /turf/open/floor/plasteel/dark/corner {@OLD;dir=1}
+/turf/open/floor/plasteel/caution {dir=@UNSET} : /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel/dark/corner {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/caution {dir=2} : /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel/dark/corner {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/caution {dir=4} : /obj/effect/turf_decal/tile/yellow {dir=4} , /turf/open/floor/plasteel/dark/corner {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/caution {dir=5} : /obj/effect/turf_decal/tile/yellow {dir=4} , /turf/open/floor/plasteel/checker {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/caution {dir=6} : /obj/effect/turf_decal/tile/yellow {dir=4} , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel/dark/corner {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/caution {dir=8} : /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel/dark/corner {@OLD;dir=1}
+/turf/open/floor/plasteel/caution {dir=9} : /obj/effect/turf_decal/tile/yellow {dir=4} , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel/dark/corner {@OLD;dir=1}
+/turf/open/floor/plasteel/caution {dir=10} : /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel/checker {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/caution/corner {dir=1} : /turf/open/floor/plasteel/dark/corner {@OLD}
+/turf/open/floor/plasteel/caution/corner {dir=@UNSET} : /turf/open/floor/plasteel/dark/corner {@OLD}
+/turf/open/floor/plasteel/caution/corner {dir=2} : /turf/open/floor/plasteel/dark/corner {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/caution/corner {dir=4} : /obj/effect/turf_decal/tile/yellow {dir=@OLD} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/caution/corner {dir=8} : /obj/effect/turf_decal/tile/yellow {dir=@OLD} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/cmo : /obj/effect/turf_decal/tile/blue {dir=4} , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/dark/telecomms/mainframe : /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/dark/telecomms/server : /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/dark/telecomms/server/walkway : /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkblue : /obj/effect/turf_decal/tile/blue {dir=1} , /obj/effect/turf_decal/tile/blue , /obj/effect/turf_decal/tile/blue {dir=4} , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkblue/side {dir=1} : /obj/effect/turf_decal/tile/blue {dir=1} , /obj/effect/turf_decal/tile/blue {dir=4} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkblue/side {dir=@UNSET} : /obj/effect/turf_decal/tile/blue , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkblue/side {dir=2} : /obj/effect/turf_decal/tile/blue , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkblue/side {dir=4} : /obj/effect/turf_decal/tile/blue , /obj/effect/turf_decal/tile/blue {dir=4} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkblue/side {dir=5} : /obj/effect/turf_decal/tile/blue {dir=1} , /obj/effect/turf_decal/tile/blue , /obj/effect/turf_decal/tile/blue {dir=4} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkblue/side {dir=6} : /obj/effect/turf_decal/tile/blue , /obj/effect/turf_decal/tile/blue {dir=4} , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkblue/side {dir=8} : /obj/effect/turf_decal/tile/blue {dir=1} , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkblue/side {dir=9} : /obj/effect/turf_decal/tile/blue {dir=1} , /obj/effect/turf_decal/tile/blue {dir=4} , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkblue/side {dir=10} : /obj/effect/turf_decal/tile/blue {dir=1} , /obj/effect/turf_decal/tile/blue , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkblue/corner : /obj/effect/turf_decal/tile/blue {dir=@OLD} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkblue/side/telecomms {dir=1} : /obj/effect/turf_decal/tile/blue {dir=1} , /obj/effect/turf_decal/tile/blue {dir=4} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkblue/side/telecomms {dir=@UNSET} : /obj/effect/turf_decal/tile/blue , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkblue/side/telecomms {dir=2} : /obj/effect/turf_decal/tile/blue , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkblue/side/telecomms {dir=4} : /obj/effect/turf_decal/tile/blue , /obj/effect/turf_decal/tile/blue {dir=4} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkblue/side/telecomms {dir=5} : /obj/effect/turf_decal/tile/blue {dir=1} , /obj/effect/turf_decal/tile/blue , /obj/effect/turf_decal/tile/blue {dir=4} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkblue/side/telecomms {dir=6} : /obj/effect/turf_decal/tile/blue , /obj/effect/turf_decal/tile/blue {dir=4} , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkblue/side/telecomms {dir=8} : /obj/effect/turf_decal/tile/blue {dir=1} , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkblue/side/telecomms {dir=9} : /obj/effect/turf_decal/tile/blue {dir=1} , /obj/effect/turf_decal/tile/blue {dir=4} , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkblue/side/telecomms {dir=10} : /obj/effect/turf_decal/tile/blue {dir=1} , /obj/effect/turf_decal/tile/blue , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkbrown : /obj/effect/turf_decal/tile/brown {dir=1} , /obj/effect/turf_decal/tile/brown , /obj/effect/turf_decal/tile/brown {dir=4} , /obj/effect/turf_decal/tile/brown {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkbrown/side {dir=1} : /obj/effect/turf_decal/tile/brown {dir=1} , /obj/effect/turf_decal/tile/brown {dir=4} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkbrown/side {dir=@UNSET} : /obj/effect/turf_decal/tile/brown , /obj/effect/turf_decal/tile/brown {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkbrown/side {dir=2} : /obj/effect/turf_decal/tile/brown , /obj/effect/turf_decal/tile/brown {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkbrown/side {dir=4} : /obj/effect/turf_decal/tile/brown , /obj/effect/turf_decal/tile/brown {dir=4} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkbrown/side {dir=5} : /obj/effect/turf_decal/tile/brown {dir=1} , /obj/effect/turf_decal/tile/brown , /obj/effect/turf_decal/tile/brown {dir=4} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkbrown/side {dir=6} : /obj/effect/turf_decal/tile/brown , /obj/effect/turf_decal/tile/brown {dir=4} , /obj/effect/turf_decal/tile/brown {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkbrown/side {dir=8} : /obj/effect/turf_decal/tile/brown {dir=1} , /obj/effect/turf_decal/tile/brown {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkbrown/side {dir=9} : /obj/effect/turf_decal/tile/brown {dir=1} , /obj/effect/turf_decal/tile/brown {dir=4} , /obj/effect/turf_decal/tile/brown {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkbrown/side {dir=10} : /obj/effect/turf_decal/tile/brown {dir=1} , /obj/effect/turf_decal/tile/brown , /obj/effect/turf_decal/tile/brown {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkbrown/corner : /obj/effect/turf_decal/tile/brown {dir=@OLD} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkgreen : /obj/effect/turf_decal/tile/green {dir=1} , /obj/effect/turf_decal/tile/green , /obj/effect/turf_decal/tile/green {dir=4} , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkgreen/side {dir=1} : /obj/effect/turf_decal/tile/green {dir=1} , /obj/effect/turf_decal/tile/green {dir=4} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkgreen/side {dir=@UNSET} : /obj/effect/turf_decal/tile/green , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkgreen/side {dir=2} : /obj/effect/turf_decal/tile/green , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkgreen/side {dir=4} : /obj/effect/turf_decal/tile/green , /obj/effect/turf_decal/tile/green {dir=4} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkgreen/side {dir=5} : /obj/effect/turf_decal/tile/green {dir=1} , /obj/effect/turf_decal/tile/green , /obj/effect/turf_decal/tile/green {dir=4} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkgreen/side {dir=6} : /obj/effect/turf_decal/tile/green , /obj/effect/turf_decal/tile/green {dir=4} , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkgreen/side {dir=8} : /obj/effect/turf_decal/tile/green {dir=1} , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkgreen/side {dir=9} : /obj/effect/turf_decal/tile/green {dir=1} , /obj/effect/turf_decal/tile/green {dir=4} , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkgreen/side {dir=10} : /obj/effect/turf_decal/tile/green {dir=1} , /obj/effect/turf_decal/tile/green , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkgreen/corner : /obj/effect/turf_decal/tile/green {dir=@OLD} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkgreen/side/telecomms {dir=1} : /obj/effect/turf_decal/tile/green {dir=1} , /obj/effect/turf_decal/tile/green {dir=4} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkgreen/side/telecomms {dir=@UNSET} : /obj/effect/turf_decal/tile/green , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkgreen/side/telecomms {dir=2} : /obj/effect/turf_decal/tile/green , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkgreen/side/telecomms {dir=4} : /obj/effect/turf_decal/tile/green , /obj/effect/turf_decal/tile/green {dir=4} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkgreen/side/telecomms {dir=5} : /obj/effect/turf_decal/tile/green {dir=1} , /obj/effect/turf_decal/tile/green , /obj/effect/turf_decal/tile/green {dir=4} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkgreen/side/telecomms {dir=6} : /obj/effect/turf_decal/tile/green , /obj/effect/turf_decal/tile/green {dir=4} , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkgreen/side/telecomms {dir=8} : /obj/effect/turf_decal/tile/green {dir=1} , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkgreen/side/telecomms {dir=9} : /obj/effect/turf_decal/tile/green {dir=1} , /obj/effect/turf_decal/tile/green {dir=4} , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkgreen/side/telecomms {dir=10} : /obj/effect/turf_decal/tile/green {dir=1} , /obj/effect/turf_decal/tile/green , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkpurple : /obj/effect/turf_decal/tile/purple {dir=1} , /obj/effect/turf_decal/tile/purple , /obj/effect/turf_decal/tile/purple {dir=4} , /obj/effect/turf_decal/tile/purple {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkpurple/side {dir=1} : /obj/effect/turf_decal/tile/purple {dir=1} , /obj/effect/turf_decal/tile/purple {dir=4} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkpurple/side {dir=@UNSET} : /obj/effect/turf_decal/tile/purple , /obj/effect/turf_decal/tile/purple {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkpurple/side {dir=2} : /obj/effect/turf_decal/tile/purple , /obj/effect/turf_decal/tile/purple {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkpurple/side {dir=4} : /obj/effect/turf_decal/tile/purple , /obj/effect/turf_decal/tile/purple {dir=4} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkpurple/side {dir=5} : /obj/effect/turf_decal/tile/purple {dir=1} , /obj/effect/turf_decal/tile/purple , /obj/effect/turf_decal/tile/purple {dir=4} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkpurple/side {dir=6} : /obj/effect/turf_decal/tile/purple , /obj/effect/turf_decal/tile/purple {dir=4} , /obj/effect/turf_decal/tile/purple {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkpurple/side {dir=8} : /obj/effect/turf_decal/tile/purple {dir=1} , /obj/effect/turf_decal/tile/purple {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkpurple/side {dir=9} : /obj/effect/turf_decal/tile/purple {dir=1} , /obj/effect/turf_decal/tile/purple {dir=4} , /obj/effect/turf_decal/tile/purple {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkpurple/side {dir=10} : /obj/effect/turf_decal/tile/purple {dir=1} , /obj/effect/turf_decal/tile/purple , /obj/effect/turf_decal/tile/purple {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkpurple/corner : /obj/effect/turf_decal/tile/purple {dir=@OLD} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkpurple/side/telecomms {dir=1} : /obj/effect/turf_decal/tile/purple {dir=1} , /obj/effect/turf_decal/tile/purple {dir=4} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkpurple/side/telecomms {dir=@UNSET} : /obj/effect/turf_decal/tile/purple , /obj/effect/turf_decal/tile/purple {dir=8} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkpurple/side/telecomms {dir=2} : /obj/effect/turf_decal/tile/purple , /obj/effect/turf_decal/tile/purple {dir=8} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkpurple/side/telecomms {dir=4} : /obj/effect/turf_decal/tile/purple , /obj/effect/turf_decal/tile/purple {dir=4} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkpurple/side/telecomms {dir=5} : /obj/effect/turf_decal/tile/purple {dir=1} , /obj/effect/turf_decal/tile/purple , /obj/effect/turf_decal/tile/purple {dir=4} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkpurple/side/telecomms {dir=6} : /obj/effect/turf_decal/tile/purple , /obj/effect/turf_decal/tile/purple {dir=4} , /obj/effect/turf_decal/tile/purple {dir=8} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkpurple/side/telecomms {dir=8} : /obj/effect/turf_decal/tile/purple {dir=1} , /obj/effect/turf_decal/tile/purple {dir=8} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkpurple/side/telecomms {dir=9} : /obj/effect/turf_decal/tile/purple {dir=1} , /obj/effect/turf_decal/tile/purple {dir=4} , /obj/effect/turf_decal/tile/purple {dir=8} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkpurple/side/telecomms {dir=10} : /obj/effect/turf_decal/tile/purple {dir=1} , /obj/effect/turf_decal/tile/purple , /obj/effect/turf_decal/tile/purple {dir=8} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkred : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/red {dir=4} , /obj/effect/turf_decal/tile/red {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkred/side {dir=1} : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/red {dir=4} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkred/side {dir=@UNSET} : /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/red {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkred/side {dir=2} : /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/red {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkred/side {dir=4} : /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/red {dir=4} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkred/side {dir=5} : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/red {dir=4} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkred/side {dir=6} : /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/red {dir=4} , /obj/effect/turf_decal/tile/red {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkred/side {dir=8} : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/red {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkred/side {dir=9} : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/red {dir=4} , /obj/effect/turf_decal/tile/red {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkred/side {dir=10} : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/red {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkred/corner : /obj/effect/turf_decal/tile/red {dir=@OLD} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkred/side/telecomms {dir=1} : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/red {dir=4} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkred/side/telecomms {dir=@UNSET} : /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/red {dir=8} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkred/side/telecomms {dir=2} : /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/red {dir=8} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkred/side/telecomms {dir=4} : /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/red {dir=4} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkred/side/telecomms {dir=5} : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/red {dir=4} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkred/side/telecomms {dir=6} : /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/red {dir=4} , /obj/effect/turf_decal/tile/red {dir=8} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkred/side/telecomms {dir=8} : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/red {dir=8} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkred/side/telecomms {dir=9} : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/red {dir=4} , /obj/effect/turf_decal/tile/red {dir=8} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkred/side/telecomms {dir=10} : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/red {dir=8} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkyellow : /obj/effect/turf_decal/tile/yellow {dir=1} , /obj/effect/turf_decal/tile/yellow , /obj/effect/turf_decal/tile/yellow {dir=4} , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkyellow/side {dir=1} : /obj/effect/turf_decal/tile/yellow {dir=1} , /obj/effect/turf_decal/tile/yellow {dir=4} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkyellow/side {dir=@UNSET} : /obj/effect/turf_decal/tile/yellow , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkyellow/side {dir=2} : /obj/effect/turf_decal/tile/yellow , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkyellow/side {dir=4} : /obj/effect/turf_decal/tile/yellow , /obj/effect/turf_decal/tile/yellow {dir=4} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkyellow/side {dir=5} : /obj/effect/turf_decal/tile/yellow {dir=1} , /obj/effect/turf_decal/tile/yellow , /obj/effect/turf_decal/tile/yellow {dir=4} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkyellow/side {dir=6} : /obj/effect/turf_decal/tile/yellow , /obj/effect/turf_decal/tile/yellow {dir=4} , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkyellow/side {dir=8} : /obj/effect/turf_decal/tile/yellow {dir=1} , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkyellow/side {dir=9} : /obj/effect/turf_decal/tile/yellow {dir=1} , /obj/effect/turf_decal/tile/yellow {dir=4} , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkyellow/side {dir=10} : /obj/effect/turf_decal/tile/yellow {dir=1} , /obj/effect/turf_decal/tile/yellow , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkyellow/corner : /obj/effect/turf_decal/tile/yellow {dir=@OLD} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkyellow/side/telecomms {dir=1} : /obj/effect/turf_decal/tile/yellow {dir=1} , /obj/effect/turf_decal/tile/yellow {dir=4} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkyellow/side/telecomms {dir=@UNSET} : /obj/effect/turf_decal/tile/yellow , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkyellow/side/telecomms {dir=2} : /obj/effect/turf_decal/tile/yellow , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkyellow/side/telecomms {dir=4} : /obj/effect/turf_decal/tile/yellow , /obj/effect/turf_decal/tile/yellow {dir=4} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkyellow/side/telecomms {dir=5} : /obj/effect/turf_decal/tile/yellow {dir=1} , /obj/effect/turf_decal/tile/yellow , /obj/effect/turf_decal/tile/yellow {dir=4} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkyellow/side/telecomms {dir=6} : /obj/effect/turf_decal/tile/yellow , /obj/effect/turf_decal/tile/yellow {dir=4} , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkyellow/side/telecomms {dir=8} : /obj/effect/turf_decal/tile/yellow {dir=1} , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkyellow/side/telecomms {dir=9} : /obj/effect/turf_decal/tile/yellow {dir=1} , /obj/effect/turf_decal/tile/yellow {dir=4} , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/darkyellow/side/telecomms {dir=10} : /obj/effect/turf_decal/tile/yellow {dir=1} , /obj/effect/turf_decal/tile/yellow , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/escape {dir=1} : /obj/effect/turf_decal/tile/red {dir=4} , /turf/open/floor/plasteel/white/corner {@OLD;dir=1}
+/turf/open/floor/plasteel/escape {dir=@UNSET} : /obj/effect/turf_decal/tile/red {dir=8} , /turf/open/floor/plasteel/white/corner {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/escape {dir=2} : /obj/effect/turf_decal/tile/red {dir=8} , /turf/open/floor/plasteel/white/corner {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/escape {dir=4} : /obj/effect/turf_decal/tile/red {dir=4} , /turf/open/floor/plasteel/white/corner {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/escape {dir=5} : /obj/effect/turf_decal/tile/red {dir=4} , /turf/open/floor/plasteel/cafeteria {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/escape {dir=6} : /obj/effect/turf_decal/tile/red {dir=4} , /obj/effect/turf_decal/tile/red {dir=8} , /turf/open/floor/plasteel/white/corner {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/escape {dir=8} : /obj/effect/turf_decal/tile/red {dir=8} , /turf/open/floor/plasteel/white/corner {@OLD;dir=1}
+/turf/open/floor/plasteel/escape {dir=9} : /obj/effect/turf_decal/tile/red {dir=4} , /obj/effect/turf_decal/tile/red {dir=8} , /turf/open/floor/plasteel/white/corner {@OLD;dir=1}
+/turf/open/floor/plasteel/escape {dir=10} : /obj/effect/turf_decal/tile/red {dir=8} , /turf/open/floor/plasteel/cafeteria {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/escape/corner {dir=1} : /turf/open/floor/plasteel/white/corner {@OLD}
+/turf/open/floor/plasteel/escape/corner {dir=@UNSET} : /turf/open/floor/plasteel/white/corner {@OLD}
+/turf/open/floor/plasteel/escape/corner {dir=2} : /turf/open/floor/plasteel/white/corner {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/escape/corner {dir=4} : /obj/effect/turf_decal/tile/red {dir=@OLD} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/escape/corner {dir=8} : /obj/effect/turf_decal/tile/red {dir=@OLD} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/green : /obj/effect/turf_decal/tile/green {dir=1} , /obj/effect/turf_decal/tile/green , /obj/effect/turf_decal/tile/green {dir=4} , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/green/side {dir=1} : /obj/effect/turf_decal/tile/green {dir=1} , /obj/effect/turf_decal/tile/green {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/green/side {dir=@UNSET} : /obj/effect/turf_decal/tile/green , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/green/side {dir=2} : /obj/effect/turf_decal/tile/green , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/green/side {dir=4} : /obj/effect/turf_decal/tile/green , /obj/effect/turf_decal/tile/green {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/green/side {dir=5} : /obj/effect/turf_decal/tile/green {dir=1} , /obj/effect/turf_decal/tile/green , /obj/effect/turf_decal/tile/green {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/green/side {dir=6} : /obj/effect/turf_decal/tile/green , /obj/effect/turf_decal/tile/green {dir=4} , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/green/side {dir=8} : /obj/effect/turf_decal/tile/green {dir=1} , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/green/side {dir=9} : /obj/effect/turf_decal/tile/green {dir=1} , /obj/effect/turf_decal/tile/green {dir=4} , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/green/side {dir=10} : /obj/effect/turf_decal/tile/green {dir=1} , /obj/effect/turf_decal/tile/green , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/green/corner : /obj/effect/turf_decal/tile/green {dir=@OLD} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/green/side/telecomms {dir=1} : /obj/effect/turf_decal/tile/green {dir=1} , /obj/effect/turf_decal/tile/green {dir=4} , /turf/open/floor/plasteel/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/green/side/telecomms {dir=@UNSET} : /obj/effect/turf_decal/tile/green , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/green/side/telecomms {dir=2} : /obj/effect/turf_decal/tile/green , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/green/side/telecomms {dir=4} : /obj/effect/turf_decal/tile/green , /obj/effect/turf_decal/tile/green {dir=4} , /turf/open/floor/plasteel/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/green/side/telecomms {dir=5} : /obj/effect/turf_decal/tile/green {dir=1} , /obj/effect/turf_decal/tile/green , /obj/effect/turf_decal/tile/green {dir=4} , /turf/open/floor/plasteel/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/green/side/telecomms {dir=6} : /obj/effect/turf_decal/tile/green , /obj/effect/turf_decal/tile/green {dir=4} , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/green/side/telecomms {dir=8} : /obj/effect/turf_decal/tile/green {dir=1} , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/green/side/telecomms {dir=9} : /obj/effect/turf_decal/tile/green {dir=1} , /obj/effect/turf_decal/tile/green {dir=4} , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/green/side/telecomms {dir=10} : /obj/effect/turf_decal/tile/green {dir=1} , /obj/effect/turf_decal/tile/green , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/greenblue : /obj/effect/turf_decal/tile/blue {dir=1} , /obj/effect/turf_decal/tile/blue , /obj/effect/turf_decal/tile/green {dir=4} , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/greenblue/side {dir=1} : /obj/effect/turf_decal/tile/blue {dir=1} , /obj/effect/turf_decal/tile/green {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/greenblue/side {dir=@UNSET} : /obj/effect/turf_decal/tile/blue , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/greenblue/side {dir=2} : /obj/effect/turf_decal/tile/blue , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/greenblue/side {dir=4} : /obj/effect/turf_decal/tile/blue , /obj/effect/turf_decal/tile/green {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/greenblue/side {dir=5} : /obj/effect/turf_decal/tile/blue {dir=1} , /obj/effect/turf_decal/tile/blue , /obj/effect/turf_decal/tile/green {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/greenblue/side {dir=6} : /obj/effect/turf_decal/tile/blue , /obj/effect/turf_decal/tile/green {dir=4} , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/greenblue/side {dir=8} : /obj/effect/turf_decal/tile/blue {dir=1} , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/greenblue/side {dir=9} : /obj/effect/turf_decal/tile/blue {dir=1} , /obj/effect/turf_decal/tile/green {dir=4} , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/greenblue/side {dir=10} : /obj/effect/turf_decal/tile/blue {dir=1} , /obj/effect/turf_decal/tile/blue , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/greenyellow : /obj/effect/turf_decal/tile/yellow {dir=1} , /obj/effect/turf_decal/tile/yellow , /obj/effect/turf_decal/tile/green {dir=4} , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/greenyellow/side {dir=1} : /obj/effect/turf_decal/tile/yellow {dir=1} , /obj/effect/turf_decal/tile/green {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/greenyellow/side {dir=@UNSET} : /obj/effect/turf_decal/tile/yellow , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/greenyellow/side {dir=2} : /obj/effect/turf_decal/tile/yellow , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/greenyellow/side {dir=4} : /obj/effect/turf_decal/tile/yellow , /obj/effect/turf_decal/tile/green {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/greenyellow/side {dir=5} : /obj/effect/turf_decal/tile/yellow {dir=1} , /obj/effect/turf_decal/tile/yellow , /obj/effect/turf_decal/tile/green {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/greenyellow/side {dir=6} : /obj/effect/turf_decal/tile/yellow , /obj/effect/turf_decal/tile/green {dir=4} , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/greenyellow/side {dir=8} : /obj/effect/turf_decal/tile/yellow {dir=1} , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/greenyellow/side {dir=9} : /obj/effect/turf_decal/tile/yellow {dir=1} , /obj/effect/turf_decal/tile/green {dir=4} , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/greenyellow/side {dir=10} : /obj/effect/turf_decal/tile/yellow {dir=1} , /obj/effect/turf_decal/tile/yellow , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/hydrofloor : /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/neutral : /obj/effect/turf_decal/tile/neutral {dir=1} , /obj/effect/turf_decal/tile/neutral , /obj/effect/turf_decal/tile/neutral {dir=4} , /obj/effect/turf_decal/tile/neutral {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/neutral/side {dir=1} : /obj/effect/turf_decal/tile/neutral {dir=1} , /obj/effect/turf_decal/tile/neutral {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/neutral/side {dir=@UNSET} : /obj/effect/turf_decal/tile/neutral , /obj/effect/turf_decal/tile/neutral {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/neutral/side {dir=2} : /obj/effect/turf_decal/tile/neutral , /obj/effect/turf_decal/tile/neutral {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/neutral/side {dir=4} : /obj/effect/turf_decal/tile/neutral , /obj/effect/turf_decal/tile/neutral {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/neutral/side {dir=5} : /obj/effect/turf_decal/tile/neutral {dir=1} , /obj/effect/turf_decal/tile/neutral , /obj/effect/turf_decal/tile/neutral {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/neutral/side {dir=6} : /obj/effect/turf_decal/tile/neutral , /obj/effect/turf_decal/tile/neutral {dir=4} , /obj/effect/turf_decal/tile/neutral {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/neutral/side {dir=8} : /obj/effect/turf_decal/tile/neutral {dir=1} , /obj/effect/turf_decal/tile/neutral {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/neutral/side {dir=9} : /obj/effect/turf_decal/tile/neutral {dir=1} , /obj/effect/turf_decal/tile/neutral {dir=4} , /obj/effect/turf_decal/tile/neutral {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/neutral/side {dir=10} : /obj/effect/turf_decal/tile/neutral {dir=1} , /obj/effect/turf_decal/tile/neutral , /obj/effect/turf_decal/tile/neutral {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/neutral/corner : /obj/effect/turf_decal/tile/neutral {dir=@OLD} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/neutral/side/telecomms {dir=1} : /obj/effect/turf_decal/tile/neutral {dir=1} , /obj/effect/turf_decal/tile/neutral {dir=4} , /turf/open/floor/plasteel/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/neutral/side/telecomms {dir=@UNSET} : /obj/effect/turf_decal/tile/neutral , /obj/effect/turf_decal/tile/neutral {dir=8} , /turf/open/floor/plasteel/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/neutral/side/telecomms {dir=2} : /obj/effect/turf_decal/tile/neutral , /obj/effect/turf_decal/tile/neutral {dir=8} , /turf/open/floor/plasteel/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/neutral/side/telecomms {dir=4} : /obj/effect/turf_decal/tile/neutral , /obj/effect/turf_decal/tile/neutral {dir=4} , /turf/open/floor/plasteel/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/neutral/side/telecomms {dir=5} : /obj/effect/turf_decal/tile/neutral {dir=1} , /obj/effect/turf_decal/tile/neutral , /obj/effect/turf_decal/tile/neutral {dir=4} , /turf/open/floor/plasteel/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/neutral/side/telecomms {dir=6} : /obj/effect/turf_decal/tile/neutral , /obj/effect/turf_decal/tile/neutral {dir=4} , /obj/effect/turf_decal/tile/neutral {dir=8} , /turf/open/floor/plasteel/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/neutral/side/telecomms {dir=8} : /obj/effect/turf_decal/tile/neutral {dir=1} , /obj/effect/turf_decal/tile/neutral {dir=8} , /turf/open/floor/plasteel/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/neutral/side/telecomms {dir=9} : /obj/effect/turf_decal/tile/neutral {dir=1} , /obj/effect/turf_decal/tile/neutral {dir=4} , /obj/effect/turf_decal/tile/neutral {dir=8} , /turf/open/floor/plasteel/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/neutral/side/telecomms {dir=10} : /obj/effect/turf_decal/tile/neutral {dir=1} , /obj/effect/turf_decal/tile/neutral , /obj/effect/turf_decal/tile/neutral {dir=8} , /turf/open/floor/plasteel/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/orange : /obj/effect/turf_decal/tile/yellow {dir=1} , /obj/effect/turf_decal/tile/yellow , /obj/effect/turf_decal/tile/yellow {dir=4} , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/orange/side {dir=1} : /obj/effect/turf_decal/tile/yellow {dir=1} , /obj/effect/turf_decal/tile/yellow {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/orange/side {dir=@UNSET} : /obj/effect/turf_decal/tile/yellow , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/orange/side {dir=2} : /obj/effect/turf_decal/tile/yellow , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/orange/side {dir=4} : /obj/effect/turf_decal/tile/yellow , /obj/effect/turf_decal/tile/yellow {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/orange/side {dir=5} : /obj/effect/turf_decal/tile/yellow {dir=1} , /obj/effect/turf_decal/tile/yellow , /obj/effect/turf_decal/tile/yellow {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/orange/side {dir=6} : /obj/effect/turf_decal/tile/yellow , /obj/effect/turf_decal/tile/yellow {dir=4} , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/orange/side {dir=8} : /obj/effect/turf_decal/tile/yellow {dir=1} , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/orange/side {dir=9} : /obj/effect/turf_decal/tile/yellow {dir=1} , /obj/effect/turf_decal/tile/yellow {dir=4} , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/orange/side {dir=10} : /obj/effect/turf_decal/tile/yellow {dir=1} , /obj/effect/turf_decal/tile/yellow , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/orange/corner : /obj/effect/turf_decal/tile/yellow {dir=@OLD} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/purple : /obj/effect/turf_decal/tile/purple {dir=1} , /obj/effect/turf_decal/tile/purple , /obj/effect/turf_decal/tile/purple {dir=4} , /obj/effect/turf_decal/tile/purple {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/purple/side {dir=1} : /obj/effect/turf_decal/tile/purple {dir=1} , /obj/effect/turf_decal/tile/purple {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/purple/side {dir=@UNSET} : /obj/effect/turf_decal/tile/purple , /obj/effect/turf_decal/tile/purple {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/purple/side {dir=2} : /obj/effect/turf_decal/tile/purple , /obj/effect/turf_decal/tile/purple {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/purple/side {dir=4} : /obj/effect/turf_decal/tile/purple , /obj/effect/turf_decal/tile/purple {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/purple/side {dir=5} : /obj/effect/turf_decal/tile/purple {dir=1} , /obj/effect/turf_decal/tile/purple , /obj/effect/turf_decal/tile/purple {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/purple/side {dir=6} : /obj/effect/turf_decal/tile/purple , /obj/effect/turf_decal/tile/purple {dir=4} , /obj/effect/turf_decal/tile/purple {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/purple/side {dir=8} : /obj/effect/turf_decal/tile/purple {dir=1} , /obj/effect/turf_decal/tile/purple {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/purple/side {dir=9} : /obj/effect/turf_decal/tile/purple {dir=1} , /obj/effect/turf_decal/tile/purple {dir=4} , /obj/effect/turf_decal/tile/purple {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/purple/side {dir=10} : /obj/effect/turf_decal/tile/purple {dir=1} , /obj/effect/turf_decal/tile/purple , /obj/effect/turf_decal/tile/purple {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/purple/corner : /obj/effect/turf_decal/tile/purple {dir=@OLD} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/red : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/red {dir=4} , /obj/effect/turf_decal/tile/red {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/red/side {dir=1} : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/red {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/red/side {dir=@UNSET} : /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/red {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/red/side {dir=2} : /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/red {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/red/side {dir=4} : /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/red {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/red/side {dir=5} : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/red {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/red/side {dir=6} : /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/red {dir=4} , /obj/effect/turf_decal/tile/red {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/red/side {dir=8} : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/red {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/red/side {dir=9} : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/red {dir=4} , /obj/effect/turf_decal/tile/red {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/red/side {dir=10} : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/red {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/red/corner : /obj/effect/turf_decal/tile/red {dir=@OLD} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redblue : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/blue {dir=4} , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redblue/redside {dir=1} : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/blue {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redblue/redside {dir=@UNSET} : /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redblue/redside {dir=2} : /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redblue/redside {dir=4} : /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/blue {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redblue/redside {dir=5} : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/blue {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redblue/redside {dir=6} : /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/blue {dir=4} , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redblue/redside {dir=8} : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redblue/redside {dir=9} : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/blue {dir=4} , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redblue/redside {dir=10} : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redblue/blueside {dir=1} : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/blue {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redblue/blueside {dir=@UNSET} : /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redblue/blueside {dir=2} : /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redblue/blueside {dir=4} : /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/blue {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redblue/blueside {dir=5} : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/blue {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redblue/blueside {dir=6} : /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/blue {dir=4} , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redblue/blueside {dir=8} : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redblue/blueside {dir=9} : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/blue {dir=4} , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redblue/blueside {dir=10} : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redgreen : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/green {dir=4} , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redgreen/side {dir=1} : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/green {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redgreen/side {dir=@UNSET} : /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redgreen/side {dir=2} : /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redgreen/side {dir=4} : /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/green {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redgreen/side {dir=5} : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/green {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redgreen/side {dir=6} : /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/green {dir=4} , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redgreen/side {dir=8} : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redgreen/side {dir=9} : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/green {dir=4} , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redgreen/side {dir=10} : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redgreen : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/green {dir=4} , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redgreen/side {dir=1} : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/green {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redgreen/side {dir=@UNSET} : /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redgreen/side {dir=2} : /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redgreen/side {dir=4} : /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/green {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redgreen/side {dir=5} : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/green {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redgreen/side {dir=6} : /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/green {dir=4} , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redgreen/side {dir=8} : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redgreen/side {dir=9} : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/green {dir=4} , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redgreen/side {dir=10} : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redyellow : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/yellow {dir=4} , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redyellow/side {dir=1} : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/yellow {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redyellow/side {dir=@UNSET} : /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redyellow/side {dir=2} : /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redyellow/side {dir=4} : /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/yellow {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redyellow/side {dir=5} : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/yellow {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redyellow/side {dir=6} : /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/yellow {dir=4} , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redyellow/side {dir=8} : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redyellow/side {dir=9} : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/yellow {dir=4} , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/redyellow/side {dir=10} : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/vault : /obj/effect/turf_decal/tile/neutral {dir=1} , /obj/effect/turf_decal/tile/neutral , /obj/effect/turf_decal/tile/neutral {dir=4} , /obj/effect/turf_decal/tile/neutral {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/vault/airless : /obj/effect/turf_decal/tile/neutral {dir=1} , /obj/effect/turf_decal/tile/neutral , /obj/effect/turf_decal/tile/neutral {dir=4} , /obj/effect/turf_decal/tile/neutral {dir=8} , /turf/open/floor/plasteel/dark/airless {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/vault/snowdin : /obj/effect/turf_decal/tile/neutral {dir=1} , /obj/effect/turf_decal/tile/neutral , /obj/effect/turf_decal/tile/neutral {dir=4} , /obj/effect/turf_decal/tile/neutral {dir=8} , /turf/open/floor/plasteel/dark/snowdin {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/vault/telecomms : /obj/effect/turf_decal/tile/neutral {dir=1} , /obj/effect/turf_decal/tile/neutral , /obj/effect/turf_decal/tile/neutral {dir=4} , /obj/effect/turf_decal/tile/neutral {dir=8} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/vault/telecomms/mainframe : /obj/effect/turf_decal/tile/neutral {dir=1} , /obj/effect/turf_decal/tile/neutral , /obj/effect/turf_decal/tile/neutral {dir=4} , /obj/effect/turf_decal/tile/neutral {dir=8} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/vault/killroom : /obj/effect/turf_decal/tile/neutral {dir=1} , /obj/effect/turf_decal/tile/neutral , /obj/effect/turf_decal/tile/neutral {dir=4} , /obj/effect/turf_decal/tile/neutral {dir=8} , /turf/open/floor/plasteel/dark/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/vault/side {dir=1} : /obj/effect/turf_decal/tile/neutral {dir=1} , /obj/effect/turf_decal/tile/neutral {dir=4} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/vault/side {dir=@UNSET} : /obj/effect/turf_decal/tile/neutral , /obj/effect/turf_decal/tile/neutral {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/vault/side {dir=2} : /obj/effect/turf_decal/tile/neutral , /obj/effect/turf_decal/tile/neutral {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/vault/side {dir=4} : /obj/effect/turf_decal/tile/neutral , /obj/effect/turf_decal/tile/neutral {dir=4} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/vault/side {dir=5} : /obj/effect/turf_decal/tile/neutral {dir=1} , /obj/effect/turf_decal/tile/neutral , /obj/effect/turf_decal/tile/neutral {dir=4} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/vault/side {dir=6} : /obj/effect/turf_decal/tile/neutral , /obj/effect/turf_decal/tile/neutral {dir=4} , /obj/effect/turf_decal/tile/neutral {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/vault/side {dir=8} : /obj/effect/turf_decal/tile/neutral {dir=1} , /obj/effect/turf_decal/tile/neutral {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/vault/side {dir=9} : /obj/effect/turf_decal/tile/neutral {dir=1} , /obj/effect/turf_decal/tile/neutral {dir=4} , /obj/effect/turf_decal/tile/neutral {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/vault/side {dir=10} : /obj/effect/turf_decal/tile/neutral {dir=1} , /obj/effect/turf_decal/tile/neutral , /obj/effect/turf_decal/tile/neutral {dir=8} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/vault/corner : /obj/effect/turf_decal/tile/neutral {dir=@OLD} , /turf/open/floor/plasteel/dark {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whiteblue : /obj/effect/turf_decal/tile/blue {dir=1} , /obj/effect/turf_decal/tile/blue , /obj/effect/turf_decal/tile/blue {dir=4} , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whiteblue/side {dir=1} : /obj/effect/turf_decal/tile/blue {dir=1} , /obj/effect/turf_decal/tile/blue {dir=4} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whiteblue/side {dir=@UNSET} : /obj/effect/turf_decal/tile/blue , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whiteblue/side {dir=2} : /obj/effect/turf_decal/tile/blue , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whiteblue/side {dir=4} : /obj/effect/turf_decal/tile/blue , /obj/effect/turf_decal/tile/blue {dir=4} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whiteblue/side {dir=5} : /obj/effect/turf_decal/tile/blue {dir=1} , /obj/effect/turf_decal/tile/blue , /obj/effect/turf_decal/tile/blue {dir=4} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whiteblue/side {dir=6} : /obj/effect/turf_decal/tile/blue , /obj/effect/turf_decal/tile/blue {dir=4} , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whiteblue/side {dir=8} : /obj/effect/turf_decal/tile/blue {dir=1} , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whiteblue/side {dir=9} : /obj/effect/turf_decal/tile/blue {dir=1} , /obj/effect/turf_decal/tile/blue {dir=4} , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whiteblue/side {dir=10} : /obj/effect/turf_decal/tile/blue {dir=1} , /obj/effect/turf_decal/tile/blue , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whiteblue/corner : /obj/effect/turf_decal/tile/blue {dir=@OLD} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whiteblue/side/telecomms {dir=1} : /obj/effect/turf_decal/tile/blue {dir=1} , /obj/effect/turf_decal/tile/blue {dir=4} , /turf/open/floor/plasteel/white/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whiteblue/side/telecomms {dir=@UNSET} : /obj/effect/turf_decal/tile/blue , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel/white/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whiteblue/side/telecomms {dir=2} : /obj/effect/turf_decal/tile/blue , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel/white/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whiteblue/side/telecomms {dir=4} : /obj/effect/turf_decal/tile/blue , /obj/effect/turf_decal/tile/blue {dir=4} , /turf/open/floor/plasteel/white/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whiteblue/side/telecomms {dir=5} : /obj/effect/turf_decal/tile/blue {dir=1} , /obj/effect/turf_decal/tile/blue , /obj/effect/turf_decal/tile/blue {dir=4} , /turf/open/floor/plasteel/white/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whiteblue/side/telecomms {dir=6} : /obj/effect/turf_decal/tile/blue , /obj/effect/turf_decal/tile/blue {dir=4} , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel/white/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whiteblue/side/telecomms {dir=8} : /obj/effect/turf_decal/tile/blue {dir=1} , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel/white/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whiteblue/side/telecomms {dir=9} : /obj/effect/turf_decal/tile/blue {dir=1} , /obj/effect/turf_decal/tile/blue {dir=4} , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel/white/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whiteblue/side/telecomms {dir=10} : /obj/effect/turf_decal/tile/blue {dir=1} , /obj/effect/turf_decal/tile/blue , /obj/effect/turf_decal/tile/blue {dir=8} , /turf/open/floor/plasteel/white/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whitegreen : /obj/effect/turf_decal/tile/green {dir=1} , /obj/effect/turf_decal/tile/green , /obj/effect/turf_decal/tile/green {dir=4} , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whitegreen/side {dir=1} : /obj/effect/turf_decal/tile/green {dir=1} , /obj/effect/turf_decal/tile/green {dir=4} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whitegreen/side {dir=@UNSET} : /obj/effect/turf_decal/tile/green , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whitegreen/side {dir=2} : /obj/effect/turf_decal/tile/green , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whitegreen/side {dir=4} : /obj/effect/turf_decal/tile/green , /obj/effect/turf_decal/tile/green {dir=4} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whitegreen/side {dir=5} : /obj/effect/turf_decal/tile/green {dir=1} , /obj/effect/turf_decal/tile/green , /obj/effect/turf_decal/tile/green {dir=4} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whitegreen/side {dir=6} : /obj/effect/turf_decal/tile/green , /obj/effect/turf_decal/tile/green {dir=4} , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whitegreen/side {dir=8} : /obj/effect/turf_decal/tile/green {dir=1} , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whitegreen/side {dir=9} : /obj/effect/turf_decal/tile/green {dir=1} , /obj/effect/turf_decal/tile/green {dir=4} , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whitegreen/side {dir=10} : /obj/effect/turf_decal/tile/green {dir=1} , /obj/effect/turf_decal/tile/green , /obj/effect/turf_decal/tile/green {dir=8} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whitegreen/corner : /obj/effect/turf_decal/tile/green {dir=@OLD} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whitepurple : /obj/effect/turf_decal/tile/purple {dir=1} , /obj/effect/turf_decal/tile/purple , /obj/effect/turf_decal/tile/purple {dir=4} , /obj/effect/turf_decal/tile/purple {dir=8} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whitepurple/side {dir=1} : /obj/effect/turf_decal/tile/purple {dir=1} , /obj/effect/turf_decal/tile/purple {dir=4} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whitepurple/side {dir=@UNSET} : /obj/effect/turf_decal/tile/purple , /obj/effect/turf_decal/tile/purple {dir=8} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whitepurple/side {dir=2} : /obj/effect/turf_decal/tile/purple , /obj/effect/turf_decal/tile/purple {dir=8} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whitepurple/side {dir=4} : /obj/effect/turf_decal/tile/purple , /obj/effect/turf_decal/tile/purple {dir=4} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whitepurple/side {dir=5} : /obj/effect/turf_decal/tile/purple {dir=1} , /obj/effect/turf_decal/tile/purple , /obj/effect/turf_decal/tile/purple {dir=4} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whitepurple/side {dir=6} : /obj/effect/turf_decal/tile/purple , /obj/effect/turf_decal/tile/purple {dir=4} , /obj/effect/turf_decal/tile/purple {dir=8} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whitepurple/side {dir=8} : /obj/effect/turf_decal/tile/purple {dir=1} , /obj/effect/turf_decal/tile/purple {dir=8} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whitepurple/side {dir=9} : /obj/effect/turf_decal/tile/purple {dir=1} , /obj/effect/turf_decal/tile/purple {dir=4} , /obj/effect/turf_decal/tile/purple {dir=8} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whitepurple/side {dir=10} : /obj/effect/turf_decal/tile/purple {dir=1} , /obj/effect/turf_decal/tile/purple , /obj/effect/turf_decal/tile/purple {dir=8} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whitepurple/corner : /obj/effect/turf_decal/tile/purple {dir=@OLD} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whitepurple/side/telecomms {dir=1} : /obj/effect/turf_decal/tile/purple {dir=1} , /obj/effect/turf_decal/tile/purple {dir=4} , /turf/open/floor/plasteel/white/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whitepurple/side/telecomms {dir=@UNSET} : /obj/effect/turf_decal/tile/purple , /obj/effect/turf_decal/tile/purple {dir=8} , /turf/open/floor/plasteel/white/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whitepurple/side/telecomms {dir=2} : /obj/effect/turf_decal/tile/purple , /obj/effect/turf_decal/tile/purple {dir=8} , /turf/open/floor/plasteel/white/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whitepurple/side/telecomms {dir=4} : /obj/effect/turf_decal/tile/purple , /obj/effect/turf_decal/tile/purple {dir=4} , /turf/open/floor/plasteel/white/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whitepurple/side/telecomms {dir=5} : /obj/effect/turf_decal/tile/purple {dir=1} , /obj/effect/turf_decal/tile/purple , /obj/effect/turf_decal/tile/purple {dir=4} , /turf/open/floor/plasteel/white/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whitepurple/side/telecomms {dir=6} : /obj/effect/turf_decal/tile/purple , /obj/effect/turf_decal/tile/purple {dir=4} , /obj/effect/turf_decal/tile/purple {dir=8} , /turf/open/floor/plasteel/white/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whitepurple/side/telecomms {dir=8} : /obj/effect/turf_decal/tile/purple {dir=1} , /obj/effect/turf_decal/tile/purple {dir=8} , /turf/open/floor/plasteel/white/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whitepurple/side/telecomms {dir=9} : /obj/effect/turf_decal/tile/purple {dir=1} , /obj/effect/turf_decal/tile/purple {dir=4} , /obj/effect/turf_decal/tile/purple {dir=8} , /turf/open/floor/plasteel/white/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whitepurple/side/telecomms {dir=10} : /obj/effect/turf_decal/tile/purple {dir=1} , /obj/effect/turf_decal/tile/purple , /obj/effect/turf_decal/tile/purple {dir=8} , /turf/open/floor/plasteel/white/telecomms {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whitered : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/red {dir=4} , /obj/effect/turf_decal/tile/red {dir=8} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whitered/side {dir=1} : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/red {dir=4} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whitered/side {dir=@UNSET} : /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/red {dir=8} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whitered/side {dir=2} : /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/red {dir=8} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whitered/side {dir=4} : /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/red {dir=4} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whitered/side {dir=5} : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/red {dir=4} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whitered/side {dir=6} : /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/red {dir=4} , /obj/effect/turf_decal/tile/red {dir=8} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whitered/side {dir=8} : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/red {dir=8} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whitered/side {dir=9} : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/red {dir=4} , /obj/effect/turf_decal/tile/red {dir=8} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whitered/side {dir=10} : /obj/effect/turf_decal/tile/red {dir=1} , /obj/effect/turf_decal/tile/red , /obj/effect/turf_decal/tile/red {dir=8} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whitered/corner : /obj/effect/turf_decal/tile/red {dir=@OLD} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whiteyellow : /obj/effect/turf_decal/tile/yellow {dir=1} , /obj/effect/turf_decal/tile/yellow , /obj/effect/turf_decal/tile/yellow {dir=4} , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whiteyellow/side {dir=1} : /obj/effect/turf_decal/tile/yellow {dir=1} , /obj/effect/turf_decal/tile/yellow {dir=4} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whiteyellow/side {dir=@UNSET} : /obj/effect/turf_decal/tile/yellow , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whiteyellow/side {dir=2} : /obj/effect/turf_decal/tile/yellow , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whiteyellow/side {dir=4} : /obj/effect/turf_decal/tile/yellow , /obj/effect/turf_decal/tile/yellow {dir=4} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whiteyellow/side {dir=5} : /obj/effect/turf_decal/tile/yellow {dir=1} , /obj/effect/turf_decal/tile/yellow , /obj/effect/turf_decal/tile/yellow {dir=4} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whiteyellow/side {dir=6} : /obj/effect/turf_decal/tile/yellow , /obj/effect/turf_decal/tile/yellow {dir=4} , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whiteyellow/side {dir=8} : /obj/effect/turf_decal/tile/yellow {dir=1} , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whiteyellow/side {dir=9} : /obj/effect/turf_decal/tile/yellow {dir=1} , /obj/effect/turf_decal/tile/yellow {dir=4} , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whiteyellow/side {dir=10} : /obj/effect/turf_decal/tile/yellow {dir=1} , /obj/effect/turf_decal/tile/yellow , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/whiteyellow/corner : /obj/effect/turf_decal/tile/yellow {dir=@OLD} , /turf/open/floor/plasteel/white {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/yellow : /obj/effect/turf_decal/tile/yellow {dir=1} , /obj/effect/turf_decal/tile/yellow , /obj/effect/turf_decal/tile/yellow {dir=4} , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/yellow/side {dir=1} : /obj/effect/turf_decal/tile/yellow {dir=1} , /obj/effect/turf_decal/tile/yellow {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/yellow/side {dir=@UNSET} : /obj/effect/turf_decal/tile/yellow , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/yellow/side {dir=2} : /obj/effect/turf_decal/tile/yellow , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/yellow/side {dir=4} : /obj/effect/turf_decal/tile/yellow , /obj/effect/turf_decal/tile/yellow {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/yellow/side {dir=5} : /obj/effect/turf_decal/tile/yellow {dir=1} , /obj/effect/turf_decal/tile/yellow , /obj/effect/turf_decal/tile/yellow {dir=4} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/yellow/side {dir=6} : /obj/effect/turf_decal/tile/yellow , /obj/effect/turf_decal/tile/yellow {dir=4} , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/yellow/side {dir=8} : /obj/effect/turf_decal/tile/yellow {dir=1} , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/yellow/side {dir=9} : /obj/effect/turf_decal/tile/yellow {dir=1} , /obj/effect/turf_decal/tile/yellow {dir=4} , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/yellow/side {dir=10} : /obj/effect/turf_decal/tile/yellow {dir=1} , /obj/effect/turf_decal/tile/yellow , /obj/effect/turf_decal/tile/yellow {dir=8} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plasteel/yellow/corner : /obj/effect/turf_decal/tile/yellow {dir=@OLD} , /turf/open/floor/plasteel {@OLD;dir=@SKIP}
+/turf/open/floor/plating/airless/astplate : /obj/effect/turf_decal/sand/plating , /turf/open/floor/plating/airless {@OLD;dir=@SKIP}
+/turf/open/floor/plating/astplate : /obj/effect/turf_decal/sand/plating , /turf/open/floor/plating {@OLD;dir=@SKIP}```
+
+
+
+
diff --git a/tools/build.html b/tools/build.html
new file mode 100644
index 0000000000000..ed4a02c38d4ef
--- /dev/null
+++ b/tools/build.html
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+ tools/build/README.md - SPLURT Station 13
+
+
+
+
+/tg/station build script
+
+
+
+
+ This build script is the recommended way to compile the game, including not only the DM code but also the JavaScript and any other dependencies.
+
+VSCode:
+a) Press Ctrl+Shift+B
to build.
+b) Press F5
to build and run with debugger attached.
+Windows:
+a) Double-click BUILD.bat
in the repository root to build (will wait for a key press before it closes).
+b) Double-click tools/build/build.bat
to build (will exit as soon as it finishes building).
+Linux:
+a) Run tools/build/build
from the repository root.
+
+The script will skip build steps whose inputs have not changed since the last run.
+Getting list of available targets
+You can get a list of all targets that you can build by running the following command:
+tools/build/build --help
+
+Dependencies
+
+On Windows, BUILD.bat
will automatically install a private (vendored) copy of Node.
+On Linux, install Node using your package manager or from https://nodejs.org/en/download/ .
+On Linux , unless using tgs4 or later you will need to compile rust-g on the server and obtain a .so file, for instructions see https://github.com/tgstation/rust-g
+
+Why?
+We used to include compiled versions of the tgui JavaScript code in the Git repository so that the project could be compiled using BYOND only. These pre-compiled files tended to have merge conflicts for no good reason. Using a build script lets us avoid this problem, while keeping builds convenient for people who are not modifying tgui.
+This build script is based on Juke Build - please follow the link and read the documentation for the project to understand how it works and how to contribute to this build script.
+
+
+
diff --git a/tools/changelog/requirements.html b/tools/changelog/requirements.html
new file mode 100644
index 0000000000000..79a871e61e230
--- /dev/null
+++ b/tools/changelog/requirements.html
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+ tools/changelog/requirements.txt - SPLURT Station 13
+
+
+
+
+tools/changelog/requirements.txt
+
+
+
+
+ PyYAML==6.0
+beautifulsoup4==4.10.0
+ruamel.yaml==0.17.20
+PyGithub==1.55
+
+
+
+
diff --git a/tools/ci/ci_config.html b/tools/ci/ci_config.html
new file mode 100644
index 0000000000000..834831b314b53
--- /dev/null
+++ b/tools/ci/ci_config.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ tools/ci/ci_config.txt - SPLURT Station 13
+
+
+
+
+tools/ci/ci_config.txt
+
+
+
+
+ SQL_ENABLED
+ADDRESS 127.0.0.1
+PORT 3306
+FEEDBACK_DATABASE tg_ci
+FEEDBACK_TABLEPREFIX
+FEEDBACK_LOGIN root
+FEEDBACK_PASSWORD
+LAVALAND_BUDGET 0
+SPACE_BUDGET 0
+
+
+
+
diff --git a/tools/hooks.html b/tools/hooks.html
new file mode 100644
index 0000000000000..ca904ce534cf9
--- /dev/null
+++ b/tools/hooks.html
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+ tools/hooks/README.md - SPLURT Station 13
+
+
+
+
+Git Integration Hooks
+
+
+
+
+ This folder contains installable scripts for Git hooks and merge drivers .
+Use of these hooks and drivers is optional and they must be installed
+explicitly before they take effect.
+To install the current set of hooks, or update if new hooks are added, run
+Install.bat
(Windows) or tools/hooks/install.sh
(Unix-like) as appropriate.
+If your Git GUI does not support a given hook, there is usually a .bat
file
+or other script you can run instead - see the links below for details.
+Hooks
+
+Adding New Hooks
+New Git hooks may be added by creating a file named <hook-name>.hook
in
+this directory. Git determines what hooks are available and what their names
+are.
+New Git merge drivers may be added by adding a shell script named <ext>.merge
+and updating .gitattributes
in the root of the repository to include the line
+*.<ext> merge=<ext>
.
+Adding or removing hooks or merge drivers requires running the install script
+again, but modifying them does not. See existing .hook
and .merge
files for examples.
+
+
+
diff --git a/tools/mapmerge2.html b/tools/mapmerge2.html
new file mode 100644
index 0000000000000..4b43b3e761c05
--- /dev/null
+++ b/tools/mapmerge2.html
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+ tools/mapmerge2/README.md - SPLURT Station 13
+
+
+
+
+Map Merger tools/mapmerge2/README.md
+
+
+
+
+ The Map Merger is a collection of scripts that keep this repository's maps
+in a format which is easier to track in Git and less likely to cause merge
+conflicts. When merge conflicts do occur, it can sometimes resolve them.
+For detailed troubleshooting instructions and other tips, visit the
+Map Merger wiki article.
+Installation
+To install the Git hooks , open the tools/hooks/
folder and double-click
+Install.bat
. Linux users run tools/hooks/install.sh
.
+Manual Use
+If using a Git GUI which is not compatible with the hooks:
+
+Before committing, double-click Run Before Committing.bat
+When a merge has map conflicts, double-click Resolve Map Conflicts.bat
+
+The console will show whether the operation succeeded.
+For more details, see the Map Merger wiki article.
+What Map Merging Is
+The "map merge" operation describes the process of rewriting a map file written
+by the DreamMaker map editor to A) use a format more amenable to Git's conflict
+resolution and B) differ in the least amount textually from the previous
+version of the map while maintaining all the actual changes. It requires an old
+version of the map to use as a reference and a new version of the map which
+contains the desired changes.
+Map Merge 2 adds multi-Z support, automatic handling of key overflow, better
+merge conflict prevention, and a real merge conflict resolver.
+Code Structure
+Frontend scripts are meant to be run directly. They obey the environment
+variables TGM
to set whether files are saved in TGM (1) or DMM (0) format,
+and MAPROOT
to determine where maps are kept. By default, TGM is used and
+the map root is autodetected. Each script may either prompt for the desired map
+or be run with command-line parameters indicating which maps to act on. The
+scripts include:
+
+convert.py
for converting maps to and from the TGM format. Used by
+tgm2dmm.bat
and dmm2tgm.bat
.
+mapmerge.py
for running the map merge on map backups saved by
+Prepare Maps.bat
. Used by mapmerge.bat
+
+Implementation modules:
+
+dmm.py
includes the map reader and writer.
+mapmerge.py
includes the implementation of the map merge operation.
+frontend.py
includes the common code for the frontend scripts.
+
+precommit.py
is run by the Git hooks if installed, and merges the new
+version of any map saved in the index (git add
ed) with the old version stored
+in Git when run.
+
+
+
diff --git a/tools/midi2piano.html b/tools/midi2piano.html
new file mode 100644
index 0000000000000..6e46288bfdb17
--- /dev/null
+++ b/tools/midi2piano.html
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+ tools/midi2piano/README.txt - SPLURT Station 13
+
+
+
+
+tools/midi2piano/README.txt
+
+
+
+
+ This is a remake of 2013 midi2piano tool.
+
+Requirements:
+ Python 3
+
+Simply run midi2piano.py and choose midi file you want to convert.
+The "sheet music" will be copied to the clipboard.
+
+There are some constants defined at the top of midi2piano.py.
+
+TICK_LAG - CHANGE THIS VALUE TO TICK LAG OF YOUR SERVER!
+
+Change their value if needed.
+
+LINE_LENGTH_LIM - max length of line allowed in the sheet music
+LINES_LIMIT - max amount of lines allowed in the sheet music. Extra lines will be cropped.
+
+OVERALL_IMPORT_LIM - max amount of characters allowed in the sheet music.
+
+
+You can also transpose music if you need to
+OCTAVE_TRANSPOSE - amount of octaves you melody will be shifted by
+FLOAT_PRECISION - read comment
+
+Additional notes:
+1. Unlike previous midi2piano, this tool optimizes sheet music to fit more in less lines.
+2. If two notes are less than 50 ms apart, they are chorded. BYOND works in 1/10th of a second so 50 ms is time quanta.
+4. MIDI event set_tempo is NOT supported. If your MIDI file uses set_tempo to change BPM significantly, consider using some other midi file.
+
+This tool is considered final.
+
+Made by EditorRUS/Delta Epsilon from Animus Station, ss13.ru
+Contact me in Discord if you find any major issues: DeltaEpsilon#7787```
+
+
+
+
diff --git a/tools/minibot/LICENCE-bot_folder.html b/tools/minibot/LICENCE-bot_folder.html
new file mode 100644
index 0000000000000..1d00b885a5566
--- /dev/null
+++ b/tools/minibot/LICENCE-bot_folder.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ tools/minibot/LICENCE-bot_folder.txt - SPLURT Station 13
+
+
+
+
+tools/minibot/LICENCE-bot_folder.txt
+
+
+
+
+ The author or authors of this code dedicate any and all copyright interest in
+this code to the public domain. We make this dedication for the benefit of the
+public at large and to the detriment of our heirs and successors. We intend
+this dedication to be an overt act of relinquishment in perpetuity of all
+present and future rights to this code under copyright law.
+
+
+
+
diff --git a/tools/requirements.html b/tools/requirements.html
new file mode 100644
index 0000000000000..b063c4ea06fc4
--- /dev/null
+++ b/tools/requirements.html
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+ tools/requirements.txt - SPLURT Station 13
+
+
+
+
+tools/requirements.txt
+
+
+
+
+ pygit2==1.0.1
+bidict==0.13.1
+Pillow==9.3.0
+
+# changelogs
+PyYaml==5.4
+beautifulsoup4==4.9.3
+
+
+
+
diff --git a/turf.html b/turf.html
new file mode 100644
index 0000000000000..47e5377705855
--- /dev/null
+++ b/turf.html
@@ -0,0 +1,83 @@
+
+
+
+
+
+
+ /turf - SPLURT Station 13
+
+
+
+
+turf
+
+
+
+
+
+Any floor or wall. What makes up the station and the rest of the map.
Proc Details Initialize(mapload)
+
+
+
+
+
+ Turf Initialize
+Doesn't call parent, see /atom/proc/Initialize
LinkBlockedWithAccess(/turf /destination_turf, caller, ID)
+
+
+
+
+
+ For seeing if we can actually move between 2 given turfs while accounting for our access and the caller's pass_flags
+Arguments:
+
+caller: The movable, if one exists, being used for mobility checks to see what tiles it can reach
+ID: An ID card that decides if we can gain access to doors that would otherwise block a turf
+simulated_only: Do we only worry about turfs with simulated atmos, most notably things that aren't space?
+ consider_pressure_difference()
+
+
+
+
+
+ SPACEWIND
fromShuttleMove(/turf /newT, move_mode)
+
+
+
+
+
+ Base procs
process_cell(fire_count)
+
+
+
+
+
+ SIMULATION
reachableAdjacentTurfs(caller, ID, simulated_only)
+
+
+
+
+
+ Returns adjacent turfs to this turf that are reachable, in all cardinal directions
+Arguments:
+
+caller: The movable, if one exists, being used for mobility checks to see what tiles it can reach
+ID: An ID card that decides if we can gain access to doors that would otherwise block a turf
+simulated_only: Do we only worry about turfs with simulated atmos, most notably things that aren't space?
+
+
+
+
diff --git a/turf/closed.html b/turf/closed.html
new file mode 100644
index 0000000000000..f0869a53281c3
--- /dev/null
+++ b/turf/closed.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /turf/closed - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details yelling_dampen
+
+
+
+
+
+ how much of inbound yelling to dampen
yelling_resistance
+
+
+
+
+
+ How much we block yelling
+
+
+
diff --git a/turf/closed/indestructible/splashscreen.html b/turf/closed/indestructible/splashscreen.html
new file mode 100644
index 0000000000000..b6c72c761f295
--- /dev/null
+++ b/turf/closed/indestructible/splashscreen.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /turf/closed/indestructible/splashscreen - SPLURT Station 13
+
+
+
+
+
+
+Procs
+ handle_generic_titlescreen_sizes helper proc that will center the screen if the icon is changed to a generic width, to make admins have to fudge around with pixel_x less. returns null
Proc Details handle_generic_titlescreen_sizes()
+
+
+
+
+
+ helper proc that will center the screen if the icon is changed to a generic width, to make admins have to fudge around with pixel_x less. returns null
+
+
+
diff --git a/turf/closed/mineral.html b/turf/closed/mineral.html
new file mode 100644
index 0000000000000..b7b35403a4c60
--- /dev/null
+++ b/turf/closed/mineral.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /turf/closed/mineral - SPLURT Station 13
+
+
+
+
+
+
+Mineral deposits
Proc Details shuttleRotate(rotation, params)
+
+
+
+
+
+ Turf rotate procs
+
+
+
diff --git a/turf/closed/wall.html b/turf/closed/wall.html
new file mode 100644
index 0000000000000..3d385adde3da8
--- /dev/null
+++ b/turf/closed/wall.html
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+ /turf/closed/wall - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details explosion_power_minimum_chance_dismantle
+
+
+
+
+
+ Explosion power to potentially dismantle the wall
explosion_power_to_dismantle
+
+
+
+
+
+ Explosion power to dismantle the wall
explosion_power_to_scrape
+
+
+
+
+
+ Explosion power to disintegrate the wall
Proc Details
+ Deals damage back to the hulk's arm.
+When a hulk manages to break a wall using their hulk smash, this deals back damage to the arm used.
+This is in its own proc just to be easily overridden by other wall types. Default allows for three
+smashed walls per arm. Also, we use CANT_WOUND here because wounds are random. Wounds are applied
+by hulk code based on arm damage and checked when we call break_an_arm().
+Arguments:
+*arg1 is the arm to deal damage to.
+*arg2 is the hulk
+
+
+
diff --git a/turf/open.html b/turf/open.html
new file mode 100644
index 0000000000000..03fc6ea4dd595
--- /dev/null
+++ b/turf/open.html
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+ /turf/open - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details dirt_buildup_allowed
+
+
+
+
+
+ Dirtyness system, cit specific.
+Does dirt buildup happen on us?
dirt_spawn_threshold
+
+
+
+
+
+ Dirt level to spawn dirt. Null to use config.
dirtyness
+
+
+
+
+
+ Dirt level.
Proc Details Assimilate_Air()
+
+
+
+
+
+ Assimilate Air
+ GAS MIXTURE PROCS
update_visuals()
+
+
+
+
+
+ GAS OVERLAYS
+
+
+
diff --git a/turf/open/floor.html b/turf/open/floor.html
new file mode 100644
index 0000000000000..5221b44ae26eb
--- /dev/null
+++ b/turf/open/floor.html
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+ /turf/open/floor - SPLURT Station 13
+
+
+
+
+
+
+
+ Var Details explosion_power_break_tile
+
+
+
+
+
+ Minimum explosion power to break tile
explosion_power_break_turf
+
+
+
+
+
+ Minimum explosion power to break turf
explosion_power_break_turf_bonus
+
+
+
+
+
+ Starting from here, +20% chance to break turf.
explosion_power_minimum_chance_break
+
+
+
+
+
+ Starting from here, there's a chance for this to break
explosion_power_protect_shielded
+
+
+
+
+
+ Shielded turfs are completely protected from anything under this
explosion_power_turf_scrape
+
+
+
+
+
+ Minimum explosion power to scrape away the floor
+
+
+
diff --git a/turf/open/floor/catwalk_floor.html b/turf/open/floor/catwalk_floor.html
new file mode 100644
index 0000000000000..12b479b080ab9
--- /dev/null
+++ b/turf/open/floor/catwalk_floor.html
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+ /turf/open/floor/catwalk_floor - SPLURT Station 13
+
+
+
+
+
+
+catwalk flooring
+They show what's underneath their catwalk flooring (pipes and the like)
+you can crowbar it to interact with the underneath stuff without destroying the tile...
+unless you want to!
+
+
+
diff --git a/turf/open/floor/glass.html b/turf/open/floor/glass.html
new file mode 100644
index 0000000000000..5608d58fa2c5b
--- /dev/null
+++ b/turf/open/floor/glass.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /turf/open/floor/glass - SPLURT Station 13
+
+
+
+
+
+
+Proc Details crowbar_act
+
+ n(omegalul)
+
+
+
diff --git a/turf/open/floor/plating/asteroid.html b/turf/open/floor/plating/asteroid.html
new file mode 100644
index 0000000000000..c318bcdfaee7e
--- /dev/null
+++ b/turf/open/floor/plating/asteroid.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+ /turf/open/floor/plating/asteroid - SPLURT Station 13
+
+
+
+
+
+
+Asteroid
Vars
+ digResult Itemstack to drop when dug by a shovel
+ dug Whether the turf has been dug or not
+ environment_type Environment type for the turf
+ floor_variance Probability floor has a different icon state
+ postdig_icon_change Whether to change the turf's icon_state to "[base_icon_state]_dug" when its dugged up
+ turf_type Base turf type to be created by the tunnel Procs
+ can_dig If the user can dig the turf
+ Var Details digResult
+
+
+
+
+
+ Itemstack to drop when dug by a shovel
dug
+
+
+
+
+
+ Whether the turf has been dug or not
environment_type
+
+
+
+
+
+ Environment type for the turf
floor_variance
+
+
+
+
+
+ Probability floor has a different icon state
postdig_icon_change
+
+
+
+
+
+ Whether to change the turf's icon_state to "[base_icon_state]_dug" when its dugged up
turf_type
+
+
+
+
+
+ Base turf type to be created by the tunnel
Proc Details can_dig
+
+ If the user can dig the turf
+
+
+
diff --git a/turf/open/lava.html b/turf/open/lava.html
new file mode 100644
index 0000000000000..502c537bed73d
--- /dev/null
+++ b/turf/open/lava.html
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+ /turf/open/lava - SPLURT Station 13
+
+
+
+
+
+
+LAVA
Vars
+ immunity_resistance_flags objects with these flags won't burn.
+ immunity_trait mobs with this trait won't burn.
+ lava_damage How much fire damage we deal to living mobs stepping on us
+ lava_firestacks How many firestacks we add to living mobs stepping on us
+ temperature_damage How much temperature we expose objects with Procs
+ burn_stuff Proc that sets on fire something or everything on the turf that's not immune to lava. Returns TRUE to make the turf start processing.
+ Var Details immunity_resistance_flags
+
+
+
+
+
+ objects with these flags won't burn.
immunity_trait
+
+
+
+
+
+ mobs with this trait won't burn.
lava_damage
+
+
+
+
+
+ How much fire damage we deal to living mobs stepping on us
lava_firestacks
+
+
+
+
+
+ How many firestacks we add to living mobs stepping on us
temperature_damage
+
+
+
+
+
+ How much temperature we expose objects with
Proc Details burn_stuff
+
+ Proc that sets on fire something or everything on the turf that's not immune to lava. Returns TRUE to make the turf start processing.
+
+
+
diff --git a/turf/open/openspace/icemoon.html b/turf/open/openspace/icemoon.html
new file mode 100644
index 0000000000000..2331139784e7d
--- /dev/null
+++ b/turf/open/openspace/icemoon.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ /turf/open/openspace/icemoon - SPLURT Station 13
+
+
+
+
+
+
+Vars
+ drill_below If true mineral turfs below this openspace turf will be mined automatically
+ protect_ruin Replaces itself with replacement_turf if the turf below this one is in a no ruins allowed area (usually ruins themselves)
+ Var Details drill_below
+
+
+
+
+
+ If true mineral turfs below this openspace turf will be mined automatically
protect_ruin
+
+
+
+
+
+ Replaces itself with replacement_turf if the turf below this one is in a no ruins allowed area (usually ruins themselves)
+
+
+
diff --git a/turf/open/space.html b/turf/open/space.html
new file mode 100644
index 0000000000000..69bbb79b61cea
--- /dev/null
+++ b/turf/open/space.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ /turf/open/space - SPLURT Station 13
+
+
+
+
+
+
+Proc Details Initialize(mapload)
+
+
+
+
+
+ Space Initialize
+Doesn't call parent, see /atom/proc/Initialize
+
+
+
diff --git a/turf/open/space/transparent.html b/turf/open/space/transparent.html
new file mode 100644
index 0000000000000..5c9381fa5ea42
--- /dev/null
+++ b/turf/open/space/transparent.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /turf/open/space/transparent - SPLURT Station 13
+
+
+
+
+
+
+Proc Details show_bottom_level()
+
+
+
+
+
+ Called when there is no real turf below this turf
+
+
+
diff --git a/turf/open/space/transparent/openspace.html b/turf/open/space/transparent/openspace.html
new file mode 100644
index 0000000000000..c75476297e3f2
--- /dev/null
+++ b/turf/open/space/transparent/openspace.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ /turf/open/space/transparent/openspace - SPLURT Station 13
+
+
+
+
+
+
+Proc Details show_bottom_level()
+
+
+
+
+
+ No bottom level for openspace.
+
+
+
diff --git a/turf/open/water/cursed_spring.html b/turf/open/water/cursed_spring.html
new file mode 100644
index 0000000000000..0314e903c08c9
--- /dev/null
+++ b/turf/open/water/cursed_spring.html
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+ /turf/open/water/cursed_spring - SPLURT Station 13
+
+
+
+
+
+
+Turns whoever enters into a mob
+If mob is chosen, turns the person into a random animal type
+Once the spring is used, it cannot be used by the same mind ever again
+After usage, teleports the user back to a random safe turf (so mobs are not killed by ice moon atmosphere)
Proc Details remove_from_cursed
+
+ Deletes minds from the cursed minds list after their deletion
+
+
+
diff --git a/world.html b/world.html
new file mode 100644
index 0000000000000..a3be1a7ea4119
--- /dev/null
+++ b/world.html
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+ /world - SPLURT Station 13
+
+
+
+
+World
+
+
+
+
+
+Two possibilities exist: either we are alone in the Universe or we are not. Both are equally terrifying. ~ Arthur C. Clarke
+The byond world object stores some basic byond level config, and has a few hub specific procs for managing hub visiblity
+The world /New() is the root of where a round itself begins
Proc Details
+ Immediately Invoke proctocall on thingtocall, with waitfor set to false
+Arguments:
+
+thingtocall Object to call on
+proctocall Proc to call on that object
+... optional list of arguments to pass as arguments to the proc being called
+ refresh_atmos_grid()
+
+
+
+
+
+ Auxtools atmos
send_cross_comms(server_name, /list/message, auth)
+
+
+
+
+
+ Sends a message to a given cross comms server by name (by name for security).
+
+
+