Skip to content

[MDB IGNORE] For The Bit: Cherry picks every recent bitrunning change. Also announcement system refactor. - #941

Merged
MrMelbert merged 45 commits into
MrMelbert:masterfrom
CRITAWAKETS:for-the-bit
Sep 2, 2026
Merged

MrMelbert merged 45 commits into
MrMelbert:masterfrom
CRITAWAKETS:for-the-bit

Conversation

@CRITAWAKETS

Copy link
Copy Markdown
Contributor

Yup. Every recent bitrunning change is here. This is in preparation for further changes to bitrunning.

Island Brawl has been disabled since we don't want it here what with the overall lack of ghost interaction.
Starfront Saloon has been kept in since upstream it got replaced by Island Brawl.
Disposal Pipe Factory has been disabled pending rework as it's currently impossible. It might also be impossible upstream? If anyone is working on a fix for the domain please confirm this and fix upstream if true.

Announcement System refactor was cherry picked in order to make things easier down the line. I thought it would make this PR easier but... Not really. If there's any issues with announcements please tell me.

And as a last bonus for actually reading this... Retconning is now added as a smite. It came with a refactor and it was too funny to exclude.

TheVekter and others added 30 commits August 19, 2026 03:41
## About The Pull Request

Fixes #84283 by just adding actual bounties for Bitrunner, giving them
something more interesting to do than random bounties for jobs they
don't have access to. These bounties revolve around optionally turning
in the special rewards from each of the bitrunning domains (a bike horn,
the abductor plush, beach ball, etc) for a credit reward. I considered
the idea of making each one drop a specific bounty chit that you turned
in for a reward, but at that point it's just "paying you per domain" and
I'm not sure how that would balance with economy.

This is more just meant to be a framework for others to add things that
might be a little more interesting.

This also adds a special drop from the Pizzeria domain because I thought
it was funny.
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->

Finally dusts off this project to make a deathmatch style bitrunning
map.
Don't be too intimidated by the file diff, lots of code organization +
resized a large map.

Changes:

1. Reuses the gateway beach map as a combat zone (99% of the file diff)
(maptainers: i just added spawners and areas)
2. Alters how bitrunning handles spawning: Custom spawns are now
available, which can be anything

Misc organization:

- Splits netpod.dm into separate files.
- Fixes some wording in vdom map documentation.
- Organizes vdom variables a bit.
- Adds a permanent hololadder spawn.

How bitrunning deathmatch works:

- Temporary spawners are offered to both ghosts and bitrunners.
- Runners spawn in like usual. Ghost can use the spawner menu.
- Ghosts work to prevent avatars from collecting side objectives or try
to cause mass brain damage.
- The domain completes after a number of deaths accrue. Any faction.
Blood for the blood god, etc.
- This map can be played solo. ANY deaths.

<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->

I've been toying with the idea of a deathmatch style map for some time.
I liked syndicate assault, the spawners were intentionally left there,
and the possibility of player-controlled players made the experience
more tense and challenging.

This PR leans into this idea: The virtual world is dangerous. Players
get a chance to compete on both sides here. It offers a lot of variety
to bitrunning other than "run for box". It's also very lucrative if
ghosts join in.

<!-- Argue for the merits of your changes and how they benefit the game,
especially if they are controversial and/or far reaching. If you can't
actually explain WHY what you are doing will improve the game, then it
probably isn't good for the game in the first place. -->

<!-- If your PR modifies aspects of the game that can be concretely
observed by players or admins you should add a changelog. If your change
does NOT meet this description, remove this section. Be sure to properly
mark your PRs to prevent unnecessary GBP loss. You can read up on GBP
and it's effects on PRs in the tgstation guides for contributors. Please
note that maintainers freely reserve the right to remove and add tags
should they deem it appropriate. You can attempt to finagle the system
all you want, but it's best to shoot for clear communication right off
the bat. -->

:cl:
add: Added a bitrunning deathmatch map: Island Brawl. Both ghosts and
runners get many more spawns than normal.
fix: Lowered the static vision time in domain load in.
/:cl:

<!-- Both :cl:'s are required for the changelog to work! You can put
your name to the right of the first :cl: if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->
## About The Pull Request


![yN86RRrD0h](https://github.com/user-attachments/assets/2aaa23c8-1fcb-4a40-ad54-c71306a2f430)

Tin, just aims to fix this hard del by releasing the refs when the
spawners get qdeleted.

## Why It's Good For The Game

Fixes a hard del---also, there were some issues with this domain not
clearing itself properly under certain cases and this may resolve that.

## Changelog

Nothing player facing
Title. Adds two new maps:
- Grasslands Hunt (peaceful)
- Meta Central (easy)

These maps add a new basic revolutionary mob and significantly upgrades
the ai of basic deer.
This fixes an issue where modular maps were not correctly spawning mobs
or adding them to the "mutable candidates" for antagonists.
There's also some balance changes to bitrunning vendor prices, which are
generally now lower. This change is unrelated to the PR as a whole so
I'm okay with removing it if there's concern

<details>
<summary>expand</summary>

![Screenshot 2024-07-26
151822](https://github.com/user-attachments/assets/61fd84f3-3768-4b7a-b421-a953fb8b8174)

![Screenshot 2024-07-26
151834](https://github.com/user-attachments/assets/27193237-858e-41ac-953c-6c30846c98c0)

</details>

- [x] Fix the revolutionary death anim
- [x] Make deer run when injured
New maps as a general positive for bitrunning
Bug fixes
Makes vendor choices for bitrunning-exclusive items generally less of a
chore to get
jlsnow301, MMMiracles, KikoWen0, Ben10Omintrix
:cl:
add: Added two new bitrunning maps: Grasslands Hunt and Meta Central.
add: Deer are now more complex animals, granting them enhanced ability
to run amok and chew your favorite plants.
balance: Reduced the cost of most BR vendor items.
fix: Fixes an issue where modular virtual domains spawned less mobs than
intended.
fix: These modular spawns are now valid mutation targets to become an
antagonist.
/:cl:

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
…stment (#86797)

## About The Pull Request

This swaps out the pirate spawner on the Meta Central VDOM with the
subtype specifically meant for virtual domains. That thing wasn't
actually a virtual domain spawner, it was just a regular one.

This applies the necessary restrictions/roles being applied to pirates
who spawn on that map. It will also make #86794 work on the Metastation
Central map, rather than only affect the Corsair Cove map (which used
the correct spawner type).

This also adds the Announce to Ghosts flag to Meta Central, as is
uniform for maps with ghost roles. Doing so also enables the VDOM
selector UI indicator that ghost roles can spawn on the map.

This whole thing started as an attempt to fix #86785 but I was too slow
and someone beat me too it. Darn.
## Why It's Good For The Game

Ensures #86785 will be closed properly.
## Changelog
:cl: Rhials
fix: The Meta Central Virtual Domain now uses the proper ghost role
spawner, meaning you can't eavesdrop on syndie comms using their
headset.
/:cl:
Replaces the mini-UZI beach battle domain reward with a ballistic
chameleon gun.

Also added a separate possible reward for an uzi bitrunning disk.
…8716)

Where I forget about a pr for 5 months.

This started because there was a pr that made it so skills transfer
between the real and the digital, and so I thought it'd be really funny
if I could train boxing in virtual reality... but there's no easy way to
get boxing gloves or anything like it in the virtual world...
So! I decided to make a disk for it, but then thought about fishing and
gaming and-
Anyhow it all went downhill from there and here we are now: Gimmick
Disks. (And a refactor of disk loading)

This implements a new type of bitrunning disk that instead of a single
item or ability, grants a full set of thematic items/abilities!
Unhelpfully cosplay as a wizard! Game inside your game! Down a digital
protein shake and box some simplemobs!
As the name "Gimmick" implies, these are primarily intended to help
shake up the sometimes stale bitrunner gameplay.
By letting you invoke, if you so desire, what to me is the most
enjoyable gaming experience: doing stupid shit with your buddies.

To facilitate the new type of disk I had to refactor disk loading, as it
was hardcoded to the item types.
Instead, we make disk loading send a signal to the bitrunner, and
register for this when held in their inventory.
This allows us to do things like making the lead acid battery give you
shock touch when held, without needing to make an explicit typecheck or
iterate over every item in the bitrunner's nested contents to see if
they have a loadable item.

I think it'd be really funny if you could train your boxing in the
digital realm.
As said above, I feel the bitrunner gameplay can get stale sometimes,
and this is how I hope to help people shake it up for themselves
sometimes. By giving them more stupid shit to do.
Doing stupid extended bits with other people is one of the things I
enjoy most out of ss13, and this is there to let the bitrunners do
exactly that with each other.

And sometimes you just have to roleplay as Gamers:tm: entering virtual
reality to fight the virtual syndicate in bad cosplay while roleplaying
as a wizard smoking his magic weed, an overly edgy rogue, and the healer
desperately trying to keep them from exploding into a million pieces.
:cl:
refactor: Bitrunning item/ability loading has been refactored. Please
report any issues.
add: Added Bitrunning gimmick loadout disks. These disks contain full
sets of equipment for all your digital cosplay needs, each including
questionably helpful equipment. Currently includes Sports (Boxer,
Skater, Archer, Fisher, Gamer) and Dungeon Crawling (Alchemist, Rogue,
Healer, Wizard).
add: Taking a lead acid battery into the netpod with you now gives your
bit avatar shock touch.
/:cl:
## About The Pull Request
This replaces the hardcoded atmos strings for these turfs with the
actual icebox atmos defines.

## Why It's Good For The Game
Hardcoding values is bad.
Adds support for PVP bitrunning domains. If min/max candidates are set
above 0, the virtual domain will search for any ghost spawners inside
and cause a randomly-selected ghost that signed up via poll to spawn
there. If no ghosts are signed up the process is cancelled.

Also adds content for them:
An outfit wardrobe that lets you select one of several possible outfits,
once.

![image](https://github.com/user-attachments/assets/485d854d-d0c4-43b8-9dc4-75fa9dd2f17f)

Not confident in my code, it's been in the works (as part of a
now-canned library heretic domain thing) for over a year

PvP domains are an underexplored concept. The beach domain is cloying
and overly simple. This adds support for newer and cooler domains as
long as there are ghosts for them.
:cl:
code: Adds support for PVP Bitrunning Domains
/:cl:
…#93410)

a spooky special possession pr for october appears~~

(This is just some code cleanup)
Before, some procs had the `mob_possessor` arg, and some didn't. Which
made it a nightmare to add more positional args to it down the line.
This PR just ensures that all positional args are present in all the
instances of the proc.

Makes this proc chain slightly less of a mess to deal with.

N/A
Completing a combat bitrunning domain grants 0.8 score bonus per player
that escaped without being hit

I figured it be a fun challenge to try to nohit these things, especially
the megafauna ones. For a bonus.

:cl: Melbert
add: Nohitting a combat bitrunning domain rewards a higher score.
/:cl:
…akes digitital beings not care about death (#93546)

1. Adds `Heretical Hunt`, an easy difficulty domain that tasks you with
killing and sacrificing simulated crew members. The domain has a few
ways to conquer it, as you don't need to kill all the simulated crew
members and there's some hidden loot to make use of

It's an easy domain because
- You have quite decent armor,
- The mobs are pretty unintelligent,
- You can always fall back and heal passively on the rust tiles
- There are many ways to tackle it

Though it's not a complete pushover, the mobs can still overwhelm you if
you're not careful.

<img width="440" height="347" alt="image"
src="https://github.com/user-attachments/assets/a3f30204-0200-4197-80bb-aee083059164"
/>

2. Virtual beings are given a minor positive moodlet for killing people
instead of a negative one

1. I thought it'd be kinda fun if we had antag-themed domains which
soft-explains the gameplay loops or mechanics of certain antags, in this
case, heretics sacrificing people

2. You don't feel remorse for killing people in video games, right anon?

:cl: Melbert
add: Added a new easy difficulty bitrunning domain, "Heretical Hunt"
add: Digital mobs receive positive moodlets for killing people rather
than negative
fix: Madness Mask no longer affects corpses
fix: Fixed some heretic runtimes
/:cl:
Improves some blackbox logging for bitrunner domain creation, by also
logging how much information they had when they chose it.

Also some minor code improvements, by making methods for whether the
name/reward of a domain is visible.

Right now, if we just look at blackbox logs, we cannot easily tell if a
domain is being deliberately avoided when possible, as we cannot tell if
it's run unintentionally or intentionally. Now we will record that
information, so we can act on it, and hopefully perform actions to
improve the domains that people attempt to avoid.
…ompletion when drank (#95466)

Previously, when one drank out of a glass of booze that the virtual
bartender graciously offered, one would not get any closer to domain
completion, because said bartender got his glasses new out of a vending
machine. These glasses never were registered on domain creation, due to
not existing on domain creation. This pr registers the vending machines
within the domain with a new signal that allows newly created glasses to
also be registered, and count towards domain completion.

A bitrunner dying of liver failure due to the obtuse distinction between
glasses that were in a vending machine and glasses that were on the
table sounds very annoying. Also, you could very easily make the domain
not completable within seconds by spawning as a ghostrole and breaking
the table glasses. You can still do that, but you have to break an
entire vending machine's worth of glasses too.

:cl:

fix: Glasses that were in the vending machine now still count for the
completion of the Beach Bar virtual domain

/:cl:
…ere are remaining active bitrunners (#95934)

For every living, connected bit avatar remaining in the simulation, the
`do_after()` for leaving the simulation as a bitrunning glitch ghost
role is multiplied by 5. The base timer remains at it was, two seconds.

Additionally, there is an exception in place for the "Island Brawl"
domain, which is the FFA with infinite respawns. It still multiplies by
5 for each active bitrunner, but that multiplier is reduced by 1 for
each death, so you likely only have to kill one wave of bitrunners for
normal escape time.

Additionally, because of necessity for the exception and also basic good
sense, bitrunning points are no longer component-based on specific turfs
in the domain, and are held in the server. It never should have been a
component, it had no reason to be one. This, as a consenquence, also
fixes that you could completely softlock any domain using points by
simply crowbarring the turf that the crate was yet to spawn on.

Yesterday, I saw one of the lamest things I've ever seen in the game. A
bitrunning glitch spawns in, walks literally right by two bitrunners as
they ask who he is, and leaves the simulation to go on a killing spree
unburdened. There was extenuating circumstances in that situation, but
it still was a miserable breakdown of what I think the intended gameplay
of a bitrunning glitch is, and shows how ridiculously easy it is to
simply not engage with the intended hurdle in your path. The
primary(and, really, only) job of a glitch is to kill bit avatars, and
this PR makes it significantly more difficult to just... walk by them to
go on your killing spree on station. Work, then play.

:cl:

balance: For every living, connected bitrunner remaining in a domain,
bitrunning glitches will take five times longer to escape.
fix: You can no longer softlock any virtual domain that uses points by
crowbarring the reward turf before the crate spawns.

/:cl:
Shows the best grade achieved for each domain in the quantum console.

<img width="517" height="518" alt="image"
src="https://github.com/user-attachments/assets/026035f1-ba34-48a0-b71b-72a10419afe8"
/>

Allows bitrunners to see what domains they've already finished without
going back through a stack of paper they may have already trashed or
just remembering everything.

Also provides players with a sense of pride and accomplishment for
scoring high on all the domains.
## About The Pull Request

All bitrunner domains no longer have their names hidden due to lacking
upgraded stock parts.

Domains that require a significant amount of stars are still hidden
until unlocked.

## Why It's Good For The Game

Three reasons:

1. At first I thought the names were obscured to require Bitrunners
explore a variety of domains rather than play the same domain over and
over again, but the actual domains don't randomize position in the list
between rounds, making hidden names nothing but a memory check.

2. Even though the names were hidden the special icons weren't, meaning
you could logic out which is which (at least, until the pool is expanded
significantly, but that may not happen for. Some time.)

3. Some bitrunner domains now serve as pseudo-tutorials, so making them
easier to pick out serves nicely towards that.

## Changelog

:cl: Melbert
qol: Bitrunner domain names are no longer hidden until you upgrade the
server stock parts. Distantly unaffordable domains still have their
names hidden.
/:cl:
- Closes #92210

1) Bit Forge can be deconstructed with a screwdriver & crowbar like a
normal machine
2) Adds examines & screentips for netpod, bitforge(icon for panel open
state added) & quantum server on how to deconstruct them. New icon state
for when bitforge has its panel open is shown below
<img width="210" height="103" alt="Screenshot (497)"
src="https://github.com/user-attachments/assets/bb44c78d-1f0e-468f-9a79-ebc5800edd09"
/>

3) Moved bitrunning machine designs into files that exist to hold that
type of code

:cl:
code: moved designs & circuitboards for bitrunning into their correct
files
qol: adds examines & screentips for bitrunning netpod, bitforge & server
on how to deconstruct them
fix: bitforge can be deconstructed with a screwdriver & crowbar
/:cl:
Fixes #92463

- Fixes an exploit to take loot out of the Virtual Domain via build a
shuttle.
- Explicitly prevents people taking items into the Virtual Domain.
…ualspace to real accounts (#94071)

Fixes tgstation/tgstation#90641
Fixes tgstation/tgstation#88366

Eliminates worries over virtualspace currency being sent to real
accounts.

When I was looking into why there were no flags for bitrunning areas.
Then I saw this mess:

<img width="929" height="889" alt="Code_2we2QjDyFp"
src="https://github.com/user-attachments/assets/8a807bfe-b566-4057-a8ea-2b306325687d"
/>

Not having enough space / being too lazy to refactor this is a silly
reason to not include flags for something like these virtual areas where
it can be quite helpful. Fortunately I am not too lazy ~~in this
moment~~ so here we go:

It was fairly logical to move over some of these to a separate flag,
which I've called `area_flags_mapping` since they pertain to maploading
things and terrain generation mostly. `area_flags` stays reserved for
general properties and now has more room than it did before for you
people to fill it with.

In doing this it's also neatened up the code quit a bit, as UNIQUE_AREA
was kind of everywhere and now that it's implied by default less areas
need to have it defined (or explicitly un-defined).

<details> <summary> Working as intended </summary>

<img width="787" height="448" alt="dreamseeker_p0Qts36tG1"
src="https://github.com/user-attachments/assets/25056f34-8d43-4be2-a293-e53df7a7d1db"
/>

<img width="383" height="59" alt="dreamseeker_Ek7TXCcpbA"
src="https://github.com/user-attachments/assets/89622974-9467-4cdb-8345-d684f7c9004b"
/>

</details>

Fixes an exploit, improves the area flags situation slightly.

:cl:
fix: you can no longer send money from virtualspace to a real account
code: adds a flag for virtual areas so they can easily be checked, as
well as an easy helper proc, 'is_area_virtual(your_area)'
/:cl:
…avatar (#94052)

## About The Pull Request

Alt click a netpod to enable scanning, which scans your dna and makes
newly created bit avatars look more like you. If the netpod already has
an associated bit avatar it doesn't do anything.

Purely visual/audial if you count tts, it doesn't let you switch races.

## Why It's Good For The Game

Bitrunners can recognize their teammates.

## Changelog

:cl:
add: Netpods can now scan their occupants to create more accurate bit
avatars
/:cl:

---------

Co-authored-by: Fghj240 <fakeemail@notrealemail.com>
Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
…e damage (#96138)

## About The Pull Request

`def_zone` can hold a zone or a bodypart. In the case of a simple
stabbing or shooting, it sends a bodypart. That bodypart is the bodypart
of the domain actor. When we call `apply_damage()` on the real-world
body, we send the bodypart of the domain actor in `def_zone`, which
somehow has no runtimes or checks and ends up successfully dealing
damage... to the actor. Again. This doesn't always shield the original
body, as `def_zone` is not guaranteed to be sent as a bodypart(or at
all), so you could be killed in real life by certain attacks still, but
for the grand majority of attacks this meant that the real body was
invincible and the actor took double.

## Why It's Good For The Game

fixes #93081

## Changelog
:cl:

fix: Bitrunners no longer take double damage in-domain, and do take
damage to their real bodies

/:cl:
## About The Pull Request

When bitrunners attempt to leave their domain via the ladder, they will
fail if there is an active, living bitrunning glitch antagonist within
the domain. Other methods of leaving such as death or taking the red
pill are unaffected.

they can also leave if the crate's delivered

sorta a sister PR to #95934

## Why It's Good For The Game

enter domain -> get alert about bitrunning glitch -> leave -> turn off
domain
What a fun gameplay loop, for everyone involved.
You'll fight the glitch and you'll like it. (liking it
[pending](tgstation/tgstation#96138))

You can still leave if you REALLY, REALLY need to at the cost of a
little brain damage, but otherwise the literal only obstacle that will
ever be in your path should be something you have to engage with.

## Changelog
:cl:

balance: Bitrunners can't back out of domains via the ladder while
bitrunning glitches remain in them

/:cl:
## About The Pull Request
fixes tgstation/tgstation#87419

When the avatar is qdel'd, the player returns to original body

## Why It's Good For The Game
Less bugs good

## Changelog
:cl:
fix: Bitrunning: falling into chasms and other ways of destroying your
virtual body instead of killing it, WILL now return you to your body
/:cl:
I standardized stuff in AASs code, and all current reference to it. Also
added interactions for bounty cubes, weather reports and request
consoles, all of it can be changed from AASs UI.
Also it's easier now to add new config entries for AAS to proceed, and
it's now downstream friendly.
Well, because kind of order in code and because it's funny to make
custom messages for... Almost everything?
BTW any entry can be blocked from ingame changes, by default you can't
change Broken Arrival shuttle and Security Officer arrival
announcements, how it was before. But may be we should allow it - it's
an open question.
:cl:
add: Many things now handles via AAS: Bounty Cubes, Request Consoles,
Brig Cells, Vending Machines and Orion Trails alerts, Weather Reports,
Cargo Order Console
code: Now anyone can make their own entry for AAS
refactor: AAS internals, also cleanup
/:cl:
JohnFulpWillard and others added 6 commits August 21, 2026 02:31
Monkey knockover is now on a new mob-bump signal instead of being on
crossed, fixing some consistency issues and getting rid of our need for
snowflake "can bump into mob" check.

We should try to get rid of all our instances of Crossed and remove its
use to prevent this bug from occurring in the future.

Closes tgstation/tgstation#66983

🆑
fix: Monkeys can no longer be knocked over by walking into a windoor on
combat mode while they're behind it.
/🆑
… into an atom level proc (#90016)

## About The Pull Request

Adds a new Retcon smite, it makes the person fade out into nothingness
with a configurable timer, deletes their records and reopens their job
slot, as if they were never there at all.

I was also annoyed that to play around with temporary_atom I had to
slowy add a component, and it doesn't really have much of a reason to BE
a component, so I refactored it into an atom level proc called
fade_into_nothing

## Why It's Good For The Game

The smite is useful for when you wanna get rid of someone who had to
leave roundstart and whatnot, on top of just being funny. the refactor
is also good because i can now put that proc on build mode and go to
town.

## Changelog

:cl:
add: Added new mechanics or gameplay changes
add: Added more things
del: Removed old things
qol: made something easier to use
balance: rebalanced something
fix: fixed a few things
sound: added/modified/removed audio or sound effects
image: added/modified/removed some icons or images
map: added/modified/removed map content
spellcheck: fixed a few typos
code: changed some code
refactor: refactored some code
config: changed some config setting
admin: messed with admin stuff
server: something server ops should know
/:cl:

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
## About The Pull Request

#90016 was speedmerged and it had a failed linter, this fixes that

## Why It's Good For The Game

linters failing bad

## Changelog

nothing player facing
…types (#92177)

Simple enough. This domain used just plain ghost spawners from the
lavaland ruin previously.
Now, it has `temp_body = TRUE`, allowing ghosts to return to their
original body after leaving the domain
_Alongside this it has unique little descriptions to cement it as NPC
actors_

This also adds a new `antag` variable to virtual_domain spawners, which
decides if they get the hunt-bitrunners antag datum _(default True, in
this case False)_

<h5>I did notice a few bugs while testing this, namely that temp_body
doesn't always work? I'm not coder enough to hunt down why and fix it
though... the two cases I noticed will be made into a bug report.</h5>

It feels weird that there's this temp_body ghost spawner stuff for
bitdomains, but it's not used in **all** the bitdomains. They don't last
that long, making them permanently kill old bodies feels odd.
This also sets up an easy var for other bit ghostroles to use if they
aren't explicitly antags hunting bitrunners, and don't need an antag
datum.
<img width="853" height="449" alt="image"
src="https://github.com/user-attachments/assets/d5761ac1-25bd-4ee5-b281-14fe4392479e"
/>

:cl:
qol: made the Beach Bar bitdomain ghostrole spawners keep your old body
revivable (as other bitdomain spawners do)
/:cl:
@github-actions github-actions Bot added Sprites Fixing up coder sprites is nice Modularity Suggested Read the README in "maplestation_modules" and follow the instructions or risk doom UI Map Edit Refactor labels Aug 21, 2026
Maia-J and others added 6 commits August 21, 2026 03:54
Got a bug reported today on a downstream, turns out it's a thing here.
If there's no linked avatar yet and you repeatedly climb in and out of
the pod before the do_after finishes, you fill in all three bitrunning
slots with unlinked avatars and fill up the bandwidth.

I simply moved the do_after before any of the avatar spawning, making
the pod "Try to connect" before it does anything avatar handling worthy.

I will have one less bitrunner in my DMs reporting a bug, and you might
too!

Idk I guess bugfixes are good

:cl:
fix: fixes bitrunning breaking upon repeatedly climbing in and out the
pod
/:cl:
Reduces the max length you can set an AAS message by 83% (1024
characters -> 168 characters)

I think most people would agree it's fairly annoying when someone edits
the AAS messages to be full paragraphs, filling common up with nonsense

Ostensibly this can be handled by admins but I think allowing someone to
enter 1000 characters here is a bit excessive in the first place - The
longest default message we have is 144 characters

Alternatively I can cap message length on a per-message-type basis so
the most common messages (arrivals, weather) have a far shorter limit
than the uncommon messages (security alerts)

:cl: Melbert
del: Caps "Automated Announcement System" messages to 168 characters
(was: 1024 characters)
/:cl:
CRITAWAKETS and others added 3 commits August 21, 2026 05:51
## About The Pull Request
Bitrunning hacker names now permit most characters while staying within
the IC filter and length requirements. Made some helper procs to keep it
organized
## Why It's Good For The Game
You can now name yourself things like An1me_Sn1p3r
## Changelog
:cl:
fix: Bitrunning hacker aliases are now much more permissive
/:cl:
@CRITAWAKETS CRITAWAKETS changed the title For The Bit: Cherry picks every recent bitrunning change. Also announcement system refactor. [MDB IGNORE] For The Bit: Cherry picks every recent bitrunning change. Also announcement system refactor. Aug 29, 2026
@MrMelbert
MrMelbert merged commit e1f305b into MrMelbert:master Sep 2, 2026
27 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Map Edit Modularity Suggested Read the README in "maplestation_modules" and follow the instructions or risk doom Refactor Sprites Fixing up coder sprites is nice UI

Projects

None yet

Development

Successfully merging this pull request may close these issues.