Commit Graph

40 Commits

Author SHA1 Message Date
nevimer baf3837ae8 Merge remote-tracking branch 'tgstation/master' into upstream-2025-11-29
# Conflicts:
#	_maps/RandomRuins/SpaceRuins/derelict_sulaco.dmm
#	_maps/RandomRuins/SpaceRuins/garbagetruck2.dmm
#	_maps/map_files/CatwalkStation/CatwalkStation_2023.dmm
#	_maps/map_files/tramstation/tramstation.dmm
#	code/_onclick/hud/new_player.dm
#	code/datums/components/squashable.dm
#	code/datums/diseases/advance/symptoms/heal.dm
#	code/datums/diseases/chronic_illness.dm
#	code/datums/status_effects/buffs.dm
#	code/datums/status_effects/debuffs/drunk.dm
#	code/datums/status_effects/debuffs/stamcrit.dm
#	code/game/machinery/computer/crew.dm
#	code/game/objects/items/devices/scanners/health_analyzer.dm
#	code/game/objects/items/wall_mounted.dm
#	code/game/turfs/closed/indestructible.dm
#	code/modules/admin/view_variables/filterrific.dm
#	code/modules/antagonists/heretic/influences.dm
#	code/modules/cargo/orderconsole.dm
#	code/modules/client/preferences.dm
#	code/modules/events/space_vines/vine_mutations.dm
#	code/modules/mob/dead/new_player/new_player.dm
#	code/modules/mob/living/carbon/human/death.dm
#	code/modules/mob/living/carbon/human/species_types/jellypeople.dm
#	code/modules/mob/living/damage_procs.dm
#	code/modules/mob/living/living.dm
#	code/modules/mob_spawn/ghost_roles/mining_roles.dm
#	code/modules/mob_spawn/mob_spawn.dm
#	code/modules/projectiles/ammunition/energy/laser.dm
#	code/modules/projectiles/guns/ballistic/launchers.dm
#	code/modules/projectiles/guns/energy/laser.dm
#	code/modules/reagents/chemistry/machinery/chem_dispenser.dm
#	code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm
#	code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm
#	code/modules/reagents/chemistry/reagents/medicine_reagents.dm
#	code/modules/surgery/healing.dm
#	code/modules/unit_tests/designs.dm
#	icons/mob/inhands/items_lefthand.dmi
#	icons/mob/inhands/items_righthand.dmi
#	tgui/packages/tgui/interfaces/ChemDispenser.tsx
2025-11-29 22:49:21 -05:00
Bloop 183c5af2e4 Adds flag for virtual areas, fixes being able to send funds from virtualspace to real accounts (#94071)
## About The Pull Request

Fixes https://github.com/tgstation/tgstation/issues/90641
Fixes https://github.com/tgstation/tgstation/issues/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>

## Why It's Good For The Game

Fixes an exploit, improves the area flags situation slightly.

## Changelog

🆑
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)'
/🆑
2025-11-22 12:24:41 -07:00
Bloop 29e2f867b8 Adds some trailing commas to lists (#90501)
## About The Pull Request

I heard you liked commas.

## Why It's Good For The Game

Trailing commas make everyone happy!

## Changelog

Nothing anyone will notice besides downstreams adding to these lists
2025-04-29 17:52:31 -06:00
Watermelon914 79b00baad2 Refactors subsystems to use dependency-ordering to determine init order. Subsystems can now declare their own dependencies. (#90268)
## About The Pull Request
As the title says.
`init_order` is no more, subsystems ordering now depends on their
declared dependencies.
Subsystems can now declare which other subsystems need to init before
them using a list and the subsystem's typepath
I.e.
```dm
dependencies = list(
    /datum/controller/subsystem/atoms,
    /datum/controller/subsystem/mapping
)
```
The reverse can also be done, if a subsystem must initialize after your
own:
```dm
dependents = list(
    /datum/controller/subsystem/atoms
)
```
Cyclical dependencies are not allowed and will throw an error on
initialization if one is found.
There's also a debug tool to visualize the dependency graph, although
it's a bit basic:

![image](https://github.com/user-attachments/assets/80c854d9-c2a5-4f2f-92db-a031e9a8e257)

Subsystem load ordering can still be controlled using `init_stage`, some
subsystems use this in cases where they must initialize first or last
regardless of dependencies. An error will be thrown if a subsystem has
an `init_stage` before one of their dependencies.

## Why It's Good For The Game
Makes dealing with subsystem dependencies easier, and reduces the chance
of making a dependency error when needing to shift around subsystem
inits.

## Changelog
🆑
refactor: Refactored subsystem initialization
/🆑
2025-04-29 17:11:39 -06:00
Bloop d71375eafd Adds some trailing commas to lists (#90501)
## About The Pull Request

I heard you liked commas.

## Why It's Good For The Game

Trailing commas make everyone happy!

## Changelog

Nothing anyone will notice besides downstreams adding to these lists
2025-04-13 20:35:39 -04:00
Watermelon914 6c017cf1e1 Refactors subsystems to use dependency-ordering to determine init order. Subsystems can now declare their own dependencies. (#90268)
## About The Pull Request
As the title says.
`init_order` is no more, subsystems ordering now depends on their
declared dependencies.
Subsystems can now declare which other subsystems need to init before
them using a list and the subsystem's typepath
I.e.
```dm
dependencies = list(
    /datum/controller/subsystem/atoms,
    /datum/controller/subsystem/mapping
)
```
The reverse can also be done, if a subsystem must initialize after your
own:
```dm
dependents = list(
    /datum/controller/subsystem/atoms
)
```
Cyclical dependencies are not allowed and will throw an error on
initialization if one is found.
There's also a debug tool to visualize the dependency graph, although
it's a bit basic:

![image](https://github.com/user-attachments/assets/80c854d9-c2a5-4f2f-92db-a031e9a8e257)

Subsystem load ordering can still be controlled using `init_stage`, some
subsystems use this in cases where they must initialize first or last
regardless of dependencies. An error will be thrown if a subsystem has
an `init_stage` before one of their dependencies.

## Why It's Good For The Game
Makes dealing with subsystem dependencies easier, and reduces the chance
of making a dependency error when needing to shift around subsystem
inits.

## Changelog
🆑
refactor: Refactored subsystem initialization
/🆑
2025-04-03 17:04:30 -04:00
Ghom 96ee875b3f It's now possible to take trophy fish from previous rounds off the mount (based on RNG). (#89439)
## About The Pull Request
Instead of immediately dusting, there's now a chance, depending on size
and weight (lower is better) as well as the fishing skill of who tries
to remove it (higher is better). At no skill (or if the fish is removed
indirectly), the odds of it not dusting can be as low as about 3~4% (BIG
FISH) and as high as 50% (tiny feesh), while each level in the skill
provides an additional 4% to the roll, up to a bonus 28% (legendary
level).

As always, regardless of RNG, the fish won't be removed from the
persistence system if removed from the trophy mount, and only if
replaced.

This PR also allows trophy fish to retain traits between rounds, but
keep in mind the fish starts dead and may have to be revived first. Also
trying to sell it will yield a pitiful 1/20 of its theorical export
value, much like for fish from fish cases.

## Why It's Good For The Game
The persistent trophy fish mount at the bar seems to fare fairly well
without outstanding issues so far, so maybe I should let people get
their hands on rare and valuable fish from previous rounds, and give
players some more practical reasons to place a fish on the mount for
future rounds. As long as people don't start beelining the trophy mount
by the bar on regular basis.

## Changelog


🆑
balance: It's now possible to take trophy fish from previous shifts off
their mounts without turning them into dust based on a probability
revolving around the size and weight of the fish against your fishing
skill.
/🆑
2025-03-12 17:13:52 -04:00
Ghom 5e311990c3 [NO GBP] Fixing trophy fishes not loading mats (#89623)
## About The Pull Request
For some reason, that either wasn't an issue before, or it always was
and I did not fix it. Either way, `List()` is a proc and `material_path`
variable is being read as an arg called "material_path" which is what
the key is being set to, instead of the stored value of the variable, I
think.

## Why It's Good For The Game
Fixing stuff.

## Changelog

🆑
fix: Fixing loaded trophy fishes possibly not having materials.
/🆑
2025-03-12 16:46:49 -04:00
Ghom f6ccd9fa5d It's now possible to take trophy fish from previous rounds off the mount (based on RNG). (#89439)
## About The Pull Request
Instead of immediately dusting, there's now a chance, depending on size
and weight (lower is better) as well as the fishing skill of who tries
to remove it (higher is better). At no skill (or if the fish is removed
indirectly), the odds of it not dusting can be as low as about 3~4% (BIG
FISH) and as high as 50% (tiny feesh), while each level in the skill
provides an additional 4% to the roll, up to a bonus 28% (legendary
level).

As always, regardless of RNG, the fish won't be removed from the
persistence system if removed from the trophy mount, and only if
replaced.

This PR also allows trophy fish to retain traits between rounds, but
keep in mind the fish starts dead and may have to be revived first. Also
trying to sell it will yield a pitiful 1/20 of its theorical export
value, much like for fish from fish cases.

## Why It's Good For The Game
The persistent trophy fish mount at the bar seems to fare fairly well
without outstanding issues so far, so maybe I should let people get
their hands on rare and valuable fish from previous rounds, and give
players some more practical reasons to place a fish on the mount for
future rounds. As long as people don't start beelining the trophy mount
by the bar on regular basis.

## Changelog


🆑
balance: It's now possible to take trophy fish from previous shifts off
their mounts without turning them into dust based on a probability
revolving around the size and weight of the fish against your fishing
skill.
/🆑
2025-03-07 15:37:13 +01:00
Ghom 0efd74f4ab [NO GBP] Fixing trophy fishes not loading mats (#89623)
## About The Pull Request
For some reason, that either wasn't an issue before, or it always was
and I did not fix it. Either way, `List()` is a proc and `material_path`
variable is being read as an arg called "material_path" which is what
the key is being set to, instead of the stored value of the variable, I
think.

## Why It's Good For The Game
Fixing stuff.

## Changelog

🆑
fix: Fixing loaded trophy fishes possibly not having materials.
/🆑
2025-02-23 13:25:37 -05:00
Majkl-J b6b8306fda Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-25-02a 2025-02-20 00:00:19 -08:00
Ghom c63139c0f0 [NO GBP] Fixes the date of when a trophy fish is caught (#88770) 2025-01-01 13:05:49 +01:00
Ghom 467c8357b3 Fish mounts for trophy fish. (#88373) 2024-12-26 17:29:57 +01:00
Majkl-J e59d8ba64b Merge commit '179a607a90ad7ec62bdaff4e6fe72af60ee56442' of https://github.com/tgstation/tgstation into upstream-24-10b 2024-10-23 23:27:16 -07:00
Majkl-J f8faccd70a Merge branch 'master' of https://github.com/Skyrat-SS13/Skyrat-tg into upstream-24-10a 2024-10-20 04:12:02 -07:00
Waterpig bb70889f6e TG Upstream Part 1
3591 individual conflicts

Update build.js

Update install_node.sh

Update byond.js

oh my fucking god

hat

slow

huh

holy shit

we all fall down

2 more I missed

2900 individual conflicts

2700 Individual conflicts

replaces yarn file with tg version, bumping us down to 2200-ish

Down to 2000 individual conflicts

140 down

mmm

aaaaaaaaaaaaaaaaaaa

not yt

575

soon

900 individual conflicts

600 individual conflicts, 121 file conflicts

im not okay

160 across 19 files

29 in 4 files

0 conflicts, compiletime fix time

some minor incap stuff

missed ticks

weird dupe definition stuff

missed ticks 2

incap fixes

undefs and pie fix

Radio update and some extra minor stuff

returns a single override

no more dupe definitions, 175 compiletime errors

Unticked file fix

sound and emote stuff

honk and more radio stuff
2024-10-19 08:04:33 -07:00
Zephyr 0ef5c3d049 Persistent Map Vote Tallies (#86788)
## About The Pull Request

Changes map votes to be based on a persistent tally count.
Tallies for maps are cached between rounds and are added to by map
votes.
When a map is chosen, and it wasn't the only valid one, the tallies for
said chosen map will be reset.

Refactors map vote handling and moves it from SSmapping to SSmap_vote.
Rock the Vote has been removed as a result of this refactor.

## Why It's Good For The Game

Makes it more likely that all maps will be played over the course of a
server instead of always being truly random.
Removes some clutter off of SSmapping.

🆑
refactor: Map Votes are now carried over between rounds. When a map vote
is actually a contest, the winning map will have its votes reset.
/🆑
2024-09-30 13:09:08 +13:00
Waterpig edaf2c36dc [Merge-Ready] Storyteller 2.0 (#2064)
## About The Pull Request

### New stuff

Introduces lone infiltrator back.

Introduces midround malf

### Removals

Predictable chaos has been removed as its system of trying for antags
more often in smaller numbers is now part of every storyteller. Hooray
midrounds!

### Event adjustments

Meteors can no longer repeat-run. For some reason the default tg value
for them was 3 max occurences.

### Track changes

Tracks are now simpler to manage as they fill by a consistent value of
1, instead being of variable lengths dependent on the storyteller. These
still need adjustments depending on how the testing rounds go

The Roleset track has been changed to the Crewset track and its rollable
events split between it and ghostsed
The unused Objectives track has been killed and changed for the Ghostset
track, containing ghost rolls

This means that ghost rolls should be a guarantee, even if just 1 rolls
during a round. This will probably need more adjustment and tweaking.
Also had lone infiltrator reintroduced for this reason.

### Votes

Votes no longer prevent the last storyteller voted, but the last type of
teller voted. This means that going Fragile>Chill>Fragile is no longer
possible, and rounds should alternate between the low intensity and high
intensity tellers.

Default Andy is always available
Bomb, Clown, Gamer are of the high intensity category
Fragile, Chill, Extended are of the low intensity category

### Fixes

Fixes track points sometimes going into the negatives, makes roundstart
point distribution more random. Some other minor stuff is also fixed.
The flaky error may have been fixed by this but I haven't tested

Fixes voidwalker spawning wrongly on planetary maps

## Why It's Good For The Game

Should make antag rolling less round start ready dependent, also takes
what predictable chaos does and applies it to every teller because the
concept of trying to roll antags super often is actually pretty fucken
good.

It also makes the system less convoluted and fixes some bugs

## Proof Of Testing

Needs TM to iron out track points once I'm done making them.

## Changelog

🆑
add: Added Lone infiltrator ghost midround
add: Added Malf AI midround
del: Removes predictable chaos as all tellers now use its main gimmick
as a baseline
qol: Storyteller votes now prevent a constant voting streak of the same
type of tellers
balance: All storytellers now roll antags more often, but in smaller
numbers per roll
balance: Clown storyteller no longer cares about event weights and just
does whatever rng decides
balance: Meteors can no longer run repeatedly in a single round
balance: Makes ghost roles actually roll somewhat frequently
fix: Fixed a few bugs with storytellers, namely the tracks sometimes
going into negatives, and voidwalker running on planet maps
refactor: Refactored how storytellers handle tracks to be easier to code
with
/🆑

---------

Co-authored-by: The Sharkening <95130227+StrangeWeirdKitten@users.noreply.github.com>
2024-09-10 23:39:21 +00:00
Waterpig 4c4930c71d Merge branch 'master' of https://github.com/tgstation/tgstation into pulls-tg-to-fix-shit 2024-09-08 00:59:39 +02:00
Profakos 52ccdf20cd Prevents persistence from trying to load more engravings than exists (#86065)
## About The Pull Request

During initializing persistent wall engravings, the game picked a number
between 15 and 25, and attempted to load that many. However, if there
were less engravings than that, the loop went on even after the list it
was calling `pick_n_take` on was empty, and multiple times it has logged
a runtime claiming that the engraving was in an incorrect format when it
tried to parse the returned nulls.

This PR ensures that the game will not attempt to load more engravings
than the amount that exists in the persistence files, ensuring less
incorrect error messages during initialization.

## Why It's Good For The Game

Less incorrect lines during initialization on maps that have not
received enough engravings.

## Changelog

Nothing player facing.
2024-09-05 22:58:54 -06:00
Ghom 73081bcff0 Add messages (paper, photos, cash) in bottles. (#85703)
## About The Pull Request
This PR adds a new persistent feature: message inside bottles. These are
basically glass bottles with inside a piece of paper, a photo or space
cash (no holocredits, and most bills rarely go over 1000 credits anyway)
from a previous round, which can be fished at the beach, or from the
relative fishing portals.

Each piece of written paper or photo that isn't map-loaded has a roughly
a 0.2% chance to be added to the message bottles database at the end of
the round. However, you can also manually toss a glass bottle with
inside a paper/photo/bill into the ocean (or a fishing portal generator
with the ocean/beach module loaded) for guaranteed results.

The bottles are removed from the database once fished up by the by,
unless tossed back into the ocean.

I've also offset a couple bottle sprites that weren't properly aligned
(for the message overlays).

TODO:
- [x] add a couple (20 prob or less) message bottle spawners to the
beach away mission or something.
- [x] add a few sounds for adding and removing the message from the
bottle. (pickup/drop sounds already handle that)
- [x] test it properly.

## Why It's Good For The Game
I think it'd be neat to have a way to send photos, snarky "seek grass"
messages, as well as the occasional financial aid to future players, and
furthermore, another thing to tie fishing to.

## Changelog

🆑
add: You can place papers, photos and cash bills (no holochips) inside
bottles and then toss them into the ocean (or fishing portal gen with
relative settings) with right-click, for others to fish them up on
future rounds.
/🆑
2024-08-24 01:31:38 -04:00
Waterpig 96edb73e4a Merge branch 'master' of https://github.com/Skyrat-SS13/Skyrat-tg into upstream-24-08b 2024-08-14 00:21:40 +02:00
Ghom 3384192478 Removes an unused var from SSpersistence (#85696)
## About The Pull Request
I think I may have forgotten to remove it from the final version of the
persistent piggy banks PR (museum cafeteria yadda yadda)

## Why It's Good For The Game
Unused var.

## Changelog
N/A
2024-08-09 23:27:13 -04:00
Ghom d25782b4d6 Removes an unused var from SSpersistence (#85696)
## About The Pull Request
I think I may have forgotten to remove it from the final version of the
persistent piggy banks PR (museum cafeteria yadda yadda)

## Why It's Good For The Game
Unused var.

## Changelog
N/A
2024-08-09 23:21:46 -04:00
StrangeWeirdKitten 38c3a6336d Merge branch 'master' of https://github.com/skyrat-ss13/skyrat-tg into upstream-7-24/204 2024-07-25 00:08:53 -06:00
SkyratBot 2d8cb334d3 [MIRROR] Removes 8 cases of double indentation (#28992)
* Removes 8 cases of double indentation (#85140)

## About The Pull Request

Thanks to Potato (Lemon here) on discord for writing a regex to find
these ``^/.*\).*\n\t\t``

## Changelog
🆑
code: Removed 8 cases of double indentation
/🆑

* Removes 8 cases of double indentation

---------

Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
2024-07-22 22:01:36 +05:30
SmArtKar 77a82d4747 Removes 8 cases of double indentation (#85140)
## About The Pull Request

Thanks to Potato (Lemon here) on discord for writing a regex to find
these ``^/.*\).*\n\t\t``

## Changelog
🆑
code: Removed 8 cases of double indentation
/🆑
2024-07-21 21:57:44 -07:00
Waterpig a3b79bb3b3 Merge branch 'master' of https://github.com/Skyrat-SS13/Skyrat-tg into upstream-2407c 2024-07-15 10:13:59 +02:00
lessthanthree 396b36393c [MIRROR] Incident displays: wallening edition [MDB IGNORE] [NO GBP] (#28784)
* [MIRROR] Incident displays: wallening edition [MDB IGNORE] (#3685)

* Incident displays: wallening edition (#84812)

## About The Pull Request

Redoes the delam/tram incident displays to be wallening compatible.

![image](https://github.com/tgstation/tgstation/assets/83487515/34c4c930-7fe8-4dda-b95a-60d3011cb047)

## Why It's Good For The Game

Looks better, and won't be jank when wallening comes.

## Changelog

🆑 LT3
image: Incident displays got a makeover
/🆑

* Automatic changelog for PR #84812 [ci skip]

* am template

* maps

* Update scram.dm

---------

Co-authored-by: orange man <61334995+comfyorange@users.noreply.github.com>
# Conflicts:
#	_maps/map_files/VoidRaptor/VoidRaptor.dmm
#	modular_skyrat/modules/delam_emergency_stop/code/scram.dm

* Automatic changelog for PR #3685 [ci skip]

* Delam scram counter penalty (#1977)

* penalties for delam scram

* do it in the main check

* max penalty of 16

* reset to 0, shrimple

* reset on activation
# Conflicts:
#	modular_skyrat/modules/delam_emergency_stop/code/scram.dm

* Automatic changelog for PR #1977 [ci skip]

* Update KiloStation.dmm

---------

Co-authored-by: NovaBot <154629622+NovaBot13@users.noreply.github.com>
2024-07-12 09:35:21 +05:30
lessthanthree 3e4721b9d4 Incident displays: wallening edition (#84812)
## About The Pull Request

Redoes the delam/tram incident displays to be wallening compatible.


![image](https://github.com/tgstation/tgstation/assets/83487515/34c4c930-7fe8-4dda-b95a-60d3011cb047)

## Why It's Good For The Game

Looks better, and won't be jank when wallening comes.

## Changelog

🆑 LT3
image: Incident displays got a makeover
/🆑
2024-07-10 22:54:00 -06:00
BurgerLUA e8dee18b1e You can no longer vote for a map if it was the last 2 maps played, or the current map. (#1745)
## About The Pull Request

You can no longer vote for a map if it was the last 2 maps played, or
the current map.

Ie if the map rotation is
Alpha (Current)
Beta (Last)
Charlie (Second Last)

then you can't vote for Alpha, Beta, or Charlie.

## Why It's Good For The Game

Prevents a never-ending cycle of people voting for the same 3 maps. This
is to prevent a spree of people voting for the same 2 maps (cough

## Proof Of Testing

Untested.

## Changelog

🆑 BurgerBB
del: You can no longer vote for a map if it was the last 2 maps played,
or the current map.
/🆑

---------

Co-authored-by: Swift <jackwars4@gmail.com>
Co-authored-by: projectkepler-RU <99981766+projectkepler-ru@users.noreply.github.com>
Co-authored-by: Waterpig <49160555+Majkl-J@users.noreply.github.com>
2024-07-09 16:03:01 +02:00
nevimer ba2b366c7d Storyteller port from horizon [DNM] (#456)
<!-- 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. -->

## About The Pull Request
Ports storyteller from horizon, who deleted their repo. 

### How it works

_Written by Majkl-J_

Basically, the storyteller runs several "Tracks" that slowly fill up
with points. Upon reaching their set limit, an event is chosen and
spawned, and the storyteller takes a somewhat-random amount of points
from that track.


![image](https://github.com/Bubberstation/Bubberstation/assets/49160555/23b6f7ba-4d5a-45dc-9ed6-e88ed02ee019)

In this example, the moderate track will soon spawn an event.

Each track has its own sets of events it can spawn, sorted by intensity
(Roleset is midround and roundstart antags). Every event also has little
tags that the storyteller can be made to prioritize.

As with dynamic, events have a certain weight that determines the chance
they roll. Prioritized events get a multiplier to this weight.


![image](https://github.com/Bubberstation/Bubberstation/assets/49160555/136374ac-feb0-408f-89bf-c862167e2d47)

In this example, we can see some of the tags. Some storytellers can be
made to increase/decrease the weight of these events.

#### Extra stuff it does

Keeps track of med, engineering, and sec players. Whilst this still has
no actual usage, it is good to know it is capable of this.

## Why It's Good For The Game

Storyteller is an alternate event controller, in my opinion, superior to
dynamic.

## Changelog

<!-- 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. -->

🆑 Nevimer, Majkl-J, BurgerBB, Azarak
add: Ported the storyteller event system from horizon
/🆑

<!-- Both 🆑's are required for the changelog to work! You can put
your name to the right of the first 🆑 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. -->

---------

Co-authored-by: The Sharkening <95130227+StrangeWeirdKitten@users.noreply.github.com>
Co-authored-by: iero <>
Co-authored-by: Waterpig <wtryoutube@seznam.cz>
Co-authored-by: Waterpig <49160555+Majkl-J@users.noreply.github.com>
Co-authored-by: Return <donwest947@gmail.com>
Co-authored-by: BurgerLUA <8602857+BurgerLUA@users.noreply.github.com>
2024-06-03 17:24:04 +02:00
SkyratBot 2eac95b7a1 [MIRROR] Adds a small cafeteria behind the right wing shutters of the museum. (#26766)
* Adds a small cafeteria behind the right wing shutters of the museum. (#81465)

## About The Pull Request
I was thinking to contribute something to the new away mission map to
make it better. Mapping and all takes too much time for me, so I could
do little. Though it comes with its own unique gimmicks.

To reach the cafeteria, one has to complete a couple puzzles.
The first set is opened by inputing the correct PIN on the password
panel beside it. There're several clues to help you guess this fairly
easy puzzle, in the form of several number graffitis, a scrapped piece
of paper full of numbers, and a board filled with colored dots also
found just beside the panel.
The second one is opened by a keycard, and is generally lazier. To find
it, you'll need to do a bit of (toilet) searching.

As for the unique things this PR adds:
- A fire extinguisher... that actually contains welding fuel
- A (dirt-cheap) hotdog vending machine*
- A completely ornamental maneki-neko (that's the name of the
luck-bringing, paw-waving cat figurine)
- A piggy bank that carries money between rounds. It has a cap of 10k
credits worth of holochips, cash and coins, which is pretty high, but
I'm confident people will just destroy it for its contents the moment
they find it. His name is Pigston Swinelord VI.
- More, totally legit and not actually fake bombable walls :^)

*By the by, you can also find it during the national hotdog day.

Screenshots of the new location:
![museum
cafe](https://github.com/tgstation/tgstation/assets/42542238/1c0d93b7-90d5-4459-a48d-81430f0d3613)
![museum
restrooms](https://github.com/tgstation/tgstation/assets/42542238/5a9e049d-6acc-464b-998d-901e43154bae)

## Why It's Good For The Game
You know how most away missions are not that special at all? Yeah,
@ mc-oofert set an example of a pretty decent one actually, if not a tad
small. I thought it could use a touch of another mind actually
contributing to it too, because it deserves it.

Also, this sets the basis for other persistent piggy banks. I don't
think they should all have that 10k cap like this one, perhaps 1k is
enough. Beside, the code that mothblocks did for json database datum is
pretty good, so there is not a whole lot of shitcode here.

## Changelog

🆑
add: Added a cafeteria to the museum away mission, with a few special
things to it. To reach it, you'll have to complete a couple puzzles
however.
map: The museum away mission now has a couple restrooms.
add: Hotdog vending machines may spawn during the National Hot Dog Day.
/🆑

* Adds a small cafeteria behind the right wing shutters of the museum.

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2024-03-07 08:53:28 -06:00
Ghom 88bdabe53b Adds a small cafeteria behind the right wing shutters of the museum. (#81465)
## About The Pull Request
I was thinking to contribute something to the new away mission map to
make it better. Mapping and all takes too much time for me, so I could
do little. Though it comes with its own unique gimmicks.

To reach the cafeteria, one has to complete a couple puzzles.
The first set is opened by inputing the correct PIN on the password
panel beside it. There're several clues to help you guess this fairly
easy puzzle, in the form of several number graffitis, a scrapped piece
of paper full of numbers, and a board filled with colored dots also
found just beside the panel.
The second one is opened by a keycard, and is generally lazier. To find
it, you'll need to do a bit of (toilet) searching.

As for the unique things this PR adds:
- A fire extinguisher... that actually contains welding fuel
- A (dirt-cheap) hotdog vending machine*
- A completely ornamental maneki-neko (that's the name of the
luck-bringing, paw-waving cat figurine)
- A piggy bank that carries money between rounds. It has a cap of 10k
credits worth of holochips, cash and coins, which is pretty high, but
I'm confident people will just destroy it for its contents the moment
they find it. His name is Pigston Swinelord VI.
- More, totally legit and not actually fake bombable walls :^)

*By the by, you can also find it during the national hotdog day.

Screenshots of the new location:
![museum
cafe](https://github.com/tgstation/tgstation/assets/42542238/1c0d93b7-90d5-4459-a48d-81430f0d3613)
![museum
restrooms](https://github.com/tgstation/tgstation/assets/42542238/5a9e049d-6acc-464b-998d-901e43154bae)


## Why It's Good For The Game
You know how most away missions are not that special at all? Yeah,
@mc-oofert set an example of a pretty decent one actually, if not a tad
small. I thought it could use a touch of another mind actually
contributing to it too, because it deserves it.

Also, this sets the basis for other persistent piggy banks. I don't
think they should all have that 10k cap like this one, perhaps 1k is
enough. Beside, the code that mothblocks did for json database datum is
pretty good, so there is not a whole lot of shitcode here.

## Changelog

🆑
add: Added a cafeteria to the museum away mission, with a few special
things to it. To reach it, you'll have to complete a couple puzzles
however.
map: The museum away mission now has a couple restrooms.
add: Hotdog vending machines may spawn during the National Hot Dog Day.
/🆑
2024-03-05 18:19:39 -07:00
SkyratBot 3e6edd73ee [MIRROR] Add system for safely manipulating JSON databases and apply it to photo albums and photo frames [MDB IGNORE] (#25887)
* Add system for safely manipulating JSON databases and apply it to photo albums and photo frames (#80519)

We frequently have issues with data loss in our long storage .json files
for various reasons, such as the file being completely blanked out on
write etc.

This introduces a system that tries to safely handle that by saving the
known working json file into a backup that will be loaded in the case a
write fails.

This system queues updates in order to send through to the next tick.
This is an improvement over the existing implementation of photo albums
and photo frames (I think all persistence, even) which do not save until
the end of a properly rebooted round, but not during a server crash.

Also saves the jsons in pretty prints, which make them easier to read
but especially make them easier to diff in a git repository, which MSO
wants to setup (and hopefully make public so I can make a dashboard on
bus.moth.fans for looking at photo albums and their history, which is
something I've wanted to do for a very long time).

## Changelog
🆑
refactor: Photo albums and photo frames are now more resilient to data
loss, especially when a server crashes.
/🆑

* Add system for safely manipulating JSON databases and apply it to photo albums and photo frames

---------

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2023-12-28 08:08:13 -08:00
Mothblocks 36956cf59d Add system for safely manipulating JSON databases and apply it to photo albums and photo frames (#80519)
We frequently have issues with data loss in our long storage .json files
for various reasons, such as the file being completely blanked out on
write etc.

This introduces a system that tries to safely handle that by saving the
known working json file into a backup that will be loaded in the case a
write fails.

This system queues updates in order to send through to the next tick.
This is an improvement over the existing implementation of photo albums
and photo frames (I think all persistence, even) which do not save until
the end of a properly rebooted round, but not during a server crash.

Also saves the jsons in pretty prints, which make them easier to read
but especially make them easier to diff in a git repository, which MSO
wants to setup (and hopefully make public so I can make a dashboard on
bus.moth.fans for looking at photo albums and their history, which is
something I've wanted to do for a very long time).

## Changelog
🆑
refactor: Photo albums and photo frames are now more resilient to data
loss, especially when a server crashes.
/🆑
2023-12-28 15:40:43 +01:00
SkyratBot 6627b1a9c1 [MIRROR] Refactors Parrots into Basic Mobs (ft. Ben10Omintrix/Kobsamobsa) [MDB IGNORE] (#25100)
* Refactors Parrots into Basic Mobs (ft. Ben10Omintrix/Kobsamobsa)

* UpdatePaths

* Modular, cleanup, porting parrot commands into the new system

* makes poly slightly less of a dick

* Update parrot.dm

* Update parrot.dm

* Update tgstation.dme

* Revert "Update tgstation.dme"

This reverts commit a8b40c4aba524c271db02c271089664649dea1eb.

---------

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-11-20 09:57:34 -05:00
san7890 b251b9dbb0 Refactors Parrots into Basic Mobs (ft. Ben10Omintrix/Kobsamobsa) (#79762) 2023-11-18 19:24:32 -08:00
SkyratBot 0a6ee83429 [MIRROR] Split persistence into subfiles [MDB IGNORE] (#24797)
* Split persistence into subfiles

* Skyrat Edits

---------

Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-11-05 05:26:41 -05:00
Tim 3177a8e0ab Split persistence into subfiles (#79290)
## About The Pull Request
Splits the large ass persistence file into a bunch of smaller subfiles.

## Why It's Good For The Game
Better organization.

## Changelog
N/A
2023-11-05 07:45:19 +00:00