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

Buget cuts #2942

Merged
merged 59 commits into from
Sep 15, 2024
Merged

Buget cuts #2942

merged 59 commits into from
Sep 15, 2024

Conversation

wraith-54321
Copy link
Collaborator

@wraith-54321 wraith-54321 commented Aug 14, 2024

About The Pull Request

Ports:

Why It's Good For The Game

Changelog

🆑 Comxy, Fikou, lessthnthree, Rhials, Ghommie, MrMelbert, IndieanaJones, san7890, Holoo-1, PKPenguin321, larentoun, Das15, carlarctg, Jacquerel, JohnFulpWillard
add: Wizards can now purchase mirror shields
add: The Fireball spell in wizards spellbooks has been replaced with Fire Ball
balance: The magical chem sprayed now comes with a bio suit and wizard combat gloves
balance: The wizard MODsuit shield has been reworked and now costs 1
fix: spell cards work again
/:cl:

wraith-54321 and others added 6 commits August 15, 2024 00:13
Mutate prev = 40 / 37.5 / 35 / 32.5 / 30
Mutate now = 40 / 35 / 30

Spell cards prev = 6 / 5 / 4 / 3 / 2
Spell cards now = 6 / 4 / 2

Teleport prev = 60 / 50 / 40 / 30 / 20
Teleport now = 60 / 40 / 20

Shape change prev = 20 / 16.75 / 12.5 / 8.75 / 5
Shape change now = 20 / 12 / 4

Swap prev = 30 / 24 / 18 / 12 / 6
Swap now = 25 / 15 / 5

I also deleted the invocation for swap to make it more usable. When I
added the spell I thought it would be used more but I have never seen it
been used.
For a lot of spells it seems like it is useless to upgrade them, since
it costs a lot but does little in a lot of cases. Maybe this goes for
more spells than my pr changes but I wanted how this comes over first. I
rather do not do balance changes since it ruins my gbp even though I am
trying to improve the game but I still thought this was worth it since
it might also make the swap spell more relevant.
:cl:
balance: Changes some cooldowns and upgrades of spells.
/:cl:
## About The Pull Request
apparently vis x and vis y dont exist unless the object is transformed

## Changelog
:cl:
fix: sniper scope and kinesis should work without widescreen
/:cl:
Rhials and others added 2 commits August 15, 2024 06:17
drone_hat defined a piece of headwear that drones would spawn with when
the corresponding holiday is active. While peeking at holiday code for
my own amusement, I noticed that it wasn't actually used anywhere and
must have become deprecated at some point. I have re-implemented that
functionality, and extended it to assistants.

Now, all drones/assistants spawning without headwear during a holiday
will receive the holiday's defined holiday_hat (if there is one). This
modifies a few of the holiday_hat entries, particularly the mask entries
since the new system is head-only, and adds a few more in there as well.

![image](https://github.com/tgstation/tgstation/assets/28870487/f44d8499-957c-4b71-843b-26ab77f46ff4)

There's probably some balance implications to, say, spawning all the
assistants with fire helmets or pirate bandanas, but I see that as being
balanced out by the infrequency of these cases.

Restores an piece of drone code that fell off the wagon somewhere
amongst the removals and reworks.

As for implementing it for assistants, seeing assistants in funny hats
makes me laugh a lil bit :)
:cl: Rhials
qol: Restores holiday hats for drones.
qol: Extends holiday hat behavior to assistants. Get festive!
/:cl:
Inspired by #79108. This concerns Christmas, many national holidays and
a few gimmicky ones where it'd make sense.

Oh, yeah, I've also added "Sacrebleu" to the list of possible station
prefixes for the Bastille day, since "Merde" is already there.

<details>
<summary>some screenshots (got tired of restarting the server over and
over halfway through)</summary>

![Booze Complex Fifty-Four 2023-03-17
090724](https://github.com/tgstation/tgstation/assets/42542238/c09e6c3d-8fab-45d6-802e-13687e83b9a7)

![Merde Tomb Seventeen 2023-07-14
084422](https://github.com/tgstation/tgstation/assets/42542238/045f7c32-9a17-4e24-9d33-c51596e348e6)

**No, it isn't the french flag again, it's the tram tiles that always
display the pattern in vertical stripes...**
![Southern Cross Outpost 39 2023-02-06
012622](https://github.com/tgstation/tgstation/assets/42542238/f6e24875-35b0-4b03-a4f8-72f8d976005d)

removed the white) :
![Festive Space-hulk XLIII 2023-12-25
013720](https://github.com/tgstation/tgstation/assets/42542238/8328ff54-88d9-4be6-9d5e-773fbba7046c)
</details>

Implemeting a smidge of festivity and/or celebration to several
holidays. Open to suggestions and thoughts.

:cl:
image: Several holidays now have themed floor and tram tiling.
/:cl:
MrMelbert and others added 5 commits August 15, 2024 22:17
Alternative to / closes #77069

Their PR reminded me I wanted to de-hardcode this list at some point and
make it rely on a flag set on the jobs. So this pr does that.

I also made a combination flag of the flags copied across all station
jobs. Makes it easier to see at a glance which jobs have a unique flag
set and which are just copied across everything.

Makes it more maintainable for future us / downstreams to add new jobs
which may potentially be in this blacklist.

:cl: Melbert
fix: Prisoner slots can no longer be controlled by Plexagon HR Core.
(special things to distributivgesetz)
fix: HoPs can open more assistant job slots if a non-assistant job is
the overflow role
code: Dehardcode the HR core blacklist for jobs which cannot have more
slots opened by the HoP
/:cl:
…Click` (#82236)

Fixes #76495

This PR prevents (most) screen elements from running base
`/atom/proc/Click` and `/mob/proc/ClickOn()` when clickend.

(The only exception I found to it was the cursor catcher for scopes.)

Why?
Most, if not everything in `ClickOn` is considered "in world"
interacting. It abides by `incapacitated`, runs `faceAtom`, etc.
This means, currently, you can "interact" with screen elements using in
world elements. For example, TK-ing / pointing a gun at your mood face.

Right now this affects very little, but there is a large potential for
errors. All you have to do is forget a sanity check in `afterattack` and
suddenly you have an item that can affect your screen objects.
The only example I found was the `/item/godstaff`, which can color some
of your screen elements. But there may be more. Like guns.

Note:
Many, many screen elements ALREADY do not fall down into atom click.
They simply don't call parent. Which is totally fine.
I am just ensuring ALL* screen elements do not fall down into atom
click.

:cl: Melbert
fix: Blocks mobs from trying to "physically" interact with some of their
hud elements, such as using Telekinesis or point a gun at your mood
meter.
/:cl:
…t) (Bonus Useless Code Cleanup) (#79389)

The way we add multiple actions has been very unstandardized, with
several implementations of this code doing certain things wrongly (i.e.
not nullchecking `ai_controller`), so let's do something in the vein of
cases. There are still a few things that simply can't be done here, but
this gets the most generic "give my mob some actions and also maybe tell
the AI about it" stuff done.

This is only useful in cases where we don't ever need to reference the
ability ever again when it's added. In an ideal world we would never
need to reference the ability again and it would all be self-contained,
but this is not an ideal world. However, a lot of the latticework has
been built around certain implementations of this behavior making
refactoring it just a bit easier.

I also did a lot of auditing on `Destroy()` stuff, because
`/datum/action`s listen to signals when their parent is `qdel`ing, so we
don't need to neither hold nor clear references on our mob's
`Destroy()`. This was all cleaned up now because even if we couldn't use
`grant_multiple_actions()` (the new proc I add in this PR), it's just
not useful at all and will further hinder efforts to implement this new
proc.

Also also, I noticed in some places (such as megafauna) that we were
initializing a lot of datum actions _in nullspace_. We didn't pass the
`src` argument to `New()`. I quickly fixed that, as well as got rid of
the useless types we had going on.

Also also also, I added a define macro to handle some of the cases that
melbert was speaking about in his review down below. All you need to do
is invoke the define on the typepath, and you should be good to go from
there. There's probably a better way to do it, lmk though. we do the
whole `do while` thing in order to prevent code leakages.

* Very easy to change the implementation. In case we need to do
something different in how we add actions or anything like that, we can
simply just edit instances where this proc is located.
* Standardizes addition behavior. There's a lot of cases like the
aforementioned not-null-checking `ai_controller` that we really need to
look out for, so having it all in one accessible proc ensures standard
behavior.
* Reduces copy-pasta. A lot of mobs had their own individual
implementation of this, so let's just clean up all those lines of code.
:cl:
refactor: The way mobs get specialized actions (like revenants shocking
lights or regal rats summoning rats to their side when you slap them)
have been modified, please report any bugs.
/:cl:

This doesn't touch the following case FTR:
* Instances where we need to do work on the `/datum/action` after we
`Grant()` it, like if we were to edit some variable on the action or if
we need to call procs on said action. I don't like how the current code
is so reliant on storing a variable to it, but that's a windmill to
attack another time.
…(#78743)

Adds 'Bloody Spreader' component that bloodies everything it touches!

For example inserting an item into it if it is a storage item. Or
entering it if it's a turf, or bumping onto it, or... you get the point,
hopefully.

Added this component to the MEAT backpack, meat slabs, bouncy castles,
meateor fluff, meateor heart, and the heretic sanguine blade.

Gave most of these the blood walk component as well, which spreads blood
if it's dragged around.

Meat slabs contain a limited amount of both components, eventually they
will 'dry out'.

Meat isn't meaty and squelchy enough, this will make it meatier. It also
makes the janitor suffer.
:cl:
code: Adds 'Bloody Spreader' component that bloodies everything it
touches!
code: For example inserting an item into it if it is a storage item. Or
entering it if it's a turf, or bumping onto it, or... you get the point,
hopefully.
add: Added this component to the MEAT backpack, meat slabs, bouncy
castles, meateor fluff, meateor heart, and the heretic sanguine blade.
add: Gave most of these the blood walk component as well, which spreads
blood if it's dragged around.
add: Meat slabs contain a limited amount of both components, eventually
they will 'dry out'.
code: Added a signal for when an item is entered into storage.
/:cl:
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.