Commit Graph

2948 Commits

Author SHA1 Message Date
YesterdaysPromise
8eb3b51ad9 /icons/ folder cleansing crusade part 3 (#83420)
## 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.
/🆑
2024-05-25 21:08:08 -07:00
paganiy
8dd84a3fd5 [no gbp] fix shooting at objects on the floor (#83419)
## About The Pull Request
I made a mistake
## Why It's Good For The Game
You can shoot at items on the floor again
## Changelog
🆑
fix: You can shoot at items on the floor again
/🆑

Co-authored-by: paganiy <leunscrupuloustrolle@gmail.com>
2024-05-25 15:50:15 -07:00
Da Cool Boss
c31c364e3a Fully deletes improvised shotgun shells from the game. (#83436)
## About The Pull Request
For whatever reason, these were partially deleted but the projectile was
left in. Since the thing that spawns these projectiles is 100% gone from
the game and can't even be spawned by admins there's no reason to keep
this vestigial code.
## Why It's Good For The Game
Why waste lines of code and storage space on something that is now gone?
It's just clutter.
## Changelog
🆑
no player facing change
/🆑
2024-05-26 10:02:01 +12:00
paganiy
c3ff3e06c3 Auto-aim in combat mode at mobs on the floor is disabled after 10 tiles. (#83270)
## About The Pull Request
As stated in the title, auto-aiming at prone targets is disabled after
the projectile passed more than 10 tiles (the limit of vision of an
ordinary spaceman is 9 tiles). Within 10 tiles, shooting in combat mode
remains unchanged. This also does not apply to sniper rifles.
Here's a preview of how it works:


https://github.com/tgstation/tgstation/assets/126676387/d62fbb03-9f63-4a73-a32a-62b4d11e4515
## Why It's Good For The Game
The main problem of shooting in combat mode is shooting in busy
corridors. Often, you are unwilling to become a participant in the
security's pursuit of the antagonist, and receive unintended
projectiles. You will be lucky if the projectile turns out to be
non-lethal, but if it is a laser, you can get a second-degree burn or
even a catastrophic one from just one shot. (depending on which laser
was fired and where you were hit), which is not very pleasant. To stay
unharmed and simplify the work of security, it is logical to lie down on
the floor.
This will not revive the lie-down meta to dodge projectiles, because
within sight of the spaceman and even a little further, lying targets
will still be hit by projectiles. And if you decide to lie down during
the chase to dodge the projectiles, then the pursuers will quickly catch
up with you and shoot you in combat mode.
## Changelog
🆑
balance: Auto-aim in combat mode at mobs on the floor is disabled after
the projectile passes 10 tiles.
/🆑

---------

Co-authored-by: paganiy <leunscrupuloustrolle@gmail.com>
2024-05-22 13:31:42 +01:00
Hatterhat
14e27ec462 adds the Ansem/SC, the logical conclusion to the John Splintercell series (#83228)
## About The Pull Request
Replaces the Ansem, SC/FISHER, and suppressor in the Sam Fisher gimmick
bundle with the Ansem/SC, a variant of the Ansem that:
- has an integral suppressor (read: acts like it's always suppressed,
because it is)
- an underbarrel light disruptor (functionally identical to the
SC/FISHER, fired with RMB)
(note: firing the disruptor in combat mode causes the main gun to fire
as if it were being fired akimbo. which it shouldn't, but I'm not sure
how to make it not do that)
- is longer, visually, but not storage-wise, and also visibly has an
underbarrel light disruptor

![image](https://github.com/tgstation/tgstation/assets/31829017/0842d9b9-9b24-4833-aeae-631c3bf1a5d5)

Also added code support for integrally suppressed ballistic guns (with
no separate suppressor overlay), handled by the can_unsuppress variable.

Also fixes the SC/FISHER disrupting APCs for ten times longer than they
probably should have been disrupted.
## Why It's Good For The Game
In regards to the Ansem, SC/FISHER, suppressor:
The Sam Fisher gimmick bundle having the Ansem and SC/FISHER as separate
items always kinda bugged me, since it seemed too clunky for a
sneaky-beaky operator-type to have to juggle two guns (one which you had
to bump to normal-size, leaving it unable to fit in the belt) to break
lights and then shoot dudes in the back of the head. So now it's one
gun, like the M-90gl and its grenade launcher. I think the bundle's rare
enough that it's fine to give them this much.

In regards to the APC thing:
Shooting an APC with a gimmick gun and leaving it unpowered for two
minutes seemed unintentional.

In regards to the code support for integrally suppressed guns:
Maybe someone else will want to put in another integrally suppressed
gun? It was relevant for this use-case.
## Changelog

🆑
qol: The Ansem, suppressor, and SC/FISHER included in the Fisher gimmick
bundle now come together as one whole gun, the Ansem/SC. It's integrally
suppressed, and fires the disruptor on right-click.
fix: The SC/FISHER disrupts APCs for an appropriate amount of time, not
ten times the intended disruption length.
/🆑

---------

Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2024-05-17 09:17:05 +00:00
nikothedude
03db803001 Parse_zone audit + minor misc cleanup (#83154)
## About The Pull Request

Does a audit on all uses of parse_zone, replacing most instances of it
with a new living-level proc that refers to the bodypart in that zone if
it exists.

In other cases, removes parse_zone entirely because the bodypart is
already confirmed to exist, so we just use plaintext_zone.

Also cleans up some single letter vars.
## Why It's Good For The Game

In the doc of ```plaintext_zone```, its said it ```Should be used for
parsing non-instantiated bodyparts```. 99% of the code ignores the
possibility of a bodypart existing, and so uses parse_zone when
plaintext_zone could be accessed instead.
## Changelog
🆑
code: Most instances of parse_zone now refer to the limb's
plaintext_zone var
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2024-05-16 16:45:33 +00:00
Pickle-Coding
066815ab88 The armoury contraband locker guns have a chance to be rigged. (#83167)
## About The Pull Request
Gives a 10% chance for the handguns in the armoury to be rigged. The
makarov and desert eagle will have a clown pin, ultra clown pin or the
explosive ultra clown pin when rigged, randomly and uniformly weighted.
The pins can not be removed, even the normal ones, so there is only one
way to find out. The Unica 6 will be reversed, shooting you instead when
rigged.
## Why It's Good For The Game
People are too trustworthy of the gear they use in the contraband
locker. By giving them a chance to be rigged and backfire on them,
people will treat these guns like contraband and not toys. If someone
was treating them like a toy, they could receive a nice introduction of
the syndicate.
## Changelog
🆑
balance: There are reports of malfunctioning guns being confiscated.
/🆑
2024-05-15 07:25:03 +02:00
PKPenguin321
261548f09d Staff of Shrinking for the wizard (#83115)
<!-- 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

Adds a new staff for the wizard that shoots shrink rays. Also a
corresponding wand that comes with the wand belt. Shrinking is a
mechanic already implemented by abductors, but it's not often used
because it doesn't fit their kit super well. That's a huge shame because
shrinking stuff/people is really funny. And you know where funny stuff
fits well? The wizard kit.

OH YEAH and being shrunken now gives you the squash component so you can
be squashed as though you were a roach, though this only deals 10 damage
instead of gibbing you

tiny staff

![68747470733a2f2f696462322e616666656374656461726330372e636f2e756b2f696d616765732f32353836323339392f38333131352f31333237383435323531373936343834343132322e706e67](https://github.com/tgstation/tgstation/assets/8345184/af777602-036f-4171-ad43-5dafa7b29414)
tiny wand

![68747470733a2f2f696462322e616666656374656461726330372e636f2e756b2f696d616765732f32353836323339392f38333131352f393439333932353034373033303238393530372e706e67](https://github.com/tgstation/tgstation/assets/8345184/81241789-404f-4d8e-8473-2ec74b171f55)
exhausted wand turns back to a big wand sprite :)

![68747470733a2f2f696462322e616666656374656461726330372e636f2e756b2f696d616765732f32353836323339392f38333131352f323039323438333731323537303338313239362e706e67](https://github.com/tgstation/tgstation/assets/8345184/c2073952-c16b-4113-9ca9-527cfdbcfd16)


## Why It's Good For The Game

Shrinking stuff is funny, plus it gives the wizard something new to do
besides polymorphing everyone or turning everybody to stone or ei
nathing people.

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

🆑
add: New funny wizard staff/wand that shrinks stuff.
add: Being shrunken now leaves you vulnerable to being crushed to death.
/🆑

<!-- 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. -->
2024-05-15 03:10:13 +02:00
Afevis
a0a51c5964 Ensures kinetic accelerators always get their mods added to the modkits list (#83222)
Fixes #83213

🆑 ShizCalev
fix: Spam clicking a modkit with a kinetic accelerator can no longer
lead to ghosted versions of the modkits appearing in the modkit list,
breaking the gun.
/🆑
2024-05-15 02:42:59 +02:00
Hatterhat
3f73d00482 allows the SC/FISHER to shoot floor lights (#83182)
## About The Pull Request
Lowers the hit threshold layer of SC/FISHER bolts from
`PROJECTILE_HIT_THRESHHOLD_LAYER` (2.75) to `LOW_OBJ_LAYER` (2.5),
allowing you to shoot floor lights with it.

## Why It's Good For The Game
floor lights count as lightbulbs and therefore you should be able to
explode them with the gun that explodes lightbulbs

## Changelog

🆑
fix: The SC/FISHER can now shoot floor lights.
/🆑

Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
2024-05-15 02:37:21 +02:00
necromanceranne
db33f07921 [NO GBP] Fixes the knife offsets of pipeguns (#83155)
<!-- 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

Fixes the knife offsets of pipeguns.

## Why It's Good For The Game

I completely forgot to fix this when I updated the pipegun sprites.
Oops.

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

🆑
fix: Fixes the knife offset for pipeguns
/🆑

<!-- 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. -->
2024-05-15 02:32:33 +02:00
Sadboysuss
8b8934c700 Portals now make sounds (#83166)
## About The Pull Request
### New sounds:

https://drive.google.com/drive/folders/1vLoyxY93Qfe_GtCnetkEHLrkGYZ8S7nD?usp=sharing

Demo:


https://github.com/tgstation/tgstation/assets/96586172/2c468ab8-deea-4151-8d66-167b63fdda39



Changes teleporter,gulag teleporter, hand tele, bluespace teleport gun,
cultist teleport, experimental syndicate teleporter teleport sounds.
## Why It's Good For The Game
I think sounds are an integral part of immersion and having no cool
sci-fi noises for portals really spoils it.
## Changelog
🆑 grungussuss and Virgilcore
sound: portals now have a unique sound to them
/🆑
2024-05-15 02:32:01 +02:00
Afevis
9affd58bec Fixes kinetic accelerator fire sound div 0 runtime (#83177)
```
 [17:34:10] Division by zero
Thrown by fire_sounds (/obj/item/gun/energy/fire_sounds) at code/modules/projectiles/guns/energy.dm, line 50

User: Xiryang Zhol (/mob/living/carbon/human)
User Location: the volcanic floor (/turf/open/misc/asteroid/basalt/lava_land_surface) (78, 184, 3)
Source: the proto-kinetic accelerator (/obj/item/gun/energy/recharge/kinetic_accelerator)
Source Location: Xiryang Zhol (/mob/living/carbon/human)
Stacktrace:
1	the proto-kinetic accelerator (/obj/item/gun/energy/recharge/kinetic_accelerator): fire sounds()
2	the proto-kinetic accelerator (/obj/item/gun/energy/recharge/kinetic_accelerator): shoot live shot(Xiryang Zhol (/mob/living/carbon/human), 0, the legion (/mob/living/basic/legion_brood), 1)
3	the proto-kinetic accelerator (/obj/item/gun/energy/recharge/kinetic_accelerator): shoot live shot(Xiryang Zhol (/mob/living/carbon/human), 0, the legion (/mob/living/basic/legion_brood), 1)
4	the proto-kinetic accelerator (/obj/item/gun/energy/recharge/kinetic_accelerator): process fire(the legion (/mob/living/basic/legion_brood), Xiryang Zhol (/mob/living/carbon/human), 1, "icon-x=18;icon-y=17;left=1;but...", "", 0)
5	the proto-kinetic accelerator (/obj/item/gun/energy/recharge/kinetic_accelerator): process fire(the legion (/mob/living/basic/legion_brood), Xiryang Zhol (/mob/living/carbon/human), 1, "icon-x=18;icon-y=17;left=1;but...", "", 0)
6	the proto-kinetic accelerator (/obj/item/gun/energy/recharge/kinetic_accelerator): fire gun(the legion (/mob/living/basic/legion_brood), Xiryang Zhol (/mob/living/carbon/human), 1, "icon-x=18;icon-y=17;left=1;but...")
7	the proto-kinetic accelerator (/obj/item/gun/energy/recharge/kinetic_accelerator): afterattack(the legion (/mob/living/basic/legion_brood), Xiryang Zhol (/mob/living/carbon/human), 1, "icon-x=18;icon-y=17;left=1;but...")
8	the proto-kinetic accelerator (/obj/item/gun/energy/recharge/kinetic_accelerator): melee attack chain(Xiryang Zhol (/mob/living/carbon/human), the legion (/mob/living/basic/legion_brood), "icon-x=18;icon-y=17;left=1;but...")
9	Xiryang Zhol (/mob/living/carbon/human): ClickOn(the legion (/mob/living/basic/legion_brood), "icon-x=18;icon-y=17;left=1;but...")
10	the legion (/mob/living/basic/legion_brood): Click(the volcanic floor (78,183,3) (/turf/open/misc/asteroid/basalt/lava_land_surface), "mapwindow.map", "icon-x=18;icon-y=17;left=1;but...")
```
2024-05-15 02:30:58 +02:00
paganiy
d70aa8b55f Fix the size of the projectile of the accelerator laser cannon (#83144)
## About The Pull Request
Closes
https://github.com/tgstation/tgstation/issues/82965#issue-2270347676

This is how it looks now:


https://github.com/tgstation/tgstation/assets/126676387/3934017c-b031-4bb0-8041-231739a6144c


## Why It's Good For The Game
It's not
## Changelog
🆑
fix: Accelerator laser gun no longer shoots sun size projectiles.
/🆑

---------

Co-authored-by: paganiy <leunscrupuloustrolle@gmail.com>
2024-05-13 02:36:17 -04:00
Jacquerel
98b73d50e3 Laser decharge sound uses pitch instead of frequency (#83102)
## About The Pull Request

Now that we require Byond 515 we can make use of the sound pitch var
instead of frequency.
The advantage of this is that we can make a sound lower or higher
pitched without also changing its duration.

Before:


https://github.com/tgstation/tgstation/assets/7483112/ff61c130-788b-432e-93e8-56c6b6df42d4

After:


https://github.com/tgstation/tgstation/assets/7483112/c1c3d1d5-97fd-468e-9724-61fb6f9f3026


In some extreme cases with frequency, the sound would become incredibly
long. This no longer occurs.

## Why It's Good For The Game

I think it sounds better.

## Changelog

🆑
sound: Lasers adjust their pitch as they run out of charge, rather than
frequency
/🆑
2024-05-08 19:25:54 -06:00
necromanceranne
6fd6ebd850 Pipegun updates and glowup (#83063)
## About The Pull Request

Updates pipeguns with a brand new set of sprites. Also comes with pipe
pistols; plinkier versions of the pipegun.

![ye
pipeguns](https://github.com/tgstation/tgstation/assets/40847847/dd8ea3db-aa5a-403e-9eca-c3aa2c38b694)


![image](https://github.com/tgstation/tgstation/assets/40847847/9015f1fe-8ed2-4724-844d-7d550d35b890)


![image](https://github.com/tgstation/tgstation/assets/40847847/0d99551a-ecc4-4f2b-a397-46c5f26437f7)

Alters pipeguns away from utilizing shotgun/rifle ammunition towards a
bespoke junk round ammo. These shells are crafted similarly to current
improvised shells. This also removes improvised shells as a shotgun ammo
type. (these new shells aren't shotgun shells to begin with, they're
more like rifle bullets)

Crafting junk rounds produces an entirely unknown projectile in the
shell. You won't know what you get until you fire the gun. Almost in
every instance, however, the shot is beneficial towards killing things.
And they all do about the same amount of damage, so there is hopefully
never a round you didn't want to fire in the gun. Fighting someone with
a pipegun is usually predictable for what amount of damage it will do,
but any additional effects it might have is going to be an unknown
factor. They also brutalize borgs, which is a quality that improvised
shells had previously.

Pipeguns operate as they did before, and do roughly 40 damage per shot
with the majority of their ammo types (less than what they do currently
with .310). They only have one shell in the gun at a time, so every time
they're fired, they must be reloaded.

Pipe pistols do roughly 15 damage per shot, but hold more ammo than the
bigger pipegun. However, they're more likely to veer off-course.

There are regal versions of each of these weapons, and each are more
potent respective of their general rarity. Having one is going to be a
lot more noteworthy.

### Minor changes

Some more clothing items can carry pipeguns in their suit storage.

The icemoon hermit spawns with a heroic laser musket rather than a regal
pipegun (partially because it is too difficult for the hermit to get
more ammo for their gun, and also because the regal pipegun is a more
powerful weapon than previously)

## Why It's Good For The Game

It has been a few years since I added the pipegun, and time was never
particularly kind to it. There are alternative weapons now with
interesting mechanics of their own. The ammunition it used has changed
considerably. And it simply didn't ever feel like a 'junk gun' in a way
that was fun. The original mechanics added to give it that feeling were
just not fun to experience and were removed. So the pipegun has been
left as 'a shitty version of X'. Even the regal pipegun was, at the end
of the day, a shittier version of either a shotgun or cargo rifle.

It didn't feel right not having some kind of unique quality to using
these weapons that help them express themselves as unpredictable trash
weapons built inside of maintenance. But I expressly didn't want to make
it 'unpredictable' in a way that felt unfair on the person getting shot
either. So just giving it more damage was right out. As a compromise, I
reduced the overall lethality of the weapons while introducing a gimmick
that will appeal to those wanting to play out the role of a homeless
lunatic with a shitty homemade gun stalking maintenance. A 'chaos gun'
so to speak. Maybe that will appeal to people.

## Changelog
🆑
balance: Reworks pipeguns to use an unpredictable 'junk round'. You
won't know what you're shooting until you fire it.
add: Introduces a pistol version of the pipegun; the pipe pistol. It is
inaccurate and does significantly less damage, but more portable and has
more ammunition in the gun.
image: Updates the visuals of the pipeguns.
balance: Also improves the Regal varieties of these weapons. By a lot.
balance: More articles of clothing can be used to carry pipeguns in suit
storage.
balance: The Icemoon Hermit comes with a Heroic Laser Musket instead of
a Regal Pipegun.
remove: Improvised shells (the shotgun shell) has been replaced with
improvised junk shells (which don't work with shotguns but do work with
pipeguns).
/🆑

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2024-05-08 22:40:28 +01:00
The Sharkening
0746039df6 Makes the medibeam process only on active use (#83062)
## About The Pull Request

Per title

## Why It's Good For The Game

We can have things process only when they need to process

## Changelog
2024-05-07 05:18:46 +02:00
Mothblocks
bc4e7d3b4e Remove data systems in favor of global datums (#82943) 2024-04-29 22:47:36 -07:00
MrMelbert
39fc255051 Turf weakref persists in changeturf / Fix plasma cutters (#82906)
## About The Pull Request

Turf references don't change so logically, turf weakrefs wouldn't change
if the turf changes.

By not doing this this can cause bugs: See #82886 . (This Fixes #82886) 

(Projectiles hold a list of weakrefs to atoms hit to determine what they
have already hit.

Because turf weakrefs reset, we could "hit" the same turf twice if it
destroyed the turf.

Old behavior - this was fine but now that they're weakrefs, we get two
weakref datums in the list that point to the same ref.)

Less hacky alternative to #82901 . (Closes #82901) 

## Changelog

🆑 Melbert
fix: Plasma cutters work again
/🆑
2024-04-27 18:40:47 -06:00
KingkumaArt
3f9caf5deb Fix: Makes the rebar crossbow's bowstring loosen after firing (#82830)
## About The Pull Request

As it stands, after the rebar crossbow fires, it must be used inhand
twice, once to loosen the bowstring, and a second time with a do_after
to pull it back. Not only does this make no sense as the bowstring is
what launches the projectile, but I actually had no idea it was even
happening, until I got it pointed out on discord.

## Why It's Good For The Game

The main reason is that the crossbow shooting a rod without moving the
bowstring just looks weird, but also given the first inhand use doesn't
have a delay, it also doesn't really serve any purpose.

## Changelog
🆑
fix: The rebar crossbows now properly loosen their bowstring upon
firing.
/🆑
2024-04-25 12:30:50 +01:00
LemonInTheDark
59a20eb8e7 Fixes some rando failures off the ignore list of projectiles (#82855) 2024-04-24 12:05:06 -06:00
Jeremiah
c1a775efe1 Implements data systems (#82816)
## About The Pull Request
Subsystems currently come in two different flavors:
1. Systems that process at intervals with the master controller
2. Global data containers that do not fire

And I think they should be split up...


This moves 4 non firing, non init subsytems -> datasystem

## Why It's Good For The Game
Clarity in code
2024-04-22 21:27:15 -06:00
MrMelbert
a21742ff60 Adds ALLOW_RESTING to a bunch of items (#82761)
## About The Pull Request

Allows you to alt-click a bunch of items while resting. 

Fixes #82788

## Why It's Good For The Game

Some of these, such as storage, are bugfixes. You shouldn't need to be
standing up to configure a spray can, or change the direction of your
bedsheet

Others are just sensible changes. 

## Changelog

🆑 Melbert
fix: You can open bags with alt click while resting again
qol: Many items which previously required you to stand to alt-click now
don't, such as bedsheets and spray cans
/🆑
2024-04-20 21:30:10 -07:00
Jeremiah
31d5b272cc Makes viewers() defines (#82767) 2024-04-20 01:39:50 -06:00
SyncIt21
635b7fa66c Use cell defined constants for various stuff (#82594)
## About The Pull Request
This re writes most cell power usage cases with 2 defines
`STANDARD_CELL_CHARGE`(Joules) & `STANDARD_CELL_RATE`(Watts) so changing
cell capacity values in the future won't cause discrepancies.

## Changelog
🆑
code: most cell power usages are scaled with defined constants to help
adapt to future changes
/🆑
2024-04-18 14:29:21 -07:00
Jeremiah
8e3f635b98 Alt click refactor (#82656)
## About The Pull Request
Rewrites how alt click works. 
Based heavily on #82625. What a cool concept, it flows nicely with
#82533.

Fixes #81242 
(tm bugs fixed)
Fixes #82668

<details><summary>More info for devs</summary>

Handy regex used for alt click s&r:
`AltClick\((.*).*\)(\n\t.*\.\.\(\))?`
`click_alt($1)` (yes I am aware this only copies the first arg. there
are no other args!)

### Obj reskins
No reason for obj reskin to check on every single alt click for every
object. It applies to only a few items.
- Moved to obj/item
- Made into signal
- Added screentips

### Ventcrawling
Every single atmospherics machine checked for ventcrawling capability on
alt click despite only 3 objects needing that functionality. This has
been moved down to those individual items.
</details>

## Why It's Good For The Game
For players: 
- Alt clicking should work more logically, not causing double actions
like eject disk and open item window
- Added context menus for reskinnable items
- Removed adjacency restriction on loot panel

For devs:
- Makes alt click interactions easier to work with, no more click chain
nonsense and redundant guard clauses.
- OOP hell reduced
- Pascal Case reduced
- Glorious snake case

## Changelog
🆑
add: The lootpanel now works at range.
add: Screentips for reskinnable items.
fix: Alt click interactions have been refactored, which may lead to
unintentional changes to gameplay. Report any issues, please.
/🆑
2024-04-16 17:48:03 -06:00
MrMelbert
0dc6b71a87 Change setting item weight class to a setter to patch some weight class related shenanigans (#82494)
## About The Pull Request

Fixes #81052 
Fixes #58008

Setting weight class of items is now done via `update_weight_class`.

I updated as many occurrences of manually setting `w_class` as I could
find but I may have missed some. Let me know if you know of any I
missed.

This is done to allow datums to react to an item having its weight class
changed.

Humans and atom storage are two such datums which now react to having an
item in its contents change weight class, to allow it to expel items
that grow to a weight class beyond what is normally allowed.

## Changelog

🆑 Melbert
fix: You can't fit items which are normally too large for a storage by
fitting it in the storage when it is small, then growing it to a larger
size.
/🆑
2024-04-08 19:01:30 -06:00
Jeremiah
9723b4b317 Replaces even more deciseconds with SECONDS (#82438)
## 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>
2024-04-06 15:18:49 -06:00
Jeremiah
1443ef79d3 Replaces a number of deciseconds into SECONDS (#82436)
## About The Pull Request
Using these search regexes:

Number ending in 0:
`do_after\((\w+), (\d+)0,`
Replace:
`do_after($1, $2 SECONDS,`

Single digit number:
`do_after\((\w+), [1-9],`
replace:
`do_after($1, 0.$2 SECONDS,`

Double:
`do_after\((\w+), (\d)([1-9]),`
Replace:
`do_after($1, $2.$3 SECONDS,`

## Why It's Good For The Game
Code readability
2024-04-04 18:56:08 -06:00
necromanceranne
b44d52b70a Detective revolver no longer can be turned into a flawless .357 revolver; In this house our gun explodes from excessive pressure (#82331)
## About The Pull Request

Fixes https://github.com/tgstation/tgstation/issues/82324

Also cleans up a lot of the code around the issue itself.

## Why It's Good For The Game

You should not be able to modify this revolver while it is loaded
whatsoever. I don't know when exactly this broke, but time has clearly
not been kind to the feature.

I think it was actually impossible to reach the self explosion on
modifying the gun? The return I added probably prevented it outright. I
guess that was broken the entire time. Honestly, I feel like that's
going to be a maintainability issue to keep it working, so maybe we just
do away with what we never had.

Maybe it was for the very, very unlikely possibility that you could
theoretically load in a bullet DURING the do_after? I think I was just
sleep deprived. Like right now.

## Changelog
🆑
fix: Detective revolvers can no longer exist in a quantum state of both
being chambered in .38 and .357, without risk of misfire. Detectives,
cowboy enthusiasts and reckless federal agents across the Spinward
Sector mourn the loss.
/🆑
2024-04-02 05:26:16 -04:00
Waterpig
3c036a0b7b Fixes DRAGnet net mode not dealing stamina damage (#82320)
## About The Pull Request

This was meant to be a thing. Looking at the gitblame it has been broken
for **9 fucking years** (Ever since it was added):


![image](https://github.com/tgstation/tgstation/assets/49160555/5c3d98fa-32f5-4fab-9b9d-301905c5c846)

How the hell did NOBODY notice for so fucking long

## Why It's Good For The Game

Actually makes something work as intended. Might make sec consider less
lethal options when dealing with threats.

## Changelog
🆑
fix: after 9 years, adds a single dot to the dragnet code, making it
deal stamina damage as intended
/🆑
2024-03-31 12:58:15 +00:00
MrMelbert
91174c898e Fix Kinetic Projectiles in non PKAs breaking (#82243)
## About The Pull Request

Kinetic blasts are fired from things which are not PKAs sometimes which
makes this runtime


![image](https://github.com/tgstation/tgstation/assets/51863163/53d3fe5f-7ab8-4e0d-ba81-36d148d671ae)

## Changelog

🆑 Melbert
fix: Non-PKA kinetic blasts should work better
/🆑
2024-03-26 19:55:11 -06:00
Paxilmaniac
929a713b3e Makes the rocket launcher epic ( Giant RPG Buff ) (#82212)
## About The Pull Request


![image](https://github.com/tgstation/tgstation/assets/82386923/79927d3a-8e5a-4330-92de-5542f4503dba)

![image](https://github.com/tgstation/tgstation/assets/82386923/9b8220ed-24f1-4a8a-b5f0-ff3886a32b9e)

The sprites of rocket launchers, rockets, and their projectiles have
been updated.

The name of the rocket launcher has been changed from "PML-9" to
"Dardo-RE Rocket Launcher".

Rocket launchers can be worn in suit slots as well as on your back if
you really wanted.

## Why It's Good For The Game


![image](https://github.com/tgstation/tgstation/assets/82386923/09148ac9-6902-403c-a169-5fe7da1d8214)

The PML sprite is nearly like seven years old at this point I think.
This is something a little less ancient and a little more cool looking.

Speaking of cool. Weapon names that are just a bunch of random letters
and numbers together suck, especially with TTS around making some of
these abbreviated names pronounce really weird. The new one should roll
off the ai generated tongue a little easier if someone mentions it by
name.
## Changelog
🆑
add: The PML-9's name has been changed to something that's a little less
boring random numbers and letters, and something that TTS can likely
pronounce much nicer than before. Get blown up by a Dardo rocket
launcher today.
image: Sprites for rocket launchers, rockets, and rocket projectiles
have been changed to something fresher looking.
balance: Rocket launchers can be worn on your back or armor vest.
/🆑
2024-03-26 14:53:34 -06:00
SyncIt21
fa5cb52f18 Fixing cell power usage (Part 2) (#82198)
## About The Pull Request
Continuation of #82197.

Fixes these issues in #82196
- Cyborg self repair
- Cyborg lollipop dispenser
- Mauna mug
- Plasma cutter (Initial charge not the number of laser shots so partial
fix)

## Changelog
🆑
fix: Fixed more energy usages for cells(Part 2). See PR 82198 for
details
/🆑

---------

Co-authored-by: Pickle-Coding <58013024+Pickle-Coding@users.noreply.github.com>
2024-03-25 17:24:31 +01:00
necromanceranne
01dce512a3 Fixes crank weapons never charging using the crank. Fixes stun batons having functionally infinite charge. (#82189)
## About The Pull Request

https://github.com/tgstation/tgstation/pull/81579 overlooked some areas.
I suspect there are others. We'll find them eventually I'm sure.

## Why It's Good For The Game

These values weren't utilizing any define, so when power itself was
changed to use not only a define but one with a value immensely
disproportionate to the magic numbers added to these items, well...you
get these problems.

## Changelog
🆑
fix: Crank weapons now can actually be charged using their crank.
fix: Stun batons and their variants now actually meaningfully consume
charge when used.
/🆑

---------

Co-authored-by: Pickle-Coding <58013024+Pickle-Coding@users.noreply.github.com>
2024-03-25 02:51:57 +01:00
Pickle-Coding
c1f11f26ce Converts arbitrary energy units to the joule. Fixes conservation of energy issues relating to charging cells. (#81579)
## About The Pull Request
Removes all arbitrary energy and power units in the codebase. Everything
is replaced with the joule and watt, with 1 = 1 joule, or 1 watt if you
are going to multiply by time. This is a visible change, where all
arbitrary energy units you see in the game will get proper prefixed
units of energy.

With power cells being converted to the joule, charging one joule of a
power cell will require one joule of energy.

The grid will now store energy, instead of power. When an energy usage
is described as using the watt, a power to energy conversion based on
the relevant subsystem's timing (usually multiplying by seconds_per_tick
or applying power_to_energy()) is needed before adding or removing from
the grid. Power usages that are described as the watt is really anything
you would scale by time before applying the load. If it's described as a
joule, no time conversion is needed. Players will still read the grid as
power, having no visible change.

Machines that dynamically use power with the use_power() proc will
directly drain from the grid (and apc cell if there isn't enough)
instead of just tallying it up on the dynamic power usages for the area.
This should be more robust at conserving energy as the surplus is
updated on the go, preventing charging cells from nothing.

APCs no longer consume power for the dynamic power usage channels. APCs
will consume power for static power usages. Because static power usages
are added up without checking surplus, static power consumption will be
applied before any machine processes. This will give a more truthful
surplus for dynamic power consumers.

APCs will display how much power it is using for charging the cell. APC
cell charging applies power in its own channel, which gets added up to
the total. This will prevent invisible power usage you see when looking
at the power monitoring console.

After testing in MetaStation, I found roundstart power consumption to be
around 406kW after all APCs get fully charged. During the roundstart APC
charge rush, the power consumption can get as high as over 2MW (up to
25kW per roundstart APC charging) as long as there's that much
available.

Because of the absurd potential power consumption of charging APCs near
roundstart, I have changed how APCs decide to charge. APCs will now
charge only after all other machines have processed in the machines
processing subsystem. This will make sure APC charging won't disrupt
machines taking from the grid, and should stop APCs getting their power
drained due to others demanding too much power while charging. I have
removed the delays for APC charging too, so they start charging
immediately whenever there's excess power. It also stops them turning
red when a small amount of cell gets drained (airlocks opening and shit
during APC charge rush), as they immediately become fully charged
(unless too much energy got drained somehow) before changing icon.

Engineering SMES now start at 100% charge instead of 75%. I noticed
cells were draining earlier than usual after these changes, so I am
making them start maxed to try and combat that.

These changes will fix all conservation of energy issues relating to
charging powercells.
## Why It's Good For The Game
Closes #73438
Closes #75789
Closes #80634
Closes #82031

Makes it much easier to interface with the power system in the codebase.
It's more intuitive. Removes a bunch of conservation of energy issues,
making energy and power much more meaningful. It will help the
simulation remain immersive as players won't encounter energy
duplication so easily. Arbitrary energy units getting replaced with the
joule will also tell people more meaningful information when reading it.
APC charging will feel more snappy.
## Changelog
🆑
fix: Fixes conservation of energy issues relating to charging
powercells.
qol: APCs will display how much power they are using to charge their
cell. This is accounted for in the power monitoring console.
qol: All arbitrary power cell energy units you see are replaced with
prefixed joules.
balance: As a consequence of the conservation of energy issues getting
fixed, the power consumption for charging cells is now very significant.
balance: APCs only use surplus power from the grid after every machine
processes when charging, preventing APCs from causing others to
discharge while charging.
balance: Engineering SMES start at max charge to combat the increased
energy loss due to conservation of energy fixes.
/🆑

---------

Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2024-03-23 16:58:56 +01:00
Bilbo367
466b3df048 Refactor removing unused defines. (#82115)
## About The Pull Request

Refactors a lot of the unused defines.

## Why It's Good For The Game

Refactors a lot of the unused defines.

## Changelog
Nothing player facing

---------

Co-authored-by: san7890 <the@san7890.com>
2024-03-22 21:29:35 -06:00
Ghom
76fa5bcdad Skillchips are now copied to bitrunning avatars, plus a new chip to dodge bullets while flipping. (#81980)
## About The Pull Request
Active skillchips are now copied on bitrunning avatars. To celebrate
this, I've made a skillchip, which can be ordered through the bitrunning
vendor, that lets you dodge projectiles for the duration of your flips
plus 1/10 of a second (so 8/10 of a sec), at the cost of stamina (if you
think 20 is a bit too low, tell me).

I've also renamed the files containing the orderable bepis disks and
bitrunning tech because they inconsistent with the names of their
sections shown in the UI.

## Why It's Good For The Game
I think (active) skillchips being copied to bitrunning avatars makes
sense as after all they're both tech-y, brainy stuff. It's a bit of a
shame that no one thought of doing that.

## Changelog

🆑
add: Active skillchips are now copied on bitrunning avatars.
add: To celebrate it, a skillchip is now available from the bitrunning
order console, which lets you dodge projectiles for the duration of your
flips, at the cost of stamina.
/🆑
2024-03-21 20:44:10 +00:00
John Willard
405d369694 Crushers and PKAs: Coop Upgrades (#81940)
## About The Pull Request

This PR makes 2 changes, one to the crusher and one to the PKA

Crushers: Their projectile no longer overrides eachother, so a mob can
have the blue bubble from several crushers. Triggering it will only
trigger the one that you own, so each player has to go hit the mob to
strike.

PKA: Fixed the minebot passthrough upgrade, and also adds a human
passthrough upgrade. They are incompatible with eachother, so you choose
between solo+minebot or coop, which is a compromise I thought as a
better alternative to taking mod space (the minebot passthrough
currently takes none). This upgrade is available solely at the mining
vendor, for 750 points.

## Why It's Good For The Game

The new mining has been great, and one thing I love is that it
encourages more coop play. Excavating boulders with other miners is much
more engaging and has good teamwork in it, and also is a good way to
encourage miners to stick together more and even fight megafauna in
pairs.
This hopes to make that easier to do, because currently having anyone
with a crusher is sort of a detriment to the whole team. Either the PKA
dude will accidentally shoot the crusher user while they're going in for
a melee kill, or 2 crusher users will be constantly erasing the mark of
the other. This will hopefully make that aspect better, and make mining
with friends a little better.

## Changelog

🆑
balance: Crusher marks no longer overwrite eachother, fauna can have one
from each crusher.
balance: Ash drake's crusher trophy no longer affects people the same
faction as you (like hiero trophy), so you won't friendly fire people
with it.
add: Added a new upgrade: Human Passthrough. You can shoot your PKA
without having to worry about friendly fire with this, for 750 mining
points at your mining vendor.
fix: Minebot passthrough upgrade now properly makes PKAs pass through
minebots.
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2024-03-14 00:41:56 +00:00
necromanceranne
4bc21eeb96 Thermal Pistol Rework Attempt Two: You Spin to Win (it uses the crank energy weapon mechanics) (#81819)
## About The Pull Request

Thermal pistols now can be 'cranked' in order to reload them, similar to
a smoothbore disabler. Each 'crank' recharges one shot out of 8 shots.

And by crank, I mean you SPIN THE GUN. In order to spin guns, you need a
holster. So, without a holster, you can't utilize this mechanic of the
pistols.

(Also they're more accurate while dual-wielded hoo haa)

Thermal pistol crates are now slightly more expensive, at 2000 credits.
(is this even a balancing point now that we have stocks?)

## Why It's Good For The Game

People really liked what was going on in this [PR with the gun flipping
resulting in a
reload](https://github.com/tgstation/tgstation/pull/76076). However, it
was...maybe a little too strong.

As a more middle ground approach, the gun crank component was a
particularly helpful addition to the game that allows for things
like...slow bullet-by-bullet reloading of even energy weapons.

## Changelog
🆑
balance: Thermal pistols can now be 'cranked' to recharge shots. You
must have a holster equipped in order to utilize this feature. Also,
they have a tighter dual-wield cone.
balance: Thermal pistol crates are now 2000 credits, up from 1400
credits.
/🆑
2024-03-13 22:36:05 +00:00
Ghom
9f4a8dfc50 Buffs the SC/FISHER Saboteur Handgun. (#81553)
## About The Pull Request
The saboteur gun will now silence pAIs, toggle off radio broadcasting
(won't auto-relay nearby speech), disable turrets, chill out secbots a
little, and turn off APCs like power outages do.
The disrupt duration has also been buffed from 10/20 to 15/25 for ranged
and point-blank respectively.
Removed a conspicious chat message from an otherwise inconspicious gun.
Brought the code up to date.

## Why It's Good For The Game
The concept is cool, alas it's also undermined by how much of a joke
it's right now, and the game has plenty already.
The amount of interactions it has with things is underwhelming, so you
could barely consider it a stealth tool. The duration is also quite
scarce, I pointed that out in the original PR too.

Basically, I want to make the item cooler.

## Changelog

🆑
balance: Buffed the duration of the SC/FISHER Saboteur Handgun's
disruption effects. It's also stealthier and it won't conspiciously
alert living mobs hit by it.
add: Added saboteur interactions with radios, pAIs, turrets, secbots and
APCs.
/🆑

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2024-03-13 22:25:29 +00:00
Pickle-Coding
0a17a2d0f1 Adds and improves logging for various shit. (#81738)
## About The Pull Request
Adds logging for RCD construction and deconstruction. Hallucinated
projectiles no longer causes logs. Flamethrowers log gas mixture
information, the flamethrower, the gas tank, tank distribution pressure
and whether it was lit. Adds a lot more logging to records consoles.
Frozen objects now log when they get shattered.
## Why It's Good For The Game
Closes #68452 
Closes #71798 
Closes #78008 
Closes #81098 
Closes #81130 
## Changelog
🆑 Pickle-Coding and Rhials
admin: RCD construction and deconstruction are logged.
admin: Hallucinated projectiles no longer log.
admin: Gives more detail to flamethrower logging.
admin: More actions are logged for records consoles usage.
admin: Frozen object shattering is logged.
/🆑

---------

Co-authored-by: Rhials <Datguy33456@gmail.com>
2024-03-10 19:49:26 +00:00
LemonInTheDark
ef714c1c34 Overlay Lighting Color/Intensity Pass (#81425)
## About The Pull Request

I was looking at screenshots of the game and realized we had a lot of
light sources that were really... flat.

Medium intensity, not colored at all, cringe.

So I went over all the uses of overlay styled lighting (since I've done
matrix lighting already) and gave them more unique features. Colors that
match the sprite they're used with, intensity to produce vibes, that
sort of thing.

It's kinda impossible to go one by one cause there's a LOT.

I may have gone a bit overboard with a few, I'm messing around with some
things like giving bots colors based off their department, etc. We'll
see how this all turns out.

Oh also I tweaked how the cone of overlay lighting is drawn. It seemed a
bit too present to me so I dropped the alpha down from like 200 to 120
at max (so it's roughly half of the mask's alpha so it's less
overwhelming

## Why It's Good For The Game

Lighting should be impactful, subtle and colorful

<details>
<summary>
Old Lights
</summary>


![dreamseeker_QJ5bFZxd63](https://github.com/tgstation/tgstation/assets/58055496/8ae74a95-32cb-473f-830a-ab4e1073a581)

![dreamseeker_DPVgI8wOoN](https://github.com/tgstation/tgstation/assets/58055496/149095af-a08a-4038-bf18-9e3401327452)

![dreamseeker_pyEmTAb37x](https://github.com/tgstation/tgstation/assets/58055496/6dbb6cf8-2ed7-4bc0-9d19-c64849088a33)

![dreamseeker_aDfvnea6YD](https://github.com/tgstation/tgstation/assets/58055496/4ed983e1-6be3-4513-ba3b-cecde08ccd38)

![dreamseeker_RnkQSwmxmc](https://github.com/tgstation/tgstation/assets/58055496/63e0210e-e1b1-42f0-be64-53d67c43f689)

![dreamseeker_G8NSC3lzAk](https://github.com/tgstation/tgstation/assets/58055496/93001925-904d-4061-8874-1d17bb225a90)

![dreamseeker_yASfxtbHDR](https://github.com/tgstation/tgstation/assets/58055496/ce0ae9ad-9067-44e0-9491-3ef331bbbb84)

![dreamseeker_4ecBbG5urI](https://github.com/tgstation/tgstation/assets/58055496/ce82f471-15c7-40ce-bc08-be4f5dc8a3b7)

![dreamseeker_udYlv8uAce](https://github.com/tgstation/tgstation/assets/58055496/c516a278-852b-44b8-ba7c-1203cea3f845)

![dreamseeker_bc2120Fnmr](https://github.com/tgstation/tgstation/assets/58055496/87a1429a-2329-4dd5-8c7b-ff44f54a08bb)

</details>

<details>
<summary>
New Lights
</summary>


![dreamseeker_0H11TyhGgx](https://github.com/tgstation/tgstation/assets/58055496/75b68a25-055e-488c-af82-b062dbe7413e)

![dreamseeker_2B9AENHsfl](https://github.com/tgstation/tgstation/assets/58055496/b52d441c-6ed3-495b-9ebd-9b0c9f924f30)

![dreamseeker_3vOVRRMTSP](https://github.com/tgstation/tgstation/assets/58055496/b265578f-34cc-4a0a-80ea-3237fb83df33)

![dreamseeker_5bTLup65rx](https://github.com/tgstation/tgstation/assets/58055496/6fcd3dc0-5927-458a-9f77-5582ad57a954)

![dreamseeker_iZzxZv4nfW](https://github.com/tgstation/tgstation/assets/58055496/67c3af13-2305-4130-936b-19ded08ccc4e)

![dreamseeker_Lhe9TSA0Av](https://github.com/tgstation/tgstation/assets/58055496/a5310e58-0ff1-45ac-bb81-b4a0212eb0ce)

![dreamseeker_ngQJUv0tV4](https://github.com/tgstation/tgstation/assets/58055496/c3d7423a-ab32-4401-9ffa-c4c3b7811334)

![dreamseeker_PL0z6sU7by](https://github.com/tgstation/tgstation/assets/58055496/2947d828-3aee-48c2-903f-2bf0db9077d2)

![dreamseeker_xineFZDzPA](https://github.com/tgstation/tgstation/assets/58055496/095ff8b0-51cf-4f7c-a2ee-752d9d7e87bd)

![dreamseeker_zpXxbZZakS](https://github.com/tgstation/tgstation/assets/58055496/c4200d35-a2fa-4c3f-8e88-1fd87f44cd46)

</details>

## Changelog
🆑
add: Tweaked the saturation, color and intensity of a bunch of lights
/🆑
2024-03-09 23:57:19 +00:00
John Willard
9ac81e1a64 New station trait job: Human AI (#81681)
## About The Pull Request

This PR does many things, I'll try to explain the basic/background stuff
to the main thing first:

1. Adds a new remote that allows a human to function like an AI. It
controls a fly that will fly around the station slowly, and when it
reaches a machine then the person can interact with it as if they were
an AI. This required changing a lot of silicon/AI checks with one that
also checks for this remote, and some messing with shared ui state.
2. Moves req_access from the obj and bot to ``/atom/movable`` which lets
it be shared between the two, no more copy-paste and one side lacking
features/checks/signals the other has.
3. Adds a check for AI config for AI-related station traits, which was
lacking prior

Now for the good part...
Adds a new station trait that replaces the AI with a Human.
This person is equipped with an AI headset (including Binary), an
advanced camera console, an omni door wand, the machine controller, and
their laws.
They are immune to the SAT's turrets (even if set to target borgs) and
are slow outside of the SAT, mimicing the actions of the AI.

They interact with the world through their advanced camera console,
which allows them to do most AI stuff needed, and the holopad they can
connect to without having to ring first (like Command can).

They are given a paper with the laws they must follow, but since they
are human they are able to bend it. Cyborgs that run the default lawset
are "slaved" to them via an unremovable law 0, so the Human AI can bend
the laws if they really need to (for their own survival n such), and
make the cyborgs obey their commands above laws, but in general this
shouldn't be a frequent occurrence. This does take into account the
unique AI trait, so it's not guaranteed Asimov.

When this station trait rolls, all Intellicards, AI uploads, and AI core
boards are destroyed and are unresearchable. They can be spawned by
admins in-game if necessary. Maybe in the future we can also exclude
Oldstation from this but I haven't really decided.

Extra perks:

Human AI spawns with a Robotic voicebox (unless they are a body purist)
and teleport blocking implant, so they can't use teleporters to bypass
their on-station slowdown.
They also have an infinite laser pointer that can be used to blind
through their camera console. This is unfortunately nerfed from the
recent borg balance PR that removed its stun. This was meant to be the
alternative to no longer being able to permanently lock borgs down like
AIs can (or more than one, for that matter).
They aren't affected by Roburgers, Acid, and Fuel's toxicity.
Bots salute them like they do Beepsky (which is now a trait)
They spawn with SyndEye to replace the AI's tracking ability
They do not have a bank account

### The machine remote

The machine remote has a little fly in it that flies to the machines it
is pointed to, working as the arms and legs of the Human AI. It scans
the machine and punches in the action the AI does, and is how the AI
accesses basically anything. This fly slowly moves from one machine to
the next, and can be recalled with Alt Click.
It works on machines and bots.

### Video (Low quality to fit Github)


https://github.com/tgstation/tgstation/assets/53777086/e16509f8-8bed-42b5-9fbf-7e37165a11e8

## Why It's Good For The Game

I've seen a funny screenshot one day of a person replacing the AI by
using a bunch of door remotes, camera console, crew monitoring console,
and a few other things. I've been thinking about that for a few years
and really wanted to make it official if not easier to make possible,
because it is an incredibly funny interaction.
This makes it a reality, and while they aren't as powerful as regular
AIs, I think it makes for better and funnier in-game moments. With the
same weight as Cargorilla (1), I hope this wouldn't be rolling too often
and ruin rounds, but instead show off the different capabilities that
Humans and AIs can do, to do the job of an AI. You win some you lose
some.

## Changelog

🆑 JohnFulpWillard, Tattax
add: Adds a new station trait job: The Human AI.
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2024-03-09 23:48:39 +01:00
necromanceranne
91f698f3ea Mini-Nukie Update: The Bulldog is a 2-shot burst fire gun edition (and lone ops get some spare ammo for their bulldog) (#81715)
<!-- 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

The bulldog shotgun, available to ops, now has a burst fire of 2 rounds.
This means it launches a fairly rapid volley of bullets per click.

Currently, the lone operative spawns with a single bulldog shotgun.
Instead of just the shotgun, the operative now comes with some spare
magazines for their gun.

## Why It's Good For The Game

The bulldog still seems to be really unpopular, and still feels like it
isn't quite doing as much as other options for operatives. Even for the
cheap price, it just doesn't pull its weight. It lacks staying power or
range to face several opponents at once. You can certainly buy ammo to
make it better at engaging at range, but this sometimes begs the
question as to why you bothered with the bulldog over something else.

It is primarily only really good at killing one person at a time in
close quarters, but the person you would be using that power against is
usually a more armored opponent like the Captain or Head of Security.
Lots of other nuclear operative weapons simply do that much better than
the bulldog.

If the bulldog is meant to be mulching single targets one at a time, it
should absolutely be doing that reliably. Because people really like
shotguns. So why not unload two buckshot straight into someone's cranium
with a single pull of the trigger for a nice crunchy splat.

Lone operative got themselves a bulldog, but were cheated out of the
free ammo they would have received if they had simply bought the bulldog
from their uplink. Lone ops are not nearly as scary as an actual
midround nuclear assault, primarily because their objective doesn't come
with the benefit of an infiltrator or a bomb to deliver. They're a
punishment mechanic, technically. But even as a punishment, they don't
really do a terribly good job at punishing. Since the bulldog is focused
on putting down the captain as fast as possible, then it stands to
reason that the lone operative gets as much help accomplishing that as
necessary.

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

🆑
balance: Bulldog Shotguns now have a 2-round burst fire.
balance: Lone Operatives now come with some additional Bulldog Shotgun
magazines.
/🆑

<!-- 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. -->
2024-03-09 08:28:56 +01:00
13spacemen
357799c8a5 Removes Orbit Polling Component, SSpolling improvement (#81748)
When I made SSpolling, jlsnow gave me his blessing to delete the orbit
polling component [where you orbit something for 20 seconds before it
chooses a ghost from the orbiters]
It's only used in a few places like soulstones replacing
jobbanned/inactive players, etc.

Also upgraded SSpolling; you can now place a little icon on the sides in
the chat message, chat message looks a lot nicer, the alert pic and the
jump target don't have to be the same anymore, and I made it be able to
pre-pick candidates since 90% of the use cases would just want 1
candidate

Also prints to chat who the chosen one was

Also made slime intelligence potions ask the user for a reason, which
will be displayed in the alert poll
2024-03-06 08:24:36 +00:00
MrMelbert
977799a2e7 A red spy has entered the base: Adds Spies, a roundstart antagonist inspired by Goonstation's Spy-Thief (#81231)
# Disclaimer: No Goon code was referenced or used in the making of this
PR

## About The Pull Request

[Design Document (Read this for more
information)](https://hackmd.io/@L9JPMsZhRO2wI25rNI6GYg/rkYKM9Yc6)

This PR adds Spies as a new roundstart antagonist type, inspired by
Spy-Thiefs from Goonstation.

Spies are tasked with stealing various objects around the station, from
insulated gloves to the black box, from the clown's left leg to the
bridge's communications console.

For every item stolen, the Spy is rewarded with a random item from the
Syndicate Uplink, plus some items uniquely available to the Spy. Stolen
items are then shipped off and sold on the Black Market Uplink, allowing
the crew - or maybe some other evil-doers - to get their hands on them.


![image](https://github.com/tgstation/tgstation/assets/51863163/f057d480-4545-44da-b8fe-a8d09a5d2dcf)

More ideas for theft items and bounties are welcome. 

## Why It's Good For The Game

See the design document for more information. 

In short: Adds a solo antagonist which has less impact than your
Traitors and Heretics, but more impact than Paradox Clones and Thieves.
In other words: On the same tier as old traitors.

Seeks to embrace the sandbox aspect of antagonists more by having no
precise greentext objective, and instead some suggestions for chaos you
can embark in. Have fun with it!

## Changelog

🆑 Melbert
add: Spies may now roam the halls of Space Station 13. Watch your
belongings closely.
/🆑
2024-03-01 04:41:57 +00:00
necromanceranne
935008995b Fixes the M-90GL saying that it takes 5.56 when it actually takes .223. (Shush this is the same bullet) (#81716) 2024-02-29 11:49:34 -06:00
Ghom
e8e8238154 Fixes bows not loosening their strings once fired (#81724)
## About The Pull Request
So, there's this one place that could have just called `clear_chambered`
because it does the exact same operations, but didn't.

Here's `gun/ballistic/proc/clear_chambered()`:

ce04e2b7ee/code/modules/projectiles/guns/ballistic.dm (L285-L288)

and here's `gun/ballistic/bow/clear_chambered()`, which is responsible
for setting `drawn` to false:

ce04e2b7ee/code/modules/projectiles/guns/ballistic/bows/_bow.dm (L52-L54)

You can connect the dots.
2024-02-29 11:46:22 -06:00
LemonInTheDark
70651816c2 Fixes complex lights not handling moving well, renames lighting defines (#81423)
## About The Pull Request

[Fixes static lights not
moving](ffef43c05a)

Worked fine when the owner moved, but if the owner was inside something
else, it would try and trigger an update on the PARENT's lights, which
are obviously not us.

[Renames MOVABLE_LIGHT and STATIC_LIGHT to better describe what they
do](de73a63bd4)

People keep trying to change the lighting system of lamps and it makes
me mad.
I choose OVERLAY_LIGHT and COMPLEX_LIGHT here, I couldn't figure out a
better name for turf matrix lighting. Suggestions welcome

## Why It's Good For The Game

Closes #80005
Hopefully improves understanding of lighting at a glance
## Changelog
🆑
fix: Fixes fancy lights not updating their source location when picked
up and moved
/🆑
2024-02-12 20:50:20 +01:00