## About The Pull Request
This is the first PR in a series attempting to modernize our damage and
armor, both from a code and a gameplay perspective. This part implements
unique attack animations, adds alternate attack modes for items and
fixes some minor oversights.
Items now have unique attack animation based on their sharpness - sharp
items are now swung in an arc, while pointy items are thrust forward.
This change is ***purely visual***, this is not swing combat. (However,
this does assign icon rotation data to many items, which should help
swing combat later down the line).
Certain items like knives and swords now have secondary attacks - right
clicks will perform stabbing attacks instead of slashing for a chance to
leave piercing wounds, albeit with slightly lower damage - trying to
stick a katana through someone won't get you very far!
https://github.com/user-attachments/assets/1f92bbcd-9aa1-482f-bc26-5e84fe2a07e1
Turns out that spears acted as oversized knives this entire time, being
SHARP_EDGED instead of SHARP_POINTY - in order for their animations to
make sense, they're now once again pointy (according to comment,
originally they were made sharp because piercing wounds weren't very
threatening, which is no longer the case)
Another major change is that structure damage is now influenced by armor
penetration - I am not sure if this is intentional or not, but attacking
item's AP never applied to non-mob damage.
Additionally, also fixes an issue where attack verbs for you and
everyone else may differ.
## About The Pull Request
In my effort to make the /icons/ folder cleaner and more intuitive
instead of having to rely on recalling names of stuff and looking them
up in code to find them for poor sods such as myself, plus in spurt of
complusion to organize stuff, here goes. I've tracked all changes in
commit descriptions. A lot still to be done, but I know these waves go
over dozens of files making things slow, so went lighter on it.
Destroyed useless impostor files taking up space and cleaned a stray
pixel on my way.
## Why It's Good For The Game
Cleaner /icons/ file means saner spriters, less time spent. Stray pixels
and impostor files (ones which are copies of actually used ones
elsewhere) are not good.
## Changelog
🆑
image: Cleaned a single stray pixel in a single frame of a bite
telegraphing accidentaly found while re-organizing the files.
/🆑
## About The Pull Request
Implements half of this (with some minor changes):

The ultimate goal of this is to split our attack chain in two:
- One for non-combat item interactions
- Health analyzer scanning
- using tools on stuff
- surgery
- Niche other interactions
- One for combat attacking
- Item hit thing, item deal damage.
- Special effects on attack would go here.
This PR begins this by broadining tool act into item interact.
Item interact is a catch-all proc ran at the beginning of attack chain,
before `pre_attack` and such, that handles the first part of the chain.
This allows us to easily catch item interaction and cancel the attack
part of the chain by using deliberate bitflag return values, rather than
`TRUE` / `FALSE`*.
*Because right now, `TRUE` = `cancel attack`, no matter what, which is
unclear to people.
Instead of moving as much as possible to the new proc in this PR, I
started by doing some easy, obvious things. More things can be moved in
the future, or technically they don't even need to move in a lot of
cases.
## Changelog
🆑 Melbert
refactor: Refactored some methods of items interacting with other
objects or mobs, such as surgery and health analzyers. Report if
anything seems wrong
/🆑
## About The Pull Request
For the hard-working tradesperson who's in the middle of nowhere and
just wants to warm up their pastry-based savoury item purchased from an
overpriced vending machine, introduces the engineer themed wireless
microwave.
No more going hungry in a pinch, this variant uses changeable power
cells instead of APC power. Can be built normally or printed with a
furnishings-upgraded RCD.
The other upgrade now available: PDA charging. Upgrade the capacitors in
the microwave to add a Charge mode for your portable device!
Also cleans up microwave code a bit and adds much needed context hints
for when it's broken, dirty, etc.
Swaps a few break room microwaves to upgraded variants on mapload, adds
a microwave/donks to Birdshot, donks to Tramstation.
## Why It's Good For The Game
Slap together a semi-portable microwave with your components on hand,
have an engineering picnic in space or wherever else the day takes you.
With increased PDA drain, adding another option to charge your PDA in
common areas is useful. Microwaves are already strategically placed
around the station. Please ensure the model you're using has the
charging feature before operating.


## Changelog
🆑 LT3
add: Introducing Nanotrasen Wave! A Nanotrasen exclusive, Waveallows
your PDA to be charged wirelessly through microwave frequencies. You can
Wave-charge your device by placing it inside a compatible microwave and
selecting the charge mode.
add: Microwaves can be upgraded to add wireless charging
add: Cell-swappable microwave for the engineer on-the-go
add: Microwave now has a wire to swap charge/cook modes
add: Furnishings RCD upgrade now includes wireless microwave
add: Tramstation and Birdshot engineering break rooms now have microwave
and donk pockets. Some microwaves come pre-equipped with wireless
charging and an upgraded cell.
fix: The microwave in the snowdin ruin is now real, not a fluff prop
/🆑
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
## About The Pull Request
Further continous organizing and cleaning the Icons folder. There are
still some minior nitpicks left to do, but I reached my daily sanity
expenses limit again, and the faster these get in the less issues for
both me and others later. Also cleans some mess I caused by my blindness
last PR.
## Why It's Good For The Game
Saner spriters = better sprites
## About The Pull Request
Due to a mental breakdown caused by unfathomable abomination that is
icons folder, I swore to myself to one day clean it. Today is kind of
that day. Been at it for around 6, you gotta understand I need a rest. I
tracked most changes in descriptions of commits if you are looking for
details.
## Why It's Good For The Game
Saner spriters make better sprites. And also, just helps keep track of
things.
## Changelog
🆑
image: added sprites for different variants of scrolls.
image: modified couple posters with ghost pixels.
/🆑
---------
Co-authored-by: OrionTheFox <76465278+OrionTheFox@users.noreply.github.com>
## About The Pull Request
This sprite file had been a dumping ground for miscellaneous sprites for
the past decade. It's bloated and full of random kinds of icons and even
has a few unused ones. It's time to reorganize them into their own
separate dmi's based on theme.
## Why It's Good For The Game
Better organization and easier access when looking for stuff.
## Changelog
🆑
imageadd: Split all icons in weapons_and_items.dmi to their own
categories
imagedel: Removed some unused icons
/🆑
# MAINTAINER - USE THE BUTTON THAT SAYS "MERGE MASTER" THEN SET THE PR
TO AUTO-MERGE! IT'S MUCH EASIER FOR ME TO FIX THINGS BEFORE THEY SKEW
RATHER THAN AFTER THE FACT.
## About The Pull Request
Hey there,
This took a while to do, but here's the gist:
Python file now regexes every file in `/code` except for those that have
some valid reason to be tacking on more global defines. Some of those
reasons are simply just that I don't have the time right now (doing what
you see in this PR took a few hours) to refactor and parse what should
belong and what should be thrown out. For the time being though, this PR
will at least _halt_ people making the mistake of not `#undef`ing any
files they `#define` "locally", or within the scope of a file.
Most people forget to do this and this leads to a lot of mess later on
due to how many variables can be unmanaged on the global level. I've
made this mistake, you've made this mistake, it's a common thing. Let's
automatically check for it so it can be fixed no-stress.
Scenarios this PR corrects:
* Forgetting to undef a define but undeffing others.
* Not undeffing any defines in your file.
* Earmarking a define as a "file local" define, but not defining it.
* Having a define be a "file local" define, but having it be used
elsewhere.
* Having a "local" define not even be in the file that it only shows up
in.
* Having a completely unused define*
(* I kept some of these because they seemed important... Others were
junked.)
## Why It's Good For The Game
If you wanna use it across multiple files, no reason to not make it a
global define (maybe there's a few reasons but let's assume that this is
the 95% case).
Let me know if you don't like how I re-arranged some of the defines and
how you'd rather see it be implemented, and I'd be happy to do that.
This was mostly just "eh does it need it or not" sorta stuff.
I used a pretty cool way to detect if we should use the standardized
GitHub "error" output, you can see the results of that here
https://github.com/san7890/bruhstation/actions/runs/4549766579/jobs/8022186846#step:7:792
## Changelog
Nothing that really concerns players.
(I fixed up all this stuff using vscode, no regexes beyond what you see
in the python script. sorry downstreams)
## About The Pull Request
### Refactor
Pirate gangs are now datumized for extendability, custom dialogue, etc.
### Psyker Gang 🧠
Psyker-gang Members are pirates who are... yes, Psykers. They're on a
gore-binge and need some money for more hits of gore!
- Gore autoinjectors, filled with dirty kronkaine. Don't overdose,
you'll go splat.
- Psykerboost armor, reactive armor that refreshes psychic abilities.
Given to the leader.
- [x] @Fikou is making the map :D
## Why It's Good For The Game
God I fucking love variety also now we can add as many different pirates
as we so desire
<details>
<summary>Spoiler warning</summary>

</details>
## Changelog
🆑 Tralezab code, Fikou's map, PigeonVerde and Halcyon for sprites!
add: Psyker-gangers are new pirates
refactor: refactored pirate code so we can add more in the future
/🆑
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
About The Pull Request
Reorganizes the entire icons/mob folder.
Added the following new subfolders:
nonhuman-player (this was initially just called "antag", but then I realized guardians aren't technically antags)
simplemob
silicon
effects (for bloodstains, fire, etc)
simplemob/held-pets (for exactly that -- I wasn't sure if this should go in inhands instead)
species/monkey
Moves the following stuff:
All human parts moved into species, with moth, lizard, monkey, etc parts moved to corresponding subfolders. Previously, there were some moth parts in mob/species/moth, and others just loose in mob. Other species were similar.
icemoon, lavaland, and jungle folders made into subfolders of simplemob
All AI and silicon stuff, as well as Beepsky et al. into the silicon folder, simplemobs into the simplemob folder, aliens into the nonhuman-player folder, etc.
Split up animal_parts.dmi into two bodyparts.dmi which were put in their respective folders (species/alien and species/monkey)
Code changes:
Filepath changes to account for all of this
Adds a check when performing surgery on monkeys and xenos, because we can no longer assume their limbs are in the same file
Turns some hardcoded statues and showcases that were built into maps into objects instead
Things I'd like to do in the future but cant be assed right now:
Remove primarily-antag sprites from simplemob/mob.dmi (Revenant, Morph, etc.) and put them in the nonhuman-player folder
Split up mutant_bodyparts.dmi into different files for Tizirans, Felinids, monkeys, etc and put them in their own folders. Those may have once been meant primarily for mutated humans but that's now how they're being used right now.
I'll do more in the future but I'll limit myself to this because I'm tired, bored, and don't want to make so many PRs touching the same things that I have to deal with conflicts each time one is merged.
Just as an example, screwdriver's gotta be done as well, does the exact same thing wrenches do, I believe.
Standardizes (and touches) each time default_unfasten_wrench is used.
Fixes tool logs, since it relies on tool acts to exist, I'm trying to move as many tool acts to its proper proc. Like a spiritual successor to the tool superpack PRs.
Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com>
About The Pull Request
Continuation of #64375, extracting tool behavior from attackby() and moving it into discrete _act procs. This is about as many files as I had in the last version, as I still want this to be reviewable.
As before, I've tested everything in game and it works as it previously did.
Why It's Good For The Game
The more code moved out of attackby, the more modular things become.
Changelog
cl
refactor: Moves more tool behavior out of attackby().
/cl
## About The Pull Request
stop forgetting to include mapload, if you don't include it then every single subtype past it by default doesn't include it
for example, `obj/item` didn't include mapload so every single item by default didn't fill in mapload

## Regex used:
procs without args, not even regex
`/Initialize()`
procs with args
`\/Initialize\((?!mapload)((.)*\w)?`
cleanup of things i didn't want to mapload:
`\/datum\/(.)*\/Initialize\(mapload`
This makes it so during unit tests, adding a text based overlay to something will runtime if the icon does not have an icon state matching that text. I would do this during normal compiles as well but getting the icon states from an icon is surprisingly expensive.
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Converts most spans into span procs. Mostly used regex for this and sorted out any compile time errors afterwards so there could be some bugs.
Was initially going to do defines, but ninja said to make it into a proc, and if there's any overhead, they can easily be changed to defines.
Makes it easier to control the formatting and prevents typos when creating spans as it'll runtime if you misspell instead of silently failing.
Reduces the code you need to write when writing spans, as you don't need to close the span as that's automatically handled by the proc.
(Note from Lemon: This should be converted to defines once we update the minimum version to 514. Didn't do it now because byond pain and such)
* Removed from code
* Removes cloners from maps
* Some more references, now compiles.
* Reduces availability of replica pods
* DNA scanner and tech disk rebranding
* pubby door name, cargo pack description
* 1/4 done? maybe?
* more
* stuff
* incremental stuff
* stuff
* stuff & things
* mostly done but not yet
* stuffing
* stuffing 2: electric boogaloo
* Git Commit and the Kingdom of the Crystal Skull
* make it actually compile
* found more stuff
* fixes
* fix AI laws appearing out of order
* fix windows
* should be the remaining stuff
* this time for real
* i guess it should compile too
* fix sechuds
cl Floyd
del: removed beauty / dirtyness
balance: Mood no longer gives you hallucinations, instead makes you go into crit sooner
/cl
oranges requested these changes, i havn't coded in DM for a while so I might have made some mistakes
cl Floyd / Qustinnus
del: Removes short-term effects of mood
add; Adds long-term effects of mood by implementing sanity which goes up with good mood, down with bad mood, but takes time to change. Your sanity can be seen as your average mood in the recent past. All effects of moods are now covered by this system
add: Beauty component, currently only attached to cleanables, but you could attach it to any atom/movable and make them pretty/ugly, affecting mood of anyone in the room.
refactor: Removes the original way of adding mood events, uses signals properly instead.
fix: Cleanables "giving" area's free beauty during initialization
fix: Fixes some events not clearing properly
/cl
Fixes#36444
From now on mood no longer affects you directly, instead it decides whether your sanity goes up or down, when your sanity gets too low you will get the effects of what mood did before.
This means getting hit with bad moods due to being attacked while not mean you are doomed anymore, and you get a large timeframe to get away and just fix your mood later.
I also added the beauty component, you could add this to any object and it would either make a room prettier or uglier, comparable to DF or Rimworld. You could add traits to make certain people ugly, for example.
* small changes
* Adds a use_tool helper and changes some tools to use it
* Ports most tool operations to use_tool
* Converts more tool operations to use_tool and tool_act
* Changes some things to default_unfasten_wrench
* Improves tool_behavior support in mech construction
* Code review memes
* Fixes all instant use_tool calls failing
* Code improvements
* merge fixes
* Grammar fixes to atom descriptions
- Capitalization and punctuation on most descriptions
- CentCom instead of centcom where appropriate
- Earth instead of earth where appropriate
* Remove spaces before newlines and oneline some strings
New power tools for the CE! It's like goof's golden tools but less memey and makes more sense, power tools are much faster than normal tools and take the place of two.
Hand drill, activate to switch between between screwdriver bit and bolt bit (screwdriver/wrench)
Jaws of life, activate to switch between a cutting head and prying head, can also open powered doors like a xeno. Cutting head cuts your head off if you suicide with them. I wanted to make the prying head gib your head but i couldn't figure it out.
Reworked how construction handles sounds and added a new "usesound" var to obj/items. This is useful if you want to add another tool or item that makes a send when it's being used. Also useful if you want to replace a sound for an item or if you have an item with a choice of sounds (like if you have two versions of a sound sound you want to play)
CE now gets a unique white tool belt, exactly the same as a regular tool belt, just a re-skin.
CE also spawns with the new power tools and an experimental welder, CE will be the ONLY one to spawn with these tools, might make him a more valuable target for traitors. I figured this would be acceptable considering most heads are not antag enabled (i think)
Also i added a welding tool sound for reasons... figured might as well add some more sounds while i was reworking it.
Added priority overlays to atoms, which will not be removed when overlays are cut and will always remain on top when new overlays are added. This requires everyone to use add_overlay() and cut_overlays() instead of overlays += and overlays.Cut(). These procs are found in __HELPERS/icons.dm, and the priority overlay list is found in game/atoms.dm. Everything else is replacing deprecated overlay manipulation.
* Added a simple bar-theme escape shuttle
Features include a very tough Bardrone, with laws to be a good
bartender, bathroom, a quality lounge for the heads, and a small
gambling table.
* Changed drone's health to 3000
Bardrone is now strong, to cope from stray gunfire.
* Replaces banned variables with alternates
Step_[xy] is bad, mkay?
* Added STV5, the cramped transport shuttle
Well, looks like Centcom only had this ship ready for evacuation. I hope
you're friendly with your coworkers!
* Removed shuttle area from empty space on STV5
* Added cult shuttle
Looks like this automated shuttle may have wandered into the darkness
between the stars on route to the station. Let's not think too hard
about where all the bodies came from.
* Include the Narnar Shuttle
* Meat ferry added
Very basic, could probably use some love from a map wizard.
* Moved shuttle files to shuttles/ directory
* MAPS MOVED AND RENAMED
* Hyperfractal Gigashuttle
"I dunno, this seems kinda needlessly complicated."
"This shuttle has very a very high safety record, according to Centcom
Officer Cadet Yins."
"Are you sure?"
"Yes, it has a safety record of N-A-N, which is apparently larger than
100%."
* I REGRET ADDING THESE
* Into templates you go
* Changed floors
* Hugbox supermatter, for map making
* Shuttles KINDA delete themselves
* Hats in hats in hats in hats in hats
* Use the hugbox supermatter in the shuttle
* Include the new verbs
* Include our new verbs
* Fixed runtime when deleting emergency shuttle
* Added to verb list
* Fixes more runtimes with deleting the shuttle
* Shuttle Destroy verb now functions
* Moved them out of the shuttles/ folder
* We'll need these docks later
* shuttle_import landmark datum made
* Changes z2 to TGM format and adds shuttle_import landmark
* SHUTTLE IMPORT VERB
Is this it? Are we there?
* Some compile fixes
* Emergency bar map updated
* Updated cramped shuttle
* Updated narnar shuttle
* Supermatter shuttle updated
* Meat ferry updated
* Debugging information included
* Debug code, QDEL hints
* Minor updates to collection of maps
* May as well use the snowflake drone code
PICK YOUR OWN BARKEEPING HAT.
* The Lighthouse
*static*... part of a much larger vessel, possibly military in origin.
The weapon markings aren't anything we've seen ... *static* ... by
almost never the same person twice, possible use of unknown storage ...
*static* ... seeing ERT officers onboard, but no missions are on file
for ... *static* ... *static* ... *annoying jingle* ... only at The
LIGHTHOUSE! Fulfilling needs you didn't even know you had. We've got
EVERYTHING, and something else!
* Made supermatter hallucination too powerful
* Added force argument for docking testing
* Added emergency backup shuttle
Hopefully it will never be seen or used. But means that provided it's
there and untouched, even with the accidental deletion of a shuttle,
round will still be able to end as normal.
* Added templates for existing shuttles
* Backup shuttle used if emergency shuttle deleted
* Added backup shuttle transit space
Don't know why transit spaces aren't dynamically generated, to be
honest.
* Hyperfractal Gigashuttle improved
More radiation lockers, chairs which makes it "safer".
* Added Shuttle Under Construction
The documentation hasn't been finished yet for this shuttle. Break glass
in case of emergency.
* Added warnings for shuttle interaction
ARE YOU SURE YOU WANT TO DELETE THE EMERGENCY SHUTTLE?
I mean, I really don't know what will happen, and it's probably
nothing good.
* Snappop(tm)!
Hey kids and grownups! Are you bored of DULL and TEDIOUS shuttle
journeys after you're evacuating for probably BORING reasons. Well then
order the Snappop today! We've got fun activities for everyone, an all
access cockpit, and no boring security brig! Boo! Play dress up with
your friends! Collect all the bedsheets before your neighbour does so!
Check if the AI is watching you with our patent pending "Peeping Tom AI
Multitool Detector" or PEEEEEETUR for short. Have a fun ride!
* Fixed horrific experiment icon, added gambling spawner
* Candle changes
Infinite candles start fires but don't run out.
Infinite candles don't make messages when created.
* Shuttle can dock if already docked
* Fixing bugs with shuttle import
Also, some minor bugs with hugbox supermatter still consuming
gas moles and slowly depressurising the area.
* Admin notice, unload bad template
* Fixes problems with some shuttles
* Warning message if roundstart dock failed
* Compiles.
* Inform admins of shuttle problems
* Names for shuttles, minor tweaks
* Moved shuttle templates to shuttles/
* Version numbers are lame
* Shuttle datums
* Shuttle manipulator barebones
It doesn't do anything at the moment.
* Added shuttle manipulator to Z2
It still doesn't do anything yet, but it looks pretty.
* Use GetAllContents(), don't delete ghosts
* Fixes bug where nothing would actually load
* Cancel button on Destroy Shuttle
* Fixed birdboat shuttle overwriting bar shuttle