## About The Pull Request
Tin, that's all. In a lot of cases you will want to have these,
especially if you are using elements with this signal.
## Why It's Good For The Game
Better code
## Changelog
Not player-facing
## About The Pull Request

Resprites:
Tesla Cannon
Tesla Cannon crafting kit
### New SFX / VFX
The tesla cannon now uses a new type of beam effect that randomly picks
sprite variants for each segment instead of a tracer.
This makes the arc look more dynamic and less distorted.
Autofire guns can now choose to use a looping sound datum when firing.

#### Balance changes
The tesla cannon must now have its stock unfolded before firing, this
takes 1.5 seconds and makes the gun bulky.
It is still normal sized when folded, and folding it is instant.
### Bug fixes
Fixed a bug where looping_sound.stop() would fail to stop sounds.
The tesla cannon is an incredibly powerfu
## Why It's Good For The Game
### My reasons for respriting
The old sprite was not bad, by all means but I had a few gripes with it.
* The old sprite does not incorporate the flux anomaly yellow colour.
* The old sprite looks a bit much like a real, professionally produced
sci-fi weapon,
* The old sprite looks pretty small for such a ultra high dps full auto
weapon.
* The old inhand is quite indistinct for something that can game end you
in like one second.
### My design
I think that anomaly items should be very mad science coded and, since
anomaly science is by definition a poorly studied field, they should
look more like prototypes created by a scientist rather than something
professionally made in a factory.
## Changelog
🆑
image: The tesla cannon has new sprites.
image: The tesla parts kit has new sprites.
image: The tesla cannon has a new shocking beam effect when firing.
sound: The tesla cannon has new sounds.
balance: The tesla cannon must now be unfolded to fire.
fix: looping sounds now stop playing sounds when commaned to do so.
/🆑
## About The Pull Request
Title. Firing a weapon in burst now triggers fire delay based off the
fire cooldown variable, which was reused from the now-renamed `semicd`.
This shouldn't affect anything, but if this does, uh, my bad.
## Why It's Good For The Game
My previous PR, tgstation/tgstation#89634, separated fire delay and
burst delay for a possible avenue of balance for gun design (e.g. fast
burst gun with long delays between bursts). I didn't realize burst
didn't set the cooldown, though, so... now it's here. My bad.
## Changelog
🆑
fix: Burst-firing weapons now respect their fire delay, in the event
that their fire delay is longer than click cooldown. If your local
burst-fire weapon starts to feel weird because of this, please submit an
issue report.
/🆑
Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
## About The Pull Request
...preventing runtimes and playing dry click sounds correctly i think?
was that part of the issue caused by the runtime? iunno
## Why It's Good For The Game
Fixes https://github.com/tgstation/tgstation/issues/68161
## Changelog
🆑
fix: fixed akimbo firing automatic guns runtiming on the offhand gun
when it's empty, possibly causing dry fire clicks to not play
/🆑
## About The Pull Request
this is a revival of #82635 . i got permission from potato to reopen
this, he did almost all the work. i only just solved the conflicts and
fixed all the bugs that were preventing the original from being merged
(but it should be TMed first)
## Why It's Good For The Game
slightly improves the performance of basic mob AI
## Changelog
🆑
LemonInTheDark
refactor: able_to_run and incapacitated have been refactored to be event
based
/🆑
---------
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: ZephyrTFA <matthew@tfaluc.com>
## About The Pull Request
Using these search regexes:
Ending in 0:
`addtimer\((.*),\s?(\d{1,3})0\b\)`
replacement:
`addtimer($1, $2 SECONDS)`
Two digit ending in odd:
`addtimer\((.*), (\d)([1-9])\)$`
replacement:
`addtimer($1, $2.$3 SECONDS)`
Single digit ending odd:
`addtimer\((.*), ([1-9])\)$`
replacement:
`addtimer($1, 0.$2 SECONDS)`
## Why It's Good For The Game
Code readability
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
## About The Pull Request
This PR adds the laser carbine, a new fully-automatic laser weapon that
can be ordered from cargo. A crate of 3 can be ordered from cargo for
1800 credits, locked behind armory access. Here is a video
demonstration:
https://github.com/tgstation/tgstation/assets/21979502/6f7fecec-ccb6-4a65-8027-21ab887fb91d
Now, I'm sure people are very concerned about the balance implications
of this new weapon. Let me give you some hard numbers:
The gun deals 10 damage per shot, and has a capacity of 40 shots with a
fully charged cell. This means that it has, at most, 400 damage per
charge, which is exactly the same as a normal laser gun.
In terms of DPS, it can put an unarmored human in crit roughly as fast a
laser gun. It is meant to be a sidegrade, not an upgrade to the normal
laser gun.
It also has considerably lower wound bonus. During testing, when all 40
shots were fired into an unarmored human, it dealt tier 1 burn wounds
with the occasional tier 2. I never observed a single tier 3 burn wound
during any of my tests.
Here's a picture of the different sprites (The last one is animated just
like the normal laser gun):

## Why It's Good For The Game
For a long time, there has been a strong push to make crew-available
weapons almost entirely energy based. This trend has been contentious,
to say the least. Many people prefer ballistic weapons over energy
weapons. After spending some time on a different codebase, one where
autorifles are still completely available to order from cargo, no emag
needed, I think I might know why (or at least part of the reason). Part
of what I find satisfying about some ballistics is the fact that they
fire quickly and automatically. Energy weapons might be more enjoyable
to use if automatic energy weapons are also an option.
## Changelog
🆑
add: The laser carbine, a weak but fully automatic sidegrade to the
normal laser gun, can now be ordered from cargo.
/🆑
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
## About The Pull Request
Nothing implies this has to be an `iscarbon` check anywhere
Closes#76211
## Changelog
🆑 Melbert
fix: The Syndicate Assault Cyborg can autofire their LMG
/🆑
This tracks the seconds per tick of a subsystem, however note that it is
not completely accurate, as subsystems can be delayed, however it's
useful to have this number as a multiplier or ratio, so that if in
future someone changes the subsystem wait time code correctly adjusts
how fast it applies effects
regexes used
git grep --files-with-matches --name-only 'DT_PROB' | xargs -l sed -i
's/DT_PROB/SPT_PROB/g'
git grep --files-with-matches --name-only 'delta_time' | xargs -l sed -i
's/delta_time/seconds_per_tick/g'
- Makes QDELETED use isnull(x) instead of !x, giving about 0.2 to 0.25s
of speed.
- Make disposal constructs only update icon state rather than go through
expensive overlay code. Unfortunately did not have much effect, but is
something they should've been doing nonetheless.
- Makes RegisterSignal only take signals directly as opposed to
allocating a fresh list of signals. Very few consumers actually used
this and it costs about 0.4s. Also I think this is just a bad API anyway
and that separate procs are important
`\bRegisterSignal\((.*)list\(` replaced with `RegisterSignals($1list(`
Makes the code compatible with 515.1594+
Few simple changes and one very painful one.
Let's start with the easy:
* puts call behind `LIBCALL` define, so call_ext is properly used in 515
* Adds `NAMEOF_STATIC(_,X)` macro for nameof in static definitions since
src is now invalid there.
* Fixes tgui and devserver. From 515 onward the tmp3333{procid} cache
directory is not appened to base path in browser controls so we don't
check for it in base js and put the dev server dummy window file in
actual directory not the byond root.
* Renames the few things that had /final/ in typepath to ultimate since
final is a new keyword
And the very painful change:
`.proc/whatever` format is no longer valid, so we're replacing it with
new nameof() function. All this wrapped in three new macros.
`PROC_REF(X)`,`TYPE_PROC_REF(TYPE,X)`,`GLOBAL_PROC_REF(X)`. Global is
not actually necessary but if we get nameof that does not allow globals
it would be nice validation.
This is pretty unwieldy but there's no real alternative.
If you notice anything weird in the commits let me know because majority
was done with regex replace.
@tgstation/commit-access Since the .proc/stuff is pretty big change.
Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
## About The Pull Request
Turns out I missed a few to_chats in #70398. Also I accidentally
inverted one so it said close the cover instead of open it. Oops!
## Why It's Good For The Game
Same reason as the original PR, balloon alerts are handy for stuff you
care about right now and not in 5 minutes. Also they should probably not
tell you to do the opposite of what you actually need to do.
## Changelog
🆑 VexingRaven
fix: Fixed a few balloon alerts for guns and moved a few more chat
messages to balloon alerts
/🆑
* Removes all supurfolus uses of QDEL_HINT_LETMELIVE
This define exists to allow abstract, sturucturally important things to
opt out of being qdeleted.
It does not exist to be a "Immune to everything" get out of jail free
card.
We have systems for this, and it's not appropriate here.
This change is inherently breaking, because things might be improperly
qdeling these things. Those issues will need to be resolved in future,
as they pop up
* Changes all needless uses of COMSIG_PARENT_PREQDELETED
It exists for things that want to block the qdel. If that's not you,
don't use it
* Adds force and hard del verbs, for chip and break glass cases
respectively
The harddel verb comes with two options before it's run, to let you
tailor it to your level of fucked
* Damn you nova
Adds proper parent returns instead of . = ..()
Co-authored-by: Seth Scherer <supernovaa41@gmx.com>
* Ensures immortality talismans cannot delete their human if something goes fuckey. Thanks ath/oro for pointing this out
Co-authored-by: Seth Scherer <supernovaa41@gmx.com>
My PR to fix pixel aiming broke aiming when you were aiming at obscured turfs.
The click catcher was properly modifying the click target to be the turf under the click location,
but it was passing the `ICON_X` and `ICON_Y` variables on unmodified.
This means that instead of being measured from the bottom left corner of the turf you clicked on they were being measured from
roughly the bottom left corner of your screen.
This makes the click relevant click parsing proc also update the ICON_X and ICON_Y values of the click modifiers.
bring code up to latest standards, move many procs to named files inside _HELPERS
no idea where to put some of these procs, help is appreciated
made more files to contain some unique code, deleted unsorted.dm, we can rest now
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)
* fullauto component
* eh
* h
* brap
* it works!
* FUCK SHITUP
* dumbass
* l6
* oops
* GOD
* THE LAST 10% OF A PROJECT IS 90% OF THE WORK
* slopwer projecitles, replaces the tesla gun
* heavy
* minigun
* minigun stuff
* runtime fixes, pointer icon
* nuh uh
* makes modifeirs things
* nerf this
* yes
* aghh
* agh
* real high intensity changes here
Co-authored-by: Ryll-Ryll <3589655+Ryll-Ryll@users.noreply.github.com>