Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Upd #72

Merged
merged 108 commits into from
Jan 25, 2024
Merged

Upd #72

merged 108 commits into from
Jan 25, 2024

Conversation

Striders13
Copy link

About The Pull Request

Why It's Good For The Game

Changelog

🆑
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
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:

actions-user and others added 30 commits January 18, 2024 00:21
…gstation#80941)

## About The Pull Request

Situation: areas have a list of all turfs in their area.

Problem: `/area/space` is an area and has a 6 to 7 digit count of turfs
that has to be traversed for every turf we need to remove from it. This
can take multiple byond ticks just to preform this action for a single
space rune

Solution: split the list by zlevel, and only search the right zlevel
list when removing turfs from areas.

replaces `area.get_contained_turfs()` with a few new procs:

* `get_highest_zlevel()` - returns the highest zlevel the area contains
turfs in. useful for use with `get_turfs_by_zlevel`
* `get_turfs_by_zlevel(zlevel)` - returns a list of turfs in the area in
a given zlevel. Useful for code that only cares about a specific zlevel
or changes behavior based on zlevel like lighting init.
* `get_turfs_from_all_zlevels()` - the replacement for
`get_contained_turfs()`, renamed as such so anybody copying/cargo
culting code gets a hint that a zlevel specific version might exist.
Still used in for loops that type checked so byond would do that all at
once
* `get_zlevel_turf_lists()` - returns the area's zlevel lists of lists
but only for non-empty zlevels. very useful for for loops.

The area contents unit test has been rewritten to ensure any improper
data triggers failures or runtimes by not having it use the helpers
above (some of which ensure a list is always returned) and access the
lists directly.
## About The Pull Request
time2text was receiving seconds but is supposed to receive deciseconds
## Changelog
:cl:
fix: Hub time should be correct again
/:cl:
## About The Pull Request
fixes a runtime when trying to unregister the move signal from the ghost

## Why It's Good For The Game
fix a runtime when loading ghosts to a mulebot

## Changelog
:cl:
fix: fix a runtime when loading ghosts to a mulebot
/:cl:
## About The Pull Request

Changes the monkey's ai_movement from dumb movement to basic_avoidance,
allowing them to walk around tables and corners that they always
otherwise got stuck in.


https://github.com/tgstation/tgstation/assets/26240645/e1b46790-b950-4030-a9ae-4cf10913166c
Original monkey behavior


https://github.com/tgstation/tgstation/assets/26240645/e08a4094-8c81-41f6-8960-61338d38fff9
New monkey behavior

## Why It's Good For The Game

Monkeys can properly fight you without nearly constantly getting stuck
behind anything with collision.
## Changelog
:cl:
fix: Monkeys don't get stuck on obstacles as often.
/:cl:
## About The Pull Request

Nukies were using ``get_machines_by_type`` in ``assign_nuke`` to get the
nuke and set its code, which doesn't work for clown ops because they use
a subtype. This fixes it by replacing it with
``get_machines_by_type_and_subtypes`` instead.
while I was messing with clown op code I also made it a little bit less
copy paste


![image](https://github.com/tgstation/tgstation/assets/53777086/2db9e859-8d53-4704-a110-7f8a5f33ee0f)

## Why It's Good For The Game

Clown ops now get a code to their nuke rather than it staying as
'ADMIN', pretty cool!

Closes tgstation#78306

## Changelog

:cl: Momo8289, Pepsilawn, Sinsinins, JohnFulpWillard
fix: Clown ops now get a code set for their nuke.
/:cl:
## About The Pull Request
fixes megafauna AI getting stuck attacking legion corpses

## Why It's Good For The Game
fixes tgstation#79757


## Changelog
:cl:
fix: fixes megafauna AI getting stuck attacking some corpses
/:cl:
## About The Pull Request

Looks like a refactor forgot to retain the living_say verb for
whispering in italics when they moved it to the radio file


![image](https://github.com/tgstation/tgstation/assets/22140677/bd490568-ce30-42f3-bb9f-17ae345c6cb0)

This just fixes that so whispering once again formats

![image](https://github.com/tgstation/tgstation/assets/22140677/a5dde3f2-5a18-4f8d-837d-e158a597eddb)



## Why It's Good For The Game
## Changelog
:cl:
fix: fixes whispering formatting
/:cl:
## About The Pull Request

Fixes tgstation#81009.

Trash bags did not have a `worn_icon_state` set, which means that it
tried to use an invalid state when worn while not empty. This is now
fixed.
## Why It's Good For The Game

Missing sprites bad.
## Changelog
:cl:
fix: Filled trash bags show up properly when worn.
/:cl:
…getting their amulettes (tgstation#80981)

## About The Pull Request
Lunatics now have an objective and it properly displays. 
Lunatics now get a moonlight amulette on the ground if their hand are
full.
## Why It's Good For The Game
Lunatics had no idea who their master was except for their flavor text.
This made it kinda confusing. This was worsened when they didnt have the
identifying amulette.
## Changelog
:cl:
fix: Lunatics spawned from moon ascension now actually have an objective
to assist their ringleader
fix: Lunatics now get a moonlight amulette on the ground if they have
full hands
/:cl:

---------

Co-authored-by: Ghom <[email protected]>
## About The Pull Request

Fix items layering above heretic runes by making it use pixel_z rather
than pixel_y.


![image](https://github.com/tgstation/tgstation/assets/51863163/302d60df-cf4e-4a0d-b00e-7d6e42fb741a)

## Changelog

:cl: Melbert
fix: Items and mobs no longer hide behind big runes (heretic, cult,
wizard)
/:cl:
## About The Pull Request

Fixes emitter prototype button being unreachable because it makes you
immobile upon buckling to it, but requires you to be mobile to use.
Fixes emitter prototype's open icon state being invisible
Fixes emitters reverting icon state despite having an open panel

## Why It's Good For The Game

Prototype emitters being broken and invisible was brought to my
attention in discord, I found the last bug accidentally so fixed that
one too.
I can't find any issue report on these, but these bugs do exist trust me
bro I promise.

## Changelog

:cl:
fix: Prototype emitters now work.
fix: Prototype emitters don't go invisible if screwdriver'd open.
fix: Emitters no longer show up as their panel being closed when it is
open.
/:cl:
)

## About The Pull Request

Pass `dismembered = TRUE` when calling `drop_limb` from `dismember`. 

At a glance I don't think anything actually checked `dismembered`,
making this do (practically) nothing,
however I was writing some code that actually relied on checking this
only to find it was always passed as `null`.

I also audited some signal usages of dismember / drop limb to make sure
they're correct.

## Changelog

I don't think this will affect anything at current.
…tion#80845)

## About The Pull Request

Yello!
This one is reasonably quick, tho I did some fixes too

This is the big one, fixes the buildmode tool sometimes locking disabled
for the whole round.
We do this by replacing the static var on buildmode with global var and
a global proc
This keeps a harddel on the buildmode datum from permalocking is_running
to TRUE

Also makes flipping the var BACK if something breaks significantly
easier for admins, so that's nice

Alright, smaller things now

Fixes lists of numbers failing to encoded improperly This was fixed on
shiptest, we failed to actually port their most recent revision
Fixes the shuttle flag not actually working because it used istype
instead of ispath
Changes obj_blacklist to a typecache for optimization's sake
Renames/moves some vars around to prevent weird double typing things
Removes a checktick in key gen, it's just costing more time then it
would save in overtime
Properly handles lists. We were only doing var encoding one layer deep,
need to do it alll the way down

Alright, now the optimizations

This proc is fucking HOT, and it's for really dumb reasons

This is a text gen proc, and it makes the mistake of generating text and
concatinating it with MORE text.
This is HORRIFICALLY EXPENSIVE because byond caches strings (can only be
one of each) and string churn fucks up that caching system something
fierce
Moving from strings to lists of strings we join at the end takes us from
like idk 100 seconds to save bare metastation to like 1.5
This is applied basically everywhere for obvious reasons

While I'm here, storing keys in a flat list and then using find to find
them, then using that index to lookup into another flat list is a bit
silly. Let's just make it an assoc list. Faster lookup, cleaner.

Oh also rather then iterating over all the vars on an object, let's
iterate over just the ones we care about yeah?

Let's see... no sense genning a key we'll never use, and having suffixes
be often non existent is silly just embrace the slight mess.

That's it I think, this takes us from 100 seconds to save metastation to
2.5 seconds to save ALL of metastation (I removed the vars limiter so I
could make sure var saving didn't fuck me up)

## Why It's Good For The Game

Cleans up some issues that we failed to port the fixes for, MASSIVELY
optimizes this (so it can finish in like 5/10 seconds and not 300!) and
ensures admins can always use the thing and don't risk dropping their
pet buildastation to the void.

Worth noting, this tool really should not be used for station mapping
outside an event context. It produces sorta buggy var edits, and WILL
fail to pull over context for shit. Please don't use it as such

Profiles (csv files I promise)

[Before](https://github.com/tgstation/tgstation/files/13853313/profiler.json)

[After](https://github.com/tgstation/tgstation/files/13853271/profiler.json)

I'd include my line by lines but I don't know how much you'd get out of
them. Here's an image tho


![image](https://github.com/tgstation/tgstation/assets/58055496/3f3148c5-8b1e-4bda-aa65-3983f9944a91)

## Changelog
:cl:
fix: The map saving tool will no longer lock up and prevent all further
action at random
fix: Map saving now takes on the order of seconds, not minutes
fix: Fixes an issue with lists that caused strongdmm to report saved
maps as broken
/:cl:
…ing in some existing ones (tgstation#81005)

## About The Pull Request

This adds some missing shuttle prerequisite messages, and slightly
modifies some existing ones.

I just wanted to add the missing ones in, but the vague or unclear
language in the other ones was also kind of bothering me. Specifically,
the uncertain "might"s and "may"s used in certain messages felt off to
me, and have been changed to more direct "must"s and "will"s. Certain
prereqs have also been made slightly more clear on what needs doing.
## Why It's Good For The Game

Makes things more clear to players! 

I really hope grammar PRs aren't a violation of the freeze. Adding in
the missing prereqs constitutes a "fix" in my eyes.
## Changelog
:cl: Rhials
spellcheck: Modifies some existing Emergency Shuttle prerequisite
messages, and adds some missing ones.
/:cl:
lessthnthree and others added 28 commits January 23, 2024 20:16
## About The Pull Request

Fixes adding HTML in the OOC announce proc, updates the proc
documentation that the argument is for escaping HTML, not enabling it

## Why It's Good For The Game

Admins sometimes want to put links or images in the server announcement

## Changelog

:cl: LT3
fix: Server announcements again no longer escape HTML by default
/:cl:
## About The Pull Request

Another hard del caught by CI.


![firefox_3t97E6Nxm4](https://github.com/tgstation/tgstation/assets/13398309/398d12a2-8f90-4593-b5de-ffd37c744407)

## Why It's Good For The Game

Bugfix

## Changelog
Not player-facing.

---------

Co-authored-by: Ghom <[email protected]>
## About The Pull Request

Fixes tgstation#81014 where you can
interact with medical beds while incapacitated.

## Changelog

:cl: LT3
fix: You can no longer interact with medical beds while incapacitated
/:cl:

---------

Co-authored-by: san7890 <[email protected]>
## About The Pull Request
Fixes this

![Screenshot
(384)](https://github.com/tgstation/tgstation/assets/110812394/2ec17f1d-e69b-400a-a8ab-47c205af56ed)


## Changelog
:cl:
fix: fixes runtime when mineral scanning, passes right argument for
scanner in golem eyes
/:cl:
## About The Pull Request

Due to a misplaced multiplier, arcmining machines were eating their own
point totals.
Now, the refinery and smelter should correctly only take the
MINING_POINT_MACHINE_MULTIPLIER define on the amount being added to the
points held, not on the total resting in the machine.

## Why It's Good For The Game

Simple, easy fix.
Fixes tgstation#81057.

## Changelog

:cl:
fix: The smelter and refinery now properly hold mining points, only
taking a small amount out of net gained points.
/:cl:

---------

Co-authored-by: SyncIt21 <[email protected]>
…ion#81069)

## About The Pull Request

What it says on the tin. It also affects the psychic projection ability,
since it seemed to suffer from the same problem.
It's an odd interaction, and seems to be the fault of the wave filter.
If the blur filter is applied after it, it seems to try and center
itself at a certain point of the wave which may not be aligned with the
center of the screen.
(Adding an initial offset to the wave filter makes the blur be
misalligned both horizontally *and* vertically, so it seems to try and
place itself at the initial position of the wave?)
<details>
<summary> Pictured here with 0.5 offset</summary>


![image](https://github.com/tgstation/tgstation/assets/80640114/60a850bd-8893-4054-8f1f-f389187e37a2)

</details>

One way or another, applying the blur filter before the wave filter
keeps it nice and centered.

![image](https://github.com/tgstation/tgstation/assets/80640114/2760b9f2-11a3-484d-9a61-36f8defd43b9)
## Why It's Good For The Game

Closes tgstation#81004
## Changelog
:cl:
fix: the blur effects for hallucinogenic withdrawal and psychic
projection are now properly centered on the screen
/:cl:
## About The Pull Request

Stock market events are a system coded into the stock market system in
an attempt to keep the stocks unpredictable, at least on paper. They...
need work, I'm in full agreement on that, but I haven't been able to get
the energy to really fix stocks as of recently. I plan on going and
kicking events up and making them a lot cooler, but in the meantime,
I've refactored stock market events into their own datum type,
`/datum/stock_market_event`. This works like most similar event datum
style objects, where an event has a proc called when an event starts, a
proc called when an event ends, and a proc called between on subsequent
stock market subsystem firings.

This does some minor tweaks to the newscaster stories automatically
generated after an event fires, namely so that they can be produced
quickly while emphasizing the important part of the event, what material
is being effected, and a summary of what kind of behavior has happened
to the material stock.

Additionally, this made for a good excuse to do some code cleanup here
while I had the opportunity, swapping to `::` as opposed to `initial()`
calls where it seemed cleaner and more appropriate. This should make
adding new stock market events as well as more unique events that can
effect cargo and the round at large simple to do.

This PR shouldn't have any mechanical changes to how stock market
behaves in a live round.

## Why It's Good For The Game

Improves code quality of stock market, increases readability of stock
market events that have happened on the newscaster, and performs some
minor cleanup to the TGUI for the stock market while I'm at it, all
while keeping balance the same while we're still in the feature freeze.

Full disclosure, once the freeze is over I have some pretty easy numbers
tweaks planned to help significantly improve the stock market system
that I had layered on this branch, but we've shuttled them off this PR
for now to get this part ready to ship.

## Changelog

:cl:
refactor: Stock market events are now their own objects, and are handled
by the stock market individually.
/:cl:

---------

Co-authored-by: MrMelbert <[email protected]>
Co-authored-by: Ghom <[email protected]>
## About The Pull Request

The first argument of `translate_language` is the speaker, not the
hearer.

## Changelog

Has no effect currently
## About The Pull Request

Fixes tgstation#81013 RPG titles
having incorrect alignment


![image](https://github.com/tgstation/tgstation/assets/83487515/3be96289-f74a-4463-9e68-69cc450110ed)

## Changelog

:cl: LT3
fix: Fixed alignment of RPG titles
/:cl:
## About The Pull Request

`///Checks if the user is incapacitated or on cooldown.`.

Adds the "or on cooldown" part of the proc into the proc. 

## Changelog

:cl: Melbert
fix: Click CD applies to looking up and down correctly. 
/:cl:
…ssociating with mobs when already associated (tgstation#81065)

## About The Pull Request

- Adds a stack trace for law datums associating with mobs when already
associated.
- From what I can tell, any situation in which a law datum is attempting
to associate with another mob when it already has an owner assigned is
an error. So this might help track down similar bugs in the future.
- Fixes a hard delete involving AI laws. 
- When a malf AI occupies an APC, it creates an APC copy of the AI. This
is an entirely separate mob.
- In creating this copy, it uses the malf AI's current laws for the new
copy's laws. Exactly. The same datum.
- So the copy attempts to associate with the datum, and nothing happens,
but it still assigns it to the copy's laws var.
- When the AI attempts to return to their core from the APC, it deletes
the copy. Which deletes the law datum, which our main Ai still has a
reference too, so hard delete. Womp womp.
- I fixed this by implementing a new proc, `copy_lawset`. The APC copy
now gets a copy of the laws when the shunt happens.
- This is imperfect, as they are two separate law datums now, it means
any law changes to the first will not directly affect the second... I
think. The whole "parent" AI system should cover this in theory? But I
don't know if it actually does? It's quite confusing.
- We should really codify methods of linking lawsets together rather
than the hackiness that cyborgs do currently.

## Changelog

:cl: Melbert
fix: Fixed AIs who shunt to APCs causing their laws to be deleted. 
/:cl:
## About The Pull Request
Fixes tgstation#81022 
The original idea was for kidnapping victims to be returned to the same
area they were kidnapped from (dropoff_area), but this was always a
typepath to an area and not a datum reference (and was set to null
immediately after kidnapping with ungenerate_objective()) and it always
fell back to the get_safe_random_station_turf() method. This worked fine
until tgstation#80644 attempted to optimize it, causing a runtime and returning
early.

This removes the code to return them to the same area and instead just
uses get_safe_random_station_turf(), runtime-free.
## Why It's Good For The Game
Kidnapping victims now actually return to the station after 3 minutes
with their stuff. I think returning to a random area is cooler than the
same area they were sent from anyways, I can imagine a traitor just
waiting it out if they wanted them dead and unable to snitch.
## Changelog
:cl:
fix: Kidnapping traitor objective now properly returns the victim to the
station with their items
/:cl:
## About The Pull Request

Makes the dropdown of the category being searched actually display text
rather than being a very small box between two text boxes.

Before

![image](https://github.com/tgstation/tgstation/assets/53777086/35ebdc71-b5fa-4ced-9ab2-18564ed805a4)
After

![image](https://github.com/tgstation/tgstation/assets/53777086/d94a08e4-7a47-478c-9820-bd05a95ced57)

## Why It's Good For The Game

Searching in the library became a little bit better.

## Changelog

:cl:
fix: The library console's category search box now displays the category
being searched.
/:cl:
…1066)

<!-- 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
I moved the bit that says:
ADMIN: guy started hardcore random with cancer, for a score of 2
into game.log

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

## Why It's Good For The Game
I don't see why this wound up in Admin.log. Doesn't contain any admin
info, relate to actions done by admins, etc.
<!-- 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. -->

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


<!-- 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. -->
@Striders13 Striders13 merged commit 0b9279c into Huz2e:master Jan 25, 2024
5 of 18 checks passed
@Striders13 Striders13 deleted the upd branch May 20, 2024 18:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.